MC Voxel Studio
3D-Modell hochladen → Minecraft-Bedrock-Paket (Entity/Statue und Block) · inklusive Test mit dem heruntergeladenen Tripo3D-Modell
Ergebnis: Das Werkzeug ist fertig und läuft vollständig lokal im Browser.
Das verlinkte Tripo3D-Modell wurde heruntergeladen (20,67 MB, 1.973.850 Dreiecke) und damit umgewandelt:
Es entstehen installationsfertige Bedrock-Pakete — Statue zum Beschwören mit
/summon statue:tripo_demon_girl und dieselbe Figur als platzierbarer Block.
Die Ausgabe wurde dreifach unabhängig geprüft: 34 Browser-Tests,
1 122 Strukturprüfungen in Python und ein Rundlauf in echter Blockbench-Software
(alle Würfel kommen identisch zurück). Ein im Spiel sichtbarer Fehler (weiße Flächen) wurde
gefunden und behoben — siehe Abschnitt 8.
1 · So sieht es aus
2 · Das geladene Tripo3D-Modell
| Eigenschaft | Wert |
|---|---|
| Quelle | studio.tripo3d.ai · Modell-ID 3f769a4e-fa6a-4f96-8a1d-5fc7aead86cb |
| Titel | „fantasy character 3d model“ (geflügeltes Dämonenmädchen) |
| Datei | mc-voxel-studio/models/tripo_demon_girl.glb · 21 669 676 B (20,67 MB) |
| Inhalt | 1 Gitter, 1 Material, 3 Texturen, 1 973 850 Dreiecke |
| Besonderheit | meshopt-komprimiert + quantisiert (KHR_mesh_quantization, EXT_meshopt_compression) — das Werkzeug bringt dafür den Meshopt-Decoder mit |
Der Weg dahin: die Studios-Seite liefert keinen direkten Dateilink; über die Projekt-Detail-Schnittstelle
(api.tripo3d.ai/v2/studio/project/detail/v3/<id>, mit Referer-Header) kommt eine signierte
CDN-Adresse, über die das GLB geladen wurde. Genau dieses GLB ist der Testfall für das Werkzeug.
3 · Was das Werkzeug rechnet
- Voxelisieren: jedes Dreieck wird konservativ in ein Voxelraster gespritzt (Ebenen-Abstand + baryzentrische Prüfung), Texturfarben werden über die UV-Koordinaten abgetastet, transparente Stellen fallen über die Alpha-Grenze weg.
- Hülle verdichten (schließt Löcher), Flood-Fill von außen, Innenvolumen füllen, Innenfarben per Mehrquellen-BFS von der Oberfläche.
- Kanten abdunkeln: Voxel in Ecken und Vertiefungen werden über die Nachbarschaftsbelegung leicht dunkler — die Statue wirkt plastischer, ohne dass mehr Würfel nötig sind.
- Palette: Median-Cut-Quantisierung auf 16 … 256 Farben; jede Farbe bekommt einen Bildpunkt in einer 16 × 16 großen Palette-Textur, die UVs aller Würfel zeigen auf einzelne Pixel.
- Greedy-Meshing: gleichfarbige Voxel werden zu möglichst großen Quadern verschmolzen — im Test 168× weniger Würfel als Voxel.
- Bedrock-Ausgabe: Geometrie 1.12.0 mit Per-Face-UV, Client-Entity, Entity-Verhalten (beschwörbar, unbeweglich, unverwundbar), Block-Variante 1.21.0 in den Blockwürfel (−8 … +8) skaliert, Palette-PNG, Terrain-Atlas, Manifeste (min_engine_version 1.20.60) und eine deutsche Anleitung.
Die Palette als Textur
- Die ganze Statue hängt an dieser 16 × 16-Bilddatei (hier 128 Farben belegt).
- Jeder Würfel zeigt auf genau einen Bildpunkt → eine flache Farbe je Quader.
- Umfärben heißt: die PNG in einem Bildprogramm ändern. Kein UV-Atlas, kein Verrutschen.
4 · Test mit einem einfachen Modell (Materialfarben)
5 · Prüfergebnisse
Was die Python-Prüfung kontrolliert (328 Einzelprüfungen)
| Bereich | Geprüft wurde |
|---|---|
| Manifeste | format_version 2, gültige v4-UUIDs, alle UUIDs eindeutig (Entity- und Block-Paket getrennt), min_engine_version [1, 20, 60], Modultyp resources/data |
| Geometrie | Format 1.12.0, Kennungen geometry.<name> bzw.
geometry.<name>_block, Texturgröße = Palette, keine Würfel mit Größe 0, alle sechs Flächen
vorhanden, jede UV-Angabe liegt im Palettenbild, Statue steht auf y = 0 und ist in x/z zentriert,
Blockmodell passt in −8 … +8 |
| Textur | PNG wird Byte für Byte dekodiert: 16 × 16, mehrere Farben, jedes benutzte UV-Pixel zeigt auf eine vorhandene Palettenfarbe |
| Entity | Client-Entity nennt Kennung, Textur und Modell; Behavior Pack beschwörbar, Kollisionsbox gesetzt, kein Schaden, Physik vollständig, Knockback im gültigen Bereich 0 … 1 |
| Block | format_version 1.21.0, Kennung, minecraft:geometry zeigt auf die
1-Block-Geometrie, Texturschlüssel steht im Terrain-Atlas, Atlas verweist auf die vorhandene Textur |
| Begleitdateien | Blockbench-Datei Format 4.5 mit eingebetteter Palette, Anleitung enthält
/summon, /setblock, beide Installationsordner und die .mcpack-Namen |
Rundlauf in echter Blockbench-Software
Blockbench 5.2.1 (Original, aus dem Quelltext gebaut) hat die erzeugten Dateien geöffnet — über denselben Codec, den auch das Datei-Menü benutzt — und wieder nach Bedrock exportiert:
| Modell | Öffnen | Rückexport | Ergebnis |
|---|---|---|---|
| Test-Roboter | 95 Würfel | 95 Würfel | ✔ Lage, Größe und UV-Pixel aller Würfel identisch |
| Texturwürfel | 972 Würfel | 972 Würfel | ✔ identisch |
| Tripo-Dämonenmädchen | 4 592 Würfel | 4 592 Würfel | ✔ identisch — alle 4 592 Würfel, inklusive UV-Pixel |
Dabei kamen zwei Feinheiten heraus, die jetzt fest eingebaut sind: Blockbench nennt das
Bedrock-Entity-Format intern bedrock (nicht bedrock_entity), und es spiegelt
Bedrock-Entity-Modelle in der X-Achse. Die .bbmodel-Datei speichert die X-Werte deshalb in der
Editor-Konvention — dadurch sieht man in Blockbench dasselbe wie im Spiel und der Rückexport trifft
unsere Datei exakt.
6 · Was herauskommt (Dateien)
| Datei | Größe | Inhalt |
|---|---|---|
tripo_demon_girl_paket.zip | 305 530 B | komplettes Paket des Tripo-Modells: Entity- und Block-Packs, .bbmodel, Anleitung (14 Dateien) |
tripo_demon_girl_bedrock_paket.zip | 251 322 B | dasselbe ohne Blockbench-Datei — das, was der Haupt-Knopf ausgibt |
robot_paket.zip | 13 721 B | Test-Roboter |
texturwuerfel_paket.zip | 85 848 B | Texturwürfel |
robot_block_nur.zip | — | nur die Block-Variante (eigener Knopf) |
mc-voxel-studio-tool.zip | 383 526 B | das Werkzeug selbst (ohne das 20-MB-Tripo-Modell) mit Startskripten für Windows/macOS/Linux |
Fertige Installationsdateien (.mcaddon)
| Datei | Inhalt | Würfel |
|---|---|---|
tripo_demon_girl.mcaddon | Dämonenmädchen, Standard | 3 048 |
tripo_demon_girl_fein.mcaddon | dasselbe in fein (Empfehlung) | 8 246 |
tripo_demon_girl_sehrfein.mcaddon | dasselbe in sehr fein | 19 075 |
test_roboter.mcaddon | Testfigur, Statue + Block | 95 |
test_texturwuerfel.mcaddon | Texturwürfel, Statue + Block | 2 242 |
Zu jedem Paket gibt es _statue.mcaddon und _block.mcaddon einzeln.
Alles liegt in test-model-addons/ samt LIESMICH und Vorschaubildern
(aus den Exportdateien gerendert).
Alle Pakete, Testskripte und Protokolle liegen im Arbeitsbereich:
voxel-studio-ausgaben/ (ZIPs), mc-voxel-studio/ (Werkzeug + Modelle),
test_voxel_studio_ausgabe.txt, test_bbmodel_ausgabe.txt,
pruefe_ausgabe.txt (vollständige Protokolle).
7 · Gefunden und behoben: weiße Flächen im Spiel
Der Befund aus dem Spiel: Statue und Block erschienen als weiße Quader mit nur einem schmalen Farbstreifen — nur wenige Pixel der Palette wurden benutzt, der Rest blieb weiß. Genau das passiert, wenn Minecraft die Flächenangaben ignoriert und stattdessen die ganze Textur auf jede Fläche legt: Von der 16 × 16-Palette landet dann überall die weiße Grundfläche in der Bildmitte auf dem Modell.
Ursache
Wir hatten die Flächen so geschrieben, wie es das Java-Format tut — nämlich als Objekt
faces am Würfel:
"faces": { "north": { "uv": [5, 0, 6, 1] }, … } ← Java-Format, im Spiel wirkungslos
Minecraft Bedrock kennt faces nicht. Bedrock erwartet die Flächen als
uv-Objekt direkt am Würfel, und dort als uv + uv_size.
Belegt wurde das mit der echten Blockbench-Software als Vorbild: Wir haben in Blockbench 5.2.1 ein
Modell mit Per-Face-UV exportiert und die Struktur ausgelesen:
"uv": {
"north": { "uv": [5, 0], "uv_size": [1, 1] },
"east": { "uv": [6, 1], "uv_size": [1, 1] },
"up": { "uv": [10, 5], "uv_size": [-1, -1] }, ← oben/unten gespiegelt
"down": { "uv": [11, 6], "uv_size": [-1, -1] }, ← (macht Blockbench so)
…
}
Zweite Abweichung: Bedrock spiegelt die X-Achse gegenüber dem Modell im Editor.
Blockbench rechnet beim Export origin.x = -(x + Breite). Unsere Datei enthielt die
ungespiegelten X-Werte — die Figur wäre also seitenverkehrt dagestanden. Auch das ist jetzt korrekt.
Gegenprobe aus zwei unabhängigen Quellen: ein Projekt, das die Achsenfrage in Bedrock auf einem
Android-Gerät nachgemessen hat („Bedrock's X axis runs opposite Java's, and a cube's origin is
8 − to.x"), und die Blockbench-Quelle selbst (template.origin[0] = -(origin[0] + size[0])).
Was wir geändert haben
| Stelle | vorher | jetzt |
|---|---|---|
| Flächen der Würfel | "faces": { … "uv": [x0,y0,x1,y1] } |
"uv": { "north": { "uv": [x,y], "uv_size": [1,1] }, … } |
| oben/unten | wie Seitenflächen | gespiegelt wie in Blockbench (uv_size: [-1,-1]) |
| X-Achse | ungespiegelt | origin.x = −(from.x + Breite), wie Blockbench |
| .bbmodel (Editor) | X vorspiegelt gespeichert | Editor-Koordinaten — Blockbench spiegelt beim Export selbst |
Wie es jetzt aussieht — gezeichnet allein aus der Exportdatei
Die folgenden Bilder sind nicht aus dem Werkzeug, sondern aus der fertigen
.geo.json + Palette-PNG gezeichnet: X-Spiegelung rückgängig, Flächenfarbe aus
uv/uv_size gelesen — also genau das, was Minecraft zeichnet (links vorn,
rechts von der Seite):
- Die Palette des Roboters: 12 belegte Pixel, 16 × 16 Bildpunkte groß.
- Jeder Würfel zeigt auf genau einen dieser Bildpunkte — vorher hat das Spiel diese Angabe ignoriert und die ganze 16 × 16-Fläche auf jede Seite gelegt.
Neue Gegenprüfungen (dauerhaft im Testlauf)
- Strukturvergleich mit Blockbench: Unsere Würfel müssen exakt dieselben Felder tragen wie
ein von Blockbench exportiertes Modell (
origin, size, uv; je Flächeuv, uv_size; keinfaces). - Spiel-Simulation: Der Test liest die fertige Datei so, wie Minecraft sie liest (X-Spiegelung rückgängig, Farbe aus dem UV-Rechteck) und vergleicht jeden Würfel mit dem, was die Vorschau zeigt — Lage und Farbe. Für Roboter (95) und Dämonenmädchen (4 592 Würfel): identisch.
- Rundlauf in Blockbench 5.2.1 über vier Modelle: 42/42 Prüfungen.
8 · Mehr Details: die Detailstufen
„Detaillierter" heißt bei einem Voxelmodell: feinere Voxel und mehr Farben. Beides war begrenzt — die Auflösung endete bei 96, die Palette bei 256 Farben (16 × 16 Textur). Nach mehreren Ausbaustufen geht die Auflösung jetzt bis 256 (gemessenes Maximum, darüber sprengt der Browser-Speicher), die Palette bis 4 096 Farben (64 × 64), und in der Oberfläche gibt es acht fertige Stufen, die alle Werte zusammen setzen. Die Würfelkante ist dabei Höhe ÷ Voxelzahl — kleinere Würfel bekommt man also über eine höhere Auflösung oder eine niedrigere Bauhöhe.
Das Dämonenmädchen in acht Stufen
| Stufe | Auflösung | Farben | Würfel | Würfelkante | Modelldatei | Reihenfolge im Spiel |
|---|---|---|---|---|---|---|
| Grob | 24 | 32 | 1 040 | 1/9 Block | 0,3 MB | sehr flüssig, auch auf Handys |
| Standard | 40 | 64 | 3 048 | 1/15 Block | 0,8 MB | flüssig |
| Fein | 64 | 256 | 8 246 | 1/16 Block | 2,2 MB | guter Kompromiss (Empfehlung) |
| Sehr fein | 96 | 512 | 19 104 | 1/18 Block | 5,4 MB | schön, aber merklich teuer |
| Ultra | 128 | 1024 | 33 856 | 1/24 Block | 9,7 MB | nur für starke Rechner |
| Extrem | 192 | 2048 | 75 849 | 1/24 Block | 21,8 MB | Ausstellung / Screenshots |
| Maximal | 256 | 4096 | 133 470 | 1/24 Block | 38,7 MB | nur mit kräftigem Rechner |
| Wahnsinn | 256 | 4096 | 133 470 | 1/48 Block | 38,7 MB | die feinsten Würfel (halb so klein wie „Maximal") |
| Mikro | 256 | 4096 | 133 470 | 1/64 Block | 38,7 MB | gleiche Auflösung, nur 3 Blöcke hoch gebaut |
| Nano | 256 | 4096 | 133 470 | 1/97 Block | 38,7 MB | nur 2 Blöcke hoch – kleinstmögliche Würfel |
Wie man die Würfel weiter verkleinert, obwohl die Auflösung am Anschlag ist: Die Würfelkante ist Bauhöhe ÷ Voxelzahl. Bei gleicher Auflösung (256) und gleicher Würfelzahl wird jeder Würfel also kleiner, wenn die Figur kleiner gebaut wird — 4 Blöcke hoch = 1/48 Block, 3 Blöcke = 1/64, 2 Blöcke = 1/97. Die Optik bleibt dabei identisch, nur der Maßstab ändert sich; die Figur reicht am Ende von den Füßen bis unter die Augen eines Spielers.
Was dabei zusätzlich verbessert wurde
- Kompakte Modelldateien: Die Geometrie wird jetzt ohne Einrückung geschrieben. Aus 19,5 MB wurden bei „sehr fein" 5,4 MB — gleicher Inhalt, nur ohne Leerraum.
- Größere Palette: Über 256 Farben wächst die Palette automatisch auf 32 × 32 Bildpunkte, über 1 024 auf 64 × 64; die UVs folgen der Texturbreite (geprüft bis 4 096 Farben).
- Ehrliche Warnung: Über 2 500 Würfel meldet das Protokoll, dass es im Spiel zäh werden kann; über 10 000 Würfel warnt es deutlich und nennt die passende Gegenmaßnahme.
- Neue Kontrollen: Der Browsertest prüft außerdem, dass jede Stufe gültige Werte setzt (Höhe 0 hätte eine Würfelgröße von 0 ergeben — jetzt fängt das Werkzeug das ab) und dass Palette und Helligkeit über die 256-Farben-Grenze hinweg stimmen.
- Speicher schonen: Zwischenergebnisse (Geometrie-Baum, Blockbench-Baum, Layout-Listen)
werden nach dem Export freigegeben und die Flächen-Objekte geteilt — vorher kam bei den hohen
Stufen der Speicher an seine Grenze. Zusätzlich gibt es den Aufruf
?ohne3d=1(Live-Vorschau aus, Umwandlung und Download laufen vollständig) und ab 40 000 Würfeln wird die 3D-Vorschau automatisch ausgelassen.
Warum „Maximal" und „Wahnsinn" nur als Statue kommen: Die Block-Variante
(1 × 1 Block) und das Blockbench-Projekt würden bei 133 470 Würfeln zusammen fast 100 MB
Zwischenspeicher kosten — und ein 1-Block-Modell mit 133 470 Würfeln ist ohnehin nicht sinnvoll.
Dafür gibt es im Werkzeug jetzt zwei Schalter (setExportOptions), die genau diese beiden
Teile überspringen. Alle Stufen darunter (bis 75 849 Würfel) liefern weiterhin Statue und Block.
Der Fehler, der die hohen Stufen unbrauchbar machte
Beim Nachmessen fiel auf, dass die Figur bei 1 024, 2 048 und 4 096 Farben dunkler und körnig
aussah als bei 256 Farben. Ursache: Die Zuordnung „Voxel → Palettenfarbe" lag in einem
Uint8Array — das kann nur Werte bis 255 speichern. Bei größeren Paletten lief der Index
still über (Rechenwert modulo 256), und jeder Würfel bekam die Farbe eines beliebigen anderen
Eintrags. Das Werkzeug warf keine Fehlermeldung und kein Test schlug an, weil die Modelldatei
formal einwandfrei war — nur die Farben waren falsch.
Behoben mit einem Uint16Array ab 257 Farben. Zusätzlich prüft ein neuer Test jetzt
genau das: Bei 256 und bei 4 096 Farben wird die durchschnittliche Helligkeit aller Würfel verglichen
(101,6 gegen 101,3) und kontrolliert, dass wirklich mehr als 256 verschiedene Farben ankommen
(2 807 von 2 807 möglichen). Alle Pakete wurden danach neu erzeugt.
Faustregel: Bis etwa 10 000 Würfel („Fein") läuft es auf normalen Geräten flüssig; bis ~34 000 („Ultra") auf starken Rechnern. Microsoft empfiehlt für Blöcke, die oft platziert werden, sogar nur ~50 Würfel je Modell — Statue als Entity verträgt deutlich mehr. Wenn es ruckelt: eine Stufe zurück, oder das Modell mit weniger Höhe exportieren.
9 · Als Mod-Version
Auf Wunsch gibt es das Ganze jetzt nicht mehr nur als Test-Addon, sondern als richtige Mod-Version:
mit deutschem Namen im Spiel, eigenem Spawn-Ei im Kreativ-Inventar und Paket-Symbol. Der Ordner
Minecraft-Bedrock-MOD-Version/ enthält 11 Mod-Dateien mit deutschen Dateinamen, dazu eine
ausführliche MOD-LIESMICH.txt und drei Vorschaubilder.
texts/de_DE.lang und
en_US.lang)| Datei | Inhalt | Größe |
|---|---|---|
Daemonenmaedchen-Fein-Mod.mcaddon | Empfehlung: Statue + Block, 8 246 Würfel, deutsches Spawn-Ei | 269 KB |
Daemonenmaedchen-Mod.mcaddon … -Nano-Mod.mcaddon | die übrigen neun Detailstufen (bis 133 470 Würfel) | 92 KB – 3,0 MB |
…-Statue.mcpack / …-Block.mcpack | einzelne Packs, falls jemand nur die Statue oder nur den Block will | – |
MOD-LIESMICH.txt | Installation, Spawn-Ei, Befehle, Stufen-Empfehlung | – |
Was sich dafür im Werkzeug geändert hat: Spawn-Ei-Farben aus der Palette, Sprachdateien für die Namen, Pack-Symbole aus den Würfeln (in allen vier Pack-Ordnern) und lesbare Paketnamen in den Manifesten. Der Browsertest prüft das jetzt mit (fünf zusätzliche Prüfungen: Ei-Farben, Sprachdateien, Symbole, Paketnamen, Anleitung).
10 · Einbau in Minecraft Bedrock
- Paket entpacken. Die vier Ordner
<name>_rp,<name>_bp,<name>_block_rp,<name>_block_bpin den Ordnerresource_packsbzw.behavior_packskopieren (Windows:%LOCALAPPDATA%\Packages\Microsoft.MinecraftUWP_8wekyb3d8bbwe\LocalState\games\com.mojang\, Android/iOS entsprechend imcom.mojang-Ordner). - Oder .mcpack bauen: den Inhalt eines Ordners (manifest.json ganz oben) zippen, Endung
.zip→.mcpackumbenennen, Datei öffnen. Minecraft importiert sie selbst. (Steht genauso in der mitgeliefertenANLEITUNG.txt.) - Welt bearbeiten → Resource Packs und Behavior Packs aktivieren. Kein Experiment-Schalter nötig.
- Statue beschwören:
/summon statue:tripo_demon_girl ~ ~ ~
Block setzen (1×1):/setblock ~ ~ ~ statue:tripo_demon_girl
Entfernen:/kill @e[type=statue:tripo_demon_girl,r=20]
Zu wissen: Die Statue steht still, lässt sich nicht schieben und nimmt keinen Schaden. Bei sehr feinen Auflösungen entstehen viele Quader — das Werkzeug warnt selbst im Protokoll, sobald es mehr als 2 500 werden (das Tripo-Modell bei 40 Voxeln: 3 048). Für flüssiges Rendern im Spiel einfach mit Auflösung 32 oder mit Höhe „1 Block“ neu erzeugen; die Datei wird dann deutlich kleiner. Die Pakete nutzen Engine-Version 1.20.60 und laufen auf aktuellen Bedrock-Versionen (Windows, Android, iOS, Xbox, Switch).