CN112891943A - 一种镜头处理方法、设备以及可读存储介质 - Google Patents
一种镜头处理方法、设备以及可读存储介质 Download PDFInfo
- Publication number
- CN112891943A CN112891943A CN202110296206.3A CN202110296206A CN112891943A CN 112891943 A CN112891943 A CN 112891943A CN 202110296206 A CN202110296206 A CN 202110296206A CN 112891943 A CN112891943 A CN 112891943A
- Authority
- CN
- China
- Prior art keywords
- lens
- target
- curve
- parameter
- current
- 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
Links
Images
Classifications
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/50—Controlling the output signals based on the game progress
- A63F13/52—Controlling the output signals based on the game progress involving aspects of the displayed game scene
- A63F13/525—Changing parameters of virtual cameras
- A63F13/5252—Changing parameters of virtual cameras using two or more virtual cameras concurrently or sequentially, e.g. automatically switching between fixed virtual cameras when a character changes room or displaying a rear-mirror view in a car-driving game
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/55—Controlling game characters or game objects based on the game progress
- A63F13/57—Simulating properties, behaviour or motion of objects in the game world, e.g. computing tyre load in a car race game
- A63F13/577—Simulating properties, behaviour or motion of objects in the game world, e.g. computing tyre load in a car race game using determination of contact between game characters or objects, e.g. to avoid collision between virtual racing cars
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/60—Generating or modifying game content before or while executing the game program, e.g. authoring tools specially adapted for game development or game-integrated level editor
- A63F13/63—Generating or modifying game content before or while executing the game program, e.g. authoring tools specially adapted for game development or game-integrated level editor by the player, e.g. authoring using a level editor
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Processing Or Creating Images (AREA)
Abstract
本申请公开了一种镜头处理方法、设备以及可读存储介质,该镜头处理方法包括:在目标应用中获取当前镜头画面;若当前镜头画面中所触发的目标事件满足镜头参数更新条件,则获取与目标事件相关联的目标镜头曲线;目标镜头曲线是采用动态曲线进行配置的,目标镜头曲线用于表示具有不同镜头参数类型的镜头参数之间的动态变化关系,镜头参数用于共同指示镜头虚拟相机的方位信息;根据当前镜头画面对应的初始镜头参数以及目标镜头曲线,生成目标事件对应的更新镜头参数;基于更新镜头参数,调整镜头虚拟相机的方位信息,基于调整后的镜头虚拟相机渲染用于展示目标事件的更新镜头画面。采用本申请,可以快速实现目标应用的多样化镜头规则,提升研发效率。
Description
技术领域
本申请涉及互联网技术领域,尤其涉及一种镜头处理方法、设备以及可读存储介质。
背景技术
随着移动通信技术的不断发展,手机、平板电脑等智能终端在人们的日常生活中已占据着举足轻重的地位。如今,通过智能终端,人们可以随时随地打开娱乐服务类应用进行休闲娱乐,丰富了人们的生活方式。
目前,一种在虚拟场景显示过程中常用的镜头方案为:将镜头分为不同的模式,在同一模式下,镜头参数基本是固定的;镜头在不同模式之间进行切换时,需要通过程序提供相应的函数接口,再由设计人员通过调节函数类型和函数参数来试图实现想要的效果,但这种方法往往很难达到预期效果,可见现有的方案无法满足高品质产品对镜头表现的要求,且需要程序人员提供多种函数接口,导致研发效率较低下。
发明内容
本申请实施例提供了一种镜头处理方法、设备以及可读存储介质,可以实现目标应用的多样化镜头规则,提升研发效率。
本申请实施例一方面提供了一种镜头处理方法,包括:
在目标应用中获取当前镜头画面;
若当前镜头画面中所触发的目标事件满足镜头参数更新条件,则获取与目标事件相关联的目标镜头曲线;目标镜头曲线是采用动态曲线进行配置的,目标镜头曲线用于表示具有不同镜头参数类型的镜头参数之间的动态变化关系,镜头参数用于共同指示镜头虚拟相机的方位信息;
根据当前镜头画面对应的初始镜头参数以及目标镜头曲线,生成目标事件对应的更新镜头参数;
基于更新镜头参数,调整镜头虚拟相机的方位信息,基于调整后的镜头虚拟相机渲染用于展示目标事件的更新镜头画面。
本申请实施例一方面提供了一种镜头处理装置,包括:
第一获取模块,用于在目标应用中获取当前镜头画面;
第二获取模块,用于若当前镜头画面中所触发的目标事件满足镜头参数更新条件,则获取与目标事件相关联的目标镜头曲线;目标镜头曲线是采用动态曲线进行配置的,目标镜头曲线用于表示具有不同镜头参数类型的镜头参数之间的动态变化关系,镜头参数用于共同指示镜头虚拟相机的方位信息;
参数生成模块,用于根据当前镜头画面对应的初始镜头参数以及目标镜头曲线,生成目标事件对应的更新镜头参数;
更新模块,用于基于更新镜头参数,调整镜头虚拟相机的方位信息,基于调整后的镜头虚拟相机渲染用于展示目标事件的更新镜头画面。
其中,上述镜头参数更新条件包括第一镜头参数更新条件;
第二获取模块,具体用于若当前镜头画面中所触发的目标事件属于特殊镜头触发事件,则确定目标事件满足第一镜头参数更新条件;从参数配置文件中获取与目标事件相关联的目标镜头曲线。
其中,上述当前镜头画面是基于初始镜头曲线渲染得到的;
参数生成模块,包括:
插值比例获取单元,用于获取开始时间戳、当前时间戳以及事件持续时长,根据开始时间戳、当前时间戳以及事件持续时长生成当前时间比例;开始时间戳是指当前镜头画面中触发目标事件时的时间戳;且用于根据当前时间比例,从与目标事件相关联的过渡曲线中读取当前插值比例;过渡曲线是采用动态曲线进行配置的,过渡曲线用于表示镜头画面随时间的变化效果;
第一参数读取单元,用于从初始镜头曲线中读取当前镜头画面对应的初始镜头参数,从目标镜头曲线中读取目标事件对应的目标镜头参数;
第一插值单元,用于根据当前插值比例对初始镜头参数和目标镜头参数进行曲线插值,生成目标事件对应的更新镜头参数。
其中,上述装置还包括:
恢复模块,用于获取当前镜头画面对应的初始逻辑动态参数以及初始镜头参数,将初始逻辑动态参数以及初始镜头参数存储至缓存区;当目标事件执行结束时,从缓存区中提取初始逻辑动态参数以及初始镜头参数,将调整后的镜头虚拟相机恢复到初始逻辑动态参数以及初始镜头参数所共同指示的相机方位。
其中,上述镜头参数更新条件包括第二镜头参数更新条件;
第二获取模块,具体用于若当前镜头画面对应的当前业务对象逻辑状态与当前镜头画面中所触发的目标事件对应的目标业务对象状态逻辑状态不相同,则确定目标事件满足第二镜头参数更新条件;从参数配置文件中获取与目标事件相关联的目标镜头曲线。
其中,上述当前镜头画面是基于初始镜头曲线渲染得到的;
参数生成模块,包括:
第二参数读取单元,用于根据当前业务对象逻辑状态,从初始镜头曲线中读取当前镜头画面对应的初始镜头参数;根据目标业务对象逻辑状态,从目标镜头曲线中读取中间参数,根据中间参数生成目标事件对应的目标镜头参数;中间参数是指至少两个互相影响的镜头参数;
转换参数获取单元,用于获取当前业务对象逻辑状态与目标业务对象逻辑状态之间的镜头转换参数;
第二插值单元,用于根据镜头转换参数对初始镜头参数以及目标镜头参数进行曲线插值,生成目标事件对应的更新镜头参数。
其中,上述镜头参数更新条件包括第三镜头参数更新条件;
第二获取模块,具体用于若当前镜头画面对应的业务对象逻辑状态与前镜头画面中所触发的目标事件对应的业务对象逻辑状态相同,且业务对象的动态信息发生变化,则确定目标事件满足第三镜头参数更新条件;动态信息用于表示业务对象的运动状态;从参数配置文件中获取与目标事件相关联的目标镜头曲线。
其中,上述当前镜头画面是基于初始镜头曲线渲染得到的;
参数生成模块,包括:
第三参数读取单元,用于从初始镜头曲线中读取当前镜头画面对应的初始镜头参数,从目标镜头曲线中读取目标事件对应的目标镜头参数;
第三插值单元,用于根据变化后的动态信息,从目标镜头曲线中读取与变化后的动态信息相匹配的中间参数,根据中间参数对初始镜头参数和目标镜头参数进行曲线插值,生成目标事件对应的更新镜头参数;中间参数是指至少两个互相影响的镜头参数;初始镜头曲线与目标镜头曲线是相同的曲线。
其中,上述装置还包括:
第一碰撞检测模块,用于连接镜头焦点与调整后的镜头虚拟相机,构造目标射线;检测目标射线与业务场景中的地形之间的位置关系;若位置关系为相交关系,则确定调整后的镜头虚拟相机与地形产生碰撞关系,根据碰撞关系获取调整后的镜头虚拟相机与地形之间的第一碰撞点;
第一优化模块,用于根据第一碰撞点,缩短更新镜头参数中的臂长,得到优化镜头参数,根据优化镜头参数对更新镜头画面进行优化。
其中,上述装置还包括:
第二碰撞检测模块,用于将调整后的镜头虚拟相机模拟为虚拟球体,对虚拟球体与业务场景中的几何物体进行碰撞检测;若调整后的镜头虚拟相机与几何物体产生碰撞关系,则对虚拟球体进行嵌入检测;
第二优化模块,用于若调整后的镜头虚拟相机与几何物体产生嵌入关系,则根据调整后的镜头虚拟相机与几何物体之间的嵌入点,缩短更新镜头参数中的臂长,得到优化镜头参数,根据优化镜头参数对更新镜头画面进行优化。
其中,第二碰撞检测模块具体用于若调整后的镜头虚拟相机与几何物体产生碰撞关系,确定调整后的镜头虚拟相机与几何物体之间的第二碰撞点;根据第二碰撞点与虚拟球体构造嵌入检测向量,根据第二碰撞点构造碰撞点法向量,获取嵌入检测向量与碰撞点法向量之间的向量夹角;若向量夹角为钝角,则确定调整后的镜头虚拟相机与几何物体产生嵌入关系。
其中,更新模块具体用于根据更新镜头参数,调整镜头虚拟相机的方位信息;根据更新镜头参数对镜头参数矩阵进行更新,将更新后的镜头参数矩阵输入渲染层,在渲染层中,根据更新后的镜头参数矩阵渲染用于展示目标事件的更新镜头画面。
其中,上述装置还包括:
曲线配置模块,用于在曲线编辑界面中,响应针对初始曲线的编辑操作,生成一条或多条动态曲线;在曲线参数配置界面中,响应针对一条或多条动态曲线的选择操作,将所选择的动态曲线确定为与目标事件相关联的目标镜头曲线。
本申请实施例一方面提供了一种计算机设备,包括:处理器、存储器、网络接口;
上述处理器与上述存储器、上述网络接口相连,其中,上述网络接口用于提供数据通信功能,上述存储器用于存储计算机程序,上述处理器用于调用上述计算机程序,以执行本申请实施例中的方法。
本申请实施例一方面提供了一种计算机可读存储介质,上述计算机可读存储介质中存储有计算机程序,上述计算机程序适于由处理器加载并执行本申请实施例中的方法。
本申请实施例一方面提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中,计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行本申请实施例中的方法。
本申请实施例可以通过在目标应用中获取当前镜头画面,进而检测当前镜头画面中所触发的目标事件是否满足镜头参数更新条件,当满足镜头参数更新条件时,可以进一步获取与目标事件相关联的目标镜头曲线,从而可以根据当前镜头画面对应的初始镜头参数以及目标镜头曲线,生成目标事件对应的更新镜头参数,最终可以基于该更新镜头参数调整镜头虚拟相机的方位信息,从而得到用于展示目标事件的更新镜头画面。在本申请实施例中,由于目标镜头曲线是采用动态曲线进行配置的,且目标镜头曲线可以表示具有不同镜头参数类型的镜头参数之间的动态变化关系,因此本申请通过采用基于动态曲线的配置方式来调节镜头参数,而不是采用现有方案中固定数值式的参数设定,可以实现目标应用的多样化镜头规则,充分满足产品的定制化需求,且无需程序人员提供多种函数接口,可以极大节省程序人员的研发工作,从而提升研发效率。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种系统架构示意图;
图2a-图2c是本申请实施例提供的一种镜头处理的场景示意图;
图3是本申请实施例提供的一种曲线编辑界面的示意图;
图4是本申请实施例提供的一种曲线参数配置界面的示意图;
图5是本申请实施例提供的一种镜头处理方法的流程示意图;
图6是本申请实施例提供的另一种镜头处理方法的流程示意图;
图7是本申请实施例提供的又一种镜头处理方法的流程示意图;
图8是本申请实施例提供的又一种镜头处理方法的流程示意图;
图9a-图9b是本申请实施例提供的另一种镜头处理的场景示意图;
图10是本申请实施例提供的又一种镜头处理方法的流程示意图;
图11是本申请实施例提供的一种镜头处理装置的结构示意图;
图12是本申请实施例提供的一种计算机设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
请参见图1,是本申请实施例提供的一种系统架构示意图。该系统架构可以包括业务服务器100以及终端集群,终端集群可以包括:终端设备200a、终端设备200b、终端设备200c、…、终端设备200n,其中,终端集群之间可以存在通信连接,例如终端设备200a与终端设备200b之间存在通信连接,终端设备200a与终端设备200c之间存在通信连接。同时,终端集群中的任一终端设备可以与业务服务器100存在通信连接,例如终端设备200a与业务服务器100之间存在通信连接,其中,上述通信连接不限定连接方式,可以通过有线通信方式进行直接或间接地连接,也可以通过无线通信方式进行直接或间接地连接,还可以通过其它方式,本申请在此不做限制。
应该理解,如图1所示的终端集群中的每个终端设备均可以安装有应用客户端,当该应用客户端运行于各终端设备中时,可以分别与上述图1所示的业务服务器100之间进行数据交互,使得业务服务器100可以接收来自于每个终端设备的业务数据。其中,该应用客户端可以为游戏应用、视频编辑应用、社交应用、即时通信应用、直播应用、短视频应用、视频应用、音乐应用、购物应用、小说应用、支付应用、浏览器等具有显示文字、图像、音频以及视频等数据信息功能的目标应用客户端。其中,该目标应用客户端可以为独立的客户端,也可以为集成在某客户端(例如即时通信客户端、社交客户端、视频客户端等)中的嵌入式子客户端,在此不做限定。以游戏应用为例,业务服务器100可以为包括游戏应用对应的网关服务器、场景服务器、世界服务器、数据库代理服务器、AI服务器、聊天管理器等多个服务器的集合,因此,每个终端设备均可以通过该游戏应用对应的应用客户端与业务服务器100进行数据传输,如每个终端设备均可以通过业务服务器100与其他终端设备参与到同一个游戏中(例如MMORPG类游戏,全称为Massive Multiplayer Online Role-Playing Game,即大型多人在线角色扮演游戏),在游戏过程中,玩家可以操控所扮演的角色,并可以在游戏虚拟场景中与其他玩家扮演的角色进行实时互动。通常,当玩家控制虚拟游戏角色进行移动、进入新的游戏虚拟场景、与其他虚拟游戏角色进行交互、对话等各种操作时,镜头虚拟相机都在不断地发生变化,此时会频繁地触发镜头参数更新条件,以获取对应的镜头曲线来动态调整镜头虚拟相机的方位信息,例如可能是根据镜头曲线对镜头视角、镜头拍摄范围等进行不同程度地调整,以适应如远景镜头和近景镜头之间的切换、目标区域外景和目标区域内景之间的切换等不同的场景,最终达到用希望的方式控制镜头展现合适的画面的目的,因此,对于一个高品质游戏而言,镜头控制是十分重要的。
同样的,在涉及到使用镜头虚拟相机的视频制作编辑过程中,如何控制镜头虚拟相机来进行画面拍摄对最终呈现的画面效果具有十分重要的意义。本申请实施例可以支持设计人员采用配置好的镜头曲线来设置镜头参数,然后通过调用程序来控制镜头虚拟相机移动进行拍摄,从而可以极大简化设计人员的工作,降低动画开发的成本,且提升开发效率。以视频编辑应用为例,如图1所示的系统可以表示视频编辑场景下的分布式多机联网系统。设计人员可以预先构建好虚拟场景和虚拟动画角色,为了在视频中表现时空的完整性,可以在虚拟场景中设置多个镜头虚拟相机,需要说明的是,与真实摄像机不同的是,在虚拟场景内不存在镜头虚拟相机之间相互阻碍的情况,在虚拟拍摄过的程中,镜头虚拟相机在虚拟场景内是不可见的。如图1所示,终端集群中的每个终端设备均安装有视频编辑应用,且每个终端设备均可以通过网络连接到同一个虚拟场景中,其中,业务服务器100可以用于生成虚拟场景以及虚拟场景的管理,终端设备200a、终端设备200b、终端设备200c、…、终端设备200n中的一部分可以通过视频编辑应用控制虚拟动画角色,包括虚拟动画角色的动作、表情等,另一部分可以通过视频编辑应用控制镜头虚拟相机,使得镜头虚拟相机可以自动按照预先配置好的镜头曲线进行动画拍摄,例如,可以控制镜头虚拟相机在不同的虚拟动画角色之间移动拍摄,或者可以切换不同的镜头虚拟相机来实现对不同视角的拍摄。同时,还可以使用显示器(或终端设备)实时显示当前镜头画面。此外,本申请实施例提供的镜头参数的动态式曲线配置是一种所见即所得的配置,也就是说,设计人员可以根据拍摄效果,实时调整镜头曲线的形状来调整相关镜头参数,以实现更好的动画效果。
可以理解的是,本申请实施例提供的方法可以由计算机设备执行,计算机设备包括但不限于终端设备或业务服务器。其中,业务服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云数据库、云服务、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器。终端设备可以是智能手机、平板电脑、笔记本电脑、台式计算机、掌上电脑、移动互联网设备(mobile internet device,MID)、可穿戴设备(例如智能手表、智能手环等)、智能电脑等可以运行目标应用的智能终端。其中,终端设备和业务服务器可以通过有线或无线方式进行直接或间接地连接,本申请实施例在此不做限制。
近年来,随着各种各样的游戏产品的蓬勃发展,对镜头的设计也变得愈发重要,不仅是需要通过“镜头语言”去表达叙事,对镜头的控制还直接影响到了游戏本身的体验,约束玩家的视角、提升画面的冲击力、控制游戏难度、改善玩家的可操作性等等多个维度都有着镜头控制的参与,因此如何能高效设计出满足产品需求的镜头规则,使得游戏镜头控制既可以服务于玩家,提升玩家的可玩性体验,又可以服务于美学体验以达到镜头语言的效果,成为了游戏开发的重点议题。例如,MMORPG类游戏经常涉及到很多镜头的运动,但是现有的镜头方案可供调节的参数有限,且需要程序人员提供多种函数接口,研发效率低,无法满足一个高品质游戏对于镜头表现的要求。此外,在动画视频中也少不了镜头控制的参与,在现有的动画制作技术中,程序人员提供的函数接口有限,导致通过程序控制镜头移动拍摄所得的效果不够理想,或者,还可以人工通过操作终端设备上的键盘、鼠标等输入设备来实现对镜头虚拟相机的控制,但这种方法人工成本高,效率低,不利于大型动画的制作。
鉴于现有镜头方案的上述缺点,本申请实施例提供了一种基于曲线的、高度可配置的镜头解决方案,也就是说,本方案直接使用曲线配置代替现有的“函数类型调整+函数参数调整”的方案,且本方案可以应用于游戏、视频等各类虚拟场景的镜头切换、场景转换中。为便于理解,下述以终端设备200a、终端设备200b和业务服务器100为例进行具体说明。
请一并参见图2a-图2c,是本申请实施例提供的一种镜头处理的场景示意图。该镜头处理场景的实现过程可以在如图1所示的业务服务器100中进行,也可以在终端设备(如图1所示的终端设备200a、终端设备200b、终端设备200c或终端设备200n中的任意一个)中进行,还可以由终端设备和业务服务器共同执行,此处不做限制,本申请实施例以终端设备200a、终端设备200b和业务服务器100共同执行为例进行说明。本申请实施例的动态式曲线配置,需要实现一套从曲线编辑到曲线导出、再到曲线资源使用的完整实现,如图2a所示,设计人员与终端设备200b具有绑定关系,当设计人员需要根据产品需求调节镜头参数时,可以先通过终端设备200b来编辑曲线,具体过程可以为:终端设备200b响应设计人员针对曲线工具的触发操作(例如点击操作),在屏幕上显示曲线编辑界面,请一并参见图3,是本申请实施例提供的一种曲线编辑界面的示意图。如图3所示,在该曲线编辑界面中,在D1区域处可以显示当前所编辑的曲线的名字,设计人员可以根据实际情况对曲线进行命名,例如当前编辑的为“曲线2”,在D2区域处可以显示曲线的图像,设计人员可以根据需要,通过触发位于曲线编辑界面中的工具栏D3或使用鼠标、键盘等输入设备,在曲线上添加、删减、拖拽需要显示的关键点或更改曲线形状。可以理解,编辑得到的曲线可以是任意形状,且完全可控,而无需程序人员使用函数去描述曲线的变化。随后,设计人员可以将编辑好的曲线导出到独立的曲线资源文件中。
其中,在本申请实施例中,曲线的编辑和导出可以借助UE4(Unreal Engine4,虚幻4引擎)的曲线工具来实现。
需要说明的是,在本申请实施例中,镜头参数用于共同指示镜头虚拟相机的方位信息,镜头参数可以包括但不局限于以下几种类型:
(1)镜头焦点(Focus):镜头虚拟相机的聚焦点,即屏幕的中央位置,可以理解,焦点位置通常设置在镜头想主要展现的虚拟模型上,该虚拟模型可以为一个静物,例如建筑物,也可以为一个动态的虚拟角色。
(2)镜头距离(Arm Length,也可以称为臂长):镜头虚拟相机距离镜头焦点的距离。
(3)镜头俯仰角(Pitch):镜头虚拟相机到镜头焦点的连线与水平面形成的角度。
(4)镜头面向角(Yaw):镜头虚拟相机方向和角色朝向形成的角度。
(5)FOV:镜头虚拟相机的视域角度。
(6)最大镜头距离(Max Arm Length):当前模式下,能达到的最大镜头距离。
(7)最小镜头距离(Mix Arm Length):当前模式下,能达到的最小镜头距离。
(8)最大镜头俯仰角(Max Pitch Angle):当前模式下,能达到的最大镜头俯仰角。
(9)最小镜头俯仰角(Mix Pitch Angle):当前模式下,能达到的最小镜头俯仰角。
假设设计人员编辑完成的一条曲线如图2a中的曲线2所示。进一步,终端设备200b可以响应针对配置控件的触发操作,在屏幕上显示曲线参数配置界面,请一并参见图4,是本申请实施例提供的一种曲线参数配置界面的示意图。如图4所示,该曲线参数配置界面的D4区域可以显示工具栏,在该工具栏中可以显示“文件”、“编辑”、“资源”、“帮助”、“保存”、“浏览”等控件,占据大部分界面的为支持设计人员修改的配置栏区域,例如,在“初始化”一栏中,设计人员可以将初始镜头距离(Init Arm Length)设置为“80”,将初始镜头面向角(Init Yaw)设置为“150”,将初始镜头俯仰角(Init Pitch)设置为“-30”。可以理解,镜头参数的初始值在不同的项目中可以有不同的设置,在目标应用刚启动的时候或者业务场景还没有发生任何变化的时候可以用到这些初始值。又例如,在“通用”栏下,可以对镜头距离、镜头俯仰角等镜头参数进行配置,例如设计人员可以设置最大镜头距离、最小镜头距离以及镜头距离调整灵敏度(Arm Length Adjust Factor,针对手游中的双指缩放场景)等镜头参数的数值。而针对需要动态变化的镜头参数,设计人员可以根据需要自行选择希望使用的曲线来表示不同镜头参数之间的动态变化关系。可选的,可以由程序人员提供现成的曲线供设计人员选择,也可以支持设计人员自定义曲线形状,例如,设计人员可以选择图2a中的曲线2作为“镜头竖直方向偏移随镜头距离的变化曲线”。可以理解,在任何需要过渡的情况下(例如不同业务对象逻辑状态之间的切换、特殊镜头处理等),均可以通过配置不同的曲线实现不同的过渡效果,因此可以实现任何设计人员想要的效果,且变化的过程会更加细致。如图2a所示,当设计人员配置完成后,终端设备200b可以响应针对如图4所示的曲线参数配置界面中的“保存”控件的点击操作,将设置好的各种状态下的参数数值以及对应的曲线保存至参数配置文件,进而可以将参数配置文件上传至业务服务器100。
以游戏场景中的镜头变化为例,如图2b所示,终端设备200a和目标用户具有绑定关系,一种MMORPG类游戏中的数据交互过程可如下:当目标用户(即玩家)打开目标应用A1(具体可以为游戏应用)时,终端设备200a可以响应针对目标应用A1的触发操作(如点击操作),通过目标应用A1连接业务服务器100发起登录请求,随后业务服务器100发起身份数据验证查询,完成数据查询后返回认证结果,若通过身份校验,则业务服务器100继续查询并返回账号状态数据(例如角色、等级、属性、上次登录所在场景服务器及坐标等信息),进而可以将账号状态数据下发给对应场景服务器(为便于理解,此处的业务服务器100与场景服务器是分别独立部署的服务器),同时将目标用户上线通知广播给该目标用户的好友以及玩家在线状态监听(控制断线重连及断线超时)。进一步,业务服务器100接收到认证结果后与对应场景服务器建立连接,目标用户成功登录到场景服务器,从而可以显示如图2b所示的镜头画面,为了方便后续的区分,可以将该镜头画面称为当前镜头画面,如图2b所示,该当前镜头画面中可以显示上述目标用户操纵的角色C,当前的等级,当前执行的任务,当前拥有的技能,和其他角色(例如角色A和角色B)的对话消息等等。场景服务器开始向日志中写入所有用户行为日志,同时将目标用户相关数据或查询请求发送给业务服务器100。
为了方便理解,本申请实施例以镜头竖直方向偏移随镜头距离的变化为例进行说明。如上述所说,设计人员选择曲线2作为“镜头竖直方向偏移随镜头距离的变化曲线”,由于保存在曲线资源文件中的曲线的横纵坐标本身是不指定任何参数的,横纵坐标轴所代表的含义是通过上述配置过程与程序进行约定的,因而此时曲线2对应的x轴(即横轴)用于表示镜头距离,y轴(即纵轴)用于表示镜头焦点在竖直方向上的偏移。如图2b-图2c所示,业务服务器100可以获取当前镜头画面,进而检测当前镜头画面中所触发的目标事件是否满足镜头参数更新条件,若该目标事件满足镜头参数更新条件,则可以将当前镜头画面更新为更新镜头画面。例如,假设初始镜头焦点位于角色C身上的某个部位(如头部或肩部),设计人员希望实现的一种镜头效果是:当镜头距离发生变化时,镜头焦点会在竖直方向上产生偏移,如图2b中的当前镜头画面所示,此时角色C处于走路状态,镜头距离较大,当前镜头画面对应的镜头焦点位于焦点A,且焦点A位于角色C的胸部,业务服务器100可以直接保存当前镜头画面对应的镜头参数作为初始镜头参数;若此时镜头拉近,则镜头距离发生变化,会触发一个目标事件发送至业务服务器100进行检测,如图2c所示,当业务服务器100检测到该目标事件满足镜头参数更新条件时,可以在参数配置文件中匹配到走路状态下与上述目标事件相关联的目标镜头曲线,即曲线2,进一步,可以根据初始镜头参数以及曲线2所表示的镜头竖直方向偏移与镜头距离的变化关系,计算得到上述目标事件对应的更新镜头参数,进而可以将更新镜头参数发送至终端设备200a,终端设备200a可以根据更新镜头参数调整镜头虚拟相机的方位信息,进而基于调整后的镜头虚拟相机渲染用于展示上述目标事件的更新镜头画面,如图2c中的更新镜头画面所示,当镜头拉近时,镜头焦点从此前角色C的胸部位置(即焦点A)逐渐移动到角色C的头部位置(即焦点B),即实现了镜头竖直方向偏移随镜头距离变化的过程。
其中,上述检测目标事件是否满足镜头参数更新条件的过程可以参见后续图5所对应实施例中的步骤S102,这里不再进行赘述。
可以理解,本申请实施例中可以配置一种或多种曲线来实现同一个镜头变换过程中的过渡效果,例如在角色C走路过程中,除了镜头焦点在竖直方向的偏移会跟随镜头距离变化,还可以配置另外的曲线,使得镜头焦点在水平方向的偏移可以随着镜头面向角发生变化,即不同的镜头参数均可能对最终生成的更新镜头参数产生影响,由于过渡效果在产品上的表示形式及其丰富,因此这里不做过多赘述。
可以理解,上述过程还适用于视频制作的场景,此时目标应用A1可以为视频编辑应用。在视频编辑(尤其是动画制作)的过程中,为了将电影拍摄手法融入动画制作中,提高动画的观赏性以及降低设计人员的工作量,首先,可以按照剧本的要求构建动画中所需要的虚拟场景(包括除了虚拟动画角色外的一切场景物品、动物、植物、地形等),此外,还需要实现虚拟场景内光线的变化、天气的变化,如白天、黑夜、晴天、下雨、下雪等等。其次,需要构建虚拟动画角色,例如构建虚拟动画角色的外形、衣着、声音、动作、面部表情等等,即构建虚拟动画角色的言行举止。进一步,可以利用镜头虚拟相机对虚拟场景以及虚拟角色进行拍摄,得到实时更新的镜头画面,这个过程需要考虑真实摄像机的模拟,因此需要设置镜头焦点、镜头距离等相关镜头参数,设计人员可以通过对曲线的编辑和配置来设置想要的镜头参数,具体过程可参见上述图2a所对应实施例中的相关描述。如图2b中的当前镜头画面所示,假设目标用户(即设计人员)构建了一个虚拟场景以及角色C,则目标用户可以通过终端设备200a上的目标应用A1控制角色C进行移动,同理,业务服务器100也可以获取当前镜头画面,并检测当前镜头画面中所触发的目标事件是否满足镜头参数更新条件,当目标事件满足镜头参数更新条件时,可以控制镜头虚拟相机进行移动,并将当前镜头画面更新为更新镜头画面,具体过程可以参见上述图2b-图2c所对应实施例中的相关描述。
需要说明的是,本申请实施例提供的镜头参数的动态式曲线配置是一种所见即所得的配置,也就是说,在游戏或视频开发过程中,开发人员可以在玩游戏或观看视频的同时对镜头参数进行调整,调整后的镜头参数可以很快反映到画面中,这种方式在开发工程中的工具链层面具有积极意义。
上述可知,本申请实施例充分暴露了镜头参数,给了设计人员极大的调节空间,且本申请实施例的镜头参数不是现有方案中的固定数值式的设定,而是支持了随影响变量的动态式变化曲线,通过采用曲线式的配置方法,支持设计人员自定义曲线形状,无论设计人员想要什么样的过渡效果,都可以通过自行调整曲线的方式实现,而不需要程序再提供额外的支持,并且可以在产品运行过程中实时调整,可配置性高、可拓展性足,因此,可以快速实现多样化的镜头规则,且可以充分满足产品的定制化需求。
请参见图5,图5是本申请实施例提供的一种镜头处理方法的流程示意图。该方法可以由终端设备(例如,上述图1所示的终端设备)或业务服务器(例如,上述图1所示的业务服务器100)执行,也可以由终端设备和业务服务器共同执行。为便于理解,本实施例以该方法由上述终端设备执行为例进行说明。其中,该镜头处理方法至少可以包括以下步骤S101-步骤S104:
步骤S101,在目标应用中获取当前镜头画面;
具体的,终端设备打开目标应用后,可以在其屏幕上显示目标应用的显示界面,当目标用户所控制的业务对象(可以包括游戏中玩家所扮演的虚拟角色或视频中的虚拟角色)进入相应的业务场景后,会在显示界面中显示当前镜头画面。可以理解,当前镜头画面会根据当前镜头虚拟相机的运动而产生变化,例如,镜头虚拟相机的镜头焦点始终位于上述业务对象的身上,当该业务对象向前移动时,镜头虚拟相机也会跟随该业务对象向前移动,进而会将该镜头虚拟相机拍摄范围内的业务场景作为一帧帧的镜头画面依次显示在显示界面中。其中,目标应用可以包括但不限于游戏应用和视频编辑应用。业务场景是指包括除了业务对象外的一切场景物品、动物、植物、地形等的虚拟场景。
步骤S102,若当前镜头画面中所触发的目标事件满足镜头参数更新条件,则获取与目标事件相关联的目标镜头曲线;目标镜头曲线是采用动态曲线进行配置的,目标镜头曲线用于表示具有不同镜头参数类型的镜头参数之间的动态变化关系,镜头参数用于共同指示镜头虚拟相机的方位信息;
具体的,当前镜头画面中所触发的目标事件可以由目标用户的多种操作直接或间接地触发,该目标事件具体可以为在游戏过程或视频编辑过程中针对目标业务场景或业务对象的触发事件,其中,目标业务场景可以理解为特定的业务场景,如房间场景,当目标用户控制业务对象进入某个特定的业务场景时,需要触发相应的目标事件。若当前镜头画面中所触发的目标事件满足镜头参数更新条件,则终端设备可以从参数配置文件中获取与目标事件相关联的目标镜头曲线。
此外,如上述图2a-图2c所对应实施例中描述的配置过程,设计人员可以采用自己编辑的动态曲线或选用程序提供的动态曲线进行参数配置,每个目标事件可以对应一组参数配置,且针对每个目标事件所配置的镜头曲线的数量可以为一条或多条,因此将配置好的参数和动态曲线保存至参数配置文件后,后续可以通过目标事件与曲线参数之间的关联关系匹配到相应的一条或多条动态曲线作为目标镜头曲线。例如,在曲线编辑界面中,终端设备可以响应针对初始曲线的编辑操作(例如添加关键点、拖拽关键点、拖拽线条等),生成一条或多条动态曲线,进而可以在曲线参数配置界面中,响应针对一条或多条动态曲线的选择操作,将所选择的动态曲线确定为与目标事件相关联的目标镜头曲线,具体过程可以参见上述图2a-图2c所对应实施例中的相关描述,这里不再进行赘述。
其中,上述目标镜头曲线可以用于表示具有不同镜头参数类型的镜头参数之间的动态变化关系,或者说可以用于描述镜头的变化效果,例如,动态曲线1可以表示镜头视域角度随镜头距离的变化关系,动态曲线2可以表示镜头俯仰角随镜头距离的变化关系。镜头参数的具体类型可以参见上述图2a-图2c所对应实施例中的举例,其中,镜头参数用于共同指示镜头虚拟相机的方位信息,例如可以表示镜头虚拟相机的位置、朝向、运动速度等。
需要说明的是,本申请实施例支持的有以下曲线,后续可以很方便地根据设计需求,增加新的自定义变化曲线:
(1)镜头焦点水平偏移随镜头面向角的变化;
(2)镜头焦点位置随镜头距离的变化;
(3)镜头FOV随镜头距离的变化;
(4)最大俯仰角和最小俯仰角随镜头距离的变化;
(5)镜头焦点竖直偏移随镜头俯仰角的变化。
步骤S103,根据当前镜头画面对应的初始镜头参数以及目标镜头曲线,生成目标事件对应的更新镜头参数;
具体的,当前镜头画面是基于初始镜头曲线渲染得到的,因此终端设备可以从该初始镜头曲线中读取当前镜头画面对应的初始镜头参数,或者,可以直接保存当前镜头画面的镜头参数作为初始镜头参数,同时,还可以从上述目标镜头曲线中读取目标事件对应的目标镜头参数,进而可以根据配置的相应的影响因素(例如当前插值比例、镜头转换参数等)对上述初始镜头参数以及目标镜头参数进行曲线插值,从而生成目标事件对应的更新镜头参数。其中,曲线插值的过程具体可以为线性插值的计算过程,或者可以采用其它插值方式,例如最近邻插值、双线性插值、高阶插值等算法,本申请对此不做限制。
此外,针对不同应用场景下生成目标事件对应的更新镜头参数的过程可能会存在差异,具体可以参见下述图6所对应实施例中的步骤S203、图7所对应实施例中的步骤S303以及图8所对应实施例中的步骤S403。
步骤S104,基于更新镜头参数,调整镜头虚拟相机的方位信息,基于调整后的镜头虚拟相机渲染用于展示目标事件的更新镜头画面。
具体的,可以根据上述步骤S103计算得到的更新镜头参数,调整镜头虚拟相机的方位信息(例如位置和朝向等),同时可以根据更新镜头参数对镜头参数矩阵进行更新,并将更新后的镜头参数矩阵输入渲染层,进而可以在渲染层中根据更新后的镜头参数矩阵渲染用于展示目标事件的每一帧更新镜头画面。其中,镜头参数矩阵(也可以称为ViewMatrix)是基于镜头参数组成的矩阵,在渲染的过程中需要用到镜头参数矩阵进行矩阵变换,最终可以把镜头参数的变化呈现在更新镜头画面中。
由于在目标应用中涉及到镜头变化的场景很多,为了便于理解和说明,后续的实施例会将当前镜头画面触发目标事件的过程分为三种应用场景,为便于区分,可以将镜头参数更新条件分为第一镜头参数更新条件、第二镜头参数更新条件以及第三镜头参数更新条件。
可选的,针对当前镜头画面触发特殊镜头处理的场景,请参见图6,是本申请实施例提供的另一种镜头处理方法的流程示意图。如图6所示,该镜头处理方法可以包括以下步骤:
步骤S201,在目标应用中获取当前镜头画面;
该步骤的具体过程可以参见上述图5所对应实施例中的步骤S101,这里不再进行赘述。
步骤S202,若当前镜头画面中所触发的目标事件满足第一镜头参数更新条件,则获取与目标事件相关联的目标镜头曲线;
具体的,若当前镜头画面中所触发的目标事件属于特殊镜头触发事件,则可以确定该目标事件满足第一镜头参数更新条件,进而可以从参数配置文件中获取与该目标事件相关联的目标镜头曲线。其中,上述特殊镜头,是跟业务对象逻辑状态下的镜头(也可称为通用逻辑镜头)相对应的、需要特殊处理的镜头的统称。业务对象的走、跑、跳、游泳等普通逻辑状态下,镜头为通用逻辑镜头;除此之外为特殊镜头。可以理解,除了上述列举的走、跑、跳、游泳等业务对象逻辑状态,业务对象逻辑状态的类型还可以根据实际需要进行定义。
其中,上述特殊镜头的触发方式为事件驱动,包括但不限于动画事件、碰撞事件、业务逻辑事件等。动画事件是指播放过场动画的事件,过场动画(也可以称为转场动画)是一种常见的镜头切换方式。碰撞事件是指业务对象进入某个特定区域的事件,当业务对象进入该特定区域时,会触发一个特殊镜头触发事件,例如,镜头虚拟相机跟随业务对象进入一个房间,可以在该房间中放一个盒子(即一个触发器),进而检测镜头虚拟相机有没有撞到盒子,如果撞到了,则表示当前镜头画面会触发一个特殊镜头处理,进而可以从参数配置文件中获取与该碰撞事件相关联的目标镜头曲线,该目标镜头曲线在镜头画面上的表现效果例如可以为镜头虚拟相机扫视该房间。而业务逻辑事件可以理解为业务底层要运行某些逻辑时需要触发一些特殊镜头加以表现,此时可以通过事件的形式发出处理请求,例如,游戏中的每种技能都可以通过不同的曲线配置来实现相应的镜头变化效果,终端设备可以将这些配置保存在参数配置文件中,在当前镜头画面中的业务对象使用某种技能时,可以触发该技能对应的业务逻辑事件(即目标事件),终端设备可以快速地从参数配置文件中获取为该业务逻辑事件所配置的目标镜头曲线。例如业务对象使用技能1时,镜头虚拟相机会基于相应的镜头曲线移动到某个位置;业务对象使用技能2时,镜头虚拟相机会基于相应的镜头曲线改变其朝向。
步骤S203,根据当前镜头画面对应的初始镜头参数以及目标镜头曲线,生成目标事件对应的更新镜头参数;
具体的,当前镜头画面是基于初始镜头曲线渲染得到的,因此可以从上述初始镜头曲线中读取当前镜头画面对应的初始镜头参数(StartParam,例如镜头焦点、镜头距离、旋转(包括镜头俯仰角和镜头面向角)、FOV等),或者,大部分情况下也可以在处理前直接保存当前镜头画面的镜头参数作为初始镜头参数,同时,可以从上述目标镜头曲线中读取目标事件对应的目标镜头参数(TargetParam)。进一步,在每一帧的更新中,可以获取开始时间戳(StartTime)、当前时间戳(CurrentTime)以及事件持续时长(TotalTime),进而根据开始时间戳、当前时间戳以及事件持续时长计算得到当前时间比例(TimeFactor),其中,上述开始时间戳是指当前镜头画面中触发目标事件时的时间戳。进一步,可以根据当前时间比例,从与目标事件相关联的过渡曲线中读取当前插值比例(LerpFactor),进而可以根据当前插值比例对初始镜头参数和目标镜头参数进行曲线插值,最终生成目标事件对应的更新镜头参数(CurrentParam)。其中,上述过渡曲线同样可以采用动态曲线进行配置,且过渡曲线用于表示镜头画面随时间的变化效果,也就是说,当前插值比例是与时间有关的函数,例如,过渡曲线可以表示镜头在第1秒-第2秒之间的变化慢一点,在第2秒-第10秒之间的变化快一点,因此通过过渡曲线可以计算出从通用逻辑镜头切换到特殊镜头过程中的每一帧镜头画面所对应的镜头参数。
其中,过渡曲线的编辑和配置过程与图2a-图2c所对应实施例中的描述一致,这里不再进行赘述。
上述可知,对于特殊镜头,需要配置与目标事件相关联的目标镜头曲线以及针对变化过程的过渡曲线。
上述过程的计算公式可如下:
TimeFactor=(CurrentTime StartTime)/TotalTime;//计算当前时间比例TimeFactor;
LerpFactor=ReadParamData(TimeFactor);//从目标事件配置的过渡曲线中根据当前时间比例TimeFactor读取当前插值比例LerpFactor;
CurrentParam=FMath::Lerp(StartParam,TargetParam,LerpFactor);//利用插值计算得到更新镜头参数CurrentParam;
步骤S204,基于更新镜头参数,调整镜头虚拟相机的方位信息,基于调整后的镜头虚拟相机渲染用于展示目标事件的更新镜头画面;
该步骤的具体过程可以参见上述图5所对应实施例中的步骤S104,这里不再进行赘述。
步骤S205,当目标事件执行结束时,将调整后的镜头虚拟相机恢复到初始逻辑动态参数以及初始镜头参数所共同指示的相机方位。
具体的,可以获取当前镜头画面对应的初始逻辑动态参数以及初始镜头参数,将初始逻辑动态参数以及初始镜头参数存储至相应的缓存区,当目标事件执行结束时,可以从缓存区中提取上述初始逻辑动态参数以及初始镜头参数,进而将调整后的镜头虚拟相机恢复到该初始逻辑动态参数以及初始镜头参数所共同指示的相机方位。其中,初始逻辑动态参数是指一些会动态变化的逻辑参数,例如若业务对象从慢跑状态切换到快跑状态,则此时的初始逻辑动态参数为慢跑逻辑状态。例如,业务对象使用技能期间,镜头会特殊移动到某个位置,或者某个方向,或者某个焦点;当技能结束之后,镜头会回复到初始状态。
可选的,针对业务对象逻辑状态切换的场景,请参见图7,是本申请实施例提供的又一种镜头处理方法的流程示意图。如图7所示,该镜头处理方法可以包括以下步骤:
步骤S301,在目标应用中获取当前镜头画面;
该步骤的具体过程可以参见上述图5所对应实施例中的步骤S101,这里不再进行赘述。
步骤S302,若当前镜头画面中所触发的目标事件满足第二镜头参数更新条件,则获取与目标事件相关联的目标镜头曲线;
具体的,若当前镜头画面对应的当前业务对象逻辑状态与当前镜头画面中所触发的目标事件对应的目标业务对象状态逻辑状态不相同,则确定上述目标事件满足第二镜头参数更新条件,进而可以从参数配置文件中获取与上述目标事件相关联的目标镜头曲线。其中,业务对象逻辑状态是指业务对象所处的状态,例如,当前镜头画面中业务对象处于走路状态,即当前镜头画面对应的当前业务对象逻辑状态为走路状态,此时若目标用户通过相关操作希望将业务对象从走路状态切换为跑步状态,则会触发一个目标事件,此时目标事件对应的目标业务对象状态逻辑状态即为跑步状态,终端设备进而可以快速地从参数配置文件中获取跑步状态下对应的动态曲线作为目标镜头曲线。
步骤S303,根据当前镜头画面对应的初始镜头参数以及目标镜头曲线,生成目标事件对应的更新镜头参数;
具体的,当前镜头画面是基于初始镜头曲线渲染得到的,首先可以根据当前业务对象逻辑状态,从上述初始镜头曲线中读取当前镜头画面对应的初始镜头参数(或者直接保存当前镜头画面的镜头参数作为初始镜头参数),进而可以根据目标业务对象逻辑状态,从目标镜头曲线中读取中间参数,然后根据中间参数生成目标事件对应的目标镜头参数,其中,中间参数是指至少两个互相影响的镜头参数,也就是说,目标镜头参数是根据目标业务对象逻辑状态和其它相关的影响因素综合计算得到的结果。进一步,在每一帧的更新中,可以获取当前业务对象逻辑状态与目标业务对象逻辑状态之间的镜头转换参数,最终可以根据镜头转换参数(TransferParam)对初始镜头参数(StartParam)以及目标镜头参数(TargetParam)进行曲线插值,生成目标事件对应的更新镜头参数(CurrentParam)。例如,业务对象从走路状态切换为跑步状态时,走路状态下对应的动态曲线S1可作为初始镜头曲线,并从中读取出初始镜头参数;跑步状态下对应的动态曲线S2可作为目标镜头曲线,可以基于该目标镜头曲线计算得到目标镜头参数,再从参数配置文件中读取由走路状态切换为跑步状态的镜头转换参数,即可计算得到最终的更新镜头参数。
上述过程的计算公式可如下:
CurrentParam=FMath::Lerp(StartParam,TargetParam,TransferParam);
其中,上述镜头转换参数可能与时间相关,也可能与当前业务对象逻辑状态相关,是一个可能受很多因素影响的复杂的计算结果。因此,设计人员除了需要配置每种业务对象逻辑状态下的动态变化曲线,还需要配置业务对象逻辑状态切换下的镜头转换参数。
步骤S304,基于更新镜头参数,调整镜头虚拟相机的方位信息,基于调整后的镜头虚拟相机渲染用于展示目标事件的更新镜头画面。
该步骤的具体过程可以参见上述图5所对应实施例中的步骤S104,这里不再进行赘述。
可选的,针对相同业务对象逻辑状态下的场景,请参见图8,是本申请实施例提供的又一种镜头处理方法的流程示意图。如图8所示,该镜头处理方法可以包括以下步骤:
步骤S401,在目标应用中获取当前镜头画面;
该步骤的具体过程可以参见上述图5所对应实施例中的步骤S101,这里不再进行赘述。
步骤S402,若当前镜头画面中所触发的目标事件满足第三镜头参数更新条件,则获取与目标事件相关联的目标镜头曲线;
具体的,若当前镜头画面对应的业务对象逻辑状态与该当前镜头画面中所触发的目标事件对应的业务对象逻辑状态相同,且业务对象的动态信息发生变化,则可以确定上述目标事件满足第三镜头参数更新条件,进而可以从参数配置文件中获取与该目标事件相关联的一条或多条目标镜头曲线。其中,上述动态信息用于表示在同一种逻辑状态下的业务对象的运动状态,例如跑步状态下,业务对象的移动方向、移动速度等。可以理解,虽然业务对象逻辑状态没有发生变化,但是每种业务对象逻辑状态下也可以基于功能的需要设计细分的镜头规则,以跑步状态为例进行说明,请一并参见图9a-图9b,是本申请实施例提供的另一种镜头处理的场景示意图。图9a可以是上述图4中的曲线参数配置界面的局部示意图,如图9a所示,当业务对象处于跑步状态时,根据业务对象的移动方向、移动速度等可以配置一组曲线,例如进入冲刺状态时的镜头曲线、冲刺状态中的镜头曲线、结束冲刺状态的镜头曲线等等,假设设计人员根据产品需求自定义了三条曲线,分别为自定义曲线1、自定义曲线2、自定义曲线3,且将自定义曲线1作为进入冲刺状态时的镜头曲线,自定义曲线1的形状可以参见图9b。设计人员希望的镜头效果为:当业务对象快速跑动时,镜头焦点会移动到位于业务对象前方的某个目标点;业务对象改变移动方向时,镜头虚拟相机会随之偏移,例如业务对象向左跑时,镜头虚拟相机会向左偏移;当业务对象结束快速跑动时,镜头焦点会回复到业务对象身上。如图9b所示,自定义曲线1的横轴可以用于表示目标点位置距离(即镜头虚拟相机距离目标点的距离),纵轴可以用于表示镜头过渡速度(即镜头虚拟相机的运动速度),则当前镜头画面中的业务对象进入冲刺状态时,业务对象的移动速度发生了变化,因此会触发相应的目标事件,终端设备进而可以根据该目标事件,从参数配置文件中获取到自定义曲线1作为目标镜头曲线。
步骤S403,根据当前镜头画面对应的初始镜头参数以及目标镜头曲线,生成目标事件对应的更新镜头参数;
具体的,当前镜头画面是基于初始镜头曲线渲染得到的,首先可以从该初始镜头曲线中读取当前镜头画面对应的初始镜头参数(或者直接保存当前镜头画面的镜头参数作为初始镜头参数),并从目标镜头曲线中读取目标事件对应的目标镜头参数。进一步,在每一帧的更新中,可以根据变化后的动态信息,从目标镜头曲线中读取与变化后的动态信息相匹配的中间参数,进而可以根据中间参数对初始镜头参数和目标镜头参数进行曲线插值,最终生成目标事件对应的更新镜头参数,也就是说,当业务对象逻辑状态无切换时,可以根据其他因素进行插值,其他因素包括但不限于当前的镜头俯仰角、当前的业务对象移动方向与镜头虚拟相机朝向之间的夹角等等。其中,中间参数是指至少两个互相影响的镜头参数。需要说明的是,此处的初始镜头曲线与目标镜头曲线是相同的一组曲线。
例如,基于上述步骤S402中的描述,请再次参见图9a-图9b,假设一开始镜头焦点位于业务对象身上,称为焦点A,当业务对象进入冲刺状态时,镜头焦点需要逐渐移动到位于该业务对象前方的某个目标点,称为焦点B,则终端设备在获取到初始镜头参数(与焦点A相对应)以及目标镜头参数(与焦点B相对应)后,可以根据业务对象的移动速度的变化,从自定义曲线1中读取到镜头过渡速度、目标点位置距离等中间参数,进而可以计算得到更新镜头参数,使得镜头焦点从焦点A最终移动到焦点B。
步骤S404,基于更新镜头参数,调整镜头虚拟相机的方位信息,基于调整后的镜头虚拟相机渲染用于展示目标事件的更新镜头画面。
该步骤的具体过程可以参见上述图5所对应实施例中的步骤S104,这里不再进行赘述。
本申请实施例可以通过在目标应用中获取当前镜头画面,进而检测当前镜头画面中所触发的目标事件是否满足镜头参数更新条件,当满足镜头参数更新条件时,可以进一步获取与目标事件相关联的目标镜头曲线,从而可以根据当前镜头画面对应的初始镜头参数以及目标镜头曲线,生成目标事件对应的更新镜头参数,最终可以基于该更新镜头参数调整镜头虚拟相机的方位信息,从而得到用于展示目标事件的更新镜头画面。在本申请实施例中,由于目标镜头曲线是采用动态曲线进行配置的,且目标镜头曲线可以表示具有不同镜头参数类型的镜头参数之间的动态变化关系,因此本申请通过采用基于动态曲线的配置方式来调节镜头参数,而不是采用现有方案中固定数值式的参数设定,可以快速实现目标应用的多样化镜头规则,充分满足产品的定制化需求,且无需程序再提供额外的支持,可以极大节省程序人员的研发工作,从而提升研发效率。
请参见图10,是本申请实施例提供的又一种镜头处理方法的流程示意图。如图10所示,以计算机设备执行为例,该镜头处理方法可以包括以下步骤:
步骤S501,计算机设备判断当前是否有特殊镜头;
具体的,计算机设备首先需要判断当前是否有特殊镜头(例如技能、过场动画等),由于本申请实施例中的特殊镜头触发方式为事件驱动,因此可以使用一个镜头管理模块来处理与特殊镜头相关的事件,在目标应用中,将一块动态的缓存区分配给镜头管理模块,当镜头管理模块接收到特殊镜头触发事件时,可以确定当前存在特殊镜头,即当前镜头画面中所触发的目标事件满足镜头参数更新条件,随后可以进入下述步骤S502的处理流程。若当前没有特殊镜头,则进入下述步骤S503的处理流程。
步骤S502,计算机设备对特殊镜头进行处理,得到更新镜头画面;
具体的,在特殊镜头处理流程期间,计算机设备首先需要确认初始镜头参数(镜头焦点,镜头距离,旋转,FOV等)和目标镜头参数。之后在每一帧的更新中,计算机设备可以根据时间计算当前和目标镜头参数的插值比例,然后根据这个插值比例,从特殊镜头配置的曲线(即目标镜头曲线)中提取镜头焦点、镜头距离、FOV等各项参数,最后进行曲线插值,计算出当前的更新镜头参数,并将这些更新镜头参数应用到镜头本身,最终得到更新镜头画面。具体过程可以参见上述图6所对应实施例中关于针对当前镜头画面触发特殊镜头处理的场景下的相关描述,这里不再进行赘述。
需要说明的是,特殊镜头处理流程结束后需要将镜头虚拟相机回复到初始状态,具体过程可以为:镜头管理模块接收到特殊镜头触发事件后,首先获取当前镜头画面对应的初始逻辑动态参数以及初始镜头参数,进而可以将上述初始逻辑动态参数以及初始镜头参数进行入栈,存储至上述缓存区,以便之后回复初始状态,同时进入特殊镜头处理流程,当目标事件执行结束时,即特殊镜头处理流程结束之后,再将上述初始逻辑动态参数以及初始镜头参数进行出栈,从上述缓存区中提取该初始逻辑动态参数以及初始镜头参数,并将调整后的镜头虚拟相机恢复到该初始逻辑动态参数以及初始镜头参数所共同指示的相机方位,从而回复为初始状态。状态回复的具体方法也可以采用前述图6所对应实施例中的步骤S203的曲线插值方法,这里不再赘述。
以技能为例,在技能动画蒙太奇上添加如前述的特殊镜头触发事件,那么当业务对象使用技能,技能动画播放到这个特殊镜头触发事件触发的时候,就会触发镜头管理模块的入栈操作,同时进入特殊镜头处理流程。当技能播放完毕的时候,再根据时间,或者特殊镜头结束事件,来触发镜头管理模块的出栈操作,还原到镜头的初始通用逻辑。这样做的效果就是,业务对象使用技能期间,镜头会特殊移动到某个位置,或者某个方向,或者某个焦点;当技能结束之后,回复常态。
步骤S503,计算机设备判断当前是否有镜头闲置;
具体的,如果当前没有特殊镜头,则会判断当前是否有镜头闲置,若当前镜头画面中所触发的目标事件不满足镜头参数更新条件,即当前不存在业务对象逻辑状态之间的切换,或者,同一业务对象逻辑状态下,业务对象的动态信息没有发生变化,则可以确定当前有镜头闲置。其中,镜头闲置是通用镜头逻辑下的一种状态,包含但不限于角色(即业务对象)静止且玩家(即目标用户)没有操作、播放过场动画等。如果有镜头闲置,则本步骤处理完毕。如果没有镜头闲置,则进入下述步骤S504的处理流程。
步骤S504,计算机设备对通用逻辑镜头进行处理,得到更新镜头画面;
具体的,可以读取通用逻辑镜头对应的曲线(也可以称为默认镜头曲线),通用逻辑镜头对应的曲线不仅要配置各种通用逻辑状态(即业务对象逻辑状态,例如走,跑,跳,游泳等)下的镜头参数(焦点,臂长,旋转,FOV等),而且还要配置这些通用逻辑状态切换下的镜头转换参数。当通用逻辑每帧更新的时候,可以根据目标的通用逻辑状态去读取相应的默认镜头曲线参数(即目标镜头曲线),作为目标镜头参数,同时获取当前的镜头参数作为初始镜头参数,如果有状态转换,则一并读取镜头转换参数,最终可以利用插值计算出当前状态下的更新镜头参数,并将这些更新镜头参数应用到镜头本身,最终得到更新镜头画面。具体过程可以参见上述图7所对应实施例中关于针对业务对象逻辑状态切换的场景下的相关描述,这里不再进行赘述。
此外,针对相同业务对象逻辑状态下的场景,计算机设备同样需要从当前通用逻辑状态配置的镜头曲线中读取出目标镜头参数,同时可以获取当前的镜头参数作为初始镜头参数,然后在每帧更新的时候,根据相关的影响因素(如当前的镜头俯仰角)进行插值计算,得到最终的更新镜头参数,并将这些更新镜头参数应用到镜头本身,最终得到更新镜头画面。具体过程可以参见上述图8所对应实施例中关于针对相同业务对象逻辑状态的场景下的相关描述,这里不再进行赘述。
步骤S505,计算机设备判断调整后的镜头虚拟相机是否与地形产生碰撞;
在本申请实施例中,计算机设备还需要处理镜头虚拟相机与环境的碰撞。一般业务场景中都会充满了各种几何物体和高低起伏的地形。镜头虚拟相机不能穿透这些物体,否则会造成穿帮,所以需要判断调整后的镜头虚拟相机和这些物体的碰撞,并调整镜头臂长(即镜头距离)。具体的,计算机设备可以连接镜头焦点与调整后的镜头虚拟相机,构造目标射线,进而在业务场景中进行射线检测,从而检测出目标射线与业务场景中的地形之间的位置关系。若该位置关系为相交关系,则可以确定调整后的镜头虚拟相机与地形产生碰撞关系,进而可以根据碰撞关系获取调整后的镜头虚拟相机与地形之间的第一碰撞点。进一步,可以根据该第一碰撞点,缩短更新镜头参数中的臂长,得到优化镜头参数。
步骤S506,计算机设备判断调整后的镜头虚拟相机是否与几何物体产生碰撞;
具体的,计算机设备可以将调整后的镜头虚拟相机模拟为一个半径很小的虚拟球体,并利用该虚拟球体与业务场景中的几何物体进行碰撞检测,该碰撞检测的过程需要涉及到复杂的物理计算。若调整后的镜头虚拟相机与几何物体产生碰撞关系,则需要进一步对虚拟球体进行嵌入检测,进入下述步骤S507的处理流程。
步骤S507,计算机设备对调整后的镜头虚拟相机进行嵌入检测;
具体的,当调整后的镜头虚拟相机与几何物体产生碰撞关系时,可以获取调整后的镜头虚拟相机与几何物体之间的第二碰撞点,进而可以根据该第二碰撞点与虚拟球体构造嵌入检测向量,同时根据第二碰撞点构造碰撞点法向量,然后通过向量的点乘计算获取嵌入检测向量与碰撞点法向量之间的向量夹角,若向量夹角为钝角,则可以确定调整后的镜头虚拟相机与几何物体产生嵌入关系;否则没有产生嵌入关系。上述根据第二碰撞点和虚拟球体中心点相对位置判断虚拟球体是否嵌入内部的计算公式如下:
IsInner=VectorDot((CameraCenter ColliisonPoint),CollisionNormal)<0;
其中,CameraCenter为虚拟球体中心点所在的位置,ColliisonPoint为第二碰撞点所在的位置,CollisionNormal为碰撞点法向量。
若上述调整后的镜头虚拟相机与几何物体产生嵌入关系,则可以根据调整后的镜头虚拟相机与几何物体之间的嵌入点,缩短更新镜头参数中的臂长,得到优化镜头参数。
步骤S508,计算机设备整合镜头数据并更新至渲染层。
具体的,镜头数据可以包括更新镜头参数和优化镜头参数,上述流程处理完毕后,若镜头与环境没有产生碰撞,则可以直接根据更新镜头参数对镜头参数矩阵进行更新,并将更新后的镜头参数矩阵输入渲染层,得到更新镜头画面;若镜头与环境产生碰撞,则计算机设备可以整合得到的优化镜头参数,根据优化镜头参数再次调整镜头虚拟相机的方位信息,并根据优化镜头参数对镜头参数矩阵进行更新,然后将更新后的镜头参数矩阵更新至渲染层,进一步对上述更新镜头画面进行优化。至此,整个镜头处理流程结束。
本申请实施例中,由于目标镜头曲线是采用动态曲线进行配置的,且目标镜头曲线可以表示具有不同镜头参数类型的镜头参数之间的动态变化关系,因此本申请通过采用基于动态曲线的配置方式来调节镜头参数,而不是采用现有方案中固定数值式的参数设定,可以帮助产品快速实现一套完备的镜头规则。同时,本申请实施例基于曲线的实现,以及高度的参数暴露,可以通过设计人员自己的参数调节来满足绝大多数的设计需求,并基于曲线不断对镜头画面进行更新和优化,极大地节省了程序人员的研发工作,可以降低研发成本,提高研发效率。此外,本申请实施例也具有良好的可扩展性,方便开发者在本申请实施例的基础上,添加自己所需的内容。
请参见图11,是本申请实施例提供的一种镜头处理装置的结构示意图。上述镜头处理装置可以是运行于计算机设备的一个计算机程序(包括程序代码),例如该镜头处理装置为一个应用软件;该装置可以用于执行本申请实施例提供的镜头处理方法中的相应步骤。如图11所示,该镜头处理装置1可以包括:第一获取模块11、第二获取模块12、参数生成模块13以及更新模块14;
第一获取模块11,用于在目标应用中获取当前镜头画面;
第二获取模块12,用于若当前镜头画面中所触发的目标事件满足镜头参数更新条件,则获取与目标事件相关联的目标镜头曲线;目标镜头曲线是采用动态曲线进行配置的,目标镜头曲线用于表示具有不同镜头参数类型的镜头参数之间的动态变化关系,镜头参数用于共同指示镜头虚拟相机的方位信息;
其中,上述镜头参数更新条件包括第一镜头参数更新条件;
上述第二获取模块12,具体用于若当前镜头画面中所触发的目标事件属于特殊镜头触发事件,则确定目标事件满足第一镜头参数更新条件;从参数配置文件中获取与目标事件相关联的目标镜头曲线;
其中,上述镜头参数更新条件包括第二镜头参数更新条件;
上述第二获取模块12,具体用于若当前镜头画面对应的当前业务对象逻辑状态与当前镜头画面中所触发的目标事件对应的目标业务对象状态逻辑状态不相同,则确定目标事件满足第二镜头参数更新条件;从参数配置文件中获取与目标事件相关联的目标镜头曲线;
其中,上述镜头参数更新条件包括第三镜头参数更新条件;
上述第二获取模块12,具体用于若当前镜头画面对应的业务对象逻辑状态与当前镜头画面中所触发的目标事件对应的业务对象逻辑状态相同,且业务对象的动态信息发生变化,则确定目标事件满足第三镜头参数更新条件;动态信息用于表示业务对象的运动状态;从参数配置文件中获取与目标事件相关联的目标镜头曲线;
参数生成模块13,用于根据当前镜头画面对应的初始镜头参数以及目标镜头曲线,生成目标事件对应的更新镜头参数;
更新模块14,用于基于更新镜头参数,调整镜头虚拟相机的方位信息,基于调整后的镜头虚拟相机渲染用于展示目标事件的更新镜头画面;
上述更新模块14具体用于根据更新镜头参数,调整镜头虚拟相机的方位信息;根据更新镜头参数对镜头参数矩阵进行更新,将更新后的镜头参数矩阵输入渲染层,在渲染层中,根据更新后的镜头参数矩阵渲染用于展示目标事件的更新镜头画面。
其中,第一获取模块11的具体功能实现方式可以参见上述图5所对应实施例中的步骤S101,第二获取模块12的具体功能实现方式可以参见上述图5所对应实施例中的步骤S102,参数生成模块13的具体功能实现方式可以参见上述图5所对应实施例中的步骤S103,更新模块14的具体功能实现方式可以参见上述图5所对应实施例中的步骤S104,这里不再进行赘述。
请一并参见图11,该镜头处理装置1还可以包括:恢复模块15;
恢复模块15,用于获取当前镜头画面对应的初始逻辑动态参数以及初始镜头参数,将初始逻辑动态参数以及初始镜头参数存储至缓存区;当目标事件执行结束时,从缓存区中提取初始逻辑动态参数以及初始镜头参数,将调整后的镜头虚拟相机恢复到初始逻辑动态参数以及初始镜头参数所共同指示的相机方位。
其中,恢复模块15的具体功能实现方式可以参见上述图6所对应实施例中的步骤S205,或者,可以参见上述图10所对应实施例中的步骤S502,这里不再进行赘述。
请一并参见图11,该镜头处理装置1还可以包括:第一碰撞检测模块16、第一优化模块17;
第一碰撞检测模块16,用于连接镜头焦点与调整后的镜头虚拟相机,构造目标射线;检测目标射线与业务场景中的地形之间的位置关系;若位置关系为相交关系,则确定调整后的镜头虚拟相机与地形产生碰撞关系,根据碰撞关系获取调整后的镜头虚拟相机与地形之间的第一碰撞点;
第一优化模块17,用于根据第一碰撞点,缩短更新镜头参数中的臂长,得到优化镜头参数,根据优化镜头参数对更新镜头画面进行优化。
其中,第一碰撞检测模块16、第一优化模块17的具体功能实现方式可以参见上述图10所对应实施例中的步骤S505和步骤S508,这里不再进行赘述。
请一并参见图11,该镜头处理装置1还可以包括:第二碰撞检测模块18、第二优化模块19;
第二碰撞检测模块18,用于将调整后的镜头虚拟相机模拟为虚拟球体,对虚拟球体与业务场景中的几何物体进行碰撞检测;若调整后的镜头虚拟相机与几何物体产生碰撞关系,则对虚拟球体进行嵌入检测;
上述第二碰撞检测模块18具体用于若调整后的镜头虚拟相机与几何物体产生碰撞关系,确定调整后的镜头虚拟相机与几何物体之间的第二碰撞点;根据第二碰撞点与虚拟球体构造嵌入检测向量,根据第二碰撞点构造碰撞点法向量,获取嵌入检测向量与碰撞点法向量之间的向量夹角;若向量夹角为钝角,则确定调整后的镜头虚拟相机与几何物体产生嵌入关系;
第二优化模块19,用于若调整后的镜头虚拟相机与几何物体产生嵌入关系,则根据调整后的镜头虚拟相机与几何物体之间的嵌入点,缩短更新镜头参数中的臂长,得到优化镜头参数,根据优化镜头参数对更新镜头画面进行优化。
其中,第二碰撞检测模块18、第二优化模块19的具体功能实现方式可以参见上述图10所对应实施例中的步骤S506、步骤S507以及步骤S508,这里不再进行赘述。
请一并参见图11,该镜头处理装置1还可以包括:曲线配置模块20;
曲线配置模块20,用于在曲线编辑界面中,响应针对初始曲线的编辑操作,生成一条或多条动态曲线;在曲线参数配置界面中,响应针对一条或多条动态曲线的选择操作,将所选择的动态曲线确定为与目标事件相关联的目标镜头曲线。
其中,曲线配置模块20的具体功能实现方式可以参见上述图5所对应实施例中的步骤S102,这里不再进行赘述。
其中,上述当前镜头画面是基于初始镜头曲线渲染得到的;
请一并参见图11,上述参数生成模块13可以包括:插值比例获取单元131、第一参数读取单元132、第一插值单元133;
插值比例获取单元131,用于获取开始时间戳、当前时间戳以及事件持续时长,根据开始时间戳、当前时间戳以及事件持续时长生成当前时间比例;开始时间戳是指当前镜头画面中触发目标事件时的时间戳;且用于根据当前时间比例,从与目标事件相关联的过渡曲线中读取当前插值比例;过渡曲线是采用动态曲线进行配置的,过渡曲线用于表示镜头画面随时间的变化效果;
第一参数读取单元132,用于从初始镜头曲线中读取当前镜头画面对应的初始镜头参数,从目标镜头曲线中读取目标事件对应的目标镜头参数;
第一插值单元133,用于根据当前插值比例对初始镜头参数和目标镜头参数进行曲线插值,生成目标事件对应的更新镜头参数。
其中,插值比例获取单元131、第一参数读取单元132、第一插值单元133的具体功能实现方式可以参见上述图6所对应实施例中的步骤S203,这里不再进行赘述。
其中,上述当前镜头画面是基于初始镜头曲线渲染得到的;
请一并参见图11,上述参数生成模块13可以包括:第二参数读取单元134、转换参数获取单元135、第二插值单元136;
第二参数读取单元134,用于根据当前业务对象逻辑状态,从初始镜头曲线中读取当前镜头画面对应的初始镜头参数;根据目标业务对象逻辑状态,从目标镜头曲线中读取中间参数,根据中间参数生成目标事件对应的目标镜头参数;中间参数是指至少两个互相影响的镜头参数;
转换参数获取单元135,用于获取当前业务对象逻辑状态与目标业务对象逻辑状态之间的镜头转换参数;
第二插值单元136,用于根据镜头转换参数对初始镜头参数以及目标镜头参数进行曲线插值,生成目标事件对应的更新镜头参数。
其中,第二参数读取单元134、转换参数获取单元135、第二插值单元136的具体功能实现方式可以参见上述图7所对应实施例中的步骤S303,这里不再进行赘述。
其中,上述当前镜头画面是基于初始镜头曲线渲染得到的;
请一并参见图11,上述参数生成模块13可以包括:第三参数读取单元137、第三插值单元138;
第三参数读取单元137,用于从初始镜头曲线中读取当前镜头画面对应的初始镜头参数,从目标镜头曲线中读取目标事件对应的目标镜头参数;
第三插值单元138,用于根据变化后的动态信息,从目标镜头曲线中读取与变化后的动态信息相匹配的中间参数,根据中间参数对初始镜头参数和目标镜头参数进行曲线插值,生成目标事件对应的更新镜头参数;中间参数是指至少两个互相影响的镜头参数;初始镜头曲线与目标镜头曲线是相同的曲线。
其中,第三参数读取单元137、第三插值单元138的具体功能实现方式可以参见上述图8所对应实施例中的步骤S403,这里不再进行赘述。
其中,上述第一参数读取单元132、第二参数读取单元134以及第三参数读取单元137可以合并为一个参数读取单元,上述第一插值单元133、第二插值单元136以及第三插值单元138可以合并为一个插值单元。
本申请实施例可以通过在目标应用中获取当前镜头画面,进而检测当前镜头画面中所触发的目标事件是否满足镜头参数更新条件,当满足镜头参数更新条件时,可以进一步获取与目标事件相关联的目标镜头曲线,从而可以根据当前镜头画面对应的初始镜头参数以及目标镜头曲线,生成目标事件对应的更新镜头参数,最终可以基于该更新镜头参数调整镜头虚拟相机的方位信息,从而得到用于展示目标事件的更新镜头画面。在本申请实施例中,由于目标镜头曲线是采用动态曲线进行配置的,且目标镜头曲线可以表示具有不同镜头参数类型的镜头参数之间的动态变化关系,因此本申请通过采用基于动态曲线的配置方式来调节镜头参数,而不是采用现有方案中固定数值式的参数设定,可以快速实现目标应用的多样化镜头规则,充分满足产品的定制化需求,且无需程序再提供额外的支持,可以极大节省程序人员的研发工作,从而提升研发效率。
请参见图12,是本申请实施例提供的一种计算机设备的结构示意图。如图12所示,该计算机设备1000可以包括:处理器1001,网络接口1004和存储器1005,此外,上述计算机设备1000还可以包括:用户接口1003,和至少一个通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。其中,用户接口1003可以包括显示屏(Display)、键盘(Keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器1004可以是高速RAM存储器,也可以是非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。存储器1005可选的还可以是至少一个位于远离前述处理器1001的存储装置。如图12所示,作为一种计算机可读存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及设备控制应用程序。
在如图12所示的计算机设备1000中,网络接口1004可提供网络通讯功能;而用户接口1003主要用于为用户提供输入的接口;而处理器1001可以用于调用存储器1005中存储的设备控制应用程序,以实现:
在目标应用中获取当前镜头画面;
若当前镜头画面中所触发的目标事件满足镜头参数更新条件,则获取与目标事件相关联的目标镜头曲线;目标镜头曲线是采用动态曲线进行配置的,目标镜头曲线用于表示具有不同镜头参数类型的镜头参数之间的动态变化关系,镜头参数用于共同指示镜头虚拟相机的方位信息;
根据当前镜头画面对应的初始镜头参数以及目标镜头曲线,生成目标事件对应的更新镜头参数;
基于更新镜头参数,调整镜头虚拟相机的方位信息,基于调整后的镜头虚拟相机渲染用于展示目标事件的更新镜头画面。
应当理解,本申请实施例中所描述的计算机设备1000可执行前文图5、图6、图7、图8、图10任一个所对应实施例中对该镜头处理方法的描述,在此不再赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。
此外,这里需要指出的是:本申请实施例还提供了一种计算机可读存储介质,且上述计算机可读存储介质中存储有前文提及的镜头处理装置1所执行的计算机程序,且上述计算机程序包括程序指令,当上述处理器执行上述程序指令时,能够执行前文图5、图6、图7、图8、图10任一个所对应实施例中对上述镜头处理方法的描述,因此,这里将不再进行赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。对于本申请所涉及的计算机可读存储介质实施例中未披露的技术细节,请参照本申请方法实施例的描述。
上述计算机可读存储介质可以是前述任一实施例提供的镜头处理装置或者上述计算机设备的内部存储单元,例如计算机设备的硬盘或内存。该计算机可读存储介质也可以是该计算机设备的外部存储设备,例如该计算机设备上配备的插接式硬盘,智能存储卡(smart media card,SMC),安全数字(secure digital,SD)卡,闪存卡(flash card)等。进一步地,该计算机可读存储介质还可以既包括该计算机设备的内部存储单元也包括外部存储设备。该计算机可读存储介质用于存储该计算机程序以及该计算机设备所需的其他程序和数据。该计算机可读存储介质还可以用于暂时地存储已经输出或者将要输出的数据。
此外,这里需要指出的是:本申请实施例还提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行前文图5、图6、图7、图8、图10任一个所对应实施例提供的方法。
本申请实施例的说明书和权利要求书及附图中的术语“第一”、“第二”等是用于区别不同对象,而非用于描述特定顺序。此外,术语“包括”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、装置、产品或设备没有限定于已列出的步骤或模块,而是可选地还包括没有列出的步骤或模块,或可选地还包括对于这些过程、方法、装置、产品或设备固有的其他步骤单元。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
本申请实施例提供的方法及相关装置是参照本申请实施例提供的方法流程图和/或结构示意图来描述的,具体可由计算机程序指令实现方法流程图和/或结构示意图的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。这些计算机程序指令可提供到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或结构示意图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或结构示意图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或结构示意一个方框或多个方框中指定的功能的步骤。
以上所揭露的仅为本申请较佳实施例而已,当然不能以此来限定本申请之权利范围,因此依本申请权利要求所作的等同变化,仍属本申请所涵盖的范围。
Claims (15)
1.一种镜头处理方法,其特征在于,包括:
在目标应用中获取当前镜头画面;
若所述当前镜头画面中所触发的目标事件满足镜头参数更新条件,则获取与所述目标事件相关联的目标镜头曲线;所述目标镜头曲线是采用动态曲线进行配置的,所述目标镜头曲线用于表示具有不同镜头参数类型的镜头参数之间的动态变化关系,所述镜头参数用于共同指示镜头虚拟相机的方位信息;
根据所述当前镜头画面对应的初始镜头参数以及所述目标镜头曲线,生成所述目标事件对应的更新镜头参数;
基于所述更新镜头参数,调整所述镜头虚拟相机的方位信息,基于调整后的镜头虚拟相机渲染用于展示所述目标事件的更新镜头画面。
2.根据权利要求1所述的方法,其特征在于,所述镜头参数更新条件包括第一镜头参数更新条件;
所述若所述当前镜头画面中所触发的目标事件满足镜头参数更新条件,则获取与所述目标事件相关联的目标镜头曲线,包括:
若所述当前镜头画面中所触发的目标事件属于特殊镜头触发事件,则确定所述目标事件满足第一镜头参数更新条件;
从参数配置文件中获取与所述目标事件相关联的目标镜头曲线。
3.根据权利要求2所述的方法,其特征在于,所述当前镜头画面是基于初始镜头曲线渲染得到的;所述根据所述当前镜头画面对应的初始镜头参数以及所述目标镜头曲线,生成所述目标事件对应的更新镜头参数,包括:
获取开始时间戳、当前时间戳以及事件持续时长,根据所述开始时间戳、所述当前时间戳以及所述事件持续时长生成当前时间比例;所述开始时间戳是指所述当前镜头画面中触发所述目标事件时的时间戳;
根据所述当前时间比例,从与所述目标事件相关联的过渡曲线中读取当前插值比例;所述过渡曲线是采用动态曲线进行配置的,所述过渡曲线用于表示镜头画面随时间的变化效果;
从所述初始镜头曲线中读取所述当前镜头画面对应的初始镜头参数,从所述目标镜头曲线中读取所述目标事件对应的目标镜头参数;
根据所述当前插值比例对所述初始镜头参数和所述目标镜头参数进行曲线插值,生成所述目标事件对应的更新镜头参数。
4.根据权利要求2所述的方法,其特征在于,还包括:
获取所述当前镜头画面对应的初始逻辑动态参数以及初始镜头参数,将所述初始逻辑动态参数以及所述初始镜头参数存储至缓存区;
当所述目标事件执行结束时,从所述缓存区中提取所述初始逻辑动态参数以及所述初始镜头参数,将调整后的镜头虚拟相机恢复到所述初始逻辑动态参数以及所述初始镜头参数所共同指示的相机方位。
5.根据权利要求1所述的方法,其特征在于,所述镜头参数更新条件包括第二镜头参数更新条件;
所述若所述当前镜头画面中所触发的目标事件满足镜头参数更新条件,则获取与所述目标事件相关联的目标镜头曲线,包括:
若所述当前镜头画面对应的当前业务对象逻辑状态与所述当前镜头画面中所触发的目标事件对应的目标业务对象状态逻辑状态不相同,则确定所述目标事件满足第二镜头参数更新条件;
从参数配置文件中获取与所述目标事件相关联的目标镜头曲线。
6.根据权利要求5所述的方法,其特征在于,所述当前镜头画面是基于初始镜头曲线渲染得到的;所述根据所述当前镜头画面对应的初始镜头参数以及所述目标镜头曲线,生成所述目标事件对应的更新镜头参数,包括:
根据所述当前业务对象逻辑状态,从所述初始镜头曲线中读取所述当前镜头画面对应的初始镜头参数;
根据所述目标业务对象逻辑状态,从所述目标镜头曲线中读取中间参数,根据所述中间参数生成所述目标事件对应的目标镜头参数;所述中间参数是指至少两个互相影响的镜头参数;
获取所述当前业务对象逻辑状态与所述目标业务对象逻辑状态之间的镜头转换参数;
根据所述镜头转换参数对所述初始镜头参数以及所述目标镜头参数进行曲线插值,生成所述目标事件对应的更新镜头参数。
7.根据权利要求1所述的方法,其特征在于,所述镜头参数更新条件包括第三镜头参数更新条件;
所述若所述当前镜头画面中所触发的目标事件满足镜头参数更新条件,则获取与所述目标事件相关联的目标镜头曲线,包括:
若所述当前镜头画面对应的业务对象逻辑状态与所述当前镜头画面中所触发的目标事件对应的业务对象逻辑状态相同,且业务对象的动态信息发生变化,则确定所述目标事件满足第三镜头参数更新条件;所述动态信息用于表示所述业务对象的运动状态;
从参数配置文件中获取与所述目标事件相关联的目标镜头曲线。
8.根据权利要求7所述的方法,其特征在于,所述当前镜头画面是基于初始镜头曲线渲染得到的;所述根据所述当前镜头画面对应的初始镜头参数以及所述目标镜头曲线,生成所述目标事件对应的更新镜头参数,包括:
从所述初始镜头曲线中读取所述当前镜头画面对应的初始镜头参数,从所述目标镜头曲线中读取所述目标事件对应的目标镜头参数;
根据变化后的动态信息,从所述目标镜头曲线中读取与所述变化后的动态信息相匹配的中间参数,根据所述中间参数对所述初始镜头参数和所述目标镜头参数进行曲线插值,生成所述目标事件对应的更新镜头参数;所述中间参数是指至少两个互相影响的镜头参数;所述初始镜头曲线与所述目标镜头曲线是相同的曲线。
9.根据权利要求1所述的方法,其特征在于,还包括:
连接镜头焦点与所述调整后的镜头虚拟相机,构造目标射线;
检测所述目标射线与业务场景中的地形之间的位置关系;
若所述位置关系为相交关系,则确定所述调整后的镜头虚拟相机与所述地形产生碰撞关系,根据所述碰撞关系获取所述调整后的镜头虚拟相机与所述地形之间的第一碰撞点;
根据所述第一碰撞点,缩短所述更新镜头参数中的臂长,得到优化镜头参数,根据所述优化镜头参数对所述更新镜头画面进行优化。
10.根据权利要求1所述的方法,其特征在于,还包括:
将所述调整后的镜头虚拟相机模拟为虚拟球体,对所述虚拟球体与业务场景中的几何物体进行碰撞检测;
若所述调整后的镜头虚拟相机与所述几何物体产生碰撞关系,则对所述虚拟球体进行嵌入检测;
若所述调整后的镜头虚拟相机与所述几何物体产生嵌入关系,则根据所述调整后的镜头虚拟相机与所述几何物体之间的嵌入点,缩短所述更新镜头参数中的臂长,得到优化镜头参数,根据所述优化镜头参数对所述更新镜头画面进行优化。
11.根据权利要求10所述的方法,其特征在于,所述若所述调整后的镜头虚拟相机与所述几何物体产生碰撞关系,则对所述虚拟球体进行嵌入检测,包括:
若所述调整后的镜头虚拟相机与所述几何物体产生碰撞关系,确定所述调整后的镜头虚拟相机与所述几何物体之间的第二碰撞点;
根据所述第二碰撞点与所述虚拟球体构造嵌入检测向量,根据所述第二碰撞点构造碰撞点法向量,获取所述嵌入检测向量与所述碰撞点法向量之间的向量夹角;
若所述向量夹角为钝角,则确定所述调整后的镜头虚拟相机与所述几何物体产生嵌入关系。
12.根据权利要求3或6或8所述的方法,其特征在于,所述基于所述更新镜头参数,调整所述镜头虚拟相机的方位信息,基于调整后的镜头虚拟相机渲染用于展示所述目标事件的更新镜头画面,包括:
根据所述更新镜头参数,调整所述镜头虚拟相机的方位信息;
根据所述更新镜头参数对镜头参数矩阵进行更新,将更新后的镜头参数矩阵输入渲染层,在所述渲染层中,根据所述更新后的镜头参数矩阵渲染用于展示所述目标事件的更新镜头画面。
13.根据权利要求1所述的方法,其特征在于,还包括:
在曲线编辑界面中,响应针对初始曲线的编辑操作,生成一条或多条动态曲线;
在曲线参数配置界面中,响应针对所述一条或多条动态曲线的选择操作,将所选择的动态曲线确定为与所述目标事件相关联的目标镜头曲线。
14.一种计算机设备,其特征在于,包括:处理器、存储器以及网络接口;
所述处理器与所述存储器、所述网络接口相连,其中,所述网络接口用于提供数据通信功能,所述存储器用于存储程序代码,所述处理器用于调用所述程序代码,以执行权利要求1-13任一项所述的方法。
15.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序,所述计算机程序适于由处理器加载并执行权利要求1-13任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110296206.3A CN112891943B (zh) | 2021-03-19 | 2021-03-19 | 一种镜头处理方法、设备以及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110296206.3A CN112891943B (zh) | 2021-03-19 | 2021-03-19 | 一种镜头处理方法、设备以及可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112891943A true CN112891943A (zh) | 2021-06-04 |
CN112891943B CN112891943B (zh) | 2022-08-02 |
Family
ID=76105699
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110296206.3A Active CN112891943B (zh) | 2021-03-19 | 2021-03-19 | 一种镜头处理方法、设备以及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112891943B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113648654A (zh) * | 2021-09-03 | 2021-11-16 | 网易(杭州)网络有限公司 | 游戏画面的处理方法、装置、设备、存储介质及程序产品 |
CN114371806A (zh) * | 2022-03-22 | 2022-04-19 | 广州三七极创网络科技有限公司 | 虚拟相机镜头参数处理、更新方法、装置、设备及介质 |
CN114419949A (zh) * | 2022-01-13 | 2022-04-29 | 武汉未来幻影科技有限公司 | 一种汽车后视镜影像重建方法及后视镜 |
CN115920377A (zh) * | 2022-07-08 | 2023-04-07 | 北京极炬网络科技有限公司 | 游戏中动画的播放方法、装置、介质及电子设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100026712A1 (en) * | 2008-07-31 | 2010-02-04 | Stmicroelectronics S.R.L. | Method and system for video rendering, computer program product therefor |
CN106056655A (zh) * | 2016-09-06 | 2016-10-26 | 珠海金山网络游戏科技有限公司 | 一种可编辑的虚拟摄像机系统和方法 |
CN110944727A (zh) * | 2017-09-19 | 2020-03-31 | 佳能株式会社 | 控制虚拟照相机的系统和方法 |
US20200275083A1 (en) * | 2019-02-27 | 2020-08-27 | Canon Kabushiki Kaisha | Information processing apparatus, information processing method, and computer readable storage medium |
CN111803946A (zh) * | 2020-07-22 | 2020-10-23 | 网易(杭州)网络有限公司 | 游戏中的镜头切换方法、装置和电子设备 |
-
2021
- 2021-03-19 CN CN202110296206.3A patent/CN112891943B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100026712A1 (en) * | 2008-07-31 | 2010-02-04 | Stmicroelectronics S.R.L. | Method and system for video rendering, computer program product therefor |
CN106056655A (zh) * | 2016-09-06 | 2016-10-26 | 珠海金山网络游戏科技有限公司 | 一种可编辑的虚拟摄像机系统和方法 |
CN110944727A (zh) * | 2017-09-19 | 2020-03-31 | 佳能株式会社 | 控制虚拟照相机的系统和方法 |
US20200275083A1 (en) * | 2019-02-27 | 2020-08-27 | Canon Kabushiki Kaisha | Information processing apparatus, information processing method, and computer readable storage medium |
CN111803946A (zh) * | 2020-07-22 | 2020-10-23 | 网易(杭州)网络有限公司 | 游戏中的镜头切换方法、装置和电子设备 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113648654A (zh) * | 2021-09-03 | 2021-11-16 | 网易(杭州)网络有限公司 | 游戏画面的处理方法、装置、设备、存储介质及程序产品 |
CN114419949A (zh) * | 2022-01-13 | 2022-04-29 | 武汉未来幻影科技有限公司 | 一种汽车后视镜影像重建方法及后视镜 |
CN114371806A (zh) * | 2022-03-22 | 2022-04-19 | 广州三七极创网络科技有限公司 | 虚拟相机镜头参数处理、更新方法、装置、设备及介质 |
CN115920377A (zh) * | 2022-07-08 | 2023-04-07 | 北京极炬网络科技有限公司 | 游戏中动画的播放方法、装置、介质及电子设备 |
CN115920377B (zh) * | 2022-07-08 | 2023-09-05 | 北京极炬网络科技有限公司 | 游戏中动画的播放方法、装置、介质及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN112891943B (zh) | 2022-08-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112891943B (zh) | 一种镜头处理方法、设备以及可读存储介质 | |
CN110147231B (zh) | 组合特效生成方法、装置及存储介质 | |
WO2022151946A1 (zh) | 虚拟角色的控制方法、装置、电子设备、计算机可读存储介质及计算机程序产品 | |
CN111527525A (zh) | 混合现实服务提供方法及系统 | |
TW202304212A (zh) | 直播方法、系統、電腦設備及電腦可讀儲存媒體 | |
US20230050933A1 (en) | Two-dimensional figure display method and apparatus for virtual object, device, and storage medium | |
TWI818343B (zh) | 虛擬場景的適配顯示方法、裝置、電子設備、儲存媒體及電腦程式產品 | |
CN113952720A (zh) | 游戏场景渲染方法、装置、电子设备及存储介质 | |
CN105630160A (zh) | 虚拟现实使用界面系统 | |
US11914837B2 (en) | Video acquisition method, electronic device, and storage medium | |
CN111142967A (zh) | 一种增强现实显示的方法、装置、电子设备和存储介质 | |
CN109766046B (zh) | 互动操作的执行方法和装置、存储介质、电子装置 | |
CN112206519B (zh) | 实现游戏场景环境变化的方法、装置、存储介质及计算机设备 | |
CN113763568A (zh) | 增强现实的显示处理方法、装置、设备及存储介质 | |
US20230310989A1 (en) | Object control method and apparatus in virtual scene, terminal device, computer-readable storage medium, and computer program product | |
JP2023174714A (ja) | プログラム、画像生成装置および画像生成方法 | |
CN116109737A (zh) | 动画生成方法、装置、计算机设备及计算机可读存储介质 | |
TW202228827A (zh) | 虛擬場景中畫面展示方法及裝置、電腦設備、電腦可讀存儲介質及電腦程式產品 | |
CN104035560A (zh) | 一种基于摄像头的人机实时交互方法 | |
WO2024067168A1 (zh) | 基于社交场景的消息显示方法、装置、设备、介质及产品 | |
KR102396060B1 (ko) | 전자 게임에서 카메라 뷰 변경 | |
CN113559500B (zh) | 动作数据的生成方法、装置、电子设备及存储介质 | |
US20240062456A1 (en) | Variable update adaptation and simulation delay in multiuser virtual reality application | |
US20240193894A1 (en) | Data processing method and apparatus, electronic device and storage medium | |
CN117764758A (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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40046811 Country of ref document: HK |
|
GR01 | Patent grant | ||
GR01 | Patent grant |