Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Dear Users,

Now, we are seeking users who can give us a hand with expertise to evolve our software more dynamically.
If you are willing to help us, we’d like you to make a registration for “Live2D Creators Circle” via the link below.
Designers, programmers, translators are especially welcomed so far.
(More detailed explanation will be given to you before we ask you to do tasks)

https://docs.google.com/forms/d/1G5KK_GL3ozwPXtTHrpi_ktbsI8UZf8jlYRSlDworyBo/viewform?usp=send_form

How to apply motions

Hi, how can i apply the motions using unity? the idle, and the other motions. how to play it in unity? Thanks :)
Tagged:

Comments

  • Hi makeyerrmove,

    You can see this page on how to apply motions in general.
    http://sites.cybernoids.jp/cubism_e/sdk_tutorial/live2d_library/load_to_play_motion/set_motion

    As for instructions specific to Unity, see below SimpleModel.cs, and in here I put English translation in parentheses next to relevant Japanese instructions.


    -------------------------
    SimpleModel.cs

    using UnityEngine;
    using System;
    using System.IO;
    using System.Collections;
    using live2d;

    [ExecuteInEditMode]
    public class SimpleModel: MonoBehaviour
    {
    private Live2DModelUnity live2DModel;
    private Live2DMotion motion; // motion data
    private MotionQueueManager motionMgr; // モーションの再生を管理するクラス (class for running motions)

    private Matrix4x4 live2DCanvasPos;

    public TextAsset mocFile ;
    public Texture2D[] textureFiles ;
    public TextAsset motionFile; // .mtn file

    void Start ()
    {
    Live2D.init();

    live2DModel = Live2DModelUnity.loadModel(mocFile.bytes);

    for (int i = 0; i < textureFiles.Length; i++)
    {
    live2DModel.setTexture(i, textureFiles[i]);
    }

    float modelWidth = live2DModel.getCanvasWidth();
    live2DCanvasPos = Matrix4x4.Ortho(0, modelWidth, modelWidth, 0, -50.0f, 50.0f);

    motionMgr = new MotionQueueManager(); // モーション管理クラスのインスタンスを作成
    motion = Live2DMotion.loadMotion(motionFile.bytes); // .mtnファイルからモーションの読み込み (Creates a new instance for motion control class.)
    }


    void OnRenderObject()
    {
    if (live2DModel == null) return;
    live2DModel.setMatrix(transform.localToWorldMatrix * live2DCanvasPos);

    if ( ! Application.isPlaying)
    {
    live2DModel.update();
    live2DModel.draw();
    return;
    }

    if (motionMgr.isFinished())
    {
    // モーションの再生が終わっていれば(再生中でなければ)再生を開始する (Starts running a motion (unless the motion hasn’t finished playback).)
    motionMgr.startMotion(motion);
    }

    motionMgr.updateParam(live2DModel); // モーションによるパラメータの更新をモデルに反映(Feed back parameter updated by a motion to model.)

    live2DModel.update();
    live2DModel.draw();
    }
    }
Sign In or Register to comment.