第4回: 3D,プロシージャルモデリング

目次

名称

Point, Vertex, Primitive

名称 概要
Point 座標情報を持った点
Vertex Primitive形成のためにPointをどう繋ぐかという,PrimitiveとPointの紐付け
Primitive 画像・映像に落とし込める(レンダリング可能な)オブジェクト(もの)

Point

Point(点)は座標情報を持った点を示します.図のように,点としては 0 – 9 番目の10点であることが分かります.

Vertex

Vertex(頂点)は点をどのように繋ぐかという順番も含まれた情報です.図のように,左下の六角形は 0 – 5 で形成されており,右上の六角形も 0 – 5 で形成されて,それぞれは独立したPrimitiveであることが分かります.
また,この場合 0番目 と 5番目 は繋がれて閉じた面になるよう設定されています.

Primitive

Primitiveはレンダリング可能なオブジェクトを示します.図のように,六角形が2つ作られていますので,左下と右上それぞれの中央に0, 1と割り振られています.
Primitiveは平面に限らず,直線,曲線,曲面,球,直方体,パーティクルシステムなど様々なPrimitiveがあります.

Primitiveの種類

名称 概要
Primitive 原点,経など最低限の構成
Polygon 3点(三角形)がつなぎ合わさった構成
Mesh 4点(四角形)がつなぎ合わさった構成
NURBS Non-Uniform Rational B-Spline(非一様有理Bスプライン)という数学的モデルで作られる構成
Bezier ベジェのモデルで作られる構成
Particle Particle SOPなどで作られる,ポイントクラウドの構成
Metaball Meta Ball SOPから作られる,引力を用いたモデルで作られる構成

Geometry viewer

目的の形にモデリングする時には,Primitiveの状態を確認しながら進めることが重要です.Geometry viewerはPoint, Vertex, Primitiveなどの状態を確認したり,形状を確認したりできます.

3Dモデルを生成する

どこまでモデリングするか

TouchDesignerでもモデリングはできます.しかし,考え方としては

  • 複雑なモデル(スカルプティングが必要など)は他のモデリングソフトに任せる
  • リアルタイムにモデルに変化を加える
  • シンプルなモデルをルール(アルゴリズム)に従って大量複製する

とすると良いでしょう.

画像のようなBlenderで作られたドラゴンをTouchDesignerで敢えて作ろうとするよりも,TouchDesignerの良いところであるリアルタイム性や可変性を活かせるような付き合い方をしましょう.

(https://cgboost.com/create-a-dragon-in-blender/より参照)


また,TouchDesignerのオペレータの仕組みとかなり近い考え方でHoudiniというプロシージャルモデリング環境があります.実は,Houdiniを改造して2000年に作られたリアルタイムビジュアルプログラミング環境がTouchDesignerという,本家と分家のような関係です.近年プロシージャルなモデリング環境は盛り上がりを見せており,モデリングを深堀りしたい方はHoudiniを使用してみるのも良いでしょう.

(https://www.oneclub.org/awards/theoneshow/-award/32647/the-origin-of-lifeより参照)


3Dモデル生成一覧

TouchDesignerでゼロから生成できる3Dモデルはほぼ表の通りです.当然ですが,2D系のTOPより多くの情報を持っています.詳細を一つずつ動画で確認しましょう.

名称 概要 主なパラメータ
Circle 楕円モデル タイプ,方向,半径,中心座標,弧
Line 線モデル 始点/終点の座標,点数
Rectangle 四角形モデル 方向,サイズ,中心座標
Text 文字モデル タイプ,フォント,サイズ,文字内容
Grid 格子モデル タイプ,方向,サイズ,中心座標,列数,行数
Sphere 球モデル タイプ,方向,半径,中心座標,列数,行数など
Box 直方体モデル サイズ,中心座標
Torus トーラスモデル タイプ,方向,半径,中心座標,列数,行数
Tube 円筒モデル タイプ,方向,半径,高さ,中心座標,列数,行数

Circle SOP

Line SOP

Rectangle SOP

Text SOP

Grid SOP

Sphere SOP

Box SOP

Torus SOP

Tube SOP

変化させる

Boolean SOP

Boolean SOPは2つのPolygonで作られたSOPの共通する空間を起点に結合したり,差し引いたりするSOPです.シンプルなモデル生成をした後に少し複雑な形をつくる際にはBoolean SOPのBoolean > Operation > A minus Bを多用します.

Clip SOP

Clip SOPは設定した平面でSOPをクリップします.時間的な変化をさせたい時に効果を発揮します.例の動画のようにテキストモーションなどで出てきたり消えたりする演出をする最に使用すると良いかもしれません.

Copy SOP

Copy SOPはインプット1のモデルをインプット2のモデルのポイントの位置に複製します.Copy SOPを2回使うと3次元的に複製することもできますが,数を増やしすぎると処理が重くなり,FPSが落ちる原因となるので注意が必要です.

Extrude SOP, Trace SOP

Extrude SOPは2次元のSOPデータを押し出して立体にします.Text SOPを押し出したり,Trace SOPでアルファ付き画像をSOP化した後に押し出したりして立体にして扱うと良いでしょう.

Noise SOP

Noise SOPはインプットしたSOPのPointの位置や色などにノイズ関数に基づくバラつきを与えます.時間的に変化させたり,簡単な地形などをモデリングするときに手っ取り早く作ることができます.

Primitive SOP

Primitive SOPはモデルの位置,サイズ,配置,色,アルファプリミティブ固有のアトリビュートを操作できます.
今回のモデリングの段階では,主に色情報を与えるために使用してみましょう.

Sweep SOP

インプット1のモデルの筆でを,インプット2のポイントに従って,描くようなイメージ(Sweep)です.リボンや管のようなものを作成したいときに効果を発揮します.

一つにする

Merge SOP

Merge TOP, Merge CHOPと同様にMerge SOPを使用できます.

プロシージャルモデリング

プロシージャルモデリングとは,簡単にいうとルールを用いてモデリングしていくことです.それによって後の変更が楽だったり,細かい仕組みを後から追わなくても,最初のPrimitiveだけ変えればレイアウトが反映されたりとブラックボックス化することが可能です.

作例

Transform SOPにて,以下の簡単なスクリプトによって,インプットするSOPはy軸がゼロの平面に乗るようになります.

-me.inputs[0].min.y

課題

授業内課題

画像のように椅子をモデリングしなさい.
要件

  • 背もたれ,椅子の足の高さを変えてもレイアウトが崩れないようにすること

締切: 2023年5月12日16:10
提出先: 情デサーバー 演習/01_Assignment/04_授業内/

来週までの課題

これまで習った内容を使って,3Dモデルを自作しなさい.
要件

  • 第3回の「変化させる」パートの7種類のSOPのうち,少なくとも3種類は使用すること
  • 既存のキャラクターや実世界に存在するもの・自然現象,架空のものなど扱う対象は問わない
  • 最終的にMerge SOP – Null SOP と繋げ,Null SOPはDisplay flagをオンにしてGeometry viewerに出しておくこと
  • 自身で調べたり,知っていたりするテクニックは使っても構わない

締切: 2023年5月18日23:59
提出先: 情デサーバー 演習/01_Assignment/04_週課題/