SDK」レビュー[PR]ゲームプラットフォームのハイスペック化、画面出力の高解像度化などに伴い必然的にテクスチャの取り扱いも複雑化し、頭を悩ませている人も多いはず。今回は、ハイエンドゲーム開発を行う現役のエンジニアに試してもらった。Profileもんしょ(@monsho1977)都内ゲームデベロッパーに在籍するシニアエンジニア。ブログ「もんしょの巣穴」の管理人。SDKは高解像度テクスチャを実現するためのテクスチャストリーミング技術を提供するミドルウェアです。リアルタイムを基本とするゲーム業界ではそこまで高いテクスチャ解像度は用いられてきませんでしたが、4Kや8Kのディスプレイ解像度が視野に入ってきた昨今では、これまでのテクスチャ解像度では増えた情報量を補うだけの密度が足りず、ぼやけた映像になってしまいます。単純にテクスチャ解像度を上げてしまうと、ゲームプラットフォームではメモリに載せきれないため、大きめの形状に対しては1~2Kのテクスチャを用い、細かな表現用の小さなテクスチャと組み合わせたディテールマップがよく使われてきました。この手法は、結局大きな形状についてはテクスチャ解像度の影響を受けることが避けられず、またディテールマップで得られる詳細情報も限定的です。加えて、ローディング時間が長くなるという問題もあります。ミップマップの低解像度テクスチャから先に読み込み、最悪それを描画に利用する手法もありますが、ゲーム開始時やカメラの切り替わりでぼやけた映像が表示されてしまう問題も発生します。これらの問題に対処するため、見える部分のテクスチャだけを読み込んで見える部分にだけ割り当てる技術が2004年に登場しました。Textures」と名づけたこの技術は、当時としてはかなりの高解像度テクスチャを使用できるようにしていました。Textures」「VirtualTextures」などと呼ばれる技術も存在しますが、基本的な考えはほぼ同じです。4(以下、UE4)やUnityへのインテグレートも行われています。自社エンジンへのインテグレートも可能です。Unrealを用いて、その使用方法やSubstanceとの連携、マテリアル構築などについて実際にみていきましょう。SDKをインテグレートした特別なUE4が必要になります。now」ボタンを押して必要事項を記入すると、ダウンロードサイトと試用版のライセンスキーがメールで送られてきます。この際、UE4のGitHubリポジトリにアクセス可能なアカウントを求められます。GitHubに詳しくない方は身近なエンジニアに相談するとよいでしょう。SDKプラグインを有効にします。Setと呼ばれるアセットを作成する必要があります。SDKはタイルごとにテクスチャの読み込み、配置を行います。今回はGraphine社から提供を受けた、飛行機モデルで使用する8KテクスチャでTileSetアセットを作成しました。Studioというツールが必要です。Toolset内に存在します。Textureアセットから構成されます。このアセットは同時に使用するテクスチャをまとめておく単位です。StackedTextureはテクスチャ1枚ごとでも作成できますが、同時に使うものをまとめておいた方が処理速度面でも管理面でも有利でしょう。Setを作成したらファイルパスをコピーし、UE4にインポートします。Texture、それを利用したマテリアルとマテリアルインスタンスです。マテリアルを変更する必要がなければ、マテリアルインスタンスをメッシュに設定すれば完了です。Textureを複数のテクスチャの組み合わせで作成します。ここではUE4用のテンプレートを利用しています。テクスチャ選択はドラッグ&ドロップも可能。複数要素を1つのテクスチャにまとめる場合はチャンネルごとにテクスチャを選択しますが、1枚のテクスチャにまとまったものを利用することも可能です/<B>Stateがオレンジ色の場合はアセットのビルドが必要。ビルドが完了すると緑色になります/<C>ビルド中画面。Name]を利用すると簡単です。UE4のインポートボタンでコピーしたパスをそのまま貼り付ければインポートされます。利用した8Kテクスチャ/<B>通常のゲームでよく利用される2Kテクスチャをそのまま利用したもの。SDKで利用する方法を紹介します。地形用のテクスチャはプロップ用とは異なり、タイリングが可能であることです。複数のタイリングテクスチャをレイヤー的に使用することも多くあります。Textureに設定するのは面倒なので、バッチインポートを利用してみましょう。バッチインポートは一定の命名規則に則ったテクスチャを一度にインポートする機能です。地形用のテクスチャは、SubstanceDesignerからエクスポートした4Kテクスチャを利用することにします。Shareから地形に使えそうなマテリアルをいくつかダウンロードし、バッチインポートの命名規則に従った出力ノードを追加しました。Setアセットを作成します。SetはUE4マテリアルのディスプレイスメントありのテンプレートを選択して作成します。バッチインポートが成功したらビルドを行い、以前と同様にUE4へのインポートを行います。デフォルトでマテリアルが作成されますが、このマテリアルはディスプレイスメントに対応していません。地形用のマテリアルは地形の高さに応じてテクスチャを変化させたいので、新規にマテリアルを作成し、各種調整パラメータを追加してみました。Designerで地形用のタイリングテクスチャを作成します。ビューイング用の出力ノードとは別に、バッチインポートに対応した命名の出力ノードを追加しました/<B>バッチインポートでは各テクスチャの保存フォルダと命名規則を入力します。条件に合うテクスチャが見つかれば下のウインドウに表示されます。▲<A>マテリアル全体はこのようになっています。細かな部分は見えないと思いますが、3つのStackedTextureをレイヤーとして用いています。レイヤーは高さによって変化するようにして、境界部分には軽くノイズを入れるようにしました。SDKによって追加されるマテリアルノードは4つ。Textureに関するもので、UE4標準のテクスチャノードとほぼ同じ使い方となります。標準ノードとの間で互換性はありません。SDK用の4Kテクスチャの比較。十分距離が離れていると問題がありませんが<A>、近づくと岩の方がぼやけてしまいます<B>。用途の異なるテクスチャを比較するのはフェアではないですが、ディテールマップによる詳細でも接近時には解像度が足りないことがわかるでしょう。SDKは通常のテクスチャだけでなくライトマップにも対応しています。ライトベイク自体の品質はUE4そのままですが、ベイクした結果を格納しているテクスチャの取り扱い方が変わります。いえ、ユーザーはそれを意識する必要はありません。この機能はデフォルトでは無効化されていますが、プロジェクト設定の該当項目を選択することで有効になります。SDKのStackedTextureとUE4標準のテクスチャを混在させることが可能ですが、ライトマップについては排他となります。SDKのライトマップを使い分ける、ということはできない点に注意してください。SDKの機能はUE4デフォルトの機能でも実現は可能です。それを知るには少し内部の動作を考慮する必要があります。幸いにもUE4.16からRenderDocというツールが正式にサポートされています。SDKでテクスチャがどのように取り扱われているか知るにはうってつけです。RenderDocで画面をキャプチャし、モデルを描画しているパスを見つけて、そこで使用されているテクスチャを見てみます。通常であればきちんとした画像になっているテクスチャがブロック状に分割されているはずです。そのテクスチャのサイズは16K×4Kの巨大なサイズになっているでしょう。SDKではこの巨大なバッファ内に画面に表示されていると判断されたテクスチャブロックのみを読み込んでいるのです。これによって得られる効果はテクスチャサイズからの解放です。これまでテクスチャの総サイズは出現するオブジェクトの数や割り当てられたメモリサイズに依存しており、それらを考慮しながらアセットを作成する必要がありました。SDKを使うことで大きな、そしてユニークなテクスチャを今まで以上に使うことができるようになります。完全な自由を得られるわけではありませんが、これまでとは比べ物にならない自由を手に入れられることでしょう。light-maps]をONにすれば使えるようになります。再度ライトマップをベイクする必要があるので、頻繁な切り替えは避けましょう▲<B>はライトマップ解像度512、<C>は2K。▲<A>RenderDocプラグインを有効にすると、ビューポート右上に起動用のボタンが追加されます。このボタンを押すと現在のビューポートのレンダリング状態を解析することが可能です/<B>RenderDocによる解析の例。SDKによりテクスチャがブロック状に分割されていることがわかるでしょう。SDKによるライトマップ。2Kの大きなライトマップが存在するため、標準の方は使用されていない無駄な領域が多くあります。評価版お申込み・ご購入について下記のリンク先にある、シリコンスタジオお問い合わせフォームよりお申し込みください。評価版をご希望の場合はその旨をご記入ください。【CGデザイナー募集】会社を「デザイナーが技術を探求する場所」に。話題になるフィギュア作りに挑戦できる会社です。MORE2024/10/22看護師からCGの世界へ。MORE2024/10/22看護師からCGの世界へ。V-Crew(ブイクルー)研修講師に就任。MORE会員登録してもっと便利にCGWORLDを利用しよう!会員登録のメリット記事の保存ができるCGWORLD.jpで気になる記事や後で読みたい記事などを保存することができます。※最大100件まで保存が可能セミナーが探せるボーンデジタルが開催しているセミナー情報を見ることができます。自分が登録しているセミナーも管理することができます。CGWORLDのランキングや最新の講座情報などをお届けするCGWORLDメールマガジンの配信管理ができます。ログイン本会員は「クリエイターズID」と連動しています。