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

Дозагрузка (динамическая подгрузка) и переключение сцен.

Автор mef, 10 ноября 2008, 23:02:30

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

mef

Здравствуйте, помогите пожалуйста. Возник такой вопрос - есть значит дом, в котором много комнат, в каждой комнате свой интерьер и прочее. Сцена начинается например на первом эиаже в холе и ходим по дому. Комнтаы (интерьеры) у нас в виде отдельных сценок есть. Нужно чтобы в начле загружалась лишь первая сценка (холл на первом этаже), а дальше подошли например к двери кухни (она закрыта) нажали кнопку и идет загрузка кухни (одна сцена переходит в другую). Что то вроде ГТА (подошли к дому, нажали кнопку и хоп, пошла загрузка интерьера дома).

Почему собственно возник вопрос. Потому что предпологается размещение этого дома в интернете (через ВЕБ-ПАБЛИШ в квесте). Так вот, естественно, будет очень неудобно, если пользователь будет сидеть и ждать пока загрузится весь дом. А так, загрузился холл например, вот он по нему ходит, подошел к первой двери, нажал - пошла загрузка этой комнаты и т.д. (каждая комната весит метров 10-12 или даже меньше) ждать нужно будет не очень долго естественно, а весь дом весит метров 200-300 (в нем очень много комнат), ждать пока загрузятся все 200 метров никто не станет...

Viik

http://quest.ovos.at/browse/detail/18
Вот лоадер который позволяет делать динамическу загрузку и удаление групп. В конкретно таком исполнение в вебе работать не будет, так как сканирует директории, можно переделать под загрузку конкретных файлов.

KBECT0MAH

Есть прекрасный пример динамической подгрузки который лежит:
[локальный диск]..\Quest3D\Examples\Advanced\Dynamic lua loading
.

Erath

А можно ли через LUA подгружать именно объекты, модели в формате .х, к примеру, а не сцены? Как тогда будет выглядеть код? В туториалах че-т не нашел такого.
We will always be so much more human than we wish to be...

mef

Спасибо за подсказку, покопаюсь в примерах. если что выложу сюда образец или вопросы, если они будут (а то что будут - уверен на все 100) ))))))))

VeT

[локальный диск]..\Quest3D\Examples\Advanced\Dynamic lua loading

пашет нормально, с ихнего сайта грузит норм.. осталось перенастроить, чтоб грузило нужный левел на компе :)

Erath

#6
Отвечу на свой же вопрос. Я решил его так: используя как основу Weather System заменил сцену на ярлык от 3D Render'a в своей сцене, находящейся в другом .cgr-файле и при помощи Lua-скрипта содержания

-- CallChannel function is called when channel is called
function CallChannel()
q.RemoveChannelGroup("world.cgr", "World", instance)
q.LoadChannelGroup("world.cgr", "World", instance)

end

-- GetValue function is called when this channels is used as Value
function GetValue()
return -1
end

загружаю его в проект по нажатии кнопки. Так же можно сделать включение загрузки и от какого-либо другого фактора, например от позиции, взаимодействия с обхектом и т.д.
Смысл в том, что в данном случае сцена загружается целиком, все объекты должны быть подключены к рендеру. Источники света можно не использовать и не нужна камера, так все это есть в Weather System.
Прикрепляю скриншот что б было понятней.
We will always be so much more human than we wish to be...

Denil-Tornado

Ну допустим, бегаю по сцене ну назовём её "x" а когда перехожу на другую сцену "y", то y подгружается а та страя сцена выгружается?