Перспективно корректное текстурирование


Содержание

Demo.Design 3D Programming FAQ, Release 1

Содержание

1. Введение

1.1. Предположения и соглашения

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

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

Соглашения — следующие. Система 3D координат используется такая:

Здесь буквами x, y, z обозначены положительные направления осей Ox, Oy и Oz соответственно. Также предполагается, что камера неподвижна и находится в точке (*) с координатами (0,0,-dist), ось зрения камеры направлена по оси Oz, а именно в точку (0,0,0) (т.е. camera target = (0,0,0)), ось Ox с точки зрения камеры направлена слева направо, ось Oy — снизу вверх, ось Oz — вглубь экрана. Размер экрана — xSize на ySize пикселов.

Проецирование на плоскость экрана в этом случае будет осуществляться по формулам

Здесь и далее используются обозначения

2. Основы 3D графики

2.1. Задание объектов и сцен

Покажем здесь достаточно распространенную схему задания 3D объектов и сцен.
Подобная схема, кстати, используется, в 3D Studio.

Каждая сцена представляет из себя следующее:

  • набор объектов
  • набор источников света
  • набор текстур
  • набор камер (хотя обычно используется одна)

Каждый объект задается следующим:

  • набор вершин * вершина определяется своими 3D координатами и соответствующими ей координатами в текстуре
  • набор граней * грань определяется тремя вершинами и текстурой (вообще говоря, не текстурой, а материалом: кроме текстуры могут быть заданы, например, коэффициенты рассеивания и отражения света)
  • поведение объекта * то есть, расположение (то есть смещение, ось поворота, угол поворота, коэффициент масштабирования, и т.д.) в зависимости от номера кадра; обычно задается в нескольких ключевых точках и интерполируется между ними с помощью сплайнов

Каждый источник света задается следующим:

  • положение
  • ориентация (точка, в которую направлен этот источник, target)
  • тип (фоновый/направленный/ненаправленный)
  • цвет (обычно RGB)

Каждая текстура представляет из себя прямоугольную 2D картинку, часто бывает фиксированных размеров (например, 64×64, 128×128, 256×256).

Каждая камера задается следующим:

  • положение (location)
  • направление (точнее, точкой, в которую направлена эта камера; target)
  • угол зрения (FOV)
  • угол поворота относительно своей оси (roll)

2.2. Проецирование

Мы будем использовать только обычное перспективное проецирование на плоскость зрения «стандартной» камеры, определенной в пункте 1.1 (там же написаны и формулы проецирования). Случай произвольной камеры будет приводиться к случаю стандартной камеры.

2.3. Матричные преобразования

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

Введем несколько терминов. n-мерный вектор, он же вектор размерности n, он же вектор размера n: упорядоченный набор n действительных чисел. Вообще говоря, практически то же самое, что и обычный 1D-массив. Матрица размера m на n (будет обозначаться как m*n, mxn): таблица размера m на n, в каждой клетке которой — действительное число. Это уже 2D-массив. Всего лишь. Вот пример матрицы 3×3:

Займемся определением операций над векторами и матрицами. Вектор будем записывать в столбик и рассматривать его как матрицу размера n*1.

Скалярное произведение: определена для двух векторов одинаковых размеров. Результат — это число, он равен сумме произведений соответствующих элементов векторов. Пример:

Векторное произведение: определена для (n-1) вектора одинакового размера n. Результат — вектор, причем, что интересно, перпендикулярный всем множителям. Результат меняется от перестановки мест множителей. Формально определяется как определитель матрицы, первая строка которой есть все базисные вектора, а все последующие — соответсвующий координаты всех множителей. Поскольку нам оно будет требоваться только для 3D пространства, мы определим векторное произведение двух 3D векторов явно:

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

Операция умножения матрицы на число: определена для любой матрицы и любого числа; каждый элемент результата равняется произведению соответствующего элемента матрицы-множителя и числа-множителя.

Операция умножения двух матриц: определена для двух матриц таких размеров a*b и c*d, что b = c.

Например, если b = c, но a != d, то при перестановке множителей операция вообще не определена. Так вот, результатом матрицы A размером a*b и матрицы B размером b*d будет матрица C размером a*d, в которой элемент, стоящий в строке i и столбце j равен произведению строки i матрицы A на столбец j матрицы B. Произведение строки на столбец определяется как сумма произведений соответствующих элементов строки и столбца. Чтобы было хоть чуть-чуть понятно, пример умножения строки на столбец (они должны быть равной длины, кстати; поэтому и такие ограничения на размеры матриц):

А чтобы перемножить две матрицы, надо эту операцию проделать для каждого элемента. Вот пример:

Умножение и сложение матриц обладают почти тем же набором свойств, что и обычные числа, хотя некоторые привычные свойства не выполняются (например, A*B != B*A); нам на самом деле понадобится знать, что произведение вида A*B*C*D*. не зависит от того, как расставить скобки. Или, если угодно, что

Теперь забудем об этом на некоторое время и перейдем к преобразованиям. Любое движение (то есть преобразование пространства, сохраняющее расстояние между точками) в трехмерном пространстве, согласно теореме Шаля, может быть представлено в виде суперпозиции поворота и параллельного переноса, то есть последовательного выполнения поворота и параллельного переноса. Именно поэтому основная часть информация о поведении объекта — это его смещение, ось поворота и угол поворота. И именно поэтому нам достаточно знать, как сделать два преобразования — перенос и поворот.

Перенос точки (кстати, точки будут также рассматриваться как вектора с началом в начале координат и концом в собственно точке) с координатами (x,y,z) на вектор (dx,dy,dz) делается простым сложением всех координат. То есть результат — это (x+dx,y+dy,z+dz). Как бы сложили вектор-точку и вектор-перенос.

Поворот — занятие уже более интересное. Но тоже простое. Рассмотрим для примера поворот точки (x,y,z) относительно оси z. В этом случае z не меняется вообще, а (x,y) меняются также, как и при 2D повороте относительно начала координат.

Посмотрим, какие будут координаты у точки A’ — результата поворота A(x,y) на угол alpha.

Пусть r = sqrt(x*x+y*y). Пусть угол AOx равен phi, тогда из рисунка видно, что cos(phi) = x/r, sin(phi) = y/r. Угол A’OA равен по условию alpha.
Отсюда

Для трехмерного случая, таким образом

Аналогичные формулы получатся и для других осей поворота (то есть Ox, Oy). Поворот относительно произвольной оси, проходящей через начало координат, можно сделать с помощью этих поворотов — сделать поворот относительно Ox так, чтобы ось поворота стала перпендикулярна Oy, затем поворот относительно Oy так, чтобы ось поворота совпала с Oz, сделать собственно поворот, а затем обратные повороты относительно Oy и Ox. Можно даже вывести формулы для такого поворота и убедиться в том, что они очень громоздкие.

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

То есть поворот на угол phi задается одной и той же матрицей, и с помощью этой матрицы (умножая ее на вектор-точку) можно получить координаты повернутой точки. Пока никакого выигрыша не видно — здесь умножение матрицы на вектор требует больше операций, чем расчет x’ и y’ по формулам.

Удобство матриц для нас заключается как раз в свойстве A*(B*C) = (A*B)*C. Пусть мы делаем несколько поворотов подряд, например 5 (как раз столько, сколько надо для поворота относительно произвольной оси), и пусть они задаюся матрицами A, B, C, D, E (A — матрица самого первого поворота, E — последнего). Тогда для вектора p мы получаем

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

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

На самом деле, эти преобразования тоже легко записываются в виде матриц. Только вместо матриц 3×3 и 3-мерный векторов используются так называемые однородные 4-мерные координаты и матрицы 4×4. При этом вместо векторов вида

используются вектора вида

а вместо произвольных матриц 3×3 используются матрицы 4×4 такого вида:

В случае, если d = h = l = 0, получается то же самое, что и для матрицы 3×3. Матрица параллельного переноса теперь определяется как

Матрицу масштабирования можно определить и для матриц 3×3, и для матриц 4×4:

где kx, ky, kz — коэффициенты масштабирования по соответствующим осям.

Таким образом, получаем следующее. Любое нужное нам преобразование пространства можно задать матрицей 4×4 определенной структуры, разной для разных преобразований. Результат последовательного выполнений нескольких преобразований совпадает с результатом одного преобразования T, которое также задается матрицей 4×4, вычисляемой как произведение матриц всех этих преобразований. Важен порядок умножения, так как A*B != B*A. Результат применения преобразования T к вектору [ x y z ] считается как результат умножения матрицы T на вектор [ x y z 1 ]. Вот и все.

Осталось только на примере показать, почему A*B != B*A. Пусть A — матрица переноса, B — поворота. Если мы сначала перенесем объект, а потом повернем (это будет B*A), получим далеко не то, что будет, если сначала объект повернуть, а потом перенести (это уже A*B).

2.4. Рисование одноцветного треугольника

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

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

Отсортируем вершины так, чтобы вершина A была верхней, C — нижней, тогда у нас min_y = A.y, max_y = C.y, и нам надо пройтись по всем линиям от min_y до max_y. Рассмотрим какую-то линию sy, A.y = B.y — то стороны BC и AC. Мы знаем координаты всех вершин, поэтому мы можем написать уравнения сторон и найти пересечение нужной стороны с прямой y = sy. Получим два конца отрезка. Так как мы не знаем, какой из них левый, а какой правый, сравним их координаты по x и обменяем значения, если надо. Рисуем этот отрезок, повторяем процедуру для каждой строки — и вуаля, трегуольник нарисован.

Остановимся более подробно на нахождении пересечения прямой y = sy (текущей строки) и стороны треугольника, например AB. Напишем уравнение прямой AB в форме x = k*y+b:

Подставляем сюда известное значение y = sy для текущей прямой:

Вот, в общем-то, и все. Для других сторон пересечение ищется совершенно точно так же. А вот и пример кода.

Надо, правда, защититься от случая, когда B.y = C.y — в этом (и только этом, потому как если C.y = A.y, то треугольник пустой и рисовать его не стоит, или можно рисовать горизонтальную линию; а если B.y = A.y, то sy >= A.y и до деления на B.y — A.y не дойдет) случае произойдет попытка деления на ноль. Код изменится совсем чуть-чуть:

Вот и все. Ну, горизонтальную линию, надеюсь, нарисовать сумеют все желающие.

2.5. Работа с произвольной камерой

Рассмотрим любую камеру как точку — центр проецирования и экран — плоский прямоугольник в 3D пространстве, на плоскость которого идет проецирование. Наша стандартная камера, например, задается точкой (0,0,-dist) и экраном с вершинами (-xSize/2,ySize/2), . (xSize/2,-ySize/2). Можно задать эту систему тремя векторами, задающими с точки зрения камеры направления вперед, вправо и вверх; вектор «вперед» соединияет центр проецирования и центр экрана, вектор «вправо» соединияет центр экрана и правую его границу, вектор «вверх», соответственно, центр экрана и верхнюю его границу. Обозначим эти вектора как p, q и r соответственно, а центр проецированя за s. Вот пример для стандартной камеры.

Здесь (для стандартной камеры; обозначим ее вектора как Sp, Sq, Sr, Ss)

Любые три взаимно перпендикулярных вектора и точка — центр координат задают в 3D пространстве систему координат. Так что объект мы можем рассматривать в системе обычных координат (x,y,z), в системе координат стандартной камеры (Sp,Sq,Sr) или в системе (p,q,r), соответствующей какой-то произвольной камере. В любом случае, если (a,b,c) — координаты точки в системе координат камеры (точнее, в системе координат с центром в точке s и базисом (p,q,r)), то координаты проекции точки на экране равны

В случае стандартной камеры переход от обычной системы координат к системе координат камеры очевиден:

Подставив это в формулы для screenX, screenY, получим как раз те самые формулы для проекции на стандартную камеру.

Поскольку со стандартной камерой нам достаточно удобно и понятно работать, для произвольной камеры мы должны сделаеть такое преобразование пространства, что как бы совместит произвольную камеру и стандартную камеру. То есть, такое преобразование, что вектора p, q, r перейдут в Sp, Sq, Sr, а точка s в точку Ss.

Посчитаем матрицу для *обратного* преобразования; оно должно переводить Sp, Sq, Sr, Ss в p, q, r, s. Преобразование, переводящее Ss в s (и наоборот) — это обычный паралелльный перенос; остается написать преобразование перевода Sp, Sq, Sr в p, q, r. Пусть у нас есть координаты p, q, r в системе координат (x,y,z):

Для Sp, Sq, Sr координаты (в этой же системе) известны и равны следующему:

Пусть T — искомая матрица перевода,

Поскольку T переводит Sp, Sq, Sr в p, q, r; то есть

то, подставляя, например, p и Sp, получаем:

Аналогично находим все остальные элементы матрицы T:

Но нас интересует обратное к этому преобразование. Оно задается обратной матрицей к T, то есть такой матрицей T1, что

Обратная матрица, вообще говоря, существует далеко не всегда, да и вычисление ее в общем случае — достаточно неприятная задача. Однако в данном случае из-за специального вида матрицы T (конкретнее, из-за того, что T — ортогональная матрица) она не только всегда существует, но и считается очень просто:

Сделав сначала параллельный перенос, совмещающий s и Ss, а потом полученное преобразование, как раз и получим преобразование, переводящее произвольную камеру в стандартную.

Теперь надо выяснить, как, собственно посчитать координаты p, q, r через имеющиеся у нас характеристики: положение, направление, угол зрения и угол поворота. 3D Studio (и мы вслед за ней) рассчитывает эти вектора по такому алгоритму:

Здесь мы не учитываем поворот камеры вокруг своей оси, его удобнее сделать после перехода к стандартной камере — в этом случае получаем обычный поворот относительно оси z на угол roll.

Таким образом, окончательная матрица перевода должна представлять собой произведение матрицы параллельного переноса, матрицы T и матрицы поворота вокруг оси z на угол roll:

Расчет матриц RollMatrix и MoveMatrix очевиден.

3. Удаление невидимых частей

3.1. Отсечение нелицевых граней

Пусть у нас есть объект, внутри которого камера заведомо не окажется. Обычно такие объекты составляют большую часть или всю сцену. Тогда для каждой грани мы можем увидеть только одну ее сторону — лицевую. Грань — плоскость, она делит все 3D пространство на два полупространства. Так вот, лицевую сторону видно только из одного полупространства, из того, в которое «смотрит» нормаль к этой грани, направленная *из* объекта. Проверив, в какое полупространство попадает камера, можно сразу определить, является ли грань лицевой (то есть, может ли камера увидеть лицевую сторону этой грани) и надо ли ее рисовать.

Пусть грань имеет вершины v1, v2, v3 и нормаль (nx,ny,nz). Тогда уравнение плоскости, в которой она лежит, будет иметь вид

Функция nx*x+ny*y+nz*z+d принимает положительные значение по одну сторону от плоскости, отрицательные по другую и равна нулю на самой плоскости. Точка (v1.x+nx,v1.y+ny,v1.z+nz) лежит, очевидно, в том полупространстве, откуда грань видно. Значение функции (назовем ее функцией видимости) в этой точке равно

Таким образом, если значение функции в какой-то точке больше нуля, то грань из этой точки потенциально видна. Нас интересует видимость грани из нашей камеры, а камера у нас зафиксирована в точке (0,0,-dist). Таким образом, получаем, что грани, для которых

заведомо не видны и время на их обработку и отрисовку тратить не стоит.

Отдельный вопрос — как считать нормали к граням. Точнее, как выбрать одну из двух нормалей, которая будет смотреть из объекта. Обычно эта проблема решается еще на этапе построения 3D моделей — например, пакет 3D Studio записывает вершины граней в порядке A-B-C так, чтобы векторное произведение BA*CA и было нормалью. Еще один способ — выбрать внутренную точку для объекта (либо вручную, либо взять его центр тяжести, либо еще как-нибудь — методов может быть придумано сколько угодно) и использовать ее: если для этой точки функция видимости положительна, то есть грань якобы видна, то надо поменять знак nx, ny и nz.

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

3.2. Алгоритм художника

Пусть имеется некий набор граней (т.е. сцена), который требуется нарисовать. Отсортируем грани по удаленности от камеры и отрисуем все грани, начиная с самых удаленных. Довольно распространенная характеристика удаленности для грани ABC — это среднее значение z, m >

Существует, правда, несколько проблем.

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

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

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

3.3. Z-буфер

Заведем буфер (собственно z-буфер) размером с экран, и забьем его каким-то большим числом, настолько большим, что координаты z для точек сцены заведомо меньше. Например, если z — fixedpoint 16:16, то можно использовать максимально возможное значение, то есть 0x7FFFFFFF. Для каждой рисуемой точки считаем значение z; если оно больше, чем значение в z-буфере (точка закрыта какой-то другой точкой), или меньше, чем -dist (точка находится за камерой), то переходим к следующей точке. Если меньше, то рисуем точку на экране (или в видеобуфере), а в z-буфер записываем текущее значение z. Вот кусок кода для лучшего понимания:

Имеет смысл считать значения не z, а z1 = 1/(z+dist), так как эта величина изменяется по грани линейно, и линейная интерполяция дает точные результаты (более подробно это описано в 4.3). Тогда условия чуть изменяются — точка загорожена другой, если значение z1 *меньше* значения в z-буфере; и точка находится за камерой, если z1

Это уже немного замедляет работу (на величину порядка 5-10%), но улучшение качества картинки того стоит. Кроме того, субтексельную точность вполне можно совместить с 2D-отсечением и получить отсечение, которое не съедает никаких ресурсов и не замедляет работу. Вообще.

6.4. Поворот 3D вектора за шесть умножений

Обычно поворот 3D вектора делают умножением матрицы поворота на этот вектор. Эта операция требует 9 умножений и 6 сложений. Но с использованием небольшого precalculation (предварительного расчета) ее можно несколько ускорить.

Пусть нам надо умножить какую-то строку матрицы (a,b,c) на вектор (x,y,z). Результат должен быть равен

То есть как раз по 3 умножения и 2 сложения на одну строку. Но с другой стороны,

Проще эта формула явно не выглядит. Но дело в том, что x*y — это постоянная величина, так как x, y — это координаты вершины неповернутого объекта, а они обычно не меняются. А a*b достаточно посчитать при расчете матрицы поворота, и это тоже постоянная величина для каждой матрицы. Т.о.

В результате имеем 2 умножения и 4 сложения на одну строку, то есть те самые 6 умножений и 12 сложений на вектор. Выиграли 3 умножения ценой 6 сложений.

6.5. Билинейная фильтрация текстур

Да-да, это именно тот метод, с помощью которого смазывают текстуры всякие ускорители типа 3Dfx. Итак, пусть у нас есть какая-то текстура. Текстура у нас — это 2D картинка, а 2D картинка в свою очередь — набор замеров цвета через какие-то промежутки. В реальной же жизни цвет не меняется скачком через каждый, например, миллиметр, а является какой-то непрерывной функцией от положения, причем меняется довольно плавно. При обычном текстурировании мы получаем координаты в текстуре, округляем их до ближайшего целого числа и выбираем нужный цвет из текстуры. То есть мы как бы берем значение цвета в самой близкой к рисуемой точке сетки замеров цвета, поэтому у нас цвет резко меняется, оставаясь непрерывным между узлами сетки, поэтому возникает эффект больших квадратов.

При билинейной фильтрации цвет всего-навсего линейно интерполируется между узлами сетки замеров. То есть. Пусть в текущей точке у нас получились координаты текстуры u, v — какие-то нецелые, вообще говоря, числа. Тогда по целым частям u, v определяется, между какими узлами сетки (если угодно, между какими пикселами текстуры) находится наша точка, а по дробным — как близко она находится к каждому из узлов. Вот картинка.

Здесь 1, 2, 3, 4 — «окружающие» точку пикселы текстуры (они же узлы сетки замера цвета). Пусть iu, iv — целые части координат текстуры точки u, v; fu, fv — дробные части. Тогда 1, 2, 3, 4 имеют координаты в текстуре (iu,iv), (iu+1,iv), (iu,iv+1), (iu+1,iv+1). Проинтерполируем какую-то компоненту цвета (R, G или B) по прямым 1-3 и 2-4:

Теперь проинтерполируем цвет по прямой ab в нашей точке:

Проинтерполировав по этой формуле каждую компоненту цвета, получим наконец готовый результат — цвет точки, но уже с учетом билинейной фильтрации.

Здесь у нас получилось по три умножения на компоненту. То есть в сумме девять умножений на пиксел. Можно, конечно, честно считать по этим формулам, делая девять умножений для каждого пиксела. Но можно заменить все умножения на выборки по таблице. u, v обычно — это fixedpoint; fu, fv — тоже (кстати, в случае с fixedpoint целые и дробные части вычисляются ровно одним and’ом). Пусть мы используем 24-битный цвет и 16:16 fixedpoint; тогда одна компонента цвета занимает 8 бит, а дробную часть можно одним сдвигом перевести в 24:8 fixedpoint. Получаем 256 возможных значений для любой компоненты цвета и 256 возможных значений для дробной части, то есть — табличка 256×256. Если цвет 15/16-битный, или используется более грубое (скажем, до пяти бит) округление дробной части, то табличка становится еще меньше. Памяти, конечно, не жалко, но кэш-память пока не резиновая, так что чем меньше lookup-таблица, тем оно лучше для скорости. Вот и все.

Осталось только упомянуть, что лучше занести в табличку не байты, а слова, для данного примера это будет 8:8 fixedpoint, и складывать все результаты тоже как слова, а потом сдвигом переводить обратно в целые числа. Иначе (особенно в случае 15/16-битных режимов) будет заметен небольшой шум на текстуре, появляющийся из-за ошибок округления.

6.6. Алгоритм «бегущих кубиков» для полигонизации изоповерхностей

Сооветствующий английский термин — marching cubes algorithm; приведен здесь, так сказать, just to avo , столь любимые ныне, тоже являются изоповерхностью, правда, немного более сложной функции (да, функция задана в трехмерном пространстве):

Работает алгоритм следующим образом.

Рассматриваем какой-то параллелипипед, внутри которого заведомо находится изоповерхность (или та ее часть, которую мы хотим нарисовать). Разбиваем его сеткой, ну, как бы разрезаем его на несколько меньших параллелипипедов, и считаем значения функции (поля) в узлах сетки, то есть вершинах этих самых маленьких параллелипипедов. Для большей ясности можно заменить длинное слово «параллелипипед» на слово «куб» и представить себе кубик Рубика. Теперь проходим по всем кубикам (дальше я буду везде использовать слово «кубик», надоело «параллелипипед» писать). Смотрим на значения функции в вершинах кубика. Если все они больше (или меньше) изоуровня — значит, кубик находится целиком над (или под) изоповерхностью, внутри этого кубика поверхности нет и мы его просто отбрасываем. Если же часть больше, а часть меньше, то некоторые ребра кубика пересекаются с изоповерхностью. Линейной интерполяцией приближаем эти точки пересечения и в зависимости от того, какие вершины находятся над изоповерхностью, а какие под, генерируем несколько треугольных граней. Все вершины этих граней — это как раз точки пересечения поверхности с ребрами. Как генерировать грани и пересечения каких ребер с поверхностью считать, смотрим по таблице, это зависит лишь от того, какие вершины находятся над поверхностью, а какие — под. Вершин восемь, состояний два — над и под. Это дает нам 256 возможных расположений, так что таблица не такая уж и большая. Индекс в таблице тоже генерируется совсем просто: если вершина находится над поверхностью, устанавливаем соответствующий этой вершине бит индекса, иначе — сбрасываем.

Вот простенький пример.

Пусть точка 6 находится под поверхностью, остальные — над. Тогда поверхность проходит через точки (*), приближаем их линейной интерполяцией и проводим через них треугольную грань. Какие ребра пересекаются с поверхностью, какие точки пересечния и как соединять — узнаем из таблиц по индексу; в данном случае индекс равен 11011111b=0DFh (установлены все биты, кроме 6го).

Неоднократно упоминавшиеся магические таблицы приведены в примерчике, там же приведен кусок кода, который довольно легко переделть под свой engine. Пример взят с http://www.mhri.edu.au/

pdb/modelling/polygonise, сам по себе он компилироваться НЕ будет, но все там написано правильно и никаких ошибок в таблицах нет (так что ищите ошибку в своем коде).

Топ-10 советов по текстурированию от профессионалов 3D-индустрии

Знаменитые 3D-художники дают советы по текстурированию начинающим специалистам и делятся секретами с профессионалами.

Если концепт-художники могут позволить себе мечтать и летать в облаках, то текстуровщики должны быть собраны и внимательны к деталям. И этим ребятам нужно не только расставить все точки над i, но и «вылизать» каждую травинку, а также оставить пару ржавых пятен на самом новом и чистом в мире танке. Если в этих строках вы видите себя, то вам прямая дорога в гильдию текстуровщиков. Если нет, то возможно вы почерпнете для себя что-то новое и вдохновляющее.

«Необязательно детализировать объект в той же программе, в которой вы его скалптите. Очень часто, особенно для детализации одежды и всевозможных мелких деталей, я использую Photoshop» José Alves da Silva

Совет №1: Сегодня волосы, завтра деньги

«Я прорабатываю меши волос персонажей как можно тщательней, в топологии стараюсь придерживаться естественной формы волос. Таким образом, я могу легко развернуть свою модель, а затем, сузив волосы у кончиков, для которых я затем воспользуюсь текстурой шума (или фильтром Motion blur в Photoshop), создать видимость стильной прически», — говорит Andrew Hickinbottom.

Каждый волосок стоит проработки

Совет №2: Дела органические

«В Mudbox есть очень полезная кисть, Dry brush (и подобные ей кисти в других программах), которая позволяет быстро придать органической или не органической поверхности эффект пошарпанности. И, поскольку, эта кисть работает только с выступающими или впадающими участками геометрии, вы можете рисовать только по тем областям, которые наиболее подвержены воздействию окружающей среды. Вместе с картой Cavity вы можете нарисовать грязь, ржавчину или пыль на органике», — говорит Carlos Ortega Elizalde.

Игра называется «Добавить объекту грязи, ржавчины и несовершенства»

Для создания текстур Carlos Ortega Elizalde любит использовать Dry brush в Mudbox

Совет №3: PolyPaint в ZBrush

«Я раскрашиваю свои модели по простой схеме: 1 – основной цвет; 2 – второй основной цвет; 3 – светлые или темные оттенки основных цветов; 4 – теплые оттенки основного цвета, смешанные с цветом крови; 5 цвета со скрученной насыщенностью; 6 растеризованные цвета”, — говорит Luca Nemolato.

Создайте свою собственную схему работы, но всегда сохраняйте цвета и текстуры «чистыми»

Совет №4: Детализируйте с помощью Normal-карт

«Необязательно детализировать объект в той же программе, в которой вы его скалптите. Очень часто, особенно для детализации одежды и всевозможных мелких деталей, я использую Photoshop. С таким бесплатный софтом, как, например, xNormal (который устанавливает в Photoshop ряд удобных фильтров), можно легко сконвертировать Bump в Normal-карту (Height2Normals). Затем добавить эту карту новым слоем поверх существующего слоя с картой Normal, режим смешивания установить Overlay. Детализацию можно отрегулировать с помощью значения Fill», — говорит José Alves da Silva.

Детали должны быть видны на модели или на финальном ренедере?

Металлический материал очень сложно настроить, но, судя по работе José Alves da Silva, оно того стоит

Совет №5: Экспорт волос из ZBrush в 3Ds Max

«Волосы, созданные в ZBrush с помощью FiberMesh, можно воссоздать в 3Ds Max. Для этого нужно экспортировать кривые из ZBrush в 3Ds Max, чтобы использовать их как направляющие кривые. Выберите Export Curves из меню FiberMesh в ZBrush и сохраните волосы в формате OBJ. Выберите Import из меню File в 3ds Max и выберите OBJ-файл. В настройках импорта OBJ включите опцию Shapes/Lines, чтобы импортировать сплайны, также включите опцию Import as a single mesh, чтобы кривые импортировались одним файлом. Нажмите Import.

«Измените режим выделения объекта и выберите все сплайны. Общее количество сплайнов будет показано в меню модификатора (внизу Selection menu). Запомните это число. Примените модификатор Hair and Fur (WSM) к сплайнам. Значением Hair count будет число сплайнов. Выключите опцию Interpolate. Включите Rand. Отмасштабируйте до 0, а в настройках Frizz установите Frizz Root и Frizz Tip 0, чтобы исключить любую рандомность. Готово!”, — говорит José Alves da Silva.

Работать с волосами сложно, но возможно

Совет №6: Идеальные текстуры

«Текстуры я создаю в BodyPaint 3D, импортируя в программу геометрию из 3Ds Max с помощью специального плагина. В BodyPaint 3D я могу разрисовывать модель в режиме реального времени, а также легко получать такие карты как Diffuse, Reflection, Bump и Normal. Таким образом, я могу быстро детализировать 3D-модели и добавить им различных эффектов», — говорит Sérgio Merêces.

С помощью плагинов удобно получать различные текстуры

Совет №7: Все внимание на камеру

«Сложные сцены иногда состоят из сотен объектов, на то, чтобы создать для них UV-развертку и затекстурить, может уйти вечность. Поэтому я хорошо прорабатываю только те объекты, которые видны из камеры. Если объект попадает в фокус, его прекрасно видно, я создаю идеальную UV-развертку, детально раскрашиваю текстуры и создаю детальные материалы. В противном случае я использую сочетание из тайловых текстур, процедурных шумов и пары разных текстур для различных объектов. BerconMaps помогают отлично разнообразить текстуры объектов. Рисование по вертексам в 3Ds Max также дает неплохой результат для создания грязи или ржавчины. При этом наличие хороших UV-разверток необязательно», — Toni Bratincevic.

Неплохой подход – различная степень детализации объектов в сцене, в зависимости от их близости к камере

По-настоящему хорошие текстуры могут перевернуть мир. ©Toni Bratincevic

Toni Bratincevic – настоящий про во всем, что касается Dirt-карт. ©Toni Bratincevic

VertexPaint – еще один способ детализировать картинку и добавить ей реалистичности. ©Toni Bratincevic

Совет №8: Не мешайте свету «работать»

«Без корректно настроенных материалов очень тяжело «вытянуть» картинку. В таком случае даже хорошо поставленный свет не спасет ситуацию. Корректно настроенный материал и тщательно подобранные текстуры добавят шоту визуального разнообразия, а правильно поставленный свет завершит начатое», — говорит Francesco Giroldini.

Хорошие текстуры – самое важное в любой работе

Совет №9: Добавьте блеска

«Отражения – одна из важнейших и незаменимых составляющих реалистичной картинки. Их отсутствие может испортить весь шот», — говорит Francesco Giroldini.

Отражения – одна из самых сложнейших штуковин

Совет №10: Балансирование на грани

«При настройке шейдеров очень важно всегда найти золотую середину между тем, должен ли материал быть скорее диффузным или отражающим. Материалы с накрученной диффузностью дают более темные и размытые отражения, в то время, как сильно отражающие материалы, скорее всего, не будут отражать рассеянный свет или отразят его многократно», — говорит Francesco Giroldini.

При работе с текстурами берите за образец реальный мир

Не торопитесь

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

«Без корректно настроенных материалов очень тяжело «вытянуть» картинку. В таком случае даже хорошо поставленный свет не спасет ситуацию», — говорит Francesco Giroldini.

Компьютерная графика

Министерство образования и науки Республики Казахстан

Приказом Министерства образования и науки РК

«___» ___________ № __

ТИПОВАЯ УЧЕБНАЯ ПРОГРАММА

по специальности 050602 — ИНФОРМАТИКА

объем 3 кредита (135 часов)

Алматы, 2004
Типовая учебная программа составлена Казахским национальным университетом имени аль-Фараби

Автор: доцент кафедры информатики

Программа рекомендована к изданию Советом учебно-методического объединения КазНУ имени аль-Фараби

Протокол № 1 от 19 ноября 2004 года

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

Преподавание дисциплины основывается на следующих дисциплинах предшествующих изучению данной дисциплины:

· Линейная алгебра и геометрия

· Алгоритмы и структуры данных

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

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

В результате изучения дисциплины студент должен:

· о роли и месте знаний по дисциплине «Компьютерная графика» при освоении смежных дисциплин по выбранной специальности и в сфере профессиональной деятельности;

По окончании изучения данной дисциплины студент должен знать:

1 Современное состояние и перспективы развития интерактивной компьютерной графики.

2 Основы работы с основными графическими устройствами

3 Используемые в компьютерной графике структуры данных и модели.

4 Базовые алгоритмы вычислительной геометрии и компьютерной графики.

5 Принципы использования современных графических систем.

Студент должен уметь:

1 Грамотно формулировать задачу по использованию графики и строить её концептуальную и прикладную модели.

2 Рационально выбирать средства программной реализации полученных моделей.

3 Оптимально использовать возможности вычислительной техники, программного обеспечения и математического аппарата при решении прикладных задач интерактивной компьютерной графики.

СОДЕРЖАНИЕ ДИСЦИПЛИНЫ

Учебная дисциплина «Компьютерная графика» относится к блоку профильных дисциплин и формирует профессиональные знания и умения при освоении специальности «Информатика».

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

Конвейер разделен на ряд этапов, на каждом из которых реализуется некоторая функция. В курсе рассматривается графический конвейер, условно разделенный на две стадии: геометрические преобразования и рендеринг (rendering).

На стадии геометрических преобразований в курсе рассматриваются следующие вопросы:

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

· алгоритмы модельных преобразований, такие как сдвиг, поворот и масштабирование, а также алгоритмы преобразования из глобального пространства в пространство наблюдения (world-to-viewspace transform), а из него, в свою очередь, и преобразования в «окно» наблюдения (viewspace-to-window transform), включая и проецирование с учетом перспективы;

· алгоритмы удаления невидимых поверхностей;

· модели освещенности, с учетом которых формируется эффект освещения объектов;

· основные алгоритмы построения теней.

На стадии рендеринга в курсе основное внимание обращено на рассмотрение следующих вопросов:

· сортировка по Z-буферу и смешение текстур, а также алгоритмы альфа-буферизации;

· алгоритмы наложения текстуры;

· основные алгоритмы закраски (по Ламберту, Гуро, Фонгу);

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

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

В ходе изучения современных графических систем рассматриваются следующие вопросы:

· Библиотека Open GL.

· Рисование двумерных и трехмерных объектов на примере основных геометрических примитивов.

· Преобразования объектов в пространстве. Задание моделей закрашивания.

При изучении основ инженерной графики рекомендуется изучение следующих вопросов:

· Построение технических изображений.

· Построение комплексных чертежей реальных геометрических объектов.

· Аксонометрические изображения объектов при произвольном взаимном положении относительной системы координат и плоскости чертежа.

· Стандартные аксонометрические изображения (изометрическое и диметрическое).

· Пересечение конических поверхностей, имеющих общую точку на оси вращения.

· Сечения и разрезы

Раздел «Основы анимации» включает в себя следующие вопросы:

· Основы геометрического моделирования.

· Создание 3D объектов.

· Создание объектов, основанных на сечениях.

· Основы модификации геометрических моделей

· Основы композиции и визуализации сцен Базовая анимация.

· Средства управления движением.

· Связывание и обратная кинематика.

Примерный перечень тем теоретических занятий:

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

Тема 2. Двумерные изображения и их преобразования. Операции сдвига, поворота, масштабирования и их совмещение.

Тема 3. Трехмерные изображения. Перспективное изображение трехмерных объектов. Ортогональное и центральное проецирование. Представление поворота, масштабирования, сдвига и перспективы с помощью матрицы размером 4х4.

Тема 4. Разложение в растр простейших кривых. Алгоритм Брезенхема для генерации прямой. Алгоритм Брезенхема для сглаживания ребер многоугольников. Алгоритм Брезенхема для генерации окружности.

Тема 5. Удаление невидимых линий и затенение. Основные функции анализа изображений. Метод количественной невидимости Аппеля. Метод приоритетов Энкорнако. Алгоритм Робертса. Алгоритм Варнока. Алгоритм сканирующей прямой Уоткинса. Алгоритм, использующий z-буфер. Сравнительные характеристики алгоритмов удаления невидимых линий и поверхностей.

Тема 6. Модели освещенности. Диффузное отражение света. Зеркальное отражение и преломление света. Модель освещенности Фринеля. Модель освещенности Уиттеда. Модель освещенности Фонга. Метод обратной трассировки лучей.

Тема 7. Алгоритмы построения тени. Алгоритм преобразования «на землю». Построение теневой маски и проективное наложение. Построение полутеней. Теневые объемы.

Тема 8. Рендеринг. Сортировка по Z-буферу и смешение текстур. Наложение текстуры. Точное текстурирование. Аффинное текстурирование. Перспективно-корректное текстурирование. Параболическое текстурирование. Билинейная фильтрация текстур. Проецирование текстур. Мипмэппинг.

Тема 9. Методы закраски. Закраска по Ламберту. Закраска по Гуро. Закраска по Фонгу.

Тема 10. Алгоритм сглаживания (аnti-aliasing). Сглаживание методом усреднения по площади. Субпиксельное сглаживание. Улучшение качества изображения фильтрацией.

Тема 11. Интерполяция и аппроксимация кривых и поверхностей. Интерполирование с помощью многочленов. Аппроксимация кривых методом Безье. Построение кривых по точкам с помощью сплайнов. В-сплайны. Аппроксимация с помощью сплайнов.

Тема 12.Современные графические системы. Библиотека Open GL. Рисование двумерных и трехмерных объектов на примере основных геометрических примитивов. Преобразования объектов в пространстве. Задание моделей закрашивания. Наложение текстуры.

Тема 13. Введение в инженерную графику. Построение технических изображений. Предмет и задачи инженерной графики. Геометрическая модель. Описание модели. Абсолютная и объектная системы координат. Метод проецирования. Построение комплексных чертежей реальных геометрических объектов.

Тема 14. Основы анимации

Пользовательский интерфейс 3D Studio MAX. Основы геометрического моделирования. Создание 3D объектов. Создание объектов, основанных на сечениях. Процедура лофтинга. Основы модификации геометрических моделей. Основы композиции и визуализации сцен. Базовая анимация. Просмотр треков. Средства управления движением. Связывание и обратная кинематика. Визуализация анимаций. Видеомонтаж.


Примерный перечень тем лабораторных занятий:

Лабораторная работа 1. Реализация алгоритмов Брезенхема для разложения в растр кривых простейшего вида.
Лабораторная работа 2. Реализация алгоритмов удаления невидимых линий и поверхностей при преобразовании изображения сложных пространственных сцен.

Лабораторная работа 3. Реализация алгоритмов построения тени и закраски полигонов с использованием выбранной модели освещенности.

Лабораторная работа 4. Реализация алгоритмов наложения текстур на изображение сложных пространственных сцен.

Лабораторная работа 5. Реализация алгоритмов сглаживания для улучшения качества изображения сложных пространственных сцен.

Лабораторная работа 6.
Реализация алгоритмов преобразования трехмерных объектов.

Лабораторная работа 7. Реализация методов интерполирования и аппроксимации кривых и поверхностей произвольного вида.

Лабораторная работа 8 Растровый редактор PhotoShop

Лабораторная работа 9 Векторный редактор Corel Draw

Лабораторная работа 10 Современные графические системы. Библиотека Open GL. Рисование двумерных и трехмерных объектов на примере основных геометрических примитивов. Преобразования объектов в пространстве. Задание моделей закрашивания. Наложение текстуры.

Лабораторная работа 11. Создание анимационных роликов в 3D Studio Max

Лабораторная работа 12. Введение в инженерную графику. Построение комплексных чертежей реальных геометрических объектов в AutoCad.

Список рекомендуемой основной литературы

1. Основы интерактивной машинной графики: Пер. с англ. М.: Мир, 1976, 573 с.

2. Интерактивная машинная графика: Структуры данных, алгоритмы, языки: Пер. с англ. М.: Мир,1981, 384 с.

3. Практическое введение в машинную графику: Пер. с англ. М.: Радио и связь, 1984 136 с.

4. Фоли Дж., вэн Основы интерактивной машинной графики: В 2 кн. М.: Мир, 1985, 1053 с.

5. Алгоритмы машинной графики и обработки изображений: Пер. с англ. М.:Радио и связь, 1986, 400с.

6. Алгоритмические основы машинной графики: Пер. с англ. М.: Мир, 1989, 512 с.

7. Турбо Паскаль с графикой для персональных компьютеров — М.: Машиностроение, 1991,320 с.

8. , Батраков компьютерная графика. М.: Радио и связь, 1995, 213 с.

9. , Боресков графика. Динамика, реалистические изображения. М.: ДИАЛОГ-МИФИ, 1995, 178 с.

10. Компьютерная графика IBM PC от точки к виртуальной реальности. М.: Солон, 1995, 195 с.

11. Аммерал. Машинная графика: В 4-х книгах. М.: Мир, 1992.

12. , Плис и поверхности на экране компьютера. Руководство по сплайнам для пользователей. М.: ДИАЛОГ-МИФИ, 1996, 240 с.

13. Adobe PhotoShop 4.0 в подлиннике. — СПб.: BHV, 1998.

14. Эдвард Энджел Интерактивная компьютерная графика. Вводный курс на базе OpenGL, 2-е изд. С.-П.: Издательский дом «Вильямс», 2001.

Список рекомендуемой дополнительно литературы

1. Сканирование — профессиональный подход/Пер. с англ.- Мн.: ООО «Попурри», 1997.

2. Евгений Моисеев. 3D-Studio & Animator Pro. Практическое пособие. Ростов-на-Дону, 1995.

3. Зенкин компьютерная графика. М: Наука, 1991.

4. Эффективная работа с CorelDraw! 8.0. — СПб.: Питер, 1998.

5. 3D Studio. Трехмерная компьютерная мультипликация. Практ. пособие. — М.: ЭКОМ, 1995.

6. Синтез изображений. Принципы, аппаратное и программное обеспечение: Пер. с франц. — М.: Радио и связь, 1990.

7. Ричард Линч Использование Adobe Photoshop 6.

8. , Либрович графика Алгоритмы преобразования изображений. / Методические указания к выполнению лабораторных работ // СПГААП,1993, 31с.

9. Макаренко графика. Алгоритмы построения кривых и поверхностей. / Методические указания к выполнению лабораторных работ.// СПГААП, 1995, 26 с.

Рекомендуемые программные продукты: 3D Max, PhotoShop, CorelDraw, AutoCAD, Macromedia Flash, Компас 3D.

Исследование методов текстурирования ландшафта со сложным рельефом

технические науки

  • Абрамова Оксана Федоровна , доцент, доцент
  • Волжский политехнический институт (филиал) Волгоградский государственный технический университет
  • Книжко Александр Владимирович , бакалавр, студент
  • Волгоградский государственный технический университет
  • ЛАНДШАФТ
  • СЛОЖНЫЙ РЕЛЬЕФ
  • РЕЛЬЕФ
  • РЕЛЬЕФНОЕ ТЕКСТУРИРОВАНИЕ
  • КУБИЧЕСКОЕ ТЕКСТУРИРОВАНИЕ
  • ПРОЦЕДУРНОЕ ТЕКСТУРИРОВАНИЕ
  • ТЕКСТУРИРОВАНИЕ

Похожие материалы

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

В некоторых случаях при решении задач для реализации виртуального мира создание текстур в линейных редакторах изображений типа Photoshop или GIMP становится невозможным. Одной из таких задач является создание текстур ландшафтов. Текстуры позволяют увеличить детализацию изображения, не добавляя в сцену дополнительную геометрию, и поэтому широко распространены в трехмерной графике. Ключевой особенностью текстур ландшафтов являются их огромные размеры — например, 8192*8192 пикселей. На рисование всех необходимых текстур ландшафта вручную при помощи графического планшета уйдут недели, а внесение хоть каких-то минимальных изменений будет отнимать дни. Всё это является совершенно необоснованным, если у проекта есть хоть какие-то временные ограничения, не говоря уже о неудобстве работы с текстурами таких размеров.

Рассмотрим подробнее методы создания и наложения текстур. В компьютерной графике выделяют следующие методы создания текстур:

  • создание текстуры путем рисования в 2d редакторе;
  • создание текстур в 3d пакетах для рисования;
  • разработка текстуры на базе процедурных карт;
  • комбинирование процедурных техник 2d и 3d формата.

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

  • MIP-текстурирование;
  • Parallax mapping;
  • Кубическая текстура;
  • Мегатекстура;
  • Bump mapping;
  • Nornmal mapping;
  • Процедурное текстурирование.

Рассмотрим данные методы подробнее.

Метод MIP-текстурирования

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

Рисунок 1. Пример Мип-карты

Основное назначение такого набора: предоставление возможности при текстурировании выбрать изображение с наиболее подходящим уровнем детализации с учетом степени приближения камеры к объекту.

Предположим, что на 3D модель наложена текстура размером 512х512. Модель расположен на достаточно удаленном расстоянии камеры и геометрические размеры на экране у нее малы. При отключенном мип-текстурировании видеокарте придётся выбирать, какой тексель из большой текстуры будет использован для расчёта цвета точки. При этом выбор точки для расчета может изменяться в зависимости от изменения ракурса камеры, что приведёт к мерцанию объектов и снижению качества всей сцены в целом. При включенном же мип-текстурировании видеокарта будет выбирать наиболее подходящий к размеру объекта размер текстуры, и только потом будет производить выборку из него, что избавит итоговое изображение от нежелательных эффектов.

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

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

Метод интерполяции цветов

Интерполяция цветов – поиск промежуточных значений цвета по некоторым известным цветовым значениям рядом находящихся элементов. Данный процесс подразумевает использование специализированных алгоритмов, которые исследуют соседние пиксели изображения и рассчитывают новые таким образом, чтобы переход между ними был максимально сглажен. Обобщенно этот процесс можно представить следующим образом. Если на текстуре был черный пиксель, а рядом с ним — белый, то при увеличении масштаба в два раза получится два черных пикселя и два белых пикселя. За счет интерполяции мы получим исходные черный и белый пиксели, плюс один темно-серый пиксель и один светло-серый пиксель между ними, как показано на рисунке 2.

Рисунок 2. Пример работы алгоритма интерполяции

При таком подходе не смотря на то, что любое RGB-изображение, сохраненное в RAW формате, может быть использовано в качестве карты цветов (каждый пиксель изображения описывается тремя байтами — значение Red, Green, Blue компонент цвета), важно помнить, что ширина и высота этих файлов должны быть равными размеру карты высот.

Bump mapping

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

Карты bump, являющиеся одним из старейших типов карт — это черно-белые 8-битные изображения. Назначение карт bump в том, чтобы сообщить 3D-редактору указания по поводу деформации геометрии вверх или вниз. Когда значения карты bump близки к 50% серого, с поверхностью, практически, ничего не происходит. Когда изображение ярче, ближе к белому, детали выдавливаются, а когда изображение темнее, ближе к черному, то детали вдавливаются в поверхность.

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

Nornmal mapping

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

Карты нормалей или normal-карты – это улучшенные карты bump, которые так же создают ложную детализацию, не добавляя дополнительных деталей геометрии в сцене, но эта иллюзия в корне отличается от той, которую создают карты bump. Normal-карты работают с RGB-информацией, которая соответствует X, Y и Z значениям в 3D-сцене и сообщает 3D-редактору точное направление нормалей к каждому полигону поверхности. Ориентация нормалей поверхности необходима 3D- редактору для выбора цвета полигона (рис. 3).

Рисунок 3. Normal-карта и результат ее применения

Normal-карты бывают трех типов:

  • tangent space» — наиболее распространенный тип, используют координатное пространство текстур, сочетают в себе в большей мере оттенки синего цвета; подходят для мешей, которые должны деформироваться при анимации, для персонажей.
  • object spaсe» — используют координатное пространство модели, окрашены в различные цвета, просчитываются немного быстрее карт типа «tangent space»; подходят для статичных объектов, не испытывающих деформаций.
  • world spaсe» — похожи на object spaсe, но зависят от мировых координат; используются только для статичных объектов.

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

Parallax mapping

Parallax mapping – программная методика в трёхмерной компьютерной графике, также известная как displacement mapping. Основана на применении карт displacement, которые способны реализовать детализацию приближенную к реальной. Используется в случае необходимости создания дополнительной физической детализации объекта сцены. Для создания карт displacement объекту искусственно увеличивают количество полигонов, чтобы хватило разрешения для создания реалистичной геометрии. Т.е. карты влияют на общую геометрию и форму моделей, что в итоге дает достаточно высокую степень детализации объектов.

К достоинствам карт displacement можно отнетсти то, что их можно создать с высокополигонального объекта. Карты displacement, как и карты bump, работают с черно-белыми значениями цветов. При этом с легкостью можно использовать как 8-битные карты displacement, которые более подходят для двумерных сцен, так и 16- или 32-битные карт displacement. Однако, создание дополнительной детализации в режиме реального времени требует значительных дополнительных временных затрат. Кроме того, большинство 3D-редакторов просчитывают displacement уже при рендеринге. Поэтому, по сравнению с картами bump и normal, карты displacement могут серьезно сказаться на времени визуализации.

Кубическое текстурирование

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

