• Добро пожаловать на Quest3D - Русскоязычное сообщество.
 

LUA Динамическая подгрузка 1000 разных объектов

Автор fanil, 07 октября 2010, 16:25:03

« назад - далее »

DimiS

Цитата: fanil от 09 ноября 2010, 10:38:53
ЦитироватьМогу посоветовать грузить каждый цгр в один и тот же ченелгрупп по 0 индексу, и потом просто копировать обжект дату в отдельное поле своего объекта. А после этого грузить следующий, и т.д

Не совсем понял как это реализовать
ну вот у тебя есть линка на паблик ченел с определённым именем из определённой ченелгруппы
ты подгружаешь цгр, в которой объявлен такой паблик ченел с таким именем и при подгрузке называешь ченнелгруппу именно так чтоб заработала твоя линка (и отот второй параметр ставишь 0, я ниразу не видел чтоб кто то когда то использовал там какое то другое значение)
используя ченнел Command New Interface -> Misc -> Add object data копируешь обжект дату из твоей линки в нужное тебе место(поле класса который будет создаваться динамически)
удаляешь ченелгруппу
повторяешь со следующей цгр

(я не уверен что это всё в итоге заработает, но это то что я хотел предложить в качестве усовершенствования твоего метода)

Цитата: fanil от 09 ноября 2010, 10:38:53
Цитировать
обычно достаточно возможности вызвать 3дОбжект из подгруженной цгр чтоб он сам себя полностью нарисовал и всё.

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

вот это другой метод, которым пользуются обычно
если тебе например надо управлять позицией объекта из цгр, ты в какой то своей статической ченелгруппе объявляешь паблик ченел типа матрица, называешь его например CgrObjectMotion. В той цгр, которую ты будешь динамически подгружать, подключаешь этот паблик ченел к моушену 3дОбжекта. Когда рендериш каждую из подгруженных и подготовленных таким образом цгр перед вызовом 3дОбжекта меняешь значение CgrObjectMotion на то которое должно быть у этого 3дОбжекта

Цитата: fanil от 09 ноября 2010, 10:38:53
ты говоришь создавать каналы куда грузить изначально, а если я не знаю сколько объектов заранее?

я не очень понял что ты тут спрашивал, но если ты о том что для каждого объекта нужно создавать отдельную ченелгруппу, то это не проблема, им надо просто давать разные имена, по имени цгр файла например

fanil

А можно как то на реальном примере показать как динамически создавать каналы? Теорию я понял с практикой туговато.

DimiS

какие каналы? чёто я тебя опять не очень понимаю

fanil

объекты=каналы. в моем понимании) ChannelCaller/ при мпорте в цене появляется объект не сохраненный типа. вот я про это и говорю

DimiS

#19
Описываешь ОО класс, у которого есть поле 3DObjectData (наверняка и какие то другие поля на твоё усмотрение), создаёшь какой то OO Class Instances List, в котором будешь хранить экземпляры этого класа, юзаешь OO InterfaceCommand -> Add new class to container, получаешь при этом Result Index, с помощью этого индекса и ченела OO Instance Ref Item From Container можешь обращаться к только что созданному экземпляру класса(и его полям  ;) )

думаю это то о чём ты спрашивал?