2016-05-29 5 views
3

Я пытаюсь использовать Three.js для создания «поля астероидов» с использованием систем частиц или облаков точек или подобных вещей. Одна из проблем, с которыми я столкнулся, заключается в том, что, когда камера вращается вокруг оси z, частицы вращаются индивидуально с камерой, сохраняя ту же ориентацию, независимо от того, как поворачивается камера. Я хочу, чтобы симуляция выглядела так, как если бы пользователь летал через кучу астероидов, и, очевидно, астероиды не волшебным образом вращаются, когда вы наклоняете голову, поэтому мне было интересно, есть ли способ предотвратить их поворот при повороте камеры , Должны ли частицы всегда быть вертикальными?Отключить вращение частиц в Three.js

+0

Вы правильно поняли разницу между трехмерной сеткой и спрайтом? – Martin

+0

@Martin Я так думаю ... Есть ли способ сделать большую группу трехмерных объектов, которые можно контролировать индивидуально? – gameninja

+0

Что означает «частицы вращаются индивидуально с камерой, сохраняя ту же ориентацию, независимо от того, как поворачивается камера»? Вы имели в виду, что частицы движутся в пространстве, когда камера вращается (объект pointcloud вращается с камерой), или у вас есть каждая частица, какое-то изображение, и задается вопросом, почему все еще стоит перед камерой, но каждая частица находится на одном и том же месте во время вращения камеры/переехать? – Martin

ответ

1

Если вы хотите повернуть спрайты вы можете использовать атрибут SpriteMaterial.rotation:

var sprite = new THREE.Sprite(new THREE.SpriteMaterial({map: texture,rotation: Math.PI/4})); 

посмотреть http://threejs.org/examples/webgl_sprites.html

В вашем случае, вращение всех спрайтов должно быть равно вращению камеры.

+0

Спасибо. Я думаю, что это своего рода отдельный вопрос (который я пробовал просить, но никто не ответил), но как вы вращаете частицы по отдельности (я бы хотел, чтобы они случайным образом указывали в разных направлениях)? Я читал, что это имеет какое-то отношение к шейдерам и пользовательским атрибутам, но я действительно не знаю, как их использовать, поэтому было бы здорово, если бы было более простое решение, или если бы вы могли объяснить, как правильно реализовать шейдеры. – gameninja

+0

Вы должны задать правильные вопросы, но я думаю, что все это, включая вращение отдельных частиц, включено в пример http://threejs.org/examples/webgl_sprites.html – Martin

+0

Похоже, что в приведенном выше примере используется THREE.Group от THREE.PointCloud, что приводит к другим проблемам при применении к моему коду. Есть ли способ сделать то же самое для PointCloud? – gameninja

Смежные вопросы