Unity3D如何把Mesh顶点转化到世界坐标系

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Unity3D如何把Mesh顶点转化到世界坐标系相关的知识,希望对你有一定的参考价值。

参考技术A this.transform.TransformPoint(this.transform.GetComponent<MeshFilter>().mesh.vertices[0]);
这样就可以了

Unigine mesh顶点坐标转换精度问题

本问题虽然与Unigine引擎相关,但对其他精度问题也有参考价值。

问题:

将精细模型顶点从自身参考系的相对坐标(类似4378.95020,4561.00000,31.3887463)

转到椭球面世界坐标(笛卡尔坐标,类似-2276990.2255267254,5002705.8561162204,3235626.9292423548),

再转回自身参考系相对坐标,在这个过程中,精度丢失。

解决办法:

精细模型的顶点只支持设置float型数据,因为显卡绘制double型承受不起;

在拿出顶点的数据进行处理的过程中,始终采用double型数据进行中间转换计算,直至计算出最终结果;

将double型的计算结果截取赋值给float型的顶点,此种情况下,转换后的顶点精度符合预期。

效果图:

左:精度丢失;右:符合预期的精度

技术分享图片    技术分享图片

 

以上是关于Unity3D如何把Mesh顶点转化到世界坐标系的主要内容,如果未能解决你的问题,请参考以下文章

Unity3D之Mesh绘制多边形

Unity3d之将terrain转化成mesh

Unity3d bounds包围盒 和collider碰撞器区别

三维图形显示流程

unity导入fbx模型后获取其中mesh的绝对世界坐标

OpenGL下坐标系统解析