src/npybvh/bvh.py [329:344]:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
        for channel in joint.channels:
            if channel.endswith("position"):
                continue
            local_rotation *= 0.0
            if channel == "Xrotation":
                local_rotation[:, 0] = self.keyframes_torch[:, index_offset]
            elif channel == "Yrotation":
                local_rotation[:, 1] = self.keyframes_torch[:, index_offset]
            elif channel == "Zrotation":
                local_rotation[:, 2] = self.keyframes_torch[:, index_offset]
            else:
                raise Exception(f"Unknown channel {channel}")
            index_offset += 1

            q_channel = quaternion.euler_to_quaternion_torch(deg2rad * local_rotation)
            q_rotation = quaternion.qmul(q_rotation, q_channel)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -



src/npybvh/bvh.py [352:367]:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
        for channel in joint.channels:
            if channel.endswith("position"):
                continue
            local_rotation *= 0.0
            if channel == "Xrotation":
                local_rotation[:, 0] = self.keyframes_torch[:, index_offset]
            elif channel == "Yrotation":
                local_rotation[:, 1] = self.keyframes_torch[:, index_offset]
            elif channel == "Zrotation":
                local_rotation[:, 2] = self.keyframes_torch[:, index_offset]
            else:
                raise Exception(f"Unknown channel {channel}")
            index_offset += 1

            q_channel = quaternion.euler_to_quaternion_torch(deg2rad * local_rotation)
            q_rotation = quaternion.qmul(q_rotation, q_channel)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -



