Thanks for the great project and open-source code!
I have a question regarding your implementation about local to global 3D Gaussian rotation.
From the paper, I understood that you optimize the rotations of 3D Gaussians in their local coordinate (mesh face coordinate). To do so, you convert the local 3D Gaussian parameters to the global coordinate using a mesh face rotation matrix.
Specifically for the 3D Gaussian rotation, global rotation r' is computed as the multiplication of the "triangle (mesh face) rotation matrix R" and the "local 3D gaussian rotation matrix r". Thus, r'=Rr (from your paper and figure explanation).
I think it should be the opposite order, if rot is 3D Gaussian rotation (r) and face_orien_quat is the mesh face rotation (R).
Could you clarify the reason why the quaternion product is conducted in r'=rR order?
Thanks for the great project and open-source code!
I have a question regarding your implementation about local to global 3D Gaussian rotation.
From the paper, I understood that you optimize the rotations of 3D Gaussians in their local coordinate (mesh face coordinate). To do so, you convert the local 3D Gaussian parameters to the global coordinate using a mesh face rotation matrix.
Specifically for the 3D Gaussian rotation, global rotation r' is computed as the multiplication of the "triangle (mesh face) rotation matrix R" and the "local 3D gaussian rotation matrix r". Thus,
r'=Rr
(from your paper and figure explanation).However, I found the product order of rotations R and r (in quaternions) are reversed as below: https://github.com/ShenhanQian/GaussianAvatars/blob/76038ba8908d5bb3719bfec4d5ef68bf71a5a6a0/scene/gaussian_model.py#L137
I think it should be the opposite order, if
rot
is 3D Gaussian rotation (r) andface_orien_quat
is the mesh face rotation (R). Could you clarify the reason why the quaternion product is conducted inr'=rR
order?Thanks in advance :)