地震地图笔刷
Quake MAP brushes
许多关卡编辑器,如 Quake 或 Source 游戏,使用隐式平面方程来表示刷边(3 点),而不是简单的(n.x n.y n.z d)。
{
...
( 256 0 0 ) ( 256 0 1 ) ( 256 1 0 ) GROUND1_6 0 0 0 1.0 1.0
( 0 128 0 ) ( 0 128 1 ) ( 1 128 0 ) GROUND1_6 0 0 0 1.0 1.0
...
}
这有什么原因吗?我知道它可以很容易地转换成任何形式,只是想知道他们为什么使用这种形式。它是一些浮点精度的东西吗?
Quake 使用平面方程和平面边性测试,广泛使用,因此如果您只是想渲染地图几何图形,这看起来很尴尬或烦人,但很可能使用此表示的一个非常简单的决定。如上所述,它允许地图格式对平面边使用整数坐标。这意味着格式本身是 "lossless" 并且不受浮点舍入问题的影响。可以用浮点数或全双精度计算顶点坐标。事实上,较新的 BSP 编译器(q3map2、quemap 等)确实在某些面分割计算中使用双精度。
许多关卡编辑器,如 Quake 或 Source 游戏,使用隐式平面方程来表示刷边(3 点),而不是简单的(n.x n.y n.z d)。
{
...
( 256 0 0 ) ( 256 0 1 ) ( 256 1 0 ) GROUND1_6 0 0 0 1.0 1.0
( 0 128 0 ) ( 0 128 1 ) ( 1 128 0 ) GROUND1_6 0 0 0 1.0 1.0
...
}
这有什么原因吗?我知道它可以很容易地转换成任何形式,只是想知道他们为什么使用这种形式。它是一些浮点精度的东西吗?
Quake 使用平面方程和平面边性测试,广泛使用,因此如果您只是想渲染地图几何图形,这看起来很尴尬或烦人,但很可能使用此表示的一个非常简单的决定。如上所述,它允许地图格式对平面边使用整数坐标。这意味着格式本身是 "lossless" 并且不受浮点舍入问题的影响。可以用浮点数或全双精度计算顶点坐标。事实上,较新的 BSP 编译器(q3map2、quemap 等)确实在某些面分割计算中使用双精度。