在 Unity3D 中如何将网格中的顶点位置转换/比较到世界坐标

问题描述

在 unity3D 中,我使用 quadsmesh 以高 FPS 渲染大量和大型星域,如新星和星系,仅使用一个游戏对象,使用着色器对四边形产生近淡化效果

在构建网格时,我将每个星星(顶点)的位置和一些参数存储在一个数组中,并为指定范围内的每个项目生成游戏对象,并希望销毁那些距离较远的对象以保持游戏对象实例尽可能少.

当网格及其所有父对象的变换位置设置如下时,它工作得很好:

位置 x:0 y:0 z:0 旋转 x:0 y:0 z:0 缩放 x:1 y:1 z:1

当我对网格对象或任何父对象应用变换(位置旋转或缩放)时,我失去了生成对象位置和星空渲染位置之间的同步

已经尝试过,但成功率有限

public Vector3 GetVertexWorldPosition(Vector3 vertex,Transform owner)
{
    return owner.localToWorldMatrix.MultiplyPoint3x4(vertex);
}

我可以解决 Vector3Positioppn 使用

star.position = GetVertexWorldPosition(vertex,starfield.transform) + starfield.tranform.position;

是否有标准方法可以将网格中顶点的位置(无论网格的变换位置旋转和缩放)转换为场景世界位置?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)