Animator.humanScale の基準になっているモデルを探した話
はじめに
Humanoidなアニメーションをモデルに適用する際に、モデルの大きさ(Animator.humanScale)を考慮して補正しなければならない状況に遭遇しました。
Animator.humanScale = 1f なモデルにアニメーションを適用して補正後のアニメーションを評価したかったのですが、そもそもそんなモデルは存在するのか?と気になったので探してみました。
Animator.humanScale #とは
とりあえずUnity公式のリファレンスを読んでみましょう。困ったら公式リファレンスを読む、大切ですね。
ヒューマノイドリグでの、現在のアバターのスケールを返します(リグがジェネリックの場合、デフォルトは 1 です)
スケールは Unity のデフォルトアバターに対する相対的な大きさを示します。
Animator.humanScale - Unity スクリプトリファレンスより引用
この説明で分かったことは Unityのデフォルトアバター とやらが基準になっているモデルだということです。
Unityのデフォルトアバターというものは聞いたことありませんが、それっぽいものは何体か見たことあります。手当たり次第に調べていきましょう。
使用したスクリプト
今回使用した Animator.humanScale を数値として出力するスクリプトはこちらです。
public class HumanScaleVisualizer : MonoBehaviour { [SerializeField] private Animator targetAnimator; void Start() { Debug.LogFormat("{0}:{1}", targetAnimator.name, targetAnimator.humanScale); } }
Unity-Chan!
まずはお馴染みユニティちゃんから。
結果は 0.8847574。違うようです。
Ethan
Standard Assetsに入っている男性モデルのEthanはどうでしょう。
結果は 0.8713949。これも違う。
Space Robot Kyle
公式のサンプルシーンなどでよく見るSpace Robot Kyleはどうでしょう。
結果は 1.023291。うーん、これも違う…。
DefaultAvatar
ではAnimationClipなどの確認の際に出てくるDefaultAvatarはどうでしょう。名前的にもこれっぽいです。
結果は 1.02514。えっキミDefaultAvatarとかいう名前なのに、リファレンスの言うUnityのデフォルトアバターじゃないのね。
XBot
もうUnity公式のモデルは調べつくしました。今度は外部からモデルを持ってきましょう。
Adobeが運営しているmixamoというWEBサービスで配布されているXBotを検証してみましょう。
結果は 1.050318。違う…。
YBot
では同じサイトで配布されているYBotはどうでしょう。
結果は 1.035007。君も違うのか…。
お手上げ
正直言ってこれ以上探しても見つからない気がしてきました。Space Robot KyleのhumanScaleが1.023291と、誤差0.023291しかないのでほぼ基準として考えてもいいかもしれません。
とは言っても、ちゃんとしたとした基準がわからないのは何ともモヤモヤするものです。
どなたか知っている方がいらっしゃいましたらコメントなどで教えてくださると嬉しいです。
シィアニア王国 魔科学研究所より、愛と感謝を込めて。karukaruでした。
2019/08/30 追記
この記事を上げたところ、いろんな方から反応をいただきました。
特にユニティ・テクノロジーズ・ジャパンの小林信行さんからは大変重要な情報を教えていただきました。
この場を借りてお礼申し上げます。
間違ってるかもしれませんが、シーン単位がメートル設定の元でそのまま標準出力したHumanIKのスケルトンがそれのような気がしますね。恐らくこの値はリターゲットする時の基準値だと思いますので、だとしたら設計者の癖からしてMotionBilderと同じじゃないかなと思いますので。
— 小林信行 Nobuyuki Kobayashi (@nyaa_toraneko) February 23, 2019
もうひとつわかりましたが、HumanIKの標準スケルトンって、Hipジョイントの高さがちょうど1メートルの位置にあるみたいですね。Hipジョイントは全てのジョイントのルートですから、これが基準値になるのはよくわかります。問題になっている値は、スケルトンのHipジョイントの高さ比とも言えそうです。 pic.twitter.com/0CPSlAqCJD
— 小林信行 Nobuyuki Kobayashi (@nyaa_toraneko) February 23, 2019
ツイート文中にもありますが、Animator.humanScale の示す値は Hipジョイントの高さ比 として機能しているようです。
また Animator.humanScale = 1f なモデルは、デフォのHumanIKスケルトン であることもわかりました。
これを参考にアレコレすることでイイカンジにできそうですね!
パソコンを組み替えた話
経緯
とりあえずごちゃごちゃ言う前に以前のPC構成を見てください。
パーツ | 旧構成 |
---|---|
CPU | i7-4770k |
メモリ | 64GB |
マザーボード | ASRock Z97 Extreme6 |
GPU | GTX1080Ti |
こんな感じの構成でして、簡単に言うと5年前に組んでからGPUだけアップデートした状態でした。
そんな時にやってきたVRブーム。幸いなことにギリギリVR Readyな環境でしたが、やはりCPUが足を引っ張ってパフォーマンスが落ちてしまっている感じが・・・。
ただ遊んでいるだけならまだ我慢できていたのですが、何をとち狂ったかオリジナルVRゲームを作り出したり、流行りのVTuberっぽいことをやってみたりと、ボロPCを酷使するようになりました。
さすがに辛いということで、バイト代がドンと入ったし新世代CPUが出るということもあり、思い切って組みなおそうと思った次第です。
新PC構成を決めよう
そうと決まればパーツ構成を考えるのが自作erってものです。
5年分のパーツ周りのアップデートを(ななめ読みしながら)振り返り、また自分の要求をクリアする条件を作って組み立てていきます。
どうせ組んでから2,3年はアップデートしないことを考えると、今の最新&最強スペックで組んで使いつぶすのが良さそうです。
CPU
まずCPUですが、これは第9世代のi9-9900kを使いたい!8コアほしい!!ってなったので即決定。
GPU
GPUはGTX1080Tiのままでもよかったのですが、どうせならこれも最新スペックにしたいと考えてRTX2080Tiに。
マザーボード
問題はマザーボード。今までGIGABYTE, MSI, ASUS, ASRock と使ってきて、メーカーごとの特色というか特徴の知見がたまっています。
その中で最も相性問題が起きない、かつBIOS設定が簡単にできるメーカーと言ったらASRockぐらいしか思いつかなかったです。
まずGIGABYTEとMSI。この2メーカーは(使用してた時期が10年前くらいなので仕方ないですが)BIOS設定がやりづらかった覚えがあるので却下。
次にASUS。これはマザーボードの不具合に当たったことがあるので心象最悪。一番最初に候補から外しました。
最後にASRock。ASUSからの買い替えでASRockにしたのですが、完ぺきに動作してくれた上にOCが手軽にできるプリセット式だったので、大変重宝しました。
その実績もあってASRockマザーボードに決定。今後も愛好すると思うのでどうぞよろしくお願い致します。
メーカーが決まったらラインナップから実際に買う商品を決めます。
ASRockからは最上位モデルのTaichiシリーズ、ゲーミングモデルのPhantom Gamingシリーズ、廉価版の無印シリーズが出ています。
最新&最強スペックを追い求めるなら問答無用でTaichiシリーズなのですが、Phantom Gamingシリーズとの値段差が少なくとも1万円ほどあり、しかも機能差にそこまでメリットを感じなかったので妥協してPhantom Gamingシリーズに。
Phantom Gamingシリーズにも9, 6, 4とバージョンがあるのですが、9の無線機能にメリットを感じず6でも良いかという考えに。
というわけでPhantom Gaming 6に決定しました。
メモリ
メモリはメーカーから攻めようと考えていて、今回電源がCORSAIRの1000Wを使う予定だったので、メモリもCORSAIRにしたいと決めていました。
ショップに行ってDDR4メモリを見ていると、まあ高いこと。DDR3メモリはもうちょっと安かったのになあと思いつつ、なるべく動作周波数が高くかつ大容量(最低16GBx2 = 32GB)なものを探します。
最初はCORSAIRだったらなんでもいいやと一番安いもので考えていたのですが、店員さんに勧められてDOMINATOR PLATINUMシリーズにすることにしました。16BG*2枚のセットを購入。
感想
いきなり飛んで感想です。だって組み立てとか何も言うことないもん。
唯一言うことといったら簡易水冷クーラーにグリスが塗ってあって、買ってきた別のグリスが無駄になったくらいです。ぐすん。
やっぱり8コア16スレッドもあるCPUは違いますわーまず見た目が違いますわー。
・・・嘘です何も実感ありません。まあ買い換えてからまだ動画エンコードなどヘビーなことをやってないっていうのもあるのですが。
GPUもGTX1080TiからRTX2080Tiへの買い替えなのでそこまでわかりません。レイトレーシング対応ゲームをプレイするとかUnityがレイトレーシングに対応してくれるとかない限りは恩恵は少なそうです。
マザーボードはOC設定が複雑になっていて、昔みたいにプリセットで簡単に変えられるようになっていなかったのが残念でした。でも不満点はそのくらいで、他はほぼほぼ満足です。
OCもそこまで難しいわけでもないので、夢の動作クロック5GHzを目指してそのうちOCしたいと思います。
メモリはよくわからん!とりあえず大容量が正義!!!
以上、初のはてなブログがこんな雑な感じでいいのか悩みつつ閉めたいと思います。
karukaruでした。