我下载了示例 Vuforia iOS 项目。而不是茶壶,我想旋转一个有纹理的立方体。为了创建一个具有纹理的立方体,我使用了 blender 并创建了一个带有 UV 映射图像的 OBJ 文件,如下所示:
在 blender 中,它呈现完美,我可以完美地看到立方体对象的纹理。
然后我使用 perl 脚本将 OBJ 文件转换为 .h 文件,并替换了 Teapot.h 文件,并将茶壶图像替换为我在上面附加的 PNG。
当我运行该项目时,可以看到立方体的纹理,但每边都切割了三角形,如下所示:
我迫切希望在现有的 iOS 项目中创建自定义正方形、具有纹理的立方体,但是我在检查可行性方面没有取得成功。
NOTE: My project is already developed with lots of frameworks and libraries and in one screen, I need to integrate this function.
我可以通过添加到 Blender 来实现它,然后直接从 Blender 导出 .h
文件。在导出之前无需进行三角测量,因为 Unity
已经为我们进行了三角测量。
在 Blender 中准备你想要的 3D 对象。查看 this教程,它解释了如何使用 Blender 并制作一个简单的 3D 对象,它周围有纹理。
一旦你有了你想要的模型,去 File
> Export
> Vuforia OpenGL C Include
如下图所示图片。将 .h
文件保存在某个位置
在 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
。
关于ios - 如果我替换 Vuforia iOS 项目的茶壶对象,为什么只看到三角形而不是立方体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56703277/
欢迎光临 OStack程序员社区-中国程序员成长平台 (https://ostack.cn/) | Powered by Discuz! X3.4 |