# Unreal-Material: Stylized Rock (Triplanar / World-Aligned) Ziel: **ein** Material fuer **alle** Rocks. Dank Triplanar (world-aligned) wird die Textur nach Weltposition projiziert – unabhaengig von den UVs jedes einzelnen Steins. Du musst also nichts pro Rock texturieren. Die vier Maps kommen aus dem Addon (Panel *Rock Gen → Textur-Bake*): | Datei | Inhalt | UE sRGB | Compression | |------------------|-------------|---------|--------------------| | `*_BC.png` | BaseColor | **an** | Default (BC7/DXT1) | | `*_N.png` | Normal | aus | **Normalmap** | | `*_R.png` | Roughness | aus | Default/Masks | | `*_AO.png` | AO / Cavity | aus | Default/Masks | > Die Normal Map ist OpenGL (+Y). In UE beim Import **„Flip Green Channel"** > aktivieren (oder gruen einmalig invertieren), sonst wirkt das Relief eingedellt. --- ## 1. Texturen importieren 1. Die vier PNGs in den Content Browser ziehen. 2. Fuer `_N`: Compression = **Normalmap**, sRGB aus, **Flip Green Channel** an. 3. Fuer `_R` und `_AO`: sRGB **aus** (lineare Daten), Compression „Masks" ist ok. 4. `_BC`: sRGB **an** (Standard). *(Optional, spart Samples: `_AO`, `_R` und ggf. Metallic in eine „ORM"-Textur packen – R=AO, G=Roughness, B=Metallic. Dann unten die einzelnen Sampler durch einen ORM-Sampler + Component-Mask ersetzen.)* --- ## 2. Material anlegen Neues Material `M_Rock_Stylized`, *Two Sided* aus, *Shading Model* Default Lit. ### Parameter (fuer Instanzen) - **ScalarParameter** `WorldSize` (Default `256`) → Weltgroesse einer Kachel in cm. Kleiner = Textur wirkt groesser/detaillierter. - (optional) **ScalarParameter** `NormalIntensity` (Default `1.0`). ### BaseColor / Roughness / AO (World Aligned Texture) Fuer jede der drei Maps einen **`WorldAlignedTexture`**-Node: ``` TextureObject(T_..._BC) ─┐ WorldSize (Scalar) ──────► WorldAlignedTexture ─► XYZTexture ─► BaseColor ``` - `WorldAlignedTexture` → Eingang **TextureObject** = die jeweilige Textur (als *TextureObject*-Node, nicht *TextureSample*). - Eingang **WorldSize** = `WorldSize`-Parameter. - Ausgang **XYZTexture** verbinden: - `T_..._BC` → **Base Color** - `T_..._R` → **Roughness** - `T_..._AO` → **Ambient Occlusion** ### Normal (World Aligned Normal) Normalen brauchen den speziellen Node **`WorldAlignedNormal`**: ``` TextureObject(T_..._N) ─► WorldAlignedNormal ─► XYZNormal ─► (FlattenNormal / Normal) WorldSize ─────────────► ``` - Ausgang **XYZTexture (Normal)** → **Normal**. - Intensitaet optional ueber `FlattenNormal` (Flatness = `1 - NormalIntensity`) oder einen Multiply auf den XY-Anteil. > `WorldAlignedTexture`/`WorldAlignedNormal` haben einen Haken > **„Use World Space Normal to Blend"** bzw. eine `WorldSpaceNormal`-Eingabe – > Default passt fuer Rocks. Der Node blendet automatisch die drei Projektions- > achsen (Triplanar). --- ## 3. Feinschliff (optional) - **Farbvariation pro Instanz:** BaseColor mit `PerInstanceRandom` * einer leichten Tint-Range multiplizieren → jeder Rock leicht anders, gleiche Textur. - **Nahtlos in der Hoehe:** Da die Bake-Textur bereits nahtlos tilet, entstehen bei Triplanar keine sichtbaren Kanten. - **LODs:** Beim FBX-Import „Import LODs" an – das Material gilt automatisch fuer alle LOD-Stufen. - **Lightmaps:** Der UV1-Kanal (Lightmap) aus dem Addon wird von UE fuer statische Beleuchtung genutzt; das Triplanar-Material nutzt ihn nicht, das ist korrekt so. --- ## Kurzfassung der Verdrahtung ``` WorldSize(Scalar) ├─► WorldAlignedTexture(BC) ─► XYZTexture ─► BaseColor ├─► WorldAlignedTexture(R) ─► XYZTexture ─► Roughness ├─► WorldAlignedTexture(AO) ─► XYZTexture ─► Ambient Occlusion └─► WorldAlignedNormal(N) ─► XYZNormal ─► Normal ``` Ein Material, liegt auf jedem Rock. Fertig.