Показать сообщение отдельно
Старый 31.01.2009, 19:35   #1
mr.DIMAS
Дэвелопер
 
Аватар для mr.DIMAS
 
Регистрация: 26.12.2006
Адрес: Санкт-Петербург
Сообщений: 1,572
Написано 547 полезных сообщений
(для 1,540 пользователей)
Загрузка карты из 3ds

Вопрос: У меня есть карта уровня, сделанная в 3Ds max и я хочу чтобы в тех местах карты, которые указал создавались разнообразные объекты. Как сделать?
Ответ: Очень просто. Мы просто перебираем все объекты в модели уровня и ищем нужные нам, а на их местах создаем необходимые объекты. Итак рассмотрим этот алгоритм по подробнее.
Как известно в каждой модели есть множество подмоделей, так называемых чайлдов (child - ребенок). Эти подмодели могут свободно трансформироватся(вращение, перемещение, растяжение\сжатие), удаляться, и т.п, т.е с ними можно делать все что и с обычными блицевскими объектами, а так же получить его имя, которое было задано в редакторе. Этим мы и воспользуемся. Теперь напишем небольшую функцию анализа модели.

 
Function AnalyzeModel( mesh$ )
 temp = LoadAnimMesh(mesh$)
  For ch = 1 to CountChildren( temp )
   obj = GetChild(temp,ch)
   name$ = EntityName$(obj)
   If InStr(name$,"имя объекта в модели уровня") <> 0 Then 
     Нужное_Действие
   End if 
 Next
 FreeEntity temp
End Function
Теперь рассмотрим эту функцию. В нее передается всего один параметр - путь к модели уровня. Второй строкой - загружаем сам уровень как анимированную модель чтобы иметь доступ к чайлдам. Третьей строкой запускаем цикл перебора всех моделей в уровне. Четвертой строкой получаем модель с нужным номером(указывается циклом). Пятой - получаем имя модели, которое указывали в редакторе. Шестой - анализируем строку с именем модели и находим в нем нужное имя ( указывается вместо "имя объекта в модели уровня" ) и если таковое нашлось то выполняем Седьмую строку. Предпоследней строкой - удаляем модель уровня.
Результат: на указанных местах появляются указанные объкты.
Вроде все разжвевал как надо.

Вопрос: Как её использовать и вообще работает она?
Ответ: Пишем в нужном месте AnalyzeModel и указываем путь к анализируемой модели уровня. Функция сто пудов работает.

Вопрос: Насколько быстра эта функция?
Ответ: Все зависит от выполняемых операций внутри If Instr... End If .
__________________

(Offline)
 
Ответить с цитированием