本问题虽然与Unigine引擎相关,但对其他精度问题也有参考价值。
问题:
将精细模型顶点从自身参考系的相对坐标(类似4378.95020,4561.00000,31.3887463)
转到椭球面世界坐标(笛卡尔坐标,类似-2276990.2255267254,5002705.8561162204,3235626.9292423548),
再转回自身参考系相对坐标,在这个过程中,精度丢失。
解决办法:
精细模型的顶点只支持设置float型数据,因为显卡绘制double型承受不起;
在拿出顶点的数据进行处理的过程中,始终采用double型数据进行中间转换计算,直至计算出最终结果;
将double型的计算结果截取赋值给float型的顶点,此种情况下,转换后的顶点精度符合预期。
效果图:
左:精度丢失;右:符合预期的精度