three.js勉強日誌 【No.8】
モデリング1
2015年4月3日 NO.8
形状モデル
多面体(ポリゴン)の形状を表現する方法がいくつか存在します。 その方法を形状モデルと呼ぶのですが、モデルなので多角形(ポリゴン)をどのように表現するかという考え方なのです。
ワイヤーフレームモデル
ワイヤーフレームモデルは図形の点と点を結ぶ辺のみで立体を表現するモデルのことです。 必要なデータは線のみであるので、データ量が少なくてすみます。 そののためデータへのアクセスが高速に行えるといったメリットがあり、建築物など線要素がおおいものを表示するのによく用いられます。 しかし、線だけでは、どこが面なのかがわかりません。
サーフェスモデル
サーフェスモデルというのは、ワイヤーフレームモデルに面の情報を付加したものです。 そのため、どこが面という情報が付加されました。 しかし、どこが物体の内部なのかという情報が無いため体積の計算等をすることができません。 three.jsでは、形状モデルはこのモデルがデフォルトで設定されています。 しかし、three.jsでは物体の内部を判断するために面に裏表をつけています(デフォルトで、設定え無効にできます。) すなわち外部からみると形がみえて、内部からみると形がみえないといったように内部外部を判断させています。
ソリッドモデル
サーフェスモデルに物体の内外を区別した情報をもって中身のつまったモデルのことです。 中身がつまっていますので、切ると断面が現れます。natural scienceの他のブログでまとめられている有限要素法なんかもソリッドモデルモデルにあたります。
ソリッドモデルの形状表現
ソリッドモデルには、いくつかの表現方法が存在するので紹介していきます。
境界表現
頂点、線、面の接続情報(どことどこがつながっているのかなど)の記憶を保持することによって表現するというものです。 この接続関係を表すものを位相とよび、また頂点のデータを幾何と呼びます。 位相と幾何をもちいてポリゴンを表現するため、直感的にデータを生成することができます。3次元CADでは、この境界表現をベースにしているそうです。
CSG表現(Constructive Solid Geometry)
少し難しい表現方法であるので、近日中に例の図をのせます。 CSG表現法というのは、プリミティブと呼ばれる基本立体に集合演算(高校数学の集合にあたるものの立体版)をもちいて様々な立体を表現するというものです。 集合演算には、和と差と積がありました。 説明のため互いに交わっている立体A、立体Bがあると想像してください。 立体Aと立体Bの和というのは和集合のことで、AまたはBの集合を表します。 立体Aと立体Bの積というのは論理積のことで、AかつBの集合を表します。 立体Aと立体Bの差というのは、立体Aから立体Bの重なっている部分を引いたA-Bの図形と立体Bから立体Aの重なっている部分を引いたB-Aの図形のことです。 この集合演算を用いることで複雑な形を表現することができます。
スイープ表現
スイープ表現というのは、立体の断面を表す2次元図形を軌道にそって移動した軌跡として形状を表現する方法です。後日に説明するEuler操作を学べば様々な物体を生成する事ができます。回転体などもこのスイープ表現の代表格です。