3D Engineering

...Лучшее из общего.

  • Увеличить размер шрифта
  • Размер шрифта по умолчанию
  • Уменьшить размер шрифта

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

Во время работы с объектами сцены непосредственно в пользовательском интерфейсе 3ds Max ограничения, присущие эйлерову представлению вращения вокруг осей X,Y и Z, зачастую никак не мешают поворачивать объекты и получать вполне предсказуемые результаты. Для этого просто выбирается система координат, наиболее подходящая для конкретной ситуации, и далее вращение выполняется визуально для достижения желаемого результата.

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

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

Значение кватерниона выражается в виде угла и значения типа Point3, описывающего некий вектор:

quat

Векторная часть данного выражения относится к выражению типа Point3. Отдельные значения в выражении типа Point3 всегда находятся в пределах от -1 до 1. Ниже приведены некоторые примеры обозначения кватернионов:

quat 30 [1, 0, 0]
quat 30 [0.266917, 0.534798, 0.801715]

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

Если векторное значение состоит из единицы и двух нулей, то вектор нетрудно себе представить направленным вдоль одной из осей X, Y или Z. При этом 1 определяет ось, вдоль которой вектор направлен. Так, векторное значение [1, 0, 0] направляет вектор вдоль оси X.

В более сложном вектором выражении, как, например, [0.266917, 0.534798, 0.801715], вектор направлен из воображаемого центра сферы к точке поверхности, определяемой данным выражением типа Point3. Объект будет вращаться вокруг данного вектора на количество градусов, определяемых угловым значением кватерниона. В приведенных выше примерах это угловое значение равно 30.

Как правило, используются векторы, направленные вдоль оси X, Y или Z. А для того чтобы использовать векторы, имеющие другое направление, нужно знать, как их строить.

Векторные значения

Векторные значения кватернионов следует рассчитывать очень аккуратно. Квадратный корень из суммы квадратов всех составляющих должен быть равен 1. Так, из приведенного выше примера кватерниона quat 30 [0.266917, 0.534798, 0.801715] можно установить, что

квадратный корень из суммы (0.266917)2 + (0.534798)2 + (0.801715)2 = 1

Это ограничение объясняется тем, что длина вектора должна быть всегда равна 1. Следовательно, длина вектора всегда равна квадратному корню из суммы x2 + y2 + z2.

Правильное определение векторных значений кватерниона — занятие долгое и утомительное. Поэтому для упрощения расчетов применяется метод normalize.

rot_vect = normalize [10, 14, 5]
q = quat 90 rot_vect

Предопределенные значения углов вращения

В MAXScript имеется ряд предопределенных глобальных переменных. К ним относятся три следующие переменные: x_axis, y_axis и z_axis. Они представляют значения типа Point3, обозначающие вращение вокруг соответствующих осей:

x_axis представляет[1, 0, 0]
y_axis представляет[0, 1, 0]
z_axis представляет[0, 0, 1]

В любом выражении, описывающем вращение, выражение типа Point3 можно заменить соответствующей переменной. Зная это, данное выражение можно использовать для составления следующего выражения:

q = quat 45 x_axis

Аналогично методу eulerAngles, объект кватернионного вращения может быть присвоен любому вращаемому объекту.

b = box()
q = quat 45 x_axis
rotate b q

Выражения в качестве аргументов

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

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

В первом сценарии сначала создается кватернионный объект, а затем параллелепипед, который далее поворачивается на следующую величину:

rot = quat 30 y_axis
b = box rotation:rot

А во втором сценарии то же самое делается с помощью выражения в конструкторе:

b = box rotation:(quat 30 y_axis)

В выражении quat 30 y_axis вычисляется кватернион, поэтому его можно ввести вместо аргумента функции. Данное выражение сначала вычисляется внутри 3ds Max, а затем его значение присваивается свойству вращения. Такое выражение следует указывать в круглых скобках, чтобы 3ds Max было проще распознать его начало и конец. Где и как часто следует использовать подобные выражения, зависит от ваших целей и стиля программирования.

Кватернионы имеют свои ограничения. В частности, углы можно указывать только в пределах от -180° до 180°. Если же требуется повернуть объект на угол, который превышает данный 360-градусный диапазон, придется воспользоваться методом AngleAxis.

 

Архив статей

 дек   Январь 2020   фев

ВПВСЧПС
   1  2  3  4
  5  6  7  8  91011
12131415161718
19202122232425
262728293031 
Julianna Walker Willis Technology

Случайная новость

Введение.

Итак, что нам нужно для работы с чернилами?

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

Прежде чем приступить к работе с чернилами, найдите рисунок J. Вот пример:

Примечания:

  1. Если на вашем рисунке предполагаются большие чёрные области, обведите их и поставьте внутри крест. Это сэкономит массу времени.
  2. Я сделал этот рисунок на тонкой бумаге, поскольку он предназначался для сканирования, но Вам советую воспользоваться плотной бумагой.
  3. Я выбрал голубой цвет по трём причинам: первые штрихи более заметны, его легко вытирать и можно программно убрать с изображения в процессе сканирования у большинства сканеров.

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

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

Чтобы получились тени, как на втором рисунке, линии должны быть нарисованы под разными углами. Разница составляет 20—30 градусов, если угол чересчур большой, рисунок не смотрится. Если хотите сделать ещё  более тёмные тени, можете попробовать наносить линии под тремя разными углами.

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

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

Маленькие хитрости

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

2. Для получения аналогичного эффекта можно использовать белые чернила на черном фоне. Пример ниже:

3. Я упоминал, что можно придать рисунку динамизм, изменяя ширину контура. Применив тот же принцип к прямым линиям, Вы сможете получить эффект профиля. Получается ещё динамичней. Внизу пример.

4. Чтобы проработать тень, можно рисовать поверх черного фона белые линии в обратном направлении. Градиент получается мягким, как на примере ниже:

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

далее