Загрузка большого числа обьектов
|
|
Гость | Дата: Вторник, 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%
Статус: 
| Гость, который создал эту тему и есть я. Просто тогда не был зарегистрированным (ну эт так, для информации )
|
|
| |