1

我是 Tango 的新手,无法在 Project Tango 中使用 Rajawali。

有没有办法在单击事件发生时将新对象动态添加到 CurrentScene 上?

我尝试过getCurrentScene().addChild(object)在 addNote() 函数中使用,每当单击事件发生时都会调用该函数。

每当调用 addNote() 时,场景的子节点数就会增加,但视觉场景不会更新。</p>

这是我的代码:

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) {

    }


}

提前致谢!

4

1 回答 1

0

事实证明,我试图在错误的时间添加对象。

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

于 2015-11-08T02:30:04.307 回答