menu

Андрей Климковский - композитор, астроном, бегун-марафонец | творческий сайт и блог
Андрей Климковский - композитор, астроном, бегун-марафонец
творческий сайт и блог       russian | english
          Андрей Климковский - один из ведущих российских композиторов работающих в электронном музыкальном пространстве. Созданные им образы - "Музыка Небесных Сфер", "Звездное небо", "ALEALA" и "DreamOcean" стали классикой жанра получив известность как в России, так и за рубежом. Музыкант регулярно дает феерические живые концерты и сотрудничает со многими другими представителями российской электронной сцены, ведет популярное сообщество о синтезаторах и рабочих станциях, участвует в астрономических экспедициях и практикует здоровый образ жизни.
             

11 декабря 2009 г.

5 минут в Carrara | пятиминутка вторая

            Год назад меня угораздило открыть этот цикл. К сожалению за год я не нашел то ли времени, то ли вдохновения, что бы продолжить. По правде говоря, я натолкнулся на некоторые особенности программы Carrara - досадные ошибки допущенные программистами (и оставляемые из версии в версию!) сломали распланированный тематический ряд. Можно было бы построить тематику повествования иначе, но я просто отодвинул идею вдаль. И вот теперь до этой дали мы добрались.

            Успокою: несмотря на некоторые ляпы в математике и коде (их не так много) Carrara устойчиво является очень мощным и удобным 3D-редактором. Ошибки есть во всех программах, но ценят программы не за их отсутствие, а за конечный результат, получаемый при работе в той или иной программе. Эту программу есть за что ценить.



            В прошлый раз мы немного коснулись интерфэйса программы. Сегодня попробуем первый раз что-то сделать в ней с самого нуля используя самый первый и простой метод моделирования сцены из примитивных объектов или "примитивов" - как их принято называть.

