Python-Based Collada Export Plugin
Closed, ArchivedPublic

Tokens
"Baby Tequila" token, awarded by campbellbarton."Yellow Medal" token, awarded by ygtsvtr."Love" token, awarded by DanielHolst."Pterodactyl" token, awarded by redsymbzone."The World Burns" token, awarded by punto."Like" token, awarded by Thoniorf."Evil Spooky Haunted Tree" token, awarded by reduz."Like" token, awarded by n-pigeon."Love" token, awarded by LeonardMeagher2.
Authored By

Description

About:

This is a Collada export plugin. Similar to the one using FBX, it is meant mostly for Game Engines (well, not like Collada is useful for anything else anyway). It's pretty complete in features, it supports:

-Geometry
-Armatures
-Materials
-Curves
-Cameras
-Lamps
-Animations (including exporting all actions)
-Several export options.

Pros:

-Source is really simple, complete and very compact, only 1200 lines of code.
-Seems to work well with most game engines
-Can be a nice alternative to the HUGE OpenCollada-based exporter, and easier to understand and contribute to.

Cons:

-I don't know enough about the Blender internal API so I'm sure that many things are not done properly. As a result, can crash with some combinations of data, and not sure if the way it exports is optimal performance-wise (although it seems kind of fast).
-Can't figure out why state is not saved with the scene, or reloaded properly (due to the point above).
-The author can fix bugs regarding to how the format is exported, to make it as correct as possible, but does not have enough time to understand Blender internals and API to use it properly (due to the two points above)
-The author needs help from a more experienced blender developer (due to the three points above).

Notes:

Please re-assign this task to whoever is fit!

Details

Type
Patch
Juan Linietsky (reduz) updated the task description. (Show Details)
Juan Linietsky (reduz) raised the priority of this task from to Needs Triage.
Juan Linietsky (reduz) set Type to Patch.

I'm looking forward to see this as Collada resurrection in Blender! :)

I'm sure it will make many people happy, especially games makers!

Thanks!

@Przemyslaw Golab (n-pigeon), Are you going to maintain this, if its included in Blender?, Or are you submitting this for existing Blender/Collada devs to maintain?

If you need help in areas this is fine, but it would be good to know what level of support you would give, if this is included in Blender. (investigate / fix bugs which are reported?)

Assume you intend to keep supporting this for Godot? (weather this is included in Blender or not)

@Campbell Barton (campbellbarton): I wrote the plugin.

As stated above, I´m willing to fix issues related to the correctness of the exported Collada. I'm however, unexperienced in Blender APIs and unable to follow their progress and make sure they are used properly and adequately. This is why, as mentioned before, this plugin is up for adoption or co-adoption.

The plugin doesn't have anything Godot-specific. It just exports collada as best as possible and has been used with other software and engines.

@Juan Linietsky (reduz). ah, sorry for confusion.

Ok, had a very brief look at the addon,
Its a bit awkward adding duplicate functionality into Blender, we try avoid this mostly.

So how to proceed...

  • Add a branch to addons_contrib, commit there, do some review, cleanup passes (tabs -> spaces, some simple pep8 stuff...).
  • Merge into addons_contrib master, have users evaluate.
  • If this really has advantages over OpenCollada C++ code, then move to addons/ and users can enable if they need.

... (probably still keep OpenCollada as officially supported exporter, but eventually that may change).

Hows that sound?

I'm fine with this. If it's in contrib I can imagine i can tell users to go use that one and report issues again that one, right?

Pushed to branch: 'temp-io_scene_dae'
And added you as a committer to the addons project.

At the moment people will have to explicitly switch to this branch to test. but this temp branch can at least be used to prepare for inclusion (get review etc).

As a test commit you could improve strarr which uses inefficient string contaminating, replace with return " %s " % " ".join(arr) for eg.

Made minor changes

  • tabs -> spaces
  • bl_info had old blender version
  • descriptions gave some warnings

Sorry for asking, but where do I find access to the addons project VCS? I can't find much information in https://developer.blender.org

@Juan Linietsky (reduz) - Could you come into #blendercoders IRC?, we can better help you out there.

Bastien Montagne (mont29) triaged this task as Normal priority.Jul 18 2014, 2:49 PM

Guys, do you really care about this or not?
I'm still developing the plugin and I'm almost done with support for morphs.

I saw you guys are interested in OpenGEX now. I can offer myself to write a proper exporter for the format before you make a half assed one that will be broken, if you promise to include at least that one in Blender.

hi.
please can you give a brief info where i can download the newest version of the exporter for testing ? Is it in the branch or on the new website ?

@juan ferrer (juan) Linietsky,

If you propose to maintain the script, then it can go into addons_contrib for testing. I committed to a branch in the anticipation you would continue some development there.

I did a quick check of the code,

  • Raw strings are written to XML, this is really not going to work (and unrelated to Blender API). all strings must be escaped, Python has calls for this. See: io_scene_x3d/export_x3d.py
  • String addition in Python should be avoided, its quite slow for large strings https://wiki.python.org/moin/PythonSpeed/PerformanceTips#String_Concatenation
  • str(len(...)) or str(int(len(...))), isn't so nice, prefer string formatting.
  • Not pep8 code style (trivial perhaps, but a requirement for official Blender scripts).

Note that this is all basic Python stuff, none of it directly related to Blender.

If you like to have this in addons_contrib master branch, could you resolve the issues above? (in the branch), then we can move it into master for testing.

I don't mean to be overly strict about this... but at least XML string escaping issue should be fixed.

Cambell, I will submit a new version soon (as this one is really outdated). I have some questions.

  1. I need to add proper export for tangent and binormal arrays, so normalmaps exported looks exactly like in blender. I am using tessfaces instead of loops because I want n-gons to also look the same as in Blender. However, tangents seem to only be available to loops, not tessfaces. What should I do about this?
  1. I want to save the state of the plugin in the blend file, so each time a scene is exported, artists don't have to toggle the right switch every time, which is giving us problems. What is the best way to do this?

About the name of the plugin, what about naming it "Collada4Games"? to make it very clear that the plugin intends to write files readable by game engines, not other DCCs.

@Juan Linietsky (reduz), re: tangents/binormals

Suggest either:

  • Write loops as-is.
  • Make a temp copy of the mesh, triangulate, write it... then remove.

Regarding reusable settings, you can do this in the invoke function, by reading data from the scene and writing when exec finished.

This could become a bit of a hassle though, if you add new settings, and load an old blend file, you have to manage that case.


Regarding the name, this isn't really spesific to games afaics, its just baking animation for convenient replay, maybe: Collada, Baked Animation ?

i started to test this with the old lightweight nine-blocks city model we used to test glTF via Collada about a year ago (succesfully basically). that glTF test is online at http://playsign.tklapp.com:8000/glTF-webgl-viewer/ (NOTE: apparently that old gltf viewer instance doesn't work anymore in current chrome at least, we'll check and update i figure .. anyhow the gltf json (which refers to the .bin) is http://playsign.tklapp.com:8000/glTF-webgl-viewer/model/oulu/mastersceneBlender.json )

now tried to export that with this addon and got a crash (a python exception, not blender crash) from a missing image - looking at the paths in the print i think because of linked library biz with relative paths going on. the scene is composed so that there is a Masterscene/ dir with Masterscene.blend which I think uses the data from the per-building dirs above.

strange enough, on a second attempt to verify this, it worked. i got a dae out - that's in:
https://drive.google.com/file/d/0B6NNZIuG0sb4VUQtY1JmR21HcEE/view?usp=sharing

the geom seemed to show fine in OSX Preview - textures not but that's not too uncommon. i didn't have time to test more yet nor look at the texture paths or anything.

the source blends are in a zip with the textures (and also the old original ogre3d export of the Masterscene.blend): (cc licensed)
http://www.ee.oulu.fi/~antont/download/oulu3dlive-lofi.zip

i'll check that dae more, perhaps try the gltf conversion for it (that uses opencollada, is chronos's collada2gltf tool) -- and can test again when you put the current version up.

Please could you give a hint when the updates are available? Then i will test the addon. thanks.

Campbell Barton (campbellbarton) lowered the priority of this task from Normal to Incomplete.Jun 3 2015, 1:41 PM

No response of this add-on for some months now.

Requests for fixes/improvements I made are quite reasonable, so marking as incomplete for until theres some response from the author.

No news since months here, archiving for now.

Note, I've put up a more in-depth review at D1787 (updated from upstream)