首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从SD卡Rajawali解析.obj模型

从SD卡Rajawali解析.obj模型
EN

Stack Overflow用户
提问于 2015-06-15 06:58:53
回答 1查看 2.1K关注 0票数 10

我正在使用Rajawali 3D框架,并试图从.obj加载SDcard文件。当我将这些文件(.obj、.mtl、texture.png (可绘制文件夹))放到原始文件夹中时,我能够上传和解析obj文件,但是当我试图从sdcard解析这些文件时,它说:

代码语言:javascript
复制
 [org.rajawali3d.materials.Material] Could not compile fragmentshader:
 Shader log: Fragment shader compilation failed.

下面是我从Sdcard上传.obj文件的代码:

代码语言:javascript
复制
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:

代码语言:javascript
复制
 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.
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-20 04:40:24

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

代码语言:javascript
复制
LoaderOBJ objParser = new LoaderOBJ(mContext.getResources(),mTextureManager, R.raw.camero_obj);

而不是从sdcard中,您必须对您的文件进行以下更改:在obj文件中,必须将其保存为_obj,在sdcard 中( _jpg和_mtl位于同一位置)

就你而言:

代码语言:javascript
复制
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文件

代码语言:javascript
复制
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,在此您将收到错误:

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

在此之后,按照解析代码进行如下操作:

代码语言:javascript
复制
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无法编译片段着色器:

它无法从材料文件中读取您的纹理文件,因为您可以在您的材料文件中进行上述更改。

有关定制材料或顶点着色器的更多详细信息,请参见Rajawail文档和示例。

票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30839053

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档