Моя программа создает динамическое число объектов облачных точек с настраиваемыми атрибутами, которые включают альфа-значение каждой частицы. Это прекрасно работает, однако, когда объекты вложены друг в друга (скажем, сферы), меньшие (внутренние) объекты становятся затененными более крупными, хотя альфа-частицы их частиц установлены должным образом. Когда я отменяю порядок добавления объектов точечного облака к сцене, начиная с более крупных, идя вниз к более мелким, я могу видеть меньшие из них. Мой вопрос заключается в том, есть ли способ сообщить рендеру обновить или пересчитать альфа-значения или повторно отобразить меньшие внутренние объекты, чтобы они отображались?ThreeJS - добавление объектов в другом порядке влияет на альфа/дисплей
0
A
ответ
0
Я столкнулся с той же проблемой, что и вы. Я установил его для вычисления и установки renderdepth для каждой сетки. Для этого вам нужно положение камеры и центр вашей сетки.
Возможно, вы уже создали сетки для каждого объекта. Если вы сохраните все эти ячейки в массиве, проще вычислить и установить renderdepth на эти объекты.
Вот пример того, как я это сделал.
updateRenderDepthOnRooms(cameraPosition: THREE.Vector3): void {
var rooms: Room[] = this.getAllRooms();
rooms.forEach((room) => {
var roomCenter = getCenter(room.mesh.geometry);
var renderDepth = 0 - roomCenter.distanceToSquared(cameraPosition);
room.mesh.renderDepth = renderDepth;
});
}
function getCenter(geometry: THREE.Geometry): THREE.Vector3 {
geometry.computeBoundingBox();
var bb = geometry.boundingBox;
var offset = new THREE.Vector3();
offset.addVectors(bb.min, bb.max);
offset.multiplyScalar(0.5);
return offset;
}
Таким образом, чтобы получить центр вашего объекта, вы можете задать геометрию из вашей сетки и использовать функцию getCenter (..) из моего примера. Затем вы вычисляете renderdepth с функцией ThreeJs distanceToSquared (..), а затем устанавливаете этот renderdepth в свою сетку.
Все. Надеюсь, что это поможет вам.
Смежные вопросы
- 1. Добавление объектов в массив в другом классе
- 2. добавление объектов в вектор в другом методе android
- 3. список Заказ объектов по произвольном порядке инициализируется в другом списке
- 4. Функция, которая клонирует группу объектов в ThreeJS?
- 5. Добавление различных объектов в DOM в последовательном порядке
- 6. UITableViewRowAction - цвет фона одного влияет на другом
- 7. Изменение одного значения влияет на другом
- 8. Threejs Добавление шейдера в 3d-объект
- 9. ThreeJS - как выбрать только один тип объектов?
- 10. xtext: Заявления в другом порядке
- 11. Создать itertools.product в другом порядке
- 12. отправить фотографии в другом порядке?
- 13. Добавление объектов класса в ArrayList в другом классе
- 14. Странное поведение затенения в ThreeJS
- 15. Добавление элементов в список в определенном порядке
- 16. Слияние или добавление массива объектов в другом объекте
- 17. Сортировка объектов в алфавитном порядке
- 18. JQuery: Добавление изображений в порядке
- 19. Добавление объектов в предварительно выделен массив объектов
- 20. arraylist объектов, добавление объектов
- 21. Добавление ManyToManyField в правильном порядке
- 22. Добавление строк в правильном порядке
- 23. Java: добавление объектов в список объектов
- 24. Какое влияние влияет на захват объектов в анонимном методе?
- 25. python: сравнение строк в другом порядке
- 26. Добавление объектов в массив?
- 27. Добавление объектов в JSON
- 28. parse аргументы командной строки в другом порядке
- 29. Добавление объектов в массивList
- 30. методы вызова inferface в другом порядке
Можете ли вы добавить небольшой пример кода, который будет воспроизводить вашу проблему? – soktinpk
Я предполагаю, что это проблема с фрагментарным шейдером. Не уверен, но он может не интерпретировать разные непрозрачности –