
ImGui拡張機能とImguizmo、Implot、Imnodes
Evergineの最新バージョンでは、ImGuiライブラリとその優れた3つの追加モジュールのサポートを追加し、お客様のEvergineアプリケーション内でリッチなインターフェースとツールを実現できるようになりました。
Evergine.Bindings.ImGuiパッケージをプロジェクトに追加し、必要に応じてサポートされる拡張機能(Evergine.Bindings.Imguizmo、Evergine.Bindings.Implot、Evergine.Bindings.Imnodes)を追加することで、その直感的なAPIを使用して、小規模なツールコントロールを作成し、アプリケーションのさまざまな側面を可視化できます。

ところで、ImGuiとは一体何でしょうか?
まだご存じない方のためにご説明しますと、ImGuiは自己完結型のライブラリであり、グラフィックアプリケーションの内部に存在する精巧なインターフェースを作成します。これらは仮想世界の他のアイテムと同様にレンダリングされますが、2Dで表示されます。このようにして、アプリケーション内部のグラフィックエディタのようなソフトウェア向けに、複雑なインターフェース全体を作成することが可能です。

図1. Tracy ProfilerでのImGuiの使用例
Imguizmo、Implot、Imnodesについてはどうでしょうか?
ImguizmoはImGuiの拡張機能で、3Dオブジェクト用の特定のコントロールを作成できます。例えば、カメラ方向操作ギズモや、4×4行列の回転と移動をライブで行えるコントロールなどがあります。

Implotも拡張機能の一つで、ImGuiウィンドウ内に複数種類のプロットを作成でき、実行時に変化する変数を可視化するのに非常に役立ちます。

一方、Imnodesは、グラフを作成・可視化し、その接続やノードを変更するための便利なコントロールを追加します。

アプリケーションでの使用方法
まず、NuGetの依存関係を追加した後、シーンにImGuiマネージャーを登録する必要があります:

あとは、ImGui APIを呼び出して新しいコントロールのレンダリングを開始するコンポーネントを作成するだけです。詳細はドキュメントに記載されており、主な機能を説明する小規模なデモも公開しました。
当社のバインディングはImGuiの開発に合わせて最新の状態に保たれるため、古いバージョンに固定される心配はありません。現在、Windows(x86-x64)のみをサポートしていますが、ARM64およびLinuxプラットフォームへの対応を近日中に予定しています。さらに、近い将来、より多くの拡張機能を追加していく予定です。ぜひTwitter(@EvergineTeam)やYouTubeチャンネルをフォローしてください。