为fps游戏创建3d地图-Three.js

为fps游戏创建3d地图-Three.js,3d,three.js,webgl,3d,Three.js,Webgl,我想用Three.js创建一个3d地图,就像在反恐游戏中一样,但我不知道用哪种格式创建它?我应该使用什么工具来创建它?我不知道three.js,但最近我使用了上面提到的游戏格式,并且有一些关于它的信息 如果你想为像《反击战》这样的游戏创建地图,最好的方法是创建一个由Valve Hammer Editor识别的*.map格式的文本文件。编辑器可用于将贴图编译为已编译的二进制格式(在添加一些灯光、实体等后) 文本映射文件格式如下所述: 有趣的是,数据并不像大多数3d数据交换格式那样以典型的3d数据

我想用Three.js创建一个3d地图,就像在反恐游戏中一样,但我不知道用哪种格式创建它?我应该使用什么工具来创建它?

我不知道three.js,但最近我使用了上面提到的游戏格式,并且有一些关于它的信息

如果你想为像《反击战》这样的游戏创建地图,最好的方法是创建一个由Valve Hammer Editor识别的*.map格式的文本文件。编辑器可用于将贴图编译为已编译的二进制格式(在添加一些灯光、实体等后)

文本映射文件格式如下所述:

有趣的是,数据并不像大多数3d数据交换格式那样以典型的3d数据格式存储(直接存储带有纹理信息的面或四边形)。阀映射文件格式存储有关剪裁平面的信息,这些剪裁平面允许创建模型的特定部分。此外,坐标系不是真实的(不是米或类似的单位),所以您必须将模型校准为游戏单位

因此,简单墙(8个角,6个四边形)是实心墙,从6个方向剪裁,需要6个平面定义数据

不幸的是,这不是一项简单的任务,因为拥有四边形/面信息,您必须分析线框模型并将其组合到实体(体积数据)中,该实体可用于拆分为目标数据剪裁平面

我认为解决办法是:

  • 您必须找到将创建的模型转换为剪裁平面定义的实体模型的方法。

  • 在下一步中,您必须以阀映射格式编写它,并在阀锤编辑器中导入它

  • 在下一步中,您可以使用编辑器将地图编译为二进制地图格式(我假设您为bsp地图编译配置了zhlt工具),这将被游戏识别


下面是一个使用three.js画布渲染器创建3d地图的非常好的示例:

你真的应该做一些研究,stackoverflow是来帮助你解决当前解决方案中的问题的,你还没有这样的解决方案。地图不是3d对象,它是一个简单的2d图像,玩家通过根据地图坐标计算他在3d中的位置来绘制它。