CN109920043B - 虚拟3d对象的立体渲染 - Google Patents

虚拟3d对象的立体渲染 Download PDF

Info

Publication number
CN109920043B
CN109920043B CN201811521217.1A CN201811521217A CN109920043B CN 109920043 B CN109920043 B CN 109920043B CN 201811521217 A CN201811521217 A CN 201811521217A CN 109920043 B CN109920043 B CN 109920043B
Authority
CN
China
Prior art keywords
projection
sphere
vertex
rendering
vertices
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201811521217.1A
Other languages
English (en)
Other versions
CN109920043A (zh
Inventor
S·M·波米兰茨
T·K·达什伍德
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.)
Apple Inc
Original Assignee
Apple Inc
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 Apple Inc filed Critical Apple Inc
Priority to CN202310680126.7A priority Critical patent/CN116704106A/zh
Publication of CN109920043A publication Critical patent/CN109920043A/zh
Application granted granted Critical
Publication of CN109920043B publication Critical patent/CN109920043B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • G06T17/20Finite element generation, e.g. wire-frame surface description, tesselation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N13/00Stereoscopic video systems; Multi-view video systems; Details thereof
    • H04N13/10Processing, recording or transmission of stereoscopic or multi-view image signals
    • H04N13/106Processing image signals
    • H04N13/111Transformation of image signals corresponding to virtual viewpoints, e.g. spatial image interpolation
    • H04N13/117Transformation of image signals corresponding to virtual viewpoints, e.g. spatial image interpolation the virtual viewpoint locations being selected by the viewers or determined by viewer tracking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/10Geometric effects
    • G06T15/20Perspective computation
    • G06T15/205Image-based rendering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/10Geometric effects
    • G06T15/20Perspective computation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T19/00Manipulating 3D models or images for computer graphics
    • G06T19/006Mixed reality
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T3/00Geometric image transformations in the plane of the image
    • G06T3/08Projecting images onto non-planar surfaces, e.g. geodetic screens
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N13/00Stereoscopic video systems; Multi-view video systems; Details thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/10Image acquisition modality
    • G06T2207/10004Still image; Photographic image
    • G06T2207/10012Stereo images
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/10Image acquisition modality
    • G06T2207/10016Video; Image sequence
    • G06T2207/10021Stereoscopic video; Stereoscopic image sequence

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Graphics (AREA)
  • Geometry (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Processing Or Creating Images (AREA)
  • Image Generation (AREA)

Abstract

本发明涉及虚拟3D对象的立体渲染。在一个具体实施中,一种方法涉及通过识别具有3D位置的顶点来将3D对象的表面网格化。该方法将3D位置变换为用于左眼视点的第一基于球体的投影的位置,以及用于右眼视点的第二基于球体的投影的位置。变换顶点的3D位置涉及基于用户取向(即,相机位置)以及左眼视点和右眼视点的差异(例如,基于轴间距离和会聚角)来变换顶点。该方法还基于用于左眼视点的第一基于球体的投影和用于右眼视点的第二基于球体的投影来渲染3D对象的立体360°渲染。例如,可以将第一基于球体的投影的等量矩形表示与第二基于球体的投影的等量矩形表示组合,以提供定义立体360°图像的文件。

Description

虚拟3D对象的立体渲染
技术领域
本公开总体涉及用于创建和使用立体渲染的系统、方法和设备,并且具体地讲,涉及考虑到轴间和会聚角视点差异的立体360°渲染。
背景技术
360°虚拟现实(VR)视频通常使用等量矩形投影以2:1纵横比矩形格式化并存储为视频文件。该文件对于该视频的每一帧包含一个等量矩形投影。立体360°VR视频对于每一帧包含两个等量矩形投影。它对于每只眼睛的视角/视点包括一个投影。由于立体视觉(立体深度感知)基于场景中的点的水平视差移位而起作用,因此左视图和右视图提供稍微不同的视点是重要的。通过简单地在相机的局部x轴上将两个虚拟相机彼此分开,这很容易在直线计算机成像(CGI)场景的立体渲染中实现。这种间隔被称为轴间距离,并且轴间距离越大,场景中的表观立体深度越大。如果两个虚拟相机略微朝向中间中心线倾斜,则它们在一定距离处“会聚”,并且所选的角度可用于感知地定位场景中的处于不同立体深度的对象。
渲染完整的360°立体CGI场景要困难得多,因为场景中心的虚拟“相机”不能简单地在单个轴上复制和分离。另外,与将两个虚拟相机链接到头戴式耳机佩戴者的眼睛位置并渲染当前位置/取向的视口的实时VR渲染不同,360°立体视频文件需要在所有视频帧上包含整个CGI场景的完整渲染。此外,最高点和最低点不应包含立体视差。如果包含立体视差,那么当佩戴头戴式耳机的用户向正上方或向正下方看然后旋转她的头部(Y轴旋转)时,立体视差将产生眼睛的垂直差异并且不可避免地导致眼睛疲劳、疼痛或潜在的恶心。
一种360°立体渲染技术涉及将六个90°×90°视图拼接在一起,然后偏移赤道上的四个视图(+X,+Z,-X,-Z)及其相应局部轴,以创建人工轴间间隔。对于左眼和右眼渲染,+Y和-Y视图相同。这些分离的视图使用拼接线附近的扭曲或叠加混合拼接在一起。该技术所获得的结果并不是无缝的,并且六个单独的渲染加拼接阶段也需要大量处理器。
另一种方法是“狭缝扫描”方法,其中渲染180°高×1°(或更小)的视图,并且为左眼和右眼虚拟相机的每个1°(或更小)的Y轴旋转重复,偏移相机局部x轴的场景中心。(360×2)狭缝渲染被组合以产生两个完整的等量矩形视图,每只眼睛一个。由于需要重复渲染,这种方法非常慢而且需要大量存储器。该方法也不能避免极点附近的立体视差。
期望通过例如为左眼和右眼视点中的每一个创建等量矩形投影来有效地立体渲染3D对象以用于等量矩形视频。还期望能够为场景中的每个可能的视图取向快速渲染立体“相机对”,同时平滑地将最高点和最低点转变为单视场(即,零视差)。
发明内容
本文公开的各种具体实施包括用于三维(3D)对象的立体360°渲染的设备、系统和方法。一种示例性方法涉及将场景的任何对象网格化以识别对象的顶点。对于每个顶点,该方法使用顶点的原始球体坐标以及定义的轴间和会聚参数来确定(每个眼睛视点的)新位置。轴间和会聚参数可以预先确定、自动确定或由用户指定。该方法可以涉及仅渲染场景的一个或多个对象所需的顶点,并且可以针对每只眼睛在一遍扫描中执行(或者两遍扫描,一遍用于前半部分,一遍用于后半部分),而无需额外的拼接。由于这些和其他原因,本文所公开的技术可以比现有技术更快和/或使用更少的存储器/系统资源。
本文所公开的各种具体实施包括用于通过变换顶点的球体位置(其可以被映射到等量矩形投影)来立体360°渲染三维(3D)对象的设备、系统和方法。在一个这样的具体实施中,一种示例性方法涉及通过识别具有3D位置的顶点来将3D对象的表面网格化。顶点定义了多边形,每个多边形近似3D对象的表面的相应部分。该方法将顶点的3D位置变换为用于左眼视点的第一基于球体的投影的位置,以及用于右眼视点的第二基于球体的投影的位置。变换顶点的3D位置涉及基于用户取向/相机位置以及左眼视点和右眼视点之间的差异来变换顶点。变换顶点的3D位置可以涉及基于左眼视点和右眼视点之间的轴间距离来平移顶点。变换顶点的3D位置可以涉及基于左眼视点和右眼视点的会聚角度来旋转顶点。该方法还基于用于左眼视点的第一基于球体的投影和用于右眼视点的第二基于球体的投影来渲染3D对象的立体360°渲染。在一个示例中,结果是分别用于左眼视点和右眼视点的两个等量矩形表示。
根据一些具体实施,一种设备包括一个或多个处理器、非暂态存储器以及一个或多个程序;这一个或多个程序被存储在非暂态存储器中并且被配置为由所述一个或多个处理器执行,并且这一个或多个程序包括用于执行或导致执行任何本文所述的方法的操作的指令。根据一些具体实施,一种非暂态计算机可读存储介质中存储有指令,当由设备的一个或多个处理器执行时,这些指令使得该设备执行或导致执行本文所述的方法中的任一个的操作。根据一些具体实施,一种设备包括:一个或多个处理器、非暂态存储器,以及用于执行或导致执行本文所述的方法中的任一种方法的装置。
附图说明
因此,本公开可由本领域的普通技术人员理解,更详细的描述可参考一些示例性具体实施的方面,其中一些具体实施在附图中示出。
图1是根据一些具体实施的示例性操作环境的框图。
图2是根据一些具体实施的三维(3D)对象的立体360°渲染方法的流程图表示。
图3是根据一些具体实施的使用前半部渲染和后半部渲染的3D对象的立体360°渲染方法的流程图表示。
图4是根据一些具体实施的图3的阶段1(组装资源)的示例性步骤的流程图表示。
图5是根据一些具体实施的图3的阶段2(渲染球体的前半部的内容)的示例性步骤的流程图表示。
图6是根据一些具体实施的图3的阶段3(渲染球体的后半部的内容)的示例性步骤的流程图表示。
图7是根据一些具体实施的图3的阶段4(其组合从阶段2和阶段3生成的图像以形成最终图像)的示例性步骤的流程图表示。
图8示出了根据一些具体实施的3D空间中的对象的单视场渲染。
图9示出了根据一些具体实施的3D空间中的对象的立体渲染。
图10示出了根据一些具体实施的基于轴间距离来平移两个顶点的位置。
图11示出了根据一些具体实施的基于轴间距离来平移顶点的位置,该距离随着纬度从赤道增加或者随着接近度更接近极点中的一个而减小。
图12是示出根据一些具体实施的设备的示例性部件的系统图。
根据通常的做法,附图中示出的各种特征部可能未按比例绘制。因此,为了清楚起见,可以任意地扩展或减小各种特征部的尺寸。另外,一些附图可能未描绘给定的系统、方法或设备的所有部件。最后,在整个说明书和附图中,类似的附图标号可用于表示类似的特征部。
具体实施方式
描述了许多细节以便提供对附图中所示的示例性具体实施的透彻理解。然而,附图仅示出了本公开的一些示例方面,因此不应被视为限制。本领域的普通技术人员将理解,其他有效方面和/或变体不包括本文所述的所有具体细节。此外,没有详尽地描述公知的系统、方法、部件、设备和电路,以免模糊本文所述的示例性具体实施的更多相关方面。
各种具体实施包括用于三维(3D)对象的立体360°渲染的设备、系统和方法。一种示例性方法涉及将场景的对象网格化以识别对象的顶点。对于每个顶点,该方法使用顶点的原始球体坐标以及轴间和会聚参数来确定(每个眼睛视点的)新位置。轴间和会聚参数可以预先确定、自动确定或由用户指定。该方法可以涉及仅渲染场景的一个或多个对象所需的顶点,并且可以针对每只眼睛在一遍扫描中执行,而无需额外的拼接。由于这些和其他原因,本文所公开的技术可以比现有技术更快和/或使用更少的存储器和其他系统资源。
在各种具体实施中,使用投影球体确定为每个眼睛视点创建的投影之间的差异,该投影球体例如使用等量矩形表示来表示。因此,一些具体实施并不使用作为标准透视投影的相机/视点投影,而是使用作为投影球体的等量矩形投影的相机/视点投影。使用投影球体(例如,扭曲成等量矩形映射)而不是投影平面提供了许多优点。这样做可以更快、更准确地进行修改来实现眼睛视点调节。它还可以减少需要渲染和组合的单独视图的数量(例如,允许组合两个视图(前/后)而不是六个视图(90°×90°))以产生完整的360°投影。使用投影球体(例如,扭曲成等量矩形映射)而不是投影平面还可以消除拼接组合视图的需要,因为投影球体的不同部分(例如,前/后)的等量矩形表示可以容易地组合并且没有扭曲。另外,它可以实现避免在最高点和最低点产生立体视差的顶点调节,这由于上述原因是所期望的。
在各种具体实施中,使用投影球体来确定每只眼睛的视点顶点位置变化。调节是有效和准确的,并且投影球体直接映射到等量矩形表示。等量矩形表示中的每个点(即映射或图像);因此在投影球体上有一个对应的点。在适当地调节顶点投影位置以考虑每个眼睛视点的视点差异之后,具体实施可以有效地渲染表示每个眼睛视点的投影球体的输出等量矩形投影平面。使用等量矩形表示很方便,因为该格式通常用于360°视频和图像。然而,应当注意,可以另选地基于具体实施的特定环境来使用投影球体的非等量矩形表示。在这样的具体实施中,相对于投影球体来进行对象顶点的调节,并且该调节映射到所使用的任何对应表示。
图1是根据一些具体实施的示例性操作环境100的框图。尽管示出了相关特征部,但本领域的普通技术人员将从本公开中认识到,为简洁起见并且为了不模糊本文所公开的示例性具体实施的更多相关方面,未示出各种其他特征部。为此,作为非限制性示例,操作环境100包括设备20、设备30和观察者设备40a-n。
在一些实施方案中,这些设备20、30、40a-n中的每一个包括软件、固件和/或硬件的适当组合。作为非限制性示例,在一些具体实施中,这些设备20、30、40a-n中的每一个包括一个或多个处理单元(例如,微处理器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、图形处理单元(GPU)、中央处理单元(CPU)、处理核心等),一个或多个输入/输出(I/O)设备,一个或多个通信接口(例如,通用串行总线(USB)、FIREWIRE、THUNDERBOLT、IEEE 802.3x、IEEE 802.11x、IEEE 802.16x、全球移动通信系统(GSM),码分多路访问(CDMA)、时分多路访问(TDMA)、全球定位系统(GPS)、红外(IR)、蓝牙、ZIGBEE和/或相似类型接口),一个或多个编程(例如,I/O)接口,存储器,以及用于互连这些和各种其他部件的一条或多条通信总线。在一些具体实施中,一条或多条通信总线包括互连和控制系统部件之间的通信的电路。在一些具体实施中,一个或多个I/O设备包括键盘、鼠标、触控板、操纵杆、一个或多个麦克风、一个或多个扬声器、一个或多个图像传感器、一个或多个显示器等中的至少一种。图10提供了可以在这些设备20、30、40a-n中的每一个中使用的部件的附加描述。
在一些具体实施中,设备10是用户操作设备,其包括对象渲染器21、图像/视频创建应用程序25、360°图像数据存储库26和360°视频数据存储库26。在该示例性配置中,用户能够使用图像/视频创建应用程序25来创建360°图像和360°视频。图像/视频创建应用程序25使用对象渲染器21来渲染包括在360°图像和360°视频中的3D对象的表示。对象渲染器21可以是图像/视频创建应用25的一部分或与其分开。类似地,对象渲染器21可以在图像/视频创建应用程序25的本地或远程。除了内容创建之外,对象渲染器21还可以用于提供360°图像和360°视频来用于其他用途,因此可以在另选具体实施中将这样的内容提供给其他应用程序。
由对象渲染器21产生的渲染可以是立体的或单视场的。此外,图像/视频创建应用程序25的用户可以调节参数(例如,轴间和/或会聚角)以调节所创建的立体渲染。在一些具体实施中,图像/视频创建应用程序25被配置为接收指定3D空间中的3D对象的输入(例如,相对于x、y、z坐标或球体坐标)并使用3D对象来渲染3D对象的等量矩形表示。等量矩形表示可以是被输出和分配以供观看者使用的360°图像或360°视频帧。在立体渲染的情况下,为每个图像/视频帧提供一对等量矩形表示,每只眼睛一个等量矩形表示。
输出等量矩形表示并将其作为360°图像和360°视频存储在360°图像数据存储库26和360°视频数据存储库27中。来自360°图像数据存储库26和360°视频数据存储库27的这些360°图像和360°视频可以被发布或以其他方式分配以供查看。例如,来自360°图像数据存储库26和360°视频数据存储库27的360°图像和360°视频可以被分配到设备20(在一个具体实施中该设备是互联网内容服务器)并且被存储在360°图像数据存储库31和360°视频数据存储库32中。可以在观看者设备40a-n上访问、下载和/或查看来自360°图像数据存储库26、360°视频数据存储库27、360°图像数据存储库31和/或360°视频数据存储库32的360°图像和360°视频。例如,每个观看者设备40a-n可以下载360°图像/视频41a-n以供观看。在一些具体实施中,具有用于左眼和右眼的不同显示器的头戴式显示器(HMD)(例如,VR头戴式耳机)用于观看360°图像/视频41a-n。在其他具体实施中,观看360°图像/视频41a-n涉及使用立体图像装置(例如,红色/绿色眼镜)。
在一些具体实施中,对象渲染器21被配置为使用网格化引擎22、变换引擎23和渲染引擎24来渲染3D对象。网格化引擎22对场景中的一个或多个3D对象进行网格化以确定一个或多个3D对象的顶点。在一些具体实施中,使用图形处理单元(GPU)执行网格化。本文参考图4更详细地讨论用于网格化的示例性技术。变换引擎23使用投影球体、用户取向信息和视点差异信息(例如,轴间距离、会聚角等)来变换顶点的位置,以确定左眼视点和右眼视点的顶点位置。参考图5更详细地讨论用于变换的示例性技术。渲染引擎24使用最终顶点位置来提供360°渲染。例如,渲染引擎24可以渲染左眼视点的等量矩形表示和右眼视点的等量矩形表示。本文参考图5至图7更详细地讨论用于渲染的示例性技术。
图1更多地用作存在于特定实施方案中的各种特征部的功能描述,与本文所述的具体实施的结构示意图不同。如本领域的普通技术人员将认识到的,单独显示的项目可以组合,并且一些项目可以分开。例如,图1中单独示出的一些功能模块/引擎可以在单个模块中实现,并且单个功能块的各种功能可在各种具体实施中通过一个或多个功能块来实现。模块/引擎的实际数量和特定功能的划分以及如何在其中分配特征部将根据具体实施而变化,并且在一些具体实施中,部分地取决于为特定实施方案选择的硬件、软件和/或固件的特定组合。
图2是根据一些具体实施的三维(3D)对象的立体360°渲染方法50的流程图表示。在一些具体实施中,方法50由设备(例如,图1的设备20)执行,诸如移动设备、台式计算机、膝上型电脑或服务器设备。在各种具体实施中,方法50由具有一个或多个处理器和非暂态存储器的设备执行。方法50可以在具有用于显示2D图像的屏幕和/或用于观看立体图像的屏幕的设备上执行,诸如虚拟现实(VR)显示器(例如,头戴式显示器(HMD))或增强现实(AR)显示器。在一些具体实施中,方法50由处理逻辑(包括硬件、固件、软件或其组合)执行。在一些具体实施中,方法50由执行存储在非暂态计算机可读介质(例如,存储器)中的代码的处理器执行。
方法50在框51中开始,首先通过网格化3D对象的表面来识别顶点。顶点定义了多边形,每个多边形近似3D对象的表面的相应部分。在给定适当的网格化参数(例如,指定网格化量)的情况下,可以通过网格化引擎(例如图1的网格化引擎22)来执行将3D对象的表面网格化。在场景中有多个可能分离的3D对象的情况下,可以对一些或所有3D对象的表面进行网格化以确定对应的顶点。在一些具体实施中,将3D对象的表面进行网格化涉及将表示3D对象的表面的网格化对象存储在图形处理单元(GPU)中。方法50可以除此之外或另选地涉及将3D对象的纹理数据存储在GPU中。网格化对象和/或纹理数据最终可以由GPU使用以渲染3D对象。
方法50还包括在框52处将(网格化对象的)将顶点的3D位置变换为用于左眼视点的第一基于球体的投影的位置,以及用于右眼视点的第二基于球体的投影的位置。在一个具体实施中,第一基于球体的投影由投影球体的第一等量矩形表示来表示,其中对象的顶点位于用于左眼的位置,第二基于球体的投影由投影球体的第二等量矩形表示来表示,其中对象的顶点位于用于右眼的位置。在另选具体实施中,使用非等量矩形表示。
在一些具体实施中,变换顶点的3D位置涉及基于用户取向(例如,相机位置)以及左眼视点和右眼视点之间的差异来变换顶点。这可以包括基于左眼视点和右眼视点之间的轴间距离来平移顶点,和/或基于左眼视点和右眼视点的会聚角来旋转顶点。平移对象的顶点的示例在图10中示出并在下面描述。
在一些具体实施中,调节用于考虑轴间距离的平移量和/或用于考虑会聚角的旋转量,以避免立体视差。具体地讲,根据各个顶点的纬度(即,对顶部极点和底部极点的接近度),平移和/或旋转的量可以针对各个顶点而变化。在一些具体实施中,随着顶点的纬度增加,平移和/或旋转的量减小到零,使得赤道处的顶点被完全调节(即,完全平移/完全旋转)并且极点处的顶点完全未被调节(即,未平移和/或未旋转)。
在某些实施方案中,变换顶点的3D位置使用多个球体部分,例如,前半部和后半部、三个1/3部分等,这些部分被组合以创建用于左眼视点和右眼视点中的每一个的最终投影球体(例如,由单个等量矩形表示来表示)。本文参考图3至图7更详细地讨论了使用多个球体部分来变换顶点的3D位置的示例。
方法50还涉及在框53处,基于第一基于球体的投影和第二基于球体的投影渲染3D对象的立体360°渲染。渲染的立体360°渲染可以本地存储在存储器中,被发送或发布到远程服务器,和/或显示在监视器或立体查看器诸如HMD头戴式耳机上。
在一些具体实施中,用户使用创建应用程序(诸如图1的图像/视频创建应用程序25)来在实时用户界面环境中创建和观看360°图像和视频。在一些具体实施中,用户界面被配置为接收指定3D对象的3D几何形状(即,其在3D空间中的3D位置)的输入,和/或指定视点参数(例如,轴间距离、会聚角等)的用户输入,并且显示3D对象的等量矩形投影(例如,一个用于左眼视点,一个用于右眼视点)以允许内容创建者在内容创建期间实时(例如,在用户重新定位3D对象、更改视点参数等时)观察3D对象的360°表示。在一些具体实施中,用户界面同时显示三个视图。第一视图提供用于左眼视点的第一基于球体的投影的等量矩形表示,即,以平面表示示出左眼视点的所有360°内容。第二视图示出了用于右眼视点的第二基于球体的投影的等量矩形表示,即,以单独的平面表示示出右眼视点的所有360°内容。可以提供一个或多个附加视图来示出一个或多个面向相机的视点,即,示出来自面向方向的特定相机(例如,前向相机、后向相机、面向顶部的相机、面向特定用户指定方向的相机等)的一些360°内容的相机视图。提供这些多个视图中的一个或多个可以通过向用户提供甚至不使用立体头戴式耳机或HMD创建的内容的更直观的视图,来促进360°图像和内容的创建。
图3是根据一些具体实施的使用前半部渲染和后半部渲染的三维(3D)对象的立体360°渲染方法55的流程图表示。在一些具体实施中,方法55由诸如移动设备、台式计算机、膝上型电脑或服务器设备的设备执行。在各种具体实施中,方法55由具有一个或多个处理器和非暂态存储器的设备执行。方法55可以在具有用于显示2D图像的屏幕和/或用于观看立体图像的屏幕的设备上执行,诸如虚拟现实(VR)显示器(例如,头戴式显示器(HMD))或增强现实(AR)显示器。在一些具体实施中,方法55由处理逻辑(包括硬件、固件、软件或其组合)执行。在一些具体实施中,方法55由执行存储在非暂态计算机可读介质(例如,存储器)中的代码的处理器执行。
方法55在框56中开始,首先是阶段1:组装资源。方法55在框57中继续,这是阶段2:渲染球体前半部分的内容,在方框58中,是阶段3:渲染球体后半部分的内容。方法55在框59继续,这是阶段4:组合在阶段2和阶段3中生成的图像以形成最终图像。本文参考图4至图7更详细地讨论这些特征部的示例。
图4是根据一些具体实施的方法60的流程图表示,该方法涉及用于实现图3的阶段1(组装资源)的示例性步骤。方框60在框61中开始,首先将3D对象的表面网格化。网格化涉及将对象的表面分解成子表面,例如,矩形可以被分解成子矩形或其他子多边形形状。在一个具体实施中,将3D对象的表面网格化包括确定定义三角形、四边形或近似于对象表面的其他多边形的点(即顶点)的3D网格。
一些具体实施使用特定的系统/配置属性来确保有效地执行网格化,同时还避免引入伪像。可以选择网格化/网格化参数的特性以考虑顶点的最终使用。具体地讲,可以基于具体实施的环境来选择网格化的量和/或网格化是否自适应。特别地,最终将使用网格的顶点来创建3D对象的表示。常规系统通过将网格投影到特定相机方向的成像平面(例如,相机平面)上来确定对象的有限视图(例如,前向相机视图)。与此相反,本文公开的具体实施将3D对象投影到整个球体,即投影球体上。因此,不是使用表示视图的一部分的单个成像平面,而是使用投影球体(例如,由等量矩形表示来表示)用于整个视图(即,所有方向)。在确定网格化参数时可以考虑到这一点,通过确保网格化程度足够高来确保所有区域都经过充分网格化,以避免诱发伪影。然而,这样做可能需要大量顶点,因此降低了系统的整体效率和性能。一些具体实施使用自适应网格化来减少顶点的总数。具体地讲,这样的具体实施预测在投影球体中,对象的特定部分将基于对象相对于用户视角/相机位置的位置而结束。一般来讲,极点(顶部和底部)附近会有更多的失真,在赤道附近会有更少的失真。在一些具体实施中,该信息用于通过在极点附近使用较高网格化率和在赤道附近使用较低网格化率来自适应地网格化。这样做提供的网格具有比原本为了避免引起伪像所需的顶点更少的顶点。自适应网格化对于具有大尺寸和/或复杂形状的3D对象可能特别有用。因此,一些具体实施基于3D对象的相对位置确定3D对象的不同部分的网格化率,以明显减少处理时间,而不降低质量。
方法60在框62中继续,在这里将网格化对象存储在图形处理单元(GPU)上,其中它可以用于渲染对象和/或绘制图像和帧。方法60在框63中继续,在这里准备输入图像或视频纹理。在一些具体实施中,这涉及确定与网格化对象的网格的每个多边形或者网格化对象的每个顶点相关联的纹理值。在阶段1结束时,系统具有存储在GPU上的网格化对象和输入纹理,并且准备用于渲染一个或多个三维(3D)对象的立体360°渲染。
图5是根据一些具体实施的方法70的流程图表示,其涉及用于实现图3的阶段2:渲染球体的前半部分的内容的示例性步骤。方法70在框71中开始,首先使用矩阵将顶点的3D位置变换到投影球体的一个半部。该矩阵表示用户取向/相机位置,因此基于该特定用户取向/相机位置来变换顶点的位置。在一个具体实施中,该变换涉及识别投影球体(例如,投影球体的等量矩形表示),其表示出现在投影球体的前半部分上的所有顶点。方法70的附加步骤调节顶点的这个初始位置以考虑每个眼睛视点,导致用于左眼视点的对象顶点的一个投影和用于右眼视点的对象顶点的一个投影。
方法70在框72中继续,在这里基于轴间距离来平移顶点。随着顶点的纬度朝向极点增加,轴间距离减小。换句话说,基于使用较低的轴间距离来较少地平移极点附近的顶点来确定要将极点附近的顶点平移多少。
顶点的平移可以取决于用户指定的轴间距离。轴间距离表示左眼视点和右眼视点之间在投影球体中心处/附近的距离。对于任何单个顶点,一些具体实施确定顶点在哪里(例如,纬度、经度、球体坐标等)。然后,这些具体实施确定如何单视场渲染顶点(框71),即确定顶点在投影球体上的位置(例如,由等量矩形表示来表示)。具体实施接下来创建特定于眼睛视点的表示。为了考虑轴间间隔(在框72中),对于该顶点,系统将为右眼视点将世界移动/平移一定距离,并且为左眼视点在相反方向上移动特定距离。这基于顶点本身的方向(相对于用户取向/相机位置)和轴间距离。图10示出了顶点的这种平移。用户指定的轴间距离越大,顶点在每个投影中的平移越大。然而,如上所述,在一些具体实施中,基于相应顶点的纬度,即基于其与顶部或底部极点之一的接近度来减少平移量。
方法70在框73中继续,在这里基于会聚角来旋转顶点。随着顶点的纬度朝向极点增加,会聚角减小。换句话说,基于使用较低的会聚角度,极点附近的顶点旋转较少,来确定将极点附近的顶点平移多少。
顶点的旋转可以取决于用户指定的会聚角。会聚角表示与左眼视点和右眼视点相关联的导致视点在一定距离处会聚的角度。对于任何单个顶点,一些具体实施调节特定于眼睛视点的表示。为了考虑会聚角,对于该顶点,这些具体实施将为右眼视点将世界旋转一定距离,并且为左眼视点在相反方向上旋转特定距离。这可以基于顶点本身的方向(相对于用户取向/相机位置),顶点远离用户取向/相机位置的立体距离,和/或会聚角。会聚角越大,在每个眼睛投影球体中施加的旋转越多。然而,如上所述,在一些具体实施中,基于相应顶点的纬度,即基于其与顶部或底部极点之一的接近度来减少旋转量。
在一些具体实施中,使用启发式/算法来自动确定轴间距离和会聚值,或者将轴间距离和会聚值动画化。在一些情况下,内容创建者将希望改变轴间距离的量,从而随时间推移改变立体分离。例如,在某些情况下,诸如对于非常快速移动的内容(例如,动作镜头、快速相机移动),内容创建者将希望在相机移动或动作加速时减少立体分离和/或在相机移动或动作减慢时增加立体分离。在一些具体实施中,随时间推移手动地调节立体分离的量。在其他具体实施中,随时间推移自动地调节立体分离的量。在一些具体实施中,基于光流信息、内容信息和/或头部运动的速度自动调节立体分离的量。例如,光流信息可用于识别高活动水平或快速移动的内容,并且可相应地自动调节立体分离的量。这些技术在交互式游戏、虚拟现实(VR)和增强现实(AR)应用的背景下特别有用。
方法70在框74中继续,在这里将顶点从其最终投影球体位置映射到剪辑空间位置。在一些具体实施中,顶点从它们的最终球体位置(即,在投影球体上)被映射到剪辑空间位置(例如,在等量矩形表示上)并且被馈送到图形处理单元(GPU)处理流水线。GPU流水线最终将生成的像素映射到其等量矩形输出位置。
方法70在框75中继续,在这里输出与每个顶点相关联的纹理坐标。在一些具体实施中,纹理坐标被输出到GPU。方法70在框76中继续,在这里生成纹理映射片段并将片段输出到颜色缓冲器。方法70在框77中继续,在这里将投影球体的前半部分的内容渲染为等量矩形投影。顶点位置和纹理映射片段用于渲染内容。
图6是根据一些具体实施的方法80的流程图表示,其涉及用于实现图3的阶段3(渲染球体的后半部分的内容)的示例性步骤。方法80在框81中开始,首先执行180°的世界旋转。这允许重复使用在阶段2(图5)中使用的相同过程。因此,方法80在框82中继续,在这里执行图5的阶段2过程。由于世界旋转,该过程导致渲染投影球体的后半部分的内容。方法80在方框83中继续,在这里将输出移动以占据等量矩形图像上的后半部分。
因此,在阶段2(图5)之后,已经生成了投影球体的前半部分的等量矩形表示,并且在阶段3(图6)之后,已经生成了投影球体的后半部分的等量矩形表示。
图7是根据一些具体实施的方法85的流程图表示,该方法涉及用于实现图3的阶段4(组合从阶段2和阶段3生成的图像以形成最终图像)的示例性步骤。在方法85中,在框86处,系统将为前半部分生成的等量矩形投影和为后半部分生成的等量矩形投影组合,以形成3D对象的等量矩形投影。为每个眼睛视点生成组合的等量矩形投影。因此,对于左眼视点,将前半部分等量矩形投影与后半部分等量矩形投影组合。类似地,对于右眼视点,将不同的前半部分等量矩形投影与不同的后半部分等量矩形投影组合。结果是两个组合的等量矩形表示,一个用于左眼视点,一个用于右眼视点。
在图3至图7的示例中,前部投影和后部投影被组合。在另一个具体实施中,生成单个投影。在其他具体实施中,生成三个或更多个投影并将其组合。例如,360°可视区可以被分成三份(每份120°)并被组合形成360°的等量矩形投影。使用更多部分(例如,使用前部部分和后部部分而不是包括这两者的单个部分)可以提供优势。使用前部部分和后部部分可以减少所需的网格化量。如果使用单个部分,则避免引起伪像所需的网格化率可能需要非常高,并因此导致效率或性能降低。这是因为在一遍扫描中渲染整个部分将需要极点区域(即在右上角、左上角以及右下、左下两个角)中的极高网格化。3D对象的网格化率在这些区域中必须非常高,但在对应于图像的中间三分之一的投影球体部分中远不需要那么高。因此,在两个半部(或使用2个或更多个部分)进行渲染可以提高效率和性能,并且实际上可以使得原本在计算上禁止的处理可行。相反,每个额外部分(例如,使用两个部分、三个部分、四个部分等)增加了所需的渲染数量,因此也会降低效率和性能。一些具体实施选择多个部分(例如,选择两个部分-前部和后部)以平衡减少网格化的益处与减少特定于部分的渲染的益处。
图8示出了根据一些具体实施的3D空间中的对象的单视场渲染。在该示例中,等量矩形表示90包括图形底层94,其示出六面立方体的哪一面(前面、右面、左面、后面、顶面、底面)对应于表示90的相关联部分。提供图形底层94是出于例示性目的,并且不用于确定对象91的顶点在表示中的位置。然而,应当注意,呈现等量矩形表示的用户界面可以包括或可以不包括这样的图形底层94来向用户提供参考。在一些具体实施中,用户能够打开和关闭图形底层94以适应他/她的开发需求。
在图8的该示例中,3D对象是在等量矩形表示90中示为对象91的平面。对于这种单视场渲染,双眼观察到相同的等量矩形投影,即,对于每只眼睛,没有单独的和不同的等量矩形投影。可以使用本文所公开的一种或多种技术来确定顶点(并且因此,所得到的等量矩形表示90)的位置。在一些具体实施中,通过使用零轴间距离和零会聚角来确定用于像这样的单视场表示的顶点。
视图99示出了来自单个相机方向的对象的视图(例如,向前看的相机视图)。内容创建应用程序的用户界面可以同时显示等量矩形表示90和/或对象的一个或多个相机视图(例如前相机视图99),以允许用户准确地将对象在3D空间中的放置可视化。此外,例如,当用户使用该用户界面在3D空间中重新定位对象时,可以实时更新等量矩形表示90和/或对象的一个或多个相机视图。
图9示出了根据一些具体实施的3D空间中的对象的立体渲染。对比图9和图8,示出了根据一些具体实施的单视场和立体渲染之间的差异。在该示例中,左眼等量矩形表示100和右眼等量矩形表示105是不同的。作为参考,等量矩形表示100、105包括图形底层104,其示出六面立方体的哪一面(前面、右面、左面、后面、顶面、底面)对应于该表示的相关联部分。提供图形底层104是出于例示性目的,并且不用于确定对象101、106的顶点在表示100、105中的位置。然而,应当注意,呈现等量矩形表示的用户界面可以包括或可以不包括这样的图形底层104来向用户提供参考。在一些具体实施中,用户能够打开和关闭图形底层104以适应他/她的开发需求。
在图9的该示例中,3D对象是在左眼等量矩形表示100中示为对象101并且在右眼等量矩形表示105中示为对象106的平面。对象101、106位于不同的位置(例如,相对于图形底层104)并且具有不同的形状。例如,对象101、106的顶点是不同的。例如,顶点102处于与顶点107不同的相对位置。
图9还示出了如何实现调节以避免立体视差。顶点的平移和/或旋转在极点附近减小,以在极点附近提供更类似于单视场的渲染。因此,顶点103处于与顶点108相似的相对位置。顶点103、108比顶点102、107移动得更少,因为这些顶点103、107的纬度大于顶点102、107的纬度。如果顶点103、108足够靠近极点中的一个,则它们甚至可能不会移动。
可以使用本文所公开的一种或多种技术来确定顶点(并且因此,所得到的等量矩形表示100、105)的位置。在一些具体实施中,通过使用作为用户的输入提供的轴间距离和会聚角来确定用于像这样的立体表示的顶点。本文例如参考图2至图7描述了用于调节顶点的特定技术的示例。
视图109示出了来自单个相机方向的对象的视图(例如,向前看的相机视图)。内容创建应用程序的用户界面可以同时显示等量矩形表示100、105和/或对象的一个或多个相机视图(例如前相机视图109),以允许用户准确地将对象在3D空间中的放置可视化。此外,例如,当用户使用该用户界面在3D空间中重新定位对象时,可以实时更新等量矩形表示100、105和/或对象的一个或多个相机视图。
在一个具体实施中,用户经由用户界面提供输入以改变轴间距离和/或会聚角,并且能够在它们实时变化时观察用于左眼视点和右眼视点的相应等量矩形投影。随着用户将轴间距离和会聚角(例如,通过改变数字参数)减小到零,视图改变为渲染单视场而不是立体。随着用户随后开始增加轴间距离,用户界面实时改变以显示对象的移位/平移。在左眼等量矩形表示100中,对象101向左移动。类似地(并且同时地),在右眼等量矩形表示105中,对象106向右移动。这种移位也基于真实深度。因此,远离该用户视点/相机位置的顶点不会移动太多。并且,如上所述,任一极点附近的顶点不会与赤道附近的顶点移动同样多。
应当注意,本文所公开的技术为3D对象的单视场渲染和立体渲染两者都提供了优异的360°渲染。所公开的技术使得对于每种渲染类型都能够快速且有效地渲染3D对象,并且可以实时提供这样的渲染,例如,用于在内容创建应用程序中操纵3D对象期间显示渲染。所公开的技术还可以用于有效地渲染视频和其他电子内容中的背景,例如,通过以每秒90帧或更快的速度渲染这样的背景。这些技术也可用于渲染混合内容。例如,所公开的技术可用于创建包括用于场景的大部分的360°内容的文件,并且该场景的其余部分可以即时生成。作为一个具体示例,可以在这样的文件中预先确定场景的大部分,并且可以即时生成角色并将其插入到场景中。本文所公开的技术还可以用于促进现场直播。例如,技术可以用于生成现场活动(诸如体育赛事)的360°视频流水线,并且本文所公开的技术可以用于插入立体360°覆层。因为本文所公开的技术可以实时执行,所以可以实时生成和添加覆层。
图10示出了根据一些具体实施的基于轴间距离114来平移两个顶点112、122的位置。图10示出了3D环境的XZ平面横截面。在该示例中,用户取向/相机位置110、轴间距离114和投影球体111用于确定两个示例性顶点112、122的基于球体的投影的单视场位置和立体位置两者。
对于单视场渲染,通过确定投影球体111上的在用户取向/相机位置110与3D空间中的顶点112位置之间的位置,来为顶点112确定投影球体111上的基于球体的位置113。类似地,通过确定投影球体111上的用户取向/相机位置110与3D空间中的顶点122位置之间的位置,来为顶点122确定投影球体111上的基于球体的位置123。
对于立体渲染(左眼和右眼),确定顶点112、122的经调节的位置。顶点112的位置基于其经度在XZ平面上平移,然后投影到投影球体111上。具体地讲,基于轴间距离114,顶点112的矢量位置垂直于其经度平移。平移量基于轴间距离114的量。在该示例中,使用轴间距离114的一半将顶点112重新定位到位置116以用于左眼渲染。类似地,使用轴间距离114的一半将顶点112重新定位到位置118以用于右眼渲染。左眼顶点位置116和右眼顶点位置118在相反方向上并且垂直于从用户取向/相机位置110到顶点112的经线方向平移。然后使用左眼顶点位置116和右眼顶点位置118来确定基于球的投影位置117、119。通过确定投影球体111上的在用户取向/相机位置110和左眼顶点位置116之间的位置,来确定左眼基于球体的投影位置117。类似地,通过确定投影球体111上的在用户取向/相机位置110和左眼顶点位置118之间的位置,来确定右眼基于球体的投影位置119。
顶点122的位置类似地基于其经度在XZ平面上平移,然后投影到投影球体111上。在该示例中,使用轴间距离114的一半将顶点122重新定位到位置126以用于左眼渲染。类似地,使用轴间距离114的一半将顶点122重新定位到位置128以用于右眼渲染。左眼顶点位置126和右眼顶点位置128在相反方向上并且垂直于从用户取向/相机位置110到顶点122的纵向方向平移。然后使用左眼顶点位置126和右眼顶点位置128来确定基于球的投影位置127、129。通过确定投影球体111上的在用户取向/相机位置110和左眼顶点位置126之间的位置,来确定左眼基于球体的投影位置127。类似地,通过确定投影球体111上的在用户取向/相机位置110和左眼顶点位置128之间的位置,来确定右眼基于球体的投影位置129。
图11示出了根据一些具体实施的基于轴间距离来平移顶点的位置,该距离随着纬度从赤道增加或者随着接近度更接近极点中的一个而减小。对于立体渲染(左眼和右眼),基于用户取向/相机位置130来确定顶点的调节位置。对于顶点的第一位置(即,在投影球体131的赤道XZ平面上),确定第一左眼位置136a和第一右眼位置138a。为了确定每一者,顶点的位置基于其经度在XZ平面上平移,然后投影到投影球体131上。具体地讲,基于轴间距离134a,顶点的矢量位置垂直于其经度平移。平移量基于轴间距离134a的量。在该示例中,使用轴间距离134a的一半将顶点重新定位到位置136a以用于左眼渲染。类似地,使用轴间距离134a的一半将顶点重新定位到位置138a以用于右眼渲染。第一左眼顶点位置136a和第一右眼顶点位置138a在相反方向上并且垂直于从用户取向/相机位置130到顶点的纵向方向平移。然后使用第一左眼顶点位置136a和第一右眼顶点位置138a来确定基于球的投影位置137a、139a。通过确定投影球体131上的在用户取向/相机位置130和第一左眼顶点位置136a之间的位置,来确定第一左眼基于球体的投影位置137a。类似地,通过确定投影球体131上的在用户取向/相机位置110和第一右眼顶点位置138a之间的位置,来确定第一右眼基于球体的投影位置139a。
图11还示出了随着顶点的纬度增加(即,当顶点处于更靠近极点132a、132b的各种位置时),减小顶点平移中使用的轴间间隔。随着顶点的纬度在Y方向上远离赤道XZ平面增加,用于平移顶点以用于投影的轴间距离减小。例如,对于顶点的第二位置(即,在投影球体131的赤道XZ平面上方并且更靠近极点132a),使用减小的轴间距离134b确定第二左眼位置136b和第二右眼位置138b。为了确定每一者,顶点的位置基于其经度在其相应XZ平面上平移,然后投影到投影球体131上。具体地讲,基于轴间距离134b,顶点的矢量位置垂直于其经度平移。平移量基于轴间距离134b的量,而不是完整的轴间距离134a。在该示例中,使用轴间距离134b的一半将顶点重新定位到位置136b以用于左眼渲染。类似地,使用轴间距离134b的一半而不是完整的轴间距离134a将顶点重新定位到位置138b以用于右眼渲染。第一左眼顶点位置136a和第一右眼顶点位置138a在相反方向上并且垂直于从用户取向/相机位置130到顶点的经线方向平移。然后使用第二左眼顶点位置136b和第二右眼顶点位置138b来确定基于球的投影位置137b、139b。通过确定投影球体131上的在用户取向/相机位置130和第二左眼顶点位置136b之间的位置,来确定第二左眼基于球体的投影位置137b。类似地,通过确定投影球体131上的在用户取向/相机位置110和第二右眼顶点位置138b之间的位置,来确定第二右眼基于球体的投影位置139b。
投影球体131上的线135a-b表示顶点的基于球体的投影的投影路径/位置,其具有基于顶点的纬度的轴间转变(线性地或采用加速/减速)。在该示例中,随着纬度增加,轴间距离转变为零。在该示例中,轴间距离从距投影球体131的赤道XZ平面大约60°转变到距赤道XZ平面80°。
虽然上文描述了在所附权利要求范围内的具体实施的各个方面,但是应当显而易见的是,上述具体实施的各种特征部可以以各种各样的形式体现,并且上述任何特定结构和/或功能仅是例示性的。基于本公开,本领域的技术人员应当理解,本文所述的方面可以独立于任何其他方面来实现,并且这些方面中的两个或更多个可以采用各种方式组合。例如,可以使用本文阐述的任何数量的方面来实现装置和/或可以实践方法。另外,除了本文阐述的一个或多个方面之外或者不同于本文阐述的一个或多个方面,可以使用其他结构和/或功能来实现这样的装置和/或可以实践这样的方法。
图12是示出根据一些具体实施的关于图1和本文描述的设备的示例性部件的系统图。每个这样的设备140可以包括处理器142,该处理器通信地耦接到存储器144和存储装置146,并且执行存储在存储器144和存储装置146中的计算机可执行程序代码和/或访问信息。处理器142可以包括微处理器、专用集成电路(“ASIC”)、状态机或其他合适的处理设备。处理器142可以包括多个处理设备中的任何一个,包括一个。这样的处理器142可以包括存储指令的计算机可读介质或可以与其通信,所述指令在由该过程执行时使处理器执行本文所述的操作。
存储器144和存储装置146可以包括任何合适的计算机可读介质。计算机可读介质可以包括能够向处理器提供计算机可读指令或其他程序代码的任何电子、光学、磁性或其他存储设备。计算机可读介质的非限制性示例包括磁盘、存储器芯片、ROM、RAM和ASIC、已配置的处理器、光学存储装置、磁带或其他磁存储器,或计算机处理器可从其读取指令的任何其他介质。指令可以包括由编译器和/或解释器从以任何合适的计算机编程语言编写的代码生成的特定于处理器的指令,这些编程语言包括例如C、C++C#、Visual Basic、Java、Python、Perl和JavaScript。
设备140还可以包括多个外部或内部设备,诸如输入或输出设备。例如,设备140可以具有输入/输出(“I/O”)接口148,其可以从输入设备接收输入或者向输出设备提供输出。总线154也可以包括在设备140中。总线154可以通信地耦接服务器的一个或多个部件。服务器可以执行程序代码,该程序代码配置处理器以执行上面关于附图描述的一个或多个操作。程序代码可以存储在存储器或任何合适的计算机可读介质中,并且可以由处理器或任何其他合适的处理器执行。在附加或另选实施方案中,程序代码可以驻留在可通过数据网络访问的存储器中,例如云服务可访问的存储器。
设备140还可以包括至少一个网络接口设备或其他通信接口150。通信接口150可以包括适合于建立到一个或多个网络的有线或无线数据或电话连接的任何设备或设备组。网络接口设备的非限制性示例包括以太网网络适配器、调制解调器等。设备可以将消息作为电信号或光信号进行传输。
设备140还可以包括至少一个图形处理单元(GPU)152。GPU 152可以包括专用电子电路,其被设计为快速操纵和改变存储器以加速帧缓冲器中的图像的创建。GPU可以存在于视频卡上,也可以嵌入CPU主板上,或者在某些CPU中,在CPU管芯上。
电子设备可以是计算机、电话、移动设备、平板电脑、智能电话、智能手表或任何通信设备。通信设备可以包括处理器、存储器、总线、输入/输出部件、网络接口部件和其他适当的通信部件。输入设备的非限制性示例包括触摸屏(例如,用于对触摸区域成像的一个或多个相机或用于检测由触摸引起的压力变化的压力传感器)、鼠标、键盘,或可以用于响应于计算设备的用户的物理动作来生成输入事件的任何其他设备,或麦克风。输出设备的非限制性示例包括LCD屏幕、外部监视器、扬声器、视频文件、图像文件,或可用于显示或以其他方式呈现由计算设备生成的输出的任何其他设备。该设备可以执行程序代码,该程序代码配置处理器以执行上述操作中的一个或多个。
本文阐述了许多具体细节以提供对要求保护的主题的全面理解。然而,本领域的技术人员将理解,可以在没有这些具体细节的情况下实践要求保护的主题。在其他实例中,没有详细地介绍普通技术人员已知的方法、装置、或系统,以便不使要求保护的主题晦涩难懂。
除非另外特别说明,否则应当理解,在整个说明书中,利用诸如“处理”、“计算”、“计算出”、“确定”和“识别”等术语的讨论是指计算设备的动作或过程,诸如一个或多个计算机或类似的电子计算设备,其操纵或转换表示为计算平台的存储器、寄存器或其他信息存储设备、传输设备或显示设备内的物理电子量或磁量的数据。
本文讨论的一个或多个系统不限于任何特定的硬件架构或配置。计算设备可以包括部件的提供以一个或多个输入为条件的结果的任何合适的布置。合适的计算设备包括基于多用途微处理器的计算机系统,其访问存储的软件,该软件将计算系统从通用计算设备编程或配置到实现本发明主题的一个或多个实施方案的专用计算设备。可以使用任何合适的编程、脚本或其他类型的语言或语言的组合来在用于编程或配置计算设备的软件中实现本文包含的教导内容。
本文所公开的方法的实施方案可以在这样的计算设备的操作中执行。上述示例中呈现的框的顺序可以变化,例如,可以将框重新排序、组合和/或分成子块。某些框或过程可以并行执行。
本文中“适用于”或“被配置为”的使用意味着开放和包容性的语言,其不排除适用于或被配置为执行额外任务或步骤的设备。另外,“基于”的使用意味着开放和包容性,因为“基于”一个或多个所述条件或值的过程、步骤、计算或其他动作在实践中可以基于额外条件或超出所述的值。本文包括的标题、列表和编号仅是为了便于解释而并非旨在为限制性的。
还将理解的是,虽然术语“第一”、“第二”等可能在本文中用于描述各种元素,但是这些元素不应当被这些术语限定。这些术语只是用于将一个元件与另一元件区分开。例如,第一节点可以被称为第二节点,并且类似地,第二节点可以被称为第一节点,其改变描述的含义,只要所有出现的“第一节点”被一致地重命名并且所有出现的“第二节点”被一致地重命名。第一节点和第二节点都是节点,但它们不是同一个节点。
本文中所使用的术语仅仅是为了描述特定实施方案并非旨在对权利要求进行限制。如在本实施方案的描述和所附权利要求中所使用的那样,单数形式的“一个”(“a”“an”)和“该”旨在也涵盖复数形式,除非上下文清楚地另有指示。还将理解的是,本文中所使用的术语“和/或”是指并且涵盖相关联的所列出的项目中的一个或多个项目的任何和全部可能的组合。还将理解的是,术语“包括”(“comprises”和/或“comprising”)在本说明书中使用时是指定存在所陈述的特征、整数、步骤、操作、元件和/或部件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、部件、和/或其分组。
如本文所使用的,术语“如果”可以被解释为表示“当所述先决条件为真时”或“在所述先决条件为真时”或“响应于确定”或“根据确定”或“响应于检测到”所述先决条件为真,具体取决于上下文。类似地,短语“如果确定[所述先决条件为真]”或“如果[所述先决条件为真]”或“当[所述先决条件为真]时”被解释为表示“在确定所述先决条件为真时”或“响应于确定”或“根据确定”所述先决条件为真或“当检测到所述先决条件为真时”或“响应于检测到”所述先决条件为真,具体取决于上下文。
本发明的前述描述和概述应被理解为在每个方面都是例示性和示例性的,而非限制性的,并且本文所公开的本发明的范围不仅由例示性实施方案的详细描述来确定,而是根据专利法允许的全部广度。应当理解,本文所示和所述的实施方案仅是对本发明原理的说明,并且本领域的技术人员可以在不脱离本发明的范围和精神的情况下实现各种修改。

Claims (20)

1.一种立体360°渲染三维3D对象的方法,所述方法包括:
在具有一个或多个处理器和计算机可读存储介质的设备处:
通过识别具有3D位置的顶点来将所述3D对象的表面网格化,其中所述顶点定义多边形,每个所述多边形近似所述3D对象的所述表面的相应部分;
将所述顶点的所述3D位置变换为用于左眼视点的第一基于球体的投影的位置以及用于右眼视点的第二基于球体的投影的位置,其中变换所述顶点的所述3D位置包括基于用户取向变换所述顶点并基于所述左眼视点和所述右眼视点之间的轴间距离平移所述顶点;以及
基于用于所述左眼视点的所述第一基于球体的投影和用于所述右眼视点的所述第二基于球体的投影来渲染所述3D对象的立体360°渲染。
2.根据权利要求1所述的方法,其中变换所述顶点的所述3D位置包括在垂直于从投影球体的中心处的相机位置到所述顶点的经线方向的方向上平移所述3D对象的表面的所述顶点的所述3D位置,其中所述3D对象的表面的相应顶点的平移随着所述3D对象的表面的所述相应顶点的纬度增大而减小。
3.根据权利要求1至2中任一项所述的方法,其中变换所述顶点的所述3D位置还包括基于所述左眼视点和所述右眼视点的会聚角来旋转所述3D对象的表面的所述顶点。
4.根据权利要求3所述的方法,其中所述3D对象的表面的相应顶点的旋转随着所述3D对象的表面的所述相应顶点的纬度增大而减小。
5.根据权利要求1所述的方法,其中变换所述顶点的所述3D位置还包括:
变换所述3D位置以形成表示所述第一基于球体的投影的第一等量矩形投影;以及
变换所述3D位置以形成表示所述第二基于球体的投影的第二等量矩形投影,
其中所述3D对象的所述立体360°渲染包括所述第一等量矩形投影和所述第二等量矩形投影。
6.根据权利要求1所述的方法,其中变换所述3D位置还包括:
变换针对所述左眼视点调节的顶点的所述3D位置以形成用于投影球体的前半部分的前半部分等量矩形投影和用于所述投影球体的后半部分的后半部分等量矩形投影,并且将所述前半部分等量矩形投影和所述后半部分等量矩形投影组合以形成表示所述第一基于球体的投影的第一组合等量矩形投影;以及
变换针对所述右眼视点调节的顶点的所述3D位置以形成用于所述投影球体的前半部分的前半部分等量矩形投影和用于所述投影球体的所述后半部分的后半部分等量矩形投影,并且将所述前半部分等量矩形投影和所述后半部分等量矩形投影组合以形成表示所述第二基于球体的投影的第二组合等量矩形投影。
7.根据权利要求1所述的方法,其中将所述3D对象的所述表面网格化包括将表示所述3D对象的所述表面的网格化对象存储在图形处理单元GPU中,其中所述GPU使用所述网格化对象来渲染所述3D对象的所述立体360°渲染。
8.根据权利要求7所述的方法,还包括将所述3D对象的纹理数据存储在所述GPU中,其中所述GPU使用所述纹理数据来渲染所述3D对象的所述立体360°渲染。
9.根据权利要求1所述的方法,其中将所述3D对象的所述表面网格化包括自适应网格化。
10.根据权利要求1所述的方法,还包括在图像或视频创建应用程序的用户界面中显示所述3D对象的所述立体360°渲染,其中所述3D对象的所述360°渲染包括所述第一基于球体的投影和所述第二基于球体的投影的等量矩形表示。
11.根据权利要求10所述的方法,还包括:
接收改变所述3D对象的位置的输入数据;
基于接收到所述输入数据,实时更新所述3D对象的所述渲染以创建所述3D对象的更新的渲染,所述更新的渲染包括所述第一基于球体的投影和所述第二基于球体的投影的更新的等量矩形表示;以及
在所述用户界面中显示所述更新的渲染。
12.一种用于立体360°渲染三维3D对象的系统,包括:
非暂态计算机可读存储介质;和
一个或多个处理器,所述一个或多个处理器耦接到所述非暂态计算机可读存储介质,其中所述非暂态计算机可读存储介质包括程序指令,所述程序指令当在所述一个或多个处理器上执行时使得所述系统:
通过识别具有三维3D位置的顶点来将3D对象的表面网格化,其中所述顶点定义多边形,每个所述多边形近似所述3D对象的所述表面的相应部分;
将所述顶点的所述3D位置变换为表示用于左眼视点的第一基于球体的投影和用于右眼视点的第二基于球体的投影的等量矩形投影上的位置,其中变换所述顶点的所述3D位置包括:
基于用户取向来变换所述顶点;
基于所述左眼视点与所述右眼视点之间的轴间距离来平移所述顶点;以及
基于所述左眼视点和所述右眼视点的会聚角来旋转所述顶点;以及
基于所述等量矩形投影来渲染所述3D对象的立体360°渲染。
13.根据权利要求12所述的系统,其中变换所述顶点的所述3D位置包括基于所述轴间距离来平移所述3D对象的表面的所述顶点以及确定所述第一基于球体的投影和所述第二基于球体的投影,其中所述3D对象的表面的相应顶点的平移随着所述3D对象的表面的所述相应顶点的纬度增大而减小。
14.根据权利要求12至13中任一项所述的系统,其中变换所述顶点的所述3D位置包括基于所述会聚角旋转所述3D对象的表面的所述顶点以形成所述第一基于球体的投影和所述第二基于球体的投影,其中所述3D对象的表面的相应顶点的旋转随着所述3D对象的表面的所述相应顶点的纬度增大而减小。
15.根据权利要求12所述的系统,其中变换所述3D位置还包括:
变换针对所述左眼视点调节的顶点的所述3D位置以形成用于投影球体的前半部分的前半部分等量矩形投影和用于所述投影球体的后半部分的后半部分等量矩形投影,并且将所述前半部分等量矩形投影和所述后半部分等量矩形投影组合以形成表示所述第一基于球体的投影的第一组合等量矩形投影;以及
变换针对所述右眼视点调节的顶点的所述3D位置以形成用于所述投影球体的前半部分的前半部分等量矩形投影和用于所述投影球体的所述后半部分的后半部分等量矩形投影,并且将所述前半部分等量矩形投影和所述后半部分等量矩形投影组合以形成表示所述第二基于球体的投影的第二组合等量矩形投影。
16.根据权利要求12所述的系统,还包括图形处理单元GPU,其中所述GPU被配置为存储表示所述3D对象的网格化对象并使用所述网格化对象来渲染所述3D对象的所述立体360°渲染。
17.根据权利要求16所述的系统,其中所述GPU还被配置为存储所述3D对象的纹理数据,并使用所述纹理数据来渲染所述3D对象的所述立体360°渲染。
18.根据权利要求12所述的系统,其中将所述3D对象的所述表面网格化包括自适应网格化。
19.根据权利要求12所述的系统,其中所述指令在被执行时还使得所述系统在图像或视频创建应用程序的用户界面中显示所述3D对象的所述立体360°渲染。
20.一种非暂态计算机可读存储介质,将计算机可执行的程序指令存储在计算机上以:
通过识别具有三维3D位置的顶点来将所述3D对象的表面网格化,其中所述顶点定义多边形,每个所述多边形近似所述3D对象的所述表面的相应部分;
将所述顶点的所述3D位置变换为用于左眼视点的第一基于球体的投影的位置以及用于右眼视点的第二基于球体的投影的位置,其中变换所述顶点的所述3D位置包括基于用户取向以及所述左眼视点和所述右眼视点之间的差异来变换所述顶点;以及
基于用于所述左眼视点的所述第一基于球体的投影和用于所述右眼视点的所述第二基于球体的投影来渲染所述3D对象的立体360°渲染。
CN201811521217.1A 2017-12-13 2018-12-13 虚拟3d对象的立体渲染 Active CN109920043B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310680126.7A CN116704106A (zh) 2017-12-13 2018-12-13 虚拟3d对象的立体渲染

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201762598156P 2017-12-13 2017-12-13
US62/598,156 2017-12-13

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN202310680126.7A Division CN116704106A (zh) 2017-12-13 2018-12-13 虚拟3d对象的立体渲染

Publications (2)

Publication Number Publication Date
CN109920043A CN109920043A (zh) 2019-06-21
CN109920043B true CN109920043B (zh) 2023-06-30

Family

ID=66629085

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201811521217.1A Active CN109920043B (zh) 2017-12-13 2018-12-13 虚拟3d对象的立体渲染
CN202310680126.7A Pending CN116704106A (zh) 2017-12-13 2018-12-13 虚拟3d对象的立体渲染

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN202310680126.7A Pending CN116704106A (zh) 2017-12-13 2018-12-13 虚拟3d对象的立体渲染

Country Status (3)

Country Link
US (3) US10783706B2 (zh)
CN (2) CN109920043B (zh)
DE (1) DE102018130770A1 (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110703963B (zh) * 2019-09-09 2021-07-06 稿定(厦门)科技有限公司 3d文字展示方法、介质、设备及装置
CN111292404B (zh) * 2020-01-17 2023-08-11 上海凯利泰医疗科技股份有限公司 预多孔化实体结构的优化方法、系统、存储介质、设备
US11363247B2 (en) * 2020-02-14 2022-06-14 Valve Corporation Motion smoothing in a distributed system
US11758101B2 (en) 2020-08-25 2023-09-12 Samsung Electronics Co., Ltd. Restoration of the FOV of images for stereoscopic rendering

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101742348A (zh) * 2010-01-04 2010-06-16 中国电信股份有限公司 渲染方法与系统

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120139906A1 (en) * 2010-12-03 2012-06-07 Qualcomm Incorporated Hybrid reality for 3d human-machine interface
JP6153366B2 (ja) 2013-03-29 2017-06-28 株式会社バンダイナムコエンターテインメント 画像生成システム及びプログラム
US9451162B2 (en) * 2013-08-21 2016-09-20 Jaunt Inc. Camera array including camera modules
US20170078653A1 (en) * 2015-09-15 2017-03-16 Qualcomm Incorporated Systems and methods for producing a surround view
US10157448B2 (en) 2016-02-12 2018-12-18 Qualcomm Incorporated Foveated video rendering
US10102610B2 (en) * 2016-04-05 2018-10-16 Qualcomm Incorporated Dual fisheye images stitching for spherical video
US10127632B1 (en) * 2016-09-05 2018-11-13 Google Llc Display and update of panoramic image montages
US10242496B2 (en) * 2017-04-24 2019-03-26 Intel Corporation Adaptive sub-patches system, apparatus and method
CN107333121B (zh) * 2017-06-27 2019-02-26 山东大学 曲面屏幕上移动视点的沉浸式立体渲染投影系统及其方法

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101742348A (zh) * 2010-01-04 2010-06-16 中国电信股份有限公司 渲染方法与系统

Also Published As

Publication number Publication date
CN109920043A (zh) 2019-06-21
CN116704106A (zh) 2023-09-05
US11417060B2 (en) 2022-08-16
US20200380778A1 (en) 2020-12-03
DE102018130770A1 (de) 2019-06-13
US20210407195A9 (en) 2021-12-30
US20190180504A1 (en) 2019-06-13
US10783706B2 (en) 2020-09-22
US20220327781A1 (en) 2022-10-13

Similar Documents

Publication Publication Date Title
CN109920043B (zh) 虚拟3d对象的立体渲染
US9626790B1 (en) View-dependent textures for interactive geographic information system
WO2018188479A1 (zh) 基于增强现实的导航方法及装置
US20120229460A1 (en) Method and System for Optimizing Resource Usage in a Graphics Pipeline
CN108230435B (zh) 采用立方图纹理的图形处理
US20170278294A1 (en) Texture Blending Between View-Dependent Texture and Base Texture in a Geographic Information System
US10217259B2 (en) Method of and apparatus for graphics processing
US11004255B2 (en) Efficient rendering of high-density meshes
WO2015196791A1 (zh) 双目三维图形渲染方法及相关系统
KR100967296B1 (ko) 그래픽 인터페이스 및 스테레오스코픽 디스플레이용 그래픽데이터를 래스터라이즈하는 방법
CN109510975B (zh) 一种视频图像的提取方法、设备及系统
US6559844B1 (en) Method and apparatus for generating multiple views using a graphics engine
EP3573018B1 (en) Image generation device, and image display control device
US20210090322A1 (en) Generating and Modifying Representations of Objects in an Augmented-Reality or Virtual-Reality Scene
US20140168232A1 (en) Stereo viewpoint graphics processing subsystem and method of sharing geometry data between stereo images in screen-spaced processing
CN116610213A (zh) 虚拟现实中的交互显示方法、装置、电子设备、存储介质
KR20120138185A (ko) 저해상도 그래픽 영상을 고해상도 그래픽 영상으로 실시간 변환하는 그래픽 영상 처리 장치 및 방법
US10453247B1 (en) Vertex shift for rendering 360 stereoscopic content
TWI812548B (zh) 生成並排三維影像的方法及電腦裝置
WO2023166794A1 (ja) 情報処理装置、情報処理方法、画像生成装置、画像生成方法及びプログラム
CN118115693A (zh) 生成并排三维影像的方法及电脑装置
He et al. Interactive projection images generation for swept-based 3D display
CN117459694A (zh) 图像生成方法、装置、电子设备及存储介质
CN117893659A (zh) 一种基于分布式计算的ar渲染方法、装置及电子设备
CN115457200A (zh) 2.5维图像自动真立体显示方法、装置、设备及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant