Я мог бы добиться этого, установив дополнение к Blender, а затем экспортировать файл .h
непосредственно из Blender.Перед экспортом нет необходимости выполнять триангуляцию, так как Unity
уже выполняет триангуляцию для нас.
- Загрузите дополнение из здесь .Существует полное руководство о том, как добавить его в Blender.
Подготовьте 3D-объект, который вы хотите в Blender.Проверьте этот учебник, который объясняет, как использовать Blender и создать простой 3D-объект с текстурой вокруг него.
Как только у вас есть нужная модель, перейдите кFile
> Export
> Vuforia OpenGL C Include
, как показано на рисунке ниже.Сохраните файл .h
в каком-то месте
Заменить
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
.
- Вот и все.Теперь он должен безупречно визуализировать любой сложный 3D-объект.