VORA VIVIVORA VIVI

CHARACTER STUDIO / カスタムガイド

自分だけの VIVIを
つくろう。

透過イラストと、いくつかの JSON ファイル。アプリを再ビルドせずに、キャラクターと動きを追加できます。

VORA VIVI はデスクトップ専用です。インストール版は初回リリースを準備中です。以下は実際のアプリ検証器に基づく制作仕様です。

VIVIYOUR VIVI
YOUR STYLE ✦

01 / START

動くサンプルから、はじめよう。

サンプルの .vivipack には、透過イラスト12枚のタイピングと静止した待機ポーズが入っています。ZIP として展開し、自分のイラストに置き換えてください。全動作を含むパックではありません。

編集するときは packId を自分の名前に、packVersion を新しい番号に変更してください。同じ ID・バージョンを別の内容で上書きしません。

02 / YOUR FOLDER

このフォルダーに入れます。

VIVI を右クリック → キャラクター → キャラクターフォルダーを開く、で実際の保存先を確認できます。次の場所に <packId>/<packVersion>/ を作成してください。

macOS~/Library/Application Support/im.vora.vivi/characters/
Windows%APPDATA%\im.vora.vivi\characters\
Linux~/.local/share/im.vora.vivi/characters/

Windows はエクスプローラーのアドレス欄、macOS は Finder → 移動 → フォルダへ移動を使います。Linux で XDG_DATA_HOME を設定している場合は、その場所が優先されます。

<packId>/<packVersion>/character.json

03 / THE FILES

キャラクターひとつに、フォルダーひとつ。

character.json はキャラクター情報と動作の対応表、frames.json はフレームの順番と表示時間です。ファイルのパスはすべてパックのルートを基準にします。

my-vivi.starter/
└── 1.0.0/
    ├── character.json
    ├── checksums.json
    └── clips/
        ├── idle/frames.json
        └── typing/
            ├── frames.json
            ├── typing-01.png
            └── … typing-12.png

character.json — キャラクターとイベント

{
  "schemaVersion": 1,
  "packId": "my-vivi.starter",
  "packVersion": "1.0.0",
  "canvas": {
    "width": 1024,
    "height": 896
  },
  "defaultDisplayHeight": 160,
  "clips": {
    "typing": {
      "frameCount": 12,
      "sequence": "clips/typing/frames.json",
      "entryPose": "typing.ready",
      "exitPose": "typing.ready",
      "loop": true
    }
  },
  "eventBindings": {
    "idle": [
      "typing"
    ],
    "chat.waiting": [
      "typing"
    ]
  }
}

frames.json — フレーム順

{
  "frames": [
    {
      "file": "clips/typing/typing-01.png",
      "durationMs": 100,
      "marker": "rest"
    },
    {
      "file": "clips/typing/typing-02.png",
      "durationMs": 100
    }
  ]
}

以下はサンプルの主要部分です。パックには12枚の原画と完全な JSON が含まれます。

04 / MAKE IT MOVE

全身のイラストで、自然な動きに。

一枚を揺らしたり手足だけを回転させたりせず、動作ごとの全身原画を連続させます。開始・終了ポーズと足の接地点をそろえてください。

  • 透過背景の PNG または WebP。すべてのフレームを同じキャンバスサイズにします。
  • 原画は最大2048×2048、表示高さは80〜320px。推奨表示高さは160pxです。
  • 1動作は1〜240フレーム、1フレームは16〜30,000ms。サンプルは12フレーム・100msです。
  • anchor は足の基準点、bubbleAnchor は吹き出しの起点です。座標は0〜1で指定します。
  • ループの entryPose と exitPose は同じ値にします。異なるポーズはつなぎ原画と transitions で結びます。
  • スクリプトや実行ファイルは含めません。展開後のパック全体は最大512MiBです。

どんなとき、どの動きを?

イベント動き
idle基本の待機 — 必須
chat.waiting最初の返答を待つ間
chat.streaming回答のストリーミング中
chat.complete回答完了
input.listening音声入力中
file.uploadingファイルのアップロード中
notificationVORA の通知
calendar.reminderカレンダーのリマインダー
cua.workingコンピューター操作中
update.available新バージョンの通知

動作がないイベントには fallbacks を設定できます。循環参照は禁止です。季節・メディア別の拡張イベントは、アプリの対応仕様に合わせて追加します。

05 / TRY IT ON

できあがったら、VIVI へ。

  1. 簡単な方法:フォルダー内のファイルを ZIP にして拡張子を .vivipack に変更します。ZIP のルートに character.json が必要です。
  2. VIVI を右クリック → キャラクター → パックを読み込む、から .vivipack を選択します。検証後に適用されます。
  3. 直接コピー:上記の OS 別フォルダーに <packId>/<packVersion>/ を配置し、キャラクター一覧を更新して選択します。
  4. checksums.json がある場合は、変更ファイルの SHA-256 も更新します。個人用パックでは省略できます。
  5. 不正なパックは適用せず、現在のキャラクターを維持します。アプリのインストール先にある標準 VIVI を直接編集しないでください。

06 / A LITTLE HELP

うまくいかないときは。

一覧に出ません+

character.json の位置、packId、packVersion を確認して一覧を更新します。

イラストが飛んだり切れたりします+

サイズ・透過余白・anchor を全フレームでそろえ、160pxの実サイズで確認します。

フレーム数が違います+

frameCount と frames 配列の長さを一致させます。ファイル名の大文字・小文字も確認してください。

切り替えが不自然です+

前の exitPose と次の entryPose を結ぶ原画を登録します。フェードだけで代用しません。

ハッシュが一致しません+

編集後に checksums.json の SHA-256 を更新するか、個人用パックではこのファイルを省略します。

↗

制作と適用は PC で。

VIVI は Windows、macOS、Linux 専用です。PC でこのページを開き、サンプルをダウンロードしてください。

vivi.vora.im