我正在使用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.
这是我从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(); }
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.
链接帖子:https://plus.google.com/111465395343320783064/posts/g19G56J3iGW
解决方法
如果你能够从你的原始文件夹中读取obj文件
LoaderOBJ objParser = new LoaderOBJ(mContext.getResources(),mTextureManager,R.raw.camero_obj);
而不是从您的SD卡,您必须在文件中进行以下更改:
在你的obj文件中,必须在你的SD卡中保存为_obj(所以对于同一位置的_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
以下是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重命名为_jpg
你收到错误的地方:
ERROR: 0:13: ‘.’ : Syntax error: syntax error
在此之后,请按照您的代码进行解析:
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/Rajawali﹕ [org.rajawali3d.materials.Material] Could not compile
fragment shader:
它无法从材料文件中读取纹理文件,为此您可以在材料文件中执行上述更改.
有关自定义材质或顶点着色器的更多详细信息,请参阅Rajawail文档和示例
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。