Rock Generator 2.7.0: Plattenstil nach Genshin-Referenz
Der User hat Genshin-Screenshots als Stilvorlage geschickt. Auswertung: die
Felsen dort bestehen aus WENIGEN GROSSEN, fast leeren Platten mit SCHMALEN
DUNKLEN FUGEN. Das Detail steckt in der Fuge, nicht in der Flaeche.
Meine Textur machte das Gegenteil - viele kleine Zellen mit breitem Verlauf ueber
die ganze Oberflaeche. Deshalb half weder TexScale noch die Zellgroesse: beide
haben nur am Symptom gedreht, waehrend das Muster grundsaetzlich zu dicht war.
Neue Regler:
- "Fugenbreite" (Default 0.05): Breite des Uebergangs Fuge -> Flaeche. Klein =
harte Fuge und flache Platte. War vorher fest auf 0.32 = weicher Verlauf ueber
die ganze Zelle ("Golfball").
- "Platten flach" (Default 1.0): 1 = Flaeche nahezu einfarbig, Kontrast wandert
komplett in die Fuge.
- "Zellgroesse" heisst jetzt "Plattengroesse" (Default 0.7 statt 2.5) - kleiner
= GROESSERE Platten. Der alte Name war irrefuehrend.
Grundton auf helles warmes Grau, AO-Staerke 1.0 -> 0.55 (weniger Unruhe).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -34,6 +34,12 @@ Abgestimmt auf `A:\eco\EcoGame` (UE 5.8). Kurzfassung:
|
|||||||
- **AO/Cavity wird ins Albedo multipliziert** (Option „AO ins Albedo einrechnen",
|
- **AO/Cavity wird ins Albedo multipliziert** (Option „AO ins Albedo einrechnen",
|
||||||
Staerke regelbar). Dunkle Ritzen und helle Platten stecken im Farbbild — das
|
Staerke regelbar). Dunkle Ritzen und helle Platten stecken im Farbbild — das
|
||||||
traegt den Stylized-Look. Separate Rough-/AO-Paesse sind Default **aus**.
|
traegt den Stylized-Look. Separate Rough-/AO-Paesse sind Default **aus**.
|
||||||
|
- **Plattenstil (Genshin-Referenz):** Die Textur besteht aus **wenigen grossen,
|
||||||
|
fast leeren Platten** mit **schmalen dunklen Fugen** — das Detail steckt in der
|
||||||
|
Fuge, nicht in der Flaeche. Regler: `Plattengroesse` (kleiner = groessere
|
||||||
|
Platten), `Fugenbreite` (klein = harte Fuge, flache Platte), `Platten flach`
|
||||||
|
(1 = Flaeche nahezu einfarbig). Ein dichtes Zellmuster ueber die ganze
|
||||||
|
Oberflaeche erschlaegt die Form und passt NICHT zu diesem Look.
|
||||||
- 1024 px reicht fuer stylized Formen.
|
- 1024 px reicht fuer stylized Formen.
|
||||||
- Tileable (4D-Torus) passt zum triplanar mappenden Master-Material.
|
- Tileable (4D-Torus) passt zum triplanar mappenden Master-Material.
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
schema_version = "1.0.0"
|
schema_version = "1.0.0"
|
||||||
|
|
||||||
id = "stylized_rock_generator"
|
id = "stylized_rock_generator"
|
||||||
version = "2.6.0"
|
version = "2.7.0"
|
||||||
name = "Stylized Rock Generator"
|
name = "Stylized Rock Generator"
|
||||||
tagline = "Batch-Generator fuer stylized Rocks mit UE5-Export"
|
tagline = "Batch-Generator fuer stylized Rocks mit UE5-Export"
|
||||||
maintainer = "D4rkst3r"
|
maintainer = "D4rkst3r"
|
||||||
|
|||||||
Vendored
+4
-4
@@ -7,7 +7,7 @@
|
|||||||
"id": "stylized_rock_generator",
|
"id": "stylized_rock_generator",
|
||||||
"name": "Stylized Rock Generator",
|
"name": "Stylized Rock Generator",
|
||||||
"tagline": "Batch-Generator fuer stylized Rocks mit UE5-Export",
|
"tagline": "Batch-Generator fuer stylized Rocks mit UE5-Export",
|
||||||
"version": "2.6.0",
|
"version": "2.7.0",
|
||||||
"type": "add-on",
|
"type": "add-on",
|
||||||
"maintainer": "D4rkst3r",
|
"maintainer": "D4rkst3r",
|
||||||
"license": [
|
"license": [
|
||||||
@@ -23,9 +23,9 @@
|
|||||||
"Mesh",
|
"Mesh",
|
||||||
"Modeling"
|
"Modeling"
|
||||||
],
|
],
|
||||||
"archive_url": "./stylized_rock_generator-2.6.0.zip",
|
"archive_url": "./stylized_rock_generator-2.7.0.zip",
|
||||||
"archive_size": 17621,
|
"archive_size": 18091,
|
||||||
"archive_hash": "sha256:f20343bd1aae3c03585e7621816b8934719e8855d7d4c411a0973df3d21ac397"
|
"archive_hash": "sha256:2a3b20b6a915271e10b5246b77fc89361cab3dab2ead032aff4e4cd3526ccf33"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"schema_version": "1.0.0",
|
"schema_version": "1.0.0",
|
||||||
|
|||||||
BIN
Binary file not shown.
BIN
Binary file not shown.
+34
-12
@@ -1,7 +1,7 @@
|
|||||||
bl_info = {
|
bl_info = {
|
||||||
"name": "Stylized Rock Generator",
|
"name": "Stylized Rock Generator",
|
||||||
"author": "D4rkst3r",
|
"author": "D4rkst3r",
|
||||||
"version": (2, 6, 0),
|
"version": (2, 7, 0),
|
||||||
"blender": (4, 2, 0),
|
"blender": (4, 2, 0),
|
||||||
"location": "View3D > Sidebar > Rock Gen",
|
"location": "View3D > Sidebar > Rock Gen",
|
||||||
"description": (
|
"description": (
|
||||||
@@ -842,17 +842,29 @@ class RockGenSettings(PropertyGroup):
|
|||||||
description="Cavity/AO multiplikativ ins Farbbild backen (EcoGame-Konvention)",
|
description="Cavity/AO multiplikativ ins Farbbild backen (EcoGame-Konvention)",
|
||||||
)
|
)
|
||||||
bake_ao_strength: FloatProperty(
|
bake_ao_strength: FloatProperty(
|
||||||
name="AO-Staerke", default=1.0, min=0.0, max=1.0,
|
name="AO-Staerke", default=0.55, min=0.0, max=1.0,
|
||||||
description="0 = kein AO im Albedo, 1 = voll",
|
description="0 = kein AO im Albedo, 1 = voll",
|
||||||
)
|
)
|
||||||
bake_base_color: FloatVectorProperty(
|
bake_base_color: FloatVectorProperty(
|
||||||
name="Grundfarbe", subtype='COLOR', size=4,
|
name="Grundfarbe", subtype='COLOR', size=4,
|
||||||
default=(0.52, 0.47, 0.40, 1.0), min=0.0, max=1.0,
|
default=(0.62, 0.60, 0.56, 1.0), min=0.0, max=1.0,
|
||||||
description="Grundton des Steins; Outline/Highlight werden davon abgeleitet",
|
description="Grundton des Steins; Outline/Highlight werden davon abgeleitet",
|
||||||
)
|
)
|
||||||
|
bake_seam_width: FloatProperty(
|
||||||
|
name="Fugenbreite", default=0.05, min=0.01, max=0.5,
|
||||||
|
description=("Wie breit der Uebergang von der Fuge zur Plattenflaeche ist. "
|
||||||
|
"Klein = schmale harte Fuge und flache Platte (Genshin), "
|
||||||
|
"gross = weicher Verlauf ueber die ganze Zelle"),
|
||||||
|
)
|
||||||
|
bake_plate_flat: FloatProperty(
|
||||||
|
name="Platten flach", default=1.0, min=0.0, max=1.0,
|
||||||
|
description=("1 = Plattenflaeche nahezu einfarbig, Detail steckt nur in der "
|
||||||
|
"dunklen Fuge. 0 = klassischer Verlauf ueber die Zelle"),
|
||||||
|
)
|
||||||
bake_cell_scale: FloatProperty(
|
bake_cell_scale: FloatProperty(
|
||||||
name="Zellgroesse", default=2.5, min=0.5, max=12.0,
|
name="Plattengroesse", default=0.7, min=0.3, max=12.0,
|
||||||
description="Kleiner = groessere Zellen (weniger Bruchstuecke)",
|
description=("Kleiner = GROESSERE Platten. Genshin-Referenz: nur wenige grosse "
|
||||||
|
"Platten pro Kachel, nicht viele kleine Zellen"),
|
||||||
)
|
)
|
||||||
|
|
||||||
# --- FBX-Export ---
|
# --- FBX-Export ---
|
||||||
@@ -1055,7 +1067,8 @@ class OBJECT_OT_export_rocks_fbx(Operator):
|
|||||||
# Textur-Bake (nahtlos tileable via 4D-Torus-Projektion, fuer Triplanar in UE)
|
# Textur-Bake (nahtlos tileable via 4D-Torus-Projektion, fuer Triplanar in UE)
|
||||||
# ---------------------------------------------------------------------------
|
# ---------------------------------------------------------------------------
|
||||||
|
|
||||||
def _build_bake_material(base_color=(0.52, 0.47, 0.40), cell_scale=2.5):
|
def _build_bake_material(base_color=(0.52, 0.47, 0.40), cell_scale=2.5,
|
||||||
|
seam_width=0.32, plate_flat=0.0):
|
||||||
"""Baut ein prozedurales, nahtlos tileables Stylized-Rock-Material (Zell-Look).
|
"""Baut ein prozedurales, nahtlos tileables Stylized-Rock-Material (Zell-Look).
|
||||||
|
|
||||||
Trick: Die 2D-UV wird als (cos u, sin u, cos v, sin v) auf einen Torus
|
Trick: Die 2D-UV wird als (cos u, sin u, cos v, sin v) auf einen Torus
|
||||||
@@ -1132,7 +1145,9 @@ def _build_bake_material(base_color=(0.52, 0.47, 0.40), cell_scale=2.5):
|
|||||||
cell_fac = nodes.new("ShaderNodeMapRange")
|
cell_fac = nodes.new("ShaderNodeMapRange")
|
||||||
links.new(vor_edge.outputs["Distance"], cell_fac.inputs["Value"])
|
links.new(vor_edge.outputs["Distance"], cell_fac.inputs["Value"])
|
||||||
cell_fac.inputs["From Min"].default_value = 0.0
|
cell_fac.inputs["From Min"].default_value = 0.0
|
||||||
cell_fac.inputs["From Max"].default_value = 0.32
|
# Fugenbreite: klein = schmale, harte Fuge und flache Platte (Genshin-Look),
|
||||||
|
# gross = breiter Verlauf ueber die ganze Zelle ("puffy", Golfball).
|
||||||
|
cell_fac.inputs["From Max"].default_value = seam_width
|
||||||
cell_fac.inputs["To Min"].default_value = 0.0
|
cell_fac.inputs["To Min"].default_value = 0.0
|
||||||
cell_fac.inputs["To Max"].default_value = 1.0
|
cell_fac.inputs["To Max"].default_value = 1.0
|
||||||
cell_fac.clamp = True
|
cell_fac.clamp = True
|
||||||
@@ -1154,12 +1169,15 @@ def _build_bake_material(base_color=(0.52, 0.47, 0.40), cell_scale=2.5):
|
|||||||
# alle Toene aus base_color abgeleitet.
|
# alle Toene aus base_color abgeleitet.
|
||||||
ramp = nodes.new("ShaderNodeValToRGB")
|
ramp = nodes.new("ShaderNodeValToRGB")
|
||||||
cr = ramp.color_ramp
|
cr = ramp.color_ramp
|
||||||
|
# plate_flat 0 = klassischer Verlauf, 1 = Plattenflaeche nahezu einfarbig
|
||||||
|
# mit dunkler Fuge (Referenz Genshin: leere Flaeche, Detail nur in der Fuge).
|
||||||
|
f = max(0.0, min(1.0, plate_flat))
|
||||||
cr.elements[0].position = 0.0
|
cr.elements[0].position = 0.0
|
||||||
cr.elements[0].color = _tone(0.12) # Riss / Outline
|
cr.elements[0].color = _tone(0.12 - 0.05 * f) # Fuge: dunkler bei flach
|
||||||
cr.elements[1].position = 0.85
|
cr.elements[1].position = 0.85 - 0.6 * f # Plateau frueher erreicht
|
||||||
cr.elements[1].color = _tone(1.22) # Zell-Highlight
|
cr.elements[1].color = _tone(1.22 - 0.24 * f) # weniger Highlight
|
||||||
mid = cr.elements.new(0.32)
|
mid = cr.elements.new(max(0.04, 0.32 - 0.26 * f))
|
||||||
mid.color = _tone(0.72) # Zell-Grundton
|
mid.color = _tone(0.72 + 0.22 * f) # Platte heller/gleichmaessiger
|
||||||
links.new(combined.outputs[0], ramp.inputs["Fac"])
|
links.new(combined.outputs[0], ramp.inputs["Fac"])
|
||||||
|
|
||||||
# Roughness: an den Rissen etwas rauer
|
# Roughness: an den Rissen etwas rauer
|
||||||
@@ -1262,6 +1280,8 @@ class OBJECT_OT_bake_rock_textures(Operator):
|
|||||||
mat, sk = _build_bake_material(
|
mat, sk = _build_bake_material(
|
||||||
base_color=tuple(settings.bake_base_color),
|
base_color=tuple(settings.bake_base_color),
|
||||||
cell_scale=settings.bake_cell_scale,
|
cell_scale=settings.bake_cell_scale,
|
||||||
|
seam_width=settings.bake_seam_width,
|
||||||
|
plate_flat=settings.bake_plate_flat,
|
||||||
)
|
)
|
||||||
# AO-Staerke ins Albedo (Fac 0 = aus, 1 = voll)
|
# AO-Staerke ins Albedo (Fac 0 = aus, 1 = voll)
|
||||||
sk["ao_mix"].inputs["Fac"].default_value = (
|
sk["ao_mix"].inputs["Fac"].default_value = (
|
||||||
@@ -1592,6 +1612,8 @@ class VIEW3D_PT_rock_generator(Panel):
|
|||||||
box.prop(settings, "bake_resolution")
|
box.prop(settings, "bake_resolution")
|
||||||
box.prop(settings, "bake_base_color")
|
box.prop(settings, "bake_base_color")
|
||||||
box.prop(settings, "bake_cell_scale")
|
box.prop(settings, "bake_cell_scale")
|
||||||
|
box.prop(settings, "bake_seam_width")
|
||||||
|
box.prop(settings, "bake_plate_flat")
|
||||||
row = box.row(align=True)
|
row = box.row(align=True)
|
||||||
row.prop(settings, "bake_color", toggle=True)
|
row.prop(settings, "bake_color", toggle=True)
|
||||||
row.prop(settings, "bake_normal", toggle=True)
|
row.prop(settings, "bake_normal", toggle=True)
|
||||||
|
|||||||
Reference in New Issue
Block a user