跑跑車游戲網(wǎng)
您的位置:首頁(yè)VR資訊中心VR游戲攻略 → Htc Vive瞬移技術(shù)實(shí)現(xiàn)教程

Htc Vive瞬移技術(shù)實(shí)現(xiàn)教程

2016/10/11 10:06:02來(lái)源:本站整理作者:不詳我要評(píng)論(0)

開(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父物體的位置和朝向。另外為了減少眩暈感,可以加上鏡頭的淡入淡出。

網(wǎng)友評(píng)論

發(fā)表評(píng)論

(您的評(píng)論需要經(jīng)過(guò)審核才能顯示)

查看所有0條評(píng)論>>