Summary
A Cloner placed in a Motion Design scene renders correctly in the editor viewport and in a game world (Standalone / nDisplay), but renders nothing when the page is taken to air through a Broadcast channel. The same content renders correctly in 5.7.4.
What Type of Bug are you experiencing?
Virtual Production
Steps to Reproduce
- New project, 5.8.1. Enable Motion Design.
- Create a Motion Design level. Add a Cube, add a Cloner, parent the cube to the Cloner. Grid layout, e.g. 1 x 5 x 5.
- Broadcast: one channel with the “Display” media output. Start the channel.
- Rundown: one page pointing at the Motion Design level, assigned to that channel. Take In.
Expected Result
The clones appear on air (they do in 5.7.4).
Observed Result
Nothing is drawn. The source actors stay visible instead.
Affects Versions
5.8
Platform(s)
Windows
Additional Notes
What we measured (5.8, from a plugin ticking in the channel world)
Everything upstream of drawing is correct:
- attachment tree populated, 5 meshes held by the cloner;
- 2500 particles simulated (GPU), grid parameters correct (1x50x50, spacing 24);
- GPU compute script: ready, compiled, nothing pending;
- mesh renderer enabled, resolving User.MeshArray to the DI that does contain the meshes;
- component registered, visible, with a valid scene proxy;
- materials have “Used with Niagara mesh particles”.
Nothing is logged when it fails to draw.
Two differences found in the source
- AvalancheEffectorsSceneTreeResolver::GetDirectChildrenActor returns the children from the Motion Design outliner and reports success even when the outliner is empty, so FCEClonerAttachmentGroupBehavior::GetOrderedChildrenActors never falls back to GetAttachedActors. In the channel world the outliner is empty, so the cloner ends up with an empty attachment tree.
- UCEClonerComponent::GetMeshCount changed from MeshRenderer->Meshes.Num() (5.7) to the mesh array data interface (5.8), and CEClonerLayoutBase now clears MeshRenderer->Meshes on purpose. In the channel world the meshes never reach the renderer through that path.
Side issue found while reproducing
On a clean 5.8 project the Broadcast configuration cannot be re-read: JsonValueToUProperty - Unable to import JSON object into property MediaOutputs (property is not instanced). The channel then has no output and Take In crashes on an invalid shared pointer inside AvalancheMedia. Projects whose MotionDesignBroadcastConfig.json is read-only fall back to the legacy XML and are unaffected.