首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何动态更改使用RajawaliVR呈现的图像

如何动态更改使用RajawaliVR呈现的图像
EN

Stack Overflow用户
提问于 2015-07-27 11:50:40
回答 1查看 517关注 0票数 0
代码语言:javascript
复制
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库中有一个预先加载的固定映像。用于在开始时只调用一次来设置图像的方法。我想改变威尔的形象。任何熟悉使用rajawaliVR库的人都会知道我的要求,谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-30 05:59:31

得到解决方案后,您可以动态地更改对象的图像纹理,比如在某个外部触发器上,然后可以使用此代码示例。

只要触发触发,就可以调用changeImage方法。不要忘记在changeImage中声明RajawaliCardboardRenderer方法。调用changeImage对象上的MyRenderer方法。

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

    }

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

https://stackoverflow.com/questions/31652352

复制
相关文章

相似问题

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