Кыштымов Александр Александрович. Он же SKIF, он же SKIF3D.
Родился: г. Владивосток 1980 г.
Проживает: г. Екатеринбург.
С CG познакомился в начале 1998 г.
Профессионально владеет 3d studio MAX, MAYA и множеством более мелких 3D программ.
Хобби: CG, Le Parkour.
Характер нордический, не женат.
Автор серии уроков по MAYA.
От автора: На одном из форумов, посвященных CG, зашла речь о создании кольчуги. А точнее, вопрос стоял так: «Как сделать кольчугу и как её заставить двигаться динамически?» Вот на этот вопрос я постараюсь ответить.
РАБОТА В MAX
- Самым первым делом надо выбрать единицы измерения. Я обычно работаю в миллиметрах, но в данный момент нужны единицы измерения Generic Units . Почему? Да потому что способ, которым будем делать кольчугу, (а точнее генерировать карту глубины) работает только с Generic Units.
- Для начала нужно создать одно кольцо будущей кольчуги на виде сверху.
Используем для этой цели Бублик :) (Create > Standard Primitives > Torus) количество сегментов не важно, но надо, чтоб не было углов (только не увлекайтесь). Я использовал 24 сегмента.
- Повернём его по оси X на 25 градусов.
- Далее надо сделать зеркальную копию этого колечка. Воспользуемся инструментом Зеркало (Tools > Mirror), или кнопкой
параметры на изображении.
- Перемещаем это колечко немного по осям X и Y как на рисунке.
- Выделяем оба кольца и нажимаем клавишу Shift и перемещаем по оси X как на изображении.
- Ну и указываем количество копий. Должно получиться как на изображении.
- Дальше надо создать некоторое количество сегментов кольчуги. Для этого выделяем все объекты и перемещаем по оси X. Не забываем указать количество копий. Вот что получилось у меня.
Думаю, что такого количества сегментов будет достаточно.
- Выделив все кольца, группируем их. Group > Group).
- И перемещаем эту группу на координаты X=0, Y=0, Z=0.
- Создаём направленную камеру прямо над этой кольчугой.
- Обязательное условие - камера не должна искажать наши объекты. То есть камера должна отображать без учёта перспективы. Это сделать легко. Просто поставим галочку в настройках камеры Ортографическая проекция (Orthographic Projection).
Для того чтоб вы поняли, о чём идёт речь, я сделал 2 картинки. На изображении 1 вид из камеры с перспективой, а на втором изображении без учёта перспективы.
- Координаты X и Y у камеры должны быть равны 0. А вот координату Z надо подобрать индивидуально с учётом того, что видно в камеру. У меня получились значения координат 0.0.700. А вот цель этой камеры имеет координаты 0.0.0
- Создадим 2 рулетки (Create >Helpers > Taper) назовём их R 1 и R 2.
ЭТО ВАЖНО!
Следующие 3 условия очень важны.
- Координата по Z самих рулеток должна быть в точности как у камеры
- А вот координаты их целевых объектов должны быть у R 1 немного ниже колец нашей кольчуги (у меня получилось 0.50.-35).
- У R 2 - наоборот немного выше (у меня получилось 0.-50.35).
Для чего мы это вообще делали?... а всё достаточно просто: нам надо определить минимальное и максимальное расстояние от камеры до кольчуги, для генерации Z Depth.
Что это такое спросите вы… это достаточно сложно объяснить в 2 словах. Где-то на просторах Интернета я наткнулся вот на такое определение:
Элемент Z Depth (глубина) позволяет записать глубину сцены, т.е. расстояние от камеры, в виде черно-белого градиента. Этот элемент используется обычно в качестве маски. Он имеет дополнительные настройки, определяющие пределы, в которых строится градиент (Z Min/Z Max).
Если не понятно, то поищите информацию об этом в хелпе или в инете.
- Итак, идём в настройки стандартного рендера программы (Rendering > Render) или нажмите F10.
И сразу же следуем на закладку Элементы Рендера (render Elements). Жмём кнопку Добавить (Add) и в появившемся окне выбираем элемент Z Depth.
- Далее выбираем рулетку R 2 и вписываем значение расстояния в поле Z min (у меня получилось 665).
- А значение расстояния рулетки R1 в поле Z max (у меня получилось 735).
- Выбираем камеру, устанавливаем хорошее разрешение и жмём кнопку Render.
- ЖДЁМ и в конце рендера увидим вот такую картинку (но это при условии, что всё сделали верно.)
- Дальше сохраняем эти 2 файла: первый (Camera 1) сохраняем в TGA обязательно с альфа каналом (при этом создастся сам файл ИМЯ_TGA и ещё один файл А_ИМЯ.TGA. так вот именно второй файл нам и понадобится.).
Второй с Z Depth сохраняем в любой формат.
РАБОТА В ФОТОШОПЕ.
- Открываем в фотошопе результат Z Depth и А_ИМЯ.TGA (в дальнейшем А_ИМЯ.TGA буду называть просто альфа)
- Выделив альфу полностью, копируем её в буфер (Ctrl + A – выделить всё и Ctrl + C – скопировать).
- Выделив Z Depth, вставляем то, что скопировали(Ctrl + V – вставить).
В редакторе слоёв будет как на изображении.![]()
- Теперь в редакторе слоёв уменьшаем прозрачность… эээ или правильнее сказать непрозрачность короче Opacity.
- И делаем бесшовную текстуру.
Будьте внимательны при выполнении этого шага. Выбираем инструмент Crop Tool, и выбираем как у меня на рисунке.
- Чтоб проверить правильно ли вы сделали нужно сделать следующее:
- Выделите слой с Z Depth а потом примените фильтр Смещение (Filter > Other > Offset). В поля введите любое значение при этом ваше изображение сдвинется… если после применения этого фильтра не видно никаких косяков, то всё нормально… отменяем последнее действие. Обычно косяки видно сразу. :)
- В редакторе слоёв увеличиваем Opacity и копируем слой с альфой в буфер (Ctrl + A – выделить всё и Ctrl + C – скопировать).
- Из редактора слоёв удаляем слой с альфой.
- Создаём новый файл в фотошопе (File > new) ничего не меняя, жмём ОК. Далее вставляем то, что скопировали(Ctrl + V – вставить).
- Сохраняем Z Depth и называем его KOL.JPG
- Файл с альфой тоже сохраняем под именем ALPHA.JPG.
- В итоге у нас получилось 2 файла KOL.JPG и ALPHA.JPG.
Вы спросите, а зачем мы так мучались в фотошопе? Вставляли копировали и т. д.
Объясняю… обрезать надо было обе текстурки абсолютно одинаково, чтоб потом не было проблем.
И СНОВА MAX
- Ну, теперь обратно в макс, или майку, или ещё куда-нибудь... в данном примере я буду использовать VRay. Но многие рендеры поддерживают дисплейс.
В максе на объект накладываем VRay Displacement Mod. в него загружаем Z depth.
- Далее перетаскиваем Z depth из VRay Displacement Mod в редактор материалов ну и увеличиваем Тайлинг (Tiling).
- Да и ещё… в модификаторе VRay Displacement Mod надо установить 2D mapping (landscape).
- При рендере получается вот такая картинка.
- Далее накладываем на объект материал (любой... бронзу или медь, или пластмасс или вообще люминтия или чугуния J) и на прозрачность кидаем альфу.
- Ну и тайлинг альфы делаем такой же, как в Z depth...
Вот и всё...
Вот что у меня получилось.
И с двойным плетением.![]()
Ну и кольчуга, состоящая из плоских колец.
При помощи этого способа можно добиться очень даже неплохих результатов…
Добавить, например бампа, спекуляр... ну и т. д.
Если предварительно сделать нормальную UW развертку, а потом применить вирей дисплейс, то он (дисплейс) будет опираться на координаты UW.
Для того чтоб эта кольчуга вела себя соответственно, достаточно дисплейс применить к объекту, а после чего симулировать ткань.
Кстати подобным образом можно делать не только кольчугу. К примеру, можно делать плетёные корзины, вязаные вещи, макраме и ещё много чего...
и ещё всё это можно делать практически в любом 3d софте. Надо только разобраться с Z depth.
этот способ для себя я разработал давненько... возможно, кто-то делает так же...
если кому-то помог, то это ЗЕР ГУД.