3D Engineering

...Лучшее из общего.

  • Увеличить размер шрифта
  • Размер шрифта по умолчанию
  • Уменьшить размер шрифта

ЖАЛЮЗИ

Это наиболее сложная текстура (и шейдер) во всей сцене, что можно видеть на итоговой картинке. Жалюзи построены из нескольких объектов, и каждый из них имеет собственную текстуру и шейдер. Я использовал ТОЛЬКО ОДИН файл для текстуры и три или четыре "dirt mask".

Жалюзи – центральная точка моей сцены. Большинство зрителей начинают рассматривать картину с центра. Затем взгляд переходит на пятно горячего цвета (красный, оранжевый, желтый). На моей картине таковые имеются в правом верхнем углу, на птицах и листьях. Наконец взгляд осматривает картину в целом. Поэтому я ДОЛЖЕН БЫЛ сделать реалистично выглядящие текстуры...

Теперь о том, как это сделать…

Сначала я нашел подходящие текстуры на "TOTAL TEXTURES CDs" и скопировал две картинки – текстуру и карту рельефа на свой диск. Также я скопировал несколько Dirty Mask (штук пять). Эти маски я использовал уже описанным способом (см. КИРПИЧНАЯ СТЕНА и ПОДОКОННИК). Результат вы можете видеть на картинке. Наиболее важные вещи я выделил

  1. Целая картинка с "TOTAL TEXTURES CDs"
  2. Итоговая картинка, скомпонована с пятнами грязи и подретуширована
  3. Результат рендеринга (текстура разбита на части. Каждому объекту назначена своя часть

Создание и текстурирование сцены

При размещении грязи я старался поместить ее сразу на нескольких досках (обведено зеленым цветом). Некоторые пятна можно значительно увеличить, но в этом случае нужно использовать другое значение прозрачности слоя (отмечено тонкими синими стрелками). Пятна грязи, которые я хотел переносить на итоговую текстуру, выбирались с использованием "Color Range". (Не забывайте работать с несколькими слоями) Используйте средство "feather", установив его значение примерно в 5 пикселей (иногда более, что зависит от того, как велика текстура, с которой Вы работаете). Затем, используя стандартный "Brush Tool" и любой цвет (для моей текстуры я выбрал темно-красный), выберите подходящую кисть и заполните выделение. Затем поменяйте прозрачность слоя.

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

Сохраните полученные текстуры (Не используйте .PSD формат, нам нужны обычные однослойные изображения. Информация о слоях больше не нужна.). Откройте то, что получилось. Так же откройте карту рельефа, она нам понадобится. Используйте инструмент "Rectangular Marquee", чтобы выбрать нужную Вам доску, копируйте ее и вставьте в новую картинку. Наиболее быстрый способ сделать это – использовать клавиатуру.

Создание и текстурирование сцены

  1. Выберите "доску"
  2. Нажмите Ctrl-C, чтобы скопировать выбранную часть в буфер обмена 
  3. Сохраните выбор (Select>Save Selection, не забывайте использовать разные имена для сохранения) 
  4. Создайте новую картинку с размерами выбранного участка. Для этого просто нажмите (Ctrl-N)
  5. Нажмите (Ctrl-V), чтобы вставить картинку из буфера обмена.
  6. Сохраните получившуюся текстуру доски 
  7. Теперь откройте карту рельефа, и загрузите записанные ранее параметры выделения. (Select >Load Selection, выбрать имя файла в который сохранено выделение соответствующей доски)
  8. Нажмите (Ctrl-C), чтобы скопировать карту рельефа доски
  9. Нажмите (Ctrl-N), чтобы открыть новую картинку
  10. Нажмите (Ctrl-V), чтобы перенести изображение из буфера обмена
  11. Сохраните полученную карту рельефа доски

Повторяйте шаги с 1 по 11 для каждой доски снизу вверх. Вот как выглядит результат моей работы.

Возвращаемся в 3ds max и создаем по одному шейдеру на каждый объект. Не забудьте назначить "bump map", "specular", "diffuse" и т.д.

А теперь… нажимайте кнопку RENDER SCENE ...

THE END !!!

 

Архив статей

 апр   Май 2019   июн

ВПВСЧПС
   1  2  3  4
  5  6  7  8  91011
12131415161718
19202122232425
262728293031 
Julianna Willis Technology

Случайная новость

vladirr

Приветствую всех снова... Сегодня мы с вами продолжим работу по улучшению интерфейса макса и приведению его в соответствие нашим пожеланиям. Исходная посылка - та же, что и в прошлом уроке - мы подготавливаем удобные инструменты для lp-моделирования. На примере сегодняшнего урока я хочу показать, как можно упростить себе жизнь, не заморачиваясь на серьезное программирование.
Итак, вводная - мы моделируем, требования к моделингу жесткие, мы практически постоянно должны контролировать количество вершин, фейсов, направления ребер... По умолчанию в максе отображаются только видимые ребра (Vizible Edges), но для нашей ситуации это не подходит. Конечно, мы можем кликнуть правой кнопкой по объекту, выбрать его свойства, снять флажок "Edges Only" и нажать OK. Итого - 4 операции, для обратного действия - столько же. Много! Нам желательно - один клик, либо нажатие одной клавиши.
Перво-наперво идем Customize->Customize User Interface вкладка Keyboard...

и убеждаемся, что такого параметра для назначения горячей клавиши нам не предоставили :( Смотрим то же на владке Toolbars - может быть, есть возможность вытащить на панель закладок кнопку с данной функцией? Опять неудача. Ищем пункт Properties в списке Action, в надежде посмотреть на макроскрипт и "выдрать" оттуда необходимый нам кусок...

М-да... Редактирование макроса для свойств объекта нам недоступно... Приблизительно к таким же по существу результатам приводит попытка найти информацию в справке по максскрипту. Тупик? Не совсем. Открываем окно MaxScript Listener и активируем MacroRecorder

- этот инструмент позволяет фиксировать большую часть событий, происходящих в пределах макса. Создаем бокс, кликаем по нему правой кнопкой мыши и выбираем пункт - Properties, снимаем галку Edges Only и жмем OK. смотрим в окно MaxScript Listener:

Ура, у нас есть параметр! Вводим для проверки в окне MaxScript Listener:

$.alledges = not $.alledges

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

--------------------------------
macroScript ShowEdges
category:"MAX Script Tools"
internalcategory:"MAX Script Tools"
buttontext:"ShowHiddenEdges"
toolTip:"Show hidden edges"
(
)
------------------------------------

Сохраняем в каталог //root_max/ui/macroscript под именем Macro_AllEdges и заменяем разрешение на *.mcr. Перезапускаем макс и по аналогии с прошлым уроком размещаем кнопку нашего макроса на панели Main Toolbar. Теперь поработаем над красивостями :) а потому открываем фотошоп или аналогичный редактор, и рисуем иконки. В соответствии со справкой, нам надо нарисовать 4 *.bmp файла с общим названием и разными префиксами, я их обозвал MacroScriptTools*.bmp :
1. MacroScriptTools_16a.bmp - разрешение 16x15px, оттенки серого (определяем прозрачность иконки)
2. MacroScriptTools_16i.bmp - разрешение 16x15px, собственно сама иконка (маленькая)
3. MacroScriptTools_24a.bmp - разрешение 24x24px, оттенки серого (определяем прозрачность иконки)
4. MacroScriptTools_24i.bmp - разрешение 24x24px, собственно сама иконка (большая)

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

Замечательно, размещаем полученные изображения в папку
\\root_max\UI\Icons\

Идем обратно в макс и кликаем правой кнопкой мыши по созданной нами иконке макроса. Выбираем в контекстном меню пункт Edit Button Appearance и переключаемся в положение Images Button.

В разделе Group выбираем нашу группу: MacroScriptTools , в соответствии с названием, данным иконкам. В окне ниже - только одна иконка, и это правильно, поскольку данную группу создали мы и в ней всего одна иконка. Выбираем ее и жмем OK. Получили аккуратную иконку в интерфейсе :)


Щелкаем по иконку правой кнопкой мыши, выбираем пункт редактирования макроса и дорабатываем тело скрипта:
-----------------------------------
macroScript ShowEdges
category:"MAX Script Tools"
internalcategory:"MAX Script Tools"
buttontext:"ShowHiddenEdges"
toolTip:"Show hidden edges"

(
on execute do
(
if $selection.count == undefined then
(
)
else
try( $.alledges = not $.alledges ) catch ()

)


)
--------------------------------

Что мы написали?

Собственно говоря, только то, что если ничего не выделено (if $selection.count == undefined ) - ничего и не делать, в противном же случае (то есть когда что-то выделено) - изменить режим показа ребер выделения на противоположный.
В тело макроса так же добавлена конструкция

try( ...) catch ()

позволяющая избежать ошибки при попытке выполнить поставленную задачу над объектом, не имеющим ребер как таковых. Как и в прошлом уроке, по существу работы данной функции я вас отсылаю к справке :)
Ну что ж, сохраняем макрос (CTRL+S) и "компилируем" его (CTRL+E), создаем в сцене несколько различных объектов и, поочередно выделяя их по одному пытаемся нажать на нашу кнопку... результат очевиден :)

В качестве послесловия. В данном примере, в отличие от предыдущего, мы не стали задавать изменение состояния кнопки макроса, поскольку функция у нас циклична, и кнопка работает как классический триггер - "перебрасывает" объект из одного состояния в другое и обратно. Главная идея урока - помимо создания нужного мне инструмента :) - показать еще один способ поиска решения поставленной задачи, а так же показать "облегченный" алгоритм, подходящий для описания всех действий, изменяющих состояние или свойства объекта, которые можно описать с помощью булевских переменных. Напомню еще раз, что для уже созданного макроса всегда можно назначить горячую клавишу вызова, тогда вам не придется даже нажимать на кнопку, на создание которой потрачено столько трудов :)

Ну вот вроде и все на сегодня - пользуйтесь, экспериментируйте, творите.

Всегда Ваш - VladiRR

далее