第五章 大規模グラフィックスデータの高速表示
5.5 大規模グラフィックスデータの階層化表示
除して FacetAddition を追加すれば最も詳細なデータを得ることができる. なお, 紙面の都合上, 本 来は縦に並ぶデータ列を便宜上, 横に記述している.
#VRML V1.0 ascii Separator { Transform {
rotation 1 0 0 4.71239 center -63.8645 0 193.138
} ShapeHints {
vertexOrdering COUNTERCLOCKWISE creaseAngle 1.5708
} Material {
ambientColor 0.092332 0.0928379 0.101263 diffuseColor 0.38087 0.382957 0.417708 specularColor 0.533333 0.533333 0.533333 emissiveColor 0 0 0
shininess 0.933333
transparency 0
} Coordinate3 { point [ 88.8501 0 496.294, 39.0601 -11.68 511.024,
-201.22 0 402.574, -177.09 -13.97 423.654,
-25.9599 77.22 353.294, 236.17 86.61 277.854, 214.58 52.32 317.734 ]
} IndexedFaceSet { coordIndex [ 27, 6, 1, -1,
28, 27, 1, -1, 5, 4, 3, -1, 6, 5, 3, -1,
・・・・・・・・・・・・・・・・・・・
・・・・・・・・・・・
・・・・・・・・・・・
233.63 9.65 310.114, 222.45 24.13 336.024, 236.42 21.59 294.364 ]
} FacetDeletion { coordIndex [ 27, 6, 1, -1,
28, 27, 1, -1, 5, 4, 3, -1,
49, 25, 45, -1, 48, 25, 49, -1, 49, 25, 48, -1 ]
}
VertexAddition {
point [ -19.6099 -8.13 512.804, 96.2101 0 561.824, 78.1801 0 521.184,
・・・・・・・・・・・
49, 25, 45, -1, 48, 25, 49, -1, 49, 25, 48, -1 ]
} FacetAddition { coordIndex [ 0, 52, 53, -1,
27, 50, 1, -1, 1, 54, 27, -1,
・・・・・・・・・・・
146, 147, 49, -1, 148, 146, 49, -1, 8, 146, 148, -1 ]
}
VertexAddition { point [ 13.6601 0 548.364, -24.9399 0 513.564, 21.2801 -6.1 547.094,
-59.9999 78.23 350.244, 219.66 73.15 302.744, 217.63 52.32 320.784 ]
} FacetDeletion { coordIndex [ 10, 2, 26, -1,
18, 11, 20, -1, 27, 50, 1, -1,
・・・・・・・・・・・
・・・・・・・・・・・
146, 147, 49, -1, 148, 146, 49, -1, 8, 146, 148, -1 ]
} FacetAddition {
coordIndex [ 150, 151, 50, -1, 50, 152, 150, -1, 153, 150, 152, -1,
・・・・・・・・・・・
232, 233, 112, -1, 256, 255, 125, -1, 185, 74, 188, -1 ]
} }
図5-12 3階層化したドルフィンデータ
1) 表示データの入力:表示すべきデータファイルの入力には 2 種類の方法がある. 一つは, Input file というウィンドウでファイル名を入力する方法であり, もう一つは, WRL files というウ ィンドウ上に表示されているファイルをダブルクリックする方法である. 入力されたデータ は Loaded Images というウィンドウに表示され, 一度入力されたデータはそのファイル名をダ ブルクリックすることにより, 表示データを切り替えることができる. なお, 通常の VRML フ ァイルは拡張子として.wrl を使用しているため, 本研究で作成した階層化データファイルの 拡張子を.ref と定義する.
2) 色の変更:Change Color の下に示されているRGBのカラーバーを移動させると, R, G, B 各色要素を別々に変更することができる. また, 白色バーを移動させると, 色相を変更せず に, 全体の輝度を変更することができる. Color Reset というボタンをクリックすると, 元の 色に戻る.
3) 拡大縮小及び回転:Zoom の下にある+ボタンをクリックすると表示物体が拡大され, ―ボタ ンをクリックすると表示物体は縮小される. Reset ボタンをクリックすると元の状態に戻る.
Rotation の下にあるX, YあるいはZボタンをクリックすると, 表示物体はそれぞれX, Y あるいはZ軸周りに回転する. Reverse ボタンをクリックしてからX, YあるいはZボタンを クリックすると, 逆方向に回転する. All Reset というボタンをクリックすると, 全ての属性デ ータ(色, 大きさ, 軸周りの回転角など)が初期状態に戻る.
4) マウスオペレーション:マウスによる操作も可能である. マウスを上下方向に移動させると, X軸回りの回転, 左右方向に移動させるとY軸回りの回転, 左上から右下あるいは右下から左 上に移動させるとZ軸周りの回転, 左下方向に移動させると拡大, 右上方向に移動させると縮 小する.
本研究では, グラフィックスデータの削減方法として頂点マージ法を用いた. 頂点マージ法は, 元々存在するグラフィックスデータの頂点に削除対象となる頂点をマージすることによりデータ削 減を行う方法であり, 頂点を削除する際にグラフィックスデータに穴が開くことはなく, 幾何学的な 位相を保つことができる. また, 階層化したデータを用いて, 元のグラフィックスデータを徐々に復 元(Progressive Refinement)する場合, 頂点データに関しては削除されたデータを追加するだけよ い. コンピュータグラフィックスを用いて物体を表示する際, 対象物体を構成している頂点データの 座標変換を行い, 変換された座標値を基に表示プリミティブ(通常は三角形)を描画する. データを 階層化することにより複数のデータを持つと, 各段階の表示処理に多大な時間を要し, 最終となる詳 細データの表示が遅くなる可能性がある. しかしながら, 作成したデータの頂点データは全て元の頂 点データであり, 途中段階で削除される余分な頂点データは存在しない. 従って, 座標変換に関する 限り余分な変換処理を行う必要はなく, Progressive Refinement の各段階では頂点追加リストに記 述されている頂点データのみの座標変換を行えばよいことになる. 結果として, 面データの追加削除 処理を伴うものの, 最終的な詳細データを最初から表示する場合とほぼ同等の処理時間で途中段階 の画像表示を行うことができる.
ブラウザを使用してマウスで物体の移動(拡大縮小あるいは回転など)を行っている間は粗いデー タを用いて物体が表示され, リアルタイムな拡大縮小あるいは回転を行うと共に, マウスを静止させ た瞬間に次の段階のデータを用いた表示処理が始まる. こうすることにより, 表示物体の画質は徐々 に向上し, 最終的には最も詳細なデータを用いた高品質画像を得ることができる.
R232 G233 G255 L255
R232 G233 G255 L255
Reverse All Reset Rotation
X Y Z
Zoom
Reset +
-Change Color Color Reset OK Clear
Loaded Images dol̲one̲285.wrl WRL files
Input file Applet
dol̲one̲3i.ref dol̲one̲100.wrl
dol̲one̲150.wrl dol̲one̲200.wrl dol̲one̲250.wrl dol̲one̲280.wrl dol̲one̲285.wrl dol̲one̲50.wrl
Applet GraNet: Polyhedron.class
Applet started
図5-13 階層化データを表示するネットワークブラウザ