あかすくぱるふぇ

同人サークル「あかすくぱるふぇ」のブログです。

・urdfファイル
<?xml version="1.0"?>
<robot name="toybox">
<link name="base">
<visual>
<geometry>
<mesh filename="package://ptcam_description/meshes/toybox/model.dae"/>
</geometry>
</visual>
<collision>
<geometry>
<mesh filename="package://ptcam_description/meshes/toybox/model.dae"/>
</geometry>
</collision>
<inertial>
<mass value="1000"/>
<inertia ixx="1" ixy="0" ixz="0" iyy="1" iyz="0" izz="1"/>
</inertial>
</link>
</robot>

・コマンドラインでspawn
rosrun gazebo_ros spawn_model -file toybox.urdf -urdf -model toybox

・pythonでspawn
#!/usr/bin/env python
import os, rospy, tf
from gazebo_msgs.srv import *
from geometry_msgs.msg import *

rospy.init_node("toybox")

rospy.wait_for_service("gazebo/spawn_urdf_model")
s = rospy.ServiceProxy("gazebo/spawn_urdf_model", SpawnModel)

dirname = os.path.dirname(os.path.abspath(__file__))
with open(dirname + "/../urdf/toybox.urdf", "r") as f:
toybox_xml = f.read()

orient = Quaternion(*tf.transformations.quaternion_from_euler(0, 0, 0))
pose = Pose(Point(0, 0, 0), orient)
s("toybox", toybox_xml, "", pose, "world")

・モーション作成
Cubism Editorでcmo3ファイルを読み込む。
プロジェクトのcmo3をタイムラインにドラッグ&ドロップ。
Shift押しながら赤ポチを動かして、キャラクタの大きさを調節。
タイムラインでモーションつける。
タイムライン上で右クリックし、フェードイン・アウトの設定で、
 設定対象をシーンにして、両方0秒に設定する。
モーションファイルを書き出し。

・model3.jsonにモーションを紐付ける
Cubism Viewerでmodel3.jsonファイルを読み込む。
モーションファイルをドラッグ&ドロップ。
model3.jsonファイルを上書き保存。
Motionsの下の" "の中にモーション名を書き込む。

・ティラノで動かす
model3.json, moc3, モーションファイル, テクスチャフォルダを、ティラノデータフォルダに配置。
あとは普通に読み込めば動かせる。

・ティラノ公式チュートリアル
まずは、以下のページに従って、ティラノ用に用意されたモデルを動かします。

「Live2Dロード」から「Live2Dモーション」までの時間が短いと
モーションが反映されない場合があるようなので注意してください。


・live2d公式モデル
次に、live2d公式ページで配布されているモデルを動かします。
桃瀬ひよりモデル(FREE用)を例に説明します。

まずは、Cubism Editorでcmo3ファイルを開き、
「ファイル」→「組み込み用ファイル書き出し」→「moc3ファイル書き出し」
でモデルファイルを書き出します。

物理演算設定ファイル、ユーザデータファイル、表示補助ファイルは
たぶん不要なのでチェックを外してください。

うまくいくと、以下の画像のように、
moc3, model3.jsonファイルとテクスチャ画像の入ったフォルダが生成されると思います。


次に、Cubism Editorでcan3ファイルを開き、
「ファイル」→「組み込み用ファイル書き出し」→「モーションファイル書き出し」
でモーションファイルを書き出します。
※「全シーンを出力」にチェックを入れてOKボタンを押してください。

うまくいくと、motion3.jsonファイルがたくさん(桃瀬ひよりの例では10個)できると
思いますので、それをmotionsフォルダに格納して、下図のように配置してください。

次に、model3.jsonの中身を書き換えて、出力したモーションファイルを紐付けます。
下図のように"Motions"の部分を追加します。
{
    "Version": 3,
    "FileReferences": {
        "Moc": "hiyori_free_t06.moc3",
        "Textures": [
            "hiyori_free_t06.2048/texture_00.png"
        ],
        "Motions": {
            "Idle": [
             {"File":"motions/hiyori_m01.motion3.json"},
             {"File":"motions/hiyori_m02.motion3.json"},
             {"File":"motions/hiyori_m03.motion3.json"},
             {"File":"motions/hiyori_m04.motion3.json"},
             {"File":"motions/hiyori_m05.motion3.json"},
             {"File":"motions/hiyori_m06.motion3.json"},
             {"File":"motions/hiyori_m07.motion3.json"},
             {"File":"motions/hiyori_m08.motion3.json"},
             {"File":"motions/hiyori_m09.motion3.json"}
            ]
        }
    },
    
    "Groups": [
        {
            "Target": "Parameter",
            "Name": "EyeBlink",
            "Ids": []
        },
        {
            "Target": "Parameter",
            "Name": "LipSync",
            "Ids": []
        }
    ]
}

最後に、ティラノ公式チュートリアルと同様に、ティラノビルダー上で
motion3.jsonを指定すれば、ティラノビルダー上で公式モデルを動作させることができます。

↑このページのトップヘ