キューブマップテクスチャ (Cube-map Texture) を使用する

キューブマップテクスチャは、環境の反射を表現するために6つの正方形の画像を1つのテクスチャに結合します。各画像は、キューブマップされたオブジェクトの視点から見た場合のx、y、z軸に沿った6つの方向のうちの1つの風景を表します。

Kanzi Studio でキューブマップテクスチャを使用する前に、まずキューブマップの6つのキューブ面のテクスチャ画像を作成する必要があります。キューブマップテクスチャを使用したいメッシュオブジェクトを作成したツールで6つのテクスチャ画像を作成し、画像を Kanzi Studio にインポートします。画像のインポート を参照してください。

キューブマップテクスチャのすべての面で同じサイズ、同じ形式の画像を使用してください。キューブマップテクスチャ内の画像のサイズと形式が一致しない場合、Kanzi はデフォルトのキューブマップテクスチャを使用します。

たとえば、キューブマップテクスチャのすべての面で、サイズが 256 x 256 ピクセル、8 ビットグレースケールの画像を使用します。

キューブマップテクスチャの画像のサイズと形式が一致しない場合、Kanzi Studio はそのようなテクスチャを赤色でマークします。

../../_images/cubemap-texture-faces-not-same-size.png

dds画像からキューブマップテクスチャを作成する

DDS画像からキューブマップテクスチャを作成するには、Assets で Import Assets をクリックし、キューブマップテクスチャのすべての面の画像を含むDDS画像をインポートします。

Kanzi Studio はdds画像をインポートし、Cubemap Texture を作成し、テクスチャの面をdds画像内の対応する画像に設定します。

HDR画像からキューブマップテクスチャを作成する

hdr または exr 画像からキューブマップテクスチャを作成するには、次のいずれかを行います。

  • Assets で Import Assets をクリックし、画像を選択し、Create textures for HDR images ダイアログで作成したいテクスチャを選択します。

    ../../_images/create-textures-for-hdr-images.png
  • すでに画像をプロジェクトにインポートしている場合、Library > Resource Files > Images Alt を押しながら右クリック で画像を選択し、作成したいテクスチャのタイプを選択します。

    ../../_images/create-environment-cubemap-texture-context-menu.png

環境テクスチャを使用する と イメージベースのライティングキューブマップテクスチャを使用する を参照してください。

キューブマップテクスチャの作成

キューブマップテクスチャを作成するには、以下のようにします。

  1. Assets で、Import Assets をクリックし、キューブマップテクスチャの面として使用したい画像をインポートします。画像のインポート を参照してください。

    ../../_images/assets-import-assets1.png
  2. Library で、Alt を押しながら右クリック Materials and Textures を選択し、Cubemap Texture を選択します。

    キューブマップテクスチャを作成すると、Kanzi Studio は赤いタイプでマークします。これは、キューブマップの各面にテクスチャがまだ割り当てられていないためです。

    ../../_images/create-a-cubemap-texture.png ../../_images/cube-map-texture-red.png
  3. Properties で、キューブマップテクスチャに使用したい画像に Cubemap Images プロパティを設定します。

    • NegZ Image をキューブマップの負のZ面(背面)に

    • PosZ Image をキューブマップの正のZ面(前面)に

    • NegX Image をキューブマップの負のX面(左面)に

    • PosX Image をキューブマップの正のX面(右面)に

    • NegY Image をキューブマップの負のY面(底面)に

    • PosY Image をキューブマップの正のY面(上面)に

    JPEG テクスチャからはミップマップを作成しないでください。JPEG 画像形式ではミップマップの品質が低下します。

    ../../_images/cube-map-texture-set-images.png
  4. (オプション)

    Properties で Texture Settings プロパティを設定します。

    Texture Settings プロパティを使用してテクスチャフィルタリングを制御します。まず、Mipmap Mode プロパティを使用したいミップマップモードに設定します。次に、Minification Filter と Magnification Filter プロパティを Linear に設定します。ミップマップを使用するとメモリ使用量が増加することに注意してください。

    通常、最初はテクスチャフィルタリングを以下のように設定するのが適切です。

    • Minification Filter から Linear へ

    • Magnification Filter から Linear へ

    • Mipmap Mode から Nearest へ。テクスチャが縮小されていないと確信している場合は Base を選択し、それ以外の場合は Nearest から始めてください。例えば、Render Target Texture のデフォルト値は Base です。この設定では、テクスチャにはミップマップレベルがなく、ベースレベルが常にサンプリングされます。ミップマップ (Mipmap) の使用 を参照してください。

    ../../_images/texture-settings-properties.png

    一部のテクスチャフォーマットは、OpenGL ES バージョン 2.0 より高いバージョンで利用可能です。OpenGL ES バージョンを設定するには、メインメニューで Project > Properties を選択し、Properties で Target Graphics API プロパティを設定します。

    ../../_images/project-properties.png ../../_images/target-graphics-api-opengl-es-30.png

    例えば、Target Graphics API プロパティを OpenGL ES 3.0 に設定し、HDR および浮動小数点画像を .dds 形式でインポートし、テクスチャのカラーフォーマットを設定します。Kanzi でOpenGL ES 3.0+を使用する を参照してください。

    Mipmap Mode

    Nearest サンプル

    Linear サンプル

    Base

    サンプル数:1

    テクスチャ内の最も近いピクセルを使用します。この組み合わせはポイントサンプルと等しいです。すべての組み合わせの中で最も粗い結果を返し、縮小されたときにエイリアシングを引き起こす可能性があります。

    このコンビネーションを使用すると、テクスチャを拡大するときに非常にシャープな結果が得られます。

    サンプル数:4

    テクスチャ内の最も近い 4 ピクセルの間で補間します。

    グラデーションを拡大するにはこのコンビネーションを使用します。一方、縮小には使用しないでください。

    Nearest

    サンプル数:1

    テクスチャキャッシングを助け、エイリアシングを減少させます。しかし、テクスチャが平坦な表面で使用されるときに、鋭い遷移を生じることがあります。

    良好なパフォーマンスを必要とするターゲットプラットフォームで、より高い品質を提供する余裕がない場合には、このコンビネーションを使用します。

    このコンビネーションが通常、最も高速です。

    サンプル数:4

    2 つのミップマップレベルから 2 つのサンプルを取り、それらのサンプル間で補間します。

    このコンビネーションは、新規作成時に使用します。

    このコンビネーションは通常、品質とパフォーマンスのバランスが最も取れています。

    縮小されないことがわかっている場合は、Mipmap Mode を Base に設定できます。

    Linear

    サンプル数:2

    2 つのミップマップレベルから 1 つのサンプルを取り、それらのサンプル間で補間します。

    このコンビネーションは特殊効果に使用します。例えば、リムライト効果を実装するために使用します。

    サンプル数:8

    2 つのミップマップレベルから 4 つのサンプルを取り、それらのサンプル間で補間します。

    最高品質が必要な場合、結果を簡単にレンダリングできる能力がプラットフォームあれば、このコンビネーションを使用します。

    このコンビネーションでは、パフォーマンス上の悪影響が最も大きくなります。

ASTC によるキューブマップテクスチャの圧縮

Adaptive Scalable Texture Compression (ASTC) を使用すると、HDR 画像や EXR 画像から作成されたキューブマップテクスチャを含め、キューブマップテクスチャを圧縮できます。ASTC により、GPU メモリの使用量とテクスチャの帯域幅を削減できます。また、ASTC のブロックサイズを調整して、画質とテクスチャサイズのバランスをとることもできます。

ASTC は次のエンコード形式をサポートしています。

  • LDR LINEAR: リニア色空間の LDR テクスチャ用。

  • LDR SRGB: sRGB 色空間の LDR テクスチャ用。

  • HDRa: アルファチャンネルを含む HDR テクスチャ用。

  • HDRA: アルファチャンネルを含まない HDR テクスチャ用。

HDR 環境テクスチャには、ソーステクスチャにアルファチャンネルが含まれるかどうかに応じて、HDRa または HDRA を使用します。

ASTC は非可逆圧縮形式です。テクスチャの内容と圧縮設定によっては、圧縮によってディテールの損失、ブロックアーティファクト、またはカラーグラデーションの不連続が生じることがあります。

ASTC でキューブマップテクスチャを圧縮するには:

  1. Library で、圧縮するキューブマップテクスチャ (Cubemap Texture) を選択します。

  2. Properties の Cubemap Images で、キューブマップテクスチャの共有イメージプロパティアイコンをクリックします。

    このアイコンは NegZ イメージ (NegZ Image) の隣に表示され、キューブマップの 6 つの面すべての共有イメージプロパティを制御します。Kanzi Studio は、このアイコンで設定した内容を 6 つの面すべてに適用します。

    ../../_images/my_hdr_image_irradiance.png
  3. イメージプロパティで Target Format を ASTC に設定し、テクスチャの内容に適した ASTC エンコード形式を選択します。

  4. ASTC 圧縮設定を構成します。たとえば、ASTC Block Size を使用して、画質とテクスチャサイズのバランスをとります。

    ASTC 圧縮設定については、テクスチャを圧縮する (Compressing textures) を参照してください。

  5. プロジェクトを kzb ファイルにエクスポートします。

    プロジェクトをエクスポートすると、Kanzi Studio は設定した ASTC 設定を使用して、キューブマップテクスチャの 6 つのイメージすべてを圧縮します。

注釈

6つのキューブマップ面は、共通の画像プロパティを使用します。個々のキューブマップ面ごとに画像プロパティを個別に設定することはできません。

キューブマップテクスチャを使用する

キューブマップテクスチャを使用するには:

  1. Library > Materials and Textures > Materials で、キューブマップテクスチャをサポートするマテリアルを選択します。Properties で、使用したいキューブマップテクスチャに TextureCube プロパティを設定します。キューブマップテクスチャの作成 と テクスチャ付きマテリアルの作成 を参照してください。

    ../../_images/vertexphongcubematerial-properties.png ../../_images/texturecube-property-set.png
  2. Node Tree で、キューブマップテクスチャを使用したい Model、Box、または Sphere ノードを選択します。Properties で、キューブマップテクスチャを使用するマテリアルに Material または Mesh Material プロパティを設定します。

    ../../_images/material-set-to-phongcubematerial.png

キューブマップテクスチャをスカイボックスとして使用する

キューブマップテクスチャをスカイボックスとして使用するには:

  1. Library > Materials and Textures で、Alt を押しながら右クリック Material Types を行い、CubemapSkybox を選択します。

    Kanzi Studio は、Library > Materials and Textures に CubemapSkybox マテリアルタイプと CubemapSkyboxMaterial を作成し、キューブマップテクスチャをスカイボックスとして表示することをサポートします。

    ../../_images/library-create-cubemap-skybox-material-type.png
  2. Library で、CubemapSkyboxMaterial マテリアルを選択します。Properties で、TextureCube プロパティを使用したいキューブマップテクスチャに設定して、スカイボックスをレンダリングします。

    ../../_images/library-cubemap-skybox-material.png ../../_images/properties-cubemap-skybox-my-cubemap-texture.png
  3. Box または Sphere ノードを作成し、スカイボックスをレンダリングするために使用します。Properties で、次を設定します。

    • Mesh Material から CubemapSkyboxMaterial へ

    • ノードのサイズは、内部に表示したいコンテンツが収まるように十分に大きくしてください。

      • Box の場合、Width、Height、および Depth プロパティを設定します。

      • Sphere の場合、Radius プロパティを設定します。

    • Generate Mesh Inside Out を有効にする

      このプロパティが有効になると、Kanzi はメッシュ内にキューブマップテクスチャをレンダリングします。

    ../../_images/node-tree-box.png ../../_images/properties-box-skybox.png
  4. Camera ノードを、作成したノードの中に配置します。

カメラを回転させると、Preview でキューブマップテクスチャがスカイボックスとしてレンダリングされているのが見えます。

../../_images/preview-hall-cubemap-texture.gif

キューブマップテクスチャプロパティタイプ

キューブマップテクスチャの利用可能なプロパティタイプのリストについては、キューブマップテクスチャ (Cubemap Texture) および テクスチャ (Texture) を参照してください。

関連項目

単一テクスチャの使用

環境テクスチャを使用する

イメージベースのライティングキューブマップテクスチャを使用する

レンダーターゲットテクスチャ (Render Target Texture) を使用する

テクスチャ付きマテリアルの作成

キューブマップ反射の作成

イメージ (Images)

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

インポートしています