3Д оптимизация
Вложений: 4
Сделал некий способ скрытия объекта, который находится позади видимого.
Использовал основу стандартного урока - расчёт в 2д крайних вершин объекта. Есть глюки и их нужно доработать. Прошу помочь, а то голова уже кипит >O< Так же не работает скрытие при показе объектов в обратном порядке (не скрываются объекты, которые отображались до текущего). Здесь нужно доработать алгоритм. На 3-ем рисунке в режиме WireFrime 1 чётко видно то (указано мною зелёным цветом), что объекты которые не видны - они не отображаются. Так понижается количество полигонов и должен повыситься ФПС. Сначала хотел использовать эту систему в своём проекте.. А как допёрло реализовать его - выкладываю здесь. :moil: |
Ответ: 3Д оптимизация
Вообще, работает , но смысла честно... у меня фпс не меняется вообще.
|
Ответ: 3Д оптимизация
Идея хорошая, только всё-таки сделай много обьектов и сравни фпс.
|
Ответ: 3Д оптимизация
Я создавал 3000 кубиков, лаги ужасные. Думаю тут для сравнения нужны высокополигоналки
|
Ответ: 3Д оптимизация
Вложений: 1
Применение этого способа оптимизации я вижу такое:
в игре имеются высоко полигональные модельки/объекты (больше подойдут типа прямоугольный параллелепипед - например домики, здания, бункера, стены или ящики). Например у здания каждое окошко обработано. Но не стоит считывать крайние точки именно у самой модели, так как просчитывание каждой вершины будет накладно. Лучше в редакторе модели сразу же сделать прямоугольник (или плоскость) по краям модели. А в программе считывать вершины этого прямоугольника. PHP код:
Цитата:
Цитата:
Цитата:
Остаётся глюк (на рисунке): почему-то крайнее левое иногда равняется 0 (нулю). То ли что-то пропущено, то ли равняется на невидимый объект. :dontknow: И все же невыгодно просчитывать каждые 1000 или 10000 тысячные объекты. Нужно как-то сократить число (но вроде не возможно, кроме как просто иметь меньшее их количество). Блин глюки в работе с верхней вершиной. :pure_magic: Когда задний объект ниже ближнего, но края его видны. |
Ответ: 3Д оптимизация
ты изобрел софтварный, немного извращенный (если вообще рабочий), occlusion culling, кстати о порталах слышал ? :)
http://http.developer.nvidia.com/GPU...gems_ch29.html http://www.gamasutra.com/view/featur...oors_fast_.php http://www.gamasutra.com/view/featur...algorithms.php |
Ответ: 3Д оптимизация
да, да таких целей юзаются порталы и BSP.
и ещё я чето не понял - если стоит бублик, который крайними точками загораживает то что за ним, через дырку тоже ничего не увидишь? и все объекты на экране не идеальные квадраты, а могут иметь кучу всяких дырок и углублений. --- кстати во) http://insidecpp.ru/antipatterns/reinventing_the_wheel/ |
Ответ: 3Д оптимизация
Думаю лучше погугли на тему Octree
|
Ответ: 3Д оптимизация
А я думаю дольше будет проверять, скрывать, отображать кубики, чем просто рисовать их... :)
|
Ответ: 3Д оптимизация
Цитата:
|
Ответ: 3Д оптимизация
те что скрыты или альфа==0 не обрабатываются рендером.
|
Ответ: 3Д оптимизация
А скрываю и уменя почему то RenderTris не меняется
|
Ответ: 3Д оптимизация
Идея скрывать и показывать не кубики, а прикреплённые к ним высокополигональные объекты (например домик или бункер, гараж, здание - такие как в Delta Force)
Теперь нужно прикрепить формулу нахождения точки в многоугольник (я её пока не понял и она на другом языке прог-я), но видимо в Blitz-е математические вычисления - слабое место.. Не подскажете что в Blitz-е выгоднее: сразу рендерить 50 (или др.) высокополигональных объектов или вычислять свойства 50 кубиков, потом рендерить видимый объект? А если 1000? Ну в стиле Delta Force это будет непригодно, а вот если в стиле города GTA? В OpenGL читал используют Z-буффер вроде и там легче :"( - - - - - Ещё есть альтернативная идея: кубики разукрашивать в разные неповторяющиеся цвета - а потом брать с экрана цвет пикселей в 2D координатах граней кубика. Если цвет не его - значит он не видим и значит не нужно рисовать его "объект". Ну и в запас для ограничения лишней повторной проверки держать некую базу данных не/видимости. Но это уже вычисления и проверка буффера. |
Ответ: 3Д оптимизация
Цитата:
|
Ответ: 3Д оптимизация
да какая это оптимизация !!
З-буфер и в директ икс юзается кста !! Реальный оптимайз получится на уровне железа !! А так можно деревъя и порталы юзать для большых пространств !! А то что ты запрячешь 10 домиков а остальные 100500 отрендеришь ничего, при этом написав кучу ифов и проверок, не даст !! |
Часовой пояс GMT +4, время: 17:09. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot