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│Comments(0)3ds Max | CG

この記事にコメントする

名前:
URL:
  情報を記憶: 評価: 顔   
 
 
 

Archives