Динамические отражения материалов в Gmax

Материал из База знаний
Перейти к: навигация, поиск

Автор: Антон Николаев Дата: 12.03.2003 04:49
Описание способа добавления динамического отражения света (specular shine) материалом Гмакс-моделей.
Работаем в Гмакс, часть 2.

Динамические отражения материалов в Гмакс.

Вашему вниманию представляется еще один how-to по работе с Гмаксом. Эта инструкция была написана пару месяцев назад, и я выкладывал ее у себя на страничке. Так же, эта тема обсуждалась на форуме flightsim.ru в разделе вопросов от начинающих, где были выявлены и другие способы компиляции моделей с данным эффектом.

Для начала – пару слов о самой проблеме: многие наверно видели динамический эффект блеска на поверхности некоторых моделей (например, дефолтная Сессна). FSDS V2 позволяет создавать такой эффект и с успехом экспортировать его в симулятор. К сожалению, если пользователь Гмакс попытается достичь такого эффекта «штатными» средствами – то скорее всего добившись удачных отражений в окошке предпросмотра в Гмакс после экспорта этот эффект либо не появиться вовсе или будет представлять из себя нечто невразумительное. Проблема в том, что Гмакс некорректно по отношению к стандартному makemdl из SDK (и симулятору) выдает важнейший параметр, который включает эффект и контролирует размер «пятна» отражения. Этот параметр указывается в процентах и Гмакс хранит его (естественно!) в формате десятичной дроби, поэтому десятки и единицы процента оказываются за запятой, а makemdl, в данном случае, так и компилирует дробь, к сожалению в симуляторе этот параметр считается целочисленным – и все дробные значения просто игнорируются. Отсюда имеем задачу – в исходном коде модели нужно умножить значение параметра на 100.

Для решения нам потребуются следующие инструменты: Gmax v1.x (эта инструкция создавалась на основе версии 1.1, но в 1.2 редактор материалов изменился) Middleman v1.1 MakeMDL – 8.00.020403.01 MDLCommander v.1.03 MS Word

После скачивания mdlcommander и middleman обратитесь к документации. Там подробно расписано куда какие файлы нужно копировать и как переименовывать. Взять их можно здесь http://hometown.aol.de/_ht_a/docmoriarty3/fs2002/en/mdlcommander_dl.html http://thegreatptmd.tripod.com/

Теперь попробуем добавить эффект отражения материалу в Гмакс и перенести его в симулятор.

  1. Создаем новый файл в Гмакс и настраиваем координаты. Рекомендую взять уже существующий файл и сохранив его под другим именем просто удалить все объекты.
  2. Создадим два объекта teapot и отмечаем опцию generate mapping coords.
  3. Открываем редактор материалов и создаем новый материал с именем test_no_shine и еще один с именем test_shine
  4. Создайте какую-либо текстуру и поместите ее в папку aircraft/c172/texture. (Здесь и далее я буду использовать для своего теста папку модели дефолтной сессны с предварительно созданными резервными копиями файлов)
  5. Загрузите эту текстуру в качестве diffuse texture для обоих созданных ранее материалов.
    Gm2 0001.jpg
  6. Выберем материал test_shine и переходим на вкладку highlight. Выставим level = 150.
  7. Применим оба материала к созданным объектам. И сохраним файл.
    Заметили разницу? Теперь сделаем экспорт:
  8. Выбираем export -> aircraft/c172/model (сделайте резервную копию существующей модели) -> cessna172sp.mdl
  9. Если установка middleman и mdlcommander произведена правильно, то возникнет окно с настройками middleman. Выбираем на вкладке options: has light map, has reflect map, save x file (mdlcom), no compile -> GO!
    Gm2 0003.jpg
  10. Открываем папку с моделью. И находим файл cessna172sp.x. Теперь вручную нужно подправить необходимый параметр – собственно из-за чего все эти сложности.
  11. Запускаем Word. И перетаскиваем мышкой cessna172sp.x в Word (предварительно закрыв автоматически созданный новый документ).
  12. Выбираем Правка -> Заменить и в поле поиска вводим test_shine0 -> Найти далее.
  13. Будет найдено следующее:
 Material test_shine0 { 0.588000; 0.588000; 0.588000; 1.000000;;
 1.500000;
 1.000000; 1.000000; 1.000000;;
 0.000000; 0.000000; 0.000000;;

TextureFileName { "camo.bmp";

Полагаю, тут нужны пояснения – строки #3 - #4 имеют отношение к эффекту. #3 это и есть заданный нами параметр highlight – видите ошибку? Помимо включения самого эффекта наличие этого параметра => 1 так же контролирует размер пятна отражения на поверхности – большее значения будет уменьшать размер пятна. Четвертая строка – это цвет отражения – если задавать все три значения равными дробями от 0 до 1 то получим оттенки серого – может оказаться полезным, если нужно создать «мягкий» эффект отражения (например на моем ан-2 выставлено 70 для highlight и 0.4 для цвета). Пятая строка задает тоже цвет, но имеет ли он отношению к описываемому эффекту – для меня вопрос не решенный – говорят что с ним эффект излучает свет в темноте – я экспериментов пока не проводил.

Вообще, этот эффект требует большого экспериментирования с настройками – его нельзя предварительно посмотреть в гмакс в том виде как он будет выглядеть в симуляторе – поэтому, придется подбирать на ощупь.

14. Итак, внесем изменения. В принципе, в полноценной модели сразу много деталей могут иметь один и тот же материал – поэтому можно использовать функцию замены в поиске Word.
15. Сохраним файл, естественно проигнорировав предложение Word’a записать его с форматированием и закроем файл.

Наконец, сделаем окончательную компиляцию.

16. Открываем папку с установленным gmax и находим папку plugins. Повторюсь, если middleman поставлен правильно – запускаем файл mkmdl.exe – наш makemdl из SDK
17. Открываем файл модели cessna172sp.x в строке input file с указанием пути к ему. Если есть LOD VC, то он добавиться автоматически. На вкладке options отмечаем lightmap, reflections, ignore warnings.
18. Компилируем. Запускаем симулятор и смотрим результат. Между объектами должна быть заметна разница, если все сделано правильно.
19. Не забудьте вернуть Сессну после эксперимента на место – а то будут летающие чайники в трафике :о)
Gm2 0004.jpg

Вполне естественно, что я мог упустить нечто важное – поэтому буду благодарен за любые замечания и комментарии по поводу этого документа.

Xomer 2003, январь.