File -> New -> Empty Scene -> Small

            Откроем новую сцену, выберем самую маленькую по масштабу. Не потому, что сегодня у нас совсем небольшая задача, а потому, что мелкими масштабами Carrara оперирует чуть лучше. На наименование единиц измерения назначенных в сцене не обращайте внимания и просто имейте в виду свои собственные единицы, к примеру, сантиметры.

            Carrara предоставляет пользователю наверное с десяток разных технологий моделирования некоторого трехмерного объекта. И для разных по своему характеру объектов лучше подходит то один, то другой метод. Чем проще объект, тем легче его создать, и тем более простая технология для этого годится. Крайним случаем таких рассуждений является тот, в котором объект вообще создавать не нужно - он уже готов и лишь ожидает возникновения потребности в нем у пользователя. И скажу Вам, подобный случай весьма распространен, как и сами эти объекты. Если мы выглянем в окно, то сразу же увидим немало объектов правильной геометрической формы - наши дома очень часто имеют форму параллепипедов, сияюшие в небе Солнце, Луна и другие планеты имеют сферическую форму, Египетские пирамиды... в общем Вы меня поняли. Поэтому все программы трехмерного моделирования обязательно предлагают пользователю набор наиболее популярных трехмерных форм. Эти объекты называются среди любителей трехмерного досуга и профессионалов "примитивами". С них можно начать конструирование своего дворца, автомобиля, космического корабля, но в процессе работы перейти к более высокотехнологичным приемам, сконвертировав "примитив" в объект другого типа. Сегодня мы не будем вдаваться в такие сложности и останемся на "примитивном" уровне. И даже его не пройдем полностью.

            Все "строительные материалы" Carrara расположены над рабочим окном. Среди них и наши "примитивы" - самая первая пиктограмма в ряду. По умолчанию она отображает примитив "Сфера". Но нажав на маленький треугольничек под пиктограммой сферы, можно созерцать их все - 7 геометрических фигур - Сфера, Куб, Конус, Цилиндр, Икосаэдер (правильный 20-гранник), План (квадрат - двумерная фигура), Неограниченный План (бесконечная плоскость). Восьмой из участников этой группы объектов - "Splat" - геометрической фигурой и, тем более, "примитивом" не является и оказался здесь по недоразумению - при введении новшеств 6-й версии программы разработчики не нашли для него лучшего места. Что это такое - "Splat" - мы сегодня не узнаем. Важно лишь, что это не "примитив".

            "Примитивы" обязательно пристутствуют и в других программах трехмерного моделирования и разные программы предлагают пользователю разный их набор. Так, кроме существующих в Carrara, программа Bryce предлагает примитив пирамиды и торуса (причем, редактируемый по соотношению радиусов!), а 3D Max - еще и примитив Чайника с носиком. На фоне этого набор примитивов Carrara выглядит очень скудно. Соглашусь, что "Пирамиды" очень нехватает, потому, что Египетские пирамиды... Икосаэдер явно лишний, ни разу я его не использовал. И все же "Примитивы" это не то, что делает 3D-редактор ценным. Они полезны, но не более того. В 90% случаев трехмерщики делают объекты своих сцен вручную с нуля. Примитивы используются нечасто. Сегодня я постараюсь все же показать, что применение примитивов может быть оправдано, а результат окажется вполне качественным.

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

            Хочу привести такой простой пример. В свое время (да, наверное, и сейчас) была такая мода или традиция - входишь в какое-то солидное заведение, и тут же - в холле, в самом видном месте на столике установлен или макет этого заведения, или же план прилегающей территории. Разумеется все составляющие и детали этого макета имеют весьма условный внешний вид и все больше "прямоугольную" форму - все как из кубиков или в лучшем случае - из конструкотра LEGO. И правильно - назначение макета или плана местности не в том, что бы показать посетителю каждую кочку или кирпич, но успешно сориентировать, не позволить заблудиться. Вот подобным макетом мы сегодня и займемся.



            Перетащите выбранный Вами примитив (очевидно, это будет Куб) в рабочее пространство с выпадающей панели "стройматериалов". Можно так же создать в нашей сцене тот же самый Куб командой: Insert -> Cube. Что бы начать строить макет, нам потребуется "стройплощадка". Этот Куб и станет "стройплощадкой". В панели со свойствами этого объекта необходимо задать ему координаты и размеры. Совет: ставьте первый объект в центр сцены с координатами X=0,00 ; Y=0,00 ; Z=0,00 , а размеры можете задать по своему усмотрению. Я задал размеры такие: X=80,00 ; Y=60,00 ; Z=1,00 (предполагаемые единицы измерения - сантиметры) - очевидно, это лист многослойной фанеры (всегда соотносите вводимые величины с реальными рамерами изображаемых предметов - только так можно добиться правдоподобия), но загрунтованный специальной краской или оклеенной каким-то отделочным материалом. Значит , пришло время подумать о текстурировании этой "доски", "правильный" вид стройплощадки во многом подскажет дальнейшие действия и воодушевит. Перейдем в комнату текстурирования (обозначенную кисточкой в ряду других комнат в лаборатории Carrara), похимичим.



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

            Раскрашенная доска не должна блестеть, отражать, преломлять свет. поэтому все параметры ее "шейдера" (текстурного пресета, над которым мы работаем в лаборатории текстур прямо сейчас) надо обнулить выставив в соотвествующих позициях значение "none" ("ничего") и только три позиции будут наделены смыслом: color (цвет в лучах проявляемый под действием источника света), bump (рельефность, оптическая, само собой), glow (цвет или свечение, но уже под действием рассеянного света или в темноте).



            Ко всем трем позициям "шейдера" подойдем с чувством.



            1. color - создадим цвет объекта как сумму двух слогаемых, для этого сопоставим ему действие оператора "add" (сложение) - как показано на картинке. Что бы слогаемые не путались, разработчики дали им имена - "left" и "right", но к правой и левой сторонам они не имеют отношения и просто наслаиваются друг на друга. Для слогаемого "right" я выбрал просто сереневатый цвет, а вы можете выбрать любой другой. К "левому" слогаемому я уже применил умножение (мультипликативность) - в Carrara можно до бесконечности усложнять "шейдеры" складывая, умножая, микширую самые разные составляющие. Среди сомножителей (в "левом" слогаемом) один ("source 1") так же есть сумма синего оттенка с параметром "value" который в данном случае регулирует его осветление и в процессе подбора нужного цвета оказался у меня "выкрученным" до отказа. Сомножитель "source 2" в нашем случае самый интересный, так как он несет в себе ту самую иррациональность и неровность оттенка. Он есть произведение банального серого цвета заданного параметром "value=50" и фрактального узора "Spots" (Natural Functions -> Spots). Вообще-то "Spots" призван создавать хаотичные белые пятна, но в случае применения крайних значений в его настройках изображает монотонный мелкий шум - то, что нам и надо.



            2. bump - визуальный рельеф поверхности создатим назначением того же самого фрактального узора "Spots" с теми же крайними (нулевыми) настройками. Надо лишь не забыть, что степень рельефности создаваемая параметром "bump" определяется в общих настройках слоя (слоев может быть множество, а мы работаем сейчас лишь с одним и уже столько всего сложного!) "шейдера" - "Top Shader". Я поставил максимальную рельефность (250).



            В окошечке предварительного просмотра сразу видны все наши манипуляции в виде визуализированной текстуры - очень удобное средство контроля действий - не забывайте туда регулярно посматривать.

            3. glow - этот параметр определяет, насколько будет виден (светиться) наша текстура будучи совершенно ничем не освещенной. Понятно, что суть этого параметра довольно второстепенна, но все же если он настроен, вид нашей сцены при рендеринге (обсчете в двумерное изображение) будет существенно реалистичнее. Но слишком химичить я ним не будем. Я определил его умножением уже "обкатанного" здесь фрактального шума "Spots" на 5% (парамерт "value") - больше не надо, самосвечение не должно забивать переизлучение.

            Казалось бы, можно было и проще, без многочисленных операторов аддитивности и мультиплекативности. Но я сделал так умышленно, для того, что бы, когда в сцене возникнут другие объекты, не текстурировать их заново, а лишь немного изменить значения параметров "value" и поправить цветовую гамму, получив просто и быстро новую реалистичную текстуру.



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

            Сделайте такую операцию: выделение стрелкой нашего единственного объекта, Ctrl+C, Ctrl+V - мы получили еще один такой же Куб в том же самом месте. Измените его размеры слегка уменьшив (а толщину уменьшите существенно), приподнимите по оси Z, и отправляйтесь в комнату текстурирования менять его цвет в сторону более зеленого.



            Трава засеяна.

            Можно строить. Повторите процедуру копирования и получите еще один Куб. Это будет главный корпус главного здания, поэтому ему следует придать соответствующие размеры - X=10,00 ; Y=5,00 ; Z=4,00 - все в сантиметрах, но если учесть, что мы строим макет в масштабе 1:100, то это уже 10, 5 и 4 метра - вполне правдоподобно. Текстуру бумаги (картона) из которого склеены корпуса и строения следует заметно освелить, но так, что бы фактор "шершавости" оставался заметным.



            В дальнейшем, создавая из первого "бумажного" (а может "пенопластового") Куба новые Кубы (командами Ctrl+C, Ctrl+V или Ctrl+D), смешая их относительно центрального положения, меняя размеры, нетрудно соорудить вот такой "примитивный" дворец:



            В "селекторе" объектов к этому моменту появится уже много совершенно одинаково названных Кубов и что бы вних не запутаться, неплохо бы все "кирпичи" из которых построено сдание выделить и сгруппировать (команда группирования Ctrl+G, команда разгруппирования Ctrl+U). В панели свойств объекта (закладка "General") группе, как и любому другому объекту в составе сцены, можно присвоить уникальное (или повторяющееся - это допускается) название - если нужно. В простых сценах, как сегодняшняя, в этом нет необходимости. Группирование же крайне желательно.



            Одного дома для макета мало и взяв за основу любой кирпич (а лучше первый) уже построенного здания, начинаем строить второй, чуточку скромнее и с расчетом, что их мы уже сможем симмитрично расклонировать вокруг главного здания. Сгруппировав все его запчасти, прикиньте, насколько его надо сместить и вдоль какой координатной оси, что бы выстроить в ряд, допустим 4 таких строения. Выполните команду дублирования объектов - Ctrl+D - и тотчас же введите изменения (в моем случае по оси Y на -10 см). Все последующие команды Ctrl+D будут создавать копии Вашей группы со смешение вдоль оси Y на -10 см. И одним махом мы получаем еще 3 типовых архитектурных сооружения.



            Можно сгруппировать эти группы в одну большую и после этого клонировать ее, изменить ее координату по оси X на такую же с противоположным знаком, и совершить поворот вокруг оси Z на 180 градусов - мы получили второй ряд типовых строений.



            Стоит наверное добавить еще немного совсем простых комбинаций кубов в качестве маленьких домиков и на этом перейти к строительству дорог, ведь маленьким пластмассовым человечкам по чему-то надо будет ходить.



            Первую дорогу скопируйте из самого первого кирпича (Ctrl+C, Ctrl+V) самого первого здания - очевидно она должна проходить через центр и кирпич уже давно находится в центре макета. Его придется сплющить по высоте, удлинить по оси Y и существенно затемнить расцветку, возможно поиграть с цветом, что бы получить намек на асфальт. Другие дороги можно будет просто множить из этой.

            Возможно, в процессе перемещения Вашего внимания из комнаты сборки в комнату текстурирования, программа спросит Вас - что Вы намереваетесь делать - редактировать данный "шейдер" или завести для активного объекта новый, ведь тот же "шейдер" используется для текстурирования других подобных объектов. В случае, если Вам требуется одним махом редактировать раскраску всех дорог или всех кирпичей, выбирайте "Edit the Master" - то есть редактироваться будет общий для многих одинаково окрашенных объектов "Шейдер", но если Вы хотите поправить "раскраску" только одного объекта, а это нужно в тех случаях, когда вы создаете первую "дорогу" из копии "кирпича", необходимо выбрать "Create a New Master". Впоследствии он станет общим для всех дорог.



            Итак, строительные работы завешены, макет готов, но его надо убрать под стекло и поставить на опоры, а опоры должны опираться о пол. Как видите, работы еще немало.

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



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

