21
AnimeViewer 説明書

AnimeViewer 説明書 - NHKオンライン · modelstation [true] or false リセット時CGモデル解放の有無 (falseでリセット時に解放) shadowResolution 数値 [1024]

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

AnimeViewer説明書

はじめに

本ドキュメントでは、TVML(TVprogram Making Language)の描画アプリケーション

AnimeViewer.exeについて、説明いたします。

目次

1 アプリケーション概要 ................................................................................................................................................... 4

1-1 アプリケーションの起動と制御 ............................................................................................................................... 5

1-1-1 ビューワの起動 ....................................................................................................... 5

1-1-2 ビューワの設定ファイル ........................................................................................ 6

1-1-3 ビューワの制御 ....................................................................................................... 7

1-2 機能概要 ......................................................................................................................................................................... 8

1-2-1 キャラクタコマンド ................................................................................................ 8

1-2-2 カメラコマンド ....................................................................................................... 8

1-2-3 スタジオセットコマンド ........................................................................................ 8

1-2-4 小道具コマンド ....................................................................................................... 8

1-2-5 照明コマンド ........................................................................................................... 8

1-2-6 スーパーインポーズコマンド ................................................................................. 8

1-2-7 サウンドコマンド ................................................................................................... 8

1-2-8 ナレーションコマンド ............................................................................................ 8

1-2-9 ドローイングコマンド ............................................................................................ 8

1-2-10 ムービーコマンド ................................................................................................ 8

1-2-11 タイトルコマンド ................................................................................................ 8

1-2-12 ビデオ(スイッチャー)コマンド ...................................................................... 8

1-2-13 CGコマンド ....................................................................................................... 8

2 モデルファイル ............................................................................................................................................................... 9

2-1 セット・小道具モデル .................................................................................................................................................. 9

2-2 キャラクタモデル .......................................................................................................................................................... 9

2-2-1 bvhアニメーション .............................................................................................. 11

2-2-2 bmファイル .......................................................................................................... 17

2-2-3 bmoファイル ........................................................................................................ 20

2-3 モデルファイルの圧縮 .............................................................................................................................................21

AnimeViewer説明

4/21

Copyright NHK(Japan Broadcasting Corporation) All rights reserved.

許可なく転載することを禁じます。

1 アプリケーション概要 TVML ビューワアプリケーション(AnimeViewer.exe 以下本アプリケーションといいます)は

TVML スクリプトを解析、内容に従って外部データ(モデルファイル・モーションデータ・音声フ

ァイル・動画ファイル)の読込み、シーンの描画を行います。

[モデルファイル]

Wavefront OBJ

DirectX Xfile

[音声ファイル]

Wave ファイル

MP3ファイル

TVML ビューワ

(AnimeViewer)

・ Wave ファイル音声

・ 音声認識プログラム

・ テキスト読み上げ音声

[モーション]

BVH

図 1 TVMLビューワ概略図

[動画ファイル]

DirectShow

対応のファイル

TVIF

共有メモリ

クライアント

プログラム

クライアント

プログラム

tvmlSocket

(LAN) クライアント

プログラム

クライアント

プログラム

スクリプト・ビューワ制御データ

スクリプト

カメラ位置等

AnimeViewer説明

5/21

Copyright NHK(Japan Broadcasting Corporation) All rights reserved.

許可なく転載することを禁じます。

1-1 アプリケーションの起動と制御

本アプリケーションは大きく 6つのモジュールから成り立っています。

AnimeViewer : TVMLスクリプトを解析、内容に従ってファイルの読込み、描画を実行す

る。

TVIF : 共有メモリを介して、ビューワとクライアントプログラムを繋ぐモジュール。TVML

スクリプト、ビューワの制御コマンド(ウィンドウ操作、起動、リセット等)がビューワに送られ

る。(別紙“TVML外部制御機能ドキュメント TVIF”を参照して下さい)

tvmlSocket : ローカルエリアネットワークを介してクライアントからスクリプト、カメラ・小道

具・キャラクタの描画情報(位置、回転、スケール)を送信する為のモジュール。

(別紙”TVML外部制御機能ドキュメント tvmlSocket”を参照して下さい)

tvSpeak : 外部音声入力から音量を取得するためのモジュール。視覚素を取得するイ

ンターフェースを備えているが、現在は未実装。

(別紙”tvSpeak ドキュメント”を参照してください)

tvMedia : サウンドファイルをコントロールするためのモジュール。

tvFont : フォントデータ(ビットマップ)を作成するモジュール。

1-1-1 ビューワの起動

ビューワの起動方法には 2種類の方法があります、1つは”AnimeViewer.exe”を単体で起動する

方法、もう1つは TVIFのAPIを利用して起動する方法です。

それぞれの方法には以下のような特徴があります。

単体起動 : ビューワが枠つきのウィンドウで起動、ウィンドウサイズ・位置等はビューワ内で記述

されたデフォルトになる。tvmlSocketで開くホスト名・ポート番号は同フォルダ内にあ

る”AnimeViewer.ini”に準ずる。 TVIFによる起動 : ウィンドウサイズ・位置や、ホスト名・ポート番号は TVIFの APIでクライアント

から指定された値が適用される。

ビューワを単体で起動する場合、以下の起動オプションを指定することが出来ます。

- tvmlCode “文字列” AnimeViewerを識別する識別名の設定

- caption “文字列” ウィンドウタイトルの文字列

- hostname “文字列” ホスト名(PC名称、IPアドレス、”localhost”)

- hostport 数値 オープンするポートの番号

起動オプションでのホスト名、ポート番号の指定は”AnimeViewer.ini”内での設定より優先されま

す。

AnimeViewer説明

6/21

Copyright NHK(Japan Broadcasting Corporation) All rights reserved.

許可なく転載することを禁じます。

1-1-2 ビューワの設定ファイル

ビューワの設定ファイル”AnimeViewer.ini”では以下の項目について設定を記述することが出来

ます。

名称 パラメータ([]内はデフォルト) 解説

windowMode [true] or false falseでフルスクリーン

cullingMode [true] or false 背面カリングの有無

lightInverse true or [false] ライトの向き反転の有無

modelstation [true] or false リセット時 CGモデル解放の有無

(falseでリセット時に解放)

shadowResolution 数値 [1024] 影生成用シャドウマップテクス

チャの解像度

filepath “フォルダ名” マルチメディアファイルの検索

対象フォルダ(複数記述可)

defaultmodel “ファイル名(“.bm”)” キャラクタモデル(“.bm”)が見つ

からなかった場合のデフォルト。

loadmodel “モデル名”, “ファイル名

(“.bm”)”

ビューワ起動時に読み込むモデ

ルファイル

hostname IPアドレス or [PC名称] or

localhost

ビューワがバインドするアドレ

ス(起動オプションが優先)

hostport 数値 [10000] ビューワがバインドするポート

番号(起動オプションが優先)

defaultvoice 音声名称 [“”] スクリプトで指定された音声合

成が見つからなかった場合のデ

フォルト

sharepose [true] or false ポーズ(definepose等)をキャラ

クタ間での共有の有無。

recoServerName IPアドレス or PC名称 or

[localhost]

音声認識アプリケーションが起

動している PCのアドレス

recoServerPort 数値 [6001] 同ポート番号

showfps true or [false] 画面左下隅に FPSを表示する。

framerate 数値 [30] フレームレート(1 ~ 60)

speakAdjustLpf 数値 [0] 合成音声に掛かるローパスフィ

ルタのデフォルト値。

speakAdjustLevel 数値 [1] 合成音声の音量に対する口パク

のデフォルト感度。

sounddevice 出力音声デバイス名称 音声出力先のデバイス名

readContinueTime 数値 [10] (ミリ秒) パラメータ”wait=no”のスクリプ

トが読み込まれた後、次のスクリ

プトが読み込まれるまでの待ち

時間。

(この間、スクリプト、描画のア

ップデートは実行されません)

AnimeViewer説明

7/21

Copyright NHK(Japan Broadcasting Corporation) All rights reserved.

許可なく転載することを禁じます。

windowType 数値(0~3) [0] ビューワのウィンドウ形式を数

値で指定。

0:ウィンドウ枠あり

1:ウィンドウ枠無し

2:メインウィンドウにフルサイ

ズ表示(枠無し)

3:サブウィンドウにフルサイズ

表示(枠無し)

1-1-3 ビューワの制御

起動したビューワに対して TVML スクリプトを発行するには、TVIF又は tvmlSocketの APIを利

用します。

TVIFで発行したスクリプトは共有メモリにコピーされ、ビューワによる読込み待ちの状態になりま

す。複数のクライアントプログラムがあった場合でも、このような待機状態に入るスクリプトは常に1つ

であり、ビューワの読込み・解析が終了しスクリプトの上書きが可能になったタイミングで発行された

スクリプトのうち、唯一つが共有メモリに上書きされ、待機状態に入ります。

tvmlSocketで発行されたスクリプトはビューワ内のキューに順次追加されます、ビューワは

tvmlSocket経由で取得したスクリプトを TVIFからのスクリプトに優先して解析する為、キューに格納

されたスクリプトの解析が全て終了するまで TVIFで新たなスクリプトを発行することは出来ません。

tvmlSocketからはカメラ・小道具の位置・回転・スケール、キャラクタタのジョイント情報が送信さ

れます、これらのデータは camera:movenentや character:keyframe等のスクリプトで決定されるそれ

ぞれのパラメータに優先して利用されます。

TVMLビューワ カメラパラメータ

小道具パラメータ

キャラクタジョイント情報

スクリプトキュー

character:pose…

character:talk..

drawing:position.

. …..

…..

共有メモリ

prop:position….

TVIF

tvmlSocket

数値は優先度

図 2 外部制御の概略図

AnimeViewer説明

8/21

Copyright NHK(Japan Broadcasting Corporation) All rights reserved.

許可なく転載することを禁じます。

1-2 機能概要

本アプリケーションに実装されている TVML スクリプトの実行機能。

1-2-1 キャラクタコマンド

キャラクタモデル(DirectX Xfile)の読込み・アニメーション・描画、Microsoft Speech API(以下

SAPI といいます)によるテキスト読み上げを実行します。

キャラクタ発声の際にはキャプションの表示・モーフィングによる口の動作表現を行います。

1-2-2 カメラコマンド

カメラの移動、画角の設定等を実行します。

1-2-3 スタジオセットコマンド

スタジオセットモデル(Wavefront OBJ)の読込み・描画を実行します。

1-2-4 小道具コマンド

小道具モデル(Wavefront OBJ)の読込み・描画、配置の設定、表示・非表示の切り替えを実行し

ます。

1-2-5 照明コマンド

CGの光源(平行光源、点光源、スポットライト)の作成、各光源のパラメータ設定を実行します。

1-2-6 スーパーインポーズコマンド

スーパーインポーズの描画を実行します。

1-2-7 サウンドコマンド

サウンド(Wave ファイル)の読込み、コントロール(再生・停止)を実行します。

1-2-8 ナレーションコマンド

SAPIによるテキストの読み上げ、ナレーション音声の再生を実行します。

音声再生時にはキャプションの表示を行います。

1-2-9 ドローイングコマンド

イメージファイルをレイアウトして組み合わせたテクスチャを作成、小道具(3Dの板)に表示しま

す。

1-2-10 ムービーコマンド

DirectShow を利用してムービーファイルからテクスチャを作成、小道具(3Dの板)での表示・全画

面表示を実行します。

1-2-11 タイトルコマンド

タイトル画面(パターン(白・黒・カラーバー)、イメージデータ等)を設定します。

1-2-12 ビデオ(スイッチャー)コマンド

通常描画、タイトル画面、ムービー等の画面のスイッチングを実行します。

1-2-13 CGコマンド

鏡面の描画、影の描画等のエフェクトを操作します。

AnimeViewer説明

9/21

Copyright NHK(Japan Broadcasting Corporation) All rights reserved.

許可なく転載することを禁じます。

2 モデルファイル 2-1 セット・小道具モデル

セット・小道具として読み込むモデルは単一のモデルファイルで、読み込み可能なフォーマット

は “obj” ・ ”x”(DirectX)、又”obj”のマテリアル定義ファイル”mtl”にも対応しています。

モデルは右手系、Z軸正の向きを正面にして作成する必要があります(現行 TVMLの“obj”ファイ

ルをそのまま利用するため)。

2-2 キャラクタモデル

キャラクタに関するアニメーションパラメータ、モデルファイル名等は”.bm”ファイルと”.bmo”ファイ

ルに分割して記述します。

“.bm”ファイルにはアニメーションのパラメータ・初期姿勢のパラメータ・スキンメッシュのボーンに

掛けるスケール値等、主にボーン構造に対するパラメータを、“.bmo”ファイルにはモデルファイル

名(体・頭等)、モデルファイル数に依存するモーフィング用パラメータ等を記述します。

TVMLビューワは右手系を採用していますが、キャラクタモデルは全て左手系で作成されている

必要があります、これは DirectX付属のビューワとの整合性を採る為のものです。

右手系で作成されたキャラクタを用いなければならない場合は、”bone_scale_z”・”body_scale_z”に

負のスケールを設定して調整を行う必要があります。頭部のモデルパーツは体モデル内のボーン

情報を用いて描画されている為、”bone_scale_*”によるスケールの影響を受けます。”body_scale_*”

は体のメッシュそのものに対するスケールですので、頭部が影響を受けることはありません。

従って、体のみが右手系の場合には”body_scale_z”、体・頭部両方の場合は”bone_scale_z”、頭

部のみの場合には”bone_scale_z”・”body_scale_z”両方に負のスケールを設定する必要があります。

又、キャラクタモデルは腰のボーン(“Frame_Hips”)を原点に Yの正方向が頭頂の方向、体の正

面が Z軸正の方向を向くように作成する必要があります。

図 3 モデルデータの軸方向

AnimeViewer説明

10/21

Copyright NHK(Japan Broadcasting Corporation) All rights reserved.

許可なく転載することを禁じます。

頭部のモーフィングに関するパラメータは”.bmo”ファイルに記述します、頭部モデルは大きく7つ

のパーツから構成されています。

頭:口パク”あ、い、う、え、お、ん”の 6つのモデル

瞼:左右のモデル、それぞれに開閉の 2つのモデル

目:左右のモデル

眉毛:左右のモデル

髪モデル

耳モデル

鼻モデル

それぞれのモデルファイルを指定する項目名(下記 ”体モデル、モーフィング用の頭部モデルフ

ァイル名”参照)は同一名称のものを”.bmo”ファイル内に複数記述できます。この場合、ファイル先

頭から順番に 0を基準としたインデックスが割り振られます。

例 1)

eyebrowL "eyebrowL.x"

eyebrowL "eyebrowL_hpy.x"

例 1のように記述されていた場合は”eyebrowL.x”のインデックスは 0、”eyebrowL_hpy.x”のインデ

ックスは 1になります。同様に “eyebrowR.x”が 0、”eyebrowR_hpy.x”は 1になります。

顔・瞼は構成されるモデル全てで1つとみなされ、1組に対して1つのインデックスが割り振られま

す。

例 2)

eyelidLO "eyelidL.x"

eyelidLC "eyelidL_close.x"

eyelidLO "eyelidL_hpy.x"

eyelidLC "eyelidL_hpy_close.x"

瞼は開閉モデル一対で構成されているので(O と C)、例 2の場合”eyelidL.x”・”eyelidL_close.x”

のインデックスは 0、”eyelidL_hpy.x”・”eyelidL_hpy_close.x”のインデックスは 1になります。又、1組

のモデルをまとめて記述する必要はありません、下記例 3でも例 2 と同様のインデックスが割り振ら

れます。

例 3)

eyelidLO "eyelidL.x"

eyelidLO "eyelidL_hpy.x"

eyelidLC "eyelidL_close.x"

eyelidLC "eyelidL_hpy_close.x"

同様に顔モデルも faceA・faceI・faceU・faceE・faceO・faceMの 1組に対して 1つのインデックスと

なります。

このようにして割り振られたインデックスは、表情を定義する”expression_*”で使用します。”*”の

部分にはコマンド character:expression のパラメータ”type”で指定する文字列を記述します。

“expression_*”に続く数値はそれぞれ顔・瞼・眉毛・目・髪・耳・鼻のモデルデータのインデックス

になります。

AnimeViewer説明

11/21

Copyright NHK(Japan Broadcasting Corporation) All rights reserved.

許可なく転載することを禁じます。

例 4)

expression_happy 0 1 1 2 1 2 3

例 4のように記述した場合は、TVML コマンド

character:expression(name=CharacterA, type=happy)

によって、顔は 0番、瞼は 1番、眉毛は 1番、目は 2番、髪は1番、耳は2番、鼻は3番のモデル

が描画されます。

モーフィングによる描画モデル生成時に、ウェイト値を適用する2種類の方式があります。

morph : ウェイト値に基づいてモデルの中間状態を生成し、滑らかにモデルを変更

switch : 最大のウェイト値を持つモデルに瞬時に切り替わる

モーフィング方式の設定は”.bmo”ファイル内の”type_*”で行います。又、表情によるモーフィング

以外の独自のモーフィングを持つモデル(口:口パク、瞼:まばたき)に対する設定は、morph・switch

を”_”でつないで1番目に表情によるモーフィングの方式、2番目に独自モーフィングの方式を設定

します。

例 5)

type_head switch_morph

type_eyelid morph_switch

type_eye morph

type_eyebrow switch

2-2-1 bvhアニメーション

BVHファイルに記録されたアニメーションを AnimeViewerのキャラクタで再生することが出来ま

す。ボーン名称と同じ名称のジョイントが BVH ファイルに記述されていた場合に、対応するボーン

に値が適用されます。ボーン名称に対応しないジョイントのデータは切り捨てられます。

ボーン名称

ボーン名称 体の部位

Hips 腰(体の基準位置)

Chest 胸(1)

Chest1 胸(1)

Chest2 胸(2)

Chest3 胸(3)

Neck 首

Head 頭の付け根

RightCollar 首と右肩の間

RightShoulder 右肩

RightElbow 右肘

RightWrist 右手首

AnimeViewer説明

12/21

Copyright NHK(Japan Broadcasting Corporation) All rights reserved.

許可なく転載することを禁じます。

LeftCollar 首と左肩の間

LeftShoulder 左肩

LeftElbow 左肘

LeftWrist 左手首

RightHip 右ももの付け根

RightKnee 右ひざ

RightAnkle 右かかと

LeftHip 左ももの付け根

LeftKnee 左ひざ

LeftAnkle 左かかと

RightEye 右目

LeftEye 左目

RightThumb1 右手親指第一関節

RightThumb2 右手親指第二関節

RightThumb3 右手親指第三関節

RightThumbEff 右手親指先端

RightIndex1 右手人差し指第一関節

RightIndex2 右手人差し指第二関節

RightIndex3 右手人差し指第三関節

RightIndexEff 右手人差し指先端

RightMiddle1 右手人差し指第一関節

RightMiddle2 右手人差し指第二関節

RightMiddle3 右手人差し指第三関節

RightMiddleEff 右手人差し指先端

RightRing1 右手薬指第一関節

RightRing2 右手薬指第二関節

RightRing3 右手薬指第三関節

RightRingEff 右手薬指先端

RightPinky1 右手小指第一関節

RightPinky2 右手小指第二関節

RightPinky3 右手小指第三関節

RightPinkyEff 右手小指先端

LeftThumb1 左手親指第一関節

LeftThumb2 左手親指第二関節

LeftThumb3 左手親指第三関節

LeftThumbEff 左手親指先端

LeftIndex1 左手人差し指第一関節

AnimeViewer説明

13/21

Copyright NHK(Japan Broadcasting Corporation) All rights reserved.

許可なく転載することを禁じます。

LeftIndex2 左手人差し指第二関節

LeftIndex3 左手人差し指第三関節

LeftIndexEff 左手人差し指先端

LeftMiddle1 左手人差し指第一関節

LeftMiddle2 左手人差し指第二関節

LeftMiddle3 左手人差し指第三関節

LeftMiddleEff 左手人差し指先端

LeftRing1 左手薬指第一関節

LeftRing2 左手薬指第二関節

LeftRing3 左手薬指第三関節

LeftRingEff 左手薬指先端

LeftPinky1 左手小指第一関節

LeftPinky2 左手小指第二関節

LeftPinky3 左手小指第三関節

LeftPinkyEff 左手小指先端

Tail1 尻尾(1)

Tail2 尻尾(2)

Tail3 尻尾(3)

RightHorn1 右角(1)

RightHorn2 右角(2)

LeftHorn1 左角(1)

LeftHorn2 左角(2)

RightThumb0 右手親指第 0関節

RightIndex0 右手人差し指第 0関節

RightMiddle0 右手中指第 0関節

RightRing0 右手薬指第 0関節

RightPinky0 右手小指第 0関節

LeftThumb0 左手親指第 0関節

LeftIndex0 左手人差し指第 0関節

LeftMiddle0 左手中指第 0関節

LeftRing0 左手薬指第 0関節

LeftPinky0 左手小指第 0関節

ForeHead 額

NoseUp 鼻の付け根(鼻根)

NoseTop 鼻の頭

L_Nose 左鼻翼

L_NoseBridge 鼻梁中央の左側

AnimeViewer説明

14/21

Copyright NHK(Japan Broadcasting Corporation) All rights reserved.

許可なく転載することを禁じます。

R_Nose 右鼻翼

R_NoseBridge 鼻梁中央の右側

L_Brow01 左眉頭

L_Brow02 左眉山

L_Brow03 左眉尻

R_Brow01 右眉頭

R_Brow02 右眉山

R_Brow03 右眉尻

L_Up_Eye 左上眼瞼

L_Low_Eye 左下眼瞼

L_Eye_Corner 左目尻

R_Up_Eye 右上眼瞼

R_Low_Eye 右下眼瞼

R_Eye_Corner 右目じり

Center_Up_Mouth 上唇中央

Center_Low_Mouth 下唇中央

L_Up_Mouth 上唇左側

L_Side_Mouth 左口角

L_Low_Mouth 下唇左側

R_Up_Mouth 上唇右側

R_Side_Mouth 右口角

R_Low_Mouth 下唇右側

Jaw_Root 顎付け根

Center_Jaw 顎下部

Center_Up_Jaw 顎上部

L_Jaw01 顎左側

L_Jaw02 顎左関節

R_Jaw01 顎右側

R_Jaw02 顎右関節

Tongue01 舌付け根

Tongue02 舌中央

Tongue03 舌先端

Tongue04 舌先端左側

Tongue05 舌先端右側

Low_Teeth01 上顎の歯(付け根部分)

Up_Teeth01 下顎の歯(付け根部分)

L_Cheek01 左上頬内側

AnimeViewer説明

15/21

Copyright NHK(Japan Broadcasting Corporation) All rights reserved.

許可なく転載することを禁じます。

L_Cheek02 左上頬中央

L_Cheek03 左上頬外側

L_Cheek04 左下頬内側

L_Cheek05 左下頬中央

L_Cheek06 左下頬外側

R_Cheek01 右上頬内側

R_Cheek02 右上頬中央

R_Cheek03 右上頬外側

R_Cheek04 右下頬内側

R_Cheek05 右下頬中央

R_Cheek06 右下頬外側

1つのBVHファイルから取得したアニメーションデータは一括してキャラクタのデータとして管理

されますが、BVH ファイルにチャンネルの記述が無いボーンについてはアニメーション無しとして

取り扱われ、他のアニメーションと合成する場合には無視されます。

BVHアニメーション再生状態は再生コマンド character:keyframeのパラメータでコントロールす

ることが出来ます。

・character:keyframeパラメータ

BVH 1 BVH 2 合成結果

図 4 BVHアニメーションの合成

AnimeViewer説明

16/21

Copyright NHK(Japan Broadcasting Corporation) All rights reserved.

許可なく転載することを禁じます。

キャラクタの原点位置である Hipsの位置はキャプチャされた状況に依存します。そのままアニメ

ーションとして適用した場合、BVH ファイルのデータより腰位置の高いキャラクタは足が沈み、腰位

置の低いキャラクタは空中に浮いてしまいます。

名称 パラメータ([]内はデフォルト) 解説

ycale スケール値 [1.0] キャラクタの原点(Hips)の動きに対

する縦方向のスケール値

xzscale スケール値[1.0] キャラクタの原点(Hips)の動きに対

する平面上の動きのスケール値

stopmode [“reset”] or “remain” アニメーション後の処理の設定

“reset” : デフォルトポーズ(直立)

に戻る

“remain”: アニメーション最後のポ

ーズのまま停止

resettime 秒 [1.0] stopmodeが”reset”の場合に、アニ

メーション終了からデフォルトポー

ズに戻るまでの時間を指定

preresettime 秒 [1.0] 同トラックで再生中のアニメーショ

ンとのブレンド時間を設定。

BVHアニメーション開始から

preresettime経過後に直前のアニ

メーションは停止する。

repeat ループ回数 [1] BVHアニメーションのループ再生回

数を指定。0の場合は∞ループで、

同トラックに他のアニメーションが

追加されるまで再生を続ける。

speedratio スピード [1.0] アニメーション再生スピードに対す

る倍率。

from フレーム番号 [-1] BVHアニメーション開始フレーム番

号。-1なら先頭から。

to フレーム番号 [-1] BVHアニメーション終了フレーム番

号。-1なら最後まで。

rootjoint ジョイント名 BVHファイルに記述されているジョ

イント名を指定することで、指定ジ

ョイント以降の階層のアニメーショ

ンのみを再生する

usettrans “on” or [“off”] BVHファイルに記述されているポジ

ション値を反映させるかどうかを指

定する。

ydiff “on” or [“off”] “on”を指定すると、キャラクタの原

点(Hips)の移動アニメーションは初

期位置からの差分のみが適用される

track 番号 [0] アニメーションミキサー内のトラッ

ク番号。(エラー! 参照元が見つか

りません。)参照。

AnimeViewer説明

17/21

Copyright NHK(Japan Broadcasting Corporation) All rights reserved.

許可なく転載することを禁じます。

bmファイルに設定する値”bvh_scale”は腰位置の移動値に対するスケール値で、これを利用す

ることで BVHアニメーション再生中の腰位置の不具合を修正することが出来ます。図 5の例の場

合、左側には”bvh_scale”を 1.0未満に、右側には 1.0より上の値を指定すれば、足を床に設置させ

ることが出来ます。又、”bvh_scale”の値は平面上の移動(x,z)にも適用される為、腰の高さ(≒足の

長さ)に合う移動を実現できます。

bmファイルで”bvh_scale”を設定しなかった場合は、キャラクタの腰の高さを BVH ファイルでの

腰の初期高さで割った数値が割り当てられます。従って指定無しの場合は、再生する BVH ファイ

ルによって”bvh_scale”の値が変動することになります。

2-2-2 bm ファイル

・モデル描画パラメータ

名称 解説

ModelFile “.bmo”ファイル名

bone_scale_x bodyモデルから取得したジョイントのデータを

利用する際に掛けるスケール値(X軸)

bone_scale_y bodyモデルから取得したジョイントのデータを

利用する際に掛けるスケール値(Y軸)

bone_scale_z bodyモデルから取得したジョイントのデータを

利用する際に掛けるスケール値(Z軸)

body_scale_x bodyモデル描画に掛かるスケール値(X軸)

body_scale_y bodyモデル描画に掛かるスケール値(Y軸)

body_scale_z bodyモデル描画に掛かるスケール値(Z軸)

face_rotate_x face*モデルに掛ける回転値(X軸)

face_rotate_y face*モデルに掛ける回転値(Y軸)

face_rotate_z face*モデルに掛ける回転値(Z軸)

bvh_scale BVHアニメーションデータをモデルに適用する際

に掛けるスケール値

t_pose T型ポーズキャラクタフラグ(T字のキャラクタの

場合 trueに設定、デフォルトは false)

図 5 BVHアニメーションの腰位置

AnimeViewer説明

18/21

Copyright NHK(Japan Broadcasting Corporation) All rights reserved.

許可なく転載することを禁じます。

leye_translate x y z 左目の位置調整

reye_translate x y z 右目の位置調整

leyebrow_translate x y z 左眉の位置調整

reyebrow_translate x y z 右眉の位置調整

Leyelid_translate x y z 左まぶたの位置調整

reyelid_translate x y z 右まぶたの位置調整

hair_translate x y z 髪の位置調整

ear_traslate x y z 耳の位置調整

nose_tranlate x y z 腰の高さ

・初期姿勢用パラメータ

名称 解説

initpose_LeftUpperArm_rotx 左上腕の x角度

initpose_RightUpperArm_rotx 右上腕の x角度

initpose_LeftUpperArm_roty 左上腕の y角度

initpose_RightUpperArm_roty 右上腕の y角度

initpose_LeftUpperArm_rotz 左上腕の z角度

initpose_RightUpperArm_rotz 右上腕の z角度

initpose_LeftLowerArm_rotx 左前腕の x角度

initpose_RightLowerArm_rotx 右前腕の x角度

initpose_LeftHand_roty 左手の y角度

initpose_RightHand_roty 右手の y角度

initpose_hiplevel 腰の高さ

・カメラクローズアップ位置決定用パラメータ

名称 解説

where_of_camera_look_at カメラ注視点の調整(加算)

width_face 頭の幅(モデルの数値より優先)

height_face 頭の高さ(モデルの数値より優先)

・口パク調整用パラメータ

名称 解説

speak_adjust_level 音圧に対する口パクの感度(0.0~)

speak_adjust_lpf 合成音声にかかるローパスフィルタ係数(0.0

~1.0)

TVML スクリプトアニメーション用パラメータ

名称 解説

walkstopsit_speed 歩きのスピード

walkstopsit_stroke 歩きの歩幅

walkstopsit_waistline 歩いているときの腰の高さ

AnimeViewer説明

19/21

Copyright NHK(Japan Broadcasting Corporation) All rights reserved.

許可なく転載することを禁じます。

walstopsit_raise 歩きの足振り上げの高さ

walk_hipswing 歩行時の腰振り幅(コマンド walkのパラメータ

hipswingのデフォルト)

walk_chestswing 歩行時の胸振り幅(コマンド walkのパラメータ

chestswingのデフォルト)

walk_headswing 歩行時の頭振り幅(コマンド walkのパラメータ

headswingのデフォルト)

walk_armswing 歩行時の腕振り幅(コマンド walkのパラメータ

armswingのデフォルト)

walk_updown 歩行時の体の上下動(コマンド walkのパラメータ

updownのデフォルト)

hiplevel_sit 座った時の腰の高さ(デフォルトはキャラクタモデ

ルのひざの高さ)

hipzpos_sit 座ったときの腰の前後位置(デフォルトはキャラク

タモデルの腿の長さ)

initpose_hiplevel 立っている時の腰の高さ(デフォルトはキャラクタ

モデルの腰の高さ)

turn_speed character:turnのスピード

swing_speed character:swingのスピード

swing_degree character:swingの程度

watch_speed character:look,gazeのスピード

bow_speed character:bowのスピード

shiver_degree character:shakeの程度

where_of_camera_look_at character:lookでカメラ目線を指定した時に、カ

メラ位置 y軸にこの値を足した点を注視する。

talk_arm_excite character:talkで emotion = exciteの時の腕の動

作程度

talk_hand_excite character:talkで emotion = exciteの時の手の動

作程度

gesture_type character:gestureのパラメータ typeのデフォル

ト文字列

gesture_swing_speed gestureの type“swing”に対応するスピード

gesture_swing_degree gestureの type”swing”に対応する程度

gesture_twist_speed gestureの type“twist”に対応するスピード

gesture_twist_degree gestureの type”twist”に対応する程度

gesture_pitch_speed gestureの type“pitch”に対応するスピード

gesture_pitch_degree gestureの type”pitch”に対応する程度

gesture_hand_speed gestureの type“hand”に対応するスピード

gesture_hand_degree gestureの type”hand”に対応する程度

gesture_arm_speed gestureの type“arm”に対応するスピード

gesture_arm_degree gestureの type”arm”に対応する程度

gesture_stress_speeed gestureの type“stress”に対応するスピード

gesture_stress_degree gestureの type”stress”に対応する程度

gesture_arm_upper_roty gestureの type”arm”に対応する上腕振り y角度

AnimeViewer説明

20/21

Copyright NHK(Japan Broadcasting Corporation) All rights reserved.

許可なく転載することを禁じます。

gesture_arm_upper_rotz gestureの type”arm”に対応する上腕振り z角度

gesture_hand_upper_rotx gestureの type”hand”に対応する上腕振り x角度

gesture_hand_upper_roty gestureの type”hand”に対応する上腕振り y角度

gesture_hand_lower_rotx gestureの type”hand”に対応する前腕振り x角度

swing_sw swingの初期動作フラグ(0 or 1)

blink_sw blinkの初期動作フラグ(0 or 1)

blink_interval_time 1回の瞬きにかかる時間(秒)

blink_duration_closed 目を閉じている時間(秒)

blink_interpol_time 瞼の開閉にかかる時間(秒)

2-2-3 bmo ファイル

・モデルファイル名、モーフィング用パラメータ

名称 解説

body 頭以外の体のモデルデータ

vertOpt メッシュの頂点最適化フラグ。

頂点最適化方法は、DirectXの D3DXMESHOPTに依存し

ます。(“D3DXMESHOPT_”に続く文字列の列挙で指定し

ます。)

faceM 口を閉じた状態の頭のモデルデータ

faceA 口を”あ”の字に開いた状態のモデルデータ

faceI 口を”い”の字に開いた状態のモデルデータ

faceU 口を”う”の字に開いた状態のモデルデータ

faceE 口を”え”の字に開いた状態のモデルデータ

faceO 口を”お”の字に開いた状態のモデルデータ

eyelidLO 左瞼、開いた状態のモデルデータ

eyelidLC 左瞼、閉じた状態のモデルデータ

eyelidRO 右瞼、開いた状態のモデルデータ

eyelidRC 右瞼、閉じた状態のモデルデータ

eyebrowL 左眉毛のモデルデータ

eyebrowR 右眉毛のモデルデータ

eyeL 左目のモデルデータ

eyeR 右目のモデルデータ

head 髪のモデルデータ

ear 耳のモデルデータ

nose 鼻のモデルデータ

faceM_Key 口を閉じるアニメーション

faceA_Key 口を”あ”の字に開くアニメーション

faceI_Key 口を”い”の字に開くアニメーション

faceU_Key 口を”う”の字に開くアニメーション

faceE_Key 口を”え”の字に開くアニメーション

faceO_Key 口を”お”の字に開くアニメーション

eyelid_Key 瞼を閉じるアニメーション(閉じた状態で終了)

expression_Key 表情のアニメーション

AnimeViewer説明

21/21

Copyright NHK(Japan Broadcasting Corporation) All rights reserved.

許可なく転載することを禁じます。

faceBlend 口パクアニメーションの適用方法(MIX, REPLACE,

MODULATE, ADD)

blinkBlend まばたきアニメーションの適用方法(MIX, REPLACE,

MODULATE, ADD)

expressionBlend 表情アニメーションの適用方法(MIX, REPLACE,

MODULATE, ADD)

face_Factor 口パクアニメーションの適用具合(比率)

blink_Factor まばたきアニメーションの適用具合(比率)

expression_Factor 表情アニメーションの適用具合(比率)

type_* モーフィング方式の設定

expression_* 表情の構成データ、”*”の部分の文字列が

character:expressionの typeになる。

2-3 モデルファイルの圧縮

AnimeViewerは zip圧縮されたモデルデータに対応しています。

セット・小道具・キャラクタのモデルデータ(“obj”, “x”, “bm”,”bmo”,テクスチャ)をモデル毎に zipフ

ァイルに圧縮、(set, prop, character) openmodel コマンドで読み込むことができます。

AnimeViewerは圧縮ファイル(zip)かどうかをファイルの内容(ヘッダ部分)で判断していますので、

圧縮ファイル自体の拡張子は自由につけることが出来ます。