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; }
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); } }
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); } }
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); } }