
2008年の設立以来、「"Entertainment in Real life" エンターテインメントで日常をより楽しく、より素晴らしく」をMissionに掲げ、新しい発想のモバイルゲームを世に送り出し続けているコロプラ。
同社は2021年からUnityのレンダリングパイプラインをUniversal Render Pipeline(URP)へ本格移行し、2024年1月にはその研究成果を短篇アドベンチャーゲーム『PRINCIPLES』配信へと昇華させ、話題を呼んだ。
今回の「モバイルゲームグラフィックス最前線」では、『PRINCIPLES』で培った表現力を基盤に、「メンバーが変わっても同じ品質を再現できるか」、「さらに表現のスケールアップを図れるか」を切り口として進めた検証について、菅原祐介氏と春田晃伸氏が解説。聞き手はユニティ・テクノロジーズ・ジャパンの黒河優介氏が務めた。
関連記事
・ボリューメトリックフォグも、シャドウもブルームもあきらめない。コロプラにUnity URP移行の今を聞く
・「HDRPの表現をURPでも可能にする」URPへの移行を実現したコロプラの次の挑戦とは?
・技術開発を自己満足で終わらせない。コロプラ技術デモにおけるVFX表現の取り組み
・新作アプリ体験会で感じた、コロプラの次世代のモバイルゲームグラフィックス開発への意欲
・コロプラの技術的挑戦が結実! 『PRINCIPLES』リリースから改めてふり返る、開発中の課題とその解決方法
・コロプラの新たな挑戦! ハイクオリティな表現を短期間で量産するための背景とライティングの取り組みとは?
Recruiting Information
コロプラでは3Dアーティストを募集しています。当社はこれまで常に最新のテクノロジーと独創的なアイデアで、人々が見たことのない"新しい体験"を届けることに挑戦してきました。"新しい体験"を私たちと一緒にゼロから創りだしていただける3Dアーティストの方のご応募をお待ちしております。

Houdini EngineとHDAで破壊表現をテンプレート化
黒河優介氏(以下、黒河):今回から進行役を務めさせていただきます黒河です。まずは、今回の検証テーマについて教えてください。

ユニティ・テクノロジーズ・ジャパン株式会社 パートナーエンジニア
Unityでは、仲間を積極的に募集しています。私たちは世界中のクリエイターと共に、ゲームはもちろん、自動車、製造、ロボティクスなど多様な分野で「想像力を現実に変える」リアルタイム3Dのプラットフォームを提供しています。
Unityの最先端技術とグローバルな仲間と共に働いてみませんか?
菅原祐介氏(以下、菅原):今回は『PRINCIPLES』で培った表現をベースに、目に見えるVFX要素の効率化と再現性向上に焦点を当てた検証を行いました。テーマとしては「Houdini Engine」、「Houdiniでのベイク破壊」、「EmberGenとSix-Point Lighting」、「VFX Graph」、そして「APVライティングシナリオ」という5つになります。
春田晃伸氏(以下、春田):私からは特に「APVライティングシナリオ」についてお話しします。

株式会社コロプラ テクノロジー推進本部 横断アート部 マネージャー

株式会社コロプラ テクノロジー推進本部 技術研究部 開発環境構築グループ クライアントエンジニア
菅原:ではまずHoudini Engineについて。これまでも様々なオブジェクトに対して破壊表現を試みてきましたが、今回は「破壊表現のテンプレート化と柔軟な運用」が主眼でした。ランタイム破壊には事前に分割されたモデルが必要ですが、Houdiniを扱える人材が限られているため、アセット制作や調整が属人化しがちという課題がありました。
黒河:それは多くのスタジオでも課題になっていそうですね。
菅原:そうですね。そこで今回は、Houdini Engineと破壊用のHDA(Houdini Digital Asset)を活用し、Unity上だけでオペレーションを完結できる体制の構築を目指しました。具体的には、UnityのInspector上で分割数を指定するだけで済む簡単なしくみを実装しています。また、コリジョンのタイプも、メッシュ、ボックス、スフィアなど多岐にわたり設定可能です。

黒河:コリジョンのタイプまで制御できるのは便利ですね。
菅原:はい。Houdiniのアトリビュートで柔軟に切り替えられるので非常に助かっています。さらに、分割された破片のサイズに応じて質量やリジッドボディを自動設定するUnity用のツールも社内で開発しました。
HDAを通じてモデルを一度分割すれば、あとはクリックひとつでリジッドボディの設定が完了し、そのままシーンに配置するだけで済みます。エンジニアでなくても破壊エフェクトを手軽に実装できるようになる、社内向けの効率化ツールです。今後は社内全体へ展開し、よりしくみ化を進めたいと考えています。
黒河:それは、ちょっとした革命ですね。
菅原:まさにその通りです。これまで必要だったツール間の往復や、HoudiniからのFBX書き出しといった手間がいっさいなくなり、モデルさえあればUnity内で完結できるようになりました。Houdini EngineとUnityの連携がもつ真の強みを実感できるしくみになったと思います。
黒河:複雑な破壊表現にも対応できるのでしょうか?
菅原:今回のHDAは、比較的シンプルな形状に限定した破壊を対象としています。個別に特徴的な破壊を表現したい場合は、やはりHoudiniに戻って手作業で作成する必要があります。そこは今後の課題ですね。
黒河:そういったユニークな破壊物は、テンプレート化にかかる工数を考えると、手作業の方が効率的かもしれませんね。
菅原:おっしゃる通りです。いわゆる“プロシージャル・トラップ”にハマりがちというか、しくみをつくるのが楽しくて、つい手をかけすぎてしまうんですよね(笑)。
Houdiniでのベイク破壊のスケールアップ
菅原:今回は、Houdiniによるベイク破壊にも挑戦しました。『PRINCIPLES』でも壁が崩れるような簡単なベイク破壊は実装していましたが、今回はよりスケールアップさせようという目標のもとに破壊の規模を拡張し、「壊れて→さらに壊れて→キャラクターが巻き込まれて落ちる」といった段階的な演出を目指しました。
黒河:前回と比べて、演出のレベルが数段階上がっていますね。
菅原:はい。最初はHoudiniのシミュレーションだけで一連の動きを完結できないかと試みたのですが、屋根が崩れ、その後に地面が崩れるといった段階的な破壊をシミュレーションだけで制御するのは想像以上に難しかったんです。演出上の“間”やタイミングを意識すると、部分的に手付けアニメーションを組み合わせる必要があるという結論にいたりました。
黒河:シミュレーションだけでは、やはり演出や“間”のコントロールは難しかったわけですね。
菅原:そうですね。CGWORLDの記事でも「ここは手付けで対応した」というようなコメントをよく見かけますが、今回、「こういうことか」と身をもって実感しました(笑)。
例えば、キャラクターが滑り落ちる地面は決まった角度に傾けたかったので、BendやPoint Deformといったシンプルなノードを使ってオブジェクトを曲げ、それに破片オブジェクトを追従させるという方法を採りました。キャラクター操作と演出の都合を優先して、手付けアニメーションで制御しています。

黒河:それができるのは、さすがHoudini。強いですね。
菅原:ええ。天井が崩れて、さらに床が崩れるといったやや複雑なシミュレーションに挑戦したことで、デモで使用した「リングが元に戻る表現」や、よりシンプルなベイク破壊もスムーズに扱えるようになりました。難しい表現に取り組んだ経験が、結果として開発全体の効率化につながったのは、大きな収穫だったと思います。
黒河:「リングが元に戻る」あの演出も、Houdiniでベイクした破壊表現だったんですね。
菅原:そうなんです。Unityへの取り込みも非常に簡単で、Timeline上でコントロールしています。
黒河:戻る動きもTimelineで制御しているんですか?
菅原:はい。Timelineは本当に便利で、カットシーン制作でも積極的に活用しています。
黒河:『PRINCIPLES』でも感じたのですが、プレイ画面からカットシーンへの遷移がとてもスムーズですよね。
菅原:ありがとうございます。実はそこにもいろいろと苦労がありました。カメラの連動が上手くいかなかったり、オフセットが合わなかったり……。試行錯誤を重ねながら、何とか実装にこぎつけたというのが正直なところです。
EmberGenと6Point Lightingによる煙素材制作
黒河:続いて、今回はEmberGenを新たに導入されたとか。
菅原:はい。『PRINCIPLES』では、煙の素材をHoudiniで作成し、MDCテクスチャを書き出していたのですが、難易度が高い上にレンダリングにもかなりの時間がかかっていたんです。そこで、「もっと試行錯誤しやすいツールを」と考え、今回新たにEmberGenを導入しました。
EmberGenはボリューム表現に特化したツールで非常に触りやすく、「ちょっと試してみたい」「形が上手くいかない」といったときのイテレーション速度が大幅に向上しました。
黒河:EmberGenのラーニングコストはどのくらいなんでしょうか?
菅原:社内では「この手順で進めれば使えるよ」という簡単なドキュメントを整備していて、だいたい1週間もあれば実務で使えるレベルになります。その点、Houdiniはまず概念の理解からですから(笑)。
黒河:Houdiniは数学的なアプローチも求められますしね。
菅原:そういった部分が苦手なアーティストも少なくありません。EmberGenは豊富なプリセットをベースにパラメータを調整していくスタイルなので、いきなりゼロからつくるケースはほとんどないです。もちろん、特殊な煙の形状を求める場面ではHoudiniの出番かもしれませんが、逆にゲームシーンのように“あまり個性を出したくない”演出にはEmberGenの方が適していると思います。
黒河:EmberGenがあるからHoudiniはもう要らない、という話ではないわけですね。
菅原:まさに適材適所です。6Point Lightingシェーダについても、UnityさんのEmberGen検証記事を読んで、EmberGenから6方向のMDCテクスチャが書き出せることがわかっていたので、すぐに移行できました。シェーダ自体は『PRINCIPLES』で使っていたものがベースにあったので、エンジニアに相談して、6方向テクスチャを活かすかたちで簡単に組み込めたんです。

黒河:『PRINCIPLES』でも、光の影響を受けるエフェクトにこだわって、専用のシェーダを開発されていましたよね。
菅原:はい。今回はそれに少し手を加えただけでEmberGenにもそのまま適用できました。当社では「COLOPL Creators(コロプラクリエイターズ)」というブランドで技術検証を行なっているのですが、2023年12月に6PointシェーダのEmberGen対応を実現したことをXで発信しています。EmberGenでライティングが効く、これはエフェクトデザイナーにとって本当に嬉しいことです。
今期からEmberGenの導入を進めてます!
— COLOPL Creators (@colopl_creators) December 18, 2023
それに伴いシェーダーもEmberGenから出力される6wayLightmapに対応できるように調整
高速なシュミレーション性能ですぐに結果を確認できるので、デザイン面に時間をかけることができますね!#Unity #EmberGen #vfx pic.twitter.com/fu46aoYYSn
黒河:ライティングが当たっていないと、エフェクトだけ浮いて見えてしまいますからね。
菅原:そうなんです。光が当たるだけで画面に馴染みますし、どんどん煙を置きたくなってしまいます(笑)。
黒河:デモをプレイしていて印象的だったのは、爆発や火花のような派手なエフェクトに囚われがちなところを、足元の土煙のような地味な演出も丁寧に使っている点でした。
菅原:ありがとうございます。カットシーンなどでも場を賑やかす演出として、煙を気軽に配置できるのが6 Pointシェーダの強みです。今後も他のプロジェクトでどんどん活用していく予定です。
VFX Graphによる動的なトレイル表現
菅原:UnityのVFX Graphは前回の検証でも扱っていましたが、今回は「よりVFX Graphらしい活用ができないか」と模索していました。その中で、スイングアクションで“フックショット”のような動きを再現するトレイル表現に注目したんです。変動する2点間をリアルタイムで結ぶ表現は、Shurikenでは対応が難しいですから。
黒河:確かに、Shurikenでは限界がありますね。
菅原:今回は、キャラクターが一定の距離ではなく、変動する距離でいつでも発動できるフックアクションの検証もしていたので、VFX Graphがまさにぴったりだと感じました。
VFX Property Binderで外部のノードをバインドできるのが非常に便利で、キャラクターの手元と、ゲーム側でエンジニアが実装したフックの行き先ポイントを繋ぐだけで完結します。Shurikenでは不可能だった表現を、デザイナー側である程度実現できるありがたさを感じました。
黒河:手元と行き先のセットだけで済むようになったんですね。
菅原:そうなんです。発動タイミングも、Shader GraphとVFX Graphの連携で調整できます。ここがVFX Graphの強みですね。

