![]() |
Страницы (2): [1] 2 » Показать все 20 сообщений этой темы на одной странице |
HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- Флуд (https://hlfx.ru/forum/forumdisplay.php?forumid=11)
-- Сплющить BSP-дерево в список (https://hlfx.ru/forum/showthread.php?threadid=4123)
Сплющить BSP-дерево в список
Есть некий формат статических моделек, в котором хранятся меши с отсортированными через BSP полигонами. Как выясняется, эта сортировка рендерится корректно даже если тупо записать все полигоны меша в одну ноду в отсортированном порядке.
Доводилось ли вам встречаться со сплющенными BSP-деревьями? По какому принципу их жмут в плоские списки?
Например, какой список получился бы из такого дерева?
code:
1 / \ / \ nil--2 3--nil / \ / \ nil 4
Обходишь дерево в нужном порядке и перевязываешь ноды в динамический список. В чём проблема-то?
__________________
Для отрисовки обычно обходят от ближних к дальним.
Если на твоей картинке ближние слева, а дальние справа, то список будет таким:
nil-2-nil-4-nil-3-1
__________________
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Ух ты с сорсами Будем поизучать.
Добавлено 11-10-2013 в 21:15:
Да не, ерунда какая-то.
Ну вот это что такое?
1 | typedef struct JointInfo { |
2 | short num_polys; /// Number of polygons |
3 | short start_poly; /// Start poly |
4 | short num_vertices; /// Number of vertices |
5 | short start_vertex; /// Start vertex |
6 | float jflt; /// I suppose this is a blending factor for the bone |
7 | short sh6; /// Flag (?) - there are few places for TG this is not zero, but either 1,2 or 3 |
8 | short mapper_id; /// ID of the mapper struct |
9 | } AIJointInfo; |
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша
Не, это ж ты про OPDE. А я про оригинал:
www.southquarter.com/thief_2_service_release.7z
Вернее про то, что с ним сделали крайне анонимные погромисты после утечки.
Кадаж уже голдсорс размякнет и утечёт?
Уже у всех всё утекло, а тут ничего подобного.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
В Сорсе оно и так уже отсортировано через дерево.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Обычная топологическая сортировка. Делается поиском в глубину
http://ru.wikipedia.org/wiki/%D0%9F...%B8%D0%BD%D1%83
Добавлено 12-10-2013 в 11:07:
Псевдокод
1 | void dfs( CNode *node ) |
2 | { |
3 | List.push_back( node ); |
4 | dfs( node->left ); |
5 | dfs( node->right ); |
6 | } |
Спасибо за ответы. Я всё надеялся, что пронесёт и не придётся говнокодить bsp-резак, а получится обойтись какой-нибудь примитивной недосортировкой. Но по ходу дела надо действительно строить дерево. Как я это буду делать петоном без рекурсии, хрен его знает =(
__________________
Конечно можно, но сколько возни. Где-нибудь в ерланге положил сверху паттернов да насовал снизу самовызовов — вот тебе и дерево. А тут ещё в голову думать.
Временная зона GMT. Текущее время 22:24. | Страницы (2): [1] 2 » Показать все 20 сообщений этой темы на одной странице |
На основе vBulletin версии 2.3.0
Авторское право © Jelsoft Enterprises Limited 2000 - 2002.
Дизайн и программирование: Crystice Softworks © 2005 - 2024