Vuforia + OBJ装载机

时间:2014-12-15 12:27:34

标签: java android opengl-es android-ndk vuforia

我希望将Vuforia用于AR项目。

我知道它使用OpenGL ES,因此通常使用顶点数据数组来构造对象。

我希望能够使用标准的OBJ文件。

我已经看过使用this,但不知道如何在Android Java SDK中使用* .h文件。

所以,我开始考虑装载OBJ。我想尝试使用this之类的东西,但只需使用obj阅读器。但我仍然坚持如何获得顶点数组。

有没有人知道如何加载OBJ并将其传递给Vuforia Sample应用程序?

(它需要在Java SDK中工作,而不是在NDK中工作)

1 个答案:

答案 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>