问题描述
在 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 (将#修改为@)