2017-04-21 1 views
0

저는 3D 글로브가 있고 각 나라는 분리 된 메쉬입니다. 필자는 피벗을 중심에 두는 스크립트를 3D Max에 작성하는 중입니다.Maxscript - 메시의 선택을 메쉬에 수직으로 맞 춥니 다

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

이 부분은 문제가 없습니다. 그러나 나는 이것을 Unity에 가져오고 각각의 피벗에 gameobject를 배치하려고합니다. 이 모양을 예술적으로보기 좋게하려면 각 메쉬의 피벗이 수직이어야합니다.

지금 나는 해결책의 방향을 온라인에서 찾고 있었고, 나는 오해를 저질렀습니다.

numFaces를 얻고 2로 나누면 적절한 위치와 회전 정렬이되지만 불행하게도 중간 폴리곤이 메쉬 중심에 충분히 근접하지 못하다고 생각했습니다.

메쉬에서 가장 가까운 폴리곤을 전체 피벗으로 선택하거나 새로 만든 메쉬와 교차점을 통해 가운데 폴리곤을 선택하여이 작업을 수행하는 방법이 있는지 궁금합니다.

아마도 나는 이것을 복잡하게 만들고 있습니다.

누구나 올바른 방향으로 나를 설정할 수있는 입력이 있습니까?

감사합니다.

답변

0

좋아, 머리를 한 후에 알아 냈어. '나를위한 해결책'은 구형 지구의 바다의 피벗 포인트에 의해 제공되었습니다. 조커 마티니 (Joker Martini)가 제공 한 질문을 통해 모든 메쉬의 각 피벗마다 대상을 (구형 세계 물의 중심이 가운데에 위치 함) 바라 보도록 디자인 한 다음 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 
) 

최적화 또는 건설적인 개선을 위해 이에 대한 의견이 있으면 언제든지 알려 주시기 바랍니다.

감사합니다.

관련 문제