Comments
Description
Transcript
CPSL3の言語マニュアル
1 CPSL3 リファレンスマニュアル 目次 第1章 CPSL3 タグコマンドの機能リファレンス 1.1. 舞台と仮想俳優の初期化 (1) <STAGE Switch > (2) <PERSON Switch > 1.2. 仮想俳優の台詞の発声と表情変化(字幕表示) (3) <SPEECH Switch >喋る台詞</SPEECH> (4) <SPEAK Switch> 喋る台詞</SPEAK> (5) <SCRIPT Switch >字幕に表示する文字列</SCRIPT> (6) <FONT Switch > (7) <FACE Switch >FEN 表情語 (8) <FACS Switch >基本 6 表情指示語</FACS> (9) <TALK Switch >喋る台詞</TALK> (10)<TIMER Switch> ……………</TIMER> または 叙情語</FACE> 1.3. 仮想俳優の演技 (11)<STARTUP Switch > (12)<MOTION Switch >体演技語</MOTION> (13)<ACTION Switch > BACS 語 あるいは体演技語</ACTION> 1.4. 仮想俳優の移動や回転 (14)<WALK Switch >体演技語</WALK> (15)<JUMP Switch >体演技語</JUMP> (16)<SLIDE Switch >体演技語</SLIDE> (17)<ROTX Switch >体演技語</ROTX> (18)<ROTY Switch >体演技語</ROTY> (19)<ROTZ Switch >体演技語</ROTZ> 1.5. 小道具 (Stage Parts) の配置と動作 (20)<PARTS Switch > (21)<MOVE Switch >…………….. </MOVE> (22)<DELETE_PARTS Switch > 1.6. カメラワークに関する機能 (23)<CAMERA Switch > ……………… </CAMERA> (24)<LENS Switch > 2 1.7. 音楽と効果音の再生 (25)<MUSIC Switch >…………………….. </MUSIC> (26)<SOUND Switch > ……………………</SOUIND> 1.8. シナリオ進行制御と状態変数の設定 (27)<SCENARIO Switch> (28)<SCENE Switch>……………….</SCENE> (29)<TOTALSCENE Switch> (30)<COM>コメント文</COM> (31)<STOP> (32)<EXIT> (33)<MODE Switch> 1.9. Interactive 動作(対話動作) (34)<REQUEST Switch > (35)<ANSWER Switch >………………………..</ANSWER> (36)<SCORE Switch > (37)<INPUTNUM Switch > (38)<INPUTWORD Switch > (39)<CORRECT>……正解時の処理………….………</CORRECT> (40)<INCORRECT>……不正解の時の処理…………</INCORRECT> 1.10. Virtual Exploratory Learning(VEL)機能 (41)<INTERNET Switch> (42)<MPLAYER Switch> (43)<EXPLAIN Switch> (44)<SHELL Switch> (45)<EXPLORE Switch> 第2章 CPSL3 状態変数の一覧 (1) グローバルな状態変数 (2) ブロックスコープを持つ状態変数 第3章 CPSL3 ブロック記述ルール 第4章 CPSL3 の主要なデータベース (1) FEN 表情語 (2) 叙情語 ( LyricDB.csv に登録されている言葉) (3) BACS 語 (4) 体演技語 (5) CP-FACS AU 一覧表 3 第1章 CPSL3 タグコマンドの機能リファレンス 1.1 舞台と仮想俳優の初期化 <STAGE Switch > 能: 舞台や背景となる 3 次元形状データを読み込みます。舞台は 1 個しか読み込めません。 配置座標、回転角、座標軸ごとの拡大縮小率をスイッチで指定できます。 Switch : 機 スイッチ名 Block: 記述例 引数記述法 内容 TDM_FILE =”形状データファイル名” POSISTION ROTATION SCALE =”x, y, z” =”rx, ry, rz” =”sx, sy, sz” PiasArtsit で作成した 3 次元形状データ のファイル名。 配置するモデリング座標値 回転角(度数。反時計周りが正の数) 拡大縮小値 0.0 より大きい実数値 ブロック構造ではないため、</STAGE> はありません。 : <STAGE TDM_FILE="Room.tdm" POSITION="-150.0, -2000.0, -4500.0" ROTATION="0.0, 0.0, 0.0" SCALE="3.5, 3.5, 1.0"> <PERSON Switch > 能: 仮想俳優の 3 次元形状データを一人読み込み、名前をつけます。音声合成システムと接続することが できます。配置座標、回転角、座標軸ごとの拡大縮小率をスイッチで指定できます。体は無くて音声 のみの俳優(語り手)や、体のみで喋らない(音声合成システムと接続しない)仮想俳優も設定でき ます。仮想俳優は、最大 8 人まで読み込めます。 Switch : 機 スイッチ名 Block: 記述例 引数記述法 内容 TDM_FILE NAME VSM_FILE SPEAKER TONETAG FEN_FILE TONETAG BPN_FILE =”形状データファイル名” =”仮想俳優名” =”仮想骨格データファイル名” =”TTS 話者名” =”SpeechAPI4.0 タグコマンド” =叙情詩データベースファイル名” =”SpeechAPI4.0 タグコマンド” =”体演技データベースファイル名” BPN_PATH =”演技データファイルの存在するパス名” 初期値を右項に示す。 POSISTION ROTATION SCALE =”x, y, z” =”rx, ry, rz” =”sx, sy, sz” 人間型 3 次元形状データのファイル名。 日本語名も使用可能 拡張子 .vsm の骨格データファイル SpeechAPI 4.0 規格の話者名 音声合成システムの初期設定 LyricDB.csv が初期値 音声合成システムの初期設定 ActionDB.csv が初期値 Nana MOTION-NANA Emi MOTION-EMI Doctor MOTION-DOCTOR 配置するモデリング座標値 回転角(度数。反時計周りが正の数) 拡大縮小値 0.0 より大きい実数値 ブロック構造ではないため、</PERSON> はありません。 : <PERSON TDM_FILE="nana.tdm" VSM_FILE="nana.vsm" NAME="奈々" SPEAKER="お姉さん (Toshiba)" FEN_FILE="LyricDB.csv" BPN_FILE="ActionDB.csv" BPN_PATH="MOTION-NANA" POSITION="800.0, -100.0, -2000.0" ROTATION="0.0, -15.0, 0.0" SCALE="1.0, 1.0, 1.1"> 4 TTS 話者を選択する際には、SpeechAPI 4.0 話者選択キイワードを SPEAKER スイッチで指定する必要があ ります。代表的な日本語音声合成エンジンの選択キイワードを以下の表に示します。 音声合成システム 東芝製 LaLaVoice 2001 NEC 製 SmartVoice 選択キイワード お兄さん (Toshiba) 大人 男声 声質 20 歳 ~ お姉さん (Toshiba) 大人 女性 20 歳 ~ ロボットA (Toshiba) ロボット 20 歳 ~ お坊ちゃん (Toshiba) 少年 小学生(6 歳~12 歳) お嬢ちゃん (Toshiba) 少女 小学生(6 歳~12 歳) ロボットB (Toshiba) ロボット 小学生程度(6 歳~12 歳) おじいさん (Toshiba) 熟年 男声 60 歳以上 女声 60 歳以上 おばあさん (Toshiba) 熟年 ロボットC (Toshiba) ロボット Male Voice 男声 青年~中年 Female Voice 女声 青年 読み秀君 (ProTALKER) 男声 青年~中年 読み子ちゃん (ProTALKER) 女声 青年 Adult Male #1 Japanese (L&H) 男声 青年~中年 Adult Female #1 Japanese (L&H) 女声 青年 熟年相当の低い声 IBM 製 ProTalker L&H TTS (Free Software) TTS(音声合成システム)の初期化を行うことが出来る TONETAG コマンド文字列の詳細については、第?? 章を参照してください。主に、音声合成の速度や抑揚制御等を行います。発話速度を指定する記述例を以下に示し ます。 <PERSON TDM_FILE="Doctor.tdm" VSM_FILE="Doctor.vsm" NAME="博士" SPEAKER="おじいさん (Toshiba)" TONETAG=”¥Spd=140¥” FEN_FILE="LyricDB.csv" BPN_FILE="ActionDB.csv" BPN_PATH="MOTION-DOCTOR" POSITION="-800.0, -100.0, -2000.0" ROTATION="0.0, 30.0, 0.0" SCALE="1.0, 1.0, 1.1"> <PERSON TDM_FILE="nana2.tdm" VSM_FILE="nana.vsm" NAME="奈々" SPEAKER="お姉さん (Toshiba)" TONETAG=”¥Spd=140¥” FEN_FILE="LyricDB.csv" BPN_FILE="ActionDB.csv" BPN_PATH="MOTION-NANA" POSITION="800.0, -100.0, -2000.0" ROTATION="0.0, -30.0, 0.0" SCALE="1.0, 1.0, 1.1"> 5 1.2 仮想俳優の台詞の発声と表情変化(字幕表示) <SPEECH <SPEAK Switch > 喋る台詞 Switch> 喋る台詞 </SPEECH> </SPEAK> 機 能: 仮想俳優が台詞を喋ります。台詞の文章は、<SPEECH>と</SPEECH>で囲まれたブロックの中に 記述します。<SPEECH>と<SPEAK>は同じ働きをするタグコマンドです。<PERSON>タグで仮想 俳優を定義した際に、VSM_FILE スイッチで仮想骨格データを登録した場合には、喋る時に口をパ クパク動かします。 Switch : スイッチ名 Block: 引数記述法 内容 PERSON =”仮想俳優名” <PERSON>タグのスイッチで指定した仮 想俳優名を記述します。 SCRIPT =”ON” =”OFF” ON : 字幕を同時に表示します。 OFF :字幕は表示しません。 NOTIFY =”SYNC” =”ASYNC” =”ABOAT” </SPEECH>での待ち合わせ動作を指定し ます。 </SPEECH>、</SPEAK>でタグブロックを囲む必要があります。このタグブロックの中に、喋らせたい 台詞を仮名漢字混じり文で記述します。 Notification: </SPEECH>、</SPEAK>の位置で、指定により待ち合わせ動作を行います。 スイッチ NOTIFY キイワード 待ち合わせ動作 =”SYNC” 喋り終わるまで、タグ位置で待ちます。 =”ASYNC” 喋り終わるのを待たずに、タグを通過し ます。 =”ABOART” 喋るのを中断して、タグを通過します。 通常、このスイッチの値は状態変数なので、<SPEECH>タグの中で定義するよりも、<MODE>タグコ マンドなどで初期値を設定しておくことを推奨します。システム起動時の値は、SYNC になっています。 記述例 : <SPEECH >こんにちは。私は、奈々です。</SPEECH> <SPEECH PERSON="奈々">こんにちは。私は、奈々です。</SPEECH> <SPEECH PERSON="奈々" SCRIPT="OFF">こんにちは。私は、奈々です。</SPEECH> 以下の例では、博士と奈々は、同時に喋ります。 <MODE SCRIPT=”OFF” NOTIFY=”SYNC”> <SPEECH PERSON="博士">こんにちは。私は、博士です。 <SPEECH PERSON="奈々">こんにちは。私は、奈々です。</SPEECH> </SPEECH> 以下の例では、博士が喋り終わってから、奈々が喋ります。 <MODE SCRIPT=”OFF” NOTIFY=”SYNC”> <SPEAK PERSON="博士">こんにちは。私は、博士です。</SPEAK> <SPEAK PERSON="奈々">こんにちは。私は、奈々です。</SPEAK> 6 <SCRIPT Switch > 字幕に表示する文字列 </SCRIPT> 機 能: 画面下部の字幕領域に、字幕を表示します。音声合成に同期して字幕を出すこともできるし、字幕だ けを出すこともできます。字幕の文章は、<SCRIPT>と</SCRIPT>で囲まれたブロックの中に記述 します。喋る台詞と字幕を別の表現にしたい場合などに使用します。 Switch : スイッチ名 Block: 引数記述法 SCRIPT =”ON” =”OFF” TIME =”999” 内 容 <SCRIPT>ブロックの中で使用される音声合 成 タ グ <SPEECH>,<SPEAK>,<TALK> の 台 詞 が、字幕領域に表示されるかどうかを指定し ます。 ON : 字幕を同時に表示します。 OFF :字幕は表示しません。 <SCRIPT>タグで字幕を表示するときには、こ の値を OFF にしておく必要があります。 字幕の表示時間をミリ秒単位で指定します。 通常、1000(1 秒)以上の値を設定します。 初期値は 0 です。 </SCRIPT>、でタグブロックを囲む必要があります。このタグブロックの中に、表示したい字幕を仮名 漢字混じり文で記述します。 Notification: </SCRIPT>の位置で、指定により待ち合わせ動作を行います。TIME スイッチで時間が設定されてい た場合に待ち合わせ動作が異なります。それ以外は NOTIFY の値に係わらず、字幕表示を消します。 スイッチ名 NOTIFY キイワード =”SYNC” 待ち合わせ動作 指定時間経過後、字幕を消します。 字幕は消さずにタグブロックを通過します。指定 時間が経過すると、字幕が消えます。 指定時間を無視してただちに字幕を消します。 =”ASYNC” =”ABOART” 記述例 : 字幕は読みやすくするために句点はいれず、読み上げ文章は、文節きりを明示するために句点を入れ る場合の記述例です。 <MODE SCRIPT=”OFF” NOTIFY=”SYNC”> <SCRIPT>これから 3DCG 映像を表示します。 <SPEECH >これから、3DCG 映像を、表示します。</SPEECH> <SCRIPT> この場合、仮想俳優が音声を喋り終わるまで字幕が表示されます。 <FONT 機 Switch > 能: <SCRIPT>タグで表示される字幕で使用される文字フォントの設定を行います。 Switch : スイッチ名 FACE SIZE WIDTH 引数記述法 =”文字フォント名” =”n” =”n” 内容 文字フォントの高さをピクセル数で指定する。 文字フォントの幅をピクセル数で指定する。 FACE=”DEFAULT” と指定すると、標準フォントに戻ります。 Block: ブロック構造はありません。</FONT>はありません。 7 <FACE Switch > FEN 表情語 または 叙情語 </FACE> 機 能: 仮想骨格をもつ仮想俳優の顔の表情を変化させます。この顔の表情変化は、Dr.Ekman が開発した顔 表情符号 FACS を元に、仮想俳優用に拡張した CP-FACS に基づいて動作します。TTC 符号を用い て、表情変化の速度も制御することができます。 Switch : スイッチ名 引数記述法 内容 PERSON =”仮想俳優名” GATE TRANSIT STABLE RELEASE GAIN REGAIN =”999” =”999” =”999” =”999” =”999” =”999” TTC =”999, 999, 999, 999, 999, 999” <PERSON>タグのスイッチで指定した仮想俳優名を 記述します。 表情待機時間を指定します。 表情立ち上がり移行時間を指定します。 表情保持時間を指定します。 表情立ち下り移行期間を指定する。 状態保持時の強さと最終段階での強さを指定する。 表情終了時の強さを指定する。 GATE、TRANSIT、STABLE、RELEASE、GAIN、REGAIN を一度に指定する。 数値は整数 数値は整数 数値は整数 数値は整数 数値は整数 数値は整数 時間はすべてミリ秒で指定します。=”100” と記述すると 100 ミリ秒になります。 Gain (%) EG RG Time GT TT GT : GATE time TT : TRANSIT time ST : STABLE time RT : RELEASE time RT ST Unit of time is 100ms EG : GAIN(%) RG : REGAIN(%) Block: </FACE>、でタグブロックを囲む必要があります。このタグブロックの中に、叙情語または FEN(表情語) 含む文章を記述します。これらは、<PERSON>タグの FEN_FILE スイッチで指定して読み込んだ叙情詩デ ータベースファイル(LyricDB.csv が初期値)に登録されている言葉です。この文節を含む文字列ならば 構いません。FEN(表情語)の一覧を以下に示します。 1 2 3 4 5 6 7 8 9 10 11 12 13 FEN 幸福 悲しみ 驚き 嫌悪 怒り 恐れ 寂しさ 困惑 照れ笑い 激怒 満足 不満 疑惑 CP-FACS AU sequence 60,120,260 10,40,150 10,20,50,260 40,90,170 40,50,70,100,260 10,20,40,50,70,200,260 10,40,70,80,150,160 10,40,60,90,120,150,270 10,260 40,50,60,70 50,60,120,420 10,20,40,80,100,160 10,20,40,80,410 14 15 16 17 18 19 20 21 22 23 24 25 26 FEN 苦悶 心配 後悔 あきれる うっとり あきらめ 戸惑い 軽蔑 嫉妬 尊敬 無表情 左目ウインク 右目ウインク LyricDB.csv に登録されている叙情語は、第?章の(?)に示します。 8 CP-FACS AU sequence 10,40,60,120,150,270,410 10,40,60,90,150,160,270 10,40,70,160,410 10,120 10,60,70,130,410 10,60,70,160,410 10,50,150 11,21,42,60,130,410 20,50,60,100,150 10,50,60,120 0 432 431 Notification: </FACE>の位置で、指定により待ち合わせ動作を行います。 スイッチ NOTIFY キイワード =”SYNC” =”ASYNC” =”ABOART” 待ち合わせ動作 表情変化が終わるまで、タグ位置で待ちます。 表情変化が終わるのを待たずに、タグを通過します。 表情変化を中断して、タグを通過します。 通常、このスイッチの値は状態変数なので、<FACE>タグの中で定義するよりも、<MODE>タグコマ ンドなどで初期値を設定しておくことを推奨します。システム起動時の値は、SYNC になっています。 記述例 : <FACS Switch > 基本 6 表情指示語 </FACS> 能: 仮想骨格をもつ仮想俳優の顔の表情を変化させます。表情変化は、Dr.Ekman が開発した基本 6 表情 を直接指定します。TTC 符号を用いて、表情変化の速度も制御することができます。 Switch : 機 スイッチ名 引数記述法 内容 PERSON =”仮想俳優名” GATE TRANSIT STABLE RELEASE GAIN REGAIN =”999” =”999” =”999” =”999” =”999” =”999” TTC =”999, 999, 999, 999, 999, 999” <PERSON>タグのスイッチで指定した仮想俳優名を 記述します。 表情待機時間を指定します。 表情立ち上がり移行時間を指定します。 表情保持時間を指定します。 表情立ち下り移行期間を指定する。 状態保持時の強さと最終段階での強さを指定する。 表情終了時の強さを指定する。 GATE、TRANSIT、STABLE、RELEASE、GAIN、REGAIN を一度に指定する。 数値は整数 数値は整数 数値は整数 数値は整数 数値は整数 数値は整数 時間はすべてミリ秒で指定します。=”100” と記述すると 100 ミリ秒になります。 Block: </BACS>でタグブロックを囲む必要があります。このタグブロックの中に、基本 6 表情を示す次の言葉 のいずれかを記述します。 基本 6 表情指示語 幸福 嫌悪 怒り 悲しみ 恐れ 驚き Notification: </FACS>の位置で、指定により待ち合わせ動作を行います。 スイッチ NOTIFY キイワード =”SYNC” =”ASYNC” 待ち合わせ動作 表情変化が終わるまで、タグ位置で待ちます。 表情変化が終わるのを待たずに、タグを通過します。 =”ABOART” 表情変化を中断して、タグを通過します。 通常、このスイッチの値は状態変数なので、<FACS>タグの中で定義するよりも、<MODE>タグコマ ンドなどで初期値を設定しておくことを推奨します。システム起動時の値は、SYNC になっています。 記述例 : 2 <TALK Switch > 喋る台詞 </TALK> 能: 仮想俳優が、台詞の中の文章を解析して FEN(表情語)や叙情語を探索して、自動的に表情を変え ながら喋ります。台詞の文章は、<TALK>と</TALK>で囲まれたブロックの中に記述します。 <PERSON>タグで仮想俳優を定義した際に、VSM_FILE スイッチで仮想骨格データを登録した場合 には、喋る時に口をパクパク動かします。1 個の台詞の中に、複数の FEN(表情語)や叙情語を検 出してしまった場合には、正確な動作は期待できません。 Switch : 機 スイッチ名 PERSON SCRIPT NOTIFY Block: 引数記述法 内容 <PERSON>タグのスイッチで指定した仮 想俳優名を記述します。 ON : 字幕を同時に表示します。 OFF :字幕は表示しません。 =”仮想俳優名” =”ON” =”OFF” =”SYNC” =”ASYNC” =”ABOAT” </SPEECH>での待ち合わせ動作を指定し ます。 </TALK>でタグブロックを囲む必要があります。このタグブロックの中に、喋らせたい台詞を仮名漢字 混じり文で記述します。 Notification: </TALK>の位置で、指定により待ち合わせ動作を行います。 スイッチ キイワード 待ち合わせ動作 NOTIFY =”SYNC” =”ASYNC” =”ABOART” 喋り終わるまで、タグ位置で待ちます。 喋り終わるのを待たずに、タグを通過します。 喋るのを中断して、タグを通過します。 通常、このスイッチの値は状態変数なので、<TALK>タグの中で定義するよりも、<MODE>タグコマ ンドなどで初期値を設定しておくことを推奨します。システム起動時の値は、SYNC になっています。 記述例 : <TALK >こんにちは。私はとても幸福です。</TALK> <TIMER Switch> ……………</TIMER> 機 能: 仮想俳優を指定した時間だけ停止させます。瞬きしたり体を揺らしたりはしますが、シナリオの進行 は停止します。 Switch : スイッチ名 PERSON WAIT 引数記述法 =”仮想俳優名” =”t” 内容 停止させたい仮想俳優名を記述します。 停止時間。単位はミリ秒の整数値 Block: </TIMER>でタグブロックを囲む必要があります。このタグブロックの中に、他のシナリオ記述を入れ ても構いません。 Notification: </TIMER>の位置で、指定により待ち合わせ動作を行います。 スイッチ キイワード 待ち合わせ動作 NOTIFY =”SYNC” =”ASYNC” =”ABOART” タイマが経過するまで、タグ位置で待ちます。 タイマが経過するのを待たずに、タグを通過します。 タイマを中断して、タグを通過します。 通常、このスイッチの値は状態変数なので、<TIMER>タグの中で定義するよりも、<MODE>タグコマンド などで初期値を設定しておくことを推奨します。システム起動時の値は、SYNC になっています。 3 1.3 仮想俳優の演技 <STARTUP 機 Switch > 能: 仮想俳優の関節を全て初期値に戻し、配置座標、回転角度も<PERSON>タグコマンドで設定された 値に戻します。 Switch : スイッチ名 PERSON 内容 <PERSON>タグのスイッチで指定した仮想俳優名を記述します。 ブロック構造はありません。</STARTUP>はありません。 Block: 記述例 引数記述法 =”仮想俳優名” : <STARTUP PERSON="博士"> <MOTION Switch > 体演技語 </MOTION> 機 能: モーションキャプチャデータを再生して、仮想俳優に体演技をさせるタグコマンドです。 <MOTION>と</MOTION>のタグブロック中に、演技データベースに登録されている体演技語を記 述することで体演技をさせます。 Switch : スイッチ名 PERSON RATE REPEAT INIT ENDING NOTIFY 引数記述法 =”仮想俳優名” =”n” 数値は整数 =”n” 数値は整数 =”ON” =”OFF” =”NONE” =”ToBEGIN” =”ToBASE” =”SYNC” =”ASYNC” =”ABOAT” 内容 <PERSON>タグのスイッチで指定した仮想俳優名を記述します。 モーションの間を補間するフレーム数を指定します。 モーションを繰り返す回数を指定します。 “ON”が指定されると、演技の前に仮想俳優の姿勢を正立に戻す。 モーション終了時の姿勢を指定する。ToBEGIN は最初の姿 勢に戻る。ToBASE は最後の姿勢を維持する。 </MOTION>での待ち合わせ動作を指定します。 Block: </MOTION>タグコマンドでタグブロックを囲む必要があります。このタグブロックの中に、体演技語を 含む文章を記述します。これらは、<PERSON>タグの BPN_FILE スイッチで指定して読み込んだ体演技デ ータベースファイル(ActionDB.csv が初期値)に登録されている言葉です。この文節を含む文字列ならば 構いません。体演技語として ActionDB.csv に登録されている言葉を、第 2 章のXXに示します。 Notification: </MOTION>の位置で、指定により待ち合わせ動作を行います。 スイッチ キイワード 待ち合わせ動作 NOTIFY =”SYNC” =”ASYNC” =”ABOART” 体演技が終わるまで、タグ位置で待ちます。 体演技が終わるのを待たずに、タグを通過します。 体演技を中断してタグを通過します。 通常、このスイッチの値は状態変数なので、<MOTION>タグの中で定義するよりも、<MODE>タグコ マンドなどで初期値を設定しておくことを推奨します。システム起動時の値は、SYNC になっています。 記述例 : 4 <ACTION Switch > BACS 語 あるいは体演技語 </ACTION> 能: BACS 符号(Body Action Coding Sysytem)を再生して、仮想俳優に体演技をさせるタグコマンドです。 <ACTION>と</ACTIN>のタグブロック中に、演技データベースに登録されている BACS 語あるい は体演技語を記述することで体演技をさせます。 Switch : 機 スイッチ名 引数記述法 内容 PERSON GATE TRANSIT STABLE RELEASE GAIN REGAIN =”仮想俳優名” =”gt” 数値は整数 =”tt” 数値は整数 =”st” 数値は整数 =”rt” 数値は整数 =”eg” 数値は整数 =”rg” 数値は整数 TTC =”gt, tt, st, rt, eg, rg” <PERSON>タグのスイッチで指定した仮想俳優名を記述します。 表情待機時間を指定します。 表情立ち上がり移行時間を指定します。 表情保持時間を指定します。 表情立ち下り移行期間を指定する。 状態保持時の強さと最終段階での強さを指定する。 表情終了時の強さを指定する。 GATE、TRANSIT、STABLE、RELEASE、GAIN、REGAIN を一度 に指定する。 Gain (%) EG RG Time GT TT GT : GATE time TT : TRANSIT time ST : STABLE time RT : RELEASE time ST RT Unit of time is 100ms EG : GAIN(%) RG : REGAIN(%) Block: </ACTION>タグコマンドでタグブロックを囲む必要があります。このタグブロックの中に、BACS 語ま たは体演技語を含む文章を記述します。これらは、<PERSON>タグの BPN_FILE スイッチで指定して読み 込んだ体演技データベースファイル(ActionDB.csv が初期値)に登録されている言葉です。この文節を含 む文字列ならば構いません。BACS 語と体演技語として ActionDB.csv に登録されている言葉を、第 2 章の XXに示します。 Notification: </ACTION>の位置で、指定により待ち合わせ動作を行います。 スイッチ NOTIFY キイワード =”SYNC” =”ASYNC” =”ABOART” 待ち合わせ動作 体演技が終わるまで、タグ位置で待ちます。 体演技が終わるのを待たずに、タグを通過します。 体演技を中断してタグを通過します。 通常、このスイッチの値は状態変数なので、<ACTION>タグの中で定義するよりも、<MODE>タグコ マンドなどで初期値を設定しておくことを推奨します。システム起動時の値は、SYNC になっています。 記述例 : 5 1.4 仮想俳優の移動や回転 <WALK Switch > 体演技語 </WALK> 機 能: 仮想俳優を前進/後退させるタグコマンドです。タグブロック内に、体演技語を記述することもでき ます。その場合には、演技しながら(たとえば歩行動作をしながら)仮想俳優を前進/後退させるこ とができます。 Switch : スイッチ名 PERSON DISTANCE 引数記述法 =”仮想俳優名” =”dn” 数値は整数 FRAMES =”fn” 数値は整数 内容 <PERSON>タグのスイッチで指定した仮想俳優名を記述します。 前進する移動量(正の数で前進)を座標系の数値で指定します。 前進するフレーム数を指定します。小さな数値を指定すれば素早 く、大きな数値を指定すれば、ゆっくりと前進します。 Block: </WALK>タグコマンドでタグブロックを囲む必要があります。このタグブロックの中に、体演技語を含 む文章を記述することができます。これらは、<PERSON>タグの BPN_FILE スイッチで指定して読み込ん だ体演技データベースファイル(ActionDB.csv が初期値)に登録されている言葉です。この文節を含む文 字列ならば構いません。体演技語として ActionDB.csv に登録されている言葉を、 第 2 章のXXに示します。 Notification: </WALK>の位置で、指定により待ち合わせ動作を行います。 スイッチ NOTIFY キイワード =”SYNC” =”ASYNC” =”ABOART” 待ち合わせ動作 前進が終わるまで、タグ位置で待ちます。 前進が終わるのを待たずに、タグを通過します。 前進を中断してタグを通過します。 通常、このスイッチの値は状態変数なので、<WALK>タグの中で定義するよりも、<MODE>タグコマンド などで初期値を設定しておくことを推奨します。システム起動時の値は、SYNC になっています。 記述例 : 6 <JUMP Switch > 体演技語 </JUMP> 機 能: 仮想俳優を上昇/下降させるタグコマンドです。タグブロック内に、体演技語を記述することもでき ます。その場合には、演技しながら(たとえば羽ばたかせながら)仮想俳優を上昇/下降させること ができます。 Switch : スイッチ名 引数記述法 PERSON DISTANCE =”仮想俳優名” =”dn” 数値は整数 FRAMES =”fn” 数値は整数 内容 <PERSON>タグのスイッチで指定した仮想俳優名を記述します。 上昇する移動量(正の数で上昇)を座標系の数値で指定します。 上昇するフレーム数を指定します。小さな数値を指定すれば素早 く、大きな数値を指定すれば、ゆっくりと上昇します。 Block: </JUMP>タグコマンドでタグブロックを囲む必要があります。このタグブロックの中に、体演技語を含む 文章を記述することができます。これらは、<PERSON>タグの BPN_FILE スイッチで指定して読み込んだ 体演技データベースファイル(ActionDB.csv が初期値)に登録されている言葉です。この文節を含む文字 列ならば構いません。体演技語として ActionDB.csv に登録されている言葉を、第 2 章のXXに示します。 Notification: </JUMP>の位置で、指定により待ち合わせ動作を行います。 スイッチ NOTIFY キイワード =”SYNC” =”ASYNC” =”ABOART” 待ち合わせ動作 上昇/下降が終わるまで、タグ位置で待ちます。 上昇/下降が終わるのを待たずに、タグを通過します。 上昇/下降を中断してタグを通過します。 通常、このスイッチの値は状態変数なので、<JUMP>タグの中で定義するよりも、<MODE>タグコマンドな どで初期値を設定しておくことを推奨します。システム起動時の値は、SYNC になっています。 <SLIDE Switch > 体演技語 </SLIDE> 機 能: 仮想俳優を横移動させるタグコマンドです。タグブロック内に、体演技語を記述することもできます。 その場合には、演技しながら(たとえば歩行しながら)仮想俳優を横移動させることができます。 Switch : スイッチ名 PERSON DISTANCE 引数記述法 =”仮想俳優名” =”dn” 数値は整数 FRAMES =”fn” 数値は整数 内容 <PERSON>タグのスイッチで指定した仮想俳優名を記述します。 横移動する移動量(正の数で右)を座標系の数値で指定します。 横移動するフレーム数を指定します。小さな数値を指定すれば素 早く、大きな数値を指定すれば、ゆっくりと横移動します。 Block: </SLIDE>タグコマンドでタグブロックを囲む必要があります。このタグブロックの中に、体演技語を含 む文章を記述することができます。これらは、<PERSON>タグの BPN_FILE スイッチで指定して読み込ん だ体演技データベースファイル(ActionDB.csv が初期値)に登録されている言葉です。この文節を含む文 字列ならば構いません。体演技語として ActionDB.csv に登録されている言葉を、 第 2 章のXXに示します。 Notification: </SLIDE>の位置で、指定により待ち合わせ動作を行います。 スイッチ NOTIFY キイワード =”SYNC” =”ASYNC” =”ABOART” 待ち合わせ動作 横移動が終わるまで、タグ位置で待ちます。 横移動が終わるのを待たずに、タグを通過します。 横移動を中断してタグを通過します。 通常、このスイッチの値は状態変数なので、<SLIDE>タグの中で定義するよりも、<MODE>タグコマ ンドなどで初期値を設定しておくことを推奨します。システム起動時の値は、SYNC になっています。 7 <ROTX Switch > 体演技語 </ROTX> 機 能: 仮想俳優を、X 軸を中心に回転させるタグコマンドです。タグブロック内に体演技語を記述すること もできます。その場合には、演技しながら(たとえば歩行しながら)仮想俳優を回転させることがで きます。 Switch : スイッチ名 PERSON TURN 引数記述法 =”仮想俳優名” =”tn” 数値は整数 FRAMES =”fn” Block: 数値は整数 内容 <PERSON>タグのスイッチで指定した仮想俳優名を記述します。 回転角度(正の数で反時計周り)を指定します。 回転するフレーム数を指定します。小さな数値を指定すれば素早 く、大きな数値を指定すれば、ゆっくりと回転します。 </ROTX>タグコマンドでタグブロックを囲む必要があります。このタグブロックの中に、体演技語を含 む文章を記述することができます。これらは、<PERSON>タグの BPN_FILE スイッチで指定して読み込ん だ体演技データベースファイル(ActionDB.csv が初期値)に登録されている言葉です。この文節を含む文 字列ならば構いません。体演技語として ActionDB.csv に登録されている言葉を、 第 2 章のXXに示します。 Notification: </ROTX>の位置で、指定により待ち合わせ動作を行います。 スイッチ NOTIFY キイワード =”SYNC” =”ASYNC” =”ABOART” 待ち合わせ動作 回転が終わるまで、タグ位置で待ちます。 回転が終わるのを待たずに、タグを通過します。 回転を中断してタグを通過します。 通常、このスイッチの値は状態変数なので、<ROTX>タグの中で定義するよりも、<MODE>タグコマ ンドなどで初期値を設定しておくことを推奨します。システム起動時の値は、SYNC になっています。 記述例 <ROTY : Switch > 体演技語 </ROTY> 機 能: 仮想俳優を、Y 軸を中心に回転させるタグコマンドです。タグブロック内に体演技語を記述すること もできます。その場合には、演技しながら(たとえば歩行しながら)仮想俳優を回転させることがで きます。 Switch : スイッチ名 記述法 PERSON TURN =”仮想俳優名” =”tn” 数値は整数 FRAMES =”fn” Block: 数値は整数 内容 <PERSON>タグのスイッチで指定した仮想俳優名を記述します。 回転角度(正の数で反時計周り)を指定します。 回転するフレーム数を指定します。小さな数値を指定すれば素早 く、大きな数値を指定すれば、ゆっくりと回転します。 </ROTY>タグコマンドでタグブロックを囲む必要があります。このタグブロックの中に、体演技語を含 む文章を記述することができます。これらは、<PERSON>タグの BPN_FILE スイッチで指定して読み込ん だ体演技データベースファイル(ActionDB.csv が初期値)に登録されている言葉です。この文節を含む文 字列ならば構いません。体演技語として ActionDB.csv に登録されている言葉を、 第 2 章のXXに示します。 Notification: </ROTY>の位置で、指定により待ち合わせ動作を行います。 スイッチ NOTIFY キイワード =”SYNC” =”ASYNC” =”ABOART” 待ち合わせ動作 回転が終わるまで、タグ位置で待ちます。 回転が終わるのを待たずに、タグを通過します。 回転を中断してタグを通過します。 通常、このスイッチの値は状態変数なので、<ROTY>タグの中で定義するよりも、<MODE>タグコマ ンドなどで初期値を設定しておくことを推奨します。システム起動時の値は、SYNC になっています。 記述例 : 8 <ROTZ Switch > 体演技語 </ROTZ> 機 能: 仮想俳優を、Z 軸を中心に回転させるタグコマンドです。タグブロック内に体演技語を記述すること もできます。その場合には、演技しながら(たとえば歩行しながら)仮想俳優を回転させることがで きます。 Switch : スイッチ名 記述法 PERSON TURN =”仮想俳優名” =”tn” 数値は整数 FRAMES =”fn” Block: 数値は整数 内容 <PERSON>タグのスイッチで指定した仮想俳優名を記述します。 回転角度(正の数で反時計周り)を指定します。 回転するフレーム数を指定します。小さな数値を指定すれば素早 く、大きな数値を指定すれば、ゆっくりと回転します。 </ROTZ>タグコマンドでタグブロックを囲む必要があります。このタグブロックの中に、体演技語を含 む文章を記述することができます。これらは、<PERSON>タグの BPN_FILE スイッチで指定して読み込ん だ体演技データベースファイル(ActionDB.csv が初期値)に登録されている言葉です。この文節を含む文 字列ならば構いません。体演技語として ActionDB.csv に登録されている言葉を、 第 2 章のXXに示します。 Notification: </ROTZ>の位置で、指定により待ち合わせ動作を行います。 スイッチ NOTIFY キイワード =”SYNC” =”ASYNC” =”ABOART” 待ち合わせ動作 回転が終わるまで、タグ位置で待ちます。 回転が終わるのを待たずに、タグを通過します。 回転を中断してタグを通過します。 通常、このスイッチの値は状態変数なので、<ROTZ>タグの中で定義するよりも、<MODE>タグコマ ンドなどで初期値を設定しておくことを推奨します。システム起動時の値は、SYNC になっています。 記述例 : 9 1.5 小道具 (Stage Parts) の配置と動作 <PARTS Switch > 能: 舞台に小道具(Stage Parts)となる 3 次元形状データを読み込みます。小道具は、メモリ容量が許す限 り最大 64 個まで読み込めます。配置座標、回転角、座標軸ごとの拡大縮小率をスイッチで指定できま す。さらに、条件式で状態変数の値を定数と比較して、条件付きで小道具を読み込むこともできます。 Switch : 機 スイッチ名 TDM_FILE NAME 条件式 POSISTION ROTATION SCALE 記述法 =”形状データファイル名” =”小道具名” MARK1=”n” MARK2=”n” MARK3=”n” MARK4=”n” MARK5=”n” MARK6=”n” MARK7=”n” MARK8=”n” MARK1N=”m” MARK2N=”m” MARK3N=”m” MARK4N=”m” MARK5N=”m” MARK6N=”m” MARK7N=”m” MARK8N=”m” =”x, y, z” =”rx, ry, rz” =”sx, sy, sz” 内容 PiasArtsit で作成した 3 次元形状データのファイル名。 小道具に名前をつけます。 MARK1 の値が n だったら読み込みます。 MARK2 の値が n だったら読み込みます。 MARK3 の値が n だったら読み込みます。 MARK4 の値が n だったら読み込みます。 MARK5 の値が n だったら読み込みます。 MARK6 の値が n だったら読み込みます。 MARK7 の値が n だったら読み込みます。 MARK8 の値が n だったら読み込みます。 MARK1 の値が m でなければ読み込みます。 MARK2 の値が m でなければ読み込みます。 MARK3 の値が m でなければ読み込みます。 MARK4 の値が m でなければ読み込みます。 MARK5 の値が m でなければ読み込みます。 MARK6 の値が m でなければ読み込みます。 MARK7 の値が m でなければ読み込みます。 MARK8 の値が m でなければ読み込みます。 配置するモデリング座標値 回転角(度数。反時計周りが正の数) 拡大縮小率 0.0 より大きい実数値 MARK1 から MARK8 は、シナリオ中でいつでも参照できる状態変数の予約語です。この予約語の最後に N をつけると、条件が否定論理(等しくない)になります。MARK1N=”1” は、MARK1 の値が 1 ではないこ とを表します。状態変数の保持する n,m 等の値は整数値です。実数値は扱えません。条件式は、タグの中に 1 個しか記述することはできません。複数個の条件式を記述すると動作不定になります。 Block: 記述例 ブロック構造ではないため、</PARTS> はありません。 : 以下の例は、無条件に小道具を読み込む記述例です。 <PARTS TDM_FILE="C.tdm" NAME="炭素原子" POSITION="0.0, -100.0, -1000.0" ROTATION="0.0, 0.0, 0.0" SCALE="1.5,1.5,1.5"> 以下の例は、状態変数 MARK1 の値が 1 だったら、小道具を読み込む記述例です。 <PARTS MARK1="1" TDM_FILE="うすい塩酸.tdm" NAME="塩酸" POSITION="0.0, 0.0, 0.0" ROTATION="0.0, 0.0, 0.0" SCALE="1.0,1.0,1.0"> 以下の例は、状態変数 MARK2 の値が 2 でなければ、小道具を読み込む記述例です。 <PARTS MARKN1="2" TDM_FILE="亜鉛.tdm" NAME=”亜鉛” POSITION="100.0, 560.0, -2000.0" ROTATION="0.0, 0.0, 0.0" SCALE="1.5, 1.5, 1.5"> 10 <MOVE Switch > </MOVE> 能: 舞台に配置された小道具(Stage Parts)を指定されたフレーム数で動かします。全体を動かすこともで きるし、シーングラフ中の NODE を指定して一部分を動かすこともできます。 Switch : 機 スイッチ名 引数記述法 NAME NODE TRANSLATION ROTATION =”小道具名” =”NODE のパス名” =”x, y, z” =”rx, ry, rz” FRAMES =”n” 内容 動かしたい小道具に名前を指定します。 動かしたい小道具の NODE 名 並行移動量を指定します。 回転角(度数。反時計周りが正の数)を指定します。 動かすフレーム数を指定します。小さな数値を指定す れば素早く、大きな数値を指定すれば、ゆっくりと小 道具が動きます。1 を指定すると、すぐに動きます。 Block: </MOVE>タグコマンドでタグブロックを囲む必要があります。このタグブロックの中に、別の動作を入 れ子で何段でも記述することができます。 Notification: </MOVE>の位置で、指定により待ち合わせ動作を行います。 スイッチ NOTIFY キイワード =”SYNC” =”ASYNC” =”ABOART” 待ち合わせ動作 小道具の動きが終わるまで、タグ位置で待ちます。 小道具の動きが終わるのを待たずに、タグを通過します。 小道具の動きを中断してタグを通過します。 通常、このスイッチの値は状態変数なので、<MOVE>タグの中で定義するよりも、<MODE>タグコマンドな どで初期値を設定しておくことを推奨します。システム起動時の値は、SYNC になっています。 記述例 : 以下の例は、小道具全体を移動します。 <MOVE NAME="見本品" TRANSLATION="-1600.0, 650.0, -1300.0" FRAMES="10"></MOVE> 以下の例は、小道具の中の Elect という NODE を回転させます。NOTIFY で待ち合わせ無しに設定できます。 <MOVE NAME="電子" NOTIFY="ASYNC" NODE="Elect" ROTATION="0.0, 0.0, -50000.0" FRAMES="4000"> </MOVE> <DELETE_PARTS 機 Switch > 能: 舞台に配置された小道具(Stage Parts)を消去します。 Switch : スイッチ名 NAME 引数記述法 =”小道具名” ALL_DELETE Block: 記述例 内容 消去したい小道具に名前を指定します。 このスイッチを記述すると、現在舞台に配置されてい る全ての小道具を消去します。 ブロック構造ではないため、</DELETE_PARTS> はありません。 : <DELETE_PARTS NAME="電子"> <DELETE_PARTS ALL_DELETE> 11 1.6 カメラワークに関する機能 <CAMERA Switch > </CAMERA> 機 能: カメラを指定の位置、角度、アングルまで、指定されたフレーム数で移動(カメラワークと呼ぶ)す るタグコマンドです。 Switch : スイッチ名 引数記述法 POSISTION DIRECTION ANGLE =”x, y, z” =”dx, dy, dz” =”ax, ay, az” FRAMES =”99” Block: 数値は整数 内容 カメラを配置するモデリング座標値 カメラの凝視方向を示すベクトル カメラの上を表す方向ベクトル。(カメラの回転引数) カメラワークのフレーム数を指定します。小さな数値を指定すれ ば素早く、大きな数値を指定すれば、ゆっくりとカメラワークし ます。1 を指定すると、カメラの配置が即座に変わります。 </CAMERA>タグコマンドでタグブロックを囲む必要があります。 Notification: </CAMERA>の位置で、指定により待ち合わせ動作を行います。 スイッチ NOTIFY キイワード =”SYNC” =”ASYNC” =”ABOART” 待ち合わせ動作 カメラワークが終わるまで、タグ位置で待ちます。 カメラワークが終わるのを待たずに、タグを通過します。 カメラワークを中断してタグを通過します。 通常、このスイッチの値は状態変数なので、<CAMERA>タグの中で定義するよりも、<MODE>タグコ マンドなどで初期値を設定しておくことを推奨します。システム起動時の値は、SYNC になっています。 記述例 : <CAMERA POSITION = "0.0, 0.0, 0.0" DIRECTION = "0.0, 0.0, -100.0" ANGLE = "0.0, 1.0, 0.0" FRAMES="5"> <LENS 機 Switch > 能: 視野錐台を設定するタグコマンドです。 Switch : スイッチ名 NEARZ FARZ FOVY Block: 記述例 引数記述法 =”r” =”r” =”n” 内容 視点と投影面との距離を指定します。実数値です。 視点と最遠方点との距離を指定します。実数値です。 カメラの視野角度を指定します。整数値です。 ブロック構造はありません。</LENS>はありません。 : <LENS NEARZ="100.0" FARZ="30000.0" FOVY="40"> 12 1.7 音楽と効果音の再生 <MUSIC Switch > 機 </MUSIC> 能: MIDI ファイルの音楽を再生します。 Switch : スイッチ名 MIDI_FILE 引数記述法 =”MIDI ファイル名” 内容 MIDI のファイル名を指定します。 Block: </MUSIC>タグコマンドでタグブロックを囲む必要があります。 Notification: </MUSIC>の位置で、指定により待ち合わせ動作を行います。 記述例 スイッチ キイワード 待ち合わせ動作 NOTIFY =”SYNC” =”ASYNC” =”ABOART” 演奏が終わるまで、タグ位置で待ちます。 演奏が終わるのを待たずに、タグを通過します。 演奏を中断してタグを通過します。 : <SOUND Switch > 機 </SOUIND> 能: WAV ファイルの効果音を再生します。 Switch : スイッチ名 WAV_FILE 引数記述法 =”WAV ファイル名” 内容 Windows の WAV のファイル名を指定します。 Block: </SOUND>タグコマンドでタグブロックを囲む必要があります。 Notification: </SOUND>の位置で、指定により待ち合わせ動作を行います。 記述例 スイッチ キイワード 待ち合わせ動作 NOTIFY =”SYNC” =”ASYNC” =”ABOART” 音再生が終わるまで、タグ位置で待ちます。 音再生が終わるのを待たずに、タグを通過します。 音再生を中断してタグを通過します。 : 13 1.8 シナリオ進行制御と状態変数の設定 <SCENARIO Switch> 機 能: 外部のシナリオファイルにハイパーリンクします。すなわち、現在のシナリオから指定されたシナリ オファイルの再生へジャンプします。元のシナリオには戻れません。 Switch : スイッチ名 引数記述法 =”CPSL3 シナリオファイル名” SCENARIO_FILE : <SCENARIO <SCENE 機 拡張子が、.cps の CPSL3 シナリオファイルを指定します。 ブロック構造はありません。</SCENARIO>はありません。 Block: 記述例 内容 Switch> SCENARIO_FILE="組み立て.cps"> ………….. </SCENE> 能: シナリオにチャプタ番号を定義します。チャプタ番号が定義されていると、CAP2 ブラウザのチャプ タ選択機能で、指定したチャプタへジャンプできます。 Switch : スイッチ名 引数記述法 NO n は1から始まるチャプタ番号(整数)を指定します。 =”n” 1つのチャプタは、<SCENARIO>と</SCENARIO>で囲む必要があります。。 Block: 記述例 内容 : <SCENE NO="1"> ( チャプタ内のシナリオ記述ブロック ) </SCENE> <TOTALSCENE 機 Switch> 能: シナリオ内のに合計チャプタ数を定義します。<SCENE>タグを記述する前に、初期設定として記述 しておく必要があります。 Switch : スイッチ名 TOTALNO =”n” 内容 n は1から始まる合計チャプタ数(整数)を指定します。 ブロック構造はありません。</TOTALSCENE>はありません。 Block: 記述例 引数記述法 : <TOTALSCENE TOTALNO="3"> 14 <COM> 機 コメント文 </COM> 能: シナリオ内にコメント文(注釈)を記述しておきたい時に使用します。 Switch : コメント文は、<COM>と</COM>で囲む必要があります。コメント文は何行にわたっても構いません。 Block: 記述例 無し : <COM> **************************************************************** これは、CPSL3 の使い方を教える解説映像シナリオです。 **************************************************************** </COM> <STOP> 機 能: シナリオ内 で映像提示を強制的に停止します。通常は使用しませんが、シナリオのデバッグ中には 役に立ちます。 Switch : Block: 無し ブロック構造はありません。</STOP>はありません。 <EXIT> 機 能: 映像提示を強制的に停止し CAP2 ブラウザを自動的に終了します。この機能は、<EXPLAIN>タグで 呼び出す解説シナリオの最後に記述すると効果的です。探索学習モードでもうひとつの CAP2 ブラウ ザを呼び出した時、解説が終了すると自動的にその CAP2 を終了させることができます。 Switch : Block: 無し ブロック構造はありません。</EXIT>はありません。 15 <MODE Switch> 機 能: CPSL3 の状態変数に値を設定します。状態変数は、設定されたブロックより内側のブロックで有効 になるスコープ機能を持っています。シナリオの先頭で状態変数に値を設定すると、全てのブロック で有効になります。 Switch : スイッチ名 PERSON 引数記述法 GATE TRANSIT STABLE RELEASE GAIN REGAIN =”仮想俳優名” =”SYNC” =”ASYNC” =”ABOART” =”ON” =”OFF” =”gt” 数値は整数 =”tt” 数値は整数 =”st” 数値は整数 =”rt” 数値は整数 =”eg” 数値は整数 =”rg” 数値は整数 TTC =”gt, tt, st, rt, eg, rg” RATE REPEAT DISTANCE TURN =”n” 数値は整数 =”n” 数値は整数 =”ON” =”OFF” =”dn” 数値は整数 =”tn” 数値は整数 FRAMES =”fn” WAIT =”t” NOTIFY SCRIPT INIT <PERSON>タグのスイッチで指定した仮想俳優名を記述します。 動作が終わるまで、タグ位置で待ちます。 動作が終わるのを待たずに、タグを通過します。 動作を中断してタグを通過します。 ON : 字幕を同時に表示します。 OFF :字幕は表示しません。 表情待機時間を指定します。 表情立ち上がり移行時間を指定します。 表情保持時間を指定します。 表情立ち下り移行期間を指定する。 状態保持時の強さと最終段階での強さを指定する。 表情終了時の強さを指定する。 GATE、TRANSIT、STABLE、RELEASE、GAIN、REGAIN を一度 に指定する。 モーションの間を補間するフレーム数を指定します。 モーションを繰り返す回数を指定します。 “ON”が指定されると、演技の前に仮想俳優の姿勢を正立に戻す。 移動する移動量を座標系の数値で指定します。 回転角度(正の数で反時計周り)を指定します。 移動するフレーム数を指定します。小さな数値を指定すれば素早 く、大きな数値を指定すれば、ゆっくりと移動します。 <TIMER>の停止時間。単位はミリ秒の整数値 ブロック構造はありません。</MODE>はありません。 Block: 記述例 数値は整数 内容 : <MODE PERSON="奈々" <MODE SCRIPT="OFF" NOTIFY="SYNC" RATE="2" INIT=”ON”> TTC="0,4,300,10,100,100"> 16 Interactive 動作(対話動作) 1.9 <REQUEST 機 Switch > 能: 回答属性番号(CASE)を与えて小道具(Stage Parts) を舞台に配置します。この小道具を AnswerTarget と呼びます。AnswerTarget として、通常の 3 次元形状モデルやテキストパネルを指定できます。また、 透明な長方形を Answer Target にして配置することもできます。この利用法は画面のある特定の領域を AnswerTarget に設定できるので効果的です。AnwerTarget がマウスでクリックされると、指定された回 答属性番号(CASE 番号)をもつ<ANSWER>ブロックへジャンプします。<PARTS>タグと同じように、条 件式を用いて条件付きで AnswerTarget を配置するかどうかを設定できます。 Switch : スイッチ名 TDM_FILE CASE 条件式 POSISTION ROTATION SCALE REQUEST_END 引数記述法 =”形状データファイル名” =”n” 数値は整数 MARK1=”n” MARK2=”n” MARK3=”n” MARK4=”n” MARK5=”n” MARK6=”n” MARK7=”n” MARK8=”n” MARK1N=”m” MARK2N=”m” MARK3N=”m” MARK4N=”m” MARK5N=”m” MARK6N=”m” MARK7N=”m” MARK8N=”m” =”x, y, z” =”rx, ry, rz” =”sx, sy, sz” =”ON” =”OFF” 内容 PiasArtsit で作成した 3 次元形状データのファイル名。 回答属性番号 n は 1 から始まる連番の整数値です。 MARK1 の値が n だったら読み込みます。 MARK2 の値が n だったら読み込みます。 MARK3 の値が n だったら読み込みます。 MARK4 の値が n だったら読み込みます。 MARK5 の値が n だったら読み込みます。 MARK6 の値が n だったら読み込みます。 MARK7 の値が n だったら読み込みます。 MARK8 の値が n だったら読み込みます。 MARK1 の値が m でなければ読み込みます。 MARK2 の値が m でなければ読み込みます。 MARK3 の値が m でなければ読み込みます。 MARK4 の値が m でなければ読み込みます。 MARK5 の値が m でなければ読み込みます。 MARK6 の値が m でなければ読み込みます。 MARK7 の値が m でなければ読み込みます。 MARK8 の値が m でなければ読み込みます。 配置するモデリング座標値 回転角(度数。反時計周りが正の数) 拡大縮小率 0.0 より大きい実数値 ON の時、マウスクリックを待つ待機状態に入ります。 このスイッチの省略時は OFF です。 MARK1 から MARK8 は、シナリオ中でいつでも参照できる状態変数の予約語です。この予約語の最後に N をつけると、条件が否定論理(等しくない)になります。MARK1N=”1” は、MARK1 の値が 1 ではないこ とを表します。状態変数の保持する n,m 等の値は整数値です。実数値は扱えません。条件式は、タグの中に 1 個しか記述することはできません。複数個の条件式を記述すると動作不定になります。 Block: 記述例 ブロック構造はありません。</REQUEST>はありません。 : <REQUEST>タグは、特殊な並記法で使用します。複数の AnswerTarget を配置してから、操作者 のマウスクリックを待つ待機状態に入るため、特殊なスイッチ、REQUEST_END を用います。 <REQUEST CASE="1" TDM_FILE="ボタン左上.tdm" POSITION="-500.0, 600.0, -2000.0" ROTATION="0.0, 0.0, 0.0" SCALE="1.5, 1.5, 1.5"> <REQUEST CASE="2" TDM_FILE="ボタン上.tdm" POSITION="100.0, 560.0, -2000.0" ROTATION="0.0, 0.0, 0.0" SCALE="1.5, 1.5, 1.5"> <REQUEST CASE="3" TDM_FILE="ボタン右上.tdm" POSITION="800.0, 600.0, -2000.0" ROTATION="0.0, 0.0, 0.0" SCALE="1.5, 1.5, 1.5"> <REQUEST CASE="4" TDM_FILE="ボタン右下.tdm" POSITION="0.0, -3000.0, -2000.0" ROTATION="0.0, 0.0, 0.0" SCALE="0.5, 0.5, 0.5" REQUEST_END="ON"> 17 <ANSWER Switch > </ANSWER> 能: <REQUEST>タグで列挙した AnswerTarget が操作者によってマウスクリックされた時にジャンプ するするエントリポイントブロックを定義します。<REQUEST>タグの CASE スイッチで定義され た番号と同じ番号を持つ<ANSWER>ブロックがエントリポイントになります。 Switch : 機 スイッチ名 =”n” CASE Block: 引数記述法 数値は整数 内容 回答属性番号 n は 1 から始まる連番の整数値です。 </ANSWER>タグコマンドでタグブロックを囲む必要があります。このタグブロックの中に、必要な処 理を記述します。通常は、<SCORE>タグコマンドを用いて、得点変数 POINT や状態変数 MARK1~MARK8 に値を加算したります。 Notification: </ANSWER>の位置での待ち合わせ動作はありません。CASE 番号の一致しない<ANSWER>ブロ ックは中身を実行せずに通過し、CASE 番号の一致する<ANSWER>ブロックは、ブロック内のタグコ マンドを実行します。そのまま、シナリオの進行は下に続きます。もし、<ANSWER>ブロックの中か ら他のシナリオへ分岐したい場合には、ブロック内で<SCENARIO>タグを実行します。 記述例 : <ANSWER CASE="1"> <SCORE POINTS="100" MARK1="1"> <ANSWER CASE="2"> <SCORE POINTS="50" MARK1="2"> <ANSWER CASE="3"> <SCORE POINTS="50" MARK1="3"> <ANSWER CASE="4"> <SCORE POINTS="50" MARK1="4"> <SCENARIO SCENARIO_FILE="部品選択3.cps"> <SCORE 機 </ANSWER> </ANSWER> </ANSWER> </ANSWER> Switch > 能: <SCORE>タグには 2 つの使い方があります。 ひとつは、得点変数 POINT や状態変数 MARK1~MARK8 に値を加算する機能です。もうひとつは、得点によって場合わけをして多岐シナリオ分岐を行う機能です。 Switch : スイッチ名 CLEAR POINT MARK1 MARK2 MARK3 MARK4 MARK5 MARK6 MARK7 MARK8 OVER THEN Block: 引数記述法 =”ON” =”p” =m” =m” =m” =m” =m” =m” =m” =m” =”pt” =”CPSL3 シナリオファイル名” 内容 POINT 変数と全ての MARK 変数の値を 0 に初期化する。 POINT に p を加算する。p は符号付きの整数値。 MARK1 に m を加算する。m は符号付きの整数値。 MARK2 に m を加算する。m は符号付きの整数値。 MARK3 に m を加算する。m は符号付きの整数値。 MARK4 に m を加算する。m は符号付きの整数値。 MARK5 に m を加算する。m は符号付きの整数値。 MARK6 に m を加算する。m は符号付きの整数値。 MARK7 に m を加算する。m は符号付きの整数値。 MARK8 に m を加算する。m は符号付きの整数値。 POINT の値が pt 以上の場合、THEN に続くシナリオに分岐する。 拡張子が、.cps の CPSL3 シナリオファイルを指定します。 ブロック構造はありません。</SCORE>はありません。 記述例:以下の例は、POINT 変数や MARK4 変数に値を加算する例です。 <SCORE POINTS="-50" MARK4="1"> 以下の例は、POINT 変数の値によって、場合わけ分岐(外部シナリオを起動)する例です。 <SCORE OVER="300" THEN="Ans1.cps"> <SCORE OVER="250" THEN="Ans2.cps"> <SCORE OVER="60" THEN="Ans3.cps"> <SCENARIO SCENARIO_FILE="Ans4.cps"> <COM> POINT が 300 点以上なら Ans1.cps へ</COM> <COM> POINT が 250 点以上なら Ans2.cps へ</COM> <COM> POINT が 60 点以上なら Ans3.cps へ</COM> <COM> POINT が 60 点未満なら Ans4.cps へ</COM> この場合は、最後の行は<SCENARIO>タグで終わらなければなりません。 18 <INPUTNUM Switch > 機 能: 電卓に似た数値入力パッドを表示して、操作者がマウスクリックで数値入力(ただし、整数のみ)を 行う機能です。この時点で、正解の値を指定しておきます。操作者の入力値が正解ならば <CORRECT>タグブロックへ、不正解ならば<INCORRECT>タグブロックへ分岐します。 Switch : スイッチ名 引数記述法 VALUE POSISTION ROTATION SCALE 内容 正解の整数値 n を指定します。 配置するモデリング座標値 回転角(度数。反時計周りが正の数) 拡大縮小率 0.0 より大きい実数値 =”n” =”x, y, z” =”rx, ry, rz” =”sx, sy, sz” 数値表示域。ここに電卓のように入力 した数値が表示される。 数値ボタン。操作は 電卓と同じ。 決定ボタン。ここをクリックすると、 数値入力パッドの入力待機状態を終 了して、シナリオ進行に戻る。 クリアボタン。ここを クリックすると、数値 入力域が0に初期化さ れる。 表示される数値入力パッド ブロック構造はありません。</INPUTNUM>はありません。 Block: 記述例 : <INPUTNUM VALUE="20" POSITION="200.0, -550.0, -4000.0" ROTATION="0.0, 0.0, 0.0" SCALE="1.0, 1.0, 1.0"> <INPUTWORD Switch > 機 能: 文章入力ダイアログボックスを表示して、操作者がキイ入力する機能です。この時点で、正解の文字 列を指定しておきます。操作者の入力値が正解ならば<CORRECT>タグブロックへ、不正解ならば <INCORRECT>タグブロックへ分岐します。 Switch : スイッチ名 ANSWER POSISTION 引数記述法 =”正解文字列” =”x, y, z” 内容 正解の文字列を指定します。日本語文字列も可能です。 ダイアログボックスを配置するモデリング座標値 文字入力領域。かな 漢字変換も可能。 決定ボタン。ここをクリックすると、 文字入力パッドの入力待機状態を終 了して、シナリオ進行に戻る。 表示される文字入力パッド ブロック構造はありません。</INPUTWORD>はありません。 Block: 記述例 : <INPUTWORD ANSWER="水素" POSITION="200.0, -550.0, -4000.0"> 19 <CORRECT> ……正解時の処理………….……….. </CORRECT> <INCORRECT> ……不正解の時の処理…………….. </INCORRECT> 機 能: <INPUTNUM>タグや<INPUTWORD>タグで操作者が入力した回答に応じて、正解の時にジャンプ するエントリポイントブロックと、不正解のの時にジャンプするエントリポイントブロックを定義しま す。正解のときは、<CORRECT>ブロックを、不正解のときは<INCORRECT>ブロックへ分岐します。 Switch : 無し Block: </CORRECT>タグコマンドまたは</INCORRECT>タグコマンドでタグブロックを囲む必要があります。 このタグブロックの中に、必要な処理を記述します。通常は、<SCORE>タグコマンドを用いて、得点変 数 POINT や状態変数 MARK1~MARK8 に値を加算したります。 Notification: </CORRECT>,</INCORRECT>の位置での待ち合わせ動作はありません。該当しないブロックは 中身を実行せずに通過し、該当するブロックは、ブロック内のタグコマンドを実行します。そのまま、シ ナリオの進行は下に続きます。もしブロックの中から他のシナリオへ分岐したい場合には、ブロック内で <SCENARIO>タグを実行します。 記述例 : <SPEECH PERSON="なな">私の年齢はいくつでしょう?</SPEECH> <INPUTNUM VALUE="20" POSITION="200.0, -550.0, -4000.0" ROTATION="0.0, 0.0, 0.0" SCALE="1.0, 1.0, 1.0"> <CORRECT> <SPEECH PERSON="なな">正解です。</SPEECH> </CORRECT> <INCORRECT> <SPEECH PERSON="なな">残念でした。間違いです。20 才です。</SPEECH> </INCORRECT> 20 Virtual Exploratory Learning(VEL)機能 1.10 <INTERNET 機 Switch> 能: インターネットアドレス(URL)を与えて小道具(Stage Parts) を舞台に配置します。この小道具を INTERNET Target と呼びます。INTERNET Target として、通常の 3 次元形状モデルやテキストパネル を指定できます。また、透明な長方形を INTERNET Target にして配置することもできます。この利用 法は画面のある特定の領域を INTERNET Target に設定できるので効果的です。INTERNET Target がマ ウスでクリックされると、Windows インターネットエクスプローラが自動的にスタートし、指定され たWEBページを開きます。 Switch : スイッチ名 引数記述法 TDM_FILE PARAM POSISTION ROTATION SCALE =”形状データファイル名” =”URL” =”x, y, z” =”rx, ry, rz” =”sx, sy, sz” 内容 INTERNET Target の 3 次元形状データのファイル名。 WEB ページの URL アドレス、またはファイル名 配置するモデリング座標値 回転角(度数。反時計周りが正の数) 拡大縮小率 0.0 より大きい実数値 ブロック構造はありません。</INTERNET>はありません。 Block: 記述例: <INTERNET <MPLAYER 機 TDM_FILE="Target1.tdm" PARAM="http://ja.wikipedia.org/wiki/%E5%A1%A9%E9%85" POSITION="-500.0, 600.0, -2000.0" ROTATION="0.0, 0.0, 0.0" SCALE="1.5, 1.5, 1.5"> Switch> 能: Windows 動画ファイル名(.AVI 形式ファイル) を与えて、小道具(Stage Parts) を舞台に配置します。こ の小道具を MEDIA PLAYER Target と呼びます。MEDIA PLAYER Target として、通常の 3 次元形状モ デルやテキストパネルを指定できます。また、透明な長方形を MEDIA PLAYER Target にして配置する こともできます。この利用法は画面のある特定の領域を MEDIA PLAYER Target に設定できるので効 果的です。MEDIA PLAYER Target がマウスでクリックされると、Windows Media Player が自動的にス タートし、指定された動画ファイル(.AVI 形式)を再生します。 Switch : スイッチ名 TDM_FILE PARAM POSISTION ROTATION SCALE Block: 引数記述法 =”形状データファイル名” =”動画ファイル名” =”x, y, z” =”rx, ry, rz” =”sx, sy, sz” 内容 MEDIA PLAYER Target の 3 次元形状データのファイル名。 Windows AVI 形式の動画ファイル名 配置するモデリング座標値 回転角(度数。反時計周りが正の数) 拡大縮小率 0.0 より大きい実数値 ブロック構造はありません。</MPLAYER>はありません。 記述例: <MPLAYER TDM_FILE="Target2.tdm" PARAM="DCmotor.avi" POSITION="-100.0, 600.0, -2000.0" ROTATION="0.0, 0.0, 0.0" SCALE="1.2, 1.2, 1.2"> 21 <EXPLAIN Switch> 機 能: CPSL3 で記述されたシナリオファイル名を与えて、小道具(Stage Parts) を舞台に配置します。この小道 具を EXPLAIN Target と呼びます。EXPLAIN Target として、通常の 3 次元形状モデルやテキストパネ ルを指定できます。また、透明な長方形を EXPLAIN Target にして配置することもできます。この利用 法は画面のある特定の領域を EXPLAIN Target に設定できるので効果的です。EXPLAIN Target がマウ スでクリックされると、CAP2 Browser が自動的にスタートし、指定された 3DCG アニメーションを再 生します。シナリオファイルの最後に<EXIT>タグが記述されていると、CAP2 Browser は自動的に終了 します。 Switch : スイッチ名 引数記述法 TDM_FILE PARAM POSISTION ROTATION SCALE =”形状データファイル名” =”CPSL3 ファイル名” =”x, y, z” =”rx, ry, rz” =”sx, sy, sz” 内容 EXPLAIN Target の 3 次元形状データのファイル名。 CPSL3 で記述されたシナリオファイル名 配置するモデリング座標値 回転角(度数。反時計周りが正の数) 拡大縮小率 0.0 より大きい実数値 ブロック構造はありません。</MEXPLAIN>はありません。 Block: 記述例: <EXPLAIN TDM_FILE="Target3.tdm" PARAM="Hint1.cps" POSITION="200.0, 600.0, -2000.0" ROTATION="0.0, 0.0, 0.0" SCALE="1.0, 1.0, 1.0"> <SHELL Switch> 機 能: 起動したい任意の Windows アプリケーションソフトウェアの情報を与えて、小道具(Stage Parts) を舞 台に配置します。この小道具を SHELL Target と呼びます。SHELL Target として、通常の 3 次元形状 モデルやテキストパネルを指定できます。また、透明な長方形を SHELL Target にして配置することも できます。この利用法は画面のある特定の領域を SHELL Target に設定できるので効果的です。SHELL Target がマウスでクリックされると、指定された Windows アプリケーションが自動的にスタートしま す。定義する情報は、アプリケーションの位置するパス名、コマンドファイル名、コマンド引数文字列 の 3 個です。原則として、Windows 配下で動作するプログラムならば、製品版、自作品を問わず、何で も起動できます。 Switch : スイッチ名 TDM_FILE PATH COMMAND PARAM POSISTION ROTATION SCALE Block: 引数記述法 内容 PiasArtsit で作成した 3 次元形状データのファイル名。 起動したいソフトウェアの位置するパス名 起動したいソフトウェアのファイル名 起動ソフトウェアに与える引数文字列 配置するモデリング座標値 回転角(度数。反時計周りが正の数) 拡大縮小率 0.0 より大きい実数値 =”形状データファイル名” =”パス名” =”アプリケーションファイル名 =”パラメータ文字列” =”x, y, z” =”rx, ry, rz” =”sx, sy, sz” ブロック構造はありません。</SHELL>はありません。 記述例: 以下の例は、Microsoft Excel(表計算ソフト)を起動し、Data1.xls というデータを開きます。 <SHELL TDM_FILE="Target4.tdm” PATH="C:¥Program Files¥Microsoft Office¥Ofice11" COMMAND="Excel.exe" PARAM = "Data1.xls" POSITION="800.0, 600.0, -2000.0" ROTATION="0.0, 0.0, 0.0" SCALE="1.5, 1.5, 1.5"> 22 <EXPLORE 機 Switch> 能: 仮想探索学習モード( Virtual Exploratory Learning Service :VEL Service) に入って待機状態になる タグコマンドです。VEL Service を脱出して通常のシナリオ進行に戻るための小道具(Stage Parts) を舞 台に配置します。この小道具を ESCAPE Target と呼びます。ESCAPE Target として、通常の 3 次元形 状モデルやテキストパネルを指定できます。また、透明な長方形を ESCAPE Target にして配置するこ ともできます。この利用法は画面のある特定の領域を ESCAPE Target に設定できるので効果的です。 ESCAPE Target がマウスでクリックされると、VEL service を脱出して通常のシナリオ進行モードに戻 ります。<EXPLORE>タグを実行する前に、<INTERNET>,<MPLAYER>,<EXPLAIN>,<SHELL>タグコマ ンドを使って、探索用のターゲットを定義しておく必要があります。また、ESCAPE Target を定義せず に<EXPLORE>タグコマンドを実行すると、VEL Service から脱出できなくなるので、注意が必要です。 Switch : スイッチ名 TDM_FILE POSISTION ROTATION SCALE Block: 引数記述法 =”形状データファイル名” =”x, y, z” =”rx, ry, rz” =”sx, sy, sz” 内容 ESCAPE Target とする 3 次元形状データのファイル名。 配置するモデリング座標値 回転角(度数。反時計周りが正の数) 拡大縮小率 0.0 より大きい実数値 ブロック構造はありません。</EXPLORE>はありません。 記述例: <INTERNET <MPLAYER <EXPLAIN <SHELL <EXPLORE TDM_FILE="Target1.tdm" PARAM="http://ja.wikipedia.org/wiki/%E5%A1%A9%E9%85" POSITION="-500.0, 600.0, -2000.0" ROTATION="0.0, 0.0, 0.0" SCALE="1.5, 1.5, 1.5"> TDM_FILE="Target2.tdm" PARAM="DCmotor.avi" POSITION="-100.0, 600.0, -2000.0" ROTATION="0.0, 0.0, 0.0" SCALE="1.2, 1.2, 1.2"> TDM_FILE="Target3.tdm" PARAM="Hint1.cps" POSITION="200.0, 600.0, -2000.0" ROTATION="0.0, 0.0, 0.0" SCALE="1.0, 1.0, 1.0"> TDM_FILE="Target4.tdm” PATH="C:¥Program Files¥Microsoft Office¥Ofice11" COMMAND="Excel.exe" PARAM = "Data1.xls" POSITION="800.0, 600.0, -2000.0" ROTATION="0.0, 0.0, 0.0" SCALE="1.5, 1.5, 1.5"> TDM_FILE=" Escape1.tdm" POSITION="-1000.0, 700.0, -1500.0" ROTATION="0.0, 0.0, 0.0" SCALE="1.8, 1.8, 1.5"> 23 第2章 CPSL3 状態変数の一覧 CPSL3 の状態変数には、グローバルな状態変数と、ブロックスコープを持つ状態変数があります。グローバル な状態変数はブロックの位置にかかわらず有効で、<SCENARIO>タグや<SCORE>タグでシナリオが分岐しても 値が保持されます。一方、ブロックスコープを持つ状態変数は、定義されたブロックの内側でのみ値を保持し、ブ ロックの外側に出ると、元の値に戻ります。(スタック制御された状態変数といいます。) (1) グローバルな状態変数 状態変数名 POINT MARK1 MARK2 MARK3 MARK4 MARK5 MARK6 MARK7 MARK8 記述法 =”p” =m” =m” =m” =m” =m” =m” =m” =m” 内容 POINT に p を加算する。p は符号付きの整数値。 MARK1 に m を加算する。m は符号付きの整数値。 MARK2 に m を加算する。m は符号付きの整数値。 MARK3 に m を加算する。m は符号付きの整数値。 MARK4 に m を加算する。m は符号付きの整数値。 MARK5 に m を加算する。m は符号付きの整数値。 MARK6 に m を加算する。m は符号付きの整数値。 MARK7 に m を加算する。m は符号付きの整数値。 MARK8 に m を加算する。m は符号付きの整数値。 (2) ブロックスコープを持つ状態変数 状態変数名 PERSON 引数記述法 GATE TRANSIT STABLE RELEASE GAIN REGAIN =”仮想俳優名” =”SYNC” =”ASYNC” =”ABOART” =”ON” =”OFF” =”gt” 数値は整数 =”tt” 数値は整数 =”st” 数値は整数 =”rt” 数値は整数 =”eg” 数値は整数 =”rg” 数値は整数 TTC =”gt, tt, st, rt, eg, rg” RATE REPEAT TURN =”n” 数値は整数 =”n” 数値は整数 =”ON” =”OFF” =”dn” 数値は整数 =”NONE” =”ToBEGIN” =”ToBASE” =”tn” 数値は整数 FRAMES =”fn” WAIT =”t” NOTIFY SCRIPT INIT DISTANCE ENDING 数値は整数 内容 <PERSON>タグのスイッチで指定した仮想俳優名を記述します。 動作が終わるまで、タグ位置で待ちます。 動作が終わるのを待たずに、タグを通過します。 動作を中断してタグを通過します。 ON : 字幕を同時に表示します。 OFF :字幕は表示しません。 表情待機時間を指定します。 表情立ち上がり移行時間を指定します。 表情保持時間を指定します。 表情立ち下り移行期間を指定する。 状態保持時の強さと最終段階での強さを指定する。 表情終了時の強さを指定する。 GATE、TRANSIT、STABLE、RELEASE、GAIN、REGAIN を一度 に指定する。 モーションの間を補間するフレーム数を指定します。 モーションを繰り返す回数を指定します。 “ON”が指定されると、演技の前に仮想俳優の姿勢を正立に戻す。 移動する移動量を座標系の数値で指定します。 モーション終了時の姿勢を指定する。ToBEGIN は最初の姿 勢に戻る。ToBASE は最後の姿勢を維持する。 回転角度(正の数で反時計周り)を指定します。 移動するフレーム数を指定します。小さな数値を指定すれば素早 く、大きな数値を指定すれば、ゆっくりと移動します。 <TIMER>の停止時間。単位はミリ秒の整数値 24 第3章 CPSL3 ブロック記述ルール CPSL3 の構文形式を示す.1block の記述は<TAG>記号と</TAG>記号に囲まれた部分に Body Text と呼ぶ文章 を入力する.Body Text の任意の位置に,別の Block を挿入することができる(Block Nesting と呼ぶ).挿入さ れた Block を下位 Block と呼ぶ.この場合,第 1 レベルの Body Text は前半部分と後半部分に分断される.この Block Nesting は何段でも可能である.また,Body Text の複数箇所に別の Block を挿入することもできる.この 場合は,Body Text は,その都度分割される. 1) Case of Non-Nesting block <TAG Switch>Body Text</TAG> 2) Case of Nesting Block <TAG Switch>Body Text1-1 <TAG Switch>Body Text2</TAG> Body Text1-2 </TAG> 3) Case of Nesting Blocks <TAG Switch>Body Text1-1 <TAG Switch>Body Text2</TAG> Body Text1-2 <TAG Switch>Body Text3</TAG> Body Text1-3 </TAG> CPSL3 の記述を容易にするため,各処理が動作パラメータとして参照する値を CPSL ブラウザが状態変数とし て保持します。<TAG>コマンドは状態変数を参照して指示された処理を実行します。<TAG>ブラケット内の Switch は,状態変数に値をセットします。Switch でセットされた状態変数の値は,その<TAG>ブロックおよびそ のブロックの下位ブロック群でのみ有効になります。 (状態変数のスコープ機能と呼びます)Switch を記述した b ブロックの外側にでると状態変数は元の値に戻ります。 シナリオの中で音声,表情,体演技を同期させたり,複数人の動作を正確に時間制御するため,ブロック同期処 理機能があります。<TAG>は,指示された処理の実行を開始し,</TAG>は,その処理についての同期処理を行い ます。この同期処理には 3 つのモードがあります。 Switch NOTIFY TIMING WAIT 値 SYNC ASYNC ABORT NONE eTRANSIT eSTABLE eRELEASE Integer 機能 Wait the end of work. (default) Passes without waiting. Terminate work forcibly. No wait. (Same as ASYNC) Wait the end of transition time. (default) Wait the end of stable time. Wait the end of TTC Wait for specified time. SYNC モード(初期値)では,</TAG>は処理終了を待ちます。ASYNC モードでは,処理終了を待たずに通過 します。ABORT モードでは,</TAG>は処理を強制終了してブロックの外側に出ます。 25 第4章 CPSL3 の主要なデータベース (1) FEN 表情語 1 2 3 4 5 6 7 8 9 10 11 12 13 FEN 幸福 悲しみ 驚き 嫌悪 怒り 恐れ 寂しさ 困惑 照れ笑い 激怒 満足 不満 疑惑 CP-FACS AU sequence 60,120,260 10,40,150 10,20,50,260 40,90,170 40,50,70,100,260 10,20,40,50,70,200,260 10,40,70,80,150,160 10,40,60,90,120,150,270 10,260 40,50,60,70 50,60,120,420 10,20,40,80,100,160 10,20,40,80,410 14 15 16 17 18 19 20 21 22 23 24 25 26 FEN 苦悶 心配 後悔 あきれる うっとり あきらめ 戸惑い 軽蔑 嫉妬 尊敬 無表情 左目ウインク 右目ウインク CP-FACS AU sequence 10,40,60,120,150,270,410 10,40,60,90,150,160,270 10,40,70,160,410 10,120 10,60,70,130,410 10,60,70,160,410 10,50,150 11,21,42,60,130,410 20,50,60,100,150 10,50,60,120 0 432 431 (2) 叙情語 ( LyricDB.csv に登録されている言葉) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 叙情語 うれしい 悲しい びっくり うさんくさい うるさい 怖い 助けて つらい 照れくさい むかつく 楽し 面白い 寂しい 泣きたい しんどい すごい 幸せ かわいそう がっかり 満足 素晴らしい きれい 可愛い けち おいしい 汚い 怒り 良い 悪い よろしい ゆゆしい いまわしい FEN 表情語 幸福 悲しみ 驚き 嫌悪 怒り 恐れ 恐れ 寂しさ 照れ笑い 激怒 幸福 幸福 寂しさ 悲しみ 悲しみ 驚き 幸福 悲しみ 悲しみ 幸福 幸福 幸福 幸福 嫌悪 幸福 嫌悪 怒り 幸福 嫌悪 満足 恐れ 恐れ 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 叙情語 いまいましい ひどい さかしい こざかしい さとい うとい うとましい おこがましい うまい つたない 難しい 優しい 安い 憎い 心もとない おぼつかない ぎこちない 正しい あどけない がんぜない たわいない なまめかしい おとなしい 奥ゆかしい よんどころない さもしい 卑しい あさましい みすぼらしい しがない しどけない あられもない 26 FEN 表情語 不満 嫌悪 軽蔑 嫌悪 尊敬 軽蔑 嫌悪 嫌悪 驚き 困惑 困惑 幸福 驚き 怒り 心配 戸惑い 戸惑い 満足 幸福 あきらめ 軽蔑 うとっり 心配 尊敬 あきらめ 嫌悪 嫌悪 嫌悪 嫌悪 不満 嫌悪 軽蔑 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 叙情語 はしたない えげつない いぎたない いじきたない つつがない たくましい 弱い か弱い いじらしい 幼い うらわかい すげない そっけない なにげない さりげない 水くさい おぞましい 雄々しい いさぎよい 女々しい 口惜しい 情けない 嘆かわしい わびしい つまらない 可笑しい 誇らしい 晴れがましい いとおしい 愛しい いたわしい 痛ましい FEN 表情語 嫌悪 嫌悪 あきれる 嫌悪 尊敬 驚き 心配 心配 幸福 幸福 幸福 不満 不満 尊敬 尊敬 不満 恐れ 満足 満足 嫌悪 後悔 嫌悪 嫌悪 寂しさ 不満 幸福 満足 嫌悪 幸福 幸福 悲しみ 悲しみ (3) BACS 語 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 BACS AU 1161 1162 1180 1190 1200 1210 1220 1230 1240 1241 1242 1250 1251 1252 1260 1261 1262 1270 1271 1272 1280 1281 1282 1290 1291 1292 1300 1301 1302 1310 1311 1312 1320 1321 1322 1330 1331 1332 1340 1341 1342 1350 1351 1352 1360 1361 BACS 語 肩右転 肩左転 上体前倒 上体反り 上体右倒 上体左倒 上体右転 上体左転 両手前出 右手前出 左手前出 両手後引 右手後引 左手後引 両手横開 右手横開 左手横開 両手後転 右手後転 左手後転 両手前転 右手前転 左手前転 両腕前出 右腕前出 左腕前出 両腕後引 右腕後引 左腕後引 両腕内曲 右腕内曲 左腕内曲 両腕外転 右腕外転 左腕外転 両腕内転 右腕内転 左腕内転 両手首外曲 右手首外曲 左手首外曲 両手首内曲 右手首内曲 左手首内曲 両手首外転 右手首外転 関節の動作 肩を右へ回す 肩を左へ回す 上体を前に倒す 上体を後ろに倒す 上体を右に倒す 上体を左に倒す 上体を右に回す 上体を左に回す 両手を前に上げる 右手を前に上げる 左手を前に上げる 両手を後ろに上げる 右手を後ろに上げる 左手を後ろに上げる 両手を横に広げる 右手を横に広げる 左手を横に広げる 両手を後ろに回す 右手を後ろに回す 左手を後ろに回す 両手を前に回す 右手を前に回す 左手を前に回す 両腕を前に上げる 右腕を前に上げる 左腕を前に上げる 両腕を後ろに上げる 右腕を後ろに上げる 左腕を後ろに上げる 両腕を内側に曲げる 右腕を内側に曲げる 左腕を内側に曲げる 両腕を外側に回す 右腕を外側に回す 左腕を外側に回す 両腕を内側に回す 右腕を内側に回す 左腕を内側に回す 両手首を外側に曲げる 右手首を外側に曲げる 左手首を外側に曲げる 両手首を内側に曲げる 右手首を内側に曲げる 左手首を内側に曲げる 両手のひらを前に回す 右手のひらを前に回す 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 27 BACS AU 1362 1370 1371 1372 1380 1381 1382 1390 1391 1392 1400 1401 1402 1410 1411 1412 1420 1421 1422 1430 1431 1432 1440 1441 1442 1450 1451 1452 1460 1461 1462 1470 1471 1472 1480 1481 1482 1501 1502 1610 1620 1630 1640 1650 1660 0 BACS 語 左手首外転 両手首内転 右手首内転 左手首内転 両足前上 右足前上 左足前上 両足後上 右足後上 左足後上 両足外広 右足外広 左足外広 両足内曲 右足内曲 左足内曲 両足外転 右足外転 左足外転 両足内転 右足内転 左足内転 両膝曲 右膝曲 左膝曲 両足首前転 右足首前転 左足首前転 両足首後転 右足首後転 左足首後転 両足首外転 右足首外転 左足首外転 両足首内転 右足首内転 左足首内転 体右転 体左転 首右倒 首左倒 首前倒 首後倒 首右転 首左転 全関節基準 関節の動作 左手のひらを前に回す 両方の手の甲を前に回す 右の手の甲を前にに回す 左の手の甲を前にに回す 両足を前にあげる 右足を前にあげる 左足を前にあげる 両足を後ろに上げる 右足を後ろに上げる 左足を後ろに上げる 両足を外側に広げる 右足を外側に広げる 左足を外側に広げる 両足を内側に曲げる 右足を内側に曲げる 左足を内側に曲げる 両足を外側に回す 右足を外側に回す 左足を外側に回す 両足を内側に回す 右足を内側に回す 左足を内側に回す 両方のひざの関節を曲げる 右のひざの関節を曲げる 左のひざの関節を曲げる 両足首の関節を前に曲げる 右足首の関節を前に曲げる 左足首の関節を前に曲げる 両足首の関節を後ろに曲げる 右足首の関節を後ろに曲げる 左足首の関節を後ろに曲げる 両足首の関節を外側に曲げる 右足首の関節を外側に曲げる 左足首の関節を外側に曲げる 両足首の関節を内側に曲げる 右足首の関節を内側に曲げる 左足首の関節を内側に曲げる 体を右に回す 体を左に回す 首を右に倒す 首を左に倒す 首を前に倒す 首を後ろに倒す 首を右に回す 首を左に回す 体を正立する (4) 体演技語 体演技語 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 体を正立 体を元の位置 肩を右に回 肩を左に回 上体を前に倒 上体を後ろに反 上体を右に倒 上体を左に倒 上体を右に回 上体を左に回 右手を前に上げ 左手を前に上げ 両手を前に上げ 右腕を前に上げ 左腕を前に上げ 両腕を前に上げ 右手首を外側に曲 左手首を外側に曲 両手首を外側に曲 右手首を内側に曲 左手首を内側に曲 両手首を内側に曲 右足を前に上 左足を前に上 両足を前に上 右足を後ろに上 左足を後ろに上 両足を後ろに上 BACS 語 体演技語 全関節基準 全関節基準 肩右転 肩左転 上体前倒 上体反り 上体右倒 上体左倒 上体右転 上体左転 右手前出 左手前出 両手前出 右腕前出 左腕前出 両腕前出 左手首外曲 右手首外曲 両手首外曲 右手首内曲 左手首内曲 両手首内曲 右足前上 左足前上 両足前上 右足後上 左足後上 両足後上げ 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 28 右足を外側に回 左足を外側に回 両足を外側に回 右足を内側に回 左足を内側に回 両足を内側に回 右膝を曲 左膝を曲 両膝を曲 右足首を前に回 左足首を前に回 両足首を前に回 右足首を後ろに回 左足首を後ろに回 両足首を後ろに回 右足首を外側に回 左足首を外側に回 両足首を外側に回 右足首を内側に回 右足首を内側に回 右足首を内側に回 体を右に回 体を左に回 首を左に倒 首を前に倒 首を後ろに倒 首を右に回 首を左に回 BACS 語 右足外転 左足外転 両足外転 右足内転 左足内転 両足内転 右膝曲 左膝曲 両膝曲 右足首前転 左足首前転 両足首前転 右足首後転 左足首後転 両足首後転 右足首外転 左足首外転 両足首外転 右足首内転 左足首内転 両足首内転 体右転 体左転 首左倒 首前倒 首後倒 首右転 首左転 (5) CP-FACS AU 一覧表 CP-FACS の AU 一覧表を以下に示します。 AU 動作部位(と動作内容) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 10 11 12 20 21 22 30 31 32 40 41 42 50 51 52 60 61 62 70 71 72 両方の眉の内側だけを上げる 右側の眉の内側だけを上げる 左側の眉の内側だけを上げる 両方の眉の外側だけを上げる 右側の眉の外側だけを上げる 左側の眉の外側だけを上げる 両方の眉を上げる 右側の眉を上げる 左側の眉を上げる 両方の眉を内側に下げる 右側の眉を内側に下げる 左側の眉を内側に下げる 両方の上瞼を上げる 右側の上瞼を上げる 左側の上瞼を上げる 両方の頬を持ち上げる 右側の頬を持ち上げる 左側の頬を持ち上げる 両方の下瞼を鼻の方向へ引く 右側の下瞼を鼻の方向へ引く 左側の下瞼を鼻の方向へ引く 22 90 鼻に皺を寄せる 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 100 120 130 150 160 170 200 250 260 270 410 411 412 420 421 422 430 431 432 上唇を上げる 唇の両端を引き上げる 唇の両端を鋭く引き上げる 唇の両端を下げる 下唇を上げる 顎の下側を上げる 唇の両端を横に引く) 顎を下げずに唇を開く 顎を下げて唇を開く 口を大きく開く 両方の上瞼を下げる 右側の上瞼を下げる 左側の上瞼を下げる 両目を薄目にする 右目を薄目にする 左目を薄目にする 両目を閉じる 右目を閉じる 左目を閉じる 顔の部位 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 眉 上瞼(上げ る) 頬 下瞼 鼻まわり 唇 上瞼(下げ る) 目 29 AU 2010 2020 2030 2040 2050 2060 3010 3011 3012 3020 3021 3022 3030 3031 3032 3040 3041 4042 0 動作部位(と動作内容) 首を右に傾ける 首を左に傾ける 首を前に傾ける 首を後ろに傾ける 首を右に回す 首を左に回す 両目の眼球を右へ動かす 右目の眼球を右へ動かす 左眼目の眼球を右へ動かす 両目の眼球を左へ動かす 右目の眼球を左へ動かす 左目の眼球を左へ動かす 両目の眼球を上へ動かす 右目の眼球を上へ動かす 左目の眼球を上へ動かす 両目の眼球を下へ動かす 右目の眼球を下へ動かす 左目の眼球を下へ動かす 無表情に戻す 顔の部位 首 眼球 顔全体 第5章 SpeechAPI 4.0 コマンド文字列 大文字と小文字は同じコマンドとみなされます。空白は無視されないので注意が必要です。解釈不能なコマンド は無視され、エラーにはなりません。一度設定された値は、次のコマンドがくるまで持続します。TTS(音声合成 システムが、このコマンドを全て受け入れるわけではありません。製品によって、受け入れるコマンドと無視する コマンドがあります。 ==================================================================== ¥Spd=number¥ ==================================================================== 話者の発声速度を指定する。1分間に平均何文字を話すか、という語数で指定する。 ¥Spd=120¥ 例: ==================================================================== ¥Pit=number¥ ==================================================================== 話者の声の高さ( baseline pitch) を周波数(Hz)で指定する。 例: ¥Pit=150¥ 実際の声の高さは、指定した周波数を中心にして上下に変動する。 ==================================================================== ¥Pra=value¥ サポートしない音声合成エンジンもある。 ==================================================================== 話者の声の高さの上下幅を、周波数(Hz)で指定する。 例: ¥Pra=90¥ ==================================================================== ¥Chr=string[[,string...]]¥ ==================================================================== 音声に特徴を与える。特徴語は次のとおり。初期値は、”Normal” である。 "Angry" "Excited" "Monotone" "Scared" "Business" "Falsetto" "Perky" "Shout" "Calm" "Happy" "Quiet" "Tense" 例: ¥Chr="Angry"¥ "Depressed" "Loud" "Sarcastic" "Whisper" LaLaVoice では、この機能による音声の変化は感じられない!!。 ==================================================================== ¥Ctx=string¥ サポートしない音声合成エンジンもある。 ==================================================================== 読み上げるテキストの種類を通知する。 String パラメータ の指定 "Address" 住所または電話番号として読む。 "C" C言語や C++言語のソースコードとして読む。 "Document" 通常のテキスト文書として読む。 "E-Mail" 電子メールの内容として読む。 "Numbers" 数字、日付、時刻等として読む。 "Spreadsheet" 表計算ソフトの表として読む。 "Unknown" 何だか不明のテキストとして読む。 "Normal" 通常の初期値話者モード(起動時はこのモード) 例: ¥ctx="Unknown"¥ 30 ==================================================================== ¥Rst¥ ==================================================================== 音声合成エンジンの設定値を、初期値に戻す。 ==================================================================== ¥Vol=number¥ ==================================================================== 声の大きさを指定する。number は、0 から 65535 までの値を指定する。 ¥Vol=32768¥ 例: 音声合成エンジンの起動時の初期値は、65535 になっている。もし、65536 よりも大きな値を設定すると、下位 16bit が左 チャンネルの、上位 16 ビットが右チャンネルの音量調整となる。(ステレオモード) ==================================================================== ¥Prn=text=pronunciation¥ サポートしない音声合成エンジンもある。 ==================================================================== 文字列の発音法を表音式のつづりで指定する。 ¥Prn=tomato=tomaato¥ 例: text : 発音する文字列 pronunciation 表音式のつづり文字列 (the International Phonetic Alphabet) ¥Prn=text¥ と記述すると、元の初期値に戻る。この機能は、音声合成エンジンが、the International Phonetic Alphabet を サポートしていないと機能しない。 ==================================================================== ¥Pro=number¥ サポートしない音声合成エンジンもある。 ==================================================================== 音声合成エンジンに内蔵された韻律則(ピッチや話者速度、音量に影響する)を使うかどうか指定する。 例: ¥Pro=1¥ ¥Pro=0¥ 韻律則を使用する。(初期値) 韻律則を使用しない。 ==================================================================== ¥Pau=number¥ ==================================================================== 発声を指定された時間(ミリ秒)だけ停止する。 例: ¥Pau=1000¥ ==================================================================== ¥Emp¥ サポートしない音声合成エンジンもある。 ==================================================================== 次の語を強調する。 例: ¥Emp¥ ==================================================================== ¥Dem¥ ポートしない音声合成エンジンもある。 ==================================================================== 次の語を強調しない。 31 ==================================================================== ¥RmS=number¥ サポートしない音声合成エンジンもある。 ==================================================================== 単語を 1 文字づつスペル読みするか、単語として発音するかを指定する。 例: ¥RmS=1¥ ¥RmS=0¥ 単語を 1 文字づつ発音する。(スペル読みをする。) 単語全体で発音する。(初期値) ==================================================================== ¥RmW=number¥ サポートしない音声合成エンジンもある。 ==================================================================== 単語と単語の間に聞き取れる休止をいれるかどうかを指定する。 例: ¥RmW=1¥ ¥RmW=0¥ 聞き取れる休止は入れない。 休止を入れる。(初期値) ==================================================================== ¥RPit=value¥ サポートしない音声合成エンジンもある。 ==================================================================== 声の高さを相対値で指定する。現在値を 100 とした比率で指定する。 ==================================================================== ¥RPrn=value¥ サポートしない音声合成エンジンもある。 ==================================================================== 声の高さの範囲を相対値で指定する。現在値を 100 とした比率で指定する。 ==================================================================== ¥RSpd=value¥ サポートしない音声合成エンジンもある。 ==================================================================== 話者速度を相対値で指定する。現在値を 100 とした比率で指定する。 ==================================================================== ¥Prt=string¥ サポートしない音声合成エンジンもある。 ==================================================================== 音声合成エンジンに、次の語の品詞を知らせる。 string に 指定可能なキイワードは次の通り。 "Abbr" "Adj" "Adv" "Card" "Conj" "Cont" "Det" "Interj" "N" "Ord" "Prep" "Pron" "Prop" "Punct" "Quant" "V" 省略形 形容詞 副詞 基数 接続詞 短縮形 限定詞 間投詞 名詞 序数 前置詞 代名詞 固有名詞 句読点 数量詞 動詞 例 ¥prt="Abbr"¥ 32