Rock Generator 2.11.0: Quader-Proportionen auf gleiches Volumen normiert

Beim Export von Form C (flache Platte) fiel auf: Fels_C_S war 1.45 m, waehrend
Fels_A_S nur 0.85 m misst - dieselbe Klasse, aber deutlich groesser, nur weil
eine Achse gestreckt ist. Damit waere die Groessen-Klasse formabhaengig gewesen.

Die Proportionen werden jetzt auf geometrisches Mittel 1.0 normiert. "M" bedeutet
bei jeder Form dasselbe Volumen; eine Platte ist dann flacher UND breiter, aber
nicht schwerer. Dass ihre laengste Kante groesser ausfaellt, ist geometrisch
zwangslaeufig und Absicht.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-07-31 11:35:57 +02:00
co-authored by Claude Opus 4.8
parent c7154ca690
commit 2882c099b4
6 changed files with 17 additions and 6 deletions
+4
View File
@@ -202,6 +202,10 @@ damit die Raw-URL sie ausliefert.
`Proportions-Streuung` — damit entstehen flache **Platten** und langgestreckte `Proportions-Streuung` — damit entstehen flache **Platten** und langgestreckte
**Riegel** statt nur runder Brocken. Gemessen bei Proportion (2.0, 1.5, 0.35): **Riegel** statt nur runder Brocken. Gemessen bei Proportion (2.0, 1.5, 0.35):
3.43 / 2.56 / 0.79 m — Z also 23 % von X. 3.43 / 2.56 / 0.79 m — Z also 23 % von X.
Die Proportionen werden auf **gleiches Volumen normiert** — „M" bedeutet damit
bei jeder Form dasselbe. Eine Platte ist dann flacher UND breiter als ein
Wuerfel derselben Klasse, aber nicht schwerer; ihre laengste Kante ist
entsprechend groesser (das ist Absicht, kein Fehler).
Die Proportionen werden auf die MESH-DATEN angewendet, nicht auf das Objekt: Die Proportionen werden auf die MESH-DATEN angewendet, nicht auf das Objekt:
der Displace nutzt globale Texturkoordinaten, eine Objekt-Skalierung wuerde der Displace nutzt globale Texturkoordinaten, eine Objekt-Skalierung wuerde
das Rauschen mitverzerren statt die Form zu aendern. das Rauschen mitverzerren statt die Form zu aendern.
+1 -1
View File
@@ -1,7 +1,7 @@
schema_version = "1.0.0" schema_version = "1.0.0"
id = "stylized_rock_generator" id = "stylized_rock_generator"
version = "2.10.0" version = "2.11.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"
+4 -4
View File
@@ -32,7 +32,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.10.0", "version": "2.11.0",
"type": "add-on", "type": "add-on",
"maintainer": "D4rkst3r", "maintainer": "D4rkst3r",
"license": [ "license": [
@@ -48,9 +48,9 @@
"Mesh", "Mesh",
"Modeling" "Modeling"
], ],
"archive_url": "./stylized_rock_generator-2.10.0.zip", "archive_url": "./stylized_rock_generator-2.11.0.zip",
"archive_size": 20241, "archive_size": 20382,
"archive_hash": "sha256:d092ae0a1cfefed9bdd4fbe1ffcd8160f4fffb00033cec346bbde3d14c755254" "archive_hash": "sha256:50eeed1d105ad68487e25020fdf28f5e3b8d81e83f9a21b9d33968eaa06aff2d"
}, },
{ {
"schema_version": "1.0.0", "schema_version": "1.0.0",
Binary file not shown.
Binary file not shown.
+8 -1
View File
@@ -1,7 +1,7 @@
bl_info = { bl_info = {
"name": "Stylized Rock Generator", "name": "Stylized Rock Generator",
"author": "D4rkst3r", "author": "D4rkst3r",
"version": (2, 10, 0), "version": (2, 11, 0),
"blender": (4, 2, 0), "blender": (4, 2, 0),
"location": "View3D > Sidebar > Rock Gen", "location": "View3D > Sidebar > Rock Gen",
"description": ( "description": (
@@ -310,6 +310,13 @@ def _build_rock_mesh(context, settings, index, location, rng, name=None):
# der Displace nutzt globale Texturkoordinaten, eine Objekt-Skalierung # der Displace nutzt globale Texturkoordinaten, eine Objekt-Skalierung
# wuerde das Rauschen mitverzerren statt die Form zu aendern. # wuerde das Rauschen mitverzerren statt die Form zu aendern.
px, py, pz = settings.box_proportions px, py, pz = settings.box_proportions
# Auf gleiches Volumen normieren: sonst waere ein Quader bei gleicher
# Groessen-Klasse deutlich groesser als ein Wuerfel, nur weil eine
# Achse gestreckt ist. So bedeutet "M" bei jeder Form dasselbe -
# die Platte ist dann flacher UND breiter, aber nicht schwerer.
gmean = (abs(px) * abs(py) * abs(pz)) ** (1.0 / 3.0)
if gmean > 1e-6:
px, py, pz = px / gmean, py / gmean, pz / gmean
v = settings.box_variation v = settings.box_variation
if v > 0.0: if v > 0.0:
px *= 1.0 + rng.uniform(-v, v) * 0.5 px *= 1.0 + rng.uniform(-v, v) * 0.5