コード例 #1
0
ファイル: MdlFileLoader.cpp プロジェクト: uvbs/GameProject
	void MdlFileImport::loadBone( Actor* actor )
	{
		Skeleton* skeleton = actor->getSkeleton();

		mstudiobonecontroller_t* boneCtrl = mStudioHeader->getBoneControllors();
		for( int i = 0 ; i < mStudioHeader->numbonecontrollers ; ++i )
		{




		}

		mstudiobone_t* boneVec = mStudioHeader->getBones();
		assert( skeleton->getBoneNum() == 1 );
		for( int i = 0 ; i < mStudioHeader->numbones; ++i )
		{
			mstudiobone_t& boneDesc = boneVec[i];
			BoneNode* bone;
			skeleton->createBone( boneDesc.name , boneDesc.parent + 1 );

			for( int n = 0 ; n < 6 ;++n )
			{
				if ( boneDesc.bonecontroller[n] != -1 )
				{
					int kk = 1;
				}
			}
		}

		int totalFrame = 0;
		mstudioseqdesc_t* seqVec = mStudioHeader->getSequences();
		for ( int i = 0 ; i < mStudioHeader->numseq ; ++i )
		{
			mstudioseqdesc_t& curSeq = seqVec[i];
			AnimationState* state = actor->createAnimationState( curSeq.label , totalFrame ,  totalFrame + seqVec[i].numframes - 1 );

			state->setTimeScale( curSeq.fps / 30.0f );
			totalFrame += curSeq.numframes;
		}

		skeleton->createMotionData( totalFrame );

		totalFrame = 0;
		for ( int i = 0 ; i < mStudioHeader->numseq ; ++i )
		{
			mstudioseqdesc_t& curSeq = seqVec[i];

			for( int frame = 0 ; frame < curSeq.numframes ; ++frame )
			{
				loadMotionData( skeleton , curSeq , frame , totalFrame );
			}
			totalFrame += curSeq.numframes;
		}
	}
コード例 #2
0
ファイル: MoCapManager.cpp プロジェクト: JochenKempfle/MoCap
Skeleton MoCapManager::createDefaultSkeleton() const
{
    Skeleton skeleton;

    Bone boneData;
    // hip - this will be the anchor of the skeleton
    boneData.setStartPos(Vector3(0.0, 1.0, 0.0));
    boneData.setLength(0.001);
    boneData.setDefaultOrientation(Quaternion(Vector3(0.0, 0.0, 1.0), M_PI*90.0/180.0) * Quaternion(Vector3(-1.0, 0.0, 0.0), M_PI*90.0/180.0));
    boneData.setName("hip");
    int hip = skeleton.createBone(boneData);

    // hip - neck (i.e. the body)
    boneData.setLength(0.55);
    boneData.setDefaultOrientation(Quaternion(Vector3(0.0, 0.0, 1.0), M_PI*90.0/180.0) * Quaternion(Vector3(-1.0, 0.0, 0.0), M_PI*90.0/180.0));
    boneData.setName("body");
    int neck = skeleton.createBone(boneData, hip);

    // neck - head
    boneData.setLength(0.30);
    boneData.setDefaultOrientation(Quaternion(Vector3(0.0, 0.0, 1.0), M_PI*90.0/180.0) * Quaternion(Vector3(-1.0, 0.0, 0.0), M_PI*90.0/180.0));
    boneData.setName("head");
    skeleton.createBone(boneData, neck);

    // neck - right shoulder
    boneData.setLength(0.20);
    boneData.setDefaultOrientation(Quaternion(1.0, 0.0, 0.0, 0.0));
    boneData.setName("rShoulder");
    int rShoulder = skeleton.createBone(boneData, neck);

    // right upper arm
    boneData.setLength(0.35);
    boneData.setDefaultOrientation(Quaternion(1.0, 0.0, 0.0, 0.0));
    boneData.setName("rUpperArm");
    int rUpperArm = skeleton.createBone(boneData, rShoulder);

    // right lower arm
    boneData.setLength(0.30);
    boneData.setDefaultOrientation(Quaternion(1.0, 0.0, 0.0, 0.0));
    boneData.setName("rLowerArm");
    skeleton.createBone(boneData, rUpperArm);

/*
    // right upper arm sensor
    boneData.setLength(0.35);
    boneData.setDefaultOrientation(Quaternion(1.0, 0.0, 0.0, 0.0));
    boneData.setName("rUpperArmSensor");
    int rUpperArmS = skeleton.createBone(boneData, rShoulder);

    // right lower arm sensor
    boneData.setLength(0.30);
    boneData.setDefaultOrientation(Quaternion(1.0, 0.0, 0.0, 0.0));
    boneData.setName("rLowerArmSensor");
    skeleton.createBone(boneData, rUpperArmS);
*/

    // neck - left shoulder
    boneData.setLength(0.20);
    boneData.setDefaultOrientation(Quaternion(Vector3(0.0, 1.0, 0.0), M_PI*180.0/180.0));
    boneData.setName("lShoulder");
    int lShoulder = skeleton.createBone(boneData, neck);

    // left upper arm
    boneData.setLength(0.35);
    boneData.setDefaultOrientation(Quaternion(Vector3(0.0, 1.0, 0.0), M_PI*180.0/180.0));
    boneData.setName("lUpperArm");
    int lUpperArm = skeleton.createBone(boneData, lShoulder);

    // left lower arm
    boneData.setLength(0.30);
    boneData.setDefaultOrientation(Quaternion(Vector3(0.0, 1.0, 0.0), M_PI*180.0/180.0));
    boneData.setName("lLowerArm");
    skeleton.createBone(boneData, lUpperArm);

/*
    // left upper arm sensor
    boneData.setLength(0.35);
    boneData.setDefaultOrientation(Quaternion(Vector3(0.0, 1.0, 0.0), M_PI*180.0/180.0));
    boneData.setName("lUpperArmSensor");
    int lUpperArmS = skeleton.createBone(boneData, lShoulder);

    // left lower arm sensor
    boneData.setLength(0.30);
    boneData.setDefaultOrientation(Quaternion(Vector3(0.0, 1.0, 0.0), M_PI*180.0/180.0));
    boneData.setName("lLowerArmSensor");
    skeleton.createBone(boneData, lUpperArmS);
*/

    // hip - right leg
    boneData.setLength(0.20);
    boneData.setDefaultOrientation(Quaternion(1.0, 0.0, 0.0, 0.0));
    boneData.setName("rHip");
    int rHip = skeleton.createBone(boneData, hip);

    // right upper leg
    boneData.setLength(0.45);
    boneData.setDefaultOrientation(Quaternion(Vector3(0.0, 0.0, -1.0), M_PI*90.0/180.0) * Quaternion(Vector3(-1.0, 0.0, 0.0), M_PI*90.0/180.0));
    boneData.setName("rUpperLeg");
    int rUpperLeg = skeleton.createBone(boneData, rHip);

    // right lower leg
    boneData.setLength(0.45);
    boneData.setDefaultOrientation(Quaternion(Vector3(0.0, 0.0, -1.0), M_PI*90.0/180.0) * Quaternion(Vector3(-1.0, 0.0, 0.0), M_PI*90.0/180.0));
    boneData.setName("rLowerLeg");
    skeleton.createBone(boneData, rUpperLeg);

    // hip - left leg
    boneData.setLength(0.20);
    boneData.setDefaultOrientation(Quaternion(Vector3(0.0, 1.0, 0.0), M_PI*180.0/180.0));
    boneData.setName("lHip");
    int lHip = skeleton.createBone(boneData, hip);

    // left upper leg
    boneData.setLength(0.45);
    boneData.setDefaultOrientation(Quaternion(Vector3(0.0, 0.0, -1.0), M_PI*90.0/180.0) * Quaternion(Vector3(1.0, 0.0, 0.0), M_PI*90.0/180.0));
    boneData.setName("lUpperLeg");
    int lUpperLeg = skeleton.createBone(boneData, lHip);

    // left lower leg
    boneData.setLength(0.45);
    boneData.setDefaultOrientation(Quaternion(Vector3(0.0, 0.0, -1.0), M_PI*90.0/180.0) * Quaternion(Vector3(1.0, 0.0, 0.0), M_PI*90.0/180.0));
    boneData.setName("lLowerLeg");
    skeleton.createBone(boneData, lUpperLeg);

    skeleton.setName("Default Skeleton");
    skeleton.update();
    //skeleton.setCurrentAsDefault();
    return skeleton;
}