• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ios - 如果我替换 Vuforia iOS 项目的茶壶对象,为什么只看到三角形而不是立方体?

[复制链接]
菜鸟教程小白 发表于 2022-12-12 15:12:15 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我下载了示例 Vuforia iOS 项目。而不是茶壶,我想旋转一个有纹理的立方体。为了创建一个具有纹理的立方体,我使用了 blender 并创建了一个带有 UV 映射图像的 OBJ 文件,如下所示:

enter image description here

在 blender 中,它呈现完美,我可以完美地看到立方体对象的纹理。

然后我使用 perl 脚本将 OBJ 文件转换为 .h 文件,并替换了 Teapot.h 文件,并将茶壶图像替换为我在上面附加的 PNG。

当我运行该项目时,可以看到立方体的纹理,但每边都切割了三角形,如下所示:

enter image description here

我迫切希望在现有的 iOS 项目中创建自定义正方形、具有纹理的立方体,但是我在检查可行性方面没有取得成功。

NOTE: My project is already developed with lots of frameworks and libraries and in one screen, I need to integrate this function.



Best Answer-推荐答案


我可以通过添加到 Blender 来实现它,然后直接从 Blender 导出 .h 文件。在导出之前无需进行三角测量,因为 Unity 已经为我们进行了三角测量。

  • here 下载插件.有关于如何将其添加到 Blender 的完整指南。
  • 在 Blender 中准备你想要的 3D 对象。查看 this教程,它解释了如何使用 Blender 并制作一个简单的 3D 对象,它周围有纹理。

  • 一旦你有了你想要的模型,去 File > Export > Vuforia OpenGL C Include 如下图所示图片。将 .h 文件保存在某个位置

enter image description here

  • 在 Vuforia iOS 示例项目中,以同样的方式添加这个 .h 文件和 UV-mapping 图像(我们用来渲染我们的对象) Teapot.h 及其 UV-mapping 图像。

  • 导入头文件。

  • 更换茶壶:

替换

glVertexAttribPointer(vertexHandle, 3, GL_FLOAT, GL_FALSE, 0, (const GLvoid*)teapotVertices);
glVertexAttribPointer(normalHandle, 3, GL_FLOAT, GL_FALSE, 0, (const GLvoid*)teapotNormals);
glVertexAttribPointer(textureCoordHandle, 2, GL_FLOAT, GL_FALSE, 0, (const GLvoid*)teapotTexCoords);

BlenderExportedObject object = rectObject;

glVertexAttribPointer(vertexHandle, 3, GL_FLOAT, GL_FALSE, 0, (const GLvoid*)object.vertices);
glVertexAttribPointer(normalHandle, 3, GL_FLOAT, GL_FALSE, 0, (const GLvoid*)object.normals);
glVertexAttribPointer(textureCoordHandle, 2, GL_FLOAT, GL_FALSE, 0, (const GLvoid*)object.texCoords);

其中 rectObject 是对象名称。在我的例子中,我的 Blender 对象名称是 rect 所以它在 .h 文件中创建了 rectObject 名称。检查您的 .h 文件以找到该名称。

  • 绘制元素:

替换

glDrawElements(GL_TRIANGLES, NUM_TEAPOT_OBJECT_INDEX, GL_UNSIGNED_SHORT, (const GLvoid*)teapotIndices);

glDrawElements(GL_TRIANGLES, NUM_RECT_OBJECT_INDEX, GL_UNSIGNED_SHORT, (const GLvoid*)object.indices);

引用.h文件找到NUM_RECT_OBJECT_INDEX

  • 就是这样。它现在应该可以完美地渲染任何复杂的 3D 对象。

关于ios - 如果我替换 Vuforia iOS 项目的茶壶对象,为什么只看到三角形而不是立方体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56703277/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap