リソース管理 (Resource management)

Kanzi では、リソースはアプリケーションの異なる部分で再利用できるアイテムです。例えば、Mesh Data リソースは Model ノードのジオメトリを定義し、異なるノードで同じ Color Brush を使用して Foreground Brush または Background Brush プロパティを設定できます。

../_images/color-brush-resource.gif

Kanzi リソースマネージャーは、アプリケーション内でリソースを整理し再利用することを可能にします。

ノードのリソースの設定

Kanzi では、リソースをノードに直接リソースURLを使用して設定するか、間接的にリソースキーを使用して設定することができます。Kanzi Studio でリソースを設定すると、デフォルトでURLを使用してすべてのリソースが割り当てられます。Kanzi Studio で間接的な設定を使用したい場合は、リソース辞書にリソースのキーを作成し、プロパティでそのキーを選択する必要があります。キーの検索は階層的であるため、ツリー内にリソース辞書エントリを作成することで、キーが何に解決されるかを定義できます。

リソースキーを使ってリソースを設定することにより、以下が可能になります。

../_images/resource-management-skin.png ../_images/resource-management-language.png ../_images/resource-management-content.png

各種スキンやテーマを作成、適用して、アプリケーションの見た目を変更する。

各種言語やロケールに対応した、異なるバージョンのアプリケーションを作成する。

リソースをオーバーライドしてコンテンツをモジュール化する。

リソースを共有することで、アプリケーションのメモリとランタイムの要件を減らすことができます。これにより、同じリソースを再利用したり、リソースを変更してアプリケーション全体にその変更を反映させることができます。例えば、その方法でアニメーション化されたブラシを共有することができます。

Kanzi は、アプリケーションが実行中にリソースを管理するための多くのツールを提供します。Kanzi では、次のことができます。

Kanzi リソースタイプ

../_images/alias-icon.png

Alias

Alias を使用して、Kanzi ノードへの一貫したアクセスを得ることができます。エイリアスを使用して、Kanzi Studio 内および Kanzi Engine API を使用してノードにアクセスすることができます。

エイリアスの使用

../_images/animation-clip-icon.png

Animation Clip

Animation Clip を使用して、Animation Data リソースを組み合わせて、より複雑なアニメーションを作成します。同じ Animation Data リソースを異なる Animation Clip アイテムで再利用できます。階層的なアニメーションを作成するには、Animation Child Clip を使用します。

アニメーション (Animations)

アニメーションクリップ (Animation Clip) を編集する

タイムラインシーケンスの編集

../_images/animation-data-icon.png

Animation Data

キーフレームアニメーションのキーフレームとターゲットプロパティを定義するには、Animation Data リソースを使用します。1つの Animation Data リソースは、1つのプロパティまたはプロパティフィールドのみをターゲットにできます。Animation Data リソースは、ターゲットとするノードから独立しています。これにより、異なるノードをアニメートするために Animation Data リソースを再利用することができます。

../_images/timeline-sequence-icon.png

Timeline Sequence

Timeline Entry リソースを組み合わせるには、Timeline Sequence を使用します。

../_images/brush-icon.png

Brushes

2D ノードの背景を設定するにはブラシを使用します。Kanzi では、すべての 2D ノードにデフォルトで透明な背景が設定されています。

ブラシの使用

../_images/fonts-icon.png

Fonts

フォントを使用してテキストをレンダリングします。Kanzi のデフォルトフォントはFira Sans Regularです。独自のフォントを使用するには、それを Kanzi Studio プロジェクトにインポートしてください。

フォントのインポート

../_images/material-icon.png

Materials

3D ノードおよび Material Brush ブラシの見た目を設定するには、マテリアルを使用します。

マテリアルタイプとマテリアル

../_images/mesh-icon.png

Mesh Data

メッシュは、面が平面、辺が直線、頂点を結ぶ面が三角形である 3D 固体の形を定義する頂点、辺、面からなるコレクションです。

メッシュの使用

../_images/textures-icon.png

Textures

テクスチャを使用して、Image ノード内のコンテンツを表示し、テクスチャ付きマテリアルの外観を設定し、Texture Brush ブラシ内のコンテンツを表示します。一般的な画像ファイル形式からテクスチャを作成できます。

テクスチャ (Textures)

../_images/render-pass-prefabs-icon.png

Render Pass Prefabs

Kanzi アプリケーションで 3D コンテンツのレンダリングを定義するには、レンダーパスを使用します。

レンダーパスプレハブ内で、特定のレンダリング結果を達成するためにレンダーパスの階層を作成できます。

レンダリング

../_images/object-source-icon.png

Object Source

Draw Objects レンダーパスに、Kanzi アプリケーション内のどのノードをレンダリングするかを指定するには、オブジェクトソース (Object Sources) とフィルタ (Filter) を使用します。Root Object Source には、現在アクティブな Scene ノードのノードツリー内のすべてのノードが含まれます。

オブジェクトソース (Object Sources) を使用する

../_images/resource-dictionary-icon.png

Resource Dictionary

リソースディクショナリは、リソースを指すリソースIDのコレクションです。リソースディクショナリは、任意のノードに追加できます。

リソースディクショナリの使用

../_images/state-managers-icon.png

State Managers

Kanzi アプリケーションで異なる状態を作成するには、State Manager を使用します。

ステートマネージャー (State Manager)

../_images/styles-icon.png

Styles

ノードのプロパティ値を一括で設定するには、スタイルを使用します。

スタイルを使用する

../_images/text-resource-icon.png

Text Resources

テキストリソースは、Text Block ノードおよび Text Box ノードで使用されるテキスト文字列です。

テキスト (Text)

../_images/trajectory-icon.png

Trajectories

Trajectory Layout 3D ノードおよび Trajectory Layout 2D ノードにおける子ノードの配置、または、Trajectory List Box 3D ノードにおける子ノードの移動ためにトラジェクトリ (Trajectory) を軌跡として使用します。

トラジェクトリ (Trajectories)

プロジェクトへのリソースアセットのインポート

Kanzi Studio で直接いくつかのリソースを作成できます(例えば、ブラシやアニメーション)。一部のリソースについては、サードパーティツールで作成されたアセットをインポートする必要があります(例えば、テクスチャやメッシュ)。インポートしています を参照してください。

リソース URL

リソースを参照する最も基本的な方法はURLです。URLはkzbファイル内のリソースやデバイスストレージ上のファイルを参照できます。プロパティにリソースを設定する際には、そのリソースのURLを指定する必要があります。Properties ウィンドウの Kanzi Studio でそれを行うと、選択したリソースに対して Kanzi が自動的に行います。APIを使用してリソースプロパティを設定する場合は、リソースのURLを手動で指定する必要があります。プロジェクト内のリソースのURLを見つけるには、Kanzi Studio でリソースを右クリックし、Copy .kzb URL を選択します。デバイスストレージ上のファイルを参照するには、file:/// URL形式を使用します。

APIを使用する際には、リソースオブジェクトを直接指定することができます。リソースオブジェクトを受け入れるノードは、通常そのようなオブジェクトを受け入れるメソッドのオーバーロードを提供します。例えば、Image ノードで画像を設定するには、Image2D::setImage を使用します。

リソースディクショナリ (Resource Dictionary)

リソースディクショナリは、各リソースのキーと値のペアエントリのコレクションです。リソースディクショナリは任意のノードで定義できます。キーはリソースを間接的に指定する手段を提供します。リソースやノードへのURLを指定する代わりに、キーを指定できます。Kanzi は、キーがどのリソースに解決されるかを定義する最も近いリソースディクショナリを検索することで、リソースを動的に解決します。キーをアイテムに解決する必要がある場合、解決プロセスはキーを使用するノードからリソースディクショナリをチェックし始めます。そのノードのディクショナリにキーが含まれている場合、そのノードはそのキーを使用し、含まれていない場合は親のディクショナリをキーが見つかるまでチェックします。このプロセスはノードツリーのルートまで再帰的に続きます。ノードがキーを見つけられない場合、その後どうするかはノード次第です。例えば、Image ノードが画像を表示しないのは有効なケースです。Kanzi はリソースが見つからない場合にソフトに失敗を制御しますが、プラグインではプラグインの作者が何が起こるかを定義することになります。

デフォルトのリソース

Kanzi には、アプリケーションをより迅速に作成できるデフォルトリソースが付属しています。たとえば、Scene を作成すると、Kanzi がデフォルトのレンダーパスを提供し、Text Block または Text Box ノードを作成すると、Kanzi がデフォルトのフォントを提供します。デフォルトの Kanzi リソースをカスタマイズする必要がある場合は、ニーズに合ったリソースを作成またはインポートし、Kanzi のデフォルトリソースの代わりにそれらを使用してください。

Kanzi Studio プロジェクトから kzb ファイルを作成すると、デフォルトで Kanzi リソースが kzb ファイルに含まれます。

リソースマネージャー

リソースマネージャーは、リソースのライフタイム、ロード、およびアンロードを管理します。Kanzi APIを使用してリソースマネージャーにアクセスでき、リソースのライフタイムポリシーを指定したり、未使用のリソースを削除したりすることができます。リソースが常にメモリに保持されるか、必要ないときにアンロードされるかを指定するには、ポリシーを指定します。リソースマネージャー全体に対して、または各リソースに対してポリシーを指定することができます。リソースをメモリに保持するポリシーの場合、アプリケーションのロジックに基づいて手動で削除をリクエストすることができます。たとえば、新しい Page ノードのために大量のリソースをロードするためにアプリケーション内で Page ノードを変更する際に、手動でリソースを削除することができます。

リソースマネージャーを使用すると、Kanzi アプリケーション内のGPUリソースがどのメモリに格納されるかを定義できます。例えば、Library > Materials and Textures > Textures 内の Kanzi Studio のテクスチャに対してこれを設定するには、テクスチャを選択し、Properties で GPU Memory Type プロパティを設定します。

  • GPU Only。リソースはGPUメモリにデプロイされ、デプロイ後すぐにRAMから解放されます。Kanzi は、アプリケーションコードでリリースしない限り、リソースをGPUメモリに保持します。

  • GPU and RAM。リソースはGPUメモリにデプロイされます。Kanzi は、リソースをGPUとRAMの両方に保持し、プラットフォームとアプリケーションに基づいてリソースを管理します。Kanzi はリソースのアンロードを自動的に管理します。GPU Onlyと比較して、これによりより多くのRAMを消費しますが、例えばAndroidでは、より速い再開時間を提供します。

  • RAM Only。リソースは、アプリケーションコードで指示されたときにのみGPUにデプロイされます。Kanzi は、リソースをGPUメモリに保持し、アプリケーションコードでリリースしたときにアンロードします。

一時停止と再開

Kanzi アプリケーションが一時停止状態 (MainLoopState::Paused) のとき:

  • Androidでは、デフォルトで、kzbファイルに保存されていないGPUリソースは無効になります。アプリケーションがkzbファイルからロードしないカスタムリソースを使用する場合、必要に応じてそれらのリソースを手動でリロードおよび再配置することを確認してください。Kanzi は他のすべてのリソースを自動的に復元します。

  • 他のプラットフォームでは、Kanzi はデフォルトでGPUリソースを無効にしません。

アプリケーションが一時停止状態のときに、GPUリソースをどのように処理するかをアプリケーション設定で設定できます。アプリケーション構成リファレンス で、HandleGPUResources を参照してください。

関連項目

リソース (Resources)

リソースディクショナリの使用

Kanzi Engine が未使用のリソースをどのように処理するかを設定する

アプリケーション開発

アプリケーション構成リファレンス