Beziex自由曲面バーチャル研究室
(C)1999-2012 EISHIN All Rights Reserved.

Beziex Ts (Home)
 & ダウンロード


Beziex LG (Home)
 & ダウンロード




マニュアル目次

1章 前知識
2章 新ベジェ境界曲面
3章 プログラムについて
4章 サンプル・アプリケーション
5章 自由曲面関数ライブラリ
6章 bxCore.h
7章 bxDB.h
8章 bxProc.h
9章 数値関数
10章 サンプル・ベースファイル



Copyright 1999-2011 EISHIN

10章 サンプル・ベースファイル

1. 概要

「4章 サンプル・アプリケーション」で述べた通り、当サンプル・アプリケーションは、
自由曲面Viewer & 変形体験ソフト
である。しかしながら、色々な形状を最初からサンプルプログラムに埋め込んでおいた場合、後で異なる形状のサーフェイスを表示したくなった時に、その都度プログラムを変更しなくてはならなくなる。
そこで当サンプルではベースファイルというものを設け、サンプル内にこのファイルを読み込むことにより、ベースファイル毎の形状を表示できるようにした。当ファイルはテキストファイルであり、拡張子は、
.bxb
となっている。
ただしこのファイルで設定できる幾何情報は頂点位置だけである。他の情報(ハンドルやコントロールバーの方向など)は、サンプルがこのファイルを読み込んだ時点で自動的に作られるようになっている。
またこのファイルには、曲面情報(1曲面毎のグループ)が存在しない。これは、bxDB.hのデータ配列と同じく、各種情報データが冗長となるのを防ぐためである。


2. 全体構造

当ファイルは大きく分けて、
1)  ヘッダ部
2)  メイン部
に分類され、この順に記述する。またファイル内のすべての行には、
コメント
を埋め込むことが可能である。


2-1. コメント

コメントは、ファイル内のすべての行に埋め込むことができる。ある行に、
; (セミコロン)
を記述すると、その後ろから改行するまでが、コメントと見なされる。


2-2. ヘッダ部

現バージョンのベースファイルのヘッダ部には必ず、
bxb 1.00
と記述する。このうち、「bxb」は識別子、「1.00」はバージョンNoである。


2-3. メイン部

その名の通り、メインとなる部分である。この構造については、次項で説明する。


3. メイン部の構造

3-1. 概略

メイン部は次のような構造になっている。

{
頂点情報0
頂点情報1
    ・
    ・
頂点情報(k-1)
}

これにより、k個の頂点の情報が記述されていることになる。3角曲面1枚だけであっても頂点は3個あるので、k≧3でなければならない。また曲面上の頂点ではない頂点、すなわち頂点だけで独立している状態のものを記述してはならない。


3-2. 頂点情報

頂点情報は次のような構造になっている。

{
頂点位置
ループ頂点/非ループ頂点フラグ
境界曲線番号の列(共有頂点上)
}


3-3. 頂点位置

頂点位置は、
{ x値 y値 z値 }

のように記述する(例:{ 1.0 1.0 -1.0 })。


3-4. ループ頂点/非ループ頂点フラグ

このフラグの部分には、
yes
no
のどちらかを記述する。「yes」の時はこの頂点がループ頂点、「no」の時は非ループ頂点であることを示す。


3-5. 境界曲線番号の列(共有頂点上)

ある形状に、m本の境界曲線があるものとする。この時、境界曲線番号は、0〜(m-1)となる。3角曲面1枚だけであっても境界曲線は3本あるので、m≧3でなければならない。また曲面上の境界曲線ではない境界曲線、すなわち境界曲線だけで独立している状態のものを記述してはならない。
今ここに、ある頂点からn本の境界曲線(n<m)が伸びているものとすると、その頂点情報内の「境界曲線番号の列(共有頂点上)」は
頂点と境界曲線の結び目の総数
と考えることができ、
h = 2m (mは、形状内の全境界曲線数)
でなければならない。また頂点情報内の境界曲線番号列すべてを通して、同じ数字の境界曲線番号は必ず2回出てくる。


4. 記述例

以下に、立方体(サイコロ)が膨らんで球状になっている形状を定義するベースファイルを示す。ベースファイルに記述する情報は、1辺が長さ2、中心が原点である立方体そのものである。
この例では、
k = 8(立方体の頂点数)
m = 12(立方体の境界曲線数)
nはすべて3(どの頂点からも3本の境界曲線が伸びている)
h = 24(頂点と境界曲線の結び目の総数)

であることが分かる。




;
; Beziex base file ( Cube.bxb )
;     (C)Copyright 1999-2001  EISHIN
;

bxb 1.00                        ; Header & Version

{                               ; MainSection
    {                               ; Vertex0
        { 1.0 1.0 -1.0 }                ; vertex position
        yes                             ; loopFlag...   loop:yes, unloop:no
        { 0 3 4 }                       ; RadialInfo... { edgeNo(a) edgeNo(b) ...}
    }
    {                               ; Vertex1
        { -1.0 1.0 -1.0 }
        yes
        { 1 0 5 }
    }
    {                               ; Vertex2
        { -1.0 1.0 1.0 }
        yes
        { 2 1 6 }
    }
    {                               ; Vertex3
        { 1.0 1.0 1.0 }
        yes
        { 3 2 7 }
    }
    {                               ; Vertex4
        { 1.0 -1.0 -1.0 }
        yes
        { 11 8 4 }
    }
    {                               ; Vertex5
        { -1.0 -1.0 -1.0 }
        yes
        { 8 9 5 }
    }
    {                               ; Vertex6
        { -1.0 -1.0 1.0 }
        yes
        { 9 10 6 }
    }
    {                               ; Vertex7
        { 1.0 -1.0 1.0 }
        yes
        { 10 11 7 }
    }
}                               ; End of MainSection






(C)1999-2012 EISHIN All Rights Reserved.