Суть методики — в использовании кубической карты для отображения трёхмерной координаты текстуры в тексель при построении изображений отражения окружения в поверхности объекта. Кубическая карта представляет собой развёртку шести граней куба, каждая грань которого содержит текстуру. Каждая текстура отображает вид окружения, которое видно из одной точки зрения в шести направлениях. Текстурная координата является вектором, который определяет, как смотреть из центра куба, чтобы получить желаемый тексель. На основе данного метода текстурирования создаются SkyBox`ы, панорамы горизонтов.

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

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

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

Технология мегатекстуры

Данный метод наложения текстур предоставляет возможность распределения текстур и облегчает визуализацию открытых уровней. При использовании данного метода весь ландшафт виртуального мира вместо множества мелких текстур покрывается одной текстурной картой – мегатекстурой. Хранится такая мегатекстура на жёстком диске и, при необходимости, подгружается в память видеокарты. Это позволяет создавать большое количество деталей и разновидностей ландшафта при сравнительно малых объемах используемой оперативной памяти.

Существует несколько версий мегатекстуры на разных уровнях детализации, на каждом из которых выполняется разделение текстуры на квадраты одинакового размера. Например, мегатекстура 32768×32768 пикселей, покрывающая участок в 640×640 метров, при максимальной детализации разделяется на 32×32 квадрата размером 1024×1024 пикселя (20×20 м). Первый уровень детализации состоит из 16×16 квадратов того же размера (1024×1024 px), но вдвое меньшего разрешения (то есть, размер каждого квадрата — 40×40 метров), второй — из 8×8 квадратов по 80 м каждый, и т. д.

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

Процедурное текстурирование

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

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

По сравнению с традиционными методами процедурная генерация текстур обладает следующими преимуществами:

  • Возможность вносить изменения в любой этап формирования изображения. Практически все приложения, использующие процедурное генерирование текстур, построены на блочной архитектуре, которая позволяет составлять логические цепочки любой сложности с помощью добавления элементарных блоков и создания связей между ними. Такой подход позволяет переходить в разные цветовые пространства на любом этапе (например, собирать/разбирать картинку на RGB или HSL компоненты).
  • Возможность масштабирования текстур без потерь детализации. Так как процедурная генерация строится на математических функциях, а не на растровых изображениях, то какое бы разрешение для объектов мы в дальнейшем не выбрали, чёткость текстур от этого не ухудшится.
  • Высокая скорость формирования новых материалов и подобных текстур на основе существующих путем их модифицирования и комбинирования.
  • Быстрое изменение финальной текстуры путём изменения параметров генератора на любом этапе работы.
  • Возможность использования процедурных генераторов для создания базовой текстуры с дальнейшей её растеризацией и обработкой уже в растровых редакторах изображений.
  • Малый размер хранимых данных. В файл сохраняется только описание алгоритма, занимающее несколько килобайт, а не большие объемы растровых данных по 4 байта на пиксель. При этом одну и ту же текстуру можно использовать как входную сразу в нескольких обработчиках, а не копировать её каждый раз.

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

Выводы

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

Bump mapping как и normal mapping как индивидуальные методы более не применяются, на смену им пришел комплексный метод рельефного текстурирования parallax mapping, который использует три вида текстурных карт для создания реалистичного рельефа модели.

Кубическое текстурирование в наше время применяется крайне редко, на его основе создаются в основном SkyBox`ы, панорамы горизонтов.

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

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

Список литературы

  1. Яковлев, Д.С. Использование «мегатекстуры» для моделирования ландшафтных изображений / Д.С. Яковлев, М.Н. Фаворская // Автоматика. Вычислительная техника. – К.: Сибирский государственный аэрокосмический университет им. акад. М.Ф. Решетнева, 2010. С. 387-388.
  2. Ian D. Visualization in Landscape and Environmental Planning: Technology and Applications, Taylor and Francis, MA: Boston, 2005. – 320p.
  3. Применение процедурных генераторов в создании контента для real-time 3D приложений: Часть 1. Oil Rush. https://habrahabr.ru/company/unigine/blog/167075/
  4. Применение процедурных генераторов в создании контента для real-time 3D приложений: Часть 2. Valley Benchmark https://habrahabr.ru/company/unigine/blog/184614/
  5. Котов В. К вопросу об импорте 3D моделей в программы с использованием графической библиотеки OpenGL [Электронный ресурс] / В. Котов, О.Ф. Абрамова // Современная техника и технологии. — 2014. — № 1. — C. Режим доступа : http://technology.snauka.ru/2014/01/2965.
  6. Трифанов А.И. Реализация собственного метода визуализации водной поверхности «скользящая текстура» / А.И. Трифанов, О.Ф. Абрамова // Современные наукоёмкие технологии. — 2013. — № 8 (ч. 1). — C. 96-97
  7. Абрамова О.Ф., Книжко А.В. СОЗДАНИЕ РЕАЛИСТИЧНЫХ МОДЕЛЕЙ В ВЫСОКОНАГРУЖЕННЫХ ПРОЕКТАХ // NovaInfo.Ru (Электронный журнал.) – 2020 г. – № 44; URL: http://novainfo.ru/article/5573

Электронное периодическое издание зарегистрировано в Федеральной службе по надзору в сфере связи, информационных технологий и массовых коммуникаций (Роскомнадзор), свидетельство о регистрации СМИ — ЭЛ № ФС77-41429 от 23.07.2010 г.

Соучредители СМИ: Долганов А.А., Майоров Е.В.

16 лучших графических редакторов, которые не стоят ни копейки

Программы и сервисы для работы с векторной, растровой и 3D-графикой на разных платформах.

Самые продвинутые графические редакторы вроде инструментов компании Adobe стоят немалых денег. Но есть бесплатные и вполне достойные альтернативы, возможностей которых хватит большинству. Издание для фотографов и дизайнеров Creative Bloq выбрало The best free graphic design software лучшие среди подобных программ и сервисов.

Бесплатные векторные редакторы

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

1. Gravit Designer

  • Платформы: веб, Windows, macOS, Linux.

Gravit Designer — ранее известный как Gravit — это полнофункциональный векторный редактор. Он подходит для любых задач: от дизайна интерфейсов и иконок до работы с презентациями, иллюстрациями и анимацией.

Аккуратный интуитивный интерфейс Gravit Designer можно настраивать под себя. Редактор содержит массу инструментов для создания прекрасных детализированных векторных изображений. Среди них — неразрушающие (их действие можно отменять) функции для работы с булевыми операциями, инструменты «Нож» и «Граф путей» плюс множество режимов заливки и смешивания, а также мощный текстовый движок.

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

2. Vectr

  • Платформы: веб, Windows, macOS, Linux.

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

3. SVG-Edit

Если вам нужно быстро создать или отредактировать простой SVG-файл, есть несколько онлайн-редакторов, которые подойдут для этой задачи не хуже Adobe Illustrator. В числе лучших из них — SVG-Edit.

Этот редактор целиком создан на HTML5, CSS3 и JavaScript и не использует серверы для обработки данных. Код SVG-Edit открыт. Поэтому при желании вы можете скачать его и модифицировать, чтобы создать свою версию редактора.

SVG-Edit располагает всеми базовыми инструментами векторного редактора. Но поддерживает только формат SVG.

4. Inkscape

  • Платформы: Windows, macOS, Linux.

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

Полная поддержка различных цветовых моделей делает Inkscape достойной альтернативой Adobe Illustrator как для веб-дизайна, так и в сфере полиграфии. При всей простоте интерфейса в этой программе можно создавать невероятно комплексные работы.

Отдельного внимания заслуживают такие возможности, как преобразование растровых изображений в векторные, создание обводки с переменной шириной и поддержка файлов Illustrator.

Бесплатные растровые редакторы

Предназначены для создания и редактирования любых немасштабируемых рисунков и фотографий.

1. GIMP

Бесплатный графический редактор с открытым исходным кодом. GIMP укомплектован богатым набором функций для рисования, цветокоррекции, клонирования, выделения, улучшений и других действий. Интерфейсом GIMP отличается от популярнейшего Photoshop, но долго искать нужные инструменты вам не придётся.

Команда GIMP позаботилась о совместимости, так что вы сможете без проблем работать со всеми популярными форматами изображений. Кроме того, в GIMP встроен файловый менеджер, похожий на Bridge из программ от компании Adobe.

2. Photo Pos Pro

Если вы работаете на Windows и не нуждаетесь в таком количестве инструментов, как у GIMP, вашим идеальным редактором может стать Photo Pos Pro. Последний создан с прицелом на редактирование изображений и отлично справляется с типичными задачами вроде регулировки контрастности, освещения и насыщенности. Но Photo Pos Pro подходит и для более сложных манипуляций.

Эта программа может похвастать очень дружелюбным интерфейсом и детальной справкой, которая помогает разобраться новичкам. Если вы сделать Photo Pos Pro ещё функциональнее, к вашим услугам множество расширений и плагинов.

3. Krita

  • Платформы: Windows, macOS, Linux.

Ещё один редактор с открытым исходным кодом. Krita существует с 1999 года и постоянно совершенствуется, чтобы соответствовать нуждам концепт-художников, иллюстраторов, специалистов по визуальным эффектам, дорисовке и текстурам.

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

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

4. Pixlr

Pixlr предлагает более 600 эффектов, наложений и рамок. В этом сервисе можно делать всё, чего стоит ждать от фоторедактора: изменять размер изображений, обрезать их, удалять эффект красных глаз, отбеливать зубы и многое другое.

Если вы знакомы с Photoshop, то очень быстро освоите веб-версию Pixlr. Интерфейсы этих редакторов очень похожи.

5. Paint.NET

Paint.NET является альтернативой программе Paint, встроенной во все версии Windows. Но пусть схожесть названий не сбивает вас с толку: Paint.NET гораздо более продвинутый и полезный редактор.

Команда разработки делает упор на простоту использования и совершенствует в Paint.NET скорее функции для редактирования снимков, чем возможности дизайна графики. Тем не менее Paint.NET позволяет управлять перспективой, манипулировать пикселями на холсте, клонировать выделенные зоны и так далее.

Благодаря поддержке слоёв, широкому выбору инструментов для выделения и настроек вроде яркости / контрастности и кривых, Paint.NET можно рассматривать как достойную замену Photoshop.

6. Sumo Paint

Sumo Paint быстро работает в вебе и справляется с задачами не хуже настольных редакторов. Но для его запуска вам понадобится Adobe Flash Player. Так что Sumo Paint не для iOS-устройств.

Арсенал настроек и функций Sumo Paint включает карандаши, кисти, текст, градиенты, клонирование, формы и не только. Всё это всегда в зоне видимости на плавающей панели вроде той, что вы могли видеть в Photoshop.

Бесплатные редакторы 3D-графики

Предназначены для работы с 3D-моделями, эффектами и анимациями.

1. SketchUp Free

SketchUp Free можно назвать идеальной точкой входа в мир 3D-графики. Этот редактор дружелюбно вводит новичка в курс дела и прощает ему все допущенные ошибки. Вы можете начать с простого рисования линий и форм, а потом преобразить их в 3D-объекты.

Если вам понадобится вдохновение, можете бесплатно скачать модели различных объектов из библиотеки 3D Warehouse через форму поиска на сайте SketchUp.

2. Daz Studio

С помощью Daz Studio можно кастомизировать, перемещать в пространстве и анимировать различные 3D-объекты вроде людей, животных, предметов.

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

3. Hexagon

Hexagon — бесплатный инструмент для 3D-моделирования. В нём есть всё необходимое для создания детализированных моделей, готовых к финальному рендерингу.

Среди инструментов и функций программы вы найдёте возможность быстрого импорта из Daz Studio, заготовки для различных объектов, кисти для ручного моделирования, UV-развёртку (нанесение плоских текстур на трёхмерный объект), продвинутые инструменты рисования и мгновенное затенение (instant ambient occlusion).

Программы Daz Studio и Hexagon созданы одним разработчиком и дополняют друг друга. Вместе они составляют полный бесплатный комплект для работы с 3D-графикой.

4. Blender

Blender — это продвинутый бесплатный редактор 3D-графики с открытым исходным кодом, доступный для всех основных платформ.

Разработчики постоянно развивают Blender. Он поддерживает все возможные операции с 3D-графикой: позволяет моделировать, текстурировать, анимировать, рендерить и компоновать.

5. Sculptris

Если вам интересно искусство цифровой скульптуры, попробуйте программу Sculptris от разработчика Pixologic. Она подходит одинаково хорошо для любого уровня подготовки. Новички получают хороший стартовый инструмент, а уже опытные цифровые художники — платформу для быстрой и удобной реализации идей.

Sculptris основана на редакторе ZBrush от того же разработчика — самом популярном приложении для цифровой скульптуры. Когда вы будете готовы перейти на следующий уровень, то сможете легко переключиться на ZBrush.

6. Houdini Apprentice

  • Платформы: Windows, macOS, Linux.

Houdini — инструмент для работы с 3D-анимацией и визуальными эффектами, который часто используют при работе над фильмами, телепередачами и другим медиаконтентом.

Стоимость редактора начинается с 2 000 долларов. Но разработчики программы — Side Effects Software — разрешают использовать версию Houdini Apprentice бесплатно. Благодаря ей вы можете получить доступ ко всем функциям полной версии и оттачивать мастерство на личных проектах. Только Houdini Apprentice предназначена исключительно для некоммерческих и образовательных целей.

Как добавить текстуру в 3d max?

Добрый день! дорогие читатели, в этом уроке я хотел бы показать как быстро и правильно добавлять текстуры в программе 3d max на примере простых и сложных моделей. Данный урок предназначен для тех, кто только начинает работать в 3d max.

