Closed donmccurdy closed 6 years ago
Love this! Thank you for the imitative. We’ll have a chat at FB about using such information.
My current version of my Sketchup Exporter has generator as 'Sketchup glTF Exporter by Centaur' which would work for a registry.
Microsoft has a version number in theirs, 'Microsoft GLTF Exporter 2.2.8-b3', which might be problematic for your registry, but then you can't really report issues to Microsoft.
Any PRs to my fledgling repo would be welcome. 😁
Microsoft has a version number in theirs, 'Microsoft GLTF Exporter 2.2.8-b3'...
The Kupoman Blender Exporter does the same. I was planning to use globs, like Microsoft GLTF Exporter *
. We could also consider including an asset.generatorVersion
field in the specification while we're looking at https://github.com/KhronosGroup/glTF/issues/839, and asking tool authors to change their IDs, but it's all the same to me.
Since you are considering changing the asset field in the spec, why not add an asset.generatorIssues field so that the generator can include a url or email address?
We could do that yes, but I like that the registry could even include a homepage, description, etc. without adding any weight to the asset. And I sort of doubt generatorVersion
will happen either, since it assumes these tools are actually versioned (and do we require semver, or something?). So wildcards it is, heh. This also aligns nicely with proposed asset.license
, which would use SPDX IDs that can be mapped to more information about the license.
If there is a better format to follow for generator string, I would be happy to change blendergltf to follow it. I would like to retain the version information some where in the asset data.
Microsoft has a version number in theirs, 'Microsoft GLTF Exporter 2.2.8-b3', which might be problematic for your registry, but then you can't really report issues to Microsoft.
Users can report issues by using the feedback hub or the "Give feedback" buttons/links inside the apps.
If there is a better format to follow for generator string, I would be happy to change blendergltf to follow it. I would like to retain the version information some where in the asset data.
I agree, I'm glad you're including version information and would like more exporters to do this. For the moment there is no better place to put the version string. I'll put a note in #839 but I don't think it's a pressing issue.
Users can report issues by using the feedback hub or the "Give feedback" buttons/links inside the apps.
Is it possible to link through to the feedback hub app? Or I can just include some kind of text instructions if not.
Is it possible to link through to the feedback hub app?
I think it is possible through a URL, but I'm not sure how to do it yet. I think text instructions is fine for now. Use Apps
Category and Paint 3D
Subcategory in the Feedback Hub.
Killer idea @donmccurdy, let's do it!
If you are OK with it, I think it would be great for this to live in the Khronos GitHub organization.
@outofcontrol can transfer the repo if you agree.
Happy to transfer it over — @outofcontrol I don't have that permission on the GitHub organization but let me know if I should do anything here.
It'd be great if each software that alters glTF asset adds itself to generator
(or some other field).
E.g., a model has initially been generated by Unity exporter and then it has been optimized or compressed by some pipeline tool.
@lexaknyazev I was just wondering about that. Facebook will shortly tear apart and reassemble all uploaded glTF for internal distribution. Right now I replace the generator entirely, but adding makes some sense.
Additionally, should we advocate some common pattern for <identifier>
vs <version>
? Perhaps:
"asset": {
"generator": "Facebook Internal glTF Transmutator (0.99.3); Microsoft GLTF Exporter (2.2.8-b3)"
...
}
Alternately we can wait for 2.1 and do:
"asset" {
"generators": [{
"id": "Facebook Internal glTF Transmutator",
"version": "0.99.3"
}, {
"id": "Microsoft GLTF Exporter",
"version": "2.2.8-b3"
}]
}
I used a comma as generator separator in my plugin since it performs after another plugin.
"asset":{"generator":"Sketchup glTF Exporter by Centaur, PBR extension for SketchUp"}
@zellski The second option (with array) may work better for debugging purposes. It could have more fields like:
"asset" {
"generators": [{
"id": "Facebook Internal glTF Transmutator",
"version": "0.99.3",
"cmdline": "--option_a 24 --use_flag_b"
}, {
"id": "Microsoft GLTF Exporter",
"version": "2.2.8-b3",
"arch": "arm64"
}]
}
Imo, comma-separated string is a fine start for now.
Could something like this also be used/adapted for importers/apps that can open glTF? I'm working on a new site for my exporter and it would be neat to show an automated up-to-date list of apps on my site that can import glTF models exported with my exporter. I often get the question of "but in what can I use these files" and something like this (but the other way around) could be the answer.
I'm not crazy about the idea of comma-separated generators in existing field, to me that seems similar to other requests in #839 that can be handled with asset.extras.generators = [...]
for now and addressed in a future spec update or extension later.
@Marlamin what kinds of importers/apps do you have in mind? The README of this repo lists many tools, varying from optimizers, validators, engines, to end-user applications. The current/easy option would be to link to any sections there that seem appropriate.
Not sure how helpful a flat JSON list of all of those tools would be, without metadata to filter it down somehow? Depends on your use case I guess but I imagine you want to list a few good examples rather than an exhaustive list of things that read glTF.
@donmccurdy Mostly 3D applications (some of which hopefully getting official support at one point) such as Blender, 3DS Max, Cinema 4D, Paint 3D etc. Stuff end-users/non-devs can use to manipulate/use models in. I guess you're right in saying that'll vary per use case (even within my userbase) and it'll be tough to make a good list for everyone without having a ton of filters/metadata. Linking to the readme should be fine as an initial solution but a lot of it is stuff meant for devs, not users. I'll think about this some more and maybe get something going myself as I'll need such a list at one point anyways (when glTF adoption grows beyond the list in readme, which I feel it might soon). Great idea, can't wait to get my exporter to a state where it's usable enough to be added to this list. :)
Moved to KhronosGroup/glTF-Generator-Registry (thanks @outofcontrol!), and open for pull requests. Will likely publish this to NPM when the schema is stable.
when glTF adoption grows beyond the list in readme, which I feel it might soon...
Yeah, keeping the README up to date with posts from https://github.com/KhronosGroup/glTF/issues/1058 is already pretty challenging. Making a useful and well-organized list of tools beyond generators is a harder problem. 😅
Registry is up and useable, and I'm using it to provide links to docs and bugs in https://gltf-viewer.donmccurdy.com/ now. The list is not exhaustive, but covers everything I could find quickly. I think this bug can be closed, but PRs and suggestions are still welcome.
@donmccurdy can you please add a link to the new repo from the main glTF README.md?
Had the crazy idea of creating an open, machine-readable registry of tools that write glTF, indexed by
asset.generator
ID globs. I'm thinking of using it so that when users drag a model into my viewer and validation fails, I can show a URL where they should report the bug. Someone using a wrapper around other tools (web version of COLLADA2GLTF, for example) may not know where to report the problem otherwise.Since other tools (validator, VSCode extension, Facebook?) could potentially use this, thought I'd put this in a new repository and publish to NPM later:
https://github.com/donmccurdy/glTF-Generator-Registry
If there's interest in making it more official-ish, I'm also happy to transfer it over as KhronosGroup/glTF-Generator-Registry.