2016年02月

2016年02月29日

3ds Max 2016の新機能を調べてみた その66 3dsmax 2016

引き続き「Maxクリエーショングラフ」について調べてみたい。 今回は「MCG_Donut」シェイプだ。

fig01

このファイルを開くとこのようなグラフになっている。2つの「CircleSpline」によって半径の異なる2つの円形シェイプを生成して、それを「Array2」で配列に入れ、「CombineSplines」によって1つのスプラインにまとめて「Output:shape」でシェイプとしてシーンに出力する構造になっている。

fig02

「CircleSpline」を開くと下のようになっている。

fig03

4つの「Vector3FromXY」で下の画像のように「radius」を使った円周上の4つの座標値を作って、「Array4」で配列にまとめて「CreateSplineFromKnots」で閉じたスプラインを生成して、「AutoSmoothSpline」でスムージングしている。

fig05

続きはまた次回。

maxまとめページ



take_z_ultima at 11:30|この記事のURLComments(0)TrackBack(0)3ds Max | CG

2016年02月26日

modo901/902の新機能を調べてみた その61

ビューポートの設定をプリセットとして保存出来るようになった。「表示スタイル」メニューから「ビューポートプリセットを保存」を選んで

fig01

名前を登録すれば、

fig02

次から「表示スタイル」メニューに登録したプリセットが表示されるようになる。

fig05

登録したプリセットは「プリセットを削除を選んで」ダイアログでプリセット名を選べば削除できる。

fig06

プリセットは下の4つのオプションによって登録するカテゴリを絞る事が出来る。

fig03

この4つは「3Dビューポートプロパティ」パネルの5つのサブタブで分けられた項目に対応しているようだ。

fig04

調べた限りでは対応は以下のようになっているようだ

  • 描画 → 表示とコントロール
  • 可視設定 → 表示属性
  • アクティブメッシュ → アクティブメッシュ
  • 非アクティブメッシュ → 非アクティブメッシュ

「高度なオプション」は設定に関係なくプリセットに必ず含まれる

それではまた次回。

modo901ブログ目次



take_z_ultima at 11:30|この記事のURLComments(0)TrackBack(0)modo | CG

2016年02月25日

3ds Max 2016の新機能を調べてみた その65 3dsmax 2016

引き続き「Maxクリエーショングラフ」について調べてみたい。

今回は「ApplyUV AsColor」モディファイヤだ。このモディファイヤはMCGで作成されていて、エディタで読み込んで中身を見ることが出来る(Program Files/Autodesk/3ds Max 2016/MaxCreationGraph/Tools/ApplyUVAsColor.maxtool)。

fig01

このモディファイヤはUVマップを頂点カラーマップとして表示させるものだ。下の画像はティーポットに適用してみたものだ。

fig02

fig05

「頂点カラーマップ」を表示するにはオブジェクトを右クリックして「オブジェクトプロパティ」を選び、

fig03

「オブジェクトプロパティ」の「一般」タブの「頂点のチャンネル表示」をONにすればいい。

fig04

下の画像はこのティーポットのUVマップで、モディファイヤではこのUV軸をそれぞれR、Gチャンネル、W軸をBチャンネルとして色を付けている。

fig06

さて、グラフの方だけどモディファイヤの基本構造である「Modifier:TriMesh」で始まって「Output:modifier」で終わっていて、モディファイヤスタックから「TriMesh」データを取得して来て、「TriMesh」データで返す形になっている。そしてそのデータにUVチャンネルがあるかどうかを「IsUVChannelAvailable」で調べて、「If」ノードでUVマップが無い時は「Modifier:TriMesh」から入ってきたデータをそのまま「Output:modifier」に流すようにして、UVマップがある時だけそれを処理するグラフに流すようになっている。

fig07

そしてUVマップを処理する方のグラフはまず「UVChannel」ノードで「TriMesh」データから「UVマップチャンネル」データを抽出する。そしてその「UVマップチャンネル」データから「MapChannnelIndexBuffer」ノードと「MapChannnelVertexBuffer」ノードで、「TriMesh」を構成する三角ポリゴンの各頂点に割り当てられている頂点マップデータの番号のリストの配列と、頂点マップの値の配列を抽出する。

fig08

「UVChannel」ノードで抽出するUVマップのチャンネルは1に固定されている。もし他のチャンネルから取得したいならグラフを別名で保存して、下のように「UVChannel」ノードを「GetMapChannel」ノードに置き換えて、パラメータでマップチャンネルを与えてやればいい(ただし「IsUVChannelAvailable」はUVマップしか対応してないので、指定チャンネルにマップが無ければリスナーに例外が出力される)。

fig10

「TriMesh」データのポリゴンとテクスチャとカラー面は1対1に対応していて、頂点マップはそこからインデックスバッファを使って、各頂点のマップデータにアクセスする仕組みになっている。

fig09

「MapChannnelIndexBuffer」ノードはから取得した「MapChannnelIndexBuffer」データを使って、各番号のUVWデータを「At」ノードで取り出して、それを配列化するのが次のグラフ部分だ。

fig11

これで全てのUVW値がフラットに並ぶ配列が得られる。これを「TriMesh」の「頂点カラーマップ」としてセットするのが「SetVertexColorMapChannel」ノードの役割だ。これで作った「頂点カラーマップ」は「頂点カラー」値が全てのカラー面の各頂点に1対1に対応した数だけ設定されることになる。例えばBOXなら6面体で、1面が2枚の三角ポリゴンで作られているので、6X2X3=36が頂点の数になり、「頂点カラー」値の数になる。そして「MapChannnelIndexBuffer」は0〜35まで順に並ぶ配列になる。

fig12

また、「ApplyUV AsColor」モディファイヤのグラフには、「Print」ノードを含むグラフが入っていて、これを使って繋ぎなおせば各段階でどのような配列が出力されているのかをリスナーから確認する事ができる。例えば下のように「MapChannnelIndexBuffer」ノードと「Map」ノードの間に入れると、「MapChannnelIndexBuffer」が出力する配列の内容がMAXScriptリスナーに出力される。

fig13

fig14

それではまた次回。

maxまとめページ



take_z_ultima at 11:30|この記事のURLComments(0)TrackBack(0)3ds Max | CG

2016年02月24日

modo901/902の新機能を調べてみた その60

「ダイナミックカーブ」アイテムに新たに角度制限の項目が追加された。

fig01

「ダイナミックカーブ」は「カーブ」アイテムを選択して「セットアップ」レイアウトで「コマンド」パネルの「ダイナミクス」サブタブの「ダイナミックカーブ生成」を押せば生成される。

fig02

これでシミュレーションすればカーブがソフトボディとしてシーン内で振舞うようになる。さらに「ダイナミックカーブ」は「カーブをレンダリング」の機能と連動できるので、下のようにカーブに沿ったカプセル型のメッシュとしてレンダリングする事が出来る。

fig03

「ジョイント角度制限」はこのカーブを構成するセグメントどうしの回転に制限を加えるもので、元の形状からの変形に制限を加える事が出来るようになる。上のアニメーションでは「ジョイント角度制限」を6度に設定しているので、立方体にぶつかった「ダイナミックカーブ」はセグメントごとに制限を受けながらちょっとずつ曲がって止まっている。同じシミュレーションで、「ジョイント角度制限」を90度にしてみると下のように各セグメントの回転の自由が増して、より大きく曲がるようになる。

fig04

「ピン留めジョイント角度制限」はこの「ダイナミックカーブ」を空間にピン留めした時の回転角度を制限するものだ。

ピン留めするにはカーブのピン留めしたい頂点を選択して、右クリックして「選択セットの追加」を選んで、右クリックで出したメニューから「選択セットの追加」を選び、

fig05

「選択セット」の名前を適当につけ、

fig06

「カーブ」が入っている「メッシュ」アイテムの「プロパティ」の「ダイナミクス」タブで、「ピンマップ」に登録した「選択セット」の名前をセットすればいい。また、「カーブ始点をピン留め」をONにすればカーブの始点をピン留めする事も出来る。

fig08

下のGIFアニメは「カーブ始点をピン留め」をONにして、「ジョイント角度制限」「ピン留めジョイント角度制限」共に0度に設定してみたものだ。ピン位置で回転が抑えられているのがわかる。

fig09

今度は「ピン留めジョイント角度制限」だけ30度にしてみたもの。

fig10

今度は「ジョイント角度制限」も30度にしてみた。

fig11

角度制限は「ダイナミックカーブ」が暴れ過ぎる時の抑えとしても役に立ちそうだ。

それではまた次回

modo901ブログ目次



take_z_ultima at 11:30|この記事のURLComments(0)TrackBack(0)modo | CG

2016年02月23日

3ds Max 2016の新機能を調べてみた その64 3dsmax 2016

引き続き「Maxクリエーショングラフ」について調べてみたい。

今回はExtension1で追加された「Output : Color Controller」を使ってみた。これを使えばMCGの出力を「カラー」パラメータのコントローラとして使えるようになる。

fig02

例えばこんなグラフを作ってみた。

fig03

「Implicit parameters」の「Time」ノードからシーンの「tick」数を取得して、「TickToSeconds」でそれを秒数に直して、「Parameter:Single」の値を「Multiply」で掛け合わせて時刻と共に刻々と増加する値を作って、

fig04

それを「Sin」関数に入力し、0.5倍して0.5を足すことで−1〜+1のsinの値を0〜1の間に収めて、

fig05

それを「Larp」の「amount」ソケットに入力して「Color1」と「Color2」をブレンドして「Color」値を作り、それを「Output : Color Controller」に出した。

fig06

これを「Sin RGB」と言う名前で保存してビルドした。そして「ストレートマテリアルエディタ」を開くと、「コントローラ」ロールアウトに「Sin_RGB」コントローラが現れる。

fig07

これを作業エリアにドロップして出すとこんな感じ。なぜか「_dummy」という謎のソケットが・・・

fig08

コードを見ると下のように定義はされてるけど使われている様子はない。他にもこのコードのファイルネームとかもパラメータになってるみたいだな。

fig09

注釈としてこんなことが書いてある。オブジェクトを無効化したりする必要があるものとかあるのかな?

fig10

とりあえずこれは放置しておいて、「標準」マテリアルをドロップしてこのノードの出力をその上に引っ張って行って、「拡散反射光」に割り当てて、このマテリアルをシーンに追加した球体に割り当ててみた。

fig11

パラメータをちょこっといじって

fig12

シーンを再生してみた。見ての通り「拡散反射光」の色が2つの色の間で交互に変化するようになった。

fig13

それではまた次回。

maxまとめページ



take_z_ultima at 11:30|この記事のURLComments(0)TrackBack(0)3ds Max | CG
Archives