Axis - Aligned Bounding Box (Ограничивающий параллелепипед выровненный по координатным осям).
Это ограниченная область в пространстве в виде прямоугольного параллелепипеда, со сторонами, параллельными осям координат в мировой системе. При вращении объекта AABB изменяет свои размеры, но всегда остается ориентированным по осям координат. Второй вариант AABB - использовать в качестве Bounding Box'а куб со сторонами равными максимальному размеру объекта. Таким образом, в любом положении объект не выйдет за пределы AABB, хотя, конечно, при этом теряется точность.
Существует три представления AABB:
1. min и max координаты вдоль каждой оси.
Это представление определяет AABB как пространство между двумя противолежащими угловыми точками: min и max
AABB = { (x, y, z) | min.x<=x<=max.x, min.y<=y<=max.y, min.z<=z<=max.z }
2. Минимальная угловая точка min и диаметры dx,dy,dz из этого угла:
AABB = {(x, y, z) | min.x<=x<=min.x+dx, min.y<=y<=min.y+dy, min.z<=z<=min.z+dz }
3. Последнее представление определяет AABB как центральную точку C и радиусы rx, ry, rz вдоль каждой оси:
AABB = { (x, y, z) | |c.x-x|<=rx, |c.y-y|<=ry, |c.z-z|<=rz }
Как устроена проверка в Квесте на пересечени пирамиды камеры с этим ААББ?
Как происходит генерация этого ААББ в Квесте ?
тишина... хорошо, поставим вопрос менее конкретно:
как грамотно отсекать огромное количество объектов?
при том, что всё таки кол-во предметов огромно, нужна реализация , которая меньше всего проводится с участием "РУК". Хочу кнопку "сделать красиво и быстро". ;)
для успешности проекта нужно максимально упрощять все вычесления ::)
Cludz Не во всех случаях, главное надо учитывать специфику пректа и компутерной архитектуры.
Проверил работу канала Command New Interface на выполнение команды "получить ААББ " - результат не утешительный.
Пример внизу: версия 433 VS6
ААВВ -- просто один из методов проверки для фруструм куллинга, не обязательно использовать именно его. В квесте я могу припомнить только два встроенных способа применить фруструм куллинг. Первый -- в пропертях 3D Object поставить галочку и посчитать. Но нам не важно какой метод там используеться ибо мы никак не можем принять в этом участие. Второй появился в версии 4.3 -- Sphere Tree, умеет создавать соответствие между класс инстансом и сферой и выдавать список класс инстансов чья сфера входит во фруструм.
Вот второй случай уже гораздо интереснее нам, мы можем решать какие объекты проверять на куллинг. В ченеле Command New Interface я заметил новую команду Get bounding shpere, правда ещё не знаю как выбирать те самые 4 точки.
Ну а если очень хочеться сделать именно AABB, то можно и самому написать. Хотя может я всё-таки где то, чёто пропустил и есть возможность ещё как то проверять куллинг.
Цитата: Sqwer от 30 сентября 2009, 15:58:29
Проверил работу канала Command New Interface на выполнение команды "получить ААББ " - результат не утешительный.
Пример внизу: версия 433 VS6
ну так там жеш не дано описание параметров этой команды, мб оно просто не такое как ты себе это представляеш и потому результат абсолютно не правильный
Сам эдитор считает баундинг бокс нормально ведь
копал я долго, всё зависимости находил...
перепробовал всё...
даж нашёл единственный случай правелього ААББ.... это когда идеальный куб линкуешь 1*1*1 метр ;D
и во всяком случае команда по проверки ААББ на фрустум видимость принемает другой вид ААББ (проверено).
Собственно придумал реализацию , но всётаки хотелось найти уже готовый метод.
Только что заметил у VectorOperator новые операторы:
Get Bounding box maximum (DX8 Objectdata)
Get Bounding box minimun (DX8 Objectdata)
тут уж и руками можно построить такую матрицу :)
пс: а по поводу Command New Interface я всётаки был не прав, сразу не заметил что у него фиксированое количество чаилдов в зависимости от типа команды