Прямая и инверсная кинематика Maya. Инверсная кинематика: простой и быстрый алгоритм

12.05.2019

Root Motion - как оно работает

Инверсная кинематика (только для Pro версий)

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

Однако, часто полезным является взгляд на задачу позиционирования соединений с другой стороны - со стороны выбранной позиции в пространстве. Работая в обратном направлении, найдите допустимый способ расположения соединений такой, чтобы конечная точка совпала с заданной ранее позицией Это может быть полезно, когда вы хотите, чтобы персонаж коснулся объекта в точке, заданной пользователем, или корректно позиционировал свои ступни на неровной поверхности. Этот подход называется инверсной кинематикой(Inverse Kinematics ) (IK) и поддерживается Mecanim для любого персонажа гуманоида с правильно настроенным аватаром

Для того, чтобы настроить IK для персонажа, вы, как правило, имеете объекты, расположенные на сцене, с которыми взаимодействует персонаж, и затем вы настраиваете IK с помощью скрипта, в частности, с помощью функций Animator, таких как SetIKPositionWeight , SetIKRotationWeight , SetIKPosition , SetIKRotation , SetLookAtPosition , bodyPosition , bodyRotation

На иллюстрации выше мы показываем персонажа, поднимающего цилиндрический объект. Как мы сделали это?

We start out with a character that has a valid Avatar.

Next create an Animator Controller with containing at least one animation for the character. Then in the Layers pane of the Animator window, click the cog settings icon of the Layer and and check the IK Pass checkbox in the menu which pops up.


Make sure the Animator Controller is assigned to the character’s Animator Component:

Next, attach to it a script that actually takes care of the IK, let’s call it IKControl . This script sets the IK target for the character’s right hand, and its look position to make it look at the object it is holding:

Using UnityEngine; using System; using System.Collections; public class IKControl: MonoBehaviour { protected Animator animator; public bool ikActive = false; public Transform rightHandObj = null; public Transform lookObj = null; void Start () { animator = GetComponent(); } //a callback for calculating IK void OnAnimatorIK() { if(animator) { //if the IK is active, set the position and rotation directly to the goal. if(ikActive) { // Set the look target position, if one has been assigned if(lookObj != null) { animator.SetLookAtWeight(1); animator.SetLookAtPosition(lookObj.position); } // Set the right hand target position and rotation, if one has been assigned if(rightHandObj != null) { animator.SetIKPositionWeight(AvatarIKGoal.RightHand,1); animator.SetIKRotationWeight(AvatarIKGoal.RightHand,1); animator.SetIKPosition(AvatarIKGoal.RightHand,rightHandObj.position); animator.SetIKRotation(AvatarIKGoal.RightHand,rightHandObj.rotation); } } //if the IK is not active, set the position and rotation of the hand and head back to the original position else { animator.SetIKPositionWeight(AvatarIKGoal.RightHand,0); animator.SetIKRotationWeight(AvatarIKGoal.RightHand,0); animator.SetLookAtWeight(0); } } } }

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

В предыдущем уроке мы ознакомились с методом прямой кинематики, при котором иерархические связи передаются от предков к потомкам. Это приводит к тому, что дочерние объекты частично или полностью наследуют поведение родительских объектов и при этом сами никакого влияния на них не оказывают. Подобный тип иерархического связывания позволяет легко анимировать объекты, состоящие из большого числа элементов, при условии, что всем элементам объекта назначаются одинаковые трансформации. Однако он не поможет, когда перемещение одного элемента должно оказывать влияние на все прочие элементы, связанные внутри сложного объекта, с учетом их положения в иерархической цепочке, а также свойств. Такое поведение имитируется посредством инверсной, или, как часто говорят, обратной, кинематики (Inverse Kinematics), простые примеры использования которой мы и рассмотрим в данном уроке.

Теоретические аспекты

Понятие инверсной кинематики

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

Чтобы убедиться в этом, создайте простую сцену со своеобразной булавой, смоделированной из примитива Hedra , десяти торусов и цилиндра со скошенными основаниями (рис. 1). Свяжите объекты инструментом Select and Link (Выделить и связать), двигаясь в направлении от объекта Hedra 01 к объекту ChamferCyl 01 - в итоге цилиндр окажется Root-объектом (рис. 2). Выделите цилиндр и переместите его влево - вместе с ним переместятся и все остальные объекты, являющиеся по отношению к нему дочерними. Тогда как передвижение одного из расположенных в середине цепочки торусов приведет к перемещению лишь дочерних по отношению к нему объектов цепочки, а объекты, расположенные выше его по иерархии, останутся на месте (рис. 3). Вернитесь к исходному положению объектов и активируйте режим инверсной кинематики, открыв на панели Hierarchy закладку IK и щелкнув на кнопке Interactive IK , которая должна подсветиться (рис. 4). Сохраните рабочую сцену в файл и повторите те же самые операции с перемещением цилиндра и торуса - перемещение первого объекта даст те же самые результаты, что и ранее, а вот изменение положения торуса приведет к соответствующим изменениям положения всех остальных (а не только дочерних по отношению к нему) элементов, включая Root-объект (рис. 5). При этом положение объектов, стоящих по иерархии ниже перемещаемого торуса (в данном случае он играет роль просто эффектора), будет меняться по законам прямой кинематики, а объектов с более высокой иерархией - по законам инверсной кинематики.

Управление вращением и перемещением объектов

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

Данный аспект при обратной кинематике регулируется в первую очередь посредством Joint-параметров, позволяющих определить, относительно каких осей и в каких пределах может вращаться (Rotational Joint s ) и/или перемещаться (Sliding Joint s ) тот или иной дочерний объект относительно родительского. Иными словами, Joint-параметры задают характер трансформации связи (или, как часто говорят, сочленения либо сустава) между дочерним и родительским объектами. Настраиваются данные параметры на закладке IK панели Hierarchy , однако по умолчанию там доступны лишь параметры, отвечающие за ограничение вращения объектов иерархической цепочки (Rotational Joint s ). Возможность управления объектами посредством параметров Sliding Joint s появится только после назначения им специализированного IK-контроллера. Последнее осуществляется через меню Animation =>IK Solvers (Анимация=>IK-решения), предусматривающее присваивание объектам одного из следующих IK-контроллеров:

  • HI Solver (History Independent Solver ) - исторически независимый контроллер (считается самым универсальным для персонажной анимации);
  • HD Solver (History Dependent Solver ) - исторически зависимый контроллер;
  • IK Limb Solver - контроллер для анимации конечностей (рассчитан только на два объекта иерархической цепи);
  • Spline IK Solver - сплайновый контроллер.

Данные контроллеры не только открывают доступ к параметрам Sliding Joint s , но и обеспечивают еще массу возможностей благодаря тому, что преобразуют обычные иерархические последовательности в так называемые цепи инверсной кинематики (IK Chain ), которые представляют собой невизуализируемые объекты управления, упрощающие управление элементами иерархии по законам инверсной кинематики. Внешне в окнах проекций IK-цепи выглядят как ряд перекрестий и линий, соединяющих начало и окончание конкретной IK-цепи. Выбираются данные элементы обычным образом (щелчком по перекрестию или инструментом Select by Name ), а вот редактируются не через панель Modify (как прочие объекты), а через панель Motion . Независимо от типа контроллера IK-цепи создаются одинаково: выбирается первый элемент предполагаемой цепи, затем ему назначается IK-контроллер и указывается последний элемент цепочки. Различие между IK-контроллерами заключается в использовании при расчетах IK-решений разных методов преобразования IK-цепочек.

Чтобы убедиться в том, что IK-цепи упрощают управление элементами иерархии, создайте упрощенную модель ноги (бедро и голень со стопой) - рис. 7. Свяжите их в иерархическую цепочку, начиная данный процесс снизу, чтобы в итоге в роли Root-объекта оказался верхний цилиндр (то есть бедро). Включите режим инверсной кинематики и попробуйте переместить ступню влево - результат окажется совсем не таким, какой можно наблюдать при ходьбе, поскольку даже при небольшом перемещении повороты cуставов будут слишком велики (рис. 8). А теперь создайте дополнительный фиктивный объект в верхней части бедра и включите его в иерархию в качестве Root-объекта. Выделите Dummy-объект и назначьте цепи контроллер HI Solver , применив команду Animation =>IK Solvers =>HI Solver и указав в качестве конечного эффектора ступню, - при выполнении данного действия за курсором мыши будет тянуться пунктирная линия (рис. 9). Это приведет к созданию цепи инверсной кинематики с IK-контроллером, о чем будет свидетельствовать появление линии, простирающейся от вершины бедра к ступне, и перекрестия (это так называемый целевой объект IK Goal ) в опорной точке эффектора (рис. 10). Если вы подвигаете перекрестие, то увидите, что нога перемещается, сгибается и поворачивается таким образом, что опорная точка ступни всегда находится в центре крестика, но сама ступня не перемещается относительно голени (рис. 11). Попробуйте анимировать подобное движение, щелкнув на кнопке Auto Key , активировав 50-й кадр, перетащив перекрестие немного назад, а затем, в 100-м кадре, вернув его в исходное положение и выключив режим автоматического создания ключей. Проиграйте анимацию, и вы увидите предельно упрощенную имитацию ходьбы (рис. 12). Конечно, до настоящей ходьбы еще далеко, но мы пока ограничимся этим и вернемся к данному вопросу в одном из ближайших уроков, когда будем говорить о построении иерархии с применением Bones .

Вернемся к сохраненной на диске рабочей сцене с булавой и попробуем немного поэкспериментировать с настройкой Joint-параметров. Выделите Root-объект, из меню Animation =>IK Solvers (Анимация=>IK-решения) выберите команду HD Solver и укажите мышью конечный эффектор (то есть объект Hedra 01). Выделите объект Hedra 01, вновь переместите его в одно из направлений и убедитесь, что результат окажется гораздо более реалистичным (рис. 13). Выделите объект ChamferCyl 01 и откройте закладку IK панели Hierarchy . По умолчанию для него у параметров Sliding Joint s отключены флажки Active в отношении всех трех осей и включены для параметров Rotational Joint s (рис. 14). Это означает, что данный объект может вращаться произвольным образом, но для него запрещены перемещения относительно любой из осей. Для примера отмените ограничение на скольжение относительно оси Z , включив флажок Active в разделе Z Axis , - после этого положение и ориентация объекта ChamferCyl 01 при перемещениях конечного эффектора станут совсем иными (рис. 15 и 16); верните ограничение. Обратите внимание, что даже при установленном ограничении на скольжение некоторое смещение объекта ChamferCyl 01 все же имеет место, так как ограничения устанавливаются не непосредственно на объекты, а на их сочленения друг с другом (Joint ), то есть на суставы (если провести аналогию с конечностью человека). Попробуйте также установить ограничения на вращение объекта ChamferCyl 01 в отношении всех трех осей, что позволит добиться жесткой фиксации положения и ориентации данного объекта, в то время как все прочие элементы IK-цепи по-прежнему будут полностью свободны от каких-либо ограничений на вращение и скольжение (рис. 17).

Рис. 14. Первоначальный вид свитков SlidingJoints и RotationalJoints для объекта ChamferCyl 01

Настройка пределов ограничений

Помимо включения/выключения ограничений на скольжение и вращение в свитках Sliding Joint s и Rotational Joints можно регулировать то, насколько допустимо перемещение или вращение относительно той или иной оси, то есть устанавливать пределы ограничений. Реализуется это посредством установки флажка Limited (Ограничение) и определения значений пределов вращения в полях From и To («От» и «До»). Наша рабочая сцена не очень подходит для экспериментов с ограничениями пределов скольжения и вращения, поэтому создайте новую сцену из трех цилиндров разного диаметра, размещенных друг на друге так, чтобы вверху был цилиндр самого большого радиуса (он должен оказаться в начале координат), а внизу - самого малого (рис. 18). Высота всех цилиндров одинакова и равна 30. Свяжите их в иерархическую цепочку, начиная данный процесс сверху так, чтобы в итоге в роли Root-объекта оказался нижний цилиндр (рис. 19).

Выделите нижний цилиндр и назначьте цепи контроллер HI Solver , применив команду Animation =>IK Solvers =>HI Solver и указав в качестве конечного эффектора верхний цилиндр. Выделите верхний цилиндр и на закладке IK панели Hierarchy в свитке Rotational Joints удалите флажки Active для всех трех осей, а в свитке Sliding Joint s включите флажок Active для оси Z . Аналогичную операцию проведите в отношении среднего цилиндра, а для нижнего цилиндра запретите вообще все виды Joint s-трансформаций. После этого попробуйте подвигать верхний цилиндр вверх и вниз - после установленных для него разрешений он будет перемещаться относительно оси Z (рис. 20) и без каких-либо ограничений может двигаться вверх и вниз бесконечно далеко. Теперь настроим для цилиндров пределы ограничений для их перемещения вдоль оси Z , чтобы верхний цилиндр вначале полностью погружался в средний, а затем средний - в нижний. То есть в итоге должна получиться некая имитация складной трубы (например, подзорной). Легче всего подобрать соответствующие ограничения с визуальным контролем пределов, что возможно при увеличении и уменьшении мышью при нажатой клавише Ctrl соответствующих значений в полях, расположенных справа от полей ввода (пока без включения флажка Limited ). В этом случае текущее состояние цилиндров будет сразу же отображаться в активном окне проекций. Выделите верхний цилиндр и таким способом (то есть изменяя параметры при нажатой клавише Ctrl) убедитесь, что его исходное положение (то есть когда он занимает свое первоначальное положение) соответствует значению From , равному 30, а конечное (когда данный цилиндр полностью погрузился в нижний цилиндр) - значению To , равному 0. Аналогичным образом подберите значения ограничений для среднего цилиндра, которые для поставленной задачи окажутся точно такими же. Включите соответствующие флажки Limited (рис. 21), и вы увидите, что при перемещении верхнего цилиндра наша «подзорная труба» действительно будет складываться задуманным образом (рис. 22). Сохраните рабочую сцену в файл. Анимируйте перемещение цилиндров: активируйте режим автоматической генерации ключей, перетащите ползунок на последний кадр, переместите верхний цилиндр так, чтобы он полностью погрузился в нижний, и отключите режим автоматической генерации ключей. Сохраните сцену в файл (позже он нам потребуется).

Рис. 21. Окончательный вид свитка SlidingJoints для верхнего и среднего цилиндров

При желании соединение объектов можно сделать более плавным, включив для соответствующих Joints-ограничений флажок Ease (данная возможность часто применяется для анимации «мягких» моделей). Для примера осуществите это для верхнего и среднего цилиндров (рис. 23). После этого эффект перемещения цилиндров при анимации станет более мягким, так как средний цилиндр будет начинать движение не при достижении верхним цилиндром своего нижнего предела, а чуть раньше.

Инверсная кинематика (инверсная кинематическая анимация , англ. inverse kinematics , IK) - процесс определения параметров связанных гибких объектов (например, кинематическая пара или кинематическая цепь) для достижения необходимой позиции, ориентации и расположения этих объектов. Инверсная кинематика является типом планирования движения (англ. ) . Инверсная кинематика активно используется в робототехнике , трёхмерной компьютерной анимации и в разработке компьютерных игр . Она используется в основном в тех ситуациях, когда необходимо точное позиционирование гибких сочленений одного объекта относительно других объектов окружающей среды. Алгоритм инверсной кинематики противоположен алгоритму прямой кинематики .

Энциклопедичный YouTube

    1 / 3

    Прямая и инверсная кинематика в 3DS Max

    Anime Studio Pro 10, 11(Moho Pro) - Как подключить инверсную кинематику на костяного персонажа

    Полная костная инверсная кинематика в Anime Studio Pro (Moho Pro) / Full Inverse Kinematics

    Субтитры

Описание

Инверсная кинематика, как и прямая , применяются к моделям каких-либо персонажей или объектов, которые созданы с использованием скелетной анимации . Суть скелетной анимации состоит в том, что объект состоит из набора твёрдых сегментов (компонентов), соединённых сочленениями (англ. joint ). При этом сегменты могут объединяться в кинематические пары , которые в свою очередь объединяются в кинематические цепи . Данные сегменты образуют иерархические цепочки, которые имеют «верхний» и «нижний» уровень. Сегменты (компоненты) верхних уровней называются компонентами-предками (или родительскими сегментами), а компоненты нижних - компонентами-потомками (или дочерними сегментами). Например, если рассмотреть руку человека, то плечевой сустав будет самым верхним уровнем, а кончик пальца - самым нижним, т. е. компонентом-потомком к плечевому суставу. Локтевой сустав находится внутри цепочки, он будет иметь как родительские (плечо), так и дочерние (запястье, пальцы) сегменты.

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

В инверсной кинематике дочерний сегмент (компонент-потомок), который вызывает изменение положения и ориентацию других объектов и расположен в середине отдельной иерархической цепочке сегментов, называется эффектором (англ. effector ) . Если эффектор является конечным объектом данной иерархической цепочки, то он называется конечным эффектором (англ. end effector ). Именно через эффектор осуществляется манипулирование всей иерархической цепочкой. Изменение положения и/или ориентации конечного эффектора приводит к изменению положения и/или ориентации всех сегментов иерархической цепочки по законам инверсной кинематики. Изменение положения и/или ориентации простого (не конечного) эффектора приводит к тому, что положение объектов, стоящих по иерархии ниже его, меняется по законам прямой кинематики, а объектов с более высокой иерархией - по законам инверсной кинематики.

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

Использование и примеры

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

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

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

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

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

Примечания

Внешние ссылки

Англоязычные источники

  • Hugo Elias. Inverse Kinematics Архивировано 13 августа 2011 года.
  • Hugo Elias. Inverse Kinematics - Improved Methods (англ.) . freespace.virgin.net. Проверено 5 июня 2009. Архивировано 13 августа 2011 года.
  • Robot Inverse Kinematics (англ.) . www.learnaboutrobots.com. Проверено 5 июня 2009. Архивировано 13 августа 2011 года.
  • How do the characters in video games move so fluidly? (англ.) . Проверено 5 июня 2009. Архивировано 13 августа 2011 года.
  • Martin John Baker. 3D Theory - Kinematics - Joints  Inverse Kinematics (англ.) . www.euclideanspace.com. Проверено 5 июня 2009. Архивировано 13 августа 2011 года.
  • Lydia E. Kavraki. Protein Inverse Kinematics and the Loop Closure Problem (англ.) . cnx.org. Проверено 5 июня 2009. Архивировано 13 августа 2011 года.
  • Diego Park. Computer Graphics (англ.) . diegopark.googlepages.com. Проверено 5 июня 2009. Архивировано 13 августа 2011 года.
  • Bill Baxter.

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

Описание

Инверсная кинематика, как и прямая , применяются к моделям каких-либо персонажей или объектов, которые созданы с использованием скелетной анимации . Суть скелетной анимации состоит в том, что объект состоит из набора твёрдых сегментов (компонентов), соединённых сочленениями (англ. joint ). При этом сегменты могут объединяться в кинематические пары , которые в свою очередь объединяются в кинематические цепи . Данные сегменты образуют иерархические цепочки, которые имеют «верхний» и «нижний» уровень. Сегменты (компоненты) верхних уровней называются компонентами-предками (или родительскими сегментами), а компоненты нижних - компонентами-потомками (или дочерними сегментами). Например, если рассмотреть руку человека, то плечевой сустав будет самым верхним уровнем, а кончик пальца - самым нижним, т. е. компонентом-потомком к плечевому суставу. Локтевой сустав находится внутри цепочки, он будет иметь как родительские (плечо), так и дочерние (запястье, пальцы) сегменты.

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

В инверсной кинематике дочерний сегмент (компонент-потомок), который вызывает изменение положения и ориентацию других объектов и расположен в середине отдельной иерархической цепочке сегментов, называется эффектором (англ. effector ) . Если эффектор является конечным объектом данной иерархической цепочки, то он называется конечным эффектором (англ. end effector ). Именно через эффектор осуществляется манипулирование всей иерархической цепочкой. Изменение положения и/или ориентации конечного эффектора приводит к изменению положения и/или ориентации всех сегментов иерархической цепочки по законам инверсной кинематики. Изменение положения и/или ориентации простого (не конечного) эффектора приводит к тому, что положение объектов, стоящих по иерархии ниже его, меняется по законам прямой кинематики, а объектов с более высокой иерархией - по законам инверсной кинематики.

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

Использование и примеры

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

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

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

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

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

Напишите отзыв о статье "Инверсная кинематика"

Примечания

Внешние ссылки

Англоязычные источники
  • Hugo Elias. (англ.) . freespace.virgin.net. Проверено 5 июня 2009. .
  • Hugo Elias. (англ.) . freespace.virgin.net. Проверено 5 июня 2009. .
  • (англ.) . www.learnaboutrobots.com. Проверено 5 июня 2009. .
  • (англ.) . Проверено 5 июня 2009. .
  • Martin John Baker. (англ.) . www.euclideanspace.com. Проверено 5 июня 2009. .
  • Lydia E. Kavraki. (англ.) . cnx.org. Проверено 5 июня 2009. .
  • Diego Park. (англ.) . diegopark.googlepages.com. Проверено 5 июня 2009. .
  • Bill Baxter. (англ.) . billbaxter.com (21 февраля 2000 года). Проверено 5 июня 2009. .
  • (англ.) . www.virtualitoy.com. - Флэш-скрипт на сайте, который позволяет "одеть" человеческую модель. Для анимации одевания используется инверсная кинематика. Проверено 5 июня 2009. .
Русскоязычные источники
  • Hugo Elias (перевод на русский - Pavel A. Chuvanov). . GameDev.ru (8 июня 2002 года). Проверено 5 июня 2009. .
  • . . Проверено 5 июня 2009. .
  • Светлана Шляхтина. . журнал . Проверено 7 июня 2009. .
  • . Проверено 5 июня 2009. .
  • . . Проверено 7 июня 2009. .
  • . . Проверено 7 июня 2009. .
  • Алексеев В. (недоступная ссылка - история ) . (10 января 2008 года). Проверено 5 июня 2009. .
  • Майкл Комет. . Mir3D.ru . - Урок по созданию инверсной кинематике в 3ds Max . Проверено 7 декабря 2009.

Отрывок, характеризующий Инверсная кинематика

– Он теперь здесь, скажите ему… чтобы он прост… простил меня. – Она остановилась и еще чаще стала дышать, но не плакала.
– Да… я скажу ему, – говорил Пьер, но… – Он не знал, что сказать.
Наташа видимо испугалась той мысли, которая могла притти Пьеру.
– Нет, я знаю, что всё кончено, – сказала она поспешно. – Нет, это не может быть никогда. Меня мучает только зло, которое я ему сделала. Скажите только ему, что я прошу его простить, простить, простить меня за всё… – Она затряслась всем телом и села на стул.
Еще никогда не испытанное чувство жалости переполнило душу Пьера.
– Я скажу ему, я всё еще раз скажу ему, – сказал Пьер; – но… я бы желал знать одно…
«Что знать?» спросил взгляд Наташи.
– Я бы желал знать, любили ли вы… – Пьер не знал как назвать Анатоля и покраснел при мысли о нем, – любили ли вы этого дурного человека?
– Не называйте его дурным, – сказала Наташа. – Но я ничего – ничего не знаю… – Она опять заплакала.
И еще больше чувство жалости, нежности и любви охватило Пьера. Он слышал как под очками его текли слезы и надеялся, что их не заметят.
– Не будем больше говорить, мой друг, – сказал Пьер.
Так странно вдруг для Наташи показался этот его кроткий, нежный, задушевный голос.
– Не будем говорить, мой друг, я всё скажу ему; но об одном прошу вас – считайте меня своим другом, и ежели вам нужна помощь, совет, просто нужно будет излить свою душу кому нибудь – не теперь, а когда у вас ясно будет в душе – вспомните обо мне. – Он взял и поцеловал ее руку. – Я счастлив буду, ежели в состоянии буду… – Пьер смутился.
– Не говорите со мной так: я не стою этого! – вскрикнула Наташа и хотела уйти из комнаты, но Пьер удержал ее за руку. Он знал, что ему нужно что то еще сказать ей. Но когда он сказал это, он удивился сам своим словам.
– Перестаньте, перестаньте, вся жизнь впереди для вас, – сказал он ей.
– Для меня? Нет! Для меня всё пропало, – сказала она со стыдом и самоунижением.
– Все пропало? – повторил он. – Ежели бы я был не я, а красивейший, умнейший и лучший человек в мире, и был бы свободен, я бы сию минуту на коленях просил руки и любви вашей.
Наташа в первый раз после многих дней заплакала слезами благодарности и умиления и взглянув на Пьера вышла из комнаты.
Пьер тоже вслед за нею почти выбежал в переднюю, удерживая слезы умиления и счастья, давившие его горло, не попадая в рукава надел шубу и сел в сани.
– Теперь куда прикажете? – спросил кучер.
«Куда? спросил себя Пьер. Куда же можно ехать теперь? Неужели в клуб или гости?» Все люди казались так жалки, так бедны в сравнении с тем чувством умиления и любви, которое он испытывал; в сравнении с тем размягченным, благодарным взглядом, которым она последний раз из за слез взглянула на него.
– Домой, – сказал Пьер, несмотря на десять градусов мороза распахивая медвежью шубу на своей широкой, радостно дышавшей груди.
Было морозно и ясно. Над грязными, полутемными улицами, над черными крышами стояло темное, звездное небо. Пьер, только глядя на небо, не чувствовал оскорбительной низости всего земного в сравнении с высотою, на которой находилась его душа. При въезде на Арбатскую площадь, огромное пространство звездного темного неба открылось глазам Пьера. Почти в середине этого неба над Пречистенским бульваром, окруженная, обсыпанная со всех сторон звездами, но отличаясь от всех близостью к земле, белым светом, и длинным, поднятым кверху хвостом, стояла огромная яркая комета 1812 го года, та самая комета, которая предвещала, как говорили, всякие ужасы и конец света. Но в Пьере светлая звезда эта с длинным лучистым хвостом не возбуждала никакого страшного чувства. Напротив Пьер радостно, мокрыми от слез глазами, смотрел на эту светлую звезду, которая, как будто, с невыразимой быстротой пролетев неизмеримые пространства по параболической линии, вдруг, как вонзившаяся стрела в землю, влепилась тут в одно избранное ею место, на черном небе, и остановилась, энергично подняв кверху хвост, светясь и играя своим белым светом между бесчисленными другими, мерцающими звездами. Пьеру казалось, что эта звезда вполне отвечала тому, что было в его расцветшей к новой жизни, размягченной и ободренной душе.

С конца 1811 го года началось усиленное вооружение и сосредоточение сил Западной Европы, и в 1812 году силы эти – миллионы людей (считая тех, которые перевозили и кормили армию) двинулись с Запада на Восток, к границам России, к которым точно так же с 1811 го года стягивались силы России. 12 июня силы Западной Европы перешли границы России, и началась война, то есть совершилось противное человеческому разуму и всей человеческой природе событие. Миллионы людей совершали друг, против друга такое бесчисленное количество злодеяний, обманов, измен, воровства, подделок и выпуска фальшивых ассигнаций, грабежей, поджогов и убийств, которого в целые века не соберет летопись всех судов мира и на которые, в этот период времени, люди, совершавшие их, не смотрели как на преступления.
Что произвело это необычайное событие? Какие были причины его? Историки с наивной уверенностью говорят, что причинами этого события были обида, нанесенная герцогу Ольденбургскому, несоблюдение континентальной системы, властолюбие Наполеона, твердость Александра, ошибки дипломатов и т. п.
Следовательно, стоило только Меттерниху, Румянцеву или Талейрану, между выходом и раутом, хорошенько постараться и написать поискуснее бумажку или Наполеону написать к Александру: Monsieur mon frere, je consens a rendre le duche au duc d"Oldenbourg, [Государь брат мой, я соглашаюсь возвратить герцогство Ольденбургскому герцогу.] – и войны бы не было.
Понятно, что таким представлялось дело современникам. Понятно, что Наполеону казалось, что причиной войны были интриги Англии (как он и говорил это на острове Св. Елены); понятно, что членам английской палаты казалось, что причиной войны было властолюбие Наполеона; что принцу Ольденбургскому казалось, что причиной войны было совершенное против него насилие; что купцам казалось, что причиной войны была континентальная система, разорявшая Европу, что старым солдатам и генералам казалось, что главной причиной была необходимость употребить их в дело; легитимистам того времени то, что необходимо было восстановить les bons principes [хорошие принципы], а дипломатам того времени то, что все произошло оттого, что союз России с Австрией в 1809 году не был достаточно искусно скрыт от Наполеона и что неловко был написан memorandum за № 178. Понятно, что эти и еще бесчисленное, бесконечное количество причин, количество которых зависит от бесчисленного различия точек зрения, представлялось современникам; но для нас – потомков, созерцающих во всем его объеме громадность совершившегося события и вникающих в его простой и страшный смысл, причины эти представляются недостаточными. Для нас непонятно, чтобы миллионы людей христиан убивали и мучили друг друга, потому что Наполеон был властолюбив, Александр тверд, политика Англии хитра и герцог Ольденбургский обижен. Нельзя понять, какую связь имеют эти обстоятельства с самым фактом убийства и насилия; почему вследствие того, что герцог обижен, тысячи людей с другого края Европы убивали и разоряли людей Смоленской и Московской губерний и были убиваемы ими.
Для нас, потомков, – не историков, не увлеченных процессом изыскания и потому с незатемненным здравым смыслом созерцающих событие, причины его представляются в неисчислимом количестве. Чем больше мы углубляемся в изыскание причин, тем больше нам их открывается, и всякая отдельно взятая причина или целый ряд причин представляются нам одинаково справедливыми сами по себе, и одинаково ложными по своей ничтожности в сравнении с громадностью события, и одинаково ложными по недействительности своей (без участия всех других совпавших причин) произвести совершившееся событие. Такой же причиной, как отказ Наполеона отвести свои войска за Вислу и отдать назад герцогство Ольденбургское, представляется нам и желание или нежелание первого французского капрала поступить на вторичную службу: ибо, ежели бы он не захотел идти на службу и не захотел бы другой, и третий, и тысячный капрал и солдат, настолько менее людей было бы в войске Наполеона, и войны не могло бы быть.
Ежели бы Наполеон не оскорбился требованием отступить за Вислу и не велел наступать войскам, не было бы войны; но ежели бы все сержанты не пожелали поступить на вторичную службу, тоже войны не могло бы быть. Тоже не могло бы быть войны, ежели бы не было интриг Англии, и не было бы принца Ольденбургского и чувства оскорбления в Александре, и не было бы самодержавной власти в России, и не было бы французской революции и последовавших диктаторства и империи, и всего того, что произвело французскую революцию, и так далее. Без одной из этих причин ничего не могло бы быть. Стало быть, причины эти все – миллиарды причин – совпали для того, чтобы произвести то, что было. И, следовательно, ничто не было исключительной причиной события, а событие должно было совершиться только потому, что оно должно было совершиться. Должны были миллионы людей, отрекшись от своих человеческих чувств и своего разума, идти на Восток с Запада и убивать себе подобных, точно так же, как несколько веков тому назад с Востока на Запад шли толпы людей, убивая себе подобных.
Действия Наполеона и Александра, от слова которых зависело, казалось, чтобы событие совершилось или не совершилось, – были так же мало произвольны, как и действие каждого солдата, шедшего в поход по жребию или по набору. Это не могло быть иначе потому, что для того, чтобы воля Наполеона и Александра (тех людей, от которых, казалось, зависело событие) была исполнена, необходимо было совпадение бесчисленных обстоятельств, без одного из которых событие не могло бы совершиться. Необходимо было, чтобы миллионы людей, в руках которых была действительная сила, солдаты, которые стреляли, везли провиант и пушки, надо было, чтобы они согласились исполнить эту волю единичных и слабых людей и были приведены к этому бесчисленным количеством сложных, разнообразных причин.

В данной статье мы разберемся, что такое 3D печать и какая бывает кинематика 3D принтеров.

1. 3D печать. Какая она на вкус?

Технологий печати существует большое множество, от FDM (FFF), по которой печатает больше 90% принтеров на данном портале, до SLA/DLP/LCD (с фотополимерами) и SLS/SLM (спекание порошка с помощью мощных лазеров)
Нас на начальном этапе интересует FDM - послойное наплавление расплавленного прутка. На картинке ниже изображен хотенд (Hot end) - та часть экструдера 3D принтера, где происходит расплавление прутка.

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

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

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

Наиболее часто выполняется из нержавеющей стали. У нее теплопроводность ниже, чем у обычной,нелегированной стали. Для предотвращения плавления прутка выше термоблока сверху на термобарьер накручивается радиатор и обдувается кулером. Все достаточно просто.
Очень часто возникает протечка расплавленного пластика через резьбу.Это означает, что сопло не поджало термобарьер в нагревательном блоке. Поэтому при разборке и сборке хотэнда вкручиваем сначала термобарьер в нагревательный блок, а потом поджимаем соплом. Если у вас при закручивании сопла остается зазор между торцем сопла и нагревательным блоком, то это нормально, зазор для того, что бы поджать соплом термобарьер.Для того, чтобы подать пруток в нужное время и в нужном месте необходим фидер (feeder), то есть устройство подачи прутка.
Иногда его выполняют совмещенным с хотэндом, и тогда такой тип экструдера (это все вместе хотэнд+фидер) называют директом (direct), то есть подача прямая, без трубок.Та же фидер делают отдельно, а подачу прутка осуществляют через фторопластовую трубку. Называют такую систему - боуден (bowden).Это делается для того, чтобы облегчить движущуюся часть. По части положительных моментов и недостатков - у каждой конструкции они,несомненно, есть.
Директ экструдер:
1. Достоинства:
а) Более надежный за счет меньшего числа соединений для подачи пластика;
б) Менее придирчив к материалам, которыми печатает, в частности резиной на основе каучуков проблематично печатать на боуден экструдерах;
2. Недостатки:
а) Большой вес, за счет этого при ускорениях/замедлениях можно наблюдать небольшую рябь на поверхности детали;
б) Габариты. Они очень сильно влияют на область построения. Скажем, как на картинке выше, директ с 4 цветами был бы очень громадным. А для боудена это в самый раз.
Боуден экструдер:
1. Достоинства:
а) Вынесенный мотор снижает вес движущихся частей принтера, а их меньшая инерционность не влияет на поверхность модели;
б) Катушка не дергается вслед за моделью, а то при витков катушки с директом получим пропуск шагов, так как каретка будет тянуть за собой катушку.
2. Недостатки:
а) Настройки ретракта (вытягивание прутка обратно при холостых перемещениях, что бы расплавленный пластик, расширяясь не сочился из сопла) сложнее, так как пруток меньше внутреннего диаметра трубки, он имеет свойство тянуться;
б) Сложнее, чем на директе, выбрать все зазоры, чтобы печатать различными гибкими пластиками. Все, кто говорит,что на боудене печать невозможна гибкими пластиками - нагло врут. Я . И вполне успешно.

