Jump to content
The Dark Mod Forums

Humanoid character rig for DarkMod?


Plutonia

Recommended Posts

Hi, I'm modeling my own interpretation of a certain humanoid creature from one of the Thief games, and I'm attempting to make it so that the polycount and topology are game engine friendly. It's going to have normal and specular maps, and I was just thinking that if someone could give me just the basic humanoid skeleton that the animations in TDM use, I could bind the model to that so that whoever wants to develop the creature for the mod would be able to do so. Any basic model format is okay. dae, obj, fbx, etc.

 

Also, what's the acceptable polycount for character/monster meshes in the game? And does there need to be things like separate shadow meshes and LOD meshes?

 

sneeki_peeki.jpg

  • Like 1
Link to comment
Share on other sites

I don't really mean a rig that is meant to be easy to animate. Just the skeleton that humanoid character animations work on in the mod itself. Afterall, any animation that is not the hip bone is all just rotation values, so as long as I get the correct bone hierarchy and basic form , I can skin any mesh to use the skeleton that someone else can animate.

Edited by Plutonia
Link to comment
Share on other sites

Is this what you need? From tdm_ai_citywatch.md5mesh, minus the meshes:

 

 

 

numJoints 71

 

joints {

"origin" -1 ( 0.000000 0.000000 0.000000 ) ( 0.488331 0.511403 0.511403 ) //

"Pelvis" 0 ( -1.636226 -0.000001 43.697197 ) ( -0.706956 0.000158 0.000158 ) // origin

"Pelvis2" 1 ( -1.636226 -0.000001 43.697197 ) ( -0.706956 0.000158 0.000158 ) // Pelvis

"Hips" 2 ( -1.636226 -0.000001 43.697197 ) ( -0.706956 0.000158 0.000158 ) // Pelvis2

"LeftHips_Dummy" 3 ( -0.732686 1.874251 43.227345 ) ( 0.000086 -0.706956 0.707257 ) // Hips

"LeftUpLeg" 4 ( -0.731302 4.978250 43.226025 ) ( -0.499846 -0.499941 0.500377 ) // LeftHips_Dummy

"LeftBackUpSkirt" 5 ( -7.835095 4.977995 35.190311 ) ( -0.499846 -0.499941 0.500377 ) // LeftUpLeg

"LeftFrontUpSkirt" 5 ( 4.984878 4.972308 35.258686 ) ( -0.499846 -0.499941 0.500377 ) // LeftUpLeg

"LeftLeg" 5 ( -0.743643 4.969994 23.826027 ) ( -0.499817 -0.499970 0.500406 ) // LeftUpLeg

"LeftBackLowSkirt" 8 ( -7.862907 4.969191 14.484327 ) ( -0.499817 -0.499970 0.500406 ) // LeftLeg

"LeftFoot" 8 ( -2.278589 4.963242 6.367185 ) ( -0.679533 -0.194993 0.195380 ) // LeftLeg

"LeftToeBase" 10 ( 3.631578 4.958539 1.512838 ) ( -0.706956 -0.000102 0.000417 ) // LeftFoot

"LeftToe_end" 11 ( 9.451573 4.955940 1.508573 ) ( -0.706956 -0.000101 0.000417 ) // LeftToeBase

"LeftFrontLowSkirt" 8 ( 6.409116 4.962784 14.386908 ) ( -0.499817 -0.499970 0.500406 ) // LeftLeg

"RightHips_Dummy" 3 ( -0.734358 -1.875458 43.228939 ) ( -0.706956 0.000158 0.000158 ) // Hips

"RightUpLeg" 14 ( -0.735743 -4.979457 43.230267 ) ( -0.499800 0.499987 -0.499978 ) // RightHips_Dummy

"RightBackUpSkirt" 15 ( -7.886765 -4.979685 35.203655 ) ( -0.499800 0.499987 -0.499978 ) // RightUpLeg

"RightFrontUpSkirt" 15 ( 4.910214 -4.985363 35.272388 ) ( -0.499800 0.499987 -0.499978 ) // RightUpLeg

"RightLeg" 15 ( -0.737106 -4.987720 23.830263 ) ( -0.499763 0.500024 -0.500014 ) // RightUpLeg

"RightBackLowSkirt" 18 ( -7.868608 -4.988515 14.488429 ) ( -0.499763 0.500024 -0.500014 ) // RightLeg

"RightFoot" 18 ( -2.257585 -4.994476 6.370189 ) ( -0.194733 0.679607 -0.679810 ) // RightLeg

"RightToeBase" 20 ( 3.656309 -4.999178 1.520398 ) ( 0.000168 0.706956 -0.707257 ) // RightFoot

"RightToe_end" 21 ( 9.476336 -5.001774 1.520570 ) ( 0.000168 0.706956 -0.707257 ) // RightToeBase

"RightFrontLowSkirt" 18 ( 6.384667 -4.994901 14.421268 ) ( -0.499763 0.500024 -0.500014 ) // RightLeg

"Spine_Dummy" 2 ( -0.687897 0.001081 47.230911 ) ( -0.500268 -0.500117 -0.500127 ) // Pelvis2

"Spine" 24 ( -0.690376 0.005004 52.324619 ) ( -0.375069 -0.599757 -0.599591 ) // Spine_Dummy

"Spine1" 25 ( -1.501109 0.006924 53.986561 ) ( -0.456531 -0.540337 -0.540282 ) // Spine

"Spine2" 26 ( -2.330269 0.012952 60.964340 ) ( -0.482666 -0.517125 -0.517108 ) // Spine1

"LeftShoulder_Dummy" 27 ( -2.516369 1.469305 65.513733 ) ( -0.707094 0.000001 0.000001 ) // Spine2

"LeftShoulder" 28 ( -0.478685 2.014437 66.612427 ) ( -0.707094 0.000001 0.000001 ) // LeftShoulder_Dummy

"LeftArm_Dummy" 29 ( -2.986663 5.566901 66.463516 ) ( -0.707094 0.000001 0.000001 ) // LeftShoulder

"LeftArm" 30 ( -1.942877 8.476836 64.810005 ) ( -0.500008 -0.499993 -0.499975 ) // LeftArm_Dummy

"LeftArmRoll" 31 ( -1.942324 16.858112 64.809700 ) ( -0.499958 -0.500042 -0.500024 ) // LeftArm

"LeftForeArm" 32 ( -1.942834 20.765680 64.809555 ) ( -0.499992 -0.500008 -0.499990 ) // LeftArmRoll

"LeftHand" 33 ( -1.942804 29.823540 64.809227 ) ( -0.707094 0.000001 0.000001 ) // LeftForeArm

"LeftHandIndex1" 34 ( 0.021301 34.799667 65.267860 ) ( -0.499992 -0.500008 -0.499990 ) // LeftHand

"LeftHandIndex2" 35 ( 0.021307 36.280495 65.267792 ) ( -0.428666 -0.562357 -0.428664 ) // LeftHandIndex1

"LeftHandIndex3" 36 ( 0.021309 37.225346 65.008156 ) ( -0.517340 0.000001 0.000002 ) // LeftHandIndex2

"LeftHandIndex4" 37 ( 0.021313 38.321842 64.432663 ) ( -0.517340 0.000001 0.000002 ) // LeftHandIndex3

"LeftHandRing1" 34 ( -2.042634 34.730232 65.267868 ) ( -0.468747 -0.529411 -0.468745 ) // LeftHand

"LeftHandRing2" 39 ( -2.042628 36.572815 65.043045 ) ( -0.385212 -0.592969 -0.385210 ) // LeftHandRing1

"LeftHandRing3" 40 ( -2.042624 37.528358 64.617966 ) ( -0.323810 -0.628607 -0.323808 ) // LeftHandRing2

"LeftHandRing4" 41 ( -2.042620 38.754185 63.743858 ) ( -0.457935 0.000001 0.000002 ) // LeftHandRing3

"LeftHandThumb1" 34 ( 0.249149 32.143742 63.872120 ) ( -0.543192 -0.441323 -0.219448 ) // LeftHand

"LeftHandThumb2" 43 ( 1.112489 33.449730 63.265041 ) ( -0.543192 -0.441323 -0.219448 ) // LeftHandThumb1

"LeftHandThumb3" 44 ( 1.765844 34.438080 62.805599 ) ( -0.539268 0.168572 0.228922 ) // LeftHandThumb2

"Neck" 27 ( -1.713410 0.020425 71.303825 ) ( -0.499689 0.499921 -0.500079 ) // Spine2

"Head" 46 ( -1.713411 0.022539 74.010063 ) ( -0.706831 0.000164 0.000164 ) // Neck

"RightShoulder_Dummy" 27 ( -2.518661 -1.436097 65.515991 ) ( 0.000539 0.707112 -0.707101 ) // Spine2

"RightShoulder" 48 ( -0.481816 -1.984321 66.614708 ) ( 0.000539 0.707112 -0.707101 ) // RightShoulder_Dummy

"RightArm_Dummy" 49 ( -2.995219 -5.532951 66.465836 ) ( 0.000539 0.707112 -0.707101 ) // RightShoulder

"RightArm" 50 ( -1.955879 -8.444511 64.812347 ) ( 0.500361 0.499639 -0.499630 ) // RightArm_Dummy

"RightArmRoll" 51 ( -1.968128 -16.825794 64.812202 ) ( 0.500410 0.499590 -0.499581 ) // RightArm

"RightForeArm" 52 ( -1.974606 -20.733339 64.812134 ) ( 0.500377 0.499623 -0.499615 ) // RightArmRoll

"RightHand" 53 ( -1.988410 -29.791592 64.811981 ) ( 0.000539 0.707112 -0.707101 ) // RightForeArm

"RightHandIndex1" 54 ( -0.031901 -34.770683 65.270744 ) ( 0.500377 0.499623 -0.499615 ) // RightHand

"RightHandIndex2" 55 ( -0.034158 -36.251484 65.270721 ) ( 0.429097 0.562028 -0.428240 ) // RightHandIndex1

"RightHandIndex3" 56 ( -0.035598 -37.196358 65.011078 ) ( 0.000652 0.855775 -0.517348 ) // RightHandIndex2

"RightHandIndex4" 57 ( -0.037268 -38.292923 64.435593 ) ( 0.000652 0.855775 -0.517348 ) // RightHandIndex3

"RightHandRing1" 54 ( -2.095730 -34.698082 65.270744 ) ( 0.469154 0.529050 -0.468347 ) // RightHand

"RightHandRing2" 59 ( -2.098537 -36.540714 65.045967 ) ( 0.385667 0.592673 -0.384763 ) // RightHandRing1

"RightHandRing3" 60 ( -2.099993 -37.496288 64.620895 ) ( 0.324291 0.628359 -0.323333 ) // RightHandRing2

"RightHandRing4" 61 ( -2.101861 -38.722103 63.746807 ) ( 0.000677 0.888983 -0.457940 ) // RightHandRing3

"RightHandThumb1" 54 ( 0.199942 -32.115147 63.875179 ) ( 0.219975 0.679545 -0.542860 ) // RightHand

"RightHandThumb2" 63 ( 1.061273 -33.422455 63.268154 ) ( 0.219975 0.679545 -0.542860 ) // RightHandThumb1

"RightHandThumb3" 64 ( 1.713111 -34.411842 62.808701 ) ( 0.228315 -0.792867 0.539406 ) // RightHandThumb2

"joint8" 27 ( 4.141036 4.874311 62.511971 ) ( -0.707094 0.000001 0.000001 ) // Spine2

"joint9" 27 ( 4.133351 -4.856237 62.519478 ) ( 0.000539 0.707112 -0.707101 ) // Spine2

"leftpad" 27 ( -2.899821 8.352571 69.139908 ) ( -0.707094 0.000001 0.000001 ) // Spine2

"rightpad" 27 ( -2.912991 -8.313159 69.152771 ) ( 0.000539 0.707112 -0.707101 ) // Spine2

"joint7" 24 ( 4.644412 -0.000412 50.765312 ) ( -0.706956 0.000158 0.000158 ) // Spine_Dummy

}

 

 

 

 

The format is:

 

joints {
    "name" parent_num ( joint origin xyz ) ( joint orientation xyz )  // parent name in comment
}

 

so:

"Hips" 2 ( -1.636226 -0.000001 43.697197 ) ( -0.706956 0.000158 0.000158 ) // Pelvis2

Means "Hips" has parent "Pelvis2", which is the third item in the list (labelled as 2 because the first item in the list is considered item 0, not item 1).

 

All our humanoid AI use the same basic skeleton I think. But they have a separate head model:

 

 

 

numJoints 25

 

joints {

"origin" -1 ( 0.000000 0.000000 0.000000 ) ( 0.488331 0.511402 0.511403 ) //

"neckcontrol" 0 ( 0.297127 -0.000001 7.440238 ) ( -0.505970 0.493956 -0.494203 ) // origin

"Neck" 1 ( 0.307341 -0.020927 7.431634 ) ( -0.505970 0.493956 -0.494203 ) // neckcontrol

"headcontrol" 2 ( 0.411221 0.010968 10.085651 ) ( -0.707054 -0.008495 0.008153 ) // Neck

"Head" 3 ( -2.461542 0.004753 11.916048 ) ( -0.707054 -0.008495 0.008153 ) // headcontrol

"BrowMiddle" 4 ( 4.205171 -0.003301 15.269251 ) ( -0.707054 -0.008495 0.008153 ) // Head

"BrowUpLeft" 4 ( 3.160232 2.117698 15.237917 ) ( -0.707054 -0.008495 0.008153 ) // Head

"BrowUpRight" 4 ( 3.150936 -2.170255 15.230720 ) ( -0.707054 -0.008495 0.008153 ) // Head

"CheekLeft" 4 ( 2.312923 2.394765 12.438573 ) ( -0.707054 -0.008495 0.008153 ) // Head

"CheekRight" 4 ( 2.325025 -2.333191 12.432760 ) ( -0.707054 -0.008495 0.008153 ) // Head

"LipUpperMiddle" 4 ( 4.366701 0.001183 11.774622 ) ( -0.707054 -0.008495 0.008153 ) // Head

"LowerLidLeft" 4 ( 3.599415 1.398526 14.058707 ) ( -0.707054 -0.008495 0.008153 ) // Head

"LowerLidRight" 4 ( 3.595007 -1.331830 14.082323 ) ( -0.707054 -0.008495 0.008153 ) // Head

"MouthLeft" 4 ( 3.273105 1.212014 11.633988 ) ( -0.707054 -0.008495 0.008153 ) // Head

"MouthRight" 4 ( 3.278476 -1.228507 11.630075 ) ( -0.707054 -0.008495 0.008153 ) // Head

"NoseLeft" 4 ( 3.909129 0.986540 12.864723 ) ( -0.707054 -0.008495 0.008153 ) // Head

"NoseRight" 4 ( 3.903202 -1.029541 12.864002 ) ( -0.707054 -0.008495 0.008153 ) // Head

"UpperLidLeft" 4 ( 3.740158 1.397186 14.842626 ) ( -0.707054 -0.008495 0.008153 ) // Head

"UpperLidRight" 4 ( 3.742391 -1.333182 14.840637 ) ( -0.707054 -0.008495 0.008153 ) // Head

"jaw" 4 ( 1.043659 0.007470 11.617107 ) ( -0.707054 -0.008495 0.008153 ) // Head

"LipLowerMiddle" 19 ( 4.093786 0.002766 10.943217 ) ( -0.707054 -0.008495 0.008153 ) // jaw

"tonguebase" 19 ( 2.524686 0.005545 11.053605 ) ( -0.707054 -0.008495 0.008153 ) // jaw

"tongue" 21 ( 3.474349 0.003340 11.330935 ) ( -0.707054 -0.008495 0.008153 ) // tonguebase

"leye" 4 ( 3.445617 1.406560 14.490114 ) ( -0.707054 -0.008495 0.008153 ) // Head

"reye" 4 ( 3.447119 -1.360933 14.490596 ) ( -0.707054 -0.008495 0.008153 ) // Head

}

 

 

 

 

