面のローカル回転を取得する方法はありますか。

MAXScript に関する質問と回答 > 編集可能メッシュの操作 > 面のローカル回転を取得する方法はありますか。

ここでは、ローカル座標系において、編集可能メッシュの面から[回転 キー入力変換](Rotate Transform Type-In)ボックスに表示されている回転値を取得する方法について説明します。

GetFaceNormal によって、ローカル座標の面法線が Point3 値として返されます。

オブジェクトの変換行列を乗算すると、ワールド空間の面法線を取得できます。

matrixFromNormal により、面法線をローカル Z 軸として使用して新しい matrix3 値を作成します。この matrix3 値は、まさに今求めている値によって、単位行列に相対的に回転します。

matrix3 値を eulerAngles に変換することによって、ローカル座標系において面が選択されたときに[キー入力変換](Transform Type-In)に表示される 3 つの値とぴったり同じ値を取得できます。

スクリプト:

fn getLocalFaceRotation mesh index =
(
  (matrixFromNormal (getFaceNormal mesh index)*mesh.transform ) as eulerAngles
)

obj = sphere() --create a GeoSphere
convertToMesh obj --collapse to EditableMesh
setFaceSelection obj #{38..40, 49, 50, 59, 60, 70, 80} -- select some faces
for f in getFaceSelection obj  do
  format "Face: % - Rotation: % \n" f (getLocalFaceRotation obj f)

関連事項