谷歌探戈Java API:场景更新与Rajawali3D



我是Tango的新手,在Project Tango中使用Rajawali有困难。

是否有一种方法可以动态地将新对象添加到CurrentScene每当单点事件发生?

我已经尝试在addNote()函数中使用getCurrentScene().addChild(object),每当单次点击事件发生时调用。

当addNote()被调用时,场景的子元素数量会增加,但是视觉场景不会被更新。

下面是我的代码:
public class SampleRenderer extends TangoRajawaliRenderer {
    public SampleRenderer(Context context) {
        super(context);
    }
    @Override
    protected void initScene() {
        // Remember to call super.initScene() to allow TangoRajawaliArRenderer to set-up
        super.initScene();
        // Add a directional light in an arbitrary direction
        DirectionalLight light = new DirectionalLight(1, 0.2, -1);
        light.setColor(1, 1, 1);
        light.setPower(0.8f);
        light.setPosition(3, 2, 4);
        getCurrentScene().addLight(light);
        // Set-up a material: green with application of the light
        Material material = new Material();
        material.setColor(0xff009900);
        material.enableLighting(true);
        material.setDiffuseMethod(new DiffuseMethod.Lambert());
        // Build a pyramid and place it roughly in front and a bit to the right
        Object3D object1 = new NPrism(4, 0f, 0.2f, 0.2f);
        object1.setMaterial(material);
        object1.setPosition(-0.25, 0, -1);
        getCurrentScene().addChild(object1);
        Log.d("Tap", getCurrentScene().getNumChildren() + "");
    }
    public void addNote(float x, float y, float z){

        Material stickyNoteMaterial = new Material();
        stickyNoteMaterial.setColor(0xEFF2B900);
        stickyNoteMaterial.enableLighting(true);
        stickyNoteMaterial.setDiffuseMethod(new DiffuseMethod.Lambert());
        Object3D note = new Sphere(0.1f, 24, 24);
        note.setMaterial(stickyNoteMaterial);
        note.setPosition(x, y, z);
        getCurrentScene().addChild(note);
        Log.d("Tap", getCurrentScene().getNumChildren() + "");
    }
    @Override
    public void onOffsetsChanged(float xOffset, float yOffset, float xOffsetStep, float yOffsetStep, int xPixelOffset, int yPixelOffset) {
    }
    @Override
    public void onTouchEvent(MotionEvent event) {
    }

}

提前感谢!

原来我试图在错误的时间添加对象。

当我在onRenderFrame()上添加对象时,对象创建得很好

最新更新