Best way to sync lots of point instance prefabs between Blender and Unity?

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.

Using a Driver helped to control whether Blender was displaying the points or the meshes.

To control boolean values all at once:

  • Create a new “Empty” object to hold the source value. Using an Empty object so it won’t add any mesh data to the export. We’re using a “Custom Property” so it can really be anywhere, but a separate object makes sure it won’t get lost.
  • Add “Custom Property” as Boolean type. Add Name and Description to remind yourself (or collaborators) what it is for.
  • Right click the custom property and select “Copy as New Driver”.
  • Go to wherever field you want to use this value and select “Paste Driver”.

Tried adding the source value to “Add to Quick Favorites”, but it only works when the source object is selected? Not sure what the solution is here, maybe some python to set the value from some other menu?

Limitation: Driver doesn’t work across linked blend files, not sure how to handle that either.