[TOOL] DAEnerys - DAE Ship Editor

(Christoph Timmermann) #342

Hmm… I wonder if that’s still a bug in my development build. The new version is working entirely different and I recoded large parts of the program.

Could you send this DAE to me please?

EDIT: It’s definitely linked to the implementation of the original shaders.

(BitVenom) #343

Most of those typos are harmless - I’ll have to look at the GAUSS_DEF one… doh!

(Chimas) #344

Look who’s back … hi there Dave!

(Christoph Timmermann) #345

This ship was created from scratch, entirely in DAEnerys!
(Except for OBJ-files from Blender)
(And textures from GIMP)

(Christoph Timmermann) #346

Finally, here is the first version of DAEnerys that can actually be called an editor!
There are many new features, but this is quite understandable as the last release is 3 months old. Although I was busy with real life and the Map Editor for a large part of that time. :wink:

Download: DAEnerys_b6077.zip

New features

Every time DAEnerys starts (or you press the “Check for updates” button), this thing will fetch a little text file from Bitbucket and compare the number in it with your current build. Depending on the outcome, you will get a window asking you to download the newest zip by pressing a button.

You can now export the DAE to a HODOR-friendly COLLADA-file. This also cleans up your structure a bit.
Disclaimer: Animations don’t get exported/imported yet, so always have a backup of your work!

####Ship mesh editing
You can add new ones, edit their LOD models, import from OBJ, export to OBJ, assign materials, reparent, and change their names.
Disclaimer: As OBJ does not support multiple UV-channels, the second one gets lost when exporting your mesh. I plan to also add exporting single meshes to a DAE-file (maybe even Blender-friendly).

####Material editing
You can change the shader, the texture format, change the name, browse for the DIFF-texture, remove materials and add new ones.

Tip: There is no “refresh textures”-button yet, you can do this by clicking on the shader combobox and just choosing the same shader again.

####Reflection cubemaps
DAEnerys also takes your REFL-map into account, you can choose from the available cubemaps in the Settings window. (Even custom ones, if you add the data path)

####Engine burns
Yeah, I finally implemented them. You can now look at them with a neat GUI and 3D-visualization (Screenshots are at the bottom). However you can’t edit them yet. (Like all things except ship meshes and materials)


  • Added problem when diffuse textures have invalid names, it crashes HODOR without any information.
  • Many additional problem checks when importing.
  • “Progress”-slider for the ore shader.
  • Added warning when a shader doesn’t exist.
  • “New”-button at the top. (It clears the scene)


  • Optimizations in the texture loading process, now DAEnerys should be able to load much larger textures without running out of memory.
  • Fixed wrong problem creation on some texture names.
  • Fixed some RAM-holes.
  • Fixed some shaders. (like shipglow)
  • Fixed wrong bounding box calculations. (Clipped the mesh sometimes)
  • Fixed a bug with joint and marker names.
  • Sped up importing process by replacing the ugly string manipulations for Blender-exported DAEs.
  • Fixed that files that are not images were considered as textures.
  • Countless, countless other bugs that you probably don’t care about. :smiley:

With this version you can actually create ships only using DAEnerys, HODOR, an OBJ-file and some textures. :slight_smile:
(See the post above this one)

But please note (if you haven’t already) that you can’t edit joints, dockpaths etc. just yet. But it’s really just a matter of creating a GUI for these things.

(Snake_B5) #347

Great work, as always ! :smiley:

A lot of cookies for you ! :cookie::cookie::cookie::cookie::cookie:

(BitVenom) #348

That ore progress slider is nice! However, it looks odd to me because it doesn’t show the ‘burn’ that happens around the edges… Since in both cases these are just shader values that are fed in from the engine - maybe consider a simple panel to list the input values for a shader that you don’t already fill by default - and let somebody set them? It would make using the tool to work on custom shaders SUPER easy - which may increase the number of custom shaders people attempt :wink:

(ajlsunrise) #349

I’ll have to take a look at that. As far as I can tell, my shader parser pulls all values directly from the program definitions. Anything not expressly overridden uses those default values.

(Christoph Timmermann) #350

Yeah, the GLOW map is also not doing anything. I wasn’t able to fix that yet, this is @radar3301’s area anyway. ^^

(ajlsunrise) #351

Glow map for the ore shader, or glow map for everything?

(Christoph Timmermann) #352

For the ore shader, but there are many shaders (for example all the background ones) that don’t get the right textures yet…

(BitVenom) #353

Right - but you can tell from the surface file if a property is going to be exposed to the engine for filling - as it is aliased into the program. Indeed you start with the defaults, but many of them are set via the engine. So a basic panel with a list of them (hiding the ones you know your code is filling with other tools - like lights, team/stripe, etc) - that you can edit would allow for a ton more work to be done inside of you tool. I’d give an example if I had the code handy…

(Siber) #354

Pretty awesome! So far I’ve only had two issues crop up. One is that some of the HWF ships share textures across ships, so there’s only one copy of the texture in the source files directory. That’s fine for HODOR, and IIRC it was Bit’s suggested best practice, but it appears to error DAEnerys. At least, I think that’s what’s going on. here’s what I get when I try to load HWAT_UNH_FFIon

************** Exception Text **************
Assimp.AssimpException: Error importing file: Collada: Unable to resolve effect texture entry “IMG[UNH_FFA_THRUST_EXPORT[3]_GLOW]_FMT[8888]-image”, ended up at ID “IMG[UNH_FFA_THRUST_EXPORT[3]_GLOW]_FMT[8888]-image”.
at Assimp.AssimpContext.ImportFile(String file, PostProcessSteps postProcessFlags)
at DAEnerys.Importer.ImportFromFile(String path) in D:\DAEnerys\DAEnerys\collada\Importer.cs:line 54
at DAEnerys.Main.buttonOpen_Click(Object sender, EventArgs e) in D:\DAEnerys\DAEnerys\Main.cs:line 328
at System.Windows.Forms.ToolStripItem.RaiseEvent(Object key, EventArgs e)
at System.Windows.Forms.ToolStripButton.OnClick(EventArgs e)
at System.Windows.Forms.ToolStripItem.HandleClick(EventArgs e)
at System.Windows.Forms.ToolStripItem.HandleMouseUp(MouseEventArgs e)
at System.Windows.Forms.ToolStripItem.FireEventInteractive(EventArgs e, ToolStripItemEventType met)
at System.Windows.Forms.ToolStripItem.FireEvent(EventArgs e, ToolStripItemEventType met)
at System.Windows.Forms.ToolStrip.OnMouseUp(MouseEventArgs mea)
at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ScrollableControl.WndProc(Message& m)
at System.Windows.Forms.ToolStrip.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

************** Loaded Assemblies **************
Assembly Version:
Win32 Version: 4.6.1586.0 built by: NETFXREL2
CodeBase: file:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/mscorlib.dll

Assembly Version: 1.0.6077.0
Win32 Version:
CodeBase: file:///D:/tools/DAEnerys/DAEnerys.exe

Assembly Version:
Win32 Version: 4.6.1586.0 built by: NETFXREL2
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms/v4.0_4.0.0.0__b77a5c561934e089/System.Windows.Forms.dll

Assembly Version:
Win32 Version: 4.6.1586.0 built by: NETFXREL2
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System/v4.0_4.0.0.0__b77a5c561934e089/System.dll

Assembly Version:
Win32 Version: 4.6.1586.0 built by: NETFXREL2
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Drawing/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll

Assembly Version:
Win32 Version: 2.0.0
CodeBase: file:///D:/tools/DAEnerys/OpenTK.DLL

Assembly Version:
Win32 Version: 4.6.1586.0 built by: NETFXREL2
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Configuration/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll

Assembly Version:
Win32 Version: 4.6.1586.0 built by: NETFXREL2
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Core/v4.0_4.0.0.0__b77a5c561934e089/System.Core.dll

Assembly Version:
Win32 Version: 4.6.1586.0 built by: NETFXREL2
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Xml/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.dll

Assembly Version:
Win32 Version: 4.6.1586.0 built by: NETFXREL2
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Xml.Linq/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.Linq.dll

Assembly Version:
Win32 Version: 1.1.2349.61993
CodeBase: file:///D:/tools/DAEnerys/OpenTK.GLControl.DLL

Assembly Version:
Win32 Version:
CodeBase: file:///D:/tools/DAEnerys/DevILSharp.DLL

Assembly Version:
Win32 Version: 4.40.23020.0
CodeBase: file:///D:/tools/DAEnerys/FSharp.Core.DLL

Assembly Version:
Win32 Version: 4.6.1586.0
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.IO.Compression/v4.0_4.0.0.0__b77a5c561934e089/System.IO.Compression.dll

Assembly Version:
Win32 Version: 4.6.1586.0
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/Microsoft.CSharp/v4.0_4.0.0.0__b03f5f7f11d50a3a/Microsoft.CSharp.dll

Anonymously Hosted DynamicMethods Assembly
Assembly Version:
Win32 Version: 4.6.1586.0 built by: NETFXREL2
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_32/mscorlib/v4.0_4.0.0.0__b77a5c561934e089/mscorlib.dll

Assembly Version:
Win32 Version: 3.3.1
CodeBase: file:///D:/tools/DAEnerys/AssimpNet.DLL

Assembly Version:
Win32 Version: 4.6.1586.0
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Dynamic/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Dynamic.dll

************** JIT Debugging **************
To enable just-in-time (JIT) debugging, the .config file for this
application or computer (machine.config) must have the
jitDebugging value set in the system.windows.forms section.
The application must also be compiled with debugging

For example:

When JIT debugging is enabled, any unhandled exception
will be sent to the JIT debugger registered on the computer
rather than be handled by this dialog box.[/code]

The other issue is that I expected it to pick up custom backgrounds as options in the settings drop-down but it does not appear to be the case.

(Christoph Timmermann) #355

Did you add your custom data path to the list?
Gonna look at the other thing tomorrow.

(Siber) #356

I did do that, and when it didn’t work I tried adding a keeper.txt to my source files folder and adding it to the list too, which didn’t help.

(ajlsunrise) #357

That seems like it’s a collada import error, not a DAEnerys error. @PayDay will correct me if I’m wrong.

Are your background textures in .dds format, or .tga format?

(Christoph Timmermann) #358

Yup, if I remember correctly it did this when there were multiple textures or materials with the same name. Not sure though.

(Siber) #359

My envmaps in the backgrounds folder are .tga, as are the background textures in the source files(but those shouldn’t really be relevant for this one).

(ajlsunrise) #360

Well there ya go. DAEnerys looks for .dds, not .tga. I’ll add a check for that extension.

Done! It’ll be updated in the next release…

(ajlsunrise) #361

Well, I modified the shaders in-game to set the final color to be the values the game is passing to the shader, but I haven’t been able to find any differences… (as a side note, I wasn’t able to observe any burn in-game, either… maybe it’s one of my in-game settings?)