从 SD 卡 Rajawali 解析 .obj 模型
Parsing .obj model from SD card Rajawali
我正在使用 Rajawali 3D 框架并尝试从 SD 卡加载 .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.
如果您能够从
的原始文件夹中读取 obj 文件
LoaderOBJ objParser = new LoaderOBJ(mContext.getResources(),mTextureManager, R.raw.camero_obj);
而不是从您的 SD 卡,您必须对您的文件进行以下更改:
在你的 obj 文件中,必须在你的 sdcard 中保存为 _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:
它无法从您的 material 文件中读取您的纹理文件,为此您可以在 material 文件中进行上述更改。
有关自定义 material 或顶点着色器的更多详细信息,请遵循 Rajawail 文档和示例
我正在使用 Rajawali 3D 框架并尝试从 SD 卡加载 .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.
如果您能够从
的原始文件夹中读取 obj 文件LoaderOBJ objParser = new LoaderOBJ(mContext.getResources(),mTextureManager, R.raw.camero_obj);
而不是从您的 SD 卡,您必须对您的文件进行以下更改:
在你的 obj 文件中,必须在你的 sdcard 中保存为 _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:
它无法从您的 material 文件中读取您的纹理文件,为此您可以在 material 文件中进行上述更改。
有关自定义 material 或顶点着色器的更多详细信息,请遵循 Rajawail 文档和示例