react-three-fiber
React Three Fiberを使用した3Dレンダリングを`json-render`上で実現するスキルです。`@json-render/react-three-fiber`の操作、JSONスペックからの3Dシーン構築、メッシュ・ライト・モデル・環境のレンダリング、またはThree.jsと`json-render`カタログの統合が必要な場面で活用してください。
description の原文を見る
React Three Fiber 3D renderer for json-render. Use when working with @json-render/react-three-fiber, building 3D scenes from JSON specs, rendering meshes/lights/models/environments, or integrating Three.js with json-render catalogs.
SKILL.md 本文
@json-render/react-three-fiber
json-render 用の React Three Fiber レンダラー。19 個の組み込み 3D コンポーネント。
2 つのエントリーポイント
| エントリーポイント | エクスポート | 用途 |
|---|---|---|
@json-render/react-three-fiber/catalog | threeComponentDefinitions | カタログスキーマ (R3F 依存なし、サーバーセーフ) |
@json-render/react-three-fiber | threeComponents, ThreeRenderer, ThreeCanvas, schemas | R3F 実装とレンダラー |
使用パターン
標準定義から必要な 3D コンポーネントを選択します:
import { defineCatalog } from "@json-render/core";
import { schema } from "@json-render/react/schema";
import { threeComponentDefinitions } from "@json-render/react-three-fiber/catalog";
import { defineRegistry } from "@json-render/react";
import { threeComponents, ThreeCanvas } from "@json-render/react-three-fiber";
// カタログ: 定義を選択
const catalog = defineCatalog(schema, {
components: {
Box: threeComponentDefinitions.Box,
Sphere: threeComponentDefinitions.Sphere,
AmbientLight: threeComponentDefinitions.AmbientLight,
DirectionalLight: threeComponentDefinitions.DirectionalLight,
OrbitControls: threeComponentDefinitions.OrbitControls,
},
actions: {},
});
// レジストリ: マッチング実装を選択
const { registry } = defineRegistry(catalog, {
components: {
Box: threeComponents.Box,
Sphere: threeComponents.Sphere,
AmbientLight: threeComponents.AmbientLight,
DirectionalLight: threeComponents.DirectionalLight,
OrbitControls: threeComponents.OrbitControls,
},
});
レンダリング
ThreeCanvas (便利ラッパー)
<ThreeCanvas
spec={spec}
registry={registry}
shadows
camera={{ position: [5, 5, 5], fov: 50 }}
style={{ width: "100%", height: "100vh" }}
/>
Canvas の手動セットアップ
import { Canvas } from "@react-three/fiber";
import { ThreeRenderer } from "@json-render/react-three-fiber";
<Canvas shadows>
<ThreeRenderer spec={spec} registry={registry}>
{/* 追加の R3F 要素 */}
</ThreeRenderer>
</Canvas>
利用可能なコンポーネント (19)
プリミティブ (7)
Box-- width, height, depth, materialSphere-- radius, widthSegments, heightSegments, materialCylinder-- radiusTop, radiusBottom, height, materialCone-- radius, height, materialTorus-- radius, tube, materialPlane-- width, height, materialCapsule-- radius, length, material
すべてのプリミティブが共有: position, rotation, scale, castShadow, receiveShadow, material。
ライト (4)
AmbientLight-- color, intensityDirectionalLight-- position, color, intensity, castShadowPointLight-- position, color, intensity, distance, decaySpotLight-- position, color, intensity, angle, penumbra
その他 (8)
Group-- position/rotation/scale を持つコンテナ、子要素をサポートModel-- url プロパティ経由の GLTF/GLB ローダーEnvironment-- HDRI 環境マップ (preset, background, blur, intensity)Fog-- 線形フォグ (color, near, far)GridHelper-- リファレンスグリッド (size, divisions, color)Text3D-- SDF テキスト (text, fontSize, color, anchorX, anchorY)PerspectiveCamera-- カメラ (position, fov, near, far, makeDefault)OrbitControls-- オービットコントロール (enableDamping, enableZoom, autoRotate)
共有スキーマ
カスタム 3D カタログ定義用の再利用可能な Zod スキーマ:
import { vector3Schema, materialSchema, transformProps, shadowProps } from "@json-render/react-three-fiber";
import { z } from "zod";
// カスタム 3D コンポーネント
const myComponentDef = {
props: z.object({
...transformProps,
...shadowProps,
material: materialSchema.nullable(),
myCustomProp: z.string(),
}),
description: "My custom 3D component",
};
マテリアルスキーマ
materialSchema = z.object({
color: z.string().nullable(), // デフォルト "#ffffff"
metalness: z.number().nullable(), // デフォルト 0
roughness: z.number().nullable(), // デフォルト 1
emissive: z.string().nullable(), // デフォルト "#000000"
emissiveIntensity: z.number().nullable(), // デフォルト 1
opacity: z.number().nullable(), // デフォルト 1
transparent: z.boolean().nullable(), // デフォルト false
wireframe: z.boolean().nullable(), // デフォルト false
});
スペック形式
3D スペックは標準的な json-render フラット要素形式を使用します:
{
"root": "scene",
"elements": {
"scene": {
"type": "Group",
"props": { "position": [0, 0, 0] },
"children": ["light", "box"]
},
"light": {
"type": "AmbientLight",
"props": { "intensity": 0.5 },
"children": []
},
"box": {
"type": "Box",
"props": {
"position": [0, 0.5, 0],
"material": { "color": "#4488ff", "metalness": 0.3, "roughness": 0.7 }
},
"children": []
}
}
}
依存関係
必要なピア依存関係:
@react-three/fiber>= 8.0.0@react-three/drei>= 9.0.0three>= 0.160.0react^19.0.0zod^4.0.0
ライセンス: Apache-2.0(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- vercel-labs
- ライセンス
- Apache-2.0
- 最終更新
- 不明
Source: https://github.com/vercel-labs/json-render / ライセンス: Apache-2.0
関連スキル
doubt-driven-development
重要な判断はすべて、本番環境への展開前に新しい視点から対抗的レビューを実施します。速度より正確性が重要な場合、不慣れなコードを扱う場合、本番環境・セキュリティに関わるロジック・取り消し不可の操作など影響度が高い場合、または後でバグを修正するよりも今検証する方が効率的な場合に活用してください。
apprun-skills
TypeScriptを使用したAppRunアプリケーションのMVU設計に関する総合的なガイダンスが得られます。コンポーネントパターン、イベントハンドリング、状態管理(非同期ジェネレータを含む)、パラメータと保護機能を備えたルーティング・ナビゲーション、vistestを使用したテストに対応しています。AppRunコンポーネントの設計・レビュー、ルートの配線、状態フローの管理、AppRunテストの作成時に活用してください。
desloppify
コードベースのヘルスチェックと技術負債の追跡ツールです。コード品質、技術負債、デッドコード、大規模ファイル、ゴッドクラス、重複関数、コードスメル、命名規則の問題、インポートサイクル、結合度の問題についてユーザーが質問した場合に使用してください。また、ヘルススコアの確認、次の改善項目の提案、クリーンアップ計画の作成をリクエストされた際にも対応します。29言語に対応しています。
debugging-and-error-recovery
テストが失敗したり、ビルドが壊れたり、動作が期待と異なったり、予期しないエラーが発生したりした場合に、体系的な根本原因デバッグをガイドします。推測ではなく、根本原因を見つけて修正するための体系的なアプローチが必要な場合に使用してください。
test-driven-development
テスト駆動開発により実装を進めます。ロジックの実装、バグの修正、動作の変更など、あらゆる場面で活用できます。コードが正常に動作することを証明する必要がある場合、バグ報告を受けた場合、既存機能を修正する予定がある場合に使用してください。
incremental-implementation
変更を段階的に実施します。複数のファイルに影響する機能や変更を実装する場合に使用してください。大量のコードを一度に書こうとしている場合や、タスクが一度では完結できないほど大きい場合に活用します。