0
public class MyRenderer extends RajawaliCardboardRenderer 
{
    public MyRenderer(Context context) 
    {
        super(context);
    }

    @Override
    public void initScene() {
    Log.d("debug1","initScene()");
    Sphere sphere = createPhotoSphereWithTexture(new Texture("photo",R.drawable.image));
    getCurrentScene().addChild(sphere);
    getCurrentCamera().setPosition(Vector3.ZERO);
    getCurrentCamera().setFieldOfView(75);
}

private static Sphere createPhotoSphereWithTexture(ATexture texture) {

    Material material = new Material();
    material.setColor(0);

    try {
        material.addTexture(texture);
    } catch (ATexture.TextureException e) {
        throw new RuntimeException(e);
    }

    Sphere sphere = new Sphere(50, 64, 32);
    sphere.setScaleX(-1);
    sphere.setMaterial(material);
    return sphere;
  }
}

現在、RajawaliVR ライブラリにプリロードされている固定イメージがあります。画像を設定するために使用されるメソッドは、最初に 1 回だけ呼び出されます。勝手にイメージを変えたい。rajawaliVR ライブラリの使用に慣れている人なら誰でも、私が求めていることを理解できるでしょう。よろしくお願いします。

4

1 に答える 1

0

解決策を得て、オブジェクトのイメージ テクスチャを外部トリガーで動的に変更し、このコード サンプルを使用できます。
トリガーが起動されるたびに、changeImage メソッドを呼び出すことができます。RajawaliCardboardRenderer でメソッド changeImage を宣言することを忘れないでください。MyRenderer オブジェクトで changeImage メソッドを呼び出します。

public class MyRenderer extends RajawaliCardboardRenderer 
    {
       public MyRenderer(Context context) 
       {
          super(context);
       }  

    @Override
    public void initScene() {
    Log.d("debug1","initScene()");
    Sphere sphere = createPhotoSphereWithTexture(new Texture("photo",R.drawable.image));
    getCurrentScene().addChild(sphere);
    getCurrentCamera().setPosition(Vector3.ZERO);
    getCurrentCamera().setFieldOfView(75);
    }

    private static Sphere createPhotoSphereWithTexture(ATexture texture) {

    Material material = new Material();
    material.setColor(0);

    try {
        material.addTexture(texture);
    } catch (ATexture.TextureException e) {
        throw new RuntimeException(e);
    }

    Sphere sphere = new Sphere(50, 64, 32);
    sphere.setScaleX(-1);
    sphere.setMaterial(material);
    return sphere;
    }

    public void changeImage()
    {
       Log.d("debug1", "" + getCurrentScene().getNumChildren());
        ArrayList<Object3D> objectList = getCurrentScene().getChildrenCopy();
        Material material = objectList.get(0).getMaterial();
        for (ATexture texture : material.getTextureList())
        {
            material.removeTexture(texture);
            texture = null;
        }

        Texture t = new Texture("sphereTexture",R.drawable.newImage);
        t.shouldRecycle(true);
              try {
                  material.addTexture(t);
              }
              catch (Exception e){e.printStackTrace();}

    }

    }
于 2015-07-30T05:59:31.463 に答える