CRI ADX
Last Updated: 2024-09-25 17:41 p
|
このチュートリアルでは、プロジェクトの作成から、キューに波形ファイルを登録するまでの処理を実行するスクリプトを次の順序で書いていきます。
オブジェクト作成の基本方法について習得しましょう。
スクリプト メニューで「スクリプトリスト...」を選択し、スクリプトリスト ウィンドウを表示します。
スクリプトリスト ウィンドウの新規作成ボタンを押して、以下の名前でスクリプトファイルを作成します。
スクリプトの保存先 | スクリプトファイル名 |
---|---|
tutorials [CRI] | tutorial02-1_new_basic_project.py |
作成したスクリプトをダブルクリックして、 スクリプトエディターからのスクリプト実行 で開きます。
スクリプトリスト ウィンドウ でスクリプトの概要を確認できるように、スクリプトの説明を次のように記述しましょう。
スクリプトの説明が記述できたら、 スクリプトで CRI Atom Craft を操作するため、モジュールをインポートします。
スクリプトエディターからのスクリプト実行 で、以下のインポート処理を書いてみましょう。
今回は、Python の標準モジュール sys、os の他、CRI Atom Craft の操作モジュールを2つインポートしています。
チュートリアル「 Hello World をスクリプトログに表示する 」で使用した debug モジュール に加え、CRI Atom Craft のプロジェクトデータを操作する project モジュール をインポートしています。
次に、作成するプロジェクト名、プロジェクト保存先、チュートリアル用波形ファイルの場所を、以下の内容でスクリプトに書きます。
項目 | 内容 |
---|---|
プロジェクト名 | TutorialProject_Robot |
プロジェクトの保存先 | PC の "Documents/CRIWARE/CriAtomCraft/projects" |
チュートリアル用波形ファイルの場所 | チュートリアルフォルダーの "tutorials/robot/local/tutorial_data" |
これらのプロジェクト情報をスクリプトで記述すると次のようになります。
os.path.expanduser 関数は、「~」をユーザーのホームディレクトリに展開してパスを作成する、Python の osモジュールの関数です。
「~」がユーザーのホームディレクトリに置きかわります。
os.path.isdir 関数でディレクトリがあるか確認し、無ければ os.makedirs 関数で作成しています。
os.path.dirname 関数は、パスが存在するディレクトリを取得する関数です。
Pythonでは、__file__ に実行ファイルのパスが格納されています。
チュートリアルで使用する波形ファイルは、実行スクリプトファイルの2つ上のディレクトリ内の「tutorial_data」フォルダーにあります。
os.path.dirnameを2回実行して、2つ上のディレクトリを取得し、'tutorial_data'をチュートリアル用波形ファイルの場所に指定しています。
使用するモジュールのインポート設定、プロジェクト名、プロジェクト保存先の設定ができました。
ここからは、実際に CRI Atom Craft のデータ操作をしていきます。
モジュールのインポート でインポートした、 project モジュール には、プロジェクト、ワークユニットを作成する次の関数が用意されています。
関数名 | 説明 |
---|---|
create_project | プロジェクトを作成します |
create_workunit | ワークユニットを作成します |
これらの関数を使って、プロジェクト、ワークユニットの作成をスクリプトで記述すると次のようになります。
スクリプトを記述して、一度、スクリプトを実行してみましょう。
スクリプトを実行すると、「Documents/CRIWARE/CriAtomCraft/projects」以下にワークユニット「WorkUnit_Tutorial」を含んだ「TutorialProject_Robot」プロジェクトが作成されます。
プロジェクトを作成する create_project 関数には、「プロジェクト名」、「プロジェクト保存先」、「プロジェクトの上書きするか」の3つの情報を指定します。
3つ目の「プロジェクトの上書きするか」は、 True を指定するとプロジェクト保存先に同名のプロジェクトファイルが存在しても、上書きして新たにプロジェクトを作成します。
関数を実行すると、実行結果が戻り値として返されます。
ここでは返ってきた実行結果を result 変数に格納しています。
result 変数には、関数実行結果の様々な情報が格納されており、識別文字(キー)を使って情報を取り出すことができます。
「関数の実行が成功したか?」は "succeed" キーで取得します。
result 変数に格納された "succeed" キーの情報を取得し、プロジェクト作成の成否を確認しています。
プロジェクトの作成に失敗した場合、ログ出力してスクリプトの実行を終了しています。
ワークユニットを作成する create_workunit 関数には、「ワークユニット名」、「マテリアルをワークユニットで管理するか」、「キュー作成時に設定するバスマップ」の情報を指定します。
create_workunit 関数を実行すると、 create_project 関数と同様に実行結果が戻り値として result 変数に格納されます。
result 変数には、関数の実行成否の "succeed" キーの情報他、"data" キーに作成したワークユニットを識別する情報が格納されています。
ワークユニットの作成が成功したか判定後、この後の処理でワークユニットの情報を使用するため、result["data"] にてワークユニット情報を取得し、workunit 変数に格納しています。
プロジェクト、ワークユニットの作成ができました。
作成したワークユニットのマテリアル情報に波形ファイルを登録してマテリアルを作成します。
次の関数を使って、マテリアルルートフォルダーに波形ファイルを登録します。
関数名 | 説明 |
---|---|
get_material_rootfolder | ワークユニットのマテリアルルートフォルダーを取得します |
register_material | 波形ファイルを登録しマテリアルを作成します |
これらの関数を使って、マテリアルの登録をスクリプトで記述すると次のようになります。
マテリアルを登録するための register_material 関数には、「登録先のフォルダー」、「登録する波形ファイル」の2つの情報を指定します。
このため、まず get_material_rootfolder 関数を使って、ワークユニットのマテリアルルートフォルダーを取得しています。
次に、 register_material 関数を使って、マテリアルルートフォルダーに波形フィアルを登録し、マテリアルを作成しています。
ここまでのスクリプトを実行すると、ワークユニットのマテリアルルートフォルダーに "gun1_High.wav" マテリアルが作成されていることを確認することができます。
ワークユニットのマテリアル情報に波形ファイルの登録ができました。
次の関数を使って、キューシートを作成し、その中にキューを作成して、マテリアルをキューに登録してウェーブフォーム リージョンを作成します。
関数名 | 項目 |
---|---|
get_cuesheet_rootfolder | ワークユニットのキューシート ルートフォルダーを取得します |
get_child_object | 親オブジェクトを指定して、子オブジェクトを取得します |
create_object | タイプを指定してオブジェクトを作成します |
create_waveform_region | ウェーブフォーム リージョンを作成します |
これらの関数を使って、キューシート、キューの作成とマテリアルの設定をスクリプトで記述すると次のようになります。
キューシート作成先のフォルダーを取得するために、 get_cuesheet_rootfolder 関数を使用してワークユニットのキューシート ルートフォルダーを取得します。
次に、 get_child_object 関数を使用して、キューシート ルートフォルダー直下の "WorkUnit_Tutorial" フォルダーを取得します。
get_child_object 関数には、「取得元のオブジェクト情報」、「取得するオブジェクトタイプ」、「取得するオブジェクトの名称」を指定します。
"WorkUnit_Tutorial" フォルダーはワークユニット作成時に自動的に作成される、ワークユニットと同名のフォルダーです。
このフォルダーにキューシート作成することで、ACB(ゲームデータ)の出力先をワークユニット単位で分離することができます。
取得した作成先のキューシートフォルダー、キューシートオブジェクトタイプ "CueSheet"、キューシート名 "Tutorial" を指定して、汎用オブジェクト作成関数である create_object 関数でキューシートを作成しています。
create_object 関数には、「作成元のオブジェクト情報」、「作成するオブジェクトのタイプ」、「作成するオブジェクトの名称」を指定します。
作成したキューシートにキュー、トラック、ウェーブフォームリージョンを順次作成します。
ウェーブフォームリージョンを作るのにキューとトラックが必要なの?と悩んでしまった人は「 CRI Atom Craft のオブジェクト構造を理解しよう 」にあるオブジェクト構造を見直してみるとよいでしょう。
キュー、トラック、ウェーブフォームリージョンが階層関係にあることが理解できるはずです。
キュー、トラックはキューシート同様、汎用オブジェクト作成関数である create_object 関数を使用して作成しています。
ウェーブフォームリージョンは専用の create_waveform_region 関数に、「作成先のトラック情報」「参照するマテリアル」を指定して作成します。
プロジェクトを作成して、波形ファイルを登録したキューの作成までができました。
最後に、作成したプロジェクトの保存を行い本チュートリアルを終了します。
プロジェクトの保存は、次の関数を使用します。
関数名 | 項目 |
---|---|
save_project_all | プロジェクトを保存します |
この関数を使って、プロジェクトの保存をスクリプトで記述すると次のようになります。