Как правильно обращаться с кватернионами при сопоставлении вращения одной кости с другой?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как правильно обращаться с кватернионами при сопоставлении вращения одной кости с другой?

Сообщение Anonymous »

Как видно здесь, цель состоит в том, чтобы вращение руки IK соответствовало вращению кости предплечья. Однако когда я это делаю, результирующие ключевые кадры приводят к перевороту, как здесь, поэтому я предполагаю, что то, как я использую кватернионы, неправильно. Честно говоря, я недостаточно знаю о кватернионах, чтобы решить эту проблему. Буду признателен за любую помощь.
Я попробовал метод, включающий ограничения, однако ограничения не могут быть запечены в отдельных кадрах. Метод, который я сейчас использую, работает, но приводит к перевороту вращения, как показано выше. Вот соответствующий раздел.
if hand_ik and def_forearm:
if scene.hand_r_control.enable_hand_r:
# Get the world space matrix of DEF-forearm.R
def_forearm_world_matrix = def_forearm.matrix

# Get the local matrix of hand_ik.R's parent or use identity if there's no parent
hand_ik_parent_matrix = hand_ik.bone.parent.matrix_local if hand_ik.bone.parent else Matrix.Identity(4)

# Convert the world matrix of DEF-forearm.R to the local space of hand_ik.R's parent
def_forearm_local_matrix = hand_ik_parent_matrix @ def_forearm_world_matrix

# Extract rotation as a quaternion
hand_ik_local_quat = def_forearm.matrix.to_quaternion()

# Correct orientation difference between DEF-forearm.R and hand_ik.R
initial_orientation_diff = def_forearm.bone.matrix_local.to_quaternion() @ hand_ik.bone.matrix_local.to_quaternion()
corrected_quat = initial_orientation_diff @ hand_ik_local_quat

# Apply the corrected rotation to hand_ik.R
hand_ik.rotation_quaternion = corrected_quat


Подробнее здесь: https://stackoverflow.com/questions/791 ... s-rotation
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как сделать вращение камеры с кватернионами на OpenGL
    Anonymous » » в форуме C++
    0 Ответы
    20 Просмотры
    Последнее сообщение Anonymous
  • OpenGL - камера, вращающаяся с точкой с кватернионами
    Anonymous » » в форуме C++
    0 Ответы
    5 Просмотры
    Последнее сообщение Anonymous
  • Пытаюсь сыграть в игру в кости со свиньями, но счет сбрасывается каждый ход.
    Anonymous » » в форуме Python
    0 Ответы
    32 Просмотры
    Последнее сообщение Anonymous
  • Создайте интерактивное приложение для игры в кости для разработчиков Android
    Anonymous » » в форуме Android
    0 Ответы
    15 Просмотры
    Последнее сообщение Anonymous
  • Создайте интерактивное приложение для игры в кости для разработчиков Android
    Anonymous » » в форуме Android
    0 Ответы
    15 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»