Htc Vive瞬移技術(shù)實(shí)現(xiàn)教程
開(kāi)發(fā)Htc Vive游戲應(yīng)用的用戶肯定都系那個(gè)了解瞬移技術(shù)的實(shí)現(xiàn)方法,這里跟大家分享下教程吧。
如何實(shí)現(xiàn)
一般的瞬移程序:
玩家定位的位置是camera.localPosition,現(xiàn)在想要移動(dòng)到targetPositon,在不考慮轉(zhuǎn)向的情況下只要這么做:
CameraRig.position = targetPosition - camera.localPosition;
原因是 camera的本地位置+父物體(CameraRig)的位置 = camera的絕對(duì)位置。
所以要讓camera的絕對(duì)位置=targetPosition,就需要能滿足等式camera.localPosition + CameraRig.position = targetPosition。
這個(gè)等式通過(guò)移項(xiàng)可以獲得上面那行代碼。
考慮旋轉(zhuǎn)的瞬移:
有些程序像本文提到的例程一樣,需要考慮旋轉(zhuǎn)。
也就是說(shuō)camera在游戲中的朝向未必和HMD定位的朝向保持一致。
那需要對(duì)上面代碼做如下改變:
1. 對(duì)父物體CameraRig的旋轉(zhuǎn)也做出類似改變
2. 設(shè)置旋轉(zhuǎn)后再設(shè)置位置
3. 改變相對(duì)位置到絕對(duì)位置的轉(zhuǎn)換式
最終的代碼是:
cameraRig.rotation = targetRotation * Quaternion .Inverse(camera.localRotation);
var relativePos = cameraRig.TransformPoint(camera.localPosition) - cameraRig.position;
cameraRig.position = targetPos - relativePos;
總結(jié)
最簡(jiǎn)單的實(shí)現(xiàn)瞬移的方式是,改變camera父物體的位置和朝向。另外為了減少眩暈感,可以加上鏡頭的淡入淡出。