1

我正在尝试.vmf使用 OpenGL 从 C++ 中的源引擎文件渲染画笔。

.vmf实体画笔存储为一系列平面,我想用它们来计算每个画笔的点。.map我很确定这将与所有基于 Quake 引擎的文件完全相同。

基本上,画笔的每个点都是 3 个平面相交的点。我在 stackoverflow 上发现了一个与我类似的问题,解释是获取 3 个平面的单位法线,然后在此页面 mathworld.wolfram.com/Plane-PlaneIntersection.html 上使用公式 8。我的问题是我不知道如何实现

这是单个 6 面立方体形刷子的一些代码:

    "plane" "(0 0 256) (0 256 256) (256 256 256)"
    "plane" "(0 256 0) (0 0 0) (256 0 0)"
    "plane" "(0 0 0) (0 256 0) (0 256 256)"
    "plane" "(256 256 0) (256 0 0) (256 0 256)"
    "plane" "(0 256 0) (256 256 0) (256 256 256)"
    "plane" "(256 0 0) (0 0 0) (0 0 256)"

我真的不知道从哪里开始,任何帮助将不胜感激,谢谢。

4

1 回答 1

1

执行此操作的常用方法是使用平面填充 BSP 树。有了 BSP 就可以很容易地执行布尔运算,例如“获取所有这些平面并发出由它们包围的(凸)体积”,平面的交点是边,边的交点是点。

于 2013-07-29T07:37:52.293 回答