СПО в российских школах

Команда ALT Linux рассказывает о внедрении свободного программного обеспечения в школах России
Апрель 30, 2010

Объём и перспектива в Inkscape

Методические материалы
Автор: ALT Linux

Читатели, регулярно посещающие этот блог, вероятно помнят первый урок по Inkscape от Юрия Апостола. Сегодня мы представляем еще один урок от Юрия. Он также посвящен изготовлению объемных изображений.

В прошлом уроке, на примере создания картинки со снеговиком, я рассказывал о рисовании объёмных изображений в Inkscape. Но тогда я раскрыл далеко не все приёмы, которыми хотелось бы поделиться. Без внимания остались и некоторые инструменты программы, имеющие прямое отношение к 3D.

В этот раз мы будем рисовать аптечку.
1

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

В Inkscape есть специальный инструмент для рисования параллелепипедов в 3D. Им очень удобно формировать основу для отрисовки зданий, различных коробок, мебели. Параллелепипед можно покрутить, выбрав нужный ракурс, можно изменить размеры и цвет сторон.
2

По умолчанию, одна из точек схода параллелепипеда установлена в «бесконечность». Это полезно при изображении предметов в одной, например, горизонтальной, плоскости. Мы же будем смотреть на аптечку под углом к горизонту. В таком случае у параллелепипеда должно быть три точки схода. Отключаем параллельность рёбер, поворачиваем объект в плоскости как нам нужно, задаём окончательные размеры сторон, изменяем их цвет.

3
Теперь, когда нас всё устраивает, разгруппировываем параллелепипед (Shift+Ctrl+G, или в меню «Объект → Разгруппировать») и удаляем его невидимые грани. Видимые дублируем (Ctrl+D, «Правка → Продублировать») и суммируем (Ctrl++, «Контур → Сумма»). Полученный в результате контур — заготовка основного контура аптечки, который ещё предстоит закруглить. Из этого же контура будем получать направляющие (Shift+G, «Объект → Объекты в направляющие»), пересекающиеся ровно в точках схода, когда они нам понадобятся.

4

А понадобятся они нам прямо сейчас для ограничения закруглений рёбер коробки.

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

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

Итак, вернёмся к направляющим, ограничивающим закругления рёбер.

После создания направляющих из контура их оси вращения (отображаются в виде маленьких синих кружков, см. предыдущий скриншот) располагаются в местах, где раньше были узлы ломанной. Оси нужно переместить (зажав предварительно Ctrl) в точки схода и только после этого менять наклон направляющих (зажав Shift). Рекомендую выполнять описанные действия со включенным прилипанием (% на клавиатуре или в меню «Вид → Прилипание»), так будет гораздо легче попадать в точки пересечений направляющих.

5

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

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

Дорисовываем все три ребра, заполняя и вершину на их стыке. Вершина пока выглядит как бы с изломами. Это нормально на данном этапе.
6

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

Сначала поверх угла я нарисовал треугольник, вершины которого совпадали с вершинами плоских граней коробки. Центр радиального градиента, как самую светлую точку, разместил в вершине треугольника, лежащей на верхней стороне аптечки. Другой крайней опорной точке градиента задал цвет, равный цвету самой тёмной стороны аптечки. Оставалась неудовлетворённой ещё дна сторона. Я начал смещать центр градиента в её направлении, но фокус градиента (отделяется от центра c зажатым Shift’ом) возвращал к светлой стороне. В целом результат устраивал, но границы контура ещё были различимы. Для более тонкой подгонки я выгибал стороны треугольника и добавлял вспомогательные опорные точки в градиент.
7

При закруглении внешнего контура коробки нужно учитывать, что видимый радиус закругления угла равен реально заданному только пока видны все три его прилегающие ребра. У углов с двумя видимыми рёбрами радиус закругления может изменяется от реального до нуля в зависимости от наклона плоскости с рёбрами. У меня не получилось быстро найти методику расчёта таких радиусов, поэтому изгибал полагаясь на интуицию и поглядывая на крышечку какого-то флакона, взятую с ванной комнаты.
8
Теперь из внешнего контура сделаем контурную тень, имитирующую закругление оставшихся рёбер. Для этого контур дублируем, подкладываем под него другой произвольный контур большего размера, вычитаем их (Ctrl+-, «Контур → Разность»).

Получившемуся в результате контуру добавляем градиент и размывание.
9
Дублируем ещё раз внешний контур аптечки, группируем всё, кроме него, накладываем контур на группу в качестве обтравочного (меню «Объект → Обтравочный контур → Установить»).

10
В принципе, всё. Корпус аптечки готов.

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

Блик и крест заливаются едва заметным линейным градиентом. В процессе окончательной доводки иллюстрации я добавил градиенты и граням аптечки.
11
Выкладываем шнур. Можно кривой Безье с толстой обводкой. Обводку оконтуриваем (Ctrl+Alt+C, меню «Контур → Оконтурить обводку»). Дважды дублируем контур шнура. Одну копию красим в светлый и слегка смещаем вверх, другую в тёмный, смещаем вниз. Обе копии размываем. Дублируем ещё раз контур и накладываем как обтравочный.

Добавляем под шнур и аптечку тени. Чтоб добиться большей реалистичности тени следует делать составными, с разными радиусами размывания.
12
Вот, как это выглядит в каркасе.
13
Контур более резкой составляющей тени от шнура ближе к аптечке сужается. Вместе с размывкой это даёт эффект уменьшающейся резкости.

По такому же принципу построена и тень от аптечки. Контур самой резкой и самой тёмной её составляющей повторяет контур нижней грани коробки. Видно его становится только благодаря лёгкому размыванию. Более светлые и размытые части выступают из-под аптечки сильнее.

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

Дорисовываем торчащие провода из шнура, добавляем под ними тени и цветные рефлексы.
15
Готово:
16

Автор: Юрий Апостол
Оригинал статьи на linuxgraphics.ru

Комментарии (5) к “Объём и перспектива в Inkscape”

  1. oleg говорит:
    Май 7, 2010, 7:45 пп

    АльтЛинукс поражает подбором ППП. Вчера натолкнулся на классную программу видеозахвата — recordMyDesktop. Сегодня — такое чудо векторной графики :)

  2. Редактор, конечно, знаю давно. Но как-то вот воображения не хватало никогда, чтобы что-то подобное сделать. А в статьё всё наглядно и доходчиво :) наверно, надо побольше подобных материалов почитать, чтобы хоть представлять, как нужно мыслить :)

  3. Владимир Черный говорит:
    Май 11, 2010, 2:06 пп

    А мы ничего и не прятали: http://www.altlinux.ru/solutions/state/pspo2009/
    если recordMyDesktop действительно «новинка», то Inksсape — основной «заменитель» Corel еще с первых комплектов ПСПО

  4. кстати, векторная графика хороша тем, что можно активно использовать заготовленные картинки
    а если уж нет времени рисовать или нет воображения или и того хуже.. таланта
    можно просто скачать с openclipart.org
    свободно распространяемая графика для всех в формате svg
    :)
    inkscape рулит! ))

  5. @morozko77: только осторожнее — в опенклипарт недавно засунул кучу векторизованных фотографий вместо нормального клипарта :)

Оставьте комментарий