FK の紹介
FK (Fine Kernel Toolkit) は、Windows や Mac、あるいは Linux や FreeBSD など主要なプラットフォームで同一のコードを用い開発ができる、リアルタイム3DCG用のライブラリです。開発言語として C++ 版と、C#、F#、Visual Basic といった .NET Framework 対応の言語を用いることができます。
FK の特徴
FKは元々研究開発支援を目的としたライブラリですので、ゲームなどのコンテンツ制作支援を目的とするライブラリやフレームワークとは若干異なった特性を持っています。以下にそれを列挙していきます。
マルチプラットフォーム
FK C++版のコードは、(機種依存の機能を用いない限りは)同一のコードが Windows、Mac、LinuxやFreeBSDなどのUNIX系OSのいずれでも変更せずにビルドし実行することができます。また、「CLI版」という .NET Framework に対応した版もあり、C# や F# といった .NET 言語上での開発も可能です。CLI版はC++版に対し、プロパティの積極利用などより .NET 言語での開発が容易となるように設計されています。
他システムとの親和性
FKは元々研究での利用を念頭に設計されているため、他システムとの親和性を重視しています。例えば OpenGL コードの直接記述やGLSLによるシェーダー記述、OpenCV, ARToolkit、CUDAを利用するような場面においても、他のシステムと組み合わせることが容易です。また、GUIライブラリについても、FLTK や Qt など様々なシステムを選択することができます。
高度な形状操作
FK では、形状を表す方法として通常のインデックスフェースセットの他に、「半稜線構造 (Half-Edge Structure)」 という高度なデータ構造を保持する形状クラスがあります。このデータ構造は業務用CADでも用いられている堅牢で優れたもので、点・線・面といった要素の動的な追加や削除などが可能となっています。
優れた座標変換
3Dプログラミングでは、座標変換が大きな割合を占めます。これを FK で実現するクラスが「fk_Model」です。このクラスは大変強力で、ユーザが指定したいと思う要望をほぼ網羅した機能を保持しています。また、行列やオイラー角、四元数(クォータニオン)を用いた制御も容易であり、様々な理論を簡単に適用することができます。fk_Model 自体が親子関係(階層構造)をなす事ができるので、ボーンアニメーションも簡単に構築できます。
他のライブラリとの比較
FKは歴史的にはかなり古い部類のライブラリであり、後発のライブラリ(例えば Siv3D など)と比較するとやや重厚な印象を持つのではないかと思われます。コンテンツ制作においては、他のライブラリの洗練された設計がとても有効に働くと思います。一方、研究開発などではFKのようなライブラリはクラスの各機能が助けとなるのではないでしょうか。また、FKはゲームそのものだけでなく、様々なゲーム用ツールを作成するためのライブラリとして高い機能を発揮します。
もっと詳しく知りたい人は、まずはFK Webページを参照してみて下さい。また、以下のタイトルで論文としてもまとめていますので、研究や教育での活用事例について知りたい人は参照してみて下さい。この論文中で「FK Performer」というモーション制作ツールが紹介されていますが、それ自体もFKで作成されています。また、FK Performer で作成したモーションは FK 中で容易に制御できます。