本申请实施例涉及虚拟世界领域,特别涉及一种虚拟世界中的虚拟表面判断方法、装置、设备及介质。
背景技术:
在虚拟世界的应用程序中,虚拟世界包括虚拟模型。虚拟模型用来模拟现实世界,例如,汽车模型、山川模型、房屋模型等。在虚拟模型的外表面上有虚拟表面,例如,石头模型的外表面有平面、斜面、曲面等。
相关技术中,当用户想要在虚拟世界中放置一个虚拟道具时,终端会在放置虚拟道具的位置获取一个位置点和该位置点所在平面的法向量,根据位置点和法向量放置该虚拟道具。
相关技术中,虚拟道具的放置方向是根据位置点所在平面的法向量来确定的,只根据一个位置点和位置点所在平面的法向量无法判断虚拟表面是否适合放置该虚拟道具。例如,用户想在平地上放置一个虚拟道具,但终端将位置点取在位于平面上的石头的一个斜面上一点,如果根据该位置点和该斜面的法向量,虚拟道具将会倾斜的放置在平地上,甚至会导致虚拟道具的模型穿过该平面的模型,与现实情况不符。
技术实现要素:
本申请实施例提供了一种虚拟世界中的虚拟表面判断方法、装置、设备及介质,可以解决相关技术中,只根据一个位置点和位置点所在平面的法向量无法判断虚拟表面是否适合放置该虚拟道具的问题。所述技术方案如下:
一方面,提供了一种虚拟世界中的虚拟表面判断方法,所述方法应用于终端中,所述终端中运行有支持所述虚拟世界的应用程序,所述方法包括:
显示虚拟世界画面,所述虚拟世界画面是以主控虚拟角色的视角观察所述虚拟世界得到的画面,所述虚拟世界包括用于供所述主控虚拟角色在其上活动的虚拟表面,所述虚拟表面包括平面、斜面和曲面中的至少一种;
在所述虚拟表面上选中目标区域,所述目标区域是所述虚拟表面上与目标事件相关的表面区域;
当所述目标区域是平缓区域时,执行所述目标事件,所述平缓区域的平整程度高于目标条件。
另一方面,提供了一种虚拟世界中的虚拟表面判断装置,所述装置应用于终端中,所述终端中运行有支持所述虚拟世界的应用程序,所述装置包括:
显示模块,用于显示虚拟世界画面,所述虚拟世界画面是以主控虚拟角色的视角观察所述虚拟世界得到的画面,所述虚拟世界包括用于供所述主控虚拟角色在其上活动的虚拟表面,所述虚拟表面包括平面、斜面和曲面中的至少一种;
选中模块,用于在所述虚拟表面上选中目标区域,所述目标区域是所述虚拟表面上与目标事件相关的表面区域;
执行模块,用于当所述目标区域是平缓区域时,执行所述目标事件,所述平缓区域的平整程度高于目标条件。
另一方面,提供了一种计算机设备,所述计算机设备包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如上方面所述的虚拟世界中的虚拟表面判断方法。
另一方面,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如上方面所述的虚拟世界中的虚拟表面判断方法。
本申请实施例提供的技术方案带来的有益效果至少包括:
通过获取虚拟表面上的一块目标区域,判断目标区域是否是平缓区域,来获取目标区域是否适合执行目标事件。通过对与目标事件相关的一整块表面区域进行整体判断,来确定目标区域是否符合目标事件发生的条件。解决了相关技术中只根据目标区域上的一个点来获取目标区域的法向量,根据该点和法向量直接放置虚拟道具,无法判断虚拟表面是否适合放置虚拟道具的问题。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1是本申请一个示例性实施例提供的终端的结构示意图;
图2是本申请一个示例性实施例提供的计算机系统的结构框图;
图3是本申请一个示例性实施例提供的虚拟世界中的虚拟表面判断方法的方法流程图;
图4是本申请另一个示例性实施例提供的虚拟世界中的虚拟表面判断方法的方法流程图;
图5是本申请另一个示例性实施例提供的虚拟世界中的虚拟表面判断方法的虚拟世界画面示意图;
图6是本申请另一个示例性实施例提供的主控虚拟对象的视角对应的摄像机模型示意图;
图7是本申请另一个示例性实施例提供的虚拟世界中的虚拟表面判断方法的方法流程图;
图8是本申请另一个示例性实施例提供的虚拟世界中的虚拟表面判断方法在方法流程图;
图9是本申请另一个示例性实施例提供的虚拟世界中的虚拟表面判断方法在实施时获取第一位置点的示意图;
图10是本申请另一个示例性实施例提供的球形射线示意图;
图11是本申请另一个示例性实施例提供的虚拟世界中的虚拟表面判断方法的方法流程图;
图12是本申请另一个示例性实施例提供的方格射线示意图;
图13是本申请另一个示例性实施例提供的方格射线示意图;
图14是本申请另一个示例性实施例提供的虚拟世界中的虚拟表面判断方法的第一方格射线示意图;
图15是本申请另一个示例性实施例提供的虚拟世界中的虚拟表面判断方法的法向量示意图;
图16是本申请另一个示例性实施例提供的虚拟世界中的虚拟表面判断方法的方法流程图;
图17是本申请另一个示例性实施例提供的虚拟世界中的虚拟表面判断方法的方法流程图;
图18是本申请另一个示例性实施例提供的虚拟世界中的虚拟表面判断方法的第二方格射线示意图;
图19是本申请另一个示例性实施例提供的虚拟世界中的虚拟表面判断方法的虚拟世界画面示意图;
图20是本申请另一个示例性实施例提供的虚拟世界中的虚拟表面判断方法的方法流程图;
图21是本申请另一个示例性实施例提供的虚拟世界中的虚拟表面判断方法的方法流程图;
图22是本申请另一个示例性实施例提供的虚拟世界中的虚拟表面判断方法的虚拟世界画面示意图;
图23是本申请另一个示例性实施例提供的虚拟世界中的虚拟表面判断方法的方法流程图;
图24是本申请另一个示例性实施例提供的虚拟世界中的虚拟表面判断方法的虚拟世界画面示意图;
图25是本申请另一个示例性实施例提供的虚拟世界中的虚拟表面判断方法的方法流程图;
图26是本申请另一个示例性实施例提供的虚拟世界中的虚拟表面判断装置的框图;
图27是本申请一个示例性实施例提供的终端的框图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
首先,对本申请实施例中涉及的名词进行简单介绍:
虚拟世界:是应用程序在终端上运行时显示(或提供)的虚拟世界。该虚拟世界可以是对真实世界的仿真世界,也可以是半仿真半虚构的世界,还可以是纯虚构的世界。虚拟世界可以是二维虚拟世界、2.5维虚拟世界和三维虚拟世界中的任意一种,本申请对此不加以限定。下述实施例以虚拟世界是三维虚拟世界来举例说明。
虚拟模型:是虚拟世界中用于模仿真实世界的模型。示例性的,虚拟模型在虚拟世界中占据一定的体积。示例性的,虚拟模型包括:地形模型、建筑模型、动植物模型、虚拟道具模型、虚拟载具模型、虚拟角色模型。例如,地形模型包括:地面、山川、水流、石块、台阶等;建筑模型包括:房屋、围墙、集装箱、以及建筑内部的固定设施:桌椅、柜子、床等;动植物模型包括:树木、花草、飞鸟等;虚拟道具模型包括:枪械、药箱、空投等;虚拟载具模型包括:汽车、船舶、直升机等;虚拟角色模型包括:人物、动物、动漫人物等。
虚拟表面:是虚拟模型的外表面。虚拟表面是虚拟世界中所有虚拟模型的外表面。示例性的,虚拟表面包括平面、斜面、曲面中的至少一种。
虚拟角色:是指虚拟世界中的可活动对象。该可活动对象可以是虚拟角色、虚拟动物、动漫人物等,比如:在三维虚拟世界中显示的人物、动物、植物、油桶、墙壁、石块等。可选地,虚拟角色是基于动画骨骼技术创建的三维立体模型。每个虚拟角色在三维虚拟世界中具有自身的形状和体积,占据三维虚拟世界中的一部分空间。
用户界面ui(userinterface)控件,在应用程序的用户界面上能够看见的任何可视控件或元素,比如,图片、输入框、文本框、按钮、标签等控件,其中一些ui控件响应用户的操作,比如,移动控件,控制虚拟角色在虚拟世界内进行移动动作。用户触发移动控件,控制虚拟角色的前进、后退、左右移动、攀爬、游泳、跳跃等。本申请实施例中涉及的ui控件,包括但不限于:虚拟道具放置控件。
本申请中提供的方法可以应用支持虚拟世界的应用程序中。示例性的,支持虚拟世界的应用程序是用户可以控制虚拟角色在虚拟世界内移动的应用程序。示例性的,本申请中提供的方法可以应用于:虚拟现实应用程序、增强现实(augmentedreality,ar)程序、三维地图程序、军事仿真程序、虚拟现实游戏、增强现实游戏、第一人称射击游戏(first-personshootinggame,fps)、第三人称射击游戏(third-personalshootinggame,tps)、多人在线战术竞技游戏(multiplayeronlinebattlearenagames,moba)中的任意一种程序。
示例性的,虚拟世界中的游戏由一个或多个游戏世界的地图构成,游戏中的虚拟世界模拟现实世界的场景,用户可以操控游戏中的虚拟角色在虚拟世界中进行行走、跑步、跳跃、射击、格斗、驾驶、使用虚拟武器攻击其他虚拟角色、使用虚拟武器蓄力攻击其他虚拟角色等动作,交互性较强,并且多个用户可以在线组队进行竞技游戏。
在一些实施例中,上述应用程序可以是射击类游戏、竞速类游戏、角色扮演类游戏、冒险类游戏、沙盒游戏、战术竞技游戏、军事仿真程序等程序。该客户端可以支持windows操作系统、苹果操作系统、安卓操作系统、ios操作系统和linux操作系统中的至少一种操作系统,并且不同操作系统的客户端可以互联互通。在一些实施例中,上述客户端是适用于具有触摸屏的移动终端上的程序。
在一些实施例中,上述客户端是基于三维引擎开发的应用程序,比如三维引擎是unity引擎。
本申请中的终端可以是台式计算机、膝上型便携计算机、手机、平板电脑、电子书阅读器、mp3(movingpictureexpertsgroupaudiolayeriii,动态影像专家压缩标准音频层面3)播放器、mp4(movingpictureexpertsgroupaudiolayeriv,动态影像专家压缩标准音频层面4)播放器等等。该终端中安装和运行有支持虚拟世界的应用程序,比如支持三维虚拟世界的应用程序。该应用程序可以是战术竞技生存(battleroyale,br)游戏、虚拟现实应用程序、增强现实程序、三维地图程序、军事仿真程序、第三人称射击游戏、第一人称射击游戏、多人在线战术竞技游戏中的任意一种。可选地,该应用程序可以是单机版的应用程序,比如单机版的3d游戏程序,也可以是网络联机版的应用程序。
图1是本申请一个示例性实施例提供的终端的结构示意图。如图1所示,该终端包括处理器21、触摸屏22以及存储器23。
处理器21可以是单核处理器、多核处理器、嵌入式芯片以及具有指令运行能力的处理器中的至少一种。
触摸屏22包括普通触摸屏或压力感应触摸屏。普通触摸屏可以对施加在触摸屏22上的按压操作或滑动操作进行测量;压力感应触摸屏可以对施加在触摸屏22上的按压力度进行测量。
存储器23存储有处理器21的可执行程序。示意性的,存储器23中存储有虚拟世界程序a、应用程序b、应用程序c、触摸压力感应模块18、操作系统的内核层19。其中,虚拟世界程序a为基于三维虚拟引擎17开发的应用程序。可选地,虚拟世界程序a包括但不限于由三维虚拟引擎(也称虚拟世界引擎)17开发的游戏程序、虚拟现实程序、三维地图程序、三维演示程序中的至少一种。比如,终端的操作系统采用安卓操作系统时,虚拟世界程序a采用java编程语言以及c#语言进行开发;又比如,终端的操作系统采用ios操作系统时,虚拟世界程序a采用object-c编程语言以及c#语言进行开发。
三维虚拟引擎17是一款支持多种操作系统平台的三维交互式引擎,示意性的,三维虚拟引擎可用于游戏开发领域、虚拟现实(virtualreality,vr)领域以及三维地图领域等多领域的程序开发,本申请实施例对三维虚拟引擎17的具体类型不限,在下文实施例中以三维虚拟引擎17是unity引擎为例来举例说明。
触摸(以及压力)感应模块18是用于接收触摸屏驱动程序191所上报的触摸事件(以及压力触控事件)的模块,可选地,触摸感应模块可以不具有压力感应功能,不接收压力触控事件。触摸事件包括:触摸事件的类型和坐标值,触摸事件的类型包括但不限于:触摸开始事件、触摸移动事件和触摸落下事件。压力触控事件中包括:压力触控事件的压力值以及坐标值。该坐标值用于指示压力触控操作在显示屏上的触控位置。可选地,以显示屏的水平方向建立横坐标轴,显示屏的竖直向上方向建立竖坐标轴得到一个二维坐标系。
示意性的,内核层19包括了触摸屏驱动程序191以及其它驱动程序192。触摸屏驱动程序191是用于检测压力触控事件的模块,当触摸屏驱动程序191检测到压力触控事件后,将压力触控事件传递给压力感应模块18。
其它驱动程序192可以是与处理器21有关的驱动程序、与存储器23有关的驱动程序、与网络组件有关的驱动程序、与声音组件有关的驱动程序等。
本领域技术人员可以知晓,上述仅为对终端的结构的概括性示意。在不同的实施例中,终端可以具有更多或更少的组件。比如,终端还可以包括重力加速度传感器、陀螺仪传感器、电源等等。
图2示出了本申请一个示例性实施例提供的计算机系统的结构框图。该计算机系统500包括:第一终端510、服务器集群520、第二终端530。
第一终端510安装和运行有支持虚拟世界的客户端511,该客户端511可以是多人在线对战程序。当第一终端运行客户端511时,第一终端510的屏幕上显示客户端511的用户界面。该客户端可以是虚拟现实应用程序、ar程序、三维地图程序、军事仿真程序、虚拟现实游戏、增强现实游戏、第一人称射击游戏、第三人称射击游戏、moba游戏、战术竞技游戏、策略游戏(simulationgame,slg)的任意一种。在本实施例中,以该客户端第三人称射击游戏来举例说明。第一终端510是第一用户512使用的终端,第一用户512使用第一终端510控制位于虚拟世界中的第一虚拟角色进行活动,第一虚拟角色可以称为第一用户512的主控虚拟角色。第一虚拟角色的活动包括但不限于:调整身体姿态、爬行、步行、奔跑、骑行、飞行、跳跃、驾驶、拾取、射击、攻击、投掷中的至少一种。示意性的,第一虚拟角色是第一虚拟角色,比如仿真人物角色或动漫人物角色。
第二终端530安装和运行有支持虚拟世界的客户端531,该客户端531可以是多人在线对战程序。当第二终端530运行客户端531时,第二终端530的屏幕上显示客户端531的用户界面。该客户端可以是虚拟现实应用程序、ar程序、三维地图程序、军事仿真程序、虚拟现实游戏、增强现实游戏、第一人称射击游戏、第三人称射击游戏、moba游戏、战术竞技游戏、策略游戏中的任意一种,在本实施例中,以该客户端是第三人称射击游戏来举例说明。第二终端530是第二用户532使用的终端,第二用户532使用第二终端530控制位于虚拟世界中的第二虚拟角色进行活动,第二虚拟角色可以称为第二用户532的主控虚拟角色。示意性的,第二虚拟角色是第二虚拟角色,比如仿真人物角色或动漫人物角色。
可选地,第一虚拟角色和第二虚拟角色处于同一虚拟世界中。可选地,第一虚拟角色和第二虚拟角色可以属于同一个阵营、同一个队伍、同一个组织、具有好友关系或具有临时性的通讯权限。可选的,第一虚拟角色和第二虚拟角色可以属于不同的阵营、不同的队伍、不同的组织或具有敌对关系。
可选地,第一终端510和第二终端530上安装的客户端是相同的,或两个终端上安装的客户端是不同操作系统平台(安卓或ios)上的同一类型客户端。第一终端510可以泛指多个终端中的一个,第二终端530可以泛指多个终端中的另一个,本实施例仅以第一终端510和第二终端530来举例说明。第一终端510和第二终端530的设备类型相同或不同,该设备类型包括:智能手机、平板电脑、电子书阅读器、mp3播放器、mp4播放器、膝上型便携计算机和台式计算机中的至少一种。
图2中仅示出了两个终端,但在不同实施例中存在多个其它终端540可以接入服务器集群520。在一些实施例中,还存在至少一个终端540是开发者对应的终端,在终端540上安装有虚拟世界的客户端的开发和编辑平台,开发者可在终端540上对客户端进行编辑和更新,并将更新后的客户端安装包通过有线或无线网络传输至服务器集群520,第一终端510和第二终端550可从服务器集群520下载客户端安装包实现对客户端的更新。
第一终端510、第二终端530以及终端540通过无线网络或有线网络与服务器集群520相连。
服务器集群520包括一台服务器、多台服务器、云计算平台和虚拟化中心中的至少一种。服务器集群520用于为支持三维虚拟世界的客户端提供后台服务。可选地,服务器集群520承担主要计算工作,终端承担次要计算工作;或者,服务器集群520承担次要计算工作,终端承担主要计算工作;或者,服务器集群520和终端(第一终端510和第二终端530)之间采用分布式计算架构进行协同计算。
可选地,上述终端和服务器均为计算机设备。
在一个示意性的例子中,服务器集群520包括服务器521和服务器526,服务器521包括处理器522、用户账号数据库523、对战服务模块524、面向用户的输入/输出接口(input/outputinterface,i/o接口)525。其中,处理器522用于加载服务器521中存储的指令,处理用户账号数据库521和对战服务模块524中的数据;用户账号数据库521用于存储第一终端510、第二终端530以及其它终端540所使用的用户账号的数据,比如用户账号的头像、用户账号的昵称、用户账号的战斗力指数,用户账号所在的服务区;对战服务模块524用于提供多个对战房间供用户进行对战;面向用户的i/o接口525用于通过无线网络或有线网络和第一终端510和/或第二终端530建立通信交换数据。
结合上述对虚拟世界的介绍以及实施环境说明,对本申请实施例提供的虚拟世界中的虚拟表面判断方法进行说明,以该方法的执行主体为图1所示出的终端来举例说明。该终端运行有应用程序,该应用程序是支持虚拟世界的程序。
为了便于理解,首先,对本申请提供的虚拟世界中的虚拟表面判断方法进行概括性的介绍。
图3是本申请一个示例性实施例提供的虚拟世界中的虚拟表面判断方法的方法流程图。以该方法的执行主体为图1所示出的终端来举例说明。以该方法应用于虚拟道具的放置场景中为例,该方法至少包括如下步骤。
步骤401,终端选中需要执行目标事件的目标区域。
终端在执行目标事件前会先选中一块目标区域。
示例性的,用户触发虚拟道具放置控件后,终端上会在主控虚拟角色的正前方显示一个虚拟道具,用户可以通过控制主控虚拟角色在世界内移动来控制虚拟道具的放置位置。该放置位置即为终端选中的需要执行目标事件的目标区域。
步骤402,终端判断目标区域是否平缓。
终端判断目标区域是否平缓,即目标区域是否倾斜度太大,虚拟道具放上去会滑落,或目标区域是否有较大凸起,虚拟道具无法平稳放置等。
示例性的,本申请的虚拟表面判断方法从两个方面来判断目标区域是否平缓。
一方面,判断目标区域的倾斜度是否过大,例如垂直于地面的墙面一定无法放置虚拟道具。
另一方面,判断目标区域的高度差是否过大,例如,地面上有较大的石子,虚拟道具无法平稳的放置在地面上。
步骤403,终端判断倾斜角是否过大。
终端判断目标区域的倾斜角是否过大。若倾斜角较小,则继续进行步骤404;若倾斜角较大,则进行步骤408。
步骤404,终端判断高度差是否过大。
终端判断目标区域的高度差是否过大。若高度差较小,则继续进行步骤405;若高度差较大,则进行步骤408。
步骤405,终端确定目标区域平缓。
若目标区域的倾斜角和高度差都比较小,则目标区域是比较平缓的区域,适合放置虚拟道具。
步骤406,终端判断目标区域是否开阔。
示例性的,部分虚拟道具的放置条件还有放置的区域必须是开阔的区域。例如,部分虚拟道具放置后会向天上发射导弹、信号弹,或,部分虚拟道具是用户选中目标区域后,虚拟道具从天空向下放置的。这就要求放置虚拟道具的目标区域上方必须没有遮挡。因此还需要判断目标区域上方是否开阔。
若目标区域是开阔区域,则进行步骤407,若目标区域不是开阔区域,则进行步骤408。
步骤407,终端执行目标事件。
当目标区域是平缓且开阔的区域时,目标区域满足虚拟道具的放置条件,此时,终端上会将虚拟道具显示为可放置状态。例如,如果虚拟道具位于不可放置的位置,虚拟道具显示为红色,如果虚拟道具位于可放置的位置,虚拟道具显示为蓝色。
当虚拟道具显示为可放置状态后,用户可以再次触发虚拟道具放置控件使虚拟道具放置当前位置。
步骤408,终端确定目标事件无法执行。
若目标区域无法放置虚拟道具,则终端将虚拟道具显示为不可放置状态,例如,将虚拟道具显示为红色。此时,即使用户再次触发虚拟道具放置控件,也无法将虚拟道具放下。
综上所述,本申请提供的虚拟表面判断方法至少包括一下几种方法:
1、判断目标区域是否平缓。
(1)判断目标区域的倾斜角。
(2)判断目标区域的高度差。
2、判断目标区域是否开阔。
上述方法可以合并使用来判断目标区域,也可以单独使用来判断目标区域。例如,可以单独判断目标区域是否开阔,来确定目标区域是否符合目标事件的发生条件;或,可以单独判断目标区域的高度差是否较小,来确定目标区域是否符合目标事件的发生条件;或可以单独判断目标区域的倾斜角是否较小,来确定目标区域是否符合目标事件的发生条件。
下面将用几个示例性实施例对本申请提供的虚拟世界中的虚拟表面判断方法进行详细说明。
图4是本申请一个示例性实施例提供的虚拟世界中的虚拟表面判断方法的方法流程图。以该方法的执行主体为图1所示出的终端来举例说明,终端中运行有支持虚拟世界的应用程序,该方法至少包括如下步骤。
步骤101,显示虚拟世界画面,虚拟世界画面是以主控虚拟角色的视角观察虚拟世界得到的画面,虚拟世界包括用于供主控虚拟角色在其上活动的虚拟表面,虚拟表面包括平面、斜面和曲面中的至少一种。
终端显示虚拟世界画面,虚拟世界画面是以主控虚拟角色的视角观察虚拟世界得到的画面。
示例性的,图5是本申请一个示例性实施例提供的虚拟世界画面示意图。在支持虚拟世界的应用程序上显示虚拟世界画面600,在用户界面600上包括用于供主控虚拟角色601在其上活动的虚拟表面。
虚拟表面是虚拟世界中的虚拟模型的外表面。虚拟模型的外表面是虚拟模型上任意可见的表面。例如,虚拟房屋的外表面包括:当主控虚拟角色位于虚拟房屋外时,可见的虚拟房屋的外墙面、屋顶面;当主控虚拟角色位于虚拟房屋内时,可见的虚拟房屋的内墙面、地板面、房梁、以及虚拟房屋内其他虚拟物品的表面。
示例性的,虚拟表面是具有一定面积的表面,该一定面积使主控虚拟角色在虚拟表面上活动。示例性的,活动包括但不限于主控虚拟角色可以选中该虚拟表面、主控虚拟角色可以在虚拟表面上放置物品、贴涂装饰物、行走、攀爬、安装虚拟道具、建造虚拟建筑等。
示例性的,虚拟表面包括虚拟世界中的所有平面、斜面、曲面、弧面、球面中的至少一种,或包括平面、斜面、曲面、弧面、球面中的至少两种面的组合面。例如,地面、斜坡、石头模型外表面、汽车模型车顶面、房屋模型屋顶面、楼梯的台阶面等。
主控虚拟角色是受终端控制的虚拟角色。示例性的,主控虚拟角色可以按照终端的控制在虚拟世界内活动。示例性的,当虚拟世界画面是以第三人称视角观察虚拟世界得到的画面时,主控虚拟角色是位于虚拟世界画面中间未知的虚拟角色。
视角是指以主控虚拟角色的第一人称视角或者第三人称视角在虚拟世界中进行观察时的观察角度。可选地,本申请的实施例中,视角是在虚拟世界中通过摄像机模型对主控虚拟角色进行观察时的角度。
可选地,摄像机模型在虚拟世界中对主控虚拟角色进行自动跟随,即,当主控虚拟角色在虚拟世界中的位置发生改变时,摄像机模型跟随主控虚拟角色在虚拟世界中的位置同时发生改变,且该摄像机模型在虚拟世界中始终处于主控虚拟角色的预设距离范围内。可选地,在自动跟随过程中,摄像头模型和主控虚拟角色的相对位置不发生变化。
摄像机模型是指在虚拟世界中位于主控虚拟角色周围的三维模型,当采用第一人称视角时,该摄像机模型位于主控虚拟角色的头部附近或者位于主控虚拟角色的头部;当采用第三人称视角时,该摄像机模型可以位于主控虚拟角色的后方并与主控虚拟角色进行绑定,也可以位于与主控虚拟角色相距预设距离的任意位置,通过该摄像机模型可以从不同角度对位于虚拟世界中的主控虚拟角色进行观察,可选地,该第三人称视角为第一人称的过肩视角时,摄像机模型位于主控虚拟角色(比如主控虚拟角色的头肩部)的后方。可选地,除第一人称视角和第三人称视角外,视角还包括其他视角,比如俯视视角;当采用俯视视角时,该摄像机模型可以位于主控虚拟角色头部的上空,俯视视角是以从空中俯视的角度进行观察虚拟世界的视角。可选地,该摄像机模型在虚拟世界中不会进行实际显示,即,在用户界面显示的虚拟世界中不显示该摄像机模型。
对该摄像机模型位于与主控虚拟角色相距预设距离的任意位置为例进行说明,可选地,一个主控虚拟角色对应一个摄像机模型,该摄像机模型可以以主控虚拟角色为旋转中心进行旋转,如:以主控虚拟角色的任意一点为旋转中心对摄像机模型进行旋转,摄像机模型在旋转过程中的不仅在角度上有转动,还在位移上有偏移,旋转时摄像机模型与该旋转中心之间的距离保持不变,即,将摄像机模型在以该旋转中心作为球心的球体表面进行旋转,其中,主控虚拟角色的任意一点可以是主控虚拟角色的头部、躯干、或者主控虚拟角色周围的任意一点,本申请实施例对此不加以限定。可选地,摄像机模型在对主控虚拟角色进行观察时,该摄像机模型的视角的中心指向为该摄像机模型所在球面的点指向球心的方向。
可选地,该摄像机模型还可以在主控虚拟角色的不同方向以预设的角度对主控虚拟角色进行观察。
示意性的,请参考图6,在主控虚拟角色11中确定一点作为旋转中心12,摄像机模型围绕该旋转中心12进行旋转,可选地,该摄像机模型配置有一个初始位置,该初始位置为主控虚拟角色后上方的位置(比如脑部的后方位置)。示意性的,如图6所示,该初始位置为位置13,当摄像机模型旋转至位置14或者位置15时,摄像机模型的视角方向随摄像机模型的转动而进行改变。
可选地,虚拟世界画面显示的虚拟世界包括:山川、平地、河流、湖泊、海洋、沙漠、天空、植物、建筑、车辆中的至少一种元素。
步骤102,在虚拟表面上选中目标区域,目标区域是虚拟表面上与目标事件相关的表面区域。
终端在虚拟表面上选中目标区域,目标区域是虚拟表面上与目标事件相关的表面区域。
目标区域是虚拟表面的一部分表面区域。示例性的,在虚拟表面上用连续的直线或曲线画出一个闭合的图形,被该图形圈出的虚拟表面即为目标区域。示例性的,目标区域是虚拟表面上一块连续的表面区域。示例性的,目标区域包括平面、斜面、曲面中的至少一种。
示例性的,目标区域是以目标事件发生的位置点为中心的一个模糊的区域范围。终端通过选中目标事件发生的位置点来获取一个模糊的目标区域。通过判断该位置点附近一定范围内的虚拟表面是否符合目标事件的发生条件,来判断目标事件是否可以在该位置点上发生。示例性的,当判断位置点附近是否符合发生条件的判断方法不同时,目标区域的选取范围可能会发生变化。
示例性的,如图5所示,在虚拟世界画面600中有目标区域602,目标区域602由一部分地面、一部分虚拟房屋外墙面组成。
示例性的,目标区域是在虚拟世界中任意虚拟表面上取一点,在该点上方一定高度,用任意平面图形以该点为中心点,以任意方向为投影方向向下投出的投影区域。用该点为中心点是:该任意平面图形的中心点与该点的连线平行于投影方向。
目标事件是可能发生在虚拟世界中的某一活动。示例性的,目标事件是与主控虚拟角色相关、或受主控虚拟角色控制的事件。示例性的,目标事件与虚拟世界中的某一位置或虚拟表面上的某个区域相关的事件。例如,目标事件是其他虚拟角色控制主控虚拟角色移动到虚拟世界中的某一位置,或目标事件是主控虚拟角色在虚拟世界中的某一位置放置虚拟道具,或目标事件是主控虚拟角色将要移动到虚拟世界中的某一位置,或目标事件是在主控虚拟角色可视范围内从天而降的一个空降。
目标事件与目标区域相关包括:当目标区域符合发生条件时,发生目标事件;或,目标区域是目标事件发生的位置中的至少一种。发生条件是对目标区域的限制,例如,目标条件是目标区域的材质为水泥、目标区域的形状为圆形、目标区域是一块连续的虚拟表面、目标区域是平行于水平面的虚拟表面等。
步骤111,当目标区域是平缓区域时,执行目标事件,平缓区域的平整程度高于目标条件。
当目标区域是平缓区域时,终端执行目标事件,平缓区域的平整程度高于目标条件。
示例性的,终端判断目标区域是否是平缓区域。
平缓区域是平整程度高于目标条件的表面区域。示例性的,平整程度用于描述表面区域贴近水平面的程度。示例性的,平整程度用于描述表面区域的起伏程度。
目标条件是判断目标区域是否是平缓区域的标准。示例性的,目标条件可以是目标区域的平整程度高于或低于某一阈值。
示例性的,目标事件的发生条件是目标区域是平缓区域。
综上所述,本实施例提供的方法,通过获取虚拟表面上的一块目标区域,判断目标区域是否是平缓区域,来获取目标区域是否适合执行目标事件。通过对与目标事件相关的一整块表面区域进行整体判断,来确定目标区域是否符合目标事件发生的条件。解决了相关技术中只根据目标区域上的一个点来获取目标区域的法向量,根据该点和法向量直接放置虚拟道具,无法判断虚拟表面是否适合放置虚拟道具的问题。
示例性的,本申请还给出了一种终端选中目标区域的方法的示例性实施例。示例性的,本申请还给出了一中判断目标区域平整程度的示例性实施例。
图7是本申请一个示例性实施例提供的虚拟世界中的虚拟表面判断方法的方法流程图。以该方法的执行主体为图1所示出的终端来举例说明,该方法至少包括如下步骤。
步骤101,显示虚拟世界画面,虚拟世界画面是以主控虚拟角色的视角观察虚拟世界得到的画面,虚拟世界包括用于供主控虚拟角色在其上活动的虚拟表面,虚拟表面包括平面、斜面和曲面中的至少一种。
步骤1021,根据主控虚拟角色的视角焦点,在虚拟表面上选中目标区域。
终端根据主控虚拟角色的视角焦点,在虚拟表面上选中目标区域。
视角焦点是摄像机拍摄虚拟世界的对焦点。示例性的,视角焦点是虚拟世界画面的中心点。示例性的,当以第一人称观察虚拟世界时,视角焦点是主控虚拟角色的视觉中心。示例性的,摄像机根据视角焦点观察虚拟世界,此时主控虚拟角色位于虚拟世界画面的中轴线上。
示例性的,终端根据视角焦点在虚拟表面上圈出一部分区域,将该区域确定为目标区域。
示例性的,图8所示的本申请一个示例性实施例提供的虚拟世界中的虚拟表面判断方法的方法流程图,给出了一种根据视角焦点在虚拟表面上选中目标区域的方法,示例性的,步骤1021可以用以下步骤201至步骤205代替:
步骤201,获取摄像机的位置和摄像方向,摄像机是主控虚拟角色的视角对应的摄像机。
终端获取摄像机的位置和摄像方向,摄像机是主控虚拟角色的视角对应的摄像机。
示例性的,终端获取摄像机的位置坐标和摄像方向。示例性的,摄像机的位置随着主控虚拟角色位置的改变而改变。示例性的,摄像机的位置是主控虚拟角色位于摄像机的视角焦点时,摄像机所处的位置。示例性的,摄像方向是摄像机拍摄主控虚拟角色的方向向量,示例性的,摄像方向是从摄像机位置指向主控虚拟角色位置的向量。示例性的,摄像方向是主控虚拟角色位于摄像机的视角焦点时,摄像机镜头斜向下45°指向主控虚拟角色的方向。
步骤202,从摄像机的位置沿摄像方向发射第二射线。
终端从摄像机的位置沿摄像方向发射第二射线。
示例性的,终端以摄像机的位置为起点,向摄像方向发射出第二射线。
示例性的,步骤1021中的视角焦点可以是第二射线上的任意一点。
示例性的,如图9所示,在主控虚拟角色601身后的上方有摄像机603,终端从摄像机603的位置,沿摄像方向射出第二射线604,第二射线604与地面605交于目标交点606。
示例性的,第二射线可以是球形射线。
球形射线是以一个点为起点,向一个方向射出一个球体的路径。示例性的,球形射线具有三个参数,起点、球体半径、射线方向,球形射线是以起点为球心以球体半径为半径的一个球体,从起点向射线方向射出后,球体的路径。该球体的外表面可以检测撞击,即球形射线的撞击结果是:球体在射出过程中球体外表面与其他虚拟模型的交点。
示例性的,如图10所示,球体607的球心在起点608,半径609为a,从起点608沿射线方向610射出,在某一时刻球体607的球心到达第二位置611。球形射线即为图10中,虚直线示出的球体的移动路径。当球体607在移动过程中,外表面碰撞到其他虚拟模型时,产生碰撞,返回撞击结果。
示例性的,第二射线是以摄像机的位置为起点,以任一长度为半径,沿摄像方向射出的球形射线。目标交点是球形射线与虚拟世界中的虚拟模型产生的交点。
步骤203,获取第二射线与虚拟表面的目标交点。
终端获取第二射线与虚拟表面的目标交点。
示例性的,目标交点是第二射线与虚拟世界中的虚拟模型产生的第一个撞击点。示例性的,目标交点是第二射线与虚拟世界中除虚拟角色外的其他虚拟模型产生的第一个撞击点。即第二射线不会与虚拟角色模型产生撞击。示例性的,目标交点是第二射线在虚拟世界中与第一个可以被撞击的虚拟模型产生的撞击点。虚拟模型包括两种,可以被撞击的虚拟模型和不可以被撞击的虚拟模型。示例性的,虚拟世界中部分虚拟模型不具有接收射线检测的撞击的功能。例如,地面上的草,树木模型上的叶子等,第二射线不会与这部分虚拟模型产生撞击。示例性的,目标交点可以是虚拟世界中任一虚拟表面上的一点。
示例性的,当第二射线撞击到虚拟模型后,向终端返回撞击结果。撞击结果包括撞击点的坐标,撞击点所在平面的法向量,撞击点所在平面的材质中的至少一个撞击信息。
示例性的,如图9所示,终端获取目标交点606的坐标。
步骤204,将目标交点确定为第一位置点。
终端将目标交点确定为第一位置点。
示例性的,第一位置点是目标区域中的任意一点。
步骤205,将第一位置点附近的虚拟表面确定为目标区域。
终端将第一位置点附近的虚拟表面确定为目标区域。
示例性的,终端将第一位置点确定为目标事件的发生位置,终端将判断第一位置点附近的虚拟表面区域是否符合目标事件的发生条件。
示例性的,目标区域的获取方式可以是:以第一位置点为球心,以一定长度为半径做球体,该球体外表面与虚拟世界中的虚拟表面产生闭合的交线,交线范围内的虚拟表面即为目标区域。
示例性的,终端可以不获取目标区域清晰的边界。
步骤103,获取目标区域上的任意两点,根据任意两点确定目标区域的特征向量,特征向量用于表征目标区域的平整程度。
终端获取目标区域上的任意两点,根据任意两点确定目标区域的特征向量。
示例性的,目标区域是否平缓,可以通过判断目标区域与水平面的夹角是否足够小来确定。若目标区域与水平面的夹角较小,则目标区域是平缓区域;若目标区域与水平面的夹角过大,则目标区域不是平缓区域。
示例性的,用特征向量来表征目标区域的倾斜程度。终端获取目标区域中任取两点,用两点组成目标区域的特征向量。若特征向量与水平面的夹角过大,则目标区域的倾斜程度过大;若特征向量与水平面的夹角较小,则目标区域的倾斜程度较小。
示例性的,当目标区域是一个平面或一个斜面时,平整程度用于描述目标区域与水平面的夹角。当目标区域是由平面、斜面、曲面中的至少一种组合成的表面区域,平整程度用于描述该目标区域整体与水平面的夹角,示例性的,由于目标区域是多个面的组合面,则取目标平面来代替目标区域,目标平面可以使目标区域上的每一个点到目标平面的距离之和最小。例如,目标区域上有三个点,三个点到目标平面的距离分别是a、b、c,目标平面应该是使三个点到目标平面的距离和,即a+b+c最小的平面。若目标平面与水平面的夹角较小,则目标区域平整程度较好,若目标平面与水平面的夹角较大,则目标区域不平整。目标平面最能表征目标区域倾斜趋势。示例性的,由于目标平面的计算量过大,可以用特征向量近似的表示目标平面的倾斜程度。
示例性的,特征向量是位于目标平面上的向量。
示例性的,在目标区域上任取的两点存在随机误差,用任取的两点确定的特征向量表征目标区域的平整程度不够准确,因此,本申请还提供有一种确定特征向量的方法。
示例性的,图11所示的本申请一个示例性实施例提供的虚拟世界中的虚拟表面判断方法的方法流程图,给出了一种确定特征向量的方法,示例性的,步骤103可以用以下步骤1031至步骤1035代替:
步骤1031,获取目标区域上的第一位置点,第一位置点是目标区域上的任意一点。
终端获取目标区域上的第一位置点,第一位置点是目标区域上的任意一点。
示例性的,第一位置点可以通过图8所示的示例性实施例中步骤201至步骤205来获取。
步骤1032,从第一位置点正上方的第二位置点向目标区域发射第一方格射线,第一方格射线包括起点位于第二位置点周围且垂直于水平面的至少两条平行射线。
终端从第一位置点正上方的第二位置点向目标区域发射第一方格射线。
方格射线是一种进行射线检测的方式,用于获取碰撞点返回撞击结果。方格射线包括至少两条平行射线,依次方格射线可以获取到多个碰撞点。示例性的,方格射线的射线方向相同。示例性的,方格射线中的不同射线具有不同的起点。示例性的,方格射线的起点位于同一平面上。示例性的,方格射线的起点均匀的分布在规则平面上。示例性的,方格射线的射线方向垂直于起点所在的规则平面。
例如,如图12所示,方格射线由九条平行射线612组成。九条平行射线612的起点613在一个正方形614上均匀分布。九条平行射线612分别从九个起点613沿垂直于正方形614的方向射出,撞击到地面605,产生九个交点,返回九个撞击结果。
示例性的,方格射线中的至少两条平行射线是按照顺序分别射出的。示例性的,当前一个射线获取到撞击结果,或射线长度达到最大长度时,下一个射线从起点开始射出。示例性的,当前一个射线射出后间隔一段时间,下一个射线从起点开始射出。
示例性的,方格射线中的至少两个平行射线还可以是同时射出的,即所有射线在同一时间从起点射出。示例性的,方格射线中的至少两个平行射线还可以是一组一组射出的。本申请对方格射线的射出方式不加以限定。
示例性的,方格射线射出的平行射线是球形射线。即,至少两条平行射线中的每条射线都是球形射线。即,方格射线有几个起点就有几个球体,多个球体从多个起点沿相同的射线方向射出。示例性的,该多个球体的半径可以相同也可以不同。
示例性的,如图13所示,方格射线是起点均匀分布在正方形614上的九个球形射线。九个球形射线沿垂直于正方形614平面的方向依次射出,当前一个球形射线获取到撞击结果时,下一个球形射线射出。如图13所示,当第一个球形射线615射出获取到撞击结果时,第二个球形射线616从起点射出,顺序地,第三个、第四个球形射线依次射出,直至第九个球形射线射出并获取到撞击结果,方格射线的一次射线检测完成。
终端从第一位置点正上方的第二位置点向目标区域发射第一方格射线。正上方是垂直于水平面向上的方向,即指向虚拟世界中的天空的方向。
示例性的,第一位置点和第二位之点的连线垂直于水平面。示例性的,若虚拟世界中的坐标轴在竖直方向上是y轴,则终端获取到第一位置点后,只需要将第一位置点的y轴坐标加上预设的数值,即可得到位于第一位置点正上方的第二位置点的坐标。示例性的,第一位置点和第二位置点之间的距离可以是任意的。示例性的,第一位置点和第二位置点之间的距离可以是虚拟世界中的最高点到水平面的距离。
示例性的,终端根据第二位置点射出第一方格射线的方式可以是将第二位置点确定为任意一个平行射线的起点。示例性的,终端根据第二位置点射出第一方格射线的方式是将第二位置点确定第一方格射线起点所在平面的中心点。
第一方格射线是起点所在平面平行于水平面的方格射线。示例性的,第一方格射线位于第一位置点的正上方。
示例性的,如图14所示,在一个斜坡模型的外表面上有目标区域602,目标区域602上有第一位置点618。终端在第一位置点正上方获取到第二位置点619,以第二位置点为第一方格射线起点所在平面的中心点,向下射出第一方格射线620。
步骤1033,获取第一方格射线与目标区域的第一撞击结果,第一撞击结果包括至少两个撞击点。
终端获取第一方格射线与目标区域的第一撞击结果,第一撞击结果包括至少两个撞击点。
撞击结果是射线检测中射线与虚拟世界中的虚拟模型或虚拟表面相交后,射线获取到的交点、虚拟模型信息等。虚拟模型信息包括:交点所在平面的法向量、虚拟模型的材质等。
撞击点是射线与虚拟模型或虚拟表面的交点。
示例性的,射线检测中的射线包括本申请提到的球形射线、方格射线、平行射线、第一射线、第二射线等。
示例性的,终端获取第一方格射线与目标区域的第一撞击结果。第一撞击结果是第一方格射线中的至少两个平行射线与虚拟表面的至少两个撞击点。示例性的,第一撞击结果的撞击点不一定位于目标区域内,但一定位于第一位置点附近。
示例性的,如图14所示,第一方格射线620包括四个平行射线,终端获取四个平行射线与斜坡模型外表面的四个撞击点。
示例性的,终端获取到的撞击结果中还包括射线从起点到撞击点的距离。
即射线的射出长度。
步骤1034,将第一撞击结果中最高的撞击点确定为第一撞击点,将第一撞击结果中最低的撞击点确定为第二撞击点。
终端将第一撞击结果中最高的撞击点确定为第一撞击点,将第一撞击结果中最低的撞击点确定为第二撞击点。
示例性的,步骤1304中的最高和最低是指撞击点在竖直方向上的高度。竖直方向是垂直于水平面的方向。
示例性的,终端获取到至少两个撞击点后,判断撞击点在竖直方向上的高度差。示例性的,终端可以通过撞击点在竖直方向上的坐标。来获取至少两个撞击点中,最高的撞击点和最低的撞击点。
示例性的,终端还可以通过判断撞击点对应的射线的射出长度来判断撞击点在竖直方向上的高度。示例性的,终端将射出长度最小的撞击点确定为最高的撞击点,将射出长度最大的撞击点确定为最低的撞击点。
示例性的,当最高的撞击点或最低的撞击点不止一个时,终端从多个最高的撞击点中任取一个撞击点作为第一撞击点,从多个最低的撞击点中任取一个撞击点作为第二撞击点。示例性的,当所有撞击点的高度都一样时,终端从第一撞击结果中任选两个撞击点作为第一撞击点和第二撞击点。
步骤1035,根据第一撞击点和第二撞击点确定目标区域的特征向量。
终端根据第一撞击点和第二撞击点确定目标区域的特征向量。
示例性的,终端作从第一撞击点指向第二撞击点的方向向量,或,作从第二撞击点指向第一撞击点的方向向量,将该方向向量确定为目标区域的特征向量。
示例性的,如图14所示,终端从第一方格射线620的撞击结果中,将撞击点621确定为第一撞击点,将撞击点622确定为第二撞击点,作从第一撞击点指向第二撞击点的特征向量623。
步骤1001,判断特征向量与水平面的夹角是否小于第一阈值。
终端判断特征向量与水平面的夹角是否小于第一阈值。若夹角小于第一阈值则进行步骤108,否则进行步骤1082。
步骤108,当特征向量与水平面的夹角小于第一阈值时,确定目标区域为平缓区域。
当特征向量与水平面的夹角小于第一阈值时,终端确定目标区域为平缓区域。
示例性的,终端计算特征向量与水平面的夹角。当夹角小于第一阈值时,目标区域为平缓区域。
示例性的,第一阈值是角度相关的数值。示例性的,第一阈值可以是任意的,例如第一阈值可以是90°、60°、59°中的任意一种。
示例性的,还可以根据特征向量求目标区域的法向量,利用法向量与竖直方向的夹角来判断目标区域的倾斜程度。法向量是垂直于特征向量的向量。示例性的,法向量近似为垂直于目标平面的向量。
示例性的,终端将特征向量和竖直方向的单位向量的叉乘得到第一向量,即第一向量是特征向量和竖直方向的单位向量的向量积。第一向量垂直于特征向量和竖直方向单位向量所在的平面。终端再将特征向量与第一向量叉乘得到第二向量,即第二向量是第一向量和特征向量的向量积。第二向量垂直于特征向量和第一向量所在的平面。终端将第二向量确定为目标区域的法向量。
示例性的,第二向量的方向向上,即第二向量与竖直方向的夹角小于等于90°。
例如,如图15所示,步骤1305获取到了目标区域602的特征向量623,终端将特征向量623与竖直向上的单位向量624叉乘得到第一向量625,第一向量625垂直于特征向量和竖直向上的单位向量所在的平面。终端再将第一向量625与特征向量623叉乘得到第二向量626,第二向量垂直于目标区域602向上。则第二向量606是目标区域602的法向量。终端通过判断第二向量606与竖直方向单位向量624的夹角来判断目标区域的倾斜程度。
示例性的,目标区域的法向量与竖直方向的夹角越小,则目标区域越平缓,目标区域的法向量与竖直方向的夹角越大,则目标区域越陡峭。
步骤111,当目标区域是平缓区域时,执行目标事件,平缓区域的平整程度高于目标条件。
步骤1082,不能执行目标事件。
终端判断目标区域不符合目标事件的发生条件,不能执行目标事件。
综上所述,本实施例提供的方法,通过根据主控虚拟角色的视角焦点,在虚拟表面上选中目标区域。通过以摄像机的位置和摄像方向,用球形射线获取射线与虚拟表面的碰撞点,将碰撞点确定为第一位置点,以第一位置点为中心将其附近的虚拟表面区域确定为目标区域。给出了一种获取目标区域的方法,使目标区域的获取与主控虚拟角色相关联,便于终端根据主控虚拟角色的位置获取到目标区域。
通过利用球形射线进行射线检测,使射线检测不仅仅局限于射线头部的一个点,扩大了射线检测的空间范围,解决了当直线形射线恰好射入虚拟表面中直径较小的孔洞中时,无法准确的获取虚拟表面上的有效碰撞点的问题,减少了射线检测的错误率。
通过获取目标区域的特征向量,利用特征向量来判断目标区域的平整程度,从而判断目标区域是否是平缓区域。使终端可以根据特征向量准确的获取目标区域的倾斜程度,便于量化的计算、描述目标区域的平整程度,从而确定目标区域是否是符合目标事件发生条件的表面区域。
示例性的,目标区域是否平缓还可以根据目标区域的高度差来确定。
图16是本申请一个示例性实施例提供的虚拟世界中的虚拟表面判断方法的方法流程图。以该方法的执行主体为图1所示出的终端来举例说明,该方法至少包括如下步骤。
步骤101,显示虚拟世界画面,虚拟世界画面是以主控虚拟角色的视角观察虚拟世界得到的画面,虚拟世界包括用于供主控虚拟角色在其上活动的虚拟表面,虚拟表面包括平面、斜面和曲面中的至少一种。
步骤102,在虚拟表面上选中目标区域,目标区域是虚拟表面上与目标事件相关的表面区域。
步骤103,获取目标区域上的任意两点,根据任意两点确定目标区域的特征向量,特征向量用于表征目标区域的平整程度。
步骤1001,判断特征向量与水平面的夹角是否小于第一阈值。
终端判断特征向量与水平面的夹角是否小于第一阈值,
步骤1081,当特征向量与水平面的夹角小于第一阈值时,且目标区域的高度差小于第二阈值时,确定目标区域为平缓区域,高度差用于表征目标区域的起伏程度。
当特征向量与水平面的夹角小于第一阈值时,且目标区域的高度差小于第二阈值时,终端确定目标区域为平缓区域。
高度差用于描述目标区域在目标区域法向量方向上的起伏程度。示例性的,目标区域的法向量可以根据图7所示的实施例中,步骤108下的举例中得出。
示例性的,目标区域的法向量是终端根据特征向量和竖直方向的单位向量,经过两次叉乘后得出的。
示例性的,第二阈值是描述高度的数值。第二阈值可以是任意数值。例如,第二阈值是一个单位高度,或2厘米。
示例性的,目标区域的高度差可以用图17所示的示例性实施例中的方法计算出。示例性的,在步骤1081前还包括如下的步骤1031至步骤107、以及步骤1002。
步骤1031,获取目标区域上的第一位置点,第一位置点是目标区域上的任意一点。
步骤104,从第一位置点上方的第三位置点,沿与特征向量垂直的方向,向目标区域发射第二方格射线;第三位置点和第一位置点的连线垂直于特征向量,第二方格射线包括起点位于第三位置点周围,向目标区域发射的至少两条平行射线。
终端从第一位置点上方的第三位置点,沿与特征向量垂直的方向,向目标区域发射第二方格射线。
示例性的,第三位置点可以是位于第一位置点上方空间中的任意一点。示例性的,第三位置点是第一位置点在目标区域法向量方向上的一点。
示例性的,与特征向量垂直的方向是目标区域的法向量方向,或,与特征向量垂直的方向是目标区域法向量方向的反方向。
例如,如图18所示,在目标区域602上,确定了特征向量623以及目标区域602的法向量624,终端根据第一位置点618和法向量624,在第一位置点618上方获取到第三位置点627,根据第三位置点627沿法向量624的反方向向目标区域602射出第二方格射线628。
示例性的,第二方格射线中的至少两个平行射线是球形射线。示例性的,第二方格射线的射出方式可以参照第一方格射线。
步骤105,获取第二方格射线与目标区域的第二撞击结果,第二撞击结果包括至少两个撞击点。
终端获取第二方格射线与目标区域的第二撞击结果,第二撞击结果包括至少两个撞击点。
步骤106,将第二撞击结果中最高的撞击点确定为第三撞击点,将第二撞击结果中最低的撞击点确定为第四撞击点。
终端将第二撞击结果中最高的撞击点确定为第三撞击点,将第二撞击结果中最低的撞击点确定为第四撞击点。
示例性的,步骤106中的最高和最低,是指撞击点在目标区域的方向量方向上的高度最高或最低。示例性的,步骤106中的最高和最低,是指撞击点距离目标平面的距离最高或最低。
示例性的,终端获取的第二撞击结果中还包括第二方格射线中每个射线的射出长度,射出长度是射线从起点到撞击点的距离。示例性的,终端根据第二撞击结果中每个撞击点对应的射出长度来确定最高的撞击点和最低的撞击点。当撞击点对应的射出长度最短时,该撞击点是最高的撞击点,即第三撞击点。当撞击点对应的射出长度最长时,该撞击点是最低的撞击点,即第四撞击点。
步骤107,根据第三撞击点和第四撞击点计算目标区域的高度差。
终端根据第三撞击点和第四撞击点计算目标区域的高度差。
高度差是第三撞击点和第四撞击点在目标区域法向量方向上的高度差。示例性的,高度差是第三撞击点和第四撞击点分别到目标平面的距离之和。
示例性的,终端可以根据第三撞击点和第四撞击点对应的射出长度求出高度差。例如,高度差等于第四撞击点对应的射出长度减第三撞击点对应的射出长度。
例如第二方格射线的撞击结果中包括a点和b点,a点对应的a射线从起点射出距离a后与地面产生撞击,获取到撞击点a点;b点对应的b射线从起点射出距离b后与地面产生撞击,获取到撞击点b点。其中a小于b,则a点是最高的撞击点,即第三撞击点;b点是最低撞击点,即第四撞击点。则目标区域的高度差等于b-a。
步骤1002,判断高度差是否小于第二阈值。
终端判断高度差是否小于第二阈值,若小于第二阈值则进行步骤1081,否则进行步骤1082。
步骤111,当目标区域是平缓区域时,执行目标事件,平缓区域的平整程度高于目标条件。
示例性的,目标事件可以是放置虚拟道具。则步骤111可以替换为图17所示的示例性实施例中的步骤1112。
步骤1112,当目标区域是平缓区域时,在目标区域上放置虚拟道具。
当目标区域是平缓区域时,终端在目标区域上放置虚拟道具。
例如,如图19所示,终端选中小山629上的一部分虚拟表面,将该部分虚拟表面确定为目标区域。当终端确定目标区域是平缓区域后,在目标区域上放置虚拟道具701。
步骤1082,不能执行目标事件。
综上所述,本实施例提供的方法,通过特征向量和竖直向上的单位向量来获取目标区域的法向量,根据目标区域的法向量和第一位置点射出第二方格射线,根据第二方格射线的撞击结果获取目标区域的起伏程度,从而判断目标区域是否平缓。提供了一种在复杂的虚拟表面上判断虚拟表面是否平缓的方法,且可以准确地获取虚拟表面的平整程度、高度差,从多个维度判断虚拟表面是否平缓。解决了相关技术中只根据目标区域上的一个点来获取目标区域的法向量,根据该点和法向量直接放置虚拟道具,无法判断虚拟表面是否适合放置虚拟道具的问题。
示例性的,本申请还给出了一种判断虚拟表面是否开阔的示例性实施例。
图20是本申请一个示例性实施例提供的虚拟世界中的虚拟表面判断方法的方法流程图。以该方法的执行主体为图1所示出的终端来举例说明,与图4所示的示例性实施例不同的是,用步骤1111代替步骤111,且在步骤111前增加步骤1003以及步骤1004。
步骤1003,判断目标区域是否是平缓区域。
终端判断目标区域是否是平缓区域。若是平缓区域则进行步骤1004,否则进行步骤1082。
步骤1004,判断目标区域是否是开阔区域。
终端判断目标区域是否是开阔区域。若是开阔区域则进行步骤1111,否则进行步骤1082。
步骤1111,当目标区域是平缓区域,且目标区域是开阔区域时,执行目标事件,开阔区域是虚拟表面上方没有障碍物遮挡的表面区域。
当目标区域是平缓区域,且目标区域是开阔区域时,终端执行目标事件,开阔区域是虚拟表面上方没有障碍物遮挡的表面区域。
示例性的,目标事件的发生条件还可能是:目标区域的上方无遮挡。
示例性的,开阔区域是虚拟表面的上方无遮挡的表面区域。示例性的,开阔区域是虚拟表面上方没有障碍物的表面区域。示例性的,开阔区域是在一块虚拟表面区域上方一定高度的空间内,没有其他虚拟模型、虚拟表面。
障碍物是虚拟世界中任意虚拟模型。示例性的,障碍物包括:建筑模型、动植物模型、虚拟道具模型、虚拟物品模型中的至少一种。
示例性的,本申请还给出了一种终端检测目标区域是否是开阔区域的方法,如图21所示,可以利用步骤1031至步骤110来判断目标区域是否是开阔区域。
步骤1031,获取目标区域上的第一位置点,第一位置点是目标区域上的任意一点。
步骤109,从第一位置点沿垂直于水平面的方向向上发射第一射线。
终端从第一位置点沿垂直于水平面的方向向上发射第一射线。
第一射线是用来检测目标区域上方是否有障碍物遮挡的射线。
示例性的,第一射线具有固定长度,当第一射线的长度达到固定长度时,还未获取到撞击结果,则判断第一位置点的上方没有障碍物,即目标区域上方没有障碍物。例如,第一射线的固定长度是三个单位距离,当第一射线到达第一位置点正上方与第一位置点有三个单位距离的点时,确定目标区域上方没有障碍物。
示例性的,第一射线可以是球形射线。示例性的,可以用球体半径较大的球形射线,扩大第一射线所检测的空间范围,来判断目标区域上方是否有障碍物遮挡。
步骤1005,判断第一射线是否获取到撞击结果。
终端判断第一射线是否获取到撞击结果。若获取到撞击结果则进行步骤110,否则进行步骤1082。
步骤110,当第一射线没有获取到撞击结果时,确定目标区域是开阔区域。
当第一射线没有获取到撞击结果时,终端确定目标区域是开阔区域。
示例性的,当第一射线没有在第一位置点上方获取到撞击结果时,以第一射线的末端点为起点,沿竖直向下方向再次射出第一射线,当第一射线可以返回到第一位置点时,说明第一位置点和第一射线的末端点之间没有障碍物遮挡,即目标区域是开阔区域。
示例性的,当目标事件是放置道具时,步骤1111还可以替换为图21所示的示例性实施例中的步骤1113。
步骤1113,当目标区域是平缓区域,且目标区域是开阔区域时,在目标区域上放置虚拟道具,开阔区域是虚拟表面上方没有障碍物遮挡的表面区域。
当目标区域是平缓区域,且目标区域是开阔区域时,终端在目标区域上放置虚拟道具,开阔区域是虚拟表面上方没有障碍物遮挡的表面区域。
虚拟道具是需要一个平缓且开放区域进行放置的虚拟道具。示例性的,虚拟道具可以是放置后会向上方发射虚拟物品的道具、或放置后会在目标区域召唤空降的道具。
例如,如图22所示,终端选中的目标区域位于桥梁702的下方,终端从第一位置点向上发射第一射线后,第一射线与桥梁702的桥面下表面产生撞击。则终端确定目标区域的上方不是开阔区域,将虚拟道具701显示为不可放置的状态。
步骤1082,不能执行目标事件。
综上所述,本实施例提供的方法,通过从第一位置点向竖直向上的方向射出第一射线,来检测目标区域上方是否有障碍物的遮挡。提供了一种判断虚拟区域上方是否开阔的方法,当目标事件对目标区域上方的空间设置有发生条件时,通过判断第一射线是否能够获取到撞击结果,来确定目标区域是否符合目标事件的发生条件。通过将第一射线设置为球形射线,扩大第一射线空间上的检测范围,减少检测误差。
示例性的,当目标事件是放置虚拟道具时,本申请还给出了一种放置虚拟道具的示例性实施例。
图23是本申请一个示例性实施例提供的虚拟世界中的虚拟表面判断方法的方法流程图。以该方法的执行主体为图1所示出的终端来举例说明,该方法包括以下步骤。
步骤101,显示虚拟世界画面,虚拟世界画面是以主控虚拟角色的视角观察虚拟世界得到的画面,虚拟世界包括用于供主控虚拟角色在其上活动的虚拟表面,虚拟表面包括平面、斜面和曲面中的至少一种。
步骤102,在虚拟表面上选中目标区域,目标区域是虚拟表面上与目标事件相关的表面区域。
步骤1003,判断目标区域是否是平缓区域。
终端判断目标区域是否是平缓区域。若是平缓区域则进行步骤301,否则进行步骤1082。
步骤301,当目标区域是平缓区域时,根据目标区域的特征向量确定虚拟道具的放置方向。
终端判断目标区域是否是平缓区域。当目标区域是平缓区域时,终端根据目标区域的特征向量确定虚拟道具的放置方向。
示例性的,终端判断目标区域是都是平缓区域的方法可以参照图7或图16所提供的示例性实施例。
示例性的,终端根据特征向量求出目标区域的法向量,根据目标区域的法向量确定虚拟道具的放置方向。
虚拟道具的放置方向包括竖直方向和水平方向,示例性的,终端根据目标区域的法向量确定虚拟道具的竖直方向。示例性的,虚拟道具放置的水平方向可以是任意的。
示例性的,终端将虚拟道具的底面放到特征向量上,按照目标区域的法向量确定虚拟道具的竖直方向。示例性的,终端使特征向量位于虚拟道具的底面上,且目标区域的法向量垂直于虚拟道具的底面。
例如,如图24所示,终端获取到的目标区域与是房屋703的外墙面,终端根据第一方格射线的撞击结果获取特征向量,根据特征向量和竖直方向的单位向量获取目标区域的法向量,根据法向量确定虚拟道具放置的竖直方向,即如图24所示,目标区域的法向量是垂直于房屋703外墙面向外的方向,则虚拟道具701的竖直方向是垂直于外墙面向外。
示例性的,当终端获取到目标区域的特征向量,根据特征向量获取到法向量时,无论目标区域是否是平缓区域,都将虚拟道具按照法向量的方向显示在虚拟画面中。例如,如图24所示,目标区域是房屋703地外墙面,不是平缓区域,但不影响虚拟道具按照目标区域的法向量方向显示在目标区域上。示例性的,虚拟道具显示为不可放置的状态。
步骤1004,判断目标区域是否是开阔区域。
终端判断目标区域是否是开阔区域。若是开阔区域,则进行步骤302,否则进行步骤1082。
步骤302,当目标区域是开阔区域时,显示虚拟道具为可放置状态。
当目标区域是开阔区域时,终端显示虚拟道具为可放置状态。
可放置状态和不可放置状态是显示在虚拟世界画面上的提示信息。可放置状态和不可放置状态根据目标区域是否符合目标事件的发生条件来显示。示例性的,当目标区域平缓且开阔时,虚拟道具显示为可放置状态;否则虚拟道具显示为不可放置状态。
示例性的,这种提示信息可以通过多种提示方式显示在虚拟世界画面上。例如,将处于可放置状态的虚拟道具显示为蓝色,将处于不可放置状态的虚拟道具显示为红色;将处于可放置状态的虚拟道具的轮廓高光显示,将处于不可放置状态的虚拟道具进行颜色上的灰度处理;将处于可放置状态的虚拟道具上方显示“道具可放置”的提示信息,将处于不可放置状态的虚拟道具上方显示“道具不可放置”的提示信息;处于可放置状态的虚拟道具显示在虚拟世界画面上,处于不可放置状态的虚拟道具不显示在虚拟世界画面上等。
例如,如图22或24所示,将虚拟道具701显示为不可放置状态。如图5或19将虚拟道具显示为可放置状态。
步骤303,当接收到放置操作时,根据放置方向在目标区域上放置虚拟道具。
当接收到放置操作时,终端根据放置方向在目标区域上放置虚拟道具。
示例性的,终端确定目标区域符合虚拟道具的放置条件后,将虚拟道具以可放置状态显示在虚拟世界画面上,若用户想要在当前位置放下虚拟道具,则用户可以进行放置操作。
示例性的,放置操作可以是用户对虚拟道具放置控件的触发操作,触发操作包括:点击、双击、长按、滑动中的至少一种。示例性的,虚拟道具放置控件是显示在虚拟世界画面之上的ui控件。
步骤1082,不能执行目标事件。
终端无法在目标区域上放置虚拟道具。
综上所述,本实施例提供的方法,通过判断目标区域是否是平缓且开阔的区域,来确定虚拟道具是否可以防止在目标区域上,解决了相关技术中只根据目标区域上的一个点来获取目标区域的法向量,根据该点和法向量直接放置虚拟道具,无法判断虚拟表面是否适合放置虚拟道具的问题。
示例性的,本申请还给出一个应用虚拟世界中的虚拟表面判断方法的完整的示例性实施例。
图25是本申请一个示例性实施例提供的虚拟世界中的虚拟表面判断方法的方法流程图。以该方法的执行主体为图1所示出的终端来举例说明,该方法包括以下步骤。
步骤801,用球形射线算出前方的一个位置点。
终端用球形射线算出前方的一个位置点。
示例性的,终端用球形射线在主控虚拟角色的前方算出第一位置点。
步骤802,从这个位置点往竖直方向向上和向下分别算出是否有撞击点。
终端从这个位置点往竖直方向向上和向下分别算出是否有撞击点。
示例性的,终端从第一位置点向竖直向上的方向射出第一射线,当第一射线到达预设的射出长度时,再从终点竖直向下再次射出第一射线返回第一位置点。若第一射线有撞击点,则目标区域不是开阔区域,否则,目标区域是开阔区域。
步骤803,通过方格射线算出道具贴着地面的方向。
终端通过方格射线算出道具贴着地面的方向。
示例性的,终端根据第一方格射线的撞击结果获取特征向量,根据特征向量和竖直方向的单位向量,获取目标区域的法向量,根据目标区域的法向量和特征向量确定虚拟道具贴着地面的方向,即虚拟道具的底面平行于特征向量,虚拟道具的竖直方向平行于法向量方向。
步骤804,通过这个方向和竖直方向算出角度来排除大斜坡。
终端通过这个方向和竖直方向算出角度来排除大斜坡。
示例性的,终端通过判断目标区域的法向量与竖直方向的夹角,来确定目标区域的倾斜程度。若夹角过大,则表示目标区域的倾斜程度过大,目标区域不适合放置虚拟道具。
步骤805,再通过方格射线算出高度差来判断这块地形是否是平地。
终端再通过方格射线算出高度差来判断这块地形是否是平地。
示例性的,终端沿目标区域的法向量方向射出第二方格射线,根据第二方格射线的撞击结果,计算目标区域在法向量方向上的高度差,根据高度差判断目标区域的起伏程度。若高度差过大则表示目标区域凹凸不平且起伏较大,不是平缓区域;否则确定目标区域是平缓区域。
示例性的,通过本实施例可以看出对目标区域是否是平缓区域或开阔区域的判断顺序可以是任意的。
综上所述,本实施例提供的方法,首先用球形射线获取第一位置点,然后判断第一位置点上方是否有障碍物遮挡来确定目标区域是否是开阔区域,再根据第一方格射线的撞击结果获取虚拟道具的放置方向和目标区域的倾斜程度,然后根据第二方格射线的撞击结果获取目标区域高度差,从而判断目标区域是否适合放置虚拟道具。解决了相关技术中只根据目标区域上的一个点来获取目标区域的法向量,根据该点和法向量直接放置虚拟道具,无法判断虚拟表面是否适合放置虚拟道具的问题。
以下为本申请的装置实施例,对于装置实施例中未详细描述的细节,可参考上述方法实施例。
图26是本申请一个示例性实施例提供的虚拟世界中的虚拟表面判断装置的框图。所述装置应用于终端中,所述终端中运行有支持所述虚拟世界的应用程序,所述装置包括:
显示模块902,用于显示虚拟世界画面,所述虚拟世界画面是以主控虚拟角色的视角观察所述虚拟世界得到的画面,所述虚拟世界包括用于供所述主控虚拟角色在其上活动的虚拟表面,所述虚拟表面包括平面、斜面和曲面中的至少一种;
选中模块901,用于在所述虚拟表面上选中目标区域,所述目标区域是所述虚拟表面上与目标事件相关的表面区域;
执行模块903,用于当所述目标区域是平缓区域时,执行所述目标事件,所述平缓区域的平整程度高于目标条件。
在一个可选的实施例中,所述装置还包括:获取模块905和确定模块907;
所述获取模块905,用于获取所述目标区域上的任意两点;
所述确定模块907,用于根据所述任意两点确定所述目标区域的特征向量,所述特征向量用于表征所述目标区域的平整程度;
所述确定模块907,还用于当所述特征向量与水平面的夹角小于第一阈值时,确定所述目标区域为所述平缓区域。
在一个可选的实施例中,所述装置还包括:发射模块906;
所述获取模块905,还用于获取所述目标区域上的第一位置点,所述第一位置点是所述目标区域上的任意一点;
所述发射模块906,用于从所述第一位置点正上方的第二位置点向所述目标区域发射第一方格射线,所述第一方格射线包括起点位于所述第二位置点周围且垂直于水平面的至少两条平行射线;
所述获取模块905,还用于获取所述第一方格射线与所述目标区域的第一撞击结果,所述第一撞击结果包括至少两个撞击点;
所述确定模块907,还用于将所述第一撞击结果中最高的撞击点确定为第一撞击点,将所述第一撞击结果中最低的撞击点确定为第二撞击点;
所述确定模块907,还用于根据所述第一撞击点和所述第二撞击点确定所述目标区域的特征向量。
在一个可选的实施例中,所述确定模块907,还用于当所述特征向量与水平面的夹角小于第一阈值时,且所述目标区域的高度差小于第二阈值时,确定所述目标区域为所述平缓区域,所述高度差用于表征所述目标区域的起伏程度。
在一个可选的实施例中,所述装置还包括:发射模块906和计算模块908;
所述获取模块905,还用于获取所述目标区域上的第一位置点,所述第一位置点是所述目标区域上的任意一点;
所述发射模块906,用于从所述第一位置点上方的第三位置点,沿与所述特征向量垂直的方向,向所述目标区域发射第二方格射线;所述第三位置点和所述第一位置点的连线垂直于所述特征向量,所述第二方格射线包括起点位于所述第三位置点周围,向目标区域发射的至少两条平行射线;
所述获取模块905,还用于获取所述第二方格射线与所述目标区域的第二撞击结果,所述第二撞击结果包括至少两个撞击点;
所述确定模块907,还用于将所述第二撞击结果中最高的撞击点确定为第三撞击点,将所述第二撞击结果中最低的撞击点确定为第四撞击点;
所述计算模块908,用于根据所述第三撞击点和所述第四撞击点计算所述目标区域的高度差。
在一个可选的实施例中,所述目标事件是在所述目标区域上放置虚拟道具;
所述执行模块903,还用于当所述目标区域是平缓区域时,在所述目标区域上放置所述虚拟道具。
在一个可选的实施例中,所述执行模块903,还用于当所述目标区域是平缓区域,且所述目标区域是开阔区域时,执行所述目标事件,所述开阔区域是所述虚拟表面上方没有障碍物遮挡的表面区域。
在一个可选的实施例中,所述装置还包括:获取模块905、确定模块907和发射模块906;
所述获取模块905,用于获取所述目标区域上的第一位置点,所述第一位置点是所述目标区域上的任意一点;
所述发射模块906,用于从所述第一位置点沿垂直于水平面的方向向上发射第一射线;
所述确定模块907,用于当所述第一射线没有获取到碰撞结果时,确定所述目标区域是所述开阔区域。
在一个可选的实施例中,所述目标事件是在所述目标区域上放置虚拟道具;
所述执行模块903,还用于当所述目标区域是平缓区域,且所述目标区域是开阔区域时,在所述目标区域上放置所述虚拟道具,所述开阔区域是所述虚拟表面上方没有障碍物遮挡的表面区域。
在一个可选的实施例中,所述目标区域的平整程度采用特征向量表示,所述特征向量是根据所述目标区域上的任意两点得到的;所述装置还包括:确定模块907和交互模块904;
所述确定模块907,用于当所述目标区域是所述平缓区域时,根据所述目标区域的特征向量确定所述虚拟道具的放置方向;
所述显示模块902,还用于当所述目标区域是所述开阔区域时,显示所述虚拟道具为可放置状态;
所述交互模块904,用于接收放置操作;
所述执行模块903,还用于当接收到所述放置操作时,根据所述放置方向在所述目标区域上放置所述虚拟道具。
在一个可选的实施例中,所述选中模块901,还用于根据所述主控虚拟角色的视角焦点,在所述虚拟表面上选中所述目标区域。
在一个可选的实施例中,所述装置还包括:获取模块905、确定模块907和发射模块906;
所述获取模块905,用于获取摄像机的位置和摄像方向,所述摄像机是所述主控虚拟角色的视角对应的摄像机;
所述发射模块906,用于从所述摄像机的位置沿所述摄像方向发射第二射线;
所述获取模块905,还用于获取所述第二射线与所述虚拟表面的目标交点;
所述确定模块907,用于将所述目标交点确定为第一位置点;
所述确定模块907,还用于将所述第一位置点附近的所述虚拟表面确定为所述目标区域。
在一个可选的实施例中,所述至少两条平行射线中的每条射线是球形射线,所述球形射线是以一个点为起点,向一个方向射出一个球体的路径。
需要说明的是:上述实施例提供的虚拟世界中的虚拟表面判断装置,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的虚拟世界中的虚拟表面判断装置与虚拟世界中的虚拟表面判断方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
图27示出了本申请一个示例性实施例提供的终端3900的结构框图。该终端3900可以是:智能手机、平板电脑、mp3播放器(movingpictureexpertsgroupaudiolayeriii,动态影像专家压缩标准音频层面3)、mp4(movingpictureexpertsgroupaudiolayeriv,动态影像专家压缩标准音频层面4)播放器、笔记本电脑或台式电脑。终端3900还可能被称为用户设备、便携式终端、膝上型终端、台式终端等其它名称。
通常,终端3900包括有:处理器3901和存储器3902。
处理器3901可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器3901可以采用dsp(digitalsignalprocessing,数字信号处理)、fpga(field-programmablegatearray,现场可编程门阵列)、pla(programmablelogicarray,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器3901也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称cpu(centralprocessingunit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器3901可以在集成有gpu(graphicsprocessingunit,图像处理器),gpu用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器3901还可以包括ai(artificialintelligence,人工智能)处理器,该ai处理器用于处理有关机器学习的计算操作。
存储器3902可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器3902还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。在一些实施例中,存储器3902中的非暂态的计算机可读存储介质用于存储至少一个指令,该至少一个指令用于被处理器3901所执行以实现本申请中方法实施例提供的虚拟世界中的虚拟表面判断方法。
在一些实施例中,终端3900还可选包括有:外围设备接口3903和至少一个外围设备。处理器3901、存储器3902和外围设备接口3903之间可以通过总线或信号线相连。各个外围设备可以通过总线、信号线或电路板与外围设备接口3903相连。具体地,外围设备包括:射频电路3904、触摸显示屏3905、摄像头3906、音频电路3907、定位组件3908和电源3909中的至少一种。
外围设备接口3903可被用于将i/o(input/output,输入/输出)相关的至少一个外围设备连接到处理器3901和存储器3902。在一些实施例中,处理器3901、存储器3902和外围设备接口3903被集成在同一芯片或电路板上;在一些其它实施例中,处理器3901、存储器3902和外围设备接口3903中的任意一个或两个可以在单独的芯片或电路板上实现,本实施例对此不加以限定。
射频电路3904用于接收和发射rf(radiofrequency,射频)信号,也称电磁信号。射频电路3904通过电磁信号与通信网络以及其它通信设备进行通信。射频电路3904将电信号转换为电磁信号进行发送,或者,将接收到的电磁信号转换为电信号。可选地,射频电路3904包括:天线系统、rf收发器、一个或多个放大器、调谐器、振荡器、数字信号处理器、编解码芯片组、用户身份模块卡等等。射频电路3904可以通过至少一种无线通信协议来与其它终端进行通信。该无线通信协议包括但不限于:万维网、城域网、内联网、各代移动通信网络(2g、3g、4g及5g)、无线局域网和/或wifi(wirelessfidelity,无线保真)网络。在一些实施例中,射频电路3904还可以包括nfc(nearfieldcommunication,近距离无线通信)有关的电路,本申请对此不加以限定。
显示屏3905用于显示ui(userinterface,用户界面)。该ui可以包括图形、文本、图标、视频及其它们的任意组合。当显示屏3905是触摸显示屏时,显示屏3905还具有采集在显示屏3905的表面或表面上方的触摸信号的能力。该触摸信号可以作为控制信号输入至处理器3901进行处理。此时,显示屏3905还可以用于提供虚拟按钮和/或虚拟键盘,也称软按钮和/或软键盘。在一些实施例中,显示屏3905可以为一个,设置终端3900的前面板;在另一些实施例中,显示屏3905可以为至少两个,分别设置在终端3900的不同表面或呈折叠设计;在再一些实施例中,显示屏3905可以是柔性显示屏,设置在终端3900的弯曲表面上或折叠面上。甚至,显示屏3905还可以设置成非矩形的不规则图形,也即异形屏。显示屏3905可以采用lcd(liquidcrystaldisplay,液晶显示屏)、oled(organiclight-emittingdiode,有机发光二极管)等材质制备。
摄像头组件3906用于采集图像或视频。可选地,摄像头组件3906包括前置摄像头和后置摄像头。通常,前置摄像头设置在终端的前面板,后置摄像头设置在终端的背面。在一些实施例中,后置摄像头为至少两个,分别为主摄像头、景深摄像头、广角摄像头、长焦摄像头中的任意一种,以实现主摄像头和景深摄像头融合实现背景虚化功能、主摄像头和广角摄像头融合实现全景拍摄以及vr(virtualreality,虚拟现实)拍摄功能或者其它融合拍摄功能。在一些实施例中,摄像头组件3906还可以包括闪光灯。闪光灯可以是单色温闪光灯,也可以是双色温闪光灯。双色温闪光灯是指暖光闪光灯和冷光闪光灯的组合,可以用于不同色温下的光线补偿。
音频电路3907可以包括麦克风和扬声器。麦克风用于采集用户及环境的声波,并将声波转换为电信号输入至处理器3901进行处理,或者输入至射频电路3904以实现语音通信。出于立体声采集或降噪的目的,麦克风可以为多个,分别设置在终端3900的不同部位。麦克风还可以是阵列麦克风或全向采集型麦克风。扬声器则用于将来自处理器3901或射频电路3904的电信号转换为声波。扬声器可以是传统的薄膜扬声器,也可以是压电陶瓷扬声器。当扬声器是压电陶瓷扬声器时,不仅可以将电信号转换为人类可听见的声波,也可以将电信号转换为人类听不见的声波以进行测距等用途。在一些实施例中,音频电路3907还可以包括耳机插孔。
定位组件3908用于定位终端3900的当前地理位置,以实现导航或lbs(locationbasedservice,基于位置的服务)。定位组件3908可以是基于美国的gps(globalpositioningsystem,全球定位系统)、中国的北斗系统或俄罗斯的伽利略系统的定位组件。
电源3909用于为终端3900中的各个组件进行供电。电源3909可以是交流电、直流电、一次性电池或可充电电池。当电源3909包括可充电电池时,该可充电电池可以是有线充电电池或无线充电电池。有线充电电池是通过有线线路充电的电池,无线充电电池是通过无线线圈充电的电池。该可充电电池还可以用于支持快充技术。
在一些实施例中,终端3900还包括有一个或多个传感器3910。该一个或多个传感器3910包括但不限于:加速度传感器3911、陀螺仪传感器3912、压力传感器3913、指纹传感器3914、光学传感器3915以及接近传感器3916。
加速度传感器3911可以检测以终端3900建立的坐标系的三个坐标轴上的加速度大小。比如,加速度传感器3911可以用于检测重力加速度在三个坐标轴上的分量。处理器3901可以根据加速度传感器3911采集的重力加速度信号,控制触摸显示屏3905以横向视图或纵向视图进行用户界面的显示。加速度传感器3911还可以用于游戏或者用户的运动数据的采集。
陀螺仪传感器3912可以检测终端3900的机体方向及转动角度,陀螺仪传感器3912可以与加速度传感器3911协同采集用户对终端3900的3d动作。处理器3901根据陀螺仪传感器3912采集的数据,可以实现如下功能:动作感应(比如根据用户的倾斜操作来改变ui)、拍摄时的图像稳定、游戏控制以及惯性导航。
压力传感器3913可以设置在终端3900的侧边框和/或触摸显示屏3905的下层。当压力传感器3913设置在终端3900的侧边框时,可以检测用户对终端3900的握持信号,由处理器3901根据压力传感器3913采集的握持信号进行左右手识别或快捷操作。当压力传感器3913设置在触摸显示屏3905的下层时,由处理器3901根据用户对触摸显示屏3905的压力操作,实现对ui界面上的可操作性控件进行控制。可操作性控件包括按钮控件、滚动条控件、图标控件、菜单控件中的至少一种。
指纹传感器3914用于采集用户的指纹,由处理器3901根据指纹传感器3914采集到的指纹识别用户的身份,或者,由指纹传感器3914根据采集到的指纹识别用户的身份。在识别出用户的身份为可信身份时,由处理器3901授权该用户执行相关的敏感操作,该敏感操作包括解锁屏幕、查看加密信息、下载软件、支付及更改设置等。指纹传感器3914可以被设置终端3900的正面、背面或侧面。当终端3900上设置有物理按键或厂商logo时,指纹传感器3914可以与物理按键或厂商logo集成在一起。
光学传感器3915用于采集环境光强度。在一个实施例中,处理器3901可以根据光学传感器3915采集的环境光强度,控制触摸显示屏3905的显示亮度。具体地,当环境光强度较高时,调高触摸显示屏3905的显示亮度;当环境光强度较低时,调低触摸显示屏3905的显示亮度。在另一个实施例中,处理器3901还可以根据光学传感器3915采集的环境光强度,动态调整摄像头组件3906的拍摄参数。
接近传感器3916,也称距离传感器,通常设置在终端3900的前面板。接近传感器3916用于采集用户与终端3900的正面之间的距离。在一个实施例中,当接近传感器3916检测到用户与终端3900的正面之间的距离逐渐变小时,由处理器3901控制触摸显示屏3905从亮屏状态切换为息屏状态;当接近传感器3916检测到用户与终端3900的正面之间的距离逐渐变大时,由处理器3901控制触摸显示屏3905从息屏状态切换为亮屏状态。
本领域技术人员可以理解,图27中示出的结构并不构成对终端3900的限定,可以包括比图示更多或更少的组件,或者组合某些组件,或者采用不同的组件布置。
本申请还提供了一种计算机设备,所述计算机设备包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现上述任意示例性实施例所提供的虚拟世界中的虚拟表面判断方法。
本申请还提供了一种计算机可读存储介质,所述可读存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现上述任意示例性实施例所提供的虚拟世界中的虚拟表面判断方法。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本申请的可选实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
技术特征:
1.一种虚拟世界中的虚拟表面判断方法,其特征在于,所述方法应用于终端中,所述终端中运行有支持所述虚拟世界的应用程序,所述方法包括:
显示虚拟世界画面,所述虚拟世界画面是以主控虚拟角色的视角观察所述虚拟世界得到的画面,所述虚拟世界包括用于供所述主控虚拟角色在其上活动的虚拟表面,所述虚拟表面包括平面、斜面和曲面中的至少一种;
在所述虚拟表面上选中目标区域,所述目标区域是所述虚拟表面上与目标事件相关的表面区域;
当所述目标区域是平缓区域时,执行所述目标事件,所述平缓区域的平整程度高于目标条件。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
获取所述目标区域上的任意两点,根据所述任意两点确定所述目标区域的特征向量,所述特征向量用于表征所述目标区域的平整程度;
当所述特征向量与水平面的夹角小于第一阈值时,确定所述目标区域为所述平缓区域。
3.根据权利要求2所述的方法,其特征在于,所述获取所述目标区域上的任意两点,根据所述任意两点确定所述目标区域的特征向量,包括:
获取所述目标区域上的第一位置点,所述第一位置点是所述目标区域上的任意一点;
从所述第一位置点正上方的第二位置点向所述目标区域发射第一方格射线,所述第一方格射线包括起点位于所述第二位置点周围且垂直于水平面的至少两条平行射线;
获取所述第一方格射线与所述目标区域的第一撞击结果,所述第一撞击结果包括至少两个撞击点;
将所述第一撞击结果中最高的撞击点确定为第一撞击点,将所述第一撞击结果中最低的撞击点确定为第二撞击点;
根据所述第一撞击点和所述第二撞击点确定所述目标区域的特征向量。
4.根据权利要求2所述的方法,其特征在于,所述当所述特征向量与水平面的夹角小于第一阈值时,确定所述目标区域为所述平缓区域,包括:
当所述特征向量与水平面的夹角小于第一阈值时,且所述目标区域的高度差小于第二阈值时,确定所述目标区域为所述平缓区域,所述高度差用于表征所述目标区域的起伏程度。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
获取所述目标区域上的第一位置点,所述第一位置点是所述目标区域上的任意一点;
从所述第一位置点上方的第三位置点,沿与所述特征向量垂直的方向,向所述目标区域发射第二方格射线;所述第三位置点和所述第一位置点的连线垂直于所述特征向量,所述第二方格射线包括起点位于所述第三位置点周围,向目标区域发射的至少两条平行射线;
获取所述第二方格射线与所述目标区域的第二撞击结果,所述第二撞击结果包括至少两个撞击点;
将所述第二撞击结果中最高的撞击点确定为第三撞击点,将所述第二撞击结果中最低的撞击点确定为第四撞击点;
根据所述第三撞击点和所述第四撞击点计算所述目标区域的高度差。
6.根据权利要求1至5任一所述的方法,其特征在于,所述目标事件是在所述目标区域上放置虚拟道具;
所述当所述目标区域是平缓区域时,执行所述目标事件,包括:
当所述目标区域是平缓区域时,在所述目标区域上放置所述虚拟道具。
7.根据权利要求1至5任一所述的方法,其特征在于,所述当所述目标区域是平缓区域时,执行所述目标事件,包括:
当所述目标区域是平缓区域,且所述目标区域是开阔区域时,执行所述目标事件,所述开阔区域是所述虚拟表面上方没有障碍物遮挡的表面区域。
8.根据权利要求7所述的方法,其特征在于,所述方法还包括:
获取所述目标区域上的第一位置点,所述第一位置点是所述目标区域上的任意一点;
从所述第一位置点沿垂直于水平面的方向向上发射第一射线;
当所述第一射线没有获取到撞击结果时,确定所述目标区域是所述开阔区域。
9.根据权利要求1至8任一所述的方法,其特征在于,所述目标事件是在所述目标区域上放置虚拟道具;
所述当所述目标区域是平缓区域时,执行所述目标事件,包括:
当所述目标区域是平缓区域,且所述目标区域是开阔区域时,在所述目标区域上放置所述虚拟道具,所述开阔区域是所述虚拟表面上方没有障碍物遮挡的表面区域。
10.根据权利要求1至9任一所述的方法,其特征在于,所述在所述虚拟表面上选中目标区域,包括:
根据所述主控虚拟角色的视角焦点,在所述虚拟表面上选中所述目标区域。
11.根据权利要求10所述的方法,其特征在于,所述根据所述主控虚拟角色的视角焦点,在所述虚拟表面上选中所述目标区域,包括:
获取摄像机的位置和摄像方向,所述摄像机是所述主控虚拟角色的视角对应的摄像机;
从所述摄像机的位置沿所述摄像方向发射第二射线;
获取所述第二射线与所述虚拟表面的目标交点;
将所述目标交点确定为第一位置点;
将所述第一位置点附近的所述虚拟表面确定为所述目标区域。
12.根据权利要求3或5所述的方法,其特征在于,所述至少两条平行射线中的每条射线是球形射线,所述球形射线是以一个点为起点,向一个方向射出一个球体的路径。
13.一种虚拟世界中的虚拟表面判断装置,其特征在于,所述装置应用于终端中,所述终端中运行有支持所述虚拟世界的应用程序,所述装置包括:
显示模块,用于显示虚拟世界画面,所述虚拟世界画面是以主控虚拟角色的视角观察所述虚拟世界得到的画面,所述虚拟世界包括用于供所述主控虚拟角色在其上活动的虚拟表面,所述虚拟表面包括平面、斜面和曲面中的至少一种;
选中模块,用于在所述虚拟表面上选中目标区域,所述目标区域是所述虚拟表面上与目标事件相关的表面区域;
执行模块,用于当所述目标区域是平缓区域时,执行所述目标事件,所述平缓区域的平整程度高于目标条件。
14.一种计算机设备,其特征在于,所述计算机设备包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如权利要求1至12任一所述的虚拟世界中的虚拟表面判断方法。
15.一种计算机可读存储介质,其特征在于,所述可读存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如权利要求1至12任一所述的虚拟世界中的虚拟表面判断方法。
技术总结
本申请公开了一种虚拟世界中的虚拟表面判断方法、装置、设备及介质,涉及虚拟世界领域。该方法包括:显示虚拟世界画面,所述虚拟世界画面是以主控虚拟角色的视角观察所述虚拟世界得到的画面,所述虚拟世界包括用于供所述主控虚拟角色在其上活动的虚拟表面,所述虚拟表面包括平面、斜面和曲面中的至少一种;在所述虚拟表面上选中目标区域,所述目标区域是所述虚拟表面上与目标事件相关的表面区域;当所述目标区域是平缓区域时,执行所述目标事件,所述平缓区域的平整程度高于目标条件。解决了相关技术中,只根据一个位置点和位置点所在平面的法向量无法判断虚拟表面是否适合放置该虚拟道具的问题。
技术研发人员:黄晓权
受保护的技术使用者:腾讯科技(深圳)有限公司
技术研发日:.11.08
技术公布日:.02.21
如果觉得《虚拟世界中的虚拟表面判断方法 装置 设备及介质与流程》对你有帮助,请点赞、收藏,并留下你的观点哦!