This is the topic for changes to the Exporter for Blender 2.93 LTS. At this point, I am just getting my thoughts together. To get this out of the way, any changes to the Blender Python API, since 2.83 LTS, are probably going to an throw exception. Any found will be changed.
That just leaves enhancements. My time budget for this is very small. I have not seen much in the way of Blender changes which easily translate, with the exception of using the Emission & Emission Strength field on the Principled node.
@gryff, I have doubts about adding shapekey animation. I am going need to a .blend that has some animation in it, made as simple as possible, but has simultaneous changes of multiple keys in the animation. It is also important that some faces overlap on these keys, like on a mouthOpen & mouthWide key pair. I am not convinced BJS truly supports composite poses of shared faces. You or I can then export using GLB exporter & see what happens before any decision is made.
I might look into using limited dissolve to implement LOD from Blender. This is to automate the doing of multiple meshes in different resolutions in the exporter.
The trigger distance would also get saved along with the % dissolve of each resolution in the .blend file. This could both simplify doing LOD, and be able to still edit the mesh later without having to remember the settings or do all the lower res meshes all over again manually. Would also remove the need for JS code to establish the LOD relationship, as it would be in the export file.
I am going to support writing out both albedo color and texture for a material. Right now the color is defaulted on (white) when a diffuse texture is also encountered. Blender does not actually allow this with a single Diffuse or Principled node, but who cares the data for the color is still there, when a texture is connected.
There will be an opt in checkbox in export material properties to turn this on. There is also a way with 2 Diffuse nodes that Blender does support, and it should also work. Here shows all 3. The yellow fields are doing double duty:
Speaking of export materials properties, there are a bunch of things inside of PBR materials that I have never seen before. Think about adding some of these:
- directIntensity
- specularIntensity
- linkRefractionWithTransparency
- useSpecularOverAlpha
- lightFalloff
- useRadianceOverAlpha
- useParallax
- useParallaxOcclusion
- parallaxScaleBias
- disableLighting
- forceIrradianceInFragment
- twoSidedLighting
- useAlphaFresnel
- useLinearAlphaFresnel
I do not understand all these, and I also left some off. There are a bunch of of camera related properties having to do with contrast, exposure, & color grading. No clue how a camera can effect a material.
While there is no direct space problem having everything as an export property, this is a lot.