Currently trying to place hundreds of objects in a scene as Unity Prefab instances, which is not directly supported through FBX export/import. I’m positioning and rotating the instances as points with Blender geometry nodes, so Blender is the source of truth for the points, and Unity is the source of truth for the prefabs. The project is a VRChat world, so letting Unity manage the prefab instances is important for performance.
My hacky Blender workflow, anytime the points need to change:
- Manually set geometry nodes to “Use Points” using a switch in every node setup.
- Manually delete the old ‘real’ instances.
- Manually “Make Instances Real” to create the separate point objects.
On Unity side (imported FBX) it’s all automatic. A script plops prefabs onto the points based on their name. It’s using OnPostprocessModel to trigger whenever the FBX changes. This works okay, and I can move the prefabs around in Unity by changing the geometry nodes in Blender. I can share the C# for Unity if someone wants, but it’s not too special.
The drawback is that the objects are not visible in Blender anymore, it’s just a mess of points everywhere, so the scene is kind of useless for review/rendering in Blender. I’m using a Switch node on the various geometry node setups to pick between making points and making meshes, but this means a lot of clicks to switch the whole scene from points to meshes or back.
Questions:
- Could a Driver control the switch parameter for everything at once? Not sure how those work yet.
- Is anyone else managing lots of prefabs in a game engine with Blender? What’s the secret?
Attaching a view of some tables and chairs setup, with the “Use Points” switch parameter controlling whether to show points or meshes. Also shows the inactive Collection with source objects that I’m trying not to export:
Thanks for reading and good day.