首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

设置正交相机位置以在OSG中显示平面范围

在OSG中,设置正交相机位置可以用于显示平面范围。正交相机是一种投影方式,它将场景投影到一个平行于观察平面的平面上,使得物体在观察平面上的投影大小与实际物体大小相等,不会因为距离的远近而产生透视效果。

在OSG中,设置正交相机位置可以通过以下步骤实现:

  1. 创建一个osg::Camera对象,并设置其投影方式为正交投影:
代码语言:txt
复制
osg::ref_ptr<osg::Camera> camera = new osg::Camera;
camera->setProjectionMatrixAsOrtho2D(left, right, bottom, top);

其中,left、right、bottom、top分别表示平面范围的左、右、下、上边界。

  1. 设置相机的视口(viewport):
代码语言:txt
复制
camera->setViewport(x, y, width, height);

其中,x、y表示视口的左下角坐标,width、height表示视口的宽度和高度。

  1. 设置相机的位置和方向:
代码语言:txt
复制
camera->setViewMatrixAsLookAt(eye, center, up);

其中,eye表示相机的位置,center表示相机观察的目标点,up表示相机的上方向。

  1. 将相机添加到场景图中:
代码语言:txt
复制
osg::ref_ptr<osg::Group> root = new osg::Group;
root->addChild(camera);

通过以上步骤,可以在OSG中设置正交相机位置以显示平面范围。在实际应用中,正交相机常用于展示二维平面、地图、CAD设计等场景。

推荐的腾讯云相关产品和产品介绍链接地址:

  • 腾讯云计算服务:https://cloud.tencent.com/product/cvm
  • 腾讯云数据库:https://cloud.tencent.com/product/cdb
  • 腾讯云存储服务:https://cloud.tencent.com/product/cos
  • 腾讯云人工智能服务:https://cloud.tencent.com/product/ai
  • 腾讯云物联网平台:https://cloud.tencent.com/product/iotexplorer
  • 腾讯云移动开发服务:https://cloud.tencent.com/product/mobdev
  • 腾讯云区块链服务:https://cloud.tencent.com/product/baas
  • 腾讯云元宇宙服务:https://cloud.tencent.com/product/vr
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

【Android 音视频开发打怪升级:OpenGL渲染视频画面篇】二、使用OpenGL渲染视频画面

所以设置相机位置,是相对与世界坐标原点来说的。 相机位置 OpenGL 世界坐标系是一个右手坐标系,正 X 轴右手边,正 Y 轴朝上,正 Z 轴穿过屏幕朝向你。 ?...近平面和远平面 看回上面透视投影的图片,相机的右边有两个平面,靠近相机的为近平面,较远的一面为远平面。 裁剪空间 可以看到远平面和近平面的四边的连线最后都汇集到相机位置。...正交投影 和透视投影一样,正交投影也有相机、近平面和远平面,不同的是,相机的视线不在是聚焦一点上,而是平行线。所以近平面与远平面中间的可视窗体是一个长方体。...通过两个矩阵aPosition和uMatrix相乘,得到了画面像素点正确的显示位置。 至于缩放的原理,都已经在上面讲清楚了,不在细说,只说关于近平面和远平面设置。...至此,一个漂漂亮亮的画面终于可以正常的显示出来了。 ? 画面正常.jpg 改变相机位置 上文提到过,OpenGL可以设置相机位置和朝向,但是实际上,在上面的代码并没有设置,因为相机默认原点的位置

