Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Blitz3D > 3D-программирование

3D-программирование Вопросы, касающиеся программирования 3D мира

Ответ
 
Опции темы
Старый 16.06.2010, 14:12   #1
LLI.T.A.L.K.E.R.
Мастер
 
Аватар для LLI.T.A.L.K.E.R.
 
Регистрация: 24.06.2009
Адрес: Набережные Челны
Сообщений: 930
Написано 292 полезных сообщений
(для 504 пользователей)
Стрелка 3Д оптимизация

Сделал некий способ скрытия объекта, который находится позади видимого.
Использовал основу стандартного урока - расчёт в 2д крайних вершин объекта.

Есть глюки и их нужно доработать. Прошу помочь, а то голова уже кипит
Так же не работает скрытие при показе объектов в обратном порядке (не скрываются объекты, которые отображались до текущего). Здесь нужно доработать алгоритм.

На 3-ем рисунке в режиме WireFrime 1 чётко видно то (указано мною зелёным цветом), что объекты которые не видны - они не отображаются. Так понижается количество полигонов и должен повыситься ФПС.

Сначала хотел использовать эту систему в своём проекте.. А как допёрло реализовать его - выкладываю здесь.
Миниатюры
Нажмите на изображение для увеличения
Название: 1.jpg
Просмотров: 677
Размер:	36.2 Кб
ID:	10355  Нажмите на изображение для увеличения
Название: 2.jpg
Просмотров: 668
Размер:	34.1 Кб
ID:	10356  Нажмите на изображение для увеличения
Название: 3.jpg
Просмотров: 674
Размер:	96.2 Кб
ID:	10357  
Вложения
Тип файла: rar 3D-Optimizer.rar (391.7 Кб, 463 просмотров)
(Offline)
 
Ответить с цитированием
Старый 16.06.2010, 15:10   #2
is.SarCasm
Бывалый
 
Аватар для is.SarCasm
 
Регистрация: 17.05.2009
Адрес: Днепропетровск
Сообщений: 672
Написано 180 полезных сообщений
(для 428 пользователей)
Ответ: 3Д оптимизация

Вообще, работает , но смысла честно... у меня фпс не меняется вообще.
(Offline)
 
Ответить с цитированием
Старый 16.06.2010, 15:13   #3
Igor
Мастер
 
Аватар для Igor
 
Регистрация: 03.05.2010
Адрес: Подмосковье
Сообщений: 1,218
Написано 438 полезных сообщений
(для 790 пользователей)
Ответ: 3Д оптимизация

Идея хорошая, только всё-таки сделай много обьектов и сравни фпс.
__________________
О¯О ¡¡¡ʁɔvʎнdǝʚǝdǝu dиW
(Offline)
 
Ответить с цитированием
Старый 16.06.2010, 15:27   #4
is.SarCasm
Бывалый
 
Аватар для is.SarCasm
 
Регистрация: 17.05.2009
Адрес: Днепропетровск
Сообщений: 672
Написано 180 полезных сообщений
(для 428 пользователей)
Ответ: 3Д оптимизация

Я создавал 3000 кубиков, лаги ужасные. Думаю тут для сравнения нужны высокополигоналки
(Offline)
 
Ответить с цитированием
Старый 17.06.2010, 08:08   #5
LLI.T.A.L.K.E.R.
Мастер
 
Аватар для LLI.T.A.L.K.E.R.
 
Регистрация: 24.06.2009
Адрес: Набережные Челны
Сообщений: 930
Написано 292 полезных сообщений
(для 504 пользователей)
Ответ: 3Д оптимизация

Применение этого способа оптимизации я вижу такое:
в игре имеются высоко полигональные модельки/объекты (больше подойдут типа прямоугольный параллелепипед - например домики, здания, бункера, стены или ящики). Например у здания каждое окошко обработано.
Но не стоит считывать крайние точки именно у самой модели, так как просчитывание каждой вершины будет накладно.
Лучше в редакторе модели сразу же сделать прямоугольник (или плоскость) по краям модели. А в программе считывать вершины этого прямоугольника.

