• What would you like to see in an avatar interchange format/API?
    6 replies, posted
It's just a thought I had a few days ago, and this seems to be the most appropriate forum for it (since I'm mostly looking for something from the user perspective). With 3D avatars possibly (eventually) becoming somewhat relevant again due to VR apps, which features would you like to be able to carry over between them? I don't think there's currently any comprehensive and open standard for this, though I could be mistaken.
FBX is proprietary and pretty hard to support from anything that's not C++, so that's out unfortunately. I'm not sure who had the idea to use JSON (in glTF) for considerably large numeric data, but not even if the JS ecosystem is that a sensible idea. There's a binary extension though and the limited feature set is probably not a terrible idea, in some ways. I'll have to read through the actual specification.
glTF is good in theory, but in practice very hard to write your own loader for. Either you support a small subset of it and it's basically useless as nothing is compatible with it and you still have to re-convert models, or you get stuck in an endless loop implementing the textual format, the binary format, the extensions.... If there's no plan on supporting animations, i recommend the simplest possible format - obj.
Whilst the discussion is devolving into 3D mesh formats, I was pretty fond of this format suggested by a user here a while back. https://github.com/zvxryb/Binary-Static-Mesh Of course, the world needs another binary mesh format like it needs a hole in the head... But it is quite irritating that there is nothing as ubiquitous and simple as OBJ, which isn't a massive pain in the butt to load.
Personally I'm a fan of exacerbating the standards problem by writing another one. At the core of things, there really isn't much you need to support for a simple biped format. Vertices, faces, UV coordinates, material resources, bones and weights, and animation keyframe data is really the bare minimum. You could write a pretty bare-bones binary format to support that, and then just make it open and documented so that people can easily load it as necessary. Why there isn't such a format already available (that I know of) is honestly really surprising to me.
I think one reason is that complex-ish asset interchange was just never relevant until now. In a (more directly designed ) game, the overall art style is key to what avatars look like. Fully custom avatars with a low barrier for entry/that aren't made specifically would look "off". Something big and centralised like Second Life has (comparatively) really freeform avatars, but benefits more from being closed-off than allowing good compatibility in that regard. With GMod for example it actually makes sense to have something like this, though, since the game has a bunch of slightly different styles mixed into each other anyway and users control instances. VR Chat appears to be similarly random, though it has a much more cartoonish style by default it seems. Many assets would look more OOP than usual when converted between them. Of course both of these started pretty obviously as programmer art to a large extent, and largely went with "whatever the engine uses" for their file formats. (Major props to Garry for making the custom addon system here. VR Chat uses Unity packages and a commercial animation system, which is downright awful from a low-level modder's perspective.) I'm actually pretty curious what S&box will do about this. From what I've read so far (which is likely outdated), it'll most likely outright let users use executable code for this purpose, at least serverside.
Sorry, you need to Log In to post a reply to this thread.