我有一个3D Globe,每个国家都是单独的网格。 我正在使用3D Max编写脚本,自动化枢轴中心。
for all in selection do(all.pivot = all.center)
这部分没问题。然而,我将这个带入Unity,并希望将游戏对象定位到这些枢轴中。为了使这个看起来美观,每个网格的枢轴应垂直。
现在我一直在网上寻找解决方案的方向,而且我一直在努力 - 也许是因为误解。
我认为获得numFaces并将其除以2会得到一个合适的位置和旋转对齐,但不幸的是,中间多边形不足以接近网格中心。
我想知道有没有办法通过选择网格中最接近整体枢轴的多边形,或者通过与新创建的网格交叉选择中心多边形来实现此目的。
也许我让这很复杂。
有人会有任何意见可以让我朝着正确的方向前进吗?
谢谢。
答案 0 :(得分:0)
好的我在经过一些头撞后想通了。解决方案对我来说'由球形地球的海洋的枢轴点提供。通过找到Joker Martini提供的问题,为每个网格的每个枢轴设计一个lookAt来查看目标(中心的球形世界水的枢轴),然后通过了解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
)
很高兴听到有关此问题的任何意见,以便进行优化或改进建设。
谢谢。