2015-10-22 18 views
1

我是Tango的新手,無法使用Rajawali進行Tango項目。Google Tango Java API:使用Rajawali3D更新場景

是否有一種方法可以在發生單擊事件時動態地將新對象添加到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) { 

    } 


} 

提前感謝!

回答

0

事實證明,我試圖在錯誤的時間添加對象。

當我在onRenderFrame()上添加對象時,對象被創建得很好。