首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rajawali -从模型obj错误加载纹理

Rajawali -从模型obj错误加载纹理
EN

Stack Overflow用户
提问于 2013-01-10 23:31:55
回答 2查看 2.6K关注 0票数 0

我正在尝试创建一个加载3d对象的应用程序。

当我加载这个对象(http://rgcouto.net/alexandre/COKE/fineObj/)时,一切工作正常。截图:http://rgcouto.net/alexandre/COKE/Screenshot_2013-01-10-15-04-42.png

但当我尝试加载我的对象(http://rgcouto.net/alexandre/COKE/myObj/),从blender导出,纹理不出现,对象是黑色的。截图:http://rgcouto.net/alexandre/COKE/Screenshot_2013-01-10-15-02-27.png

我做错什么了?我必须做什么,才能让我的对象看起来有纹理?

我的混合文件:http://rgcouto.net/alexandre/COKE/blend/

我的呈现程序:

代码语言:javascript
复制
public class ObjRenderer extends RajawaliRenderer {
    private static final String TAG = "renderer";
    private BaseObject3D mObjectGroup;
    Number3D mAccValues;

    public ObjRenderer(Context context) {
        super(context);
        setFrameRate(60);
        mAccValues = new Number3D();

}

protected void initScene() {

    // mLight = new DirectionalLight(1, -1, 1);
    // mLight.setPower(.9f);
    DirectionalLight light = new DirectionalLight(0, 0, 1);
    light.setPower(1);

    // light.setPosition(0, 20, -20);
    // light.setLookAt(0, 0, 0);

    mCamera.setPosition(0, 0, -14);
    mCamera.setLookAt(0, 0, 0);

    ObjParser objParser = new ObjParser(mContext.getResources(),
            mTextureManager, R.raw.camaro_obj);
    objParser.parse();
    mObjectGroup = objParser.getParsedObject();
    Log.d(TAG, "carreguei");
    DiffuseMaterial material = new DiffuseMaterial();
    material.setUseColor(true);
    mObjectGroup.setMaterial(material);
    mObjectGroup.addLight(light);

    // mObjectGroup.setScale(3);
    addChild(mObjectGroup);

    // mCameraAnim = new RotateAnimation3D(Axis.Y, 360);
    // mCameraAnim.setDuration(8000);
    // mCameraAnim.setRepeatCount(Animation3D.INFINITE);
    // mCameraAnim.setTransformable3D(mObjectGroup);
}

public void onSurfaceCreated(GL10 gl, EGLConfig config) {
    super.onSurfaceCreated(gl, config);
    // mCameraAnim.start();
}

public void onDrawFrame(GL10 glUnused) {
    super.onDrawFrame(glUnused);
    mObjectGroup.setRotY(mObjectGroup.getRotY() + 1);
    // mObjectGroup.setRotation(mAccValues.y, mAccValues.x, mAccValues.z);
}}

向Alex致敬

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-01-22 01:09:41

您必须为您的材质/对象添加颜色或纹理。查看此处:http://www.rozengain.com/blog/2011/12/05/rajawali-tutorial-3-materials/

要告诉你更多,我得看看OBJ的文本。

干杯

票数 1
EN

Stack Overflow用户

发布于 2013-01-22 16:38:07

在绘制对象之前绑定纹理吗?

在许多GPU上,纹理必须是2的幂,我已经在这里解释过了:

OpenGL, Shader Model 3.3 Texturing: Black Textures?

如果你不使用2的幂纹理,效果就是你正在体验的,一个黑色的渲染纹理。

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

https://stackoverflow.com/questions/14261417

复制
相关文章

相似问题

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