2017年10月11日
ビットマップペイントツールのチュートリアルをやってみた その90 3dsmax 2017
引き続きMAXScriptマニュアルに載っている「チュートリアル-ビットマップペイントツールを9つの簡単なステップで作成する」 の続きを考えて見たい。
「ボリューム選択」のギズモについての問題がやっと解決したのでそれをプログラムに落とし込んでみた。下がそのコードだ。
fn selectcrossface brushtransform = ( searchLength = sqrt(maxFaceRadius^2+brushsize^2) * 1.05 bbox = nodeGetBoundingBox theObj theObj.transform cp = ((bbox[1] + bbox[2])/2) * theObj.transform sx = abs(bbox[1][1] - bbox[2][1]) sy = abs(bbox[1][2] - bbox[2][2]) sz = abs(bbox[1][3] - bbox[2][3]) sm = scaleMatrix [searchLength / sx,searchLength/sy, searchLength/sz] sanim.transform = sm * brushtransform * inverse(theObj.transform) sanim.pos = (-(cp * inverse(theObj.transform)) *sm * brushtransform) * inverse(theObj.transform) selfaces = getFaceSelection theObj return selfaces )
オブジェクトの中心位置はバウンディングボックスから算出して、変数「cp」にワールド座標系で格納している。
下の画像はこのファンクションに1つのパーティクルから取得した変換マトリクスを与えてみた時の「ボリューム選択」の「ギズモ」の様子だ。「ギズモ」の立方体に歪みも無く、中心がパーティクルの中心と一致しているのが確認できる。
続きはまた次回。