Правильная подгрузка 3д моделей
|
|
radion | Дата: Понедельник, 25 Июня 2018, 21:07 | Сообщение # 1 |
частый гость
Сейчас нет на сайте
| Здравствуйте, уважаемые игроделы. Делаю занятный хоррор про школу. Структура школы такова: 4 этажа, на каждом этаже много кабинетов, которые заполнены множеством интересностей. Соответственно, встает вопрос о оптимизации. Не думаю, что разумно прогружать всю школу. Очень тяжело. Как можно сделать прогрузку по этажам? Например, я на первом этаже. Прогружаю полностью коридор и кабинеты, которые находятся в определенном радиусе от меня и которые можно открыть. Готов выслушать другие идеи
|
|
| |
InsaneSystems | Дата: Понедельник, 25 Июня 2018, 21:28 | Сообщение # 2 |
участник
Сейчас нет на сайте
| radion, самый простой способ - отключать ненужные объекты, пока игрок непосредственно не имеет к ним доступа. Делать это можно с помощью простого триггера во время перехода с этажа на этаж. Ещё вариант - Occlusion Culling. Правда не подскажу, насколько он хорош в закрытых помещениях.
|
|
| |
radion | Дата: Понедельник, 25 Июня 2018, 21:39 | Сообщение # 3 |
частый гость
Сейчас нет на сайте
| InsaneSystems, не особо хороший вариант. Если игрок откроет все комнаты, то нагрузка будет приличная
|
|
| |
URGINSAN | Дата: Понедельник, 25 Июня 2018, 22:16 | Сообщение # 4 |
почти ветеран
Сейчас нет на сайте
| radion, 1 вариант. Расставь триггеры. Как только поднимаешься на новый этаж, юзай gameobject.SetActive(true/false); 2 вариант. Засунь все модели из кабинета в один объект. В зависимости от расстояния до этого объекта применяй все тот же gameobject.SetActive(true/false);
Я на драйве
|
|
| |
martuk | Дата: Понедельник, 25 Июня 2018, 22:37 | Сообщение # 5 |
заслуженный участник
Сейчас нет на сайте
| Я в свое время пошел куда дальше. Мне нужно было визуализировать квартиры всего города. Вот записал. Подсказка такая: На самом деле на весь город рендерится лишь три этажа квартир. Но сам эффект очень клевый.
|
|
| |
InsaneSystems | Дата: Понедельник, 25 Июня 2018, 23:07 | Сообщение # 6 |
участник
Сейчас нет на сайте
| radion, если у вас модели фурнитуры на одном этаже вызывают проблемы с производительностью, то возможно стоит оптимизировать сами модели, а не способ их отображения. А так же посмотреть в сторону Static и Dynamic Batching, использовать Level of Detail (LOD).
Сообщение отредактировал InsaneSystems - Понедельник, 25 Июня 2018, 23:09 |
|
| |
radion | Дата: Вторник, 26 Июня 2018, 14:55 | Сообщение # 7 |
частый гость
Сейчас нет на сайте
| InsaneSystems, вызывает проблемы все Пытался изучить lod, но толковых уроков не нашел, так и забил на это дело. Посоветуйте, если знаетеДобавлено (26 Июня 2018, 14:55) --------------------------------------------- martuk, насколько я понял, это префабы?
|
|
| |
martuk | Дата: Вторник, 26 Июня 2018, 21:00 | Сообщение # 8 |
заслуженный участник
Сейчас нет на сайте
| radion, Префаба три. один - фасад дома (один этаж), второй - интерьер и планировка (один этаж). Третий - контроллер, который по началу задают количество этажей и генерирует под собой уже дом. Он же (при близком расстоянии камеры) контролирует этажи. Т.е. всегда на самом деле рисуется текущий этаж, верхний и нижний текущего дома на весь город.
|
|
| |
radion | Дата: Вторник, 26 Июня 2018, 21:42 | Сообщение # 9 |
частый гость
Сейчас нет на сайте
| martuk, идея интересная, но в моем случае такое не прокатит
|
|
| |
martuk | Дата: Вторник, 26 Июня 2018, 23:46 | Сообщение # 10 |
заслуженный участник
Сейчас нет на сайте
| radion, вариант в лоб: Тупо считать дистанцию до "нагруженной комнаты". Или сделать еще проще, а это разделить комнаты на отдельные уровни. Ничего плохого в этом нет и вполне приветствуется игроками.
|
|
| |
radion | Дата: Среда, 27 Июня 2018, 05:11 | Сообщение # 11 |
частый гость
Сейчас нет на сайте
| Сильно пострадает динамика игры. Думаю, что имеет смысл разбить кабинеты на лоды. Чем ближе к тригеру, тем более детализированная комната становится
|
|
| |
MANMANA | Дата: Среда, 27 Июня 2018, 08:53 | Сообщение # 12 |
почти ветеран
Сейчас нет на сайте
| А чем не подходит
Код gameobject.SetActive(true/false) ?
Или
Код GetComponent<Renderer>().enabled = true ? Например, как реализовано здесь
Unity Field of View Fog of War
http://www.3dbuffer.com/ Текстуры, Unity3D, Blender: Эффекты, скрипты, моделирование, текстурирование, скульптинг VKонтакте 3Dbuffer
Последнее:
Новый раздел "Текстуры"
Как запатентовать, защитить техническое решение, игру, идею
|
|
| |