Beide Addons auf die EcoGame-Konventionen abgestimmt
Rock Generator 2.4.0: - Benennung Fels_<Form>_<Klasse> statt Rock_000 (Praefix/Form/Klasse im Panel, Klasse S/M/L/XL, optionale Durchnummerierung bei Batches) - Bake liefert jetzt <name>_albedo und <name>_normal. AO/Cavity wird per Option MULTIPLIKATIV ins Albedo gebacken (Staerke regelbar) - separate Roughness- und AO-Paesse sind Default aus, weil Roughness in EcoGame eine Zahl im Master- Material ist. Gemessen: Albedo-Mittelwert 0.549 -> 0.433 mit AO, Kontrast rauf. - UV1 Lightmap Default AUS (EcoGame beleuchtet dynamisch) Tree Generator 1.18.0: - Benennung <Art>_<Variante>_S<Stufe>, z.B. Birke_01_S1..S4 (statt stage0..3); Art-Feld und Varianten-Nummer im Panel, Art leer = Preset-Name - UV1 Lightmap Default AUS README: Konventionen dokumentiert. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
bl_info = {
|
||||
"name": "Stylized Tree Generator",
|
||||
"author": "D4rkst3r",
|
||||
"version": (1, 17, 0),
|
||||
"version": (1, 18, 0),
|
||||
"blender": (4, 2, 0),
|
||||
"location": "View3D > Sidebar > Tree Gen",
|
||||
"description": "Parametrischer Baum-/Palmen-/Busch-Generator (Geometry Nodes) mit Wachstums-Stufen",
|
||||
@@ -964,7 +964,8 @@ def make_object(ng, preset="baum", name=None, growth=None, seed=None):
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
from bpy.props import (
|
||||
IntProperty, FloatProperty, EnumProperty, BoolProperty, PointerProperty,
|
||||
IntProperty, FloatProperty, EnumProperty, BoolProperty, StringProperty,
|
||||
PointerProperty,
|
||||
)
|
||||
from bpy.types import Operator, Panel, PropertyGroup
|
||||
|
||||
@@ -981,18 +982,32 @@ class TreeGenSettings(PropertyGroup):
|
||||
description="Erzeugt mehrere Stufen (Setzling .. ausgewachsen) mit gleichem Seed",
|
||||
)
|
||||
stages: IntProperty(name="Anzahl Stufen", default=4, min=2, max=8)
|
||||
art_name: StringProperty(
|
||||
name="Art", default="",
|
||||
description=("Art-Name fuer den Export, z.B. 'Birke'. Leer = Preset-Name. "
|
||||
"Schema: <Art>_<Variante>_S<Stufe>"),
|
||||
)
|
||||
variant: IntProperty(
|
||||
name="Variante", default=1, min=1, max=99,
|
||||
description="Laufende Variante derselben Art (Birke_01, Birke_02 ...)",
|
||||
)
|
||||
spacing: FloatProperty(name="Abstand", default=4.0, min=0.0, max=20.0)
|
||||
apply_modifier: BoolProperty(
|
||||
name="Modifier anwenden", default=False,
|
||||
description="Ergebnis als normales Mesh einfrieren (fuer den Export)",
|
||||
)
|
||||
generate_lightmap_uv: BoolProperty(
|
||||
name="UV1 Lightmap-UV", default=True,
|
||||
description=("Zweiter, nicht ueberlappender UV-Kanal fuer Unreal-Lightmaps. "
|
||||
"Braucht 'Modifier anwenden' (nur echte Meshes lassen sich unwrappen)"),
|
||||
name="UV1 Lightmap-UV", default=False,
|
||||
description=("Zweiter, nicht ueberlappender UV-Kanal fuer Lightmaps. Braucht "
|
||||
"'Modifier anwenden'. EcoGame beleuchtet dynamisch -> nicht noetig"),
|
||||
)
|
||||
|
||||
|
||||
def _art(s):
|
||||
"""Art-Name fuer das EcoGame-Schema <Art>_<Variante>_S<Stufe>."""
|
||||
return (s.art_name.strip() or s.preset).capitalize()
|
||||
|
||||
|
||||
def _place(ob, x):
|
||||
ob.location.x = x
|
||||
|
||||
@@ -1049,12 +1064,12 @@ class TREEGEN_OT_create(Operator):
|
||||
for i in range(s.stages):
|
||||
t = i / float(s.stages - 1) if s.stages > 1 else 1.0
|
||||
ob = make_object(ng, preset=s.preset, growth=t, seed=s.seed,
|
||||
name="%s_%s_stage%d" % (OBJ_NAME, s.preset, i))
|
||||
name="%s_%02d_S%d" % (_art(s), s.variant, i + 1))
|
||||
_place(ob, x); x += s.spacing
|
||||
created.append(ob)
|
||||
else:
|
||||
ob = make_object(ng, preset=s.preset, seed=s.seed,
|
||||
name="%s_%s" % (OBJ_NAME, s.preset))
|
||||
name="%s_%02d" % (_art(s), s.variant))
|
||||
created.append(ob)
|
||||
except Exception as exc: # noqa: BLE001
|
||||
self.report({'ERROR'}, "Erzeugen fehlgeschlagen: %s" % exc)
|
||||
@@ -1099,6 +1114,12 @@ class VIEW3D_PT_tree_generator(Panel):
|
||||
box.label(text="Vorlage", icon='PRESET')
|
||||
box.prop(s, "preset", text="")
|
||||
box.prop(s, "seed")
|
||||
row = box.row(align=True)
|
||||
row.prop(s, "art_name", text="")
|
||||
row.prop(s, "variant")
|
||||
box.label(text="Name: %s_%02d%s" % (_art(s), s.variant,
|
||||
"_S1..S%d" % s.stages if s.use_growth else ""),
|
||||
icon='INFO')
|
||||
|
||||
box = layout.box()
|
||||
box.label(text="Wachstum")
|
||||
|
||||
Reference in New Issue
Block a user