Ein 3D-Element repräsentiert dreidimensionale Objekte in Ihrem Projekt, einschließlich importierter 3D-Modelle, grundlegender geometrischer Primitiven, extrudierter Formen aus 2D-Formen, 3D-Text und Ergebnissen von booleschen Operationen.
3D-Elemente teilen sich die gemeinsamen Felder von Basis-Element und Ansichts-Element, während sie auch zusätzliche 3D-spezifische Eigenschaften einführen.
| Eigenschaft | Typ | Erforderlich | Beispiel | Wertbereich | Beschreibung |
|---|---|---|---|---|---|
| type | string | true | - | 3D | Der Typ des Elements. Für 3D-Elemente ist dies immer "3D". |
| sourceId | string | false | - | - | Interne Kennung für das 3D-Modell oder die Geometrie-Ressource. |
| ext | string | false | - | glb | gltf | fbx | obj | geometry | primitive | text3d | parametric | curve | Die Dateierweiterung oder der Knotentyp des 3D-Elements. |
| externalUrl | string | false | - | - | Optionale URL zum Laden externer glTF/glb-Modelle. Die Engine wird das Modell abrufen und zwischenspeichern. |
| nodeType | string | false | - | primitive | geometry | text3d | import | model | parametric | curve | Der Typ des 3D-Knotens. Bestimmt die Struktur zusätzlicher Eigenschaften. |
| category | string | false | - | For primitive/geometry: basic | polyhedron. For parametric: extrusion | lathe | sweep. For curve: helix | torusKnot | custom | Unterkategorie des 3D-Knotens. Verfügbare Werte hängen vom nodeType ab. |
| geometryType | string | false | - | - | Der Typ der grundlegenden Geometrie. Siehe Abschnitt "Geometrietypen" unten. |
| originalWidth | number | false | - | - | Die ursprüngliche Breite des 3D-Modells in Welteinheiten. |
| originalHeight | number | false | - | - | Die ursprüngliche Höhe des 3D-Modells in Welteinheiten. |
| originalDepth | number | false | - | - | Die ursprüngliche Tiefe des 3D-Modells in Welteinheiten. |
| animation | object | false | - | - | Animationseinstellungen für glTF-Modelle mit Animationen. Enthält currentIndex, speed und loop-Eigenschaften. |
Zusätzlich zu den standardmäßigen 2D-Transformations Eigenschaften (x, y, Rotation, scaleX, scaleY) unterstützen 3D-Elemente zusätzliche Transformations Eigenschaften für dreidimensionale Positionierung und Rotation:
| Eigenschaft | Typ | Erforderlich | Beispiel | Wertbereich | Beschreibung |
|---|---|---|---|---|---|
| z | number | false | - | - | Die Tiefenposition des Elements im 3D-Raum. Die Einheiten sind mit Pixeln ausgerichtet, wobei z=0 der Leinienebene entspricht. |
| rotationX | number | false | - | - | Rotation um die X-Achse, in Grad. |
| rotationY | number | false | - | - | Rotation um die Y-Achse, in Grad. |
| scaleZ | number | false | - | > 0 | Skalierungsfaktor entlang der Z-Achse. Werte > 1 vergrößern, Werte zwischen 0 und 1 verkleinern. |
Das Feld geometryType gibt den Typ der grundlegenden 3D-Geometrie an. Verfügbare Typen sind nach Kategorie organisiert (angegeben über das Feld category, wenn nodeType "geometry" oder "primitive" ist):
Hinweis:
nodeType: "primitive"ist ein Alias für"geometry". Beide werden unterstützt und verhalten sich identisch.
Grundformen (category: "basic"):
cube - Sechseitiger Würfelsphere - Sphärische Geometriecylinder - Zylindrische Geometriecone - Kegelige Geometrietorus - Donut-förmige Geometriecapsule - Kapsel-förmige Geometriedisc - Flacher kreisförmiger DiskusPolyeder (category: "polyhedron"):
pyramid - Vierseitige Pyramideoctahedron - Achtflächiges Polyedericosahedron - Zwanzigflächiges Polyederdodecahedron - Zwölfflächiges PolyederhexPrism - Sechseitiges Prismatriangle - Dreieckiges PrismaParametrische Knoten (nodeType: "parametric") erzeugen Geometrie prozedural:
Extrusion (category: "extrusion"):
Drehbank (category: "lathe"):
Sweep (category: "sweep"):
Kurvenknoten (nodeType: "curve") erstellen 3D-Kurven und -Pfad:
Helix (category: "helix"):
Torus-Knoten (category: "torusKnot"):
Benutzerdefiniert (category: "custom"):
Topologieoperationen (boolesch, Array, Spiegelung, Verbindung) werden im Editor durchgeführt und erzeugen standardmäßige Geometrieausgaben. Diese Operationen werden zur Bearbeitungszeit angewendet und erfordern keine spezielle Behandlung in der Render-API.
3D-Elemente können durch Extrusion von 2D-Formen erstellt werden. Wenn Sie ein 2D-Formelement im Editor in 3D umwandeln, wird ein neues type: "3D"-Element mit den folgenden zusätzlichen Feldern generiert:
| Eigenschaft | Typ | Erforderlich | Beispiel | Wertbereich | Beschreibung |
|---|---|---|---|---|---|
| extrusionSource | object | false | - | - | Die ursprünglichen 2D-Formdaten, die zur Erstellung der 3D-Extrusion verwendet wurden. Enthält die vollständigen ShapeNodeData. |
| shapeSizeX | number | false | - | - | Breite der extrudierten Form, in Pixel. |
| shapeSizeY | number | false | - | - | Höhe der extrudierten Form, in Pixel. |
| shapeExtrusion | number | false | - | - | Tiefe der Extrusion entlang der Z-Achse, in Pixel. |
| shapeCorner | string | false | - | round | chamfer | straight | Eckentyp für extrudierte Formen. |
| shapeRoundnessSmooth | number | false | - | 0 - 1 | Glätte der abgerundeten Ecken (0-1). |
| shapeRoundnessArc | number | false | - | - | Bogenradius für abgerundete Ecken. |
| shapeBevel | number | false | - | - | Fasentiefe für Kanten. |
| shapeBevelSides | number | false | - | - | Anzahl der Segmente für gefaste Kanten. |
3D-Elemente können auch dreidimensionalen Text mit Tiefe und Fase darstellen:
| Eigenschaft | Typ | Erforderlich | Beispiel | Wertbereich | Beschreibung |
|---|---|---|---|---|---|
| textContent | string | false | - | - | Der Textinhalt, der in 3D gerendert werden soll. |
| textStyle3D | object | false | - | - | Textstil-Eigenschaften (Schriftart, Größe, Gewicht usw.). Wiederverwendet einige 2D-Textstilfelder. |
| textDepth | number | false | - | - | Extrusionstiefe des 3D-Texts. |
| textBevelSize | number | false | - | - | Größe der Fase an den Textkanten. |
| textBevelSegments | number | false | - | - | Anzahl der Segmente für die Textfasen. |
| textCurveSegments | number | false | - | - | Anzahl der Segmente für die Textkurven. |
3D-Elemente verwenden ein PBR (Physically Based Rendering) Materialsystem mit umfassender Texturunterstützung:
| Eigenschaft | Typ | Erforderlich | Beispiel | Wertbereich | Beschreibung |
|---|---|---|---|---|---|
| material | object | false | - | - | Vollständige Materialkonfiguration einschließlich PBR-Eigenschaften und Texturkarten. |
Das material-Objekt enthält:
physicalMaterialData - PBR-Materialeigenschaften:
color (string) - Basisfarbe im Hex-Format, Standard: '#818cf8'roughness (number) - Oberflächenrauhigkeit, 0-1, Standard: 0.4metalness (number) - Metallische Eigenschaft, 0-1, Standard: 0.0opacity (number) - Materialopazität, 0-1, Standard: 1.0transmission (number) - Lichtdurchlässigkeit für glasähnliche Materialien, 0-1, Standard: 0.0ior (number) - Brechungsindex, typischerweise 1.0-2.5, Standard: 1.5clearcoat (number) - Intensität der Klarlackschicht, 0-1, Standard: 0.0clearcoatRoughness (number) - Rauheit des Klarlacks, 0-1, Standard: 0.0sheen (number) - Stoffähnlicher Glanz-Effekt, 0-1, Standard: 0.0sheenRoughness (number) - Glanzrauhigkeit, 0-1, Standard: 0.0sheenColor (string) - Glanztönfarbethickness (number) - Materialdicke für TransmissionmaterialXPath (string) - Optionaler MaterialX-Voreinstellungs-Pfad:
Texturkarten - Das Materialobjekt kann URLs für Texturkarten enthalten:
colorMap - Basisfarbe/diffuse TexturnormalMap - Normalmap für OberflächendetailsroughnessMap - RauheitstexturmetalnessMap - MetallizitätstexturaoMap - Ambient Occlusion MapemissiveMap - Emissive/glühende TexturTexturkarten werden mit TSL (Three.js Shading Language) Funktionen für optimale Leistung angewendet.
3D-Elemente mit nodeType: "model" oder nodeType: "import" repräsentieren importierte 3D-Modelle:
Hinweis:
nodeType: "import"ist ein Alias für"model". Beide werden unterstützt und verhalten sich identisch.
source.url, um die URL der externen glTF/glb/FBX-Datei anzugebensourceId zwischenspeichernanimation.currentIndex, um auszuwählen, welche Animation abgespielt werden sollcurrentIndex (number), speed (number, Standard 1.0), loop (boolean, Standard true)sizeParams enthält width, height, depth für die Modellabmessungen
{
"id": "3d-cube-001",
"type": "3D",
"start": 0,
"duration": 5,
"trackIndex": 0,
"x": 540,
"y": 540,
"z": 0,
"width": 200,
"height": 200,
"anchorX": 100,
"anchorY": 100,
"rotation": 0,
"rotationX": 30,
"rotationY": 45,
"scaleX": 1,
"scaleY": 1,
"scaleZ": 1,
"alpha": 1,
"ext": "geometry",
"nodeType": "geometry",
"category": "basic",
"geometryType": "cube",
"material": {
"physicalMaterialData": {
"color": "#4A90E2",
"roughness": 0.4,
"metalness": 0.0
}
}
}
{
"id": "3d-extrusion-001",
"type": "3D",
"start": 0,
"duration": 5,
"trackIndex": 0,
"x": 540,
"y": 540,
"z": 0,
"width": 300,
"height": 300,
"anchorX": 150,
"anchorY": 150,
"rotation": 0,
"rotationX": 0,
"rotationY": 0,
"scaleX": 1,
"scaleY": 1,
"scaleZ": 1,
"alpha": 1,
"ext": "parametric",
"nodeType": "parametric",
"category": "extrusion",
"shapeSizeX": 300,
"shapeSizeY": 300,
"shapeExtrusion": 100,
"material": {
"physicalMaterialData": {
"color": "#FF6B6B",
"roughness": 0.3,
"metalness": 0.1
}
},
"extrusionSource": {
"shapeType": "SHAPE_STAR",
"starPoints": 5,
"starInnerRadius": 0.4
}
}
{
"id": "3d-model-001",
"type": "3D",
"start": 0,
"duration": 10,
"trackIndex": 0,
"x": 540,
"y": 540,
"z": -200,
"width": 400,
"height": 400,
"anchorX": 200,
"anchorY": 200,
"rotation": 0,
"rotationX": 0,
"rotationY": 0,
"scaleX": 1,
"scaleY": 1,
"scaleZ": 1,
"alpha": 1,
"ext": "glb",
"nodeType": "model",
"sourceId": "cached-model-123",
"source": {
"url": "https://example.com/models/animated_character.glb"
},
"animation": {
"currentIndex": 0,
"speed": 1.0,
"loop": true
},
"sizeParams": {
"width": 2,
"height": 2,
"depth": 2
},
"originalWidth": 2,
"originalHeight": 2,
"originalDepth": 2
}