องค์ประกอบ 3D แสดงถึงวัตถุสามมิติในโปรเจกต์ของคุณ รวมถึงโมเดล 3D ที่นำเข้า รูปทรงเรขาคณิตพื้นฐาน รูปร่างที่ถูกขยายจากรูปทรง 2D ข้อความ 3D และผลลัพธ์จากการดำเนินการทางพีชคณิต
องค์ประกอบ 3D มีฟิลด์ทั่วไปจาก Basic Element และ View Element ในขณะที่ยังแนะนำคุณสมบัติที่เฉพาะเจาะจงสำหรับ 3D เพิ่มเติม
| ทรัพย์สิน | ประเภท | จำเป็น | ตัวอย่าง | ช่วงค่า | คำอธิบาย |
|---|---|---|---|---|---|
| type | string | true | - | 3D | ประเภทขององค์ประกอบ สำหรับองค์ประกอบ 3D จะเป็น "3D" เสมอ |
| sourceId | string | false | - | - | รหัสประจำภายในสำหรับโมเดล 3D หรือทรัพยากรเรขาคณิต |
| ext | string | false | - | glb | gltf | fbx | obj | geometry | primitive | text3d | parametric | curve | นามสกุลไฟล์หรือประเภทโหนดขององค์ประกอบ 3D |
| externalUrl | string | false | - | - | URL ที่เลือกได้สำหรับการโหลดโมเดล glTF/glb ภายนอก เอนจินจะดึงและแคชโมเดล |
| nodeType | string | false | - | primitive | geometry | text3d | import | model | parametric | curve | ประเภทของโหนด 3D กำหนดโครงสร้างของคุณสมบัติเพิ่มเติม |
| category | string | false | - | For primitive/geometry: basic | polyhedron. For parametric: extrusion | lathe | sweep. For curve: helix | torusKnot | custom | หมวดหมู่ย่อยของโหนด 3D ค่าที่มีให้ขึ้นอยู่กับ nodeType |
| geometryType | string | false | - | - | ประเภทของเรขาคณิตพื้นฐาน ดูส่วน "Geometry Types" ด้านล่าง |
| originalWidth | number | false | - | - | ความกว้างเดิมของโมเดล 3D ในหน่วยโลก |
| originalHeight | number | false | - | - | ความสูงเดิมของโมเดล 3D ในหน่วยโลก |
| originalDepth | number | false | - | - | ความลึกเดิมของโมเดล 3D ในหน่วยโลก |
| animation | object | false | - | - | การตั้งค่าการเคลื่อนไหวสำหรับโมเดล glTF ที่มีการเคลื่อนไหว ประกอบด้วย currentIndex, speed และ loop |
นอกเหนือจากคุณสมบัติการแปลง 2D มาตรฐาน (x, y, rotation, scaleX, scaleY) องค์ประกอบ 3D รองรับคุณสมบัติการแปลงเพิ่มเติมสำหรับการจัดตำแหน่งและการหมุนสามมิติ:
| ทรัพย์สิน | ประเภท | จำเป็น | ตัวอย่าง | ช่วงค่า | คำอธิบาย |
|---|---|---|---|---|---|
| z | number | false | - | - | ตำแหน่งความลึกขององค์ประกอบในพื้นที่ 3D หน่วยจะตรงกับพิกเซล โดยที่ z=0 สอดคล้องกับระนาบผ้าใบ |
| rotationX | number | false | - | - | การหมุนรอบแกน X ในหน่วยองศา |
| rotationY | number | false | - | - | การหมุนรอบแกน Y ในหน่วยองศา |
| scaleZ | number | false | - | > 0 | ปัจจัยการปรับขนาดตามแกน Z ค่าที่มากกว่า 1 จะทำให้ขยาย ขณะที่ค่าระหว่าง 0 และ 1 จะทำให้หดตัว |
ฟิลด์ geometryType ระบุประเภทของเรขาคณิต 3D พื้นฐาน ประเภทที่มีให้จะถูกจัดระเบียบตามหมวดหมู่ (ระบุผ่านฟิลด์ category เมื่อ nodeType เป็น "geometry" หรือ "primitive"):
หมายเหตุ:
nodeType: "primitive"เป็นนามแฝงสำหรับ"geometry"ทั้งสองได้รับการสนับสนุนและทำงานเหมือนกัน
Basic Shapes (category: "basic"):
cube - กล่องหกด้านsphere - เรขาคณิตทรงกลมcylinder - เรขาคณิตทรงกระบอกcone - เรขาคณิตทรงกรวยtorus - เรขาคณิตทรงโดนัทcapsule - เรขาคณิตทรงแคปซูลdisc - แผ่นกลมแบนPolyhedrons (category: "polyhedron"):
pyramid - ปิรามิดสี่ด้านoctahedron - โพลีเฮดรอนแปดหน้าicosahedron - โพลีเฮดรอนยี่สิบหน้าdodecahedron - โพลีเฮดรอนสิบสองหน้าhexPrism - ปริซึมหกด้านtriangle - ปริซึมสามเหลี่ยมโหนดพารามิเตอร์ (nodeType: "parametric") สร้างเรขาคณิตโดยกระบวนการ:
Extrusion (category: "extrusion"):
Lathe (category: "lathe"):
Sweep (category: "sweep"):
โหนดโค้ง (nodeType: "curve") สร้างโค้งและเส้นทาง 3D:
Helix (category: "helix"):
Torus Knot (category: "torusKnot"):
Custom (category: "custom"):
การดำเนินการทางทอพอโลยี (boolean, array, mirror, compound) จะดำเนินการภายในโปรแกรมแก้ไขและผลิตผลลัพธ์เรขาคณิตมาตรฐาน การดำเนินการเหล่านี้จะถูกนำไปใช้ในเวลาที่แก้ไขและไม่ต้องการการจัดการพิเศษใน API การเรนเดอร์
องค์ประกอบ 3D สามารถสร้างได้โดยการขยายรูปทรง 2D เมื่อคุณแปลงองค์ประกอบรูปทรง 2D เป็น 3D ในโปรแกรมแก้ไข มันจะสร้างองค์ประกอบใหม่ type: "3D" พร้อมฟิลด์เพิ่มเติมดังต่อไปนี้:
| ทรัพย์สิน | ประเภท | จำเป็น | ตัวอย่าง | ช่วงค่า | คำอธิบาย |
|---|---|---|---|---|---|
| extrusionSource | object | false | - | - | ข้อมูลรูปทรง 2D เดิมที่ใช้ในการสร้างการขยาย 3D ประกอบด้วย ShapeNodeData ที่สมบูรณ์ |
| shapeSizeX | number | false | - | - | ความกว้างของรูปทรงที่ขยายในพิกเซล |
| shapeSizeY | number | false | - | - | ความสูงของรูปทรงที่ขยายในพิกเซล |
| shapeExtrusion | number | false | - | - | ความลึกของการขยายตามแกน Z ในพิกเซล |
| shapeCorner | string | false | - | round | chamfer | straight | ประเภทมุมสำหรับรูปทรงที่ขยาย |
| shapeRoundnessSmooth | number | false | - | 0 - 1 | ความเรียบของมุมที่โค้ง (0-1) |
| shapeRoundnessArc | number | false | - | - | รัศมีของมุมที่โค้ง |
| shapeBevel | number | false | - | - | ความลึกของการทำขอบสำหรับขอบ |
| shapeBevelSides | number | false | - | - | จำนวนส่วนสำหรับขอบที่ทำขอบ |
องค์ประกอบ 3D ยังสามารถแสดงข้อความสามมิติที่มีความลึกและการทำขอบ:
| ทรัพย์สิน | ประเภท | จำเป็น | ตัวอย่าง | ช่วงค่า | คำอธิบาย |
|---|---|---|---|---|---|
| textContent | string | false | - | - | เนื้อหาข้อความที่จะเรนเดอร์ใน 3D |
| textStyle3D | object | false | - | - | คุณสมบัติการจัดรูปแบบข้อความ (ฟอนต์ ขนาด น้ำหนัก ฯลฯ) ใช้ฟิลด์สไตล์ข้อความ 2D บางส่วนซ้ำ |
| textDepth | number | false | - | - | ความลึกของการขยายข้อความ 3D |
| textBevelSize | number | false | - | - | ขนาดของการทำขอบที่ขอบข้อความ |
| textBevelSegments | number | false | - | - | จำนวนส่วนสำหรับการทำขอบข้อความ |
| textCurveSegments | number | false | - | - | จำนวนส่วนสำหรับโค้งข้อความ |
องค์ประกอบ 3D ใช้ระบบวัสดุ PBR (Physically Based Rendering) ที่มีการสนับสนุนพื้นผิวอย่างครบถ้วน:
| ทรัพย์สิน | ประเภท | จำเป็น | ตัวอย่าง | ช่วงค่า | คำอธิบาย |
|---|---|---|---|---|---|
| material | object | false | - | - | การกำหนดค่าของวัสดุทั้งหมดรวมถึงคุณสมัติ PBR และแผนที่พื้นผิว |
วัตถุ material ประกอบด้วย:
physicalMaterialData - คุณสมบัติของวัสดุ PBR:
color (string) - สีพื้นฐานในรูปแบบฮีซ, ค่าเริ่มต้น: '#818cf8'roughness (number) - ความหยาบของพื้นผิว, 0-1, ค่าเริ่มต้น: 0.4metalness (number) - คุณสมบัติของโลหะ, 0-1, ค่าเริ่มต้น: 0.0opacity (number) - ความโปร่งใสของวัสดุ, 0-1, ค่าเริ่มต้น: 1.0transmission (number) - การส่งผ่านแสงสำหรับวัสดุที่เหมือนแก้ว, 0-1, ค่าเริ่มต้น: 0.0ior (number) - ดัชนีการหักเห, โดยทั่วไป 1.0-2.5, ค่าเริ่มต้น: 1.5clearcoat (number) - ความเข้มของชั้นเคลือบใส, 0-1, ค่าเริ่มต้น: 0.0clearcoatRoughness (number) - ความหยาบของเคลือบใส, 0-1, ค่าเริ่มต้น: 0.0sheen (number) - เอฟเฟกต์เงาเหมือนผ้า, 0-1, ค่าเริ่มต้น: 0.0sheenRoughness (number) - ความหยาบของเงา, 0-1, ค่าเริ่มต้น: 0.0sheenColor (string) - สีเงาthickness (number) - ความหนาของวัสดุสำหรับการส่งผ่านmaterialXPath (string) - เส้นทางการตั้งค่า MaterialX ที่เลือกได้:
Texture Maps - วัตถุวัสดุสามารถประกอบด้วย URL แผนที่พื้นผิว:
colorMap - แผนที่สีพื้นฐาน/แผนที่กระจายnormalMap - แผนที่ปกติสำหรับรายละเอียดพื้นผิวroughnessMap - แผนที่ความหยาบmetalnessMap - แผนที่โลหะaoMap - แผนที่การปิดกั้นแสงemissiveMap - แผนที่เรืองแสง/แสงแผนที่พื้นผิวจะถูกนำไปใช้โดยใช้ฟังก์ชัน TSL (Three.js Shading Language) เพื่อประสิทธิภาพที่ดีที่สุด
องค์ประกอบ 3D ที่มี nodeType: "model" หรือ nodeType: "import" แสดงถึงโมเดล 3D ที่นำเข้า:
หมายเหตุ:
nodeType: "import"เป็นนามแฝงสำหรับ"model"ทั้งสองได้รับการสนับสนุนและทำงานเหมือนกัน
source.url เพื่อระบุ URL ของไฟล์ glTF/glb/FBX ระยะไกลsourceIdanimation.currentIndex เพื่อเลือกการเคลื่อนไหวที่จะเล่นcurrentIndex (number), speed (number, ค่าเริ่มต้น 1.0), loop (boolean, ค่าเริ่มต้น true)sizeParams ประกอบด้วย width, height, depth สำหรับขนาดของโมเดล
{
"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
}