テクスチャがメモリ マップされている場合、テクスチャはレンダリング時にメモリに読み込まれません。その代わりに、シェーダがテクスチャを使用するときは、テクスチャはディスクから直接アクセスされます。メモリ マッピング テクスチャを正しく使用すると、レンダリング速度がかなり向上します。
たとえば、シーンとそのテクスチャのサイズが物理メモリ(RAM)に入り切らないほど大きい場合、非メモリ マッピング テクスチャのロードは、ファイルをメモリにロードして解凍し、スワップにコピーすることを意味しています(ディスク パーティションが、RAM の低速拡張メモリとして機能します)。この時点から、テクスチャはスワップ領域からアクセスされるようになります。
これと同じ状況でメモリ マッピング テクスチャを使用すると、「読み取り-解凍-書き込み」のステップを踏む手間が省かれ、スワップの代わりにファイル システムからテクスチャがアクセスされます。このため、使用ディスク領域もより少なくなります。つまり、mental ray はテクスチャ全体にアクセスするのではなく、タイルのレンダリングに必要な部分にのみアクセスします。
テクスチャがメモリ マッピング可能であれば、自動的に mental ray レンダラによってテクスチャが認識され、メモリによってマッピングされます。mental ray がファイルのヘッダから認識できるファイル形式であれば、いかなるファイル形式もマッピングできます。
メモリ マッピング テクスチャは Softimage で自動的に作成できるほか(「自動的にメモリ マッピング テクスチャを作成する」を参照)、手動でも作成できます(「手動でメモリ マッピング テクスチャを作成する」を参照)。
大規模なテクスチャ ファイルの大半はメモリに読み込まれないため、サンプリング頻度の低い数十メガバイトもあるような大きなテクスチャを使用する場合は、メモリ マッピングが有効です。
メモリ マッピングは、楕円フィルタリングでも適切に機能します。「レンダリング用のイメージ クリップをフィルタする」を参照してください。自動変換プロセスでは楕円フィルタリングに適したピラミッド マッピング テクスチャが自動的に作成されるため、メモリ マッピング テクスチャを自動的に作成する際には特に有効です(「自動的にメモリ マッピング テクスチャを作成する」を参照)。
正しく使用しないと、メモリ マッピング テクスチャはレンダリング速度が低下し、パフォーマンスに影響を及ぼすことがあります。たとえば、次のように記述します。
テクスチャとシーンがメモリに格納できる大きさならば、スワップせずにテクスチャを最初に位置にロードできるため、メモリ マッピング テクスチャは通常のテクスチャより遅くなります。そのテクスチャに頻繁にアクセスする場合は、さらに低速になります。
レンダリング イメージ内で完全に表示できるようなテクスチャを使用している場合は、メモリが割り当てられたテクスチャと、メモリが割り当てられていないテクスチャのメモリ消費量は同じです。
テクスチャをリモート サーバに格納する分散レンダリング構成では、メモリ マッピング テクスチャを使用するとレンダリング速度が著しく低下することがあります。これは、テクスチャが頻繁にアクセスされるためです。結果として、ネットワーク トラフィックが増加し、メモリ マッピングによって得られる速度の増加が相殺されます。これを回避するには、メモリ マッピング テクスチャを各レンダ スレーブにコピーします。詳細については、「メモリ マッピング テクスチャと分散レンダリング」を参照してください。
メモリ マッピング テクスチャを分散レンダリング環境で使用している場合は、レンダリングを開始する前に、各メモリ マッピングテクスチャを各レンダ スレーブ コンピュータの同じ場所にコピーすることが極めて重要です。
これは、メモリ マッピング テクスチャが自動的にブロードキャストモードに設定されるためです。このモードに設定されると、mental ray はレンダリング時にイメージのピクセル データを送信するのではなく、テクスチャ イメージのパスとファイル名をすべてのレンダ スレーブに同時に送信します(詳細については、「[Image Clip]プロパティエディタ」(「プロパティ リファレンス」)を参照)。
メモリ マッピング テクスチャが NSF マウントのファイル システム(別のホストからネットワークを通じて読み込まれたファイル システム)に格納されている場合は、すべてのレンダ スレーブは 1 箇所からテクスチャにアクセスする必要があります。この結果、ネットワーク トラフィックが増加してメモリ マッピングの効果が低くなり、通常のテクスチャを使用した場合よりもレンダリング速度が簡単に低下することがあります。
分散レンダリングに適したメモリ マッピング テクスチャを用意するには、さまざまな方法があります。次の手順でその方法の 1 つを説明します。
例: 分散レンダリングに適したメモリ マッピング テクスチャを用意する
シーンを作成する場合と同様に、レンダリング設定の[イメージを .map ファイルに自動的に変換](Automatically Convert Images to .map Files)をアクティブにしてください。詳細については、「自動的にメモリ マッピング テクスチャを作成する」を参照してください。
作成した .map ファイルを、各レンダ スレーブ コンピュータの同じ場所にコピーします。この例では、C:¥mr_map にコピーすることにします。
シーンをレンダリングする前に、Softimage のコマンド プロンプトを開き、新しい環境変数を定義します。この例では、set MR_MAP=C:¥mr_map と入力します
メイン メニューから[ファイル](File) [外部ファイル](External Files)を選択して、外部ファイル マネージャを開きます。
[ファイル タイプ](File Type)を[ピクチャ](Pictures)に設定し、メモリ マッピング テクスチャごとにパスとファイル拡張子を以下のように変更します。変更前:
レンダ領域のオプションと、各パスのレンダリングのオプションを編集します。各プロパティ エディタの[最適化]ページで、[マップの自動変換](Automatic Map Conversion) [タイプ](Type)オプションを[このパスで OFF](Off for this pass)に設定します。
各レンダ スレーブ コンピュータで、以下のように [setenv.bat] ファイルを編集して、先ほど作成した環境変数を追加します。
メモリ マッピング テクスチャを作成する最も簡単な方法は、シーンの一部またはすべてのイメージ クリップをレンダリング時に .map 形式に変換することによって、メモリ マッピング テクスチャが Softimage で自動的に作成されるようにすることです。
自動的に生成される .map ファイルは、オリジナルのイメージ ソースが格納されるディレクトリのサブディレクトリ(mr_map)に格納されます。オリジナルのイメージ クリップは Softimage 内部でテクスチャを表示するために使用されますが、.map ファイルはレンダリングにのみ使用されます。
以下に、.map ファイルを自動的に生成する場合の利点をいくつか示します。
既定では、自動生成された .map ファイルは自動的に使用されるため、レンダリングする前に新しい拡張子でパスを更新する必要がありません。
.map ファイルはシーンのイメージ クリップから作成されるため、クリップに対して(合成や 2D ペイントツールなどを使用して)行った変更は、そのクリップに対応する .map ファイルに自動的に反映されます。
.map ファイルの自動生成は、シーン全体に適用されるユーザ設定によって管理されていますが、レンダ領域および個々のレンダ パスではこの設定を無効にすることができます。詳細については、「自動生成される .map ファイルの使用を管理する」を参照してください。
.map ファイルが Softimage で自動生成されるようにするには
[Preferences]ビューを開き(メイン メニューから[ファイル](File) [設定](Preferences)を選択します)、Explorer で[Rendering]をクリックします。
以下の 2 つの[マップ変換](Map Conversion)オプションを設定します。
[イメージを .map ファイルに自動的に変換](Automatically Convert Images to .map Files): このオプションをアクティブにすると、シーンで使用されているすべてのイメージ クリップと、[最小サイズ](Minimum Size)の要件を満たすすべてのクリップが、[.map] ファイルに変換されます。
[最小サイズ](Minimum Size): イメージを .map 形式に変換する際の最小解像度を指定します。
どちらかの軸の解像度がこの値以上であるようなイメージは自動的に変換されます。両方の軸の解像度がこの値より小さいイメージは変換されません。
これは、メモリ マッピングがレンダリング スピードに影響を与えてしまうような大きなイメージを変換するのを防ぐのに役立ちます。
レンダリング設定の .map ファイル自動変換のアクティブ/非アクティブ(前のセクションを参照)は無視して、この機能を特定のレンダ パスに対して使用するかどうか、またはレンダ領域で使用するかどうかを指定できます。これを指定するには、次の手順を実行します。
[レンダ]ツールバーから[レンダ](Render) [レンダ](Render) [オプション](Options)を選択し、現在のパスの[レンダ オプション]プロパティ エディタを開きます。
[レンダ](Render) [領域](Regions) [すべてのオプション](All Options)を選択すると、レンダ領域の[View Render Options]プロパティ エディタが開きます。
[レンダ](Render) [領域](Regions) [アクティブなビューポートのオプション](Active Viewport Options)を選択し、最後にクリックしたビューポート(白い境界線で表示)の[レンダ オプション表示]プロパティ エディタを開きます。
[最適化]タブで、[マップの自動変換](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 で作成するには
Image Clip Viewer を開きます(メイン メニューから[ビュー](Views) [レンダリング/テクスチャ](Rendering/Texturing) [Image Clip Viewer]を選択します)。
Image Clip Viewer のメニューから、[ファイル](File) [読み込み](Import)を選択します。ブラウザが表示されます。読み込むイメージを選択し、[OK]をクリックします。
Image Clip Viewer のコマンド バーから、[ファイル](File) [書き出し](Export)を選択します。このブラウザで、イメージの保存先を指定し、[ファイル タイプ](File Type)が .map に設定されていることを確認して、[OK]をクリックします。
imf_copy スタンドアロンでメモリ マッピング テクスチャを作成するには
変換するファイルが保存されているフォルダのパスを入力します(例: C:¥projects¥myproj¥pictures)。
単一のイメージを変換する場合は次のコマンドを入力します(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
テクスチャを.mapファイルに手動で変換した後、元のファイルではなく変換後のファイルを参照するように、シーン ファイルを更新する必要があります。