Monday, 26 June 2017

VRML2.0におけるSonyの拡張

新しく追加されたノード


Sony_BindSharedNode

マルチユーザ機能の提供の為に新たに追加。以下の目的に使用する。
  • クライアント間で共有する3Dオブジェクトを生成し、
  • リモートから呼ばれるeventInのScriptノードと3Dオブジェクトを結び付ける
このノードのPrototype定義は次のようになる。
    PROTO Sony_BindSharedNode [
        field SFNode transformNode NULL
        field SFNode scriptNode NULL
    ] { }
このノードは、Community Place以外のVRML2.0ブラウザが無事このノードを無視 出来るよう、何も拡張されないように定義されている。 Community Placeブラウザでは、このノードは特別な扱いを受けている。 このノードのtransformNodeフィールドを指すtransformノードは、クライアント間で 共有できるように作られる。 言い換えると、このフィールドで指されていないノードは共有されない、となる。 TransformNodeフィールドは指される必要が有り、その値は必ずTransformノード でなくてはならない。
scriptNodeフィールドの値がNULLでない場合、その値はScriptノードでなくては ならない。ScriptノードのeventInはリモートから呼ぶことができる。 第1引数にtransformNodeフィールドの中で示されるTransformノードとなる対象を、 第2引数にScriptノード中に現れるEventIn名となるeventIn名を、それぞれ指す ことで、sendApplSpecific()やsendApplSpecificWithDist()といったJavaのAPIを 使うことができる。
これらのAPIの3番目の引数は、ScriptノードのeventInの値になるであろう文字列値 である。eventInはこれらのAPIの使用にあたって値を受ける為にSFString型でなくて はならない。
例として、次のようになる。

PROTO Sony_BindSharedNode [ 
  field SFNode transformNode NULL 
  field SFNode scriptNode NULL
] { }

DEF T1 Transform { ... }
DEF S1 Script {
  eventIn SFString IN1
  eventIn SFString IN2
  ...
}

Sony_BindSharedNode { transformNode USE T1 scriptNode USE S1 }

Sony_Appearance

元のAppearanceノードに、次の2つの新しいフィールドを追加することで拡張して いる。
  • backface: Shapeを表すポリゴンが背面を持つか否かを示す。
  • description: Shapeに張り付けられるコメント。Community Placeブラウザ では、Shapeにマウスカーソルを入れることで、このコメントを見ることができる。
定義は次のようになる。
    PROTO Sony_Appearance [
 field        SFBool   backface         FALSE
 exposedField SFString description      ""
 exposedField SFNode   material         NULL
 exposedField SFNode   texture          NULL
 exposedField SFNode   textureTransform NULL
    ] {
 Appearance {
     material IS material
     texture IS texture
     textureTransform IS textureTransform
 }
    }

Sony_WorldInfo

ワールドに関するCommunity Placeブラウザ独自の属性を記述する。 このノードのPrototype定義は次のようになる。
PROTO Sony_WorldInfo [
  field        MFString archive              []
  field        SFInt32  armLength            -1
  field        SFBool   avatarRoom           FALSE
  field        SFInt32  backgroundImageType   0
  field        SFString cpBureau             ""
  field        SFString cpBureauWLS          ""
  field        SFBool   collisionSound       TRUE
  field        SFBool   collisionDisplay     TRUE
  exposedField SFBool   turnButtonAvailable  TRUE
  exposedField SFBool   floatButtonAvailable TRUE
  exposedField SFBool   homeButtonAvailable  TRUE
  field        SFInt32  soundDeviceRate      22050
  field        SFInt32  soundDeviceBits      8
]{}

archive

現在のVRMLファイル中で使われているファイルを含むアーカイブを指す。 これらのファイルは、解凍され、このVRMLファイルの置かれた場所からの相対パスで 参照できるよう、適当なローカルディレクトリに置かれる。 この方法は、コンテンツのロード中の接続を不要とする。 他のブラウザとの互換性の為、これらのファイルは適当なリモートディレクトリに 置かれるべきである。 アーカイブ自身は、LHAを用いて生成し、VRMLファイルと同じディレクトリに 置くべきである。
例)
Sony_WorldInfo {
  archive ["foo.lzh"]
}

armLength

ワールド中で、あなたの(仮想)腕がどの位の長さを持っているかを示す。 この変数は、その位置であるオブジェクトに触れられるか否かを決める。 (単位はメートル)-1を指定するとどんな遠くのオブジェクトも 触ることが出来る。 例)
Sony_WorldInfo {
  armLength 5
}

avatarRoom

ワールドにアバタルーム(アバタの色を変える)が提供されている場合、この変数を 指定する。TRUEかFALSEのみ指定できる。 TRUEの場合はavtroom.wrlという名前のファイルをVRMLファイルと同じディレクトリ に置くべきである。 avtroom.wrlには、アバタの色を変える機能を供給することが要求される。 例)
Sony_WorldInfo {
  avatarRoom TRUE
}

backgroundImageType

ワールドの背景のイメージ形式を指定する。 指定できるのは以下の値。
0
VRML2.0仕様通りのbackground texture
1
front-URLテクスチャが水平方向、垂直方向に張られ、 ナビゲーションによってそのテクスチャは移動しない。
2
front-URLテクスチャが水平方向に張られ、ナビゲーションによって そのテクスチャは移動する。
例)
Sony_WorldInfo {
  backgroundImageType 0
}

cpBureau

そのワールドのビューローのアドレス、ポート番号を指す。 例)
Sony_WorldInfo {
   cpBureau "vsserver.foo.com:5000"
}
or
Sony_WorldInfo {
   cpBureau "12.23.34.45:5000"
}

cpBureauWLS

そのワールドのワールドロケーションサーバのアドレス、ポート番号を指す。 この変数を使う場合、WorldInfo中にtitleを記述しておかなくてはならない。 例)
Sony_WorldInfo { 
  cpBureauWLS "vsserver.foo.com:6000"
} 
or
Sony_WorldInfo {
  cpBureauWLS "12.23.34.45:6000"
}

collisionSound

そのワールドで壁等にぶつかった場合に、音を出すかどうかを指定する。 TRUEで音を出す。 例)
Sony_WorldInfo {
  collisionSound FALSE
}

collisionDisplay

そのワールドで壁等にぶつかった場合に、ブラウザに赤い枠を表示するかどうかを 指定する。TRUEで表示する。 例)
Sony_WorldInfo {
  collisionDisplay FALSE
}

turnButtonAvailable、floatButtonAvailable、homeButtonAvailable

ブラウザのターンボタン、フロートボタン、ホームボタンをそれぞれ 有効にするかどうかを指定する。TRUEで有効。 例)
Sony_WorldInfo {
  turnButtonAvailable  FALSE
  floatButtonAvailable FALSE
  homeButtonAvailable  FALSE
}

soundDeviceRate、soundeDeviceBits

ブラウザがオープンするサウンドデバイスのパラメータを指定する。 例)
Sony_WorldInfo {
  soundDeviceRate  22050
  soundDeviceBits  8
}