San*_*njh 6 android opengl-es rajawali
我正在使用Rajawali 3D Framework并尝试从SDcard加载.obj文件.当我将这些文件(.obj,.mtl,texture.png(可绘制文件夹))放在原始文件夹上时,我能够上传和解析obj文件,但是当我尝试从sdcard解析它时,它说:
[org.rajawali3d.materials.Material] Could not compile fragmentshader:
Shader log: Fragment shader compilation failed.
Run Code Online (Sandbox Code Playgroud)
这是我从Sdcard上传.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();
}
Run Code Online (Sandbox Code Playgroud)
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.
Run Code Online (Sandbox Code Playgroud)
链接帖子:https://plus.google.com/111465395343320783064/posts/g19G56J3iGW
小智 8
如果你能够从你的原始文件夹中读取obj文件
LoaderOBJ objParser = new LoaderOBJ(mContext.getResources(),mTextureManager, R.raw.camero_obj);
Run Code Online (Sandbox Code Playgroud)
而不是从您的SD卡中,您必须对文件进行以下更改:在您的obj文件中必须保存为_obj您的SD卡(因此对于同一位置的_jpg和_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
Run Code Online (Sandbox Code Playgroud)
以下是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
Run Code Online (Sandbox Code Playgroud)
请记住将纹理jpg重命名为_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();
}
Run Code Online (Sandbox Code Playgroud)
你得到的错误
E/Rajawali:[org.rajawali3d.materials.Material]无法编译片段着色器:
它无法从材料文件中读取纹理文件,为此您可以在材料文件中执行上述更改.
有关自定义材质或顶点着色器的更多详细信息,请参阅Rajawail文档和示例
| 归档时间: |
|
| 查看次数: |
1835 次 |
| 最近记录: |