2016-03-08 72 views
1

我正在使用three.js。並且行不更新。我想要實時延長這條線。three.js行不更新

  • 我想,首先,通過讀取這兩個數據繪製一條線。
  • 二,場景清晰。
  • 三,讀取第三條信息和延長線。
  • 四,場景清晰。
  • 最後一行實時更長。

但是,這行不會生成。

var geometry = new THREE.Geometry(); 
var material = new THREE.LineBasicMaterial ({color : 0x0100FF, linewidth : 6}); 
function line_(k){ 
      if(k-1 >= 0){ 
       geometry.vertices.push (new THREE.Vector3 (py[k]*API.Orbit_Scale ,pz[k]*API.Orbit_Scale ,px[k]*API.Orbit_Scale)); 
      } 
      else{ 
       geometry.vertices.push (new THREE.Vector3 (0,0,0)); 
      } 
      line = new THREE.Line (geometry, material); 
      line.geometry.verticesNeedUpdate = true; 
      scene.add (line); 
     } 

function animate(){ 
      onWindowResize(); 
      line.geometry.verticesNeedUpdate = true; 
      renderer.render(scene, camera); 
      scene.remove(line); 
      requestAnimationFrame(animate); 
     } 

回答

1

隨着THREE.Geometry例如,您可以更新陣列中的現有頂點的位置和使用verticesNeedUpdate動畫線。您無法將頂點添加到現有線路,並且期望verticesNeedUpdate可以使用添加的頂點繪製您的新線路。

到頂點添加到現有的線幾何的最簡單的解決方法是:

  • 從場景中刪除舊線
  • 創建額外的頂點新線
  • 添加行現場

你也可以將它綁定到動畫循環。


如果你想製作動畫,不會刪除/添加,你必須使用一個使用THREE.BufferGeometry實例與drawCalls替代的幾何形狀。如何做到這一點你可以閱讀here in this answer