quater Wingbeats::getShoulder(int frame, float weight, bool isLeft) { quater resQ; int dofIndex; float sign; if(isLeft) { dofIndex = CaptureMotion::d_lshoulder1; sign = 1.0f; } else { dofIndex = CaptureMotion::d_rshoulder1; sign = -1.0f; } vector3 tempV(getInterpolation(frame, weight, dofIndex), sign*getInterpolation(frame, weight, dofIndex+1), sign*getInterpolation(frame, weight, dofIndex+2)); resQ = exp(tempV); //resQ.Identity(); return resQ; }
void ExtendedIsotopeModel::setOffset(CoordinateType offset) { double diff = offset - getInterpolation().getOffset(); monoisotopic_mz_ += diff; InterpolationModel::setOffset(offset); param_.setValue("isotope:monoisotopic_mz", monoisotopic_mz_); }
void IsotopeModel::setOffset(CoordinateType offset) { DoubleReal diff = offset - getInterpolation().getOffset(); mean_ += diff; monoisotopic_mz_ += diff; InterpolationModel::setOffset(offset); param_.setValue("statistics:mean", mean_); }
void GaussModel::setOffset(CoordinateType offset) { double diff = offset - getInterpolation().getOffset(); min_ += diff; max_ += diff; statistics_.setMean(statistics_.mean() + diff); InterpolationModel::setOffset(offset); param_.setValue("bounding_box:min", min_); param_.setValue("bounding_box:max", max_); param_.setValue("statistics:mean", statistics_.mean()); }
float Wingbeats::getElbowBend(int frame, float weight, bool isLeft) { float res; int dofIndex; float sign; if(isLeft) { dofIndex = CaptureMotion::d_lelbow_bend; sign = 1.0f; } else { dofIndex = CaptureMotion::d_relbow_bend; sign = -1.0f; } res = (getInterpolation(frame, weight, dofIndex) - M_PI) * sign; return res; }
float Wingbeats::getWrist(int frame, float weight, bool isLeft) { float res; int dofIndex; float sign; if(isLeft) { dofIndex = CaptureMotion::d_lwrist_bend; sign = 1.0f; } else { dofIndex = CaptureMotion::d_rwrist_bend; sign = -1.0f; } res = (M_PI - getInterpolation(frame, weight, dofIndex)) * sign; //res = M_PI/2.0f * sign; return res; }
float Wingbeats::getElbowTwist(int frame, float weight, bool isLeft) { float res; int dofIndex; float sign; if(isLeft) { dofIndex = CaptureMotion::d_lelbow_twist; sign = -1.0f; } else { dofIndex = CaptureMotion::d_relbow_twist; sign = -1.0f; } res = getInterpolation(frame, weight, dofIndex) * sign; //res = -M_PI/4.0f; return res; }
IsotopeModel::CoordinateType IsotopeModel::getOffset() { return getInterpolation().getOffset(); }
//main execution starts here void makeFF(int v) { TH1D::SetDefaultSumw2(); TH2D::SetDefaultSumw2(); //initializing histograms for analysis loadHistos(v); for(int i = 0; i < FF_Bins; i++) { //pPb direction pp2TeV_data[i] = getFF_pp(FF_Bound[i],FF_Bound[i+1],Form("pp2TeV_data_%d_%d",(int)FF_Bound[i],(int)FF_Bound[i+1]),0); pp7TeV_data[i] = getFF_pp(FF_Bound[i],FF_Bound[i+1],Form("pp7TeV_data_%d_%d",(int)FF_Bound[i],(int)FF_Bound[i+1]),1); pPb5TeV_data[i]= getFF_pp(FF_Bound[i],FF_Bound[i+1],Form("pPb5TeV_data_%d_%d",(int)FF_Bound[i],(int)FF_Bound[i+1]),2); //Pbpdirection pp2TeV_reverse_data[i] = getFF_pp(FF_Bound[i],FF_Bound[i+1],Form("pp2TeV_reverse_data_%d_%d",(int)FF_Bound[i],(int)FF_Bound[i+1]),31); pp7TeV_reverse_data[i] = getFF_pp(FF_Bound[i],FF_Bound[i+1],Form("pp7TeV_reverse_data_%d_%d",(int)FF_Bound[i],(int)FF_Bound[i+1]),32); Pbp5TeV_data[i]= getFF_pp(FF_Bound[i],FF_Bound[i+1],Form("Pbp5TeV_data_%d_%d",(int)FF_Bound[i],(int)FF_Bound[i+1]),3); //Reco MC pp2TeV_recoMC[i] = getFF_pp(FF_Bound[i],FF_Bound[i+1],Form("pp2TeV_recoMC_%d_%d",(int)FF_Bound[i],(int)FF_Bound[i+1]),4); pp7TeV_recoMC[i] = getFF_pp(FF_Bound[i],FF_Bound[i+1],Form("pp7TeV_recoMC_%d_%d",(int)FF_Bound[i],(int)FF_Bound[i+1]),5); pPb5TeV_recoMC[i]= getFF_pp(FF_Bound[i],FF_Bound[i+1],Form("pPb5TeV_recoMC_%d_%d",(int)FF_Bound[i],(int)FF_Bound[i+1]),6); pp5TeV_recoMC[i] = getFF_pp(FF_Bound[i],FF_Bound[i+1],Form("pp5TeV_recoMC_%d_%d",(int)FF_Bound[i],(int)FF_Bound[i+1]),11); //Gen MC pp2TeV_genMC[i] = getFF_pp(FF_Bound[i],FF_Bound[i+1],Form("pp2TeV_genMC_%d_%d",(int)FF_Bound[i],(int)FF_Bound[i+1]),7); pp7TeV_genMC[i] = getFF_pp(FF_Bound[i],FF_Bound[i+1],Form("pp7TeV_genMC_%d_%d",(int)FF_Bound[i],(int)FF_Bound[i+1]),8); pPb5TeV_genMC[i]= getFF_pp(FF_Bound[i],FF_Bound[i+1],Form("pPb5TeV_genMC_%d_%d",(int)FF_Bound[i],(int)FF_Bound[i+1]),9); pp5TeV_genMC[i] = getFF_pp(FF_Bound[i],FF_Bound[i+1],Form("pp5TeV_genMC_%d_%d",(int)FF_Bound[i],(int)FF_Bound[i+1]),10); //Reco Gen Combinations pp2TeV_rJgTMC[i] = getFF_pp(FF_Bound[i],FF_Bound[i+1],Form("pp2TeV_rJgTMC_%d_%d",(int)FF_Bound[i],(int)FF_Bound[i+1]),33); pp7TeV_rJgTMC[i] = getFF_pp(FF_Bound[i],FF_Bound[i+1],Form("pp7TeV_rJgTMC_%d_%d",(int)FF_Bound[i],(int)FF_Bound[i+1]),34); pPb5TeV_rJgTMC[i]= getFF_pp(FF_Bound[i],FF_Bound[i+1],Form("pPb5TeV_rJgTMC_%d_%d",(int)FF_Bound[i],(int)FF_Bound[i+1]),35); pp5TeV_rJgTMC[i] = getFF_pp(FF_Bound[i],FF_Bound[i+1],Form("pp5TeV_rJgTMC_%d_%d",(int)FF_Bound[i],(int)FF_Bound[i+1]),36); pp2TeV_gJrTMC[i] = getFF_pp(FF_Bound[i],FF_Bound[i+1],Form("pp2TeV_gJrTMC_%d_%d",(int)FF_Bound[i],(int)FF_Bound[i+1]),37); pp7TeV_gJrTMC[i] = getFF_pp(FF_Bound[i],FF_Bound[i+1],Form("pp7TeV_gJrTMC_%d_%d",(int)FF_Bound[i],(int)FF_Bound[i+1]),38); pPb5TeV_gJrTMC[i]= getFF_pp(FF_Bound[i],FF_Bound[i+1],Form("pPb5TeV_gJrTMC_%d_%d",(int)FF_Bound[i],(int)FF_Bound[i+1]),39); pp5TeV_gJrTMC[i] = getFF_pp(FF_Bound[i],FF_Bound[i+1],Form("pp5TeV_gJrTMC_%d_%d",(int)FF_Bound[i],(int)FF_Bound[i+1]),40); //reco MC Q/G study pp2TeV_recoMC_Q[i] = getFF_pp(FF_Bound[i],FF_Bound[i+1],Form("pp2TeV_recoMC_Q_%d_%d",(int)FF_Bound[i],(int)FF_Bound[i+1]),12); pp2TeV_recoMC_G[i] = getFF_pp(FF_Bound[i],FF_Bound[i+1],Form("pp2TeV_recoMC_G_%d_%d",(int)FF_Bound[i],(int)FF_Bound[i+1]),13); pp7TeV_recoMC_Q[i] = getFF_pp(FF_Bound[i],FF_Bound[i+1],Form("pp7TeV_recoMC_Q_%d_%d",(int)FF_Bound[i],(int)FF_Bound[i+1]),14); pp7TeV_recoMC_G[i] = getFF_pp(FF_Bound[i],FF_Bound[i+1],Form("pp7TeV_recoMC_G_%d_%d",(int)FF_Bound[i],(int)FF_Bound[i+1]),15); pPb5TeV_recoMC_Q[i] = getFF_pp(FF_Bound[i],FF_Bound[i+1],Form("pPb5TeV_recoMC_Q_%d_%d",(int)FF_Bound[i],(int)FF_Bound[i+1]),16); pPb5TeV_recoMC_G[i] = getFF_pp(FF_Bound[i],FF_Bound[i+1],Form("pPb5TeV_recoMC_G_%d_%d",(int)FF_Bound[i],(int)FF_Bound[i+1]),17); pp5TeV_recoMC_Q[i] = getFF_pp(FF_Bound[i],FF_Bound[i+1],Form("pp5TeV_recoMC_Q_%d_%d",(int)FF_Bound[i],(int)FF_Bound[i+1]),18); pp5TeV_recoMC_G[i] = getFF_pp(FF_Bound[i],FF_Bound[i+1],Form("pp5TeV_recoMC_G_%d_%d",(int)FF_Bound[i],(int)FF_Bound[i+1]),19); //gen MC Q/G study pp2TeV_genMC_Q[i] = getFF_pp(FF_Bound[i],FF_Bound[i+1],Form("pp2TeV_genMC_Q_%d_%d",(int)FF_Bound[i],(int)FF_Bound[i+1]),20); pp2TeV_genMC_G[i] = getFF_pp(FF_Bound[i],FF_Bound[i+1],Form("pp2TeV_genMC_G_%d_%d",(int)FF_Bound[i],(int)FF_Bound[i+1]),21); pp7TeV_genMC_Q[i] = getFF_pp(FF_Bound[i],FF_Bound[i+1],Form("pp7TeV_genMC_Q_%d_%d",(int)FF_Bound[i],(int)FF_Bound[i+1]),22); pp7TeV_genMC_G[i] = getFF_pp(FF_Bound[i],FF_Bound[i+1],Form("pp7TeV_genMC_G_%d_%d",(int)FF_Bound[i],(int)FF_Bound[i+1]),23); pPb5TeV_genMC_Q[i] = getFF_pp(FF_Bound[i],FF_Bound[i+1],Form("pPb5TeV_genMC_Q_%d_%d",(int)FF_Bound[i],(int)FF_Bound[i+1]),24); pPb5TeV_genMC_G[i] = getFF_pp(FF_Bound[i],FF_Bound[i+1],Form("pPb5TeV_genMC_G_%d_%d",(int)FF_Bound[i],(int)FF_Bound[i+1]),25); pp5TeV_genMC_Q[i] = getFF_pp(FF_Bound[i],FF_Bound[i+1],Form("pp5TeV_genMC_Q_%d_%d",(int)FF_Bound[i],(int)FF_Bound[i+1]),26); pp5TeV_genMC_G[i] = getFF_pp(FF_Bound[i],FF_Bound[i+1],Form("pp5TeV_genMC_G_%d_%d",(int)FF_Bound[i],(int)FF_Bound[i+1]),27); //full data set pPb5Pbp5TeV_fulldata[i]=getFF_pp(FF_Bound[i],FF_Bound[i+1],Form("pPb5Pbp5TeV_fulldata_%d_%d",(int)FF_Bound[i],(int)FF_Bound[i+1]),28); pp2TeV_fulldata[i]=getFF_pp(FF_Bound[i],FF_Bound[i+1],Form("pp2TeV_fulldata_%d_%d",(int)FF_Bound[i],(int)FF_Bound[i+1]),29); pp7TeV_fulldata[i] = getFF_pp(FF_Bound[i],FF_Bound[i+1],Form("pp7TeV_fulldata_%d_%d",(int)FF_Bound[i],(int)FF_Bound[i+1]),30); //interpolations pPb5TeV_data_interp[i] = getInterpolation(FF_Bound[i],FF_Bound[i+1],"pPb5TeV_data_interp",2,pp2TeV_data[i],pp7TeV_data[i],0); Pbp5TeV_data_interp[i] = getInterpolation(FF_Bound[i],FF_Bound[i+1],"Pbp5TeV_data_interp",3,pp2TeV_reverse_data[i],pp7TeV_reverse_data[i],0); pPb5Pb5TeV_data_interp[i] = getInterpolation(FF_Bound[i],FF_Bound[i+1],"pPb5Pbp5TeV_data_interp",28,pp2TeV_fulldata[i],pp7TeV_fulldata[i],0); pPb5TeV_recoMC_interp[i] = getInterpolation(FF_Bound[i],FF_Bound[i+1],"pPb5TeV_recoMC_interp",6,pp2TeV_recoMC[i],pp7TeV_recoMC[i],0); pPb5TeV_genMC_interp[i] = getInterpolation(FF_Bound[i],FF_Bound[i+1],"pPb5TeV_genMC_interp",9,pp2TeV_genMC[i],pp7TeV_genMC[i],1); pPb5TeV_rJgTMC_interp[i] = getInterpolation(FF_Bound[i],FF_Bound[i+1],"pPb5TeV_rJgTMC_interp",35,pp2TeV_rJgTMC[i],pp7TeV_rJgTMC[i],0); pPb5TeV_gJrTMC_interp[i] = getInterpolation(FF_Bound[i],FF_Bound[i+1],"pPb5TeV_gJrTMC_interp",39,pp2TeV_gJrTMC[i],pp7TeV_gJrTMC[i],1); } for(int i = 0; i < FF_Bins; i++) { pPb_FF[i] = (TH1D*) pPb5TeV_data[i]->Clone(Form("pPb_FF_%d_%d",(int)FF_Bound[i],(int)FF_Bound[i+1])); pPb_FF[i]->Divide(pPb5TeV_data_interp[i][0]); Pbp_FF[i] = (TH1D*) Pbp5TeV_data[i]->Clone(Form("Pbp_FF_%d_%d",(int)FF_Bound[i],(int)FF_Bound[i+1])); Pbp_FF[i]->Divide(Pbp5TeV_data_interp[i][0]); pPb_FF_recoMC[i] = (TH1D*) pPb5TeV_recoMC[i]->Clone(Form("pPb_FF_recoMC_%d_%d",(int)FF_Bound[i],(int)FF_Bound[i+1])); pPb_FF_recoMC[i]->Divide(pPb5TeV_recoMC_interp[i][0]); pPb_FF_genMC[i] = (TH1D*) pPb5TeV_genMC[i]->Clone(Form("pPb_FF_genMC_%d_%d",(int)FF_Bound[i],(int)FF_Bound[i+1])); pPb_FF_genMC[i]->Divide(pPb5TeV_genMC_interp[i][0]); pPbPbp_FF[i] = (TH1D*) pPb5Pbp5TeV_fulldata[i]->Clone(Form("pPbPbp_FF_%d_%d",(int)FF_Bound[i],(int)FF_Bound[i+1])); pPbPbp_FF[i]->Divide(pPb5Pb5TeV_data_interp[i][0]); pPb_FF_rJgTMC[i] = (TH1D*) pPb5TeV_rJgTMC[i]->Clone(Form("pPb_FF_rJgTMC_%d_%d",(int)FF_Bound[i],(int)FF_Bound[i+1])); pPb_FF_rJgTMC[i]->Divide(pPb5TeV_rJgTMC_interp[i][0]); pPb_FF_gJrTMC[i] = (TH1D*) pPb5TeV_gJrTMC[i]->Clone(Form("pPb_FF_gJrTMC_%d_%d",(int)FF_Bound[i],(int)FF_Bound[i+1])); pPb_FF_gJrTMC[i]->Divide(pPb5TeV_gJrTMC_interp[i][0]); } TFile * outfile = new TFile(Form("FragmentationFunctions%sUE3.root",variationTag[v]),"recreate"); for(int i = 0; i < FF_Bins; i++) { pp2TeV_data[i]->Write(); pp7TeV_data[i]->Write(); pPb5TeV_data[i]->Write(); pp2TeV_reverse_data[i]->Write(); pp7TeV_reverse_data[i]->Write(); Pbp5TeV_data[i]->Write(); pPb5Pbp5TeV_fulldata[i]->Write(); pp2TeV_fulldata[i]->Write(); pp7TeV_fulldata[i]->Write(); pp2TeV_recoMC[i]->Write(); pp7TeV_recoMC[i]->Write(); pPb5TeV_recoMC[i]->Write(); pp5TeV_recoMC[i]->Write(); pp2TeV_rJgTMC[i]->Write(); pp7TeV_rJgTMC[i]->Write(); pPb5TeV_rJgTMC[i]->Write(); pp5TeV_rJgTMC[i]->Write(); pp2TeV_gJrTMC[i]->Write(); pp7TeV_gJrTMC[i]->Write(); pPb5TeV_gJrTMC[i]->Write(); pp5TeV_gJrTMC[i]->Write(); pp2TeV_recoMC_Q[i]->Write(); pp2TeV_recoMC_G[i]->Write(); pp7TeV_recoMC_Q[i]->Write(); pp7TeV_recoMC_G[i]->Write(); pPb5TeV_recoMC_Q[i]->Write(); pPb5TeV_recoMC_G[i]->Write(); pp5TeV_recoMC_Q[i]->Write(); pp5TeV_recoMC_G[i]->Write(); pp2TeV_genMC[i]->Write(); pp7TeV_genMC[i]->Write(); pPb5TeV_genMC[i]->Write(); pp5TeV_genMC[i]->Write(); pp2TeV_genMC_Q[i]->Write(); pp2TeV_genMC_G[i]->Write(); pp7TeV_genMC_Q[i]->Write(); pp7TeV_genMC_G[i]->Write(); pPb5TeV_genMC_Q[i]->Write(); pPb5TeV_genMC_G[i]->Write(); pp5TeV_genMC_Q[i]->Write(); pp5TeV_genMC_G[i]->Write(); for(int indx = 0; indx<3; indx++) { pPb5TeV_data_interp[i][indx]->Write(); Pbp5TeV_data_interp[i][indx]->Write(); pPb5Pb5TeV_data_interp[i][indx]->Write(); pPb5TeV_recoMC_interp[i][indx]->Write(); pPb5TeV_genMC_interp[i][indx]->Write(); pPb5TeV_rJgTMC_interp[i][indx]->Write(); pPb5TeV_gJrTMC_interp[i][indx]->Write(); } pPb_FF[i]->Write(); Pbp_FF[i]->Write(); pPbPbp_FF[i]->Write(); pPb_FF_recoMC[i]->Write(); pPb_FF_genMC[i]->Write(); pPb_FF_rJgTMC[i]->Write(); pPb_FF_gJrTMC[i]->Write(); } //handing it over to a plotting macro makePlots(variationTag[v]); plotGluonFraction(variationTag[v]); }
void TMCtrl::update(REAL dt) { if(!_node.valid()) return; Z_ASSERT( find(_node.get_unsafe()->getCtrlSet().getArray().begin(), _node.get_unsafe()->getCtrlSet().getArray().end(), this) != _node.get_unsafe()->getCtrlSet().getArray().end()); _anim_ctrl.advance(dt); LOD::TRANSITION transition = LOD::isForceTransition() ? LOD::getForcedTransition() : _anim_ctrl.getTransition(); LOD::INTERPOLATION interpolation = LOD::isForceInterpolation() ? LOD::getForcedInterpolation() : getInterpolation(); if(interpolation == LOD::INTERPOLATION_LINEAR) { switch(transition) { case LOD::TRANSITION_NONE: { AnimCtrl::Clip& stage = _anim_ctrl.current_stage(); if(getPosAnimData()) _node.get_unsafe()->setPos(_pos_eval.sample(stage.getTime())); if(getRotAnimData()) _node.get_unsafe()->setRot(_rot_eval.sample(stage.getTime())); if(getScaleAnimData()) _node.get_unsafe()->setScale(_scale_eval.sample(stage.getTime())); } break; case LOD::TRANSITION_BLEND_CAPTURED: { AnimCtrl::Clip& stage = _anim_ctrl.current_stage(); if(getPosAnimData()) _node.get_unsafe()->setPos(_pos_eval.sample(stage.getTime()).lerp(_pos_captured, 1 - stage.getWeight())); if(getRotAnimData()) _node.get_unsafe()->setRot(_rot_eval.sample(stage.getTime()).slerp(_rot_captured, 1 - stage.getWeight())); if(getScaleAnimData()) _node.get_unsafe()->setScale(_scale_eval.sample(stage.getTime()).lerp(_scale_captured, 1 - stage.getWeight())); } break; case LOD::TRANSITION_MULTISTAGE_BLEND: { Vec3 pos; Quat rot; Vec3 scale; bool enable_pos = !!getPosAnimData(); bool enable_rot = !!getRotAnimData(); bool enable_scale = !!getScaleAnimData(); if(true) { size_t c = _anim_ctrl.getStageCount(); AnimCtrl::Clip* stages = _anim_ctrl.getStages(); for(size_t i = 0; i < c; ++i) { const AnimCtrl::Clip& stage = stages[i]; if(i == 0) { if(enable_pos) pos = _pos_eval.sample(stage.getTime()); if(enable_rot) rot = _rot_eval.sample(stage.getTime()); if(enable_scale) scale = _scale_eval.sample(stage.getTime()); continue; } if(enable_pos) pos = pos.lerp(_pos_eval.sample(stage.getTime()), stage.getWeight()); if(enable_rot) rot = rot.slerp(_rot_eval.sample(stage.getTime()), stage.getWeight()); if(enable_scale) scale = scale.lerp(_scale_eval.sample(stage.getTime()), stage.getWeight()); } if(enable_pos) _node.get_unsafe()->setPos(pos); if(enable_rot) _node.get_unsafe()->setRot(rot); if(enable_scale) _node.get_unsafe()->setScale(scale); } } break; } } else { switch(transition) { case LOD::TRANSITION_NONE: { AnimCtrl::Clip& stage = _anim_ctrl.current_stage(); if(getPosAnimData()) _node.get_unsafe()->setPos(_pos_eval.eval_step(stage.getTime())); if(getRotAnimData()) _node.get_unsafe()->setRot(_rot_eval.eval_step(stage.getTime())); if(getScaleAnimData()) _node.get_unsafe()->setScale(_scale_eval.eval_step(stage.getTime())); } break; case LOD::TRANSITION_BLEND_CAPTURED: { AnimCtrl::Clip& stage = _anim_ctrl.current_stage(); if(getPosAnimData()) _node.get_unsafe()->setPos(_pos_eval.eval_step(stage.getTime()).lerp(_pos_captured, 1 - stage.getWeight())); if(getRotAnimData()) _node.get_unsafe()->setRot(_rot_eval.eval_step(stage.getTime()).slerp(_rot_captured, 1 - stage.getWeight())); if(getScaleAnimData()) _node.get_unsafe()->setScale(_scale_eval.eval_step(stage.getTime()).lerp(_scale_captured, 1 - stage.getWeight())); } break; case LOD::TRANSITION_MULTISTAGE_BLEND: { Vec3 pos; Quat rot; Vec3 scale; bool enable_pos = !!getPosAnimData(); bool enable_rot = !!getRotAnimData(); bool enable_scale = !!getScaleAnimData(); if(true) { size_t c = _anim_ctrl.getStageCount(); AnimCtrl::Clip* stages = _anim_ctrl.getStages(); for(size_t i = 0; i < c; ++i) { const AnimCtrl::Clip& stage = stages[i]; if(i == 0) { if(enable_pos) pos = _pos_eval.eval_step(stage.getTime()); if(enable_rot) rot = _rot_eval.eval_step(stage.getTime()); if(enable_scale) scale = _scale_eval.eval_step(stage.getTime()); continue; } if(enable_pos) pos = pos.lerp(_pos_eval.eval_step(stage.getTime()), stage.getWeight()); if(enable_rot) rot = rot.slerp(_rot_eval.eval_step(stage.getTime()), stage.getWeight()); if(enable_scale) scale = scale.lerp(_scale_eval.eval_step(stage.getTime()), stage.getWeight()); } if(enable_pos) _node.get_unsafe()->setPos(pos); if(enable_rot) _node.get_unsafe()->setRot(rot); if(enable_scale) _node.get_unsafe()->setScale(scale); } } break; } } }
float Wingbeats::getTailSpread(int frame, float weight) { return getInterpolation(frame, weight, CaptureMotion::d_tail_spread); }