Как в системе частиц получить доступ к каждой отдельной частице?
Здравствуйте!) Хотел спросить. Вот я на Three.js создал систему частиц:
var particleCount = 1000; var particles = new THREE.Geometry(); var pMaterial = new THREE.ParticleBasicMaterial( { color: 0xffffff, size: 1} ); for ( p = 0; p < particleCount; p++ ) { pX = Math.random() * 10 - 50; pY = Math.random() * 10 - 500; pZ = Math.random() * 10 - 50; var particle = new THREE.Vertex( new THREE.Vector3( pX, pY, pZ ) ); particles.vertices.push( particle ); } var particleSystem = new THREE.ParticleSystem( particles, pMaterial ); scene.add( particleSystem ); Как управлять отдельными частичками ParticleSystem? Ну, чтобы они, допустим, разлетались в разные стороны, как при взрыве или в одном направлении, как из сопла реактивного двигателя. Заранее спасибо) |
да также как и любой «new THREE.Geometry();»
что по твоему делает строка «particles.vertices.push( particle );» ? |
добавляет новою вершину. Ну все же, как получить к ним доступ?
ParticleSystem.particles.vetices[0].position.x??? |
Но это ошибочный путь... Я понимаю, потому и спрашиваю. Как в системе частиц получить доступ к каждой отдельной частице?
|
ParticleSystem.particles.vetices[0].position.x
именно Цитата:
или же не точно формулируешь свой вопрос |
ParticleSystem.particles.vetices[0].position.x - это не работает.
|
|
в данный момент все работает... Хм. Странно, почему же не работать оно может?
|
вот мой код...
var scene = new THREE.Scene(); var camera = new THREE.PerspectiveCamera( 75, window.innerWidth/window.innerHeight, 0.1, 20000000 ); var renderer = new THREE.WebGLRenderer(); renderer.setSize( window.innerWidth, window.innerHeight ); document.body.appendChild( renderer.domElement ); renderer.shadowMapEnabled = true; renderer.setClearColorHex( 0x00000, 1 ); function gen_stars(){ var particleCount = 1000; var particles = new THREE.Geometry(); var pMaterial = new THREE.ParticleBasicMaterial( { color: 0xffffff, size: 1} ); for ( p = 0; p < particleCount; p++ ) { pX = Math.random() * 1000000 - 500000; pY = Math.random() * 1000000 - 500000; pZ = Math.random() * 1000000 - 500000; var particle = new THREE.Vertex( new THREE.Vector3( pX, pY, pZ ) ); particles.vertices.push( particle ); } particles.verticesNeedUpdate = true; var particleSystem = new THREE.ParticleSystem( particles, pMaterial ); scene.add( particleSystem ); } gen_stars(); var light = new THREE.PointLight( 0xffffff, 1, 100 ); light.position.set( 0, 0, 0 ); scene.add( light ); var render = function () { particles.vertices[0].position.x++; light.position.set( camera.position.x, camera.position.y, camera.position.z ); requestAnimationFrame( render ); renderer.render( scene, camera ); }; render(); |
https://github.com/mrdoob/three.js/wiki/Updates
Стоит прочитать и обратить внимание geometry.verticesNeedUpdate = true; или флаг geometry.__dirtyVertices = true; |
Часовой пояс GMT +3, время: 06:27. |