*____________* <- вершина
|(~~~)---/~~)|
|! 
моделька !|
|!
__________!| 
Поправки:
RenderMaxXL=Width ;исправил с =Widht2(пол экрана) на ширину экрана (крайнее правое)
RenderMaxXR=0 ;с пол экрана на противоположное крайнее левое
RenderMaxYU=Height ;с =Height2 (пол высоты) на крайнее нижнее (в понимании верхнее)
;а то до этого застревали точки на середине экрана
Text RenderMaxXL,RenderMaxYU,RenderMaxXL ;здесь случайно оставил RenderMaxYD
Text RenderMaxXR,RenderMaxYU,RenderMaxXR
If (leftmost>RenderMaxXL+1) And (rightmost<RenderMaxXR-1) And (topmost>RenderMaxYU+1) Then
HideEntity ent
Else
If (topmost>1) And (leftmost>1) And (rightmost<Width-1) Then ShowEntity ent ;добавил проверку. Без этого при наклонении камеры, вниз все объекты (топмост и др. которых был меньше 0 и 1) изображались.
End If
Вроде в коде оставил pxCreateWorld(1,"") и pxSetGravity(0,-40,0) - их нужно удалить.

Остаётся глюк (на рисунке): почему-то крайнее левое иногда равняется 0 (нулю). То ли что-то пропущено, то ли равняется на невидимый объект.

И все же невыгодно просчитывать каждые 1000 или 10000 тысячные объекты. Нужно как-то сократить число (но вроде не возможно, кроме как просто иметь меньшее их количество).

Блин глюки в работе с верхней вершиной. Когда задний объект ниже ближнего, но края его видны.
Миниатюры
Нажмите на изображение для увеличения
Название: Glyk.jpg
Просмотров: 653
Размер:	29.5 Кб
ID:	10367  
(Offline)
 
Ответить с цитированием
Старый 17.06.2010, 09:01   #6
jimon
 
Сообщений: n/a
Ответ: 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
 
Ответить с цитированием
Эти 4 пользователя(ей) сказали Спасибо за это полезное сообщение:
ARA (09.07.2010), Harter (11.07.2010), HolyDel (10.07.2010), is.SarCasm (09.07.2010)
Старый 17.06.2010, 14:29   #7
Mr_F_
Терабайт исходников
 
Аватар для Mr_F_
 
Регистрация: 13.09.2008
Сообщений: 3,947
Написано 2,189 полезных сообщений
(для 6,051 пользователей)
Ответ: 3Д оптимизация

да, да таких целей юзаются порталы и BSP.
и ещё я чето не понял - если стоит бублик, который крайними точками загораживает то что за ним, через дырку тоже ничего не увидишь? и все объекты на экране не идеальные квадраты, а могут иметь кучу всяких дырок и углублений.

---
кстати во)
http://insidecpp.ru/antipatterns/reinventing_the_wheel/
__________________
бложик | geom.io | твиттер | faded | демо 1 2 | роботы | лайтмаппер

Последний раз редактировалось Mr_F_, 18.06.2010 в 14:57.
(Offline)
 
Ответить с цитированием
Старый 17.06.2010, 18:12   #8
Черный крыс
 
Сообщений: n/a
Ответ: 3Д оптимизация

Думаю лучше погугли на тему Octree
 
Ответить с цитированием
Старый 09.07.2010, 00:03   #9
Kolobok
Оператор ЭВМ
 
Аватар для Kolobok
 
Регистрация: 02.07.2010
Сообщений: 30
Написано 0 полезных сообщений
(для 7 пользователей)
Ответ: 3Д оптимизация

А я думаю дольше будет проверять, скрывать, отображать кубики, чем просто рисовать их...
(Offline)
 
Ответить с цитированием
Старый 09.07.2010, 00:10   #10
is.SarCasm
Бывалый
 
Аватар для is.SarCasm
 
