「インタラクション，97」 平成9年2月

力覚フ十ト○げック機能を有するⅥⅧL2．0アラウサ○の開発呉寧l），安田孝美2），横井茂樹3）1）名古屋大学 人間情報学研究科（〒亜午01名古屋市子硬区不老町，Ⅶ血g＠y故d・gS・b聖札n喝Oyむu・肛jp）2）名古犀大学 情報文化学部（〒464−01名古屋市千種区不老町，yaSuda＠info．human．nagoyかu．aCjp）
3）名古屋大学 情報文化学部（〒464−01名古屋市千種区不老町，ydkoi＠toriwaki．mie．nagoya，u．aCjp）

概要；VRML7やラ町に力学フィードハサックを付加した試作システムを紹介する0力学フィードバ

ックつき7やラげと伝統的な7すラげとは、実現上においてかなり違う点が存在する。力覚装置を使用して、安定なフィードハやッタカを得るために、非常に高い更新速度で反カハ○ラメづの計算を行う必要がある。本文は、これについての一つの対処策として、筆者らが開発した馳肥田ddRem血血g技術を紹介する。
叶ドニ 爪）化eダ由揖ReJ血加g，Ⅵ此．0，見抜財仇〟

VRML2．ObrowserwithAForceFbedbackDevice
NingWU，ThkmiYÅSUDAandShig故iYOKOI

A血：Thispaperdescritx：SaSyStemWhichusesafbrceLbedbackdevice一−PHANma鴫血atetheVRML2Dvirbalenvirorment．Theimplementa血mofVRMLbrowserwidlfbrce
tbedbackisquitedihren‖加m山水Of鵬odinaryVRMLbrowser．hordertodbtainsteady伽∝飴edback，hapdcinterfhcerequiresveryhigh画rate・Oursystemusesameth血中血hwecallit

FbrceFiehlRen血ringtoenabkthePHAmhapdcdevicetom叫叫鱒theVRML2・OvirtualWOddmgetrealtimeforcefbedtxKkasif血況Werereald坤CtSinPlace！At鮎samedme，themanlpulatedwdd呵坤や画yedcnWindo昭95using以r∝t3DoronSGIworkstadcn血g坤nhvenbr．
勒W血血 爪）昭鞄揖月e廟，Ⅵ肥．0，月払1ⅣW

1． はじめに

VRMLは 3次元仮想空間をインターネット上に実現する技術として注目されている。すでにVRMLl．0の仕様に基づいてハ○ソコンにおいても70ラウがが開発され、我々にとって身近な技術になっている。VR扇Lは仕様の拡張が検討され、96年8月4日にVRML2．0ファイナル仕様【1】が確定された。これは動きや形状変形の表現も含み、より高度な仮想空間記述を可能にしてい−1−

る。ところで、VRML70ラウサ小は映像（音声も含む）を利用した70ラげであり 3次元仮想空間を視覚（および聴覚）により体験可能にするものであるが、仮想空間との体験には力覚も重要なはたらきをしている。本研究では高精度の商用力覚フィードハやック装置PHANToM を利用して、VRMLテ○一夕を視覚および力覚で体験できるシステムの開発を試みたム本研究は、世界中でこれから構築が進むと思われるVRML2．0仕様のデータファイルを解析して、3次元表示するとともに力覚フィードハやック装置により力覚で体験するためのシステムである。

力学フィードハやックつき7やラウサやと伝統的なでラウサやとは、実現上にかなり違う点がある。特に力覚装置−−Phantomを使用して、安定な7イードハ○ッタカを得るために、1秒間に800回以上、装置に反カハ○ラメ一夕を渡さなければならない。つまり、反力の計算は 800Hzのスヒ○−ドで実行すべき、普通のフルスヒ○−ドアニメーションの30Hzのア70デールートよりはるかに厳しい条件である。本文は、おもにこれについての一つの対処策として筆者らが開発した新しいForceFieldRemderingを紹介する。

2．システム構成
システムを構成するマシンは力覚フィードハやック装置を制御する Windows95マシンと仮想空間を表示するためのク●ラフイツタワークステーション SGI

