Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add IPD property to extensions.VRMC_vrm.lookAt #177

Open
Santarh opened this issue Sep 30, 2020 · 5 comments
Open

Add IPD property to extensions.VRMC_vrm.lookAt #177

Santarh opened this issue Sep 30, 2020 · 5 comments
Assignees

Comments

@Santarh
Copy link
Contributor

Santarh commented Sep 30, 2020

ヒューマノイドの目は距離の近い物体を注視するときは寄り目になる挙動が望ましい。
しかし現行の VRM は両目の向く角度が同じになる挙動である。
これは現状の LookAt システムのキャラクタ属性情報の不足ゆえキャラクタの瞳孔間距離距離を勝手に推測せざるをえず、それは汎用には適用できないからである。
そこで extensions.VRMC_vrm.lookAtipd つまりキャラクタの瞳孔間距離のパラメタを追加し、これを実現する。

@0b5vr
Copy link
Contributor

0b5vr commented Oct 15, 2020

口頭で議論を行いました。 ipd で実現する方針で仕様を追記します。

@0b5vr 0b5vr added this to the v1.0 milestone Nov 19, 2020
@Santarh
Copy link
Contributor Author

Santarh commented Jan 31, 2021

こちらの提案なのですが、挙動に関して想定漏れがありました。

VRM の LookAt 定義は Bone と Expression の2つによって実現されますが、Expression を使う場合に「より目」の挙動を実現するには、ipd の定義だけでは定義不足だという点がわかりました。

この提案の「より目にする」と言うのは要は「左右の目それぞれ別の方向を向けるようにする」ということだと思います。
この際、Bone の定義は左右の目それぞれに Bone があるので、実現ができます。
しかし Expression の定義は左右の目を同時に1変数で動かすことしかできないため、前提として実現ができません。
これをどうにかするには LOOK_(UP|DOWN|LEFT|RIGHT) の4種類ではなく LOOK_(UP|DOWN|LEFT|RIGHT)_(LEFT|RIGHT) の8種類が必要だということになってしまいます。
必要性があるならば増やすのもやむを得ないとは思いますが、問題は後方互換性をとるのがとても複雑になるということです。

まとめると以下の選択肢のうちどれかを取る必要があると思います。
この点、再度議論に差し戻していただけないでしょうか。

- 提案を取り下げる
- 提案はそのままで、IPD のパラメタは Bone の LookAt にのみ適用され、Expression の場合は無視する
- 提案に加えて Expression に追加の定義をし、Expression でも適用できるようにする(が、後方互換性が複雑)
- 他にいい定義があれば……

@ousttrue
Copy link
Contributor

ousttrue commented Feb 4, 2021

vrm-1.0 ではちょっと先送りして様子を見る。
UniVRMのコンポーネントは先行して実装を入れておく。

LookAt コンポーネントとして、SetYawPitch(yawL, pitchL, yawR, pitchR) のような4引数版を実装する。
EyeBone がある場合は注視点に対して、Eyeボーン位置を基準に左目・右目独立して yaw, pitch を計算し4引数版を使う。

Expression による LookAt の場合はとりあえず据え置き。
需要があったら、ExpressionPreset.Custom + (Left|Right)Eye(Up|Down|Left|Right) で動くようにする。(その場合、ipdは6.5cm)等の固定値で。
さらに需要があれば、JsonSchema への ipd 値の追加をする。

@0b5vr 0b5vr removed this from the v1.0 milestone May 6, 2021
@0b5vr
Copy link
Contributor

0b5vr commented May 6, 2021

ひとまず v1.0 のマイルストーンから外します。

@FujiSunflower
Copy link

issueが稼働してるか不明ですし些細な事なのですが、IPDという変数名だとVR機材のHMDのIPDに設定すべき値のように感じてしまうので別名が良いかなと思います。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Status: Future
Development

No branches or pull requests

4 participants