20 Мая 2024, 08:43:03
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.

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







guest3d
Quest3D - Русскоязычное сообщество > Quest3D > Программирование > LUA Динамическая подгрузка 1000 разных объектов
LUA Динамическая подгрузка 1000 разных объектов
(Прочитано 15989 раз)
  [1] 2
Печать
fanil | * | Новичок | Сообщений: 15 | « 07 Октября 2010, 15:25:03 »
LUA Динамическая подгрузка 1000 разных объектов |
0
Приветствую!

Перерыл весь форум, но ничего похожего не нашел нигде.

Подскажите как лучше реализовать динамическую цену? Задачи цены:

1. Получение списка всех 3D объектов и их свойства из mySQL(Тут все ясно)

2. Исходя из данных загрузка объектов с сервера и построение исходя из свойств(позиция размер).

!Сложности возникли именно с тем, что для каждого загружаемого объекта необходим контейнер.
Deepl | * | Новичок | Сообщений: 18 | «Ответ #1 10 Октября 2010, 10:37:16 »
Re: LUA Динамическая подгрузка 1000 разных объектов |
1
Что имеется ввиду под контейнером?
fanil | * | Новичок | Сообщений: 15 | «Ответ #2 10 Октября 2010, 10:40:16 »
Re: LUA Динамическая подгрузка 1000 разных объектов |
2
Контейнер = Канал. А динамически создавать каналы не известно как. Только я так понял гонять в цикле?
Ruslan | ***** | Ветеран | Сообщений: 664 | «Ответ #3 10 Октября 2010, 13:30:03 »
Re: LUA Динамическая подгрузка 1000 разных объектов |
3
Без LUA, но смысл тот же..
http://guest3d.wohlnet.ru/forum/index.php?topic=1468.0
Здесь, готовый LUA Dynamic Web Loader, для того,что бы его скачать, нужна регистрация:
http://quest.ovos.at/browse/detail/53
« Последнее редактирование: 10 Октября 2010, 13:37:35 от Ruslan »
Deepl | * | Новичок | Сообщений: 18 | «Ответ #4 28 Октября 2010, 11:07:09 »
Re: LUA Динамическая подгрузка 1000 разных объектов |
4
Воспользуйтесь массивами или ОО системой, куда будете складывать данные из базы.

Кстати, в каком виде в базе хранится такие вещи как VertexData и т.д? Или в базе просто ссылка на файл? Тогда вам нужен ColladaImport )
fanil | * | Новичок | Сообщений: 15 | «Ответ #5 28 Октября 2010, 11:20:30 »
Re: LUA Динамическая подгрузка 1000 разных объектов |
5
Столкнулся проблемой. в массивы не сохраняется кириллица. после записи преобразуется в ?? ? Непонимающий ??. Может есть решение?

Ссылка на файл только файл будет храниться на сервере. и текстурки тоже. и + нужно некий класс приписывать ко всем загружаемым файлам с параметрами из базы. чтобы на сцене они отрисовывались исходя из полученных данных(позиция скайл) ибыли активными т.е. прогонять через collisionRayCheck/ и мне почему то кажется, что в квесте такой функционал не реализовать.
Ruslan | ***** | Ветеран | Сообщений: 664 | «Ответ #6 28 Октября 2010, 11:28:28 »
Re: LUA Динамическая подгрузка 1000 разных объектов |
6
http://guest3d.wohlnet.ru/forum/index.php?topic=1468.0
не подошел загрузчик?  Подмигивающий
Deepl | * | Новичок | Сообщений: 18 | «Ответ #7 28 Октября 2010, 11:29:58 »
Re: LUA Динамическая подгрузка 1000 разных объектов |
7
1. Загрузка объекта из базы - не знаю, не пробовал. Но должно работать.
2. То что загружается - это группа, или то, что можно преобразовать в группу - работает ColladaImport. Просто в нужные параметры вписываются не данные из файла модели(там ведь они тоже есть), а данные из запроса к базе.
3. По поводу активности - мне кажется, что тебе может помочь следующая тема: http://guest3d.wohlnet.ru/forum/index.php?topic=1577.0
Принцип-то тот же.

Квест нереально мощный. Мне иногда кажется, что все упирается в соображалку.
fanil | * | Новичок | Сообщений: 15 | «Ответ #8 28 Октября 2010, 11:39:16 »
Re: LUA Динамическая подгрузка 1000 разных объектов |
8
to Ruslan - > Не открылся файл у меня 4.0 может поэтому и проект начал в нем(

Deepl - > Спасибо покапаю в той стороне. если интересно могу отписываться, что получается)

Проект виртуальный музей. Хочу чтобы все объекты хранились на сервере и всегда были свежие сцены. 3дху всю уже сделал осталось разобраться с импортом) конечно можно было бы и сделать все просто закинув в сцену, но так не интересно:) раньше работал с directX/
Deepl | * | Новичок | Сообщений: 18 | «Ответ #9 28 Октября 2010, 21:37:55 »
Re: LUA Динамическая подгрузка 1000 разных объектов |
9
Да, интересно. Сейчас сам работаю над программой для формирования помещений. Так что будем делиться опытом )
fanil | * | Новичок | Сообщений: 15 | «Ответ #10 29 Октября 2010, 08:49:21 »
Re: LUA Динамическая подгрузка 1000 разных объектов |
10
у меня допустим есть ссылка на .cgr файл в котором только 3DObjectData. как мне с помощью ОО добавить это в динамический объект в котором уже матрица и материалы? аналогично по текстуре.
и походу все накрывается медным тазом из за того что Text не понимает значения в Кирилице и опции юникода я не нашел в OO  хотя для обычного текст есть галочка.
fanil | * | Новичок | Сообщений: 15 | «Ответ #11 29 Октября 2010, 16:52:28 »
Re: LUA Динамическая подгрузка 1000 разных объектов |
11
Ура!. Посидев немного почитав мануалы по ОО родил наконец то что хотел. Что может сцена:

- динамическая загрузка файлов .cgr в сцену (только 3DObjectData)

- отрисовка их исходя из данных(все матрицы движения размеров задаем)

- определение каждого файла мышкой, вывод информации на экран о текущем объекте

Что планирую делать дальше:
- разобраться с кириллицей. некорректное отображение
- получать данные с MSQL сервера и структурировать их

* on Forum.rar (250.73 Кб - загружено 648 раз.)
fanil | * | Новичок | Сообщений: 15 | «Ответ #12 06 Ноября 2010, 18:14:47 »
Re: LUA Динамическая подгрузка 1000 разных объектов |
12
Есть ряд вопросов по продолжению этой темы. помогите гуру!!:

Я с помощью ОО 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. И как записывать какую нибудь глобальную переменную в ОО? и читать ее после?

...
DimiS | **** | Старожил | Сообщений: 284 | «Ответ #13 08 Ноября 2010, 12:57:25 »
Re: LUA Динамическая подгрузка 1000 разных объектов |
13
1 я так понял ты пробуешь использовать индекс в ченелгруппе, я не пробовал так делать, но у меня прекрасно работает если создавать разные ченелгруппы для разных цгр файлов. Ещё я посмотрел твой предыдущий пост и пример оттуда, ты там вызываешь обжект дату, просто создав ссылку на паблик ченел и приконектив её к сюрфейсу. Я понял, что мысль в том чтобы сделать эту ссылку рабочей для динамически подгруженного туда паблик ченела, но скорее всего индекс ченелгруппы(который ты меняешь для каждого цгр файла) не учитывается, или прописан там намертво и динамически его не поменять. Могу посоветовать грузить каждый цгр в один и тот же ченелгрупп по 0 индексу, и потом просто копировать обжект дату в отдельное поле своего объекта. А после этого грузить следующий, и т.д. Таким образом проинициализировав обжект даты всем своим объектам потом рендерь их используя эти обжект даты. Копирование обжект даты можно сделать с помощью ченела CommandNewInterface. Но это всё как то слишком сложно, обычно достаточно возможности вызвать 3дОбжект из подгруженной цгр чтоб он сам себя полностью нарисовал и всё.

2 для хранения в текстовом поле интерфейса юникода, создай поле таким образом Add Member -> Channel -> Text , потом в свойствах этого ченела поставь галочку юникод

3 вообще не очень понял вопрос, мне кажется ты всё связанное с луа считаешь динамическим, и соответственно всё не связанное с луа не динамическим))

4 тоже не понял, так же как и обычную переменную
fanil | * | Новичок | Сообщений: 15 | «Ответ #14 09 Ноября 2010, 10:38:53 »
Re: LUA Динамическая подгрузка 1000 разных объектов |
14
Цитировать
Могу посоветовать грузить каждый цгр в один и тот же ченелгрупп по 0 индексу, и потом просто копировать обжект дату в отдельное поле своего объекта. А после этого грузить следующий, и т.д

Не совсем понял как это реализовать

Цитировать
обычно достаточно возможности вызвать 3дОбжект из подгруженной цгр чтоб он сам себя полностью нарисовал и всё.

если я так сделаю то как я буду менять свойства у объекта если нет к ним доступа, размер, позиция, текстура.

ты говоришь создавать каналы куда грузить изначально, а если я не знаю сколько объектов заранее?
 
  [1] 2
Печать
 
Quest3D - Русскоязычное сообщество > Quest3D > Программирование > LUA Динамическая подгрузка 1000 разных объектов
Перейти в: