【发布时间】:2011-05-13 01:43:55
【问题描述】:
我的公司一直在为基于 OpenGL 的游戏在 Unity3D 中创建内部关卡编辑器。问题是我无法将 Unity 的光照模型映射到 OpenGL。
Unity 灯光的大多数设置都有意义,尽管我在将“范围”映射到 OpenGL 的常量、线性和二次衰减时遇到了问题。
在 Unity 中,“范围”似乎是表面接收到“无光”(微量)的距离。我已经得到了近似值,但是我很想知道正确的映射。
【问题讨论】:
我的公司一直在为基于 OpenGL 的游戏在 Unity3D 中创建内部关卡编辑器。问题是我无法将 Unity 的光照模型映射到 OpenGL。
Unity 灯光的大多数设置都有意义,尽管我在将“范围”映射到 OpenGL 的常量、线性和二次衰减时遇到了问题。
在 Unity 中,“范围”似乎是表面接收到“无光”(微量)的距离。我已经得到了近似值,但是我很想知道正确的映射。
【问题讨论】:
范围实际上没有意义,因为从技术上讲,光线受 1/r² 衰减控制。 OpenGL 固定函数管道为您提供了两个衰减因子:线性和二次衰减因子。在线性情况下,线性因子只是 1/范围,但产生的照明看起来并不自然。在二次衰减情况下,您可以假设光衰减到 1/10 的距离作为范围(假设衰减到最低有效位在理论上听起来更好,但会导致衰减太短)。
【讨论】: