用于 ARCore 应用程序开发的 OBJ 文件

Posted

技术标签:

【中文标题】用于 ARCore 应用程序开发的 OBJ 文件【英文标题】:OBJ File for ARCore Application Development 【发布时间】:2018-02-09 15:46:27 【问题描述】:

ARCore Sample 中andy.obj 文件的意义是什么?

假设我们将 andy.png 替换为新图像,如何为新图像生成.obj 文件?

【问题讨论】:

【参考方案1】:

OBJ 文件描述了几何图形,png 文件描述了要在这个 3D 对象上“拉伸”的纹理。您必须使用像 Blender 这样的 3D 建模程序来创建新模型。

这是在 Blender 中导出 OBJ 文件的方式:https://blender.stackexchange.com/questions/121/how-do-i-export-a-model-to-obj-format

【讨论】:

我已经这样做了,但是当我将新模型 (.obj) 文件与 .mtl 文件一起添加到 arcore 项目(替换 andy.obj)时,当我点击时屏幕上什么都没有显示 嗨 Conti,您检查控制台是否有错误?请注意,在 ARCore 示例代码中,ObjectRenderer 使用简单的 2D 纹理(andy.png 文件),这与 MTL 文件中描述的纹理不同。【参考方案2】:

示例代码只能处理只有 1 个纹理文件的最简单的 OBJ 模型。

对于那些复杂的 OBJ 模型,它们通常带有一个 MTL 文件,该文件引用了几个不同的纹理文件。为了能够处理这个问题,您需要对现有代码进行一些额外的工作。如果您对 @https://github.com/JohnLXiang/arcore-sandbox 感兴趣,请查看我为此案例实现的代码。具体可以看一下ObjectRenderer.createOnGlThread()。

【讨论】:

嘿.. 你在 github 上验证过你的代码吗?我正在尝试复制,但它不绘制对象。没有崩溃或任何事情,并进入绘图中材料组的 for 循环。 @ArunReddyKandoor 是的,我做到了。但我也发现我在网上下载的一些 OBJ 出于某种原因无法绘制,我包含在 assets 文件夹中的那些工作正常......对不起,我没有机会研究这个问题 我不确定我做了什么(可能是缩放).. 我现在看到了这些对象,但它们是黑白的。任何线索如何获得真实颜色的对象? @ArunReddyKandoor 抱歉帮不上忙。我还注意到一些纹理文件,即使从我的角度来看它们被正确绑定,它们仍然由于某种原因无法渲染...... @JohnLXiang 你用什么工具导出.OBJ和.MTL(指几个纹理文件)文件?【参考方案3】:

要在 Blender 中将纹理导出为图像,请执行以下操作:

选择您的对象并进入编辑模式。选择所有顶点/面(按“a”)。然后启动UV Mapping,按'u'。并选择 UVMapping 的选项之一。您必须为您的模型测试最佳选项。我不确定 ARCore 使用哪个 UV Mapping 映射选项。

然后转到 UV/图像编辑器:

在菜单中导出 UV 布局,并保存您的图像。

【讨论】:

【参考方案4】:

要为您的 AR 应用程序创建新的.obj 模型,您需要使用 Autodesk Maya、Autodesk 3dsMax、Blender、SideFx Houdini、Cinema 4D 等 3D 创作软件。这些应用程序可以帮助您创建高质量的多边形模型与对应的.mtl 纹理文件。

但是您应该知道,Sceneform 不仅支持OBJ 格式(不支持动画)而且还支持FBX(带有动画)和glTF(不支持动画)格式的3D 资源。

.obj .fbx .glTF

也欢迎Sceneform 的ASCIIBinary 资产定义:

.sfa .sfb

支持的材质文件(也就是您的 3D 资产的纹理)具有以下扩展名:MTLBINPNGJPG 和原生 Sceneform 的 SFM

.mtl .bin .png .jpg .sfm

希望这会有所帮助。

【讨论】:

以上是关于用于 ARCore 应用程序开发的 OBJ 文件的主要内容,如果未能解决你的问题,请参考以下文章

如何在使用ARCORE将3d.obj放入曲面后更改texture.png?

如何在 ARCore 中调整对象的大小?

ARCore增强现实开发实战

ARKit / ARCore 开发中的 3D 模型格式

ARCore 不显示对象的真实尺寸

如何在 ARCore 中显示 PNG 图像?