Jump to content

Deer Skeleton


Recommended Posts

(10:59:16 AM) Philip`: What you should do is...

(11:00:01 AM) Philip`: * Copy the <standard_skeleton title="Standard biped" id="biped"> so there's a second one like <standard_skeleton title="Eary biped" id="eary_biped"> (but a more appropriate name)

(11:01:27 AM) Philip`: * Assuming the ear bones are just attached directly to the head bone, copy the <bone name="DUMMY_headnub"/> to make another two (<bone name="l_ear"/> and r_ear or something), nested inside the <bone name="head">

(11:02:03 AM) Philip`: * Do the same kind of thing for the tail bones, though I guess the second tail bone is hierarchically nested inside the first tail bone

(11:02:26 AM) Philip`: (i.e. <bone name="tail1"><bone name="tail2"/></bone> or something)

(11:02:54 AM) Philip`: * Delete all the DUMMY_ bones, since they aren't useful (except to remain compatible with old PMD/PSA files, and this new skeleton is going to be incompatible anyway)

(11:03:12 AM) Philip`: And then ...

(11:03:27 AM) Philip`: * Copy the <skeleton title="3ds Max biped" target="biped"> into a <skeleton title="3ds Max eary biped" target="eary_biped">

(11:03:56 AM) Philip`: * change its <identifier><root>Bip01</root></identifier> to some other name, and in 3ds Max you have to modify your new skeletons to have that name instead of Bip01 (so it's possible to tell them apart)

(11:04:39 AM) Wijit: what I did for the prop point was just create an simple object, and parent that to the head, then I made the antlers prop a child of that object

(11:04:51 AM) Wijit: check out the file I'm trying to send you on MSN

(11:05:05 AM) Philip`: * Add things like <bone name="Bip01_L_Ear"><target>l_ear</target></bone> to say that the Bip01_L_Ear node in Max corresponds to the l_ear node in the standard program-independent skeleton format

(11:05:12 AM) Wijit: I've changed the Bip01 to Deer01

(11:05:16 AM) Philip`: * Oh, I think that's about all

(11:05:39 AM) Philip`: Wijit: File transfer didn't work - "Filetransfers are not supported by BitlBee for now..."

(11:05:47 AM) Philip`: (My MSN client isn't clever enough)

(11:06:02 AM) Wijit: ok, I'll post it

(11:07:22 AM) Wijit: http://www.wildfiregames.com/forum/index.php?showtopic=11673

(11:08:17 AM) Philip`: Is "Deer01 Pony..." the ears?

(11:08:57 AM) Philip`: Are "antler"/"Object01" just objects, not bones, and don't need to be animated?

(11:09:03 AM) Wijit: yeah

(11:09:10 AM) Philip`: (It'd be quite an odd deer if its antlers moved independent of its skull, I suppose)

(11:09:29 AM) Wijit: yep, that antler is what I was using for a prop point, and the object 01 is the actual antler prop

(11:10:21 AM) Wijit: and yeah the Pony is short for ponytail (the ears)

(11:10:52 AM) Philip`: Okay - the animation skeleton doesn't need to know about prop points (they're only stored in the PMD files, not the PSAs), so I think they can be ignored

(11:11:26 AM) Wijit: oh really?

(11:11:33 AM) Philip`: Oh, right, "ponytail" makes much more sense than "pony"

(11:14:04 AM) Philip`: Wijit: Yep - the skeleton only stores animated bones, and the PMD adds the information that e.g. a point 20cm down the r_arm bone is called the 'shield' prop point

(11:14:32 AM) Philip`: (so you can't animate prop points, you can only animate bones (that might have prop points attached))

(11:17:03 AM) Philip`: Wijit: When you export it for PMD, you do have to include the "antlers" object - everything that is attached directly to the skeleton is considered to be a prop point

(11:17:21 AM) Philip`: and anything that isn't attached directly (e.g. Object01, since that's indirect, or Object02, since that doesn't even exist) isn't a prop point

(11:17:29 AM) Wijit: Philip`: I'm going to post this convo in that thread, cause I know I'm going to forget

(11:17:41 AM) Philip`: Wijit: Sounds like a good plan :-)

(11:18:29 AM) Philip`: I'm happy to answer any questions (though if they're posted on the forums I might not notice them for a week), though I don't have access to 3ds Max now so I can't really test anything myself

(11:18:30 AM) Wijit: ah... hmm, so when I export a human dude, I have to have all the props that I want on him exporting with him? Rather than before, I had non-specific prop points that I could assign alternative props to later in the xml?

(11:19:02 AM) Philip`: Once you've sorted this out, it'd be nice to update the wiki with all the information that is useful to know :-)

(11:19:06 AM) Wijit: yeah maybe I should just experiment first and see how it works, before I confuse myself

(11:19:19 AM) Wijit: exactly - I want to document this before we OS

(11:19:32 AM) Philip`: Wijit: You don't have to have the props when you export

(11:19:42 AM) Philip`: (You don't have to get rid of them either, they'll just be ignored)

(11:20:00 AM) Philip`: You do have to have the prop points, when exporting for conversion to PMD

(11:20:03 AM) Wijit: xren has actually committed some DAE files lately that I haven't had a chance to test

(11:20:29 AM) Wijit: ah there it is.. that was the sentence I was looking for

(11:20:51 AM) Philip`: If you do add props in 3ds Max, make sure you attach them onto prop points, not onto bones, else they'll be misinterpreted as being prop points themselves

(11:21:07 AM) Wijit: well before I bug you to much, lemme try this out and I'll ask more questions :)

(11:21:11 AM) matei left the room (quit: Quit).

(11:21:24 AM) Philip`: I'm not sure if I'm actually saying anything to make this at all clearer :-)

(11:21:31 AM) Wijit: aye, and that is what I was trying to do with the <antler> (my prop point), and <Object 01> (the antler mesh)

(11:21:54 AM) Philip`: That's the right way to do things

(11:21:58 AM) Wijit: ok cool

(11:22:16 AM) Wijit: I gotta run, hopefully get to try this out on Tuesday

(11:22:18 AM) Philip`: (They're just unnecessary (though harmless) when exporting the PSA files)

(11:22:36 AM) Wijit: keep an eye on that thread for my inevitable questions :)

Link to comment
Share on other sites

I'm getting an error... :)

Assertion failed: "size != 0"

Location: file_cache.cpp:151 (FileCache::Impl::Reserve)

Call stack:

Cache<boost::filesystem::basic_path<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,VfsPathTraits>,boost::shared_ptr<unsigned char>,Landlord_Cached,Divider_Naive>::retrieve (cache_adt.h:675)

this = (unavailable - stored in register 0x0)

key =

m_path = [1243124]





88 ('X')








118 ('v')

92 ('\')

65 ('A')

0 ...

item = 0xE16F132E

psize = 0x0012F860 -> 0x00000000

refill_credit = true

entry = 0x00000000

FileCache::Reserve (file_cache.cpp:218)

this = (unavailable - stored in register 0x0)

size = 0x0012F9CC

std::basic_string<char,std::char_traits<char>,std::allocator<char> >::_Tidy (:0)

errno = 0 (?)

OS error = The operation completed successfully.

I'm going to upload my max files, dae files, skeleton, actor, and error log file tomorrow from work. Hopefully you can help me out here Philip. I'm not sure if I'm selecting the correct things when doing an export selection for the mesh vs. animation export, also what options to check and uncheck from the export menu.

Link to comment
Share on other sites

Doh... I'm sitting here at work on my computer with my thumb drive in and it seems.... I didn't put the zip file on it last night. Arg...

Well, I'll just have to try an upload it tomorrow. Though I think I have thought of what might possibly be the problem, and it may be my skeleton structure. I copied the schematic in max, but what I really should copy is the structure within the .dae file. I think they showed the clavicle parented to spine1 instead of spine. So I'll check that out. Hopefully that fixes the problem.

Link to comment
Share on other sites

I'm getting an error...

This is just a warning - the VFS is indicating that it's being told to load a zero-length file, which is at least questionable. When did it happen? I bet that creating an output file failed, resulting in an empty file; the ensuing load generates this warning.

However it's definitely possible that zero-length files can happen, so I've changed the code to safely handle this without complaint.

(Just a small thing, I couldn't help but find it funny that the error message says that the operation completed successfully, as if that's the opposite of what was supposed to happen There is probably a very logical explanation for this, but still )

heh. Yeah, that's rather silly and part of the reason Philip wanted it banished to the very end of the crashlog.

I've changed the message to "OSError = 0 (no error code was set)".

Link to comment
Share on other sites

One problem (maybe the only one, but I'm not able to test this easily) is that skeletons.xml contains a syntax error. Try opening the .xml file in e.g. Firefox, and it will say:

XML Parsing Error: mismatched tag. Expected: </bone>.
Location: file:///[...]/skeletons.xml
Line Number 450, Column 4:


Looks like the error is <bone name="Deer01_Neck1"> missing its matching </bone> - it should work better when you add that.

(There ought to be a better error report in these cases, since it looks like it's not being very informative yet - recorded as #201.)

Link to comment
Share on other sites

Philip, I made that correction and I didn't get it to work. I tried just exporting a simple dae file with no bones or animation and that didn't work either. So, I thought I'd try your test files you had used before and I got that to work... So there must be a problem with how I'm exporting the file?

Could you let me know what boxes to check and uncheck on the export screen in Max (for both a mesh and an animation)? The options I see:


[] Bake Matrices

[] Relative Paths


[] Normals

[] Triangulate

[] XRefs

[] Tangents/Binormals


[] Enable Export

[] Create Clip

[] Sample Animation

Start []

End []

Link to comment
Share on other sites

Urgh, seems like there's at least two more problems...

When I try to load your mesh, mainlog.html says "WARNING: FCollada warning 54: Missing or invalid URI target" (and then everything dies painfully). That can be fixed by modifying the .dae file: where it says <visual_scene id="deer_idle_01.max" ...>, and where it says <instance_visual_scene url="#deer_idle_01.max"/>, delete the '.' character in both.

(I don't understand why that fixes anything - there must be an odd bug in the FCollada library that makes it dislike '.' in IDs, so I suppose I'll have to look at that at some point in the future (and see if updating to the latest version of FCollada helps).)

Then there's a second log message: "ERROR: Assertion not satisfied (line 384): failed requirement "mesh is made of triangles"". Fortunately that message is almost understandable, and it just means you have to enable the "Triangulate" export option.

(I think you also want to enable "Normals" on export. The other options can hopefully be left at their defaults.)

Then I have no idea what'll break after you've worked around those issues :)

Link to comment
Share on other sites

Thanks Philip, we are making progress. I exported 3 different files here in this zip, did the tweak in notepad you suggested.

deer_male_works.dae - This is just the deer model, no props, no skeleton - it works!

deer_male.dae - deer model with an object titled "antler" that is a child of this. I selected both the deer mesh (deer01), and the prop object (antler) and export selected. Doesn't work. There is no skeleton.

deer_male_skeleton.dae - just like deer_male.dae except the mesh is 'deer' (not deer01), and it should include the skeleton.

Another thing is the scale, it is huge. The deer_male_works.dae file is close to 100x to big I think. I remember you mentioning something about this.

I think I'm using ColladaMax_FREE_3.05B


Link to comment
Share on other sites

Yep, that's helpful - that message means there was more than one object in the scene, and the converter couldn't work out which one was meant to be the exported mesh/skeleton, so it gave up and cried.

In deer_mesh.dae, the <visual_scene ...> directly contains both <node id="deer-node" name="deer" type="NODE"> and <node id="deer01-node" name="deer01" type="NODE">, so the Collada loader doesn't know how to decide between the two. (deer_mesh_skeleton.dae seems to have basically the same issue). You can hopefully fix it by deleting all but one of those objects (or by only selecting one when exporting, and being careful that all the necessary linked objects still do get exported); or in 3ds Max you can right-click on the desired object and go to the 'user defined properties' window (if I remember correctly) and write "export" in there, if that's more convenient.

Link to comment
Share on other sites

I finally got COLLADA working. My goodness! What a headache. I spent hours trying different ways to export the .dae file and different exporting options. I finally started looking at the .dae file itself and comparing it to the .dae files that you exported Philip. I noticed a few differences - probably due to different versions of the COLLADA exporter. So, instead of trying to go through and find exactly what those differences where I decided I'd revert back to the exporter that you originally used. Once I did that - everything started working... wierd. I still haven't gotten the prop point of the antler to be recognized though. So it looks like the game doesn't recognize the outputed .dae files from the later revision of COLLADA max exporter that I was using.

In this exercise I validated that you can create a new skeleton, the process of exporting models from max, and I'm trying to validate that props work - but no luck so far. Next step is to write a complete tutorial so people can replicate what I've done.

Since I can't get to SVN without crashing my internet connection on my phone, I tried to create this TourtoiseSVN patch that should include all the deer files. If someone is interested in seeing the deer in action - people use it and upload it to the repository.


Link to comment
Share on other sites

  • 4 years later...

Join the conversation

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

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.


  • Create New...