3D要素は、インポートされた3Dモデル、基本的な幾何学的プリミティブ、2D形状からの押し出し形状、3Dテキスト、およびブール演算の結果を含む、プロジェクト内の三次元オブジェクトを表します。
3D要素は、基本要素およびビュー要素から共通のフィールドを共有し、さらに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 | - | - | 外部glTF/glbモデルを読み込むためのオプションのURL。エンジンはモデルを取得してキャッシュします。 |
| 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 | - | - | 基本的な幾何学のタイプ。「幾何学的タイプ」セクションを参照してください。 |
| originalWidth | number | false | - | - | ワールドユニットでの3Dモデルの元の幅。 |
| originalHeight | number | false | - | - | ワールドユニットでの3Dモデルの元の高さ。 |
| originalDepth | number | false | - | - | ワールドユニットでの3Dモデルの元の深さ。 |
| animation | object | false | - | - | アニメーションを持つglTFモデルのアニメーション設定。currentIndex、speed、およびloopプロパティを含みます。 |
標準の2D変換プロパティ(x、y、回転、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幾何学のタイプを指定します。利用可能なタイプは、カテゴリによって整理されます(nodeTypeが"geometry"または"primitive"の場合にcategoryフィールドを介して指定):
注:
nodeType: "primitive"は"geometry"のエイリアスです。どちらもサポートされ、同様に動作します。
基本形状(category: "basic"):
cube - 六面体sphere - 球形の幾何学cylinder - 円柱形の幾何学cone - 円錐形の幾何学torus - ドーナツ型の幾何学capsule - カプセル型の幾何学disc - 平らな円形ディスク多面体(category: "polyhedron"):
pyramid - 四面体のピラミッドoctahedron - 八面体の多面体icosahedron - 二十面体の多面体dodecahedron - 十二面体の多面体hexPrism - 六面体のプリズムtriangle - 三角形のプリズムパラメトリックノード(nodeType: "parametric")は、手続き的に幾何学を生成します:
押し出し(category: "extrusion"):
旋盤(category: "lathe"):
スイープ(category: "sweep"):
曲線ノード(nodeType: "curve")は、3D曲線とパスを作成します:
ヘリックス(category: "helix"):
トーラスノット(category: "torusKnot"):
カスタム(category: "custom"):
トポロジー操作(ブール、配列、ミラー、複合)はエディタ内で実行され、標準の幾何学出力を生成します。これらの操作は編集時に適用され、レンダリングAPIで特別な処理を必要としません。
3D要素は2D形状を押し出すことで作成できます。エディタで2D形状要素を3Dに変換すると、以下の追加フィールドを持つ新しいtype: "3D"要素が生成されます:
| プロパティ | タイプ | 必須 | 例 | 値の範囲 | 説明 |
|---|---|---|---|---|---|
| extrusionSource | object | false | - | - | 3D押し出しを作成するために使用された元の2D形状データ。完全な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(物理ベースのレンダリング)材料システムを使用します:
| プロパティ | タイプ | 必須 | 例 | 値の範囲 | 説明 |
|---|---|---|---|---|---|
| material | object | false | - | - | PBRプロパティとテクスチャマップを含む完全な材料構成。 |
materialオブジェクトには以下が含まれます:
physicalMaterialData - PBR材料プロパティ:
color(文字列) - 基本色の16進形式、デフォルト:'#818cf8'roughness(数値) - 表面の粗さ、0-1、デフォルト:0.4metalness(数値) - 金属的特性、0-1、デフォルト:0.0opacity(数値) - 材料の不透明度、0-1、デフォルト:1.0transmission(数値) - ガラスのような材料の光透過率、0-1、デフォルト:0.0ior(数値) - 屈折率、通常1.0-2.5、デフォルト:1.5clearcoat(数値) - クリアコーティング層の強度、0-1、デフォルト:0.0clearcoatRoughness(数値) - クリアコートの粗さ、0-1、デフォルト:0.0sheen(数値) - 布のような光沢効果、0-1、デフォルト:0.0sheenRoughness(数値) - 光沢の粗さ、0-1、デフォルト:0.0sheenColor(文字列) - 光沢の色合いthickness(数値) - 透過のための材料の厚さmaterialXPath(文字列) - オプションのMaterialXプリセットパス:
テクスチャマップ - 材料オブジェクトにはテクスチャマップのURLが含まれる場合があります:
colorMap - 基本色/拡散テクスチャnormalMap - 表面の詳細用の法線マップroughnessMap - 粗さテクスチャmetalnessMap - 金属感テクスチャaoMap - 環境遮蔽マップemissiveMap - 発光/グローのテクスチャテクスチャマップは、最適なパフォーマンスのためにTSL(Three.js Shading Language)関数を使用して適用されます。
nodeType: "model"またはnodeType: "import"を持つ3D要素は、インポートされた3Dモデルを表します:
注:
nodeType: "import"は"model"のエイリアスです。どちらもサポートされ、同様に動作します。
source.urlを使用して、リモートglTF/glb/FBXファイルのURLを指定しますsourceIdを使用してモデルを取得し、キャッシュしますanimation.currentIndexを使用して再生するアニメーションを選択しますcurrentIndex(数値)、speed(数値、デフォルト1.0)、loop(ブール、デフォルト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
}