佐藤さとる

佐藤さとる

梶研 [Unity で複数人の動作を可視化]

2024年01月09日

Unity で複数人の動作を可視化

出席率

スケジュール

短期的な予定

長期的な予定

進捗報告

Unity で複数人の動作を可視化する

前回: Unityちゃんでやってみたら、ピンク(テクスチャが無し)になってしまった

対応: トゥーンシェーダーデータをインストールする 参考

懸念点

再生した時、Unity上の世界座標が原点なのか、モデルの初期位置が原点なのか

(0, 0) スタート

<iframe width="1180" height="664" src="https://www.youtube.com/embed/zJX6qpJWQu8" title="Unity x bvh 原点開始" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>

(-4, -4) スタート

<iframe width="1180" height="664" src="https://www.youtube.com/embed/ChjkRD_apwE" title="Unity x bvh (-4, -4)開始" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>

モデルの初期位置が原点となることがわかった

→ モデルの位置を調整することで位置関係を再現できる

問題点

bvhの最初のデータが (0, 腰の位置, 0)、

数フレーム後から正しい位置になっている

→ モデルの初期位置 と データの正しい位置は異なり、テレポートするため調整が面倒

<iframe width="1180" height="664" src="https://www.youtube.com/embed/jx6Gnu7kg0c" title="Unity ツイスターゲーム第1回戦(位置関係微妙)" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>

最初の一瞬で近づいている

このテレポートを考慮して初期位置を調整している

対応

bvh から Unity で再生できる fbx形式に変換する時に処理を行う

  1. 開始時の (x, z) = (0, 0) となっているデータを削除
  2. 0フレーム目の位置が (x, z) = (0, 0) となるように調整
  3. bvh から fbx に変換する

<details>

<summary>データを処理するプログラム</summary>

from mcp_persor import BVHparser
import sys
import argparse

parser = argparse.ArgumentParser()
parser.add_argument('file', type=str, help='input mocopi record file *.bvh')

args = parser.parse_args(sys.argv[sys.argv.index('--') + 1:])

bvhp = BVHparser(args.file)

# データのない箇所を削除
motion_df = bvhp.get_motion_df()
motion_df = motion_df[
    (motion_df['root_Xposition'] != 0) | (motion_df['root_Zposition'] != 0)
]

# 位置と回転をリセット
reset_channels = ['root_Xposition', 'root_Zposition', 'root_Yrotation']
for c in reset_channels:
    motion_df[c] = motion_df[c] - motion_df.iloc[0][c]

# dataframeを更新
bvhp.set_motion_df(motion_df)

new_file = f"{args.file[:-4]}-reset.{args.file[-3:]}"
bvhp.to_bvh(new_file)

# new_file を標準出力する
print(new_file)

</details>

<iframe width="1180" height="664" src="https://www.youtube.com/embed/oDHtHVAAIPc" title="Unity ツイスターゲーム第1回戦(調整)" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>

再現できなかった

一連のやり方を esa にまとめようとプロジェクトを作るところからやったところ、

再現ができなくなってしまいました...

mocopi と action slam2

研究を始めたい

「mocopi は長時間動くと狂う」
他のセンサと組み合わせて途中でキャリブレーションできないか

>

例)
歩いているとき、足が一定間隔で伸びると仮定すると
歩いているのに膝が最小でも30度曲がっている→ ー30度して調整(適当)

進め方が分からない

進路関係

余談

高大連携LT会をした [12/26]

IMG_0436.JPG (710.0 kB)
IMG_0444.JPG (457.0 kB)
IMG_0543.jpg (1.6 MB)

高校生のやる気が引き出せた

体調崩した [12/28 ~ 1/4]

なにも出来なかった

家族で熱海に行った [1/4 ~ 1/5]

IMG_5892.JPG (6.2 MB)
IMG_5902.JPG (8.0 MB)
IMG_5907.JPG (5.7 MB)

興国城の写真しか無かった

ペンギン水族館に行った [1/9 ~ 1/10]

始発

IMG_5918.JPG (2.8 MB)
IMG_5924.JPG (2.8 MB)
IMG_5928.JPG (4.0 MB)
IMG_5931.JPG (4.3 MB)
IMG_5935.JPG (3.3 MB)
IMG_5955.JPG (3.6 MB)
IMG_5956.JPG (2.7 MB)
IMG_5958.JPG (3.7 MB)
IMG_5964.JPG (4.2 MB)
IMG_5970.JPG (3.2 MB)

終電の西九州新幹線

ペンギン水族館

IMG_5978.JPG (4.7 MB)
IMG_5997.JPG (4.5 MB)

お土産屋で2万円溶けました...

島原城

IMG_5980.JPG (4.0 MB)

帰った

IMG_5984.JPG (2.2 MB)
IMG_5993.JPG (4.4 MB)