Jan 4, 2015

Flying Letters I 

ロゴの破壊・破片のコントロール 今回は破片の構築と破壊される破片のグループ定義。
教材:Flying Letters 
SOP [ Reverse, ForEach, Clip, Facet, UV Project, Sort, AttribCreate, Group, ]
ForEach Stamp : stamp("..", " FORVALUE ", 1)
論理積 : &&  ($START_FRAME > ($FF -2)) && ($START_FRAME < ($FF + 2))
とりあえず分割の部分が難しかった。分割の結果。
 分割のノード構築とForEachノード内の構築。

[ 一番難しかった部分ForEachの中のEachのデフォルトのExpressionを変更する部分 ]
ifs(!(!strcmp(chs("../fortype"), "group") || !strcmp(chs("../fortype"), "prim")), "", stamps("..", chs("../forstamp"), ""))
というデフォルトのExpressionから || !strcmp(chs("../fortype"), "prim"))という部分を削除して
ifs(!!strcmp(chs("../fortype"), "group"), "", stamps("..", chs("../forstamp"), ""))に変更。
後の部分はデフォルトのままで大丈夫でした。
このように変更しないと、プリミティブを分割できなかった。

次にObjの階層に戻り、ForEachにWidth,Heightというパラメーターを追加する。
ここはCopy Stampなどでやった事の応用なので大丈夫でした。
次はForEach内のEachに繋げるClip Node内のExpressionで少し悩むことに。
ForEach Stampの基礎となるので、構築を覚えることが大切なような気がした。

[ ForEach ]
ForEach Node :SOPのセットを入力ジオメトリへ再帰的に適用します。

For : Each Numberに設定。
width, heightも追加されているのがわかる。これをClipの中のExpressionで使用していく。
Clip Node : 平面の片側のジオメトリを削除する。
このチュートリアルではこのノードとstamp("..", "FORVALUE", "1")の使い方がポイントになっていた。Origin, Directionに下のExpressionを入力。
  • Origin X : ch("../width") * 0.5 * (rand(stamp("..","FORVALUE",1) + 234) * 2 - 1
  • Origin Z : ch("../height") * 0.5 * (rand(stamp("..","FORVALUE",1) + 244) * 2 - 1
  • Direction : rand(stamp("..","FORVALUE",1) * 2) * 2 - 1

任意で作ったwidth, height, を使ってForEachの中で分割の調整をできるようにしている。

[ 全体の構築 ]


Facet Node :これは今後も多用する。デフォルトのスムース補完の調整が可能。
  • サーフェスのファセットの滑らかさを制御します。
  • このノードは、ポイントの結合やサーフェス法線の統一をすることもできます。
UV Project Node :
  • UVをある方向でサーフェス上に投影。いろいろな投影方法があるので参照のこと。
  • いわゆるプロジェクションマッピング。
Sort Node :
  • ポイント/プリミティブを色々な方法で並べ替えることができます。  
このSortが少し面白かったので探ってみた。主にプリミティブの並べ替えに有効らしい。
このチュートだとPrimitive Sort : By X
するとX方向から順にプリミティブ番号が割り当て直された。

次にAttribCreate, Groupの繋がりでのポイント。
論理積 : &&     ex. if (x==0 && y==0) みたいな2つの条件が重なった場合の定義。
この論理積を用いたExpressionを使用していたのでメモ。
AttribCreate : $PR/2+1 = start_frameという定義をしてから

  • ($START_FRAME > ($FF -2)) && ($START_FRAME < ($FF + 2))
$START_FRAMEが$FF-2よりも大きく$FF+2よりも小さい場合frame_groupに定義。
-2,+2などを大きくするほど選ばれる範囲が大きくなるので微調整する。
また、$PR/2 +1の+1の数を大きくするとStart_Frameが遅るのでこれも微調整。





No comments:

Post a Comment