天天看点

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

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

问题:

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

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

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

解决办法:

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

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

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

效果图:

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

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