Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Как в системе частиц получить доступ к каждой отдельной частице? (https://javascript.ru/forum/dom-window/49126-kak-v-sisteme-chastic-poluchit-dostup-k-kazhdojj-otdelnojj-chastice.html)

SVARAI 30.07.2014 14:16

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

MallSerg 30.07.2014 14:34

да также как и любой «new THREE.Geometry();»

что по твоему делает строка «particles.vertices.push( particle );» ?

SVARAI 30.07.2014 14:42

добавляет новою вершину. Ну все же, как получить к ним доступ?
ParticleSystem.particles.vetices[0].position.x???

SVARAI 30.07.2014 14:48

Но это ошибочный путь... Я понимаю, потому и спрашиваю. Как в системе частиц получить доступ к каждой отдельной частице?

MallSerg 30.07.2014 15:02

ParticleSystem.particles.vetices[0].position.x
именно

Цитата:

Сообщение от SVARAI
Я понимаю, потому и спрашиваю

Мне кажется что не понимаешь и поэтому спрашиваешь как
или же не точно формулируешь свой вопрос

SVARAI 30.07.2014 15:11

ParticleSystem.particles.vetices[0].position.x - это не работает.

MallSerg 30.07.2014 15:39

Это работает. Но похоже не у всех ((((

http://jsbin.com/diheke/2

SVARAI 30.07.2014 15:46

в данный момент все работает... Хм. Странно, почему же не работать оно может?

SVARAI 30.07.2014 15:52

вот мой код...
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();

MallSerg 30.07.2014 16:03

https://github.com/mrdoob/three.js/wiki/Updates
Стоит прочитать и обратить внимание

geometry.verticesNeedUpdate = true;
или флаг
geometry.__dirtyVertices = true;


Часовой пояс GMT +3, время: 06:27.