■■■ RoundEngine とは? ■■■




■ RoundEngine の内容

本プロジェクトでは、以下の2種類のミドルウエアを開発中である。
  • C++用 DLL
    C# ソース

この両ミドルウエアは、どちらも RoundEngine であり機能も同等であるが、開発目的が異なっている。そのため今後も、開発を同時進行させていく予定だ。


1. C++用 DLL

本ミドルウエアは、コードネーム「Beziex Pcc」で呼ばれており、以下の2種類のモジュールから成る。
  • a) BxPccSDK
    b) BxPccWxWithDx

まず「BxPccSDK」は "Beziex Pcc 本体" で、「曲面変換」と「ポリゴン変換」を受け持つ。そして「BxPccWxWithDx」は BxPccSDK によって生成された3DCD画像の表示などを行う GUI 部分だ。

「BxPccSDK」「BxPccWxWithDx」の両方とも C++ で書かれているが、「BxPccSDK」は DLL 形式で配布しており、ソースは公開していない (「BxPccWxWithDx」はソース公開している)。


2. C# ソース

本ミドルウエアは、コードネーム「Beziex Pcc C#」で呼ばれており、以下の2種類のモジュールから成る。
  • a) BxPcsSDK
    b) BxPcsWpfWithSdx

まず「BxPcsSDK」は "Beziex Pcc C# 本体" で、「C++用 DLL」版の "BxPccSDK" に相当する。また「BxPcsWpfWithSdx」は、「C++用 DLL」版の "BxPccWxWithDx" に該当している。

なお「BxPcsSDK」「BxPcsWpfWithSdx」は両方とも C# で記述されている。そしてコチラは、どちらもソースを公開することにした。


3. 「C++用 DLL」と「C# ソース」の使い分け

「C# ソース」の "BxPcsSDK" はソース公開しているので、「曲面変換」や「ポリゴン変換」の実装(ソースコード)を読むのに適している。独自技術のアルゴリズムについては別のページで文書公開しているので、それと照らし合わせることにより、全体像が見えてくるであろう。
ただし C# であることやその他の事情により、処理スピードは遅い。

「C++用 DLL」の方は C++ で記述されているので、ネイティブアプリと同等の処理スピードを実感できるはずである。

つまり「C++用 DLL」と「C# ソース」は、以下のように使い分けると良いだろう。
  • ・「C++用 DLL」で、処理スピードを体感する
    ・「C# ソース」で、実装(ソースコード)を読んでみる


4. 現状の処理方法について

「 C++用 DLL」の "BxPccSDK"、「C# ソース」の "BxPcsSDK" のポリゴン変換の一部は、本来 GPU上で処理されるべきものである。しかし 2013年9月現在では、まだすべての処理を CPU上で行っている。

「 C++用 DLL」の "BxPccSDK" については、将来的には GPU に処理を移したいと思っている。しかし現在はまだ開発途上ということでご容赦願いたい。
「C# ソース」の "BxPcsSDK" は、目的が実装(ソースコード)を見せることなので、すべて CPU上とした方が読み易いだろうと思っている。そのため GPU に処理を移行させる予定は無い。


5. BxPccSDK、BxPcsSDK の処理

BxPccSDK や BxPcsSDK の処理は以下の通りである。

1) Catmull-Clark の元となるポリゴン(ケージ)を読み込み、内部的に細分割したポリゴン頂点の情報を利用し、境界曲線(ベジェ曲線)と「ソース境界横断導関数(ソースCBD)」を作成する。

2) 境界曲線とソースCBDから「CBD用境界曲線投影平面」を作成する。

3) 境界曲線、ソースCBD、CBD用境界曲線投影平面から「Beziex 曲面 (2009版)」用のパラメータを求める。

4) 「Beziex 曲面 (2009版)」をテセレーション(ポリゴン変換)し、分割したポリゴンとして出力する。

またこれを図式化したものが下図である。




6. BxPccWxWithDx、BxPcsWpfWithSdx の処理

BxPccWxWithDx や BxPcsWpfWithSdx の処理は以下の通りである。

1) 「BxPccSDK (BxPcsSDK)」によってテセレーションされたポリゴンモデルを表示し、さらにこのモデルに対し回転させたり、分割数を変えたりする。

2) patchesファイルの読み書き、cageファイルの読み込みを行う。ちなみに現時点では、(ダウンロードファイル内に) cageファイルの添付は行っていない。




(C)2013-2016 EISHIN, All Rights Reserved.