Indigo2により構成されている。
Windowsマシンの70ラウサすから VRML2．0の7アイルをタ○ゥンロードする。これを構文解析してオブシーェクトの直接的記述を得る。この記述を利用して、記述内容を3次元表示する。高速なインタラクションのためにCGワークステーシヲンにテ●一夕を転送して表示する。CGワークステーションで表示したり、ナヒ○ケ○−トするとともに、Windoふs95マシンでForce Field Renderingする。Force Field
RenderingしたシーンはPHA呵oMにより力覚で体感することがせきる。
3．ソフトウエア開発の方針、特徴

システムに必要な諸機酪の■ソフトウエアを単に実魂するという土とそはなく、システムの拡張性、汎用性、他のハードウエアへの移植性、最新技術の導入などを考慮して繭発を行った。また、インターわト上のハ07やリッタドメインゐソフトウエアラげラリ（例えば、GNU如ex／Bis

ハ○−サー【2】【3］、C＋＋StandardTemplateLibrary［4］）を有効に活用して効率的な開発を行った。

ソフトウエアはいくつかの独自のファンクションを持つ C＋＋クラスライフやラリとして構成している。クラスライフ0ラリ間は、わずかの標準化しているインターフェースにより接続しているため、将来特定のクラスライフやラリを拡張、変更しても他の部分はほとんど影響なく利用可能になっているよ

また、PHANToM装置の反カハ○ラメ一夕を 800H21以上更新すべき間麿についても、ForceFieldRenderingという独自の方策で対処した。

−2−4． 開発ソフトウエアの内容
4．1 VR…L2．0ファイルのハ○−サー

VRML2．0ファイルを構文解析して、VRMLオフ●シ●ェクトの直接的な表現を求める。SGIのVRML2．OFinalDraftサンフ○ルハ○−サーに基づいて作成した。このサン70ルハ○−サーは VRML2．0の文法のチェックを行う機能のみであるが、これを拡張して、シーンの直接的記述を得るソフト恒アを開発した。ハ○−サーはUNIXのコンハ○イラ開発ツールの1ex／yacc［6］のGNUハ○−シやヨンであるFlexとBisonにより開発した。VRMLノード構造、シーンクやラフなどのテ○一夕構造の処理はSTL（Standard TemplateLibrary）により行った。
ハ○−シンク○したテ○一夕は標準ノード、汎用ノードとク○ルーフ0ノードオブシやェクトの集まりとして表現され、シーンを直接的に表現したものになっている。
4．2 3次元表示のためのクラスライフ■ラリ

PHANToM装置はWindows95マシンに接続され、制御される。Windowsマシンでは3D表示の能力が不足するため、Windowsマシンで反力装置の制御を行い、SGIの CGワークステーションにより 3D表示を行う設計をとっている。しかし、Windowsマシン制御を適切に行うためには Windowsマシンでも 3D表示することが必要であり、両方のマシンで3D表示機能を開発した。3D表示機能は開発用ライフ0ラリとして、WindowsマシンではDirect3D、Indigo2ではOpenInventorを使用して開発した。

4．3 通信クラスライフ●ラリわトワークによるタナウンロードやマシン間の通信を行うため、C＋＋の入出力クラスライブラリiostreamを拡張し、ス川−ムソケットおよびデータク●ラムソケットをカ70セル化することにより、ソケットの知識がなくてもiostreamライ7．ラリのインターフェースと同一形式でアクセスできるようにした。
4．4 反力計算関連クラスライフ●ラリ
反力装置PHANToMは、MITのAI研究所において開発されたものである。マニヒ○ユレーダの先端部分に指入れが装着されてあり、ここに指を入れて移動すると、そのⅩYZ座標値と移動速度が計測できる。このデータはコンヒ○ユータに入力され、コンヒ○ユータにより指の運動が仮想環境において行われたものとして計算して、仮想物体からの反力などを計算してマニュヒ○ユレーダにより指先に与える。

5．反力計算関連クラスライフ・■ラリ
反力計算関連クラスライフやラリの内容を紹介する。
5．1反力計算の過程

PHANToM装置に対し、1秒間800⊥回以上、反力用の制御データを送らないと安定な反力が得られない。これは画面上のレンタサリンク○（フルスヒ○−ドアニメーションは30Hz）より、はるかに厳しい。

−3−

反力計算の標準的な過程は、【5］によると．、左図のとおりである。

