2014-04-18 8 views
1

Запуск проблемы с Three.js. В настоящее время я пытаюсь перемещать частицы в системе частиц, когда каждый кадр визуализируется. Ошибок не сообщается, но ничто не движется! В примере, который я взял из кода в http://aerotwist.com/tutorials/creating-particles-with-three-js/, используется синтаксис particle.position.y, но консоль JS возвращает Cannot set property 'y' of undefined, когда я изменяю приведенный ниже код, чтобы отразить это. Любая помощь или указатели на то, где я ошибаюсь, очень ценится.Перемещение отдельных частиц в системе частиц Three.JS

Полный исходный код:

 var scene, camera, renderer, particleCount = 0, particleSystem, particles; 

     init(); 
     animate(); 

     function init() 
     { 
      scene = new THREE.Scene(); 
      camera = new THREE.PerspectiveCamera(75, window.innerWidth/window.innerHeight, 0.1, 1000); 
      scene.add(camera); 
      camera.position.z = 5; 

      renderer = new THREE.WebGLRenderer(); 
      renderer.setSize(window.innerWidth, window.innerHeight); 
      document.body.appendChild(renderer.domElement); 

      particleCount = 1800, 
      particles = new THREE.Geometry(); 
      var pMaterial = new THREE.ParticleBasicMaterial({color: 0xFFFFFF, size: 0.5}); 

      for (var i = 0; i < particleCount; i++) 
      { 
       var pX = Math.random() * 500 - 250, 
        pY = Math.random() * 500 - 250, 
        pZ = Math.random() * 500 - 250, 
        particle = new THREE.Vector3(pX, pY, pZ); 

       particles.vertices.push(particle); 
      } 

      particleSystem = new THREE.ParticleSystem(particles, pMaterial); 
      scene.add(particleSystem); 
     } 

     function animate() 
     { 
      requestAnimationFrame(animate); 
      renderer.render(scene, camera); 

      var pCount = particleCount; 
      while (pCount--) 
      { 
       var particle = particles.vertices[pCount]; 
       particle.y = Math.random() * 500 - 250; 
       particleSystem.geometry.vertices.needsUpdate = true; 
      } 

     } 
+1

Вы упомянули в своем вопросе, что это 'particle.position.y', но в вашем коде вы пишете' particle.y', это опечатка? – lebolo

+1

Спасибо за ответ - particle.position.y возвращает ошибку для меня; частица. Посмотрев на документацию, Vector3s, такие как «particle», похоже, имеют «y» в качестве одного из своих свойств. – user3549051

+3

Избегайте устаревших книг и руководств и избегайте примеров из сети, ссылающихся на старые версии библиотеки. В примере, в котором вы учитесь, используется версия three.js, которой 3 года. – WestLangley

ответ

1

Похоже, вы должны добавить particleSystem.sortParticles = true; после создания particleSystem.

+0

Спасибо, что вместе с использованием particle.setY(), а не particle.y, похоже, сделал трюк. – user3549051

+0

Нет проблем, хотя это сработало для меня с использованием 'particle.y' - я не уверен, какой предпочтительный метод =) – lebolo

0

я столкнулся с точно такой же вопрос в том же учебнике, но, используя ThreeJS 86, я нуждался ни setY() ни particleSystem.sortParticles = true; но particleSystem.geometry.verticesNeedUpdate = true; (неparticleSystem.geometry.vertices.needsUpdate = true;).