Теперь переходим непосредственно к механике и ее калибровке.

Часть 2. Механика. Что, как и чем дергает?

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

Перемещение вдоль каждой из осей обеспечивается своим независимым мотором. Перемещение по оси Z (вверх-вниз) обеспечивается с помощью 2 моторов и с помощью кинематической пары винт-гайка. Часто используются шпильки М5, в последнее время все чаще ставят винты с трапециеидальной резьбой.
Вот винт с трапециеидальной резьбой. Как шпильки с метрической резьбой выглядят прикладывать не буду.Единственное, что объясню относительно перемещения по шпилькам и трапециям - для производства трапеций берут калиброванный пруток и прокатывают между роликов, находящихся под углом. Получаются винтовые канавки. Такой метод, априори, дает лучшее качество и точность шага, нежели у строительных шпилек по далеко не самому высокому квалитету.Для подключения одновременно 2 двигателей на одну ось (и на 1 разъем) применяется следующая схема.Соединение последовательное, 2 провода запаиваются, а оставшиеся обжимаются. На цвета можно не обращать внимания, главное, что бы обмотки звонились. А и В это обмотки, а 1 и 2 - выводы.
Плюсы данной кинематики:
1) Независимое перемещение каждой из осей. Легко поймать понять какая ось пропускает шаги. Кинематика перекочевала в принтеры от фрезерных ЧПУ, поэтому многие производители делают на ней настольные фрезерные станки, вместо экструдера предлагают установить лазер для гравировок или резки, шпиндель для фрезеровки плат, экструдер для шоколада или даже теста, что б печь блины.На фото выше - принтер ZMorph. Он может использоваться и как принтер (с одним или двумя экструдерами), как гравировщик (установка Dremel), лазером для гравировок и так далее. Небольшое презентацонное видео.Фрезерный станок на этой кинематике. Замечу, что для фрезеровки необходимо использовать для перемещения пару винт-гайка,а не ремни, они не предназначены для таких нагрузок.

Принтеры для печати шоколадом и для выпечки блинов по вашему эскизу. Стоит заметить, что шоколадки типа Аленка или Бабаевские использовать не рекомендуется, так как они уже имеют в своем составе какао-масло и при переработке (расплавка и затвердевание) результат непредсказуем. Необходимо использовать шоколад в галлетах, например бельгийский Callebaut, так как в нем нет какао-масла, и для окончательной заливки его нужно добавить. Для такого типа шоколада на каждой пачке есть график его кристализации. Масло желательно брать в порошке. Для более подробной информации рекомендую погуглить про темперирование шоколада. 2) Кинематика проста как два пальца. Ее очень просто собрать. Многие даже собирают на старых DVD дисководах. 3) Легко изменяется под свои нужды, размер экструдера тоже имеет небольшое значение, так как он выступает вперед и не мешает движению остальных частей. Многие ставят второй экструдер, или делают сопла качающимися, что бы сопли одного экструдера не оставались на детали, при печати вторым соплом.Поэтому для данной кинематики существует огромное число вариаций экструдера, на любой вкус, на очень известном сайте .
Недостатки данной кинематики:
1) Сложная калибровка. Да, поскольку стол "дрыгается" печатать сложновато качественно, ибо деталь+стол при резкой смене направления перемещения по инерции стремяться ехать дальше. Получаются некрасивые артефакты печати. И для качественной печати нужна небольшая скорость. А вообще, все зависит от рамы. У меня первым принтером была китайская прюша. С акриловой рамой. А акрил не очень-то жесткий. А как известно, жесткость принтера как и ЧПУ - самое важное. И печатать можно было более или менее качественно на скоростях 40-50 мм/с. Далее я его на стальную раму от МЗТО.И после этого без потери качества печати смог печатать на скоростях до 100 мм/с.
2) Деламинация. Из-за открытого корпуса и постоянно перемещающейся платформы горячий воздух, можно сказать, постоянно сдувается, а охлаждая излишне деталь сквозняками мы увеличиваем и без того большую усадку нейлонов,абс и прочих капризных пластиков. Кто-то шьет шубу для принтера из ткани, а кто-то довольствуется и коробками.Но цель, как всегда, одна и та же - уменьшить влияние сквозняков на усадку детали.

