2019年04月

2019年04月25日

ビットマップペイントツールのチュートリアルをやってみた その219 3dsmax 2019

引き続きMAXScriptマニュアルに載っている「チュートリアル-ビットマップペイントツールを9つの簡単なステップで作成する」 の続きを考えて見たい。

さて、UVマップの輪郭から指定の距離オフセットした輪郭が取得出来たので、いよいよ本体に組み込むことを考えたい。

下のようにUVマップの連続した部分の輪郭を広げたデータが出来て、下の画像の水色の部分が塗る部分で、

fig 1

そのうちの不連続エッジを含んでいる1枚のポリゴンについて見てみると、
fig 2

はみ出し塗りは下の射線の部分を塗る事になる。
fig 3

そこで、ブラシ立方体でUVメッシュをくりぬいて作るポリゴンの形状は下のピンク色の輪郭になる。

fig 4

ただ外枠に向けて単純に垂線を下ろすだけだと下のように角の部分で隙間が出来ちゃうので不連続UVエッジの接続関係もチェックして繋がっている部分はオフセットしたエッジをそのまま使うようにするべきだろうな。

fig 5

場所によっては他のポリゴンに干渉する状況も出てきてしまうけどこれはどうしたらいいかなぁ。

fig 6
どうするのがベターなのかちょっと試してみて検討した方がいいかな。

続きはまた次回。次回定期更新は令和元年5月7日を予定しています。

maxまとめページ



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

2019年04月24日

メッシュオペレータでいろいろやってみた その32 modo13

今回もmodo13で追加されたオペレータを調べてみたい。

今回は「Curve To Bezier」オペレータ。前回「Curve Convert」を調べたので、名前から似ていそうなこのオペレータを調べてみた。

「Curve To Bezier」オペレータはその名前の通り「カーブ」を「Bezier」に変換する機能だ。

例えば下のように1つの「メッシュ」アイテムの中に2本の「カーブ」がある場合、

fig 1

これに「Curve To Bezier」オペレータを追加すると、

fig 2

下のように1つの「カーブ」だけが「Bezier」に変換される。

fig 3

どのカーブが変換されるかは「カーブインデックス」プロパティによって指定され、接線ハンドルの長さは「接線長」プロパティで設定される。

接線長についてはいろいろ試してみたけど1つずつ個別に長さの調整は出来そうにないみたいだけど、接線方向については「Array」でまとめることで個別にコントロールが可能になる。

例えば下のシーンのようにポイントを5つ持つ「カーブ」に対して「Plane」アイテムを5つ用意して、

fig 4

「カーブ」の入っているメッシュに対して「Curve To Bezier」オペレータを適用し、

fig 5

「スケマティック」ビューで下のように「Mesh Data Array」で「Plane」をまとめて、「法線配列」チャンネルからこれら「Plane」アイテムの特定の座標軸方向を「distance3」配列に変換して「Curve To Bezier」の「接線法線」チャンネルに入力すると、

fig 6

下のように各接線ハンドルの方向が「Plane」アイテムの回転に追従するようになる。

fig 7

注意しなくちゃならないのは「カーブ」の頂点数と「Mesh Data Array」に繋ぐ「Plane」アイテムの数を同数にする事。数が同じにならないと「Curve To Bezier」は機能しないようだ。

続きはまた次回。

modo10-13ブログ目次



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

2019年04月23日

ビットマップペイントツールのチュートリアルをやってみた その218 3dsmax 2019

引き続きMAXScriptマニュアルに載っている「チュートリアル-ビットマップペイントツールを9つの簡単なステップで作成する」 の続きを考えて見たい。

前回は数値精度のせいで酷い目にあったので、少しちゃんとどのくらいの数値で2つのエッジが平行と判定していいかどうか考えてみた。

UVWマップに貼り付けるビットマップの解像度が8000X8000だとすると、UVW座標の値は0〜1なので、1ピクセルの1辺の長さは1/8000=0.000125

水平のエッジと水平に8000ピクセル行って1ピクセル上がる傾斜のエッジはまだ交点が生じる可能性が残っているけど、それよりも平行度があがって8000ピクセル行って1ピクセル未満の距離だけ上がる傾斜のエッジとであれば、2本の線はピクセルで描けば同じ水平線になるので、もう交点が無い扱いで構わない。

交点が存在するかの判定式

(p2.y-p1.y)(p3.x-p4.x)−(p1.x-p2.x)(p4.y-p3.y)

で、水平線はy軸の差が0になり、水平に8000ピクセルの長さのエッジは座標値単位で言えば長さ1なので、判定式は下のようになる。

0 X 1 - 1 X 0.000125 = -0.000125

この差の絶対値0.000125よりも値が小さければ2本のエッジは平行とみなしていいはずだ。そこで思い切ってこの値を0.0001に丸めて、プログラムの判定式は絶対値をとるために二乗しているので判定はこの値の二乗の0.0000001と比較すれば大丈夫そうだ。

続きはまた次回。

maxまとめページ



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

2019年04月22日

メッシュオペレータでいろいろやってみた その31 modo13

今回もmodo13で追加されたオペレータを調べてみたい。

今回は「Curve Convert」オペレータ。

このオペレータは「Curve」「Bezier」「B-Spline」の3つのタイプのカーブを相互に変換するものだ。

modoはいろんなタイプのカーブをサポートしているけど、カーブを使ったオペレータが全てのカーブタイプをサポートしているわけではない。このオペレータを使えばそのギャップを埋められるわけだね。

このオペレータのプロパティは下のようになっていて、

fig 1

「元」と「先」で「カーブ」「ベジェ」「BSpline」がそれぞれ選択出来、「元」のタイプを「先」のタイプに変換する仕組になっている。

fig 2

例えば下のカーブを「ベジェ」に変換してみると、

fig 3

このようにコントロールハンドルを持った「ベジェ」曲線に変換される。下の画像は元の「カーブ」と重ねて表示しているんだけど、変換による形状の変化は無いようだ。

fig 4

同様にして「カーブ」を「BSpline」に変換してみると、元の形状とはちょっと違った形状になる。

fig 5

これは「BSpline」が途中のコントロールポイントを通過しない曲線のためだ。

fig 6

今度は下の「BSpline」を他のタイプに変換してみた。

fig 7

「ベジェ」に変換したらピタリと重なった。

fig 8

「カーブ」に変換したらこのようにだいぶ異なる形状になった。

fig 9

最後は下の「ベジェ」曲線を変換してみた。この曲線は「ベジェ」曲線の特性をいかして2つのコーナーで不連続にしてみた。

fig 10

「カーブ」に変換すると各コントロールポイントを通過するものになった。

fig 11

「BSpline」に変換すると下のようになった。

fig 12

以上のように曲線を他のタイプに変換した場合、必ずしも同じ形状になる事は期待できない事がわかった。

極力形状を一致させないなら「Curve Rebuild」でポイント数を増やして変換する曲線を短くしてやればいいかも。

fig 13

下の画像はポイント数を30に増やしてみたもの。「BSpline」に変換してもほぼ元の形状と変らなくなった。

fig 14

続きはまた次回。

modo10-13ブログ目次



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

2019年04月11日

来週はお休みします

次回定期更新は4月22日にします。



take_z_ultima at 11:31|この記事のURLComments(0)その他 
Archives