Откроем 3d max и построим стандартный приметив Box с размерами 300 х 300 х 300.

Далее откроем панель материалов – иконка “Material Editor” или клавиша “M”.

В панели материалов откроем стандартный материал.

В выбранном материале выберем параметр “Diffuse Color”.

Затем нажимаем на кнопку рядом с параметром “Diffuse:”.

В открывшемся окошке находим вкладку “Maps” – нажимаем на “Bitmap”.

Загружаем нашу текстуру.

Смотрим результат с выбранной текстурой кирпич

Мы рассмотрели способ добавления текстуры в 3d max для простых моделей, а теперь рассмотрим для сложных геометрических моделей.

Построим сложную модель с использованием модификатора “Edit Poly”.

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

Если попробовать умножить текстуру на три (“Tiling” – “3,00”),

то как видно ниже особо ничего не изменилось, только артефакты стали меньше.

Для того чтобы это исправить и правильно наложить текстуру нам необходимо использовать еще один модификатор – “Unwrap UVW”.

Раскроем модификатор “Unwrap UVW”, выберем параметр “Face” (или “Polygon”) и выделим (с нажатым Ctrl) все поверхности нашей модели.

Далее раскроем свиток “Parameters” и нажмем на кнопку “Edit…” (или свиток “Edit UVs”, кнопка “Open UV Editor” – разные версии 3d max).

Откроется окошко “Edit UVWs” – редактор поверхностей нашей модели.

На верхней панели находим вкладку “Mapping”, а в ней параметр “Flatten Mapping”.

В результате наша текстура разложилась на всех поверхностях.

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

В окошке “Edit UVWs” все текстуры можно отредактировать так как нам надо.

С помощью инструментов окошка “Edit UVWs” разворачиваем неправильные текстуры.

Текстуры развернулись, но оказались немного ниже, поэтому также помощью инструментов окошка “Edit UVWs” немного сдвигаем их вверх.

Исправление перспективы

На этой странице

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

Функция «Исправление перспективы» упрощает коррекцию перспективы на изображениях, содержащих перспективные плоскости, например боковые части зданий, стены, пол и любые другие прямоугольные объекты. В данном фильтре пользователь указывает плоскости на изображении, к которым затем применяется редактирование (рисование, клонирование, копирование или вставка, а также преобразование). Все действия по редактированию выполняются с учетом перспективы рабочей плоскости. При ретушировании, добавлении элементов на изображение или удалении каких-либо частей результат выглядят более реалистичным, потому что корректирующие действия правильно сориентированы и масштабированы в соответствии с перспективой плоскости. После завершения работы с исправлением перспективы можно продолжить редактирование изображения в Photoshop. Чтобы сохранить в изображении информацию о перспективной плоскости, сохраните документ в формате PSD, TIFF или JPEG.

Также можно измерять элементы изображения и экспортировать эти трехмерные характеристики и замеры в форматы DXF и 3DS для последующего использования в приложениях трехмерной графики.

Обзор диалогового окна «Исправление перспективы»

Диалоговое окно «Исправление перспективы» («Фильтр» > «Исправление перспективы») содержит инструменты для определения перспективных плоскостей, инструменты редактирования изображений и инструмент «Линейка», а также область предварительного просмотра. Возможности инструментов функции «Исправление перспективы» («Область», «Штамп», «Кисть» и др.) совпадают с возможностями соответствующих инструментов в палитре инструментов Photoshop. Параметры инструментов можно настраивать с помощью тех же клавиатурных сокращений. При открытии меню «Исправление перспективы» отображаются дополнительные параметры инструментов и команды.

Сведения о клавиатурных сокращениях в окне «Исправление перспективы» см. в разделе Клавиши для функции «Исправление перспективы».

Инструменты «Исправление перспективы»

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

Инструмент «Редактировать плоскость»

Выделение, редактирование, перемещение и изменение размеров плоскости.

Инструмент «Создать плоскость»

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

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

При двойном щелчке инструментом «Область» на плоскости выделяется вся плоскость.

Рисование с помощью образца изображения. В отличие от «Штампа» из палитры инструментов Photoshop, с помощью инструмента «Штамп» фильтра «Исправление перспективы» нельзя копировать элементы другого изображения. См. также разделы Рисование пикселами по образцу в «Исправлении перспективы» и Ретуширование инструментом «Штамп» из панели инструментов Photoshop.

Раскрашивание плоскости выбранным цветом.

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

Выбор цвета для рисования при щелчке в области просматриваемого изображения.

Измерение расстояний и углов элементов на плоскости. См. также раздел Инструмент исправления перспективы «Линейка»

Увеличение или уменьшение масштаба изображения в окне предварительного просмотра.

Позволяет перемещать изображение в окне предварительного просмотра.

Увеличение или уменьшение просматриваемого изображения


В диалоговом окне «Исправление перспективы» выберите инструмент «Масштаб» и щелкните изображение в окне предварительного просмотра или перетаскиванием указателя выделите область, чтобы увеличить изображение. Изображение уменьшается при щелчке или перетаскивании указателя в окне предварительного просмотра при нажатой клавише «Alt» (Windows) или «Option» (Mac OS).

Степень увеличения можно задать в поле «Масштаб» в нижней части диалогового окна.

Щелкните кнопку со знаком «плюс» (+) или «минус» (–), чтобы, соответственно, увеличить или уменьшить масштаб.

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

Переместите изображение в окне предварительного просмотра

В диалоговом окне «Исправление перспективы» выберите инструмент «Рука» и перетащите указатель в области предварительного просмотра.

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

Работа с функцией «Исправление перспективы»

(Необязательно) Подготовьте изображение для работы с функцией «Исправление перспективы».

Перед выбором команды «Исправление перспективы» выполните одно из приведенных ниже действий.

Чтобы результаты работы с функцией «Исправление перспективы» помещались в отдельный слой, этот слой нужно создать заранее. Сохранение результатов исправления перспективы в отдельном слое позволяет сохранить исходное изображение и настроить для этого слоя непрозрачность, стили и режимы наложения.

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

Если планируется вставка элемента из буфера обмена Photoshop, то элемент необходимо скопировать до выбора команды «Исправление перспективы». Копируемый элемент может находиться в другом документе Photoshop. Если копируется текст, необходимо растрировать текстовый слой, прежде чем копировать его в буфер обмена.

Чтобы исправление перспективы применялось только к указанным областями изображения, необходимо выделить эти области или создать маску изображения до выбора команды «Исправление перспективы». См. также разделы Выделение инструментом «Область» и »Сведения о масках и альфа-каналах».

Чтобы объект с перспективой можно было скопировать из одного документа Photoshop в другой, его нужно скопировать в документ в режиме исправления перспективы. При вставке этого элемента в режиме «Исправление перспективы» в другой документ перспектива объекта будет сохранена.

Выберите «Фильтр» > «Исправление перспективы».

Укажите четыре угловых узла на плоской поверхности.

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

Чтобы построить дополнительные плоскости по заданным параметрам, используйте инструмент «Создать плоскость» и перетащите угловой узел, удерживая клавишу «Ctrl» (Windows) или «Command» (Mac OS). Дополнительные сведения см. в разделе Определение и настройка перспективных плоскостей в окне «Исправление перспективы».

Выполните одно из следующих действий.

Выделите область. Однажды созданную выделенную область можно клонировать, перемещать, поворачивать, масштабировать, трансформировать, а также применять к этой области заливку. Дополнительные сведения см. в разделе Сведения о выделенных областях в фильтре «Исправление перспективы».

Вставка элемента из буфера обмена. Вставляемый элемент становится плавающей областью, перспектива которой соответствует перспективе той плоскости, в которую перемещен элемент. Дополнительные сведения см. в разделе Вставка элементов в окно «Перспектива».

Масштабирование, вращение, зеркальное отражение и переворот плавающей области. Дополнительные сведения см. в разделе Сведения о выделенных областях в окне «Исправление перспективы».

Измерение элемента на плоскости. Для отображения измерений в Photoshop предусмотрена команда «Отобразить измерения в Photoshop» в меню «Исправление перспективы». Дополнительные сведения см. в разделе Измерения при работе с окном «Исправление перспективы».

Экспорт характеристик и измерений трехмерной графики в формат DXF или 3DS.

Кроме того, текстуры экспортируются в формат 3DS. Дополнительные сведения см. в разделе Экспорт измерений, текстур и характеристик трехмерной графики.

Нажмите кнопку ОК.

Перед нажатием кнопки «ОК» можно выполнить отображение сеток с помощью команды «Отобразить сетки в Photoshop» в меню «Перспектива». Дополнительные сведения см. в разделе Отображение сеток в Photoshop.

Экспорт измерений, текстур и характеристик трехмерной графики

Характеристики трехмерной графики (плоскости), текстуры и измерения, созданные при работе с фильтром «Исправление перспективы», можно экспортировать в форматы, используемые CAD-приложениями, приложениями моделирования и анимации, а также приложениями для создания спецэффектов. При экспорте в формат DXF создается файл с характеристиками трехмерной графики и всеми измерениями. Наряду с характеристиками геометрии, экспортированные 3DS-файлы содержат визуализированные текстуры.

Сведения о перспективных плоскостях и сетке

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

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

Кроме вспомогательной роли при выравнивании перспективных плоскостей с элементами изображения, сетка позволяет наглядно представить замеры при работе с инструментом «Линейка». Для связывания размеров сетки с замерами, выполняемыми с помощью инструмента «Линейка», предусмотрен особый параметр.

Определение и настройка перспективных плоскостей в фильтре «Исправление перспективы»

Во время создания перспективной плоскости в качестве направляющих рекомендуется использовать прямоугольный объект или область плоскости. Чтобы увеличить просматриваемое изображение, при размещении узлов удерживайте клавишу «Х». По мере добавления угловых узлов можно удалить последний добавленный узел, если он был размещен неверно. Для этого нужно нажать клавишу «Backspace» (Windows) или «Delete» (Mac OS). Кроме того, узлы можно перемещать перетаскиванием.

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

Чтобы настроить сетку, введите значение в поле «Размер сетки» или щелкните стрелку вниз и переместите ползунок. Кроме того, размер сетки можно настроить при выбранном инструменте «Создать плоскость».

Чтобы переместить плоскость, поместите указатель в область плоскости и перетащите ее.

Для масштабирования плоскости перетащите угловой узел в сегмент ограничительной рамки.

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

При наличии нескольких перекрывающихся плоскостей для перемещения между ними щелкните кнопкой мыши, удерживая клавишу «Ctrl» (Windows) или «Command» (Mac OS).

Создание связанных перспективных плоскостей

После создания плоскости в окне «Исправление перспективы», можно создать дополнительные плоскости с такой же перспективой. После создания второй плоскости из начальной перспективной плоскости, можно создать дополнительные плоскости из второй и так далее. Можно создать любое количество плоскостей. Новые плоскости создаются под углом 90°, но их можно повернуть на любой угол. Это полезно для точного редактирования плоскостей для повторения геометрии сложной сцены. Например, угловые шкафчики на кухне могут быть частью одной плоскости. Кроме наклона плоскостей, всегда можно изменить их размер с помощью инструмента «Редактировать плоскость».

Новая плоскость создаётся под углом 90° к оригинальной плоскости.

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

При выбранном инструменте «Редактировать плоскость» или «Создать плоскость», перетащите центральный узел в сторону, противоположную оси вращения, удерживая клавишу «Alt» (Windows) или «Option» (Mac OS).

Введите значение в текстовом поле «Угол».

Переместите ползунок «Угол».

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

Предупреждения ограничительной рамки и сетки в фильтре «Исправление перспективы»

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

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

Недопустимая плоскость. Фильтру «Исправление перспективы» не удается вычислить пропорции плоскости.

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

Хотя недопустимые красные или желтые плоскости можно редактировать (например, отрывать перпендикулярные плоскости), трудно получить правильную ориентацию результатов.

Отображение или скрытие сетки, активных выделенных областей и границ перспективной плоскости

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

Настройка размеров ячеек сетки перспективной плоскости

Выберите инструмент «Редактировать плоскость» или «Создать плоскость» , затем в поле «Размер сетки» области параметров инструментов введите нужное значение.

Выберите инструмент «Линейка» , затем в области параметров «Инструмент» выберите «Связать измерения с сеткой». Перетащите инструмент «Линейка» на плоскости, затем в области параметров инструмента введите значение «Длина».

Отображение сетки в Photoshop

По умолчанию при просмотре изображения в окне документа Photoshop сетки фильтра «Исправление перспективы» не видны, хотя они сохраняются в изображении и отображаются каждый раз при запуске фильтра «Исправление перспективы». Предусмотрено отображение сеток, при котором после окончания работы с фильтром «Исправление перспективы» они будут отображаться в окне документа Photoshop. Отображенные сетки являются растровыми, а не векторными.

Команду «Отобразить сетки в Photoshop» следует выбирать в каждом сеансе работы с фильтром «Перспектива».

Если планируется отображение сеток в Photoshop, то для результатов действия фильтра «Исправление перспективы» необходимо создать новый слой. Таким образом, сетки будут храниться в слое отдельно от основного изображения.

Сведения о выделенных областях в фильтре «Исправление перспективы»

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

С помощью инструмента «Область» выделенная область создается в рамках перспективной плоскости. Если выделенная область распространяется на несколько плоскостей, то она разделяется таким образом, чтобы соответствовать перспективе каждой из них.

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

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

При вставке какого-либо элемента во время работы с фильтром «Исправление перспективы» вставляемые пикселы находятся в плавающей области.

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

Для перемещения выделенных областей в фильтре «Исправление перспективы» предусмотрен еще один параметр. Выделенную область можно заполнить пикселами той области, в которую перемещается указатель.

Выделение областей в фильтре «Исправление перспективы»

Степень размытия краев выделенной области.

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

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

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

Выберите режим «Светимость», чтобы при наложении выделенной области окружающие пиксели заменялись светлыми.

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

Чтобы выбрать плоскость целиком, дважды щелкните ее инструментом «Область».

Перемещение выделенных областей в фильтре «Исправление перспективы»

Чтобы выделить область, в которую перемещается область выделения, выберите «Назначение».

Чтобы заполнить выделенную область пикселями области, в которую перетаскивается указатель инструмента «Выделение» (аналог перетаскивания выделенной области при удерживании клавиши «Ctrl» или «Command»), выберите «Источник».

Перемещение, поворот и масштабирование плавающих областей

Чтобы переместить плавающую область, выберите инструмент «Область» или «Трансформирование», щелкните внутри выделенной области и перетащите ее.

Чтобы повернуть плавающую область, выберите инструмент «Трансформирование» и подведите указатель к узлу. Когда указатель примет форму изогнутой двойной стрелки, перетащите его, чтобы повернуть выделенную область. Кроме того, можно выбрать параметр «Зеркальное отражение», чтобы отразить выделенную область по горизонтали относительно вертикальной оси плоскости, или «Перевернуть», чтобы отразить выделенную область по вертикали относительно горизонтальной оси.

Чтобы изменить масштаб плавающей области, убедитесь, что она находится в перспективной плоскости. Выберите инструмент «Трансформирование» и переместите курсор в верхнюю часть узла. Когда курсор примет форму прямой двойной стрелки, перетащите его, чтобы изменить масштаб выделенной области. Нажмите клавишу «Shift» для сохранения пропорций при масштабировании. Для масштабирования из центра удерживайте клавишу «Alt» (Windows) или «Option» (Mac OS).

Заполнение выделенных областей содержанием других областей изображения

Удерживая клавишу «Ctrl» (Windows) или «Command» (Mac OS), перетащите курсор из выделенной области в ту часть изображения, которой следует залить выделенную область.

В режимах перемещения выберите параметр «Источник» и перетащите курсор из выделенной области в ту часть изображения, которой следует залить выделенную область.

Залитая выделенная область становится плавающей областью, которую можно масштабировать, поворачивать, перемещать и клонировать с помощью инструмента «Трансформирование» либо перемещать или клонировать с помощью инструмента «Область».

Копирование выделенных областей в фильтре «Исправление перспективы»

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

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

Щелкните внутри плавающей области инструментами «Область» или «Трансформирование» и удерживая клавишу «Alt» (Windows) или «Option» (Mac OS) перетащите указатель, чтобы создать копию выделенной области. Сразу после создания копии выделение исходной плавающей области отменяется, и эта область замещает пикселы, которые ранее находились под ней.

Чтобы повторить перемещение последней операции создания копии, нажмите клавиши «Ctrl» + «Shift» + «T» (Windows) или «Control» + «Shift» + «T» (Mac OS). Таким образом, можно легко создавать точные копии содержимого.

Вставка элемента при работе с фильтром «Исправление перспективы»

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

Для удобства перспективные плоскости рекомендуется создавать в предыдущем сеансе работы с фильтром «Исправление перспективы».

Если копируется текст, сначала его необходимо растрировать. Щелкните правой кнопкой мыши по текстовому слою и выберите «Растрировать». Затем выберите «Выделить» > «Все» и скопируйте слой в буфер обмена.

Чтобы вставить элемент, нажмите клавиши «Ctrl» + «V» (Windows) или «Command» + «V» (Mac OS).

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

Изображение подстраивается до соответствия перспективе плоскости.

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

Рисование цветом в окне «Исправление перспективы»

Выберите инструмент «Пипетка» и щелкните какой-либо цвет просматриваемого изображения.

Щелкните область «Цвет кисти», чтобы открыть палитру цветов и выбрать цвет.

Для рисования без наложения цвета, света и затенения окружающих пикселов выберите режим «Выкл.».

Чтобы рисовать с наложением света окружающих пикселей, оставляя выбранный цвет кисти, выберите режим «Светимость».

Для рисования с наложением цвета, света и тени окружающих пикселей выберите режим «Вкл.».

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

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

Инструмент «Кисть» действует с учетом выделенных областей и может применяться для рисования твердой линии вдоль контура выделения. Например, если выделить целую плоскость, то можно нарисовать линию по периметру этой плоскости.

Рисование пикселами по образцу в окне «Исправление перспективы»

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

Чтобы предотвратить наложение цвета, текстуры, света и тени окружающих пикселов, выберите «Выкл.».

Чтобы при наложении мазка окружающие пиксели заменялись светлыми, выберите режим «Светимость».

Чтобы на мазок кисти распространялись параметры цвета, света и затенения окружающих пикселей, выберите «Вкл.».

Установите флажок «Выровнять» для непрерывного семплирования пикселов без потери текущей точки семплирования даже при отпускании кнопки мыши.

Снимите флажок «Выравнивание», чтобы продолжить использование выбранных пикселей исходной пробной точки каждый раз после прекращения и повторного начала рисования.

Для непрерывного рисования из одной плоскости в другую откройте меню «Исправление перспективы» и выберите команду «Разрешить многоповерхностные операции».

Чтобы рисование согласовывалось с перспективой только текущей плоскости, откройте меню «Исправление перспективы» и выберите команду «Выполнять операции обрезки по краям поверхности».

Измерения при работе с окном «Исправление перспективы»

Таким пользователям, как архитекторы, дизайнеры интерьера, судебные эксперты и резчики по дереву, часто требуется знать размеры объектов изображения. При работе с фильтром «Исправление перспективы» инструмент «Линейка» позволяет изобразить измеряющую линию над объектом в перспективной плоскости, размеры которой известны. В инструменте «Линейка» предусмотрен параметр для указания длины измерения. Для измерительной линии отображаются два текстовых поля: в одном указана ее длина, во втором — угол, под которым линия была нарисована относительно перспективной плоскости. Сразу после ввода измерения и его длины все последующие измерения масштабируются в соответствии с исходным.

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

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

Принципы создания процедурных текстур

Перевод урока: Antonii Illarionov

Из данного урока Вы узнаете о:

  • Создании процедурной текстуры камня (без развёртки)
  • Конвертировании текстуры в мрамор и придании ей оттенка
  • Основах графического искусства
  • Основах процедурного текстурирования

Как сделать абсолютно любую текстуру с нуля без готовых изображений?

Это довольно обширный вопрос, правда? Я думаю, что мы здесь все разумные люди и этот вопрос, так или иначе, возникал у каждого. Мы ведь знаем – этот урок будет о фундаментальных основах на примере мрамора, а не на примере буквально любой текстуры, которую вы хотели бы сделать, не так ли? Если честно, то я тоже не против того, чтобы взглянуть на такой урок, но вернемся к реальности…

Кто нуждается в UV развёртках?

Сегодня – не мы! Мы поговорим о процедурном текстурировании, а это означает, что любой объект с процедурными текстурами должен работать корректно без развёрток.

Фоторесурсы

Посещение таких сайтов с изображениями как pixabay или cg textures – действительно удобно, но лишь когда вы можете найти желаемую текстуру. Если вы нашли хорошую бесшовную текстуру или не против того, чтобы потратить время делая её бесшовной, то почему бы не использовать её вместо всех этих процедурных сложностей?

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

Достижение этого только с помощью фотографий или нет – упражнение в понимании и воссоздании мира вокруг нас, что позволяет получить более глубокое знания о нём и добиться лучших результатов в своих работах. Это немного похоже на искусство рисования, только для текстур.

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

Так в чем же сущность искусства графики? Каковы те аспекты изображения, которые мы можем контролировать, чтобы помочь сосредоточить внимание и сделать заявление в качестве автора, которое было запланировано? Ну, их существует довольно много, вот только пара самых влиятельных…

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

Таким образом, вы можете влиять на изображение многими способами, вот лишь некоторые:

  • Оптический контраст
  • Цвет
  • Свет
  • Форма
  • Перспектива
  • Ритм
  • Контекст

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

Как применить все эти знания в текстурировании?

Мы можем распределить текстуру аналогичным образом на примере о частотах звука, которые могут иметь низкие частоты (бас) и высокие частоты. Изображение может иметь графическую аналогию.

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

Вот еще несколько аспектов образа, которые мы можем использовать для изменения видимого изображения:

  • Низкая частота
  • Высокая частота
  • Формы / силуэты
  • Структура
  • Насыщенность
  • Эрозия (Грязь / Царапины / Трещины)
  • Блики и тени
  • Отражения

Создание процедурной текстуры камня

Давайте приступим к работе и применим всё вышесказанное на практике создания процедурной текстуры камня. Вы найдете стартовый учебный файл здесь (заготовки объектов и нодов), это поможет вам начать создание шейдера в Cycles. В этом файле есть почти всё что мне нужно для начала создания любой процедурной текстуры. Урок с более подробной информацией вы можете найти здесь (на английском).
Низкие частоты

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

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

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

Царапины / трещины / разводы

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

До тех пор, пока текстура чёрно-белая – её слияние с нодом ColorRamp и переназначение чёрно-белой гаммы в цветную – наша цель. Здесь я просто взял цветовые пробы из эталонной фотографии камня и аккуратно, убеждаясь в соответствии с чёрно-белой гаммой (настройки HSV), разместил их на градиентной карте.

Эрозия

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

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

Диффузия, рельеф и отражения

Сейчас мы почти закончили с текстурированием, осталось только добавить реалистичных свойств шейдеру. Здесь вы увидите нод Bump, который подсоединен к трём нодам (входам normal), отвечающим за отражение. Нод MixRGB, размещённый перед Bump отвечает за его высоту. Первый разъем – низкая частота и смесь текстуры Musgrave, которую мы уже видели, он наложен на второй высокочастотный нод с масштабом 60 (выглядит ужасно, но на самом деле это просто две картинки с наложением и очень разным параметром частот).

Конвертирование в полированный камень / мрамор

Остался последний штрих – взять всё сделанное и перенастроить в качестве другой, несколько схожей поверхности – подобие мрамора / полированного камня. Так вот, я добавил нод MixRGB, который работает в режиме Overlay, и сделал его зелёным цветом. Нод Bump сейчас неактивен, потому что я отключил его от всех входов normal. Потом я настроил отражения и значение Френеля, проходящее через отражение и с общим наложением на него. Это делается путем увеличения яркости на первом ползунке (first socket) нода MixRGB, который размещён перед узлом Mix Shader.

Создание Исаакиевского Собора. Часть 2: UV-маппинг, текстурирование, шейдинг

Теперь, когда моделинг Исаакиевского Собора закончен, следует переходить к его маппингу ( UV разверткам) и текстурированию. Во второй части мы концептуально пройдемся по всему проекту и рассмотрим, как проводился маппинг и текстуринг масштабной архитектурной модели.

UV развертки

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

Все элементы Исаакиевского Собора абсолютно разные и поэтому требуют к себе индивидуального подхода. Уникальность каждого элемента непосредственным образом влияла на выбор применяемых инструментов и техник UV -разверток.

Подписывайтесь на нашу рассылку, и Вы всегда будете получать эксклюзивные статьи первыми! Форма для подписки справа вверху

Некоторые элементы удобнее было маппить модификатором u nwrap uvw , т.е. в среде 3 ds max и никуда не переносить, другие же элементы проще было раскроить в стороннем софте. Для этого я использовал UVLayout , который больше заточен под органические формы.

Ниже выложен ряд иллюстраций процесса маппинга фигурных элементов капители:

