| Attention | Topic was automatically imported from the old Question2Answer platform. | |
| Asked By | Foxcataria |
Hi community ![]()
I have a question about using MultiMesh with a different material per instance.
Problem:
Let’s say I want to draw a chunk that contains 16x16x256 cubes like in Minecraft.
The way I actually do this is by using one MultiMeshInstance node with a MultiMesh assigned to it. The instance_count of the appropriate MultiMesh is set to 65536. The mesh of the MultiMesh is set to an ArrayMesh that represents my cube. After setting all things up, I can draw exactly 65536 cubes with only one draw call which is what I wanted so far. But now comes the problem: Assigning materials to the cubes.
First I only wanted every instance to use the same material. In this case a simple SpatialMaterial so that all cubes look like grass blocks. This was very easy so at the end all 65536 cubes looked like grass blocks. To achieve this I used the surface_set_material() function of the ArrayMesh instance that represents my cube.
Then I wanted two different block types within my chunk, a grass block and a stone block. And there is my problem: I can not figure out how to set a material per instance. Currently I have to set the material directly within the ArrayMesh instance that represents my cube. Which leads to only grass blocks or only stone blocks within my chunk…
Question:
Is there a way to have one MultiMeshInstance node with one MultiMesh assigned to it and a different material per instance of the MultiMesh’s mesh?
So that I can just say something like:
# No really code:
MultiMesh.mesh = cube
MultiMesh.instance_count = 65536
MultiMesh.set_instance_material(0, grassMaterial)
MultiMesh.set_instance_material(1, stoneMaterial)
...
Or is there another way to achieve this?
I hope that I presented my problem in a way that it’s understandable what I try to achieve.
If you need more detail then just let me know.
And sorry for my english. English is not my native language ![]()
Thank you! ![]()
You can apparently do this with SurfaceTool if you want to generate your own meshes but I am not sure about MulitMesh. I would like to know as well if someone has figured it out!
path9263 | 2018-03-13 06:46
This is interesting, can u share a sample code / demo version of ur game ?
GameVisitor | 2019-06-09 08:57