Поиск в BSP-дереве: поиск соседей

BSP-ячейка с соседямиВ последнее время очень часто ловлю себя на мысли: «А ведь я это уже когда-то делал!» Начинаешь рыться в исходниках предыдущих проектов, но тщетно! Напишу-ко я сюда :)

Продолжая тему применения BSP-деревьев, хочу рассказать немного о поиске пути в BSP-дереве. В том виде, в котором оно сейчас (каждый элемент содержит массив вложенных элементов), его применение для поиска путей является трудоемким: для каждой следующей точки при построении варианта пути придется делать новый поиск от самого корня дерева, чтобы проверить, есть ли рядом точка.

Поиск соседей в BSP-дереве
Гораздо оптимальнее было бы хранить для каждой точки ссылки на своих соседей. Тогда нам не придется каждый раз для соседней точки начинать поиск сначала. Но что делать с объемом выделяемой памяти? Неужели придется для каждого соседа отводить по целому 32-х разрядному числу? Если учесть, что у каждой ячейки в пространстве может быть 26 соседей, то размер дерева вырастет на ужасающую величину!

Нет! Мы так делать не будем, потому что нам поможет справиться с задачей бинарная упаковка. Далее немного исходников на ActionScript 3. Да, я занимаюсь прототипированием работы BSP-дерева на Flash-е :) Очень, кстати, удобно и наглядно получается.


( Читать дальше )

Скелетная анимация в Away3D 4.0



Проблема всех активно развивающихся open-source движков в нехватке документации и примеров, так как разработчики обычно оставляют эти второстепенные для них вещи на потом. Во всех более-менее серьезных вопросах, отличных от «Hello, World!», приходится разбираться самому с нуля, копаясь в коде движка и просеивая по крупицам редкие сообщения на англоязычных форумах.

Сейчас я пытаюсь разобраться с теми классами, которые предоставляет нам Away3D 4.0 для скелетной анимации. Это:
  • SkeletonAnimator
  • SmoothSkeletonAnimator
  • BlendingSkeletonAnimator

Класс SkeletonAnimator позволяет загружать именованные анимационные последовательности, а потом воспроизводить их при помощи вызова метода .play('имя анимации').

Класс SmoothSkeletonAnimator делает практически тоже самое, что и SkeletonAnimator, только переходы между анимациями делает плавно, согласно заданному дополнительному параметру crossFadeTime.

Наибольший интерес представляет последний класс из списка — BlendingSkeletonAnimator.

( Читать дальше )