[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Загрузка большого числа обьектов
ГостьДата: Вторник, 04 Марта 2008, 19:20 | Сообщение # 1
Группа: Гости





Всем доброго времени суток!
У меня такой вопос, как загрузить обьект, состоящий из множества деталей (соответсвенно и множество текстур), чтоб не прописывать по сто раз LoadTexture и EntityTexture? Например интерьер института. Заранее благодарен.
 
ГостьДата: Вторник, 04 Марта 2008, 23:46 | Сообщение # 2
Группа: Гости





Просто раньше я работал с версией 1.66, а щас поставил 1.99. Мне нужно сразу загрузить всё с мебелью и прочим и сделать как бы бродилку по универу. Прописывать сто с лишним текстур не хочеться. К примеру я загружаю здание одним 3ds файлом через LoadAnimMesh, тектуры все должны быть в той же папке, что и 3ds и тогда блитц сразу загрузит со всеми текстурами, я правильно понял?
 
Терминатор01Дата: Среда, 05 Марта 2008, 08:49 | Сообщение # 3
Продвинутый
Группа: Участники
Сообщений: 191
Награды: 0
Замечания: 0%
Статус:
Quote (ASoftware)
Из них - тебе необходимо раставить каждый обьект на свое место. Вот тут вся сложность
Выход 1
Поставить все обьекты прямолинейно
Поставить все обьекты в рэндомном порядке (т.е. хаотично). Если кто знает ещё какие-нибудь варианты - пишите =)

Был исходник машинки. Так вот там машинка собиралась по частям, а не целиком.
Причём каждая часть машинки становилась именно там где она должна быть.
Суть исходника - осмотр такой машинки со всех сторон. В этом случае она стоит целиком.
Вероятно если попытаться заставить её двигаться она просто развалится.
Предполагаю что после сборки все части нужно привязать к какому то одному объекту
и двигать уже его. Может тогда она не развалится.
Вообщем, исходник сборки из кусочков в строго определённом месте есть.
А вот как заставить эти кусочки реагировать вместе, пока не знаю.
А вопрос интересный, так как хотел из этой машинки гонки сделать.
К тому же такую машинку можно будет прямо в игре ремонтировать, апгрейдить и делать
тъюнинг. Кто знает как заставить кучу деталей двигаться вместе?
(Вопрос возможно наивный и может я и знаю решение, во всяком случае догадываюсь)


Сообщение отредактировал Терминатор01 - Среда, 05 Марта 2008, 08:51
 
ГостьДата: Среда, 05 Марта 2008, 15:10 | Сообщение # 4
Группа: Гости





2:Терминатор01 Рассказываю. Да, ты прав, лучше привязать все детали машины к одному обьекту. Совету в центре тяжести машины (почти в том месте, где коробка передач) создать pivot обьект (CreatePivot). Эта такая невидимая точка. А после привязываешь все детали к этому pivot (можно сразу при загрузке koleso=LoadMesh("name.3ds",pivot), а можно и попозже EntityParent koleso,pivot) и двигаешь саму точку pivot. Все её "дети" будут двигаться вместе с ней, и можно отдельные деталь двигать, только вроде после True прописывать (типа PositionEntity koleso,2,0,0,true)

2:ASoftware Я так понял, мы друг друга поняли))))) В том то и дело, что мне нужно 3DS загрузить, а не B3D. С 3ds так же получится?

 
ГостьДата: Среда, 05 Марта 2008, 19:16 | Сообщение # 5
Группа: Гости





Quote (Гость)
В том то и дело, что мне нужно 3DS загрузить, а не B3D.

Используй "родной" формат блица(c ним проблем нет)... Для конвертации юзай B3DPiplane( смотри в разделе 3ds max )
 
Viper86Дата: Четверг, 06 Марта 2008, 00:08 | Сообщение # 6
Начинающий
Группа: Пользователи
Сообщений: 3
Награды: 0
Замечания: 0%
Статус:
Пасибо всем, буду пробовать, о результатах отпишусь.
 
Терминатор01Дата: Пятница, 07 Марта 2008, 01:06 | Сообщение # 7
Продвинутый
Группа: Участники
Сообщений: 191
Награды: 0
Замечания: 0%
Статус:
Спасибо, Гость.
(Далее для всех)
Если грузить всё сразу одним объектом всё таки неудобно.
А если понадобиться дверку у шкафа открыть?
Понятно что можно этот шкаф долепить. А если их 100 в каждой комнате?
А задание их все проверить.
А если у машины запчасти надо менять?
А в городе 20 видов машин? Одним куском всё не слепишь.


Сообщение отредактировал Терминатор01 - Пятница, 07 Марта 2008, 01:16
 
ГостьДата: Пятница, 07 Марта 2008, 15:43 | Сообщение # 8
Группа: Гости





Нужно использовать FindChild()

Code
Global map = LoadAnimMesh("Level\shooter.b3d")
RecurseSeek(map)

Code
Function RecurseSeek(ent)
For i=1 To CountChildren(ent)  
    child=GetChild(ent,i)
    name$=Lower(EntityName(child))
    If Instr(name$,"floor")
      EntityType child, TypeFloor  
      EntityPickMode child, 2  
    EndIf  
    If Instr(name$,"wall")
      EntityType child, TypeWall  
      EntityPickMode child, 2  
    EndIf  
    If Instr(name$,"vdoor")
      EntityPickMode child, 2  
      InitDoor( child, "v" )
    EndIf  
    If Instr(name$,"hdoor")
      EntityPickMode child, 2  
      InitDoor( child, "h" )
    EndIf  
    If Instr(name$,"trans")
      EntityAlpha child, 0.1
    EndIf  
    If Instr(name$,"lightsource")
       x# = EntityX(child)
       y# = EntityY(child)
       z# = EntityZ(child)
       CreateNewFlare(x#,y#,z#)
    EndIf
Next
End Function

Именуй части модели floor, wall и т.д. и осуществляй взаемодействие.

ЗЫ Взял с БлицСкул

 
ГостьДата: Пятница, 07 Марта 2008, 15:46 | Сообщение # 9
Группа: Гости





Заметьте что нужно писать LoadAnimMesh(), а не LoadMesh() потому что при LoadMesh(), не будет передаватся инфа котороя нам нужна.
 
Viper86Дата: Суббота, 08 Марта 2008, 21:08 | Сообщение # 10
Начинающий
Группа: Пользователи
Сообщений: 3
Награды: 0
Замечания: 0%
Статус:
Гость, который создал эту тему и есть я. Просто тогда не был зарегистрированным (ну эт так, для информации biggrin )
 
  • Страница 1 из 1
  • 1
Поиск: