Exemple #1
0
BOOL bgAnimMax::CheckForAnimation(INode* pNode, BOOL& bPos, BOOL& bRot, BOOL& bScl)
{
	AffineParts ap;
	Point3 firstPos, firstRotAxis, firstScaleFactor;
	Point3 rotAxis;
	float firstRotAngle;
	float rotAngle;

	GetDecompAffine(m_Interval.Start(), pNode, &ap, &firstRotAxis, &firstRotAngle);
	firstPos = ap.t;
	firstScaleFactor = ap.k;

	TimeValue start = m_Interval.Start() + GetTicksPerFrame();
	TimeValue end = m_Interval.End();

	bPos = bRot = bScl = FALSE;

	for (TimeValue t = start; t <= end; t += m_iDeltaTick)
	{
		GetDecompAffine(t, pNode, &ap, &rotAxis, &rotAngle);

		if (!bPos)
		{
			if (!EqualPoint3(ap.t, firstPos))
			{
				bPos = TRUE;
			}
		}
		if (!bRot)
		{
			if (fabs(rotAngle - firstRotAngle) > ALMOST_ZERO)
			{
				bRot = TRUE;
			}
			else if (!EqualPoint3(rotAxis, firstRotAxis))
			{
				bRot = TRUE;
			}
		}
		if (!bScl)
		{
			if (!EqualPoint3(ap.k, firstScaleFactor))
			{
				bScl = TRUE;
			}
		}

		if (bPos && bRot && bScl)
			break;
	}
	return bPos || bRot || bScl;
}
Exemple #2
0
void TbsAnimObj::DumpPosSample(INode* pNode, TMesh* pMesh ) 
{	
	TimeValue start = m_Interval.Start();
	TimeValue end	= m_Interval.End();
	AffineParts ap;
	
	for( TimeValue t = start; t <= end; t+=m_iDeltaTick ) 
	{		
		GetDecompAffine( t, pNode, &ap );

		TAnimTrack pAnim;		
		pAnim.iTick = t;
		pAnim.vValue.x = ap.t.x;
		pAnim.vValue.y = ap.t.z;
		pAnim.vValue.z = ap.t.y;
		pMesh->m_PosTrack.push_back(pAnim);	
	}	
}
Exemple #3
0
void bgAnimMax::DumpPosSample(INode* pNode, bgMesh* pMesh)
{
	TimeValue start = m_Interval.Start();
	TimeValue end = m_Interval.End();
	AffineParts ap;

	for (TimeValue t = start; t <= end; t += m_iDeltaTick)
	{
		GetDecompAffine(t, pNode, &ap);

		bgAnimTrack Anim;
		Anim.iTick = t;
		Anim.vValue.x = ap.t.x;
		Anim.vValue.y = ap.t.z;
		Anim.vValue.z = ap.t.y;
		pMesh->PosTrack.push_back(Anim);
	}
}
Exemple #4
0
void TbsAnimObj::DumpScaleSample( INode* pNode, TMesh* pMesh ) 
{		
	TimeValue start = m_Interval.Start();
	TimeValue end	= m_Interval.End();

	AffineParts ap;
	for( TimeValue t=start; t<=end; t+=m_iDeltaTick ) 
	{		
		GetDecompAffine( t, pNode, &ap );

		TAnimTrack Anim;	
		Anim.iTick = t;
		Anim.vValue.x = ap.k.x;
		Anim.vValue.y = ap.k.z;
		Anim.vValue.z = ap.k.y;
		Anim.qValue.x = ap.u.x;
		Anim.qValue.y = ap.u.z;
		Anim.qValue.z = ap.u.y;
		Anim.qValue.w = ap.u.w;	
		pMesh->m_SclTrack.push_back(Anim);
	}
}