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