Evergine Studioの新機能

今回のリリースでは、Evergine Studioのユーザーエクスペリエンスを大幅に改善しました。この記事では主な変更点をご紹介します。日々のEvergine Studioプロジェクトでの作業が少しでも快適になれば幸いです。

シーンを開いた状態のEvergine Studio 2026.11.4.444

Evergine Studioからビヘイビアと物理演算をシミュレート

Evergine Studioに、エディター内でビヘイビアと物理演算をシミュレートするPlay Modeが追加されました。これは最も要望の多かった機能の一つです。これまでは、シーンの動作を確認するにはアプリケーションをビルドして起動し、問題があればエディターに戻って修正する必要がありました。今後は、複雑な物理シーンを設定したり、実装したビヘイビアの動作を確認したりすることが、Evergine Studioからワンクリックで行えます。

シーンビューポートの上部バーに、3つの新しいボタンが追加されました。

シーンビューアーでのPlay、Pause、Stepによるシーン実行

Play Modeはアセットから構築されたシーンのコピーを実行するため、編集中のシーンが変更されることはありません。Stopを押すと、Playを押す前の状態に完全に戻ります。なお、実行されるのはシーンアセットであり、アプリケーション全体ではないことに注意してください。Sceneクラス(例:MyScene.cs)やApplicationクラスに追加したコードは実行されません。シーンにアクティブなカメラがない場合、ビューポートには黒い画面ではなく通知が表示されます。

新しいボタンを配置するため、シーンツールバーも再編成しました。以前は3つのスナップオプション(移動、回転、スケール)が常に表示されていましたが、現在は選択中の変形ツールに対応するものだけが表示されます。

以前のリリース:

以前のバージョンのシーンツールバー。3つのスナップオプションが表示されている

新しいリリース:

新しいバージョンのシーンツールバー。単一のスナップオプションとPlay、Step、Stopボタンが表示されている

新しいマニピュレーター

