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

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



Название: AABB
Отправлено: Sqwer от 29 Сентября 2009, 15: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, 19:02:50
тишина... хорошо, поставим вопрос менее конкретно:

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

при том, что всё таки кол-во предметов огромно, нужна реализация , которая меньше всего проводится с участием "РУК". Хочу кнопку "сделать красиво и быстро". ;)


Название: Re: AABB
Отправлено: Cludz от 30 Сентября 2009, 10:02:06
для успешности проекта нужно максимально упрощять все вычесления ::)


Название: Re: AABB
Отправлено: Sqwer от 30 Сентября 2009, 14:58:29
Cludz Не во всех случаях, главное надо учитывать специфику пректа и компутерной архитектуры.

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

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


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


Название: Re: AABB
Отправлено: DimiS от 30 Сентября 2009, 15:09:54
Проверил работу канала Command New Interface на выполнение команды "получить  ААББ "  - результат не утешительный.

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

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


Название: Re: AABB
Отправлено: Sqwer от 30 Сентября 2009, 15:17:20
копал я долго, всё зависимости находил...

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

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

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

Собственно придумал реализацию , но всётаки хотелось найти уже готовый метод.


Название: Re: AABB
Отправлено: DimiS от 30 Сентября 2009, 20:24:08
Только что заметил у VectorOperator новые операторы:
Get Bounding box maximum (DX8 Objectdata)
Get Bounding box minimun (DX8 Objectdata)

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

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