|
3D-программирование Вопросы, касающиеся программирования 3D мира |
26.04.2008, 08:01
|
#1
|
Оператор ЭВМ
Регистрация: 03.05.2007
Сообщений: 23
Написано 0 полезных сообщений (для 0 пользователей)
|
Оптимизация: Отбрасывание невидимых пол&
Помогите пожалуйсто как это реализовать, сцена большой моя будет а FPS хочеться сберечь
ЦИТАТА:
Даже лучшие игровые программисты не могут обработать 300 000 треугольников на современных 3D картах при сохранении 60 fps. Карты просто не обладают такой мощью, поэтому нам нужно приложить некоторые усилия для отбрасывания полигонов, которые человек не видит, перед передачей сцены карте. Этот процесс называется отбрасыванием невидимых вершин и полигонов (culling).
Ссылка на статью: http://content.mail.ru/arch/20764/1074136.html
|
(Offline)
|
|
26.04.2008, 10:05
|
#2
|
Терабайт исходников
Регистрация: 05.07.2007
Сообщений: 5,196
Написано 1,721 полезных сообщений (для 5,374 пользователей)
|
Ответ: Оптимизация: Отбрасывание невидимых пол&
Вот по этому для игр делают лоу поли модели, и не юзают мешсмуф.
Отбрасывать имхо лучше невидимые меши. Тобиш установить радиус
на котором меш появляется. Так вот и локации по кускам грузить.
|
(Offline)
|
|
26.04.2008, 11:30
|
#3
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
Ответ: Оптимизация: Отбрасывание невидимых по
Даже лучшие игровые программисты не могут обработать 300 000 треугольников на современных 3D картах при сохранении 60 fps.
|
очень смешно. это все равно что "даже лучшие афтогонсчеги не могут ехать со скоростью больше 100 км/час", ессено на катке не могут, а на порше - пожалуйста. другими словами все зависит от машины, на современном компе даже блиц выжмет 60 фпс на сцене с 300 000 триугольников, про лучшие движки - вобще молчу.
Если будет большая сцена - руби ее на мелкие части (разумно мелкие), установи CameraRange поменьше, грузи сцену AnimMesh-ем.
|
(Offline)
|
|
26.04.2008, 16:25
|
#4
|
Оператор ЭВМ
Регистрация: 03.05.2007
Сообщений: 23
Написано 0 полезных сообщений (для 0 пользователей)
|
Re: Оптимизация: Отбрасывание невидимых по
Я не сильно знаю всю внутрянку Blitz3D. Но как вам моя тормознутая идея : Если в загружаемой модели каждый вертекс подвергнуть проверке на видимость и если что пнуть вертекс Hide-ом. Хотя можно и не отвечать ответ впринципе и так ясен.
Но всё-таки эта реальная штука обрезка поликов, я в GTA когда играл там эту прогу глюкануло и я увидел сцену в каком-то клубе над головой игрока и там был чётко виден этот эффект.
================================================== =======================
Сначало предисловие чтоб ввести всех в курс дела:
Я юзаю PhysX_Wrapper, под редактор уровней заделал "Gile's" под свои нужды изменил парсер файлов B3D выпущеных из этой проги. Ставлю пивоты а по ним уже загружается всё что нужно.
Так вот что я хочу сделать для оптимизации(или что у меня уже сделано):
Каждый файл из редактора DarkAge_PhysX_Editor - исчезает на одном расстоянии и засыпает на другом,
Зданий у меня будет несколько и каждое будет исчезать на расстоянии.
Текстуры хочу заюзать DDS естественно с mip_mapping-ом.
Дюмаю этого пока хватит.( Видюха правдо древность GForce4MX, никакими шейдерами и DirectX9 там и не пахнет)
Одна только проблема мля убивает реально:
Max9 не грузит pipeline, точнее её либу для экспорта в B3D, Хотел оживить бравого парня в программе, есть у меня прога, с костным анимом работает, но ЖУТКО неудобная "CharacterFX"
Может даст кто файл b3dexp.dle (так он вроде зовётся) для 9-го макса ???
Ну если вы разобрались в той хрени которую я написал то... .
Кто поделится опытом создания более-менее серьёзных работ ???
Я просто решил сделать обьёмный проект, и как следствие его надо продумать как можно тщательней. От.... ой мля, даже страшно представить сколько всего надо учесть и чего надо будет напрограммить.
Так что пожалуйсто, подскажите если есть где подводные камни, и чем мне удобней будет создавать игровую программу, точнее какими инструментами вы пользуетесь.
Вообщем постараюсь не флудить особо, пущай ветка может поживёт пару дней а там админами её в топку.
|
(Offline)
|
|
26.04.2008, 16:54
|
#5
|
|
Ответ: Оптимизация: Отбрасывание невидимых по
резать полигоны - комп умрет, слишком тормозно
нужно обновлять мир только близж лежащих к игроку територий
а остальные територии отгружать вообще (если большие открытые пространства не планируются)
|
|
|
26.04.2008, 17:14
|
#6
|
Ференька
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,741
Написано 5,461 полезных сообщений (для 15,675 пользователей)
|
Ответ: Оптимизация: Отбрасывание невидимых по
По-моему, в DX уже есть отсечение невидимых поликов на аппаратном уровне - T&L - Transform, Clipping, Lightning. Вот он как раз и должен отсекать то что находится позади камеры. (тут я мог и ошибиться)
Что насчёт того, что находится в видимости камеры, то тут рулит LoD система (на откр. пространствах) и система порталов в коридорах.
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**
* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена
|
(Offline)
|
|
26.04.2008, 17:46
|
#7
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
Ответ: Оптимизация: Отбрасывание невидимых по
нет. аппаратно отрезается только обратная (невидимая) сторона триугольника.
объекты, которые не попадают в зону видимости камера - их обрезкой занимается движок, называется ета хрень - frustum culling.
|
(Offline)
|
|
26.04.2008, 19:52
|
#8
|
Оператор ЭВМ
Регистрация: 03.05.2007
Сообщений: 23
Написано 0 полезных сообщений (для 0 пользователей)
|
Re: Оптимизация: Отбрасывание невидимых по
Кто что думает насчёт тупого скрытия объекта который не виден игроку командой "HideEntity" пока не пробовал но по идее должно хоть както сохранить ресурсы компа.
Ладно, практической теории я не нашёл здесь, да в принципе и не особо надеялся.
Одна блин, философия по принципам 3D программинга. Буду расчитывать на собственные силы, twin# скинул в ноль, глюки есть, несмертельные зато, FPS порезвей стали прыгать
Единственная просьба - помогите запустить Pipeline под Max9. Ссылка на 100% рабочий файл должна ведь быть у кого-то?
|
(Offline)
|
|
26.04.2008, 21:06
|
#9
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
Ответ: Оптимизация: Отбрасывание невидимых по
Кто что думает насчёт тупого скрытия объекта который не виден игроку командой "HideEntity" пока не пробовал но по идее должно хоть както сохранить ресурсы компа.
|
блин... откуда такие настойчивые мысли?
ликбез: объекты итак не отрисовываются, которые не попадают в зону видимости камеры. (имеет смысл таким макаром скрывать локации, комнаты, коридоры, другими словами "составные" объекты)
twin# скинул в ноль, глюки есть, несмертельные зато, FPS порезвей стали прыгать
|
хм. тот самый tween# что есть параметр RenderWorld ?
или отменил вертикальную синхронизацию с Flip(0) , если второе - то молодец, правильный шаг, если первое то даже хз.
Единственная просьба - помогите запустить Pipeline под Max9. Ссылка на 100% рабочий файл должна ведь быть у кого-то?
|
вот патч:
http://likosoft.ucoz.ru/load/21-1-0-35
|
(Offline)
|
|
26.04.2008, 21:06
|
#10
|
Ференька
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,741
Написано 5,461 полезных сообщений (для 15,675 пользователей)
|
Ответ: Оптимизация: Отбрасывание невидимых по
Кто что думает насчёт тупого скрытия объекта который не виден игроку командой "HideEntity" пока не пробовал но по идее должно хоть както сохранить ресурсы компа.
|
ТруЪ, сохраняет ресурсы действительно. У меня на этом основан Level of Detail (при удалении предмета мы скрываем его модель и подсовываем модель похуже)
Единственная просьба - помогите запустить Pipeline под Max9. Ссылка на 100% рабочий файл должна ведь быть у кого-то?
|
http://www.onigirl.com/pipeline/Max9_Patch.zip
Patch for Max version 9 (unzip to Plugins folder)
|
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**
* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена
|
(Offline)
|
|
26.04.2008, 21:15
|
#11
|
Троллота
Регистрация: 09.07.2007
Сообщений: 1,829
Написано 554 полезных сообщений (для 1,772 пользователей)
|
Ответ: Оптимизация: Отбрасывание невидимых пол&
ликбез: объекты итак не отрисовываются, которые не попадают в зону видимости камеры. (имеет смысл таким макаром скрывать локации, комнаты, коридоры, другими словами "составные" объекты)
|
Хм, я делал прогу, в которой один кубик стоит за другим. Врубил вирефрейм и узрел, что второй кубик рендерился
|
(Offline)
|
|
26.04.2008, 21:20
|
#12
|
Разработчик
Регистрация: 09.12.2007
Сообщений: 376
Написано 83 полезных сообщений (для 122 пользователей)
|
Ответ: Re: Оптимизация: Отбрасывание невидимых по

Сообщение от Dstorton111
Ладно, практической теории я не нашёл здесь, да в принципе и не особо надеялся.
|
какой теории?
|
(Offline)
|
|
26.04.2008, 21:23
|
#13
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
Ответ: Оптимизация: Отбрасывание невидимых по
ликбез: объекты итак не отрисовываются, которые не попадают в зону видимости камеры. (имеет смысл таким макаром скрывать локации, комнаты, коридоры, другими словами "составные" объекты)
|
смотри RenderedTris()
скажем второй куб, который на самом деле не виден, с точки зрения компьютера раз находится в области видимости камеры (камера его видит) то он видим.
ТруЪ, сохраняет ресурсы действительно. У меня на этом основан Level of Detail (при удалении предмета мы скрываем его модель и подсовываем модель похуже)
|
false.
это не одно и то же. попробуй скрывать модель в зависмости от расстояния, когда она и так бы образалась дальней плоскостью отсечения. ничего не выйдет.
вот, кстати, статья(комментированный исходник) о ЛОДе, может кому пригодиься:
http://likosoft.ucoz.ru/publ/3-1-0-21
Последний раз редактировалось HolyDel, 26.04.2008 в 21:32.
|
(Offline)
|
|
26.04.2008, 21:30
|
#14
|
Троллота
Регистрация: 09.07.2007
Сообщений: 1,829
Написано 554 полезных сообщений (для 1,772 пользователей)
|
Ответ: Оптимизация: Отбрасывание невидимых по
Сообщение от HolyDel
смотри RenderedTris()
|
Ну-ну
mode=1
Graphics3D 1024,768,32,1
SetBuffer BackBuffer()
cam=CreateCamera()
cub_1=CreateCube()
cub_2=CreateCube()
While Not KeyHit(1)
If KeyHit(57) Then mode=Not mode
Select mode
Case 1
PositionEntity cub_1,0,0,5
PositionEntity cub_2,0,0,7
Case 0
PositionEntity cub_1,-3,0,5
PositionEntity cub_2,3,0,5
End Select
RenderWorld
Text 10,10,"Rendering "+TrisRendered()+" triangles"
Flip
Wend
End
ЮПД: А, ну то что проюпдатено то верно...
|
(Offline)
|
|
26.04.2008, 21:50
|
#15
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
Ответ: Оптимизация: Отбрасывание невидимых по
mode=1
Graphics3D 1024,768,32,1
SetBuffer BackBuffer()
cam=CreateCamera()
cub_1=CreateCube()
cub_2=CreateCube()
While Not KeyHit(1)
If KeyHit(57) Then mode=Not mode
Select mode
Case 1
PositionEntity cub_1,0,0,5
PositionEntity cub_2,0,0,7000
Case 0
PositionEntity cub_1,-3,0,5
PositionEntity cub_2,3,0,5
End Select
RenderWorld
Text 10,10,"Rendering "+TrisRendered()+" triangles"
Flip
Wend
End
а так?
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 16:58.
|