国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【unity】Pico VR 開發(fā)筆記(基礎(chǔ)篇)包括射線

這篇具有很好參考價值的文章主要介紹了【unity】Pico VR 開發(fā)筆記(基礎(chǔ)篇)包括射線。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

Pico VR 開發(fā)筆記(基礎(chǔ)篇)

XR Interaction Tooikit 版本 2.3.2

一、環(huán)境搭建

其實官方文檔已經(jīng)寫的很詳細(xì)了,這里只是不廢話快速搭建,另外有一項官方說明有誤的,補(bǔ)充說明一下,在開發(fā)工具部分說明

插件安裝——安裝pico的sdk和XR Interaction Tooikit

環(huán)境配置——在場景里添加頭顯和手柄,并進(jìn)行配置和項目配置

開發(fā)工具——Pico提供的串流開發(fā)工具,可以在不打包的情況的,使用手柄和頭顯進(jìn)行調(diào)試。

1、插件安裝

pico SDK安裝

pico SDK下載地址:SDK - PICO 開發(fā)者平臺 (pico-interactive.com)

SDK下載后解壓

打開unity→Window→PackgeManager→Add Package From disk(左上角+)→選擇解壓后文件里的package.json

pico 手柄射線,unity3d,VR,unity,vr,筆記

XR Interaction Tooikit安裝

在packgeManager里搜索XR Interaction Tooikit

pico 手柄射線,unity3d,VR,unity,vr,筆記

選擇版本盡量高版本,不要低于2.1.0。

打開Samples?面板,導(dǎo)入?Starter Assets、**XR Device Simulater **和?Tunneling Vignette

2、環(huán)境配置

場景配置

添加XR Origin:Hierarchy→Add(左上角+)→XR→XR Origin(VR)

手柄設(shè)置

  1. 選中Hierarchy的XR Origin子物體LeftHand Controller

  2. 配置LeftHand Controller的控件XR Controller,點(diǎn)擊在右上角的預(yù)設(shè),選擇XRI Default Left Controller (右手柄同樣配置,選擇XRI Default Right Controller )

    pico 手柄射線,unity3d,VR,unity,vr,筆記

  3. 選擇手柄模型,在XR Controller的Model Prefab選擇LeftControllerModel(Tranform)

    pico 手柄射線,unity3d,VR,unity,vr,筆記

打包設(shè)置

pico 手柄射線,unity3d,VR,unity,vr,筆記

選擇:Edit→Player→settings for Android→other Setting

Minimum API Level 選擇Android 10.0

Target API Level 選擇Automatic(Highest installed)

Scripting Backend 選擇IL2CPP

勾選ARM64

pico 手柄射線,unity3d,VR,unity,vr,筆記

選擇:Edit→Project Settings→XR Plug-in Management→Android Standalone Settings→選擇PICO

3、開發(fā)工具

SDK安裝

下載地址:SDK - PICO 開發(fā)者平臺 (PICO Unity Live Preview Plugin)

SDK下載后解壓

打開unity→Window→PackgeManager→Add Package From disk(左上角+)→選擇解壓后文件里的package.json

pico 手柄射線,unity3d,VR,unity,vr,筆記

windows下載客戶端

下載地址:SDK - PICO 開發(fā)者平臺 (PICO Developer Center)

在本地安裝后會安裝steam串流工具

為一體機(jī)開啟開發(fā)者模式

  1. 開啟 PICO VR 一體機(jī)。
  2. 前往?設(shè)置?>?通用
  3. 射線對準(zhǔn)?設(shè)置?字段并連續(xù)點(diǎn)擊多次,直到左側(cè)導(dǎo)航欄下方出現(xiàn)?開發(fā)者?選項。
  4. 點(diǎn)擊?開發(fā)者,進(jìn)入開發(fā)者選項界面。
  5. 打開右上角的?USB 調(diào)試開關(guān)。

*這里官方文檔有誤,開啟開發(fā)者模型要多次點(diǎn)擊設(shè)置鍵

項目設(shè)置

pico 手柄射線,unity3d,VR,unity,vr,筆記

選擇:Edit→Project Settings→XR Plug-in Management→ PC Standalone Settings→選擇 PICO Live Preview

二、開發(fā)

1、手柄輸入

得到手柄

    InputDevice deviceLeft;//左手柄
    InputDevice deviceRight;//右手柄
    private void Start()
    {
        deviceLeft = InputDevices.GetDeviceAtXRNode(XRNode.LeftHand);
        deviceRight = InputDevices.GetDeviceAtXRNode(XRNode.RightHand);
    }

手柄觸發(fā)核心方法?TryGetFeatureValue

手柄扳機(jī)鍵觸發(fā)

    /// <summary>
    /// 扳機(jī)鍵
    /// </summary>
    /// <param name="inputDevice">手柄</param>
    /// <param name="action">觸發(fā)委托</param>
    /// <param name="Value">觸發(fā)參數(shù)</param>
    void triggerButton(InputDevice inputDevice, ref bool Value, Action action)
    {
        if (inputDevice.TryGetFeatureValue(CommonUsages.triggerButton,out Value)&&Value)
        {
            action();
        }
    }

扳機(jī)鍵力度

    /// <summary>
    /// 扳機(jī)鍵力度
    /// </summary>
    /// <param name="inputDevice">手柄</param>
    /// <param name="action">觸發(fā)委托</param>
    /// <param name="Value">觸發(fā)參數(shù)</param>
    void trigger(InputDevice inputDevice, ref float Value, Action<float> action)
    {
        if (inputDevice.TryGetFeatureValue(CommonUsages.trigger, out Value)&& !Value.Equals(0))
        {
            action(Value);
        }
    }

抓握鍵

    /// <summary>
    /// 抓握鍵
    /// </summary>
    /// <param name="inputDevice"></param>
    /// <param name="action"></param>
    /// <param name="Value"></param>
    void gripButton(InputDevice inputDevice, ref bool Value, Action action)
    {
        if (inputDevice.TryGetFeatureValue(CommonUsages.gripButton, out Value) && Value)
        {
            action();
        }
    }

抓握鍵力度

    /// <summary>
    /// 抓握鍵力度
    /// </summary>
    /// <param name="inputDevice"></param>
    /// <param name="action"></param>
    /// <param name="Value"></param>
    void grip(InputDevice inputDevice, ref float Value, Action<float> action)
    {
        if (inputDevice.TryGetFeatureValue(CommonUsages.grip, out Value) && !Value.Equals(0))
        {
            action(Value);
        }
    }

搖桿方向

    /// <summary>
    /// 搖桿方向
    /// </summary>
    /// <param name="inputDevice"></param>
    /// <param name="action"></param>
    /// <param name="Value"></param>
    void primary2DAxis(InputDevice inputDevice, ref Vector2 Value, Action<Vector2> action)
    {
        if (inputDevice.TryGetFeatureValue(CommonUsages.primary2DAxis, out Value) && !Value.Equals(Vector2.zero))
        {
            action(Value);
        }
    }

搖桿

    /// <summary>
    /// 搖桿
    /// </summary>
    /// <param name="inputDevice"></param>
    /// <param name="Value"></param>
    /// <param name="action"></param>
    void primary2DAxisClick(InputDevice inputDevice, ref bool Value, Action action)
    {
        if (inputDevice.TryGetFeatureValue(CommonUsages.primary2DAxisClick, out Value) && Value)
        {
            action();
        }
    }

X/A

    /// <summary>
    /// X/A
    /// </summary>
    /// <param name="inputDevice"></param>
    /// <param name="Value"></param>
    /// <param name="action"></param>
    void primaryButton(InputDevice inputDevice, ref bool Value, Action action)
    {
        if (inputDevice.TryGetFeatureValue(CommonUsages.primaryButton, out Value) && Value)
        {
            action();
        }
    }

Y/B

    /// <summary>
    /// Y/B
    /// </summary>
    /// <param name="inputDevice"></param>
    /// <param name="Value"></param>
    /// <param name="action"></param>
    void secondaryButton(InputDevice inputDevice, ref bool Value, Action action)
    {
        if (inputDevice.TryGetFeatureValue(CommonUsages.secondaryButton, out Value) && Value)
        {
            action();
        }
    }
2、射線

得到射線的方法

XRRayInteractor.TryGetCurrent3DRaycastHit(out hit)

XRRayInteractor是手柄上掛載的XRRayInteractor腳本。

pico 手柄射線,unity3d,VR,unity,vr,筆記

Demo

    public XRRayInteractor rayInteractor;
    RaycastHit hit;
    Vector3 getRayPoint()
    {
        if (rayInteractor.TryGetCurrent3DRaycastHit(out hit))
        {
           
            string name = hit.collider.name;
            Debug.Log(name);
            return hit.point;
        }
        else
        {
            return Vector3.zero;
        }
    }

補(bǔ)充設(shè)置

射線的類型

類型 說明
Staight Line 直線
Projectile Curve 拋物線
Bezier Curve 貝塞爾曲線

修改方法

 rayInteractor.lineType = XRRayInteractor.LineType.ProjectileCurve;

不同類型的射線還有自己的參數(shù)可以修改,比如Stailght Line的MaxRaycastDistance(最遠(yuǎn)射線距離)和ProjectileCurve的Additional Flight Time(射線飛行時間)都可以直接賦值。

有效射線和無效射線

當(dāng)射線觸碰到可觸發(fā)的UI或者模型時,射線為有效射線,反饋則是使用了ValidColorGradient。否則是使用InvalidColorGradient。

pico 手柄射線,unity3d,VR,unity,vr,筆記

無效射線和有效射線觸碰到有碰撞的模型時同樣可以返回RaycastHit,區(qū)別在XR射線本身的設(shè)置上,比如碰撞Reticle。

實現(xiàn)有效碰撞,需要另外在模型上添加Tracked Device Physics Raycaster腳本等

Reticle (十字線)

Reticle 是射線和模型(UI)碰撞的點(diǎn)。

pico 手柄射線,unity3d,VR,unity,vr,筆記

添加方法:

在手柄的上找到XR Interactor Line Visual腳本,創(chuàng)建Reticle 預(yù)制體后直接添加上。

3、UI觸發(fā)

觸發(fā)條件

手柄射線要觸發(fā)到UI,在完成VR基礎(chǔ)場景搭建的前提下,需要掛載兩個腳本。

在Canvas上增加Tracked Device Graphic Raycaster

替換EventSystem上的Standalone Input Module為XR UI Input Module(模型上添加的Tracked Device Physics Raycaster腳本也是受XR UI Input Module影響的)

注意事項

Canvas的Order in Layer 最好設(shè)置為負(fù)值。如果為0或者正值,十字線可能會被UI遮擋。

pico 手柄射線,unity3d,VR,unity,vr,筆記

為0時

pico 手柄射線,unity3d,VR,unity,vr,筆記

為-1時文章來源地址http://www.zghlxwxcb.cn/news/detail-756124.html

到了這里,關(guān)于【unity】Pico VR 開發(fā)筆記(基礎(chǔ)篇)包括射線的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Unity-Pico高級開發(fā)(一)按鍵狀態(tài)獲取,射線碰到物體變色,射線末端小圓點(diǎn)

    Unity-Pico高級開發(fā)(一)按鍵狀態(tài)獲取,射線碰到物體變色,射線末端小圓點(diǎn)

    目錄 效果展示 前言 獲取按鍵狀態(tài) 射線碰到物體變色 射線末端小圓點(diǎn) Unity-Pico高級開發(fā)(一)按鍵狀態(tài)獲取,射線碰到物體 ? ? picoXR為Unity提供的Unity XR SDK是基于Unity XR實現(xiàn)的各個功能,針對手柄和頭盔的各個按鍵搖桿事件的獲取,均是采用的Unity XR提供的方法。目前UnityXR只

    2024年04月28日
    瀏覽(342)
  • Unity+Pico 手柄按鍵控制

    Unity+Pico 手柄按鍵控制

    一、定義手柄按鍵API 1、InputDevices.GetDeviceAtXRNode,通過XRNode獲取對應(yīng)的設(shè)備; 2、XRNode是一個枚舉類型,包含LeftEye、RightEye、CenterEye、Head、LeftHand、RightHand、GameController、TrackingReference、HardwareTracker; 3、TryGetFeatureValue,得到某個特性的值; 4、CommonUsages定義了用于從XR.InputDevi

    2024年02月11日
    瀏覽(34)
  • Unity+Pico 響應(yīng)射線事件

    1、添加組件 為了讓場景內(nèi)的物體能夠響應(yīng)射線的操作,需要在該物體上添加“XR Simple Interactable”組件,并對射線的交互事件編寫腳本看,最常用的是“Hover”和“Select”事件。 2、編寫腳本 在編寫腳本時,需要引入UnityEngine.XR.Interaction.Toolkit命名空間,另外,從步驟1中的截圖

    2024年02月12日
    瀏覽(89)
  • Unity中PICO中手柄按鍵返回值

    Unity中PICO中手柄按鍵返回值

    在上篇文章中,我們實現(xiàn)了PICO中 隔空取物 和 接觸抓取。 Unity中PICO實現(xiàn) 隔空取物 和 接觸抓取物體 在這篇文章中,我們來實現(xiàn) 手柄C#腳本交互。 手柄頭戴輸入映射 按鍵Unity XR 鍵值菜單鍵CommonUsages.menuButton: 表示菜單鍵的激活狀態(tài)(即是否被按下)。 扳機(jī)鍵CommonUsages.trigg

    2024年04月16日
    瀏覽(105)
  • 【Unity】【Pico】手柄搖桿控制第一人稱移動和旋轉(zhuǎn)

    【Unity】【Pico】手柄搖桿控制第一人稱移動和旋轉(zhuǎn)

    背景:開發(fā)影院系統(tǒng) 環(huán)境:Unity2021.3、PicoNeo3ProEye 描述 :已經(jīng)在Unity項目中實現(xiàn)第一人稱WASD移動和鼠標(biāo)旋轉(zhuǎn)(代碼見我的其他博文) 需求 :希望項目在Pico一體機(jī)運(yùn)行時可以通過手柄搖桿控制(unityxr的基礎(chǔ)配置見我的其他博文) 解決 : Locomotion System XR Origin Continuous Move Pr

    2024年01月18日
    瀏覽(146)
  • 使用U3D、pico開發(fā)VR(一)——將unity的場景在設(shè)備中呈現(xiàn)

    使用U3D、pico開發(fā)VR(一)——將unity的場景在設(shè)備中呈現(xiàn)

    ?????? 最近srtp項目在趕進(jìn)度,自己之前是在電腦端進(jìn)行的開發(fā)。但是項目是VR端,因此需要重新學(xué)習(xí),在此記錄一下自己的學(xué)習(xí)經(jīng)歷。 ?????? 首先,如何將unity的場景在自己的眼鏡中進(jìn)行呈現(xiàn)呢? ??? ?? 對此,我也找了很多教程,也跟著花了很多時間去做。從國內(nèi)的

    2024年01月17日
    瀏覽(22)
  • PIco4發(fā)布使用UNITY開發(fā)的Vr應(yīng)用,格式為apk,安裝的時候發(fā)生解析錯誤

    PIco4發(fā)布使用UNITY開發(fā)的Vr應(yīng)用,格式為apk,安裝的時候發(fā)生解析錯誤

    參考鏈接 : adb install APK報錯Failure [INSTALL_FAILED_TEST_ONLY: installPackageLI]_調(diào)用者不被允許測試的測試程序_小龍在山東的博客-CSDN博客 Pico Developer Answers 完成項目配置 - PICO 開發(fā)者平臺 如何將apk、obb文件打包至pico設(shè)備中 - 掘金 Requires newer sdk version #30 (current version is #28) · Issue #633

    2024年02月04日
    瀏覽(25)
  • Unity PICO VR 入門(一)-Unity導(dǎo)入PICO SKD-PICO Unity Integration SDK

    Unity PICO VR 入門(一)-Unity導(dǎo)入PICO SKD-PICO Unity Integration SDK

    基于官方教程PICO開發(fā)者文檔 建議unity 2020.3.48或者更高,并且安裝安卓適配,PICO3及以上使用 安裝插件SDK Windows Package Manager//插件菜單 在 Package Manager 窗口中,點(diǎn)擊 + Add package from disk。 選擇 解壓好的SDK文件夾中的package.json 文件并導(dǎo)入。Unity PICO SDK下載 不需要賬號key也可以安裝

    2024年01月19日
    瀏覽(22)
  • Pico VR眼鏡(XR) Unity開發(fā)環(huán)境部署及打包教程,包含瞬間移動、轉(zhuǎn)向等基本操作配置

    Pico VR眼鏡(XR) Unity開發(fā)環(huán)境部署及打包教程,包含瞬間移動、轉(zhuǎn)向等基本操作配置

    創(chuàng)建項目 我這里選擇的是URP項目。URP對移動端性能比較友好,另外VR平臺也不支持HDRP渲染管線。 然后進(jìn)入unity工具欄-File - Build Settings 點(diǎn)擊 Android后,點(diǎn)就Switch Platform將項目轉(zhuǎn)為Android項目 安裝依賴包 在unity的工具欄中點(diǎn)擊Window-Package Manager,打開包管理器 如圖將package來源設(shè)置

    2024年02月03日
    瀏覽(35)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包