Как в системе частиц получить доступ к каждой отдельной частице?
Здравствуйте!) Хотел спросить. Вот я на 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, время: 19:19. |