竹林ソフト 2023/05/28 20:00

すくすくスクワット VR(スクワットで育つ樹木の開発)

スクワットすると育つ樹木を仮実装していきます。

アセット選び

小難しく考えると実装できないので、手持ちのアセットから樹木と草花を探しました。

↓木をカスタマイズして作れるアセット
Broccoli Tree Creator

これは何かのバンドルで購入してたアセットで、樹木のパラメータをスクワット回数に応じて動的に変更できるかを確認します。

↓草花の Low Poly アセット
Low Poly Vegetation Pack

大きな樹木を複数人で囲んでスクワットするのも味わい深いのですが、花壇わきでスクワットして花が咲いたら隣の花壇に移動するような風景もいいなぁ、と思ったので花のアセットも選びました。

樹木や花がすくすく育つ様子を表現する

樹木が育つ表現

↓アセットを選んだ後で、樹木が育つ様子をどうにかできるのか調べてて出てきた記事からの抜粋です。

Broccoli does not provide a way to go trough animated steps to grow a tree. The runtime demo actually creates full grown trees and just scales them on their position. You can control almost every aspect of the tree, but you end up creating a new mesh every time changes are commited and processed.

機械翻訳

ブロッコリーでは、木を成長させるためのアニメーションのステップを踏む方法は用意されていません。ランタイムデモでは、実際に成長した木を作成し、その位置でスケーリングするだけです。木のほとんどすべての側面を制御できますが、変更をコミットして処理するたびに、新しいメッシュを作成することになります。

ぐぬぅ。
そういう用途では設計されてないらしい。がんばって動的に処理してみるか、段階に分けたテンプレートを用意しておいて切り替えながら表示するかはできそう。

そして実際に触ってみて、木を構成するパーツについての Random Seed は固定にできるのがわかった。なので、Random Seed を固定にして各パラメータを成長に合わせて少しずつ変化したものを生成して読み込むようにすれば育つ様子は実現できそうなのがわかった。

ここまでの結論としては「できるけどめんどい」「そこまで真面目にやるプロジェクトか、これ?」です。

花が生えてくる表現

樹木をどうするか考えるのに疲れたので、花については簡単な表現にしようと思います。

案: スクワットを1回するたびに花壇に花が1本生える。

この案の懸念点としては、スクワット時には顔は正面を向いたほうがいいと思うので、あんまり近くに花壇があるとよくなさそうな点でしょうか。

とりあえず、この仕様で一定時間ごとに花が生えてくるデモを作ろうと思います。

花が生えてくるデモ

そして、作ったデモがこれです。

動作はこれでいいと思うのですが、スクワット回数が増えてくると花の数が増えるわけで、そうすると描画負荷が大丈夫かなというのが気になります。
もう少し詳しく書くと、描画負荷そのものよりかは「重要でない表現に負荷をかけたくない」というのもあります。1回のスクワットで花の大きさを少しずつ大きくして、最大の大きさになったら次の花を生やす、とかの方法がよいかもしれません。

まとめと今後の予定

樹木について、単に拡大しながら育成するだけなら簡単そうなのですが、枝葉がだんだん増えるような表現は少し大変なのがわかりました。どうするか少し考えます。
気になる点もありますが、とりあえず花が生える方法で開発自体は継続しようと思います。がんばります。

月別アーカイブ

限定特典から探す

記事を検索