示例#1
0
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;
}
示例#2
0
  void ExtendedIsotopeModel::setOffset(CoordinateType offset)
  {
    double diff = offset - getInterpolation().getOffset();
    monoisotopic_mz_ += diff;

    InterpolationModel::setOffset(offset);

    param_.setValue("isotope:monoisotopic_mz", monoisotopic_mz_);
  }
示例#3
0
  void IsotopeModel::setOffset(CoordinateType offset)
  {
    DoubleReal diff = offset - getInterpolation().getOffset();
    mean_ += diff;
    monoisotopic_mz_ += diff;

    InterpolationModel::setOffset(offset);

    param_.setValue("statistics:mean", mean_);
  }
示例#4
0
  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());
  }
示例#5
0
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;
}
示例#6
0
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;
}
示例#7
0
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;
}
示例#8
0
 IsotopeModel::CoordinateType IsotopeModel::getOffset()
 {
   return getInterpolation().getOffset();
 }
示例#9
0
//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]); 
}
示例#10
0
		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;
				}
			}
		}
示例#11
0
float	
Wingbeats::getTailSpread(int frame, float weight)
{
	return getInterpolation(frame, weight, CaptureMotion::d_tail_spread);
}