『Warlander』でも使われた、大量の草をインタラクティブに揺らす仕組みをトイロジックが解説

『Warlander』でも使われた、大量の草をインタラクティブに揺らす仕組みをトイロジックが解説

2022.12.12
ニュース
この記事をシェア!
Twitter Facebook LINE B!
Twitter Facebook LINE B!

この記事の3行まとめ

  • 大量の草をインタラクティブに揺らす仕組みを紹介する記事が、トイロジック技術開発ブログにて公開
  • 投影テクスチャと頂点シェーダを使った草揺れの手法とその利点と問題点を紹介
  • その手法の解決策として、2チャンネルのHeightfieldの情報を使うDual Heightfield Trailについて解説

トイロジックは、『Dual Heightfield Trailによるインタラクティブな草揺れ表現について』と題した記事を、同社の技術開発ブログにて公開しました。

(画像はブログより引用)

公開された記事では本題に入る前に、大量の草をインタラクティブに揺らす仕組みの例として、投影テクスチャと頂点シェーダによる手法が紹介されています。

これは、真上から投影したテクスチャにフレームごとに足跡などを描画し、草の頂点シェーダで参照して草を曲げるという手法です。

(画像はブログより引用)

この手法はキャラクターや草が増えてもパフォーマンスが落ちにくいなどの利点があります。

一方で、高さの情報がないため、キャラクターが空中にいる時など、草に触れていないシーンでも草が揺れてしまう問題があると言及しています。

投影テクスチャと頂点シェーダによる草揺れの手法だと、たとえば地形が上下に重なっている場合、無関係な草も揺れてしまう(画像はブログより引用)

その解決方法として取り上げられているのが「Game Developer Conference 2019(GDC2019)」で発表された、Dual Heightfield Trailという手法です。

GDC2019で行われたInteractive Wind and Vegetation in ‘God of War’の講演動画

この手法ではRチャンネルとGチャンネルによる2種類のHeightfieldを使用します。

Rチャンネルは足跡の高さを示し、GチャンネルはRチャンネルを毎フレームフェードアウト(上昇)させたものです。

(画像はブログより引用)

草揺れ表現への利用としてRチャンネルでは草が踏まれたかどうか高さの比較により判断し、Gチャンネルでは踏まれてからの経過時間を割り出して草の揺れ幅のコントロールに使用できるとのこと。

同記事では、トイロジックが開発中のタイトル『Warlander』での利用例なども紹介されています。

(画像はブログより引用)

トイロジックが開発しているタイトル『Warlander』でのDual Heightfield Trailによる、インタラクティブな草揺れ表現の利用例

詳細は、トイロジック技術開発ブログをご確認ください。

『Dual Heightfield Trailによるインタラクティブな草揺れ表現について』トイロジック技術開発ブログ

関連記事

オープンソース・無料の3Dペイントツール「YoluPainter」リリース。AOのベイクやデカール生成、Unityとの同期にも対応
2026.10.11
GodotのiPhone/iPad版アプリ「Xogot」で、メッシュ生成・レベルデザイン機能が実装。今週のゲーム開発関連ツールまとめ
2026.10.10
Unity CLIとPipelineパッケージを連携し、エディタをコマンドラインで操作。Unity公式が使用方法を解説
2026.10.09
世界観やコンセプトの作り方は?グラフィックデザインの最新トレンドを掴む方法は?著名アートディレクターらがノウハウを語る「UIスクランブル」、10/16(金)渋谷で開催
2026.10.09 [PR]
コロプラのオンラインゲーム開発・運営システム基盤を解説。バックエンドエンジニア向け研修資料が公開
2026.10.09
アセット生成用の独自ローカルLLMも搭載。ゲームエンジン・配信プラットフォーム「EdenSpark」、正式にリリース
2026.10.08

注目記事ランキング

2026.10.04 - 2026.10.11
VIEW MORE

連載・特集ピックアップ

イベントカレンダー

VIEW MORE

今日の用語

物理エンジン
ブツリエンジン オブジェクトの物理挙動をシミュレーションする機能。ゲームエンジンの一機能として提供される場合や、物理エンジンの機能のみをミドルウェアとして提供する場合がある。
VIEW MORE

Xで最新情報をチェック!