FK は、リアルタイム 3DCG を容易に記述するためのフレームワークです。
このような目的を持つシステムは有償、無償問わず数多く出回っております。
そういった一連のシステムの中で、FK が持つ特長を羅列してみます。
TOP ページにある項目に関しても、もう少し深く掘り下げていきます。
- コードのシンプルさ :
3Dのプログラムコードはとかく長くなりがちです。
これは、3Dアプリケーションが必然的に多くの要素を含んでしまうからです。
例えばウィンドウの生成や設定、画面の初期化に始まり、
座標変換やモデルの構築、
インターフェースやイベント処理を仕込むことなどです。
OpenGL や Direct3D といった 3D 用 APIや様々な 3D ライブラリでは、
そういった仕事を全てユーザの責任として押しつけてしまいます。
FK では、よく練られた構成によるクラスによる変数を制御していくことで、
効率よくアプリケーションを記述することができます。
(これに関しては改めて後述します。)
- 他のシステムとの親和性 :
多くのグラフィクスシステムや GUI 用ライブラリでは、
イベントドリブン型のスタイルを採用しています。
これは、アプリケーションにおける様々なイベント
(マウスやキーの操作など)に応じて、
決められた関数が呼び出されるというものです。
代表的なものとして GLUT などが挙げられますが、
このスタイルには以下の2つの欠点があると我々は考えています。
- どのような手順で呼び出されるかが、分析しないとわからない。
- 他のイベントハンドリングを持つシステムとの併用が困難。
特に後者は、致命的な問題を生じることがしばしばあります。
FK では、イベント駆動は自前ではあまりタッチせず、
その他のシステム(FLTK, Qtなど)で記述するという方針をとっています。
これにより、様々な GUI 用システムで利用することが可能であり、
実行される順番も把握が容易となっています。
- マルチプラットフォーム :
FK は数多くのプラットフォームやコンパイラに対応しています。
世間に出回っている多くの 3D ライブラリは、
そのほとんどが Windows のみしか対応していません。
それは、表示用の下位 API として Direct3D を採用しているからです。
FK は下位 API として OpenGL を採用しているため、
OpenGL が動作するプラットフォームでは FK が動くことになります。
現状の開発者が使用しているプラットフォームは
Windows (XP, Vista, Windows7), Mac OS X 10.6 (Snow Leopard),
そして FreeBSD 8.0 です。
(Windows においては下位 API として
Direct3D を利用することも可能です。)
もちろん、Linux での動作実績もあります。
(Linux や FreeBSD でのパッケージ提供は、
近い将来にサポートする予定です。)
- わかりやすい階層構造 :
3Dのプログラミングが難解な点の一つに、
様々な概念が階層構造をなしているということがあります。
これを一般に「シーングラフ」と呼びますが、
多くのシステムにおいてこのシーングラフは抽象的にデザインされています。
この抽象性が取っつきにくさを助長していると我々は考えています。
FK にももちろん階層構造を表す手段はあるのですが、
クラス同士の親子関係は極めて具体的です。
無駄な抽象性は排除し、プログラマが迷うことはありません。
- 高度な形状操作 :
リアルタイムな3Dのライブラリやツールキットは、
形状に対してできる操作が限られています。
例えば、頂点を移動することはできても、面を分割したり、
2つの形状を融合させるといった処理ができません。
これは、形状の「位相」という要素が固定されているからです。
FK では、2つの一般的な形状を表すクラスを準備しています。
そのうちの1つは高速性を重視したもので、
他のシステム同様大した形状操作はできません。
もう1つは「半稜線構造 (Half-Edge Structure)」
という高度なデータ構造を保持する形状クラスです。
このデータ構造は業務用CADでも用いられている堅牢で優れたもので、
高度な形状操作処理が必要な用途にはうってつけです。
- 優れた座標変換 :
3Dプログラミングでは、座標変換が大きな割合を占めます。
これを FK で実現するクラスが「fk_Model」です。
このクラスは大変強力なもので、
ユーザが指定したいと思う要望をほぼ網羅した機能を保持しています。
また、行列やオイラー角、
四元数(クォータニオン)を用いた制御も容易であり、
様々な理論を簡単に適用することができます。
fk_Model 自体が親子関係(階層構造)をなす事ができるので、
ボーンアニメーションも簡単に構築できます。
- 豊富なデータ形式サポート :
FK では様々な 3Dデータ形式の入力をサポートしています。
現時点でサポートしているのは
SMF, VRML2.0, STL, HRC, RDS, DXF, MQO(Metasequoia形式),
そして Direct3Dの X形式です。さらに、
X 形式においてはアニメーションを入力することも可能になっています。
BVH 形式のモーションデータを入力することもできます。
- 充実した文字列表示 :
近年のゲームコンテンツなどでは、
文字表示が重要な要素となっています。
FKでは、こういった用途を想定した様々な文字列表示方法を提供しています。
フォント表示では、任意の TrueType フォントが利用できます。
まだまだ一杯あります!
|
|
|