8 заметок с тегом

3d

HDR освещение

24 января 2013, 23:59

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

Итак, где я их беру.

Я уже писал, что я их нигде не качаю. Мы их создаем сами долгим, муторным способом (половину приходится выкидывать). Есть, конечно, способы проще, но в них надо вложить не один десяток тысяч рублей. Итак, как бы то ни было, панорамы мы создаем сами и даже продаем их на специально для этого созданном сайте sky-HDRi.net. Можно купить панорамы и в зарубежных магазинах, типа 3docean.net, но там они дороже на 6-8$ — это раз, и их нужно будет использовать вместе с другим источником света, типа VraySun — это два (а потом попробуйте повернуть HDR и солнце синхронно). И еще одна главная их проблема в том, что они там не светят нихрена, ну то есть чётких теней от объектов там не увидеть. Для примера, вот статья Бертрана Бенуа, где он описывает, как нужно извратиться, чтобы тени стали слегка чётче.

Мы же с Толей нашли способ делать наши HDRi-текстуры самодостаточными. Им не надо никаких дополнений и танцев с бубном, поэтому их очень просто использовать.

Как их использовать.

Я очень подробно постарался показать в этом видео. Для примера взята сцена, поставляемая с каждой нашей панорамой. Если вы не покупали наших панорам, можете скачать эту сцену, но там не будет текстур.

Как физически корректно настроить свет.

Никак. Но можно настроить его правильно и пропорционально. Для этого нужно сначала создать и настроить VrayPhysicalCamera. Настройки такие же как на реальном фотоаппарате — берете стандартные для нужного типа освещения настройки. Если солнечный день, настраиваю так: диафрагму f=8 или 5,6. Shutter Speed (выдержка) = 1/200. ISO в реальном фотоаппарате лучше не завышать, потому что это влияет на шум матрицы, поэтому оставляю по привычке не больше 200.

В Вирее нет понятия дроби, только десятичные знаки, поэтому поле для значения выдержки они уже заранее подготовили в -1 степени, поэтому нужно вбивать только знаменатель. Хотите выдержку 1/250 сек. — вбиваете 250 и т. д.

После того, как настроили камеру, вставляем VrayLight в режиме Dome, и там подбираем значение Multiplier так, чтобы смотрелось корректно для данных погодных условий и времени дня. Так как само по себе значение Muiltiplier — неведомая условная единица, а на силу света влияет качество текстуры, то настроить свет физически корректно невозможно.



Если возникнут вопросы, задавайте в комментариях, попробую ответить.

Моделирование оконных рам

3 января 2013, 21:16

В работе с 3dsmax я и мои коллеги постоянно используем модификаторы для моделирования.

С помощью модификаторов удобно редактировать, например, окна.
Как правило, они не всегда одинаковые по размеру. С виду, вроде, все красиво и с ритмом, но то тут, то там различие в 10-20 см, потому что оси, колонны, факверх и вообще. Поэтому окна в 3д-модели постоянно приходится часто менять-подтягивать.

Есть несколько основных методик их моделировать, но описанная в данной заметке лично для меня самая простая.

Обычно оконные профили выглядят в сечении вот так:

Картинка взята отсюда

На что тут стоит обратить внимание: видимые части рамы делятся на 4 материала — пластик, уплотнительная резина, внутренняя часть стеклопакета (металл), ну и сам стеклопакет.

Рисуем профиль и определенным сегментам назначаем свой ID, к которым будут привязаны материалы:

Для герметика (резины) выбран ID=2, для пластика — ID=1, для металла ID=3, для стекла ID не нужен, это будет отдельный объект.

Рисую раму. Создаю прямоугольный сплайн, на который назначаю модификатор Sweep. У меня получились такие настройки:

Раскладываю стойки и рамы внутри основной. Простые вертикальные одиночные стойки делаю так же сплайном, на который наложен Sweep того же самого профиля. В конце добавляю модификатор Symmetry.
Чтобы замоделить открывающуюся створку, проделываю то же самое. Рисую прямоугольный сплайн, назначаю на него тот же самый Sweep. Получившуюся раму вставляю в существующую так, чтобы она повторяла вышеуказанный разрез профилей (тот, который в жизни).

Можно, конечно, все замоделить как в жизни, разные профили для разный рам, даже Chamfer наложить в углах, где нужно. Но это лишние ресурсы, а результат при масштабе здания тот же. Да и профиль для модификатора Sweep всего один.

Вставляем стекла для каждой рамы. Рисую сплайн, выдавливаю его толщиной, как в профиле стеклопакета — 30 мм. И добавляю модификатор Shell в 5 мм — получается однокамерный стеклопакет.

Материал. Для рам это Multi/Sub-Object, в котором 3 слота забиты своими материалами, соответствующими ID, которые я уже назначил сегментам сплайна при моделировании.

Схема материала выглядит так:

Этот материал смело назначаем прямо на профиль. Распределение по ID произойдет автоматически. Не нужно выделять ни полигоны, ни как-то еще распределять. Все уже на месте.

Теперь, при изменении размера или шага окон, нужно менять только сплайн (рама и стекло), у которых всего по 4 точно привязанные точки.

Важно: Такая работа с модификаторами — как пространственно-временной континиум — любое изменение в начале пирога модификаторов повлияет на изменение последующих. И если вы работаете с полигонами, стоит быть более внимательными. Потому что если на модификаторе, лежащем в середине пирога, поменять количество полигонов в объекте, вышележащие модификаторы собьются. И очень важно понимать, что почти всегда в таких случаях Ctrl+Z не поможет.

Создание дорожной разметки

21 июля 2012, 2:11

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


Материал асфальта состоит из двух частей: асфальта и смешивающейся по какой либо маске разметки. Самый простой способ создать такой материал — VrayBlendMtl. Главный ингредиент этого материала — маска по которой смешиваются эти 2 объекта. Раньше удобнее всего было ее нарисовать (растровой текстурой), но вблизи такая маска размывалась.

Сейчас в новом Вирее появилась текстура VrayDistanceTex. Она работает очень похоже на VrayDirt, но это на первый взгляд.
Если один предмет пересекается с другим, образуется текстура, которую я использую в качестве маски. Текстура может образовываться как снаружи пересечения, так и внутри. Для разметки как раз подойдет второй.
Для этого я рисую сплайнами разметку и выдавливаю ее модификатором Extrude. Этот объект мне нужен для того, чтобы «внутри» его границ на плоскости асфальта образовалась маска разметки. Объекты обязательно должны пересекаться.

Схема материала:

Настройки VrayDistanceTex:

Я указал, что внутри мне нужна положительная (белая) маска. Остальное меня не интересует, это черный цвет.
Так же я указал объект, от которого нужна текстура.

Чтобы маска была не просто тупо залита в белый материал, я ее немного искажаю смесью процедурных текстур Noise. Смешиваю как обычно текстурой Composite.
Кстати, за просвещение спасибо комментатору из ЖЖ «Anonymous». Раньше я это делал Виреевской картой VrayCompTex. Composite — стандратная текстура всех новых 3д Максов, начиная с 2011. Работает на ура, прямо как смешивание слоёв в Фотошопе, даже режимы те же.

Материал разметки очень простой, над ним я вообще не работал, это просто белый материал с небольшым размытым отражением. Если нужны очень близкие ракурсы, тогда конечно стоит запариться и сделать материал более жизненным, с бампом, царапинами, следами от покрышек и с потёртостями и проч. Это дело вкуса и рациональности траты времени.
Кстати, объект разметки, образующий текстуру, надо скрыть. И если нужно будет поменять разметку, это сделать очень быстро. Достаточно поменять геометрию сплайна.

Послойное наложение текстур

20 марта 2011, 2:47

Допустим, нужно затекстурировать вот такое здание:


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