Основные моменты правильной калибровки принтеров с данной кинематикой:
1) Установить принтер на ровную поверхность. Желательно горизонтальную. Для этого необходим пузырьковый уровень. Далее устанавливаем по уровню положение оси X. 2) Переводим в домашнее положение. Делается либо в меню принтера командой Home/Домой, если печатаете с компьютера, то или командой G28 в строку команд, или специальными кнопками с иконкой домика.

Далее подкручиваем винт стола так, что бы сопло касалось стекла. Не давило на стекло, а касалось. Смотрим на просвет и крутим. После этого перемещаем экструдер к другому углу стрелками в +Х, +Y с ПК, или через меню Точно так же крутим винтик до соприкосновения с соплом. И повторяем операцию для остальных точек.
Постараюсь избавить вас от ошибок. На фото принтера выше стекло на столе крепится аж 8 зажимами. И вполне возможно, что по центру будет горб. Чтобы избежать подобных проблем стекло стоит закреплять 3 зажимами. Плоскость строится, как известно из начертательной геометрии, по 3 точкам. И калибровка будет проще в этом случае. Просто подкручиваем винт над концевиком по Z.Чтобы сопло касалось стекла посередине той стороны, на которой стоит 1 зажим. Дальше перегоняем хотенд в угол где еще один зажим, подкручиваем винт стола, и повторяем операцию с другим углом.
Касательно вобблинга.
Всякие антивобблинговые системы вроде установки продшипника в верхнюю опору не работают.Просто потому, что поставить идеально параллельно и в одной плоскости 4 далеко не идеально ровных циллиндра - задача нереальная. Особенно на хлипкой акриловой раме с печатными деталями. Поэтому, если принять за константу прямизну валов, и выставить их параллельно на раме (чисто гипотетически), а винты освободить (снизу муфта для крепления к мотору) и гайки для крепления оси Х. Винты за счет своей кривизны будут вертеться как миксер, но на печать это не будет влиять.Иначе конструкция будет работать на то, кто же окажется сильнее на сопротивление изгибу. И будет получаться далеко не ровная стенка. Оно вам надо?

2. Конструкция по типу кинематики принтеров компании Felix printers.

Таких принтеров много, такие делает МЗТО (mz3d.ru), уже упомянутые Felix. По сути кинематика та же, что и у Prusa. Независимые друг от друга оси. Только теперь стол ездит не вдоль одной оси, а сразу вдоль целых двух. Вдоль оси Z, и по оси Y.Конструкция стола примерно такая. На валах по Z ездит платформа. Сзади висит двигатель. По рельсам при помощи ремня передвигается стол. Хотенд передвигается только вдоль одной оси. Конструкция весьма забавна, так как стол весит куда больше хотенда, а его пытаются перемещать по 2 осям сразу.

Плюсы данной кинематики:
1) Отсутствует второй мотор по оси Z. Пресловутого вобблинга нет просто потому, что есть 2 вала и 1 винт. Винт, так же не стоит закреплять сверху. Если это не ШВП.
ШВП это отдельная тема. Если брать качественную ШВП, скажем, от тех же Hiwin, то она изготавливается как минимум по 7 классу точности (если катанная, а если шлифованная, то класс еще выше) и устанавливаться должны в подшипниковых опорах. Со стороны привода - 2 радиально-упорных подшипника back-to-back,а с другого конца - радиальный со свободной посадкой для компенсаци теплового расширения.

