0

我想在动态壁纸中加载一个 3d .obj 文件并为其设置动画。我使用 RAJAWALI 库来加载它。问题是 3d obj 文件已成功加载和动画,但在某些 android 设备中未加载加载背景图像。代码如下:

protected void initScene() {


    DirectionalLight localDirectionalLight = new DirectionalLight(0.0F, 0.6F, 0.4F);
localDirectionalLight.setPower(3.0F);
PointLight mLight = new PointLight();
mLight.setPosition(0, 0, 0);
mLight.setPower(13);
Plane plane = new Plane(70, 70, 1, 1, 1);
plane.addLight(mLight);
plane.setMaterial(new SimpleMaterial());
plane.addTexture(mTextureManager.addTexture(BitmapFactory.decodeResource(mContext.getResources(), R.drawable.pozadina)));  
addChild(plane);    
plane.setZ(10);

    try
    {
      ObjParser localObjParser = new ObjParser(this.mContext.getResources(), this.mTextureManager, R.raw.allah);
      localObjParser.parse();
      this.strela = localObjParser.getParsedObject();
      this.strela.addLight(localDirectionalLight);
      if (this.tekstura == null)
      {
        BitmapFactory.Options localOptions2 = new BitmapFactory.Options();
        localOptions2.inPurgeable = true;

        this.strela.setColor(Color.WHITE);
      }
      this.strela.setScale(2.0F);
      addChild(this.strela);
      this.mCamera.setPosition(0.0F, 0.0F, -50.0F);
      this.mCamera.setFarPlane(1000.0F);
      Number3D localNumber3D = new Number3D(0.0F, 1.0F, 0.0F);
      localNumber3D.normalize();
      this.mAnim = new RotateAnimation3D(localNumber3D, 360.0F);
      this.mAnim.setDuration(10000L);
      this.mAnim.setRepeatCount(-1);
      this.mAnim.setTransformable3D(this.strela);

      return; 
    }
    catch (Exception localException)
    {
      while (true)
        localException.printStackTrace();
    }


}

它在 SAMSUNG NEXUS android v4.1 上出现问题。

请帮助我该怎么做?

4

2 回答 2

2

这是在 Galaxy S3 上测试和工作的。所以它也应该对你有用。我在我的壁纸中使用它。尝试这个:

    SimpleMaterial localSimpleMaterial = new SimpleMaterial();
    Bitmap localBitmap = BitmapFactory.decodeResource(this.mContext.getResources(), R.drawable.image);
    localSimpleMaterial.addTexture(this.mTextureManager.addTexture(localBitmap));
    Plane localPlane = new Plane(10.0F, 10.0F, 1, 1);
    localPlane.setRotZ(-90.0F);
    localPlane.setScale(3.7F);
    localPlane.setPosition(0.0F, 0.0F, 10.0F);
    localPlane.setMaterial(localSimpleMaterial);
    addChild(localPlane);

只需确保您的图像是 2 的幂,即 256x256、512x512 等。让我知道它是如何为您工作的。

编辑:还要确保你导入 rajawali.primitives 而不是 rajawali.math

于 2013-04-26T09:41:22.773 回答
0

问题解决了吗?那些没有渲染平面的设备是什么?是三星吗?另外请告诉我它是呈现灰色还是根本不呈现?

我问是因为我遇到了同样的问题,解决方案是调整 mip-mapping。那时我还是初学者,所以花了一些时间,但是有一个非常简单的解决方案:

三星 Galaxy SL 的球体上不显示纹理

于 2013-04-03T13:39:08.300 回答