【发布时间】:2016-08-27 21:06:17
【问题描述】:
我有一个vector<vector<int>>,其中包含我的地图(使用我的随机生成器创建的二维数组):
(来源:cjoint.com)
我想以 3D 形式显示此地图(使用 Irrlicht 图形 3D 库)。最大的问题:我的地图太大(1920x1080),所以我无法在屏幕上显示 2073600 小立方体。 (我希望能够更改我的地图并使用良好的网格重新加载屏幕)
所以我的解决方案是创建一个立方体,并在上面写上我想要的所有像素 (这是我的小颜料给你看……)
(来源:cjoint.com)
所以...我知道如何在 c++ 中创建/写入/解析文件,现在我的问题是:我不太了解 3D 透视图和 .obj 对象...
我正在通过维基百科和其他文档学习 OBJ 格式。
我想知道是否有比实时更改 .obj 对象更简单的解决方案...如果没有...我需要一些帮助来了解我的 obj 的概念...
【问题讨论】:
-
.obj 这里指的是 3d 格式:en.wikipedia.org/wiki/Wavefront_.obj_file,而不是通过编译 c/c++ 代码生成的 Visual Studio .obj 目标文件——我编辑了标题以使其超级清晰。
-
您必须为 .obj 格式编写一个解析器(这并不简单,但在此处有比较详细的记录:martinreddy.net/gfx/3d/OBJ.spec)将其加载到内存中,进行任何您想要的更改,然后对其进行序列化退出。这是一项相当大的任务,不适合胆小的人。根据您的文件使用多少 .obj 功能,将决定您必须为多少 .obj 格式编写解析器。
-
谢谢你,我正在创作过程中取得进展。但我很笨:如何在表面 3D 中制作孔?
-
@usernameHed 你的图片不是很有教养,而且(至少对我来说)很难理解你想要达到的目标。这是表面高度图吗?为什么我看不到任何孔,为什么是立方体而不是连续表面?
标签: c++ 3d mesh wavefront irrlicht