外側のルーフ、○を800Hzで実行することは、多少でも複雑なワールド（千ホ○リユ○ン以上）になれば、現在のハ○−ソナルコン

ヒ○ユーターでは処理能力が不足してしまう。これに対して、BSPツリーや OBBツリーなどアクセラレー′ション技術の利用を検討したが、この間題に十分対処できるものではなかった。

この間題に対す・る適切な解決方法は難しいと考えていたが、ある日次のことを思い出した。レートレシンクやがおそいが、フ●り計井すれば、フルスヒ○−ドでphoto・realisticアニメーションができる。70リ計算を導入すれば、複雑なワールドも手で体感できる。

まず、70リ計算を導入した70ロク○ラムの流れから紹介しよう。各クラスライフ．刑は −Mdltithreadおよびネットワーク対応として設計されているので、ネットワークで通信により、Windowsマシンでの反力操作とIndigo2での3次元表示を並列的に実行することが可能である。
SGIワークステーションがナヒやケ●−ション用、Windowsマシンは反力計算用に用いられる。

−4−

SGI Indigo2

Windows 95

5．2Force FieId Renderingとは基本的な発想はシン70ルなものである。標準的な反力計算の過程において一番時間かかるのは、ユーサ○−ポイントを使って各オブシやェクトと交差判断して各オブシ○ェクトからの反力を計算するところである。しかし、この計算は 800Hzで行う必要はない。それを内部ルーフ0から外して、70リ計算して、PHANToMのテ○ハ○イス座標系の各点の反カヘやケトルを生成してテー7●ルに記憶しておく。この結果、錮OHzで更新計算するための処理は、主と七てテーブルからめ検索を行えばよいことになり、計算が少ないから、ワールドの複雑さにほとんど依存せず実行できる。
PHANToM身￠りげとの区別のために、ForceFieldRenderingという。
普通レンタ＋リンク●とForce FieId Renderinqの比較
from
普通I to

結果次元 生成内容

オフ■シ■ェクト座標系 スクリーンテ■ハ●イス座標系

For■C8Field オフーシ●ェクト座標系 PHANToMテ■○ハ■イス座標系 3−5−2点のカラーヘ■クトル

点の反カヘ■クトル5．3Force Field Renderingのためのデータ構造
Force Field Renderingの結果の出力において、直接的な方法は二次元画像のフレームハやッ7アのように三次元配列を使うことである。しかし、下の計算の示すようにこれはあまり現実なものとは言えない。
PHANToMの70ロクすラムによく使う BIGBOXルーチン、つまり PHANToMデハ○イス実測できる座標範囲は約3000＜Ⅹ＜6000−4000＜y＜4000−6000＜Z＜−2000である。反カヘ○クトルはⅩ，y，Z各16bitである。
それで、Force Field Rendering結果をそのまま記憶すると、（16＋16＋16）＊3000＊8000＊4000／8＝576＊109Byte＝576GBが必要である。PCのメモリ量は32MB−128MBが主流なので、何千倍も必要である。

解決策として二つの方法を使用している。
一番目は、3000＊8000＊4000の解像度で保存ではなく、300＊800＊400の低い解像度で保存して、保存していない点の反力へ●クトルは Tri−Linearinterpolationで補間する方法である。最適なサン70リンクや解像度については、個人の触覚の主観的な差違が存在し、実験データが不十分なため、まだ求められていない。

補間1：a，b，C，dを求める。

補間2：a，bからeを c，dからfを求める
補間3：e，fからPを求める。

二番目は、PHANToMデハ●イス空間のほとんどの点の反力が0であることに注目し、配列構造ではなく・、ツリー構造で圧縮保存することである。

▲ ツリー構造は、挿入順序及びオフ●ゾェクト分布とほとんど関係なく、ハやランスのよいツリーを生成できるBDツリー［7］を選択した。
BDツリーはある種類のハやイナリ分割ツリー構造である。つまり、分割するたびに八分木のように空間の三方向全部に分割することではなく、→度に一つの方向だけ分割して、無駄に生成するノートを最小限に押さえられるデータ構造である。
普通の二分木の違っているところは、BDツリーは二分木のハ○ランスを破壊する内部ノード（一つの子ノートしか持っていないノート）を削除することである「。

たとえば、次の二次元の例で説明しよう。

−6−

普通の二分木の場合一つの子ノードしかない。ツリーのバランスを破壊して、ツリーのレベルを伸ばして、検索時間を長くしてしまった。
これらのノードの役は分割レベルを保存するだけで、別の方法で分軋レベルが表せれば、削除できる。
bCBI）木の場合

各ノードは自表している領域は分が占めている領域を覚えて、無駄のノードが削除さbcれた。

5．4Force Fje暮d Renderingの過程

このようにして、BDツリーは固定分割Scheme（いつも空間の一番長い次元の真ん中から分割−サト構造とオフ0ゾェクトの挿入順序の無開化・）と無駄なノードの削除のおかげで、ツリー構造の安定とハやランスの両立を達成した。

現在開発しているソフトウエアでは簡略な力学モデルを用いている。

ダ＝一転

（1）

式（1）は仮想オフ0シ○ェクトを触るときに適用する。鬼はオフ0シ○ユタトの剛性をあらわし、ズはオフやシ◆ェクト

への指先の侵入深さを表わす。
各オフ0シやユタト毎に各サげりげ点の反力を計算して、0ではないとき、BDツリーに挿入する。二つのオフ♪シやユタトは同じ座標点を占める可能性がある。そういう場合には、BDツリー内部でへ○ケトル足し算で合成する。たとえば、コートの点Pの反力方向は水平、鉛直ではなく、斜線方向へ向いている。

Box Cone Cylinder Sphere等のフ○リミテ7．は、境界からの一定の探−7−

さまでしか反力が与えられない。これは、IndexFaceSet等のホ01）＝．ンげシ○ェクトとの一致及びBDツリーへの挿入量の減少の二重メリットがある。l
反力なし

6．まとめ

本研究ではVRMLファイルでの形状を指先で感じることができる反力を有する7やラげを試作した。反力により視覚のみのときより現実感は大きく向上した。
ForceFieldRendering技術の導入により、不可能ではないかと思った複雑なワールドも力覚装置PHANToMで体験できるようになった。わトワークを通じて構築される VRML7アイルを力覚で体験できることは豊かな仮想体験をもたらすものと確信セきた。
これから、Force Field Rendering技術を運動する物体への対応、ハードウェア三次元アクセラレータの活用（Zハやッファ等）、画像圧縮（DCT等）によるメモリ消費量の軽減など方向へ発展するつもりである。VRMLフラウサ中のほうも、ハ○−チャルヘ○ント等の有用な機能を追加したい。
なお、本研究の一部は文部省科学研究費重点領域研究「人工現実感」、IBMアシ◆ァ奨学金による。

参考文献【1】TheVirtualRealityModelingLanguageSpecification
http‥／／vrml・Sgl■COm／moving−WOrlds／＄PeC／index・html【2】VRML2．OFinalDraftサげルハ○−サー，ftp‥／／vrml・Sgi・COm／pub／vrm12parser・Zip【3］VRMLScriptParserandImplementation，
http：／／vrml・Sgi・COm／moving−WOrlds／spec／vrmlscript・Zip【4】AlexanderStepanovandMengLee，TheStandardTemplateLibrary（ANSI／ISOdocument）【5】PHANTomHapticInterfaceInstallation＆TechnicalManual，SensAbleDEVICES［6】J．R．Levine，T．Mason，D．Brown著，村上列訳，lex＆yacc70げラミげ，7スト出版局【7】坂内正夫、大沢裕共著，画像デ一夕ヘニ¶−スー（株）瑠晃堂
iもう一つ注意しなければならないことは、ホ○げンは一つの面しかない。？まり、ポげンの法線は内部から外部まで定義すれば、ポリブンの内部は一定の探さまで反力があるが、外部はまったくない。はじめは変だと思う人もいるかも知れないが、これは当然であろう。
VRMLの仕様は確かに二面の＊0・）3．ンも許しているが、ハ0フォーマンスのためにI）irect3I）のように強制的にbackface−cullingを有効し、つまり特別な手段を使わないとがげンの外面しかみえないレげりげラげラリの普及で、一つの面のポげンだけ使う VRMLファ仰が主流になり、ホ○げンの内部しか体感できないことは問題にならないと考えても大きな間違いではないたろう。

ー8−