我下载了示例Vuforia iOS项目。我要代替茶壶,而要旋转具有纹理的多维数据集。为了创建具有纹理的立方体,我使用了Blender并使用其UV映射图像创建了一个OBJ文件,如下所示:
在Blender中,它呈现完美,我可以看到具有纹理的立方体对象。
然后我使用perl脚本将OBJ文件转换为.h文件,并替换了Teapot.h文件,并用上面附加的PNG替换了茶壶图像。
在我运行项目时,可以看到具有其纹理的立方体,但每个边都切成三角形,如下所示:
我迫切希望在现有的iOS项目中创建自定义正方形,具有纹理的立方体,但是我在检查可行性方面没有获得成功。
注意:我的项目已经开发了很多框架,并且 库,并且在一个屏幕中,我需要集成此功能。
答案 0 :(得分:3)
我可以通过在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
,因此它在rectObject
文件中创建了.h
名称。检查您的.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
。