ビギナーのための曲面モデリングセミナー(第5回)

ビギナーのための曲面モデリングセミナーTop | 予告編 | 第1回 | 第2回 | 第3回 | 第4回 | 第5回 ]

第5回 位相と幾何の調和|ライノセラスでデザインしたモデルを他のシステムに渡すなら知っておいてほしい

BREPにおける超現実主義
普通にはありえない世界を描いた作品があります。

右の上の画は、サルバドールダリのThe Persistence of Memory(記憶の固執)、右の下の画はエッシャーのBond Of Union です。ぐにゃぐにゃの時計や、りんごの皮のような男女はご存知の読者も多いことでしょう。

BREP(ビーレップ:境界表現)と呼ばれるモデル形状を表す手法(第4回セミナー参照)でも「現実離れ」したモデルを作成することができます。

ただ、困ったことに「現実離れ」しているかどうかは、モデル作者の意図にかかわらず、モデルを受け取る側が判断します。
この辺りに、上流のモデリングシステムから下流のシステムへモデルがうまく渡らない原因があります。
モデルを作成する側では、ユーザが意識して「超現実主義」モデルを作ることもありますが、実際にはユーザのコントロールできないところでシステムが勝手に「超現実主義」モデルを作ってしまうこともあります。

今回のセミナーでは、受け手のシステムが理解できない可能性をもつモデル、つまり「超現実BREPモデル」について説明していきます。
モデリング担当者は、システム操作と関連付けてシステムが作成するBREPの状態を意識することで、後工程と相性のよいモデルを作成することができるでしょう。

もう一度サーフェスモデルとソリッドモデル
BREPの視点から「サーフェスモデル」と「ソリッドモデル」について考えてみます。
「サーフェスモデラー(張りぼて手法)」と「ソリッドモデラー(彫刻手法)」の区分をするものではありません。(セミナー予告編参照)いずれの手法で作成したモデルもシステム内部では、BREPとしてデータが保持されています。

BREPはパッチワークみたいなもので、物体表面をいくつもの端切れで被っています。
この端切れをFACE(フェース)と呼びます。
第4回セミナー参照)「サーフェスモデル」では、このFACEは縫い合わされていません。
つまり幾何的に「トリム曲面」(第3回セミナー参照)がばらばらに3次元空間に浮かんでいるだけなのです。
一方「ソリッドモデル」では、隣接するFACEがEDGE(エッジ)を介して縫い合わされています。
縫い合わされたFACE群をSHELL(シェル)と呼びます。すべてのFACEが縫い合わされてサッカーボールのようになったとき、つまりSHELLが閉じたとき、3次元空間のある体積を切り取ることができます。
閉じたSHELLはVOLUME(ボリューム)と呼ばれ、ソリッド(中身が詰まった)状態を表すことができます。(内側に気泡をあらわすSHELLをもつことも可能です)

ついでにマニホールドモデルとノンマニホールドモデル
BREPでは、「点」「線」「面」を「位相」要素を介して関連づけしています。
点は「VERTEX(バーテックス)」に、線は「EDGE(エッジ)」に、面は「FACE(フェース)」に1対1に対応します。どのEDGEの両端にどのVERTEXがあるか、どのFACEはどのEDGE群(LOOP)に囲まれているかといった隣接情報を適当に与えていくと、「超現実主義」モデルも作成することができます。(第4回セミナー参照)
物体表面から針ねずみのように線が飛び出している形状も可能ですし、厚さがゼロの板を組み立てたような形状も作成できます。これら形状は、CGや有限要素法の解析モデルには有効なのですが、製品として製造できるものではありません。
BREPとして数学的に許される形状表現すべてが、そのまま工業製品を表す形状になり得ないことはご理解いただけましたね。

ノンマニホールドモデルでは、厚さゼロの部分があります。
ソリッド(閉じたSHELL)を表すマニホールドモデルでは、すべてのEDGEは2つのFACEに隣接しています。
EDGEはFACEの縫い目なのですから当たり前ですね。開いたSHELLでは、1つのFACEにのみ隣接するEDGEがあります。このEDGEを「オープンエッジ」とか「フリーエッジ」と呼びます。

分解能
「小数を用いない」であなたの身長を測ることを考えます。
長さを測るということは、「基準になる長さ」の何倍かを求めることです。基準になる長さとして「cm(10mm相当)」を採用してみましょう。身長168とか175というような値を得ることができます。この例では身長差7も算出できます。
つぎに基準長さに「m(1000mm相当)」を採用してみます。小数を用いませんので、たいていの人は1か2のどちらかになってしまいます。男子高校2年生の平均身長は2mということになりかねません。では、基準長さに「mm(1mm相当)」を採用するとどうでしょう。
先の例で、身長168(cm)であった人は、実は1683で、175(cm)の人は1747かもしれません。差は64となります。

ここでは、長さを具体的にイメージし易いように単位をそえて数字を挙げました。コンピュータ内では、168とか123.4というのはただの「数値」です。
基準にする長さに小さな値を採用するほど、より細かく長さ(身長)を決定することができます。

この「基準にする(最小)長さ」は「分解能:resolution」と呼ばれる概念です。ほとんどの方は分解能についてもう知っています。ディスプレイだって800x600より1600x1200の方が細かな字を識別できます。1ピクセルが小さいわけですね。小数点以下2桁までが有効数字というのなら分解能は0.01となります。

トレランス
工業製品を表すBREPモデルでは、実際に加工できるものでなければなりませんから、自ずと「これ以上小さな長さは無意味」となる長さが決まります。
コンピュータ上では、「無意味となる小さな長さ」をさらに相当小さく設定することができます。
ただあまりに小さくすると製品に反映されないところで計算の手間ばかり増えてしまうことになります。

「無意味となる最小長さ」がBREPモデルの分解能に相当します。
この分解能は「トレランス」とも呼ばれます。
トレランスは、「幾何計算のためのトレランス」と「位相維持のためのトレランス」があります。 トレランスの設定は、「絶対値」を与えるのが一般的ですが、モデル全体の大きさを考慮して「相対値」を与えるシステムもあります。
トレランスの値は、想定している「単位系」に依存します。コンピュータ固有の「実数のトレランス(計算精度)」があることもお忘れなく。

実数のトレランス
コンピュータの中では、x、y、zという座標値だけでなく、たくさんの係数が実数として扱われます。この実数を表すのに何桁使えるか(有効桁)が、このトレランスに相当します。(普通はトレランスとは言いませんが、ここでは便宜上トレランスの1つとみなします)
有理数や無理数を用いないで、山ほど掛け算や割り算を繰り返してもほぼ正しい答えを得るためには、桁数が多い方が有利です。
「単精度」では6桁、「倍精度」では15桁程度です。15桁という精度は、たまたま長さを表すとすれば(これが大切!)トレランス値(分解能)0.000000000000001mmになります。

幾何計算のためのトレランス
・同一点トレランス 2つの点が離れていないとみなす最大距離
 点と線(点と面)(線と面)が離れていないとみなす最大距離
 座標を表す実数値の差異を見るトレランスではありません!
・近似トレランス ある曲線や曲面を別の数学表現に置き換える時の最大誤差
・角度トレランス 2つの方向が、平行とみなす最大角度差
 連続する曲線や曲面に折れがないか判定する場合の基準値

位相維持のためのトレランス
・同一点トレランス 2つの点が離れていないとみなす最大距離
・マージトレランス 幾何計算上はある大きさ離れているが、位相的に隣接とみなす最大距離
 2FACE間の距離やトリム曲面のベース曲面に対する輪郭線の浮き

絶対値によるトレランス例
・同一点トレランス 単位系をmmとして0.001
・マージトレランス 単位系をmmとして0.01
 (一般には同一点トレランスの10倍以上)

相対値によるトレランス例
・同一点トレランス モデル全体の大きさの 1000分の1

同一点トレランスを用いる場面
ほんのわずかに離れた(0.0000000001mm)2つの点を考えます。
座標を倍精度の実数で表すシステムでは、この2点を区別することができます。この2点の間に線分を作成してみましょう。線分の長さは、0.0000000001mmとなります。同一点トレランスが0.001mmであるなら、この線分は「点に縮退」していることになり、線分として存在することができません。

同一点トレランスは「2つの要素」に言及するとき意味を持ちます。
例えば、2つの曲線の交点を求める場合や、2つの曲面の交線を求める場合に意味を持ちます。
交点は、「本当の交点」ではなくそれぞれの曲線から最大で同一点トレランス相当離れている可能性があります。
交線は、「本当の交線」ではなく、それぞれの曲面から少し離れている可能性があります。

多くのBREPモデリングシステムでは、点、線、面が単独で浮かんでいる限り、実数のトレランスが位置の分解能になります。
既にある点、線、面から新しく点、線、面を求めるような幾何計算の場面で「同一点トレランス」が適用されます。

くどいようですが、「同一点」という表現で、実数値(座標)を区別することと、モデルとして意味のある距離(長さ)を区別することを混同しないでください。

トレランスは、モデリングシステムごとに一番具合のよい値が設定されています。逆にいうとあるシステムのあるトレランスで作成されたBREPモデルは、他のシステムでは具合が悪いこともあります。

ライノセラスのトレランス
ライノセラスでは、4つのキーがあります。

・単位系
mm系のつもりで作ったモデルをインチ系で解釈されると実物のサイズが全く異なってしまいます。ライノセラスではこのようなトラブルを避けるため、事前に単位系を宣言しておくことができます。

・絶対トレランス
上記の説明では、「同一点トレランス」に相当します。 例えば、2つの曲面の交線を求めることを考えます。幾何計算では「交線」を表す「曲線」を求めます。
「交線」は2つの曲面から全く離れていません。求められた「曲線」は、(神のみ知る)「交線」に近い形を表していますが、最大このトレランス相当離れているかもしれません。
言い換えると「曲線」は、このトレランス相当2つの曲面から離れているかもしれません。

・相対トレランス
幾何計算の途中では、与えられた絶対トレランスより小さな値を利用したい場面があります。
このような場合、計算対象となる線や面の大きさから相対的にトレランスを決定します。

・角度トレランス
ライノセラスでは、ユーザが直接指定することができます。

ライノセラスでは、モデルの精度を甘くする(次節参照)「位相維持のためのトレランス」という概念はありません。ライノセラスで最後まで作成できたモデルは、精度よいものと考えられます。

位相と幾何の調和
BREPでは、概念的に位相要素と幾何要素を区別して考えます。
システム内のデータ構造単位(エンティティ)が区別されているかどうかは問いません。
位相要素は幾何要素の隣接関係を記述する代理人みたいなものです。
位相要素によって隣接しているとされた2つの幾何要素、例えば曲面と曲線は、寸分違わず一致していなければならないのですが、現実にはそのような曲線・曲面を求めることは極めて困難なのです。
妥協案として少しだけ離れていたりオーバーラップしている状態を許します。少しだけ許した距離が「位相維持のためのトレランス」です。

「位相維持のためのトレランス」を考慮しますと、VERTEX、EDGE、FACEはぼんやり膨らんだ形状とみなせます。
VERTEXに対応する幾何要素は「点」です。膨らむと「球」になります。
EDGEは「曲線」ですので「パイプ」になります。
FACEは「曲面」ですので「マットレス」になります。位相として隣接しているとされる部分では、「球」と「パイプ」あるいは「マットレス」が必ず交わります。これが「位相と幾何が調和している」状態です。

「点」「線」「面」をそのままで、「位相維持のためのトレランス」をより小さくすると「球」「パイプ」「マットレス」が隣接部分で交わらなくなります。
この状態では、位相はくっついていると言っているのに、幾何的には離れていることになります。 つまり「位相と幾何が矛盾している」ことになります。

こんなBREPモデルは要注意!
位相と幾何の調和という立場からみて問題になるBREPモデルを紹介します。
ここでは、「位相維持のためのトレランス」をマージトレランスと呼ぶことにします。

1. マージトレランスより大きな隙間・オーバーラップを持つモデル
点・線・面を球・パイプ・マットレスに見立てても、位相に反して幾何形状が離れている(一致すべき位置で一致しない)ことになります。明らかに位相と幾何の矛盾です。一般にマージトレランスを厳しくすると起こります。マージトレランスの緩いシステムで作成したBREPモデルを厳しいシステムに読み込むとこうなります。

2. マージトレランスより小さなEDGEをもつモデル
マージトレランスより小さな長さのEDGEは、モデル中に存在することができません。
なぜなら点に縮退しているとみなされるからです。
BREPモデル中のEDGEは、EDGEの両端に球があることを考えると、最低でもマージトレランスの2倍の長さが必要です。
マージトレランスの厳しい(小さい)システムで作成したBREPモデルを緩いシステムに読み込むとこうなります。

データ変換とマージトレランス
というわけで、マージトレランスを大きくすると微小EDGEが存在できなくなり、小さくすると隙間やオーバーラップが検出されます。
多くのCADシステムでは、他のシステムで作成されたBREPモデルを受け入れるため、大き目のマージトレランスを設定できるようになっています。
その際、縮退とみなされるEDGEやFACEは無視するしくみになっています。BREP全体で共通のマージトレランスを用いる代わりに、個々のVERTEXやEDGE毎にマージトレランスを設定するシステムもあります。

3. スパイク・カット形状のFACEをもつモデル
マージトレランスを大きくすると、スパイクやカット部分の形状が自己交差とみなされます。

4. ノンマニホールドモデル
マージトレランスより、形状の薄い部分が、肉厚ゼロとみなされます。

5. 位相情報を外したモデル
IGES経由でBREPデータを渡すと「ソリッドモデル」が「サーフェスモデル」になることがあります。IGESの規格としては、マニホールドソリッドも記述できるのですが、ほとんどのシステムでは、トリム曲面(タイプ144)の集合を出力するだけで位相要素までは出力されないようです。筆者としてはもったいない気もしますが、BREPという概念が統一されていない現状では仕方ないのかもしれません。

例によって感想質問の連絡先
このセミナーのページで掲載した概念、文章、挿し絵など一切の責任は、筆者にあります。
質問、意見は筆者まで。決してアプリクラフト社へはねじ込まないでください。

株式会社エムシースクウェアド 代表 大野敏則
 TEL:053-450-7266 FAX:053-450-7288
info@mc-squared.co.jp

【参考文献】
・Rhinoceros オンラインヘルプ Tools/Options/Units
CAD・CG技術者のための実践NURBS
 三浦曜、望月一正、工業調査会、ISBN4-7693-5124-0
・JAMA/JAPIA PDQガイドブック(基準編) JAMAEIC003
 日本自動車工業界、電子情報委員会、CAD部会
ソリッドモデリング CAD/CAMのための基礎技術
 千代倉弘明、工業調査会、ISBN4-7693-2052-3
3次元CADの基礎と応用
 千代倉、鳥谷、共立出版、ISBN4-320-02539-3