【问题标题】:How to translate a point into another plane space using Unity?如何使用 Unity 将一个点转换为另一个平面空间?
【发布时间】:2018-03-18 18:00:23
【问题描述】:

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

这可以在上图中看到,其中蓝线代表在平面下方,红色线代表在平面上方

我知道一个解决方案,但我不确定如何去做。

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

我如何将此点转换为刻面的平面?

【问题讨论】:

    标签: unity3d quaternions


    【解决方案1】:

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

     transform.TransformPoint(Vector3) 
     transform.InverseTransformPoint(Vector3)
    

    它确实需要一些试验和错误,可能无法解决您的问题,但如果您自己生成顶点,它绝对是一个非常有用的工具

    【讨论】:

    • 感谢您的回答,是的,我遇到过这样的问题,但不幸的是它不适用于这个问题。经过一些研究,Vector3 类中有一个方法叫做ProjectOnPlane,它似乎给了我想要的东西。我只需要稍微修改一下。
    猜你喜欢
    • 2012-10-10
    • 1970-01-01
    • 2023-03-17
    • 1970-01-01
    • 1970-01-01
    • 2018-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多