smpl-core 0.9.0

Core functionality of smpl-rs
Documentation
use crate::{common::pose_parts::PosePart, smpl_x::smpl_x};
use enum_map::EnumMap;
use std::ops::Range;
pub struct PosePartRanges {
    pub parts2jointranges: EnumMap<PosePart, Range<usize>>,
}
#[allow(clippy::range_plus_one)]
impl PosePartRanges {
    pub fn empty() -> Self {
        let mut parts2jointranges: EnumMap<PosePart, Range<usize>> = EnumMap::default();
        let mut cur_joints_added = 0;
        parts2jointranges[PosePart::RootRotation] = 0..1;
        cur_joints_added += 1;
        parts2jointranges[PosePart::Body] = cur_joints_added..cur_joints_added + smpl_x::NUM_BODY_JOINTS;
        cur_joints_added += smpl_x::NUM_BODY_JOINTS;
        parts2jointranges[PosePart::Jaw] = cur_joints_added..cur_joints_added + 1;
        cur_joints_added += 1;
        parts2jointranges[PosePart::LeftEye] = cur_joints_added..cur_joints_added + 1;
        cur_joints_added += 1;
        parts2jointranges[PosePart::RightEye] = cur_joints_added..cur_joints_added + 1;
        cur_joints_added += 1;
        parts2jointranges[PosePart::LeftHand] = cur_joints_added..cur_joints_added + smpl_x::NUM_HAND_JOINTS;
        cur_joints_added += smpl_x::NUM_HAND_JOINTS;
        parts2jointranges[PosePart::RightHand] = cur_joints_added..cur_joints_added + smpl_x::NUM_HAND_JOINTS;
        Self { parts2jointranges }
    }
}