2015-10-22 3 views
1

Я новичок в Tango и не могу использовать Rajawali для Project Tango.Google Tango Java API: обновление сцены с Rajawali3D

Есть ли способ динамически добавлять новые объекты в CurrentScene всякий раз, когда происходит однократное событие?

Я попытался использовать getCurrentScene().addChild(object) в функции addNote(), которая вызывается всякий раз, когда происходит однократное событие.

номер сцены детей с шагом, когда 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) { 

    } 


} 

Заранее спасибо!

ответ

0

Оказалось, что я пытаюсь добавить объекты в неподходящее время.

Когда я добавил объекты на onRenderFrame(), объекты были созданы просто отлично.