2017-04-21 5 views
0

私は3Dグローブを持っており、各国は別々のメッシュです。 私はピボットのセンタリングを自動化するスクリプトを3D Maxに書き出しています。Maxscript - メッシュの選択をメッシュに対して垂直にピボットする

for all in selection do(all.pivot = all.center) 

この部分は問題ありません。しかし私はこれをUnityに持ち込み、これらのピボットのそれぞれにゲームオブジェクトを配置したいと考えています。これを見た目に美しく見せるには、各メッシュのピボットを垂直にする必要があります。

今、私は解決策の方向をオンラインで探していると私は苦労してきた - おそらく誤解まで。

私はnumFacesを取得して2で割ることは、適切な位置と回転アライメントを与えるだろうと思ったが、残念ながら途中ポリゴンメッシュの中心部に十分に近いではありません。私が思っていた

が新たに作成されたメッシュとの交点を介してセンターポリゴンを選択することで、多分全体のピボットにメッシュ内の最も近いポリゴンを選択するかによって、これを行う方法です。

おそらく私はこれを複雑にしています。

誰でも正しい方向に私を置くことができる入力がありますか?

ありがとうございます。

答えて

0

私はいくつかのヘッドブーツの後でそれを理解しました。私のための解決策は、球形の地球の海洋のピボットポイントによって提供されました。ターゲット(センタリングされる球状の世界水のピボット)を見て、その後objectoffsetrotについて学ぶことにより、回転によりピボットをひっくり返すためにあらゆるメッシュの各ピボットのためのルックアットを設計するためにジョーカーマティーニが提供する質問を見つけることによって。

それが誰かのために有用である可能性があるとして、ここにあります。

for all in selection do(

    one = all 
    target = $'Globe Sea' 
    pivotLookAt one two 
    RotatePivotOnly one ((eulerangles 0 180 0) as quat) 

    ) 


fn pivotLookAt obj target = 
(
ResetXForm obj 
old_tm = obj.transform 
obj.dir = normalize (target.pos - obj.pos) 
obj.objectOffsetRot = old_tm * (inverse obj.transform) 

) 

fn RotatePivotOnly obj rotation = 
( 
local rotValInv = inverse (rotation as quat) 
animate off in coordsys local obj.rotation *= RotValInv 
obj.objectoffsetrot*=RotValInv 
obj.objectoffsetpos*=RotValInv 
) 

最適化や建設的な改善のために、これに関するご意見をお寄せいただきありがとうございます。

ありがとうございます。

関連する問題