Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 30.07.2014, 14:16
Аспирант
Отправить личное сообщение для SVARAI Посмотреть профиль Найти все сообщения от SVARAI
 
Регистрация: 30.11.2013
Сообщений: 41

Как в системе частиц получить доступ к каждой отдельной частице?
Здравствуйте!) Хотел спросить. Вот я на 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? Ну, чтобы они, допустим, разлетались в разные стороны, как при взрыве или в одном направлении, как из сопла реактивного двигателя. Заранее спасибо)
Ответить с цитированием
  #2 (permalink)  
Старый 30.07.2014, 14:34
Аватар для MallSerg
Профессор
Отправить личное сообщение для MallSerg Посмотреть профиль Найти все сообщения от MallSerg
 
Регистрация: 07.03.2011
Сообщений: 1,127

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

что по твоему делает строка «particles.vertices.push( particle );» ?
Ответить с цитированием
  #3 (permalink)  
Старый 30.07.2014, 14:42
Аспирант
Отправить личное сообщение для SVARAI Посмотреть профиль Найти все сообщения от SVARAI
 
Регистрация: 30.11.2013
Сообщений: 41

добавляет новою вершину. Ну все же, как получить к ним доступ?
ParticleSystem.particles.vetices[0].position.x???
Ответить с цитированием
  #4 (permalink)  
Старый 30.07.2014, 14:48
Аспирант
Отправить личное сообщение для SVARAI Посмотреть профиль Найти все сообщения от SVARAI
 
Регистрация: 30.11.2013
Сообщений: 41

Но это ошибочный путь... Я понимаю, потому и спрашиваю. Как в системе частиц получить доступ к каждой отдельной частице?
Ответить с цитированием
  #5 (permalink)  
Старый 30.07.2014, 15:02
Аватар для MallSerg
Профессор
Отправить личное сообщение для MallSerg Посмотреть профиль Найти все сообщения от MallSerg
 
Регистрация: 07.03.2011
Сообщений: 1,127

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

Сообщение от SVARAI
Я понимаю, потому и спрашиваю
Мне кажется что не понимаешь и поэтому спрашиваешь как
или же не точно формулируешь свой вопрос
Ответить с цитированием
  #6 (permalink)  
Старый 30.07.2014, 15:11
Аспирант
Отправить личное сообщение для SVARAI Посмотреть профиль Найти все сообщения от SVARAI
 
Регистрация: 30.11.2013
Сообщений: 41

ParticleSystem.particles.vetices[0].position.x - это не работает.
Ответить с цитированием
  #7 (permalink)  
Старый 30.07.2014, 15:39
Аватар для MallSerg
Профессор
Отправить личное сообщение для MallSerg Посмотреть профиль Найти все сообщения от MallSerg
 
Регистрация: 07.03.2011
Сообщений: 1,127

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

http://jsbin.com/diheke/2

Последний раз редактировалось MallSerg, 30.07.2014 в 18:42.
Ответить с цитированием
  #8 (permalink)  
Старый 30.07.2014, 15:46
Аспирант
Отправить личное сообщение для SVARAI Посмотреть профиль Найти все сообщения от SVARAI
 
Регистрация: 30.11.2013
Сообщений: 41

в данный момент все работает... Хм. Странно, почему же не работать оно может?
Ответить с цитированием
  #9 (permalink)  
Старый 30.07.2014, 15:52
Аспирант
Отправить личное сообщение для SVARAI Посмотреть профиль Найти все сообщения от SVARAI
 
Регистрация: 30.11.2013
Сообщений: 41

вот мой код...
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();
Ответить с цитированием
  #10 (permalink)  
Старый 30.07.2014, 16:03
Аватар для MallSerg
Профессор
Отправить личное сообщение для MallSerg Посмотреть профиль Найти все сообщения от MallSerg
 
Регистрация: 07.03.2011
Сообщений: 1,127

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

geometry.verticesNeedUpdate = true;
или флаг
geometry.__dirtyVertices = true;
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как получить список элементов в localStorage? Бобр Общие вопросы Javascript 8 17.09.2013 14:32
Как получиться доступ к элементам не своей страницы? AlkaLoiD Общие вопросы Javascript 4 29.11.2010 12:47
Как получить список пользовательских функций объекта window? Маэстро Events/DOM/Window 13 03.07.2010 13:20
Как получить указатель на элемент вызвавший функцию pelayo Общие вопросы Javascript 9 29.06.2010 23:32
Как получить доступ к ссылкам в iframe с помощью js Gratt Общие вопросы Javascript 4 01.09.2009 21:17