CN114519759B - 一种视图变换方法、装置及介质 - Google Patents
一种视图变换方法、装置及介质 Download PDFInfo
- Publication number
- CN114519759B CN114519759B CN202210135836.7A CN202210135836A CN114519759B CN 114519759 B CN114519759 B CN 114519759B CN 202210135836 A CN202210135836 A CN 202210135836A CN 114519759 B CN114519759 B CN 114519759B
- Authority
- CN
- China
- Prior art keywords
- camera
- view
- calculating
- current
- axis
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000011426 transformation method Methods 0.000 title claims abstract description 11
- 239000013598 vector Substances 0.000 claims abstract description 45
- 238000013519 translation Methods 0.000 claims abstract description 10
- 238000004364 calculation method Methods 0.000 claims description 20
- 238000004590 computer program Methods 0.000 claims description 18
- 238000000034 method Methods 0.000 claims description 14
- 238000012545 processing Methods 0.000 claims description 8
- 238000010606 normalization Methods 0.000 claims description 6
- 230000001131 transforming effect Effects 0.000 claims description 5
- 230000008859 change Effects 0.000 abstract description 4
- 230000009466 transformation Effects 0.000 description 34
- 230000006870 function Effects 0.000 description 8
- 238000010586 diagram Methods 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 238000004891 communication Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/005—General purpose rendering architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/10—Geometric effects
- G06T15/20—Perspective computation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T19/00—Manipulating 3D models or images for computer graphics
- G06T19/20—Editing of 3D images, e.g. changing shapes or colours, aligning objects or positioning parts
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/70—Determining position or orientation of objects or cameras
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Graphics (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Architecture (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Computing Systems (AREA)
- Geometry (AREA)
- Processing Or Creating Images (AREA)
Abstract
本发明提供了一种视图变换方法,S1,获取单击任意顶点、边或面,记录点击的类型type号,根据type号查找相机目标位置的旋转四元数和方向向量;S2,根据当前视图下的相机实现方向向量和当前用户坐标系计算相机位置到相机视线目标位置的距离_radius,相机当前的视线目标_f1;S3,根据每一个图元定义的几何中心坐标,取所有图元中心的平均值_f2,计算当前目标_f1至_f2的距离;S4,按时钟间隔计算平移距离步进,将视图平移至至新的目标中心_f2;S5,按时钟间隔计算旋转角度步进,每一个步进下,保持_f2和_radius不变,同步更新相机的位置和相机旋转四元数,即视角方向,从而实现当前视图的视角实时动态变化;S6,旋转后需要重新定义图形系统的工作平面,该工作平面的法向量由旋转中心指向对应视图下的相机位置。
Description
技术领域
本发明涉及图形技术领域,具体来说,涉及一种视图变换方法、装置及介质。
背景技术
三维图形系统中通常都会提供视图变换的辅助工具,帮助用户从不同的视角查看和编辑模型,达到交互的目的。three.js是一个基于WebGL接口编写的三维图形框架,用于开发基于浏览器的三维图形系统,提供了包括场景、相机、渲染器和常用着色器封装组件,也提供了一个基础的视图辅助器ViewHelper。但是ViewHelper的功能非常简单,只能支持±x,±y及±z等6个方向的视图变换,只能支持在默认世界坐标系下的变化操作,而且±z视图的up轴角度是固定的,不能实现从不同角度旋转至±z视图时,up轴角度与旋转前的方向相关。例如,从+x方向变换至+z方向,其up轴是指向-x轴的;从+y轴方向变换之+z方向,其up轴是指向-y轴的。为此,需要一种新的视图辅助器算法,实现基于three.js中Camera相机的视图变换辅助器。
本文提供的背景描述用于总体上呈现本公开的上下文的目的。除非本文另外指示,在该章节中描述的资料不是该申请的权利要求的现有技术并且不要通过包括在该章节内来承认其成为现有技术。
发明内容
针对相关技术中的上述技术问题,本发明提出一种视图变换方法,其包括如下步骤:
S1,获取单击任意顶点、边或面,记录点击的类型type号,根据type号查找相机目标位置的旋转四元数和方向向量;
S2,根据当前视图下的相机实现方向向量和当前用户坐标系计算相机位置到相机视线目标位置的距离radius,相机当前的视线目标_f1;
S3,根据每一个图元定义的几何中心坐标,取所有图元中心的平均值,作为图形空间内的所有图元的几何中心_f2,计算当前目标_f1至_f2的距离_moveRate;
S4,按时钟间隔计算平移距离步进,将视图平移至至新的目标中心_f2;
S5,按时钟间隔计算旋转角度步进,每一个步进下,保持_f2和_radius不变,同步更新相机的位置Position和相机旋转四元数;
相机旋转四元数是相机的视角方向,用于实现当前视图的视角实时动态变化;
S6,旋转后需要重新定义图形系统的工作平面,该工作平面的法向量由旋转中心指向对应视图下的相机位置,用单位方向向量_targetPosition表示。
具体的,所述步骤S2具体包括:
a)记录当前视图下的相机视线方向向量,作归一化处理,记为_offset;
b)获取当前的用户坐标系UCS,记录±x和±y轴方向向量,记为_posX,_posY,_negX,_negY;
c)分别计算_offset与_posX,_posY,_negX,_negY的夹角,记为px,PY,nx,ny;
d)设默认UCS方向的旋转四元数为(0,0,0,1),计算目标视线方向变换至默认UCS方向的旋转四元数_targetQuaternion;
e)利用当前视线方向向量_offset计算目标视图正确的Up轴方向;
当满足px<=py&&px<=nx&&px<=ny,则UP轴为-x轴方向;
当满足py<=px&&py<=nx&&py<=ny,则UP轴为-y轴方向;
当满足nx<=px&&nx<=py&&nx<=ny,则UP轴为+x轴方向;
当满足ny<=px&&ny<=py&&ny<=nx,则UP轴为+y轴方向;
f)计算当前视图下,相机位置到相机视线目标位置的距离radius,记录相机当前的四元数_q1,记录相机当前的视线目标_f1。
具体的,所述类型type号支持六个面、八个顶点、十二条边。
第二方面,本发明的另一个实施例提供了一种视图变换装置,其包括如下单元:
类型获取单元,用于获取单击任意顶点、边或面,记录点击的类型type号,根据type号查找相机目标位置的旋转四元数和方向向量;
相机参数计算单元,用于根据当前视图下的相机实现方向向量和当前用户坐标系计算相机位置到相机视线目标位置的距离_radius,相机当前的视线目标_f1;
目标距离计算单元,用于根据每一个图元定义的几何中心坐标,取所有图元中心的平均值,作为图形空间内的所有图元的几何中心_f2,计算当前目标_f1至_f2的距离_moveRate;
平移单元,用于按时钟间隔计算平移距离步进,将视图平移至至新的目标中心_f2;
旋转单元,用于按时钟间隔计算旋转角度步进,每一个步进下,保持_f2和_radius不变,同步更新相机的位置Position和相机旋转四元数;
工作平面计算单元,用于旋转后需要重新定义图形系统的工作平面,该工作平面的法向量由旋转中心指向对应视图下的相机位置,用单位方向向量_targetPosition表示。
具体的,相机参数计算单元还包括:
相机视线方向计算单元,用于记录当前视图下的相机视线方向向量,作归一化处理,记为_offset;
USC坐标轴计算单元,用于获取当前的用户坐标系UCS,记录±x和±y轴方向向量,记为_posX,_posY,_negX,_negY;
夹角计算单元,用于分别计算_offset与_posX,_posY,_negX,_negY的夹角,记为px,py,nx,ny;
旋转四元数计算单元,设默认UCS方向的旋转四元数为(0,0,0,1),计算目标视线方向变换至默认UCS方向的旋转四元数_targetQuatemion,旋转四元数是相机的内置属性,更新四元数即更新相机的角度方向,从而直接对视图内的看到的视图进行变换;
UP轴计算单元,利用当前视线方向向量_offset计算目标视图正确的Up轴方向;
当满足px<=py&&px<=nx&&px<=ny,则UP轴为-x轴方向;
当满足py<=px&&py<=nx&&py<=ny,则UP轴为-y轴方向;
当满足nx<=px&&nx<=py&&nx<=ny,则UP轴为+x轴方向;
当满足ny<=px&&ny<=py&&ny<=nx,则UP轴为+y轴方向;
第一计算单元,计算当前视图下,相机位置到相机视线目标位置的距离_radius,记录相机当前的四元数_q1,记录相机当前的视线目标_f1。
具体的,所述类型type号支持六个面、八个顶点、十二条边。
第三方面,本发明的另一个实施例提供了一种非易失性存储介质,所述非易失性存储介质上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现上述方法的步骤。
本发明通过单击面、边、顶点,可以将三维图形视图角度变换至对应的方向;本发明的视图变换方法可以适配任意的自定义用户坐标系;本发明在进行视图变换时,会通过动画首先将视图平移至所有图元的中心,然后再发生视图旋转变换。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种视图变换方法;
图2是本发明实施例提供的26种视图示意图;
图3是本发明实施例提供的UCS旋转四元数计算坐标系示意图;
图4是本发明实施例提供的一种视图变换装置示意图;
图5是本发明实施例提供的一种视图变换设备示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员所获得的所有其他实施例,都属于本发明保护的范围。
实施例一
参考图1,本实施例公开了一种视图变换方法,其包括如下步骤:
S1,获取单击任意顶点、边或面,记录点击的类型type号,根据type号查找相机目标位置的旋转四元数和方向向量;
本实施例的视图变换方法,支持六面、八顶点和十二条边共计26种视图变换角度;
参考图2用户可以通过点击图元中的顶点、边或面来获取对应的类型type号。
S2,根据当前视图下的相机实现方向向量和当前用户坐标系计算相机位置到相机视线目标位置的距离radius,相机当前的视线目标_f1;
本实施例计算目标视图的相机位置和旋转四元数的具体过程如下:
a)记录当前视图下的相机视线方向向量,作归一化处理,记为_offset;
b)获取当前的用户坐标系UCS,记录±x和±y轴方向向量,记为_posX,_posY,_negX,_negY;
c)分别计算_offset与_posX,_posY,_negX,_negY的夹角,记为px,PY,nx,ny,用于后续变换至±z轴方向使用;
d)参考图3,设默认UCS方向的旋转四元数为(0,0,0,1),计算目标视线方向变换至默认UCS方向的旋转四元数_targetQuatemion,旋转四元数是相机的内置属性,更新四元数即更新相机的角度方向,从而直接对视图内的看到的视图进行变换。例如旋转视图至右视图(从+X向原点看),则旋转可以分解为首先绕x轴逆时针旋转90°,再绕y轴逆时针旋转90°,代码为:
this._targetQuatemion
.setFromAxisAngle(ucs.axisX,Math.PI*0.5)
.multiply(new Quatemion().setFromAxisAngle(ucs.axisY,Math.PI*0.5));其它方向以此类推。因为最终是要对相机的旋转四元数进行更新,根据视图变换等效原则,对目标物体的旋转变换等于对相机自身的旋转逆变换;
旋转四元数是相机的内置属性,更新四元数即更新相机的角度方向,从而直接对视图内的看到的视图进行变换。
e)系统使用的相机是轨道相机,相机自身存在属性Up轴,用来记录相机自身的朝上方向。由于系统加载的相机默认Up轴是沿Z轴方向的,因此当视图旋转至±z方向时,需要做额外操作,防止出现计算过程中的除0错误。因为此时视线方向和相机自身的,需要利用当前视线_offset计算目标视图正确的Up轴方向,以+z轴目标为例:
当满足px<=py&&px<=nx&&px<=ny,则UP轴为-x轴方向;
当满足py<=px&&py<=nx&&py<=ny,则UP轴为-y轴方向;
当满足nx<=px&&nx<=py&&nx<=ny,则UP轴为+x轴方向;
当满足ny<=px&&ny<=py&&ny<=nx,则UP轴为+y轴方向;
f)计算当前视图下,相机位置到相机视线目标位置的距离_radius,记录相机当前的四元数_q1,记录相机当前的视线目标_f1;
g)步骤d是在假设默认UCS旋转四元数为单位四元数(0,0,0,1),但是实际上UCS对世界坐标系存在一个旋转变换,记该旋转变换的四元数为ucs.quaternion。targetQuaternion实际上应是世界坐标系至UCS的旋转和相机视图相对于UCS的旋转的二者叠加。因此需要对步骤d计算的_targetQuaternion进行修正,修正方法为在步骤d计算的_targetQuaternion基础上:
this._q2.copy(ucs.quatemion).premultiply(this._targetQuaternion)
S3,根据每一个图元定义的几何中心坐标,取所有图元中心的平均值,作为图形空间内的所有图元的几何中心_f2,计算当前目标_f1至_f2的距离_moveRate;
S4,按时钟间隔计算平移距离步进,将视图平移至至新的目标中心_f2;
S5,按时钟间隔计算旋转角度步进,每一个步进下,保持_f2和_radius不变,同步更新相机的位置Position和相机旋转四元数。
旋转四元数是相机视角方向,用于实现当前视图的视角实时动态变化
S6,旋转后需要重新定义图形系统的工作平面,该工作平面的法向量由旋转中心指向对应视图下的相机位置,用单位方向向量_targetPosition表示。
其中,6个面对应的位置正好是用户坐标系6个轴方向向量;12条边对应的位置等于边所夹的两个面方向向量之和;8个顶点对应的位置等于其所夹的三个面的方向向量之和。
本实施例通过单击面、边、顶点,可以将三维图形视图角度变换至对应的方向;本实施例的视图变换方法可以适配任意的自定义用户坐标系;本实施例在进行视图变换时,会通过动画首先将视图平移至所有图元的中心,然后再发生视图旋转变换。
实施例二
参考图4,本实施例公开了一种视图变换装置,其包括如下单元:
类型获取单元,用于获取单击任意顶点、边或面,记录点击的类型type号,根据type号查找相机目标位置的旋转四元数和方向向量;
本实施例的视图变换方法,支持六面、八顶点和十二条边共计26种视图变换角度;
参考图2用户可以通过点击图元中的顶点、边或面来获取对应的类型type号。
相机参数计算单元,用于根据当前视图下的相机实现方向向量和当前用户坐标系计算相机位置到相机视线目标位置的距离_radius,相机当前的视线目标_f1;
本实施例计算目标视图的相机位置和旋转四元数的具体过程如下:
相机视线方向计算单元,记录当前视图下的相机视线方向向量,作归一化处理,记为_offset;
USC坐标轴计算单元,获取当前的用户坐标系UCS,记录±x和±y轴方向向量,记为_posX,_posY,_negX,_negY;
夹角计算单元,分别计算_offset与_posX,_posY,_negX,_negY的夹角,记为px,py,nx,ny,用于后续变换至±z轴方向使用;
旋转四元数计算单元,设默认UCS方向的旋转四元数为(0,0,0,1),计算目标视线方向变换至默认UCS方向的旋转四元数_targetQuatemion,旋转四元数是相机的内置属性,更新四元数即更新相机的角度方向,从而直接对视图内的看到的视图进行变换。例如旋转视图至右视图(从+X向原点看),则旋转可以分解为首先绕x轴逆时针旋转90°,再绕y轴逆时针旋转90°,代码为:
this._targetQuatemion
.setFromAxisAngle(ucs.axisX,Math.PI*0.5)
.multiply(new Quaternion().setFromAxisAngle(ucs.axisY,Math.PI*0.5));其它方向以此类推。因为最终是要对相机的旋转四元数进行更新,根据视图变换等效原则,对目标物体的旋转变换等于对相机自身的旋转逆变换;
UP轴计算单元,系统使用的相机是轨道相机,相机自身存在属性Up轴,用来记录相机自身的朝上方向。由于系统加载的相机默认Up轴是沿Z轴方向的,因此当视图旋转至±z方向时,需要做额外操作,防止出现计算过程中的除0错误。因为此时视线方向和相机自身的,需要利用当前视线_offset计算目标视图正确的Up轴方向,以+z轴目标为例:
当满足px<=py&&px<=nx&&px<=ny,则UP轴为-x轴方向;
当满足py<=px&&py<=nx&&py<=ny,则UP轴为-y轴方向;
当满足nx<=px&&nx<=py&&nx<=ny,则UP轴为+x轴方向;
当满足ny<=px&&ny<=py&&ny<=nx,则UP轴为+y轴方向;
第一计算单元,计算当前视图下,相机位置到相机视线目标位置的距离_radius,记录相机当前的四元数_q1,记录相机当前的视线目标_f1;
旋转四元数更新单元,用于对_targetQuatemion进行修正。
旋转四元数计算单元是在假设默认UCS旋转四元数为单位四元数(0,0,0,1),但是实际上UCS对世界坐标系存在一个旋转变换,记该旋转变换的四元数为ucs.quaternion。targetQuaternion实际上应是世界坐标系至UCS的旋转和相机视图相对于UCS的旋转的二者叠加。因此需要对旋转四元数计算单元计算的_targetQuaternion进行修正,修正方法为在旋转四元数计算单元计算的_targetQuaternion基础上:
this._q2.copy(ucs.quaternion).premultiply(this._targetQuaternion)
目标距离计算单元,用于根据每一个图元定义的几何中心坐标,取所有图元中心的平均值,作为图形空间内的所有图元的几何中心_f2,计算当前目标_f1至_f2的距离_moveRate;
平移单元,用于按时钟间隔计算平移距离步进,将视图平移至至新的目标中心_f2;
旋转单元,用于按时钟间隔计算旋转角度步进,每一个步进下,保持_f2和_radius不变,同步更新相机的位置Position和相机旋转四元数,即相机视角方向。
工作平面计算单元,用于旋转后需要重新定义图形系统的工作平面,该工作平面的法向量由旋转中心指向对应视图下的相机位置,用单位方向向量_targetPosition表示。
其中,6个面对应的位置正好是用户坐标系6个轴方向向量;12条边对应的位置等于边所夹的两个面方向向量之和;8个顶点对应的位置等于其所夹的三个面的方向向量之和。
本实施例通过单击面、边、顶点,可以将三维图形视图角度变换至对应的方向;本实施例的视图变换装置可以适配任意的自定义用户坐标系;本实施例在进行视图变换时,会通过动画首先将视图平移至所有图元的中心,然后再发生视图旋转变换。
实施例三
参考图5,图5是本实施例的一种视图变换设备的结构示意图。该实施例的视图变换设备20包括处理器21、存储器22以及存储在所述存储器22中并可在所述处理器21上运行的计算机程序。所述处理器21执行所述计算机程序时实现上述方法实施例中的步骤。或者,所述处理器21执行所述计算机程序时实现上述各装置实施例中各模块/单元的功能。
示例性的,所述计算机程序可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在所述存储器22中,并由所述处理器21执行,以完成本发明。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序在所述视图变换设备20中的执行过程。例如,所述计算机程序可以被分割成实施例二中的各个模块,各模块具体功能请参考上述实施例所述的装置的工作过程,在此不再赘述。
所述视图变换设备20可包括,但不仅限于,处理器21、存储器22。本领域技术人员可以理解,所述示意图仅仅是视图变换设备20的示例,并不构成对视图变换设备20的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述视图变换设备20还可以包括输入输出设备、网络接入设备、总线等。
所述处理器21可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,所述处理器21是所述视图变换设备20的控制中心,利用各种接口和线路连接整个视图变换设备20的各个部分。
所述存储器22可用于存储所述计算机程序和/或模块,所述处理器21通过运行或执行存储在所述存储器22内的计算机程序和/或模块,以及调用存储在存储器22内的数据,实现所述视图变换设备20的各种功能。所述存储器22可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器22可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(SecureDigital,SD)卡,闪存卡(Flash Card)、至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
其中,所述视图变换设备20集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器21执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
需说明的是,以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。另外,本发明提供的装置实施例附图中,模块之间的连接关系表示它们之间具有通信连接,具体可以实现为一条或多条通信总线或信号线。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (5)
1.一种视图变换方法,其包括如下步骤:
S1,获取单击任意顶点、边或面,记录点击的类型type号,根据type号查找相机目标位置的旋转四元数和方向向量;
S2,根据当前视图下的相机实现方向向量和当前用户坐标系计算相机位置到相机视线目标位置的距离_radius,相机当前的视线目标_f1;
S3,根据每一个图元定义的几何中心坐标,取所有图元中心的平均值,作为图形空间内的所有图元的几何中心_f2,计算当前目标_f1至_f2的距离_moveRate;
S4,按时钟间隔计算平移距离步进,将视图平移至新的目标中心_f2;
S5,按时钟间隔计算旋转角度步进,每一个步进下,保持_f2和_radius不变,同步更新相机的位置Position和相机旋转四元数;
S6,旋转后需要重新定义图形系统的工作平面,该工作平面的法向量由旋转中心指向对应视图下的相机位置,用单位方向向量_targetPosition表示;
所述步骤S2具体包括:
a)记录当前视图下的相机视线方向向量,作归一化处理,记为_offset;
b)获取当前的用户坐标系UCS,记录±x和±y轴方向向量,记为_posX,_posY,_negX,_negY;
c)分别计算_offset与_posX,_posY,_negX,_negY的夹角,记为px,py,nx,ny;
d)设默认UCS方向的旋转四元数为(0,0,0,1),计算目标视线方向变换至默认UCS方向的旋转四元数_targetQuaternion;
e)利用当前视线方向向量_offset计算目标视图正确的Up轴方向;
当满足px<=py&&px<=nx&&px<=ny,则UP轴为-x轴方向;
当满足py<=px&&py<=nx&&py<=ny,则UP轴为-y轴方向;
当满足nx<=px&&nx<=py&&nx<=ny,则UP轴为+x轴方向;
当满足ny<=px&&ny<=py&&ny<=nx,则UP轴为+y轴方向;
f)计算当前视图下,相机位置到相机视线目标位置的距离_radius,记录相机当前的四元数_q1,记录相机当前的视线目标_f1。
2.根据权利要求1所述的方法,所述类型type号支持六个面、八个顶点、十二条边。
3.一种视图变换装置,其包括如下单元:
类型获取单元,用于获取单击任意顶点、边或面,记录点击的类型type号,根据type号查找相机目标位置的旋转四元数和方向向量;
相机参数计算单元,用于根据当前视图下的相机实现方向向量和当前用户坐标系计算相机位置到相机视线目标位置的距离_radius,相机当前的视线目标_f1;
目标距离计算单元,用于根据每一个图元定义的几何中心坐标,取所有图元中心的平均值,作为图形空间内的所有图元的几何中心_f2,计算当前目标_f1至_f2的距离_moveRate;
平移单元,用于按时钟间隔计算平移距离步进,将视图平移至新的目标中心_f2;
旋转单元,用于按时钟间隔计算旋转角度步进,每一个步进下,保持_f2和_radius不变,同步更新相机的位置Position,相机旋转四元数;
工作平面计算单元,用于旋转后需要重新定义图形系统的工作平面,该工作平面的法向量由旋转中心指向对应视图下的相机位置,用单位方向向量_targetPosition表示;
相机参数计算单元还包括:
相机视线方向计算单元,用于记录当前视图下的相机视线方向向量,作归一化处理,记为_offset;
USC坐标轴计算单元,用于获取当前的用户坐标系UCS,记录±x和±y轴方向向量,记为_posX,_posY,_negX,_negY;
夹角计算单元,用于分别计算_offset与_posX,_posY,_negX,negY的夹角,记为px,py,nx,ny;
旋转四元数计算单元,设默认UCS方向的旋转四元数为(0,0,0,1),计算目标视线方向变换至默认UCS方向的旋转四元数_targetQuaternion;
UP轴计算单元,利用当前视线方向向量_offset计算目标视图正确的Up轴方向;
当满足px<=py&&px<=nx&&px<=ny,则UP轴为-x轴方向;
当满足py<=px&&py<=nx&&py<=ny,则UP轴为-y轴方向;
当满足nx<=px&&nx<=py&&nx<=ny,则UP轴为+x轴方向;
当满足ny<=px&&ny<=py&&ny<=nx,则UP轴为+y轴方向;
第一计算单元,计算当前视图下,相机位置到相机视线目标位置的距离_radius,记录相机当前的四元数_q1,记录相机当前的视线目标_f1。
4.根据权利要求3所述的装置,所述类型type号支持六个面、八个顶点、十二条边。
5.一种非易失性存储介质,所述非易失性存储介质上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至2中任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210135836.7A CN114519759B (zh) | 2022-02-14 | 2022-02-14 | 一种视图变换方法、装置及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210135836.7A CN114519759B (zh) | 2022-02-14 | 2022-02-14 | 一种视图变换方法、装置及介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114519759A CN114519759A (zh) | 2022-05-20 |
CN114519759B true CN114519759B (zh) | 2023-11-14 |
Family
ID=81596261
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210135836.7A Active CN114519759B (zh) | 2022-02-14 | 2022-02-14 | 一种视图变换方法、装置及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114519759B (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2015055085A1 (zh) * | 2013-10-18 | 2015-04-23 | 中广核检测技术有限公司 | 基于虚拟现实技术的无损检测机器人智能检测方法 |
GB202000063D0 (en) * | 2020-01-03 | 2020-02-19 | Direk Ltd | Method and system for geotracking objects |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8064643B2 (en) * | 2006-12-06 | 2011-11-22 | Mobileye Technologies Limited | Detecting and recognizing traffic signs |
CN108942942B (zh) * | 2018-08-16 | 2020-01-07 | 居鹤华 | 一种基于轴不变量的多轴机器人逆运动学建模与解算方法 |
-
2022
- 2022-02-14 CN CN202210135836.7A patent/CN114519759B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2015055085A1 (zh) * | 2013-10-18 | 2015-04-23 | 中广核检测技术有限公司 | 基于虚拟现实技术的无损检测机器人智能检测方法 |
GB202000063D0 (en) * | 2020-01-03 | 2020-02-19 | Direk Ltd | Method and system for geotracking objects |
Also Published As
Publication number | Publication date |
---|---|
CN114519759A (zh) | 2022-05-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6151033A (en) | Method and apparatus for producing animation data | |
JP3466661B2 (ja) | 画像処理装置及びその方法 | |
CN109543489A (zh) | 基于二维码的定位方法、装置和存储介质 | |
US20120206572A1 (en) | Method of calculating 3d object data within controllable constraints for fast software processing on 32 bit risc cpus | |
CN113012226B (zh) | 相机位姿的估计方法、装置、电子设备及计算机存储介质 | |
JP2009134509A (ja) | モザイク画像生成装置及びモザイク画像生成方法 | |
CN111161398B (zh) | 一种图像生成方法、装置、设备及存储介质 | |
CN113516719B (zh) | 一种基于多单应性矩阵的相机标定方法、系统及存储介质 | |
CN111868738B (zh) | 跨设备监控计算机视觉系统 | |
CN113793387A (zh) | 单目散斑结构光系统的标定方法、装置及终端 | |
JP5245963B2 (ja) | 画像変換装置 | |
CN114511447A (zh) | 图像处理方法、装置、设备及计算机存储介质 | |
CN114519759B (zh) | 一种视图变换方法、装置及介质 | |
CN110619670A (zh) | 人脸互换方法、装置、计算机设备及存储介质 | |
CN112017242B (zh) | 显示方法及装置、设备、存储介质 | |
JP2006350852A (ja) | 画像生成システム | |
CN117522963A (zh) | 棋盘格的角点定位方法、装置、存储介质及电子设备 | |
JP3629243B2 (ja) | モデリング時の距離成分を用いてレンダリング陰影処理を行う画像処理装置とその方法 | |
CN116437061A (zh) | 演示图像激光投射方法、装置、计算机设备及存储介质 | |
JP2004514228A (ja) | カイラル性のローバストな使用によるシーン復元およびカメラ較正 | |
EP0955610B1 (en) | Information processor, information processing method and transmission medium | |
CN115205419A (zh) | 即时定位与地图构建方法、装置、电子设备及可读存储介质 | |
US11210840B1 (en) | Transform method for rendering post-rotation panoramic images | |
JP2006215766A (ja) | 画像表示装置、画像表示方法及び画像表示プログラム | |
CN112734628A (zh) | 一种经三维转换后的跟踪点的投影位置计算方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |