Название: LUA Динамическая подгрузка 1000 разных объектов Отправлено: fanil от 07 Октября 2010, 15:25:03 Приветствую!
Перерыл весь форум, но ничего похожего не нашел нигде. Подскажите как лучше реализовать динамическую цену? Задачи цены: 1. Получение списка всех 3D объектов и их свойства из mySQL(Тут все ясно) 2. Исходя из данных загрузка объектов с сервера и построение исходя из свойств(позиция размер). !Сложности возникли именно с тем, что для каждого загружаемого объекта необходим контейнер. Название: Re: LUA Динамическая подгрузка 1000 разных объектов Отправлено: Deepl от 10 Октября 2010, 10:37:16 Что имеется ввиду под контейнером?
Название: Re: LUA Динамическая подгрузка 1000 разных объектов Отправлено: fanil от 10 Октября 2010, 10:40:16 Контейнер = Канал. А динамически создавать каналы не известно как. Только я так понял гонять в цикле?
Название: Re: LUA Динамическая подгрузка 1000 разных объектов Отправлено: Ruslan от 10 Октября 2010, 13:30:03 Без LUA, но смысл тот же..
http://guest3d.wohlnet.ru/forum/index.php?topic=1468.0 Здесь, готовый LUA Dynamic Web Loader, для того,что бы его скачать, нужна регистрация: http://quest.ovos.at/browse/detail/53 Название: Re: LUA Динамическая подгрузка 1000 разных объектов Отправлено: Deepl от 28 Октября 2010, 11:07:09 Воспользуйтесь массивами или ОО системой, куда будете складывать данные из базы.
Кстати, в каком виде в базе хранится такие вещи как VertexData и т.д? Или в базе просто ссылка на файл? Тогда вам нужен ColladaImport ) Название: Re: LUA Динамическая подгрузка 1000 разных объектов Отправлено: fanil от 28 Октября 2010, 11:20:30 Столкнулся проблемой. в массивы не сохраняется кириллица. после записи преобразуется в ?? ? ??? ??. Может есть решение?
Ссылка на файл только файл будет храниться на сервере. и текстурки тоже. и + нужно некий класс приписывать ко всем загружаемым файлам с параметрами из базы. чтобы на сцене они отрисовывались исходя из полученных данных(позиция скайл) ибыли активными т.е. прогонять через collisionRayCheck/ и мне почему то кажется, что в квесте такой функционал не реализовать. Название: Re: LUA Динамическая подгрузка 1000 разных объектов Отправлено: Ruslan от 28 Октября 2010, 11:28:28 http://guest3d.wohlnet.ru/forum/index.php?topic=1468.0
не подошел загрузчик? ;) Название: Re: LUA Динамическая подгрузка 1000 разных объектов Отправлено: Deepl от 28 Октября 2010, 11:29:58 1. Загрузка объекта из базы - не знаю, не пробовал. Но должно работать.
2. То что загружается - это группа, или то, что можно преобразовать в группу - работает ColladaImport. Просто в нужные параметры вписываются не данные из файла модели(там ведь они тоже есть), а данные из запроса к базе. 3. По поводу активности - мне кажется, что тебе может помочь следующая тема: http://guest3d.wohlnet.ru/forum/index.php?topic=1577.0 Принцип-то тот же. Квест нереально мощный. Мне иногда кажется, что все упирается в соображалку. Название: Re: LUA Динамическая подгрузка 1000 разных объектов Отправлено: fanil от 28 Октября 2010, 11:39:16 to Ruslan - > Не открылся файл у меня 4.0 может поэтому и проект начал в нем(
Deepl - > Спасибо покапаю в той стороне. если интересно могу отписываться, что получается) Проект виртуальный музей. Хочу чтобы все объекты хранились на сервере и всегда были свежие сцены. 3дху всю уже сделал осталось разобраться с импортом) конечно можно было бы и сделать все просто закинув в сцену, но так не интересно:) раньше работал с directX/ Название: Re: LUA Динамическая подгрузка 1000 разных объектов Отправлено: Deepl от 28 Октября 2010, 21:37:55 Да, интересно. Сейчас сам работаю над программой для формирования помещений. Так что будем делиться опытом )
Название: Re: LUA Динамическая подгрузка 1000 разных объектов Отправлено: fanil от 29 Октября 2010, 08:49:21 у меня допустим есть ссылка на .cgr файл в котором только 3DObjectData. как мне с помощью ОО добавить это в динамический объект в котором уже матрица и материалы? аналогично по текстуре.
и походу все накрывается медным тазом из за того что Text не понимает значения в Кирилице и опции юникода я не нашел в OO хотя для обычного текст есть галочка. Название: Re: LUA Динамическая подгрузка 1000 разных объектов Отправлено: fanil от 29 Октября 2010, 16:52:28 Ура!. Посидев немного почитав мануалы по ОО родил наконец то что хотел. Что может сцена:
- динамическая загрузка файлов .cgr в сцену (только 3DObjectData) - отрисовка их исходя из данных(все матрицы движения размеров задаем) - определение каждого файла мышкой, вывод информации на экран о текущем объекте Что планирую делать дальше: - разобраться с кириллицей. некорректное отображение - получать данные с MSQL сервера и структурировать их Название: Re: LUA Динамическая подгрузка 1000 разных объектов Отправлено: fanil от 06 Ноября 2010, 18:14:47 Есть ряд вопросов по продолжению этой темы. помогите гуру!!:
Я с помощью ОО Class Instances описал 5 объектов. одним из параметров в нем это 3DObjectData, ссылка на файл который надо загрузить .cgr 1. При прохождении цикла LUA Script грузит 3DObjectData полученную из пришедшего параметра в виде пути к файлу. В Канал "object": local nameChannel = channel.GetChild(0) local someText = nameChannel:GetText() local idChannel = channel.GetChild(1) local idValue = idChannel:GetValue() q.RemoveChannelGroup("object", idValue) q.LoadChannelGroupDQ(someText, "object", idValue, "model") проблема в том, что после первой обработки LUA, грузятся данные(например из файла box.cgr) и идут в заранее созданный канал "object" при второй обработке уже создан этот объект и отображается тот же самый box.cgr, а параметр пришел sphere.cgr!! Вопрос: как решить эту проблему? и грузить в сцену динамчески например хоть сколько каналов а не 1 object? 2. Вопрос кирилицы. Кто нибудь в квесте решил проблему с хранением в массивах или классах текста в юникоде? если есть галочка в обычном канале текста "Юникод" то должно же быть где то и решение для массивов и классов? 3. Как можно динамически заносить данные в ОО Class Instances? например из массива туда все? в LUA описана только работа с массивами. 4. И как записывать какую нибудь глобальную переменную в ОО? и читать ее после? ... Название: Re: LUA Динамическая подгрузка 1000 разных объектов Отправлено: DimiS от 08 Ноября 2010, 12:57:25 1 я так понял ты пробуешь использовать индекс в ченелгруппе, я не пробовал так делать, но у меня прекрасно работает если создавать разные ченелгруппы для разных цгр файлов. Ещё я посмотрел твой предыдущий пост и пример оттуда, ты там вызываешь обжект дату, просто создав ссылку на паблик ченел и приконектив её к сюрфейсу. Я понял, что мысль в том чтобы сделать эту ссылку рабочей для динамически подгруженного туда паблик ченела, но скорее всего индекс ченелгруппы(который ты меняешь для каждого цгр файла) не учитывается, или прописан там намертво и динамически его не поменять. Могу посоветовать грузить каждый цгр в один и тот же ченелгрупп по 0 индексу, и потом просто копировать обжект дату в отдельное поле своего объекта. А после этого грузить следующий, и т.д. Таким образом проинициализировав обжект даты всем своим объектам потом рендерь их используя эти обжект даты. Копирование обжект даты можно сделать с помощью ченела CommandNewInterface. Но это всё как то слишком сложно, обычно достаточно возможности вызвать 3дОбжект из подгруженной цгр чтоб он сам себя полностью нарисовал и всё.
2 для хранения в текстовом поле интерфейса юникода, создай поле таким образом Add Member -> Channel -> Text , потом в свойствах этого ченела поставь галочку юникод 3 вообще не очень понял вопрос, мне кажется ты всё связанное с луа считаешь динамическим, и соответственно всё не связанное с луа не динамическим)) 4 тоже не понял, так же как и обычную переменную Название: Re: LUA Динамическая подгрузка 1000 разных объектов Отправлено: fanil от 09 Ноября 2010, 10:38:53 Цитировать Могу посоветовать грузить каждый цгр в один и тот же ченелгрупп по 0 индексу, и потом просто копировать обжект дату в отдельное поле своего объекта. А после этого грузить следующий, и т.д Не совсем понял как это реализовать Цитировать обычно достаточно возможности вызвать 3дОбжект из подгруженной цгр чтоб он сам себя полностью нарисовал и всё. если я так сделаю то как я буду менять свойства у объекта если нет к ним доступа, размер, позиция, текстура. ты говоришь создавать каналы куда грузить изначально, а если я не знаю сколько объектов заранее? Название: Re: LUA Динамическая подгрузка 1000 разных объектов Отправлено: DimiS от 09 Ноября 2010, 21:58:43 Цитировать Могу посоветовать грузить каждый цгр в один и тот же ченелгрупп по 0 индексу, и потом просто копировать обжект дату в отдельное поле своего объекта. А после этого грузить следующий, и т.д Не совсем понял как это реализовать ты подгружаешь цгр, в которой объявлен такой паблик ченел с таким именем и при подгрузке называешь ченнелгруппу именно так чтоб заработала твоя линка (и отот второй параметр ставишь 0, я ниразу не видел чтоб кто то когда то использовал там какое то другое значение) используя ченнел Command New Interface -> Misc -> Add object data копируешь обжект дату из твоей линки в нужное тебе место(поле класса который будет создаваться динамически) удаляешь ченелгруппу повторяешь со следующей цгр (я не уверен что это всё в итоге заработает, но это то что я хотел предложить в качестве усовершенствования твоего метода) Цитировать обычно достаточно возможности вызвать 3дОбжект из подгруженной цгр чтоб он сам себя полностью нарисовал и всё. если я так сделаю то как я буду менять свойства у объекта если нет к ним доступа, размер, позиция, текстура. вот это другой метод, которым пользуются обычно если тебе например надо управлять позицией объекта из цгр, ты в какой то своей статической ченелгруппе объявляешь паблик ченел типа матрица, называешь его например CgrObjectMotion. В той цгр, которую ты будешь динамически подгружать, подключаешь этот паблик ченел к моушену 3дОбжекта. Когда рендериш каждую из подгруженных и подготовленных таким образом цгр перед вызовом 3дОбжекта меняешь значение CgrObjectMotion на то которое должно быть у этого 3дОбжекта ты говоришь создавать каналы куда грузить изначально, а если я не знаю сколько объектов заранее? я не очень понял что ты тут спрашивал, но если ты о том что для каждого объекта нужно создавать отдельную ченелгруппу, то это не проблема, им надо просто давать разные имена, по имени цгр файла например Название: Re: LUA Динамическая подгрузка 1000 разных объектов Отправлено: fanil от 11 Ноября 2010, 14:12:08 А можно как то на реальном примере показать как динамически создавать каналы? Теорию я понял с практикой туговато.
Название: Re: LUA Динамическая подгрузка 1000 разных объектов Отправлено: DimiS от 11 Ноября 2010, 17:10:50 какие каналы? чёто я тебя опять не очень понимаю
Название: Re: LUA Динамическая подгрузка 1000 разных объектов Отправлено: fanil от 11 Ноября 2010, 17:20:58 объекты=каналы. в моем понимании) ChannelCaller/ при мпорте в цене появляется объект не сохраненный типа. вот я про это и говорю
Название: Re: LUA Динамическая подгрузка 1000 разных объектов Отправлено: DimiS от 12 Ноября 2010, 12:34:52 Описываешь ОО класс, у которого есть поле 3DObjectData (наверняка и какие то другие поля на твоё усмотрение), создаёшь какой то OO Class Instances List, в котором будешь хранить экземпляры этого класа, юзаешь OO InterfaceCommand -> Add new class to container, получаешь при этом Result Index, с помощью этого индекса и ченела OO Instance Ref Item From Container можешь обращаться к только что созданному экземпляру класса(и его полям ;) )
думаю это то о чём ты спрашивал? |