2014-02-10 117 views
0

從three.js修訂版48開始,我用頂點連接了頂點。它工作正常,但從48更新到版本65時,我收到一條錯誤消息,指出Vertix已棄用,應由Vector3取代。但是,當我將它替換爲Vector3,Vector2或Vector4時,它的行爲會有所不同 - 行將不再連接到頂點。當畫布是視口的寬度時,我還會在邊上看到一些奇怪的渲染問題。Vertex和Vector3在three.js中不可互換

var container = document.getElementById('container'); 
var camera = new THREE.PerspectiveCamera(75,window.innerWidth/window.innerHeight,1,10000); 
var distance = 1000; 
camera.position.z = distance; 

var scene = new THREE.Scene(); 
scene.add(camera); 

renderer = new THREE.CanvasRenderer(); 
renderer.setSize(window.innerWidth, window.innerHeight); 
container.appendChild(renderer.domElement); 

camera.lookAt(new THREE.Vector3(0,0,0)); 

var geometry = new THREE.Geometry(); 

for (var i = 0; i < 50; i ++) { 

    particle = new THREE.Particle(new THREE.ParticleCanvasMaterial({ 

     color: Math.random() * 0x808080 + 0x808080, //0x0000000, 
     opacity: 1,//0.1, 
     program: function (context) { 

      context.beginPath(); 
      context.arc(0, 0, 1, 0, Math.PI * 2, true); 
      context.closePath(); 
      context.fill(); 

     } 

    })); 
    particle.position.x = Math.random() * 2000 - 1000; 
    particle.position.y = Math.random() * 2000 - 1000; 
    particle.position.z = Math.random() * 2000 - 1000; 
    particle.scale.x = particle.scale.y = Math.random() * 12 + 5; 
    scene.add(particle); 

    geometry.vertices.push(new THREE.Vertex(particle.position)); 

} 

var line = new THREE.Line(geometry, new THREE.LineBasicMaterial({ color: 0x000000, opacity: 0.05 })); 
scene.add(line); 

renderer.render(scene, camera); 

document.addEventListener('mousemove', onMouseMove, false); 

function onMouseMove(event){ 
    mouseX = (event.clientX - window.innerWidth/2)/window.innerWidth/2; 
    mouseY = (event.clientY - window.innerHeight/2)/window.innerHeight/2; 
    camera.position.x = Math.sin(mouseX * Math.PI) * distance; 
    camera.position.y = - Math.sin(mouseY * Math.PI) * distance; 
    camera.lookAt(new THREE.Vector3(0,0,0)); 
    renderer.render(scene, camera); 
} 

嘗試使用的Vector3代替頂點在第42行:http://jsfiddle.net/kz94z/

回答

2

嘗試改變這一行:

geometry.vertices.push(new THREE.Vertex(particle.position)); 

這樣:

geometry.vertices.push(particle.position); 
+0

不知道如何工作,但它沒有,謝謝! – user3294500

+1

它的工作原理是因爲你剛剛從創建Three.JS^_ ^的人那裏得到了答案 –