我有一个 vector<vector<int>>
,其中包含我的 map (使用我的随机生成器创建的二维数组):
(来源:cjoint.com)
我想以 3D 形式显示此 map (使用 Irrlicht 图形 3D 库)。大问题:我的 map 太大 (1920x1080),所以我无法在屏幕上显示 2073600 个小立方体。 (我希望能够更改我的 map 并使用良好的网格重新加载屏幕)
所以我的解决方案是创建一个立方体,然后在上面写上我想要的所有像素 (这是我给你看的小颜料……)
(来源:cjoint.com)
所以...我知道如何在 C++ 中创建/写入/解析文件,现在我的问题是:我不太了解 3D 透视图和 .obj 对象...
我正在通过维基百科和其他文档学习 OBJ 格式。
我想知道是否有比实时更改 .obj 对象更简单的解决方案...如果没有...我需要一些帮助来构思我的 obj...
最佳答案
我认为您在这里混淆了问题。 Alias wavefront obj 是一种用于存储 3d 几何体的文件格式,使用它提取几何体非常容易。 MTL( Material 模板库)比几何体稍微复杂一些,通常与 .obj 文件相关联,用于定义几何体的视觉表示(关于其 Material 外观)。
您要问的更多是几何问题(如何从表面上去除孔洞),并且完全取决于您的几何图形的表示方式(我假设已三角化,因为您询问的是 obj,它表示三角化数据)。需要有关您如何存储数据的更多信息。
也许可以尝试研究使用 bool 运算构造几何体的 Constructive Solid Geometry。如果您有三角测量数据,那么除非您使用某种形式的 BVH 来处理要处理的三角形/几何图形,否则您最终将使用蛮力来查看哪些三角形是有效的,哪些需要移除以进行“去除孔洞”。
关于c++ - 在 C++ 中创建 Wavefront .obj 文件(网格 3D),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36993641/