flagflag  
Page Top

概要 anchor.png

  • SecondLife/OpenSim の内部用の最適化(バイナリ化)された BVH データ
  • see llkeyframemotion.cpp LLKeyframeMotion::deserialize(LLDataPack​er& dp)
     
Page Top

Data Format anchor.png

01 00                       "version" (U16)
00 00                       "sub_version" (U16)
04 00 00 00                 "base_priority", Priority (S32, int)  [mJointMotionList->mBasePriority]
b4 54 75 40                 "duration", Length (F32, float)  [mJointMotionList->mDuration]
00                          "emote_name", Expression Name (string)  [mJointMotionList->mEmoteName]
00 00 00 00                 "loop_in_point",  In Point  (F32)  [mJointMotionList->mLoopInPoint]
b4 54 75 40                 "loop_out_point", Out Point (F32)  [mJointMotionList->mLoopOutPoint]
01 00 00 00                 "loop", Loop (S32)  [mJointMotionList->mLoop]
00 00 00 3f                 "ease_in_duration",  Ease in Time  (F32   [mJointMotionList->mEaseInDuration]
33 33 33 3f                 "ease_out_duration", Ease out Time (F32)  [mJointMotionList->mEaseOutDuration]
03 00 00 00                 "hand_pose", Hand Pose (U32, unsigned int)  [mJointMotionList->mHandPose]
12 00 00 00                 "num_joints", Joint Count (U32) [Jointデータの数]  

// Joint Data
6d 50 65 6c 76 69 73 00     "joint_name", Joint Name (mPelvis) (string)  [joint_motion->mJointName]
04 00 00 00                 "joint_priority", Priority Revisited (S32)  [joint_motion->mPriority]

24 00 00 00                 "num_rot_keys", Number of Rotation Keyframes (int) [Rotationデータの数]  
                             [joint_motion->mRotationCurve.mNumKeys]

// Rotation Keyframe data blocks
73 04       "time", Time Code (U16->F32に変換, old_versionでは元々F32) In Point~Out Point にスケーリングし直し
35 7b       "rot_angle_x", X (U16)  [rCurve->mKeys[time]]
be 6a       "rot_angle_y", Y (U16)
1f 52       "rot_angle_z", Z (U16)

e7 08       "time", Time Code (U16->F32に変換, old_versionでは元々F32)
38 6f       "rot_angle_x", X (U16)
e8 b9       "rot_angle_y", Y (U16)
5d 77       "rot_angle_z", Z (U16)
.........................


56 00 00 00               "num_pos_keys", Number of Position Keyframes (S32) [Positionデータの数]
                          [joint_motion->mPositionCurve.mNumKeys]

// Position Keyframe data blocks
73 04       "time", Time Code (U16->F32に変換, old_versionでは元々F32) In Point~Out Point にスケーリングし直し
ff 7f       "pos_x", X (U16)  [pCurve->mKeys[pos_key.mTime]]
ff 7f       "pos_y", Y (U16)
ca 7d       "pos_z", Z (U16)

e7 08       "time", Time Code (U16->F32に変換, old_versionでは元々F32)
ff 7f       "pos_x", X (U16)
ff 7f       "pos_y", Y (U16)
bb 7d       "pos_z", Z (U16)
.........................
 

"num_constraints" (S32) 
    "chain_length" (U8)  [constraintp->mChainLength]
    "constraint_type" (U8)  [constraintp->mConstraintType]
    "source_volume" (Binary 16bit, char*に変換)  [constraintp->mSourceConstraintVolume]
    "source_offset" (Vector3)  [constraintp->mSourceConstraintOffset]
    "target_volume" (Binary 16bit, char*に変換)  [constraintp->mTargetConstraintVolume]
    "target_offset" (Vector3)  [onstraintp->mTargetConstraintOffset]
    "target_dir" (Vector3)  [constraintp->mTargetConstraintDir]
    "ease_in_start" (F32)  [constraintp->mEaseInStartTime]
    "ease_in_stop" (F32)  [constraintp->mEaseInStopTime]
    "ease_out_start" (F32)  [constraintp->mEaseOutStartTime]
    "ease_out_stop" (F32)  [constraintp->mEaseOutStopTime]


// Next Joint Data
.........................
Page Top

Code anchor.png

  • mJointMotionList, joint_motion, joint_state
  • JointMotion* joint_motion = mJointMotionList->getJointMotion(i);
  • mJointMotionList->mConstraints.push_fron​t(JointConstraintSharedData);
	//-------------------------------------------------------------------------
	// JointMotionList
	//-------------------------------------------------------------------------
	class JointMotionList
	{
	public:
		std::vector<JointMotion*> mJointMotionArray;
		F32						mDuration;
		BOOL					mLoop;
		F32						mLoopInPoint;
		F32						mLoopOutPoint;
		F32						mEaseInDuration;
		F32						mEaseOutDuration;
		LLJoint::JointPriority	mBasePriority;
		LLHandMotion::eHandPose mHandPose;
		LLJoint::JointPriority  mMaxPriority;
		typedef std::list<JointConstraintSharedData*> constraint_list_t;
		constraint_list_t		mConstraints;
		LLBBoxLocal				mPelvisBBox;
		// mEmoteName is a facial motion, but it's necessary to appear here so that it's cached.
		// TODO: LLKeyframeDataCache::getKeyframeData should probably return a class containing 
		// JointMotionList and mEmoteName, see LLKeyframeMotion::onInitialize.
		std::string				mEmoteName; 
	public:
		JointMotionList();
		~JointMotionList();
		U32 dumpDiagInfo();
		JointMotion* getJointMotion(U32 index) const { llassert(index < mJointMotionArray.size()); return mJointMotionArray[index]; }
		U32 getNumJointMotions() const { return mJointMotionArray.size(); }
	};

Front page   Freeze Diff Backup Copy Rename Reload   New List of Pages Search Recent changes   Help   RSS of recent changes (RSS 1.0) RSS of recent changes (RSS 2.0) RSS of recent changes (RSS Atom)
Counter: 1596, today: 1, yesterday: 0
Last-modified: 2011-11-21 (Mon) 23:54:03 (JST) (4543d) by iseki

Site Search

Login

Username:

Password:


Lost Password?
Register now!!

Sub Menu

mini Calendar

Last MonthApr 2024Next Month
Su Mo Tu We Th Fr Sa
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
Today

Who's Online

79 user(s) are online (18 user(s) are browsing xpwiki)

Members: 0
Guests: 79

more...

Access Counter

Today : 277277277
Yesterday : 1889718897188971889718897
Total : 2341387423413874234138742341387423413874234138742341387423413874
Powered by XOOPS Cube 2.1© 2001-2006 XOOPS Cube Project
Design by XoopsDesign.com