Полезные мелочи в работе моделлера

Добавлен , опубликован
Раздел:
Моделлинг
Дьявол кроется в мелочах — гласит старая поговорка. Со временем я понял, что к моделлингу это тоже применительно. Есть ряд таких незаметных, казалось бы, незначительных приёмов, известных любому опытному моделлеру, но которые новичку узнать решительно неоткуда, кроме как изобрести самому. О таких полезных мелочах я и хотел бы сегодня поговорить.
Внимание: для того, чтобы усвоить изложенное здесь у вас уже должны быть базовые навыки моделлера!

Обращение нормалей при построении геометрии

На форуме часто можно встретить вопрос «Что делать если в mdlvis модель отображается нормально, а в War3ME и игре — как скопище рваных квадратов?», и чаще всего советую поставить галочку “Two sided” в материале. Это, конечно, отчасти решит проблему, но тогда вы получите неравномерно освещенные поверхности модели, что не есть хорошо. Бороться с этим я предлагаю следующим образом:
  1. Ещё перед тем, как начать строить геометрию в mdlvis'е, откройте модель в War3ME, и убедитесь, что галочка “Two sided” у материала будущего геосета не стоит.
  1. После этого вам нужно редактировать модель в mdlvis 1.40 да-да, 1.39 прорисовывает геометрию не так, как есть на самом деле.
  1. Когда сшиваете вершины треугольниками в vis'e, нужно смотреть на получаемую поверхность с того ракурса, который будет виден в результате.
  1. Если вы видите треугольник, который получается при нажатии на кнопку, то все ок.
  1. Если нет — тогда, не снимая выделения с только что связанных вершин, нажмите «Обратить нормали», и всё сразу станет на свои места.
Таким образом, создавая геометрию в mdlvis, вы сразу будете получать равномерно, правильно освещённые поверхности.
Примечание: этот способ работы с нормалями — единственный, который оставляет возможность открывать модель в War3ME без канонизации.
Ещё примечание: если вы делаете геометрию в 3DS Max или любом другом стороннем редакторе, то нормали в полученных моделях уже будут обёрнуты в нужных направлениях.

Альтернативный метод

Спасибо Iron'у, за то что подсказал мне такой вариант.
Есть и другой способ борьбы с неправильным освещением, о нем тоже стоит сказать. Здесь важен порядок, в котором вы выделяете вершины для соединения в треугольник, звучит не очень понятно, давайте разберемся на примере:
Опять же таки, вам понадобится mdlvis версии 1.40
  1. Допустим, вы выделяли вершины, двигаясь против часовой стрелки, тогда треугольник будет повернут в вашу сторону и все ок.
  1. Если же вы попробуете выделить вершины в порядке по часовой стрелке, тогда полигон будет повернут от вас и вы его попросту не увидите.
Вывод: если не хотите каждый раз при неправильном обороте треугольника жать "Обернуть нормали", то просто выделяйте вершины в нужном порядке.

Использование односторонности материала

Многие моделлеры просто тыкают у всех слоёв в материале галочку ”Two sided”; так, конечно, проще, но если действовать с этой функцией разумнее, то можно добиться интересных эффектов.
  1. Посмотрите, у меня есть простейшая модель — плоский квадрат. Один материал, с двумя слоями — красный цвет команды и синий цвет команды.
  1. Обратите внимание, как модель выглядит, если у всех слоёв стоит “Two sided”, она целиком синяя.
  1. Теперь давайте уберем её у верхнего слоя и посмотрим на результат. Вуаля, мы получили плоскость, которая с одной стороны красная, а с другой — синяя.
  1. Таким образом можно получать интересные эффекты без лишней траты полигонов.
Примечание: неплохим примером такого эффекта я считаю зонтик своего исполнения, у которого черное покрытие и красная подкладка, при том что это одна поверхность.

Имитация полупрозрачных материалов

Не знаю, кто придумал это прием, но одновременно у нас и на HiveWorkshop'е стали появляться модели, использующие его. Суть очень проста:
  1. Возьмем любую модель в моем случае — просто куб с уже наложенной текстурой.
  1. Открываем в mdlvis'е, выделяем нужные вершины, копируем и вставляем в ту же точку, а затем увеличиваем масштаб только что вставленных на 10 например, можете поэкспериментировать со значением % и выносим их в новую поверхность. Сохраняем и выходим из виза, он нам больше не понадобится.
  1. Открываем модель в War3ME. Создаем новый материал с той же текстурой что и у геосета, который мы редактировали, только “Filter mode” ставим на “Additive”.
  1. Назначаем новой поверхности только что созданный материал и любуемся на результат.
  1. Под конец я решил поменять текстуру, т.к. изначальная смотрелась не очень. =)
Примечание: лучше всего так получаются имитации кристаллов или стеклянных изделий (лампочек с гирлянды, например), но можно изобразить и водную гладь, и что-нибудь ещё - использование ограничивает лишь ваша фантазия.
Ещё примечание: можно так же делать больше двух повторяющихся поверхностей для большего эффекта.
И еще примечание: отличным примером такого приема может послужить модель кристального дракона, созданная Пиначетом.

Имитация блеска

Есть способ очень просто изобразить блеск воды, металла, чего угодно, в принципе:
  1. Возьмём уже имеющуюся поверхность, которой нужно придать блеск.
  1. Открываем модель в War3ME, находим нужный материал.
  1. Создаём новый слой с той же текстурой, но режимом фильтрации ”Additive”.
  1. Готово. Теперь поверхность отсвечивает на освещенных местах.
Примечание: стоит заметить, что если оставить оба слоя в материале затеняемыми, то эффект будет лучше.

Имитация бликов

Хотя в движке Warcraft'а для нас не предусмотрено никаких шейдеров, все же можно сделать нечто похожее на игру света, выглядит это примерно так:
  1. Возьмем модель с уже готовой разверткой и материалами
  1. Откроем её в War3ME и добавим из mpq-браузера текстуру “War3.mpq\Textures\Dust3_Thunder.blp”.
  1. Создаем глобальную анимацию длиной 3000 кадров можно любое другое число, на ваш вкус.
  1. Создаем анимацию текстуры, указываем в ней ранее созданную глобальную анимацию, тип интерполяции - “linear” и вставляем в текстовое поле следующие цифры:
0: { 0, -1, 0 }
1500: { 0, 1, 0 }
  1. Выбираем нужный материал и добавляем в него новый слой, ставим текстуру Dust3_Thunder.blp, режим фильтрации “addititve” и id анимированной текстуры на только что созданную нами.
В результате получаем некое подобие пробегающих бликов.
Примечание: советую посмотреть стандартную модель “War3.mpq\Abilities\Spells\Undead\FreezingBreath\FreezingBreathMissile.mdx”, в ней реализован такой прием.
Еще примечание: мой пример, конечно, довольно примитивен, можно поэкспериментировать с текстурой, сделать движение не в глобальной, а в каждой анимации отдельно, в зависимости от движения и т.д.

Крашеные поверхности

У нас уже есть статья о том, как сделать тимколор, имея текстуру с альфаканалом; но, как оказалось, можно обойтись простой текстурой в светлых тонах. Все как при создании тимколора:
  1. Мы создаем в текстурах ReplaceableID 1 и добавляем его в нижний слой материала.
  1. А вот с самой текстурой все немного не так. У её слоя нужно выставить фильтрацию “Modulate”.
  1. Вуаля, у меня получился крашеный металл.
Примечание: так можно поступать с любой текстурой, которая близится к черно-белой гамме, например с текстурой стандартного скелета (можно делать золотые черепа и т. д.).
Ещё примечание: рекомендую посмотреть модель библиария авторства IronMaiden'а, в ней широко задействован этот прием.

Черный источник частиц

Как я недавно узнал, у некоторых такая задача вызывает проблемы. Дело в том, что стандартные ресурсы мало приспособлены для создания источников частиц чисто черного цвета. Ведь большинство подходящих частиц не имеют альфа канала и рассчитаны для использования с фильтрацией “Additive”, а она превращает именно черный цвет в прозрачность.
Поэтому , что бы создать партикл эммитер чисто черного цвета вам нужно следующее:
  1. Для начала вам нужна текстура, имеющая альфа-канал, проблема в том, что наиболее часто используемые всяческие Clouds8x8 и Dust альфа-канала не имеют. Подойдет, например “War3.mpq\Textures\Sparkle_Anim.blp”.
  1. Когда создаёте, собственно, источник, вам нельзя использовать никакие типы фильтрации кроме ”Blend” и ”Transperent”, т.к. только они используют исходную прозрачность текстуры.
Примечание: присмотритесь также на досуге к текстуре “War3.mpq\Textures\Sparkle_Anim.blp”, из неё можно сделать массу интересных вещей, например высококачественные брызги крови или классный феерверк, на что только вашей фантазии хватит.

В заключение

Вот и всё, о чем я хотел бы вам рассказать. Несомненно, есть и другие приемы работы, о которых я даже не догадываюсь, они узнаются с опытом работы и, может быть, скоро вы придумаете свой и расскажете мне).
Хочу только сказать: не бойтесь экспериментировать, придумывать свои приемы и решения, ведь моделлинг — тоже своего рода искусство и без импровизации в нем никуда.
Творческих вам успехов и до новых встреч.
P.S. К статье прилагаю архив с моделями-примерами реализации приемов, которые я описал.

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
0
25
13 лет назад
0
Думаю, никто не будет против, если я её опубликую. Кроме того, немного исправил грамматические ошибки.
0
24
13 лет назад
0
Внезапно ^^
0
37
13 лет назад
0
молодец <3 сам давно хотел сделать
0
23
13 лет назад
0
Первое полезно ваще! Ток лучше бы написали класных статей о создании моделей для нубасов, тогдв бы стоко не клянчили моделек.
0
3
13 лет назад
0
полезная статья, много нового узнал, сегодняже испытаю)))
0
13
13 лет назад
0
reALien, давай так же про 3д макс,блендер и тп.
жаль этой статьи раньше не было.так бы время сэкономило бы.
0
22
13 лет назад
0
"3. Когда сшиваете вершины треугольниками в vis'e, нужно смотреть на получаемую поверхность с того ракурса, который будет виден в результате."
3.14здеж. Просто нужно выделять вершины против часовой стрелки относительно той стороны, в которую должна быть направлена поверхность. Т.е. выделение типа:
3-2
|/
1
даст нам поверхность направленную на нас.
а выделение:
1-2
|/
3
даст поверхность направленную от нас.
Знание этого позволяет экономить сотни времени, не вращать лишний раз камеру и не заниматься онанизмом, "инвертируя нормали".
PS: На самом деле это все напрямую связано с процессом отрисовки модели, в секции вершин полигонов файла модели вершины распологяются именно в том порядке, в котором вы их выделяете, и, соответственно, так же будут считаны интерпретатором варкрафта, и точно так же будут им переданы на отрисовку в Direct3d или OGL (в зависимости от настроек), и вот как раз Direct3d или OGL будет считать лицевой именно ту сторону, которая задается порядком ввода вершин против часовой стрелки. А направление нормалей совершенно не влияет на "лицевую" сторону поверхности. Попробуй развернуть нормали при помощи того же 40-го мдлвиса просто их вращая - лицевая сторона не изменится.
1
15
13 лет назад
1
reALien, гуд статья... даже несколько вещей не знал... =) но это просто твой практический навык... "Если хочешь накормить человека, дай ему удочку, а не рыбу" =))) Это я к тому, что лучше бы ты рассказал подробнее о свойствах матерьялов, анимации поверхности, партиклах и ленточных источниках... А в пример привести эти приёмы... Тогда статья была бы исчерпывающей...
Попробуй развернуть нормали при помощи того же 40-го мдлвиса просто их вращая - лицевая сторона не изменится.
В МДЛвисе при редакции геометрии (F1) материал односторонних поверхностей отображается двусторонними... (причина этому сам МДЛвис...) Переключившись на редактирование анимаций (F3) можно увидеть триугольники у которых нормали направлены в не ту сторону...
А то, что треугольники надо создавать против часовой, это тру... тогда нормали направлены в лицевую сторону...
И ещё на счёт нормалей... вот результат моего небольшого эксперимента по вращению нормалей в разных плоскостях... думаю все очевидно...
0
7
13 лет назад
0
Тру статья, мне поможет!
0
26
13 лет назад
0
Про полупрозрачные материалы я давно знал, а вот про блеск пригодится... А металлический блеск сымитировать этим можно?
А, вижу.
0
24
13 лет назад
0
Метод айрона протещу, если не прав, то впишу, ибо сам не знал О_О
Блеск да. любого материала выходит, лезвие меча например.
Ок, проверил, ты прав, но я еще бы поспорил, что больший геморой - быстро выделять вершины рамкой и в случае чего кликать борот, или все время тыкать по одной следя за нужным порядком.
Так что оставлю оба варианта (апдейт отправил на аппрув)
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.