摄像机视口屏幕投射

众所周知,当摄像机投影时,采用的是视觉圆锥进行的投射,类似手电筒向外照射光的时候。

在视觉圆锥内的就能被摄像机观察到。

但我们计算机屏幕是方形的,所以所显示的内容,只能是视觉圆锥的一部分,还有一部分被舍去了。

有两个关键点,一个是摄像机点,一个是观察点。观察点作为中心点,始终是显示的计算机屏幕中心的,我们可以把这个点作为基准点。

我们可以设定摄像机点与观察点始终是垂直于显示面的,也既计算机屏幕。

我们把视觉圆锥内所有的物体,由远及近向显示面(屏幕)进行投影,就形成了屏幕上显示的内容。

了解了视口屏幕的投射过程,那们我们可以分析哪些物体能被投影到屏幕上了:

设摄像机点O、观察点A形成射线: OA->

设摄像机点O、某物体B点形成射线: OB->

设摄像机观察角度为: angle=45度

1.      位于视口圆锥内:OA->与OB夹角在angle角以内

方向:
向量doprodut (OA->,OB->) <=0 (意味着>90度)不在范围内

方向:
向量GetAngle(OA->,OB->) > 像机的观察角angle不在范围内

2.      能够投影到屏幕上:OB->投影到显示面上的点C位于显示面(屏幕)内

设观察点坐标为(0,0,0) 并且观察面在x/y轴上(z=0):

(视觉圆锥投在该面的容纳该高宽比的最大矩形高宽)

Width:显示面的宽度

Height:显示面的高度

则屏幕坐标-width/2<=x<=width/2, -height/2<=y<= height /2

如果投影点的x/y坐标在屏幕坐标范围内,则可以显示。

变换距阵为:

1.      平移: (把A变成原点)

Translate(-A坐标)

2.      旋转: (把OA变成Z轴)

以z轴为旋转轴,旋转角度为(OA和z轴夹角)

OB点经过这个距阵处理后,向z=0平面投影,得到投影点C

C点的x/y符合屏幕坐标,则意味着在屏幕内,否则在屏幕外

Owed by: 春夜喜雨 http://blog.csdn.net/chunyexiyu 转载请标明来源

时间: 2024-10-01 05:02:34

摄像机视口屏幕投射的相关文章

安卓手机屏幕投射到电脑以及一台电脑控制多台手机技术原理浅析

奥创软件研究院推出的奥创微群控让越来越多的人了解到了电脑控制手机的操作.自奥创软件研究院首家发布电脑批量控制手机的解决方案以来,有很多人开始探讨电脑控制手机技术在实际工作中的应用. 由于市场太大,仅靠奥创软件研究院一家也是做不过来的,现在将手机屏幕投射到到电脑的技术原理,以及一台电脑批量控制多台手机的技术(即所谓的手机反响控制)简单的给大家介绍下,在此抛砖引玉,希望能给大家一些思路上的指导. 说到安卓手机的屏幕投射,就不得不说安卓的adb,ADB的全称为Android Debug Bridge这

Android手机屏幕投射到电脑神器Vysor

做android开发的,经常要把手机屏幕投射到电脑,用来演示.普遍的解决方案是360或者豌豆荚的演示功能,缺点是延迟非常厉害,大概有3秒左右,非常影响演示效果.以下介绍Vysor,几乎0延迟,能与手机画面同步 Vysor是chrome浏览器的应用,因此先要下载原版的chrome,并且还要使用chrome应用商店,如何fq使用应用商店大家可以百度 软件打开后是这么个样子 PS:win10要安装最新的ADB驱动,软件界面下方有提供下载链接 然后是手机的准备,首先,开启usb调试模式 然后用usb线把

安卓手机屏幕投射电脑 手机投屏到win7

现在较多的手机都支持屏幕录屏功能,可是投屏功能很少见.那么怎么将安卓手机屏幕投射电脑?通过下面的文章,我来实践操作告诉大家手机投屏的办法.使用工具:手机.电脑操作方法:1.想要将手机的屏幕投屏到电脑上可以利用投屏工具进行投屏操作,此方法只适用于安卓手机使用哦!2.下面给大家分享的方法,可以轻松将手机画面分享到电脑,简单好用,容易上手,并支持自动录屏.3.首先打开手机,点击投屏,点开扫一扫投屏对着电脑客户端的二进行扫码投屏.显示停止投屏就代表在投屏成功了.4.投屏成功之后,手机的屏幕就会投屏到电脑

通过 PC 远程控制 Android 的应用 -- 可以将手机屏幕投射显示到电脑上

测试结果中的部分测试图:Mobizen手机界面: 电脑界面: 主界面 视频 全屏视频 WebKey手机界面: 电脑界面: AirMore手机界面: 电脑界面:主界面 镜像 全屏镜像 Airdroid手机界面: 电脑界面:Web主界面 (含AirMirror) 局域网主界面 屏幕截图 全屏屏幕截图 Windows 10 周年版新增 Connect(连接) APP 可以把 Android 手机屏幕传送到电脑 Windows 操作中心 - 连接 - 投影到这台电脑:   “开始”菜单 - 连接 手机“

android 使用asm.jar将android手机屏幕投射到电脑

使用asm.jar将Android手机到电脑屏幕投影 有时候可能须要将手机上的一些操作投影出来,比方一些App Demo的展示等.事实上,有专门的硬件设备能干这件事儿.但不是必需专门为展示个Demo去花钱买硬件设备.正好,对于Android系统的手机.有一个开源的jar包能干这事儿:Android Screen Monitor(asm.jar),官网 https://code.google.com/p/android-screen-monitor/  . 1.到官网下载ASM的zip包,解压后得

3D基础知识——01Camera摄像机

任何3D画面都是由两个基础部分组成:观察者/摄像机和被观察物 Camera摄像机 Clear Flags:清除标记:决定屏幕的哪部分将被清除,该项一般用于使用多台摄像机来绘制不同游戏对象情况 Skybox:天空盒,该模式为默认设置,在屏幕汇总空白的部分将显示当前摄像机的天空盒,如果当前摄像机没有设置天空盒,它会默认使用背景景色 Solid Color:纯色,选择该模式后,屏幕上的空白部分将显示当前摄像机的背景色 Depth Only:深度相机,只渲染采集到的画面 Don't Clear:不清除,

射线投射与碰撞层

射线:射线是3D世界中一个点向一个方向发射的一条无终点的线,在发射轨迹中与其他物体发生碰撞时,它将停止发射 .用途:在unity中射线应用范围比较广, 多用于碰撞检测(如:子弹飞行是否击中目标).角色移动 等. 相关API: 1.Ray Camera.main.ScreenPointToRay(Vector3 pos)   返回一条射线Ray从摄像机到屏幕指定一个点 2.Ray Camera.main.ViewportPointToRay(Vector3 pos)  返回一条射线Ray从摄像机到

Unity2D多分辨率屏幕适配方案(转载)

一下内容转自:http://imgtec.eetrend.com/forum/3992 此文将阐述一种简单有效的Unity2D多分辨率屏幕适配方案,该方案适用于基于原生开发的Unity2D游戏,即没有使用第三方2D插件,如Uni2D,2D toolkit等开发的游戏,NGUI插件不受这个方案影响,可以完美和此方案配合使用. 先说明一些基本的概念: 1.屏幕的宽高比Aspect Ratio = 屏幕宽度/屏幕高度 2.Unity2D中摄像机镜头的尺寸决定了我们实际看到游戏内容的多少,在编辑器中我们

关于像素分辨率及视口的一些概念

设备像素: 屏幕上的物理像素. 分辨率 : 1.屏幕分辨率 : 屏幕上的像素点个数(横 * 竖) 2.图片分辨率 : 图片中像素点的个数 CSS像素 : 逻辑像素, CSS代码中使用 逻辑像素320x568px-->设备像素640x1136px (1*1CSS像素 ==> 2*2个物理像素 : 设备像素比) 设备像素比 : DPR = 物理像素数 / 逻辑像素数 dpr=2时,1个CSS像素由4个物理像素点组成. window.devicePixelRatio 像素密度 : 显示密度dip/p