προφε Jun/01/2026 19:00

開発日誌20260601

どうもです。大変お待たせしております。仕事がちょっとずつ落ち着いてきたのでようやく近況を報告する余裕ができてきました。今年の2月から5月にかけてはBlenderにて自作素材の製作を続けていましたが、この三か月くらいでようやく本格的に運用できる軽量破壊可能建物素材が出来上がりつつあるので今回はその報告になります(反面Unityは全然弄れませんでした…。)

①まずは既存素材を流用した破壊可能建物素材の問題点のおさらい

さて昨年あたりから自作の建物素材を製作していると書いてきましたが、少しおさらいしておくとこれにはいくつかの要因がありました。まず第一にこれはどんな作品にも当てはまる問題だとは思いますが『建物はゲームのイメージにあった素材でなければならない』という点が挙げられます。

有難いことに近年ではAssetStoreやBOOTHまたはCGTraderと言った様々な3D素材を扱うショップが存在しており、そこでは多種多様なビル素材が販売されています。実際私も今まではそれらを使用してゲームの素材としていました。しかし実際に自作ゲームを作成している人ならばわかると思いますが、それらをいざゲームに組み込んでみると素材ごとに雰囲気の違いというものが大きく出てしまうことにしばしば悩まされる事でしょう。例えば色合いであったり、規格の統一がなされていなかったり、テクスチャ調が違っていたりと、そこには様々な問題点が出てくるはずです(あと予算というのも大きな問題ですね)。個人的な話になってしまいますが、過去には上記のサイトをただひたすら周回して素材を探すなんていう日もあったりしました。まぁこんなことをしていれば非生産的なことだという事いうまでもないですね。そんな訳で自作の建物素材を使用する構想か過去からありました。

また『ゲームで使用するために適した破壊素材でなければならない』という点も課題でした。市販の建物素材はほぼ全て破壊することを前提として設計されていない素材になります。そのため今まではUnityにせよBlenderにせよ破壊可能建物を作成するには既存の建物素材をアドオンなどを使用して粉砕し、これらをUnity側で使用するというのがゲーム実装までの流れでした。しかしこの方法で作成した素材にはいくつかの問題点が存在しており、その最たるものは粉砕したオブジェクトのメッシュ構造にありました。



例えば一般的なビルオブジェクトは上記のようなメッシュ構造(キュービック)をしており(上側画像)、これをアドオンなどで粉砕すると内部空間が満たされた状態のメッシュが生成されます(下側画像)。この『構造的課題』が第二の問題点になります。まぁ普通のビルを想像してみればわかると思いますが、中身がすべてコンクリートで充填されたビルなどは存在しないはずですね。そのため市販のビル素材を粉砕することは簡単でも粉砕した後には現実的にはあり得ない構造になってしまう問題がありました(もちろんゲームなのですべては非現実なのですが)。そこで自作オブジェクトではこれらの問題を解決するために下記の様な構造にすることにしました。



現在制作中の素材では上記のように1フロアごとを壁で囲む様な構造にしております。アセットストアなどにおいても上記の様な構造をしたビル素材は存在しますが、大多数はメッシュ数削除のために『外壁だけの1面のみで作成されているものが主流』です。つまりメッシュには厚みがないということですね。これらの素材をアドオンなどで粉砕しようとすると大抵は下記のようにメッシュが破綻して上手く粉砕できないという問題に直面することでしょう。以上のことから自作素材の作成を進めていたわけです。

*下記は補足です
(CellFractureでメッシュに穴がある形状を粉砕すると下記の様なメッシュが作成されてしまいます。例えばビルの様なオブジェクトだとプレイヤー側からは見えない地面側のメッシュはリソース的に大抵は削除されています。しかしこの様なメッシュ形状では側面が厚み0のメッシュとして認識されてしまい、この情報でカッティングが行われた結果、本来のメッシュよりも巨大なオブジェクトが生成されてしまいます。これはボロノイ分割の仕様上これは仕方がない問題ですが、ゲームで使うと不自然に見えてしまうために大きな課題となっていました。CellFractureは無料で使える反面、この様な面の粉砕は難しいアドオンです。)




(この巨大化した塊を削除してしまうと元となった部分のメッシュが欠けてしまうというジレンマに陥ります)

②効率的に軽量化する手法の確立

さておき、①では触れませんでしたがゲームにおける軽量なビル破壊のお手本とも言うべき存在は個人的には地球防衛軍シリーズ(以下EDF)だと過去には書きました。EDFシリーズでは自身の攻撃やフォーリナーとかプライマー(巨大な敵)の攻撃などによってビルが破壊されますが、このゲームでは通常のヒューマンスケールのカットインなどで起きる破壊(壁の一部のみの破壊など)とは違って全てをローポリで完了する設計となっています。ちなみにEDFのビルの構造は下記の様なものになっていした。




