forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   3D-программирование (http://forum.boolean.name/forumdisplay.php?f=12)
-   -   Оптимизация: Отбрасывание невидимых пол& (http://forum.boolean.name/showthread.php?t=5951)

Dstorton111 26.04.2008 08:01

Оптимизация: Отбрасывание невидимых пол&
 
Помогите пожалуйсто как это реализовать, сцена большой моя будет а FPS хочеться сберечь:4to:

ЦИТАТА:
Даже лучшие игровые программисты не могут обработать 300 000 треугольников на современных 3D картах при сохранении 60 fps. Карты просто не обладают такой мощью, поэтому нам нужно приложить некоторые усилия для отбрасывания полигонов, которые человек не видит, перед передачей сцены карте. Этот процесс называется отбрасыванием невидимых вершин и полигонов (culling).

Ссылка на статью: http://content.mail.ru/arch/20764/1074136.html

Crystal 26.04.2008 10:05

Ответ: Оптимизация: Отбрасывание невидимых пол&
 
Вот по этому для игр делают лоу поли модели, и не юзают мешсмуф.
Отбрасывать имхо лучше невидимые меши. Тобиш установить радиус
на котором меш появляется. Так вот и локации по кускам грузить.

HolyDel 26.04.2008 11:30

Ответ: Оптимизация: Отбрасывание невидимых по
 
Цитата:

Даже лучшие игровые программисты не могут обработать 300 000 треугольников на современных 3D картах при сохранении 60 fps.
очень смешно. это все равно что "даже лучшие афтогонсчеги не могут ехать со скоростью больше 100 км/час", ессено на катке не могут, а на порше - пожалуйста. другими словами все зависит от машины, на современном компе даже блиц выжмет 60 фпс на сцене с 300 000 триугольников, про лучшие движки - вобще молчу.

Если будет большая сцена - руби ее на мелкие части (разумно мелкие), установи CameraRange поменьше, грузи сцену AnimMesh-ем.

Dstorton111 26.04.2008 16:25

Re: Оптимизация: Отбрасывание невидимых по
 
Я не сильно знаю всю внутрянку Blitz3D. Но как вам моя тормознутая идея : Если в загружаемой модели каждый вертекс подвергнуть проверке на видимость и если что пнуть вертекс Hide-ом. Хотя можно и не отвечать ответ впринципе и так ясен.

Но всё-таки эта реальная штука обрезка поликов, я в GTA когда играл там эту прогу глюкануло и я увидел сцену в каком-то клубе над головой игрока и там был чётко виден этот эффект.

================================================== =======================
Сначало предисловие чтоб ввести всех в курс дела:
Я юзаю PhysX_Wrapper, под редактор уровней заделал "Gile's" под свои нужды изменил парсер файлов B3D выпущеных из этой проги. Ставлю пивоты а по ним уже загружается всё что нужно.

Так вот что я хочу сделать для оптимизации(или что у меня уже сделано):
Каждый файл из редактора DarkAge_PhysX_Editor - исчезает на одном расстоянии и засыпает на другом,
Зданий у меня будет несколько и каждое будет исчезать на расстоянии.
Текстуры хочу заюзать DDS естественно с mip_mapping-ом.
Дюмаю этого пока хватит.( Видюха правдо древность GForce4MX, никакими шейдерами и DirectX9 там и не пахнет)

Одна только проблема мля убивает реально:
Max9 не грузит pipeline, точнее её либу для экспорта в B3D, Хотел оживить бравого парня в программе, есть у меня прога, с костным анимом работает, но ЖУТКО неудобная "CharacterFX"
Может даст кто файл b3dexp.dle (так он вроде зовётся) для 9-го макса ???


Ну если вы разобрались в той хрени которую я написал то... .

Кто поделится опытом создания более-менее серьёзных работ ???

Я просто решил сделать обьёмный проект, и как следствие его надо продумать как можно тщательней. От.... ой мля, даже страшно представить сколько всего надо учесть и чего надо будет напрограммить.

Так что пожалуйсто, подскажите если есть где подводные камни, и чем мне удобней будет создавать игровую программу, точнее какими инструментами вы пользуетесь.

Вообщем постараюсь не флудить особо, пущай ветка может поживёт пару дней а там админами её в топку.

jimon 26.04.2008 16:54

Ответ: Оптимизация: Отбрасывание невидимых по
 
резать полигоны - комп умрет, слишком тормозно

нужно обновлять мир только близж лежащих к игроку територий
а остальные територии отгружать вообще (если большие открытые пространства не планируются)

ABTOMAT 26.04.2008 17:14

Ответ: Оптимизация: Отбрасывание невидимых по
 
По-моему, в DX уже есть отсечение невидимых поликов на аппаратном уровне - T&L - Transform, Clipping, Lightning. Вот он как раз и должен отсекать то что находится позади камеры. (тут я мог и ошибиться)

Что насчёт того, что находится в видимости камеры, то тут рулит LoD система (на откр. пространствах) и система порталов в коридорах.

HolyDel 26.04.2008 17:46

Ответ: Оптимизация: Отбрасывание невидимых по
 
нет. аппаратно отрезается только обратная (невидимая) сторона триугольника.
объекты, которые не попадают в зону видимости камера - их обрезкой занимается движок, называется ета хрень - frustum culling.

Dstorton111 26.04.2008 19:52

Re: Оптимизация: Отбрасывание невидимых по
 
Кто что думает насчёт тупого скрытия объекта который не виден игроку командой "HideEntity" пока не пробовал но по идее должно хоть както сохранить ресурсы компа.

Ладно, практической теории я не нашёл здесь, да в принципе и не особо надеялся.
Одна блин, философия по принципам 3D программинга. Буду расчитывать на собственные силы, twin# скинул в ноль, глюки есть, несмертельные зато, FPS порезвей стали прыгать :-)

Единственная просьба - помогите запустить Pipeline под Max9. Ссылка на 100% рабочий файл должна ведь быть у кого-то?

HolyDel 26.04.2008 21:06

Ответ: Оптимизация: Отбрасывание невидимых по
 
Цитата:

Кто что думает насчёт тупого скрытия объекта который не виден игроку командой "HideEntity" пока не пробовал но по идее должно хоть както сохранить ресурсы компа.
блин... откуда такие настойчивые мысли?
ликбез: объекты итак не отрисовываются, которые не попадают в зону видимости камеры. (имеет смысл таким макаром скрывать локации, комнаты, коридоры, другими словами "составные" объекты)

Цитата:

twin# скинул в ноль, глюки есть, несмертельные зато, FPS порезвей стали прыгать
хм. тот самый tween# что есть параметр RenderWorld ?
или отменил вертикальную синхронизацию с Flip(0) , если второе - то молодец, правильный шаг, если первое то даже хз.

Цитата:

Единственная просьба - помогите запустить Pipeline под Max9. Ссылка на 100% рабочий файл должна ведь быть у кого-то?
вот патч:
http://likosoft.ucoz.ru/load/21-1-0-35

ABTOMAT 26.04.2008 21:06

Ответ: Оптимизация: Отбрасывание невидимых по
 
Цитата:

Кто что думает насчёт тупого скрытия объекта который не виден игроку командой "HideEntity" пока не пробовал но по идее должно хоть както сохранить ресурсы компа.
ТруЪ, сохраняет ресурсы действительно. У меня на этом основан Level of Detail (при удалении предмета мы скрываем его модель и подсовываем модель похуже)

Цитата:

Единственная просьба - помогите запустить Pipeline под Max9. Ссылка на 100% рабочий файл должна ведь быть у кого-то?
http://www.onigirl.com/pipeline/Max9_Patch.zip

Цитата:

Patch for Max version 9 (unzip to Plugins folder)

Tadeus 26.04.2008 21:15

Ответ: Оптимизация: Отбрасывание невидимых пол&
 
Цитата:

ликбез: объекты итак не отрисовываются, которые не попадают в зону видимости камеры. (имеет смысл таким макаром скрывать локации, комнаты, коридоры, другими словами "составные" объекты)
Хм, я делал прогу, в которой один кубик стоит за другим. Врубил вирефрейм и узрел, что второй кубик рендерился :(

FrankH 26.04.2008 21:20

Ответ: Re: Оптимизация: Отбрасывание невидимых по&#10
 
Цитата:

Сообщение от Dstorton111 (Сообщение 80168)
Ладно, практической теории я не нашёл здесь, да в принципе и не особо надеялся.

какой теории? :-D

HolyDel 26.04.2008 21:23

Ответ: Оптимизация: Отбрасывание невидимых по
 
Цитата:

ликбез: объекты итак не отрисовываются, которые не попадают в зону видимости камеры. (имеет смысл таким макаром скрывать локации, комнаты, коридоры, другими словами "составные" объекты)
смотри RenderedTris()
скажем второй куб, который на самом деле не виден, с точки зрения компьютера раз находится в области видимости камеры (камера его видит) то он видим.

Цитата:

ТруЪ, сохраняет ресурсы действительно. У меня на этом основан Level of Detail (при удалении предмета мы скрываем его модель и подсовываем модель похуже)
false.
это не одно и то же. попробуй скрывать модель в зависмости от расстояния, когда она и так бы образалась дальней плоскостью отсечения. ничего не выйдет.
вот, кстати, статья(комментированный исходник) о ЛОДе, может кому пригодиься:
http://likosoft.ucoz.ru/publ/3-1-0-21

Tadeus 26.04.2008 21:30

Ответ: Оптимизация: Отбрасывание невидимых по
 
Цитата:

Сообщение от HolyDel (Сообщение 80175)
смотри 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

ЮПД: А, ну то что проюпдатено то верно...

HolyDel 26.04.2008 21:50

Ответ: Оптимизация: Отбрасывание невидимых по
 
Код:

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

а так?


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

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot