> For the complete documentation index, see [llms.txt](https://cgtoolbox.gitbook.io/cgtoolbox-docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://cgtoolbox.gitbook.io/cgtoolbox-docs/pcg-random-assemblies/intro.md).

# Intro

***

<figure><img src="/files/0mLbLp3bYASpWNRDTB6o" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/lQdehcV1Qfdh8NGdraAo" alt=""><figcaption></figcaption></figure>

***

<h2 align="center"><mark style="color:$success;"><strong>Available on fab :</strong></mark> <a href="https://www.fab.com/listings/a7b7beb6-a730-4f92-91c0-a1d5e5f5969e">HERE</a></h2>

***

<figure><img src="/files/iMrER1beCinVEXnvqIld" alt=""><figcaption><p>Simple PCG Random assembly.</p></figcaption></figure>

<figure><img src="/files/3L3UvuS60fWoLWz6BJ11" alt=""><figcaption><p>PCG Random Assemblies evalidated on larger scale (on point generated by a PCG Graph).</p></figcaption></figure>

***

{% embed url="<https://youtu.be/AyJu6rNHa1k>" %}

*Meshes used as example from* [*Quixel Medieval Banquet*](https://www.fab.com/listings/d422ac6c-ce50-4273-8d4a-2ac594a3a2b2) *(free on FAB).*

<mark style="color:$info;">Only the banquet table example is provided, the saloon (round) one is not !</mark>

***

PCG random assembly is a PCG and BP tool which allows the user to apply randomization on "assemblies" made out of Level instances (or Packed level instances) converted to PCG Data Asset.

The randomization is defined in data assets called "[Variant](/cgtoolbox-docs/pcg-random-assemblies/variant-definition.md)" and can be of type:

* Xform (Min/Max Offset, Rotation and Scale)
* Static meshes swap (from a weighted list)
* Removal probability (% of chance to remove a mesh)
* Custom float data (to drive material changes with per instance custm data)

Multiple variants can be assigned to different actors. The actor <-> variant assignation is tag based.

![](/files/o2QftfaTQIa3sU0dT6QC)  A blueprint actor "[BP Random Assembly](/cgtoolbox-docs/pcg-random-assemblies/bp-random-assembly.md)" is provided to easily read and apply randomization on those data.

![](/files/n8CKIFKAOUs8Hq33QRFW)  But it can be read as well in any custom PCG graph, to apply it on larger scale (Points sampled from Landscape, textures, meshes or any custom logic) using a custom PCG sub graph "[Process Random Assemblies](/cgtoolbox-docs/pcg-random-assemblies/pcg-process-random-assemblies.md)".

![](/files/tMzCXJpAhaa3PtuUSs9B)  There is a system of projection available, to project objects onto landscape or other objects, even during the variants processing.

For instance, projecting props on a table even if they are randomized in location rotation or scale.

***

An example level with a full Random Assembly set up is available here:

*<mark style="color:yellow;">/Game/PCGRandomAssembly/ExampleData/L\_RandomAssembliesExample</mark>*

<figure><img src="/files/XKeEt8NM0hLb5RY5fW5V" alt=""><figcaption></figcaption></figure>

***

&#x20;ℹ️ Plugin needed:

<figure><img src="/files/e2TJEPMdVfLBXOC9ZbQZ" alt=""><figcaption></figcaption></figure>

***
