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

Quest3D => База исходников (cgr/igr) => Тема начата: →|๖ۣۜDen|← от 04 Апреля 2010, 14:30:39



Название: исходник, для выделения объектов.
Отправлено: →|๖ۣۜDen|← от 04 Апреля 2010, 14:30:39
На данном этапе реализована обычная область выделения (прямоугольник) ۜQ 4.3
Немаловажный вопрос: а, собсно, как выделять? В 3D max реализовано два способа выделения: по первому пересечению с выделяемой областью и с полным выделением объектов, входящих в область выделения.


Название: Re: исходник, для выделения объектов.
Отправлено: Ruslan от 04 Апреля 2010, 14:46:53
Ден привет!
у тебя на данном этапе, рамка выделения в мировых координатах, будет ли режим «в экранных»?
по поводу вопроса, лучше, конечно же, если будет возможность и так и так, но в большинстве случаев, на мой взгляд, достаточно первого варианта.


Название: Re: исходник, для выделения объектов.
Отправлено: →|๖ۣۜDen|← от 04 Апреля 2010, 14:53:24
Цитировать
будет ли режим «в экранных»?
Почему бы и нет :)
Сейчас пробую намутить само выделение.
Вообщем сделаю несколько версий. Раздолье для всех :D
С Праздником! ;D

Итак, на данном этапе реализовано выделение объектов, исходя из положения pivot pointo'в объектов, без какого-либо пересечения выделяемой области и объектов. Одна математика.
Для простоты нужные параметры засунул в массив, поэтому при добавлении нового объекта следует занести лишь 2 координаты объекта.


Название: Re: исходник, для выделения объектов.
Отправлено: →|๖ۣۜDen|← от 05 Апреля 2010, 23:32:54
Следующая версия: 8) пока что те же мировые координаты, с одним лишь отличием от предыдущей версии: выделение происходит сразу, как только область выделения захватывает объект. Происходит просчёт коллизии баунд бокса, образованного областью выделения, и самих объектов с помощью CollisionBoxCheck.
Теперь достаточно протягивать мышью лишь до первого пересечения выделяемой области и объекта.
зы. дабы случайно не выделить объекты, проводя операции с нажатием на кнопку мыши, выделение теперь производится комбинацией LCtrl+ лкм.


Название: Re: исходник, для выделения объектов.
Отправлено: →|๖ۣۜDen|← от 08 Апреля 2010, 23:21:05
Обычная область выделения в экранных координатах.
Существует некоторый квестобаг, при котором, будучи в камере - одна матрица просмотра, а в камере редактора - другая, всвязи с этим, некоторые расхождения в считывании координат мыши, вернее проблемы в самих матрицах, не пойму почему они различаются..но это не глобальная проблема, в конечном счёте на выходе будет скомпилированные файл, который не будет знать, что такое камера редактора :P
Чтобы не было страшно, подогнал "выделение" под размер и под обычную камеру, и под редакторовскую. Смена режимов пробелом.


Название: Re: исходник, для выделения объектов.
Отправлено: →|๖ۣۜDen|← от 09 Апреля 2010, 20:12:47
Полноценный селекш объектов, по их пивотам в экранных координатах.
Теперь умеем выделять объекты по центру объекта ;)


Название: Re: исходник, для выделения объектов.
Отправлено: Ruslan от 09 Апреля 2010, 22:29:22
то что надо!  ;)


Название: Re: исходник, для выделения объектов.
Отправлено: →|๖ۣۜDen|← от 09 Апреля 2010, 22:50:57
Ага, осталось допереть, как жэ это сделать по первому касанию. По поводу CollisionBoxCheck пока мыслей нет.

Появились некоторые мысли относительно такого интересного величинного оператора как Check AABB visible: подсоединяется матрица-потомок 3д объекта, которая служит проверкой - является ли объект видимым для текущей камеры (будь то редакторова или обычная), - и выдаётся соответсвенно 0/1.
Вот здесь вся проблема - для текущей камеры.
Имхо, если бы было возможно проверять видимость для определённой камеры, которая не выбрана в качестве основной, то можно было бы соорудить нехитрую схему (см. скрин):
Суть в том, чтобы создать целевую камеру, у которой центр будет совпадать с центром основной камеры просмотра(1), а её цель находится в центре выдеяемой области(2).
Мы имеем дли́ны выделяемой области => по некоторой формуле можно будет получить размер окна просмотра целевой камеры.
Таким образом мы проверяем видимость объекта по целевой камере, а следовательно и по области выделения.
Главный вопрос - возможно ли проводить проверку ААББ для произвольной камеры ???