Dataprep Editor Operation Replacing Actor with Blueprint Hierarchy Not kept when commiting

I am struggling to work out what I am doing incorrectly while adding blueprint actors to the scene in a Dataprep Editor Operation Blueprint that I am in the process of creating.

Prior to going any further, a recipe with substitute actor will not work as I need it done within the blueprint.

Key actions of the blueprint I am running:

  • Looks for any actor with a single static mesh and re-parents the static mesh actor to its original parents parent, then removes the actor which is not empty from the scene graph.

  • If the actor has multiple SM actors, then creates a new actor which has multiple SM components for all the SMs. The original actor and its child SM actors are removed from the scene graph and the new BP actor is placed in scene graph where the original actor was.

Now to the meat:
I can successfully import the CAD directly into the Dataprep asset:

Once executing my recipe, the scene graphs looks as follows:
Execute
Note: Z713 has the correct blueprint and the properties in both actors are correct when inspecting in the Dataprep asset.

Committing the executed Dataprep asset yields the following within the level:
Commit as seen in level generated
Note: the omission of one of the Z713 actors. It is not always the first actor that is removed though. It does vary on what I am importing, sometimes the actor is the only one of its type.

Some extra fun though!! When dragging in the Datasmith scene created by the dataprep asset, the following scene graph is created:
Commit as seen when dragging in the datasmith scene
Note: I cannot use this as the blueprint actor properties do not seem to be present, having been replaced with a basic actor instead of BP_DP_Multibody. That’s another issue I have not focussed on just yet. I just bring this up to say that the scene graph generated by Dataprep does seem to be correct.

Nodes being used to create the actors:
I am using the “Create Actor” from dataprep > Editing Operation.
I originally used “add asset” from dataprep > Editing Operation to make a copy for the second instance of Z713, but since moved to “Create actor” and copying over the initial conditions. I have checked, as it also shows in the scene graphs, that I am not replacing my original by mistake. Datasmith unique ID is also unique for the actors. That caught me on the SMs before. Each create actor also has a different name, as well as me setting the label to the same.

What am I doing incorrectly?

Is there another means of getting the actor in?

I am having the same issue with a blueprint for creating instanced static meshes. It seems the issue is with the fact that they are new actors. I am ensuring “modified actors” is being overused too to ensure that everything is caught as I do see the addition of an actor as being a visual change.

Any help would be greatly appreciated :slight_smile:

When you generate a scene through Dataprep we recommend that you use the generated level as sublevel. The drag and drop of the datasmith scene is not working as expected (compare to a datasmith scene generated through straight datasmith import)

Sorry for the late reply. Was on holiday :slight_smile:

As mentioned in my original post. I brought up the “dataprep scene” asset to show that the hierarchy I am making is correct. Nothing more.

To directly answer the content in your post and link it to my first post, the issue is within the level generated upon Dataprep commit.

Having had time to think, I created a “simple” test assembly with test meshes. The issue I have seems larger.

If I replace an actor with my own custom actor within a Dataprep operation, the hierarchy breaks within the Dataprep created level. All actors attached to the replaced actor end up being attached to the level root instead of the replaced actor.

The scene graphs are correct after executing the recipe and the hierarchy is correct in the Datasmith scene (albeit with previously aforementioned shortcomings).