シーンビューポートでエンティティを移動、回転、スケールするすべてのマニピュレーターも再構築しました。多くのエンジンやツールで採用されているものと同じImGuizmo](https://github.com/CedricGuillemet/ImGuizmo)ライブラリの実装を使用するようになっています。新しいマニピュレーターは応答性が向上し、掴みやすくなりました。また、移動中に移動距離を表示するなどの改善も加わっています。

新しいマニピュレーターでエンティティを移動。移動距離が表示される

回転中には回転角度が表示されます。

新しいマニピュレーターでエンティティを回転。度とラジアンで回転角度が表示される

スナップ、ピボット、複数選択も引き続き機能するため、複数のエンティティを一度に変形できます。

マニピュレーターと共に、同じくImGuizmo由来のView Cubeも導入されました。ビューポートの隅にカメラの向きを表示し、その面をクリックすると正面、上面、側面などのビューに切り替わります。シーン編集のためのビュー設定が大幅に高速化されました。

ビューポート隅のView Cubeでビューを変更

ピクセルパーフェクトな選択

Evergine Studioビューポートのもう一つの大きな改善点が選択システムです。これまでエディターは、簡略化されたボリューム(各モデルにフィットしたボックスや球)でエンティティを選択していたため、オブジェクト周辺の空きスペースをクリックしても選択されたり、大きなオブジェクトの背後にある小さなオブジェクトを選択するのが困難でした。選択がピクセルパーフェクトになり、カーソル下に見えているものを正確に選択できるようになったため、複雑なシーンでの作業精度が格段に向上しました。さらに、選択されたエンティティはそのシルエットにオレンジ色のアウトラインが描画されるため、どれが選択されているか一目でわかります。

ピクセルパーフェクトな選択:各オブジェクトをクリックすると選択され、オレンジ色のアウトラインが描画される

エンティティ階層のルートを選択すると、その子や孫に青色のアウトラインが描画されます。これは、それらが選択エンティティではないものの、適用する変形がそれらにも影響することを示します。

選択された階層:オレンジ色のアウトラインのルートのティーポットと、青色のアウトラインの子の円錐と円柱

選択をより快適にする細かな改善点もいくつかあります。

アウトラインの色、幅、非表示部分の不透明度、ホバー時のハイライトは、Preferences > Viewport で設定します。

PreferencesダイアログのViewportセクションにある選択アウトラインのオプション

プロジェクト設定からサービスを管理

Evergineにおいて、サービス(ServiceまたはUpdatableServiceから派生するクラス)は、コンポーネントやビヘイビアのアプリケーションレベル版です。プロジェクト内のシーンに依存しないグローバルなロジックや状態が必要な場合に使用します。これまでは、Applicationクラス内でコードで登録する必要がありました。今回のリリースでは、Evergine Studioのプロジェクト設定パネルからサービスを管理できるようになり、コードを記述する必要はありません。

新しいServicesセクションでは、プロジェクトのサービスを追加、削除し、プロパティを設定できます。プロパティパネルはEntity Detailsと同じエディターを使用するため、コンポーネントで既に使用しているRenderProperty属性がサービスでも同様に機能します。

サービスとそのプロパティが表示されたプロジェクト設定のServicesセクション

設定はプロジェクトと共に保存され、サービスは生成されたコードを通じてアプリケーション起動時に登録されます。既にApplicationクラスで同じ型のサービスを登録している場合、そちらの登録が優先されるため、既存のプロジェクトはこれまで通り動作します。内部利用向けのサービスは、[Discoverable(false)]属性でリストから非表示にできます。

プロジェクトのビルド時間が半分以下に

エディターのビルド時間にも取り組みました。Evergine Studioは、プロジェクトを以前のバージョンの半分以下の時間でビルドするようになりました。Studioはプロジェクトを開く際にビルドを行うため、開くたびにその効果を実感できます。

空のプロジェクトと車両物理サンプルの2つのプロジェクトで時間を計測しました。

プロジェクトシナリオ以前のバージョン新しいバージョン短縮率
空のプロジェクトクリーンビルド8.90 秒3.73 秒58%
空のプロジェクト変更なし8.13 秒3.04 秒63%
空のプロジェクトC# 変更8.06 秒3.06 秒62%
VehiclePhysicsSampleクリーンビルド10.19 秒4.41 秒57%
VehiclePhysicsSample変更なし9.49 秒3.63 秒62%
VehiclePhysicsSampleC# 変更9.42 秒3.69 秒61%

この改善はビルドの起動方法によるものです。

アセット管理の改善

このリリースではアセット管理も大幅に変更され、アセットの検索やコンポーネント・エンティティへの割り当てがより簡単かつ直感的になりました。

アセットのドラッグ&ドロップ

すべてのアセットピッカーがドラッグ&ドロップに対応しました。Assetsパネルから任意のアセットをドラッグし、Entity Detailsで必要なプロパティにドロップできます。たとえば、マテリアルをMaterialComponentに、フォントを3Dテキストに、サウンドをSoundEmitter3Dにドロップします。これまでもドロップダウンリストで設定できましたが、ドラッグの方がはるかに快適で高速です。アセットビューアも同じプロパティエディタを使用するため、マテリアルビューアでテクスチャをマテリアルにドロップすれば、結果をすぐに確認できます。

AssetsパネルからエンティティのMaterialプロパティへマテリアルをドラッグ

コンテンツの整理も容易になりました。Project Explorerツリーでフォルダのドラッグ&ドロップがサポートされ、複数同時に操作できます。また、アセットをツリー内のフォルダにドラッグして移動することも可能です。

エンティティのドラッグ&ドロップ

Scene Hierarchyパネルからエンティティをドラッグし、Entity Details内のコンポーネントが持つエンティティプロパティにドロップできるようになりました。特に物理シーンの設定で役立ちます。あるボディを別のボディにリンクする拘束のConnected Bodyプロパティは、対象のエンティティをドラッグして設定します。必要に応じて、ピッカーでエンティティを名前で検索することも可能です。

Scene Hierarchyからエンティティプロパティへエンティティをドラッグ

独自のコンポーネントでは、Entity型のプロパティで利用できます。RenderPropertyAsEntity属性により、特定のコンポーネントを持つエンティティのみに受け入れを制限できます。

public class Follower : Behavior
{
    // Only accepts entities with a Transform3D component
    [RenderPropertyAsEntity(typeof(Transform3D))]
    public Entity Target { get; set; }
}

参照はIDで保存され、シーンのロード時に解決されます。プレハブをインスタンス化したり、エンティティを複製・貼り付けしたりすると、コピーがオリジナルではなく複製されたエンティティを指すように自動的に再マッピングされます。

AssetsServiceによる生アセット

Evergineでは従来から、コードからのアセット読み込みと処理にAssetsServiceを使用してきました。これはアセット関連の機能を集約したものです。今回、認識済みのアセットタイプに加えて、生アセットも読み込めるようになりました。これはEvergineが認識しない形式のファイル(JSON設定ファイル、データを含むCSV、独自形式など)です。新しいLoadRaw<T>メソッドはファイルのストリームを提供し、読み取り方法はユーザーが決定するため、必要な柔軟性がすべて得られます。また、サポート対象アセットと生アセットを同じ方法で読み込めるようになり、従来のように手動でファイルパスを構築して個別に処理する必要がなくなりました。

protected override void CreateScene()
{
    var assetsService = Application.Current.Container.Resolve<AssetsService>();

    var text = assetsService.LoadRaw<string>(EvergineContent.Raw.hello_txt, stream =>
    {
        using var reader = new StreamReader(stream);
        return reader.ReadToEnd();
    });

    var textComponent = this.Managers.EntityManager.FindFirstComponentOfType<Text3DMesh>();
    textComponent.Text = text;
}

アセットIDは、他のアセットと同様に生成されたEvergineContentクラスから取得します。結果はキャッシュされず、呼び出しのたびにファイルが再読み込みされるため、複数回必要な場合は保持してください。

全般的な改善

最後に、Evergine Studioインターフェースの小規模な改善点をいくつか紹介します。これらは目立ちにくいものの、Evergineチームが今回のリリースで目指してきた、より優れたユーザーエクスペリエンスに大きく貢献しています。

コピー可能なOutputパネル

エディタが行うすべての処理をログ出力するOutputパネルを刷新しました。従来は各メッセージがリストのアイテムとして表示され、複数行のコピーはほぼ不可能でした。今回からテキストを直接選択できるようになり、右クリックですべて選択を使用してコピーしたり、外部ツールで分析したりできます。これにより、デバッグや問題報告が容易になります。

Outputパネルでテキストを選択し、コピー、すべて選択、クリアメニューを表示

テクスチャビューアでのHDR範囲

テクスチャビューアに新しい範囲コントロールが追加され、1を大きく超える値を持つHDRテクスチャの値を調整できるようになりました。範囲を調整することで、環境マップの最も明るい部分や最も暗い部分など、特定の帯域でのみ現れる詳細を確認できます。

テクスチャビューアで範囲コントロールを調整したHDRテクスチャ

複数行文字列プロパティ

エディタから複数行文字列を編集できるようになりました。コンポーネント、ビヘイビア、ドローアブルのプロパティにRenderPropertyAsTextBox属性を追加するだけです。

[RenderPropertyAsTextBox(multiline: true, maxLength: 512, placeholder: "Custom text")]
public string DisplayTag { get; set; }

Evergine Studioでは、プロパティが複数行フィールドとして表示され、空の場合はプレースホルダーが表示され、最大長を強制する文字カウンターが付きます。

複数行テキストとして編集されるDisplayTagプロパティ(122/512カウンター付き)

すべてのタブを閉じる

ドキュメントタブを右クリックすると、閉じる、その他を閉じる、すべて閉じるが表示されます。Visual Studioと同様に、これらはウィンドウごとに機能します。フローティングウィンドウですべて閉じても、メインウィンドウのドキュメントは閉じられません。

閉じる、その他を閉じる、すべて閉じるオプションを含むタブメニュー

プロファイル値のリセット

各プロファイル(Windows、Android、Webなど)は、テクスチャ設定やシェーダーディレクティブを上書きできます。これまで、これらの値を一度変更すると、元に戻す簡単な方法がありませんでした。今回、プロファイルに元の値をリセットするボタンが追加され、ワンクリックで戻せるようになりました。

その他

今すぐ試す

これらの改善点はすべて、新しいEvergineリリースでご利用いただけます。Evergine Launcherからアップデートし、プロジェクトを開いてPlay Mode、新しい選択機能、マニピュレーターをお試しください。問題を発見された場合やEvergine Studioの改善アイデアがございましたら、GitHubリポジトリにてお知らせください。

Jorge Cantón
著者
Jorge Cantón
Plain Conceptsのリサーチディレクター