# Intro

***

<figure><img src="https://3339851461-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FNuEJQQamuWymLVauXWDL%2Fuploads%2F9UkrlZJkwBTKBPdjtvQm%2FT_PCGRandomAssemblyIcon.png?alt=media&#x26;token=cad790d4-e29c-4b05-a429-943cc8d28944" alt=""><figcaption></figcaption></figure>

<figure><img src="https://3339851461-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FNuEJQQamuWymLVauXWDL%2Fuploads%2FQCwZxWUfxvDHqZ3mCxIL%2Fpcg_random_assembly.png?alt=media&#x26;token=a6210d0d-c9f9-4a67-ab21-d01e9a174752" 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="https://3339851461-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FNuEJQQamuWymLVauXWDL%2Fuploads%2F2nLMp8BMlNIvf1VpA9XN%2FPCGAssemblyThumbnail.gif?alt=media&#x26;token=92e87357-9235-468d-829d-176f1c917d4e" alt=""><figcaption><p>Simple PCG Random assembly.</p></figcaption></figure>

<figure><img src="https://3339851461-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FNuEJQQamuWymLVauXWDL%2Fuploads%2F705VNUbZ3j9B6Adg9E41%2FPCGAssemblyThumbnail2.gif?alt=media&#x26;token=750c2051-c0aa-4e09-86a9-5d9786bec96f" 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](https://cgtoolbox.gitbook.io/cgtoolbox-docs/pcg-random-assemblies/variant-definition)" 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.

![](https://3339851461-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FNuEJQQamuWymLVauXWDL%2Fuploads%2FcxiyoLHmsAq4iN4ziYia%2Fimage.png?alt=media\&token=7b9a0634-7034-4c01-ab4a-b034494b72f5)  A blueprint actor "[BP Random Assembly](https://cgtoolbox.gitbook.io/cgtoolbox-docs/pcg-random-assemblies/bp-random-assembly)" is provided to easily read and apply randomization on those data.

![](https://3339851461-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FNuEJQQamuWymLVauXWDL%2Fuploads%2FLtcOFtG6QAJBCrUC67Oz%2Fimage.png?alt=media\&token=f2b58e33-9f36-43e1-b8d0-16802ab48c18)  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](https://cgtoolbox.gitbook.io/cgtoolbox-docs/pcg-random-assemblies/pcg-process-random-assemblies)".

![](https://3339851461-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FNuEJQQamuWymLVauXWDL%2Fuploads%2FKjFcgGDgpwNzar4RmMdO%2Fimage.png?alt=media\&token=389bf970-aeef-4483-b7f9-d3d5db7262d6)  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="https://3339851461-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FNuEJQQamuWymLVauXWDL%2Fuploads%2F7QWhOmYFb5MHMuFmJOuO%2Fimage.png?alt=media&#x26;token=a2293b79-476c-4ffd-9d5f-b43cc730f101" alt=""><figcaption></figcaption></figure>

***

&#x20;ℹ️ Plugin needed:

<figure><img src="https://3339851461-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FNuEJQQamuWymLVauXWDL%2Fuploads%2FK9gtv85wFxNQHowRVJ1J%2Fimage.png?alt=media&#x26;token=372e5524-6536-4d44-a735-455759b28ae5" alt=""><figcaption></figcaption></figure>

***


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://cgtoolbox.gitbook.io/cgtoolbox-docs/pcg-random-assemblies/intro.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
