Help us understand the problem. What is going on with this article?

UnityでVRMデータに自動的にコライダーを生成する

自己紹介

こんにちはゆずです。@Yuzu_Unity
自分はUnityエンジニア・3DCGデザイナーの学生です。(軸はエンジニア 4年ほど…)

はじめに

VRMにはコライダーを保存する機能がないため
3Dゲームで使おうとすると当たり判定が取れません。
せっかくの統一フォーマットなので自動でコライダーを割り当てるものを作成しました。(ランタイム)
VRMを用いたオンラインFPSゲームを作成しようかと…
※メッシュデータを読み込んでいないので、かなりあいまいな実装です。
あくまでも、とりあえず使えればいいというレベルのものです。
SAColliderBuilderレベルの精度は出ません
image.png

実装内容

VRMファイルはHumanoid形式であるので
各HumanoidのボーンのTrasnformを取得できます。
image.png
HumanBodyBones
Animator.GetBoneTransform

この各ボーンのTransformから体系等を推定し配置していきます。

基本的には
1. 各ボーンの親子の差のベクトル
2. 肩幅
3. 脚の付け根の左右の幅
の3つのデータから推定しコライダーを配置します。
(これしかない…)

データ公開(ライセンスはフリーです。)

UnityPackage
https://github.com/yuzu-unity/HumanoidCollider/raw/master/HumanoidCollider.unitypackage

使い方

AnimatorがついているオブジェクトにHumanoidColliderBuilderをAddComponentして
public void SetCollider()を実行します。
Debug用のbool isSetをInspectorで押すだけでも可

現状の機能
頭のサイズは肩幅より推定
腕、脚のサイズは脚の付け根の左右の幅から推定
しているので、特に頭のサイズはおかしくなることがあります(等身がわからないので)
UpperChest等必須ボーンがない時にも対応

Head,Body,Arm,Legの4つに分類され各コライダーに
レイヤー、タグを指定可能

実際の実行


image.png

Yuzu_Unity
Unityエンジニア&3DCGデザイナー
unity-game-dev-guild
趣味・仕事問わずUnityでゲームを作っている開発者のみで構成されるオンラインコミュニティです。Unityでゲームを開発・運用するにあたって必要なあらゆる知見を共有することを目的とします。
https://unity-game-dev-guild.github.io/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした