ゲームまたはアプリケーションでの 3-D アセットの使用Using 3-D Assets in Your Game or App

ここでは、Visual StudioVisual Studio を使用して 3-D アセットを処理し、ビルドに含める方法について説明します。This article describes how you can use Visual StudioVisual Studio to process 3-D assets and include them in your builds.

Visual StudioVisual Studio のツールを使用して 3-D アセットを作成したら、次の手順はアプリケーションでそれらを使用することです。After you use the tools in Visual StudioVisual Studio to create 3-D assets, the next step is to use them in your app. ただし、これらを使用する前に、DirectX が理解できる形式にアセットを変換する必要があります。But before you can use them, your assets have to be transformed into a format that DirectX can understand. アセットを変換しやすいように、Visual StudioVisual Studio には、生成できるアセットの種類ごとにビルドのカスタマイズが用意されています。To help you transform your assets, Visual StudioVisual Studio provides build customizations for each kind of asset that it can produce. アセットをビルドに含めるには、ビルドのカスタマイズを使用するようにプロジェクトを構成し、プロジェクトにアセットを追加し、正しいビルドのカスタマイズを使用するようにアセットを構成するだけです。To include the assets in your build, all you have to do is configure your project to use the build customizations, add the assets to your project, and configure the assets to use the correct build customization. その後でアプリケーションにアセットを読み込み、他の DirectX アプリケーションと同様に DirectX リソースを作成して入力することにより、アセットを使用できます。After that, you can load the assets into your app and use them by creating and filling DirectX resources just like you would in any other DirectX app.

プロジェクトを構成するConfiguring your project

ビルドの一部として 3-D アセットを配置する前に、配置するアセットの種類について Visual StudioVisual Studio が認識している必要があります。Before you can deploy your 3-D assets as part of your build, Visual StudioVisual Studio has to know about the kinds of assets that you want to deploy. Visual StudioVisual Studio は、多くの一般的なファイルの種類について既に認識していますが、3-D アセットを使用するのは、特定の種類のアプリケーションのみであるため、プロジェクトがこれらの種類のファイルをビルドすることを Visual StudioVisual Studio は想定していません。 already knows about many common file types, but because only certain kinds of apps use 3-D assets, Visual StudioVisual Studio doesn't assume that a project will build these kinds of files. アセットの種類ごとに用意されているビルドのカスタマイズを使用することによって、これらの種類のアセットをアプリケーションが使用することを Visual StudioVisual Studio に指示できます。"ビルドのカスタマイズ" は、さまざまな種類のファイルを便利な方法で処理する方法を Visual StudioVisual Studio に指示するファイルです。You can tell Visual StudioVisual Studio that your app uses these kinds of assets by using the build customizations—files that tell Visual StudioVisual Studio how to process different types of files in a useful way—that are provided for each asset type. これらのカスタマイズはプロジェクトごとに適用されるため、プロジェクトに適切なカスタマイズを追加するだけで済みます。Because these customizations are applied on a per-project basis, all you have to do is add the appropriate customizations to your project.

プロジェクトにビルドのカスタマイズを追加するにはTo add the build customizations to your project

  1. ソリューション エクスプローラーで、プロジェクトのショートカット メニューを開き、[ビルド依存関係][ビルドのカスタマイズ] の順にクリックします。In Solution Explorer, open the shortcut menu for the project, and then choose Build Dependencies, Build Customizations. [Visual C++ ビルド カスタマイズ ファイル] ダイアログ ボックスが表示されます。The Visual C++ Build Customizations Files dialog box is displayed.

  2. [使用できるビルド カスタマイズ ファイル] で、次の表に示すように、プロジェクトで使用するアセットの種類に対応するチェック ボックスをオンにします。Under Available Build Customization Files, select the check boxes that correspond to the asset types that you want to use in your project, as described in this table:

    アセットの種類Asset type ビルドのカスタマイズの名前Build customization Name
    テクスチャとイメージTextures and images ImageContentTask(.targets、.props)ImageContentTask(.targets, .props)
    3-D モデル3-D Models MeshContentTask(.targets、.props)MeshContentTask(.targets, .props)
    シェーダーShaders ShaderGraphContentTask(.targets、.props)ShaderGraphContentTask(.targets, .props)
  3. [OK] を選択します。Choose the OK button.

アセットをビルドに含めるIncluding assets in your build

使用する 3-D アセットの種類をプロジェクトが認識できるようになったので、次に、3-D アセットがどのファイルに含まれ、どのような種類のアセットであるかを指示します。Now that your project knows about the different kinds of 3-D assets that you want to use, the next step is to tell it which files are 3-D assets, and which kinds of assets they are.

アセットをビルドに追加するにはTo add an asset to your build

  1. ソリューション エクスプローラーのプロジェクトで、アセットのショートカット メニューを開き、[プロパティ] をクリックします。In Solution Explorer, in your project, open the shortcut menu of an asset, and then choose Properties. アセットの [プロパティ ページ] ダイアログ ボックスが表示されます。The asset's Property Page dialog box is displayed.

  2. [構成][プラットフォーム] の各プロパティが、変更を適用する値に設定されていることを確認します。Make sure that the Configuration and Platform properties are set to the values that you want your changes to apply to.

  3. [構成プロパティ][全般] をクリックし、プロパティ グリッドの [全般] で、[項目の種類] プロパティを適切なコンテンツ パイプラインの項目の種類に設定します。Under Configuration Properties, choose General, and then in the property grid, under General, set the Item Type property to the appropriate content pipeline item type. たとえば、イメージまたはテクスチャのファイルの場合、[Image Content Pipeline](イメージ コンテンツ パイプライン) を選びます。For example, for an image or texture file, choose Image Content Pipeline.

    重要

    既定では、Visual StudioVisual Studio は、多くの種類のイメージ ファイルが、Visual StudioVisual Studio にビルドされている [イメージ] 項目の種類を使用して分類する必要があることを前提としています。By default, Visual StudioVisual Studio assumes that many kinds of image files should be categorized by using the Image item type that's built into Visual StudioVisual Studio. したがって、イメージ コンテンツ パイプラインにより処理する各イメージの [項目の種類] プロパティを変更する必要があります。Therefore, you have to change the Item Type property of each image that you want to be processed by the image content pipeline. 3-D モデルおよび視覚シェーダー グラフィックスのその他の種類のコンテンツ パイプラインのソース ファイルの既定は、正しい [項目の種類] になります。Other types of content pipeline source files for 3-D models and visual shader graphics default to the correct Item Type.

  4. [OK] を選択します。Choose the OK button.

    3 種類のコンテンツ パイプラインの項目の種類および関連のソース ファイルと出力ファイルの種類を、次に示します。Here are the three content pipeline item types and their associated source and output file types.

項目の種類Item Type ソース ファイルの種類Source file types 出力ファイル形式Output file format
イメージ コンテンツ パイプラインImage Content Pipeline ポータブル ネットワーク グラフィックス (PNG) (.png)Portable Network Graphics (.png)

JPEG (.jpg、.jpeg、.jpe、.jfif)JPEG (.jpg, .jpeg, .jpe, .jfif)

DirectDraw Surface (dds)Direct Draw Surface (.dds)

グラフィックス インターチェンジ形式 (GIF) (.gif)Graphics Interchange Format (.gif)

ビットマップ (.bmp、.dib)Bitmap (.bmp, .dib)

TIFF 形式 (.tif、.tiff)Tagged Image File Format (.tif, .tiff)

Targa (.tga)Targa (.tga)
DirectDraw Surface (dds)DirectDraw Surface (.dds)
メッシュ コンテンツ パイプラインMesh Content Pipeline AutoDesk FBX インターチェンジ ファイル (.fbx)AutoDesk FBX Interchange File (.fbx)

Collada DAE ファイル (.dae)Collada DAE File (.dae)

Wavefront OBJ ファイル (.obj)Wavefront OBJ File (.obj)
3-D メッシュ ファイル (.cmo)3-D mesh file (.cmo)
シェーダー コンテンツ パイプラインShader Content Pipeline 視覚シェーダー グラフ (.dgsl)Visual Shader Graph (.dgsl) コンパイル済みシェーダー出力 (.cso)Compiled Shader Output (.cso)

アセット コンテンツ パイプラインのプロパティを構成するConfiguring asset content pipeline properties

特定の方法でビルドされるように、各アセット ファイルのコンテンツ パイプラインのプロパティを設定できます。You can set the content pipeline properties of each asset file so that it will be built in a specific way.

コンテンツ パイプラインのプロパティを構成するにはTo configure content pipeline properties

  1. ソリューション エクスプローラーのプロジェクトで、アセット ファイルのショートカット メニューを開き、[プロパティ] をクリックします。In Solution Explorer, in your project, open the shortcut menu for the asset file, and then choose Properties. アセットの [プロパティ ページ] ダイアログ ボックスが表示されます。The asset's Property Page dialog box is displayed.

  2. [構成][プラットフォーム] の各プロパティが、変更を適用する値に設定されていることを確認します。Make sure that the Configuration and Platform properties are set to the values that you want your changes to apply to.

  3. [構成プロパティ] でコンテンツ パイプラインのノード、たとえばテクスチャおよびイメージのアセットの場合は [Image Content Pipeline](イメージ コンテンツ パイプライン) を選び、プロパティのグリッドで、プロパティを適切な値に設定します。Under Configuration Properties, choose the content pipeline node—for example, Image Content Pipeline for texture and image assets—and then in the property grid, set the properties to the appropriate values. たとえば、ビルド時に、テクスチャ アセットの MIPMAP を生成するには、[MIPS の生成] プロパティを [あり] に設定します。For example, to generate mipmaps for a texture asset at build time, set the Generate Mips property to Yes.

  4. [OK] を選択します。Choose the OK button.

イメージ コンテンツ パイプラインの構成Image content pipeline configuration

イメージ コンテンツ パイプライン ツールを使用してテクスチャ アセットをビルドする場合、さまざまな方法によるテクスチャの圧縮、ビルド時に MIPMAP レベルを生成するかどうかの指定、および出力ファイルの名前の変更を実行できます。When you use the image content pipeline tool to build a texture asset, you can compress the texture in various ways, indicate whether MIP levels should be generated at build time, and change the name of the output file.

プロパティProperty 説明Description
圧縮Compress 出力ファイルで使用される圧縮の種類を指定します。Specifies the compression type that's used for the output file.

使用可能なオプションは次のとおりです。The available options are:

- 圧縮なし- No Compression
- BC1_UNORM 圧縮- BC1_UNORM compression
- BC1_UNORM_SRGB 圧縮- BC1_UNORM_SRGB compression
- BC2_UNORM 圧縮- BC2_UNORM compression
- BC2_UNORM_SRGB 圧縮- BC2_UNORM_SRGB compression
- BC3_UNORM 圧縮- BC3_UNORM compression
- BC3_UNORM_SRGB 圧縮- BC3_UNORM_SRGB compression
- BC4_UNORM 圧縮- BC4_UNORM compression
- BC4_SNORM 圧縮- BC4_SNORM compression
- BC5_UNORM 圧縮- BC5_UNORM compression
- BC5_SNORM 圧縮- BC5_SNORM compression
- BC6H_UF16 圧縮- BC6H_UF16 compression
- BC6H_SF16 圧縮- BC6H_SF16 compression
- BC7_UNORM 圧縮- BC7_UNORM compression
- BC7_UNORM_SRGB 圧縮- BC7_UNORM_SRGB compression

DirectX のさまざまなバージョンでサポートされている圧縮形式について詳しくは、「Programming Guide for DXGI」(DXGI のプログラミング ガイド) をご覧ください。For information about which compression formats are supported in different versions of DirectX, see Programming Guide for DXGI.
Convert to pre-multiplied alpha format (前乗算されたアルファ形式に変換)Convert to pre-multiplied alpha format 出力ファイルで前乗算されたアルファ形式に変換する場合は [はい] を、その他の場合は [いいえ] を選択します。Yes to convert the image to pre-multiplied alpha format in the output file; otherwise, No. 出力ファイルのみが変更され、ソース イメージは変更されません。Only the output file is changed, the source image is unchanged.
MIPS の生成Generate Mips 完全な MIPMAP チェーンをビルド時に生成し、出力ファイルに含める場合は、[あり]、それ以外は [なし]Yes to generate a full MIP chain at build time and include it in the output file; otherwise, No. [なし] をクリックすると、ソース ファイルに既に MIPMAP チェーンが含まれている場合は、出力ファイルに MIPMAP チェーンが含まれます。それ以外の場合は、出力ファイルに MIPMAP チェーンは含まれません。If No, and the source file already contains a mipmap chain, then the output file will have a MIP chain; otherwise, the output file will have no MIP chain.
Content Output(コンテンツ出力)Content Output 出力ファイルの名前を指定します。Specifies the name of the output file. 重要: 出力ファイルのファイル名拡張子を変更しても、ファイル形式には影響しません。Important: Changing the file name extension of the output file has no effect on its file format.

メッシュ コンテンツ パイプラインの構成Mesh content pipeline configuration

