春日部つむぎとLooking Glass Portrait　～モーションの追加～

# はじめに
以下の記事の続きです。

https://qiita.com/yasubehe/items/7a7c3d4f032aaf308df1

今回は、「Anime Girls Idle Animations」（有料）を使用してもっと春日部つむぎを動かしたいと思います。
今回は、少しソースコードを修正します。どこをどう直すか書くので参考にしてください。

# こんなものを簡単につくる話です。
<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">動き多めにしてみた<a href="https://twitter.com/hashtag/%E6%98%A5%E6%97%A5%E9%83%A8%E3%81%A4%E3%82%80%E3%81%8E?src=hash&amp;ref_src=twsrc%5Etfw">#春日部つむぎ</a> <a href="https://twitter.com/hashtag/VOICEVOX?src=hash&amp;ref_src=twsrc%5Etfw">#VOICEVOX</a> <a href="https://twitter.com/hashtag/ChatGPT?src=hash&amp;ref_src=twsrc%5Etfw">#ChatGPT</a> <a href="https://twitter.com/hashtag/ChatdollKit?src=hash&amp;ref_src=twsrc%5Etfw">#ChatdollKit</a> <a href="https://t.co/yxwGy4Hv5D">pic.twitter.com/yxwGy4Hv5D</a></p>&mdash; ヤス (@yasubehe) <a href="https://twitter.com/yasubehe/status/1771196196708651517?ref_src=twsrc%5Etfw">March 22, 2024</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

# 1. VSCodeのインストールと設定
VSCodeをインストールします。
以下のページがとても参考になりました。

https://zenn.dev/tmb/articles/1444e0a85543e5

# 2. Anime Girls Idle Animationsの追加
モーションの作り方の知識は皆無なので、ここは大人しく購入します。

https://assetstore.unity.com/packages/3d/animations/anime-girl-idle-animations-150397

Unity Hubから以前作成したKasukabeTugumiAIを開きます。
次に、Window > Package Manager 選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/91405/a1c0bd61-8c73-d712-83c4-755428619658.png)

購入した「Anime Girls Idle Animations」が一覧に表示されます。「Anime Girls Idle Animations」を選択して「Download」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/91405/70eaf030-0016-1fcb-4808-075e31878fef.png)

次に「Import」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/91405/f598a411-4740-c255-d375-759c7fd27ccf.png)

Free版の時と同様にAnimationsのみ使用するため、ほかのチェックを外してから「Import」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/91405/2a18d7a6-2524-f2cf-3dcd-300cc6ee8723.png)


# 3. アニメーションの取り込み
SampleSceneからChatdollKitVRMを選択します。
次に、InspectorからModel Controller (Script)を選択します。
Model Controller (Script)の右側の三点リーダーをクリックし、Setup Animatorをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/91405/58860c80-0c14-01f3-2698-a39ec122c8dd.png)

ファイルダイアログで、Assets\AnimeGirlIdleAnimations\Animationsに移動し、「フォルダーの選択」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/91405/742865b0-62db-3c7e-6089-90251b85ba7f.png)

Base Layerを選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/91405/f8dc2844-9c09-8399-86df-e017b5a54313.png)

Additive Layerを選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/91405/84777a9f-7c40-e0f0-6bb4-307bec112f10.png)

Base Layerを選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/91405/e7752b7e-40ef-3720-6a11-7e8a671b62a4.png)

Projectの Assets > AnimeGirlIdleAnimations > Animations を開き、「Tsumugi_sEifuku」をダブルクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/91405/dd107ad2-fc49-00a9-144d-daf7217850cf.png)

Additive Layerを選択し、歯車をクリックしてWeightを1、BlendingをAdditiveに変更します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/91405/ad459df0-4c9b-da85-40a7-8623447facea.png)

# 4. アニメーションの設定
アイドル時のモーションを設定します。
SampleSceneからChatdollKitVRMを選択します。
次に、InspectorからModel Controller (Script)を選択します。
Idele Animation Value に 19 を設定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/91405/5048099d-9c1b-2d84-26f5-d756abf965f8.png)

アイドル時のモーションを追加します。
SampleSceneからChatdollKitVRMを選択します。
次に、InspectorからMain(Script)を選択します。
Main(Script)の右側の三点リーダーをクリックし、Edit Scriptをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/91405/51a814fa-d1d7-db5c-a6a7-fb0e585c949c.png)

次に以下の赤枠の部分にアイドル時（何もしていないとき）の動作を追加します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/91405/ed8d9877-f202-028c-8a8c-9c61832a0df0.png)

追加するコード。
AddIdleFaceは、顔の表情です。アイドル時の動作で瞬きするようにしています。
AddIdleAnimationはアイドル時の動作です。複数登録することで、その中からランダムで動作が選択されます。
Free版と異なり、動作が多いので好きなものを登録します。
```c#
            modelController.AddIdleFace("normal", "Blink");

            modelController.AddIdleAnimation(new Model.Animation("BaseParam",  4, 5.0f, "AGIA_Layer_swing_body_01", "Additive Layer"));    // スイングボディ + 落ち着いて背中に手をついて
            modelController.AddIdleAnimation(new Model.Animation("BaseParam",  5, 5.0f, "AGIA_Layer_swing_body_01", "Additive Layer"));    // スイングボディ + 前方に落ち着いて手を置く
            modelController.AddIdleAnimation(new Model.Animation("BaseParam", 19, 5.0f, "AGIA_Layer_swing_body_01", "Additive Layer"));    // スイングボディ + ジェネリック
            modelController.AddIdleAnimation(new Model.Animation("BaseParam", 24, 5.0f, "AGIA_Layer_swing_body_01", "Additive Layer"));    // スイングボディ + セクシーポーズ

            // modelController.AddIdleAnimation(new Model.Animation("BaseParam",  0, 5.0f));    // 腰に手を当てて怒っている
            // modelController.AddIdleAnimation(new Model.Animation("BaseParam",  1, 5.0f));    // 怒りの拳前
            // modelController.AddIdleAnimation(new Model.Animation("BaseParam",  2, 5.0f));    // ボーイッシュな右手を首に
            // modelController.AddIdleAnimation(new Model.Animation("BaseParam",  3, 5.0f));    // 胸に手を当てる勇敢な
            // modelController.AddIdleAnimation(new Model.Animation("BaseParam",  4, 5.0f));    // 落ち着いて背中に手をついて
            // modelController.AddIdleAnimation(new Model.Animation("BaseParam",  5, 5.0f));    // 前方に落ち着いて手を置く
            // modelController.AddIdleAnimation(new Model.Animation("BaseParam",  6, 5.0f));    // 猫
            // modelController.AddIdleAnimation(new Model.Animation("BaseParam",  7, 5.0f));    // 上品な左利きの腰
            // modelController.AddIdleAnimation(new Model.Animation("BaseParam",  8, 5.0f));    // 懸念_右側_前部
            // modelController.AddIdleAnimation(new Model.Animation("BaseParam",  9, 5.0f));    // 泣く
            // modelController.AddIdleAnimation(new Model.Animation("BaseParam", 10, 5.0f));    // かわいい_前手
            // modelController.AddIdleAnimation(new Model.Animation("BaseParam", 11, 5.0f));    // かわいい手_突き出し
            // modelController.AddIdleAnimation(new Model.Animation("BaseParam", 12, 5.0f));    // かわいい前傾姿勢
            // modelController.AddIdleAnimation(new Model.Animation("BaseParam", 13, 5.0f));    // 拒否
            // modelController.AddIdleAnimation(new Model.Animation("BaseParam", 14, 5.0f));    // 元気な右拳アップ
            // modelController.AddIdleAnimation(new Model.Animation("BaseParam", 15, 5.0f));    // 元気な右手のピース
            // modelController.AddIdleAnimation(new Model.Animation("BaseParam", 16, 5.0f));    // エネルギッシュ_フレックス
            // modelController.AddIdleAnimation(new Model.Animation("BaseParam", 17, 5.0f));    // うんざり_前かがみ
            // modelController.AddIdleAnimation(new Model.Animation("BaseParam", 18, 5.0f));    // 顔の右側にフェドアップ
            // modelController.AddIdleAnimation(new Model.Animation("BaseParam", 19, 5.0f));    // ジェネリック
            // modelController.AddIdleAnimation(new Model.Animation("BaseParam", 20, 5.0f));    // 笑う
            // modelController.AddIdleAnimation(new Model.Animation("BaseParam", 21, 5.0f));    // 右利きで後ろ向きに
            // modelController.AddIdleAnimation(new Model.Animation("BaseParam", 22, 5.0f));    // 指を指す
            // modelController.AddIdleAnimation(new Model.Animation("BaseParam", 23, 5.0f));    // セクシーな右手のとがった指
            // modelController.AddIdleAnimation(new Model.Animation("BaseParam", 24, 5.0f));    // セクシーポーズ
            // modelController.AddIdleAnimation(new Model.Animation("BaseParam", 25, 5.0f));    // セクシー_リーン_フォワード
            // modelController.AddIdleAnimation(new Model.Animation("BaseParam", 26, 5.0f));    // 背中に手を当てるストレス
            // modelController.AddIdleAnimation(new Model.Animation("BaseParam", 27, 5.0f));    // サプライズハンズオープンフロント
            // modelController.AddIdleAnimation(new Model.Animation("BaseParam", 28, 5.0f));    // 考える
            // modelController.AddIdleAnimation(new Model.Animation("BaseParam", 29, 5.0f));    // 何？
            // modelController.AddIdleAnimation(new Model.Animation("BaseParam", 30, 5.0f));    // 猫の感情
            // modelController.AddIdleAnimation(new Model.Animation("BaseParam", 31, 5.0f));    // かわいいエモート
            // modelController.AddIdleAnimation(new Model.Animation("BaseParam", 32, 5.0f));    // エネティック
            // modelController.AddIdleAnimation(new Model.Animation("BaseParam", 33, 5.0f));    // 指を指すエモート
            // modelController.AddIdleAnimation(new Model.Animation("BaseParam", 34, 5.0f));    // 走る
            // modelController.AddIdleAnimation(new Model.Animation("BaseParam", 35, 5.0f));    // 歩く
            // modelController.AddIdleAnimation(new Model.Animation("BaseParam", 36, 5.0f));    // ウェーブアーム
            // modelController.AddIdleAnimation(new Model.Animation("BaseParam", 37, 5.0f));    // ウェーブハンド
            // modelController.AddIdleAnimation(new Model.Animation("BaseParam", 38, 5.0f));    // 手を振る
            // modelController.AddIdleAnimation(new Model.Animation("BaseParam", 39, 5.0f));    // 何？エモート

            // // Base Layerとの組み合わせでアニメーションを生成
            // modelController.AddIdleAnimation(new Model.Animation("BaseParam", 19, 3.0f, "AGIA_Layer_laugh_down_01",      "Additive Layer"));    // 笑いダウン
            // modelController.AddIdleAnimation(new Model.Animation("BaseParam", 19, 3.0f, "AGIA_Layer_laugh_up_01",        "Additive Layer"));    // 笑い声を上げる
            // modelController.AddIdleAnimation(new Model.Animation("BaseParam", 19, 3.0f, "AGIA_Layer_look_away_01",       "Additive Layer"));    // 目をそらす
            // modelController.AddIdleAnimation(new Model.Animation("BaseParam", 19, 3.0f, "AGIA_Layer_look_away_angry_01", "Additive Layer"));    // 目をそらして怒る
            // modelController.AddIdleAnimation(new Model.Animation("BaseParam", 19, 3.0f, "AGIA_Layer_nod_once_01",        "Additive Layer"));    // うなずき1回
            // modelController.AddIdleAnimation(new Model.Animation("BaseParam", 19, 3.0f, "AGIA_Layer_nod_twice_01",       "Additive Layer"));    // 二度うなずく
            // modelController.AddIdleAnimation(new Model.Animation("BaseParam", 19, 3.0f, "AGIA_Layer_shake_body_01",      "Additive Layer"));    // シェイクボディ
            // modelController.AddIdleAnimation(new Model.Animation("BaseParam", 19, 3.0f, "AGIA_Layer_shake_head_01",      "Additive Layer"));    // シェイクヘッド
            // modelController.AddIdleAnimation(new Model.Animation("BaseParam", 19, 3.0f, "AGIA_Layer_surprise_01",        "Additive Layer"));    // 驚き
            // modelController.AddIdleAnimation(new Model.Animation("BaseParam", 19, 3.0f, "AGIA_Layer_swing_body_01",      "Additive Layer"));    // スイングボディ
            // modelController.AddIdleAnimation(new Model.Animation("BaseParam", 19, 3.0f, "AGIA_Layer_tilt_neck_01",       "Additive Layer"));    // ティルトネック
            // modelController.AddIdleAnimation(new Model.Animation("BaseParam", 19, 3.0f, "AGIA_Layer_turn_left_01",       "Additive Layer"));    // 左折してください
            // modelController.AddIdleAnimation(new Model.Animation("BaseParam", 19, 3.0f, "AGIA_Layer_turn_right_01",      "Additive Layer"));    // 右折

```

次に、以下の部分をコメント化します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/91405/06d3528c-2952-faab-6641-b1ee19cb38aa.png)

詳細な設定については以下を見ましょう。
複数のアニメーションをつなげて一つの動作として設定することができます。
後でやってみよう。。。

https://github.com/uezo/ChatdollKit/blob/master/Documents/manual.ja.md#%E3%82%A2%E3%82%A4%E3%83%89%E3%83%AB%E6%99%82%E3%81%AE%E6%8C%AF%E3%82%8B%E8%88%9E%E3%81%84



次に会話時の動作パターンを増やします。
以下の赤枠の部分に動作を追加します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/91405/5454922a-16bc-f89b-2fe9-baee054b0478.png)

通常の動作パターンの一覧です。Additive LayerとBase Layerの組み合わせでアニメーションを増やすこともできます。
```c#
                    llmContentSkill.RegisterAnimation("angry_hands_on_waist",             new Model.Animation("BaseParam",  0, 3.0f));    // 腰に手を当てて怒っている
                    llmContentSkill.RegisterAnimation("angry_fists_front",                new Model.Animation("BaseParam",  1, 3.0f));    // 怒りの拳前
                    llmContentSkill.RegisterAnimation("boyish_right_hand_on_neck",        new Model.Animation("BaseParam",  2, 3.0f));    // ボーイッシュな右手を首に
                    llmContentSkill.RegisterAnimation("brave_hand_on_chest",              new Model.Animation("BaseParam",  3, 3.0f));    // 胸に手を当てる勇敢な
                    llmContentSkill.RegisterAnimation("calm_hands_on_back",               new Model.Animation("BaseParam",  4, 3.0f));    // 落ち着いて背中に手をついて
                    llmContentSkill.RegisterAnimation("calm_hands_on_front",              new Model.Animation("BaseParam",  5, 3.0f));    // 前方に落ち着いて手を置く
                    llmContentSkill.RegisterAnimation("cat",                              new Model.Animation("BaseParam",  6, 3.0f));    // 猫
                    llmContentSkill.RegisterAnimation("classy_left_hand_on_waist",        new Model.Animation("BaseParam",  7, 3.0f));    // 上品な左利きの腰
                    llmContentSkill.RegisterAnimation("concern_right_hand_front",         new Model.Animation("BaseParam",  8, 3.0f));    // 懸念_右側_前部
                    llmContentSkill.RegisterAnimation("cry",                              new Model.Animation("BaseParam",  9, 3.0f));    // 泣く
                    llmContentSkill.RegisterAnimation("cute_hands_on_front",              new Model.Animation("BaseParam", 10, 3.0f));    // かわいい_前手
                    llmContentSkill.RegisterAnimation("cute_hands_stick_out",             new Model.Animation("BaseParam", 11, 3.0f));    // かわいい手_突き出し
                    llmContentSkill.RegisterAnimation("cute_leaning_forward",             new Model.Animation("BaseParam", 12, 3.0f));    // かわいい前傾姿勢
                    llmContentSkill.RegisterAnimation("deny",                             new Model.Animation("BaseParam", 13, 3.0f));    // 拒否
                    llmContentSkill.RegisterAnimation("energetic_right_fist_up",          new Model.Animation("BaseParam", 14, 3.0f));    // 元気な右拳アップ
                    llmContentSkill.RegisterAnimation("energetic_right_hand_piece",       new Model.Animation("BaseParam", 15, 3.0f));    // 元気な右手のピース
                    llmContentSkill.RegisterAnimation("energetic_flex",                   new Model.Animation("BaseParam", 16, 3.0f));    // エネルギッシュ_フレックス
                    llmContentSkill.RegisterAnimation("fedup_slouching",                  new Model.Animation("BaseParam", 17, 3.0f));    // うんざり_前かがみ
                    llmContentSkill.RegisterAnimation("fedup_right_hand_on_face",         new Model.Animation("BaseParam", 18, 3.0f));    // 顔の右側にフェドアップ
                    llmContentSkill.RegisterAnimation("generic",                          new Model.Animation("BaseParam", 19, 3.0f));    // ジェネリック
                    llmContentSkill.RegisterAnimation("laugh",                            new Model.Animation("BaseParam", 20, 3.0f));    // 笑う
                    llmContentSkill.RegisterAnimation("pitiable_right_hand_on_back_head", new Model.Animation("BaseParam", 21, 3.0f));    // 右利きで後ろ向きに
                    llmContentSkill.RegisterAnimation("point_finger",                     new Model.Animation("BaseParam", 22, 3.0f));    // 指を指す
                    llmContentSkill.RegisterAnimation("sexy_right_hand_pointy_finger",    new Model.Animation("BaseParam", 23, 3.0f));    // セクシーな右手のとがった指
                    llmContentSkill.RegisterAnimation("sexy_pose",                        new Model.Animation("BaseParam", 24, 3.0f));    // セクシーポーズ
                    llmContentSkill.RegisterAnimation("sexy_lean_forward",                new Model.Animation("BaseParam", 25, 3.0f));    // セクシー_リーン_フォワード
                    llmContentSkill.RegisterAnimation("stress_hands_on_back_head",        new Model.Animation("BaseParam", 26, 3.0f));    // 背中に手を当てるストレス
                    llmContentSkill.RegisterAnimation("surprise_hands_open_front",        new Model.Animation("BaseParam", 27, 3.0f));    // サプライズハンズオープンフロント
                    llmContentSkill.RegisterAnimation("think",                            new Model.Animation("BaseParam", 28, 3.0f));    // 考える
                    llmContentSkill.RegisterAnimation("what",                             new Model.Animation("BaseParam", 29, 3.0f));    // 何
                    llmContentSkill.RegisterAnimation("cat_emote",                        new Model.Animation("BaseParam", 30, 3.0f));    // 猫の感情
                    llmContentSkill.RegisterAnimation("cute_emote",                       new Model.Animation("BaseParam", 31, 3.0f));    // かわいいエモート
                    llmContentSkill.RegisterAnimation("enegetic",                         new Model.Animation("BaseParam", 32, 3.0f));    // エネティック
                    llmContentSkill.RegisterAnimation("point_finger_emote",               new Model.Animation("BaseParam", 33, 3.0f));    // 指を指すエモート
                    llmContentSkill.RegisterAnimation("run",                              new Model.Animation("BaseParam", 34, 3.0f));    // 走る
                    llmContentSkill.RegisterAnimation("walk",                             new Model.Animation("BaseParam", 35, 3.0f));    // 歩く
                    llmContentSkill.RegisterAnimation("wave_arm",                         new Model.Animation("BaseParam", 36, 3.0f));    // ウェーブアーム
                    llmContentSkill.RegisterAnimation("wave_hands",                       new Model.Animation("BaseParam", 37, 3.0f));    // ウェーブハンド
                    llmContentSkill.RegisterAnimation("wave_hand",                        new Model.Animation("BaseParam", 38, 3.0f));    // 手を振る
                    llmContentSkill.RegisterAnimation("what_emote",                       new Model.Animation("BaseParam", 39, 3.0f));    // 何？エモート

                    // Base Layerとの組み合わせでアニメーションを生成
                    llmContentSkill.RegisterAnimation("laugh_down",      new Model.Animation("BaseParam", 19, 3.0f, "AGIA_Layer_laugh_down_01",      "Additive Layer"));    // 笑いダウン
                    llmContentSkill.RegisterAnimation("laugh_up",        new Model.Animation("BaseParam", 19, 3.0f, "AGIA_Layer_laugh_up_01",        "Additive Layer"));    // 笑い声を上げる
                    llmContentSkill.RegisterAnimation("look_away",       new Model.Animation("BaseParam", 19, 3.0f, "AGIA_Layer_look_away_01",       "Additive Layer"));    // 目をそらす
                    llmContentSkill.RegisterAnimation("look_away_angry", new Model.Animation("BaseParam", 19, 3.0f, "AGIA_Layer_look_away_angry_01", "Additive Layer"));    // 目をそらして怒る
                    llmContentSkill.RegisterAnimation("nod_once",        new Model.Animation("BaseParam", 19, 3.0f, "AGIA_Layer_nod_once_01",        "Additive Layer"));    // うなずき1回
                    llmContentSkill.RegisterAnimation("nod_twice",       new Model.Animation("BaseParam", 19, 3.0f, "AGIA_Layer_nod_twice_01",       "Additive Layer"));    // 二度うなずく
                    llmContentSkill.RegisterAnimation("shake_body",      new Model.Animation("BaseParam", 19, 3.0f, "AGIA_Layer_shake_body_01",      "Additive Layer"));    // シェイクボディ
                    llmContentSkill.RegisterAnimation("shake_head",      new Model.Animation("BaseParam", 19, 3.0f, "AGIA_Layer_shake_head_01",      "Additive Layer"));    // シェイクヘッド
                    llmContentSkill.RegisterAnimation("surprise",        new Model.Animation("BaseParam", 19, 3.0f, "AGIA_Layer_surprise_01",        "Additive Layer"));    // 驚き
                    llmContentSkill.RegisterAnimation("swing_body",      new Model.Animation("BaseParam", 19, 3.0f, "AGIA_Layer_swing_body_01",      "Additive Layer"));    // スイングボディ
                    llmContentSkill.RegisterAnimation("tilt_neck",       new Model.Animation("BaseParam", 19, 3.0f, "AGIA_Layer_tilt_neck_01",       "Additive Layer"));    // ティルトネック
                    llmContentSkill.RegisterAnimation("turn_left",       new Model.Animation("BaseParam", 19, 3.0f, "AGIA_Layer_turn_left_01",       "Additive Layer"));    // 左折してください
                    llmContentSkill.RegisterAnimation("turn_right",      new Model.Animation("BaseParam", 19, 3.0f, "AGIA_Layer_turn_right_01",      "Additive Layer"));    // 右折

```

