Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   API приложений и сред (http://www.flasher.ru/forum/forumdisplay.php?f=61)
-   -   Оптимальный выбор сортировки в A3D 7.5 (http://www.flasher.ru/forum/showthread.php?t=145100)

Jewelz 29.09.2010 13:37

Оптимальный выбор сортировки в A3D 7.5
 
возможно, кто-то уже сталкивался

имеем случай: на плоскости расположен дом

http://www.flasher.ru/forum/attachme...1&d=1285749364

Как я понял, то дом лучше всего обернуть в простую геометрию без текстур, и сортировать их по BSP, иначе если сортировать по среднему Z, то на дом заходят полигоны от плоскости.
Однако, если домов поставить штук 50, то при движении камеры fps падает до 2-3 (в каждом доме 46 полигонов), а по диаграмме камеры видно что реально полигонов около 7000 (происходит разбиение из-за BSP, как я понял)

отсюда возникли вопросы:
1. как оптимальнее сортировать в конкретном примере?
2. как правильно подготовить модель (нужна ли в ней дополнительная геометрия для отсечения ненужной сортировки)?
3. если да, то должна ли эта доп. геометрия быть частью объекта (дома)?
4. какой контейнер лучше использовать?
5. как правильно размещать в контейнере всю геометрию (все запихиваем в один, или нужно несколько)?

3p.station 30.09.2010 12:08

хех ( :
наверно вы и отвтеите на жти вопросы
я так понял у нас 3д не особо кто юзает
хотя лишь предположение

Sintesis 30.09.2010 18:33

Для статичных обьектов применяй простую БСП сортировку, как раз твой случай дома не анимированы - стоят на месте, не засовывай их в контейнеры с динамической покадровой сортировкой. Так-же в случае когда
Цитата:

в каждом доме 46 полигонов), а по диаграмме камеры видно что реально полигонов около 7000 (происходит разбиение из-за BSP, как я понял)
можно отключать автоматическую ВСП сортировку контейнер.splitAnalysis = false; потом каждому домику назначить свою мобильность домик1.mobility = -700;
домик2.mobility = -600;
домик3.mobility = -500;
и так 50 домиков))) разрезов будет на много меньше, чем при авто сортировке.
Только вот я не знаю можно-ли так делать в 7.5 версии

Jewelz 01.10.2010 14:20

итак, что мы имеем в версии 7.5:

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

в 7.5 мы имеем несколько видов контейнеров: с сортировкой и без.
если нужно чтобы какой-то объект был все время выше другого (как при addChild), то используем простой контейнер без сортировки, например Object3DContainer

сначала в него помещаем нашу плоскость, а затем еще один контейнер (с z-сортингом), в котором будут располагаться домики, тогда домики будут все время выше земли и полики от плоскости не будут пересекаться с полигонами домов.

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

также для домов лучше использовать класс BSP, а не сортировку меша по dynamic bsp.

Код AS3:

var bsp:BSP = new BSP(); 
bsp.matrix = mesh.matrix;
bsp.geometry = mesh.geometry;

Таким образом БСП расчитается один раз, а не ежекадрово.


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

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.