Jump to content
Sign in to follow this  
Kirill Konovalov

Компиляция Света в ВК из-под Панды

Recommended Posts

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

 

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

 

 

 

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

 

Большинство моделлеров, которые работают над самолетами в конечном счете приходят к тому, что отказываются от Гмакса, в пользу связки из его старшего собрата 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 - я приложил, так как найти её бывает непросто - она вклинивается в процесс экспорта и позволяет вручную запускать MakeMDL, но главное - она позволяет сохрянить .х-файлы, которые создает экспортер Гмакса!

 

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

 

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

 

 

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

 

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

 

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

 

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

 

3). - MDLcommander MDLCommander.zip

 

 

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

 

Экспортируем наш ВК в .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 минут поправить)

 

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

 

 

 

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

 

С Уважением.

Edited by Kirill Konovalov
  • Upvote 5

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

 

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

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

 

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

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

  • Downvote 1

Share this post


Link to post
Share on other sites

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

 

 

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

 

 

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

 

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

 

 

 

 

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

  • Downvote 1

Share this post


Link to post
Share on other sites

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

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

 

Так что я оставляю пляски с настройкой анимации, мдл командером и прочими геймпаками тебе :-)

Мне как то проще в блокноте найти и заменить автоматом пару строк.

 

Ну альтернатива на то она и альтернатива.

Для тех кто все таки да не убоится редактировать асм

Порядок действий

В Мейкмдл ставим галочку HasLightMap и Keep Files

В то место, где сформируются 3 файла имямодели.asm, имямодели_0.asm, имямодели_1.asm ложим файлик BGLC_9.zip

Открываем в блокноте имямодели_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 Лайтмапы нет никакой нужды пихать ни в амбиент ни селф илюминейшен (в редакторе материалов в Максе)

Всем этим рулит МейкМдл (и не ругайте панду- она не при чем)

Edited by DUST
  • Upvote 1
  • Downvote 1

Share this post


Link to post
Share on other sites

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

 

_100_interior_lights_on label word

_100_interior_lights_on_land_off label word

_100_interior_lights_off label word

 

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

 

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

  • Upvote 1
  • Downvote 1

Share this post


Link to post
Share on other sites

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

 

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

 

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

 

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

  • Downvote 1

Share this post


Link to post
Share on other sites

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

  • Upvote 1

Share this post


Link to post
Share on other sites

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

Edited by Kirill Konovalov
  • Upvote 1

Share this post


Link to post
Share on other sites

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

 

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

  • Upvote 1

Share this post


Link to post
Share on other sites

Забыл сказать в асм файле присутствуют 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 для которого у меня нет плагинов и соответствущих материалов для сима.

Edited by Virpil
  • Upvote 2

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

  • Downvote 1

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...