TLDR: Can skinned meshes be used to replace a high number of instances.
I have a realtime tree/rock/etc generation system, with a fairly high render distance [8192 studs].
I’ve done my best to optimise it using a number of methods, but there is about 20k instances in the most dense regions.
Q1: Instead of using an instance per tree, could I instead use a skinned mesh containing roughly 40 trees, and position their bones so they appear as single instances?
I’m aware this could break clusters [which weren’t working well anyway :p] and collisions.
Q2: Are there any other considerations or bugs that might occur?
Thanks yall!
Edit: should probably say, I could test this myself, but it would require an intensive rewrite of the system.
You probably could use skinned meshes and just position their bones around. However this sort of method will also offer you like 0 power to actually interact in any meaningful way with the trees. Along with the skinned meshes being able to do so much before you’re just working with a grid of trees in a single mesh. You could probably get something actually working with that but again, roblox itself may not act a little weird with that setup but about this im not entirely sure.
Some things im more sure about that i can tell you that also aren’t exactly a solution to your exact problem (but you probably also know off already) is to just kinda use lower poly to straight low res pngs of the far away trees and just switch around them based on your distance to them.
So ya think its feasible? ^^
Already I’m unable to interact with the trees as they are SpecialMeshes, this allows me to quickly switch between low poly trees and very low poly trees.
Well i mean sure go ahead! If that’s the case then im guessing there isn’t a lot for you to lose in this situation! You could perhaps even document such attempt at instance optimizations even!
I decided to test this myself and the results are promising! =3
Summary
For my purposes, grid trees are far more performant. They benefit from higher performance while spawning, idling, and removing. I would recommend using the place [see bottom] to customize the test to better meet your usage requirements.
Using traditional MeshPart Trees, and Skinned Mesh grids of 49 Trees each, 9800 trees were spawned.