Компиляция Света в ВК из-под Панды — Создание моделей и текстур

 Добрый день, уважаемые симмеры-моделлеры.

Сегодня я хотел-бы поделится с Вами некоторым опытом.

Все мы знаем, как ограничен в средствах моделирования Гмакс, и о прочих его недостатках, которые я перечислять не буду, тем более для каждого они свои.=)

Большинство моделлеров, которые работают над самолетами в конечном счете приходят к тому, что отказываются от Гмакса, в пользу связки из его старшего собрата 3dsMax 6-7-8(обычно 7) и экспортера в формат Direct X от Pandasoft(далее по тексту — Панда)

Эта связка гораздо эффективнее в плане моделирования, текстурирования и прочего, она банально удобнее, экономит время- так как большинство вещей в Максе делаются несравнимо быстрее чем в Гмаксе, но в этой бочке меда есть ложка дегтя, которую сначала даже не все замечают. Но она на самом деле очень существенная.

Это я об экспорте лайтмапов в ВК.
Связка 3дсМакс-Панда не умеет экспорировать лайтмапы в ВК, в отличие от Гмакса.

Как мне однажды ответил Денис Окань «Панда — кривотень только в этом- а Гмакс во всем остальном». Это в общем правильно.=)

Существует способ добавить Лайтмапы вручную в asm-файл при компиляции. Я не буду сейчас останавливатся и расписывать всю технологию — кому надо знают или узнают. 

Смысл её в том чтобы дописать строчки с лайтмапами по всей длине asm-файла соблюдая нумерацию, а потом компильнуть это все через bglc. Способ, конечно, очень трудоемкий, но действенный.

Однако из его трудоемкости выходит ряд следствий:

— Элементарно можно ошибится при редактировании — asm-файл штука не маленькая — и все, начинай сначала, ошибку в фале такого обьема можно искать очень долго..
— КАЖДЫЙ лайтмап нужно вписать руками, да ещё не в одном, и не в двух местах. Хорошо если лайтмап один… А если мы хотим не только подсветить приборы, но и сделать подсветку панелей, и деталей интерьера? И так немаленькое количество работы умножается ещё и на количество битмапов. — т.е. становится совсем уж нереальным.

Пожалуй главным недостатком этого является то что это все надо проделывать КАЖДУЮ компиляцию, если вы хотите видеть свет в каждой промежуточной МДЛ. 

Почему-бы не совместить преимущества одной программы с преимуществами другой? — тут встает ряд сложностей, скажут опытные моделлеры и будут правы.

— Просто делать в другой программе ВК -глупо и долго, теряются преимущества работы с 3дс Максом. Да и другие сложности есть, о них чуть позже.

— Тогда есть другой путь — переэкспорт. 

Фи-и-и да что там останется от модели, и что с этим потом делать- приводить в порядок дольше чем делать заново… скажут опытные моделлеры и будут неправы!

В 3дс Макс существует формат экспорта который напрямую поддерживается Гмаксом — это .3ds — Формат очень древний, ещё времен ДОС.

При экспорте из 3дс Макса и импорте потом в 3дс Макс группы сглаживания, анимация и материалы в .3ds как правило не сохраняются. НО! Это важно! Гмакс основан на коде 3dsMax R.3 — 

третьей ревизии этой программы для Windows. — Эта ревизия все ещё поддерживала импорт групп сглаживания, анимации и материалов из .3ds!

Наш с вами ВК, который мы холя и лелея делали в 3дсМакс практически без проблем переносится через .3ds в Гмакс. Группы сглаживания, материалы, анимация — всё переносится нормально и готово к компиляции. Да-да, без всяких ресет-ов, и прочего… просто экспорт-импорт-компиляция.

ВАЖНО! У меня при импорте галка «Convert Units» вызвала искажение размеров всей ВК, но если её снять — то все нормально. 

Теперь мы имеем ситуацию в Гмаксе ВК — в Максе Наружка. Как нам это совместить?

Особенностью экспорта из Гмакса является то что там процесс экспорта автоматизирован, т.е. МейкМДЛ запускается плагином Гмакса. И мы напрямую не видим наших .х-файлов.

Но существует такая всеми сегодня забытая программа — MDLCommander  Прикрепленный файл
 MDLCommander.zip   19.05К
  187 Количество загрузок: — я приложил, так как найти её бывает непросто — она вклинивается в процесс экспорта и позволяет вручную запускать MakeMDL, но главное — она позволяет сохрянить .х-файлы, которые создает экспортер Гмакса!

Таким образом, можем экспортировать ВК из Гмакса и наружку из 3дс Макса. «В два клика», без ковыряния в асм-файлах и ручной компиляции через bglc.

Для этого нам нужно только кое-что настроить.

Итак, настройка компилирующей «фермы» для сборки МДЛ со светом.

Нам потребуется:

1). — Ваш Макс, настроенный на экспорт Пандой.-это я описывать не буду -кто не знает — в топик «создаем модель с нуля» Самдима.

2). — Gmax, с Геймпаком из SDK (я предпочел отказатся от Геймпаковой структуры и просто раскидал по папкам ГМакса соответствующие элементы — меньше проблем, по-моему, чем создавать отдельные ярлыки и мучатся с Геймпаковой структурой.)

3). — MDLcommander Прикрепленный файл
 MDLCommander.zip   19.05К
  187 Количество загрузок:

Операции с Максом.

Экспортируем наш ВК в .3ds  
File->Export
Важно что-бы ни одной детали не было скрыто и ни одна деталь не была выбрана.

Можно заранее экспортировать нашу Внешку в .х . 

Операции с MDL-commander’ом

В поставку MDL-коммандера входит только один .exe и файл справки. В файле справки написано как регулировать работу программы с помощью конфиг-файлов. Нам это в общем-то не нужно, я опишу как все сделать, что-бы работало и экспортилось, но вдруг вам понадобятся какие-то другие возможности…

1) — Кладем MDLcommander.exe в папку с плагинами Gmax’а — там где у Вас лежит MakeMDL.exe

2) — Переименовываем Вашу MakeMDL.exe и makemdl.parts.xml в mkmdl.exe и mkmdl.parts.xml соответсвенно. — это важно, использовать именно эти имена, если вы хотите что-бы у вас запускалась MakeMDL после экспорта из Гмакса .х-файлов.

3)— переименовываем MDLCommander.exe в MakeMDL.exe — теперь экспортер Гмакса вместо MakeMDL будет вызывать MDL-commander не подозревая о подмене.

4)— Создаем в этой-же папке текстовый файл параметров и переименовываем его в ИМЯ_ВАШЕЙ_МОДЕЛИ.par — обратите внимание, что в имени модели и файла не должно быть скобок, тире и прочих элементов, использующихся в командной строке. Например Il86.par 

— В файле параметров пишем следующее, можно скопировать или не писать коментарий — я его просто так оставил:

# these are parameters for exporting my aircraft

-i
-keep
-viewlog
+savexfile

Весь список параметров есть в докуменьте к commander’у — 3/4 из них нам не нужны, отмечу только +nocompile — отмену вызова Make MDL после пуска MDLcommander. Некоторые могут предпочесть запускать makeMDL отдельно.

ВСЁ, мы все настроили! Поздравляю.

Теперь что мы делаем когда экспортируем модель.

1) Проверяем всю нашу анимацию в модели ВК(в Гмаксе), иногда бывают мелкие косяки, связанные с разными криво сделанными детальками. Внимательно смотрим имя модели — оно должно совпадать с именем Файла .par.

2) Экспортируем в .mdl(так как будто-бы мы просто экспортировали самолет) ВАЖНО! Когда вы выбираете Имя для MDL оно должно совпадать с именем файла .par Гмакс  недолго думает, потом появляется окно MakeMDL(или не появляется если вы поставили в .par ещё и +nocompile). Но компиляция не происходит (если вы все настроили как у меня), оно просто висит. Ничего пока там не трогаем.

3) Компилируем .х внешки, если вы этого ещё не сделали.

4) Теперь берем нашу Внешку и копируем её в каталог где у нас лежит файл .х ВК из Гмакса(она у нас называется il86.x). Переименовываем оба файла так как вам удобно, не забывая что ВК нужно обозвать Имя внешки_interior.x, что-бы она подхватилась автоматом.  Ну допустим назовем ВК Il-86_interior.x а внешку Il-86.x

5) В Make MDL (который у нас висит, если вы помните, если не висит- самое время запустить его) выбираем как обычно Il-86_Interior.x, Внешка автоматом подхватывается, и мы компилируем далее как обычно.

Лезем в Сим и смотрим, Вуаля — у нас в ВК появился свет!

Таким образов мы используем Гмакс по-сути как компилятор. Ничего дорабатывать в нем нам не нужно(ну если только паре деталек анимацию подправить — Под парой деталек я подразумеваю ПАРУ ДЕТАЛЕК, а не пол-вк, у меня на 204-ом съехало 4 детали — Штурвал, Руды и Ручка на форточке — это дело 10-20 минут поправить)

Теперь по поводу того какие детали находятся в группе риска — те детали у которых «контейнер» не совпадает с координатами. Это сложно объяснить, но один раз увидев легко понять закономерность, скорее всего это детали с «кривым» Пивотом. Видите что «кубик» границ детали непараллелен сетке, когда деталь параллельна — скорее всего эта деталь — клиент на коррекцию анимации.

Надеюсь этот туториал поможет Вам упростить и ускорить разработку ваших моделей, и мы вместе увидим их в симе. 

С Уважением.

Сообщение отредактировано Kirill Konovalov: 09 March 2010 — 19:04

Ответов: 17

Прикрепил наверх. Думаю, это окажется полезной информацией.

шаман однако!

Полезная инфа, спасибо огромное.

Скорей всего эта тема мало кому покажется актуальной, но таки пришлось столкнуться.

Возможно я не прав, Но лайтмапы таки компилятся стандартными средствами — панда+мейкмдл, НО! только не для $ текстур.
Если честно, то я думал что для $ текстур вообще не нужна лайтмапа- то есть рисуется ночной прибор и дневной и программно выводится в область $ текстуры- так или нет?

Кстати на счет ручного редактирования асм файла- ничего сложного если делать это скажем в вордпаде.
Буквально какие то 2 минуты на правку 2-3 листов текстур.

Сколько угодно можно «светить» приборы программно. В 2д они будут светиться, а в ВК — не будут. Возьми любой светящийся ночью в 2д дисплей и проверь. Тебя удивит результат. :( Там будет совершенно темный, но при этом «светящийся» прибор. Т.е. он будет нарисован светящийся, но при этом света излучать как-бы не будет.

Буквально какие то 2 минуты на правку 2-3 листов текстур.

Ага, и так каждый раз при каждой компиляции, потом компиляция через bglc руками… Увольте… Мне проще в Гмакс перегнать.

Я человек, любящий человеческий GUI, и люто ненавидящий командную строку, как пережиток DOS’а. Ребят на дворе 21 век, ничего так :)Извините,если обидел любителей работать в «строке».

Александр, хочешь руками- делай руками, способ работает… Но я хочу видеть свет при каждой компиляции, коих бывает по 4-5 за час, и тратить время на редактирование asm и пляски с bglc-мне каждый раз неохота…

Фактически получается так, что засунув модель в Гмакс, ты уже теряешь возможность каких либо доработок в Максе.
Ты будешь вынужден все остальные действия (начиная с восстановления анимации) производить в Гмаксе, а значит ты уже никогда не будешь иметь на руках окончательный исходник в Максе,- только в Гмаксе.

Так что я оставляю пляски с настройкой анимации, мдл командером и прочими геймпаками тебе 🙂
Мне как то проще в блокноте найти и заменить автоматом пару строк.

Ну альтернатива на то она и альтернатива.
Для тех кто все таки да не убоится редактировать асм
Порядок действий
В Мейкмдл ставим галочку HasLightMap и Keep Files
В то место, где сформируются 3 файла имямодели.asm, имямодели_0.asm, имямодели_1.asm ложим файлик Прикрепленный файл
 BGLC_9.zip   293.85К
  74 Количество загрузок:
Открываем в блокноте имямодели_0.asm (это ВК), находим строки $ текстур (эти секции находятся в самом верху файла)
$ текстуры идут за обычными текстурами
TEXTURE_DEF TEXTURE_AIRCRAFT , <255,255,255,255>, 0.313154, «P2_T.BMP» ; 2 // Это строка дневной обычной текстуры
TEXTURE_DEF TEXTURE2_LIGHTMAP , <255,255,255,255>, 0.313154, «P2_L.BMP» ; 3 // Эта строка лайтмапы обычной текстуры. Ее мейкмдл сам вставляет
TEXTURE_DEF TEXTURE_AIRCRAFT , < 0, 0, 0, 0>, 1.503453, «$GAU2» ; 4 //Это строка дневной (по сути виртуальной приборной текстуры)
вот сюда сразу за верхней строчкой вписываем
TEXTURE_DEF TEXTURE2_LIGHTMAP , < 0, 0, 0, 0>, 1.503453, «$GAU2» ; 5 // и рисуем порядковый номер! (в нашем случае 5)Соответственно у второго листа текстуры меняется порядковый номер с 5 на 6 (Это важно)
TEXTURE_DEF TEXTURE_AIRCRAFT , < 0, 0, 0, 0>, 0.382836, «$GAU1» ; 6 //Это строка дневной текстуры
и опять же прописываем к этому текстурному листу лайтмапу
TEXTURE_DEF TEXTURE2_LIGHTMAP , < 0, 0, 0, 0>, 0.382836, «$GAU1» ; 7 // и рисуем порядковый номер! (в нашем случае 7)

это первый этап
ниже по файлу находим строку содержащую $GAU2
MATERIAL 1,4 ; <0,0,0,0> $GAU2.BMP;;;
выделяем часть $GAU2.BMP;;;
жмем Ctrl+H (найти и заменить)
вставляем скопированное в верхнюю часть поиска а в нижнюю пишем
$GAU2.BMP;;$GAU2.BMP;
и жмем заменить все.
Далее аналогично находим строку содержащую $GAU1
Только теперь обратите внимание! Нам надо поменять порядковый номер текстуры
MATERIAL 1,5 ; <0,0,0,0> $GAU1.BMP;;;
я просто копирую часть текста начинающуюся с (5) пример (5 ; <0,0,0,0> $GAU1.BMP;;;)
и меняю автоматом везде на (6 ; <0,0,0,0> $GAU1.BMP;;$GAU1.BMP;) (почему на 6- см выше)
строка приобретет вид соответственно
MATERIAL 1,6 ; <0,0,0,0> $GAU1.BMP;;$GAU1.BMP;

Остается теперь сохранить изменения в файле и перетащить файл ИмяМодели.asm и бросить на BGLC_9.exe
через несколько секунд получим файл ИмяМодели.bgl меняем расширение на mdl и все дела
Важно драгндроп делать там где сформировались фалы асм

Для особых гурманов:
Можно вместо ссылки на саму себя $ текстуру сослаться на другую $Gau1_L.bmp содержащую альфу с возможными вариациями подсветки будильников

PS Лайтмапы нет никакой нужды пихать ни в амбиент ни селф илюминейшен (в редакторе материалов в Максе)
Всем этим рулит МейкМдл (и не ругайте панду- она не при чем)

Сообщение отредактировано DUST: 05 April 2011 — 13:15

Забыл сказать в асм файле присутствуют 3 секции с описанием текстур

_100_interior_lights_on label word
_100_interior_lights_on_land_off label word
_100_interior_lights_off label word

соответственно необходимо в нижних 2 поменять порядковые номера $ текстур

PS кстати может кто то разбирался — для чего эти секции?

А я года 4-5 назад в этом хорошенько разобрался и написал себе (здоровенный) скрипт на питоне который расставляет лайтмапы на выделенные текстуры. Вдобавок анализируя файл АСМ можно заметить что блоки с TEXTURE_DEF включаются определенной переменной. Эту переменную можно поменять (в том же АСМ файле) а также можно добавить новые переменные и новые блоки — с тем чтобы комбинировать несколько различных подсветок.

Например в A320 аирсиммера в ВК три типа лайтмапов : надписи, флуды (пятна света под козырьком) и надписи+флуды. А на внешке отдельно и независимо сделаны пятна света на движках с крыльями и пятна от посадочных фар.

правда с добавлением любой новой переменной количество блоков растет в геометрической прогрессии.

В общем сложно все это, я вообще девятый сим забросил и не компилил ничего уже больше года :)

Дима, ну если время будет хоть бы подсказал что за что отвечает, раз уж тебе не актуально и секретом фирмы не является.

Помницца, кто-то из Project Opensky мне эту информацию давал, и по разным лайтмапам и по включению от Л-переменных… Надо мейл этот найти… В связи с личной неактуальностью (тоже под 9-ку не компилю.) это все тихо легло на полку, да там и затерялось…

Сообщение отредактировано Kirill Konovalov: 06 April 2011 — 19:52

Дима, ну если время будет хоть бы подсказал что за что отвечает, раз уж тебе не актуально и секретом фирмы не является.

Пригодиться еще может, но в общем поделиться могу. Можем обсудить как-нибудь в скайпе

Забыл сказать в асм файле присутствуют 3 секции с описанием текстур

_100_interior_lights_on label word
_100_interior_lights_on_land_off label word
_100_interior_lights_off label word

соответственно необходимо в нижних 2 поменять порядковые номера $ текстур

PS кстати может кто то разбирался — для чего эти секции?

2-я секция включает и выключает текстуру подсветки незвисимо от положения Главного Выключателя Питания борта (A:ELECTRICAL MASTER BATTERY), тогда как 3-я секция выключит лайтмап подсветки ровно тогда, когда разрядятся АКБ, либо ГВП будет выключен (при условии что РАП отключена).

Незабудьте в соответсвующих строках вместо

TEXTURE_DEF TEXTURE2_LIGHTMAP……….

прописать

TEXTURE_DEF TEXTURE2_NONE…………..

Хотя тут нужно поиграть. У меня так, у Вас может случиться по другому, тк текстуры в ВК у меня добавлены несколько нетрививльным способом из-за особенностей 3Д Макса 2009 для которого у меня нет плагинов и соответствущих материалов для сима.

Сообщение отредактировано Virpil: 12 April 2011 — 15:18

Опишите пожалуйста, как создать освещение ВК? Я как понимаю есть два варианта: создать источнико освещения в максе, или создать ночные текстуры, но куда их накладывать, и как их называть?

Источники света в любом случае в Максе не создаются. Он прописывается в Aircraft.cfg по координатам. ЛАйтмапы накладыватся на материалы с текстурами в канал Self-illumination.

Вон оно что оказывается!

Использую 3d max5 безпроблемно компилируется в сим по факту анимации и освещения! НО! двухмерные приборы размещенные с помощью $текстур не светятся ночью, а на рассвете вообще практически не видны. Может попробывать наложить в слой self-illumination лайт-мап для них?

Вот как раз о том весь топик и был, что из под панды, клади/не клади — они в сим не компилятся.