Jyaan AI Reference
Jyaan AI Reference Version: 1 / Jyaan Import Format Version: 1
This document is the official, machine-readable specification of Jyaan for use by external AI systems (e.g. ChatGPT, Claude, Gemini). It is not a marketing page.
Jyaan is a web application for building and publishing interactive, browser-playable 3D experiences. A creator arranges one or more scenes in a 3D space, places objects (primitive shapes, 3D character models, camera, sound, effects) inside each scene, and animates them over time using keyframes. Scenes can show subtitle text, present a choice (a poll with selectable options), and branch to different next scenes depending on which option a viewer picks or on the state of another choice. The finished project can be played back by any viewer as a sequential, choice-driven 3D story.
Jyaan上の1つの作品。名前・説明・公開範囲(visibility: public/unlisted/private)などのメタ情報と、複数のSceneを持つ。
Source: lib/types/database.ts: Project
Projectを構成する再生単位。id・name・objects(配置されたSceneObjectの配列)・duration(再生時間、秒)・nextSceneId(再生終了後に自動で遷移する次のScene、省略可)を持つ。
Source: components/movie/types.ts: Scene
Scene内に配置される個々の要素。id・name・type(box/sphere/cone/torus/subtitle/camera/model/avatar/character/effect/sound/background/preset/subtitle-widget/poll-widget/custom3d/brightness のいずれか)・keyframes・properties・action(クリック時の遷移先など)を持つ。
Source: components/movie/types.ts: SceneObject
SceneObjectの、ある時刻における状態(position/rotation/scale/color/visibleなど)。同じオブジェクトに複数のKeyframeを時刻順に並べることで、時間経過に伴うアニメーションを表現する。
Source: components/movie/types.ts: Keyframe
画面に表示されるテキスト。Scene内に配置する立体的な吹き出し(type: "subtitle", bubbleType: speech/thought/shout/whisper/narration)と、画面全体に重ねて表示するオーバーレイテキスト(type: "subtitle-widget")の2種類がある。
Source: components/movie/types.ts: SubtitleProperties, SubtitleWidgetProperties
質問文(question)と複数の選択肢(options)を画面に表示する要素。Scene内に配置するオブジェクト(type: "poll-widget")と、画面下部などに重ねて表示するオーバーレイ(UIWidget, type: "poll")の2種類がある。各選択肢は選ばれたときの遷移先(action)を持つ。
Source: components/movie/types.ts: PollWidgetProperties, PollWidgetData, PollOption
次に再生されるSceneを決定する仕組み。(1) Scene.nextSceneId による自動遷移、(2) SceneObjectのクリック時アクション(ObjectAction.targetSceneId)による遷移、(3) 選択肢(PollOption.action)による遷移の3種類があり、(3) はさらに別の選択肢の回答状態(condition.kind: "hasAnswered" | "isOpen")に応じて遷移先を変える条件分岐(単一条件のみ、AND/OR組み合わせ無し)に対応する。
Source: components/movie/types.ts: PollOption, ObjectAction / lib/scene-transitions.ts
再利用可能な3Dキャラクターアセット。GLBモデルとアニメーション一覧、表情・モーション設定を持つマスターデータ。Scene内では type: "character" のSceneObjectがcharacterId/expressionId/motionIdで参照する。
Source: components/movie/types.ts: CharacterProperties / app/master/characters/[id]/page.tsx
Project内のSceneObjectを整理するためのフォルダ。id・name・parentIdを持つ。
Source: components/movie/types.ts: ObjectFolder
SceneObjectに適用できる再利用可能な時間変化の型(移動・回転・拡大縮小・表示切替・色変更・字幕表示・待機など)。あらかじめ用意されたビルトインAction(下記 Available Features 参照)を組み合わせて、オブジェクトのKeyframe列を生成する。
Source: components/movie/types.ts: BUILTIN_ACTIONS, ActionTemplate
Description: 複数のSceneを作成し、自動的に連続再生されるように繋ぐ。
Parameters:
Constraints:
Example:
{ "id": "scene-1", "name": "オープニング", "duration": 8, "nextSceneId": "scene-2" }Source: components/movie/types.ts: Scene / lib/movie/save-project.ts: saveSceneTransitions
Description: Scene内に立体物(box/sphere/cone/torus/model/custom3d など)や照明・背景などを配置し、Keyframeで時間経過に伴う位置・回転・スケール・色・表示/非表示を変化させる。
Parameters:
Constraints:
Example:
{ "id": "box-1", "name": "立方体", "type": "box", "keyframes": [ { "time": 0, "position": [0,0,0], "rotation": [0,0,0], "scale": [1,1,1] }, { "time": 3, "position": [0,2,0], "rotation": [0,0,0], "scale": [1,1,1] } ] }Source: components/movie/types.ts: SceneObject, Keyframe
Description: テキストを画面に表示する。3D空間内の吹き出し表示と、画面全体へのオーバーレイ表示の2形式がある。
Parameters:
Constraints:
Example:
{ "id": "sub-1", "name": "字幕", "type": "subtitle-widget", "keyframes": [{ "time": 0, "position": [0,0,0], "rotation": [0,0,0], "scale": [1,1,1] }], "properties": { "text": "占いを始めますか?" } }Source: components/movie/types.ts: SubtitleProperties, SubtitleWidgetProperties
Description: 質問と複数の選択肢を表示し、視聴者に選ばせる。各選択肢は選択された時にScene遷移またはURLへの移動を実行できる。
Parameters:
Constraints:
Example:
{ "id": "poll-1", "name": "アンケート", "type": "poll-widget", "keyframes": [{ "time": 0, "position": [0,0,0], "rotation": [0,0,0], "scale": [1,1,1] }], "properties": { "question": "占いを始めますか?", "options": [ { "id": "opt-yes", "text": "はい", "action": { "type": "scene", "targetSceneId": "scene-yes" } }, { "id": "opt-no", "text": "いいえ", "action": { "type": "scene", "targetSceneId": "scene-no" } } ] } }Source: components/movie/types.ts: PollWidgetProperties, PollOption
Description: 次に再生するSceneを、自動遷移・クリック操作・選択肢の回答のいずれかによって切り替える。
Parameters:
Constraints:
Example:
{ "type": "click", "targetSceneId": "scene-3" }Source: lib/scene-transitions.ts: getSceneTransitionTargets, resolvePollOptionTargetSceneId
Description: オブジェクトに適用できるビルトインの時間変化パターン一覧(下表)。id/nameはコード内のBUILTIN_ACTIONS定義に基づく。
Parameters:
Constraints:
Example:
builtin-move, builtin-rotate, builtin-scale, builtin-show-subtitle, builtin-poll-show など(下表参照)Source: components/movie/types.ts: BUILTIN_ACTIONS
Description: マスターデータとして登録済みのCharacter(3Dモデル+アニメーション)をScene内に配置する。
Parameters:
Constraints:
Example:
{ "type": "character", "properties": { "characterId": "char-abc" } }Source: components/movie/types.ts: CharacterProperties
Description: Scene内のカメラの視点・視野角をKeyframeで制御する。
Parameters:
Constraints:
(none)
Example:
{ "type": "camera", "properties": { "lookAtTarget": [0,0,0], "fov": 50 } }Source: components/movie/types.ts: CameraProperties
| id | name |
|---|---|
| builtin-init | 初期設定 |
| builtin-wait | 待つ |
| builtin-toggle-visibility | 表示を切り替え |
| builtin-change-color | 色を変える |
| builtin-move | 移動 |
| builtin-move-x | 横にずれる |
| builtin-move-y | 上下にずれる |
| builtin-move-z | 前後にずれる |
| builtin-rotate | 回転する |
| builtin-rotate-x | 横回転 |
| builtin-rotate-y | 上下回転 |
| builtin-rotate-z | 前後回転 |
| builtin-scale | 大きさを変える |
| builtin-scale-x | 横の大きさを変える |
| builtin-scale-y | 上下の大きさを変える |
| builtin-scale-z | 前後の大きさを変える |
| builtin-change-text | 文字を変える |
| builtin-change-subtitle-color | 字幕の色を変える |
| builtin-show-subtitle | 字幕を出�� |
| builtin-subtitle-wait | 待つ(字幕) |
| builtin-poll-show | アンケート表示 |
| builtin-poll-hide | アンケート非表示 |
| builtin-poll-wait | 待つ(アンケート) |
| builtin-camera-on | カメラON |
| builtin-camera-off | カメラOFF |
| builtin-bounce | 弾む |
| builtin-shake | 揺れる |
| builtin-pulse | 鼓動 |
| builtin-speak | 喋る |
| builtin-brightness-wait | 待つ(照明) |
| builtin-brightness-change | タイプを変える(照明) |
外部AIがJyaan用データを生成するときに使用できる操作(Import Format中の actions[].type)の一覧です。
新しいSceneをProjectに追加する。
Required:
Optional:
Constraints:
既存のSceneのフィールドを更新する。
Required:
Optional:
Constraints:
SceneのnextSceneId(自動遷移先)を設定する、update_sceneの簡略形。
Required:
Optional:
(none)
Constraints:
Sceneに新しいSceneObjectを追加する。
Required:
Optional:
(none)
Constraints:
既存のSceneObjectのkeyframes(position/rotation/scaleの時間変化)を追加・置き換える。
Required:
Optional:
(none)
Constraints:
字幕(Subtitle)を表すSceneObjectをSceneに追加する。add_objectのtype固定バリエーション。
Required:
Optional:
Constraints:
既存の字幕SceneObjectのproperties(テキストや色など)を更新する。
Required:
Optional:
(none)
Constraints:
選択肢(Choice/Poll)を表すSceneObject(type: 'poll-widget')をSceneに追加する。
Required:
Optional:
Constraints:
外部AIがJyaanへ渡すデータの正式な形式です。機械可読なJSON Schemaは /ai/schema.json を参照してください。
{
"version": 1,
"actions": []
}字幕を表示 → 選択肢を表示 → 回答によって別Sceneへ遷移する最小構成の例です。
{
"version": 1,
"actions": [
{
"type": "create_scene",
"id": "scene-intro",
"name": "導入",
"duration": 10
},
{
"type": "create_scene",
"id": "scene-yes",
"name": "はいルート",
"duration": 5
},
{
"type": "create_scene",
"id": "scene-no",
"name": "い��えルート",
"duration": 5
},
{
"type": "add_subtitle",
"sceneId": "scene-intro",
"objectId": "sub-1",
"subtitleType": "subtitle-widget",
"properties": {
"text": "占いを始めますか?"
}
},
{
"type": "add_choice",
"sceneId": "scene-intro",
"objectId": "poll-1",
"question": "占いを始めますか?",
"options": [
{
"id": "opt-yes",
"text": "はい",
"action": {
"type": "scene",
"targetSceneId": "scene-yes"
}
},
{
"id": "opt-no",
"text": "いいえ",
"action": {
"type": "scene",
"targetSceneId": "scene-no"
}
}
]
}
]
}Jyaan AI Reference Version: 1
Jyaan Import Format Version: 1
Jyaanの仕様が変わった場合、これらのバージョン番号が更新されます。外部AIが生成したデータのImport Format Versionが現在の値と異なる場合、互換性が無い可能性があるため、最新の /docs/ai.md を再取得してください。