CRIWARE Unity Plugin Manual  Last Updated: 2024-04-24
[ゲームへの組み込み]編
Sofdecツールで作成したムービファイルをゲームに組み込み、再生する手順について説明します。

Unityプロジェクトを新規作成し、CRI Sofdecでムービ再生を行うオブジェクトをシーンに配置します。
作業全体の流れは、次のようになります。
プロジェクトの新規作成やプラグインパッケージのインポートの手順は CRI ADXの「 [ゲームへの組み込み]編 」と同じになります。
すでに「CRI ADX」をお使いの方は、「 (3) ムービファイルのコピー 」から始めることができます。


(1) Unityプロジェクトの作成

(1-1) Unityプロジェクトを作成する
Unityを起動し、まず空のプロジェクトを作成してください。
このチュートリアルでは、「TutorialMana」フォルダをプロジェクトフォルダとします。
  • [Project Wizard]ウィンドウでの新規プロジェクトの作成
    [File]メニューより[New Project]をクリックしてください。
    [Project Wizard]ウィンドウが現れるので、プロジェクトの保存先を指定し、プロジェクトを作成してください。
    空プロジェクトを作成するため、[Import the following packages]では何も指定しないでください。
    最後に[Create Project]ボタンをクリックし、プロジェクトを作成してください。

    sfd2u_qstart_game_newproj_mini.png
    [Project Wizard]
(1-2) シーンを保存する
プロジェクトを新規作成すると、「Main Camera」だけから構成されるシーンが現れます。
一旦、ここでシーンを保存することにします。
このチュートリアルではシーン名を「NewScene」とします。
  • [Save Scene]ダイアログでのシーン保存
    [File]メニューより[Save Scene]をクリックしてください。
    [Save Scene]ダイアログが表示されるので、シーン名を指定してください。

    sfd2u_qstart_game_newscene_mini.png
    空プロジェクト作成後の状態
[備考]
ここでは、Main Camera(メインカメラ)の座標が(0, 1, -10)となっています。

(2) プラグインパッケージのインポート

ここで、「CRIWARE Unity Plug-inパッケージ」をプロジェクトにインポートします。
プラグインパッケージファイルはSDKの以下の場所にあります。

  * cri

  \ * unity

    \ * plugin

      \ * criware_unity_plugin_smartphone.unitypackage

 

 

 

 

 

  • カスタムパッケージのインポート
    [Assets]->[Import Package]メニューより、[Custom Package]メニューコマンドをクリックしてください。
    ファイルダイアログが現れるので、上記の場所にあるプラグインパッケージファイルを指定し、インポートしてください。

(3) ムービファイルのコピー

(3-1) 用意するファイル
このチュートリアルでは、CRI Sofdecで使用しているサンプルデータ「sample_256x256.usm」を使うことにします。

サンプルデータの格納場所
  * cri

  \ * unity

    \ * samples

      \ * crimana

        \ * basic

          \ * Assets

            \ * StreamingAssets

              \ * sample_256x256.usm

 

 

 

: CRI Sofdecサンプル

: 「Basic」サンプル

 

 

: ムービファイル

 

(3-2) StreamingAssetsへファイルコピー
ムービファイル(USMファイル)を UnityプロジェクトのAssetsフォルダ下の「StreamingAssets」サブフォルダへコピーしてください。

Unityプロジェクト「TutorialMana」のAssetsフォルダの構成
  * TutorialMana

  \ * Assets

    o * Editor

    o * Gizmos

    o * Plugins

    o * Resources

    \ * StreamingAssets

      \ * sample_256x256.usm

 

: Assetsフォルダ

 

 

: CRIWARE Unity Plug-in

: CRI Mana用シェーダリソース

: StreamingAssetsフォルダ

: USMファイル

 

注意
CRI アセットとしてUSMファイルを扱う場合は以下のAsset Support アドオンページをご参照ください。
データコピーが完了すると、Unityの「Projectビュー」が更新され、次のような状態となります。

sfd2u_qstart_game_datafiles_mini.png
データコピーが完了した状態

(4) CRIWARE Library Initializer の作成

ムービ再生制御を行う前に、CRIWARE全体の初期化モジュールとエラー処理モジュールを追加しましょう。
初期化モジュールの追加は必須です。追加しない場合は正常に再生されません。
Unity メニューバーの[GameObject]->[CRIWARE]メニューから[Create CRIWARE Library Initializer] と[Create CRIWARE Error Handler]をそれぞれ実行してください。
Unity の Hierarchy ウインドウに CriWareInitializerCriWareErrorHandler が追加されていれば成功です。
ここではそれぞれのオプションを変更する必要はありません。

adx2u_qstart_game_initializer_hierarchy.png
CRIWARE Library Initializer 作成後

(5) CriManaMovieController の作成

CRI Sofdecにおけるムービ再生の制御は、「CriManaMovieControllerコンポーネント」で行います。
再生するムービごとに CriWare.CriManaMovieController コンポーネントを用意します。
ここでは、Cubeに貼り付けたムービを再生するサンプルを作成することにします。

(5-1) Cubeに CriManaMovieController コンポーネントを貼り付ける
ここでは例として、3Dオブジェクト Cube に CriManaMovieController をアタッチします。以下の手順で行います。
  1. メニューより [GameObject]->[3D Object]->[Cube]を選び、Cubeを作成してください。
  2. 「Hierarchyビュー」でCubeを選択しておきます。
  3. メニューより [Component]->[CRIWARE]->[CriManaMovieController]を選択してください。
(5-2) 再生するムービファイルを指定する
CriManaMovieController コンポーネントのムービ再生パラメータを Inspector で設定することができます。
以下のように、再生するムービのファイル名とムービ再生の方法(自動再生)を指定してください。
  1. 「Hierarchyビュー」でCubeを選択しておきます。
  2. CriManaMovieController コンポーネントの[Movie Path]にムービファイル名「sample_256x256.usm」を入力してください。
    (StreamingAssetsフォルダにムービファイルがあるものと想定しています。)
  3. ムービが自動再生がされるよう、[Play On Start]をチェックしてください。

(5-4) ムービ再生を実行する
これでムービを再生するための準備が完了しました。
Unityのプレイボタンをクリックしてムービを再生してみてください。

(6) スクリプトによるムービ再生制御

ここまでは単純なムービ再生を行うだけでしたが、スクリプトを追加して、ムービ再生を制御してみましょう。
ここでは、マウスクリックするとムービ再生を一時停止させるスクリプトをCubeに貼り付けることにします。
(6-1) ムービ再生を制御するスクリプトをCubeに追加する。
以下の手順で、Cubeにスクリプトを貼り付けてください。
  1. 「Hierarchyビュー」でCubeを選択しておきます。
  2. 「Projectビュー」で右クリックし「C# Script」作成してください。
    ファイル名を「MoviePause」に変更してください。
  3. MoviePauseを「Hierarchyビュー」へドラッグアンドドロップし、Cubeに貼り付けてください。

    sfd2u_qstart_game_add_pause_mini.png
    Cubeにスクリプトを貼り付ける

MonoDevelopを起動し、MoviePause.csを次のように編集してください。

public class MoviePause : MonoBehaviour {
// Use this for initialization
void Start () {
}
// Update is called once per frame
private int Yaw_Speed = 10;
private int Pitch_Speed = 0;
private int Roll_Speed = 10;
void Update () {
// Rotate the Cube while the pause status is false
if (pause_stat == false) {
transform.Rotate(Vector3.down * Time.deltaTime * Yaw_Speed);
transform.Rotate(Vector3.right * Time.deltaTime * Pitch_Speed);
transform.Rotate(Vector3.forward * Time.deltaTime * Roll_Speed);
}
}
// Called when the mouse button has been pressed
private bool pause_stat = false;
void OnMouseDown() {
// Toggle the pause status
pause_stat = (pause_stat == false)?true:false;
// Get the CriManaMovieController component
CriManaMovieController mc = GetComponent<CriManaMovieController>();;
// Pause the movie playback
mc.player.Pause(pause_stat);
}
}

OnMouseDown関数
OnMouseDown関数でマウスボタンをクリックした時の処理を記述します。
このスクリプトでは、オブジェクトに割り当てられた CriManaMovieController コンポーネントを取得し、playerメンバからPause 関数をコールしています。
Pause関数の引数が true の場合は再生を一時停止し、false の場合は再生を再開します。

Update関数
この関数は毎フレームごとに呼び出されています。
このスクリプトでは、ムービを再生している間、Cubeを回転させています。

(6-2) ゲームを実行する
Unityのプレイボタンをクリックしてムービを再生してみてください。
Cubeに貼り付けられたムービが自動的に再生されるとともに、Cube自体がゆっくりと回転します。
Cubeをクリックするたびに、ムービ再生が停止・再開します。

sfd2u_qstart_game_rotating_mini.png
ムービを貼り付けたCubeが回転