HillChai / ContextCapturePythonProcess

PYTHON调用ContextCapture三维重建软件SDK的工程.
0 stars 0 forks source link

请问yawPitchRoll欧拉角怎么转换 #1

Open 140ai opened 1 month ago

140ai commented 1 month ago

你好,我看到你的代码里是这种 rotMat = ccmasterkernel.omegaPhiKappaToMatrix(float(content[4]), float(content[5]), float(content[6])) 但我的数据是yawPitchRoll,我试过下面的代码 def euler2rot(euler): r = R.from_euler('yxz', euler, degrees=True) rotation_matrix = r.as_matrix() return rotation_matrix 后六个向量变为相反数 for i in range(1, 3): for j in range(3): rotMat.setElement(i, j, -rotMat.getElement(i, j))

但是和cc软件读取的不一样,请问应该怎么写

HillChai commented 1 month ago

CC把函数的具体实现都封装在引擎里了,我没有去研究引擎内部函数是怎么实现的。我导入数据时用的是Omega,Phi,Kappa,XRightYUp,弧度制。确实和你的Yaw,Pitch,Roll不一样。关于 Yaw,Pitch,Roll,我没有在文档里找到具体对应转化为矩阵的方法。我在网上看到说Yaw,Pitch,Roll是绕z,y,x轴旋转的角度,可能和我用到的Omega,Phi,Kappa(绕x,y,z)就是顺序不一样。你可以试试换个顺序,然后再用omegaPhiKappaToMatrix方法。关于验证是否正确,你可以比较用python调用空三计算后的XML文件和GUI界面生成的XML文件是否一致,个人感觉这样最快最准确。