Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Blitz3D > FAQ

FAQ Туториалы и часто задаваемые вопросы

Ответ
 
Опции темы
Старый 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)
 
Ответить с цитированием
Старый 31.01.2009, 19:42   #2
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Ответ: Загрузка карты из 3ds

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

имхо для новичков понятней будет так
__________________

(Offline)
 
Ответить с цитированием
Старый 31.01.2009, 21:48   #4
ABTOMAT
Ференька
 
Аватар для ABTOMAT
 
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,741
Написано 5,461 полезных сообщений
(для 15,675 пользователей)
Ответ: Re: Загрузка карты из 3ds

Сообщение от mr.DIMAS Посмотреть сообщение
имхо для новичков понятней будет так
Зато протом кто-то умный что-то к чему-то привяжет и полезут вопросы "а у миня неработает!!!"
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**

* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена

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

блин написал так что дауну должно быть понятно. имхо эта функция оч быстро работает
__________________

(Offline)
 
Ответить с цитированием
Старый 01.02.2009, 00:29   #6
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Ответ: Загрузка карты из 3ds

mr.DIMAS, функция работает очень быстро, но неправильно. Стоит моделлеру привязать "что то к чему то"(с)АВТОМАТ, как тут же начнутся глюки в виде не-появления объекта на сцене. Особенно новичкам будет сложно понять почему.

Да и не слишком сложнее в общем то:
Function LoadLevel(levelfile$)
 levelmesh = LoadAnimMesh(mesh$)
end function

Function AnalyzeModel( mesh$ )
  For ch = 1 to CountChildren( temp )
   obj = GetChild(temp,ch)
   name$ = EntityName$(obj)
   If InStr(name$,"имя объекта в модели уровня") <> 0 Then 
     Нужное_Действие
   End if 

  if CountChildren(obj)>0 then AnalyzeModel(obj)
 Next
 FreeEntity temp
End Function
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо HolyDel за это полезное сообщение:
mr.DIMAS (01.02.2009), Nex (02.04.2010)
Старый 01.02.2009, 16:23   #7
mr.DIMAS
Дэвелопер
 
Аватар для mr.DIMAS
 
Регистрация: 26.12.2006
Адрес: Санкт-Петербург
Сообщений: 1,572
Написано 547 полезных сообщений
(для 1,540 пользователей)
Re: Загрузка карты из 3ds

аа щас врубил, функция еще и в составных объектах ищет то что нужно
__________________

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


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ищу карты KAK? TAK! 3D Моделирование 4 31.03.2009 14:33
Как лучше хранить карты для игр Aceton 3D-программирование 28 26.03.2009 18:22
карты alligator Blitz3D 24 21.11.2007 21:15
про террайн и карты в общем Timon 3D-программирование 23 05.10.2006 16:37


Часовой пояс GMT +4, время: 21:29.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com