Регистрация: 17.05.2009
Адрес: Днепропетровск
Сообщений: 672
Написано 180 полезных сообщений
(для 428 пользователей)
Ответ: 3Д оптимизация

скрывать, отображать кубики
Полигоны все равно подвергаются рендеру.
(Offline)
 
Ответить с цитированием
Старый 09.07.2010, 00:52   #11
SBJoker
Злобный Админ
 
Аватар для SBJoker
 
Регистрация: 04.09.2005
Сообщений: 5,926
Написано 3,415 полезных сообщений
(для 9,330 пользователей)
Ответ: 3Д оптимизация

те что скрыты или альфа==0 не обрабатываются рендером.
__________________
(Offline)
 
Ответить с цитированием
Старый 09.07.2010, 00:58   #12
is.SarCasm
Бывалый
 
Аватар для is.SarCasm
 
Регистрация: 17.05.2009
Адрес: Днепропетровск
Сообщений: 672
Написано 180 полезных сообщений
(для 428 пользователей)
Ответ: 3Д оптимизация

А скрываю и уменя почему то RenderTris не меняется
(Offline)
 
Ответить с цитированием
Старый 09.07.2010, 20:35   #13
LLI.T.A.L.K.E.R.
Мастер
 
Аватар для LLI.T.A.L.K.E.R.
 
Регистрация: 24.06.2009
Адрес: Набережные Челны
Сообщений: 930
Написано 292 полезных сообщений
(для 504 пользователей)
Ответ: 3Д оптимизация

Идея скрывать и показывать не кубики, а прикреплённые к ним высокополигональные объекты (например домик или бункер, гараж, здание - такие как в Delta Force)

Теперь нужно прикрепить формулу нахождения точки в многоугольник (я её пока не понял и она на другом языке прог-я), но видимо в Blitz-е математические вычисления - слабое место..

Не подскажете что в Blitz-е выгоднее:
сразу рендерить 50 (или др.) высокополигональных объектов
или
вычислять свойства 50 кубиков, потом рендерить видимый объект?
А если 1000?

Ну в стиле Delta Force это будет непригодно, а вот если в стиле города GTA?

В OpenGL читал используют Z-буффер вроде и там легче

- - - - -

Ещё есть альтернативная идея:
кубики разукрашивать в разные неповторяющиеся цвета - а потом брать с экрана цвет пикселей в 2D координатах граней кубика.
Если цвет не его - значит он не видим и значит не нужно рисовать его "объект".
Ну и в запас для ограничения лишней повторной проверки держать некую базу данных не/видимости.

Но это уже вычисления и проверка буффера.
(Offline)
 
Ответить с цитированием
Старый 09.07.2010, 21:30   #14
Gector
Легенда
 
Аватар для Gector
 
Регистрация: 14.10.2007
Сообщений: 3,878
Написано 2,012 полезных сообщений
(для 5,072 пользователей)
Ответ: 3Д оптимизация

кубики разукрашивать в разные неповторяющиеся цвета - а потом брать с экрана цвет пикселей в 2D координатах граней кубика.
Если цвет не его - значит он не видим и значит не нужно рисовать его "объект".
Ну и в запас для ограничения лишней повторной проверки держать некую базу данных не/видимости.

Но это уже вычисления и проверка буффера.
Это тормозня еще хуже выйдет.
__________________
Ибо как сказал Бгдн:
(Offline)
 
Ответить с цитированием
Старый 09.07.2010, 23:32   #15
IGR
Blitz's Shame !!
 
Регистрация: 31.03.2007
Сообщений: 3,639
Написано 832 полезных сообщений
(для 2,013 пользователей)
Ответ: 3Д оптимизация

да какая это оптимизация !!

З-буфер и в директ икс юзается кста !!
Реальный оптимайз получится на уровне железа !! А так можно деревъя и порталы юзать для большых пространств !!

А то что ты запрячешь 10 домиков а остальные 100500 отрендеришь ничего, при этом написав кучу ифов и проверок, не даст !!
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 00:37.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com