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

    • taffernicus

      i am so euphoric to see new FMs keep coming out and I am keen to try it out in my leisure time, then suddenly my PC is spouting a couple of S.M.A.R.T errors...
      tbf i cannot afford myself to miss my network emulator image file&progress, important ebooks, hyper-v checkpoint & hyper-v export and the precious thief & TDM gamesaves. Don't fall yourself into & lay your hands on crappy SSD
       
      · 2 replies
    • OrbWeaver

      Does anyone actually use the Normalise button in the Surface inspector? Even after looking at the code I'm not quite sure what it's for.
      · 7 replies
    • Ansome

      Turns out my 15th anniversary mission idea has already been done once or twice before! I've been beaten to the punch once again, but I suppose that's to be expected when there's over 170 FMs out there, eh? I'm not complaining though, I love learning new tricks and taking inspiration from past FMs. Best of luck on your own fan missions!
      · 4 replies
    • The Black Arrow

      I wanna play Doom 3, but fhDoom has much better features than dhewm3, yet fhDoom is old, outdated and probably not supported. Damn!
      Makes me think that TDM engine for Doom 3 itself would actually be perfect.
      · 6 replies
    • Petike the Taffer

      Maybe a bit of advice ? In the FM series I'm preparing, the two main characters have the given names Toby and Agnes (it's the protagonist and deuteragonist, respectively), I've been toying with the idea of giving them family names as well, since many of the FM series have named protagonists who have surnames. Toby's from a family who were usually farriers, though he eventually wound up working as a cobbler (this serves as a daylight "front" for his night time thieving). Would it make sense if the man's popularly accepted family name was Farrier ? It's an existing, though less common English surname, and it directly refers to the profession practiced by his relatives. Your suggestions ?
      · 9 replies
×
×
  • Create New...