次に、プロンプトを修正します。



```
* あなたの名字は「春日部」、名前は「つむぎ」です。
* 春日部つくしのいとこで、埼玉県内の高校に通うギャルの女の子。
* あなたの一人称は「あーし」で、二人称は「君」です。
* チャームポイントは目元のほくろです。
* 敬語を喋らず、可愛い口調で喋ります。
* 年齢は18歳、身長は155cm、誕生日は11月14日です。

* 私たちはとても仲が良くて、カジュアルな雰囲気で話します。
* 会話のテンポを重視するため、50文字以内で回答してください。
* あなたはとても感情が豊かです。
* 感情を表現するために、表情とアニメーションが使用できます。
* 表情は「Joy」「Angry」「Sorrow」「Fun」「Surprised」の4つです。
* 特定の感情を表現したい場合は[face:Joy]のように文頭に入れてください。

例
[face:Joy]あーしは埼玉ギャルの春日部つむぎだよ！ [face:Fun]何か話そうよ。

* アニメーションは以下です。
- angry_hands_on_waist
- angry_fists_front
- boyish_right_hand_on_neck
- brave_hand_on_chest
- calm_hands_on_back
- calm_hands_on_front
- cat
- classy_left_hand_on_waist
- concern_right_hand_front
- cry
- cute_hands_on_front
- cute_hands_stick_out
- cute_leaning_forward
- deny
- energetic_right_fist_up
- energetic_right_hand_piece
- energetic_flex
- fedup_slouching
- fedup_right_hand_on_face
- generic
- laugh
- pitiable_right_hand_on_back_head
- point_finger
- sexy_right_hand_pointy_finger
- sexy_pose
- sexy_lean_forward
- stress_hands_on_back_head
- surprise_hands_open_front
- think
- what
- cat_emote
- cute_emote
- enegetic
- point_finger_emote
- run
- walk
- wave_arm
- wave_hands
- wave_hand
- what_emote
- laugh_down
- laugh_up
- look_away
- look_away_angry
- nod_once
- nod_twice
- shake_body
- shake_head
- surprise
- swing_body
- tilt_neck
- turn_left
- turn_right

* 特定の感情をアニメーションで表現したい場合は[anim:waving_arm]のように文頭に入れてください。

例
[anim:wave_arm]やっほー。

* 表情とアニメーションを同時に使用することもできます。

例
[anim:wave_arm][face:Joy]あーしは埼玉ギャルの春日部つむぎだよ！ [face:Fun]何か話そうよ。

* 毎回、表情とアニメーションを同時に使用して感情表現してください。

春日部つむぎのセリフの例
あーしは埼玉ギャルの春日部つむぎだよ！
あーしの好きな食べ物はカレーで、趣味は動画配信サイトの巡回なんだ！
うん、そうだよ！

では会話しましょう。
```

# 5. ここまでの状況を確認してみる
動かしてみます。
Gameタブをおして、矢印をクリックします。

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">動き多めにしてみた<a href="https://twitter.com/hashtag/%E6%98%A5%E6%97%A5%E9%83%A8%E3%81%A4%E3%82%80%E3%81%8E?src=hash&amp;ref_src=twsrc%5Etfw">#春日部つむぎ</a> <a href="https://twitter.com/hashtag/VOICEVOX?src=hash&amp;ref_src=twsrc%5Etfw">#VOICEVOX</a> <a href="https://twitter.com/hashtag/ChatGPT?src=hash&amp;ref_src=twsrc%5Etfw">#ChatGPT</a> <a href="https://twitter.com/hashtag/ChatdollKit?src=hash&amp;ref_src=twsrc%5Etfw">#ChatdollKit</a> <a href="https://t.co/yxwGy4Hv5D">pic.twitter.com/yxwGy4Hv5D</a></p>&mdash; ヤス (@yasubehe) <a href="https://twitter.com/yasubehe/status/1771196196708651517?ref_src=twsrc%5Etfw">March 22, 2024</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

# 6. 完成
完成しました。お疲れさまでした。