(上記のように建物を破壊した後の塊は一定の厚みがあります)


(破壊後のがれき。プレイしたことがある人の脳内にはきっと死の疾走が流れてきますねw。ちなみにエアレイダーでスーパーアンドロイドとの戦闘はいつも苦戦させられました。)

これは自分が作成している素材の参考としているためほぼ同じ様な作りになっていると言えます。粉砕した後も厚みがある壁が複数のパーツに分かれているのがわかりますね。ただ問題点はどのようにしてこの素材を製作するかにありました。Blenderには優秀な無料アドオンのCellFractureが存在しているのでこの様な素材を作成するのは一件簡単そうに思えるのですが、実は粉砕した後に自動でデブリを一定の大きさにまとめる手法が存在しないのでここがネックとなっていました。もちろん粉砕したオブジェクトをすべてネイティブに物理演算してやるのも一つの手ですが(今までの手法)、これだとハードが悲鳴を上げてしまいます。そのため、ある程度はメッシュを結合して物理演算を減らす必要がありました。

…でBlenderの話に戻るのですが、ビル製作のノウハウに関する動画は数多くあれど、この手の素材作成における参考資料などはあまりみつかりませんでした。もちろん一つ一つ丁寧に作成すればEDFの様な建物を作ることはできるのですが、個人製作の場合これだといくら時間があっても足りません。そこで何かいいアイデアはないかと思案しているとアナログですが結構効率的な方法が思いつきました。それがCellFractureで粉砕した後に手動でメッシュ結合をしよう、というごく当たり前の手法でした。


(壁ごとにCellFractureで粉砕した後に結合というのが流れです。)

(ちなみにCellFractureは複数マテリアルが混在していると上手く反映されないのでマテリアルごとで分割できるようにビルを設計するのもコツでした)

方法は至ってシンプルで、上記のようにCellFractureで粉砕したオブジェクトをWireframe表示した上でShift選択し、これを結合するという単純な手法です。もちろん最初はPythonなどですべて自動化できないかと考えましたが『ちょうど良い大きさでまとめる』『ランダム性を持たせる』という二点を考慮すると皮肉にも手動での作成が結果的に効率であるとわかりました。つまるところ軽量化の手法の確立は半分は自分のBlender能力の向上がメインだったようです(苦笑)。ただこの手法のメリットは規格さえ揃えれば複数の建物素材を効率的に作成することが可能ということも言えます(テクスチャ変更だけでだいぶバリエーションがつくれそう)。今後はこの方法を駆使してバリエーション作成をすることができそうです。

③自作素材の負荷テスト


ということで肝心の動作チェックをしてみました。まだエフェクトを付けていないテスト段階ですが自作素材をUnityにて動かしてみました。結果は一目瞭然ですね。両者は30階分のビルになりますが、ネイティブに個別粉砕してあるオブジェクトでは1FPSしかでていないのに対して塊ごと(Chunk)にまとめた方は通常処理内に収めることができました。原因は当然ながら演算にリソースを取られない点にあります。個別粉砕している素材では全てのオブジェクトにメッシュと物理演算があるのに対し、塊ごとの素材では1/20くらいの物理演算で済みます。まぁ問題があるとすればUnity側のコリジョンを付けなおさなければならないという点でしょうか。現在はコリジョンの作成が済んでいないので上手く壊れませんが今後はここの改善をする予定です。また当然ながらビルの崩壊はメッシュが細かい方がリアルですが、ゲーム実装時にはここに煙やスパークなどVFXを追加するので見栄えは実際それほど気にならないと思われます。


(UnityではConvexONにするとBlenderのようにコライダーが生成されません。そのためコライダーを別途作成しないと粉砕系はダメなんですよね。)

④今後の予定

さて最後に今後の予定について記しておきます。現在Blender側の作業が遅れているのでUnity側のシステム製作が滞っていますがBlender側の作業が終了したのちにコチラに手を付ける予定です。なお次回アップデートは建物や道路などのアップデートをするつもりです。

また現在作成している素材はBOOTHにて販売する予定ですが、今回はテストをかねて無料プランに加入している人向けに素材を配布します。先ほども述べた通り調整は済んでいませんのでBlenderからFBX形式でエクスポートしただけの素材になります。BOOTHにて販売する際にはUnitypackageにまとめてコライダーや処理用のスクリプトなどを付与した形式で配布する予定です。使用しているテクスチャはCC0素材ですので商用利用・改変は全て自由です。

それでは今回はこの辺で。

Exclusive to users above "Follower"Free

無料プラン限定特典を受け取ることができます

Free

If you liked this article, support the creator with a tip!

Sending tips requires user registration.Find details about tips here.

Latest Articles

Search by Article Tags

Monthly Archive

Search Articles