Краткое содержание действий:

  1. Создание основного материала штукатурки
  2. Создание Bump-текстур: кирпичная кладка и руст на пилястрах
  3. Послойное наложение Bump-карты руста на Bump-карту штукатурки.
  4. Затемнение Diffuse-карты штукатурки в местах швов.
  5. Наложение модификаторов на объект.

Материал штукатурки не представляет собой ничего особенного. VrayMtl, на который назначены текстуры в слоты Diffuse и Bump.

В каждой из текстур необходимо поставить галку Use Real-World Scale и указать реальный размер текстуры (в данном случае 10000х5000 мм). Так же важно назначить канал этой текстуре (Map Channel), например 10.
Точно такие же действия проделываем для Bump-карты, Map Channel тот же — 10.

Изначально я делал его процедурной картой Tiles, но, несмотря на наличие параметра Noise, у меня не получилось создать правдоподобной карты.
Итак, нарисовано 2 карты — кирпичная кладка и широкий руст.

Стоит отметить, что карты имеют насыщенность черного в 50. Это сделано для того, чтобы при наложении этого черно-белого слоя на диффузную текстуру штукатурки, швы не стали просто черными, а лишь затемнились.

Как было сказано выше, я собираюсь наложить Bump только что нарисованного руста на уже наложенный Bump штукатурки, а так же сымитировать швы, затемнив ее Diffuse-карту Bump-картой руста. Причем в результате каждый из них будет управляться отдельно, своим модификатором UVW Mapping.

Этого можно добиться с помощью карты VrayCompTex. Эта карта-плагин работает так же как и режимы смешивания слоев в фотошопе, такие как Multiply, Screen и т. д. То есть умножает (AxB), складывает (A+B), вычитает каналы цветов. Ниже показан пример работы этого плагина.

Пока Bump-карту штукатурки вырезаем: ПКМ → Cut. Вместо нее назначаем VrayCompTex. Возвращаем вырезанную карту в первый слот (это будет основа): ПКМ → Paste (Instance). В нижний слот назначаем нарисованную карту руста. Указываем ей свой канал, отличный от того, что указан штукатурке (я указал 11). Исходя из вышеперечисленных примеров работы карты VrayCompTex понятно, что в данном случае стоит указать режим смешивания текстур Minimum.

Обращу внимание на то, что на рисунке в слоте Source A назначена карта Color Correction. Это сделано для того, чтобы сократить количество используемых текстур, а значит и используемой памяти. Из Diffuse-карты штукатурки, например, можно сделать Bump-карту или просто отредактировать ее яркость, не открывая никаких графических редакторов и не сохраняя дополнительных карт. Управление этой картой-плагином очень простое, поэтому я не буду описывать параметры.

Получилась такая схема материала:

Для читателей, у которых еще не вскипел мозг, имеется бонус. Чтобы сгладить углы пилястр, я применяю метод, описанный в предыдущем уроке — наложение дополнительным слоем процедурной карты VrayEdgesTex. Этого можно добиться, смешав ее с только что созданной «группой слоев». Смешивать будем опять же картой VrayCompTex.

Для этого вырезаем эту созданную группу из слота Bump: ПКМ → Cut.

Назначаем на ее место новый VrayCompTex. Вставляем в слот «Source A» вырезанную группу ПКМ → Paste (Instance). А во второй слот «Source B» назначаем карту VrayEdgesTex. В ней указываю World Units: 10. Режим смешивания — Maximum:

Так выглядит итоговая схема слота Bump:

Такие же шаги (за исключением бонусной части) проделываем для Diffuse-карты, чтобы затемнить швы руста. Каналы (Map Channel) должны соответствовать назначенным ранее, то есть для текстуры штукатурки — 10, для текстуры швов — 11. Так же можно попробовать разные режимы смешивания текстур, например, Multiply.

Материал готов, осталось назначить по модификатору UVW Mapping для корректировки положения каждого из слоев. Первый — с параметром Map Channel 10 и активной галкой Real-World Map Size (так как мы заранее указали ее размер), он будет контролировать положение текстур штукатурки. Второй — модификатор с параметром Map Channel 11 и регулируемым размером в режиме Box. Такой режим выбран потому что я хочу подобрать оптимальный размер текстуры.

Теперь каждый из «слоев» регулируется отдельно, и настроив нужное мне расположение текстуры штукатурки, я могу подбирать расположение и размер швов руста на стене и пилястрах. При этом я сохраняю одинаковый размер штукатурки на всех элементах здания, что немаловажно для результата. Так же я сэкономил ресурсы памяти, так как везде использовал только одну текстуру штукатурки.

Таким же алгоритмом я создал материал пилястр с горизонтальной рассечкой, фризы и др. Вообще, это один из немногих способов применения карты VrayCompTex, так как ситуации, в которых нужна послойная управляемость текстур, встречаются довольно часто.

Примечание.
В ЖЖ мне подсказали, что вместо VrayCompTex карты проще и функциональнее использовать стандартную (с 2009-й версии 3dsmax) карту Composite. Работает так же, как режимы смешивания как в Фотошопе.

Полезные мелочи в текстурировании

9 января 2011, 2:24

Раньше, при создании и текстурировании моделей с помощью модификатора UVW Mapping, я каждый раз «запекал» текстуру, конвертируя объект в Editable Poly. Этот метод не был удобен, так как в дальнейшем часто приходилось менять размер/положение текстуры, и еще более не удобен, если на объект назначалось несколько разных материалов. Все они, как правило, содержали текстуры разных размеров, поэтому приходилось постоянно назначать новый модификатор UVW Mapping, вспоминая размеры каждой текстуры.

Я уже упоминал, что любые модификаторы (в том числе UVW Mapping) можно назначать друг на друга, послойно. Но чтобы один модификатор не перебивал свойства нижележащего, существует параметр Map Channel, номер которого определяет воздействие данного модификатора на соответствующую текстуру. Иными словами, текстурой с Map Channel 86 сможет управлять только модификатор UVW Mapping с параметром Map Channel равным 86.

С выходом версии 3ds max 2008, для текстур и модификатора UVW Mapping появился новый параметр Real-World Scale. Он позволяет всего один раз указать реальный размер текстуры в свойствах материала, и в дальнейшем модификатор автоматически будет использовать эти данные.

Позвольте мне показать, чем полезны эти свойства, на простом примере. Допустим, у меня уже есть «порезанный» как мне нужно объект — пусть это будет пол. Мне нужно присвоить ему 3 разных материала.



Создаю Multi/Sub-Object материал, оставляю в нем 3 слота кнопкой Delete. В каждый из слотов назначаю нужные мне материалы. В данном случае это материалы коврового покрытия, плитки и мозаики.



Общая схема материала:

Важно указать Map Channel для каждой текстуры и ее реальный размер, для этого нужно поставить галку Real-World Scale. (Кстати, это одна из проблем программы 3ds max — в это поле нельзя ввести значение больше 10000 мм (10 м). Если знаете, как с этим бороться — пришлите, пожалуйста, решение на marat@3d-ferma.ru. Map Channel я обычно указываю такой же, как и ID у полигонов, на котором этот материал будет назначен. Так проще ориентироваться при большом количестве материалов и модификаторов. Для улучшения отображения карты под острым углом зрения лучше поставить значени Blur 0,1. Этот параметр по сути действия очень похож на эффект Френеля, только вместо увеличения отражения, он увеличивает размытость текстуры.

Назначаю ID полигонам в соответствии с созданным Multi/Sub-obj материалом:



Применяю материал и назначаю модификаторы UVW Mapping, в их опциях указываю Map Channel, которыми хочу управлять. Так же важно отметить галкой Real-World Scale.



Теперь каждую текстуру можно регулировать, не влияя на соседние:

Когда в списке модификаторов, назначенных на объект, их накопился целый пирог и вылезла полоса прокрутки, удобнее будет ориентироваться по именованному списку. Поэтому после каждого назначения, я сразу меняю имя (ПКМ на модификатор → Rename)

Режим работы горячих клавиш в 3dsmax

1 октября 2010, 19:06

Раньше хотелось грязно ругаться при назначении на объект Edit Poly, так как когда этот объект выделен, горячие клавиши страдали непонятной фигней. Клавиша «T» всегда была переключалкой на вид сверху, а тут стало Tesselate и начало добавлять полигонов объекту.


Переключалкой с каламбура на нормальный режим служит кнопка Keyboard Shortcut Override Toggle.

Как это работает:

  • Когда вкл: горячие клавиши, присущие выделенному инструменту (модификатору, например) имеют приоритет над стандартными горячими клавишами.
  • Когда выкл: стандартные максовские горячие клавиши имеют приоритет над локальными.

То же касается и инсрумента Walk Through, который позволяет прогуливаться по сцене.

У этого инструмента тоже есть локальные горячие клавиши. Например, клавиши «[» и «]» уменьшают/добавляют скорость перемещению, а клавиша «Q» переключает из режима «медленно» в режим «быстро». Но это работает только с включенным Keyboard Shortcut Override Toggle.

Навесной фасад из композитных панелей. Материал.

8 сентября 2010, 19:02

Существует много производителей композитных панелей. У всех есть свои каталоги с образцами покрытия. Сами покрытия бывают чаще либо с эффектом «металлик», либо глянцевые покрытия.В своей работе при подборе цвета композита, коэффициента отражений и степени отражений, я ссылался на фото готовых объектов и образцы в каталоге производителя. Стоит отметить, что образец 7х4 см, вклеенный в картонку формата А4, при комнатном освещении ни коим образом не помог мне понять свойства материала, так как в жизни огромные плоскости композита при дневном свете (или тем более пасмурной погоде) выглядят совершенно иначе.Фотографии более информационны в этом смысле, но тоже имеют ряд недостатков — погодные условия, окружение (а следовательно и отражения и цвет), ракурс снимка (угол камеры относительно плоскости панелей), что влияет на восприятие эффекта Френеля (Fresnel reflection).Поэтому чтобы точно передать свойства конкретного типа композита желательно ;живьем увидеть и сфотографировать несколько ракурсов уже обшитого этим композитом здания.
Так как я использовал каталог и фото готового объекта, мне пришлось потратить некоторое время, чтобы подобрать степень отражения, размытость отражений и цвет композита.Так выглядел материал композита при коэффициенте размытости (Refl. Glossness) = 0,8 (Параметр BRDF — Ward):t2_e1_s1.jpgМинус в том, что очень быстро размываются отражения близко расположенных друг к другу плоскостей, иными словами, четкость отражение не тянется, а сразу резко размывается (в жизни композит вблизи отражает достаточно четко):t2_e1_s2.jpgПробую поставить коэффициент Refl. Glossness = 0,9:t2_e2_s1.jpgОбратный эффект — вблизи отражение такое, которое нужно, но недостаточно сильно размывается дальше:t2_e2_s2.jpgСовмещаю оба материала посредством VrayBlendMaterial. Base material — это VrayMaterial с указанными выше настройками (Refl. Glossness — 0,8). Coat material — копия основного матерала, только Refl. Glossness — 0,9. Цвет смешивания (Blend amount) оставляю по умолчанию серый (смесь материалов 50/50):t2_e3_s1.jpgОтражения получились такими, какими нужно, и стали контрастнее, что добавляет губину объема форме:t2_e3_s2.jpgЧтобы сделать швы более реалистичными и более заментыми при разных углах, в диффузный слот (Diffuse) назначается процедурная карта VrayDirt:t2_e4_s1.jpgТак же это сделает более объемными внутренние углы, образующиеся при пересечении плоскостей:t2_e4_s2.jpgИ самый мой любимый эффект — скругление углов панелей процедурной картой. (Стоит отдельно отметить, что процедурные карты — это мощный инструмент, с помощью которого можно творить удивительные вещи).В слот Bump назначается процедурная карта VrayEdgesTex (Карта выделяет указанным цветом и указанной толщиной грани объекта — edges. Чаще всего используется для рендера «сетки»):t2_e5_s1.jpgПараметры простые — ширину ставлю 5 мм, цвет белый (UPD: тут мне подсказывают, что для данного случая цвет не важен):t2_e5_s2.jpgПолучаем эффект сглаживания углов:t2_e5_s3.jpgСтоить помнить, что карта действует на все грани объекта, куда назначен этот материал. То есть лучше либо избавляться заранее от промежуточных (пересекающих полигоны) граней, либо изначально делать модель с минимальным необходимо-достаточным количеством полигонов/граней.Все приведенные изображения сложно сравнить, так как они очень похожи и изменения сразу не заметить. Поэтому прикладываю гиф-анимацию вышеприведенных шагов.t2_e6_s1.gif

Навесной фасад из композитных панелей. Геометрия.

4 сентября 2010, 18:49

Возможно, из 100% людей, занимающихся 3D, 99% знали и использовали такую методологию в своей работе. До некоторого времени я входил как раз в тот оставшийся 1%. Тут нет ничего сверхъестественного и хитрого, тем не менее, такой подход в повседневной работе очень облегчает мне жизнь.



В современной архитектуре часто используется система навесных фасадов. Снаружи это кассеты из композитного материала, которые стыкуются друг с другом, ширина шва между кассетами около 10 мм. В 3dsmax с таким фасадом все обычно — примитивная малополигональная форма режется (Quickslice) по сетке как нам нужно, грани (edges) выделяются, а затем вдавливаются (extrude).

Примечание. Можно полигоны выделить и выдавить их (Bevel) в режиме Bevel Type: By Polygon. В итоге получим то же самое: каждый выдавленный полигон — это кассета из композита.

Но есть очень важная деталь: в жизни кассеты не могут стыковаться на углу, как показано на рисунке выше. Это обусловлено технологией монтажа и здравым смыслом, который еще и упирается в стоимость производства. Поэтому угол здания с навесным фасадом закрыт и выглядит так:

Поэтому правильнее и проще использовать первый способ моделирования швов навесных фасадов.

С первого раза утверждается далеко не все проекты, и изменения случаются часто. А редактирование подобной геометрии вредит здоровью мозга и влечет преждевременную седину. В такие моменты на начинаю мечтать о том, чтобы во всех программах волшебное Ctrl+Z (Undo) работало бы как для всего файла, так и для каждого объекта отдельно. К примеру, сделал в сцене все, решил поменять фаску на раме окна — с 1 мм на 2. Отмена последнего действия для отдельного объекта была бы сказкой для любой программы. Но, к сожалению это не возможно. А если и возможно, то скорей всего труднореализуемо и ресурсопожираемо.

Но в 3dmax этот инструмент можно реализовать модификаторами.
Применимо к нашему навесному фасаду, реализуется это так: как только объект фасада и нарезка готовы — выделяем нужные грани, которые будем вдавливать.

Как только выделение готово, выходим из режима редактирования геометрии и накладываем модификатор Edit Poly.

А в нем уже заходим в режим редактирования граней (edges) и вдавливаем их (extrude). Extrusion Height — 20 mm, Extrusion Base Width — 5-7 mm.

Таким образом, если придется что-то менять, будет достаточно удалить модификатор (ПКМ по модификатору → Delete), поменять геометрию, и назначить новый такой же. В некоторых случаях удобно назначать несколько модификаторов друг на друга, или комбинировать их.

Так же я использую модификатор Edit Poly просто для выделения. К примеру, в работе над визуализацией автоцентра БМВ, я смоделировал консольный парапет с помощью порезанного (Quickslice) плэйна, модификатора Shell, потом назначил Edit Poly для выделения нужных мне граней, затем еще один Edit Poly для вдавливания выделенных граней.

Create → Plane → ПКМ → Confert to Poly → ПКМ → Quickslice

Назначен модификатор Shell

Назначен модификатор Edit Poly → Выделение граней

Снова назначен модификатор Edit Poly → Extrude edges (Extension Height — 20 mm: Extension Base Width — 7-10 mm)

Итог