メモリ マッピング テクスチャを使用する

 
 
 

テクスチャがメモリ マップされている場合、テクスチャはレンダリング時にメモリに読み込まれません。その代わりに、シェーダがテクスチャを使用するときは、テクスチャはディスクから直接アクセスされます。メモリ マッピング テクスチャを正しく使用すると、レンダリング速度がかなり向上します。

たとえば、シーンとそのテクスチャのサイズが物理メモリ(RAM)に入り切らないほど大きい場合、非メモリ マッピング テクスチャのロードは、ファイルをメモリにロードして解凍し、スワップにコピーすることを意味しています(ディスク パーティションが、RAM の低速拡張メモリとして機能します)。この時点から、テクスチャはスワップ領域からアクセスされるようになります。

これと同じ状況でメモリ マッピング テクスチャを使用すると、「読み取り-解凍-書き込み」のステップを踏む手間が省かれ、スワップの代わりにファイル システムからテクスチャがアクセスされます。このため、使用ディスク領域もより少なくなります。つまり、mental ray はテクスチャ全体にアクセスするのではなく、タイルのレンダリングに必要な部分にのみアクセスします。

テクスチャがメモリ マッピング可能であれば、自動的に mental ray レンダラによってテクスチャが認識され、メモリによってマッピングされます。mental ray がファイルのヘッダから認識できるファイル形式であれば、いかなるファイル形式もマッピングできます。

メモリ マッピング テクスチャは Softimage で自動的に作成できるほか(「自動的にメモリ マッピング テクスチャを作成する」を参照)、手動でも作成できます(「手動でメモリ マッピング テクスチャを作成する」を参照)。

メモリ マッピング テクスチャを使用する場合

  • 大規模なテクスチャ ファイルの大半はメモリに読み込まれないため、サンプリング頻度の低い数十メガバイトもあるような大きなテクスチャを使用する場合は、メモリ マッピングが有効です。

    注:

    mental ray では、メモリ マッピング テクスチャを読み取る際にそれらのデコードまたは変換は行いません。メモリ マッピングで使用するテクスチャは、レンダリング時に使用される形式と確実に同じである必要があります。

    通常、mental ray はイメージデータ形式を自動的に変換しようとします。たとえば、カラー イメージ ファイルをスカラ テクスチャとして使用すると、mental ray はテクスチャを読み取る際にカラー ピクセルをスカラに変換します。これは、メモリ マッピング テクスチャには適用されません。

  • メモリ マッピングは、楕円フィルタリングでも適切に機能します。「レンダリング用のイメージ クリップをフィルタする」を参照してください。自動変換プロセスでは楕円フィルタリングに適したピラミッド マッピング テクスチャが自動的に作成されるため、メモリ マッピング テクスチャを自動的に作成する際には特に有効です(「自動的にメモリ マッピング テクスチャを作成する」を参照)。

メモリ マッピング テクスチャを使用しない場合

正しく使用しないと、メモリ マッピング テクスチャはレンダリング速度が低下し、パフォーマンスに影響を及ぼすことがあります。たとえば、次のように記述します。

  • テクスチャとシーンがメモリに格納できる大きさならば、スワップせずにテクスチャを最初に位置にロードできるため、メモリ マッピング テクスチャは通常のテクスチャより遅くなります。そのテクスチャに頻繁にアクセスする場合は、さらに低速になります。

  • レンダリング イメージ内で完全に表示できるようなテクスチャを使用している場合は、メモリが割り当てられたテクスチャと、メモリが割り当てられていないテクスチャのメモリ消費量は同じです。

  • テクスチャをリモート サーバに格納する分散レンダリング構成では、メモリ マッピング テクスチャを使用するとレンダリング速度が著しく低下することがあります。これは、テクスチャが頻繁にアクセスされるためです。結果として、ネットワーク トラフィックが増加し、メモリ マッピングによって得られる速度の増加が相殺されます。これを回避するには、メモリ マッピング テクスチャを各レンダ スレーブにコピーします。詳細については、「メモリ マッピング テクスチャと分散レンダリング」を参照してください。

メモリ マッピング テクスチャと分散レンダリング

メモリ マッピング テクスチャを分散レンダリング環境で使用している場合は、レンダリングを開始する前に、各メモリ マッピングテクスチャを各レンダ スレーブ コンピュータの同じ場所にコピーすることが極めて重要です。

これは、メモリ マッピング テクスチャが自動的にブロードキャストモードに設定されるためです。このモードに設定されると、mental ray はレンダリング時にイメージのピクセル データを送信するのではなく、テクスチャ イメージのパスとファイル名をすべてのレンダ スレーブに同時に送信します(詳細については、「[Image Clip]プロパティエディタ」(「プロパティ リファレンス」)を参照)。

メモリ マッピング テクスチャが NSF マウントのファイル システム(別のホストからネットワークを通じて読み込まれたファイル システム)に格納されている場合は、すべてのレンダ スレーブは 1 箇所からテクスチャにアクセスする必要があります。この結果、ネットワーク トラフィックが増加してメモリ マッピングの効果が低くなり、通常のテクスチャを使用した場合よりもレンダリング速度が簡単に低下することがあります。

分散レンダリングに適したメモリ マッピング テクスチャを用意するには、さまざまな方法があります。次の手順でその方法の 1 つを説明します。

例: 分散レンダリングに適したメモリ マッピング テクスチャを用意する

  1. シーンを作成する場合と同様に、レンダリング設定の[イメージを .map ファイルに自動的に変換](Automatically Convert Images to .map Files)をアクティブにしてください。詳細については、「自動的にメモリ マッピング テクスチャを作成する」を参照してください。

  2. 作成した .map ファイルを、各レンダ スレーブ コンピュータの同じ場所にコピーします。この例では、C:¥mr_map にコピーすることにします。

  3. シーンをレンダリングする前に、Softimage のコマンド プロンプトを開き、新しい環境変数を定義します。この例では、set MR_MAP=C:¥mr_map と入力します

  4. Softimage を起動し、レンダリングするシーンをロードします。

  5. メイン メニューから[ファイル](File) [外部ファイル](External Files)を選択して、外部ファイル マネージャを開きます。

  6. [ファイル タイプ](File Type)[ピクチャ](Pictures)に設定し、メモリ マッピング テクスチャごとにパスとファイル拡張子を以下のように変更します。変更前:

    C:¥projects¥pictures¥wood.pic

    変更後:

    $MR_MAP¥wood.map

  7. レンダ領域のオプションと、各パスのレンダリングのオプションを編集します。各プロパティ エディタの[最適化]ページで、[マップの自動変換](Automatic Map Conversion) [タイプ](Type)オプションを[このパスで OFF](Off for this pass)に設定します。

  8. 各レンダ スレーブ コンピュータで、以下のように [setenv.bat] ファイルを編集して、先ほど作成した環境変数を追加します。

    set MR_MAP=C:¥mr_map

以上で完了です。これで、分散レンダリングを使用してシーンをレンダリングする準備ができました。

自動的にメモリ マッピング テクスチャを作成する

メモリ マッピング テクスチャを作成する最も簡単な方法は、シーンの一部またはすべてのイメージ クリップをレンダリング時に .map 形式に変換することによって、メモリ マッピング テクスチャが Softimage で自動的に作成されるようにすることです。

自動的に生成される .map ファイルは、オリジナルのイメージ ソースが格納されるディレクトリのサブディレクトリ(mr_map)に格納されます。オリジナルのイメージ クリップは Softimage 内部でテクスチャを表示するために使用されますが、.map ファイルはレンダリングにのみ使用されます。

以下に、.map ファイルを自動的に生成する場合の利点をいくつか示します。

  • 自動であるため、テクスチャを手動で .map 形式に変換する時間を費やす必要がありません。

  • 既定では、自動生成された .map ファイルは自動的に使用されるため、レンダリングする前に新しい拡張子でパスを更新する必要がありません。

  • .map ファイルはシーンのイメージ クリップから作成されるため、クリップに対して(合成や 2D ペイントツールなどを使用して)行った変更は、そのクリップに対応する .map ファイルに自動的に反映されます。

.map ファイルの自動生成は、シーン全体に適用されるユーザ設定によって管理されていますが、レンダ領域および個々のレンダ パスではこの設定を無効にすることができます。詳細については、「自動生成される .map ファイルの使用を管理する」を参照してください。

.map ファイルが Softimage で自動生成されるようにするには

  1. [Preferences]ビューを開き(メイン メニューから[ファイル](File) [設定](Preferences)を選択します)、Explorer で[Rendering]をクリックします。

    [Rendering Preferences]プロパティ エディタが、右ペイン内に開きます。

  2. 以下の 2 つの[マップ変換](Map Conversion)オプションを設定します。

    • [イメージを .map ファイルに自動的に変換](Automatically Convert Images to .map Files): このオプションをアクティブにすると、シーンで使用されているすべてのイメージ クリップと、[最小サイズ](Minimum Size)の要件を満たすすべてのクリップが、[.map] ファイルに変換されます。

    • [最小サイズ](Minimum Size): イメージを .map 形式に変換する際の最小解像度を指定します。

      どちらかの軸の解像度がこの値以上であるようなイメージは自動的に変換されます。両方の軸の解像度がこの値より小さいイメージは変換されません。

      これは、メモリ マッピングがレンダリング スピードに影響を与えてしまうような大きなイメージを変換するのを防ぐのに役立ちます。

自動生成される .map ファイルの使用を管理する

レンダリング設定の .map ファイル自動変換のアクティブ/非アクティブ(前のセクションを参照)は無視して、この機能を特定のレンダ パスに対して使用するかどうか、またはレンダ領域で使用するかどうかを指定できます。これを指定するには、次の手順を実行します。

  1. 次のいずれかの操作を実行します。

    • [レンダ]ツールバーから[レンダ](Render) [レンダ](Render) [オプション](Options)を選択し、現在のパスの[レンダ オプション]プロパティ エディタを開きます。

    • [レンダ](Render) [領域](Regions) [すべてのオプション](All Options)を選択すると、レンダ領域の[View Render Options]プロパティ エディタが開きます。

    • [レンダ](Render) [領域](Regions) [アクティブなビューポートのオプション](Active Viewport Options)を選択し、最後にクリックしたビューポート(白い境界線で表示)の[レンダ オプション表示]プロパティ エディタを開きます。

  2. [最適化]タブで、[マップの自動変換](Automatic Map Conversion) [タイプ](Type)パラメータを次のいずれかに設定します。

    • [ユーザ設定](Use Preferences: .map) レンダリング設定で.mapファイルの自動変換がアクティブになっている場合にのみ、レンダリング時に .map ファイルが生成されて使用されます。

      または

    • [このパスで ON/領域レンダリングの場合](On for this pass/for region render: .map) レンダリング設定で.mapファイルの自動変換がアクティブになっているかどうかに関係なく、パス/領域をレンダリングするときは、.map ファイルが生成されて使用されます。

      または

    • [このパスで OFF/領域レンダリングの場合](Off for this pass/for region render: .map) レンダリング設定で.mapファイルの自動変換がアクティブになっているかどうかに関係なく、パス/領域をレンダリングするときは、.map ファイルが生成されません。この設定が保持されている限り、以前に自動生成された .map ファイルがパスのレンダリング時に使用されることはありません。

手動でメモリ マッピング テクスチャを作成する

イメージ クリップを .map 形式に自動変換しない場合は、以下の 3 つの方法によりメモリ マッピング テクスチャを手動で作成できます。

  • Image Clip Viewer を使用する。

  • フリップブックを使用する。

  • imf_copy スタンドアロンを使用する。

一番使いやすい方法を選択してください。テクスチャを作成したら、「シーン ファイルを更新する」で説明されているように、テクスチャを使用できるようにシーンを更新します。

ヒント:
  • mental ray レンダラは.mapテクスチャを、拡張子が.map以外であっても認識します。つまり、「.map以外の」テクスチャ参照をシーン ファイルで引き続き使用できます。

  • 手動で作成されたメモリ マッピング テクスチャをペイントまたは修正する場合は、イメージが完成するまで .tga.pic などのファイル拡張子を使用し、その後 .map 形式に変換します。

重要:Windows プラットフォームのマッピング可能なファイルは Linux プラットフォームにコピーできません。その逆も同様です。

メモリ マッピング テクスチャを Image Clip Viewer で作成するには

  1. Image Clip Viewer を開きます(メイン メニューから[ビュー](Views) [レンダリング/テクスチャ](Rendering/Texturing) [Image Clip Viewer]を選択します)。

  2. Image Clip Viewer のメニューから、[ファイル](File) [読み込み](Import)を選択します。ブラウザが表示されます。読み込むイメージを選択し、[OK]をクリックします。

  3. Image Clip Viewer のコマンド バーから、[ファイル](File) [書き出し](Export)を選択します。このブラウザで、イメージの保存先を指定し、[ファイル タイプ](File Type).map に設定されていることを確認して、[OK]をクリックします。

メモリ マッピング テクスチャをフリップブックで作成するには

  1. [再生]パネルの[再生]メニューから[フリップブック](Flipbook)を選択し、フリップブックを開きます。

  2. [イメージを開く]ダイアログ ボックスで開くイメージを選択し、[OK]をクリックします。

  3. フリップブックのコマンド バーから、[ファイル](File) [書き出し](Export)を選択します。

  4. [書き出し]ダイアログ ボックスで、イメージを適切なディレクトリに保存し、[ファイル タイプ](File Type).mapに設定されていることを確認します。

imf_copy スタンドアロンでメモリ マッピング テクスチャを作成するには

  1. Autodesk Softimage コマンド プロンプトを開きます。

  2. 変換するファイルが保存されているフォルダのパスを入力します(例: C:¥projects¥myproj¥pictures)。

  3. 次のいずれかの操作を実行します。

    • 単一のイメージを変換する場合は次のコマンドを入力します(1 行で入力してください)。

      imf_copy[-v][-p]inimage outimage[outformat[outtype]]

      imf_copy の使用の詳細については、コマンド プロンプトで imf_copy -h と入力してコマンド ラインの使用法を表示するか、「スタンドアロン」を参照してください。

    • 複数のイメージを同じディレクトリ内でバッチ変換する場合は、次のコマンドを入力します(Windows の場合)。

      for %i in ([informat]) do imf_copy[-v][-p]%i %~ni.map

      たとえば、.pic ファイル、.tga ファイル、.jpg ファイルが混在するディレクトリがあり、それらをすべて変換する場合は、次の行を 1 行で入力します。

      for %i in (*.pic *.tga *.jpg) do imf_copy[-v][-p]%i %~ni.map

      ヒント:

      上の 2 つの例はともに、-p オプションにより .map ファイルをピラミッド マッピング形式で出力しています。ピラミッド マッピングでは、テクスチャがあらかじめ複数の解像度にフィルタ処理されます。レンダリング時には、カメラからテクスチャまでの距離に応じて適切な解像度が使用されます。

      特に、高解像度テクスチャを使用する必要がない場合はレンダリング速度を向上させることができます。ただし、テクスチャを保存するためのディスク容量が必要となります。ディスク容量が不足する恐れがある場合は、-p オプションを指定せずに、imf_copy を使用して .map ファイルを生成できます。

シーン ファイルを更新する

テクスチャを.mapファイルに手動で変換した後、元のファイルではなく変換後のファイルを参照するように、シーン ファイルを更新する必要があります。

注:一度シーンを更新すれば、メモリ マッピング テクスチャは他のテクスチャと同様に扱えます。それでもテクスチャを[テクスチャ]表示モードでプレビューでき、.mapファイルのサムネイルを[Image Clip]プロパティ エディタで表示できます。

シーン ファイルを更新するには

  1. シーンをロードし、メイン メニューから[ファイル](File) [外部ファイル](External Files)を選択します。

  2. External Files Manager で[検索と置換](Search and Replace)ボタンをクリックし、[検索と置換]ダイアログ ボックスを開きます。

  3. [ファイル タイプ](File Type)[ピクチャ](Pictures)に設定します。

  4. [検索する文字列](String to Search)および[置換する文字列](String to Replace)テキスト ボックスを使用して、各ファイル形式の拡張子(.pic.tga.jpg など)を検索し、それを.mapに置き換えます。