Download

How to manually place individual instances in a scene?

So I want use the HierarchicalInstancedStaticMesh component to place a large amount of static meshes in a scene, but I want to place them in the scene manually, not procedurally.

I know you can place them manually in the blueprint viewport, but I want to place them in the main scene viewport.

I also know about the foliage tool, but I need the objects to snap and align to the grid, and the foliage tool does not seem allow for ‘Snap Origin to Grid’.

Only way i know how to do this is a little cumbersome but in your BP, create an exposed array of transforms with the 3D widget exposed. Then in your construction script, set the transform of your instances with the values in your transform array.

Very cumbersome really. I don’t think this is possible because in Unreal instances aren’t treated as a first-class feature. Most of the things that can be done easily with a normal object should be possible as easily with an instance.

There is a plug in by Rama that converts regular static meshes to instances. You could try searching for that and seeing if that does what you are looking for.

Just watched a video on it, seems very limited. To edit a single instance all the instances must be converted back to individual static meshes, so performance in the editor would be bad. Doesn’t seems like the individual instances can be animated, including in physics simulations. Not sure whether LOD works well with it.

Having said that, I will be checking these plugins out:

Instances are not intended to have that much flexibility. The whole point is that are direct exact copies of the original to reduce the number of draw calls. Maybe instances are not what you are looking for.

I suppose you are referring to animating instances? If so, there is no reason why the transforms of an instance couldn’t be animated because it would still be a direct copy of the original geometry.

Had a look at the available plugins, but none of them seems to meet my requirements, which are:

  • Instances.
  • Animation of instances.
  • Rigid-body simulation of instances.
  • Grouping of instances, and the ability to hide groups of instances.
  • Attachment of instances to skeletons, and animation of skeletons.

Edit: Updated requirements:

  1. Quick manual placement of instances.
  2. Transform animation of instances, which would be translation, rotation, and scaling.
  3. Rigid-body transform simulation of instances, again translation, rotation, and scaling.
  4. Grouping of instances.
  5. Hiding of groups of instances.
  6. Copying of groups of instances.
  7. Conversion of groups of instances to a single mesh.
  8. Attachment of instances to skeletons, and animation of skeletons.

To simulate physics on instanced meshes you’ll have to modify engine code; and then the cost will be the same thus there wouldn’t be a reason to use instancing to begin with.

If instances can be animated without additional cost, and by that I mean basic transformation animations such as translation and rotation, then why can’t they be rigid-body simulated without additional cost?