|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Beziex Ts (Home) & ダウンロードへ Beziex LG (Home) & ダウンロードへ マニュアル目次
Copyright 1999-2011 EISHIN |
1章 前知識 1. ベジェ曲線 1-1. コンピュータ上の曲線 コンピュータのディスプレイに表示される線には直線と曲線がある。このうち直線については説明するまでもないであろう。 対して、コンピュータ上の曲線には
2)は一般的に複数のパラメータを用い、それを数式に当てはめることによって導かれる曲線を描画するものである。しかし通常、ユーザーが描画ソフト上で数式を直接目にすることはない。数式は、ソフトのプログラム内に隠されているからである。 このあと曲線についてもう少し説明するが、以後、曲線といえば2)を示すこととする。 1-2. 曲線の種類 この曲線を表す数式には数多くの種類がある。そして数式内で用いられるパラメータを決定する場合を考える時、その方法として次の3通りがある。
またユーザーが決定可能なパラメータには、
そしてb2には、次のようなものがある。
今ここで、一般的なソフトの曲線描画法についてA1〜2、B2〜3、C1〜3を用い検証してみよう。 入門用ソフトによく見られるのはB2でC1の曲線である(表面上はA1であるが、a2が含まれている可能性有り)。この曲線は一見簡単であるが、思ったように形状を決定するのは困難である。 次に最近(曲面として)流行しているNURBS曲面の基本であるNURBS曲線について述べてみる(NURBS曲線は2次元ソフトではあまり見かけないが)。この曲線はA2で、B3、C2の構造を持つものがほとんどである。この曲線でb1に該当するパラメータはウエイトなどと呼ばれているもので、a3またはa2となっている。このNURBS曲線はc2(制御点)のみで設定するソフトが多いので、頂点を直接移動できるものに比べ、曲線形状を把握しにくいのが欠点である(好みにもよるが)。 そしてA1でB2の特徴を持ち、C3(頂点とハンドル)を用いるのがベジェ曲線である。このベジェ曲線については次項で述べることにする。 このA1〜2、B2〜3、C1〜3といった種別は曲線だけでなく、後述する曲面にも当てはまる。そしてこれが3次元モデリングソフトの使い勝手に強く影響してくるのである。 1-3. ベジェ曲線の特徴 前項にも述べた通り、ベジェ曲線は(曲線の両端である)2個の頂点と、そこから伸びる2本のハンドルによって曲線を定義する(ものが多い)。このベジェ曲線はAdobe IllustratorやMacromedia FreeHandの核となる部分であり、2次元ソフトの主流曲線であると言っても過言ではない。 ベジェ曲線が主流と成り得た最大の理由は、
1-4. ベジェ曲線の連結 図形(の輪郭)を描画する場合、一本のベジェ曲線だけで表現できる場合はほとんどない。通常、複数のベジェ曲線を連結させて表すことになるが、この時、隣り合うベジェ曲線が滑らかに繋がっている必要がある場合が多いであろう。これを満たすためには、
2. 自由曲面 2-1. コンピュータ上の曲面 コンピュータのディスプレイに表示される面にはポリゴンと曲面がある。このうちポリゴンは一般に表面が平面のものを差す。 コンピュータ上で曲面を表すには、
2-2. 曲面の種類 曲面の中で代表的なものには、次の2つがあげられる。
次にベジェ曲面についてであるが、曲線の延長でいけば、これが主流になってもおかしくないはずである。しかし現実にはNURBS曲面が全盛となっている。これはベジェ曲面には、
2-3. ベジェ曲面の構造 ほとんどのベジェ曲面を扱うソフトは、4本の境界曲線をベジェ曲線で表現する、といった形態を取っている。なおこの境界曲線とはポリゴンでいうところの辺に相当する。この形態とは、すなわち4個の頂点と8本のハンドルだけでベジェ曲面を表しているということである。 ここで述べるベジェ曲面は、厳密には「3次テンソル積ベジェ曲面」と呼ばれるものである。実はこの曲面、4頂点と8ハンドルの他に曲面内部に4個の制御点を持っている。そしてこの4制御点のせいで、ベジェ曲面がNURBS曲面より劣るものになってしまったのである。 いま隣接する曲面どうしの境目にある境界曲線を共有曲線と呼び、共有曲面上のハンドルを共有ハンドルという。そしてこの共有曲線の両端を共有頂点ということにする。すなわち2枚の曲面のみが存在し、それが隣接している場合は、1本の共有曲線と2個の共有頂点が存在する。言い換えると1個の共有頂点から1本の共有曲面(と2本の非共有曲面)が伸びている、ということになる。またこの時、1個の共有頂点から3本のハンドル(1共有ハンドル+2非共有ハンドル)が伸びているのが分かる。 それに対し、傘のような曲面の場合、傘の骨が共有曲線、芯を共有頂点と考えることができる。この時は、1個の共有頂点から複数本の共有曲線が伸びていることになるだろう。そして1個の共有頂点から複数本の(共有)ハンドルが伸びていると考えることもできる。 ここで2枚の(隣接)曲面のみが存在する場合について、もう少し詳しく述べることにする。すなわち3本のハンドルが伸びているわけであるが、すべてのハンドルが同一平面上にある場合、この平面を
3曲面以上の場合も、上記の2曲面のような簡略化が可能で、同様に「頂点平面」、「直線化ハンドル対」について考えることができる。ただし
2-4. ベジェ曲面の欠点 いま隣接する曲面どうしを滑らかにつなげたまま、自由に曲面を変形させる場合を考える。そしてまず最初に前項で述べた4制御点を、ユーザーが設定するものとしよう。この場合、ユーザーは自由に曲面変形できるが、曲面どうしの滑らかさは確実に損なわれる。人間技では、この両立はほとんど不可能なのである。ベジェ曲線の場合、ハンドルを一直線にすれば滑らかさが保たれる。しかしベジェ曲面の場合、直感的な理解を超えた条件を満たさなければ、滑らかさは損なわれるのである。 そこで多くのベジェ曲面系ソフトは、4制御点の位置をある簡単な法則で決定している(その法則は専門用語で、「ツイストをゼロにする」という)。つまりユーザーに4制御点を操作させないようにしているのである。そのため多くのベジェ曲面系ソフトが、4頂点と8ハンドルだけで操作しているように見える。 ツイスト・ゼロのベジェ曲面は、共有頂点が「直線化ハンドル対」状態となってさえいれば、常に曲面どうしを滑らかに接続することが可能である。逆にいえば、「非直線化ハンドル対」が存在したり、共有頂点の回りの曲面が5枚以上の場合は、滑らかでないことがある、ということである。「直線化ハンドル対」状態であることを常に強いられることは、自由度を減少させ、形状作成に大きな制限を与えることになる。 また曲面内部の膨らみ具合は、4制御点で制御している。つまり自動的に4制御点を決定しているということは、膨らみ具合を制御できないということを意味する。よって、
例えば、立方体(サイコロ)を膨らませて(近似)球を作成する場合を考えてみよう。すなわち6枚の曲面を滑らかに繋ぐわけである。これをベジェ曲面で行おうとすると、
結論として、このような理由からベジェ曲面は主流になれなかったのだろう、と推察できる。 2-5. ベジェ境界曲面 このように(3次テンソル積)ベジェ曲面の使い勝手が悪いのは、ベジェ曲線の利点以上の欠点を持っているからである。しかしベジェを利用した曲面が、3次テンソル積ベジェ曲面以外にも存在するとしたらどうであろうか。もしかすると、その曲面はベジェ曲線の利点のみを受け継いでいるかも知れないのである。 さて前々項で、ベジェ曲面の4本の境界曲線はベジェ曲線であると書いた。ここで、このように境界曲線がベジェ曲線であるような曲面を総称して、
このベジェ境界曲面の自由度をあげるためには、前項で述べた通り、
またa2を満たすということは、この曲面の内部に複数の制御点を持たなければいけないことを意味する。この制御点は(ベジェ曲面のように)4個と決まっているわけではなく、例えばグレゴリー曲面では8個ある。この8個の制御点は、4本の境界曲線に附随する形で2個づつ存在している。言い換えると、各制御点はある1境界曲線にのみ影響を及ぼすことになる(境界非共有制御点)。 実は、制御点が「境界非共有制御点」である場合、隣接曲面との滑らかさを保つのが容易になる(専門的には、両立性補正が可能になる、という)。例えば2境界曲線に影響を及ぼす制御点の場合を考えると、一方の境界曲線を共有曲線とする隣接曲面と滑らかに繋がるように制御点を動かすと、他方の隣接曲面とは折れ曲がって繋がり、逆を行っても同様になる、といったことが起こりうるからである。 さらにこの制御点は当然ユーザーが操作することになるので、視覚的であることが望ましいであろう。 というわけで、当研究室ではa2を満たす制御点は
こうしてBeziexLabは、理想の「ベジェ境界曲面」を考案すべく開設されたのである。 2-6. n角ベジェ境界曲面 前項までは4本の境界曲線からなる曲面についてのみ考えていた。今ここで、これを4角ベジェ境界曲線と呼ぶことにする。 しかしながら現実には、4角曲面だけですべての形状を表すことはできない。例えば、地球儀の隣り合う緯線と経線に囲まれる部分を1個の曲面とすると、北極、南極の部分では3角曲面になることが分かるだろう。 そこでn本のベジェ曲線(n≧)の境界から成る曲面が表現できれば、より使い勝手が良くなる。特に3角ベジェ境界曲面は必須である。 専門的な話となるが、このn角曲面を表現する方法として、n個の4角曲面を(プログラム内部で)滑らかに隣接させ、それを1個の曲面として見せ掛けるというやり方がある。この方法は、(n個の4角曲面の)接続アルゴリズムが良くないと、結果として不自然な曲面になる危険性を持っている。 そこで当研究室では、なるべく上記の方法は取らず、あくまでも1個の曲面によって表現することにした。そして3角ベジェ境界曲線については、これが可能であることが分かった。5角以上は今後の課題となっている。 2-7. 3角ベジェ境界曲面 一般的にベジェ曲面やNURBS曲面で3角曲面を表現したい場合、どうしているのであろうか。実は、1本の境界曲線の長さをゼロにして疑似的に3角曲面に見せ掛けているものが多い(専門用語で縮退と呼ぶ)。 ここで、長さがゼロの境界曲線上にある頂点を縮退頂点ということにしよう。この縮退という現象は、それ自体悪いことではない。しかし通常、縮退頂点と非縮退頂点は性質(例えば頂点附近の自由度)が異なってしまうことが多く、使い勝手に問題が出てくる。 このことから、3角ベジェ境界曲面は
(C)1999-2012 EISHIN All Rights Reserved.
|