Re polys and meshes, Springheel is the expert here. Separate shadow meshes are appreciated, they do help with performance. LOD is optional but will get used if provided. It's more important for AI where we might want several on screen at once.

Link to comment
Share on other sites

Is this what you need? From tdm_ai_citywatch.md5mesh, minus the meshes:

 

(Bunch of bone hierarchy Taff)

 

 

Is there a version of just the skeleton exported into an editable format that can be opened with a 3d-modeling program? It doesn't matter if the mesh is there as well, I can just get rid of it. Because if I get the skeleton, I can just change the bone lengths. Actually, I also get the standard humanoid scale from an exported skeleton as well, so I can edit my mesh to fit TDM standards better.

Link to comment
Share on other sites

I might be able to export one to fbx; I'm not sure. I only work with Maya.

 

Collada should be a format that works with every program ever so exporting that shouldn't be a problem. So is OBJ but I don't know about its skeletal animation properties.

 

Anyway, tomorrow is a holiday so I need to go to the next town over to get wasted with my friends. I'll continue making the model, but it might take a while. Well, the good thing about taffers is that they're patient. No amount of Thi4fs is going to change that I hope. :)

  • Like 1
Link to comment
Share on other sites

Use this model viewer and converter below called noesis to convert the md5 animation to fbx, it imports into modo looking like simple locators not modo "bones", but the animation works just fine. Btw i'm also a modo user :), and if you don't know, seneca, one of the artists from id software uses modo, he made many plugins to use on Doom 3 and Rage, but only for static models (lwo), is strange how there's no md5 importer from him, i would love a modo md5 importer.

 

 

http://www.richwhitehouse.com/index.php?content=inc_projects.php#prjmp91

Edited by HMart
Link to comment
Share on other sites

Use this model viewer and converter below called noesis to convert the md5 animation to fbx, it imports into modo looking like simple locators not modo "bones", but the animation works just fine. Btw i'm also a modo user :), and if you don't know, seneca, one of the artists from id software uses modo, he made many plugins to use on Doom 3 and Rage, but only for static models (lwo), is strange how there's no md5 importer from him, i would love a modo md5 importer.

 

 

http://www.richwhitehouse.com/index.php?content=inc_projects.php#prjmp91

 

So Noesis is the one you mean, right? (Edit: Of course you mean that, you said it right there but I'm a blind idiot)

 

Modo bones are locator hierarchies. You just have to enable the linking visualizations to make them look like bones. And you know, I don't even need to get the animations, I just need the scale and bone structure/hierarchy. But I suppose it doesn't matter if it's also animated.

 

Speaking of scale, do you know of any exporting problems when it comes to Modo's meter-based unit scale and the Dark Mod? Every program exports into different scale, for example Modo models are 100x larger than Blender models or something.

Edited by Plutonia
Link to comment
Share on other sites

Just put the units in "game units" and use 1 meter per game units, that is what i use and it works. You can also make a fixed grid with size 8 and it will work just like DarkEditor 8 grid size.

Oh, I didn't even remember that Modo can use game units.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recent Status Updates

    • Petike the Taffer

      I've finally managed to log in to The Dark Mod Wiki. I'm back in the saddle and before the holidays start in full, I'll be adding a few new FM articles and doing other updates. Written in Stone is already done.
      · 1 reply
    • nbohr1more

      TDM 15th Anniversary Contest is now active! Please declare your participation: https://forums.thedarkmod.com/index.php?/topic/22413-the-dark-mod-15th-anniversary-contest-entry-thread/
       
      · 0 replies
    • JackFarmer

      @TheUnbeholden
      You cannot receive PMs. Could you please be so kind and check your mailbox if it is full (or maybe you switched off the function)?
      · 1 reply
    • OrbWeaver

      I like the new frob highlight but it would nice if it was less "flickery" while moving over objects (especially barred metal doors).
      · 4 replies
    • nbohr1more

      Please vote in the 15th Anniversary Contest Theme Poll
       
      · 0 replies
×
×
  • Create New...