这个是可以的:
只是bvh_rotate,不对,先旋转,后平移,结果不对
import numpy as np
from scipy.spatial.transform import Rotation as R
np.set_printoptions(precision=2, suppress=True)
def calculate_rotation_angle(vector_a, vector_b):
if np.allclose(vector_a, vector_b):
return [0, 0, 0] # 返回零旋转角度
cross_prod = np.cross(vector_a, vector_b)
dot_prod = np.dot(vector_a, vector_b)
angle = np.arctan2(np.linalg.norm(cross_prod), dot_prod)
axis = cross_prod / np.linalg.norm(cross_prod)
quaternion = R.from_rotvec(axis * angle).as_quat()
euler_angles = R.from_quat(quaternion).as_euler('zyx', degrees=False) # 使用弧度
return euler_angles
def calculate_rotat