Android 从SD卡Rajawali解析.obj模型

Android 从SD卡Rajawali解析.obj模型,android,opengl-es,rajawali,Android,Opengl Es,Rajawali,我正在使用Rajawali 3D框架,并尝试从SD卡加载.obj文件。当我将这些文件(.obj、.mtl、texture.png(drawable folder))放在原始文件夹中时,我能够上传和解析obj文件,但当我尝试从SD卡解析它时,它会说: [org.rajawali3d.materials.Material] Could not compile fragmentshader: Shader log: Fragment shader compilation failed. 以下是我

我正在使用Rajawali 3D框架,并尝试从SD卡加载.obj文件。当我将这些文件(.obj、.mtl、texture.png(drawable folder))放在原始文件夹中时,我能够上传和解析obj文件,但当我尝试从SD卡解析它时,它会说:

 [org.rajawali3d.materials.Material] Could not compile fragmentshader:
 Shader log: Fragment shader compilation failed.
以下是我从SD卡上载.obj文件的代码:

private Object3D Object;
LoaderOBJ objParser = new LoaderOBJ(this,"Load/1c_obj");

            try {

                objParser.parse();
                Object = objParser.getParsedObject();
                getCurrentScene().addChild(Object);

            } catch (ParsingException e) {
                e.printStackTrace();
            }
Logcat:

 D/Rajawali﹕ Parsing: /storage/emulated/0/Load/1c_obj
 D/LoaderOBJ﹕ Found Material Lib: 1c_mtl
 D/LoaderOBJ$MaterialLib﹕ Parsing material: Texture0
 D/LoaderOBJ$MaterialLib﹕ Parsing material: Texture1
          
    9578-9612/com.example.loadobj D/LoadModelFragment$LoadModelRenderer﹕ startRendering()
    E/Rajawali﹕ [org.rajawali3d.materials.Material] Could not compile fragment shader:
    9578-9612/com.example.loadobj E/Rajawali﹕ Shader log: Fragment shader compilation failed.
    ERROR: 0:13: '.' : Syntax error:  syntax error
    ERROR: 1 compilation errors.  No code generated.

如果您能够从原始文件夹中读取obj文件

LoaderOBJ objParser = new LoaderOBJ(mContext.getResources(),mTextureManager, R.raw.camero_obj);
而不是从SD卡,您必须对文件进行以下更改: 在您的obj文件中,必须在SD卡中将其保存为
\u obj
(对于同一位置的\u jpg和\u mtl也是如此)

就你而言:

mtllib 1c_mtl

v -0.7526 14.5146 0.171602
v -0.7922 14.5792 0.075402
v -0.4998 14.7082 0.457802
v -0.5409 14.7486 0.393002
v -0.5358 14.5862 0.414902
后面是mtl文件

newmtl Texture0
    illum 0
    Kd 0.7 0.7 0.7
    Ks 0 0 0
    Ka 0 0 0
newmtl Texture1
    illum 0
    Kd 0.7 0.7 0.7
    Ks 0 0 0
    Ka 0 0 0
    map_Kd parse_jpg
请记住将纹理jpg重命名为
\u jpg
出现错误的地方:

错误:0:13:“.”:语法错误:语法错误

在此之后,按照代码进行解析:

private Object3D Object;
LoaderOBJ objParser = new LoaderOBJ(this,"Load/1c_obj");

            try {

                objParser.parse();
                Object = objParser.getParsedObject();
                getCurrentScene().addChild(Object);

            } catch (ParsingException e) {
                e.printStackTrace();
            }
以及你所得到的错误

E/拉贾瓦利﹕ 无法编译[org.rajawali3d.materials.Material] 片段着色器:

无法从材质文件中读取纹理文件,因为您可以在材质文件中执行上述更改

有关自定义材质或顶点着色器的更多详细信息,请参阅Rajawail文档和示例