テクスチャ
テクスチャは、変更できない共有リソースです。 テクスチャは、「チュートリアル: 環境と素材を変更する」に示されているように、BLOB ストレージから読み込んで、モデルに直接適用することができます。 ただし通常は、テクスチャは変換されたモデルの一部になり、ここでその素材によって参照されます。
テクスチャの種類
テクスチャの種類によってユース ケースも異なります。
サポートされているテクスチャ形式
ARR に提供されるすべてのテクスチャは、DDS 形式である必要があります。 可能であれば、ミップマップとテクスチャの圧縮を使用します。
テクスチャの読み込み
テクスチャを読み込むときは、必要な種類を指定する必要があります。 種類が一致しない場合、テクスチャの読み込みが失敗します。 同じ URI のテクスチャを 2 回読み込むと、共有リソースなので、同じテクスチャ オブジェクトが返されます。
モデルの読み込みと同様に、ソース BLOB ストレージにテクスチャ資産をアドレス指定するには、次の 2 つのバリアントがあります。
- BLOB ストレージがアカウントにリンクされている場合、BLOB ストレージ パラメーターによってテクスチャを直接アドレス指定することができます。 この場合、関連する読み込み関数は、
LoadTextureAsync
とパラメーターLoadTextureOptions
です。 - テクスチャ資産は、その SAS URI でアドレス指定できます。 関連する読み込み関数は、
LoadTextureFromSasAsync
とパラメーターLoadTextureFromSasOptions
です。 組み込みのテクスチャを読み込む場合にもこのバリアントを使用します。
次のサンプル コードは、テクスチャを読み込む方法を示しています。
async void LoadMyTexture(RenderingSession session, string storageContainer, string blobName, string assetPath)
{
try
{
LoadTextureOptions options = new LoadTextureOptions(storageContainer, blobName, assetPath, TextureType.Texture2D);
Texture texture = await session.Connection.LoadTextureAsync(options);
// use texture...
}
catch (RRException ex)
{
}
}
void LoadMyTexture(ApiHandle<RenderingSession> session, std::string storageContainer, std::string blobName, std::string assetPath)
{
LoadTextureOptions params;
params.TextureType = TextureType::Texture2D;
params.Blob.StorageAccountName = std::move(storageContainer);
params.Blob.BlobContainerName = std::move(blobName);
params.Blob.AssetPath = std::move(assetPath);
session->Connection()->LoadTextureAsync(params, [](Status status, ApiHandle<Texture> texture)
{
// use texture...
});
}
SAS バリアントを使用する場合は、読み込み関数またはパラメーターのみが異なることに注意してください。
用途に対してサポートされるテクスチャの種類によっては、テクスチャの種類とコンテンツに制限がある場合があります。 たとえば、PBR 素材の粗さマップはグレースケールである必要があります。
API ドキュメント
- C# Texture クラス
- C# RenderingConnection.LoadTextureAsync()
- C# RenderingConnection.LoadTextureFromSasAsync()
- C++ Texture クラス
- C++ RenderingConnection::LoadTextureAsync()
- C++ RenderingConnection::LoadTextureFromSasAsync()