[TOOL] DAEnerys - DAE Ship Editor


(ajlsunrise) #402

I believe the format is still the same… Unless you know something I don’t.

I’m checking it out now.


Edit: I don’t see any difference in the format.


(Herbyguitar) #403

…bummer. I would assume that means it’s in the game somewhere. Something broke?


(Nathanius) #404

*.mad and *.hod files I’ve imported via RODOH have all the animations set to the first second in the HOLD_ANIM joint and only two of the four main animations brought through (warp & shield). The animation information is still in there, as we can get the game to alternatively play one or the other, but I’m hopeing that they could be straightened out with DAEnerys in the future :sweat_smile:


(ajlsunrise) #405

Answer: don’t import animations through HODOR :wink:

I’ll see what I can do about exporting animations directly to MAD from DAEnerys.


(Nathanius) #406

Animations that are set up in MAX tend to work ok even though they’re not all that intuitive to set up, and there’s the weird warping bug we have. Importing old MADs would be where the best help would be.

If there’s a way to salvage the old work, that would be immense! Otherwise, you guys are already heading towards an interface for animations like/better than the old CFHodEd right? That would still be fantastic beyond a fanboi’s dreams :wink:


(ajlsunrise) #407

I’ll be honest… I haven’t taken a look at PayDay’s animation work yet, but I’m hoping it’s better than what CFHodEd was. I remember some dev (I think it was @BitVenom) expressing frustration with how CFHodEd inserted keyframes into channels that didn’t need keyframes added. I hope in my efforts to export MAD from DAEnerys, I can avoid that same pitfall.


(Nathanius) #408

I have faith in you guys, what I’ve seen so far is nothing short of amazing :wink:

I wouldn’t have even aired something like importing old MADs if you guys hadn’t already shown such an impressive track record :smiley:


(Christoph Timmermann) #409

Yay, thanks. :slight_smile:

Don’t hope. Just tell me how to do it properly. :smiley:

You have a separate curve for every axis of translation, rotation and scaling in COLLADA. So there are up to 9 different curves for every joint that’s animated. CFHodEd uses shared keyframes for that, so you have redundant keyframes. Is this what @BitVenom meant? Is this also the case in Homeworld?

I won’t be creating the actual editor for animations just yet. I want them to import/export and play properly, so you don’t loose data anymore. Joint editing etc. comes first.

Regarding the different curves, what kind of curve editor do we want?
You know, something like

  • One segment at a time, one axis at a time
  • Entire curve at a time, one axis at a time
  • etc…

EDIT: Does Homeworld support scaling in animations?


(ajlsunrise) #410

Echoed. Thanks! :slight_smile:

I believe so, yes.


(Herbyguitar) #411

This is extremely interesting watching you guys think through this. I’m really liking the approach of getting old mad files working correctly. This would be an “enormous” help :smiley:


(Taiidan Republic Mod) #412

version 6127:

The ship works fine in game, here is the relevant dae code:

    <node name="DOCK[corvette_in]_Fam[Corvette]_Link[]_Flags[]_MAD[]" id="DOCK[corvette_in]_Fam[Corvette]_Link[]_Flags[]_MAD[]" sid="DOCK[corvette_in]_Fam[Corvette]_Link[]_Flags[]_MAD[]">
    	<translate sid="translate">0.0 0.0 0.0</translate>
    	<rotate sid="rotateZ">0 0 1 0.0</rotate>
    	<rotate sid="rotateY">0 1 0 -0.0</rotate>
    	<rotate sid="rotateX">1 0 0 0.0</rotate>
    	<node name="SEG[0]_Tol[10]_Spd[100]_Flags[Player Queue]" id="SEG[0]_Tol[10]_Spd[100]_Flags[Player Queue]" sid="SEG[0]_Tol[10]_Spd[100]_Flags[Player Queue]">
    		<translate sid="translate">-292.6776123046875 2.1665207896148786e-05 495.6422119140625</translate>
    		<rotate sid="rotateZ">0 0 1 -0.5614512614502742</rotate>
    		<rotate sid="rotateY">0 1 0 156.3941335769619</rotate>
    		<rotate sid="rotateX">1 0 0 0.269014417619504</rotate>
    	</node>
    	<node name="SEG[1]_Tol[7]_Spd[100]_Flags[Unfocus]" id="SEG[1]_Tol[7]_Spd[100]_Flags[Unfocus]" sid="SEG[1]_Tol[7]_Spd[100]_Flags[Unfocus]">
    		<translate sid="translate">-247.22763061523438 1.6943220543907955e-05 387.61578369140625</translate>
    		<rotate sid="rotateZ">0 0 1 1.1185637290365397e-06</rotate>
    		<rotate sid="rotateY">0 1 0 155.93323241176944</rotate>
    		<rotate sid="rotateX">1 0 0 5.247394529446791e-06</rotate>
    	</node>
    	<node name="SEG[2]_Tol[5]_Spd[100]_Flags[Unfocus]" id="SEG[2]_Tol[5]_Spd[100]_Flags[Unfocus]" sid="SEG[2]_Tol[5]_Spd[100]_Flags[Unfocus]">
    		<translate sid="translate">-207.739501953125 1.2840638191846665e-05 293.75958251953125</translate>
    		<rotate sid="rotateZ">0 0 1 1.0686157894300876e-06</rotate>
    		<rotate sid="rotateY">0 1 0 156.89291497129125</rotate>
    		<rotate sid="rotateX">1 0 0 5.227407414939725e-06</rotate>
    	</node>
    	<node name="SEG[3]_Tol[3]_Spd[80]_Flags[Unfocus]" id="SEG[3]_Tol[3]_Spd[80]_Flags[Unfocus]" sid="SEG[3]_Tol[3]_Spd[80]_Flags[Unfocus]">
    		<translate sid="translate">-167.78402709960938 8.689500646141823e-06 198.7926025390625</translate>
    		<rotate sid="rotateZ">0 0 1 1.0724748963695134e-06</rotate>
    		<rotate sid="rotateY">0 1 0 156.81827466404135</rotate>
    		<rotate sid="rotateX">1 0 0 5.228924310522846e-06</rotate>
    	</node>
    	<node name="SEG[4]_Tol[2]_Spd[50]_Flags[Unfocus Close]" id="SEG[4]_Tol[2]_Spd[50]_Flags[Unfocus Close]" sid="SEG[4]_Tol[2]_Spd[50]_Flags[Unfocus Close]">
    		<translate sid="translate">-121.79247283935547 3.911246494681109e-06 89.47891235351562</translate>
    		<rotate sid="rotateZ">0 0 1 1.0537093184156292e-06</rotate>
    		<rotate sid="rotateY">0 1 0 157.1820368788579</rotate>
    		<rotate sid="rotateX">1 0 0 5.221593462759759e-06</rotate>
    	</node>
    	<node name="SEG[5]_Tol[1]_Spd[10]_Flags[Unfocus Close]" id="SEG[5]_Tol[1]_Spd[10]_Flags[Unfocus Close]" sid="SEG[5]_Tol[1]_Spd[10]_Flags[Unfocus Close]">
    		<translate sid="translate">-94.53821563720703 1.0796875358209945e-06 24.700408935546875</translate>
    		<rotate sid="rotateZ">0 0 1 1.0537093184156292e-06</rotate>
    		<rotate sid="rotateY">0 1 0 157.1820368788579</rotate>
    		<rotate sid="rotateX">1 0 0 5.221593462759759e-06</rotate>
    	</node>

Also, what shader data do we need to give it?


(ajlsunrise) #413

“it” being what?


(Taiidan Republic Mod) #414

DAEnerys. It says it can’t find something.

Unknown shader "ship" of material

I assumed it was because I needed to point it to some shader files, although I don’t remember doing that with previous versions…


(ajlsunrise) #415

Do you have your data paths set up correctly? Or did you edit hod_alias.manifest and accidentally remove the ship alias?


(Christoph Timmermann) #416

You have to point it to more than just shader files. DAEnerys needs much more than that of your data.

You have to extract Homeworld2.big and then add the keeper.txt in the root directory to the data paths in the settings window.

(Don’t forget to restart the editor)


(Taiidan Republic Mod) #417

The whole thing? In the past I only pointed it at a data directory that has the navlight files…


(ajlsunrise) #418

List of datapaths needed:

  • data:shaders/: Uses in-game shaders (without it, DAEnerys uses a very low-tech version of the ship shader with no badge or thruster/engine support).
  • data:background/: Environment reflections.
  • data:scripts/navlightstyles/: Navlight styles.
  • data:effect/textures/navlight.tga: The navlight sprite.
  • data:badges/: Default badges.

(Taiidan Republic Mod) #419

Thanks for clearing that up!


(Snake_B5) #420

Would it be possible to have this list embedded into an “help” window inside DAEnerys, for future reference ?


(Christoph Timmermann) #421

@DKesserich Your exporter always samples the bezier curve animations down to many linear keyframes, and HODOR just refuses to create a MAD file from my DAEs. HODORing the straight export of the Taiidan Interceptor works though.

Any ideas?

EDIT: Could you guys send me some of your animated DAEs for testing? Especially complicated and bezier curve ones.