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

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







guest3d
Quest3D - Русскоязычное сообщество > Quest3D > Программирование > Конструктор на Quest3D
Конструктор на Quest3D
(Прочитано 17738 раз)
  [1] 2
Печать
Erath | ** | Пользователь | Сообщений: 99 | « 04 Октября 2008, 18:59:14 »
Конструктор на Quest3D |
0
У кого-нибудь есть идеи или предложения по поводу того как реализовать систему соединения отдельных объектов в один? К примеру, как это сделано в играх серии Lego. Я просто хочу сделать что-то типо конструктора.
« Последнее редактирование: 05 Октября 2008, 16:43:59 от Erath »
BiBiKa | *** | Постоялец | Сообщений: 156 | «Ответ #1 05 Октября 2008, 18:42:31 »
Re: Конструктор на Quest3D |
1
В каком смысле объединения объектов один???
Erath | ** | Пользователь | Сообщений: 99 | «Ответ #2 05 Октября 2008, 19:44:49 »
Re: Конструктор на Quest3D |
2
В смысле соединения из частей, отдельных деталей, что б в результате получалась готовая модель.
BiBiKa | *** | Постоялец | Сообщений: 156 | «Ответ #3 05 Октября 2008, 20:03:55 »
Re: Конструктор на Quest3D |
3
Дак попробуй соединять объекты с помощью ярлыков их Motion! Т. е. если ты хочешь что бы у тебя к кубику привязался ещё кубик, то сделай ярлик Motion  первого кубика и привяжи его ко второму кубику Motion!! А что бы это происходило с помощью кнопок попробуй сделать привязку на тру и фалсе, т.е. када кнопка не зажата то значение ложное ни ченго не происходит! А када кнопка нажать то тру и обекты связываются!! Я думаю так!!
Erath | ** | Пользователь | Сообщений: 99 | «Ответ #4 05 Октября 2008, 22:12:26 »
Re: Конструктор на Quest3D |
4
Хм. Любопытный вариант. Завтра попробую. Спасибо, теперь есть от чего оттолкнуться. Только надо наверно к кубикам приделывать еще и коллизии или физику, иначе они будут перекрываться.
BiBiKa | *** | Постоялец | Сообщений: 156 | «Ответ #5 05 Октября 2008, 22:36:45 »
Re: Конструктор на Quest3D |
5
Тока связываться они будут в любом месте!! Т.е. если у тебя кубик стоит в (3 метрах) от другова и нажать кнопку то 1 привяжиться к другому на том же расстоянии!! Если ты хочешь чтобы один кубик привязался к другому в нужном месте, то над этим надо подумать!!!Я так понимаю, что из нескольких деталей нужно собрать что то!!
Viik | **** | Старожил | Сообщений: 302 | «Ответ #6 07 Октября 2008, 13:34:39 »
Re: Конструктор на Quest3D |
6
Можно заиспользовать Parent Matrix Motion ченела. Когда цепляеш Motion ченел к Parent Matrix чаилда другого Motion ченела то 2-й обект будет отрисовываться относительно первого, тоесть любые скейлы, движения, повороты будут отсчитываться от пивот поинта парент обекта. Таким образом если правильно в максе раскидать пивоты то обекты можно будет складываться друг с другом. Можно даже анимировать, по дефолту цеплять единичную матрицу и потом плавно интерполировать ее с матрицей какого-то парент объекта.
Erath | ** | Пользователь | Сообщений: 99 | «Ответ #7 07 Октября 2008, 20:51:32 »
Re: Конструктор на Quest3D |
7
Хм, огромное спасибо, Viik. Не ожидал такого полного ответа:) Осталось тепреь только попробовать этот вариант реализовать.
Erath | ** | Пользователь | Сообщений: 99 | «Ответ #8 04 Ноября 2008, 23:41:52 »
Re: Конструктор на Quest3D |
8
Еще раз всем спасибо за предложеные варианты, но мне кажется меня немного не поняли, т.к. я не приводил подходящего примера. Вот, к примеру, игра Spore (если играл кто), очень любопытно было бы узнать по какому принципу там соединяются отдельные части существ, ну, или опять же, Lego Digital Designer (в нее наверно игралось меньше народу:), но все равно система интересная). Собственно вот. Интересно ваше мнение, так как сам просто не представляю как это можно сделать.
anval | *** | Постоялец | Сообщений: 148 | «Ответ #9 05 Ноября 2008, 13:18:05 »
Re: Конструктор на Quest3D |
9
Можно ,наверное,сделать по принципу фильтрации xml файла.Т.е.все возможные позиции забиваются в xml и с помощью SAx parser(вродебы XML dom глючит в 412)выковыривать их оттуда:).
Erath | ** | Пользователь | Сообщений: 99 | «Ответ #10 05 Ноября 2008, 20:53:21 »
Re: Конструктор на Quest3D |
10
Хм, а можно поподробней? И у меня еще несколько вопросов есть: а сколько можно задать pivot point'ов для одного объекта? Один или более? И нужны ли они вообще в подобной задаче?
anval | *** | Постоялец | Сообщений: 148 | «Ответ #11 05 Ноября 2008, 21:49:34 »
Re: Конструктор на Quest3D |
11
Я это только предположил.SAX parser я использовал для другого - загрузки текстур и GUI сразу и по выбору.Пример есть в examples/xml.Но опять же с использованием ОО.
Erath | ** | Пользователь | Сообщений: 99 | «Ответ #12 09 Ноября 2008, 16:22:43 »
Re: Конструктор на Quest3D |
12
Viik, а можно по-подробнее насчет интерполяции матриц и сложения объектов через пивоты. Пивот вроде только один можно задать, а если у меня есть объект, к которому можно присоединить несколько объектов?
На gamedev.ru мне предложили сделать следующее:
"думаю, что при построении достаточно определять координаты пересечения мыши и меша, на который хочется прилепить лапу, голову, ногу..." и еще
"Есть модель части тела, к ней заданы некие "точки крепления" - локальные системы координат, в которых она крепится к другим частям. Какая-то часть - базовая (скажем, нижняя часть туловища, как соответствующая центру тяжести), она располагается просто так (по общему положению объекта). Далее вставляются те части, которые крепятся непосредственно к ней - с примерением преобразований, так, чтобы точки их крепления совпали. Далее вставляются части, которые крепятся непосредственно к предыдущим частям... и т. д.

Скажем, есть туловище, рука и ладонь. У туловища точки крепления для, предположительно, рук - A и B (задаются соотв. матрицами). У руки - точки крепления С (предположительно, к туловищу) и Д (предположительно, к ладони). У ладони - Е (предположительно, к точке Д руки). Кроме моделей и точек крепления, задана стратегия: базовая часть - туловище, рука крепится к туловищу за С=Д, ладонь крепится в руке за Д=Е.

Туловище размещается, скажем, без преобразований (матрица I). Далее - рука: её матрица суть inv (С)*В (чтобы совместить С с В). Далее - конец руки. Если бы рука была бы базовой, то матрица конца была бы inv (Е)*Д. Но, поскольку рука уже трансформирована, то будет inv (E)*(Д*inv (C)*B). (Пишу на скорую руку, так что мог где-то ошибиться в порядке следования матриц, но общий принцип понятен).

В принципе, чтобы задавать и рисовать составную модель (оружие там в руках и т. д.), этого уже достаточно. Но ради эстетства может потребоваться, чтобы меши моделек-компонент были не по отдельности, а соединялись в местах крепления. Это придётся решить каким-нибудь отдельным бубном. Скажем, у модели пометить некоторые вершины, как "открытые", и приписать к одной из точек крепления, а при получении результирующей модели динамически достроить меш, который соединяет "открытые" вершины прикрепляющего конца с "открытыми" прикрепляемого."

Вот Улыбающийся я вот сижу и думаю, как это сделать и вообще можно ли такое сделать?Улыбающийся
Viik | **** | Старожил | Сообщений: 302 | «Ответ #13 11 Ноября 2008, 10:40:09 »
Re: Конструктор на Quest3D |
13
ВОт пример, все строиться на парентах моушена. Запусти и нажимай 1, 2, 3.

На таком принципе создаеш сет пивотов для объектов и строиш логику подключения. Можно использовать Finite State Machine что организовать обработку переключений пивотов в одном месте. Лучше конечно все это постоить с помощью ОО.
* LegoPivots.rar (20.2 Кб - загружено 749 раз.)
« Последнее редактирование: 11 Ноября 2008, 10:48:37 от Viik »
Erath | ** | Пользователь | Сообщений: 99 | «Ответ #14 11 Ноября 2008, 16:50:47 »
Re: Конструктор на Quest3D |
14
Во, огромное спасибо Viik! Я че-т просто думал на счет пивотов в 3ds max'e, а в квесте я так понял можно задать их сколько угодно. У объектов-пустышек тоже ведь есть свои пивоты? Хм, че-т подумал сейчас про 3ds max, так там же тоже есть объекты-пустышки и если их правильно расставить по модели, то можно наверно будет через пивоты и объединять все детали. Если я правильно понял, то возможно скоро сделаю готовую сцену и покажу. Вдруг, кому понадобиться. Остается вопрос, правильно ли я понял? Улыбающийся
 
  [1] 2
Печать
 
Quest3D - Русскоязычное сообщество > Quest3D > Программирование > Конструктор на Quest3D
Перейти в: