smpl_core/conversions/
pose_remap.rs1use super::pose_chunked::PoseChunked;
2use crate::common::{
3 metadata::{smpl_metadata, SmplMetadata},
4 pose::Pose,
5 types::SmplType,
6};
7#[allow(dead_code)]
11pub struct PoseRemap {
12 origin: SmplType,
13 origin_metadata: SmplMetadata,
14 destination: SmplType,
15 dest_metadata: SmplMetadata,
16}
17impl PoseRemap {
18 pub fn new(origin: SmplType, destination: SmplType) -> Self {
19 let origin_metadata = smpl_metadata(&origin);
20 let dest_metadata = smpl_metadata(&destination);
21 Self {
22 origin,
23 origin_metadata,
24 destination,
25 dest_metadata,
26 }
27 }
28 pub fn remap(&self, pose: &Pose) -> Pose {
29 let origin_chunked = PoseChunked::new(pose, &self.origin_metadata);
30 let mut new_pose = origin_chunked.to_pose(&self.dest_metadata, self.destination);
31 new_pose.retargeted = pose.retargeted;
32 new_pose
33 }
34}