[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Отображение большого количества объектов
deemaaДата: Воскресенье, 03.06.2012, 02:53 | Сообщение # 1
Сержант
Группа: Пользователи
Сообщений: 27
Награды: 0
Репутация: 0
Статус: Offline
пытаюсь отобразить большое количество однотипных перекрывающих друг друга объектов, например кубов
Code

for x in range(10):
    for y in range(10):
       for z in range(10):

          self.box = self.loader.loadModel("models/box")
          self.box.reparentTo(self.render)
          self.box.setScale(0.1,0.1,0.1)
          self.box.setPos(x*e, y*e, z*e)
          self.box.setColor(1,1,0)

в результате получаю понятное дело очень низкий фпс. Какие существуют варианты улучшить производительность? Может как-то можно не рендерить объекты, находящиеся за другими объектами, если они не видны? Или есть другие варианты? Сильно не пинайте, я только учусь, спасибо


Сообщение отредактировал deemaa - Воскресенье, 03.06.2012, 04:07
 
serg-kkzДата: Воскресенье, 03.06.2012, 11:50 | Сообщение # 2
Генерал-полковник
Группа: Модераторы
Сообщений: 803
Награды: 3
Репутация: 18
Статус: Offline
Quote (deemaa)
Сильно не пинайте, я только учусь, спасибо
Пинок - сюда
wink


ООП  -  
 
deemaaДата: Пятница, 13.07.2012, 13:39 | Сообщение # 3
Сержант
Группа: Пользователи
Сообщений: 27
Награды: 0
Репутация: 0
Статус: Offline
serg-kkz, огромное спасибо, будем разбираться

Добавлено (13.07.2012, 13:39)
---------------------------------------------
да, RBC хорошая штука, но как быть если надо отрисовать 100 000, 200 000 моделей? тут даже RBC не поможет. Как быть в таком случае?
нашел в render attributes такую штуку, как occlusion culling: "Occlusion Culling refers to the process of cutting out (culling) nodes which are hidden behind (occluded by) other nodes, and can be ignored before they ever get rendered." но примеров не нашел на форуме. Кто нибудь пробовал эту штуку?
Какие еще могут быть варианты? может задействовать туман + LOD (чтобы скрыть объекты, находящиеся на определенном удалении от камеры) ?
Очень важный вопрос для меня!

 
ninthДата: Пятница, 13.07.2012, 13:51 | Сообщение # 4
Admin
Группа: Администраторы
Сообщений: 1582
Награды: 5
Репутация: 46
Статус: Offline
Хм. А зачем тебе вообще так извращаться, если у камеры, точнее у "линзы" можно просто выставить дальность после которой она не будет ничего рендерить lens.setFar(distance)?
 
deemaaДата: Пятница, 13.07.2012, 14:08 | Сообщение # 5
Сержант
Группа: Пользователи
Сообщений: 27
Награды: 0
Репутация: 0
Статус: Offline
ninth, Да, наверное можно и так.
А что можете сказать вообще по проблеме? Решаемо или нет?
 
ninthДата: Пятница, 13.07.2012, 14:41 | Сообщение # 6
Admin
Группа: Администраторы
Сообщений: 1582
Награды: 5
Репутация: 46
Статус: Offline
Универсального "лекарства", думаю, не существует. Надо смотреть по конкретной ситуации как можно оптимизировать и убрать часть моделей. ЛОД служит для уменьшения детализации отдалённых моделей, а не для их скрытия. Ты конечно можешь в качестве одной из итераций поставить вообще пустую точку, но я не уверен что это хорошо.
Насчёт Occlusion Culling ничего сказать не могу - сам не пользовался и по-моему эта фича ещё полностью не реализована.
 
deemaaДата: Пятница, 13.07.2012, 15:12 | Сообщение # 7
Сержант
Группа: Пользователи
Сообщений: 27
Награды: 0
Репутация: 0
Статус: Offline
Quote (ninth)
ЛОД служит для уменьшения детализации отдалённых моделей, а не для их скрытия.

в мануале написано "LOD can also be used to hide objects when they are far away."
 
ninthДата: Пятница, 13.07.2012, 17:51 | Сообщение # 8
Admin
Группа: Администраторы
Сообщений: 1582
Награды: 5
Репутация: 46
Статус: Offline
Хм. Возможно. Я давно в ту часть мануала не заглядывал.
 
  • Страница 1 из 1
  • 1
Поиск: