FreeWalk チュートリアル 更新履歴 1. FreeWalk を使ってみる

FreeWalk チュートリアル
最終更新 2004.6.22
修士2回
板倉豊和
このチュートリアルでは、FreeWalk を研究のために使用・改造する際に必要となる環境の
構築手段などを説明します。より詳しくは以下の公開サイトまたはパッケージに付属のマ
ニュアルを参照してください。
FreeWalk 公開サイト:http://www.lab7.kuis.kyoto-u.ac.jp/freewalk/index.html
更新履歴
2004.4.16
チュートリアル作成
2004.4.19
誤植を修正
2004.6.22
ソースコード改造関係(3章)の内容を大幅に更新
・ ビルド時に必要な以下のソフトウェアのインストールに関して
Microsoft DirectX SDK
Microsoft Speech SDK
Silicon Graphics OpenGL Optimizer
Silicon Graphics Image Format Library (IFL)
・ デバッグビルドに関して
・ Visual C++ .net に関して
1. FreeWalk を使ってみる
FreeWalk を使用するために必要な環境は以下の通り。
・ Windows2000 または WindowsXP
・ DirectX 8.0 以上
・ メモリ:128MB 以上
DirectX は以下のサイトからダウンロードできます。現在のバージョンは 9.0b。
http://www.microsoft.com/japan/windows/directx/default.mspx
また、3D描画のため、できるだけ高性能なグラフィック性能(グラフィックチップ、
グラフィック用メモリ)が望まれます。
1.1.
ダウンロード&インストール
まず FreeWalk のインストールパッケージをダウンロードし、FreeWalk が動く最低限の
1
環境を以下の1~8の手順に従い構築します。
1.http://www.lab7.kuis.kyoto-u.ac.jp/freewalk/download/index.html に ア ク
セス。
2.ライセンスに同意後、名前とネームアドレスを入力、「FreeWalk 本体パッケ
ージ(実行環境のみ)」にチェックし、適当なフォルダにダウンロード。
3.ダウンロードした zip ファイルを解凍し、できたフォルダ内の setup.exe を実
行(下図)。
4.「FreeWalk V4」を選択。指示に従いインストール。
5.「Microsoft Speech API」を選択。コピーが終了したら完了。
6.「音声合成エンジン
ダウンロード」を選択。
Microsoft のサイトが開くので、
[Text-to-speech engines:]から[Lernout & HauspieR TTS3000 TTS engine –
Japanese]を選択、適当なフォルダにダウンロード。ダウンロードしたファイ
ルを実行し、コピーが終了したら完了。
7.「OpenGL Optimizer 1.2」を選択。指示に従いインストール。
8.「Image Format Library (IFL) 1.3.1」を選択。指示に従いインストール。
これで環境構築は完了。
1.2.
FreeWalk の起動&シナリオ再生
インストールが終了すると、「地下鉄今出川駅の避難誘導シナリオ」が実行できる状態に
なっています。Windows スタートメニューから「プログラム→FreeWalk V4→FreeWalk
V4」を選択すると FreeWalk が起動し、上記サンプルシナリオが読み込まれます。ツール
2
バー上の再生ボタンが選択できるようになればシナリオ読み込み完了です。再生ボタンを
押してシナリオ開始。
1.3.
基本的な使い方
カーソルキー:↑、↓、←、→でそれぞれ前進、後退、左回転、右回転
F1 キー:視点の切り替え(アバターの視点とアバターの後ろからの視点)
指差し:Q キーを押しながらカーソルキーで操作
首振り:W キーを押しながらカーソルキーで操作
待て:1キーで「待て」のジェスチャ
来い:2キーで「来い」のジェスチャ
1.4.
シナリオの停止&FreeWalk の終了
ツールバー上の停止ボタンを押すと、FreeWalk 起動直後の状態に戻ります。メニューか
ら[終了]を選ぶかウィンドウ右上の[×ボタン]で FreeWalk を終了します。
2. 自分で作ったシナリオを動かす
研究で FreeWalk を使う場合、自分でシナリオを書く必要があると思います。シナリオは
Q 言語で書かれますが、ここではシナリオの記述方法は詳しくは説明しません。詳しくは Q
言語のページ(http://www.digitalcity.jst.go.jp/Q/index-j.html)を参照してください。
以下、”scenario_sample.q”というシナリオファイルを作った場合の、そのシナリオの動
かし方を説明します。
3
2.1.
シナリオの作り方
以下はサンプルシナリオ(scenario_sample.q)の内容です。
(load "define_cue_action.q")
(load "def_env.q")
(defagent Scene
scenario-scene
:machine "Machine0"
:location '(0.0 0.0 0.0 0.0)
:shape '("Imadegawa/vrml/imadegawa.wrl")
)
(defavatar User
scenario-user
:machine "Machine0"
:location '(-2.5 -4.65 15.0 0.0)
:shape '("Human/vrml/male_01.wrl")
)
(defagent Agent
scenario-agent
:machine "Machine0"
:location '(2.5 -4.65 25.0 0.0)
:shape '("Human/vrml/male_02.wrl")
)
(defscenario scenario-scene ()
(scene1
(#t)
)
)
(defscenario scenario-user()
(scene1
(#t)
)
)
(defscenario scenario-agent()
(scene1
(#t
(!walk :route '((2.5 31.0) (1.0 35.0) (1.0 37.0) (1.0 53.0)))
)
)
)
“defagent”、”defavatar”でそれぞれエージェントとアバターを定義しています。各部分
の説明は以下の通り。
scenario-user キャラクタが従うシナリオ
:machine キャラクタが動くマシン名。ネットワーク機能を使う場合に意味を持ちます
:location キャラクタの初期位置
:shape キャラクタの形状を決める VRML ファイルのパス([FreeWalk インストールフ
4
ォルダ]¥Data¥VRML
からの相対パス)。
”defagent Scene”では使用するシーン(今出川駅)の VRML モデルを読み込んでいます。
“defscenario”ではそれぞれのキャラクタが従うシナリオを定義しています。
2.2.
シナリオの置き場所
作ったシナリオファイルは
[FreeWalk インストールフォルダ]¥Data¥Scenario
に置
い て く だ さ い 。 こ こ で は 上 で 作 っ た scenario_sample.q と い う シ ナ リ オ フ ァ イ ル を
[FreeWalk インストールフォルダ]¥Data¥Scenario 以下に保存したとします。
2.3.
読み込むシナリオの指定
スタートメニューから FreeWalk を起動したときに読み込むシナリオは、FreeWalk.ini
という設定ファイルに指定されています。このファイルを書き換えれば自分の作ったシナ
リオを読み込むことができます。FreeWalk.ini ファイルは
ルダ]¥Property
[FreeWalk インストールフォ
にあります。
FreeWalk.ini ファイルの[Q]セクションにある
ScenarioFileName=../Data/Scenario/talk_Imadegawa.q
という記述が読み込むシナリオファイル名を指定しています。これを以下のように書き直
します。
ScenarioFileName=../Data/Scenario/scenario_sample.q
これで次回 FreeWalk 起動時には scenario_sample.q が読み込まれます。
3. FreeWalk の改造
自分で書いたシナリオを FreeWalk で動かすのとは別に、研究の中で FreeWalk 自体を改
造しなくてはならないこともあると思います。以下では改造のための環境構築手順などを
説明します。
3.1.
ソースコードつきパッケージのダウンロード&インストール
FreeWalk を改造するには、FreeWalk のソースコードをダウンロードして自分でビルド
(コンパイル)する必要があります。ソースコードつきの本体パッケージは、1.1.の手順2
において「FreeWalk 本体パッケージ(実行環境のみ)」の代わりに「FreeWalk 本体パッケ
5
ージ(実行環境+ソースコード)」をチェックしてダウンロードします。FreeWalk 本体と
音声合成エンジンのインストールについては 1.1.と同じですので、1.1.の手順6までそのと
おりに進めてください。手順7・8については次節をご覧ください。
3.2.
改造・ビルドに必要なソフトのインストール
ソースコードから FreeWalk を改造してビルド(コンパイル)する場合、「リリースビル
ド」と「デバッグビルド」とがあります。それぞれのビルド方式でできあがる実行ファイ
ル(exe や dll ファイル)や、その大きさなどが違います。FreeWalk ならば、それぞれ
FreeWalk.exe、FreeWalkD.exe が対応します。リリースビルドは「通常の」ビルドと考え
ておいてよいですが、デバッグビルドでできた実行ファイルでは、エラー発生時に自動的
に Visual C++が立ち上がりデバッグを行う(エラー発生箇所を検証する)ことができます。
デバッグビルドを含めて、以下で FreeWalk を改造してビルドするために必要な環境を構築
します。
まず 1.1.の手順7・8にある、
・ Silicon Graphics OpenGL Optimizer
・ Silicon Graphics Image Format Library (IFL)
の2つのソフトをインストールします。Optimizer と IFL のインストールについては、1.1.
で示したとおりインストール用パッケージからそれぞれセットアッププログラムを立ち上
げ、以下のセットアップタイプ選択画面で “Custom” を選択してインストールします(デ
フォルトでは ”Typical” が選択されています)。
FreeWalk の改造には、これまでインストールしたソフトの他に以下の SDK が必要にな
6
ります。それぞれ下記のページからダウンロードしてください。
・ Microsoft DirectX SDK (Ver. 9.0b) (dx90bsdk.exe)
http://www.microsoft.com/downloads/details.aspx?familyid=1d97f320-9dfd-4e7a
-b947-3a037ccf84af&displaylang=en
・ Microsoft Speech SDK (Ver. 4.0a) (SAPI4SDK.exe)
http://www.microsoft.com/speech/download/old/sdk40a.asp
それぞれ exe ファイルをダウンロード後、ファイルを実行し、指示に従ってインストール
してください。ただし、DirectX SDK のインストールに関しては”Retail” と “Debug” が
選択できるようになっていますが、”Debug”を選択してインストールします。
3.3.
ワークスペースの起動
FreeWalk を改造するためには Visual C++ 6.0(SP5.0 以降)が必要です。以下、Visual C++
6.0 について説明します。
(Visual C++ .net では Windows のバージョン管理等の関係でビ
ルド時にエラーが出るようです。まだ対応策はわかっていません)
まず、
[FreeWalk インストールフォルダ]¥FreeWalk 開発環境¥FreeWalkV4.dsw
をダブルクリックして Visual C++に FreeWalk のプロジェクトワークスペースを読み込み
ます。
3.4.
ビルド環境の構築
改造したソースをビルド(コンパイル)するためには、すでにインストールした
・ Microsoft DirectX SDK
・ Silicon Graphics OpenGL Optimizer
・ Silicon Graphics Image Format Library (IFL)
・ Microsoft Speech SDK
の4つについて、そのインクルードファイル・ライブラリファイルを使えるようにしてお
かなくてはいけません。以下ではその手順を説明します。
ワークスペースを起動したら、「ツール→オプション」でオプションウィンドウを開き、
「ディレクトリ」タブを選択。「表示するディレクトリ」から「インクルードファイル」を
7
選び、下の「ディレクトリ」に以下の4つを追加(下図)
。
C:¥Program Files¥DirectX9SDK¥Include
C:¥Program Files¥Silicon Graphics¥IFL 1.3.1¥include
C:¥Program Files¥Silicon Graphics¥Optimizer¥include
C:¥Program Files¥Microsoft Speech SDK¥Include
ただし、このフォルダパスはインストールした環境により異なります。
次に、「表示するディレクトリ」から「ライブラリファイル」を選び「ディレクトリ」に
次の4つを追加(下図)
。
C:¥Program Files¥DirectX9SDK¥Lib
8
C:¥Program Files¥Silicon Graphics¥IFL 1.3.1¥lib
C:¥Program Files¥Silicon Graphics¥Optimizer¥lib
C:¥Program Files¥Microsoft Speech SDK¥Lib
以上でビルドできる環境が整いました。
3.5.
初めてビルドする時
初めてワークスペースを起動したときは、まず「リビルド」します。その前に、行うビ
ルド(リビルド)がリリースビルドなのか、デバッグビルドなのかを確認しておきます(ビ
ルドの種類に関しては 3.2.節を参照)
。
ビルドの種類の確認は次のように行います。メニューから「ビルド→アクティブな構成
の設定」を選択すると、以下のようなウィンドウが出ます。
ここで、「FreeWalk – Win32 Release」が選択されていればリリースビルド「FreeWalk –
Win32 Debug」が選択されていればデバッグビルドです。普通はリリースビルドでいいと
思いますので、
「FreeWalk – Win32 Release」を選択してください。デバッグビルドを行う
必要がある場合は「FreeWalk – Win32 Debug」を選択してください。
ビルドの種類の確認ができたら、メニューから「ビルド→リビルド」を選択してリビル
ドを開始します。リビルドが始まりますが、
・・・
C:¥Laboratory¥FreeWalk¥FreeWalk V4¥FreeWalk 開発環境
¥Component¥Voice¥VoiceAgency¥SmartVoiceManager.cpp(51) : fatal error
C1083: インクルード ファイルがオープンできません。'VoiceServer.h': No such file or
directory
9
・・・
コードを生成中...
cl.exe の実行エラー
FreeWalk.exe - エラー 1、警告 0
のようなエラーが出ます。ここで一度、
「ファイル→アプリケーションの終了」で Visual C++
を終了させます。次に
[FreeWalk インストールフォルダ]¥FreeWalk 開発環境
¥Component¥Voice¥VoiceServer¥VoiceServer.dsw
をダブルクリックし、VoiceServer のワークスペースを起動します。ここでもリビルドを行
いますが、その前にビルドの種類を確認します。メニューから「ビルド→アクティブな構
成の設定」を選択し、以下のウィンドウで
リリースビルドならば「VoiceServer – Win32 Release MinSize」を、デバッグビルドなら
ば「VoiceServer – Win32 Debug」を選択します。
ビルドの種類を選び終わったら、「ビルド→リビルド」でリビルドを実行。ここで現状で
はエラーが出てしまいます。エラーが出た場合、
[FreeWalk インストールフォルダ] ¥FreeWalk 開発環境
¥Component¥Voice¥VoiceServer¥dlldata.c
というファイルを次のように書き換えます。
/*********************************************************
DllData file -- generated by MIDL compiler
10
DO NOT ALTER THIS FILE
This file is regenerated by MIDL on every IDL file compile.
To completely reconstruct this file, delete it and rerun MIDL
on all the IDL files in this DLL, specifying this file for the
/dlldata command line option
*********************************************************/
#define PROXY_DELEGATION
#include <rpcproxy.h>
#ifdef __cplusplus
extern "C"
{
#endif
EXTERN_PROXY_FILE( VoiceServer )
PROXYFILE_LIST_START
/* Start of list */
REFERENCE_PROXY_FILE( VoiceServer ),
/* End of list */
PROXYFILE_LIST_END
DLLDATA_ROUTINES( aProxyFileList, GET_DLL_CLSID )
#ifdef __cplusplus
} /*extern "C" */
#endif
/* end of generated dlldata file */
つまり、「/* end of generated dlldata file */」以下は余計な部分ですので、これをカットし
てください。書き換えたらリビルドし、リビルドが終了したら Visual C++を終了。
次に再度、
[FreeWalk インストールフォルダ]¥FreeWalk 開発環境¥FreeWalkV4.dsw
を起動し、今度は「ビルド→ビルド」を選びます。リビルドでないことに注意してくださ
い。ここでも上と同じエラーが出る場合があります。このときは、
[FreeWalk インストールフォルダ]¥FreeWalk 開発環境
¥Component¥ApplicationManager¥ApplicationServer¥dlldata.c
を以下のように書き換えてください。
/*********************************************************
DllData file -- generated by MIDL compiler
11
DO NOT ALTER THIS FILE
This file is regenerated by MIDL on every IDL file compile.
To completely reconstruct this file, delete it and rerun MIDL
on all the IDL files in this DLL, specifying this file for the
/dlldata command line option
*********************************************************/
#include <rpcproxy.h>
#ifdef __cplusplus
extern "C"
{
#endif
EXTERN_PROXY_FILE( ApplicationServer )
PROXYFILE_LIST_START
/* Start of list */
REFERENCE_PROXY_FILE( ApplicationServer ),
/* End of list */
PROXYFILE_LIST_END
DLLDATA_ROUTINES( aProxyFileList, GET_DLL_CLSID )
#ifdef __cplusplus
} /*extern "C" */
#endif
/* end of generated dlldata file */
ここでも、「/* end of generated dlldata file */」以下の部分を削除してください。書き換え
たらビルドし、エラーが出なければビルド完了です。
3.6.
ソースを書き換えてビルドするとき
3.5.で初回にリビルドすれば、2回目以降ソースコードを書き換えてその変更を反映する
ときには「ビルド→ビルド」を選ぶだけでOKです。リビルドする必要はありません。ビ
ルドがエラーなく終了すれば、改造箇所が反映された FreeWalk の実行ファイルが出来上が
っています。
3.7.
改造が反映された実行ファイルの実行
ビルドしてできた実行ファイル(FreeWalk.exe)は
[FreeWalk インストールフォルダ]¥FreeWalk 開発環境¥Executable¥Release
の中に格納されています。実行ファイルを実行すれば FreeWalk が起動しますが、
FreeWalk.exe を実行する前に同じフォルダにある Regist.bat を実行します。同じフォル
12
ダの FreeWalk.exe を連続して使用する場合は次の FreeWalk の起動時には Regist.bat を実
行する必要はありません。しかし、別のフォルダの FreeWalk.exe を使用する場合には、起
動前にそのフォルダの Regist.bat を実行してください。
また、デバッグビルドを行った場合、出来上がった実行ファイル(FreeWalkD.exe)は
[FreeWalk インストールフォルダ]¥FreeWalk 開発環境¥Executable¥Debug
以下に格納されています。
3.8.
FreeWalk 実行時のエラー対応
FreeWalk を終了したときに Q のアウトプットウィンドウが残ったり、FreeWalk が起動
できないなどの問題が発生したときには、以下を確認してください。
1.Ctrl+Alt+Del を押し、タスクマネージャを起動
2.「プロセス」タブを選び、
FreeWalk.exe
Q.exe
VoiceServer.exe
ApplicationServer.exe
の4つのプロセスがあるかどうか確認
3.もしどれかのプロセスが残っていれば、そのプロセスを終了させる
もしそれでも起動エラーが回復しない場合は、コンピュータの再起動してみてください。
それでも起動時にエラーが出る場合は、改造のために生じたエラーであると考えられるの
で、改造箇所を元に戻してみることをお勧めします。
4. ネットワークを介して使う
研究室のLANやインターネットなどのネットワークを介して FreeWalk を使うことが
できます。N台のコンピュータを使用した場合のネットワークの構成は
・ マシン1: CommunityServer による共有空間管理、エージェント(アバター)の
動作計算
・ マシン2: エージェント(アバター)の動作計算
・・・
・ マシンN: エージェント(アバター)の動作計算
13
のようになり、1台がサーバになります。
4.1.
シナリオの書き方
2台のコンピュータネットワークの場合、シナリオで
(load "define_cue_action.q")
(load "def_env.q")
(defagent Scene
scenario-scene
:machine "Machine1"
:location '(0.0 0.0 0.0 0.0)
:shape '("Imadegawa/vrml/imadegawa.wrl")
)
(defavatar User1
scenario-user1
:machine "Machine1"
:location '(-2.5 -4.65 15.0 0.0)
:shape '("Human/vrml/male_01.wrl")
)
(defavatar User2
scenario-user2
:machine "Machine2"
:location '(-2.2 -4.65 13.0 0.0)
:shape '("Human/vrml/male_02.wrl")
)
(defagent Agent1
scenario-agent1
:machine "Machine1"
:location '(2.5 -4.65 25.0 0.0)
:shape '("Human/vrml/male_03.wrl")
)
(defagent Agent2
scenario-agent2
:machine "Machine2"
:location '(2.7 -4.65 22.0 0.0)
:shape '("Human/vrml/male_04.wrl")
)
と宣言します。デフォルトでは Machine1 がサーバになりますので、シーンの宣言には
「:machine “Machine1”」としてください。つまりこのシナリオでマシン1とマシン2が受
け持つ役割は
・ Machine1: CommunityServer(シーンの管理)、Avatar1、Agent1
・ Machine2: Avatar2、Agent2
となります。
14
Machine1 と Machine2 には、同じシナリオを持たせておかなくてはいけません。
4.2.
設定ファイルの変更
ネットワーク機能を使う場合、FreeWalk.ini ファイルは次のように記述します。
[MachineName]セクションに
[MachineName]
Machine1=serverPC
Machine2=otherPC
と記述し、実際に用いるコンピュータ名を指定します。
また、[Server]セクションを
[Server]
UseServer=1
と書き換えます。
4.3.
起動方法
ネットワーク機能を使う場合の FreeWalk の起動手順は以下の通り。
1.serverPC(Machine1)側の FreeWalk.exe を起動。すると自動的に
FreeWalkCommunityServer.exe が起動されます。
2.タスクバーの右下に地球のアイコンが出たらサーバの起動完了。
3.otherPC(Machine2)側の FreeWalk.exe を起動。
4.両方のマシンの FreeWalk の起動が完了したら、どちらかの再生ボタンを押すともう
一方の再生ボタンも自動的に押されてシナリオが開始します。
終了手順は逆手順で、
1.otherPC(Machine2)側の FreeWalk.exe を終了。
2.serverPC(Machine1)側の FreeWalk.exe を終了。同時に
FreeWalkCommunityServer.exe も終了します。
5. 別の VRML ファイルを使う
15
公開サイトから他の VRML ファイルをダウンロードできます。ダウンロードできるファ
イルは
・人体モデルフルセット:
FreeWalk で使用できる人体モデルのセットです。(本体
パッケージには一部のモデルしか含まれていません)
・京都駅:
京都駅の VRML モデル
・京都四条通:
四条通の VRML モデル
・地下鉄今出川駅:
地下鉄烏丸線の今出川駅の VRML モデルです。これは上記
FreeWalk 本体パッケージに最初から含まれています
・ VRML モデルフルセット:
上記4つの VRML モデルパッケージのフルセット
京都駅・京都四条通・地下鉄今出川駅のモデルは、
[FreeWalk インストールフォルダ]¥Data¥VRML
フォルダ以下に置いて、シナリオのシーン定義で指定することで読み込むことができます。
人体モデルもアバター・エージェント定義において指定することができます。
16