Een 3D-element vertegenwoordigt driedimensionale objecten in uw project, inclusief geïmporteerde 3D-modellen, basis geometrie-primitieven, geëxtrudeerde vormen van 2D-vormen, 3D-tekst en resultaten van booleaanse bewerkingen.
3D-elementen delen de gemeenschappelijke velden van Basis Element en Bekijk Element, terwijl ze ook extra 3D-specifieke eigenschappen introduceren.
| Eigenschap | Type | Vereist | Voorbeeld | Waardenbereik | Omschrijving |
|---|---|---|---|---|---|
| type | string | true | - | 3D | Het type van het element. Voor 3D-elementen is dit altijd "3D". |
| sourceId | string | false | - | - | Interne identificatie voor het 3D-model of geometriebron. |
| ext | string | false | - | glb | gltf | fbx | obj | geometry | primitive | text3d | parametric | curve | De bestandsextensie of knooppunttype van het 3D-element. |
| externalUrl | string | false | - | - | Optionele URL voor het laden van externe glTF/glb-modellen. De engine zal het model ophalen en cachen. |
| nodeType | string | false | - | primitive | geometry | text3d | import | model | parametric | curve | Het type 3D-knooppunt. Bepaalt de structuur van extra eigenschappen. |
| category | string | false | - | For primitive/geometry: basic | polyhedron. For parametric: extrusion | lathe | sweep. For curve: helix | torusKnot | custom | Subcategorie van het 3D-knooppunt. Beschikbare waarden zijn afhankelijk van nodeType. |
| geometryType | string | false | - | - | Het type basisgeometrie. Zie de sectie "Geometrie Types" hieronder. |
| originalWidth | number | false | - | - | De oorspronkelijke breedte van het 3D-model in wereld eenheden. |
| originalHeight | number | false | - | - | De oorspronkelijke hoogte van het 3D-model in wereld eenheden. |
| originalDepth | number | false | - | - | De oorspronkelijke diepte van het 3D-model in wereld eenheden. |
| animation | object | false | - | - | Animatie-instellingen voor glTF-modellen met animaties. Bevat currentIndex, speed en loop-eigenschappen. |
Naast de standaard 2D-transformatie-eigenschappen (x, y, rotatie, schaalX, schaalY), ondersteunen 3D-elementen extra transformatie-eigenschappen voor driedimensionale positionering en rotatie:
| Eigenschap | Type | Vereist | Voorbeeld | Waardenbereik | Omschrijving |
|---|---|---|---|---|---|
| z | number | false | - | - | De dieptepositie van het element in 3D-ruimte. Eenheden zijn uitgelijnd met pixels, waarbij z=0 overeenkomt met het canvasvlak. |
| rotationX | number | false | - | - | Rotatie rond de X-as, in graden. |
| rotationY | number | false | - | - | Rotatie rond de Y-as, in graden. |
| scaleZ | number | false | - | > 0 | Schaalfactor langs de Z-as. Waarden > 1 vergroten, waarden tussen 0 en 1 verkleinen. |
Het geometryType-veld specificeert het type basis 3D-geometrie. Beschikbare types zijn georganiseerd per categorie (gespecificeerd via het category-veld wanneer nodeType is "geometry" of "primitive"):
Opmerking:
nodeType: "primitive"is een alias voor"geometry". Beide worden ondersteund en gedragen zich identiek.
Basis Vormen (category: "basic"):
cube - Zeszijdige doossphere - Sferische geometriecylinder - Cilindrische geometriecone - Conische geometrietorus - Donut-vormige geometriecapsule - Capsule-vormige geometriedisc - Vlakke cirkelvormige schijfPolyhedra (category: "polyhedron"):
pyramid - Vierzijdige piramideoctahedron - Achtzijdige polyhedronicosahedron - Twintigzijdige polyhedrondodecahedron - Twaalfzijdige polyhedronhexPrism - Zeszijdige prismatriangle - Driehoekige prismaParametrische knooppunten (nodeType: "parametric") genereren geometrie procedureel:
Extrusie (category: "extrusion"):
Draaibank (category: "lathe"):
Sweep (category: "sweep"):
Curve knooppunten (nodeType: "curve") creëren 3D-curven en paden:
Helix (category: "helix"):
Torus Knoop (category: "torusKnot"):
Aangepast (category: "custom"):
Topologie-operaties (boolean, array, mirror, compound) worden binnen de editor uitgevoerd en produceren standaard geometrie-output. Deze operaties worden toegepast tijdens de bewerkingstijd en vereisen geen speciale behandeling in de render-API.
3D-elementen kunnen worden gemaakt door 2D-vormen te extruderen. Wanneer u een 2D-vormelement in de editor naar 3D converteert, genereert het een nieuw type: "3D"-element met de volgende extra velden:
| Eigenschap | Type | Vereist | Voorbeeld | Waardenbereik | Omschrijving |
|---|---|---|---|---|---|
| extrusionSource | object | false | - | - | De oorspronkelijke 2D-vormgegevens die zijn gebruikt om de 3D-extrusie te maken. Bevat de complete ShapeNodeData. |
| shapeSizeX | number | false | - | - | Breedte van de geëxtrudeerde vorm, in pixels. |
| shapeSizeY | number | false | - | - | Hoogte van de geëxtrudeerde vorm, in pixels. |
| shapeExtrusion | number | false | - | - | Diepte van de extrusie langs de Z-as, in pixels. |
| shapeCorner | string | false | - | round | chamfer | straight | Hoektype voor geëxtrudeerde vormen. |
| shapeRoundnessSmooth | number | false | - | 0 - 1 | Gladheid van afgeronde hoeken (0-1). |
| shapeRoundnessArc | number | false | - | - | Boogstraal voor afgeronde hoeken. |
| shapeBevel | number | false | - | - | Diepte van de afschuining voor randen. |
| shapeBevelSides | number | false | - | - | Aantal segmenten voor afgeschuinde randen. |
3D-elementen kunnen ook driedimensionale tekst met diepte en afschuining vertegenwoordigen:
| Eigenschap | Type | Vereist | Voorbeeld | Waardenbereik | Omschrijving |
|---|---|---|---|---|---|
| textContent | string | false | - | - | De tekstinhoud die in 3D moet worden weergegeven. |
| textStyle3D | object | false | - | - | Tekststijl eigenschappen (lettertype, grootte, gewicht, enz.). Hergebruikt enkele 2D-tekststijlvelden. |
| textDepth | number | false | - | - | Extrusiediepte van de 3D-tekst. |
| textBevelSize | number | false | - | - | Grootte van de afschuining op tekst randen. |
| textBevelSegments | number | false | - | - | Aantal segmenten voor tekstafschuining. |
| textCurveSegments | number | false | - | - | Aantal segmenten voor tekstcurven. |
3D-elementen gebruiken een PBR (Physically Based Rendering) materiaal systeem met uitgebreide ondersteuning voor texturen:
| Eigenschap | Type | Vereist | Voorbeeld | Waardenbereik | Omschrijving |
|---|---|---|---|---|---|
| material | object | false | - | - | Volledige materiaalkonfiguratie inclusief PBR-eigenschappen en textuurkaarten. |
Het material-object bevat:
physicalMaterialData - PBR materiaaleigenschappen:
color (string) - Basis kleur in hex-formaat, standaard: '#818cf8'roughness (number) - Oppervlakte-ruwheid, 0-1, standaard: 0.4metalness (number) - Metaal eigenschap, 0-1, standaard: 0.0opacity (number) - Materiaal-opaciteit, 0-1, standaard: 1.0transmission (number) - Lichttransmissie voor glasachtige materialen, 0-1, standaard: 0.0ior (number) - Brekingsindex, typisch 1.0-2.5, standaard: 1.5clearcoat (number) - Duidelijke coatinglaag intensiteit, 0-1, standaard: 0.0clearcoatRoughness (number) - Ruwheid van de heldere coating, 0-1, standaard: 0.0sheen (number) - Stofachtige glans effect, 0-1, standaard: 0.0sheenRoughness (number) - Glans-ruwheid, 0-1, standaard: 0.0sheenColor (string) - Glans tint kleurthickness (number) - Materiaal dikte voor transmissiematerialXPath (string) - Optioneel MaterialX preset pad:
Textuurkaarten - Het materiaalobject kan URL's voor textuurkaarten bevatten:
colorMap - Basis kleur/diffuse textuurnormalMap - Normaal kaart voor oppervlakte detailroughnessMap - Ruwheid textuurmetalnessMap - Metaalheid textuuraoMap - Ambient occlusion kaartemissiveMap - Emissieve/glow textuurTextuurkaarten worden toegepast met behulp van TSL (Three.js Shading Language) functies voor optimale prestaties.
3D-elementen met nodeType: "model" of nodeType: "import" vertegenwoordigen geïmporteerde 3D-modellen:
Opmerking:
nodeType: "import"is een alias voor"model". Beide worden ondersteund en gedragen zich identiek.
source.url om de URL van het externe glTF/glb/FBX-bestand op te gevensourceIdanimation.currentIndex om te selecteren welke animatie moet worden afgespeeldcurrentIndex (number), speed (number, standaard 1.0), loop (boolean, standaard true)sizeParams bevat width, height, depth voor modelafmetingen
{
"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
}