color - переизлученный свет - в первом приближении стекло им не обладает, но на практике лучше применить value=2%
alpha - none
highlight - яркость блика - value=50%
shininess - локализация блика - value=50%
bump - наше стекло будет гладким и ровным, а потому - none
reflection - зеркальное отражение - у обычного стекла оно варируется в пределах 20%, я поставил value=12%
transparency - прозрачность - у стекла она близка к 100%, но чуть меньше, я выбрал value=95%
refraction - преломление - разные сорта обладают разным коэффициэнтом преломления. 1,5 будет вполне средним и правдоподобным.
glow - самосвечение врядли достойно значения большего чем value=1%

два последних свойства шейдера даже упоминать не будем сегодня не будем. Там должно стоять железное none.

            Стекло готово, но листы надо скрепить. Они не должны вызывающе висеть в воздухе (так же как стройплощадка должна стоять накаких то маленьких опорах, а не возлежать прямо на стекле - это некрасиво).



            Обычно, для скрепления листов стекла специальным сверлом сверлят отверстия, и дальше в ход идут металическая фурнитура - уголки, декоративные винты. Мы сверлить не станем, но уголки с винтами сделать просто обязаны.



            Их придется делать из примитивов двух типов - из уже привычных Кубов и из непривычных цилиндров. Посмотрите внимательно - эта деталь скомбинирована из 7 цилиндров (закругление первой одной консоли, винт торчайщий из нее, его шляпка, все тоже в другой консоли, сопряжение между ними - это тоже цилиндр) и двух Кубов - они создают плоскости консолей. Этим объектам теперь надо придать металические качества.



            Металл во многом похож на стекло. Отличия в том, что он не пропускает лучи света (позрачность none), разумеется, не преломляет (тоже none), блик ярче, локализацияя его меньше, рассеянное переизлучение можно прибавить и вспомнить о рельефности поверхности металла - предположим, что крепежные уголки не отполированы до зеркальной безупречности.



            Надо выбрать удобные места для крепления уголков, что бы они не сильно бросались в глаза, не портили созерцания макета, но держали стекло надежно.



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



            Как видите, их несложно собрать из восьми крупнокалиберных обрезков металлической трубы (опять Цилиндры). Важно подобрать подходящий диаметр и длину, а с заданием этиму металлолому координат у Вас уже не будет проблем. "Шейдер" для них подойдет того же сорта металла, из котрого сделаны крепежные уголки. Разумеется, нет необходимости всякий раз создавать аналогичный "шейдер" вручную. Его можно выбрать из уже существующих методом назначения на панели свойств того или иного объекта в закладке "General".



            Для того, что бы конструкция на полу не шаталась, а стекло не царапалось о жесткие металические срезы трубы, можно сделать пластмассовые (или резиновые - кому как больше нравится) ножки-заглушки на концах. Это те же Цилиндры, но коротенькие и чуть большего диаметра. Для них можно придумать более темный "Шейдер".

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

            В каркасном виде в сцене он имеет свои пределы и даже размеры у него есть, но при рендеринге все это исчезает и он простирается до горизонта. Совершенно не играет роли, какие координаты по осям X и Y у этого объекта, а вот координату по оси Z придется точно подобрать, что бы стол с аквариумом не висел в воздухе. Это заметят и не поставят нам с Вами "пятерку", на которую я очень сегодня рассчитываю.



            Если с подбором высоты (а для этого надо всего лишь переключиться в окно проекции вида слева или фронта) все удалось, надо выложить пол плткой - опять же в комнате текстурирования - создать для пола свой "шейдер".



            Если Вы внимательно рассмотрите этот "Шейдер", заметите, что он произрастает из того, который был в свое время придуман для "стройплощадки" - самого первого нашего Куба. Но с некоторым отличиями. Он имеет небольшое зеркальное отражение (value=15%), а рельефность поверхности (bump) смикширована (Operator -> Mixer) из уже известного нам фрактального шумового узора "Spots" и квадратной сетки ("плитки" - Pattern Function -> Tile). Пропорция микширования (смешивания) - "Blender" : value=100%, но ее можно и варировать в моисках лучших пропорций.

            Единственное о чем осталось подумать - о размерах примитива Безграничного Плана, так как от его размеров напрямую будет зависить визуальный размер плиток, выложенных на полу. Их размер можно (хотя и грубо) так же изменить в настройках самого алгоритма "Tile" в "Шейдере".



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

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

            Я не стал злоупотреблять высочайшим качеством обсчета мягких теней и остановился на посредственном. Этого хватило. Более высококачественные настройки повлекут непомерное удлиннение процесса обсчета.

            Подберем наиболее эффектное положение камеры, что бы все наши творения смотрелись красиво и не сильно заслоняли друг друга. После этого перейдем в комнату рендеринга (пиктограмма "кадр фотопленки" в селекторе комнат). Там требуется определить размер имиджа, который мы мечтаем заполучить в качестве отчета о проделанной работе и выбрать приемлемое качество.

 

            Теперь можно нажать на кнопу "Render" или "Render in New Window" и спокойно (да, и надолго) отправиться на кухню пить чай.

            По завершении чаепития не забудте сохранить (а это надо делать регулярно и в процессе работы) сцену и результат рендеринга. Буду рад, если покажете мне, что у Вас получилось.