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

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







guest3d
Quest3D - Русскоязычное сообщество > Quest3D > Логика > автоматизация подключения объектов
автоматизация подключения объектов
(Прочитано 18794 раз)
  [1] 2
Печать
IYV | ** | Пользователь | Сообщений: 77 | « 22 Сентября 2009, 01:14:11 »
автоматизация подключения объектов |
0
ну у CollisionObject в окошке свойств есть флажочек Check if object child update, или я не понял твою ситуацию
Не правильно я ситуацию объяснил,вот скриншот прикрепил,так понятнее будет.В общем есть объект с множеством сюрфейсов и разными(уникальными)3D ObjectData ,объект отзеркален в forloop,на каждый 3D ObjectData нужна коллизия для CollisionRayCheck,что бы можно было изменять шейдерные переменные и менять текстуры у сюрфейсов. Коллизия срабатывает только тогда,когда цепляешь 3D ObjectData к новому сюрфейсу и объекту.Так вот задача состоит в том,что нужно быстро менять 3D ObjectData на другие без утомительной рутинной работы,так как сюрфейсов у объекта должно быть около ста.В 3ds max есть maxscript,рутинные задачи можно выполнять с помощью него,а как это сделать в квесте?   Lua script   не подойдет же? Возможно нужен какой то специально написанный для этой задачи загрузчик? В общем понятия не имею,как это можно сделать?

* Vertex Data.jpg (322.93 Кб, 821x828 - просмотрено 1471 раз.)
DimiS | **** | Старожил | Сообщений: 284 | «Ответ #1 22 Сентября 2009, 02:40:00 »
Re: автоматизация подключения объектов |
1
Я так понимаю тебе нужно вынести повторяющийся код в одну функцию.
Для этого обычно разрабатывается некая структура данных, в которой будет содержаться всё то что может различаться у твоих объектов. В твоем случае это похоже набор из трёх вертекс дат и шейдер(или шейдер у тебя для всех случаев один и тот же?). Далее тебе понадобится способ хранения и перебора по этим структурам. Можно использовать арреи или ОО.
Потом тебе нужно будет переделать проверку на коллизию с мышкой, она должна делаться в цикле с каждой структурой из твоего массива. Точно так же и вызов шейдера. Теперь выполняя циклы с проверкой наведения мышки или с запуском шейдеров тебе не важно сколько структур в массиве. Останется только написать функцию для добавления новой структуры в массив, или, если совсем по модному, даже с подгрузкой всего этого из неких внешних источников.
Всё возможно.
Ruslan | ***** | Ветеран | Сообщений: 664 | «Ответ #2 22 Сентября 2009, 07:55:58 »
Re: автоматизация подключения объектов |
2
Можно взять готовое решение "лоадера" , осталось сделать из него менеджер ресурсов:
http://quest.ovos.at/browse/detail/22

p.s. У меня получилось только подгрузить cgr в которой хранится 3D ObjectData. А вот запихнуть эту 3D ObjectData в массив, у меня не получилось, как только я не пробовал и через Channel Buffer.
Если знаете как, подскажите пожалуйста.

Quest3D 4.3 RC3

* Array_3D-ObjectData.jpg (113.77 Кб, 1024x690 - просмотрено 1450 раз.)
* Array_3D ObjectData.rar (30.28 Кб - загружено 638 раз.)
« Последнее редактирование: 22 Сентября 2009, 13:38:15 от Ruslan »
barmadjar | *** | Постоялец | Сообщений: 142 | «Ответ #3 22 Сентября 2009, 12:44:12 »
Re: автоматизация подключения объектов |
3
p.s. У меня получилось только подгрузить cgr в которой хранится 3D ObjectData. А вот запихнуть эту 3D ObjectData в массив, у меня не получилось, как только я не пробовал и через Channel Buffer.
Если знаете как, подскажите пожалуйста.


