如何从 DCC 工具(例如 Blender)获取 OBJ 文件中正确的顶点数以在 OpenGL ES 中使用?

2023-12-13

有人告诉我,对于一个简单的立方体,当我想要 OpenGL ES 应用程序的颜色/纹理等时,我需要 36 个顶点,但是当我使用 Blender 将彩色立方体导出为 OBJ 格式时,我只得到 8 个顶点,而且我也没有得到甚至可以在 OBJ 中获取颜色数据,更不用说我在 OBJ 文件中只获取 8 个法线,但我需要每个三角形中的每个顶点的法线(总共 36 个法线)。

这是我得到的立方体 OBJ 文件的内容,该立方体的所有面都涂上了不同的颜色:

# Blender v2.56 (sub 0) OBJ File: ''
# www.blender.org
mtllib untitled.mtl
o Cube
v 1.000000 1.000000 -1.000000
v 1.000000 -1.000000 -1.000000
v -1.000000 -1.000000 -1.000000
v -1.000000 1.000000 -1.000000
v 1.000000 0.999999 1.000000
v 0.999999 -1.000001 1.000000
v -1.000000 -1.000000 1.000000
v -1.000000 1.000000 1.000000
vn 0.666646 0.666646 0.333323
vn 0.408246 0.408246 -0.816492
vn -0.408246 0.816492 -0.408246
vn -0.666646 0.333323 0.666646
vn -0.577349 -0.577349 -0.577349
vn -0.577349 -0.577349 0.577349
vn 0.816492 -0.408246 -0.408246
vn 0.333323 -0.666646 0.666646
usemtl Material
s 1
f 5//1 1//2 4//3
f 5//1 4//3 8//4
f 3//5 7//6 8//4
f 3//5 8//4 4//3
f 2//7 6//8 3//5
f 6//8 7//6 3//5
f 1//2 5//1 2//7
f 5//1 6//8 2//7
f 5//1 8//4 6//8
f 8//4 7//6 6//8
f 1//2 2//7 3//5
f 1//2 3//5 4//3

这是MTL文件的内容:

# Blender MTL File: ''
# Material Count: 1
newmtl Material
Ns 96.078431
Ka 0.000000 0.000000 0.000000
Kd 0.640000 0.640000 0.640000
Ks 0.500000 0.500000 0.500000
Ni 1.000000
d 1.000000
illum 2

立方体有 36 个顶点是不正确的。可能但没有必要。

A vertex是一种空间坐标,由 x、y、z 3 个参数组成。
由于立方体有 8 个角,因此应该只有 8 个顶点。

继顶点之后,有纹理坐标这是在 Blender 中进行 UV 映射后获得的。

纹理坐标之后是indices。它们是连接顶点的顺序,决定了立方体的绘制顺序。

最后,还有normals用于灯光效果。



在 Blender 中导出时,请确保仅突出显示以下内容:

Context:
所有场景

输出选项:
三角测量、材质、UV、法线、HQ

Blender 对象作为 OBJ:
objects

这会给你两个文件:OBJ and MTL

MTL包含纹理图像信息
OBJ 包含:

vertices以...的形式:
x、y、z
x、y、z

纹理坐标以...的形式:
VT x, y
VT x, y

indices以...的形式:
f i/j k/l m/n
f i/j k/l m/n

成功获取导出的 OBJ 和 MTL 文件后,将它们与纹理图像一起添加到您的项目中,并使用 OpenGLOBJLoader 类在 iOS 中渲染它们。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从 DCC 工具(例如 Blender)获取 OBJ 文件中正确的顶点数以在 OpenGL ES 中使用? 的相关文章

随机推荐

  • long 类型的最大十六进制值

    我已将 Java 代码移植到 C 您能否解释一下为什么我在下面的行中出现编译时错误 我使用 VS 2008 private long l 0xffffffffffffffffL 16 f got here 无法将源类型 ulong 转换为目
  • Bash - 从循环中获取基本名称

    我想得到basename来自循环但这只会返回我 FILES home aaaa bbbb Get all folders for f in FILES do basename f done 我做错了什么 您甚至不需要创建一个数组并像这样执行
  • 静脉如何在简单路径损耗模型中计算 RSSI?

    我们正在开发一个基于 Veins 框架的应用程序 它需要接收信号的 RSSI 值以及发送器和接收器之间的距离 我们参考了 VeReMi 项目 它也计算 RSSI 值并将其发送到上层 我们将模拟结果 RSSI 与距离 与 VeReMi 数据集
  • 如何通过单击按钮打印 React 组件?

    如何单击按钮仅打印一个组件 我知道这个解决方案 window frames print frame window focus window frames print frame window print print frame remove
  • 在 IIS/ASP.NET 上的物理文件夹中创建虚拟应用程序/目录

    我想要实现的目标很简单 我有一个网站 请说 我的网站 http localhost 在这个网站中 我有一个 物理 文件夹 foo http localhost foo 在 foo 文件夹内 我想要一个名为 upload 的虚拟目录 应用程序
  • 列表框上下文菜单

    如何在 MFC 的列表框中添加上下文菜单 我在列表框的属性中没有看到任何 WM CONTEXTMENU 处理程序 有任何想法吗 EDIT 我按照这个教程MFC 列表控件 如何在列表控件中使用上下文菜单 本教程说要从我所做的 CListBox
  • 运行 PyGame 程序,无需启动到桌面 Raspberry Pi

    我正在使用 Raspberry Pi 的 PiTFT 显示屏 并且我想在不启动到桌面的情况下运行我的 PyGame Python 程序 我想要这样做的原因是因为这意味着更少的 RAM 使用 这对于 Raspberry Pi 来说非常重要 以
  • 计算部分和的 MySQL 查询

    我应该在 MySQL 数据库中执行什么查询才能获得包含源表的部分和的结果 例如当我有桌子时 Id Val 1 1 2 2 3 3 4 4 我想得到这样的结果 Id Val 1 1 2 3 1 2 3 6 1 2 3 4 10 1 2 3 4
  • Redshift regexp_substr

    我想将此正则表达式模式复制到 regexp substr 我想捕获第二组 我已经尝试过这个 regexp my url 还有上面的一些类似的变体 但我收到了错误 ERROR XX000 Invalid preceding regular e
  • 点击 Safari Mobile 中的突出显示和 jQuery on() 函数会产生巨大的突出显示

    我正在使用 jQuery 的on 在 iOS 的 Safari 移动浏览器上的功能如下 content on element click function do stuff 当点击 elementSafari 凸显整体 content面积而
  • E/AndroidRuntime:致命异常:main [关闭]

    Closed 这个问题需要调试细节 目前不接受答案 当我测试我的应用程序时 我在 Android Studio Consol 中收到以下错误 08 21 13 56 28 059 9637 9637 net dominik genpush
  • 从 Activity 访问 Android 收件箱/消息传递?

    是否可以从您自己编写的活动中打开默认的 Android Messaging 活动 例如 我在程序中按下 邮件 按钮 它会打开 Android 消息应用程序 就像我按下主屏幕上的消息图标一样 我对 联系人 活动做了类似的操作 但只出现了联系人
  • 在 Tensorflow 中使用我自己的数据运行卷积网络时出错

    一般来说 我是一个使用 Tensorflow 和机器学习的初学者 所以有很多概念我仍然不太理解 如果我的错误很明显 很抱歉 我正在尝试使用我自己的图像 光学显微镜照片 调整大小为 60x60 来训练我自己的卷积网络 并且我只有 2 个标签来
  • 在 Windows Phone 7 应用程序上创建枢轴页脚

    我知道Windows Phone的枢轴控制有两部分 枢轴标题和枢轴项控制 我想显示的是 枢轴项目控件下方的枢轴标题 或枢轴页脚 但我发现这个东西在枢轴控制中不可用 有没有其他方法可以在 wp7 应用程序的页脚显示选项卡 感谢致敬 您可以为枢
  • SQL Server 中的 XML 查询

    我刚刚开始在 SQL Server 数据库中查询 XML 我在最基本的查询上遇到了麻烦 这是一个简化的示例 如何返回描述 下面的 SELECT 语句是我正在使用的 但它什么也不返回 SELECT Incidents IncidentXML
  • Collectors.groupingBy(函数、供应商、收集器)不接受 lambda/看不到流式传输值

    我尝试使用流和收集器对值进行分组 我有必须拆分的字符串列表 My data List
  • 日期的剩余天数未正确显示

    好的 所以我创建了一个函数来显示距离未来某个日期的天数 直到天数超过 9 天为止都是正确的 如果超过 它似乎会显示随机的天数 请参阅下面的我的代码 public String daysTillExpire String daysLeft i
  • 如何将蓝牙活动移至服务中

    该应用程序为用户提供了 2 个连接选项 USB 和蓝牙 USB 工作正常 我已经获得了蓝牙连接的示例代码 但是它们被设计为作为活动工作 我尝试在服务中执行此操作但失败了 BluetoothAdapter mBluetoothAdapter
  • 根据键对Python列表进行排序[重复]

    这个问题在这里已经有答案了 我在 python 列表中有一些条目 每个条目都有一个创建日期和创建时间 这些值存储为 python datetime date 和 datetime time 作为两个单独的字段 我需要对条目列表进行排序 以便
  • 如何从 DCC 工具(例如 Blender)获取 OBJ 文件中正确的顶点数以在 OpenGL ES 中使用?

    有人告诉我 对于一个简单的立方体 当我想要 OpenGL ES 应用程序的颜色 纹理等时 我需要 36 个顶点 但是当我使用 Blender 将彩色立方体导出为 OBJ 格式时 我只得到 8 个顶点 而且我也没有得到甚至可以在 OBJ 中获