如何从源引擎vmf计算笔刷的点? 我试图用C++语言编写源代码引擎>代码> VMF文件,使用OpenGL.

如何从源引擎vmf计算笔刷的点? 我试图用C++语言编写源代码引擎>代码> VMF文件,使用OpenGL.,c++,opengl,rendering,game-engine,quake,C++,Opengl,Rendering,Game Engine,Quake,.vmf将实体笔刷存储为一系列平面,我想使用这些平面来计算每个笔刷的点。我非常确定这将与所有基于地震引擎的.map文件完全相同 基本上,笔刷的每个点都是3个平面相交的点。我在stackoverflow上发现了一个与我类似的问题,解释是获得3个平面的单位法线,然后使用mathworld.wolfram.com/Plane-PlaneIntersection.html页面上的等式8。我的问题是,我不知道如何实现这一点 下面是一个6面立方体形状笔刷的一些代码: "plane" "(0 0 25

.vmf
将实体笔刷存储为一系列平面,我想使用这些平面来计算每个笔刷的点。我非常确定这将与所有基于地震引擎的
.map
文件完全相同

基本上,笔刷的每个点都是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)"

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

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

通常的方法是用平面填充BSP树。有了BSP,可以很容易地执行布尔运算,比如“取所有这些平面并发射它们所包围的(凸)体积”,平面的交点是边,边的兴趣点是点。

这个解释对我来说有点太高了,你能更详细地解释一下如何实现它吗?@Chris528:使用BSP树是显而易见的,因为它们是Id技术引擎的基本数据结构,而在它们的传统中,源引擎是建立在它们之上的;因此,如果您想处理为这些应用程序生成的数据,应该使用BSP。BSP树是一种按平面递归分割空间的数据结构。基于BSP树的3D引擎使用笔刷的平面来形成实际体积。BSP是一个广泛的主题,我建议阅读这篇文章,说明对我来说有点太高了,你能更详细地解释一下如何实现它吗?@Chris528:使用BSP树是显而易见的事情,因为它们是Id技术引擎的基本数据结构,而在它们的传统中,源引擎是建立在它们之上的;因此,如果您想处理为这些应用程序生成的数据,应该使用BSP。BSP树是一种按平面递归分割空间的数据结构。基于BSP树的3D引擎使用笔刷的平面来形成实际体积。BSP是一个广泛的主题,我建议您阅读本文