菅原:それと、VFX Graphの拡張アップデートにも非常に助けられました。『PRINCIPLES』では、スクリーンスペース上でDepthを取得し、火花がコリジョンに当たっているように見せる表現を社内で実装していたのですが、今回はすでに「Collide With Depth Buffer」という、そのままの機能をもつノードが標準で用意されていました。ノードを追加するだけで自動的に深度を取得し、処理してくれるので、「VFX Graphも日々アップデートされているんだな」と実感しました。
春田:前回はかなり苦労して自前で実装して、それでもバグが出たりして大変な思いをしましたが、今回はノードを貼り付けただけで終わっちゃいました。
菅原:一瞬で終わりましたね(笑)。他のエフェクトにも衝突判定を付けたくなるくらい快適でした。さらに、Unityの公式サンプルシーンもとても参考になり、自分でアトリビュートを設定できたり、距離に応じてTravel値を自動取得できたりと、ノードを見るだけで「これならこんなエフェクトに応用できそうだな」と発想が広がっていきます。
黒河:Shurikenはパラメータ調整が中心でしたが、VFX Graphはノードベースで自由度が高いぶん、「何をどうしたらいいのか」と戸惑うこともありますよね。
菅原:そうですね。だからこそ、サンプルシーンがとてもありがたかったです。でも同時に、Shurikenもまだまだ大事な存在だと再認識しました。
黒河:今回のデモでは、どのあたりにShurikenを使われていたんですか?
菅原:例えば、飛び散るようなシンプルなエフェクトや、エフェクトのリングが出るような表現など、いわゆる定番エフェクトはShurikenの方が楽で速くて安定しています。やはり使い分けが重要ですね。今後も、Shurikenとも仲良くしながら、VFX Graphを適材適所で使っていきたいと思っています。
APVライティングシナリオで時間帯ごとの環境を制御
春田:今回、APV(Adaptive Probe Volumes)については、ライティングシナリオとそのブレンド機能の検証・導入を行いました。ブレンドを活用するには、アプリケーション側でシナリオごとの環境設定をあらかじめ用意しておく必要があります。これを手動で行うのは、ベイクが数分で済むようになったとはいえ効率的ではありません。
そこで今回、ボタン操作ひとつで、環境を切り替えてベイクする作業を自動でくり返すしくみを社内エンジニアが開発しました。
黒河:それは便利ですね。

春田:ブレンド機能といえば、やはりスライダで自由に調整できるようにしたいところです。今回は確認用としてスライダ上でブレンド具合をコントロールし、どの時間帯のライティングシナリオでも破綻が起きないよう調整できる機能を実装しました。
黒河:素晴らしいです。
春田:ライトパネルによるスカイボックスや環境光の設定に加えて、オブジェクトの配置や有無、太陽の向きなども、時間帯に応じてシナリオごとに調整できます。これによって、各シナリオに最適な環境効果が正しくベイクされるように工夫しています。
黒河:「Noon」や「Evening」などのシナリオを展開すると、設定の内容が確認できるようになっているんですね。

春田:はい。ゲームオブジェクトの設定や、マテリアルのパラメータ設定などが含まれています。
黒河:なるほど。例えば、夜だけランプが点灯するといった表現を行う場合でも、こうしたしくみがなければアーティストだけで作業が完結しませんからね。
春田:そうなんです。加えて、Unity 6がGPUのライトベイクに正式対応したことも非常に大きな変化でした。性能の高いGPUを搭載したマシンさえ用意できれば、一瞬でベイクが完了するようになりましたから。
黒河:私もCPUで処理していたころは一晩放置していたようなタスクが、Unity 6では10分ほどで完了するようになりました。
春田:今回、RTX 4070 Ti SUPERを使用して3〜5分程度に短縮できました。
菅原:ワールドの幅が約500mあるにもかかわらずです。
春田:広めのワールドにもかかわらず、イテレーションが非常に高速になりました。ただし、メモリの最適化やストリーミングの安定性にはまだ課題が残っていたため、社内で一部修正を加えています。とはいえ、最近はUnityのバージョンアップによってこれらの課題が公式に解消されることも増えており、以前に比べて独自パッチの出番は減ってきました。
黒河:Unity側で対応される前に、自前で修正して使えるというのは強みですね。そのぶん、検証などに時間を割けるわけですから。
春田:ありがとうございます。以前はエンジンのC++コード側に書かれていたと思いますが、APVはURPやコア側に書かれているため、エンジニアが直接内容を確認できるのも大きな利点です。
黒河:やはりコロプラさんのエンジニアは、非常にスキルが高いと感じます。ちなみに、デモではAPVのブレンドが前面に出てくる印象がありませんでしたが、その点はいかがでしょうか?
春田:モバイルではブレンドのストリーミング機能を有効にしないと動作しないのですが、有効にすると今度は処理が間に合わなくなってしまうんです。例えば、トンネルを抜けた先に開けた空間があるようなシーンでは、遠景がブレンドされる前に描画されてしまい、破綻が生じます。現在、この点については社内で研究中です。
菅原:夜のタイミングで少し間があるのですが、あれはブレンド処理の時間を確保するためなんです。モバイルでどう実装していくかは、引き続き挑戦しているテーマですね。
検証した技術を全社展開し次世代表現へ挑む
菅原:今回の検証は、スケールと効率化をテーマに進めたことで、実践的な知見を多く得ることができました。知識として知っているだけではなく、やはりやってみないとわからないこともあると、改めて実感しました。
コロプラは、やはり面白いゲームを届けたいという思いが強い会社です。だからこそ、こうした知見をチーム全体に共有し、生産性を高めることで「どうすればゲームが面白くなるか」というところにもっと時間を割いていきたいと考えています。実際に、今回の成果はすでに一部プロジェクトに還元されており、今後も全社的に展開していく予定です。
春田:APVという新たな選択肢が加わったことで、従来のライトプローブグループやライトマップ、あるいは『PRINCIPLES』で使用していた社内開発技術も含めて、それぞれのGIソリューションの向き不向きを比較検証できたのは有意義でした。
これによって、今後タイトルごとの仕様に合わせて最適なGI手法を選択するためのリファレンスができたと捉えています。これを次のプロジェクトにも活かしていきたいです。
黒河:事前にそうした知見があるのは素晴らしいですね。行き詰まってから変えようとすると、変更先でまた別の課題に直面しがちですし、最初からアドバイスをもらえるのは心強いと思います。ちなみに、APV以外にも検証されている技術はありますか?
春田:レンダーグラフや、STP(Spatial Temporal Post-Processing)という非常に高性能なアップスケーリング技術も現在検証を進めていて、すでにプロダクトへの導入フェーズに入っています。
黒河:今回の検証で開発されたツールも含め、どんどん社内に展開されているのですね。
菅原:そうですね。例えばHoudiniのHDAはまだ展開するフェーズにはいたっていませんが、しくみさえ整えればすぐに採り入れられるものなので、今後さらに開発を進めていく予定です。
春田:われわれはプロダクトの“ほぼ”メンバーという立場で関わっていて、「これをやりましょう」と提案できるポジションにあります。専任のエンジニアだけでなく、各プロジェクトのデザイナーにも働きかけて、随時最適化を導入できています。
黒河:それはとても強力な体制ですね。Unityでも「つくる側」と「使う側」が分かれていると、どんなにすごいツールをつくっても上手く活用されない、使い方が上手く伝わらないといったことが起こりがちです。コロプラさんのように、ツール開発者が現場に入って直接サポートするかたちは本当に理想的だと思います。
菅原:今回はHoudiniを本格的に使い込んだことで、その柔軟性と表現力の高さを改めて実感できたのも、大きな成果でした。当社としても、Houdiniを扱える人材をさらに増やしていきたいと考えています。Houdini“つよつよ”の方に、ぜひ来ていただけると嬉しいですね。
黒河:では、次回はどういったテーマを予定されていますか?
菅原:今回のデモでは、モーション表現にもかなりこだわっていて、モーションのブレンドや、エンジニアとの連携で実現した演出なども多くあります。そのあたりを次回の切り口として取り上げられたらと思っています。
黒河:それは楽しみですね。本日はありがとうございました!

Recruiting Information
コロプラでは3Dアーティストを募集しています。当社はこれまで常に最新のテクノロジーと独創的なアイデアで、人々が見たことのない"新しい体験"を届けることに挑戦してきました。"新しい体験"を私たちと一緒にゼロから創りだしていただける3Dアーティストの方のご応募をお待ちしております。

TEXT__kagaya(ハリんち)
EDIT_小村仁美 / Hitomi Komura(CGWORLD)