CN109920057A - 一种视点变换方法及装置、计算设备及存储介质 - Google Patents

一种视点变换方法及装置、计算设备及存储介质 Download PDF

Info

Publication number
CN109920057A
CN109920057A CN201910169025.7A CN201910169025A CN109920057A CN 109920057 A CN109920057 A CN 109920057A CN 201910169025 A CN201910169025 A CN 201910169025A CN 109920057 A CN109920057 A CN 109920057A
Authority
CN
China
Prior art keywords
camera lens
viewpoint
dimensional scenic
sphere
envelope sphere
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.)
Granted
Application number
CN201910169025.7A
Other languages
English (en)
Other versions
CN109920057B (zh
Inventor
赵博强
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Zhuhai Kingsoft Online Game Technology Co Ltd
Original Assignee
Zhuhai Kingsoft Online Game Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Zhuhai Kingsoft Online Game Technology Co Ltd filed Critical Zhuhai Kingsoft Online Game Technology Co Ltd
Priority to CN201910169025.7A priority Critical patent/CN109920057B/zh
Publication of CN109920057A publication Critical patent/CN109920057A/zh
Application granted granted Critical
Publication of CN109920057B publication Critical patent/CN109920057B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Processing Or Creating Images (AREA)

Abstract

本申请提供一种视点变换方法及装置、计算设备及存储介质,其中,所述方法包括:以三维场景中的镜头所在的位置为第一视点,建立所述镜头的包络球体;判断所述镜头的包络球体与三维场景中的墙体或边界是否发生碰撞;在所述镜头的包络球体与三维场景中的边界发生碰撞的情况下,获取发生碰撞的至少一个碰撞界面;获取每个所述碰撞界面的法线以及所述镜头的包络球体沿每个所述碰撞界面的法线对应的碰撞深度;将所述镜头的包络球体依次沿每个所述碰撞界面的法线移动与每个所述碰撞界面对应的碰撞深度的距离,得到位于所述镜头的包络球体的球心处的第二视点;将所述第二视点的视野赋予所述三维场景的镜头。

Description

一种视点变换方法及装置、计算设备及存储介质
技术领域
本申请涉及互联网技术领域,特别涉及一种视点变换方法及装置、计算设备及存储介质。
背景技术
现有技术的三维场景中,在三维场景中的虚拟角色处于靠近三维场景中的墙壁或边界并且虚拟角色的视角处于朝向墙壁或边界的方向的情况下,就会产生虚拟角色的视锥与三维场景中的墙壁或边界发生碰撞的情况,导致产生系统漏洞,例如看到空白部分等三维场景的开发人员不希望出现的问题,因此,在三维场景设计时如何能够避免出现类似的问题是本领域技术人员需要解决的技术问题。
发明内容
有鉴于此,本申请实施例提供了一种视点变换方法及装置、计算设备及存储介质,以解决现有技术中存在的技术缺陷。
本申请实施例公开了一种视点变换方法,包括:
以三维场景中的镜头所在的位置为第一视点,建立所述镜头的包络球体;
判断所述镜头的包络球体与三维场景中的墙体或边界是否发生碰撞;
在所述镜头的包络球体与三维场景中的边界发生碰撞的情况下,获取发生碰撞的至少一个碰撞界面;
获取每个所述碰撞界面的法线以及所述镜头的包络球体沿每个所述碰撞界面的法线对应的碰撞深度;
将所述镜头的包络球体依次沿每个所述碰撞界面的法线移动与每个所述碰撞界面对应的碰撞深度的距离,得到位于所述镜头的包络球体的球心处的第二视点;
将所述第二视点的视野赋予所述三维场景的镜头。
可选的,以三维场景中的镜头所在的位置为第一视点,建立所述镜头的包络球体包括:
建立所述镜头的视锥空间;
获取所述第一视点与所述视锥空间的近裁剪面的顶点之间的近裁剪面距离;
以所述第一视点为圆心,以所述近裁剪面距离为半径,建立所述镜头的包络球体。
可选的,判断所述镜头的包络球体与三维场景中的墙体或边界是否发生碰撞包括:
在所述三维场景中的任一墙体或边界上设置检测点,获取所述检测点与所述第一视点之间的检测距离;
判断所述检测距离与所述近裁剪面距离的大小;
若所述检测距离大于等于所述近裁剪面距离,则所述镜头的包络球体与三维场景中的任一墙体或边界未发生碰撞;
若所述检测距离小于所述近裁剪面距离,则所述镜头的包络球体与三维场景中的任一墙体或边界发生碰撞。
可选的,获取每个所述碰撞界面的法线以及所述镜头的包络球体沿每个所述碰撞界面的法线对应的碰撞深度包括:
计算每个所述碰撞界面的法线;
从所述第一视点沿每个所述碰撞界面的法线向每个所述碰撞界面发出射线;
获取所述射线与每个所述碰撞界面发生碰撞时对应的发射距离;
根据所述近裁剪面距离与每个所述发射距离的差值,确定每个所述碰撞界面的碰撞深度。
可选的,所述碰撞界面包括所述视野中的上界面、下界面、左界面、右界面和后界面中的至少一个界面。
本申请还一种视点变换装置,包括:
建模模块,被配置为以三维场景中的镜头所在的位置为第一视点,建立所述镜头的包络球体;
检测模块,被配置为判断所述镜头的包络球体与三维场景中的墙体或边界是否发生碰撞;
获取模块,被配置为在所述镜头的包络球体与三维场景中的边界发生碰撞的情况下,获取发生碰撞的至少一个碰撞界面;
计算模块,被配置为获取每个所述碰撞界面的法线以及所述镜头的包络球体沿每个所述碰撞界面的法线对应的碰撞深度;
移动模块,被配置为将所述镜头的包络球体依次沿每个所述碰撞界面的法线移动与每个所述碰撞界面对应的碰撞深度的距离,得到位于所述镜头的包络球体的球心处的第二视点;
变换模块,被配置为将所述第二视点的视野赋予所述三维场景的镜头。
可选的,所述建模模块包括:
视锥创建单元,被配置为建立所述镜头的视锥空间;
视锥测量单元,被配置为获取所述第一视点与所述视锥空间的近裁剪面的顶点之间的近裁剪面距离;
模型建立单元,被配置为以所述第一视点为圆心,以所述近裁剪面距离为半径,建立所述镜头的包络球体。
可选的,所述检测模块包括:
检测点配置单元,被配置为在所述三维场景中的任一墙体或边界上设置检测点,获取所述检测点与所述第一视点之间的检测距离;
碰撞检测单元,被配置为判断所述检测距离与所述近裁剪面距离的大小;
若所述检测距离大于等于所述近裁剪面距离,则所述镜头的包络球体与三维场景中的任一墙体或边界未发生碰撞;
若所述检测距离小于所述近裁剪面距离,则所述镜头的包络球体与三维场景中的任一墙体或边界发生碰撞。
可选的,所述计算模块包括:
法线计算单元,被配置为计算每个所述碰撞界面的法线;
射线发生单元,被配置为从所述第一视点沿每个所述碰撞界面的法线向每个所述碰撞界面发出射线;
射线检测单元,被配置为获取所述射线与每个所述碰撞界面发生碰撞时对应的发射距离;
深度计算单元,被配置为根据所述近裁剪面距离与每个所述发射距离的差值,确定每个所述碰撞界面的碰撞深度。
可选的,所述碰撞界面包括所述视野中的上界面、下界面、左界面、右界面和后界面中的至少一个界面。
本申请还提供了一种计算设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机指令,所述处理器执行所述指令时实现以下步骤:
以三维场景中的镜头所在的位置为第一视点,建立所述镜头的包络球体;
判断所述镜头的包络球体与三维场景中的墙体或边界是否发生碰撞;
在所述镜头的包络球体与三维场景中的边界发生碰撞的情况下,获取发生碰撞的至少一个碰撞界面;
获取每个所述碰撞界面的法线以及所述镜头的包络球体沿每个所述碰撞界面的法线对应的碰撞深度;
将所述镜头的包络球体依次沿每个所述碰撞界面的法线移动与每个所述碰撞界面对应的碰撞深度的距离,得到位于所述镜头的包络球体的球心处的第二视点;
将所述第二视点的视野赋予所述三维场景的镜头。
本申请还提供了一种计算机可读存储介质,其存储有计算机指令,该指令被处理器执行时实现所述视点变换方法的步骤。
本申请提供的一种视点变换方法及装置、计算设备及存储介质,通过将三维场景中靠近墙壁或边界的镜头的第一视点进行矢量移动,从而对所述镜头的第一视点进行重新定位,使得所述镜头的视锥刚好不与三维场景中的墙壁或边界发生碰撞,并将重新定位后的第二视点的视野赋予位于所述第一视点的镜头,从而解决了因镜头的视锥与三维场景中的墙壁或边界发生碰撞而导致失真的问题。
附图说明
图1是本申请实施例的计算设备的结构框图;
图2是本申请实施例的视点变换方法的流程示意图;
图3是本申请实施例的视点变换方法的过程模拟图;
图4是本申请实施例的镜头的视锥的结构意图;
图5是本申请实施例的视点变换方法的另一流程示意图;
图6是本申请实施例的碰撞检测的过程模拟图;
图7是本申请实施例的视点变换方法的另一流程示意图;
图8是本申请实施例的碰撞深度检测的过程模拟图;
图9是本申请实施例的视点变换方法的另一流程示意图;
图10是本申请实施例的视点变换装置的结构示意图。
具体实施方式
在下面的描述中阐述了很多具体细节以便于充分理解本申请。但是本申请能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本申请内涵的情况下做类似推广,因此本申请不受下面公开的具体实施的限制。
在本说明书一个或多个实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本说明书一个或多个实施例中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本说明书一个或多个实施例中可能采用术语第一、第二等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一也可以被称为第二,类似地,第二也可以被称为第一。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
在本申请中,提供了一种视点变换方法及装置、计算设备及存储介质,在下面的实施例中逐一进行详细说明。
图1是示出了根据本说明书一实施例的计算设备100的结构框图。该计算设备100的部件包括但不限于存储器110和处理器120。处理器120与存储器110通过总线130相连接,数据库150用于保存数据。
计算设备100还包括接入设备140,接入设备140使得计算设备100能够经由一个或多个网络160通信。这些网络的示例包括公用交换电话网(PSTN)、局域网(LAN)、广域网(WAN)、个域网(PAN)或诸如因特网的通信网络的组合。接入设备140可以包括有线或无线的任何类型的网络接口(例如,网络接口卡(NIC))中的一个或多个,诸如IEEE802.11无线局域网(WLAN)无线接口、全球微波互联接入(Wi-MAX)接口、以太网接口、通用串行总线(USB)接口、蜂窝网络接口、蓝牙接口、近场通信(NFC)接口,等等。
在本说明书的一个实施例中,计算设备100的上述部件以及图1中未示出的其他部件也可以彼此相连接,例如通过总线。应当理解,图1所示的计算设备结构框图仅仅是出于示例的目的,而不是对本说明书范围的限制。本领域技术人员可以根据需要,增添或替换其他部件。
计算设备100可以是任何类型的静止或移动计算设备,包括移动计算机或移动计算设备(例如,平板计算机、个人数字助理、膝上型计算机、笔记本计算机、上网本等)、移动电话(例如,智能手机)、可佩戴的计算设备(例如,智能手表、智能眼镜等)或其他类型的移动设备,或者诸如台式计算机或PC的静止计算设备。计算设备100还可以是移动式或静止式的服务器。
其中,处理器120可以执行图2所示方法中的步骤。图2是示出了根据本申请一实施例的视点变换方法的示意性流程图,包括步骤201至步骤206。
步骤201:以三维场景中的镜头所在的位置为第一视点,建立所述镜头的包络球体。
在三维场景中用户的视野取决于所述三维场景中的镜头的视锥所渲染的范围,在本申请的实施例中,如图3所示,以三维场景中的镜头所在的位置为第一视点O,则所述镜头的视锥为以第一视点O为顶点的平截头体,通过以所述第一视点O为球心在所述三维场景中建立一个镜头的包络球体31,用于模拟所述镜头的视锥范围,例如,在游戏的三维场景中,玩家在游戏中的视野取决于玩家所在位置处及其视锥所渲染的范围,本申请通过在所述第一视点O建立所述镜头的包络球体31可以用于模拟玩家在游戏中的视锥范围。
步骤202:判断所述镜头的包络球体与三维场景中的墙体或边界是否发生碰撞。
在三维场景中通常存在多个墙体或边界,并且所述镜头的视锥是一个四棱台形结构,由上底、下底、左、右、前、后共六个面围成,因此,在所述镜头靠近三维场景中的多个墙体或边界的情况下,存在着所述镜头的视锥的临界面与所述三维场景中的多个墙体或边界发生碰撞的可能。在本申请实施例中,如图3所示,通过对所述镜头的包络球体31在多个方向上进行碰撞检测,从而判断所述镜头的视锥与三维场景中的多个墙体或边界是否发生碰撞。可选的,本申请通过Sphere Sweep(球面扫描)算法对所述镜头的包络球体31进行碰撞检测。
步骤203:在所述镜头的包络球体与三维场景中的边界发生碰撞的情况下,获取发生碰撞的至少一个碰撞界面。
在本申请实施例中,如果通过碰撞检测发现所述镜头的包络球体31与三维场景中的墙体或边界发生碰撞,则获取与镜头的包络球体31发生碰撞的至少一个碰撞界面。例如,如图3所示,在碰撞检测中发现,球心位于第一视点O处的所述镜头的包络球体31与三维场景中的界面A和界面B发生碰撞,则获取所述界面A和界面B。
步骤204:获取每个所述碰撞界面的法线以及所述镜头的包络球体沿每个所述碰撞界面的法线对应的碰撞深度。
在获取与镜头的包络球体发生碰撞的至少一个碰撞界面之后,计算并获取每个所述碰撞界面的法线,即与每个所述碰撞界面垂直的直线,进而通过计算得到沿每个所述碰撞界面的法线对应的碰撞深度。在本申请实施例中,如图3所示,在所述镜头的包络球体31与三维场景中的界面A和界面B发生碰撞的情况下,计算并获取所述界面A的法向量OP以及界面B的法向量OS,并通过计算得到所述镜头的包络球体31沿所述法向量OP的碰撞深度以及界面B的法向量OS的碰撞深度。可选的,本申请通过Ray Hit Test(射线撞击测试)算法计算每个所述碰撞界面的碰撞深度。
步骤205:将所述镜头的包络球体依次沿每个所述碰撞界面的法线移动与每个所述碰撞界面对应的碰撞深度的距离,得到位于所述镜头的包络球体的球心处的第二视点。
在本申请实施例中,如图3所示,通过基于前述步骤得到的数据,以所述第一视点O为原点对所述镜头的包络球体31进行矢量移动,依次沿每个所述碰撞界面的法线移动各自对应的碰撞深度,从而将所述镜头的包络球体31移动至与每个所述碰撞截面全部相切的位置处,即将所述镜头的包络球体31依次沿所述界面A的法向量OP以及界面B的法向量OS移动各自对应的碰撞深度,从而在进行两次的矢量移动之后,所述镜头的包络球体31的球心移动到第二视点R处,则球心位于所述第二视点R处的所述镜头的包络球体31刚好与界面A和界面B相切,即位于所述第二视点R处的所述镜头的视锥与三维游戏中的任一墙体或边界均不会发生碰撞,将所述第二视点R定义为所述镜头的第二视点。
步骤206:将所述第二视点的视野赋予所述三维场景的镜头。
在本申请实施例中,如图3所示,将第二视点R的视野赋予位于第一视点O处的所述镜头,即在不改变所述镜头在三维场景中的实际位置的情况下,将所述镜头的第一视点O变换为第二视点R,由于位于所述第二视点R处的镜头的包络球体31与每个所述碰撞界面均相切,因此位于所述二视点R处的镜头的视锥与三维场景中的任一墙体或边界均不会发生碰撞,即使所述第一视点O位于靠近三维场景的墙体或边界的位置处,然而在用户的视野范围内也不会出现视锥碰撞或失真的现象,同时,将所述镜头的第一视点O变换为第二视点R的过程为矢量变换,即所述镜头的观察目标点(Camera-LookAt)在视点变换的前后保持平行,使得所述第二视点处的视场角与所述第一视点处的视场角完全保持一致,从而能够避免用户察觉到所述镜头的第一视点被重新定位。
步骤207:在所述镜头的包络球体与三维场景中的边界未发生碰撞的情况下,则结束。
可选的,如图4所示,所述碰撞界面包括所述视野中的上界面EFGH、下界面IJKT、左界面EITH、右界面FIKG和后界面HGKT中的至少一个。
本申请通过将三维场景中靠近墙壁或边界的镜头的第一视点进行矢量移动,从而对所述镜头的第一视点进行重新定位,使得所述镜头的视锥刚好不与三维场景中的墙壁或边界发生碰撞,并将重新定位后的第二视点的视野赋予位于所述第一视点的镜头,从而解决了因镜头的视锥与三维场景中的墙壁或边界发生碰撞而导致失真的问题。
在本申请的一个实施例中,如图5所示,以三维场景中的镜头所在的位置为第一视点,建立所述镜头的包络球体包括步骤501至步骤503。
步骤501:建立所述镜头的视锥空间。
在本申请实施例中,如图6所示,所述镜头位于第一视点O处,以第一视点O处为原点建立所述镜头的视锥空间61,所述第一视点的视锥空间61包括近裁剪面63和远裁剪面62。
步骤502:获取所述第一视点与所述视锥空间的近裁剪面的顶点之间的近裁剪面距离。
在本申请实施例中,如图4和6所示,所述近裁剪面63包括四个顶点N,所述远裁剪面62包括四个顶点M,所述近裁剪面距离为所述视锥空间61的近裁剪面63的四个顶点N与所述第一视点O之间的距离r。
步骤503:以所述第一视点为圆心,以所述近裁剪面距离为半径,建立所述镜头的包络球体。
在本申请实施例中,如图6所示,以位于第一视点O为球心,以所述距离r为半径,建立所述镜头的包络球体31,则在所述三维场景中,所述镜头的包络球体31所形成的球体空间可以被视作所述镜头的最小视锥域范围,通过避免所述三维场景中的任一墙体或边界落入所述镜头的最小视锥域范围内从而避免在三维游戏中出现模型失真现象。
本申请通过以所述镜头所在位置为球心,建立将所述镜头的视锥包含在内的包络球体,从而划定的所述镜头的最小视锥域范围,进而能够找到在三维场景中不会出现镜头视锥与墙体或边界发生碰撞的理想位置。
在本申请的一个实施例中,如图7所示,判断所述镜头的包络球体与三维场景中的墙体或边界是否发生碰撞包括步骤701至步骤704。
步骤701:在所述三维场景中的任一墙体或边界上设置检测点,获取所述检测点与所述第一视点之间的检测距离。
步骤702:判断所述检测距离与所述近裁剪面距离的大小。
步骤703:若所述检测距离大于等于所述近裁剪面距离,则所述镜头的包络球体与三维场景中的任一墙体或边界未发生碰撞。
步骤704:若所述检测距离小于所述近裁剪面距离,则所述镜头的包络球体与三维场景中的任一墙体或边界发生碰撞。
在本申请的实施例中,如图8所示,本申请采用的所述碰撞检测方法通过在三维场景中的墙体或边界上设置检测点81,并获取所述检测点81与所述镜头的包络球体31的球心之间的距离即所述检测距离L,进而判断所述检测距离L与所述镜头的包络球体31的半径即所述距离r之间的大小,若所述检测距离L大于等于所述距离r,则所述镜头的包络球体与三维场景中的墙体或边界未发生碰撞,若所述检测距离L小于所述距离r,则所述镜头的包络球体31与三维场景中的墙体或边界发生碰撞。
本申请利用碰撞检测算法,通过对所述镜头的包络球体是否与三维场景中的墙体或边界发生碰撞进行检测和判断,从而简单高效的确定了所述镜头的视锥是否与三维场景中的墙体或边界发生碰撞。
在本申请的一个实施例中,如图9所示,获取每个所述碰撞界面的法线以及所述镜头的包络球体沿每个所述碰撞界面的法线对应的碰撞深度包括步骤901至步骤904。
步骤901:计算每个所述碰撞界面的法线。
步骤902:从所述第一视点沿每个所述碰撞界面的法线向每个所述碰撞界面发出射线。
步骤903:获取所述射线与每个所述碰撞界面发生碰撞时对应的发射距离。
步骤904:根据所述近裁剪面距离与每个所述发射距离的差值,确定每个所述碰撞界面的碰撞深度。
在本申请的实施例中,如图3所示,在所述镜头的包络球体31与界面A和界面B发生碰撞的情况下,从所述镜头的包络球体31的球心即第一视点O处沿所述法线OP向所述界面A发射第一射线,所述第一射线于位置C处于所述界面A发生碰撞,获取所述第一射线的发射距离OC,通过计算得到所述镜头的包络球体31与的半径即距离r与所述发射距离OC的第一差值,所述第一差值即为所述镜头的包络球体31相对于界面A的碰撞深度,同理,从所述镜头的包络球体31的球心即第一视点O处沿所述法线OP向所述界面B发射第二射线,所述第二射线于位置D处于所述界面B发生碰撞,获取所述第二射线的发射距离OD,计算得到所述镜头的包络球体31与的半径即距离r与所述发射距离OD的第二差值,所述第二差值即为所述镜头的包络球体31相对于界面B的碰撞深度。
本申请通过相每个所述碰撞截面进行射线撞击测试,通过计算得到所述镜头的包络球体与每个碰撞界面之间的碰撞深度,从而快速并准确的获取了所述镜头的视锥与三维场景中的墙体或界面的碰撞数据,为后续步骤中的视点变换提供信息。
本申请还提供了一种视点变换装置,如图10所示,包括:
建模模块1001,被配置为以三维场景中的镜头所在的位置为第一视点,建立所述镜头的包络球体;
检测模块1002,被配置为判断所述镜头的包络球体与三维场景中的墙体或边界是否发生碰撞;
获取模块1003,被配置为在所述镜头的包络球体与三维场景中的边界发生碰撞的情况下,获取发生碰撞的至少一个碰撞界面;
计算模块1004,被配置为获取每个所述碰撞界面的法线以及所述镜头的包络球体沿每个所述碰撞界面的法线对应的碰撞深度;
移动模块1005,被配置为将所述镜头的包络球体依次沿每个所述碰撞界面的法线移动与每个所述碰撞界面对应的碰撞深度的距离,得到位于所述镜头的包络球体的球心处的第二视点;
变换模块1006,被配置为将所述第二视点的视野赋予所述三维场景的镜头。
可选的,所述建模模块1001包括:
视锥创建单元,被配置为建立所述镜头的视锥空间;
视锥测量单元,被配置为获取所述第一视点与所述视锥空间的近裁剪面的顶点之间的近裁剪面距离;
模型建立单元,被配置为以所述第一视点为圆心,以所述近裁剪面距离为半径,建立所述镜头的包络球体。
可选的,所述检测模块1002包括:
检测点配置单元,被配置为在所述三维场景中的任一墙体或边界上设置检测点,获取所述检测点与所述第一视点之间的检测距离;
碰撞检测单元,被配置为判断所述检测距离与所述近裁剪面距离的大小;
若所述检测距离大于等于所述近裁剪面距离,则所述镜头的包络球体与三维场景中的任一墙体或边界未发生碰撞;
若所述检测距离小于所述近裁剪面距离,则所述镜头的包络球体与三维场景中的任一墙体或边界发生碰撞。
可选的,所述计算模块1004包括:
法线计算单元,被配置为计算每个所述碰撞界面的法线;
射线发生单元,被配置为从所述第一视点沿每个所述碰撞界面的法线向每个所述碰撞界面发出射线;
射线检测单元,被配置为获取所述射线与每个所述碰撞界面发生碰撞时对应的发射距离;
深度计算单元,被配置为根据所述近裁剪面距离与每个所述发射距离的差值,确定每个所述碰撞界面的碰撞深度。
可选的,所述碰撞界面包括所述视野中的上界面、下界面、左界面、右界面和后界面中的至少一个界面。
本申请一实施例还提供一种计算设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机指令,所述处理器执行所述指令时实现以下步骤:
以三维场景中的镜头所在的位置为第一视点,建立所述镜头的包络球体;
判断所述镜头的包络球体与三维场景中的墙体或边界是否发生碰撞;
在所述镜头的包络球体与三维场景中的边界发生碰撞的情况下,获取发生碰撞的至少一个碰撞界面;
获取每个所述碰撞界面的法线以及所述镜头的包络球体沿每个所述碰撞界面的法线对应的碰撞深度;
将所述镜头的包络球体依次沿每个所述碰撞界面的法线移动与每个所述碰撞界面对应的碰撞深度的距离,得到位于所述镜头的包络球体的球心处的第二视点;
将所述第二视点的视野赋予所述三维场景的镜头。
本申请一实施例还提供一种计算机可读存储介质,其存储有计算机指令,该指令被处理器执行时实现如前所述视点变换方法的步骤。
上述为本实施例的一种计算机可读存储介质的示意性方案。需要说明的是,该存储介质的技术方案与上述的视点变换方法的技术方案属于同一构思,存储介质的技术方案未详细描述的细节内容,均可以参见上述视点变换方法的技术方案的描述。
所述计算机指令包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本申请所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。
以上公开的本申请优选实施例只是用于帮助阐述本申请。可选实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施方式。显然,根据本说明书的内容,可作很多的修改和变化。本说明书选取并具体描述这些实施例,是为了更好地解释本申请的原理和实际应用,从而使所属技术领域技术人员能很好地理解和利用本申请。本申请仅受权利要求书及其全部范围和等效物的限制。

Claims (12)

1.一种视点变换方法,其特征在于,包括:
以三维场景中的镜头所在的位置为第一视点,建立所述镜头的包络球体;
判断所述镜头的包络球体与三维场景中的墙体或边界是否发生碰撞;
在所述镜头的包络球体与三维场景中的边界发生碰撞的情况下,获取发生碰撞的至少一个碰撞界面;
获取每个所述碰撞界面的法线以及所述镜头的包络球体沿每个所述碰撞界面的法线对应的碰撞深度;
将所述镜头的包络球体依次沿每个所述碰撞界面的法线移动与每个所述碰撞界面对应的碰撞深度的距离,得到位于所述镜头的包络球体的球心处的第二视点;
将所述第二视点的视野赋予所述三维场景的镜头。
2.根据权利要求1所述的方法,其特征在于,以三维场景中的镜头所在的位置为第一视点,建立所述镜头的包络球体包括:
建立所述镜头的视锥空间;
获取所述第一视点与所述视锥空间的近裁剪面的顶点之间的近裁剪面距离;
以所述第一视点为圆心,以所述近裁剪面距离为半径,建立所述镜头的包络球体。
3.根据权利要求2所述的方法,其特征在于,判断所述镜头的包络球体与三维场景中的墙体或边界是否发生碰撞包括:
在所述三维场景中的任一墙体或边界上设置检测点,获取所述检测点与所述第一视点之间的检测距离;
判断所述检测距离与所述近裁剪面距离的大小;
若所述检测距离大于等于所述近裁剪面距离,则所述镜头的包络球体与三维场景中的任一墙体或边界未发生碰撞;
若所述检测距离小于所述近裁剪面距离,则所述镜头的包络球体与三维场景中的任一墙体或边界发生碰撞。
4.根据权利要求3所述的方法,其特征在于,获取每个所述碰撞界面的法线以及所述镜头的包络球体沿每个所述碰撞界面的法线对应的碰撞深度包括:
计算每个所述碰撞界面的法线;
从所述第一视点沿每个所述碰撞界面的法线向每个所述碰撞界面发出射线;
获取所述射线与每个所述碰撞界面发生碰撞时对应的发射距离;
根据所述近裁剪面距离与每个所述发射距离的差值,确定每个所述碰撞界面的碰撞深度。
5.根据权利要求1所述的方法,其特征在于,所述碰撞界面包括所述视野中的上界面、下界面、左界面、右界面和后界面中的至少一个界面。
6.一种视点变换装置,其特征在于,包括:
建模模块,被配置为以三维场景中的镜头所在的位置为第一视点,建立所述镜头的包络球体;
检测模块,被配置为判断所述镜头的包络球体与三维场景中的墙体或边界是否发生碰撞;
获取模块,被配置为在所述镜头的包络球体与三维场景中的边界发生碰撞的情况下,获取发生碰撞的至少一个碰撞界面;
计算模块,被配置为获取每个所述碰撞界面的法线以及所述镜头的包络球体沿每个所述碰撞界面的法线对应的碰撞深度;
移动模块,被配置为将所述镜头的包络球体依次沿每个所述碰撞界面的法线移动与每个所述碰撞界面对应的碰撞深度的距离,得到位于所述镜头的包络球体的球心处的第二视点;
变换模块,被配置为将所述第二视点的视野赋予所述三维场景的镜头。
7.根据权利要求6所述的装置,其特征在于,所述建模模块包括:
视锥创建单元,被配置为建立所述镜头的视锥空间;
视锥测量单元,被配置为获取所述第一视点与所述视锥空间的近裁剪面的顶点之间的近裁剪面距离;
模型建立单元,被配置为以所述第一视点为圆心,以所述近裁剪面距离为半径,建立所述镜头的包络球体。
8.根据权利要求7所述的装置,其特征在于,所述检测模块包括:
检测点配置单元,被配置为在所述三维场景中的任一墙体或边界上设置检测点,获取所述检测点与所述第一视点之间的检测距离;
碰撞检测单元,被配置为判断所述检测距离与所述近裁剪面距离的大小;
若所述检测距离大于等于所述近裁剪面距离,则所述镜头的包络球体与三维场景中的任一墙体或边界未发生碰撞;
若所述检测距离小于所述近裁剪面距离,则所述镜头的包络球体与三维场景中的任一墙体或边界发生碰撞。
9.根据权利要求8所述的装置,其特征在于,所述计算模块包括:
法线计算单元,被配置为计算每个所述碰撞界面的法线;
射线发生单元,被配置为从所述第一视点沿每个所述碰撞界面的法线向每个所述碰撞界面发出射线;
射线检测单元,被配置为获取所述射线与每个所述碰撞界面发生碰撞时对应的发射距离;
深度计算单元,被配置为根据所述近裁剪面距离与每个所述发射距离的差值,确定每个所述碰撞界面的碰撞深度。
10.根据权利要求6所述的装置,其特征在于,所述碰撞界面包括所述视野中的上界面、下界面、左界面、右界面和后界面中的至少一个界面。
11.一种计算设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机指令,其特征在于,所述处理器执行所述指令时实现权利要求1-5任意一项所述方法的步骤。
12.一种计算机可读存储介质,其存储有计算机指令,其特征在于,该指令被处理器执行时实现权利要求1-5任意一项所述方法的步骤。
CN201910169025.7A 2019-03-06 2019-03-06 一种视点变换方法及装置、计算设备及存储介质 Active CN109920057B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910169025.7A CN109920057B (zh) 2019-03-06 2019-03-06 一种视点变换方法及装置、计算设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910169025.7A CN109920057B (zh) 2019-03-06 2019-03-06 一种视点变换方法及装置、计算设备及存储介质

Publications (2)

Publication Number Publication Date
CN109920057A true CN109920057A (zh) 2019-06-21
CN109920057B CN109920057B (zh) 2022-12-09

Family

ID=66963490

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910169025.7A Active CN109920057B (zh) 2019-03-06 2019-03-06 一种视点变换方法及装置、计算设备及存储介质

Country Status (1)

Country Link
CN (1) CN109920057B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114398707A (zh) * 2022-01-15 2022-04-26 清华大学 空间遮挡信息的确定方法、装置及设备
CN116206026A (zh) * 2023-05-06 2023-06-02 腾讯科技(深圳)有限公司 轨迹信息处理方法、装置、计算机设备和可读存储介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030043147A1 (en) * 2001-08-28 2003-03-06 Heim Oliver A. Method of using view frustrum culling for scaleable collision detection
CN102194248A (zh) * 2011-05-05 2011-09-21 上海大学 基于增强现实的虚实碰撞检测及响应方法
US20110295576A1 (en) * 2009-01-15 2011-12-01 Mitsubishi Electric Corporation Collision determination device and collision determination program
CN103568022A (zh) * 2012-07-20 2014-02-12 精工爱普生株式会社 碰撞检测系统、碰撞检测用数据生成装置以及机械手
CN104933753A (zh) * 2015-07-09 2015-09-23 上海苗实信息科技有限公司 一种基于互联网的三维虚拟漫游场景构建平台
CN105389848A (zh) * 2015-11-06 2016-03-09 网易(杭州)网络有限公司 一种3d场景的绘制系统及方法、终端

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030043147A1 (en) * 2001-08-28 2003-03-06 Heim Oliver A. Method of using view frustrum culling for scaleable collision detection
US20110295576A1 (en) * 2009-01-15 2011-12-01 Mitsubishi Electric Corporation Collision determination device and collision determination program
CN102194248A (zh) * 2011-05-05 2011-09-21 上海大学 基于增强现实的虚实碰撞检测及响应方法
CN103568022A (zh) * 2012-07-20 2014-02-12 精工爱普生株式会社 碰撞检测系统、碰撞检测用数据生成装置以及机械手
CN104933753A (zh) * 2015-07-09 2015-09-23 上海苗实信息科技有限公司 一种基于互联网的三维虚拟漫游场景构建平台
CN105389848A (zh) * 2015-11-06 2016-03-09 网易(杭州)网络有限公司 一种3d场景的绘制系统及方法、终端

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
武桐: "Unity3D中碰撞检测问题的研究", 《网络信息与工程》 *
洪炳鎔等: "《虚拟现实及其应用》", 31 May 2005, 国防工业出版社 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114398707A (zh) * 2022-01-15 2022-04-26 清华大学 空间遮挡信息的确定方法、装置及设备
CN116206026A (zh) * 2023-05-06 2023-06-02 腾讯科技(深圳)有限公司 轨迹信息处理方法、装置、计算机设备和可读存储介质

Also Published As

Publication number Publication date
CN109920057B (zh) 2022-12-09

Similar Documents

Publication Publication Date Title
US11301954B2 (en) Method for detecting collision between cylindrical collider and convex body in real-time virtual scenario, terminal, and storage medium
US10235764B2 (en) Method, terminal, and storage medium for detecting collision between colliders in real-time virtual scene
JP6125108B1 (ja) 仮想シナリオにおいてサウンドをシミュレートする方法および装置ならびに端末
CN104346612B (zh) 信息处理装置和显示方法
US11423518B2 (en) Method and device of correcting image distortion, display device, computer readable medium, electronic device
CN110291564B (zh) 图像生成设备和图像生成方法
WO2016081255A1 (en) Using depth information for drawing in augmented reality scenes
CN107464286B (zh) 三维城市模型中的孔洞修复方法及装置、设备及可读介质
KR101798132B1 (ko) 로봇의 충돌 검출 고속화를 위한 작업 환경 모델링 장치 및 방법
CN109874146A (zh) 一种预测路损的方法及装置
CN109920057A (zh) 一种视点变换方法及装置、计算设备及存储介质
JP2016532211A (ja) 物理平面のデジタル表現の拡張
US9672807B2 (en) Positioning method and apparatus in three-dimensional space of reverberation
JP7245880B2 (ja) 非同期動作による加速レイトレーシング及び光線変換のためのシステム及び方法
CN112381929A (zh) 一种三维电力设备模型建模方法
CN115965735B (zh) 纹理贴图的生成方法和装置
CN115830266A (zh) 游戏三维场景图处理方法及装置
CN108073530A (zh) 基于pci-e总线及内存映射的目标模拟器实时驱动方法及系统
CN110827303B (zh) 一种虚拟场景的图像编辑方法及装置
CN115803782A (zh) 具有实时深度图的感受几何结构的增强现实效果
US20190130577A1 (en) Image processing apparatus, image processing method, and program
CN108062793A (zh) 基于高程的物体顶部处理方法、装置、设备和存储介质
WO2021233046A1 (zh) 一种碰撞范围确定方法和相关装置
CN109960842B (zh) 一种液体和固体碰撞时产生泡沫的仿真方法、终端设备
CN114519761A (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
CB02 Change of applicant information
CB02 Change of applicant information

Address after: 519000 Room 102, 202, 302 and 402, No. 325, Qiandao Ring Road, Tangjiawan Town, high tech Zone, Zhuhai City, Guangdong Province, Room 102 and 202, No. 327 and Room 302, No. 329

Applicant after: Zhuhai Jinshan Digital Network Technology Co.,Ltd.

Address before: Room 102, Room 202, Room 302, Room 402, Room 327, Room 102, Room 202, Room 329, Room 302, No. 325, Qiandao Ring Road, Tangjiawan Town, High-tech Zone

Applicant before: ZHUHAI KINGSOFT ONLINE GAME TECHNOLOGY Co.,Ltd.

GR01 Patent grant
GR01 Patent grant