如何使用Unity将一个点转换为另一个平面空间?

时间:2018-03-18 18:00:24

标签: unity3d quaternions

我目前正在使用Unity切割三维网格,但我遇到了导致最终结果出现伪影的问题。要对先前已经切片的网格进行切片,我需要跟踪以前的三角形曲面,以便将它们添加到新网格中。要做到这一点,我只是在facet的点上迭代并确定哪个点位于平面上方,哪个点位于下方并从那里开始构建两个不同的方面。但是,如果平面位于两点之间,则会在三角形刻面中产生间隙。

enter image description here

这可以在上面的图像中看到,蓝线代表平面下面,红色上面。

我知道解决方法,但我不确定该怎么做。

我已经有了飞机的位置,这是我想要插入一个新点的直接位置(直接位于可见间隙的两个点之间,这应该添加一个额外的三角形以封闭间隙)但是这个平面位置是不是在三角形飞机上。

我如何将这一点转化为方面的平面?

1 个答案:

答案 0 :(得分:0)

我有一个类似的问题,结果取决于对象的位置。这是因为网格点始终位于对象本地coortinate空间中,您需要在触摸全局空间之前将它们转换为/从本地空间转换(即,获取平面位置/旋转并将其带入本地空间)。 这是通过一对方法实现的

 transform.TransformPoint(Vector3) 
 transform.InverseTransformPoint(Vector3)
它确实需要一些试验和错误,可能不是你的问题的解决方案,但如果你自己生成椎骨,这是一个非常有用的工具