【问题标题】:3D objects rendered using OpenGL ES (iPad) overlap (fuse together)使用 OpenGL ES (iPad) 渲染的 3D 对象重叠(融合在一起)
【发布时间】:2013-10-30 05:17:01
【问题描述】:

我是 iOS 编程的新手,因此如果这是一个幼稚的问题,请提前道歉。我从 3DS Max(作为 .obj)导出了一些对象(单独),然后使用 Heiko Behrens 先生提供的算法,该算法可在 here 获得。

算法所做的是将 .obj 文件转换为头文件(包含顶点、法线和纹理坐标数据)。然后 Xcode 读取此信息以将这些对象渲染到 iPad 上。

现在我尝试将所有对象一起导出为一个大的 .obj 文件,但创建的头文件采用 Xcode 无法读取的格式。所以我单独导出每个对象,使它们成为 30 个单独的头文件(对应于 30 个对象),其中包含各个对象的顶点、法线和纹理坐标。现在出于测试目的,我渲染了前 2 个对象。我设法这样做了,但 2 个对象显示为合并为一个(或重叠)。我还添加了代码以使对象旋转成为可能,这验证了 2 个对象已融合在一起。

我的问题是:

当我从 3DS Max 导出单独的 obj 文件时,这些对象的相对位置是否保留?如果不是,我如何并排显示这些对象而不是融合单元?

我是否必须将每个对象分别翻译到所需的位置?如果是这样,请指导我如何?

非常感谢有关我的问题的任何帮助/cmets,并提前感谢您!

谢谢, H

【问题讨论】:

    标签: ios 3d opengl-es-2.0 3dsmax


    【解决方案1】:

    如果您只想并排显示它们,那么您可以使用以下技巧: 创建一个非常小的盒子,然后将其居中在 0,0,0 ,然后将您的网格对象移动到您想要的一侧,然后将此对象附加到 0,0,0 中的小盒子对象。

    为您要显示的每个新对象创建一个新框,并以相同的方式将其附加到它们自己的框上。

    【讨论】:

    • 非常感谢斯蒂格的建议。我环顾四周,想出了一个想法,即为每个对象分配一个名为“位置”的属性(这将是一个用于 x、y 和 z 坐标的数组)并将它们相对放置。这样事情就变得灵活了,我可以根据需要移动它们。
    猜你喜欢
    • 1970-01-01
    • 2012-08-23
    • 2013-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多