@darksladen

Как оптимизировать графику во three js?

Задумался, как оптимизируют графику в 3d приложениях? Сейчас сделал простейшую сцену, на которой сделал множество звезд (сделал звезды из сфер, может у кого то есть другие предложения? звезды представляют из себя точки, поэтому сфера, конечно думаю слишком избыточны) Итого получается около 500 сфер. + сферы постоянно меняют свой размер и цвет. Вообщем даже сейчас есть некоторое подтормаживание. Кто знает, как можно оптимизировать все это дело и какие есть хорошие практики.

Какие проблемы вижу я. Во-первых, сейчас при создании сцены отрисовываются сразу все звезды, которые нужны сейчас и которые нужны будут потом. (в дальнейшем надо перемещаться сквозь них, поэтому рисую все звезды сразу). Насколько правильно это и какое есть другое решение? Просто, если их рисовать потом, то будет проблема с переходом к другим звездам.
2. Опять же.. Я меняю параметры видимых и невидимых звезд. Думаю тоже, так никто не делает =) Но не вижу эффективного способа и удобного способа для того, чтобы менять параметры только тех звезд, которые в поле зрения.

Подскажите пожалуйста, как можно решить эти проблемы?
  • Вопрос задан
  • 651 просмотр
Решения вопроса 2
@Iv_and_S
1.Firebug и CromeDevTools - смотрим расход ресурсов.
2. без кода ничего точно сказать не возможно.
3."как оптимизируют графику в 3d приложениях" - по разному. можно и на WebGL чистом написать)
4."поэтому сфера, конечно думаю слишком избыточны" - перепишите посмотрите в профайлере.
5. "Но не вижу эффективного способа и удобного способа для того, чтобы менять параметры только тех звезд, которые в поле зрения" - камера же куда то смотрит. нужно просто определить то что в камеру попадает, а что нет.
Ответ написан
Комментировать
@All_exe_synop
Предлагаю в качестве звёзд использовать не сферу, а спрайты. В свойствах материала выставить адитивное смешивание. У меня в сцене таким образом добавлено 15 000+ звёзд. Естественно, когда рисовал звёзды сферами (2 сегмента по широте, 4 по долготе), браузер съедал 700+ мб памяти, а когда были видны все звёзды, то улетали 1,5 Гб. Со спрайтами всё проще. Они сами ориентируются при пороте камеры и смотрятся естественно. Открывая такую сцену, браузер забирал 250-300мб и при нахождении в поле зрения всёх звёзд забирал не болен 700мб. Но мне видимость всех звезд и не нужна.

Если нужна сфера при приближении, то можно создать для каждой звезды как сферу так и спрайт. Сделать сферы невидимыми. При приближении на некоторое расстояние к звезде, делать сферу видимой, а спрайт скрывать.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы