【Unity項目經驗分享】實現左右分屏裸眼3D程序

1、實現原理

左右分屏原理,左右屏內容左右方向存在些許偏差。通過左右相機,然后左側相機向左側偏移一點3cm,右側相機向右側屏偏移一定3cm,然后將左右相機渲染內容通過RenderTexture渲染到Canvas上面的左右RawImage上面。

2、實現具體步驟

2.1 左右相機處理

在主相機下面創建左右相機兩個Camera,左側相機向左側偏移一點3cm,右側相機向右側屏偏移一定3cm,如下

2.2 UI處理

將UI Canvas拖到主相機下面

設置RenderMode為Screen Space - Camera,然后設置距離

再將RenderMode設置為World Space。

2.3?將左右相機渲染內容重新渲染到Canvas上面

創建兩個Custom Render Texture,分別為CameraLeft、CameraRight,并設置Size

將左右相機的OutputTexture分別設置為CameraLeft、CameraRight

創建一個Canvas,下面創建兩個RawImage,分別占左側和右側一半,分別顯示左右相機的內容

RawImageLeft設置

RawImageRight設置

將CameraLeft、CameraRight的Render Texture拖拽給對應RawImage

2.4?鼠標位置處理

在Canvas層級最優先的下面創建一個RawImage,設置圖標樣式

編輯處理腳本FollowMouse,代碼如下,并進行如下設置

using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;
using DG.Tweening;
using System.Collections;
using System.Collections.Generic;public class FollowMouse : MonoBehaviour
{public RectTransform mouseDown;public RectTransform canvas;public static FollowMouse1 instance;public GameObject obj;public Camera camera;public float screenMinX, screenMaxX, localMinX, localMaxX;public float screenMinY, screenMaxY, localMinY, localMaxY;public Texture2D cursorTexture;private void Start(){Cursor.lockState = CursorLockMode.Confined;Cursor.visible = false;}public void Awake(){instance = this;int width = Screen.width;int height = Screen.height;//Debug.Log(width);//Debug.Log(height);screenMaxX = width;screenMaxY = height;localMinX = -width / 2;localMaxX = width / 2;localMinY = -height / 2;localMaxY = height / 2;}void Update(){}void LateUpdate(){// ??è?êó±ê?ú?á??é?μ?????Vector3 mousePosition = Input.mousePosition;//Debug.Log(mousePosition);// ??êó±ê????×a???aUI×?±ê?μ??μ?????RectTransform rectTransform = mouseDown;//Vector2 localPosition = new Vector2();//float outputX = Remap(screenMinX, screenMaxX, localMinX, localMaxX, Input.mousePosition.x);//float outputY = Remap(screenMinY, screenMaxY, localMinY, localMaxY, Input.mousePosition.y);//rectTransform.localPosition = new Vector3(outputX, outputY, rectTransform.localPosition.z);//Vector2 hotSpot = new Vector2(cursorTexture.width / 2f, cursorTexture.height / 2f);//Cursor.SetCursor(cursorTexture, hotSpot, CursorMode.Auto);// ′′?¨ò???ó?óú′?′¢?á1?μ??òá?Vector2 localPosition;if(RectTransformUtility.ScreenPointToLocalPointInRectangle(canvas, mousePosition, camera, out localPosition)){rectTransform.localPosition = new Vector3(localPosition.x, localPosition.y, rectTransform.localPosition.z);Vector2 hotSpot = new Vector2(cursorTexture.width / 2f, cursorTexture.height / 2f);Cursor.SetCursor(cursorTexture, hotSpot, CursorMode.Auto);}}float Remap(float a, float b, float A, float B, float value){float lerp = (value - a) / (b - a);float output = A + (B - A) * lerp;return output;}}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/95595.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/95595.shtml
英文地址,請注明出處:http://en.pswp.cn/web/95595.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

設計軟件啟動失敗?“找不到vcruntime140.dll,無法繼續執行代碼” 場景化解決方案來了

打游戲時,剛加載到登錄界面就因 “找不到 vcruntime140.dll, 無法繼續執行代碼” 閃退;寫代碼時,編譯工具突然報錯中斷工作;做設計時,PS、AE 啟動失敗彈出相同提示 —— 不同場景下的 vcruntime140.dll 錯誤&#xff0…

基于Echarts+HTML5可視化數據大屏展示-茶葉種植大數據溯源平臺

效果展示&#xff1a;代碼結構&#xff1a;主要代碼實現 index.html布局 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta n…

PLOS One圖片處理要求及處理辦法

PLOS One圖片處理&#xff1a; 要求&#xff1a;Please remove your figures from within your manuscript file, leaving only the individual TIFF/EPS image files. These will be automatically included in the reviewer’s PDF. 請從稿件文件中移除所有圖表&#xff0c;…

AutoLayout與Masonry:簡化iOS布局

Auto Layout 與 Masonry蘋果提供的自動布局&#xff08;Auto Layout&#xff09;能夠對視圖進行靈活有效的布局。但是&#xff0c;使用原生的自動布局相關的語法創建約束的過程是非常冗長的&#xff0c;可讀性也比較差。Masonry 的目標其實就是 為了解決原生自動布局語法冗長的…

從設計到落地:校園圖書館系統的面向對象實現全流程

很多小白學面向對象時總困惑&#xff1a;“類圖、用例圖我會畫&#xff0c;但怎么把這些設計變成能跑的代碼&#xff1f;” 這篇文章就用 “校園圖書館管理系統” 當例子&#xff0c;從需求分析→設計方案→代碼實現→測試驗證&#xff0c;帶你走通 “設計→實現” 的完整鏈路&…

[鴻蒙心跡]帶新人學鴻蒙的悲歡離合

2023年底&#xff0c;我和陸神&#xff0c;威哥&#xff0c;老羅一起去深圳參加了鴻蒙師資培訓正式開啟了鴻蒙之旅&#xff0c;當時和陸神拍的合照但是我把陸神打碼了 學完以后就考取了鴻蒙的高級認證 看到沒有時間是2023年11月 馬上都要到期了。 想一想時間過得真快&#xff…

MindShow AI:AI思維導圖生成工具高效解決思路混亂難題,快速搭建學習與工作大綱

你有沒有過這種時候&#xff1f;想整理一份學習大綱或者項目方案&#xff0c;腦子裡一堆想法卻散得像亂麻 —— 比如要做個 “數據分析入門規劃”&#xff0c;明明知道要學 Excel、SQL、Python&#xff0c;可怎么分階段、每個階段學哪些重點&#xff0c;對著空白文檔半天列不出…

快速搭建一個Vue+TS+Vite項目

1、在一個文件夾下通過cmd打開&#xff0c;輸入命令npm create vitelatest命名要為英文2.選擇項目框架通過上下鍵位選擇Vue框架&#xff1a;選好按回車鍵3.選擇開發語言選擇TypeScript語言&#xff0c;方便后續開發&#xff1a;創建好的項目目錄為&#xff1a;4.安裝Vite依賴接…

深度學習:ResNet 殘差神經網絡詳解

一、ResNet 殘差神經網絡的起源與核心地位ResNet&#xff08;Residual Neural Network&#xff0c;殘差神經網絡&#xff09;是 2015 年由微軟亞洲研究院的何凱明、張祥雨等研究者提出的深度神經網絡架構。在當年的 ImageNet 大規模視覺識別挑戰賽&#xff08;ILSVRC&#xff0…

Python面試題及詳細答案150道(116-125) -- 性能優化與調試篇

《前后端面試題》專欄集合了前后端各個知識模塊的面試題,包括html,javascript,css,vue,react,java,Openlayers,leaflet,cesium,mapboxGL,threejs,nodejs,mangoDB,SQL,Linux… 。 前后端面試題-專欄總目錄 文章目錄 一、本文面試題目錄 116. 如何查找Python程序的…

C++11 智能指針的使?及其原理

目錄 1. 智能指針的使?場景分析 2. RAII和智能指針的設計思路 3. C標準庫智能指針的使? 4. 智能指針的原理 5. shared_ptr和weak_ptr 5.1 shared_ptr循環引?問題 5.2 weak_ptr 6. shared_ptr的線程安全問題 7. C11和boost中智能指針的關系 8. 內存泄漏 8.1 什么是…

【Linux】Linux進程狀態和僵尸進程:一篇看懂“進程在忙啥”

前言&#xff1a;歡迎各位光臨本博客&#xff0c;這里小編帶你直接手撕Make/Makefile (自動化構建)&#xff0c;文章并不復雜&#xff0c;愿諸君耐其心性&#xff0c;忘卻雜塵&#xff0c;道有所長&#xff01;&#xff01;&#xff01;&#xff01; **&#x1f525;個人主頁&a…

開源視頻剪輯工具推薦

開源視頻剪輯和處理工具近年來發展非常迅速&#xff0c;許多工具的功能已經足以媲美甚至超越一些商業軟件。以下是一些頂級的開源視頻編輯和處理工具&#xff0c;涵蓋了從簡單易用到專業級別的不同需求。 一、 主要視頻編輯軟件&#xff08;非線性編輯&#xff0c;NLE&#xf…

第十四屆藍橋杯青少組C++國賽[2023.5.28]第二部分編程題(4、 數獨填數)

參考程序&#xff1a;#include <bits/stdc.h> using namespace std;char board[9][9];// 檢查在 (r,c) 填 num 是否有效 bool isValid(int r, int c, char num) {for (int i 0; i < 9; i) {if (board[r][i] num) return false; // 同行if (board[i][c] num) r…

C語言中奇技淫巧08-使用alloca/__builtin_alloca從棧上分配空間

alloca是什么? alloca 是一個非標準但廣泛支持的 C 語言函數&#xff0c;用于在當前函數的棧&#xff08;stack&#xff09;上動態分配內存。 與 malloc 的區別&#xff1a; malloc 在堆&#xff08;heap&#xff09; 上分配內存&#xff0c;需要手動調用 free 釋放。alloca 在…

【Markdown轉Word完整教程】從原理到實現

Markdown轉Word完整教程&#xff1a;從原理到實現 前言 在技術文檔編寫和學術論文創作中&#xff0c;Markdown因其簡潔的語法和良好的可讀性而廣受歡迎。然而&#xff0c;在實際工作中&#xff0c;我們經常需要將Markdown文檔轉換為Word格式&#xff0c;以便與同事協作、提交正…

IBM穿孔卡片:現代計算技術的奠基之作

本文由「大千AI助手」原創發布&#xff0c;專注用真話講AI&#xff0c;回歸技術本質。拒絕神話或妖魔化。搜索「大千AI助手」關注我&#xff0c;一起撕掉過度包裝&#xff0c;學習真實的AI技術&#xff01; 1 打孔卡概述 穿孔卡片&#xff08;Punch Card&#xff09;又稱打孔卡…

亞馬遜旺季來臨如何用woot沖刺

在亞馬遜旺季來臨之際&#xff0c;使用Woot沖刺需結合新品推廣、老品激活、庫存清理等不同場景&#xff0c;通過精準選品、活動設置、廣告配合及數據監控實現銷量與排名的雙重提升。以下是具體操作指南&#xff1a;一、精準選品&#xff1a;匹配提報條件新品期選品標準&#xf…

AlexNet:計算機視覺的革命性之作

AlexNet: Revolutionizing Deep Learning for Computer Vision (1)網絡提出的背景 論文題目:ImageNet Classification with Deep Convolutional Neural Networks arXiv地址:https://arxiv.org/abs/1207.0575 在2012年ImageNet大規模視覺識別挑戰賽(ILSVRC)中,AlexNet以15…

【高等數學】第十一章 曲線積分與曲面積分——第二節 對坐標的曲線積分

上一節&#xff1a;【高等數學】第十一章 曲線積分與曲面積分——第一節 對弧長的曲線積分 總目錄&#xff1a;【高等數學】 目錄 文章目錄1. 對坐標的曲線積分的概念與性質1. 對坐標的曲線積分的概念與性質 變力沿曲線所作的功 先用曲線 LLL 上的點 M1(x1,y1),M2(x2,y2),…,M…