Quest3D - Русскоязычное сообщество

Quest3D => Логика => Тема начата: Sqwer от 29 сентября 2009, 16:54:52

Название: AABB
Отправлено: Sqwer от 29 сентября 2009, 16:54:52
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 }

Как устроена проверка в Квесте на пересечени пирамиды камеры с этим ААББ?

Как происходит генерация этого ААББ в Квесте ?
Название: Re: AABB
Отправлено: Sqwer от 29 сентября 2009, 20:02:50
тишина... хорошо, поставим вопрос менее конкретно:

как грамотно отсекать огромное количество объектов?

при том, что всё таки кол-во предметов огромно, нужна реализация , которая меньше всего проводится с участием "РУК". Хочу кнопку "сделать красиво и быстро". ;)
Название: Re: AABB
Отправлено: Cludz от 30 сентября 2009, 11:02:06
для успешности проекта нужно максимально упрощять все вычесления ::)
Название: Re: AABB
Отправлено: Sqwer от 30 сентября 2009, 15:58:29
Cludz Не во всех случаях, главное надо учитывать специфику пректа и компутерной архитектуры.

Проверил работу канала Command New Interface на выполнение команды "получить  ААББ "  - результат не утешительный.

Пример внизу: версия 433 VS6
Название: Re: AABB
Отправлено: DimiS от 30 сентября 2009, 16:00:00
ААВВ -- просто один из методов проверки для фруструм куллинга, не обязательно использовать именно его. В квесте я могу припомнить только два встроенных способа применить фруструм куллинг. Первый -- в пропертях 3D Object поставить галочку и посчитать. Но нам не важно какой метод там используеться ибо мы никак не можем принять в этом участие. Второй появился в версии 4.3 -- Sphere Tree, умеет создавать соответствие между класс инстансом и сферой и выдавать список класс инстансов чья сфера входит во фруструм.
Вот второй случай уже гораздо интереснее нам, мы можем решать какие объекты проверять на куллинг. В ченеле Command New Interface я заметил новую команду Get bounding shpere, правда ещё не знаю как выбирать те самые 4 точки.
Ну а если очень хочеться сделать именно AABB, то можно и самому написать. Хотя может я всё-таки где то, чёто пропустил и есть возможность ещё как то проверять куллинг.
Название: Re: AABB
Отправлено: DimiS от 30 сентября 2009, 16:09:54
Цитата: Sqwer от 30 сентября 2009, 15:58:29
Проверил работу канала Command New Interface на выполнение команды "получить  ААББ "  - результат не утешительный.

Пример внизу: версия 433 VS6

ну так там жеш не дано описание параметров этой команды, мб оно просто не такое как ты себе это представляеш и потому результат абсолютно не правильный
Сам эдитор считает баундинг бокс нормально ведь
Название: Re: AABB
Отправлено: Sqwer от 30 сентября 2009, 16:17:20
копал я долго, всё зависимости находил...

перепробовал всё...

даж  нашёл единственный случай правелього ААББ.... это когда идеальный куб линкуешь 1*1*1 метр  ;D

и во всяком случае команда по проверки ААББ на фрустум видимость принемает другой вид ААББ (проверено).

Собственно придумал реализацию , но всётаки хотелось найти уже готовый метод.
Название: Re: AABB
Отправлено: DimiS от 30 сентября 2009, 21:24:08
Только что заметил у VectorOperator новые операторы:
Get Bounding box maximum (DX8 Objectdata)
Get Bounding box minimun (DX8 Objectdata)

тут уж и руками можно построить такую матрицу :)

пс: а по поводу Command New Interface я всётаки был не прав, сразу не заметил что у него фиксированое количество чаилдов в зависимости от типа команды