COLLADA2GLTF icon indicating copy to clipboard operation
COLLADA2GLTF copied to clipboard

Move GLTF library to its own repository?

Open ziriax opened this issue 6 years ago • 14 comments

We're using the GLTF library in the Maya2glTF exporter. This library seems useful on its own, outside the scope of Collada2GLTF. Would moving the GLTF lib to a dedicated repository make sense?

ziriax avatar Feb 26 '18 14:02 ziriax

I think that it would; there has been some demand for a dedicated C++ glTF library.

It would need a different name though, since KhronosGroup/glTF already exists and is the specification. It could just be glTF-cpp, but I'm not really in love with that.

lasalvavida avatar Feb 26 '18 16:02 lasalvavida

Maybe glTF-serializer, or since it is written in c++, glTF-cpp-serializer?

ziriax avatar Feb 26 '18 16:02 ziriax

I don't know the specifics of the COLLADA2GLTF writer or the other C++ ones listed here but is it worth promoting and maintaining the COLLADA2GLTF writer on its own as a separate project when some of the others might already be suited?

pjcozzi avatar Feb 26 '18 22:02 pjcozzi

I didn't know these other libs, I assumed Collada2glTF was the best way to get started for writing another exporter. I'll look into the other standalone libs then. But why doesn't the Collada2glTF exporter uses any of these standalone glTF serialisation libraries? I guess these evolved independently?

ziriax avatar Feb 26 '18 23:02 ziriax

But why doesn't the Collada2glTF exporter uses any of these standalone glTF serialisation libraries? I guess these evolved independently?

That is correct.

Taking a quick look at those libs marked for 2.0:

  • TinyGlTF - can't write glTF 2.0

  • yocto-gltf - has a dependency on boost

  • glTF2-loader - only reads glTF, can't write it

  • gltfpp - again, can't write glTF

  • TGen - isn't a general purpose glTF serializer

  • Microsoft.glTF.CPP - if this is open-source, I can't find a link to the source code

is it worth promoting and maintaining the COLLADA2GLTF writer

One note, the GLTF sub-library in this project is completely separate from the COLLADA2GLTF writer. The writer just uses it for serialization.

If there is a good alternative to the serializer that I wrote here that is as feature complete, I'm happy to use it, but I haven't seen one.

lasalvavida avatar Feb 26 '18 23:02 lasalvavida

but is it worth promoting and maintaining the COLLADA2GLTF writer on its own as a separate project

And @pjcozzi, just to be clear, I'm not trying to trivialize the cost of this, and I acknowledge that I am probably at least a little bit biased towards the code that I wrote.

With that being said, I think there is space for a C++ glTF library that strictly concerns itself with serialization, deserialization and data structure optimization/manipulation without being part of some type of loader or renderer.

lasalvavida avatar Feb 26 '18 23:02 lasalvavida

But why doesn't the Collada2glTF exporter uses any of these standalone glTF serialisation libraries? I guess these evolved independently?

That is correct.

@Ziriax the first version of COLLADA2GLTF far predates any of the other C++ libraries, and even predates my involvedment with glTF. :)

With that being said, I think there is space for a C++ glTF library that strictly concerns itself with serialization, deserialization and data structure optimization/manipulation without being part of some type of loader or renderer.

@lasalvavida if there is "whitespace" here and you or someone is able to provide some level of maintenance, it could be a good thing. I will discuss with the working group today.

pjcozzi avatar Feb 28 '18 13:02 pjcozzi

Hi @lasalvavida @Ziriax - sorry for the slow response. Microsoft.glTF.CPP could still be worth a look as I don't think there is anything preventing you from using it in an open-source project. Of course, if you really feel strongly that the COLLADA2GLTF reader/writer should be separated, then go for it. We just don't want to fragment the glTF ecosystem too badly and make it hard to know which projects to select.

Also, thanks for all the great work recently on COLLADA2GLTF and Maya2glTF - these are really starting to get some attention. Congrats!

CC @sbtron

pjcozzi avatar Mar 07 '18 16:03 pjcozzi

Microsoft.glTF.CPP could still be worth a look as I don't think there is anything preventing you from using it in an open-source project

Licensing-wise maybe not, but their NuGet package only provides windows binaries. I would likely have to do something with Mono to even get it working on Linux/OSX. Also, since the source code is not public (as far as I am aware), switching to it would make my work on compiling COLLADA2GLTF with emscripten a complete non-starter.

If Microsoft is interested in making their library open source and cross-platform, that would be terrific, but if they aren't, then it isn't a suitable candidate for this project.

Also, thanks for all the great work recently on COLLADA2GLTF and Maya2glTF - these are really starting to get some attention. Congrats

Thanks!

lasalvavida avatar Mar 07 '18 16:03 lasalvavida

Also name idea: OpenGLTF, as in OpenCOLLADA.

lasalvavida avatar Mar 07 '18 16:03 lasalvavida

Licensing-wise maybe not, but their NuGet package only provides windows binaries

MaxOS libraries available in a separate nuget - https://www.nuget.org/packages/Microsoft.glTF.macOS.CPP/

If Microsoft is interested in making their library open source and cross-platform

The library should already be cross platform. We do plan to open source it but don't have an exact ETA for it.

sbtron avatar Mar 07 '18 20:03 sbtron

@robertlong made a great first step to use CMake for Maya2glTF, in order to make it multi-platform. Unfortunately it now has to use COLLADA2GLTF as an external project, so that feels very wrong, and results in long initial build times.

It seems the Microsoft GLTF SDK is now open source, so I might consider using this at some point.

ziriax avatar Aug 21 '18 13:08 ziriax

Unfortunately it now has to use COLLADA2GLTF as an external project, so that feels very wrong, and results in long initial build times.

I don't know exactly what you're doing, but if you aren't already, you should be able to call add_subdirectory in CMake on just the GLTF subfolder which will only build the GLTF lib and not the rest of COLLADA2GLTF.

It seems the Microsoft GLTF SDK is now open source, so I might consider using this at some point.

Exciting! Looks like it doesn't support glTF 1.0 export or Draco compression though which would be two pretty big steps back for this project, so we will probably stick with the implementation we have for now.

lasalvavida avatar Aug 21 '18 14:08 lasalvavida

@Ziriax, I left a comment on the Maya2glTF pull request that should help speed up your build

lasalvavida avatar Aug 21 '18 15:08 lasalvavida