Blender Exported GLB to Three.js: Multiple Geometries for Single Cube with Multiple Materials?

Rather - there’s no case for it. This notation is mostly legacy and has not much practical use - with GLTFLoader or without.

WebGL can bind one material shader at a time - so whether you’ll go with:

Group ->
  Mesh_A ->
    Geometry_A
    Material_A
  Mesh_B ->
    Geometry_B
    Material_B

or

Mesh_AB ->
  Geometry_AB
  [ Material_A, Material_B ] 

That’s still going to be 2 draw calls on two separate geometry+material pairs (in the second case you’re just mapping the materials using BufferGeometry.groups instead of actual groups.)

The advantage of the first approach (the one also used by GLTF) is that you can quite way simpler modify geometry+material pairs (their geometries, positions, visibility etc.) at any time using just the Mesh API, without the need of modifying the position attribute of BufferGeometry by hand.

2 Likes