22 Сентября 2024, 19:32:35
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.

Навигация по форуму







guest3d
Quest3D - Русскоязычное сообщество > Quest3D > Логика > AABB
AABB
(Прочитано 10032 раз)
  [1]
Печать
Sqwer | ***** | Ветеран | Сообщений: 540 | « 29 Сентября 2009, 15:54:52 »
AABB |
0
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 }

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

Как происходит генерация этого ААББ в Квесте ?
« Последнее редактирование: 29 Сентября 2009, 16:30:01 от Sqwer »
Sqwer | ***** | Ветеран | Сообщений: 540 | «Ответ #1 29 Сентября 2009, 19:02:50 »
Re: AABB |
1
тишина... хорошо, поставим вопрос менее конкретно:

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

при том, что всё таки кол-во предметов огромно, нужна реализация , которая меньше всего проводится с участием "РУК". Хочу кнопку "сделать красиво и быстро". Подмигивающий
Cludz | ** | Пользователь | Сообщений: 63 | «Ответ #2 30 Сентября 2009, 10:02:06 »
Re: AABB |
2
для успешности проекта нужно максимально упрощять все вычесления Строит глазки
Sqwer | ***** | Ветеран | Сообщений: 540 | «Ответ #3 30 Сентября 2009, 14:58:29 »
Re: AABB |
3
Cludz Не во всех случаях, главное надо учитывать специфику пректа и компутерной архитектуры.

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

Пример внизу: версия 433 VS6
* AABB get.cgr (53.67 Кб - загружено 762 раз.)

* Безымянный.JPG (26.5 Кб, 373x344 - просмотрено 1532 раз.)
« Последнее редактирование: 30 Сентября 2009, 15:20:23 от Sqwer »
DimiS | **** | Старожил | Сообщений: 284 | «Ответ #4 30 Сентября 2009, 15:00:00 »
Re: AABB |
4
ААВВ -- просто один из методов проверки для фруструм куллинга, не обязательно использовать именно его. В квесте я могу припомнить только два встроенных способа применить фруструм куллинг. Первый -- в пропертях 3D Object поставить галочку и посчитать. Но нам не важно какой метод там используеться ибо мы никак не можем принять в этом участие. Второй появился в версии 4.3 -- Sphere Tree, умеет создавать соответствие между класс инстансом и сферой и выдавать список класс инстансов чья сфера входит во фруструм.
Вот второй случай уже гораздо интереснее нам, мы можем решать какие объекты проверять на куллинг. В ченеле Command New Interface я заметил новую команду Get bounding shpere, правда ещё не знаю как выбирать те самые 4 точки.
Ну а если очень хочеться сделать именно AABB, то можно и самому написать. Хотя может я всё-таки где то, чёто пропустил и есть возможность ещё как то проверять куллинг.
DimiS | **** | Старожил | Сообщений: 284 | «Ответ #5 30 Сентября 2009, 15:09:54 »
Re: AABB |
5
Проверил работу канала Command New Interface на выполнение команды "получить  ААББ "  - результат не утешительный.

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

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

* bounding_box.bmp (421.54 Кб, 433x332 - просмотрено 1550 раз.)
Sqwer | ***** | Ветеран | Сообщений: 540 | «Ответ #6 30 Сентября 2009, 15:17:20 »
Re: AABB |
6
копал я долго, всё зависимости находил...

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

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

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

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

тут уж и руками можно построить такую матрицу Улыбающийся

пс: а по поводу Command New Interface я всётаки был не прав, сразу не заметил что у него фиксированое количество чаилдов в зависимости от типа команды
* AABB get.cgr (58.5 Кб - загружено 759 раз.)
 
  [1]
Печать
 
Quest3D - Русскоязычное сообщество > Quest3D > Логика > AABB
Перейти в: