CN110431600A - 用于自动相机碰撞的方法和系统以及合成保存 - Google Patents

用于自动相机碰撞的方法和系统以及合成保存 Download PDF

Info

Publication number
CN110431600A
CN110431600A CN201880018947.1A CN201880018947A CN110431600A CN 110431600 A CN110431600 A CN 110431600A CN 201880018947 A CN201880018947 A CN 201880018947A CN 110431600 A CN110431600 A CN 110431600A
Authority
CN
China
Prior art keywords
camera
virtual camera
barrier
module
target
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.)
Pending
Application number
CN201880018947.1A
Other languages
English (en)
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.)
Uniti Intellectual Property Co Ltd
Original Assignee
Uniti Intellectual Property 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 Uniti Intellectual Property Co Ltd filed Critical Uniti Intellectual Property Co Ltd
Publication of CN110431600A publication Critical patent/CN110431600A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/10Geometric effects
    • G06T15/20Perspective computation
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/25Output arrangements for video game devices
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/50Controlling the output signals based on the game progress
    • A63F13/52Controlling the output signals based on the game progress involving aspects of the displayed game scene
    • A63F13/525Changing parameters of virtual cameras
    • A63F13/5258Changing parameters of virtual cameras by dynamically adapting the position of the virtual camera to keep a game object or game character in its viewing frustum, e.g. for tracking a character or a ball
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/06Ray-tracing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/10Geometric effects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/20Analysis of motion
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F2300/00Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
    • A63F2300/60Methods for processing data by generating or executing the game program
    • A63F2300/65Methods for processing data by generating or executing the game program for computing the condition of a game character
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F2300/00Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
    • A63F2300/60Methods for processing data by generating or executing the game program
    • A63F2300/66Methods for processing data by generating or executing the game program for rendering three dimensional images
    • A63F2300/6653Methods for processing data by generating or executing the game program for rendering three dimensional images for altering the visibility of an object, e.g. preventing the occlusion of an object, partially hiding an object
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F2300/00Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
    • A63F2300/60Methods for processing data by generating or executing the game program
    • A63F2300/66Methods for processing data by generating or executing the game program for rendering three dimensional images
    • A63F2300/6661Methods for processing data by generating or executing the game program for rendering three dimensional images for changing the position of the virtual camera
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F2300/00Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
    • A63F2300/60Methods for processing data by generating or executing the game program
    • A63F2300/66Methods for processing data by generating or executing the game program for rendering three dimensional images
    • A63F2300/6661Methods for processing data by generating or executing the game program for rendering three dimensional images for changing the position of the virtual camera
    • A63F2300/6684Methods for processing data by generating or executing the game program for rendering three dimensional images for changing the position of the virtual camera by dynamically adapting its position to keep a game object in its viewing frustrum, e.g. for tracking a character or a ball
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2210/00Indexing scheme for image generation or computer graphics
    • G06T2210/12Bounding box
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2210/00Indexing scheme for image generation or computer graphics
    • G06T2210/21Collision detection, intersection

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Multimedia (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Graphics (AREA)
  • Geometry (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Computing Systems (AREA)
  • Studio Devices (AREA)
  • Processing Or Creating Images (AREA)
  • User Interface Of Digital Computer (AREA)

Abstract

本文描述了用于在3D虚拟环境内相机对撞机和镜头合成保存的系统和方法,其在拍摄物体时防止虚拟程序相机卡在物体后面或穿透到物体中,同时还维持相机镜头中对象的屏幕合成。

Description

用于自动相机碰撞的方法和系统以及合成保存
相关申请的交叉引用
本申请要求20178年3月17日提交的美国临时申请62/473,107,2017年6月26日提交的美国临时申请62/525,037和2017年8月28日提交的美国临时申请62/551,134的权益,其全部内容通过引用并入本文。
技术领域
本公开涉及自动电影摄影的软件工具的领域。
背景技术
在3D虚拟电影摄影领域,存在用于拍摄具有可变情景的场景的程序相机。程序相机被编程为以某种方式适应所述场景和其中的物体。例如,为了拍摄场景,程序相机可以通过3D环境跟随对象,同时维持相对于所述对象的距离和固定的取向。然而,在程序相机拍摄可变情景(例如,运动中的对象,运动中的其他3D物体等)的情况下,存在许多情况,其中对象将被一些中间物体从相机视域(view)中遮挡或移出所需的镜头组成。在一些情况下,跟随对象的相机可能在试图跟随该对象时被卡在物体后面,或者它可能穿入到物体中以便维持关于所述对象的某一镜头。
上述问题可能变得重要的程序相机使用的一个例子是录制和播放视频游戏;其中不玩的主持人观看并广播他们对实时在线的多玩家视频游戏的观点以及评论。这些不玩的用户被称为“主持人”,他们的广播是游戏的托管。许多第三方可以通过例如等网站调入并观看托管的游戏。主持人使用程序相机来记录视频游戏,并且上述程序相机的困难导致差的电影质量(例如镜头合成(shot composition),相机切割等)以及视频游戏观众的差的用户体验。
附图说明
从以下结合附图的详细描述,本公开的其他特征和优点将变得显而易见,其中:
图1是说明根据一个实施例的包括对撞机模块和合成模块的视频游戏电影摄影系统的示意图;
图2A是说明根据一个实施例的示出合成目标区及其周围边界区域的屏幕截图的示意图;
图2B是说明根据一个实施例的示出合成目标区及其周围边界区域的屏幕截图的示意图;
图3是根据一个实施例的示出隶属成分(subjection composition)的示意图;
图4是根据一个实施例的示出合成方法的流程图;
图5是根据一个实施例的示出相机上的对撞机刺针(collider spikes)的示意图;
图6A是根据一个实施例的示出对撞机方法的流程图;
图6B是根据一个实施例的示出启动对撞机方法的流程图;
图6C是根据一个实施例的示出对撞机方法的流程图;
图6D是根据一个实施例的示出对撞机方法的流程图;
图6E是根据实施例的虚拟环境的示意图,其中对撞机模块移动相机以避开物体;
图6F是根据一个实施例的示出对撞机方法的流程图;
图6G是根据实施例的虚拟环境的示意图,其中对撞机模块移动相机以避开物体;
图7A、7B和7C是相机屏幕的示意图,其中遮挡物体越过屏幕移动并覆盖对象;
图8A是说明用于状态驱动相机的用户界面面板的屏幕截图;
图8B是说明游戏中动态填充的状态下拉列表的屏幕截图;
图8C是说明点击相机按钮的结果的屏幕截图;
图8D是说明如何将状态驱动相机混合在一起的屏幕截图;
图8E是说明用户定义的所有相机列表的屏幕截图,所述相机将被暴露给具有优先级控制的状态驱动相机;
图8F是示出对单个状态驱动相机系统的总体优先级的控制的屏幕截图;
图9是用户佩戴的示例性头戴式显示器(HMD)的示图;
图10是说明示例性软件架构的框图,该示例性软件架构可以与本文描述的各种硬件架构结合使用;以及
图11是说明根据一些示例性实施例的机器900的组件的框图,其被配置成从机器可读介质(例如,机器可读存储介质)读取指令并执行本文所讨论的任何一种或多种方法。
应注意,在所有附图中,相同的特征由相同的附图标记标识。
具体实施方式
以下描述和附图是对本公开的说明,而不应被解释为限制本公开。描述了许多具体细节以提供对本公开的透彻理解。然而,在某些情况下,没有描述本领域技术人员公知的细节以避免模糊本公开的描述。
本文描述了用于在3D虚拟环境内相机对撞机和镜头合成的保存的系统和方法,其在拍摄对象时防止虚拟程序相机卡在物体后面或穿入到物体中,同时还维持相机镜头中对象的屏幕合成。
术语:在本文的整个说明书中,术语“对象(subject)”指的是3D虚拟环境内的物体,其是拍摄期间虚拟相机的期望的主要题材(subject matter)(例如,对象通常是相机的焦点)。
现在转到附图,说明了根据本公开实施例的用于相机碰撞和合成保存的系统和方法。图1是包括游戏引擎设备和相关外围设备的视频游戏电影摄影设备的组件图。在示例性实施例中,视频游戏电影摄影设备是由用户操作的计算设备。用户可以是在线多玩家游戏(例如,电子竞技游戏)的玩家,或者提供与视频游戏相关联的各种广播功能的广播主持人(或仅“主持人”)。视频游戏电影摄影设备包括一个或多个显示设备(例如,传统的计算机监视器,VR可穿戴设备等)以及一个或多个输入设备(例如,键盘,鼠标,手持式指示设备,触摸屏等)。视频游戏电影摄影设备还包括存储器,一个或多个中央处理单元(CPU),一个或多个图形处理单元(GPU),以及一个或多个网络适配器(例如,提供用于视频游戏的网络连接的有线或无线网络适配器)。
在示例性实施例中,视频游戏电影摄影设备包括向用户呈现视频游戏(或模拟)的游戏引擎(例如,由CPU或GPU所执行的)。游戏引擎包括对撞机模块和合成模块,其提供如本文所述的电影功能。合成模块和对撞机模块以及游戏引擎中的每一个包括驻留在存储器中的计算机可执行指令,其在操作期间由CPU或GPU执行。游戏引擎与显示设备通信,并且还与诸如输入设备的其他硬件通信。合成模块和对撞机模块可以直接集成在游戏引擎内,或者可以实现为外部软件(例如,插件或其他独立的视频处理软件)。
根据实施例,合成模块改变虚拟相机的取向,以将对象的特定部分(在此称为对象目标,或简称目标)保持在相机屏幕上的特定区域(在本文中称为目标区)内。本文描述的方法是用于维持目标在屏幕空间中的位置的高性能、精确的方法。合成模块包括基于时间的跟踪速度以及相机屏幕内的边界框,以定义其能多迅速地定向相机,以定位在期望的目标区内的目标。本文描述的合成模块控制相机的取向,但不需要控制相机到对象的距离,因此可以与控制相机位置(在绝对3D空间或关于对象的位置)的其他系统一起使用。
根据许多实施例并且在图2A和图2B中示出,是包含镜头合成模块的边界的相机屏幕。通过将对象放置在相机屏幕的二维空间的特定区域内来定义对象的合成。特定区域称为目标区。在镜头拍摄期间,合成模块动态地改变相机的取向以使目标保持在目标区内。如图所见,相机屏幕上的目标区由几组边界定义。当可视化时,它显示为屏幕的三个区域:位于所有软边界内的目标区,占据软边界和硬边界之间的空间的软边界区域,以及占据硬边界区外部的空间的硬边界区域。边界(以及因此目标区)由用户定义,或者可以通过使用电影摄影规则的自动程序来选择。
在一些实施例中,对象可以是包括多个目标的合成对象,其中每个可以独立地移动。例如,合成对象可以包括团队中的两个或更多个玩家,或者玩家和固定位置或其他非玩家物体。合成模块可以使用相机来跟踪合成对象,基于合成对象或其目标的位置和取向方面来定位和定向相机(例如,作为质心类型计算)。合成对象可以用作逻辑组,并且可以用作“LookAt”,允许使用合成对象作为其他用户要查看的目标。在一些实施例中,合成对象的位置可以被设置为包括所有合成对象的目标的边界框的中心(例如,从合成对象的目标的位置和半径计算的)。
在一些实施例中,可以给予合成对象内的每个目标相对权重,该相对权重可以影响相机相对于合成对象的位置和取向。例如,通过使领队成员的权重高于另一个,相机可能会偏向团队队长或领导团体的团队成员,例如使得相机将焦点中心更多地转移到更高权重的团队成员。在一些实施例中,合成对象的每个目标的权重可以基于特定目标采取的动作而动态地改变。例如,如果一个团队成员向敌人射击而第二个团队成员闲置并且看向不同的方向,则活跃的团队成员可能被更高地加权。在一些实施例中,平均取向是表示目标的取向的四元数的归一化加权和。这样,例如,目标的同期动作可以使得相机将焦点中心更多地移向活跃团队成员,以及相机取向移向活跃团队成员的取向(例如,更朝向活跃玩家的开火的方向)。
在一些实施例中,合成模块可以基于其位置动态地自动构造合成对象。例如,如果物体移开,则合成模块可以调整视场或相机位置,以便包括合成对象内的所有目标。在一些实施例中,合成模块可以基于初始相机位置为合成对象创建边界框,并评估其占据的屏幕空间。在一些实施例中,屏幕空间的维度可以由合成对象的观看用户指定(例如,在水平和垂直相机维度中)。当各个目标移动时,相机可以调整其视场以再构造合成对象。在一些实施例中,可以通过朝向或远离合成对象(例如,沿着相机-目标中心轴)移动相机来完成再构造。在一些实施例中,可以将阻尼应用于再构造动作,使得相机重新定位发生在一段时间内,从而避免锯齿状过渡。
图3示出了具有目标区边界的对象合成的示例,其中对象是大象并且对象目标是大象的右眼。示例中的目标区是相机屏幕右上部分的区域。
根据实施例,当目标处于这三个区域中的每一个中时,合成模块的行为被表征为:
目标区-如果目标在目标区内,则不发生相机取向以及合成模块继续监控相机屏幕上的目标位置。
软边界区域-如果确定目标在软边界和硬边界之间,则合成模块以期望的水平和垂直跟踪速度定向相机,以将其移动到目标区。在屏幕空间中定义跟踪速度。
硬边界区域-目标不被允许超出任何硬边界线。超出一个硬边界线的目标将使合成模块立即将相机定向到最靠近目标的硬边界的边缘。对于该动作没有时间延迟(例如,时间常数为零),一旦检测到其超出边界的位置则立即移动相机。
尽管图2和图3示出了看起来是水平和垂直边界的对称定位,但是这些边界不必对称地定位,使得区域的大小可以是左/右和上/下不对称的。此外,图2和图3显示了看起来是创建了矩形目标区的彼此成直角的线性边界,矩形软边界区域和矩形硬边界,如图2B所示,边界可以是非线性的,并且区域的形状可以具有任何形状。
本文描述的跟踪方法允许沿屏幕空间的垂直轴和水平轴进行解耦跟踪。另外,跟踪方法使用每个边界的时间常数来确定合成模块可以用来重新定向相机的时间量,使得目标将移动到目标区中。利用所描述的3个区域,如果合成模块检测到与期望的合成的偏差(即,如果目标在目标区之外),则合成模块仅调整相机。此外,相机在软边界区域中的重新定向是基于与边界的偏离量的分级响应。重新定向的速度与距目标区边界的距离有关。这种方法允许对相机移动具有逼真的人类感觉,因为目标离目标区越近,相机的反应越慢(反之亦然)。这类似于人类控制的相机的移动。
在示例性实施例中,该方法使用单精度浮点计算并产生高质量结果。由于使用单精度浮点计算,与使用双精度浮点计算的计算相比,减少了计算负担。这对于必须同时在多个相机上完成镜头合成的情况非常有用。例如,当场景中存在多个相机时,可以使用该方法同时维持每个相机的特定合成,而无需使用高性能计算机。出于同样的原因,本文描述的合成方法对于移动设备也是非常实用的,其中计算能力可以低于台式/膝上型计算机。为了仅使用单精度来保持浮点精度,所有计算都在相机坐标空间中执行(例如,关于相机的局部坐标)。此外,不使用欧拉角和三角法来确定对象在屏幕上的位置和相机的取向,而是使用四元数和单位长度矢量来计算所有取向和旋转值。
根据实施例并且图4中示出的是合成方法,其中用于将目标保持在目标区内的合成模块的操作顺序对于每个相机如下:
首先,合成模块将目标位置从3D世界坐标转换为3D相机空间坐标。然后,合成模块将目标的3D相机坐标转换为2D相机视口空间位置(例如,相机屏幕位置)。然后,合成模块将屏幕空间中的目标位置与所选目标区进行比较。如果视口空间中的所选目标区(例如,中心边界区域)不包含目标,则合成模块必须重新调整相机取向。但是,如果视口空间确实包含目标,则不需要调整相机取向,合成模块可以返回步骤1并监控目标位置。为了重新调整相机取向,合成模块找到距目标最近的所提供的边界的边缘上的点,以便相机将在最短路径上旋转,其将目标放入期望的合成目标区。然后,合成模块计算两个矢量;第一个是从相机原点到目标的矢量,第二个是从相机原点到前面的步骤中计算的边界上的点的矢量。两个矢量都是以相机坐标计算的。然后,合成模块将两个矢量投影到右轴上以用作水平跟踪的基础,并将两个矢量投影到上轴上以用作垂直跟踪的基础。然后,合成模块确定两个矢量之间的角度,并使用该值来缩放时间常数跟踪值,以供使用四元数平滑运动。
然后,合成模块从计算出的角度创建围绕右轴和上轴的四元数旋转。然后,合成模块使用作为结果的四元数将相机旋转要求的量。
合成模块应用该跟踪过程两次,一次用于硬跟踪边界,再次用于每次更新的软跟踪边界(硬边界的跟踪时间为零,意味着瞬时)。
另请注意,编排器模块可应用于具有静止相机和移动对象的系统,具有移动相机和静止对象的系统,或者其中相机和对象都在运动的系统。
根据实施例并且在此描述的是对撞机系统(部分地在对撞机模块内实施),由此对撞机模块移动相机(例如,改变位置),以避免3D环境中的物体,其中该物体正在遮挡来自相机的目标区的目标。对撞机系统可以使用合成模块系统以维持镜头的合成(例如,通过改变相机的取向),同时对撞机系统移动相机位置以避开遮挡物体。
根据实施例并且如图5所示,对撞机模块在相机上产生对撞机刺针。对撞机刺针是从相机延伸并向外达到一定距离的杆。相机可以具有在多个角度延伸的多个对撞机刺针。对撞机刺针长度和它从相机伸出的方向可以由用户定义,并且对于每个对撞机刺针可以是不同的。每个对撞机刺针都可以具有可调节的阻尼。阻尼生效在对撞机刺针受损(即,与3D环境中的物体接触)时,并且指的是对撞机模块将相机返回到对撞机刺针不再受损(即,不再与3D环境中的物体接触)的位置的速度。硬阻尼将相机从受损位置快速移动到非受损位置,而软阻尼将相机从受损位置缓慢移回到非受损位置。对撞机阻尼从相机和物体之间的碰撞中除去了一些刺耳的突然性。通过阻尼可以使对撞机刺针长度超过所需的长度,并且可以如此平稳地避免碰撞以至于观察者不会注意到。没有阻尼,相机可能会非常脆弱,可以立即停止/启动等。
对撞机模块系统行为取决于相机、遮挡物体和镜头对象之间发生的遮挡类型。根据实施例并如图6A-6G所示,这里描述的对撞机系统响应至少两种不同类型的遮挡。第一种类型的遮挡涉及相机主体相对于遮挡物体的位置,更具体地说,它发生在物体足够靠近照相机主体以至于其会损害一个或多个对撞机刺针时(即它在对撞机刺针的长度范围内)。当一个或多个对撞机刺针受损时,对撞机模块会改变相机位置,以使对撞机刺针返回到不受损害的情况。为此,对撞机模块沿着受损对撞机刺针的方向将相机从遮挡物体移开。受损的对撞机刺针可以被认为是3D虚拟空间中的矢量方向。例如,如果相机在其左侧具有受损的刺针,则对撞机模块将向右移动相机(例如沿着对撞机刺针的矢量方向),直到对撞机刺针不再受到该物体的损害。在一些实施例中,对撞机刺针自动地包括在相机和目标之间,并且延伸自相机和目标的一些或全部距离,从而基于介入物体触发遮挡。如果多个对撞机刺针受到损害,则对撞机模块将移动相机以消除所有受损的刺针;换句话说,对撞机模块将沿着多个对撞机刺针方向的矢量和的方向移动相机。根据实施例,对撞机模块将使用合成模块来确保在相机运动时(例如,在校正受损的刺针时)保持对象的合成视域。对撞机模块调整相机主体的位置,而合成模块同时调整相机取向以将合成目标保持在目标区中。
根据实施例,存在涉及合成保存(compositional preservation)的第二类型的遮挡,其中来自目标区内的对象的视图被位于相机和对象之间的物体遮挡。在该第二种情况下,对撞机模块在3D环境中投影光谱线(称为“目标光线”),其从相机原点延伸到对象目标(例如,对象上的点)。该目标光线通常不通过屏幕的中心,因为它可以用相机合成模块经由对象目标和目标区进行调整(例如,如果用户决定与屏幕边缘处的目标区组成镜头)。目标光线可以被认为是3D环境中的矢量。
根据实施例,当目标光线受损时(例如,当物体与目标光线相交时),对撞机模块将沿目标光线(例如,沿目标光线矢量方向)朝着对象移动相机,直到相机处于不再被物体遮挡的位置,并且目标光线不再受到损害。在一些实施例中,该移动发生在单个帧内(例如,相机跳到新位置)。换句话说,相机由对撞机模块向前移动,直到其具有带有适当合成的对象的清晰镜头(例如,当相机移动位置时使用合成模块将目标维持在目标区内)。根据实施例,目标光线的长度可以小于从相机到对象的距离,以便它在到达对象目标之前结束。在到达对象目标之前结束的目标光线消除了与物体相交的可能性,该物体如此靠近对象使得它不可能被绕过同时维持良好镜头。短的目标光线还消除了允许对撞机模块推拉相机使得如此接近对象以使得有意义的合成成为不可能(例如,避免极端特写)的可能性。还可以定义目标光线长度,使得其超过对象目标而突出并且在另一侧出现,从而允许目标光线与对象后面的物体的相交。
根据实施例并且在图6D中的流程图中示出,对撞机模块试图通过在目标光线受损害之前将相机推回其原始位置来保持原始相机高度。在一些实施例中,该移动发生在单个帧内(例如,相机跳转到由以下方法确定的新位置)。在其他实施例中,用于将相机推回的以下方法发生的频率较低,这可有助于降低计算负担。为此,对撞机模块在负方向(例如,远离目标)沿着相机轴反向投射光线(这里称为负光线),直到负光线与原始相机高度所定义的水平面相遇。如果可以在没有中间障碍物的情况下到达原始相机高度的平面,则将相机放在负光线与原始相机高度的平面相交的点处,并退出(例如,转到图6A中的点'A')。如果遇到障碍物,则对撞机模块采取以下步骤:步骤1,将负光线投影到由负光线击中障碍物的点处的障碍物法线定义的平面上。步骤2,将新光线方向定义为负光线到由障碍物法线定义的平面上的投影。启动内角的特定情况(例如,如果负光线在沿着2个障碍物相遇的线的点处击中障碍物),则将负光线到该交叉的线的投影作为新光线方向。如果新光线方向未指向原始相机高度的平面,则将相机保留在此处,并退出试图保持相机高度的模式。步骤4,对撞机模块沿新光线方向延伸光线,当到达原始相机高度的平面,或者击中另一个障碍物,或者到达当前障碍物的边界框的边缘时停止。如果达到原始相机高度的平面,则在此时离开相机,并退出(例如,转到图6A中的点'A')。如果已达到最大迭代次数,则在此时离开相机并退出(例如,转到图6A中的点'A')。如果到达另一个障碍物,则通过返回步骤1开始新的迭代(例如,转到图6D中的点'C')。如果到达当前障碍物边界框的边缘,则将相机轴重新定义为从目标到此处的方向,并开始试图保持原始相机高度的新迭代(例如,转到图6D中的点'D')。
根据实施例并且在图6E中示出的是使用图6D中描述的方法示出相机移动的虚拟环境的示意图。在该示例中,在第一帧处,当障碍物使目标光线模糊不清时,相机处于位置0(pos 0)。在模拟和绘制第二帧之前,对撞机模块将相机移动到位置1(pos 1)以避开障碍物。然而,位置1更接近目标并且在仍然避开障碍物的同时不维持原始相机高度。因此,对撞机模块尝试将相机移回相机的原始位置,但该位置被物体阻挡。然后,对撞机模块将相机向上推向物体墙,直到它到达位置2(pos 2)处的物体的顶部。然后,对撞机模块旋转相机,使相机轴再次指向目标,然后将相机推回,直到它位于位置3(pos 3)的原始相机高度平面处。从pos 1到pos3的这种移动可以在单个标准视频帧内执行。
根据实施例并且在图6F中的流程图中示出,对撞机模块尝试通过在目标光线被损害之前将相机推回其原始位置来保持原始相机距离。在一些实施例中,该移动发生在单个帧内(例如,相机跳转到由以下方法确定的新位置)。在其他实施例中,用于将相机推回的以下方法发生的频率较低,这可有助于降低计算负担。为此,对撞机模块在负相方向(例如,远离目标)反向沿着相机轴投射光线(此处称为负光线),直到负光线遇到由距目标的原始相机距离定义的垂直平面。如果可以在没有中间障碍物的情况下到达原始相机距离的平面,则将相机放在负光线与原始相机距离的平面相交的点处,并退出(例如,转到图6A中的点'A')。如果遇到障碍物,则对撞机模块采取以下步骤:步骤1,将负光线投影到由负光线击中障碍物的点处的障碍物法线定义的平面上。步骤2,将新光线方向定义为负光线到由障碍物法线定义的平面上的投影。启动内角的特定情况(例如,如果负光线在沿着2个障碍物相遇的线的点处击中障碍物),则将负光线到该交叉的线的投影作为新光线方向。如果新光线方向未指向原始相机距离的平面,仅将相机留在此处,并退出试图保持相机距离的模式。步骤4,对撞机模块在新光线方向上延伸光线,当到达原始相机距离的平面,或者击中另一个障碍物,或者到达当前障碍物的边界框的边缘时停止。如果到达原始相机距离的平面,则在此时离开相机,并退出(例如,转到图6A中的'A'点)。如果已达到最大迭代次数,则在此时离开相机并退出(例如,转到图6A中的点'A')。如果到达另一个障碍,则通过返回到步骤1开始新的迭代(例如,转到图6F中的点'F')。如果到达当前障碍物的边界框的边缘,则将相机轴重新定义为从目标到此处的方向,并开始试图保持原始相机高度的新迭代(例如,转到图6F中的点'G')。
根据实施例并且在图6G中示出的是使用图6F中描述的方法示出相机移动的虚拟环境的示意图。在该示例中,在第一帧处,当障碍物使目标光线模糊不清时,相机处于位置0(pos 0)。在模拟和绘制第二帧之前,对撞机模块将相机移动到位置1(pos 1)以避开障碍物。然而,位置1更接近目标并且在仍然避开障碍物的同时不维持至目标的原始相机距离。因此,对撞机模块尝试将相机移回相机的原始位置,但被物体阻挡。根据该方法,对撞机模块将相机向上推向物体墙,直到它到达位置2(pos 2)处的物体的顶部。然后,对撞机模块旋转相机,以便相机轴再次指向目标,然后将相机向后推,直到它处于位置3(pos 3)的原始相机距离平面处。从pos1到pos 3的这种移动可以在单个标准视频帧内发生。
作为对撞机模块对物体遮挡的反应的示例,图7A、7B和7C示出了三个遮挡情景,其中遮挡物体越过相机屏幕从左向右移动。在图7A中,遮挡物体仅覆盖屏幕的左侧并且不遮挡大象的任何部分。在这种情况下,对撞机模块不会移动相机。在图7B中,遮挡物体覆盖屏幕左侧的大部分屏幕区域并遮挡大象的大部分,但仍然不遮挡对象目标。同样,这不会导致对撞机模块移动相机。然而,在图7C中,遮挡物体覆盖了屏幕的大部分并且最终覆盖了相机屏幕右上方的对象目标。由于遮挡物体覆盖了对象目标,因此它将与目标光线相交并使对撞机模块将相机移向对象以越过遮挡物体。
在一些实施例中,当确定是否以及何时基于被遮挡的视线作出反应时,对撞机模块可以利用最小障碍物距离。基于障碍物和相机之间的距离,可以忽略一些遮挡物体(例如,不改变相机位置)。例如,如果附近的物体小于距相机的最小障碍物距离,则可以忽略它们,因为它们很可能在前景中快速通过。在一些实施例中,当确定是否基于被遮挡的视线(例如,物体的大小,当前轨迹和相机或目标的速度)做出反应时,或基于遮挡物体以及相机的速度和当前轨迹确定计算的遮挡时间,可以使用附加因子。
根据实施例,提供了一种使用对撞机模块和在此称为元相机的特定相机进行相机镜头评估的方法。元相机是高级相机,其包含多个子相机,每个子相机产生子镜头。每个子相机可以包含或使用对撞机模块。可以设置元相机,以便每个子相机具有任何类型的子镜头(例如,它们不必遵循任何类型的电影主题)。例如,子相机可以在程序上偏移对象“后5米并且距离脸部1米下”,或者它可以是世上的固定相机,或者它可以是自由观看相机,其具有子相机和对象之间的任何数目的位置和角度约束/关系。
虽然元相机对任何类型的子相机配置完全开放,但是当子相机是主题(themes)中的设置时它可以更有效,因此它们都具有某种概念上的相似性。根据实施例,可以安设元相机,以便所有子相机具有子镜头,这些子镜头是单个概念类型的相机镜头的变异(例如,头部镜头,宽镜头,远镜头,等等)。例如,元相机可以被安设为“头部镜头”元相机,以便每个子镜头是对象的头部镜头的变异。每个头部镜头子相机将具有不同的参数以产生头部镜头的不同变异(例如,自对象的不同的角度、距离、视场)。
根据实施例,当实现时(例如在计算机程序中),元相机将评估其包含的所有子相机的镜头质量,对它们进行排位,并提供具有最高质量排位的单个子镜头。更具体地说,当触发元相机时,它将激活所有子相机并快速执行对它们中的每一个的分析,以确定“镜头质量”,然后仅播放最高质量的子相机。这种情况很快发生,最多延迟一帧。
在示例性实施例中,可以如下确定镜头质量:首先给每个子相机提供满分。在子相机的初始化之后(例如,激活用于子相机的对撞机模块),基于用于子相机的对撞机模块的动作来调整子相机的得分。如果对撞机模块必须移动子相机(例如,因为子相机被阻挡而不能看到对象或者有东西挡住了子镜头),则向下调整得分。得分调整量取决于相机已经被对撞机模块移动的程度。即使在自对撞机模块移动之后,子相机也不能得到对象的镜头,则确定镜头是失败的(例如,可以将得分调整为零)。具有高得分(例如,接近满分)的子相机将比具有较低得分的子相机移动得少。没有被对撞机模块移动的子相机(例如,它们具有完美的镜头)排位最高并保持满分。
在一些实施例中,在确定镜头质量时考虑许多标准。这些标准可以包括,例如,目标是否被从相机的视点遮挡(例如,如果对撞机模块必须移动相机),遮挡的持续时间(如果有的话)(例如,持续时间越长镜头质量越差),相机是否已从其理想位置移位(例如,由于来自对撞机模块的碰撞分辨率),从相机到目标的距离(例如,如下所述),镜头合成(例如,镜头是否在边界内),目标在游戏环境中的重要性(例如,诸如特定的游戏玩家的目标可以通过游戏逻辑或直接由游戏的玩家以重要性排位),或者选择特定镜头是否尊重电影规则(例如,电影规则可以应用于多个镜头,因此这取决于一个或多个先前镜头,例如新镜头是否违反电影规则)。
在一些实施例中,在选择特定子相机视域时,对撞机模块可以利用镜头优先级和镜头质量两者作为因素。例如,镜头优先级可以包括这些因素,诸如哪个团队成员或区域在子相机的视场中(例如,聚焦于最有效的玩家,或者在游戏的中心的特定位置),或者由玩家或游戏采取的当前动作的性质(例如,聚焦于玩家之间的战斗,或者当玩家在游戏中拿起感兴趣的物体时)。这样,可以将镜头优先级与镜头质量一起加权以选择特定的子相机视域。在一些实施例中,可以基于镜头质量或镜头优先级来应用随机化。例如,如果多个子相机具有相似得分的镜头质量或镜头优先级,则对撞机模块可以随机化选择哪个子相机视域,从而提供各种相机视域而不必牺牲镜头质量或镜头优先级。
在一些实施例中,对撞机模块识别目标距离并基于该目标距离评估各种子相机的镜头质量。例如,用户可能更喜欢20码的动作视域。这样,对撞机模块可以基于目标距离选择子相机,加权更远或更近的那些之上大约20码的子相机视域。在一些实施例中,当评估作为镜头质量的因子的目标距离时(例如,直到目标距离的某个预定倍数),对撞机模块可以利用线性衰减。
在一些实施例中,轨道换位器与目标上的跟随相机一起使用。合成模块可以添加用于航向偏置的附加控制,基于位置增量、矢量、或世界航向、多个混合模式和每轴阻尼控制来跟随。可配置的高斯滤波器可用于平滑速度测定。提炼或平滑某些瞬时移动(例如,汽车的小型颤动或颤搐到停止)并将相机视域聚焦在目标的更重要的移动上可能是有利的。可以利用低通高斯滤波器来平滑这种小的移动。
在一些实施例中,合成模块可以基于对象距离自动调整相机的视场,以在屏幕上保持物体为相同尺寸。例如,合成模块可以调整视场(例如,跟随相机的视场)以将目标的头部的大小保持为一定尺寸。因此,即使当距离改变时,或者当角色四处移动时,也可以控制切片之间的物体尺寸。在一些实施例中,可以沿着目标距离配置帧覆盖的世界大小(worldsize of frame coverage)。合成模块可以动态地调整视场以在目标距离处维持尺寸。阻尼设置可以允许控制变化的时间紧密度。
在一些实施例中,合成模块可以利用状态驱动相机视域来提供相机和动画状态的无代码联接。开发人员可以针对各种动画触发不同的相机行为。例如,当角色冲刺时可以触发“手持相机”。当设置动画目标时(例如,当开发者将动画序列设置为目标时),合成模块扫描动画状态机,该动画状态机与搜索分层状态的该动画目标相关联,并创建具有所有状态的表(例如,在所有层次级上)。然后,合成模块将特定虚拟相机与每个状态相关联。该关联可以通过允许每个状态与特定虚拟相机连接的用户界面来完成,或者该关联可以是基于规则的,以便一定类型的所有状态与特定虚拟相机连接。在游戏期间,当状态变为活动时,则由合成模块激活关联的虚拟相机。如果没有与特定状态相关联的虚拟相机,则忽略该状态转换并且当前活动相机保持不变。在一些实施例中,可以为虚拟相机转换提供定制混合规则。
利用元相机、对撞机模块和镜头评估之间的这种功能,可以创建多个元相机,每个包含多个子相机,以便创建这样的系统,其中无论发生什么,你总能够剪切到对象的良好角度。
图8A是说明用于状态驱动相机的用户界面面板的屏幕截图。该面板允许用户控制动画状态和虚拟相机之间的联接,以及镜头之间的混合。
图8B是说明游戏中的动态填充的状态下拉列表的屏幕截图(例如,当用户点击状态按钮时)。用户可以选择列表中的任何可用状态。
图8C是说明点击相机按钮的结果的屏幕截图。点击“相机”可显示场景中的所有相机,并允许用户选择任何相机并将其与任何选定状态联接。这允许任何特定状态与任何特定相机的联接(例如,无需用户编码)。
图8D是说明状态驱动相机如何可以混合在一起(例如,从相机1上的镜头到相机2上的镜头)的屏幕截图。可以由用户在该用户界面中使用图中称为定制混合的组件来定义混合。
图8E是说明具有优先级控制的所有相机的用户定义列表的屏幕截图,所述相机将被暴露给状态驱动相机(例如,定义哪些相机被状态驱动相机看到)。这在图中称为虚拟相机儿童(virtual camera children)。这允许用户控制每个相机的优先级并提供更好的清晰度。
图8F是说明对单个状态驱动相机系统的总体优先级的控制的屏幕截图。在一些实施例中,可以有许多状态相机驱动的系统在同一游戏上工作,每个具有相对于其他的优先级,并且其儿童相机(child cameras)在每个状态驱动相机系统下具有它们自己的优先级。
图9是由用户(或“佩戴者”)1200穿戴的示例性头戴式显示器(HMD)1202的图。在示例性实施例中,用户1200(例如,游戏开发者或游戏玩家)在佩戴HMD 1202时体验VR环境或增强现实(AR)内容(例如,混合现实环境)。在示例性实施例中,HMD设备1202可以包括不透明遮阳板1208,其可以遮蔽佩戴者1200的现实世界的视域,并且可以向佩戴者1200显示完整的虚拟环境。在其他实施例中,HMD设备1202包括透明或半透明遮阳板(或“透镜”或“复数个透镜”)108,佩戴者1200通过该遮阳板观察其周围环境(在本文中也称为“现实世界”)。应当理解,为了说明的目的,遮阳板1208在图9中图示为透明的,但是如上所述,遮阳板1208在一些实施例中可以是不透明的。
在示例性实施例中,HMD 1202还包括显示设备1218,其将图形(例如,虚物)呈递到遮阳板1208上。这样,遮阳板1208用作“屏幕”或表面,显示设备1218的输出出现在其上,并且佩戴者1200通过其体验虚拟内容。在一些实施例中,HMD 1202可以经由遮阳板呈现两个不同的投影(例如,每只眼睛一个)。显示设备1218由一个或多个GPU 1206或全息投影单元(HPU)驱动或控制。GPU 1206处理图形输出的各个方面,其有助于加速通过显示设备1218的输出的呈递。
在示例性实施例中,HMD设备1202还包括一个或多个中央处理单元(CPU)1205,其可以执行本文描述的一些操作和方法。HMD设备1202还包括音频设备1212(例如,扬声器,未单独描绘),其被配置成向佩戴者1200呈现音频输出(例如,经由用户1200的耳朵1216)。虽然未单独示出,但HMD设备1202还包括有助于HMD与本文描述的其他计算设备之间的通信的有线或无线网络适配器(例如,Wi-Fi,蓝牙,蜂窝)。
在一些实施例中,HMD设备1202包括数码相机设备1210。数码相机设备(或仅“相机”)1210是面向前方的视频输入设备,其被定向以便成捕获佩戴者1200的视场(FOV)的至少一部分。换句话说,相机1210基于HMD设备1202的取向捕获或“看到”现实世界的视角(例如,类似于佩戴者1200在穿过遮阳板1208看时,在佩戴者1200的FOV中看到的内容)。相机设备1210可以被配置成捕获用户1200周围的现实世界数字视频(例如,视场,外围视域或佩戴者1200周围的360°视域)。相机设备1210可以用于捕获用户1200周围的现实世界环境的数字视频。在一些实施例中,来自数码相机设备1210的输出可以投影到遮阳板1208上(例如,在不透明的遮阳板实施例中),并且还可以包括附加的虚拟内容(例如,添加到相机输出)。在一些实施例中,相机1210可以是深度相机,或者HMD设备1202可以另外包括深度传感器,捕获用户1200的FOV内的物体的深度信息。
在一些实施例中,HMD设备1202可以包括一个或多个传感器(未单独示出),或者可以与传感器有线或无线通信的方式耦合(例如,通过近场通信(NFC)与也由佩戴者1200穿戴的腕部可穿戴设备耦合)。例如,HMD 1202可以包括运动或位置传感器,其被配置成确定HMD1202的位置或取向或附近的现实世界物体的位置。在一些实施例中,HMD设备1202可以包括用于捕获音频输入(例如,用户1200的口头声音)的麦克风。
在一些实施例中,HMD 1202可以类似于虚拟现实HMD,诸如Oculus RiftTM,HTCViveTM,Playstation VRTM,等等。在一些实施例中,HMD102可以类似于增强现实HMD,诸如GoogleMicrosoftMagic LeapTM HMD,MetaTM HMD,等等。在一些实施例中,HMD 1202还可以包括一个或多个传感器(未示出),例如全球定位系统(GPS)接收器(例如,用于确定用户设备1202的GPS位置),生物传感器(例如,用于捕获用户1200的生物特征数据),运动或位置传感器(例如,用于捕获用户1200或其他物体的位置数据),深度相机(例如,使用LIDAR)或音频麦克风(例如,用于捕获声音数据)。一些传感器可以在HMD 1202的外部,并且可以被配置成与HMD 1202无线通信(例如,在MicrosoftViveTrackerTM,MIT的激光雷达传感器,或MIT的无线情感检测器中使用)。
在一些实施例中,用户1200可以握住一个或多个手跟踪设备(“手持设备”)(图9中未单独示出)(例如,每只手中一个)。手持设备提供关于用户手的绝对或相对位置和取向的信息,并且因此能够捕获手势信息。手持设备可以被配置成直接与HMD 1202一起操作(例如,通过有线或无线通信)。在一些实施例中,手持设备可以是Oculus TouchTM手动控制器,HTC ViveTM手跟踪器,或Playstation VRTM手动控制器。手持设备还可以包括内置于手持设备中的一个或多个按钮或操纵杆。在其他实施例中,用户1200可以穿戴一个或多个可穿戴的手跟踪设备(例如,运动跟踪手套,未示出),例如由Manus VR(荷兰)制造的商业上可获得的那些。仍然在其他实施例中,可以通过手位置传感器(未示出,例如,使用光学方法跟踪用户的手的位置和取向),例如,由Leap Motion公司(加利福尼亚公司)制造的商业上可获得的那些,跟踪用户1200的手部运动,而不用或除了手持设备或可穿戴的手跟踪设备。这种手跟踪设备(例如,手持设备)在操作期间跟踪用户的一只或多只手的位置。
在操作期间,在示例性实施例中,HMD1202安装在佩戴者的头部1204上,并且安装在佩戴者1200的两只眼睛1214上,如图9所示。可以向佩戴者1200呈现虚拟环境或混合现实环境,其可以经由如本文所述的HMD 1202和手持设备来体验。此外,本文描述的系统(未在图9中单独示出)可以与HMD 1202结合使用,如本文所述。例如,合成模块和对撞机模块可用于控制第二虚拟环境中的一个或多个虚拟相机,其中通过HMD 1202体验的虚拟环境或混合现实环境内的虚拟屏幕,一个或多个虚拟相机的输出被显示给佩戴者1200。虚拟屏幕可以在所述环境中浮动(例如,相对于佩戴者1200的运动而固定)或者钉住虚拟环境或混合现实环境中的物体。例如,在混合现实环境中,虚拟屏幕可以是现实世界墙壁上的增强现实虚拟投影。在虚拟现实环境中,虚拟屏幕可以是虚拟墙壁上的虚拟投影。第二虚拟环境可以包括其中虚拟相机可操作(例如,由对撞机模块和合成模块控制)的任何3D虚拟环境,包括视频游戏环境(现场或录制的),3D模拟环境和3D电影环境。这样,佩戴者1200可以在观看投影到沙发椅附近的墙壁上的虚拟屏幕的同时,坐在房间中的沙发椅上体验混合现实环境,并且其中虚拟屏幕显示现场视频游戏环境(例如,在线直播多玩家视频游戏),从而通过由对撞机模块和合成模块控制的视频游戏环境中的一个或多个虚拟相机看到现场视频游戏环境的视域。
本文将某些实施例描述为包括逻辑或多个组件、模块或机制。模块可以构成软件模块(例如,在机器可读存储介质上或在传输信号中体现的代码)或硬件模块。“硬件模块”是能够执行某些操作的有形单元,并且可以以某种物理方式配置或布置。在各种示例性实施例中,一个或多个计算机系统(例如,独立计算机系统,客户端计算机系统或服务器计算机系统)或计算机系统的一个或多个硬件模块(例如,处理器或一组处理器)可以通过软件(例如,应用程序或应用程序部分)将其配置为硬件模块,其用于执行如本文所述的某些操作。
在一些实施例中,硬件模块可以机械地、电子地或利用其任何合适的组合来实现。例如,硬件模块可以包括永久配置成执行某些操作的专用电路或逻辑。例如,硬件模块可以是专用处理器,例如现场可编程门阵列(FPGA)或专用集成电路(ASIC)。硬件模块还可以包括由软件临时配置以执行某些操作的可编程逻辑或电路。例如,硬件模块可以包括包含在通用处理器或其他可编程处理器内的软件。应当理解,在专用和永久配置的电路中或在临时配置(例如,由软件配置)的电路中,机械地实现硬件模块的决定可以由成本和时间因素驱动。
因此,短语“硬件模块”应该被理解为包含有形实体,即被物理构造、永久配置(例如,硬连线)或临时配置(例如,编程)以某种方式操作或者执行本文描述的某些操作的实体。如这里所使用的,“硬件实现的模块”指的是硬件模块。考虑临时配置(例如,编程)硬件模块的实施例,不需要在任何一个时刻配置或例示每个硬件模块。例如,在硬件模块包括由软件配置成为专用处理器的通用处理器的情况下,通用处理器可以在不同时间被配置成分别不同的专用处理器(例如,包括不同的硬件模块)。因此,软件可以配置特定的处理器或多个处理器,例如,以便在一个时刻构成特定的硬件模块,以及在不同的时刻构成不同的硬件模块。
硬件模块可以向其他硬件模块提供信息并从其接收信息。因此,所描述的硬件模块可以被视为通信地耦合。在同时存在多个硬件模块的情况下,可以通过在两个或更多个硬件模块之间或之中的信号传输(例如,在适当的电路和总线上)来实现通信。在其中在不同时间配置或例示多个硬件模块的实施例中,可以例如通过存储和检索多个硬件模块可访问的存储器结构中的信息,来实现这些硬件模块之间的通信。例如,一个硬件模块可以执行操作并将该操作的输出存储在与其通信耦合的存储器设备中。然后,另一硬件模块可以稍后访问该存储器设备以检索和处理所存储的输出。硬件模块还可以启动与输入或输出设备的通信,并且可以对资源(例如,信息集合)进行操作。
本文描述的示例性方法的各种操作可以至少部分地由临时配置成(例如,通过软件)或永久配置成执行相关操作的一个或多个处理器来执行。无论是临时配置还是永久配置,这样的处理器可以构成处理器实现的模块,其用于执行本文描述的一个或多个操作或功能。如这里所使用的,“处理器实现的模块”指的是使用一个或多个处理器实现的硬件模块。
类似地,这里描述的方法可以至少部分地是处理器实现的,其中特定处理器或多个处理器是硬件的示例。例如,方法的至少一些操作可以由一个或多个处理器或处理器实现的模块执行。此外,一个或多个处理器还可以操作以支持“云计算”环境中的相关操作的性能,或作为“软件即服务”(SaaS)。例如,至少一些操作可以由一组计算机(作为包括处理器的机器的示例)执行,经由网络(例如,因特网)以及经由一个或多个适当的接口(例如,应用程序接口(API))这些操作是可访问的。
某些操作的性能可以在处理器之间分配,不仅驻留在单个机器中,而且部署在多个机器上。在一些示例性实施例中,处理器或处理器实现的模块可以位于单个地理位置(例如,在家庭环境,办公室环境或服务器群内)。在其他示例性实施例中,处理器或处理器实现的模块可以分布在许多地理位置上。
图10是说明示例性软件架构802的框图800,其可以与本文描述的各种硬件架构结合使用。图8是软件架构的非限制性示例,并且应当理解,可以实现许多其他架构以促进本文描述的功能。软件架构802可以在诸如图11的机器900之类的硬件上执行,除了别的之外其包括处理器910、存储器930和输入/输出(I/O)组件950等。图示了代表性硬件层804,其可以表示例如图11的机器900。代表性硬件层804包括具有相关联的可执行指令808的处理单元806。可执行指令808表示软件架构802的可执行指令,包括本文描述的方法、模块等等的实现。硬件层804还包括存储器/贮存器810,其还包括可执行指令808。硬件层804还可以包括其他硬件812。
在图8的示例性架构中,软件架构802可以概念化为层的堆栈,其中每个层提供特定功能。例如,软件架构802可以包括这样的层,诸如操作系统814、库816、框架或中间件818、应用程序820和表示层844。在操作上,层中的应用程序820和/或其他组件可以通过软件栈调用应用程序编程接口(API)调用824,并且作为消息826接收响应。所示的层本质上是代表性的,并非所有软件架构都具有所有层。例如,一些移动或专用操作系统可能不提供框架/中间件818,而其他操作系统可能提供这样的层。其他软件架构可以包括另外的或不同的层。
操作系统814可以管理硬件资源并提供公共服务。操作系统814可以包括例如内核828、服务830和驱动器832。内核828可以充当硬件层和其他软件层之间的抽象层。例如,内核828可以负责存储器管理,处理器管理(例如,调度),组件管理,网络系统,安全设置,等等。服务830可以为其他软件层提供其他公共服务。驱动器832可以负责控制底层硬件或与底层硬件接口。例如,取决于硬件配置,驱动器832可以包括显示驱动器、相机驱动器、蓝牙驱动器、闪存驱动器、串行通信驱动器(例如,通用串行总线(USB)驱动器)、驱动器、音频驱动器、电源管理驱动器,诸如此类。
库816可以提供可由应用程序820和/或其他组件和/或层使用的公用基础设施。库816通常提供这样的功能,其允许其他软件模块以比与底层操作系统814功能(例如,内核828、服务830和/或驱动器832)直接接口更容易的方式执行任务。库816可以包括系统库834(例如,C标准库),其可以提供诸如存储器分配功能、字符串处理功能、数学功能等的功能。另外,库816可以包括API库836,诸如媒体库(例如,用于支持各种媒体格式的呈现和操纵的库,诸如MPEG4,H.264,MP3,AAC,AMR,JPG,PNG),图形库(例如,可用于在显示器上呈递2D和3D图形内容的OpenGL框架),数据库库(例如,可提供各种关系数据库功能的SQLite),web库(例如,可提供web浏览功能的WebKit),等等。库816还可以包括各种其他库838,以向应用程序820和其他软件组件/模块提供许多其他API。
框架818(有时也称为中间件)提供可由应用程序820和/或其他软件组件/模块使用的更高级别的公用基础结构。例如,框架/中间件818可以提供各种图形用户界面(GUI)功能,高级资源管理,高级位置服务,等等。框架/中间件818可以提供可以由应用程序820和/或其他软件组件/模块使用的广谱的其他API,其中一些可以专用于特定操作系统或平台。
应用程序820包括内置应用程序840和/或第三方应用程序842。代表性内置应用程序840的示例可以包括但不限于联系人应用程序,浏览器应用程序,书籍阅读器应用程序,位置应用程序,媒体应用程序,消息传递应用程序和/或游戏应用程序。第三方应用程序842可以包括由特定平台的供应商以外的实体使用AndroidTM或iOSTM软件开发工具包(SDK)开发的任何应用程序,并且可以是在诸如iOSTM、AndroidTMPhone或其他移动操作系统的移动操作系统上运行的移动软件。第三方应用程序842可以调用由诸如操作系统814之类的移动操作系统提供的API调用824,以促进本文描述的功能。
应用程序820可以使用内置操作系统功能(例如,内核)828,服务830和/或驱动器832)、库816或框架/中间件818,以创建用户界面以与系统的用户交互。替代地或另外地,在一些系统中,与用户的交互可以通过表示层发生,例如表示层844。在这些系统中,应用程序/模块“逻辑”可以与与用户交互的应用程序/模块的各个方面分离。
某些软件架构使用虚拟机。在图8的示例中,这由虚拟机848示出。虚拟机848创建软件环境,其中应用程序/模块可以像在硬件机器(例如,图11的机器900)上执行一样而执行。虚拟机848由主机操作系统(例如,操作系统814)托管,并且通常但不总是具有虚拟机监视器846,其管理虚拟机848的操作以及与主机操作系统(即操作系统814)的接口。软件架构在虚拟机848内执行,诸如操作系统(OS)850,库852,框架854,应用程序856和/或表示层858。在虚拟机848内执行的软件架构的这些层可以与先前描述的相应层相同或可以是不同的。
图11是说明根据一些示例性实施例的机器900的组件的框图,其被配置成从机器可读介质(例如,机器可读存储介质)读取指令并执行本文所讨论的任何一种或多种方法。在一些实施例中,机器110类似于HMD102。具体地,图11示出了计算机系统的示例性形式的机器900的图形表示,在其中用于使机器900执行本文所讨论的任何一种或多种方法的指令916(例如,软件,程序,应用程序,小应用程序,app或其他可执行代码)可以被执行。这样,指令916可以用于实现本文描述的模块或组件。该指令将通用的、未编程的机器转换成特定的机器,该特定的机器被编程以所描述的方式执行所描述和示出的功能。在备选实施例中,机器900作为独立设备操作或者可以耦合(例如,联网)到其他机器。在联网部署中,机器900可以在服务器-客户端网络环境中以服务器机器或客户端机器的身份运行,或者作为对等(或分布式)网络环境中的对等机器运行。机器900可以包括但不限于服务器计算机,客户端计算机,个人计算机(PC),平板计算机,膝上型计算机,上网本,机顶盒(STB),个人数字助理(PDA),娱乐媒体系统,蜂窝电话,智能电话,移动设备,可穿戴设备(例如,智能手表),智能家居设备(例如,智能家电),其他智能设备,网络设备,网络路由器,网络交换机,网络桥接器,或者能够顺序地或以其他方式执行指令916的任何机器,其规定机器900要采取的动作。此外,虽然仅示出了单个机器900,但术语“机器”还应被视为包括单独或联合执行指令916以执行本文所讨论的任何一种或多种方法的机器的集合。
机器900可以包括处理器910,存储器930和输入/输出(I/O)组件950,其可以被配置成例如经由总线902彼此通信。在示例性实施例中,处理器910(例如,中央处理单元(CPU),精简指令集计算(RISC)处理器,复杂指令集计算(CISC)处理器,图形处理单元(GPU),数字信号处理器(DSP),专用集成电路(ASIC),射频集成电路(RFIC),另一处理器或其任何合适的组合)可包括例如处理器912和处理器914,其可执行指令916。术语“处理器”旨在包括多核处理器,其可以包括可以同时执行指令的两个或更多个独立处理器(有时称为“核”)。尽管图11示出了多个处理器,但是机器900可以包括具有单个核的单个处理器,具有多个核的单个处理器(例如,多核处理器),具有单个核的多个处理器,具有多个核的多个处理器,或者它们的任何组合。
存储器/贮存器930可以包括存储器,例如主存储器932、静态存储器934或其他存储器,以及存储单元936,两者都可以例如通过总线902由处理器910访问。存储单元936和存储器932、934存储使本文描述的方法或功能中的任何一个或多个具体化的指令916。指令916还可以在由机器900执行期间,完全或部分地驻留在存储器932、934内,存储单元936内,处理器910中的至少一个内(例如,处理器的高速缓冲存储器内),或其任何合适的组合内。因此,存储器932、934,存储单元936和处理器910的存储器是机器可读介质938的示例。
如这里所使用的,“机器可读存储介质”意思是能够临时或永久地存储指令和数据的设备,并且可以包括但不限于随机存取存储器(RAM),只读存储器(ROM),缓冲存储器,闪存,光学介质,磁介质,高速缓冲存储器,其他类型的存储器(例如,可擦除可编程只读存储器(EEPROM))和/或其任何合适的组合。术语“机器可读存储介质”应被视为包括能够存储指令916的单个介质或多个介质(例如,集中式或分布式数据库,或相关联的高速缓存和服务器)。术语“机器可读存储介质”还应被视为包括能够存储由机器(例如,机器900)执行的指令(例如,指令916)的任何介质或多个介质的组合,使得当由机器900的一个或多个处理器(例如,处理器910)执行时,该指令使机器900执行本文描述的任何一种或多种方法。因此,“机器可读存储介质”指单个存储装置或设备,以及包括多个存储装置或设备的“基于云的”存储系统或存储网络。术语“机器可读介质”包括机器可读介质和传输介质,例如信号。
输入/输出(I/O)组件950可以包括各种各样的组件以接收输入,提供输出,产生输出,发送信息,交换信息,捕获测量结果,等等。包括在特定机器中的特定输入/输出(I/O)组件950将取决于机器的类型。例如,诸如移动电话的便携式机器可能包括触摸输入设备或其他这样的输入机构,而无头服务器机器可能不包括这样的触摸输入设备。应当理解,输入/输出(I/O)组件950可以包括图11中未示出的许多其他组件。输入/输出(I/O)组件950根据功能分组仅仅是为了简化以下讨论,并且分组决不是限制性的。在各种示例性实施例中,输入/输出(I/O)组件950可以包括输出组件952和输入组件954。输出组件952可以包括可视组件(例如,诸如等离子显示板(PDP),发光二极管(LED)显示器,液晶显示器(LCD),投影仪或阴极射线管(CRT)的显示器),声学组件(例如,扬声器),触觉组件(例如,振动马达,阻力机构),其他信号发生器,等等。输入组件954可以包括字母数字输入组件(例如,键盘,配置成接收字母数字输入的触摸屏,光电键盘或其他字母数字输入组件),基于点的输入组件(例如,鼠标,触摸板,轨迹球,操纵杆,运动传感器或其他定点仪器),触觉输入组件(例如,物理按钮,提供触摸或触摸手势的位置和/或力的触摸屏,或其他触觉输入组件),音频输入组件(例如,麦克风),等等。
在另外的示例性实施例中,输入/输出(I/O)组件950可以包括广泛的其他组件中的生物测定组件956,运动组件958,环境组件960或定位组件962。例如,生物测定组件956可以包括用于检测表达(例如,手部表情,面部表情,声音表达,身体姿势或眼睛跟踪)的组件,测量生物信号(例如,血压,心率,体温,出汗或脑波),识别人(例如,语音识别,视网膜识别,面部识别,指纹识别或基于脑电图的识别),等等。运动组件958可以包括加速度传感器组件(例如,加速度计),重力传感器组件,旋转传感器组件(例如,陀螺仪),等等。环境组件960可以包括例如照明传感器组件(例如,光度计),温度传感器组件(例如,一个或多个检测环境温度的温度计),湿度传感器组件,压力传感器组件(例如,气压计),声学传感器组件(例如,一个或多个检测背景噪声的麦克风),接近传感器组件(例如,检测附近物体的红外传感器),气体传感器(例如,用于检测危险气体浓度以确保安全或测量大气中污染物的气体检测传感器),或可提供与周围物理环境相对应的指示、测量或信号的其他组件。定位组件962可以包括位置传感器组件(例如,全球定位系统(GPS)接收器组件),高度传感器组件(例如,检测可以从其导出高度的气压的气压计或高度计),方位传感器组件(例如,磁力计),等等。
可以使用各种技术来实现通信。输入/输出(I/O)组件950可以包括通信组件964,其可操作以分别经由耦合982和耦合972将机器900耦合到网络980或设备970。例如,通信组件964可以包括网络接口组件或与网络980接口的其他合适的设备。在其他示例中,通信组件964可以包括有线通信组件,无线通信组件,蜂窝通信组件,近场通信(NFC)组件,组件(例如,低功耗),组件,以及通过其他方式提供通信的其他通信组件。设备970可以是另一机器或各种外围设备中的任何一种(例如,经由通用串行总线(USB)耦合的外围设备)。
此外,通信组件964可以检测标识符或包括可操作以检测标识符的组件。例如,通信组件964可以包括射频识别(RFID)标签阅读器组件,NFC智能标签检测组件,光学阅读器组件(例如,用于检测下述代码的光学传感器:一维条形码(例如通用产品代码(UPC)条形码),多维条形码,如快速响应(QR)代码、Aztec代码、数据矩阵、Dataglyph、MaxiCode、PDF417、Ultra Code、UCC RSS-2D条形码,以及其他光学代码),或声学检测组件(例如,识别标记的音频信号的麦克风)。另外,可以经由通信组件962导出各种信息,诸如经由因特网协议(IP)地理位置的位置,经由信号三角测量的位置,经由检测可以指示特定的位置的NFC信标信号的位置,等等。
在整个说明书中,多个实例可以实现被描述为单个实例的组件、操作或结构。尽管一个或多个方法的各个操作被说明并被描述为单独的操作,但是可以同时执行一个或多个单独的操作,并且不需要以所说明的顺序执行操作。在示例性配置中作为单独组件呈现的结构和功能可以实现为组合的结构或组件。类似地,作为单个组件呈现的结构和功能可以实现为单独的组件。这些和其他变化、修改、添加和改进都落入本文主题的范围内。
以足够的细节描述本文所说明的实施例,以使本领域技术人员能够实践所公开的教导。可以使用其他实施例并可从中导出其他实施例,使得可以在不脱离本公开的范围的情况下可进行结构和逻辑替换和改变。因此,细节的描述不应被视为具有限制意义,并且各种实施例的范围仅由所附权利要求以及这些权利要求所赋予的等同物的全部范围来限定。
如本文所用,术语“或”可以以包含性或排他性的含义来解释。此外,可以为在本文中描述为单个实例的资源、操作或结构提供多个实例。另外,各种资源、操作、模块、引擎和数据存储之间的边界在某种程度上是任意的,并且特定操作在特定说明性配置的上下文中示出。设想了其他功能分配,并且可以落入本公开的各种实施例的范围内。通常,在示例性配置中作为单独资源呈现的结构和功能可以实现为组合的结构或资源。类似地,作为单个资源呈现的结构和功能可以实现为单独的资源。这些和其他变化、修改、添加和改进落入由所附权利要求表示的本公开的实施例的范围内。因此,说明书和附图应被视为说明性意义而非限制性意义。

Claims (21)

1.一种系统,包括:
一个或多个计算机处理器;
一个或多个计算机存储器;
合成模块,其被合并到所述一个或多个计算机存储器中,所述合成模块被配置成执行用于改变虚拟相机的取向的操作,以将对象的一部分保持在所述虚拟相机的屏幕上的目标区内,所述操作包括:
将软边界与所述目标区相关联;
将硬边界与所述目标区相关联;以及
基于检测到所述对象的所述部分已经移动到所述软边界和所述硬边界之间的位置,确定用于重新定向相机的跟踪时间,基于所述对象距所述目标区的偏差量确定所述跟踪时间,以及在所述跟踪时间内执行所述相机的取向的改变以使所述对象回到所述目标区。
2.根据权利要求1所述的系统,其中使用四元数、单位长度矢量和关于所述虚拟相机的2D空间中的单精度浮点计算,来执行所述对象的所述部分已经移动到所述软边界与所述硬边界之间的位置的检测。
3.根据权利要求1或2所述的系统,还包括:基于检测到所述对象的部分已经移动到超出与所述目标区相关联的所述硬边界的位置,将跟踪速度设置为零,以及执行所述取向的改变以使所述对象基本上立即回到所述硬边界的边缘。
4.根据任何前述权利要求所述的系统,还包括:对撞机模块,被配置成在与所述虚拟相机相关联的目标光线上向前移动所述虚拟相机,以避免已经损害所述目标光线的障碍物,所述目标光线从3D相机原点延伸通过相机屏幕上的目标区到与所述对象的所述部分相关联的3D坐标。
5.根据权利要求4所述的系统,其中所述对撞机模块还被配置成在所述障碍物损害所述目标光线之前,在与所述目标光线相关联的反向矢量方向上将所述虚拟相机移动到与所述虚拟相机相关联的原始高度;其中所述移动包括在一系列步骤上进行迭代,所述一系列步骤包括:
在远离所述目标的方向上沿着相机轴投射负光线,直到所述负光线遇到由所述原始高度限定的水平面;
基于所遇到的第二障碍物或所述障碍物,将所述负光线投影到所述负光线击中所述障碍物或所述第二障碍物的点处的障碍物法线限定的平面上;以及
将新光线方向定义为所述负光线到所述障碍物或所述第二障碍物的障碍物法线限定的平面上的投影;以及
在所述新光线方向上延伸新光线,当到达所述水平面或者击中第三障碍物或到达所述第三障碍物的边界框的边缘时停止;
基于到达所述第三障碍物,重复所述虚拟相机的移动;以及
基于到达所述边界框的所述边缘,将相机轴重新定义为从所述目标到当前相机位置的方向,并重复所述虚拟相机的移动。
6.根据权利要求4或5所述的系统,还包括附加合成模块和并入到所述一个或多个计算机存储器中的附加对撞机模块,所述附加合成模块和所述附加对撞机模块被配置成执行用于改变附加虚拟相机的取向和位置的操作,以将所述对象的所述部分保持在与所述附加虚拟相机相关联的目标区内,所述虚拟相机和所述附加虚拟相机包括元相机,所述元相机配置成基于由所述虚拟相机捕获的所述对象的所述部分的镜头的得分以及由所述附加虚拟相机捕获的所述对象的所述部分的镜头的得分,来选择所述虚拟相机或所述附加虚拟相机。
7.根据权利要求6所述的系统,其中由所述虚拟相机捕获的镜头的得分或由所述附加虚拟相机捕获的镜头的得分至少由所述对撞机模块、所述附加对撞机模块、所述合成模块、或所述附加合成模块的活动来确定;其中所述活动包括:
给予所述虚拟相机和所述附加虚拟相机的位移量;以及
给予所述虚拟相机和所述附加虚拟相机的旋转量。
8.一种方法,包括:
执行用于改变虚拟相机的取向的操作,以将对象的一部分保持在所述虚拟相机的屏幕上的目标区内,该操作包括:
将软边界与所述目标区相关联;
将硬边界与所述目标区相关联;以及
基于检测到所述对象的所述部分已经移动到所述软边界和所述硬边界之间的位置,确定用于重新定向所述相机的跟踪时间,基于所述对象距所述目标区的偏差量确定所述跟踪时间,以及在所述跟踪时间内执行所述相机的取向的改变以使所述对象回到所述目标区。
9.根据权利要求8所述的方法,其中使用四元数、单位长度矢量和关于所述虚拟相机的2D空间中的单精度浮点计算,来执行所述对象的所述部分已经移动到所述软边界与所述硬边界之间的位置的检测。
10.根据权利要求8或9所述的方法,还包括:基于检测到所述对象的部分已经移动到超出与所述目标区相关联的硬边界的位置,将跟踪速度设置为零,以及执行所述取向的改变以使所述对象基本上立即回到所述硬边界的边缘。
11.根据权利要求8至10中任一项所述的方法,还包括:对撞机模块,被配置成在与所述虚拟相机相关联的目标光线上向前移动所述虚拟相机,以避免已经损害所述目标光线的障碍物,所述目标光线从3D相机原点延伸通过相机屏幕上的目标区到与所述对象的所述部分相关联的3D坐标。
12.根据权利要求11所述的方法,其中所述对撞机模块还被配置成在所述障碍物损害所述目标光线之前,在与所述目标光线相关联的反向矢量方向上将所述虚拟相机移动到与所述虚拟相机相关联的原始高度;其中所述移动包括在一系列步骤上进行迭代,所述一系列步骤包括:
在远离所述目标的方向上沿着相机轴投射负光线,直到所述负光线遇到由所述原始高度限定的水平面;
基于所遇到的第二障碍物或所述障碍物,将所述负光线投影到所述负光线击中所述障碍物或所述第二障碍物的点处的障碍物法线限定的平面上;以及
将新光线方向定义为所述负光线到所述所述障碍物或所述第二障碍物的障碍物法线限定的平面上的投影;以及
在所述新光线方向上延伸新光线,当到达所述水平面或者击中第三障碍物或者到达所述第三障碍物的边界框的边缘时停止;
基于到达所述第三障碍物,重复所述虚拟相机的移动;以及
基于到达所述边界框的边缘,将所述相机轴重新定义为从所述目标到当前相机位置的方向,并重复所述虚拟相机的移动。
13.根据权利要求11或12所述的方法,还包括附加合成模块和并入到所述一个或多个计算机存储器中的附加对撞机模块,所述附加合成模块和所述附加对撞机模块被配置成执行用于改变附加虚拟相机的取向和位置的操作,以将所述对象的所述部分保持在与所述附加虚拟相机相关联的目标区内,所述虚拟相机和所述附加虚拟相机包括元相机,所述元相机配置成基于由所述虚拟相机捕获的所述对象的所述部分的镜头的得分和由所述附加虚拟相机捕获的所述对象的所述部分的镜头的得分,来选择所述虚拟相机或所述附加虚拟相机。
14.根据权利要求13所述的方法,其中由所述虚拟相机捕获的所述镜头的得分或由所述附加虚拟相机捕获的所述镜头的得分至少由所述对撞机模块、所述附加对撞机模块、所述合成模块、或所述附加合成模块的活动来确定;其中所述活动包括:
给予所述虚拟相机和所述附加虚拟相机的位移量;以及
给予所述虚拟相机和所述附加虚拟相机的旋转量。
15.一种存储一组指令的非暂时性机器可读介质,当由一个或多个处理器执行时,所述指令使得所述一个或多个处理器执行用于改变虚拟相机的取向的操作,以将对象的一部分保持在所述虚拟相机的屏幕上的目标区内,所述操作包括:
将软边界与所述目标区相关联;
将硬边界与所述目标区相关联;以及
基于检测到所述对象的所述部分已经移动到所述软边界和所述硬边界之间的位置,确定用于重新定向所述相机的跟踪时间,基于所述对象距所述目标区的偏差量确定所述跟踪时间,以及在所述跟踪时间内执行所述相机的取向的改变以使所述对象回到所述目标区。
16.根据权利要求15所述的非暂时性机器可读介质,其中使用四元数、单位长度矢量和关于所述虚拟相机的2D空间中的单精度浮点计算,来执行所述对象的所述部分已经移动到所述软边界和所述硬边界之间的位置的检测。
17.根据权利要求15或16所述的非暂时性机器可读介质,还包括:基于检测到所述对象的所述部分已经移动到超出与所述目标区相关联的所述硬边界的位置,将跟踪速度设置为零,以及执行所述取向的改变以使所述对象基本上立即回到所述硬边界的边缘。
18.根据权利要求15至17中任一项所述的非暂时性机器可读介质,还包括:对撞机模块,被配置成在与所述虚拟相机相关联的目标光线上向前移动所述虚拟相机,以避免已经损害所述目标光线的障碍物,所述目标光线从3D相机原点延伸通过所述相机屏幕上的所述目标区到与所述对象的所述部分相关联的3D坐标。
19.根据权利要求18所述的非暂时性机器可读介质,其中所述对撞机模块还被配置成在所述障碍物损害所述目标光线之前,在与所述目标光线相关联的反向矢量方向上将所述虚拟相机移动到与所述虚拟相机相关联的原始高度;其中所述移动包括在一系列步骤上进行迭代,所述一系列步骤包括:
在远离所述目标的方向上沿着相机轴投射负光线,直到所述负光线遇到由所述原始高度限定的水平面;
基于所遇到的第二障碍物或所述障碍物,将所述负光线投影到所述负光线击中所述障碍物或所述第二障碍物的点处的障碍物法线限定的平面上;以及
将新光线方向定义为所述负光线到所述障碍物或所述第二障碍物的障碍物法线限定的平面上的投影;以及
在所述新光线方向上延伸新光线,当到达所述水平面或者击中第三障碍物或者到达所述第三障碍物的边界框的边缘时停止;
基于到达所述第三障碍物,重复所述虚拟相机的移动;以及
基于到达所述边界框的边缘,将所述相机轴重新定义为从所述目标到当前相机位置的方向,以及重复所述虚拟相机的移动。
20.根据权利要求18或19所述的非暂时性机器可读介质,还包括附加合成模块和并入到所述一个或多个计算机存储器中的附加对撞机模块,所述附加合成模块和所述附加对撞机模块被配置成执行改变附加虚拟相机的取向和位置的操作,以使所述对象的所述部分保持在与所述附加虚拟相机、所述虚拟相机和包括元相机的所述附加虚拟相机相关联的目标区内,所述元相机被配置成基于由所述虚拟相机捕获的所述对象的所述部分的镜头的得分和由所述附加虚拟相机捕获的所述对象的所述部分的镜头的得分,选择所述虚拟相机相机或所述附加虚拟相机。
21.一种承载机器可读指令的机器可读介质,当由一个或多个处理器执行时,其使所述一个或多个处理器执行权利要求8至14中任一项所述的方法。
CN201880018947.1A 2017-03-17 2018-03-16 用于自动相机碰撞的方法和系统以及合成保存 Pending CN110431600A (zh)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US201762473107P 2017-03-17 2017-03-17
US62/473,107 2017-03-17
US201762525037P 2017-06-26 2017-06-26
US62/525,037 2017-06-26
US201762551134P 2017-08-28 2017-08-28
US62/551,134 2017-08-28
PCT/EP2018/056768 WO2018167319A1 (en) 2017-03-17 2018-03-16 Method and system for automated camera collision and composition preservation

Publications (1)

Publication Number Publication Date
CN110431600A true CN110431600A (zh) 2019-11-08

Family

ID=61750107

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201880018947.1A Pending CN110431600A (zh) 2017-03-17 2018-03-16 用于自动相机碰撞的方法和系统以及合成保存

Country Status (8)

Country Link
US (2) US20180276874A1 (zh)
EP (1) EP3596617A1 (zh)
JP (1) JP6967603B2 (zh)
CN (1) CN110431600A (zh)
BR (1) BR112019019060B1 (zh)
CA (1) CA3056269C (zh)
RU (1) RU2745828C1 (zh)
WO (1) WO2018167319A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111870963A (zh) * 2020-08-05 2020-11-03 网易(杭州)网络有限公司 游戏观战方法、装置和电子设备
US11508116B2 (en) 2017-03-17 2022-11-22 Unity IPR ApS Method and system for automated camera collision and composition preservation

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10600245B1 (en) * 2014-05-28 2020-03-24 Lucasfilm Entertainment Company Ltd. Navigating a virtual environment of a media content item
CN108415639B (zh) * 2018-02-09 2022-02-25 腾讯科技(深圳)有限公司 视角调整方法、装置、电子装置及计算机可读存储介质
US10709979B2 (en) * 2018-06-11 2020-07-14 Nintendo Co., Ltd. Systems and methods for adjusting a stereoscopic effect
US10692271B1 (en) * 2018-12-13 2020-06-23 Advanced Micro Devices, Inc. Robust ray-triangle intersection
US10967267B2 (en) * 2019-08-06 2021-04-06 Roblox Corporation Changing a camera view in an electronic game
CN110689570B (zh) * 2019-09-29 2020-11-27 北京达佳互联信息技术有限公司 虚拟形象直播方法、装置、电子设备及存储介质
US11928789B2 (en) * 2019-12-19 2024-03-12 Zf Friedrichshafen Ag Vehicle vision system
CN114385299A (zh) * 2022-01-12 2022-04-22 北京字跳网络技术有限公司 页面显示控制方法、装置、移动终端及存储介质
CN115193038A (zh) * 2022-07-26 2022-10-18 北京字跳网络技术有限公司 一种交互控制方法、装置、电子设备及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1428562A2 (en) * 2002-12-09 2004-06-16 Kabushiki Kaisha Square Enix (also trading as Square Enix Co., Ltd.) Video game that displays player characters of multiple players in the same screen
CN1798593A (zh) * 2004-03-03 2006-07-05 科乐美股份有限公司 游戏软件和游戏机
CN102458594A (zh) * 2009-04-07 2012-05-16 美国索尼电脑娱乐公司 模拟虚拟照相机的性能
CN104350524A (zh) * 2012-05-31 2015-02-11 高通股份有限公司 基于外围信息的姿势估计

Family Cites Families (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3311830B2 (ja) * 1993-09-20 2002-08-05 株式会社東芝 3次元動画作成装置
EP1125608A3 (en) * 2000-01-21 2005-03-30 Sony Computer Entertainment Inc. Entertainment apparatus, storage medium and object display method
US7256817B2 (en) * 2000-10-26 2007-08-14 Fujinon Corporation Following device
JP4535604B2 (ja) * 2000-11-28 2010-09-01 株式会社バンダイナムコゲームス ゲームシステム及びプログラム
US6995788B2 (en) * 2001-10-10 2006-02-07 Sony Computer Entertainment America Inc. System and method for camera navigation
JP4366023B2 (ja) * 2001-03-16 2009-11-18 インターナショナル・ビジネス・マシーンズ・コーポレーション ビデオ・イメージの部分イメージ領域抽出方法、部分イメージ領域抽出システム、部分イメージ領域抽出のためのプログラム、抽出されたビデオ・イメージの配信方法およびコンテンツ作成方法
JP3843242B2 (ja) * 2002-02-28 2006-11-08 株式会社バンダイナムコゲームス プログラム、情報記憶媒体、およびゲーム装置
JP2003334382A (ja) * 2002-05-21 2003-11-25 Sega Corp ゲーム装置、画像処理装置及び画像処理方法
JP2004329463A (ja) * 2003-05-06 2004-11-25 Nintendo Co Ltd ゲーム装置および仮想カメラの制御プログラム
JP3813945B2 (ja) * 2003-05-07 2006-08-23 任天堂株式会社 ゲーム装置およびゲームプログラム
JP4412715B2 (ja) * 2004-05-07 2010-02-10 株式会社バンダイナムコゲームス プログラム、情報記憶媒体および画像生成システム
JP4123187B2 (ja) * 2004-05-13 2008-07-23 ソニー株式会社 アニメーション生成装置、アニメーション生成方法およびアニメーション生成プログラム
US7720580B2 (en) * 2004-12-23 2010-05-18 Donnelly Corporation Object detection system for vehicle
US9327191B2 (en) * 2006-05-08 2016-05-03 Nintendo Co., Ltd. Method and apparatus for enhanced virtual camera control within 3D video games or other computer graphics presentations providing intelligent automatic 3D-assist for third person viewpoints
US8277316B2 (en) * 2006-09-14 2012-10-02 Nintendo Co., Ltd. Method and apparatus for using a common pointing input to control 3D viewpoint and object targeting
BRPI0812782B1 (pt) * 2007-05-31 2019-01-22 Panasonic Corp aparelho de captura de imagem, aparelho de provisão de informação adicional e método para uso em um aparelho de provisão de informação adicional
JP4489800B2 (ja) * 2007-08-30 2010-06-23 株式会社スクウェア・エニックス 画像生成装置及び方法、並びにプログラム及び記録媒体
JP5390093B2 (ja) * 2007-12-21 2014-01-15 任天堂株式会社 ゲームプログラムおよびゲーム装置
JP4425963B2 (ja) * 2008-03-14 2010-03-03 株式会社コナミデジタルエンタテインメント 画像生成装置、画像生成方法、および、プログラム
US9248376B2 (en) * 2008-09-30 2016-02-02 Nintendo Co., Ltd. Computer-readable storage medium having stored game program therein, and game apparatus
US8253801B2 (en) * 2008-12-17 2012-08-28 Sony Computer Entertainment Inc. Correcting angle error in a tracking system
WO2011096252A1 (ja) * 2010-02-02 2011-08-11 コニカミノルタホールディングス株式会社 画像処理システム、画像処理方法、およびプログラム
JP2011215886A (ja) * 2010-03-31 2011-10-27 Namco Bandai Games Inc プログラム、情報記憶媒体、及び、画像生成装置
RU2540849C2 (ru) * 2010-08-19 2015-02-10 Ниссан Мотор Ко., Лтд. Устройство обнаружения трехмерного объекта и способ обнаружения трехмерного объекта
DE102010042063B4 (de) * 2010-10-06 2021-10-28 Robert Bosch Gmbh Verfahren und Vorrichtung zum Bestimmen von aufbereiteten Bilddaten über ein Umfeld eines Fahrzeugs
JP5143883B2 (ja) * 2010-11-12 2013-02-13 株式会社コナミデジタルエンタテインメント 画像処理装置、画像処理プログラム、及び画像処理方法
JP5714393B2 (ja) * 2011-04-13 2015-05-07 任天堂株式会社 情報処理プログラム、情報処理装置、情報処理方法及び情報処理システム
JP5843721B2 (ja) * 2012-07-26 2016-01-13 任天堂株式会社 ゲームプログラム、ゲーム装置、ゲーム制御方法およびゲームシステム
JP2014235596A (ja) * 2013-06-03 2014-12-15 任天堂株式会社 情報処理プログラム、情報処理システム、情報処理装置、および情報処理方法
EP3129958B1 (en) * 2014-04-05 2021-06-02 Sony Interactive Entertainment LLC Method for efficient re-rendering objects to vary viewports and under varying rendering and rasterization parameters
WO2016151925A1 (ja) * 2015-03-26 2016-09-29 富士フイルム株式会社 追尾制御装置、追尾制御方法、追尾制御プログラム、及び、自動追尾撮影システム
EP3285476A4 (en) * 2015-04-14 2018-09-19 Sony Corporation Image processing device, image processing method, and image processing system
JP6074525B1 (ja) * 2016-02-12 2017-02-01 株式会社コロプラ 仮想空間における視界領域調整方法、およびプログラム
US10148876B1 (en) * 2016-07-26 2018-12-04 360fly, Inc. Panoramic video cameras, camera systems, and methods that facilitate handling multiple video streams while tracking an object
US10688392B1 (en) * 2016-09-23 2020-06-23 Amazon Technologies, Inc. Reusable video game camera rig framework
EP3596617A1 (en) 2017-03-17 2020-01-22 Unity IPR APS Method and system for automated camera collision and composition preservation

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1428562A2 (en) * 2002-12-09 2004-06-16 Kabushiki Kaisha Square Enix (also trading as Square Enix Co., Ltd.) Video game that displays player characters of multiple players in the same screen
CN1798593A (zh) * 2004-03-03 2006-07-05 科乐美股份有限公司 游戏软件和游戏机
CN102458594A (zh) * 2009-04-07 2012-05-16 美国索尼电脑娱乐公司 模拟虚拟照相机的性能
CN104350524A (zh) * 2012-05-31 2015-02-11 高通股份有限公司 基于外围信息的姿势估计

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11508116B2 (en) 2017-03-17 2022-11-22 Unity IPR ApS Method and system for automated camera collision and composition preservation
CN111870963A (zh) * 2020-08-05 2020-11-03 网易(杭州)网络有限公司 游戏观战方法、装置和电子设备
CN111870963B (zh) * 2020-08-05 2023-10-27 网易(杭州)网络有限公司 游戏观战方法、装置和电子设备

Also Published As

Publication number Publication date
CA3056269C (en) 2021-07-13
JP2020514920A (ja) 2020-05-21
CA3056269A1 (en) 2018-09-20
US20180276874A1 (en) 2018-09-27
BR112019019060B1 (pt) 2021-01-19
US11508116B2 (en) 2022-11-22
BR112019019060A2 (pt) 2020-04-22
EP3596617A1 (en) 2020-01-22
US20200357164A1 (en) 2020-11-12
JP6967603B2 (ja) 2021-11-17
WO2018167319A1 (en) 2018-09-20
RU2745828C1 (ru) 2021-04-01

Similar Documents

Publication Publication Date Title
CN110431600A (zh) 用于自动相机碰撞的方法和系统以及合成保存
US11887258B2 (en) Dynamic integration of a virtual environment with a physical environment
US10888785B2 (en) Method and system for real-time animation generation using machine learning
US20200206640A1 (en) Systems and methods for creating, broadcasting, and viewing 3d content
US20190102946A1 (en) Systems, methods and apparatuses for deployment and targeting of context-aware virtual objects and behavior modeling of virtual objects based on physical principles
CN105031919B (zh) 用于增强现实角色维持并体现观察者的认知的方法
TWI567659B (zh) 照片表示視圖的基於主題的增強
CN110536665A (zh) 使用虚拟回声定位来仿真空间感知
KR20170012312A (ko) 가상 환경 내에 양방향성을 제공하는 방법 및 시스템
CN105892651B (zh) 一种虚拟对象的显示方法和电子设备
EP2813069A1 (en) Augmented reality creation using a real scene
US20200391109A1 (en) Method and system for managing emotional relevance of objects within a story
CN108700944B (zh) 与在虚拟现实环境中的运动有关的系统和方法
KR20200145698A (ko) 증강 현실 기반의 3차원 조립 퍼즐을 제공하는 방법 및 단말
KR20140088286A (ko) Nui 장치를 이용한 온라인 게이트볼 게임 서비스 시스템 및 방법
Turan Virtual reality implementation for University Presentation
US11875088B2 (en) Systems and methods for smart volumetric layouts
US20240176920A1 (en) Systems and methods for smart volumetric layouts
Chung Metaverse XR Components
Sjöö Mobile Virtual Reality Environment in Unity 3D

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
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20191108

WD01 Invention patent application deemed withdrawn after publication