オブジェクトとリソースの有効期間
Azure Remote Rendering では、オブジェクトとリソースの 2 つの種類は区別されます。
オブジェクトの有効期間
"オブジェクト" は、ユーザーが独自の判断で作成、変更、および破棄できるものと見なされます。 オブジェクトは自由に複製でき、時間の経過と共に各インスタンスが変化する可能性があります。 その結果、エンティティとコンポーネントはオブジェクトになります。
オブジェクトの有効期間は、ユーザーが完全に制御します。 ただし、クライアント側での表現の有効期間には関係ありません。 Entity
や Component
などのクラスには Destroy
関数があります。これは、リモート レンダリング ホスト上のオブジェクトの割り当てを解除するために呼び出す必要があります。 さらに、Entity.Destroy()
は、エンティティ、その子、およびその階層内のすべてのコンポーネントを破棄します。
リソースの有効期間
"リソース" は、リモート レンダリング ホストによって有効期間が完全に管理されているものです。 リソースは、内部的にカウントされる参照です。 それらは、参照されなくなると割り当てが解除されます。
ほとんどのリソースは、通常、ファイルから読み込むことで、間接的にのみ作成できます。 同じファイルが複数回読み込まれると、Azure Remote Rendering は同じ参照を返し、データを再度読み込みません。
多くのリソース (たとえば、メッシュやテクスチャ) は不変です。 ただし、一部のリソース (たとえば、素材) は変更可能です。 リソースは共有されることが多いため、リソースを変更すると複数のオブジェクトに影響を与える可能性があります。 たとえば、素材の色を変更すると、その素材を参照するメッシュを使用するすべてのオブジェクトの色が変更されます。
組み込みリソース
Azure Remote Rendering には、いくつかの組み込みリソースが含まれています。それらは、RenderingSession.Connection.LoadXYZAsync()
の呼び出し時に、それぞれの識別子の前に builtin://
を付加することによって読み込むことができます。 使用可能な組み込みリソースは、それぞれの機能のドキュメントに記載されています。 たとえば、空の章には、組み込まれている空のテクスチャが一覧表示されています。
一般的な有効期間
すべてのオブジェクトとリソースの有効期間は、接続にバインドされています。 切断時にはすべて破棄されます。 同じセッションに再接続すると、シーン グラフは空になり、すべてのリソースが消去されます。
実際には、切断後に同じリソースをセッションに読み込むと、通常、初回より速くなります。 これは、初回はほとんどのリソースを Azure Storage からダウンロードする必要があるためです。2 回目にはこれが不要となるため、かなりの時間が節約されます。