Unity3D for VR 学习(4): 自绘摄像机的视口区域锥体

在Unity Editor下,当选择Camera组件后,可呈现出Camera视口区域锥体,非常方便。但是当选择其他物体,如Cube后,就无法得知是否在Camera市口区内了,这里我找到了雨松MOMO的一篇博客《Unity3D研究院之获取摄像机的视口区域》,他用Camera.fieldOfView和Camera.aspect算出屏幕比例,然后再得出width、height(摄像机)绘制了四边形,非常酷,可以解决这个痛点。

我在巨人肩膀上,做了一些拓展:

自动获得Camera的farClipPlane和nearClipPlane

void Start() 
    { 
        if (!theCamera) 
        { 
            theCamera = this.GetComponent<Camera>(); 
        }

upperDistance = theCamera.farClipPlane; 
        lowerDistance = theCamera.nearClipPlane; 
        tx = theCamera.transform; 
    }

连线far和near ClipPlane

void FindLower2UpperCorners() 

    Vector3[] corners_upper = GetCorners(upperDistance); 
    Vector3[] corners_lower = GetCorners(lowerDistance);

Debug.DrawLine(corners_lower[0], corners_upper[0], Color.blue); 
    Debug.DrawLine(corners_lower[1], corners_upper[1], Color.blue); 
    Debug.DrawLine(corners_lower[2], corners_upper[2], Color.blue); 
    Debug.DrawLine(corners_lower[3], corners_upper[3], Color.blue); 
}

挂接这个CameraViewEx.cs脚本到Camera组件同GameObject即可, 运行时有效:

源码下载地址:http://git.oschina.net/xifarm/VR_Mojing/

备注:

不用这个脚本,直接在Game视图,打开Gizmos也可以看到Unity自带的Camera视口区域锥体。

时间: 2024-12-22 01:30:24

Unity3D for VR 学习(4): 自绘摄像机的视口区域锥体的相关文章

Unity3D for VR 学习(6): 再次温故知新-3D数学

一年前,系统学习过3D数学,并记录了一篇博客<C#程序员整理的Unity 3D笔记(十):Unity3D的位移.旋转的3D数学模型>. 一年后,再次温习之. 坐标系:Unity3D使用左手笛卡尔坐标系(Descartes coordinate system) 世界坐标系(world space):在一个游戏场景中,唯一. 物体坐标系\局部坐标系(local\Object space):每个物体有各自的独立的坐标系.如桌子的物体坐标系中,扶手相对桌子腿位置.有时候,不需要对外暴漏太多细节. 摄像

Unity3D for VR 学习(7): 360&#176;全景照片

在VR应用中,有一个相对简单的虚拟现实体验,那就是360°全景照片浏览器, 他可以使得手机拍照的”全景”照片,  得以”恢复”当时拍照的场景全貌,  这个创意的确比单纯的2d图片更有震撼力一些,故本文就制作360全景照片的过程进行简单小结. Step 1:预期需求 可以通过手机的陀螺仪,在魔镜中查看360°图片:不用依赖任何蓝牙输入,仅通过Gaze Input进行选择下一张360°图片(盯着缩放图2s,进度条旋转完成后,就切换图片:用Gear VR的磁铁触发功能也可以实现选择下一张图片). St

Unity3D for VR 学习(8): Unity Shader概述

从西安到北京高铁上,一位VR老外团队的华人leader对VR技术做了画龙点睛: “3D游戏的核心部分在Render, 国内很多团队美术.程序中间缺失严重.所以3d游戏做不好. VR这块更是至关重要.” 故,欲VR,先Shader吧. 1 CG规范: 计算机图形学(英语:computer graphics) 在Windows下图像渲染是DirectX: 在Linux下图形渲染是OpenGL:在苹果下新出的Metal渲染.而作为Unity3D程序,跨平台的特性则无须对这些平台一一掌握,仅需要从CG规

Unity3D for VR 学习(9): Unity Shader 光照模型 (illumination model)

关于光照模型 所谓模型,一般是由学术算法发起, 经过大量实际数据验证而成的可靠公式 现在还记得2009年做TD-SCDMA移动通信算法的时候,曾经看过自由空间传播模型(Free space propagation Model),目的为了得出移动信号的传播损耗.当时是基于普通的PC实时运算,非常非常耗时–如北京五环内的传播模型渲染GIS图用了超过20分钟. 光照模型来源有2类: 一类是基于学术论文的算法,如Lambert模型.Phong模型. 另一类基于算法的变种–在实际生产实践中修正得到的模型,

Unity3D for VR 学习(2): 暴风魔镜框架探索

学习一个新技术,有三个法宝: 法宝1: 掌握厂家提供的用户API手册 法宝2: 掌握厂家提供的demo样例 法宝3:<每个研发人员都应树立的一个demo模式> 故,学习魔镜4技术,亦如是也. 暴风魔镜4是 硬件 + 暴风VR SDK软件的CardBoard VR解决方案. 硬件 魔镜4硬件提供了展示容器工具,主要由2个凸透镜和塑料头盔构成.故为了看到效果酷炫的VR效果,必须要依赖5寸以上Android手机–720P以上,把通过暴风魔镜SDK做的App放入里面,通过暴风魔镜凸透镜才能看到VR的效

Unity3D for VR 学习(3): 暴风魔镜PC Input小改造–自己动手、丰衣足食

在做手游的时候,80%时间是在PC调试的,例如业务逻辑.AI算法.核心玩法等. 拿到魔镜提供的demo,晕了,必须得安装到Android机器上,才能调试,究其原因,有三: 需要用到手机陀螺仪 需要用到蓝牙手柄 需要用到魔镜的凸透镜 这些都是客观原因,但是每次打包后,安装Android,再戴到头上,Debug.log啥的都看不清,呵呵. 故就着手改造一下输入快捷键,从而可以方便的模拟手机陀螺仪输入.模拟蓝牙输入.模拟非VR Mode切换. 1 模拟手机陀螺仪输入 这个在mojing.cs有现成隐藏

Unity3D for VR 学习(1): 又一个新玩具 暴风魔镜 4(Android)

2016年伊始,有了VR虚拟现实硬件设备:  暴风魔镜4–好奇者的新玩具 . 2015年下半年的朋友圈中各种VR.AR的新闻层次不穷,搞的我也心痒痒的:好歹咱也是职业的Unity3D程序员,高大上的Oculus rift dk2咱玩不起,搞个廉价的VR产品也玩玩嘛! 故, 暴风魔镜 4刚发布就在网上预订了.    原估计春节前能到货,没有想到元旦前就到货了,高兴 — 业内良心嘛. 迫不及待玩了几天,小结如下: 1 魅蓝 Note 2 + 魔镜4 的VR效果不错,完全对得起159元的预订价,比预期

菜鸟在线教你用Unity3D开发VR版的Hello World

大家好,我是菜鸟在线的小编.这篇短文将告诉大家如何用Unity3D开发VR版的Hello World. 1开启SteamVR并连接Vive设备 (a)登录Steam客户端,并点击右上角的VR按钮,这时会弹出SteamVR的小窗口 (b)连接好所有VR设备,连接成功后SteamVR窗口上的图标会全部变为绿色 2新建unity3d工程 3通过Asset Store导入SteamVR Plugin 4拖入相关prefab 先删除所有默认GameObject 然后将SteamVR/Prefabs中的所有

Unity3D关于VR的Demo(一)

https://blog.csdn.net/qq_15807167/article/details/52048998?locationNum=8&fps=1 阅读数:9716 最近有点忙,只有挤时间去了解VR这方面的Demo了,之前关注了一个Android平台的视频VR的demo研读的差不多了,现在开始关注Unity3d建造VR游戏环境的demo. Android下demo例子地址. * https://github.com/ashqal/MD360Player4AndroidVR视频播放dem