2.2K30
  • OpenGL-投影和摄像机

    1.OpenGL的摄像机、视景体、近平面 OpenGL的摄像机和现实世界的人眼很相似,都有一个三维的坐标表示位置,眼睛的朝向和视野范围位置和眼睛朝向不同,所观察到的物体的形态就会有所不同,视野范围则规定了只有范围的物体才会进入人的视线...相对于人眼观察物体,人头的朝向,头的朝向影响了最后的成像。同样图来说明: ? 当up向量为Y的正方向时,正如我们头顶对着天花板,所以观察到的物体是正的,投影平面的样子就是正的,如右图。 ?...,upz 相机向上的方向在世界坐标的方向 第一组眼睛就相当于你的头一个三维坐标的具体坐标。...世界空间:世界空间一开始有介绍过,是物体最终的3D场景的的位置坐标对应的坐标系空间,通过代码设置的物体顶点坐标,摄像机坐标,投影平面的left,right等坐标,都是相对于世界空间的。...当然,设置平面位置也需要考虑需要显示的物体的顶点坐标,如果近平面太小,导致视景体太小无法完全包住观察的物体的话,也就无法观察出来了。

    3.3K121

    Unity通用渲染管线(URP)系列(十五)——粒子(Color and Depth Textures)

    如果我们将不受光的材质分配给它,则粒子将显示为与相机平面对齐的纯白色正方形。它们会突然出现并消失,但由于它们从平面以下开始,因此似乎从地面升起。 ?...它是用于执行透视划分将3D位置投影到屏幕上的值。这是视图空间的深度,因此它是距相机XY平面而不是其近平面的距离。 ? 什么是视图空间?...它是0~1范围内的值,对于正投影而言是线性的。要将其转换为视图空间深度,我们需要根据相机的近距离范围对其进行缩放,然后加上近平面距离。...但这是相机平面,而不是其近平面。因此,需要添加使用近平面的值。1是合理的默认值。该范围控制过渡区域的长度,该区域内粒子将线性淡出。同样,1是一个合理的默认值,或者至少需要是一个小的正值。 ?...因此,引入_CameraDepthTexture标识符,并添加一个布尔值字段指示我们是否正在使用深度纹理。仅应在需要时才考虑复制深度,这将在获取相机设置Render确定。

    4.6K20

    坐标系与矩阵(6)模型视图投影矩阵

    同样需要一个矩阵,实现家具相机坐标系(相对)的位置 ? 转换到地球坐标系(绝对)下的位置 ? ,我们称为视图矩阵,记为 ? : ? 基于之前的介绍,通常全球坐标系 ?...下面进入投影部分,既然是投影,就是一种降维求近似解的过程,我们可以理解为洗照片,把3D空间降维到2D,最主要的有两种方式:正交投影和透视投影。 ? 如上图显示了两者的主要区别。...上图,正交投影和透视投影下的区别体现了两者本质的区别,欧氏几何体现了是同一个平面内的关系,正交投影直接丢弃掉Z值形成了一个平面,因此保留了欧氏几何的规则。而透视投影则考虑了多平面,多视角下的区别。...第三篇介绍平移时,讲到了齐次坐标实现了仿射变换,这里,齐次坐标增加一个维度的代价,实现了相同点在多平面下的表达方式,升维实现了统一解。 ? 如上的两条平行线,本来是无解的,但在齐次坐标下,当 ?...映射到2D平面: ? 下一篇和本篇原理上没有区别,但主要专注于视觉相机本身的范畴。

    1.1K30

    【带着canvas去流浪(13)】用Three.js制作简易的MARVEL片头动画(下)

    设置好参数后,就可以生成MARVEL生成的字体模型线框图(下图材料中开启了wireframe线框模式): ?...不规则表面贴图,就像把电影投影到一个不规则表面进行放映,比如将投影仪的幕布折叠成某个形状,画面依旧会二维投影的形式展现在幕布上。...关于这两种相机的使用,直观的区别是: 使用透视相机就好比使用者调节一个真实摄像机的参数来改变出现在镜头中的画面的效果,可以说是一种间接确定拍摄范围,且它的视场是一个锥形区域;而正交相机相当于是直接设定拍摄范围的长宽高...通过传入左右上下远近6个参数来确定一个矩形盒子作为舞台区域,舞台内的就可以显示,不在舞台内的就不显示,比如下面示例如果绕y轴转动字体模型,就会有一部分超出所设定的舞台区域: [](https://img2018...正交相机的参数修改后需要显示调用一下camera.updateProjectionMatrix( )来让其生效。

    1.2K31

    通过OSG实现对模型的日照模拟

    1) 环境反射 环境反射是针对环境光而言的,环境反射中,环境光照射物体是各方面均匀、强度相等的,因此环境光不用设置位置和方向,只需要指定颜色。 2) 漫反射 漫反射是针对平行光和点光源光而言的。...太阳高度角指的就是太阳光的入射方向和地平面之间的夹角;而太阳方位角略微复杂点,指的是太阳光线平面上的投影与当地子午线的夹角,可近似地看作是竖立地面上的直线阳光下的阴影与正南方向的夹角。...令太阳光线长度L1=1,有如下推算过程: α是太阳高度角,则日照方向Z长度L3=sin(α); L1平面(XY)平面的长度L2 = cos(α); β是太阳方位角,则日照方向X长度L5 = L2cos...是通过设置光照节点加入到场景节点中来实现光照的。...阴影 OSG已经实现了生成阴影的组件osgShadow。

    2.2K30

    three.js 相机

    图形学相机定义了三维空间到二维屏幕的投影方式,根据投影方式的不同,相机可分为 正交投影相机 与 透视投影相机。...六个参数分别对应 X 轴的最小最大坐标, Y 轴的最小最大坐标, Z 轴的最小最大坐标, 创建的一个平行视景体(长方体空间区域),坐标落在该区域内的物体才可见: left (左边界) —— 该属性是可视范围的左平面...right (右边界) —— 该属性是可视范围的右平面, 即可渲染部分的右侧边界, 右边界右侧的任何对象都看不到。 top (上边界) ——  可被渲染空间的最上面。...near (近面) —— 基于相机所在的位置, 从这一点开始渲染场景。 far (远面) —— 基于相机所在的位置, 一直渲染到场景的这一点。...同时亦可用正交投影参数来描述透视投影: ? 创建一个对称的透视型视景体 fov —— 可视角度, YZ 平面的角度, 范围为 [0.0 , 180.0]。 aspect —— 实际窗口的纵横比。

    6.8K20

    用 Three.js 画个 3D 生日蛋糕送给他(她)

    平行光:平行的光线 环境光:均匀照射每个地方 聚光灯:舞台聚光灯的光源 三维场景的物体有很多种,比如永远面向相机平面是 Sprite(我们做“漫天花雨”效果用的那个),还有由三角形构成的物体叫做 Mesh...场景的物体准备好之后,还需要设置下光源 Light 和相机 Camera,相机主要有从点去看的透视相机和从一个平面去投影的正交相机,之后就可以通过渲染器 Renderer 渲染出来了,结合 requestAnimationFrame...创建了 Scene 的蛋糕的每一部分,设置好了光源、相机,用渲染器做了一帧帧的渲染,并且添加了用鼠标来改变视角的轨道控制器之后,就完成了 3D 蛋糕的制作。...其中文字的 Mesh 需要做 ttf 到 typeface.json 的转换,加载这个 json 才能显示文字。 物体创建完了之后,还要设置相机、灯光等,然后通过渲染器来一帧帧的渲染。...设置了环境光,使用了正交相机,还启用了轨道控制器 OrbitControls,来实现鼠标拖拽改变相机位置,进而改变视野角度的效果。

    3.4K31

    osgEarth使用笔记3——加载倾斜摄影数据

    概述 我OSG加载倾斜摄影数据》这篇博文中论述了如何通过OSG生成一个整体的索引文件,通过这个索引文件来正确显示ContextCapture(Smart3D)生成的倾斜摄影模型数据。...这类倾斜摄影模型数据一般都会有个元数据metadata.xml,通过这个元数据,可以将其正确显示osgEarth的数字地球上。 2. 详论 2.1....osgEarth可以不用关心这个问题,其直接封装了一个类osgEarth::GeoTransform,可以直接通过这个类的接口来加载倾斜摄影模型: std::string filePath = "D...但是一般的投影东向和北向的方向是不会变的,仍然可以将SRSOrigin的地理位置当成一个站心位置,只不过这个站心位置不再是经纬度而是EPSG:2384的平面坐标值(加上高程)。...所以像这种类型的数据,只需要将SRSOrigin的地理位置值转换成经纬度值,就变成2.1描述的情况了。 3.

    3.5K10

    ​OpenGL 学习系列---投影矩阵

    OpenGL 提供了两种投影方式:正交投影和透视投影。 正交投影矩阵 ? 不管是正交投影还是透视投影,最终都是将视景体内的物体投影平面上,这也是 3D 坐标转换到 2D 坐标的关键一步。...同时,近平面和远平面的距离都是指相对于视点的距离,所以 near、far 要为正数,而且 ? 。 可以 GLSurfaceView 的 surfaceChanged 里面来设定正交投影矩阵。...它的视景体有点类似于正交投影,参数理解上基本都相同的。...因为它们都是相对于视点的距离,也就是照相机的距离。 当用视图矩阵确定了照相机位置时,要确保物体距离视点的位置 near 和 far 的区间范围内,否则就会看不到物体。...由于透视投影会产生近大远小的效果,当照相机位置不变,改变 near 的值时也会改变物体大小,near 越小,则离视点越近,相当于物体越远,那么显示的物体也就越小了。

    1.1K20

    SLAM初探(二)

    相机标定 相机的内参矩阵 OpenCV的3D重建中(opencv中文网站:照相机定标与三维场景重建),对摄像机的内参外参有讲解: 外参:摄像机的旋转平移属于外参,用于描述相机静态场景下相机的运动,...,环境中选择一个基准坐标系来描述摄像机的位置,并用它描述环境任何物体的位置,该坐标系称为世界坐标系。...成像平面坐标系(Retinal coordinate system) 由于图像坐标系只表示象素位于数字图像的列数和行数,并没有用物理单位表示出该象素图像的物理位置,因而需要再建立物理单位(例如厘米...我们用(x,y)表示物理单位度量的成像平面坐标系的坐标。...其中s'表示因摄像机成像平面坐标轴相互不正交引出的倾斜因子(skew factor)。

    2K50

    综述:用于自动驾驶的全景鱼眼相机的理论模型和感知介绍

    下图显示了覆盖整个360°的车辆周围环境。通过融合四个摄像头为驾驶员提供的环视效果也较小的方框显示。...由于这种相机的透镜而产生的所有失真模型都被简单地设计成从平面上的投影中心径向移动交点位置某种程度上,鱼眼算法的开发由于缺乏统一的几何结构而变得复杂,许多模型使用不同的属性来描述鱼眼投影。...当校准模式具有相对于车辆坐标系的已知位置时,可以离线环境如上所述估计摄像机的姿态。...这将双视图摄像机设置对应点(立体匹配)的搜索减少为1D问题,对于全向相机,如鱼眼相机,使用球面投影面代替平面投影面,更直观的是讨论对极平面而不是对极线, 图12:球形对极几何结构。...进行光流的球面坐标变换,并调整正高度、深度和极线约束设置工作。他们还提出了反平行约束,消除汽车平行于自我车辆移动时通常出现的运动视差模糊。

    4K21

    基于 Threejs 的 web 3D 开发入门

    相机:Threejs必须要有往场景添加一个相机相机用来确定观察位置、方向、角度,相机看到的内容,就是我们最终屏幕上看到的内容。程序运行过程,可以调整相机位置、方向、角度。...相机 相机正交投影相机和透视投影相机两种。透视投影跟人眼看到的世界是一样的,近大远小;正交投影则远近都是一样的大小,三维空间中平行的线,投影到二维空间也一定是平行的。...大部分场景都适合使用透视投影相机,因为跟真实世界的观测效果一样;制图、建模等场景适合使用正交投影相机,方便观察模型之间的大小比例。...投影的大小 考虑一种比较简单的场景,相机示景体的远近平面和坐标系的xy平面平行,从而示景体远近平面上的内容刚好可以垂直投影到画布上,并且示景体与xy平面平行的任何一个平面,投影到画布上刚好等于画布大小...正是因为透视投影相机的示景体近小远大,才会导致同样一个物品放在不同位置显示出近大远小的效果。而正交投影相机因为远近平面大小一样,所以同一个物品距离相机的远近不影响物体画布上投影展示的大小。

    15.3K43

    理解单目相机3D几何特性

    所以我们首先必须了解相机如何将3D场景转换为2D图像的基本知识,当我们认为相机坐标系的物体场景是相机原点位置(0,0,0)以及相机的坐标系的X、Y、Z轴时,摄像机将3D物体场景转换成由下面的图描述的方式的...单应矩阵 当忽略世界坐标系的z方向时,有一种称为单应性的技术可以从图像像素恢复3D位置,换言之,我们只考虑3D世界平面,如果忽略世界坐标的z方向,4x3摄像机矩阵P可以简化为3x3单应矩阵H。...方形矩阵可以有其逆矩阵H-1,它可以将图像的u,v像素映射到世界坐标系的x,y,0坐标,如下所示: 事实上,图像到图像的映射也是可以的,因为z=0的世界坐标平面可以理解为一个图像,游泳比赛的电视转播...逆透视变换 距离透视视图中会发生扭曲,因为离相机较近的固定距离看起来较大,而离相机较远的固定距离看起来较小,然而,正交视图中的距离不会扭曲,并且无论它位于何处都是一致的。...因此,我们可以使用一种称为逆透视变换技术,将图像从透视视图校正为自上而下的正交视图,测量距离(https://arxiv.org/pdf/1905.02231.pdf),前提是我们知道了相机的内在矩阵和外参矩阵

    1.7K10

    NDK OpenGLES3.0 开发(八):坐标系统

    OpenGL 坐标系统 我们知道 OpenGL 坐标系每个顶点的 x,y,z 坐标都应该在 -1.0 到 1.0 之间,超出这个坐标范围的顶点都将不可见。... C/C++ 可以利用 GLM 构建正交投影矩阵: glm::mat4 Projection = glm::ortho(-ratio, ratio, -1.0f, 1.0f, 0.0f, 100.0f...通过这四个参数我们定义了近平面和远平面的大小,然后第五和第六个参数则定义了近平面和远平面的距离。这个指定的投影矩阵将处于这些 x,y,z 范围之间的坐标转换到标准化设备坐标系。 透视投影 ?...对于一个真实的观察效果,它的值经常设置为 45.0,但想要看到更多结果你可以设置一个更大的值。第二个参数设置了宽高比,由视口的高除以宽。第三和第四个参数设置了平截头体的近和远平面。...我们经常设置近距离为 0.1 而远距离设为 100.0 。所有平面和远平面的顶点且处于平截头体内的顶点都会被渲染。

    1.4K20

    基于消失点的相机自标定(1)

    最常见的相机模型是针孔相机,它通过从三维欧几里德空间到图像平面的投影变换来生成图像。假设一个理想的投影,点的共线保持不变。因此,场景的线作为线投影到图像平面上。...(因为建筑物能够方便的提取出三个轴方向的消失点) 用两个消失点标定相机 两个坐标系为中心。将摄像机投影中心置于Oc处,图像的中心用Oi表示,Oc为像面上的正交投影。...消失点在图像平面上的坐标是V1=(v1i,v1j)和V2=(v2i,v2j)。Oi直线(V1V2)上的投影用Vi表示,主点位于光轴与像面相交处。其位置对于校准过程的进一步计算至关重要。...由于旋转矩阵R已知,我们可以将线段与其相机坐标系的图像对齐: ? 现实世界的线段由相机通过投影变换成像,产生两个图像点pi1px和pi2px,像素表示。...针孔模型,可以通过不做像素变换来计算图像任何点的公制坐标,则第三个坐标是焦距: ? 现在可以图像平面上进行线段平移,方法是将其第一个点设置在其图像PI1m上并计算第二个点的位置

    3.8K21

    变换(Transform)(2)-坐标空间变换

    为什么要进行坐标空间的变换 日常生活,当我们给其他人指明一个地点的位置时经常使用东南西北,但另一个人可能根本就分不清方向;如果我们使用另一种表达方式,比如面向某某建筑物大门时的右侧,就很容易理解,这就是坐标空间的转换...顶点变换的第一步,就是将顶点坐标从模型空间转换到世界空间中,这个变换通常叫做模型变换(model transform),模型坐标到世界坐标的转换非常类似于设置3D模型在世界空间中摆放的位置和姿态,也就是使用旋转...同样地,各种引擎以及自己设计小的系统时,不会用这6个参数来表示正交投影的可视空间 正交投影的可视空间相比于透视投影要简单得多,要定义一个需要依赖摄像机以及三个参数: 相机与近裁剪平面的距离Near 相机与远裁剪平面的距离...这个立方体的x轴和y轴都很好确定,就是-1, 1,但z轴不同的API会有不同的范围。例如OpenGLz轴的范围是-1, 1,但DirectXz轴的范围是0, 1。...DirectX,投影后z轴不会被映射到-1, 1而是0, 1上(跟正交矩阵一样),并且DirectX观察空间和裁剪空间都是左手系,一直看向z正轴,其n和f值是正数: \mathbf{M_{per[

    9920

    相机模型--Catadioptric Omnidirectional Camera

    Catadioptric Omnidirectional Camera CVPR97 Abstract 摘要 传统相机具有有限的视野(limited fields of view)使其视觉应用受到限制...(尽管某些显示应用上效果已经足够好)。再就是为了捕获 半球视野,鱼眼镜头 又大又复杂,价格较高。...经过推导得到反射面为 paraboloidal mirror 抛物反射面 所谓正交投影,只考虑所有三维空间中的点的X和Y坐标,所有点映射到XY平面上。...每一个二维眼空间中的点都是和z轴是平行的直线观察平面上的投影。所以正交投影又叫平行投影。正交投影可以把场景中所有的物体通过平行光线投影到观察平面上。...正交投影,不管物体离眼睛有多远,它都和原来的物体大小相同。 11

    1.2K30
    领券