アバタ仕様


1. 世界のオーサーのみがアバタのカスタマイズが出来る。

2. ユーザが自分の好きなアバタを置くことは許さない。

WORLDをworldのwrlファイルが置いてあるディレクトリのURLとする。
WORLD/avtimgというディレクトリに

avatar1.bmp

avatar2.bmp

...

imglist.txt

というふうにしてアバタのイメージファイルを置く。avatar1, avatar2はアバタの名前で8字以内。bmpにしたのはコンテンツがプラットフォームに依存しないようにするため。bmpファイルのサイズは任意で色数も任意。imglist.txtには.bmpファイルの一覧一行づつが入っている。

3. WORLD/avtwrlというディレクトリに

avatar1.wrl

avatar2.wrl

...

wrllist.txt

というふうにしてアバタのモデルファイルを置く。avatar1, avatar2はアバタの名前でイメージファイルの名前と対応している必要がある。wrllist.txtには.wrlファイルの一覧が一行づつ入っている。なおwrllist.txtの中のアバタの順番はimglist.txtの中のアバタの順番と一致ししている必要がある。

4. ブラウザはワールド読み込み時にアバタのデータの置いてあるディレクトリのimglist.txt, wrllist.txtファイルを確認する。そしてbitmapのディレクトリの中身を取りにいく。

5. アバタ変更メニュー(MultiUser-Select Avatar)はimglist.txt, wrllist.txtに1つ以上のアバタが入っていて、かつwrllist.txt, imglist.txtの設定が正しく行われていると有効になる。アバタ変更メニューが選択されるとその時点でavatimgディレクトリの中のすべてのイメージファイルを表示して選択させる。選択されたイメージファイルの名前をnewavt.bmpとすると、newavt.wrlを自分のアバタのURLとしてchangeURLメッセージをサーバに送信する。


6. アバタの色づけをサポートしたい場合には次のような手順を踏む。

6-1. アバタの色づけはWORLD/avtroom.wrlで行う。この部屋の中で適当な方法で色づけを行い、結果をレジストリに保存する。このために下記のAPIが提供されている。

これに関係するAPIは次の通りである。


6-2. アバタの色づけ終了後"OK"ボタンなどの操作で前の世界に戻る。

6-3. WORLD/avtwrlの下のアバタモデルはSony_BindSharedNode{}のtransformNodeに指定されている必要がある。そしてscriptNodeに指定されているScriptノードはeventIn SFString sonyAvatarAttributeを受け取れる必要がある。このeventInに対応してアバタの色づけを行う。ただし送られてくる文字列はレジストリに書き込んだ文字列の先頭に"sleep:0 "あるいは"sleep:1 "を加えたものになっている。この付加された文字列はアバタがスリープ状態である("sleep:1 ")かそうでない("sleep:0 ")かを表している。もしアバタのアクションがスリープ状態を表す姿勢もサポートしているならばsonyAvatarAttributeに対応する処理の中でスリープ姿勢に変更したり、普通の姿勢に戻すことが出来る。

6-5. 'Multiuser-Edit Avatar'メニューのenable/disableの制御はWorldInfo{}で行うようにする。具体的には:

WorldInfo { info [ "SonyAvatarRoom: TRUE"] }

という記述があればメニューが有効になる。上記のTRUEの代わりにFALSEが指定されているか、SonyAvatarRoomというタグがWorldInfo{}に指定されていない場合にはメニューは無効になる。このタグを含んだWorldInfoノードを複数書いた場合には最初にあらわれた物が有効になる。メニューが有効で選択した場合にそのファイルがない場合にはNetscapeに表示されることがある。


7. アバタのアクションをサポートしたい場合には次のような手順を踏む。

7-1. アバタがeventIn SFString sonyAvatarPostureを受信できる。このeventInに対応する処理の中で実際のアバタのアクションを行う。引数の文字列はアクションの種類を表す。hello, smile, wow, byeはブラウザの標準UIから送信できる。

7-2. アバタのアクションパネルはブラウザに組み込まれている。このボタンを押すことで上述の標準アクション名を送ることが出来る。将来のブラウザはアバタごとにカスタムアクションを定義することが出来るようになる。

7-3. アバタのアクションはどんな方法で行っても良い。Textノードを使ってきた文字列をただ表示するだけでも良いだろう。


8. アバタのスムーズな移動をサポートしたい場合には次のような手順で行う。

8-1. アバタがeventIn MFVec3f sonyAvatarVectorを受信できる。このイベントの値は2つのSFVec3fからなり、最初の要素がアバタの現在位置、2番目の要素がアバタの移動するべき位置である。

8-2. sounyAvatarVectorの処理ルーチンの中でPositionInterpolatorやTimeSensor等を駆使すると、なめらかに平行移動するアバタを作ることが出来る。さらにこの移動の最中に適宜ポーズを変えることで歩くアバタを作る。