用C ++创建Wavefront .obj文件(网格3D)

时间:2016-05-03 00:20:05

标签: c++ 3d mesh .obj irrlicht

我有vector<vector<int>>,其中包含我的地图(使用随机生成器创建的2D数组):

img http://www.cjoint.com/doc/16_05/FEcx3nclcv4_Screenshot-from-2016-05-03-01-54-07.png

我想以3D形式显示此地图(使用Irrlicht图形3D库)。最大的问题:我的地图太大了(1920x1080),所以我无法在屏幕上显示2073600小立方体。 (我希望能够更改我的地图并使用良好的网格重新加载屏幕)

所以我的解决方案是创建一个立方体,并在其上写下我想要的所有像素 (这是给我看的小油漆......)

img http://www.cjoint.com/doc/16_05/FEdajlMNlQ4_Untitled.png

所以...我知道如何用c ++创建/编写/解析文件,现在我的问题是:我不太清楚3D透视和.obj对象......

我正在使用维基百科和其他文档学习OBJ格式。

我想知道是否有更简单的解决方案,而不是改变现场的.obj对象......如果不是......我需要一些帮助来构建我的对象......

1 个答案:

答案 0 :(得分:0)

我认为你在这里混淆了问题。别名wavefront obj是用于存储3d几何体的文件格式,它非常易于用于提取几何体。 MTL(材质模板库)有点复杂,只是几何体,通常与.obj文件相关联,用于定义几何体的可视化表示(关于其材质外观)。

你所问的更多的是几何问题(如何从表面上移除一个孔)并且完全取决于你的几何形状是如何表示的(我假设因为你询问关于obj的三角形,它代表三角形数据)。有关如何存储数据的更多信息。

也许尝试一下使用布尔运算来构造几何的构造实体几何。如果您有三角测量数据,那么除非您使用某种形式的BVH来处理要处理的三角形/几何形状,否则您最终将使用蛮力来查看哪些三角形有效以及哪些三角形需要移除以进行“去除孔”。