Three.js: как управлять порядком визуализации

Am использует three.js

Как я могу управлять порядком рендеринга? Скажем, у меня есть три плоские геометрии и вы хотите сделать их в определенном порядке независимо от их пространственного положения.

спасибо

Ответ 1

Вы можете установить

renderer.sortObjects = false;

и объекты будут отображаться в том порядке, в котором они были добавлены в сцену.

В качестве альтернативы вы можете оставить sortObjects как true по умолчанию и указать для каждого объекта значение для object.renderOrder.

Подробнее см. Прозрачные объекты в Threejs

Еще одна вещь, которую вы можете сделать, это использовать описанный здесь подход: Как изменить zOrder объекта с помощью Threejs?

three.js r.71

Ответ 2

для trjs r70 и выше удаляется renderDepth.

Ответ 3

Использование object.renderDepth работал в моем случае. У меня был стеклянный корпус и пузыри внутри, которые были прозрачными. Пузыри терялись под определенными углами.

Таким образом, установка их renderDepth на большое число и воспроизведение с другими элементами глубин в сцене устранили проблему. Присоединение элемента управления dat.gui к свойству renderDepth очень упростило настройку того, что должно быть на какой глубине, чтобы заставить сцену работать.

Итак, в моей рыбной сцене у меня есть гравий, бак и пузыри. Я подключил гравийную сетку с помощью dat.gui, и через несколько секунд у меня была необходимая глубина.

this.gui.add(this.fishScene.gravel, "renderDepth", 0, 200);

Ответ 4

У меня была куча объектов, которые были клонированы из цикла for в случайной позиции x и y... и obj.z ++, поэтому они выстроились в линию... включая obj.renderOrder ++; в цикле решена моя проблема.