Цель установки ШВП - обеспечение точности перемещения. Если же ее устанавливать неправильно - деньги на ветер, и точность будет не выше пары винт-гайка с трапециеидальной резьбой. Для FDM c лихвой хватит точности трапеций.
2) Много места для установки директ-экструдера. Как и в предыдущей кинематике есть простор для творчества, подбирать тот самый, единственный и неповторимый экструдер, который вам по душе.
3) Жесткая рама. Есть возможность сделать нормальную раму. Жесткую,прочную. Да хоть чугуниевую. Ребята из Феликса решили не забивать голову и лепят из алюминиевого профиля. МЗТО пошли дальше, погнули стальной лист. А полку под установку стола отфрезеровали из листа алюминия.
4) Если брать конструкцию Феликса на профиле, то с помощью замены пары кусков профиля и винта по Z можно увеличить область печати.Только обязательно добавить жесткости. А то получится как это чудо конструкторской мысли. Большое, бессмысленное и беспощадное.

Недостатки кинематики:
1) Несомненно, большие дергающиеся массы. Стол вперед-назад,а если включить движение по Z при холостых перемещениях (Z-hope), то будет дискотека.
2) Нет возможности сделать ему нормальную термокамеру. Стол двигается вперед-назад и градиент температуры просто сдувается. Отсюда проблемы при печати нейлонами или ABS. Небольшие сквознячки в комнате с легкостью покажут вам где раки зимуют как усаживается материал.

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

3. Кинематика Ultimaker.
Одна из наиболее распространенных вариаций Cartesian кинематики.

Таких принтеров не очень много, но они есть. Вариация от Zortrax заслуживает внимания. Вариант того же Raise более приближен к классике.У Zortrax установлены двойные валы, причина проста - на них стоит директ экструдер с полноразмерным двигателем Nema 17. У Raise Dual стоит двойной директ экструдер, поэтому классические 6 мм валы заменены на 8 мм. А общий вес "головы" составляет почти 900 грамм.Кинематика построена полностью на валах. Они выступают одновременно и как направляющие, и как шкивы. Кинематика так же относится к Cartesian кинематикам с независимым перемещением вдоль каждой оси своим мотором. Очень привередлива к прямоте валов. Если использовать кривые валы можно получить весьма забавные артефакты на стенках моделей. И они будут по всем 3 координатам. Чаще всего это выглядит как разная толщина первого слоя и небольшие волны по стенкам. Поэтому вся соль и высокая цена оригинальных Ultimaker только в качественных комплектующих. А именно в прямых валах. Ремни используются часто кольцевые, что упрощает систему их натяжки, так как важно, чтобы все 4 ремня были одинаково натянуты.

Плюсы данной кинематики:
1) Стол движется только вдоль одной оси. Вертикальной. И градиент температур никоим образом от этого не страдает. Стол консольный, поэтому желательно предусмотреть ребра жесткости или учесть это толщиной стола.Отгиб металла на столе работает как ребро жесткости.Многие китайские клоны комплектуются такими вот ребрами жесткости для стола. 2) При всей кажущейся сложности кинематической схемы она проста и каждая ось перемещается с помощью своего же мотора.
3) Корпус закрытый, что защищает от сквозняков, и следовательно деламинации. Некоторые для пущего эффекта ставят акриловую дверцу.

Минусы кинематики:
1) Для хорошей печати мало купить пачку ровных валов. Собрать все эти валы правильно воедино та еще задачка. Заодно и купить хорошие подшипники. Не то, китайское барахло, что чаще втюхивают на али, а нормальные подшипники. Если подшипники, что ставят в корпус будут плохо вращаться - печать будет рывками и со сдвигом слоев. Последствия можно спросить у Вани (Plastmaska). Так же, покупая леопардовые втулки латунные подшипники с графитовыми вставками будьте готовы к тому, что они будут люфтить. А если будет люфт - вся конструкция будет стучать. А так же, китаезы любят вместо бронзы впихивать латунь. А при равномерном износе латуни и графита на валах будет будет маслянистая липкая черная пленка, из-за чего перемещения будут происходить тяжелее. Хорошие втулки предлагает Илья (tiger). Он же и про эти сложности. 2) Необходимо выставить правильно все параллели валов. Предлагаю воспользоваться таким девайсом.4 вала, что идут вдоль стенок корпуса автоматически встают правильно, а вот крестовину важно выставить правильно, что бы получить углы 90 градусов в плоскости XY.
3) Конструкция не предусматривает увеличение области печати с помощью пары кусоков профиля, поэтому размеры хотенда имеют значение. Директ сложновато поставить, но можно при желании.

Калибровка стола проще некуда. Стол часто на 3 точках крепления. Перемещаем хотенд по 3 точкам и крутим барашки.

4. Кинематика, используемая фирмой Makerbot.
Так же, весьма широко распространена. В частности принтеры компании Makerbot, BQ, BCN3D ,Magnum, клон магнума - Zenit и вполне сносные реплики makerbot - Flashforge и Hori работают на данной кинематической схеме.В данном случае мы имеем независимое движение каждой из осей, с Z столом и всеми вытекающими из этого сторонами.
Основной недостаток заключается в том, что на катающейся балке с одной стороны висит двигатель, создавая эдакий дисбаланс. Этот недостаток компенсировали в двухэкструдерном варианте - BCN3D Sigma. Там у каждой bowden-головы для перемещения вдоль балки есть свой двигатель. И они установлены по краям балки и уравновешивают друг друга. Для равномерного перемещения каждого из краев балки применяется 2 вала, шкивы и ремни. Ремни необходимо натягивать одинаково.
Достоинства кинематики:
1) Независимое перемещение каждой из осей.
2) Движущийся по Z стол. Градиент температур не страдает "сдуванием".
3) Закрытый корпус. Если не закрытый, то есть вполне нормальный с точки зрения эстетики шанс закрыть его.
4) Масштабируемость кинематики возможна. Различные BigREP и иже с ними с метровыми областями печати используют именно эту кинематику, так как различные H-bot/CoreXY будут адово звенеть по причине наличия 4-5 метровых ремней и их растяжения во время ускорений.
Недостатки кинематики:
1) Неуравновешенные массы на движущейся балке, отсюда максимальная скорость печати, с приемлемым качеством не больше 60-80 мм/с. Некоторые умудряются их уравновесить и это не столь заметно.
2) Громоздкие конструкции на валах, дабы избежать дисбалланса при перемещениях.
3) Необходимо следить, чтобы натяжения ремней справа и слева были одинаковы.

4. Кинематика H-bot/CoreXY.
Следующая по распространению. Так же, Cartesian. Два мотора неподвижны, но перемещают каретку по направляющим с помощью одного длинного куска ремня, или с помощью двух, но покороче. Математика сложнее, чем у предыдущих, так как необходимо синхронизировать поворот обоих роторов двигателя. То есть, для перемещения вдоль каждой оси нужно вращать оба мотора, а для перемещения по диагонали - всего 1.

По сути математика для вращения моторов одна и та же, а реализация в механике разная. Один из самых больших недостатков H-bot перед CoreXY состоит в том, что при перемещениях ремень стремится повернуть балку.На картинке слева это заметно, силы справа и силы слева создают крутящий момент. Поэтому для реализации этой кинематики необходима жесткость кинематической схемы. Чаще всего ее реализуют в рельсах.С жесткой балкой. Некоторые делают, конечно, на валах, но по итогу - это не фонтан.А потом понимают это и переезжают на рельсы.Ибо они и проще в сборке и настройке, и выдумывать каретки, что б хорошо валы закрепить не нужно.
CoreXY, в отличии от H-bot, приводится в движение при помощи двух ремней.И так, для простоты понимания, опишу положительные и отрицательные стороны каждой вариации этой кинематики.
H-bot.
Достоинства:
1) Ремень необходим всего один, а схема предусматривает его работу без скручиваний.
2) Натягивать один ремень удобнее, чем 2, поэтому в этой схеме нужен всего один нормальный натяжитель.Можно даже так.
Недостатки:
1) Ремень имеет свойство растягиваться со временем, а так как величина растяжения напрямую зависит от длины, то необходимо следить за его натяжением. Иначе получатся некрасивые волны на поверхности перед остановками.При слабой натяжке ремня каретка будет иметь такой люфт.
2) Необходимо выставлять ролики строго перпендикулярно плоскости XY, так как при небольшом перекосе ролика ремень будет съедаться об буртики ролика. И мы получим такую вот бяку.Проверено на своей шкуре и принтере ZAV. Поэтому всегда рекомендую нормально закреплять ролики, а не консольно, дабы избежать изгиба оси ролика от натяжки ремня.
3) Сложная математика, из-за чего на скоростях выше 100 мм/с могут быть проблемы с нехваткой ресурсов 8 битных плат.
CoreXY.
Достоинства:
1) Два коротких куска ремня. Их проще найти, чем один длинный.
2) Силы уравновешивают балку, а не стремятся ее повернуть, поэтому эту кинематику можно собирать и на валах.
Недостатки:
1) Есть схемы с перекручиванием ремней и перехода ремня с одного уровня на другой - для ремня это не очень приятно. Особенно, когда один ремень трется об другой. На видео этот момент есть.

2) Сложность нятяжки ремней. Их необходимо натягивать одинаково, иначе силы нятяжки будут стремиться повернуть каретку.
3) Сложность сборки и разработки. Необходимо выдержать вертикальность роликов, относительно горизонтальности площадки для установки моторов и рельс. Небольшой перекос роликов приведет к тому, что ремень будет стремиться съехать по ролику, а если будет упираться в буртик ролика, то будет скрипеть, если буртик большой, а если маленький - то будет пытаться на него заехать, как на фото из описания h-bot.

Общий недостаток кинематики - плохая масштабируемость. То есть ставить такую кинематику для области печати больше 300*300 весьма проблемно просто из-за удлинений ремня при печати. Для небольших принтеров с большой скоростью печати - одна из лучших кинематик.

5. Delta кинематика.
Кинематика основана на движениях дельта-робота.Только вместо захватов устанавливается хотенд. Имеет свои проблемы с настройкой, но на печать можно залипать очень долго. Редко когда устанавливают директ-экструдеры, так как эффектор (площадка для установки хотенда) часто крепится на магнитах и необходимо максимально разгрузить его. Но для уменьшения длины трубки (а конкретнее, влияния длины трубки на качество печати за счет правильной настройки ретрактов (вытягивания пластикового прутка назад с целью уменьшения его вытекания от расширения)) на качество печати, экструдер вешают на те же каретки, но на отдельных подвесах. За счет этого уменьшается длина bowden трубки и увеличивается качество печати.

Достоинства:
1) Легко кастомизируется. Для увеличения высоты достаточно прикупить 3 куска профиля подлиннее, и увеличить максимальную высоту в настройках.
2) Занимает мало места. Она чаще высокая, чем громоздкая по длине и ширине, за счет этого компактность.
3) Если сделать легкий эффектор (каретка, на которой установлен хотенд), то можно добиться больших скоростей без потери качества печати.
4) Перемещение по высоте не отличается от перемещения по XY. Таким образом, нет залипания линейных подшипников на переездах стола, как у Cartesian принтеров, лишних двигателей, катающихся на балке...
5) Отсутствие выступающих частей дает возможность закрыть корпус и придать раме жесткости.
6) Эстетическая часть - на работу дельты интереснее залипать.
Недостатки:
1) Сложная математика перемещений, рекомендуется ставить сразу 32-битные платы.
2) Сложная настройка. Частая проблема в настройке - убрать так называемую "линзу", ведь каждый стержень вращается с радиусом, и при некорректной настройке у вас печатаемая плоскость будет либо выпуклой,либо вогнутой линзой. 3) Сложно и дорого сделать жесткую раму, что бы ее не болтало от постоянных дрыганий кареток.
4) Сложность установки директ-экструдера. Он получается тяжелым, а так как многие дельты делаются на магнитах, то не будет возможности разогнаться. Хотя, есть одно аккуратное и легкое решение - установка готового директ-экструдера с редуктором. Как, например E3D Titan Aero или Bondtech BMG. 5) Проблемы точности изготовления деталей - любые неровности и несоосности будут видны, даже если они на одной оси. И они складываются по осям. Резюмируя , хотите небольшой принтер (не больше 300*300 мм) с шустрой кинематикой? Тогда вам к Ultimaker или H-bot/CoreXY. Нужен принтер с большой областью печати или с 2 независимыми экструдерами? Тогда к Makerbot. Если печатать вазочки, кальяны и достаточно высокие детали - дельта. Для всего остального есть классика - Prusa. Эксперименты с двойными каретками, шоколадом, гравировками? Да все что угодно. И самое главное - дешево.Можно даже 4 цвета прикрутить.