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

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

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

На форуме часто можно встретить вопрос «Что делать если в 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. К статье прилагаю архив с моделями-примерами реализации приемов, которые я описал.

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
3
24
13 лет назад
3
Полезная статья, жаль, что я сам до этого доходил. В базу.
1
13
13 лет назад
1
Первое больше всего оказалось мне полезным. Долго ломал голову, как бы убрать эти треугольники.
Действительно, хорошая статья.
0
16
13 лет назад
0
да статья гуд, жаль мне приходилось всё это решать методом Тыка=)
0
25
13 лет назад
0
за подробные скриншоты вбазу <3
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-го мдлвиса просто их вращая - лицевая сторона не изменится.
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.