Я думаю тут тебе стоит поступить так. В подгружаемом файле необходимый для вызова канал нужно сделать публичным (он станет красного цвета). А в твоем основном файле тебе этот канал надо заносить в массив, правильно я понял? Если так, то в рабочем твоем файле из списка каналов вытаскиваешь канал 3d ObjectData (в данном случае), делаешь его как Public Caller (Convert to Public Call Channel в контекстном меню, он станет синего цвета) и назначаешь ему в левой половине диалогового окна Properties группу каналов, из которой нужно взять необходимый канал (в данном случае под группой каналов имеется ввиду подгружаемый cgr файл) и в правом поле выбрать нужный тебе канал.
Тут есть такой нюанс. Делать это надо в состоянии когда необходимый cgr файл подгружен. Тогда остается только выбрать из списков. Иначе все вручную придется вводить, а это запарнее.
Ну и соответственно надо подсоединить этот Public Caller туда, куда нужно.
Если что-то не понятно, спрашивай.
« Последнее редактирование: 22 Сентября 2009, 12:50:52 от barmadjar »
barmadjar | *** | Постоялец | Сообщений: 142 | «Ответ #4 22 Сентября 2009, 14:40:06 »
Re: автоматизация подключения объектов |
4
Ruslan
Там походу какой-то косяк с массивом - в него ничего не заносится. Ввел новый (_NEW). Туда все заносится. Правда, почему-то без названия канала, а только тип его.
Кстати, через буффер тоже можно, там LoadBufferToChannel надо делать в пустой канал 3D object data.
* Array_3D ObjectData_NEW.rar (32.85 Кб - загружено 623 раз.)
Ruslan | ***** | Ветеран | Сообщений: 664 | «Ответ #5 22 Сентября 2009, 14:57:27 »
Re: автоматизация подключения объектов |
5
barmadjar
Спасибо за помощь, только у меня не рендерятся объекты, не пойму в чем дело.  Плачущий
DimiS | **** | Старожил | Сообщений: 284 | «Ответ #6 22 Сентября 2009, 15:05:56 »
Re: автоматизация подключения объектов |
6
да там действительно косяк с первым полем
сделал два варианта как можно всё это подгрузить
* Array_3D ObjectData.zip (71.53 Кб - загружено 647 раз.)
Ruslan | ***** | Ветеран | Сообщений: 664 | «Ответ #7 22 Сентября 2009, 15:09:29 »
Re: автоматизация подключения объектов |
7
Спасибо Вам огромное!!!
 Улыбающийся
barmadjar | *** | Постоялец | Сообщений: 142 | «Ответ #8 22 Сентября 2009, 15:28:23 »
Re: автоматизация подключения объектов |
8
A у меня с 3d Object data не получилось рендерить, зато с Surface получилось - рендерится все
* Array_3D ObjectData_NEW.rar (39.79 Кб - загружено 643 раз.)
« Последнее редактирование: 22 Сентября 2009, 15:33:16 от barmadjar »
Ruslan | ***** | Ветеран | Сообщений: 664 | «Ответ #9 22 Сентября 2009, 16:28:23 »
Re: автоматизация подключения объектов |
9
еще возник вопросик:
а можно ли с помощью какого ни будь канала, аккумулировать все 3d Object data из массива в один меш, что бы вызвать его на рендер за один DIP ?
или для этого придется писать свой канал с помощью SDK ?
« Последнее редактирование: 22 Сентября 2009, 16:33:27 от Ruslan »
DimiS | **** | Старожил | Сообщений: 284 | «Ответ #10 23 Сентября 2009, 12:14:10 »
Re: автоматизация подключения объектов |
10
у ченела Command есть команда Collapse, вот она то по идее и делает то что тебе нужно. Но как она работает я совершенно не в курсе, сам ею никогда не пользовался и не видел как её применяют.
Ruslan | ***** | Ветеран | Сообщений: 664 | «Ответ #11 23 Сентября 2009, 12:15:45 »
Re: автоматизация подключения объектов |
11
DimiS
Спасибо! буду разбираться.
Ruslan | ***** | Ветеран | Сообщений: 664 | «Ответ #12 23 Сентября 2009, 12:44:51 »
Re: автоматизация подключения объектов |
12
Вот эта команда:
Add object data (dest objectdata, source objectdata)
DimiS Еще раз, огромное тебе спасибо!
IYV | ** | Пользователь | Сообщений: 77 | «Ответ #13 23 Сентября 2009, 13:40:49 »
Re: автоматизация подключения объектов |
13
Спасибо всем за советы,но пока они для меня не выполнимы.Понял,что без ОО тут не обойдешся и начал проходить туторы из хелпа.Вроде что то проясняется по тихоньку.Наверно мне нужно будет замену 3d objectdata реализовывать с помощью импортера ОО коллада(скрин),во всяком случае  все 3d objectdata появились,а как с ними оперировать дальше нужно будет разбираться.

* import.jpg (328.8 Кб, 1127x828 - просмотрено 1425 раз.)
DimiS | **** | Старожил | Сообщений: 284 | «Ответ #14 23 Сентября 2009, 13:53:21 »
Re: автоматизация подключения объектов |
14
Вот эта команда:
Add object data (dest objectdata, source objectdata)
DimiS Еще раз, огромное тебе спасибо!

да лан, я даже наводку не правильную дал видимо Веселый
у меня в 4.2.2 кстати нету такой команды

IYV, это ты правильно решил. Тем более что в 4.3 обещают что-то изменить с коллада импортом и сделать более юзабельным. Я в своём двиге тоже скорее всего перейду на использование ОО коллады после этого.
 
  [1] 2
Печать
 
Quest3D - Русскоязычное сообщество > Quest3D > Логика > автоматизация подключения объектов
Перейти в: