我希望将Vuforia用于AR项目。
我知道它使用OpenGL ES,因此通常使用顶点数据数组来构造对象。
我希望能够使用标准的OBJ文件。
我已经看过使用this,但不知道如何在Android Java SDK中使用* .h文件。
所以,我开始考虑装载OBJ。我想尝试使用this之类的东西,但只需使用obj阅读器。但我仍然坚持如何获得顶点数组。
有没有人知道如何加载OBJ并将其传递给Vuforia Sample应用程序?
(它需要在Java SDK中工作,而不是在NDK中工作)
答案 0 :(得分:-1)
.obj和openGL不能直接兼容,openGL只需要1个顶点索引(所有属性都获得相同的索引),而.obj允许每个属性使用不同的索引。
该脚本的作用是预处理obj文件,以便您可以直接将其包含在代码中,而无需在运行时(慢慢)解析,
.h文件的等效java代码是:
package resource.models;
public class ModelName{
public int NumVerts = //exactly the number that is <name>NumVerts in the header
public float[] Verts = {
//copy paste the numbers and append f after each number like so:
// f 1//2 7//2 5//2
-0.5f, -0.5f, -0.5f,
0.5f, 0.5f, -0.5f,
0.5f, -0.5f, -0.5f,
// f 1//2 3//2 7//2
-0.5f, -0.5f, -0.5f,
-0.5f, 0.5f, -0.5f,
0.5f, 0.5f, -0.5f,
//and so on
}
//repeat for Normals and textures:
public float[] Normals = {
// f 1//2 7//2 5//2
0f, 0f, -1f,
0f, 0f, -1f,
0f, 0f, -1f,
// f 1//2 3//2 7//2
0f, 0f, -1f,
0f, 0f, -1f,
0f, 0f, -1f,
//and so on
}
}
要填充openGL缓冲区,请将float数组包装在FloatBuffer
中,然后将它们传递给BufferData调用。
将该文章中的脚本更改为与java兼容需要更改行492中的代码以发出包和类声明,并在每个数字后加f
加上尾随右括号。< / p>