0) Multimesh
is not the same as MeshInstance
. The former refers to usage of hardware-instancing, which is the ability to draw many times the same mesh at low cost in a single draw call.
1) Yes, you can do this with ImmediateGeometry
, SurfaceTool
, or generating the vertex and index arrays directly
2) It's you to decide. Generating one mesh will make... one mesh. You can use the same mesh on multiple MeshInstances
, or have a unique mesh for all instances.
3) You can have different materials per MeshInstance
with the material_override
property, which will override any eventual material found in the mesh used by the instance. So you can re-use the same mesh on multiple instances and still be able to have different materials (only supports one override though).
4) Using SurfaceTool
, ImmediateGeometry
or Mesh
API is up to you. ImmediateGeometry
is good for geometry that changes every frame. SurfaceTool
is good for generating an actual mesh that won't change later on. Using the Mesh
API directly is good if it's easier for you to generate vertex arrays, normals and indices manually.