BlenderとUnityで作ったものをVR(Meta Quest/Oculus Link)で動かします

ブログの女の子を作る #106 テニスのアンダースコートを作ってボールを打ってみる【Blender】

 
前回は「明日ちゃんのセーラー服」で体育祭の回を見ていたらテニスウェアとスコートを作りたくなったので作ってみました。
 
今回は、スコートに下にはくアンダースコートを作ります。



開発環境

・Blender 3.0.0
・Unity 2021.3.0f1
・CPU:AMD Ryzen 7 3700X
・グラボ:ASUS ROG-STRIX-RTX2060S-O8G-GAMING
 

(1) アンダースコートを作る

アンダースコートを作っていきます。
 

パンツを流用する

イチから作成するのは面倒ですので、以前の記事で作ったパンツを流用します。
 
もう少し表面積が大きくなるように形を整えておきます。
 
こんな感じでしょうか。
これをベースにしていきましょう。
 

ミラー化とメッシュ調整

今後の作業がしやすくなるように「ミラー」モディファイアーをかけておきます。
 
まずはオブジェクトの頂点を半分削除します。
 
これで良いですね。
 
次に、「ミラー」モディファイアーを追加します。
反対側にオブジェクトが表示されました。これでOKです。
 
ついでに、メッシュの流れがあまり良くなかったので調整しておきましょう。
四角形メインのメッシュになりました。これで作業がしやすくなりますよ。
 

フリルを付ける

アンダースコートにフリルを付けていくんですが、フリルを付けるためには「カーブ」をオブジェクトとして抽出する必要があります。
 
まずは「フリルを付けたい位置」の辺を選択します。
 
次に、「分離 -> 選択」を選択すると、選択した部分だけを分離できます。
 
最後に「オブジェクト -> 変換 -> カーブ」を選択すれば完了です。
 
「カーブ」ができました!
このカーブにフリルを追加していくことになります。方法はこの記事で書いたのと同じですね。
 
今回のフリルは、後述する「レースの透過画像」を使いますので、少し凹凸があるだけのシンプル構造にしてみました。
 
「配列」と「カーブ」モディファイアーを追加すると、カーブのオブジェクトに沿ってフリルが表示されました!
 
あとは、すべてのカーブにフリルを追加しておきます。
 


(2) レース柄のフリルにする

ネットで調べてみると、アンダースコートのフリルは「レース柄」が多いようですね。
 
今回は、「mame-co」様のテクスチャ画像を使わせていただきました!
 

Blenderでアルファ画像を設定する

アンダースコートのオブジェクトは最終的にはUnityで表示しますが、Blender側でも作業しますのでテクスチャ画像を設定しておきます。
 
アンダースコートのマテリアルにテクスチャ画像を設定後、「Shading」タブに切り替えて「画像ファイルのアルファ」と「プリンシブルBSDFのアルファ」のノードをつなぎます。
 
テクスチャ画像の一部が透けて、レース柄が見えるようになりました!
 
あとはフリルの角度調整です。「傾き」を使ってカーブをねじり、フリルが表側に出てくるよう調整します。
 
これで良いですね。
 
足の付け根部分にもフリルをつけておきました。
 

フリルの形を崩す

今のままでも良いのですが、フリルが整列しすぎな気がしますので少し形を崩しておきます。
 
フリルの端部分を選択状態にして、
 
「ランダム選択」を実行します。
 
「アクション」で「選択解除」を選択すると、選択していた箇所がランダムで解除されました。
 
 
この状態で、移動や拡大縮小を実行して形を崩しておきます。
これで完成ですね。
 

(3) Unityでの動作確認と微調整

FBXファイルにエクスポートして、Unityにインポートします。
 

スコートにMagica Clothを設定する

スコートに「Magica Cloth」アセットを設定します。
フリル部分がスコートを貫通しやすいので、Fixed Point(赤丸)を多めにしてみました。
 
Playボタンで動かして見ます。
右側が今回作ったスコートなんですが、スコートの端部分が固い?というかヒラヒラ感が少ない感じです。
 
 
Blender側で調整してみましょう。
 
端部分を選択し、拡大してみます。
 
Magica Cloth を再設定したところ、今度はイメージ通りの動きになりました!
良いヒラヒラ感です。
 

テニスコートを作る

せっかくですので、テニスコートを作ってみました。
 
今回、購入したアセットです。
 
コート周りのフェンスはフリー版でした。
最初、別の有料版フェンスを購入したのですが、こちらの方が使いやすいのでフリー版を使ってます。
 
テニスコートと青空の組み合わせはとても良いですね。
 
フェンスの外から見ると、なかなかリアルな感じです。
 

フリルを増やす

その後、Unityでいろいろ動作確認したんですが、意外とフリルが見えにくかったのでフリルの数を増やして、大きさも調整してみました。
 
これが最終形ですね。
 
 
Unity側で見るとこんな感じです。
使ってるポリゴン数は少ないのに、レース柄のテクスチャ画像のおかげでクオリティがアップしてます。素晴らしい!
 

実際にボールを打つよう実装する

ラケットを持って素振りするだけでは寂しいですので、実際にボールを飛ばしてラケットで打ってみるように実装してみました。
 
以下、やったことのメモです。
  1. キャラクターの「LowerArm_R (右手)ボーン」以下にラケットのオブジェクトを配置。本当はグリップを握らせたかったのですが、Timeline の Avator Mask では「手先の角度」を変更できなかったので今回は諦めました。指や腕全体はマスクできるんですけどね。Final IK とか使えば良いんでしょうか。
  2. ボールとラケットに Collider と Rigidbody を追加。
  3. Rigidbody の Collision Detection は Continuous Speculative を使用。ボールの貫通防止です。
  4. Physic Material を新規作成して Collider の Material に設定。Bounciness は 0.9程度で。これで良い感じに跳ね返ります。
  5. テニスのモーションは 以前に Motion Library で購入したもの(emo0004-Forehand Stroke)を使用。最近はサイト内容が変わってようで、どこからモーションを購入すれば良いかわからなくなりました。モーションキャプチャのガジェットはあるんですけどね。Rokoko Studio というアプリは何か違う感じですし。もっとお手軽にモーションを買いたい。
  6. 「反対側のコートから、Rigidbody の AddForceメソッドでボールを打ち出す」オブジェクトを作成。ラケットの transform を取得して、その位置に向かってボールを飛ばします。打ってからのタイムラグがあるので、ラケットに当たることはまれですが。
  7. Timeline にモーションを登録し、Signal Track で任意のタイミングで「ボールを打ち出すメソッド」を実行。この記事で使った方法ですね。
 

動画で確認する

動画で確認してみましょう。
 


まとめ 

アンダースコートを作成して、テニスコートでボールを打ってみました。
 
なんとなくですが、テニスやってる感ありますね。
良い感じのテニスウェアになりました!
 
スポンサーリンク

コメント

  • トラックバックは利用できません。

  • コメント (0)

  1. この記事へのコメントはありません。

ブログの女の子を作る #105 テニスウェアとスコートを作る【Blender】

ブログの女の子を作る #107 髪のテクスチャ画像を頑張って描いてみる【Blender,Unity】


最近のコメント

だーしゅ
IT関係のお仕事してます。
3Dモデルの女の子は「ブログノ・スージー」。VRは楽しいですね。

[当ブログについて]