【发布时间】:2017-05-16 17:23:01
【问题描述】:
最近我一直在尝试渲染大场景,比如行星、太阳系和星系,并且遇到了浮点精度和 z-buffer 精度的著名问题。如here 所述,我使用对数深度缓冲区缓解了 z 缓冲区问题;但是,我还没有弄清楚如何解决大距离的浮动精度限制。
我发现的一种常用方法是对不同的距离使用不同的参考系,例如,对于太阳系来说 1 个单位 = 1 兆米,对于银河系尺度来说,1 个单位 = 1 光年,如 here 和 here 所述。在后一个链接中,有人特别建议
这个想法是,您可以以米为单位对地球进行建模,并将其连接到以千米为单位的太阳系。太阳系又依附于银河系,以光年为模型,银河系与以百万光年为单位的本地星团相连。
当你去渲染场景时,你会向下遍历层次结构,并且在每一层,32 位浮点数都有足够的精度。
我的问题是如何实际实施此方法。当我从不同的单位测量转换时,我是否会缩放每个对象?如何保持使用不同坐标系渲染的对象之间的相对大小和距离?
【问题讨论】: