Quite a few people have been contacting me recently asking about getting Creature Animation runtime support into Defold.
I am here to ask how possible it is to get it working in your engine since I have user requests.
Creature is a 100% mesh based ( full on skinning + deformation ) so my question to the Defold Devs is whether it works or is compatible with your framework.
To give you more info ( and I am not sure if this helps you ), Creature also supports export to industry supported formats of FBX and Alembic. So if Defold supports these or plans to support them in the future, then any Creature Animation will automatically work in Defold.
Thank you for your time in reading this post, looking forward to your answers on this community
This is not quite true. We do not support all of the features in Spine 3.3. I’m trying to find the exact version or set of features we support, but I couldn’t find it. @sicher, do you know the exact feature set that we support?
ooops, sorry my bad, I’ve no idea what Version Defold supports I export from Dragon Bones in 3.3 and it works, so I assumed that Defold supported it.
Edit - Found this in the Manuals
Currently, Defold does not support animation keys that flip bones over the X or Y axis. Defold supports mesh animation but only with bones, meaning that you can’t animate single vertices. If you need to animate single vertices you can do that through a bone being 100% bound to that vertex only and animate the bone.
Does Defold support ( or plan to support ) FBX Animation?
Because if what you support right now is regular bone skinning, then the more streamlined approach to get a Creature Animation into Defold is via FBX.
The Creature native runtimes also work but they perform a lot more operations other than regular bone skinning ( full on mesh deformation )
I think starting out, it is ok to support regular bone skinning first ( that means bone motors in Creature ), which means FBX should suffice. FBX is also a good idea for Defold if it happens since this means a lot of other tools can also export into it. I believe supporting industry standard formats is quite important in order for an engine to work with a variety of 3rd party tools.
On a side note, for full on mesh deformation, I recommend looking into the Alembic file format which is another industry supported standard for point caching.
Obviously I should be pushing for native Creature runtime support but I think from a broader perspective ( stepping outside of my product and taking a look from the engine’s point of view ), it makes a lot more sense to push for the standard formats first before any custom runtimes.
The short answer is that Defold currently only support bone animation for 2D and 3D objects. To access this functionality the user needs to import/use either Spine JSON-format or Collada files.
Internally we compile the input data into our own runtime format, currently there is no support to add custom build steps. If you are interested in adding Defold export to Creature I would suggest that you look into the Spine JSON format, as Defold can read this and support most of the 2.x functionality.
Creature’s animation framework and design is much more general than specialized 2d programs. Hence, it sounds like the Collada format might sound more suitable if it is a general 3D scene description format.
Does Collada support most of the general bone skinning features of FBX + animation keys as well?
So I saw that Defold has added native extensions, which means the ability to build C++ code for the engine. Is there access to drawing a textured mesh ( points, indices and uv arrays )?
I really think that if this simple feature was added into Defold, I can easily port the Creature runtimes over into Defold. This will be a great feature addition to your great 2D framework as well
For reference, Creature runtimes are very performant.
Here are fully mesh deforming raptor characters running across the screen. This demo is using the CreaturePack Web format to deliver results that have high performance, great quality and yet compact in delivery size: http://www.kestrelmoon.com/creature/WebDemo/raptor_mark.html
Please let me know whether native extensions have support ( or will have ) for rendering textured meshes.
Hi @kestrel.moon11. We are adding native extension support for the final couple of platforms now (Windows was released just two days ago, and Linux is next). Once we have support for all platforms we can start to expand on the Defold SDK to expose more of the engine and hopefully support what you’re asking for.
@britzl Thank you for your prompt reply! Can I know roughly the timeline when you guys are planning to expose engine rendering functionality features into the native extension framework? This will help me plan the Creature runtime Defold feature set moving forwards.
@Mathias_Westerdahl and @sven are the ones who are working with native extensions the most. I’m not sure of the roadmap for Q3 and Q4, but maybe @Mathias_Westerdahl knows?
Exposing more rendering functions for a task such as this is dependent on better support for custom vertex formats in the engine, and that track isn’t in the road map yet unfortunately (afaik).
@Mathias_Westerdahl Hello, thanks for the helpful reply. I really look forward to when this feature is added. This will allow me to port the Creature runtimes onto Defold. I believe it will add a great deal of quality in terms of both animation and visual fidelity to your already great engine toolkit. I have quite a few users of Creature wanting Defold support which is why I am asking. Compared to other 2D animation tools out there, Creature is 100% mesh based and designed much more optimally for high end 2D mesh animation + deformation. Given that C++ runtime for support for Creature is very strong, I will be more than happy to make Creature a viable and useful 2D Animation option for developers in the Defold Engine.
We have everything in place in the engine now to create a Creature extension to parse Creature files and generate data for our mesh component. It will not have a tight editor integration but should be fully usable from code.