メッシュ コンテンツ パイプライン ツールを使用してメッシュ アセットをビルドする場合、出力ファイルの名前を変更できます。When you use the mesh content pipeline tool to build a mesh asset, you can change the name of the output file.

プロパティProperty 説明Description
Content Output(コンテンツ出力)Content Output 出力ファイルの名前を指定します。Specifies the name of the output file. 重要: 出力ファイルのファイル名拡張子を変更しても、ファイル形式には影響しません。Important: Changing the file name extension of the output file has no effect on its file format.

シェーダー コンテンツ パイプラインの構成Shader content pipeline configuration

シェーダー コンテンツ パイプライン ツールを使用してシェーダー アセットをビルドする場合、出力ファイルの名前を変更できます。When you use the shader content pipeline tool to build a shader asset, you can change the name of the output file.

プロパティProperty 説明Description
Content Output(コンテンツ出力)Content Output 出力ファイルの名前を指定します。Specifies the name of the output file. 重要: 出力ファイルのファイル名拡張子を変更しても、ファイル形式には影響しません。Important: Changing the file name extension of the output file has no effect on its file format.

実行時の 3-D アセットの読み込みおよび使用Loading and using 3-D assets at run time

テクスチャおよびイメージを使用するUsing textures and images

Direct3D には、テクスチャ リソースを作成するための機能があります。Direct3D provides functions for creating texture resources. Direct3D 11 では、D3DX11 ユーティリティ ライブラリには、イメージ ファイルからテクスチャ リソースとリソース ビューを直接作成するための追加の機能が用意されています。In Direct3D 11, the D3DX11 utility library provides additional functions for creating texture resources and resource views directly from image files. Direct3D 11 のテクスチャ リソースを作成する方法について詳しくは、「Textures」(テクスチャ) をご覧ください。For more information about how to create a texture resource in Direct3D 11, see Textures. D3DX11 ライブラリを使用してイメージ ファイルからテクスチャ リソースまたはリソース ビューを作成する方法について詳しくは、「How to: Initialize a Texture From a File」(方法: ファイルからテクスチャを初期化する) をご覧ください。For more information about how to use the D3DX11 library to create a texture resource or resource view from an image file, see How to: Initialize a Texture From a File.

3-D モデルを使用するUsing 3-D models

Direct3D 11 には、3-D モデルからリソースを作成する機能がありません。Direct3D 11 does not provide functions for creating resources from 3-D models. 代わりに、3-D モデル ファイルを読み取るコードを記述し、3-D モデルおよびモデルが必要とするリソース (テクスチャ、シェーダーなど) を表す頂点バッファーとインデックス バッファーを作成する必要があります。Instead, you have to write code that reads the 3-D model file and creates vertex and index buffers that represent the 3-D model and any resources that the model requires—for example, textures or shaders.

シェーダーを使用するUsing shaders

Direct3D には、シェーダー リソースを作成してプログラム可能なグラフィックス パイプラインにバインドするための関数が用意されています。Direct3D provides functions for creating shader resources and binding them to the programmable graphics pipeline. Direct3D のシェーダー リソースを作成してパイプラインにバインドする方法について詳しくは、「HLSL のプログラミング ガイド」をご覧ください。For more information about how to create a shader resource in Direct3D and bind it to the pipeline, see Programming Guide for HLSL.

プログラミング可能なグラフィックス パイプラインでは、パイプラインの各ステージは、理解できる方法で書式設定された結果を、パイプラインの次のステージに渡す必要があります。In the programmable graphics pipeline, each stage of the pipeline must give the next stage of the pipeline a result that's formatted in a way that it can understand. シェーダー デザイナーができることはピクセル シェーダーの作成のみであるため、受け取ったデータが要求する形式であることを確認するのはアプリケーションです。Because the Shader Designer can only create pixel shaders, this means that it's up to your app to ensure that the data that it receives is in the format that it expects. 複数のプログラミング可能なシェーダーのステージは、ピクセル シェーダー前に発生し、ジオメトリック変換 (頂点シェーダー、ハル シェーダー、ドメインのシェーダー、およびジオメトリ シェーダー) を実行します。Several programmable shader stages occur before the pixel shader and perform geometric transformations—the vertex shader, the hull shader, the domain shader, and the geometry shader. プログラミング不可能なテセレーション ステージもピクセル シェーダーの前に発生します。The non-programmable tessellation stage also occurs before the pixel shader. ピクセル シェーダーの直前にどのステージがある場合でも、結果を以下の形式で渡す必要があります。No matter which of these stages directly precedes the pixel shader, it must give its result in this format:


struct PixelShaderInput  
{  
    float4 pos : SV_POSITION;  
    float4 diffuse : COLOR;  
    float2 uv : TEXCOORD0;  
    float3 worldNorm : TEXCOORD1;  
    float3 worldPos : TEXCOORD2;  
    float3 toEye : TEXCOORD3;  
    float4 tangent : TEXCOORD4;  
    float3 normal : TEXCOORD5;  
};  

シェーダーで使用するシェーダー デザイナーのノードによっては、次の定義に従い、追加データを指定する必要がある場合もあります。Depending on the Shader Designer nodes that you use in your shader, you might also have to provide additional data in the format according to these definitions:


Texture2D Texture1 : register( t0 );  
Texture2D Texture2 : register( t1 );  
Texture2D Texture3 : register( t2 );  
Texture2D Texture4 : register( t3 );  
Texture2D Texture5 : register( t4 );  
Texture2D Texture6 : register( t5 );  
Texture2D Texture7 : register( t6 );  
Texture2D Texture8 : register( t7 );  

TextureCube CubeTexture1 : register( t8 );  
TextureCube CubeTexture2 : register( t9 );  
TextureCube CubeTexture3 : register( t10 );  
TextureCube CubeTexture4 : register( t11 );  
TextureCube CubeTexture5 : register( t12 );  
TextureCube CubeTexture6 : register( t13 );  
TextureCube CubeTexture7 : register( t14 );  
TextureCube CubeTexture8 : register( t15 );  

SamplerState TexSampler : register( s0 );  

cbuffer MaterialVars : register (b0)  
{  
    float4 MaterialAmbient;  
    float4 MaterialDiffuse;  
    float4 MaterialSpecular;  
    float4 MaterialEmissive;  
    float MaterialSpecularPower;  
};  

cbuffer LightVars : register (b1)  
{  
    float4 AmbientLight;  
    float4 LightColor[4];  
    float4 LightAttenuation[4];  
    float3 LightDirection[4];  
    float LightSpecularIntensity[4];  
    uint IsPointLight[4];  
    uint ActiveLights;  
}  

cbuffer ObjectVars : register(b2)  
{  
    float4x4 LocalToWorld4x4;  
    float4x4 LocalToProjected4x4;  
    float4x4 WorldToLocal4x4;  
    float4x4 WorldToView4x4;  
    float4x4 UVTransform4x4;  
    float3 EyePosition;  
};  

cbuffer MiscVars : register(b3)  
{  
    float ViewportWidth;  
    float ViewportHeight;  
    float Time;  
};  
タイトルTitle 説明Description
方法: ミップマップを含むテクスチャをエクスポートするHow to: Export a Texture that Contains Mipmaps イメージ コンテンツ パイプラインを使用して、前計算された MIPMAP を含むテクスチャをエクスポートする方法について説明します。Describes how to use the Image Content Pipeline to export a texture that contains precomputed mipmaps.
方法: 前乗算されたアルファを持つテクスチャをエクスポートするHow to: Export a Texture that has Premultiplied Alpha イメージ コンテンツ パイプラインを使用して、前乗算されたアルファ値を含むテクスチャをエクスポートする方法について説明します。Describes how to use the Image Content Pipeline to export a texture that contains premultiplied alpha values.
方法: Direct2D または Javascipt アプリで使用するためのテクスチャをエクスポートするHow to: Export a Texture for Use with Direct2D or Javascipt Apps イメージ コンテンツ パイプラインを使用して、Direct2D または JavaScript アプリで使用できるテクスチャをエクスポートする方法について説明します。Describes how to use the Image Content Pipeline to export a texture that can be used in a Direct2D or JavaScript app.
ゲームとアプリケーション用の 3D アセットの操作Working with 3-D Assets for Games and Apps テクスチャとイメージ、3-D モデル、シェーダーを含む 3-D アセットを作成および操作するために Visual Studio に用意されている編集ツールについて説明します。Describes the editing tools that Visual Studio provides for creating and manipulating 3-D assets, which include textures and images, 3-D models, and shaders.
方法: シェーダーをエクスポートするHow to: Export a Shader シェーダー デザイナーからシェーダーをエクスポートする方法について説明します。Describes how to export a shader from the Shader Designer.