2015年12月

2015年12月25日

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

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

今回は「BinaryRecursion」ノードだ。

fig01

説明はこれで、

fig02

二分木の再帰的処理をするノードのようだ。

いろいろ調べた結果、動作は以下のようになる事がわかった。

「init」を初期値として、その値を「condition」関数で判定して、trueならその値を「final」関数に渡して値を生成する。

この値は直前に「final」関数で処理された値があれば、その値と共に「combine」関数で処理される。

falseならその値に対して「left」と「right」の関数を実行して2つの値を得る。

これら2つの値をそれぞれ再び「condition」関数で判定して、trueなら「final」へ、falseなら「left」と「right」へ。

このサイクルを1回ループするごとに1つの値が2つに分裂して行く事になる。

最終的に全ての値が「condition」関数でtrueになったら終わりだ。そして最後に行った「combine」の値が出力される。

こういう構造だから「left」と「right」は2分木構造のデータを辿って先に進むために使われ、「condition」はその2分木上で探すノードの条件を設定するもので、「final」は見つかったノードから値を抽出するためのもので、「combine」は得られた値を処理するものなわけだ。

で、どうやって使おうかと思ったんだけど、このノードを使用した合成ノードも無いし、お手上げ状態だ。もうちょっと調査が必要なようだ。

さて、本年もグダグダな記事にお付き合い下さいましてありがとうございました。

それではまた来年。

みなさん良いお年を。

新年のレギュラー更新は1月12日からを予定しております。

maxまとめページ



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

2015年12月24日

modo901の新機能を調べてみた その44 modo901

前回に引き続き「メッシュシャッター」のパラメータについて調べてみたい。

今回は「割裂」タイプの「メッシュシャッター」についてだ。このタイプはオブジェクトを木などが裂けたように鋭く尖った破片を生成する。

fig01

下がそのダイアログ。「均一」のダイアログに「割裂の鋭さ」パラメータが追加されたものになっている。

fig02

「割裂の鋭さ」は分割するオブジェクトのローカルY軸の中心点を基準にY軸方向に境界面をスケーリングするもののようだ。

下のGIFアニメは他の条件を同じにして「割裂の鋭さ」だけ0%〜100%で変化させてみたものだ。Y=0のラインを基準に上下方向にパターンが伸び縮みするのがわかる。

fig03

残念ながら「割裂」は他の方向に伸び縮みさせる指定は無い。

分割パターンはY軸方向の長さには無関係のようだ。下のGIFアニメはY軸の長さをいろいろ変えて分割したものを切り替えて表示してみたものだ。Y軸の長さが変化しても分割パターンが変化していないのがわかる。

fig06

今度はX軸またはZ軸方向の長さを変えてみた場合。パターンのY軸方向のスケールが変化するのがわかる。

fig05

それではまた次回。

modo901ブログ目次



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

2015年12月22日

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

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

今回は配列を加工するノードだ。

NormalizeFloats(array):配列中の値が0.0〜1.0内に収まるようにマッピングしなおす。

fig01

これがその説明。

fig03

例えば[ 8.0, 1.0, -2.0, 5.0 ]の配列をこのノードに与えてみると、

fig02

このように最大値8.0が1.0に、最小値−2.0が0.0に置き換えられ、その間にある1.0、5.0が比率にあわせて0.3、0.7に置き換えられているのがわかる。

fig04

数直線に直すとこんな感じ。

fig05

Reverse(xs):配列の要素の順番を反転する。

fig04

これは特に疑問の余地は無いな。ためしに0〜4の整数の配列を入力してみた。

fig05

これがその結果。順番が反転しているのがわかる。

fig06

Sort(array):比較可能な要素を並べ替える

fig07

例えば5つの0〜1のランダムな実数を持つ配列を入力してみた。

fig08

これがその結果。小さい順に並べられているのがわかる。

fig09

SortedIndices(array):配列のインデックスを配列要素の大きさで並び替える。

fig10

例えば下のように5つの0〜1のランダムな実数を持つ配列を入れて、処理前の配列と出力結果を「Pair」でタプル化して出力してみた。

fig11

これがその結果。タプルの1つ目の配列は「item1」プロパティで呼び出せて、2つ目は「item2」で呼び出せるので、それぞれの配列を取り出して表示してみた。「SortedIndices」ノードの出力結果は4,2,0,3,1になっているので元の配列で一番小さい値は4番目の0.0626258と言う事になる。次が2の0.281366。確かに要素の大きさが小さい順にインデックス番号が並んでいるのがわかる。

fig12

SortBy(array,compare):compare関数を使って配列要素を並べる。

fig13

説明はこれ。

fig15

比較関数は2つの要素を比較して、その結果を負、0、正の値の整数で返すものを使う。

例えば2つのノードの原点からの距離を求めて、それを引き算して、それを整数化するグラフはこうなる。

fig18

これを使ってルートノードを除く全ノードを原点からの距離で並び替えて、そのノード名の配列を出力するグラフを作ってみた。

fig14

例えば下のように4つのオブジェクトを並べてみた。

fig16

そしてこれが実行結果。原点からの距離が近い順に並んでいるのがわかる。

fig17

それではまた来週。

maxまとめページ



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

2015年12月21日

modo901の新機能を調べてみた その43 modo901

前回に引き続き「メッシュシャッター」のパラメータについて調べてみたい。

今回は「放射状」タイプの「メッシュシャッター」についてだ。このタイプはオブジェクトをクモの巣のように放射状に分割する。

fig02

下がそのダイアログ。

fig01

この分割も分割面を決定する方法はボロノイ分割を使っているようで、隣接する2つの基点から等距離の位置で分割がなされる。だから基点が2つなら分割面は2つの点を結ぶ垂直二等分線になる。

fig08

これが基本的な分割手順で、あとはこの基点がどう立体の中にばら撒かれるかが上記パラメータで決定していくだけだ。

基点はオブジェクトの中心から出る等間隔の放射線に沿って並ぶ。その放射線の数を決めるのが「放射線」パラメータで、この放射線上に等間隔にいくつ基点を並べるかが「環状線」パラメータだ。下の画像では「放射線」が5で、「環状線」が3だ。黄色い放射線が5本で、各放射線の上には3つの基点が並んでいる(交点の基点は共通)。

fig03

「放射回転」は中心から放射線方向に等間隔に並んだ基点のならびに角度を加えて曲げる角度を指定するもの。下のGIFアニメは0度〜10度まで変化させてみたものだ。

fig05

各基点を結ぶ線がこのように曲げられて並ぶことで隣接する基点どうしの境界線が上のように変化して行くわけだ。

fig09

「放射半径」は基点を並べる同心円のサイズを調整する。下のGIFアニメは10%〜120%まで変化させてみたもの。

fig06

半径は分割するオブジェクトのバウンディングボックスの1辺の長さを基準にして決めるようだ。ちょっと試してみた感じだとX,Z軸方向の分割ではバウンディングボックスのX軸方向の距離が基準で、X軸方向の分割ではバウンディングボックスのY軸の距離が使われている感じだ。

fig12

「ランダム距離%」「ランダム距離」は基点の位置を上記のパラメータで決定した位置から指定した距離の範囲でランダムに移動させるためのパラメター。「ランダム距離%」はオブジェクトの大きさに対して距離を比率で指定するのに対して、「ランダム距離」は直接距離を指定するものだ。

fig07

「軸」は同心円の軸をXYZのどの軸にとるかと言うものだ。

fig11

それではまた次回。

modo901ブログ目次



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

2015年12月18日

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

前回に引き続き「Maxクリエーショングラフ」の配列を切り抜いたりつないだりするノードだ。

Slice(array):xs配列を先頭からi番目からn個抽出した配列を生成する。

fig01

これが説明。

fig02

例えば0〜9の配列に対してi=2、n=5で「Slice」をしてみると、

fig03

このように、2番目から5つの要素が切り抜かれて配列になった。

fig04

RemoveRange(xs,n,count):xs配列のn番目からcount個の要素を除いた配列を生成する。

fig17

これがその説明。

fig18

0〜9の整数配列でn=3、count=5として実行してみた。

fig19

これがその結果。3番目から5つの要素が除かれた配列になっているのが確認できる。

fig20

中身を見ると、「Take」ノードで先頭からn個の要素を抽出した配列と、「Skip」ノードで先頭から(n+count)個の要素を除去した配列を「Concatenate」ノードで合成して配列を生成しているようだ。

fig21

Stride(xs,from,stride):xs配列のfrom番目の要素からstride番おきに要素を抽出して配列を生成する。

fig09

これがその説明。

fig11

0〜9の整数配列とn=2、stride=3を「Stride」に与えて実行してみた。

fig10

0〜9の先頭から2番目(先頭は0番目)の数字である2、その3つ先の5、さらに3つ先の8が抽出されて2,5,8の配列になっているのがわかる。

fig12

続きはまた来週。

maxまとめページ



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