Skinned avatars
This article is thought to be advanced with detailed information about skinned bone animated geometries.
Bone Hierarchy
Level Frame Name parent->tag ------------------------------------------------------------------- 0 -any name- 0->0 1 aw_pelvis 0->1 2 aw_rthip 1->15 3 aw_rtknee 15->16 4 aw_rtankle 16->17 5 aw_rttoes 17->18 2 aw_lfhip 1->19 3 aw_lfknee 19->20 4 aw_lfankle 20->21 5 aw_lftoes 21->22 2 aw_back 1->2 3 aw_back2 2->55 4 aw_neck 55->3 5 aw_head 3->4 6 aw_rtlid 4->45 6 aw_lflid 4->46 6 aw_lipupper 4->39 6 aw_rteye 4->37 6 aw_rtcheek 4->47 7 aw_rtlipupper 47->49 6 aw_lfcheek 4->48 7 aw_lflipupper 48->50 6 aw_lfbrowouter 4->58 6 aw_rtbrow 4->43 6 aw_lfbrow 4->44 6 aw_chin 4->54 6 aw_rtbrowouter 4->57 6 aw_hair 4->31 7 aw_hair2 31->32 8 aw_hair3 32->33 4 aw_chest 55->56 5 aw_rtbreast 56->35 5 aw_lfbreast 56->36 4 aw_rtsternum 55->5 5 aw_rtshoulder 5->6 6 aw_rtelbow 6->7 7 aw_rtwrist 7->8 8 aw_rt5finger1 8->67 9 aw_rt5finger2 67->68 8 aw_rt4finger1 8->65 9 aw_rt4finger2 65->66 8 aw_rt3finger1 8->63 9 aw_rt3finger2 63->64 8 aw_rt2finger1 8->61 9 aw_rt2finger2 61->62 8 aw_rt1finger1 8->59 9 aw_rt1finger2 59->60 4 aw_lfsternum 55->10 5 aw_lfshoulder 10->11 6 aw_lfelbow 11->12 7 aw_lfwrist 12->13 8 aw_lf5finger1 13->77 9 aw_lf5finger2 77->78 8 aw_lf4finger1 13->75 9 aw_lf4finger2 75->76 8 aw_lf3finger1 13->73 9 aw_lf3finger2 73->74 8 aw_lf2finger1 13->71 9 aw_lf2finger2 71->72 8 aw_lf1finger1 13->69 9 aw_lf1finger2 69->70
Notes
When a differnt hierarchy than shown here is used, children may become siblings of their parent tag, but they can not become parent of tags from a lower level.
If the hierarchy is broken, the browser will report an error message as soon an animation sequences is applied and then stops the animation sequence in worst case. Usually the browser will attempt to apply an animation sequence even limbs are missing, or limbs are applied to wrong parents, what may lead to unwanted results.
Fingers are numbered starting with 1 for the thumb. Each finger can have up to 2 bones. The back can be splitted in 2 parts, aw_back for the lower part and aw_back2 for the upper part. aw_chest goes onto aw_back2 if present, otherwise it goes to aw_back. aw_neck is the lower neck and goes onto aw_back2 if present also.
The head goes to aw_neck2, the upper neck, if present, otherwise the head goes to aw_neck.
The left and right upper lips can be children of the corresponding left and right cheek, but don't have to be. aw_lipupper and aw_liplower are in the vertical center of the face. The chin may be connected to the lower lip and the noes may be connected to the nose (aw_nose is not shown here, it is tag 40). Also not shown in this hierachy are the right and left ear (aw_rtear / 41, aw_lfear / 42).
Important when you make animation sequences for skinned avatars, make sure to animate all bones that are actually affected; i.e. because the sternum was rarely used in older animation sequences, the skin under the arm shrinkles when the arm is shifted up higher than 90° from it's initial position pointing downwards.
Reference list of all bone/limb names and tag #s
// Pelvis & Children aw_pelvis // 1 aw_tail // 24 aw_tail2 // 25 aw_tail3 // 26 aw_tail4 // 27 // Back/Chest & Children aw_back // 2 aw_back2 // 55 aw_chest // 56 aw_rtbreast // 35 aw_lfbreast // 36 // Neck & Children aw_neck // 3 aw_neck2 // 23 // Head & Children aw_head // 4 aw_hair // 31 aw_hair2 // 32 aw_hair3 // 33 aw_hair4 // 34 // Facial Details aw_rteye // 37 aw_rtlid // 45 aw_lfeye // 38 aw_lflid // 46 aw_nose // 40 aw_lipupper // 39 aw_rtear // 41 aw_lfear // 42 aw_rtbrow // 43 aw_rtbrowouter // 57 aw_lfbrow // 44 aw_lfbrowouter // 58 aw_rtcheek // 47 aw_rtlipupper // 49 aw_lfcheek // 48 aw_lflipupper // 50 aw_rtliplower // 52 aw_lfliplower // 53 aw_chin // 54 aw_liplower // 51 // Right Arm & Children aw_rtsternum // 5 aw_rtshoulder // 6 aw_rtelbow // 7 aw_rtwrist // 8 aw_rtfingers // 9 // Right Hand Fingers Detailed // 2 bones per finger 1st finger is thumb aw_rt1finger1 // 59 aw_rt1finger2 // 60 aw_rt2finger1 // 61 aw_rt2finger2 // 62 aw_rt3finger1 // 63 aw_rt3finger2 // 64 aw_rt4finger1 // 65 aw_rt4finger2 // 66 aw_rt5finger1 // 67 aw_rt5finger2 // 68 // Left Arms & Children aw_lfsternum // 10 aw_lfshoulder // 11 aw_lfelbow // 12 aw_lfwrist // 13 aw_lffingers // 14 // Left Hand Fingers Detailed // 2 bones per finger 1st finger is thumb aw_lf1finger1 // 69 aw_lf1finger2 // 70 aw_lf2finger1 // 71 aw_lf2finger2 // 72 aw_lf3finger1 // 73 aw_lf3finger2 // 74 aw_lf4finger1 // 75 aw_lf4finger2 // 76 aw_lf5finger1 // 77 aw_lf5finger2 // 78 // Right Leg & Children aw_rthip // 15 aw_rtknee // 16 aw_rtankle // 17 aw_rttoes // 18 // Left Leg & Children aw_lfhip // 19 aw_lfknee // 20 aw_lfankle // 21 aw_lftoes // 22 // Misc Tags // any parent, no other children than aw_obj* aw_obj // 28 aw_obj2 // 29 aw_obj3 // 30
Alias tag names
aw_sternumr aw_rtsternum aw_shoulderr aw_rtshoulder aw_elbowr aw_rtelbow aw_wristr aw_rtwrist aw_fingersr aw_rtfingers aw_sternuml aw_lfsternum aw_shoulderl aw_lfshoulder aw_elbowl aw_lfelbow aw_wristl aw_lfwrist aw_fingersl aw_lffingers aw_hipr aw_rthip aw_kneer aw_rtknee aw_ankler aw_rtankle aw_toesr aw_rttoes aw_hipl aw_lfhip aw_kneel aw_lfknee aw_anklel aw_lfankle aw_toesl aw_lftoes aw_breastr aw_rtbreast aw_breastl aw_lfbreast aw_eyer aw_rteye aw_eyel aw_lfeye aw_earr aw_rtear aw_earl aw_lfear aw_browr aw_rtbrow aw_browl aw_lfbrow aw_lidr aw_rtlid aw_lidl aw_lflid aw_cheekr aw_rtcheek aw_cheekl aw_lfcheek aw_lipupperr aw_rtlipupper aw_lipupperl aw_lflipupper aw_liplowerr aw_rtliplower aw_lipdownl aw_lfliplower
Character Animation Sequences
For animation sequence format and how to generate character animations look at DX Animation.
Example for a bone hierarchy like shown above in a X-file
Frame RootFrame { FrameTransformMatrix { 1.000000,0.000000,0.000000,0.000000, 0.000000,1.000000,0.000000,0.000000, 0.000000,0.000000,1.000000,0.000000, 0.000000,0.000000,0.000000,1.000000;; } Frame aw_pelvis { FrameTransformMatrix { 1.000000,0.000000,0.000000,0.000000, 0.000000,0.521600,-0.853200,0.000000, 0.000000,0.853200,0.521600,0.000000, 0.000000,-0.031700,0.052000,1.000000;; } Frame aw_back { FrameTransformMatrix { 1.000000,0.000000,0.000000,0.000000, 0.000000,0.569800,0.821800,0.000000, 0.000000,-0.821800,0.569800,0.000000, 0.000000,0.077800,0.000000,1.000000;; } Frame aw_back2 { FrameTransformMatrix { 1.000000,0.000000,0.000000,0.000000, 0.000000,0.987500,0.157900,0.000000, 0.000000,-0.157900,0.987500,0.000000, 0.000000,0.150700,0.000000,1.000000;; } Frame aw_lfsternum { FrameTransformMatrix { 0.251200,-0.898300,0.360500,0.000000, 0.930100,0.120800,-0.346900,0.000000, 0.268100,0.422400,0.865800,0.000000, 0.000000,0.210700,0.000000,1.000000;; } Frame aw_lfshoulder { FrameTransformMatrix { 0.470900,-0.093500,0.877200,0.000000, 0.882000,0.068700,-0.466200,0.000000, -0.016600,0.993200,0.114800,0.000000, 0.000000,0.143900,0.000000,1.000000;; } Frame aw_lfelbow { FrameTransformMatrix { -0.202600,0.388100,0.899100,0.000000, 0.690700,0.707400,-0.149800,0.000000, -0.694200,0.590700,-0.411400,0.000000, 0.000000,0.239000,0.000000,1.000000;; } Frame aw_lfwrist { FrameTransformMatrix { 0.873200,0.148200,-0.464300,0.000000, -0.082800,0.983900,0.158400,0.000000, 0.480300,-0.099900,0.871400,0.000000, 0.000000,0.227400,0.000000,1.000000;; } Frame aw_lf1finger1 { FrameTransformMatrix { 0.900800,0.074100,-0.427900,0.000000, -0.136800,0.983600,-0.117600,0.000000, 0.412200,0.164500,0.896100,0.000000, -0.009400,0.079000,-0.022200,1.000000;; } Frame aw_lf1finger2 { FrameTransformMatrix { 0.670100,0.105400,-0.734700,0.000000, -0.273100,0.955400,-0.112100,0.000000, 0.690200,0.275800,0.669000,0.000000, 0.000000,0.038900,0.000000,1.000000;; } } } Frame aw_lf2finger1 { FrameTransformMatrix { 0.869100,0.088800,-0.486600,0.000000, -0.150800,0.984500,-0.089800,0.000000, 0.471000,0.151400,0.869000,0.000000, -0.002500,0.082600,-0.001700,1.000000;; } Frame aw_lf2finger2 { FrameTransformMatrix { 0.887000,0.082900,-0.454300,0.000000, -0.138600,0.986200,-0.090800,0.000000, 0.440500,0.143500,0.886200,0.000000, 0.000000,0.036100,0.000000,1.000000;; } } } Frame aw_lf3finger1 { FrameTransformMatrix { 0.999100,0.009300,-0.041600,0.000000, -0.012900,0.996000,-0.088400,0.000000, 0.040600,0.088900,0.995200,0.000000, -0.001900,0.080100,0.017400,1.000000;; } Frame aw_lf3finger2 { FrameTransformMatrix { 0.236000,0.074100,-0.968900,0.000000, -0.459000,0.887400,-0.043900,0.000000, 0.856500,0.455100,0.243500,0.000000, 0.000000,0.035900,0.000000,1.000000;; } } } Frame aw_lf4finger1 { FrameTransformMatrix { 0.999000,0.010300,-0.042400,0.000000, -0.011000,0.999800,-0.016600,0.000000, 0.042200,0.017100,0.999000,0.000000, -0.001600,0.072600,0.030900,1.000000;; } Frame aw_lf4finger2 { FrameTransformMatrix { 0.309600,0.064100,-0.948700,0.000000, -0.395500,0.916000,-0.067200,0.000000, 0.864700,0.396000,0.309000,0.000000, 0.000000,0.039100,0.000000,1.000000;; } } } Frame aw_lf5finger1 { FrameTransformMatrix { 0.531400,-0.031000,-0.846600,0.000000, -0.430000,0.851200,-0.301100,0.000000, 0.729900,0.524000,0.439000,0.000000, -0.022200,0.055000,-0.029000,1.000000;; } Frame aw_lf5finger2 { FrameTransformMatrix { 0.986600,0.158900,-0.037200,0.000000, -0.148400,0.968200,0.201300,0.000000, 0.068000,-0.193100,0.978800,0.000000, 0.000000,0.030300,0.000000,1.000000;; } } } } } } } Frame aw_rtsternum { FrameTransformMatrix { 0.251200,0.898300,-0.360500,0.000000, -0.930100,0.120800,-0.346900,0.000000, -0.268100,0.422400,0.865800,0.000000, 0.000000,0.210700,0.000000,1.000000;; } Frame aw_rtshoulder { FrameTransformMatrix { 0.470900,0.093600,-0.877200,0.000000, -0.882000,0.068700,-0.466200,0.000000, 0.016600,0.993200,0.114900,0.000000, 0.000000,0.143900,0.000000,1.000000;; } Frame aw_rtelbow { FrameTransformMatrix { -0.202600,-0.388100,-0.899100,0.000000, -0.690700,0.707400,-0.149700,0.000000, 0.694200,0.590700,-0.411400,0.000000, 0.000000,0.239000,0.000000,1.000000;; } Frame aw_rtwrist { FrameTransformMatrix { 0.873200,-0.148200,0.464300,0.000000, 0.082800,0.983900,0.158400,0.000000, -0.480300,-0.099900,0.871400,0.000000, 0.000000,0.227400,0.000000,1.000000;; } Frame aw_rt1finger1 { FrameTransformMatrix { 0.900800,-0.074100,0.427900,0.000000, 0.136800,0.983600,-0.117600,0.000000, -0.412200,0.164500,0.896100,0.000000, 0.009400,0.079000,-0.022200,1.000000;; } Frame aw_rt1finger2 { FrameTransformMatrix { 0.670100,-0.105400,0.734700,0.000000, 0.273100,0.955400,-0.112100,0.000000, -0.690200,0.275800,0.669000,0.000000, 0.000000,0.038900,0.000000,1.000000;; } } } Frame aw_rt2finger1 { FrameTransformMatrix { 0.869100,-0.088800,0.486600,0.000000, 0.150800,0.984500,-0.089800,0.000000, -0.471000,0.151400,0.869000,0.000000, 0.002500,0.082600,-0.001700,1.000000;; } Frame aw_rt2finger2 { FrameTransformMatrix { 0.887000,-0.082900,0.454300,0.000000, 0.138600,0.986200,-0.090800,0.000000, -0.440500,0.143500,0.886200,0.000000, 0.000000,0.036100,0.000000,1.000000;; } } } Frame aw_rt3finger1 { FrameTransformMatrix { 0.999100,-0.009300,0.041600,0.000000, 0.012900,0.996000,-0.088400,0.000000, -0.040600,0.088900,0.995200,0.000000, 0.001900,0.080100,0.017400,1.000000;; } Frame aw_rt3finger2 { FrameTransformMatrix { 0.236000,-0.074100,0.968900,0.000000, 0.459000,0.887400,-0.043900,0.000000, -0.856500,0.455100,0.243500,0.000000, 0.000000,0.035900,0.000000,1.000000;; } } } Frame aw_rt4finger1 { FrameTransformMatrix { 0.999000,-0.010300,0.042400,0.000000, 0.011000,0.999800,-0.016600,0.000000, -0.042200,0.017100,0.999000,0.000000, 0.001600,0.072600,0.030900,1.000000;; } Frame aw_rt4finger2 { FrameTransformMatrix { 0.309600,-0.064100,0.948700,0.000000, 0.395500,0.916000,-0.067200,0.000000, -0.864700,0.396000,0.309000,0.000000, 0.000000,0.039100,0.000000,1.000000;; } } } Frame aw_rt5finger1 { FrameTransformMatrix { 0.531400,0.031000,0.846600,0.000000, 0.430000,0.851200,-0.301100,0.000000, -0.729900,0.524000,0.439000,0.000000, 0.022200,0.055000,-0.029000,1.000000;; } Frame aw_rt5finger2 { FrameTransformMatrix { 0.986600,-0.158900,0.037200,0.000000, 0.148400,0.968200,0.201300,0.000000, -0.068100,-0.193100,0.978800,0.000000, 0.000000,0.030300,0.000000,1.000000;; } } } } } } } Frame aw_chest { FrameTransformMatrix { 1.000000,0.000000,0.000000,0.000000, 0.000000,-0.780700,0.624900,0.000000, 0.000000,-0.624900,-0.780700,0.000000, 0.000000,0.175800,0.013000,1.000000;; } Frame aw_lfbreast { FrameTransformMatrix { 0.937700,0.024800,0.346600,0.000000, 0.209000,0.756700,-0.619500,0.000000, -0.277600,0.653300,0.704400,0.000000, 0.086800,0.073900,-0.004500,1.000000;; } } Frame aw_rtbreast { FrameTransformMatrix { 0.937700,-0.024700,-0.346600,0.000000, -0.209000,0.756700,-0.619400,0.000000, 0.277600,0.653300,0.704400,0.000000, -0.086800,0.073900,-0.004500,1.000000;; } } } Frame aw_neck { FrameTransformMatrix { 1.000000,0.000000,0.000000,0.000000, 0.000000,0.953200,-0.302400,0.000000, 0.000000,0.302400,0.953200,0.000000, 0.000000,0.210700,0.000000,1.000000;; } Frame aw_head { FrameTransformMatrix { 1.000000,0.000000,0.000000,0.000000, 0.000000,0.923600,0.383500,0.000000, 0.000000,-0.383500,0.923600,0.000000, 0.000000,0.141100,0.000000,1.000000;; } Frame aw_hair { FrameTransformMatrix { 1.000000,0.000000,0.000000,0.000000, 0.000000,-0.825500,-0.564400,0.000000, 0.000000,0.564400,-0.825500,0.000000, 0.000000,0.102100,0.000000,1.000000;; } Frame aw_hair2 { FrameTransformMatrix { 1.000000,0.000000,0.000000,0.000000, 0.000000,0.903200,-0.429100,0.000000, 0.000000,0.429100,0.903200,0.000000, 0.000000,0.124700,0.000000,1.000000;; } Frame aw_hair3 { FrameTransformMatrix { 1.000000,0.000000,0.000000,0.000000, 0.000000,0.973900,-0.226800,0.000000, 0.000000,0.226800,0.973900,0.000000, 0.000000,0.120300,0.000000,1.000000;; } } } } Frame aw_rtbrowouter { FrameTransformMatrix { 0.999800,0.019900,0.005300,0.000000, -0.018600,0.759700,0.650000,0.000000, 0.008900,-0.650000,0.759900,0.000000, -0.043700,0.112600,0.078000,1.000000;; } } Frame aw_chin { FrameTransformMatrix { 1.000000,0.000000,0.000000,0.000000, 0.000000,-0.127300,0.991900,0.000000, 0.000000,-0.991900,-0.127300,0.000000, 0.000000,0.025900,0.012100,1.000000;; } } Frame aw_lfbrow { FrameTransformMatrix { 0.999900,-0.010800,-0.005600,0.000000, 0.009500,0.408300,0.912800,0.000000, -0.007500,-0.912800,0.408300,0.000000, 0.017400,0.115700,0.081100,1.000000;; } } Frame aw_rtbrow { FrameTransformMatrix { 0.999900,0.010700,0.005600,0.000000, -0.009500,0.408300,0.912800,0.000000, 0.007500,-0.912800,0.408300,0.000000, -0.017400,0.115700,0.081100,1.000000;; } } Frame aw_lfbrowouter { FrameTransformMatrix { 0.999800,-0.019900,-0.005300,0.000000, 0.018600,0.759700,0.650000,0.000000, -0.008900,-0.650000,0.759900,0.000000, 0.043700,0.112600,0.078000,1.000000;; } } Frame aw_lfcheek { FrameTransformMatrix { 0.770900,-0.471700,-0.428000,0.000000, 0.383700,-0.192400,0.903200,0.000000, -0.508400,-0.860500,0.032700,0.000000, 0.034300,0.068800,0.080800,1.000000;; } Frame aw_lflipupper { FrameTransformMatrix { 0.770900,0.383700,-0.508400,0.000000, -0.329500,0.923300,0.197200,0.000000, 0.545100,0.015500,0.838200,0.000000, -0.002500,0.009300,0.025200,1.000000;; } } } Frame aw_rtcheek { FrameTransformMatrix { 0.770900,0.471700,0.428000,0.000000, -0.383700,-0.192400,0.903200,0.000000, 0.508400,-0.860500,0.032700,0.000000, -0.034300,0.068800,0.080800,1.000000;; } Frame aw_rtlipupper { FrameTransformMatrix { 0.770900,-0.383700,0.508400,0.000000, 0.329500,0.923300,0.197200,0.000000, -0.545100,0.015500,0.838200,0.000000, 0.002500,0.009300,0.025200,1.000000;; } } } Frame aw_rteye { FrameTransformMatrix { 1.000000,0.000000,0.000000,0.000000, 0.000000,0.170100,0.985400,0.000000, 0.000000,-0.985400,0.170100,0.000000, 0.000000,0.098600,0.067900,1.000000;; } } Frame aw_lipupper { FrameTransformMatrix { 1.000000,0.000000,0.000000,0.000000, 0.000000,-0.030200,0.999500,0.000000, 0.000000,-0.999500,-0.030200,0.000000, 0.000000,0.054100,0.097100,1.000000;; } } Frame aw_lflid { FrameTransformMatrix { 1.000000,0.000000,0.000000,0.000000, 0.000000,0.177100,0.984200,0.000000, 0.000000,-0.984200,0.177100,0.000000, 0.029000,0.106700,0.068400,1.000000;; } } Frame aw_rtlid { FrameTransformMatrix { 1.000000,0.000000,0.000000,0.000000, 0.000000,0.177100,0.984200,0.000000, 0.000000,-0.984200,0.177100,0.000000, -0.029000,0.106700,0.068400,1.000000;; } } } } } } Frame aw_lfhip { FrameTransformMatrix { -0.264800,-0.764600,0.587600,0.000000, -0.102600,-0.583600,-0.805500,0.000000, 0.958800,-0.273600,0.076100,0.000000, 0.108300,0.023500,-0.042400,1.000000;; } Frame aw_lfknee { FrameTransformMatrix { -0.715300,-0.153600,0.681700,0.000000, -0.185500,0.982300,0.026700,0.000000, -0.673700,-0.107400,-0.731200,0.000000, 0.000000,0.379400,0.000000,1.000000;; } Frame aw_lfankle { FrameTransformMatrix { 0.853100,-0.033700,-0.520600,0.000000, -0.467200,0.394500,-0.791200,0.000000, 0.232100,0.918300,0.320800,0.000000, 0.000000,0.419800,0.000000,1.000000;; } Frame aw_lftoes { FrameTransformMatrix { 0.961900,0.075600,-0.262600,0.000000, -0.189800,0.876300,-0.442900,0.000000, 0.196600,0.475800,0.857300,0.000000, 0.000000,0.106000,0.000000,1.000000;; } } } } } Frame aw_rthip { FrameTransformMatrix { -0.264800,0.764600,-0.587600,0.000000, 0.102600,-0.583600,-0.805500,0.000000, -0.958800,-0.273600,0.076100,0.000000, -0.108300,0.023500,-0.042400,1.000000;; } Frame aw_rtknee { FrameTransformMatrix { -0.715500,0.153700,-0.681600,0.000000, 0.185500,0.982300,0.026700,0.000000, 0.673600,-0.107300,-0.731300,0.000000, 0.000000,0.379400,0.000000,1.000000;; } Frame aw_rtankle { FrameTransformMatrix { 0.853000,0.033700,0.520800,0.000000, 0.467400,0.394500,-0.791100,0.000000, -0.232100,0.918300,0.320800,0.000000, 0.000000,0.419800,0.000000,1.000000;; } Frame aw_rttoes { FrameTransformMatrix { 0.961900,-0.075600,0.262700,0.000000, 0.189800,0.876300,-0.442800,0.000000, -0.196700,0.475800,0.857300,0.000000, 0.000000,0.106000,0.000000,1.000000;; } } } } } } // End of the Bone aw_pelvis Frame AVFbody0 { FrameTransformMatrix { 1.000000,0.000000,0.000000,0.000000, 0.000000,1.000000,0.000000,0.000000, 0.000000,0.000000,1.000000,0.000000, 0.000000,0.000000,0.000000,1.000000;; } Mesh { ... } ... } // End of the Object AVF body0 } // End of the Root Frame