Python quaternion slerp

Cảm ơn bạn đã giúp chúng tôi cải thiện chất lượng của Unity Documentation. Mặc dù chúng tôi không thể chấp nhận tất cả các nội dung gửi, nhưng chúng tôi đọc từng thay đổi được đề xuất từ ​​người dùng của mình và sẽ cập nhật nếu có

Đóng

Gửi không thành công

Vì một số lý do, thay đổi được đề xuất của bạn không thể được gửi. Vui lòng thử lại trong vài phút. Và cảm ơn bạn đã dành thời gian để giúp chúng tôi cải thiện chất lượng của Unity Documentation

Đóng

Chuyển sang thủ công

Thông số

a Giá trị bắt đầu, được trả về khi t = 0. giá trị bEnd, được trả về khi t = 1. ttỷ lệ nội suy

trả lại

Quaternion Một quaternion được nội suy hình cầu giữa quaternion a và b

Sự mô tả

Nội suy hình cầu giữa các bậc bốn ab theo tỷ lệ t. Tham số t được kẹp vào phạm vi [0, 1]

Sử dụng công cụ này để tạo một phép quay nội suy trơn tru giữa bậc bốn thứ nhất a đến bậc bốn thứ hai b, dựa trên giá trị của tham số t. Nếu giá trị của tham số gần bằng 0, đầu ra sẽ gần bằng a, nếu giá trị của tham số gần bằng 1, đầu ra sẽ gần bằng b

Rémi xóa

2017-09-15 13. 35. 08 UTC

liên kết cố định

Xin chào tất cả mọi người,

Tôi đang cố gắng tạo tiếng lóng giữa hai bậc bốn.
Tôi có một công thức hoạt động, nhưng tôi gặp vấn đề với maya.

Đây là hàm slerp của tôi.

def slerp_quaternion(m_quaternion_1, m_quaternion_2, f_weight).

m_quaternion_1 = m_quaternion_1. normal()
m_quaternion_2 = m_quaternion_2. normal()

# Nếu bằng nhau trả về phần tư thứ nhất
if m phần tư 1. isEquivalent(m_quaternion_2).
return m_quaternion_1

# Nếu tích vô hướng là số âm, các bậc bốn
# có tính thuận tay ngược lại và slerp sẽ không . Khắc phục bằng cách đảo ngược một quaternion.
# the shorter path. Fix by reversing one quaternion.
# dot = dot_product(m_quaternion_1, m_quaternion_2)
dot = dot_product(m_quaternion_1, m_quaternion_2)
if dot < 0. 0.
m_quaternion_2. negateIt()
chấm *= -1. 0

# Hỗn hợp trọng lượng
f_scale_1 = 1. 0 - f_weight
f_scale_2 = f_weight

# Lấy trung vị bậc bốn
dot = max(min(dot, 1. 0), -1. 0)
f_theta = toán học. acos(dot)
f_sin_theta = toán học. sin(f_theta)

f_scale_1 = toán học. sin(f_scale_1 * f_theta) / f_sin_theta
f_scale_2 = toán học. sin(f_scale_2 * f_theta) / f_sin_theta

# Đệ tứ mới
a_new_values ​​= []
for i trong xrange(4).
a_new_values. append(lerp(m_quaternion_1[i], m_quaternion_2[i],
f_weight))

return pmc. Loại dữ liệu. Bậc bốn(a_new_values[0], a_new_values[1],
a_new_values[2], a_new_values[3])



Trong Maya, nếu tôi lấy hai bậc bốn từ một .
turn a transform on an axis I have:
- Dấu chấm > 0 trong khoảng từ 0 ° đến 180 °
- Dấu chấm < 0 nếu tôi nằm trong khoảng từ 180 * đến 270 *.

Nếu tôi làm điều này trong một nút tùy chỉnh vì một ma trận thì của hồi môn của tôi luôn dương cho dù
bất kể điều gì xảy ra.
Trong Maya để lấy bậc bốn từ một ma trận, bạn phải trải qua
MTransformationMatrix. Và điều đó chỉ thay đổi giá trị của các bậc bốn của tôi
khi tôi vượt qua 180 °.
Maya tự động đảo ngược bậc bốn ? .
? ...
Vì vậy, tôi cũng có một hàm để lấy bậc bốn vì bất kỳ ma trận nào.

def quaternion_from_matrix(m_matrix).

w = toán học. sqrt(max(0, 1 + m_matrix(0, 0) + m_matrix(1, 1) + m_matrix(2,
2))) / 2. 0
x = toán học. sqrt(max(0, 1 + m_matrix(0, 0) - m_matrix(1, 1) - m_matrix(2,
2))) / 2. 0
y = toán học. sqrt(max(0, 1 - m_matrix(0, 0) + m_matrix(1, 1) - m_matrix(2,
2))) / 2. 0
z = toán học. sqrt(max(0, 1 - m_matrix(0, 0) - m_matrix(1, 1) + m_matrix(2,
2))) / 2. 0

x *= -1 nếu x * (m_matrix(2, 1) - m_matrix(1, 2)) >= 0. 0 other 1
y *= -1 if y * (m_matrix(0, 2) - m_matrix(2, 0)) >= 0. 0 other 1
z *= -1 if z * (m_matrix(1, 0) - m_matrix(0, 1)) >= 0. 0 khác 1

return OpenMaya. MQuaternion(x, y, z, w)

--
Bạn nhận được thư này vì bạn đã đăng ký vào nhóm Google Groups "Lập trình Python cho Autodesk Maya".
Để hủy đăng ký khỏi nhóm này và ngừng nhận email từ nhóm, hãy gửi email tới python_inside_maya+***@googlegroups. com.
Để xem cuộc thảo luận này trên web, hãy truy cập https. //các nhóm. Google. com/d/msgid/python_inside_maya/ca1b4ba8-4401-430b-97c5-b801fe055bb6%40googlegroups. com.
Để biết thêm tùy chọn, hãy truy cập https. //các nhóm. Google. com/d/chọn không tham gia.

Michael Boon

2017-09-18 07. 34. 05 UTC

liên kết cố định

Đã lâu rồi tôi mới xử lý các bậc bốn ở cấp độ này, nhưng nếu
Tôi hiểu chính xác câu hỏi của bạn, vâng, Maya sẽ đảo ngược bậc bốn
once you pass 180. Actually it's not Maya doing that. A quaternion can
phân biệt giữa, chẳng hạn như +270 và -90, nhưng ma trận biến đổi chỉ có thể
mã hóa góc kết quả, do đó, nó không thể cho biết . Nếu bạn muốn duy trì sự khác biệt đó, bạn cần phải ở trong bậc bốn
two. If you want to keep that distinction, you need to stay in quaternions
và hoàn toàn không sử dụng ma trận (hoặc góc Euler).

Bạn có nhận được kết quả tốt hơn khi sử dụng mã quaternion_from_matrix của riêng mình không?
Nếu vậy thì tôi đã hiểu nhầm điều gì đó.

Nhân tiện, chức năng slerp của bạn dường như bị thiếu thứ gì đó. Gần cuối
, bạn lerp, nhưng bạn không sử dụng số f_scale của mình. Có nên mở rộng quy mô của
chúng ở đâu đó không? .

Nếu bạn có thể nói cụ thể hơn một chút về những gì hiệu quả và những gì không, thì tôi
rất sẵn lòng trợ giúp thêm.

Bài đăng của Rémi Deletrain
Xin chào mọi người,
Tôi cố gắng tạo ra tiếng lóng giữa hai bậc bốn.
Tôi có một công thức hoạt động, nhưng tôi gặp sự cố với maya.
m_quaternion_1 = m_quaternion_1. normal()
m_quaternion_2 = m_quaternion_2. normal()
# Nếu bằng nhau trả về bậc một
return m_quaternion_1
# Nếu tích vô hướng, các bậc bốn< . Khắc phục bằng cách đảo ngược một quaternion.
# have opposite handed-ness and slerp won't take
# the shorter path. Fix by reversing one quaternion.
# dot = dot_product(m_quaternion_1, m_quaternion_2)
dot = dot_product(m_quaternion_1, m_quaternion_2)
m_quaternion_2. negateIt()
dot *= -1. 0
# Hỗn hợp trọng lượng
f_scale_1 = 1. 0 - f_weight
f_scale_2 = f_weight
# Lấy trung vị bậc bốn
dot = max(min(dot, 1. 0), -1. 0)
f_theta = toán học. acos(dot)
f_sin_theta = toán học. sin(f_theta)
f_scale_1 = toán học. sin(f_scale_1 * f_theta) / f_sin_theta
f_scale_2 = toán học. sin(f_scale_2 * f_theta) / f_sin_theta
# Đệ tứ mới
a_new_values ​​= []
a_new_values. append(lerp(m_quaternion_1[i], m_quaternion_2[i],
f_weight))
return pmc. Loại dữ liệu. Bậc bốn(a_new_values[0], a_new_values[1],
a_new_values[2], a_new_values[3])
Trong Maya, nếu tôi lấy hai bậc bốn từ một .
- A dot > 0 between 0 ° and 180 °
- A dot < 0 if I am between 180 * and 270 *.
Nếu tôi làm điều này trong một nút tùy chỉnh vì một ma trận thì của hồi môn của tôi luôn dương
bất kể điều gì xảy ra.
Trong Maya để lấy bậc bốn từ một ma trận, bạn phải trải qua
MTransformationMatrix. Và điều đó chỉ thay đổi giá trị của bậc bốn của tôi
khi tôi vượt qua 180 °.
Maya tự động đảo ngược bậc bốn ? .
slerp ? ...
w = toán học. sqrt(max(0, 1 + m_matrix(0, 0) + m_matrix(1, 1) + m_matrix(2,
2))) / 2. 0
x = toán học. sqrt(max(0, 1 + m_matrix(0, 0) - m_matrix(1, 1) - m_matrix(2,
2))) / 2. 0
y = toán học. sqrt(max(0, 1 - m_matrix(0, 0) + m_matrix(1, 1) - m_matrix(2,
2))) / 2. 0
z = toán học. sqrt(max(0, 1 - m_matrix(0, 0) - m_matrix(1, 1) + m_matrix(2,
2))) / 2. 0
x *= -1 nếu x * (m_matrix(2, 1) - m_matrix(1, 2)) >= 0. 0 other 1
y *= -1 if y * (m_matrix(0, 2) - m_matrix(2, 0)) >= 0. 0 khác 1
z *= -1 if z * (m_matrix(1, 0) - m_matrix(0, 1)) >= 0. 0 khác 1
return OpenMaya. MQuaternion(x, y, z, w)

--
Bạn nhận được thư này vì bạn đã đăng ký vào nhóm Google Groups "Lập trình Python cho Autodesk Maya".
Để hủy đăng ký khỏi nhóm này và ngừng nhận email từ nhóm, hãy gửi email tới python_inside_maya+***@googlegroups. com.
Để xem cuộc thảo luận này trên web, hãy truy cập https. //các nhóm. Google. com/d/msgid/python_inside_maya/a5e5b053-3ef3-47fc-9b57-bb0521c3260f%40googlegroups. com.
Để biết thêm tùy chọn, hãy truy cập https. //các nhóm. Google. com/d/chọn không tham gia.

Rémi xóa

2017-09-18 08. 08. 51 UTC

liên kết cố định

Tôi xin lỗi. Tôi chỉ thấy rằng mã tôi đã gửi không đúng. Tôi
đã thực hiện một số thử nghiệm và đột nhiên mã trở thành bất kỳ thứ gì.

def slerp_quaternion(m_quaternion_1, m_quaternion_2, f_weight).

"""
. @Brief Áp dụng phép nội suy hình cầu giữa hai bậc bốn.

@type m_quaternion_1. mởMaya. MQuaternion
@param m_quaternion_1. Quaternion đầu tiên.
@type m_quaternion_2. mởMaya. MQuaternion
@param m_quaternion_2. Đệ tứ thứ hai.
@type f_weight. float
@param f_weight. Giá trị pha trộn.
"""

# Chuẩn hóa bậc bốn
m_quaternion_1 = m_quaternion_1. normal()
m_quaternion_2 = m_quaternion_2. normal()

# Nếu bằng nhau trả về phần tư đầu tiên
if m_quaternion_1. isEquivalent(m_quaternion_2).
return m_quaternion_1

# VIỆC CẦN LÀM. fixlater
# Nếu đầu vào quá gần không thoải mái,
# nội suy tuyến tính và chuẩn hóa kết quả.
# nếu abs(chấm) > 0. 9995.
# vượt qua

# Nếu tích vô hướng âm, các bậc bốn
# có tính thuận tay trái ngược nhau và slerp sẽ không . Khắc phục bằng cách đảo ngược một quaternion.
# the shorter path. Fix by reversing one quaternion.
# dot = dot_product(m_quaternion_1, m_quaternion_2)
dot = dot_product(m_quaternion_1, m_quaternion_2)
if dot < 0. 0.
m_quaternion_2. negateIt()
dot *= -1. 0

# Hỗn hợp trọng lượng
f_scale_1 = 1. 0 - f_weight
f_scale_2 = f_weight

# Lấy trung vị bậc bốn
dot = max(min(dot, 1. 0), -1. 0)
f_theta = toán học. acos(dot)
f_sin_theta = toán học. sin(f_theta)

f_scale_1 = toán học. sin(f_scale_1 * f_theta) / f_sin_theta
f_scale_2 = toán học. sin(f_scale_2 * f_theta) / f_sin_theta

# Đệ tứ mới
a_new_values ​​= []
for i trong xrange(4).
a_new_values. append(f_scale_1 * m_quaternion_1[i] + f_scale_2 *
m_quaternion_2[i])

return OpenMaya. MQuaternion(a_new_values[0], a_new_values[1],
a_new_values[2], a_new_values[3])


Tôi không nhận được kết quả tốt hơn. Tôi muốn sử dụng chức năng slerp của maya
nhưng nó chỉ có thể truy cập được trong c ++ chứ không phải trong python. Vì vậy, tôi tạo một hàm slerp
trong python. Vấn đề hiện tại là mình không biết chấm của mình
dương hay âm. Vì vậy, tôi có một cú lật 180 được thực hiện trên vòng quay của mình.
Tôi hiểu rõ hơn nhờ lời giải thích của bạn. Tôi sử dụng ma trận để
truy xuất bậc bốn. Vì vậy, tôi sẽ phải truy xuất các bậc bốn kể từ
các phép quay euler?

--
Bạn nhận được thư này vì bạn đã đăng ký .
Để hủy đăng ký khỏi nhóm này và ngừng nhận email từ nhóm, hãy gửi email tới python_inside_maya+***@googlegroups. com.
Để xem cuộc thảo luận này trên web, hãy truy cập https. //các nhóm. Google. com/d/msgid/python_inside_maya/54eec6b1-e0f0-42e1-af3b-0ee6d4e69d94%40googlegroups. com.
Để biết thêm tùy chọn, hãy truy cập https. //các nhóm. Google. com/d/chọn không tham gia.

Michael và Amanda

2017-09-18 21. 57. 29 UTC

liên kết cố định

Nếu dấu chấm của bạn >0 trong mã đó và không có lỗi nào thì bạn
không nên lật. Nếu bạn đang nhìn thấy một cú lật, tôi có cảm giác rằng bạn
nên tìm lỗi thay vì lo lắng về nguồn gốc của
bộ tứ. Bạn có thể in ra một số số.
- Tôi mong bạn nhận được dấu chấm < 0. 0 từ bậc bốn từ ma trận
đôi khi, mặc dù không ma trận nào có thể >180, ví dụ: hai
ma trận biểu thị phép quay +100 và -100 .
difference would be 200.
- f_theta phải bằng một nửa góc giữa các ma trận của bạn (tính bằng radian).
Hãy thử một số thử nghiệm với các phép quay đơn giản và xem nó có đúng không. Nó phải
luôn nằm trong khoảng từ 0 đến pi/2 (90 độ).

Bạn gọi negateIt() trên m_quaternion_2. Điều đó thay đổi quat tại chỗ. Vì vậy
ngay cả bên ngoài chức năng, m_quaternion_2 sẽ khác, điều này có thể
gây ra sự cố. Bạn có thể thử đảo ngược nó theo cách khác, có thể là đảo ngược
f_scale_2 thay vì cách đó sẽ có tác dụng tương tự.

Ngoài ra, tôi không thấy có gì sai với mã của bạn.

Bài đăng của Rémi Deletrain
Tôi xin lỗi. Tôi chỉ thấy rằng mã tôi đã gửi không đúng. Tôi
đã thực hiện một số thử nghiệm và đột nhiên mã trở thành bất kỳ thứ gì.
"""
@type m_quaternion_1. mởMaya. MQuaternion
@param m_quaternion_1. Quaternion đầu tiên.
@type m_quaternion_2. mởMaya. MQuaternion
@param m_quaternion_2. Đệ tứ thứ hai.
@type f_weight. float
@param f_weight. Giá trị pha trộn.
"""
# Chuẩn hóa bậc bốn
m_quaternion_1 = m_quaternion_1. normal()
m_quaternion_2 = m_quaternion_2. normal()
# Nếu bằng nhau return phần tư đầu tiên
return m_quaternion_1
# VIỆC CẦN LÀM. fixlater
# Nếu đầu vào quá gần không thoải mái,
# nội suy tuyến tính và chuẩn hóa kết quả.
# vượt qua
# Nếu tích vô hướng âm, các bậc bốn
# thuận tay trái ngược nhau và slerp sẽ không . Khắc phục bằng cách đảo ngược một quaternion.
# the shorter path. Fix by reversing one quaternion.
# dot = dot_product(m_quaternion_1, m_quaternion_2)
dot = dot_product(m_quaternion_1, m_quaternion_2)
m_quaternion_2. negateIt()
chấm *= -1. 0
# Hỗn hợp trọng lượng
f_scale_1 = 1. 0 - f_weight
f_scale_2 = f_weight
# Lấy trung vị bậc bốn
dot = max(min(dot, 1. 0), -1. 0)
f_theta = toán học. acos(dot)
f_sin_theta = toán học. sin(theta)
f_scale_1 = math.sin(f_scale_1 * f_theta) / f_sin_theta
f_scale_2 = toán học. sin(f_scale_2 * f_theta) / f_sin_theta
# Đệ tứ mới
a_new_values ​​= []
a_new_values. append(f_scale_1 * m_quaternion_1[i] + f_scale_2 *
m_quaternion_2[i])
return OpenMaya. MQuaternion(a_new_values[0], a_new_values[1],
a_new_values[2], a_new_values[3])
Tôi không nhận được kết quả tốt hơn. Tôi muốn sử dụng chức năng slerp của maya
nhưng nó chỉ có thể truy cập được trong c ++ chứ không phải trong python. Vì vậy, tôi tạo một hàm slerp
trong python. Vấn đề hiện tại là mình không biết chấm của mình
dương hay âm. Vì vậy, tôi có một cú lật 180 được thực hiện trên vòng quay của mình.
Tôi hiểu rõ hơn nhờ lời giải thích của bạn. Tôi sử dụng ma trận để
truy xuất bậc bốn. Vì vậy, tôi sẽ phải truy xuất các bậc bốn kể từ
các phép quay euler?
--
Bạn nhận được thư này vì bạn đã đăng ký .
Google Groups "Python Programming for Autodesk Maya" group.
Để hủy đăng ký chủ đề này, hãy truy cập https. //các nhóm. Google. com/d/
topic/python_inside_maya/Ot9WVMEZRYA/hủy đăng ký.
Để hủy đăng ký khỏi nhóm này và tất cả các chủ đề của nhóm, hãy gửi email tới
Để xem cuộc thảo luận này trên web, hãy truy cập https. //các nhóm. Google. com/d/
msgid/python_inside_maya/54eec6b1-e0f0-42e1-af3b-
0ee6d4e69d94%40googlegroups. com

.
Để biết thêm tùy chọn, hãy truy cập https. //các nhóm. Google. com/d/chọn không tham gia.

--
Bạn nhận được thư này vì bạn đã đăng ký vào nhóm Google Groups "Lập trình Python cho Autodesk Maya".
Để hủy đăng ký khỏi nhóm này và ngừng nhận email từ nhóm, hãy gửi email tới python_inside_maya+***@googlegroups. com.
Để xem cuộc thảo luận này trên web, hãy truy cập https. //các nhóm. Google. com/d/msgid/python_inside_maya/CAA27_yKyPi9GriYOo4G2gT-PDEGfQZpLcCkvwzcoGNx9gb4pbQ%40mail. gmail. com.
Để biết thêm tùy chọn, hãy truy cập https. //các nhóm. Google. com/d/chọn không tham gia.

Michael Boon

2017-09-18 22. 06. 10 UTC

liên kết cố định

Tôi vừa thử tính năng này trên Maya 2016 và 2018 và nó hoạt động trên cả hai, vì vậy có lẽ
đây là tất cả những gì cần bàn cãi.
nhập maya. api. MởMaya dưới dạng om
q = om. MQuaternion()
in q
p = om. MĐệ tứ(0. 7,0,0,0. 7)
p. normalize()
in p
in trên. MĐệ tứ. slerp(p, q, 0. 5, 0)
bản in
(0, 0, 0, 1)
(0. 707107, 0, 0, 0. 707107)
(0. 382683, 0, 0, 0. 92388)
đúng.

Bài đăng của Michael và Amanda
Nếu dấu chấm của bạn >0 trong đoạn mã đó và không có lỗi nào thì bạn
. Nếu bạn đang nhìn thấy một cú lật, tôi có cảm giác rằng bạn
nên tìm lỗi thay vì lo lắng về nguồn gốc của
bậc bốn. Bạn có thể in ra một số số.
- Tôi mong bạn nhận được dấu chấm < 0. 0 từ bậc bốn từ ma trận
đôi khi, mặc dù không ma trận nào có thể >180, ví dụ: hai
ma trận biểu thị phép quay +100 và -100 .
difference would be 200.
- f_theta phải bằng một nửa góc giữa các ma trận của bạn (tính bằng radian).
Hãy thử một số thử nghiệm với các phép quay đơn giản và xem nó có đúng không. Nó phải
luôn nằm trong khoảng từ 0 đến pi/2 (90 độ).
Bạn gọi negateIt() trên m_quaternion_2. Điều đó thay đổi quat tại chỗ. Vì vậy,
ngay cả bên ngoài chức năng, m_quaternion_2 sẽ khác, điều này có thể
gây ra sự cố. Bạn có thể thử đảo ngược nó theo cách khác, có thể là đảo ngược
f_scale_2 thay vì cách đó sẽ có tác dụng tương tự.
Ngoài ra, tôi không thấy có gì sai với mã của bạn.

Bài đăng của Rémi Deletrain
Tôi xin lỗi. Tôi chỉ thấy rằng mã tôi đã gửi không đúng
. Tôi đã thực hiện một số thử nghiệm và đột nhiên mã trở thành bất cứ thứ gì.
"""
@type m_quaternion_1. mởMaya. MQuaternion
@param m_quaternion_1. Quaternion đầu tiên.
@type m_quaternion_2. mởMaya. MQuaternion
@param m_quaternion_2. Đệ tứ thứ hai.
@type f_weight. float
@param f_weight. Giá trị pha trộn.
"""
# Chuẩn hóa bậc bốn
m_quaternion_1 = m_quaternion_1. normal()
m_quaternion_2 = m_quaternion_2. normal()
# Nếu bằng nhau return phần tư đầu tiên
return m_quaternion_1
# VIỆC CẦN LÀM. fixlater
# Nếu đầu vào quá gần không thoải mái,
# nội suy tuyến tính và chuẩn hóa kết quả.
# vượt qua
# Nếu tích vô hướng âm, các bậc bốn
# thuận tay trái ngược nhau và slerp sẽ không . Khắc phục bằng cách đảo ngược một quaternion.
# the shorter path. Fix by reversing one quaternion.
# dot = dot_product(m_quaternion_1, m_quaternion_2)
dot = dot_product(m_quaternion_1, m_quaternion_2)
m_quaternion_2. negateIt()
dot *= -1. 0
# Hỗn hợp trọng lượng
f_scale_1 = 1. 0 - f_weight
f_scale_2 = f_weight
# Lấy trung vị bậc bốn
dot = max(min(dot, 1. 0), -1. 0)
f_theta = toán học. acos(dot)
f_sin_theta = toán học. sin(f_theta)
f_scale_1 = toán học. sin(f_scale_1 * f_theta) / f_sin_theta
f_scale_2 = toán học. sin(f_scale_2 * f_theta) / f_sin_theta
# Đệ tứ mới
a_new_values ​​= []
a_new_values. append(f_scale_1 * m_quaternion_1[i] + f_scale_2 *
m_quaternion_2[i])
return OpenMaya. MQuaternion(a_new_values[0], a_new_values[1],
a_new_values[2], a_new_values[3])
Tôi không nhận được kết quả tốt hơn. Tôi muốn sử dụng chức năng slerp của maya
nhưng nó chỉ có thể truy cập được trong c ++ chứ không phải trong python. Vì vậy, tôi tạo một hàm slerp
trong python. Vấn đề hiện tại là mình không biết chấm của mình
dương hay âm. Vì vậy, tôi có một cú lật 180 được thực hiện trên vòng quay của mình.
Tôi hiểu rõ hơn nhờ lời giải thích của bạn. Tôi sử dụng ma trận để
truy xuất các bậc bốn. Vì vậy, tôi sẽ phải truy xuất các bậc bốn kể từ
các phép quay euler?
--
Bạn nhận được thư này vì bạn đã đăng ký .
Google Groups "Python Programming for Autodesk Maya" group.
Để hủy đăng ký chủ đề này, hãy truy cập
https. //các nhóm. Google. com/d/topic/python_inside_maya/Ot9WVMEZRYA/hủy đăng ký
.
Để hủy đăng ký khỏi nhóm này và tất cả các chủ đề của nhóm, hãy gửi email tới
Để xem cuộc thảo luận này trên trang web, hãy truy cập
https. //các nhóm. Google. com/d/msgid/python_inside_maya/54eec6b1-e0f0-42e1-af3b-0ee6d4e69d94%40googlegroups. com

.
Để biết thêm tùy chọn, hãy truy cập https. //các nhóm. Google. com/d/chọn không tham gia.

--
Bạn nhận được thư này vì bạn đã đăng ký vào nhóm Google Groups "Lập trình Python cho Autodesk Maya".
Để hủy đăng ký khỏi nhóm này và ngừng nhận email từ nhóm, hãy gửi email tới python_inside_maya+***@googlegroups. com.
Để xem cuộc thảo luận này trên web, hãy truy cập https. //các nhóm. Google. com/d/msgid/python_inside_maya/81da49a3-5eca-4415-bbaa-11b9e5dd28b3%40googlegroups. com.
Để biết thêm tùy chọn, hãy truy cập https. //các nhóm. Google. com/d/chọn không tham gia.

Michael và Amanda

2017-09-19 06. 56. 22 UTC

liên kết cố định

Nếu bạn muốn đăng một bài kiểm tra hoàn chỉnh, với ma trận (hoặc đối tượng) kiểm tra
cho biết vấn đề, vui lòng dùng thử và xem liệu tôi có thể tìm ra cách khắc phục không.

Tại sao bạn không có quyền truy cập vào slerp?

Bài đăng của Rémi Deletrain
Tôi đã thử slerp Maya nhưng . Đó là lý do tại sao tôi đã cố gắng làm slerp.
.. That's why I tried to do the slerp.
đối tượng loại 'MQuaternion' không có thuộc tính 'slerp'.
Tôi đã cố gắng tạo giấc ngủ từ euler's. Tôi nhận phép quay của phép biến đổi
của mình và tôi chuyển đổi nó thành bậc bốn. Tôi không bị lật miễn là
khi tôi xoay một trục. Nhưng nếu quay 2 trục thì lại là chuyện khác.
Vì vậy, như bạn đã nói với tôi, vấn đề là tôi khôi phục bậc bốn từ
ma trận. thực tế có lẽ nó xuất phát từ thực tế là tôi đảo ngược
bậc bốn phương của mình với phủ định
Một trong những giải pháp có thể là phân tách chuyển động quay trên ba trục
(Pitch, Roll, Yaw) from the matrix and then add these rotations weighted.
--
Bạn nhận được thư này vì bạn đã đăng ký một chủ đề trong
Google Groups "Lập trình Python cho Autodesk Maya .
Để hủy đăng ký chủ đề này, hãy truy cập https. //các nhóm. Google. com/d/
topic/python_inside_maya/Ot9WVMEZRYA/hủy đăng ký.
Để hủy đăng ký khỏi nhóm này và tất cả các chủ đề của nhóm, hãy gửi email tới
Để xem cuộc thảo luận này trên web, hãy truy cập https. //các nhóm. Google. com/d/
msgid/python_inside_maya/5e22e14d-d95c-4a6a-b20e-
cc2694f69c70%40googlegroups. com

.
Để biết thêm tùy chọn, hãy truy cập https. //các nhóm. Google. com/d/chọn không tham gia.

--
Bạn nhận được thư này vì bạn đã đăng ký vào nhóm Google Groups "Lập trình Python cho Autodesk Maya".
Để hủy đăng ký khỏi nhóm này và ngừng nhận email từ nhóm, hãy gửi email tới python_inside_maya+***@googlegroups. com.
Để xem cuộc thảo luận này trên web, hãy truy cập https. //các nhóm. Google. com/d/msgid/python_inside_maya/CAA27_yJ_XgNJ-Z3V_rvju-MPRfbwbASMeSOErhU2g5-cgnyong%40mail. gmail. com.
Để biết thêm tùy chọn, hãy truy cập https. //các nhóm. Google. com/d/chọn không tham gia.

Michael Boon

2017-09-27 21. 45. 00 UTC

liên kết cố định

Ồ, tôi nên phát hiện ra điều đó trước đây. Tôi nghĩ vấn đề của bạn là bạn
không muốn điều này chút nào.

nếu chấm < 0. 0.
m_quaternion_2. negateIt()
dot *= -1. 0

Toàn bộ điểm của phép phủ định đó là để có được hai bậc bốn cách nhau 180°
. Nếu bạn xóa những dòng đó, các bậc bốn của bạn sẽ trượt lên
đến 360°. Mặc dù chúng trở nên lộn xộn ở 360 nhưng tôi nghĩ điều đó là không thể tránh khỏi.

Phải không?

Bài đăng của Rémi Deletrain
*Michael Boon*
. rdTwist là nút của tôi. Duyệt
plugin này bằng pluginManager và mở tệp ma.
Tôi cố xoay người giữa hai vòng quay. Tay cầm màu đỏ là cơ sở cho
vòng quay của tôi. Tay nắm màu xanh lá cây là vòng quay chính của tôi và tay cầm màu vàng là
vòng quay trượt.
Nhưng khi bạn xoay 180° tay cầm màu vàng bị lật. Tôi không đến để
có vòng quay liên tục.
Tôi cố gắng xoay người bằng cách xoay riêng biệt (Roll, Pitch, Yaw) nhưng kết quả vẫn như cũ
.
Bạn có ý kiến ​​gì không?

--
Bạn nhận được thư này vì bạn đã đăng ký vào nhóm Google Groups "Lập trình Python cho Autodesk Maya".
Để hủy đăng ký khỏi nhóm này và ngừng nhận email từ nhóm, hãy gửi email tới python_inside_maya+***@googlegroups. com.
Để xem cuộc thảo luận này trên web, hãy truy cập https. //các nhóm. Google. com/d/msgid/python_inside_maya/36acac1c-d77a-42be-875c-f097d3d98b8c%40googlegroups. com.
Để biết thêm tùy chọn, hãy truy cập https. //các nhóm. Google. com/d/chọn không tham gia.