Далее рассмотрим UV -маппинг колокольни. На многих изображениях вы увидите развертку отдельных элементов, которые выполнены не очень аккуратно, то есть без пакинга текстуры! Дело в том, что съемочная камера возле них «пролетать» не будет, выходит, текстуры колокольни зритель все равно рассмотреть внимательно не сможет. Поэтому в целях экономии времени я не корпел над маппингом там, где это было не нужно. Кроме того, все текстуры выполнялись в разрешении 8 K , т.е. 8192 px на сторону, а это не так уж и мало для средних планов. Было очевидно, что даже самые маленькие кусочки текстуры, возникающие после применения автоматической функции Flatten Mapping модификатора u nwrap uvw (я их называю « зерна ») будут удовлетворять требованиям на разрешение текстуры:

Что касается колон, то для них UV -карты создавались в уже упомянутом UVLayout . Удобнее раскроить цилиндрические колонны именно в стороннем пакете. А вот результат демонстрирую также в 3ds max :

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

Для разворачивания квадратного основания и крыши колокольни использовался Unwrap UVW :

Для купола снова применил UVLayout :

А для работы с крестом ограничился Flatten Mapping ’ом:

Финальная модель колокольни полностью развернута и готова к текстурированию. На нее нанесена процедурная текстура C hecker ( Шахматка ) для визуального контроля качества UV -разверток:

Если присмотреться к этому изображению внимательно, то можно заметить растяжки на текстуре. Происходит некоторое искажение шахматной текстуры на поверхности деталей. С точки зрения классического маппинга – это ошибки. Однако причины, позволившие сознательно допустить их кроются в следующем этапе. В основном я применял технологию Polypaint в пакете ZBrush . Эта технология позволила мне буквально наплевать на важность UV -раскроя. Текстура все равно будет корректной.

Текстурирование

Текстурирование проводилось по следующей схеме:

  1. C начала подбиралась базовая HDRI – карта для общего освещения через GlobalIllumination ;
  2. Затем готовились текстуры и проводилась их цветокоррекция.

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

hdri карту подбирал тестами, ориентируясь на купол Исаакиевского Собора при его визуализации в 3ds max :

Сначала я подобрал нужные мне текстуры для покраски купола в ZBrush . А затем перешел к его текстурированию. Покрасив его и сгенерировав диффузную 1 карту, я перенес данные в 3 ds max . Отрендерив купол с текстурой получился результат на изображении выше.

Цвет купола получился лимоновым, что не корректно. И причина здесь крылась вовсе не в текстуре, ее цвет меня полностью устроил. Я решил заменить HDRI -карту, тем самым изменив тон, оттенки и интенсивность рассеянного освещения. В результате многочисленных тестов мой выбор пал на эту HDRI -карту. Она бесплатна:

Эта карточка примечательна тем, что с одной стороны очень яркая сама по себе и ее диапазона яркости хватает с избытком для качественного освещения, с другой стороны в отличие от многочисленный карт, на которых есть точечное отображения солнца, эта карта не имеет солнца. Однако повторюсь, небосвод светит очень интенсивно. Эта карта более сбалансирована по освещению в сравнении со многими другими и не дает бликов и сильных засветов. Для меня это было важным аспектом, т.к. я готовил сцену под анимацию, а бликов от яркой «точки»-солнца на модели я не хотел, для прямого освещения я планировал внедрить v ray sun .

Сама текстура купола вот:

Цветокоррекция финального diffuse -паса не окончательна, так как возможны еще корректировки на стадии шейдинга непосредственно перед циклом рендеринга.

Это финальный вариант, который был получен за счет послойной комбинации в Photoshop трех различных текстур:

После diffuse -текстуры следу ют вспомогательные процедурные карты, которые делаются в фтошопе простой цветоррекцией.

Создание карты bump:

и карты specular:

После создания текстуры купола колоннады, она была внедрена в сцену, в которой настраивалось базовое освещение с использованием HDRI – карты:

Рендер с более близкого плана с примененной текстурой мраморной облицовки:

Базовая текстура гранита, которая используется на протяжении всего цикла для оформления гранитных элементов Исаакиевского Собора:

Результат текстурирования наличника в виде UV -развертки:

Этот наличник уже в сборочной 3 d -сцене с колоннадой:

Процесс покраски в Zbrush :

Некоторые участки, где присутствуют текстуры мраморных плит обработаны в Adobe Photoshop на UV :

Слева — создание текстуры рамы окна (в процессе), справа — процесс создания текстуры самого оконного стекла:

И сам рендер окна, обработанного в Photoshop :

Интересно, что в качестве слоя проявляющего структуру стекла применена текстура золотого покрытия, которая раннее использовалась для покрытия купола колоннады:

В результате в 3 ds max получился достаточно не плохой шейдер оконного стекла.

Некоторые отдельные слои подготовлены на плоскости в Photoshop (подогнаны под шаблон UV — развертки). Итак на рендере представлен слой гранитного покрытия и текстурная UV – развертка:

Теперь наносится слой мрамора. Этот слой получен в Zbrush и теперь композится с предыдущим в Photoshop . Справа выложена текстурная UV – развертка:

Наносится слой листового металла с зеленой бронзой и проплешинами из ржавчины. Ниже выложен результат и текстурная UV – развертка:

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

Кстати! Для всех познающих мы готовим видеокурсы , в которые заложены наши самые лучшие наработки по компьютерной 3d-графике! Если Вы действительно хотите БЫСТРО и СИСТЕМНО осваивать 3d-графику, то приобретайте наши продукты по выгодным ценам

Остальным заходить сюда не нужно!

Общий план текстурированной колоннады:

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

  • Колонна с капителью;
  • Фасадное окно;
  • Стойки с колоколами колоколен;
  • Сами колокольни

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

Немного пришлось повозиться с фасадным окном. В целом результатом я остался доволен:

Тест текстур силовых балок колокольни: микрорельеф (шероховатость) и заклепки имитированы Bump ’ами. Колокол выглядит чересчур глянцевым (увеличена отражательная способность), но в целом неплохой фоторил. Я решил его оставить, т.к. мне понравилось, как выглядит колокол в сочетании с крепящими конструкциями, на которых лежит Checker :

Практически законченное текстурирование колокольни Исаакиевского Собора. Цикл работы с колокольней оказался на удивление трудоемким сравни с работой над колоннадой Собора. Сложнее всего пришлось при работе над крышей и козырьком:

Портик Исаакиевского Собора (текстуры под гранит, без бампов ):

Напоследок стоит отметить текстурирование в max’ е основы Собора:

Обратите внимание на то, что нигде нет отображения капителей на рендере ниже. Капитель состоит из множества самостоятельных лепестков, каждый их которых моделировался отдельно и для реализации фигурности лепестков уходило порядка нескольких тысяч полигонов на каждый. Когда я рендерил крупный план колонны с капителью, мне пришлось отключать TurboSmooth у каждого лепестка, т.к. визуализация длилась порядка 2,5 часов. Даже не хочу знать сколько уйдет времени на просчет всех капителей в сцене. Вероятно TurboSmooth на общих планах при просчете анимации придется отключать. И вообще чтобы посчитать анимацию скорее всего необходимо заказывать рендер-ферму, т. к. персональный компьютер не вытянет такой массив геометрии, динамических объектов и текстур для просчета.

То, что Вам нужно находится здесь !

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

Забегая вперед, могу сказать, что мы не делали их с полного нуля, так как статуй у Собора очень много и подавляющая часть из них являются уникальными. Для производства статуй был использован классный сервис 123 D Catch .

Основы по физически корректному рендерингу (PBR) и пример текстурирования.

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

Примечание. Для создания текстур под физически корректный рендеринг не обязательно использовать Photoshop, можно обойтись Gimp или Krita.

PBR — Physically-Based Rendering — Физически корректный/основанный рендериг.

PBS — Physically-Based Shading — Физически корректный/основанный шейдинг.

Полезные статьи и прочие материалы по основам PBR:

Значения из таблиц можно брать пипеткой.

Выжимка из статей.

О sRGB и Photoshop.

При работе с текстурами под PBR необходимо работать в sRGB цветовом пространстве (спектре). В sRGB пространстве 50% средне-серый это не 0,5 или 127, а скорее значение 0,5 возведённое в обратную гамму 2.2, которая равна 187 в Photoshop. В этом случае sRGB помогает избежать артефактов в виде полос (порогов, ступеней). В sRGB пространстве больше точности для тёмный оттенков, к которым человеческий глаз более чувствителен (он может различить около 500 оттенков серого).

Стоит проверить правильно ли настроен Photoshop. Для этого проследуйте в Edit, выберите Color Settings. В открывшемся меню необходимо установить следующее:
RGB — sRGB IEC61966-2.1
Gray – Gray Gamma 2.2
Spot – Dot Gain 20%

Особенности яркости для текстур под PBR при использовании Specular.

  • Самые тёмные участки на альбедо диэлектриков не должны быть темнее 30-50, а самые яркие не светлее 240. В природе самым тёмным является уголь с значением 40-50, а самым ярким — свежий снег с значением 230-240.
  • Альбедо для чистых металлов должен быть абсолютно чёрным (0,0,0).Цвет чистым металлам задаётся через Specular. Грязь и окисления на металлах идут как диэлектрики, поэтому к ним применимы правила для альбедо диэлектриков.
  • Specular у чистых металлов имеет значения в пределах 180-255.
  • Specular у диэлектриков находится в пределах 40-60 для обычных материалов, а 60-75 для ряда минералов (рубин, изумруд и так далее). Значением 40 обладает вода. Меньше 40 делать не стоит, так как это значения для газообразных сред.
  • Грязь и окисление на металлах имеет значения Specular, как у диэлектриков.

Создание текстур под физически корректный рендеринг (PBR).

В этом примере будет показано создание набора текстур, который при рендере будет давать результат похожий на сталь/железо. Рендер будет делаться в Marmoset Toolbag 2.

Целевой результат:

Создание альбедо/диффуза.

1. Начнём с базового цвета. Заливаю область абсолютно чёрным цветом, так как в основном это будет чистое железо, но с небольшими вкраплениями окисления и грязи:

2. Добавляю следы обработки металла станком (бороздки). Это просто шум (Noise) с Motion blure. Бороздки будут отображены на альбедо отличным от чёрного цветом, так как в них металл немного окислился:

3. Добавил слоёв грязи и повреждений металла поверх бороздок от обработки станком. Грязь и повреждения взял с фототекстур и скомбинировал:

Далее грязь и повреждения металла буду для краткости именовать просто “грязь”.

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

Создание Specular.

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

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

3. Следующим шагом будет добавление грязи на Specular. Для этого взял близкое к табличному значение для Specular ржавчины:

4. Скопировал группу со слоями грязи из альбедо, вставил в группу со Specular и слил её в один слой:

5. Обесцветил грязь. Приблизительно подогнал яркость грязи к табличному значению ржавчины:

6. Наложил подогнанную по яркости грязь на слой Specular металла с бороздками:

Создание Gloss.

Gloss ещё называют Roughness — шероховатость. Он отвечает за зеркальность отражений. Чем светлее текстура Gloss/Roughness, тем более гладкая поверхность объекта = зеркальней отражение (при максимально значении — зеркало); чем темнее, тем более шероховатая поверхность объекта = отражения мутнее (различные матовые материалы: древесина, хлопчатобумажная ткань и так далее). Ржавчина будет шероховатой — широкий блик, зеркального отражения не будет; чистый полированный металл — узкий блик, будет видно зеркальное отражение.
1. Скопировал из Specular группу грязи и немного прибавил ей яркости:

2. Скопировал из группы diff текстуру бороздок и увеличил яркость для более зеркальных отражений:

3. Совместил и получился результат:

Gloss готов.

Создание Normals.

С помощью xNormal cгенерировал из альбедо две нормали: бороздки и грязь (получились ямки). Совместил их перекрытием (Overlay):

Всё, все текстуры готовы.

Результаты рендеринга в Marmoset.

Без Gloss и нормалей, только Specular и альбедо:

Без Gloss (его ещё называют Roughness — шероховатость — он отвечает за рассеивание света материалом) шар получается идеально отполированным и отражает как зеркало.

Без Specular и нормалей, только Gloss и альбедо:

C комплектом Gloss, Specular и альбедо, но без нормалей:

За счёт Specular грязь стала более выразительной.

С нормалями и альбедо, но без Specular и Gloss:

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

С нормалями, Gloss и альбедо, но без Specular:

Вот это уже ближе к реальности.

С нормалями, Specular и альбедо, но без Gloss:

Результат с полным комплектом:

Конечный результат. На сталь похоже, кажется ��
Оригинал статьи.

Илон Маск рекомендует:  Правила применения тегов
Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL