今回の短いチュートリアルでは、Blender 5.2で導入されたCyclesのTexture Cache機能をご紹介します。この機能により、レンダリング時のメモリ管理が改善され、多数のテクスチャを使用したシーンでもレンダリングできるようになります。
このチュートリアルの動画版は現在この言語では利用できません。以下で字幕付きの英語版をご覧いただけます。動画の下には日本語に翻訳された文字起こしがあります。
動画の書き起こし
皆さん、こんにちは。今回の短いチュートリアルでは、Blender 5.2で導入されたCyclesのTexture Cache機能をご紹介します。この機能により、レンダリング時のメモリ管理が改善され、多数のテクスチャを使用したシーンでもレンダリングできるようになります。

実際の制作例として、私が作成し、ほかのチュートリアルでも使用してきた幼稚園全体のシーンを使います。これまでの動画では、教室、劇場、校庭など、必要なエリアだけを残していました。というのも、すべてのテクスチャを含むプロジェクト全体は現在4 GBのディスク容量があり、そのままではBlenderでレンダリングできなかったからです。校庭のように比較的テクスチャの少ないエリアでさえ、シンプルなショットをレンダリングできず、「System is out of GPU and shared host memory」というエラーメッセージが表示されていました。それでは、この問題をTexture Cacheで解決する方法を見ていきましょう。


続ける前にお知らせです。ほかの多くの動画と同様に、このチュートリアルの文章版と追加資料を私のWebサイトで公開しています。ほかの言語への翻訳も用意していますので、概要欄のリンクからご覧ください。
Texture Cacheオプションは、Properties EditorのRender > Performanceパネルにあります。私の環境では初めから有効になっていました。ドキュメントによると、この機能を有効にすると、Blenderは画像をTX形式に最適化して生成し、それらをディスクに保存したうえで、レンダリング時に使用します。

これらの画像の保存場所は、Preferences EditorのFile PathsタブにあるData Render Texture Cacheセクションで指定できます。この項目を空欄のままにすると、TXテクスチャは元のテクスチャが保存されているディレクトリ内のサブフォルダーに保存されます。

現在は画像がBlenderファイル内にパックされており、ディスク上には個別のファイルとして存在していません。そのため、Texture CacheはTX形式へ変換する画像を見つけられず、Blenderには**「No image files found to generate TX files」**というメッセージが表示されます。
まず最初に、Blenderファイルからテクスチャを取り出し、ディスクへ個別に保存する必要があります。私は、File > External DataにあるUnpack Resourcesを使用します。その前に、同じメニューのAutomatically Pack Resourcesを無効にしておきます。今回は**「Write files to current directory, overwrite existing files」を選択します。これにより、プロジェクトのBlenderファイルと同じ場所にTextures**フォルダーが作成されます。また、プロジェクトには745個のファイルが含まれていることも表示されます。元のテクスチャ画像は新しいフォルダーに書き出されますが、この変更をプロジェクトへ反映するには、Blenderファイルを保存する必要があります。保存後は、パックされていたテクスチャ約2 GBが外部ファイルになったため、Blenderファイルのサイズは半分になります。



ここで一点補足しておきます。私の環境では、この時点でTexture Cacheを使わなくてもレンダリングできるようになりました。テクスチャをディスクへ書き出すだけで、シーンを再びレンダリング可能にできたからです。これが、このチュートリアルのタイトル前半にある「UnpackでテクスチャによるOut of Memory問題を解決する」という意味です。ただし、この方法やほかの最適化を行っても、なおメモリ不足になるプロジェクトもあります。そのような場合にTexture Cacheがどのように役立つのかを見ていきましょう。

テクスチャがディスクに保存されたので、Texture CacheセクションのGenerateをクリックして、BlenderにTXファイルを作成させます。これらのファイルは短時間で生成され、Texturesディレクトリ内のサブフォルダーに保存されます。


この状態でレンダリングを開始すると、BlenderはTXフォルダーからテクスチャを読み込みます。私の環境では、以前よりレンダリングが速くなりました。ただし、これはPerformanceセクションのPersistent Dataなど、ほかの最適化の影響もあるかもしれません。Texture Cacheの主な目的はメモリ使用量を削減することです。レンダリング時間への影響は、シーンやハードウェア、ほかのレンダリング設定によって大きく変わります。

ここで、「プロジェクトのTXテクスチャを生成するのに数秒かかっているのだから、その時間もレンダリング時間に含めるべきではないか」と思われるかもしれません。確かにその指摘はもっともです。しかし、Texture Cacheなしではレンダリング自体が開始できない場合があることに加えて、TXテクスチャは一度生成すれば十分です。その後はディスク上に保持され、プロジェクト内の別のエリアを含め、以後のレンダリングで繰り返し利用されます。画面ではシーン内の別の場所に切り替えてレンダリングを開始しましたが、51秒で完了しました。私にとっては非常に大きな改善です。
このワークフローの欠点は、TXテクスチャが使用するディスク容量です。この例では、TXテクスチャは3.21 GBを使用しており、元のテクスチャは約2 GB弱です。しかも、この両方を保持しておく必要があります。これは開発者が意図したトレードオフです。レンダリング時のメモリ使用量を減らす代わりに、より多くのディスク容量を使用します。私としては、シーン全体を安定して、しかも大幅に短い時間でレンダリングできるのであれば、このトレードオフは十分に受け入れられます。

今回のチュートリアルは以上です。参考になったら、ぜひ高評価とチャンネル登録をお願いします。それでは、また次回お会いしましょう。