CN110853129A - 泛洪填充的并行方法和装置 - Google Patents

泛洪填充的并行方法和装置 Download PDF

Info

Publication number
CN110853129A
CN110853129A CN201910653679.7A CN201910653679A CN110853129A CN 110853129 A CN110853129 A CN 110853129A CN 201910653679 A CN201910653679 A CN 201910653679A CN 110853129 A CN110853129 A CN 110853129A
Authority
CN
China
Prior art keywords
cell
flood
image
fill
model
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
CN201910653679.7A
Other languages
English (en)
Inventor
R.K.J.威西
A.J.比戈斯
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.)
Sony Interactive Entertainment Inc
Original Assignee
Sony Interactive Entertainment 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 Sony Interactive Entertainment Inc filed Critical Sony Interactive Entertainment Inc
Publication of CN110853129A publication Critical patent/CN110853129A/zh
Pending legal-status Critical Current

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
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B29WORKING OF PLASTICS; WORKING OF SUBSTANCES IN A PLASTIC STATE IN GENERAL
    • B29CSHAPING OR JOINING OF PLASTICS; SHAPING OF MATERIAL IN A PLASTIC STATE, NOT OTHERWISE PROVIDED FOR; AFTER-TREATMENT OF THE SHAPED PRODUCTS, e.g. REPAIRING
    • B29C64/00Additive manufacturing, i.e. manufacturing of three-dimensional [3D] objects by additive deposition, additive agglomeration or additive layering, e.g. by 3D printing, stereolithography or selective laser sintering
    • B29C64/30Auxiliary operations or equipment
    • B29C64/386Data acquisition or data processing for additive manufacturing
    • B29C64/393Data acquisition or data processing for additive manufacturing for controlling or regulating additive manufacturing processes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/04Texture mapping
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B29WORKING OF PLASTICS; WORKING OF SUBSTANCES IN A PLASTIC STATE IN GENERAL
    • B29CSHAPING OR JOINING OF PLASTICS; SHAPING OF MATERIAL IN A PLASTIC STATE, NOT OTHERWISE PROVIDED FOR; AFTER-TREATMENT OF THE SHAPED PRODUCTS, e.g. REPAIRING
    • B29C64/00Additive manufacturing, i.e. manufacturing of three-dimensional [3D] objects by additive deposition, additive agglomeration or additive layering, e.g. by 3D printing, stereolithography or selective laser sintering
    • B29C64/30Auxiliary operations or equipment
    • B29C64/386Data acquisition or data processing for additive manufacturing
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B33ADDITIVE MANUFACTURING TECHNOLOGY
    • B33YADDITIVE MANUFACTURING, i.e. MANUFACTURING OF THREE-DIMENSIONAL [3-D] OBJECTS BY ADDITIVE DEPOSITION, ADDITIVE AGGLOMERATION OR ADDITIVE LAYERING, e.g. BY 3-D PRINTING, STEREOLITHOGRAPHY OR SELECTIVE LASER SINTERING
    • B33Y50/00Data acquisition or data processing for additive manufacturing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/40Filling a planar surface by adding surface attributes, e.g. colour or texture
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/50Lighting effects
    • G06T15/80Shading
    • 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/005Tree description, e.g. octree, quadtree
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T19/00Manipulating 3D models or images for computer graphics
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T19/00Manipulating 3D models or images for computer graphics
    • G06T19/20Editing of 3D images, e.g. changing shapes or colours, aligning objects or positioning parts
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B33ADDITIVE MANUFACTURING TECHNOLOGY
    • B33YADDITIVE MANUFACTURING, i.e. MANUFACTURING OF THREE-DIMENSIONAL [3-D] OBJECTS BY ADDITIVE DEPOSITION, ADDITIVE AGGLOMERATION OR ADDITIVE LAYERING, e.g. BY 3-D PRINTING, STEREOLITHOGRAPHY OR SELECTIVE LASER SINTERING
    • B33Y50/00Data acquisition or data processing for additive manufacturing
    • B33Y50/02Data acquisition or data processing for additive manufacturing for controlling or regulating additive manufacturing processes

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Materials Engineering (AREA)
  • Theoretical Computer Science (AREA)
  • Chemical & Material Sciences (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Graphics (AREA)
  • Manufacturing & Machinery (AREA)
  • Software Systems (AREA)
  • Geometry (AREA)
  • Mechanical Engineering (AREA)
  • Optics & Photonics (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Evolutionary Computation (AREA)
  • Architecture (AREA)
  • Image Generation (AREA)
  • Processing Or Creating Images (AREA)

Abstract

一种用于并行实施的洪泛填充方法,包括步骤:接收图像,图像包括具有要被替换为洪泛填充目标颜色的洪泛填充源颜色的第一元素,以及不具有泛洪填充源颜色的第二元素;根据层次空间分割方案划分图像,以形成在层次中的多个层级处的单元;检测每个单元被第二元素的占用;对于没有被第二元素占用的任何单元,将那个单元的子单元的深度高程值设置为大于那个单元的值的深度高程值,表示泛洪填充应通过单元的深度高程量将层级向根单元导航,同时只占用没有任何第二元素的节点,从而达到可以被泛洪填充的最大的父单元;以及用泛洪填充目标颜色填充没有被第二元素占用的单元的泛洪填充源颜色,从而修改接收的图像。

Description

泛洪填充的并行方法和装置
技术领域
本发明涉及泛洪填充的并行方法和对应的装置。
背景技术
3D打印是一种立体打印的手段,其中打印机不在平面上沉积(deposit)二维像素,而是在体积内沉积三维体素(voxel)。有多种技术可实现这一点,包括使用激光逐层地熔化和熔接诸如金属粉末等材料以构建结构,或者使用高温打印头来沉积冷却和硬化的小塑料液滴以构建3D模型。
这种3D模型的设计通常是在计算机辅助设计程序中生成的,其中用户定义虚拟模型的表面和体积。然后,程序生成绘制列表,其指定使用3D打印机熔接或沉积材料以渲染虚拟模型的顺序。
这种方式导致创造许多美学和功能上独特的对象,其中一些对象难以使用传统工艺制造。然而,3D打印机的使用仍未得到充分的探索。
发明内容
本发明旨在为3D打印机提供一种新的用途。
在第一方面,根据权利要求1,提供了一种用于并行实施的泛洪填充(flood-fill)方法。
在另一方面,根据权利要求16提供了一种娱乐设备。
本发明的其它各个方面和特征在所附权利要求书中进行了定义。
附图说明
现在参照附图以示例的方式描述本发明的实施例,其中:
图1是根据本发明实施例的娱乐设备的示意图。
图2A是根据本发明实施例的3D打印机的侧视图的示意图。
图2B是根据本发明实施例的3D打印机的平面图的示意图。
图3是根据本发明实施例的视频游戏虚拟环境的示意图。
图4是根据本发明实施例的到3D模型空间的投影的示意图。
图5是根据本发明实施例的虚拟摄影测量处理的默认虚拟相机位置的示意图。
图6A和6B是基于默认虚拟相机位置的渲染的由虚拟摄影测量处理生成的3D模型的示意图。
图7是根据本发明实施例的3D打印建模的方法的流程图。
图8A是根据本发明实施例的目标对象的图像。
图8B是根据本发明实施例的目标对象的表面的体素模型的图像。
图9是根据本发明实施例的3D打印建模方法的流程图。
图10A至图10E是说明根据本发明实施例的生成用于3D打印的几何图形的过程的示意图。
图11是根据本发明实施例的3D可打印视频游戏角色的示意图。
图12是根据本发明实施例的3D可打印视频游戏角色的示意图。
图13A、图13B和图13C是传统泛洪填充操作的示意图。
图14是根据本发明实施例的要被范洪填充的2D图像的示意图。
图15是根据本发明实施例的分层空间分割方案的单元内基于图像占用的高程深度值的表示。
图16是根据本发明实施例的分层空间分割方案的单元内基于图像占用的高程深度值的示意图。
图17A说明了根据本发明实施例的分层空间分割方案中对子单元的递归。
图17B说明了根据本发明的实施例的分层空间分割方案中对相邻单元的遍历。
图18A、图18B和图18C是不适当的泛洪填充操作的图示。
图19A是要组装用于3D打印的对象的图示。
图19B、图19C和图19D是不适当的泛洪填充操作的图示。
图20是根据本发明实施例的正确的泛洪操作的图示。
图21a至图21h是根据本发明实施例对图像进行修改的图示。
图22是根据本发明实施例的用于并行实现的泛洪填充的方法的流程图。
具体实施方式
公开了一种用于并行实施的泛洪填充的系统和方法。在下面的描述中,为了提供对本发明实施例的透彻理解,提供了许多具体细节。然而,对于本领域技术人员来说,显然不需要使用这些具体细节来实践本发明。相反地,为了清楚起见,在适当的情况下,省略了本领域技术人员已知的特定细节。
在本发明的实施例中,娱乐设备可操作地耦合到3D打印机。如下文所述,娱乐设备被布置在操作中以捕获视频游戏的快照以供3D打印机复制。
娱乐设备
合适的娱乐设备的示例是设备。
图1示意性地说明了
Figure BDA0002136139050000032
娱乐设备的总体系统架构。提供系统单元10,其具有可连接到该系统单元的各种外围设备。
系统单元10包括作为单个芯片的加速处理单元(accelerated processing unit,APU)20,该加速处理单元20又包括中央处理单元(central processing unit,CPU)20A和图形处理单元(graphics processing unit,GPU)20B。GPU能够并行实施多个工作产品(workproducts)。APU 20可以访问随机存取存储器(random access memory,RAM)单元22。
APU 20可选地经由I/O桥24与总线40通信,I/O桥24可以是APU 20的离散组件或是APU 20的部分。
连接到总线40的是数据存储组件,诸如硬盘驱动37和可操作的访问兼容光盘36A上的数据的蓝光驱动36。额外地,RAM单元22可以与总线40通信。
也可以选择连接到总线40的是辅助处理器38。可以提供辅助处理器38来运行或支持操作系统。
系统单元10经由音频/视频输入端口31、以太网端口32、蓝牙无线链路33、Wi-Fi无线链路34或一个或多个通用串行总线(universal serial bus,USB)适当地与外围设备通信。可以经由诸如HDMI端口的AV输出39输出音频和视频。
外围设备可以包括单视场或立体相机41,诸如PlayStation眼或PS相机;棒式视频游戏控制器42,诸如PlayStation移动和传统的手持式视频游戏控制器43,诸如
Figure BDA0002136139050000033
便携式娱乐设备44,诸如
Figure BDA0002136139050000034
Figure BDA0002136139050000035
键盘45和/或鼠标46;媒体控制器47,例如以远程控制的形式;以及耳机48。可以类似地考虑其他外围设备,诸如电话或平板电脑、打印机、或3D打印机(未示出)。
GPU 20B可选地与CPU 20A结合,生成视频图像和音频以经由AV输出39输出。可选地,可以与音频处理器(未显示)相结合生成音频,或者由音频处理器生成音频。
视频和音频(可选)可以呈现给电视51。在电视的支持下,视频可以是立体的。音频可以诸如立体声、5.1环绕声或7.1环绕声的多种格式中的一种呈现给家庭影院系统52。视频和音频也可以呈现给用户60穿戴的头戴式显示器单元53。头戴式显示器单元可以有集成的耳机、可附接的耳机/耳塞,或者依靠提供给用户的单独音频。
在操作中,娱乐设备默认为诸如freebsd9.0的变体的操作系统。操作系统可以在CPU 20A、辅助处理器38或两者的混合体上运行。操作系统为用户提供图形用户界面,如PlayStation动态菜单。该菜单允许用户访问操作系统功能,并选择游戏和可选地其他内容。
3D打印机
如前所述,娱乐设备可操作地耦合到3D打印机。
应当理解的是,存在许多用于3D打印技术,这些技术通常通过如何构建层以创建模型来区分。一种技术被称为选择性激光烧结(selective laser sintering,SLS),其中一层粉末通过激光选择性地熔合在一起以形成固体区域;然后将新的粉末层置于顶部,并重复该处理以构建模型。另一种技术称为立体光刻法,并且结合一个或多个激光器使用光反应性液体以在限定的点处硬化液体,从而再次通常在层中构建模型。虽然这两种技术都设想在本发明的实施例的范围内,但它们的缺点是需要大功率的激光器和模型周围的粉末或液体形式的大量基体材料,这使得它们对于家用不太实用。因此,优选的技术是熔融沉积建模(fused deposition modelling,FDM)。这种方法使在模型的连续层上移动的打印头中的塑料熔化,以类似于通过喷墨打印机在纸张上沉积墨滴的方式在每层中的选择位置处沉积塑料液滴。这避免了对激光器或模型使用的原材料的周围基体的需要。因此,为便于理解,本文中参考图2A和2B简要描述了FDM 3D打印机。
图2A示出了简易FDM 3D打印机100的侧视图,而图2B示出了相同FDM 3D打印机的平面图。打印机100包括底座结构110以及支持支柱102,该底座结构110为打印模型的组装提供工作表面,在支持支柱102上可以升高和降低打印机机架120。
在示例机构(mechanism)中,电机112Y耦合到包含螺纹的驱动杆104;然后,打印机机架120包括具有螺纹孔和平滑孔的耦合部分,螺纹孔与驱动杆啮合,并且平滑孔与支持支柱中的一个啮合。当在打印机驱动器的指示下电机112Y以顺时针或逆时针方向转动驱动杆时,打印机机架会向上或向下移动驱动杆和支持支柱(即沿Y轴),并且从而升高或降低附接到其上的打印机托架130。
如图2B所示,打印机机架120通常安装在四个支持支柱102上。可选地,第二电机、驱动杆和耦合部分可提供在机架的相对角处,以减少机架和电机上的应力。
打印机机架120支持打印机托架130。电机112X耦合到通过装置124固定到打印机托架130的驱动带122。当在打印机驱动器的指示下电机112X顺时针或逆时针旋转驱动带时,打印机托架130沿打印机机架120(即沿X轴)向左或向右移动,并且从而横向移动附接的打印机机构140。
打印机托架130支持打印机机构140。电机112Z耦合到通过装置134固定到打印机机构140的驱动带132。当在打印机驱动器的指示下电机112Z顺时针或逆时针旋转驱动带时,打印机机构140沿深度方向(即沿Z轴)向内或向外移动。
打印机机构140本身包括加热装置,用于加热馈送入该机构(未示出)的一个或多个塑料螺纹的端部,或用于加热从该机构(未显示)上的料斗中获得的塑料粉末颗粒。塑料的加热或可替换地加热塑料的释放由打印机驱动器的指令控制。然后,通过打印头或喷嘴142将得到的熔化的塑料珠或液滴沉积到打印机的工作表面110或部分构建的模型(未显示)上(如果适用)。
这样,在打印机驱动器的适当指令下,可以使用电机112X、Y、Z将打印头放置在3D打印机的工作体积内的任何位置,并且可以在该位置沉积塑料液滴,然后冷却和硬化以形成3D模型的体素。通过打印头的连续移动和塑料液滴的选择性熔化或释放,因此可以从多个这样的体素构建完整的3D模型。
通常,打印机驱动器本身是计算机辅助设计系统中的软件模块,它接收描述3D模型的模型几何图形。然后,打印机驱动器为y方向上的每个层生成一个体素厚度的3D模型的薄片,并确定该层中每个体素的x、z坐标。然后打印机驱动器向打印机100输出一系列指令,以将打印机头142移动到层y中每个体素的各自的x、z坐标,其中指示打印机机构加热和/或释放塑料液滴以在那个位置形成体素。通过这种方式,3D打印机将数字3D模型重建为物理模型。
在本发明的实施例中,打印机驱动器被合并到视频游戏或娱乐设备的操作系统中、或者由视频游戏或操作系统使用的支持功能的中间件库中。
虚拟环境
现在参考图3,在娱乐设备上运行的视频游戏包括虚拟环境,其中当用户改变视点的位置、并且当游戏的实体或元素执行脚本活动或对用户的行为做出反应时或两者兼有时,通常动态地观看多个实体或环境元素。
在图3中,示出了简单的环境200,其包括具有门212的房间210;在一个墙壁上,在烛台214中安装了蜡烛。在房间中的是玩家的角色220(这里例如由虚构的游戏角色Blobman示出)。
虚拟环境由几何数据在3D中构造,通常以定义对象表面的多边形的形式。这些多边形可以例如在静态对象和背景场景的情况下预定义,或者可以在环境内的移动实体(例如玩家的角色)的情况下被扭曲/重新定位或程序化生成。应当理解的是,本文对“多边形”的引用包括初始几何特征,例如从其中构建多边形的顶点,其中这些多边形用于图形管线中。类似地,体素渲染使用等效的几何特征来描述对象。因此,描述为应用于多边形的处理可以适当地全部或部分地应用于这样的其他几何特征。
然后,虚拟环境被准备以从选定的视点向用户呈现。对用户具有视线的环境元素使用适合于与其所代表的对象的纹理信息进行图案化,并且纹理化几何图形将进一步处理照明效果,诸如距离虚拟光源的亮度变化,以及凹凸贴图(mapping)(或类似技术,诸如位移贴图或使用等值面)以模拟纹理应如何与此类虚拟光源相互作用。此外,还可以包括其他效果,如体积雾和粒子效果。
然后,最终渲染的图像通常经由2D或3D电视或经由头戴式显示器呈现给用户。
通常在这样的游戏中,用户具有他们希望与朋友和/或更广泛的世界共享的体验。为此,如前所述,诸如PlayStation4的娱乐设备可以在其控制器上具有“共享”按钮,以便于捕获呈现给用户的图像,然后可以将其上载到共享站点,例如社交媒体网站。
从图像集合打印环境的3D模型
在本发明的实施例中,为用户提供从游戏中选择从中创建3D打印模型的时刻的选项。以这种方式,用户可以创建他们的游戏中的(in-game)体验的有形纪念品。
在本发明的实施例中,当娱乐设备接收到指示用户希望创建当前场景的3D打印的输入时,游戏状态被冻结(例如,暂停),以便可以对其进行3D打印分析。
应当理解的是,对于游戏,许多可见特征不仅仅是模型中固有的游戏中的几何形状或纹理。例如,游戏中的几何形状(可以是多边形和骨架模型的混合)可以具有物理效果,诸如从一帧到另一帧应用的定位和变形。其他渲染效果(如程序化效果和参数化模型)可以在渲染期间在着色器中完成。同时,着色器还可以根据凹凸贴图等在视觉上处理纹理。因此,通常当最终场景被渲染以在屏幕上显示时,最终场景(如用户所看到的)仅在一个地方组合,并且以一种格式组合。
因此,在本发明的实施例中,优先于虚拟环境几何形状的潜在不同的内部游戏中表示,使用这些渲染图像为3D打印构建3D模型。这种技术可以称为虚拟摄影测量(photogrammetry)。然而,单个渲染图像通常将包括不足以完全建模用于3D打印的虚拟环境的信息。
如前所述,在正常播放期间,针对特定视点渲染虚拟环境。此外,为了实现高帧速率和有效处理,然后,作为该渲染处理的一部分,在渲染处理的早期剔除从该特定视点不可见的环境的元素。
因此,仅保留和渲染从所选视点可见的环境的元素。如果要使用此渲染生成环境的3D打印模型,则从该特定视点不可见的模型的所有方面都将丢失、或者必须使用某种形式的插值算法来填充。显然,当从任何其他角度观看真实的打印模型时,这将导致不令人满意的结果。
因此,在本发明的实施例中,当游戏状态被冻结时,娱乐设备从不同的视点生成虚拟环境的多个渲染图像。
优选地,至少渲染两个相对的视点,其中第一个视点通常是最初显示给用户的视点。在两个图像之间,这导致在原始渲染视图中剔除环境的大多数(如果不是全部)元素的渲染。
可选地,渲染三个视点,优选地均匀地分布在平面上,其中第一视点是最初向用户显示的视点,并且平面在第一视点的视图方向上水平居中。同样,这会导致在原始渲染视图中剔除大多数(如果不是全部)环境元素的渲染,但可能会捕获可能已经被前面和后面的对象遮挡并且因此不会在上面提到的两个视点中的任何一个中渲染的更多的环境元素。
更一般地,随着更多视点分布在平面上,环境的更少的元素依然未渲染。例如,娱乐设备可以在环境中进行“飞越(fly-by)”,捕获N个图像,其中N例如在2和360之间。捕获的图像的数量是最终模型的保真度与分析捕获的图像所需的娱乐设备的存储和处理能力之间的折衷(如本文稍后所讨论的)。
可选地,还可以渲染从虚拟环境上方向下看的一个或多个视点(作为单独的图像或作为飞越序列的一部分),以提供基本上平行于单个平面(诸如,某些环境特征的上表面)上的先前捕获的视点的那些环境元素的附加细节。
在本发明的实施例中,还记录与表示每个图像的视点的虚拟相机的位置和观看方向相关的元数据,并将其与各自的图像相关联。
应当理解的是,虚拟环境可以表示大区域,而3D模型将包括由可以由特定3D打印机生成的模型的尺寸和打印环境的比例所确定的有限区域。优选地,如果特定3D打印机与娱乐设备通信,则特定3D打印机的特性是已知的(否则,可以假设默认模型尺寸或者用户可以规定尺寸);类似地,可以由用户选择打印环境的比例,或者可以参考环境内的关键字符(例如,用户的化身(avatar))自动确定。可以将该化身选择为最终3D打印模型内的特定尺寸(作为非限制性示例,默认为5cm高),并且因此可以计算以相同比例打印的环境的范围。可替换地,在“角色打印”模式中,可以仅打印特定角色,诸如用户的化身,而不包括周围的游戏中环境特征。对于允许用户定制他们自己的游戏中角色并且在情感依赖于其上的情况,这可能是特别有价值的。
因此,两个或更多个视点的等距分布可以以该关键字符为中心,并且可以可选地使用任何游戏中相机控制逻辑来确定使关键字符在每个捕获图像内居中所需的必要视图方向。
在游戏呈现第一人称视图的情况下,然后基于模型尺寸和假设的或用户设置的比例,可以计算模型的中心点并且可以围绕它分布视点。
结合上述方法,娱乐设备可以通过选择预定半径的球体上的采样点来捕获图像,并且该采样点以该中心点为中心。可选地,那些被环境屏障(诸如地面之下或山内部的球体上的点)遮挡的采样点可以被跳过,或球体的半径可以局部地减小,直到表面不再被环境屏障遮挡。可替换地,可以从渲染中省略不是要3D打印的目标对象的一部分的环境元素,以提供无障碍的视图(本文稍后将描述从更宽的虚拟环境中选择目标对象)。在可选地在该平面之上的球体上选择一个或多个视点之前,采样方案可以首先在上述包括原始视点和中心点并且平行于原始视点的水平轴的平面上选择视点,然后可选地在该平面下方的球体上选择一个或多个视点。预定半径可以等于原始视点与模型的确定的中心点之间的距离,以保持与原始捕获图像的一致性,或者原始图像和后续附加图像可以在不同的有效半径处重新渲染,例如包含将包括在3D打印模型中的地面区域的图像的视场处的最小半径。值得注意的是,传统上游戏在较大的绘制距离下使用较低保真度的模型来简化渲染处理。因此,可选地,半径可以被限制到等于渲染距离的最大距离,在该渲染距离处游戏将选择图像的关键元素(诸如,用户的化身)的较低保真度模型。进一步可选地,出于美学目的,或者因为他们希望确保特定环境特征或特征的组合包括在最终模型中,这可以被用户覆盖。对于允许用户定制环境的情况,例如通过创建所谓的“mods”,这可能是特别有价值的。
无论如何,结果是捕获对于给定游戏状态的虚拟环境的两个或更多个互补视点的一组图像。
应当理解的是,上述图像捕获处理可以由娱乐设备控制。然而,可替代地或另外地,用户可以通过选择这些视点本身并使用传统的图像捕获处理来从一个或多个不同的视点捕获相同场景的图像。这些视点可能不对应于本文先前讨论的优选分布。同样应当理解的是,不同用户可以在不同的时间在不同的娱乐设备上捕获来自不同视点的相同场景的图像;假设用户可以访问池化(pooled)的图像集(例如,如果它们被发布到在线论坛,或者是从移动或改变视点的“飞越”视频中提取的剧照,诸如可以包括在视频游戏的预告片视频中),则可以获得虚拟环境的两个或多个互补视点的等效集。
给定这些图像和(可选地)与视点位置和方向相关的关联元数据,则娱乐设备可以继续分析这些图像以生成3D模型数据。
可以使用几种分析技术,(可选地)以互补的方式。
轮廓分析使用捕获图像中对象的边缘来估计该边缘的局部对象轮廓。然后可以将对象轮廓垂直于每个视点的轮廓挤出(extrude),直到它与另一个挤出的轮廓(通常从另一个视点挤出)相交,以创建对象形状的近似。应当理解的是,随着视点的数量根据本文先前描述的方案增加,每个挤压将朝向围绕对象的较小的角度,从而产生对象的更精确的整体模型。
立体分析使用两个重叠视点内的相同对象的相对位移来计算它们与该视点或每个视点的距离。根据该信息,可以构建深度图,该深度图指示在两个视点可见的区域中的对象的3D形状。因此,同样地,在更多视点可用的情况下,可以使用连续的视点对来构建观看对象的表面的地图。
在任何一种情况下,在没有视点信息的情况下,这可以通过关联图像之间的环境特征、并且选择提供这些特征的相对位置的最佳相关性的视点位置和方向来估计。
应当理解的是,轮廓分析和立体分析可以用于彼此互补。例如,这两种技术可用于检测彼此模型中的误差;在两种技术生成相差阈值量的对象表面的估计值情况下,可以使用与阈值协议内的两种技术的对象表面的附近估计之间的插值最接近匹配的估计,其他估计被丢弃。可选地,在打印之前,还可以突出显示模型的这些区域以供用户检查和/或编辑,如本文后面所讨论的。
在从第三方获得图像数据(例如,从论坛上的屏幕截图)并且没有可用的附加元数据的情况下,上述技术特别有用。
然而,在由娱乐设备生成和捕获的图像的情况下,优选地还捕获由娱乐设备自身生成的相关联的深度信息。如前所述,在传统的视点渲染期间,从渲染视图中遮挡的环境元素被剔除。该遮挡至少部分地由环境中的对象与虚拟相机的相对距离来确定;例如,在其他对象后面的对象被认为是被遮挡并因此被剔除。为此目的,这些距离由娱乐设备计算。这意味着对于每个捕获的图像,存在精确的每像素(或甚至子像素)分辨率距离或“深度”图可用。
在本发明的实施例中,还捕获该深度图并将其与娱乐设备捕获的每个图像相关联,以用于生成3D模型。原则上,通过复制在生成图像时使用的所谓的z缓冲器,可以以对渲染器的操作透明的方式获得该信息。因此,图像捕获处理不需要修改游戏渲染引擎。
更一般地,应当理解的是,可以相对于3D原点(或者例如游戏世界中的原点或者用于渲染孤立的目标对象的原点)做出用于识别每个捕获图像内的渲染像素的表面位置的任何合适技术,从而在可能的多个渲染器上生成像素的一致表示。
现在参考图4,给定关于位置A的信息和每个图像的视点方向B,以及相关联的距离信息z,每个图像的像素可以被投影到共享的虚拟建模空间300内的各个点,例如基于共同的原点。实际上,每个像素在图像局部的坐标方案中从图像视点的位置A位移量x,y,z(但是可以使用公知技术将其旋转到与共享虚拟建模空间共有的坐标方案)。这里,x和y是捕获图像中的像素坐标(由抽象屏幕C表示),并且z是该像素距离相机位置A的相关联的深度或距离值。为清楚起见,在图4中仅投射了一列像素(即,对于单个x值),但是应当理解的是,可以以这种方式投影图像的任何数量的像素。例如,与目标对象相对应的像素。
结果是来自每个图像的像素将被放置共享虚拟建模空间内,位于3D中场景中虚拟对象的表面上的正确位置上,如图4中使用Blobman的示例所示。当每个图像被投影到共享的虚拟建模空间中时,场景中每个对象的更多表面将以这种方式“涂入(painted-in)”。在两个图像将相同像素投影到3D空间中的相同点上的情况下,可以丢弃第二投影像素或者可以替换第一像素,或者可以生成平均值。
应当理解的是,像素是二维对象。因此在本发明的实施例中,当图像的像素投影到共享虚拟建模的空间的位置xi,yj,zk处时,实际上在该位置处创建一个体素(典型的立方三维像素),并且与所投影的像素相关联的颜色信息被用作该体素的颜色信息。
效果是通过将每个图像中的图像像素的颜色数据投影到共享虚拟建模空间中的x,y,z位置来构建表示虚拟环境的可见表面的体素的壳(shell)。
应当理解的是,替代使用来自娱乐设备的z缓冲深度信息将多个图像投影到共享建模空间中,可以使用先前讨论的立体深度估计和/或轮廓分析和表面挤压技术来估计该深度信息。因此,这些技术也可以用于以上述方式驱动共享模型空间内的体素壳的集合。
无论如何,一旦已经使用完所有图像,可以分析所得到的体素的壳以用于完整性。可以通过从周围表面插值来填充表面中的任何间隙(可选地低于阈值尺寸)。
在以体素壳的形式已经生成环境的3D形状的估计之后,可以生成3D模型用于打印。
确定和提高模型完整性
现在参考图5,在本发明的实施例中,从多个视点渲染目标对象(诸如所示出的角色520)。虽然之前建议至少可以使用两个图像,或者仅使用少量图像,但实际上可以使用更多图像以便提供对(多个)目标对象的良好覆盖。因此,在图5中,作为非限制性示例,通过虚拟相机为角色的三个圆形轨道中的每一个生成八十个渲染,每个轨道围绕与轨道本身正交的圆等距离。应当理解的是,轨道的数量和每个轨道的渲染数量纯粹是示例性的,并且可以考虑渲染和轨道(或部分轨道,例如在目标对象的基础高度之上的半圆形)的任何合适组合,或者除了轨道的其他分布(诸如,在球体的有效表面上的相机位置的分布,均匀或不均匀的,例如,当捕获对象的原始指示被做出时,在游戏中的相机的位置附近具有额外的相机位置)。同时,对于每个渲染,可选地还可以记录距离虚拟相机位置的每个渲染像素的深度(距离)数据,从而可以从渲染、深度信息、以及相机位置中确定渲染空间中每个渲染像素的位置。
应当理解的是,任何导致提供足够视点的方案都是适当的;因此,作为三个轨道运行的虚拟相机的替代,可以使用固定虚拟相机的群集(例如,80个)。类似地,在任一情况下,目标对象可以是静态的或者其自身可以在一个或多个轴上旋转,例如为较小相机群集中的每一个提供若干相邻视图,有效地补偿较大群集中的不同视点处的缺失相机。
产生的N个图像(在该示例中为240)被提供作为已知摄影测量技术的输入,例如如前所述。
该技术的示例输出在图6A和6B中示出。图6A示出了使用虚拟摄影测量法导出的角色的模型,并且表面上看起来是准确的。然而,从图6B可以看出,如椭圆环突出显示的,主要被枪遮挡的角色的躯干的区域未被精确建模,导致模型的区域融合或变形。
显然,已经打印这种模型的用户会对结果的质量感到失望。
因此,现在还参考图7,在本发明的实施例中,3D打印建模的方法包括在第一步骤S710中,生成目标虚拟对象的表面的体素表示。
应当理解的是,为了多次渲染而冻结虚拟环境/目标对象,实际对象模型在虚拟摄影测量处理期间保持静态。因此,可以生成模型的单独且持续的表示,以跟踪每个连续渲染收集的数据进度。现在参考图8A和8B,对于图8A中渲染的武士角色的示例情况,可以生成如图8B所示的该角色的表示(在这种情况下,以稍微不同的姿势,将要摆动斧头)。
单独且持续的表示是要打印的目标对象的表面的体素模型。从图8A和8B的比较可以看出,通常体素分辨率低于渲染分辨率,使得渲染表面中的多个像素将映射到体素模型中的对应体素。
可选地,可以选择体素分辨率以对应于要使用的3D打印机的体素分辨率。因此,例如,如果3D打印机具有1mm3的体素分辨率,并且打印的模型将是10cm高,则体素模型将是100个体素高。应当理解的是,虽然优选使用至少与3D打印机相同或更高的体素分辨率,但这不是必需的。
可以使用在渲染处理期间提取的模型数据来生成体素模型,或者可以使用相同的目标对象模型数据来单独地渲染体素模型。
在第二步骤S720中,计数器与每个体素相关联。该计数器用于计算有多少渲染图像包括与该体素相对应的来自(多个)目标对象的部分的像素,如本文稍后将说明的。因此,体素与它们的计数器一起形成体素直方图,该体素直方图表示在摄影测量处理期间对应于体素的每个表面区域被渲染多少次。因此,该计数器可以被认为是体素的主直方图计数器。
在第三步骤S730中,如前所述,从多个视点渲染(多个)目标虚拟对象,例如参照图5。
然后,对于每个渲染视点,在第四步骤S740中,如果对应于该体素的对象表面部分上的第一像素被渲染,则增加与体素相关联的计数器。
如前所述,通常体素分辨率低于渲染像素分辨率,这意味着可能多个(且可变的)数量的像素可以映射到任何给定渲染中的对应体素。因此,对应于渲染中的体素的像素的总数将是无信息的,并且如果计数累积在多个渲染上,则这将是混合的。
更确切地,可以假设渲染中映射回体素的第一像素可以被视为指示对应于体素的模型的区域在该渲染中被适当可见地表示。
实施该检查方法的简单方式是进一步将标志与每个体素相关联,其中每个体素被重置为每个渲染的第一状态(例如,为非活动、低或0,取决于惯例)。随后,如果满足先前描述的渲染对应于该体素的对象表面部分上的像素的条件,以及其相关联的标志处于第一状态的条件,则仅增加体素的计数器。然后,如果主直方图计数器增加,则标志也切换到第二状态(例如,为活动,高或1,取决于惯例)。
如果主直方图计数器增加,则通过将标志翻转到不同的状态,并且如果标志处于默认初始状态,则仅增加该计数器,然后主直方图计数器只能在每次渲染时增加一次,即响应于检测到第一渲染像素位于对应于该体素的(多个)目标对象的表面的区域中。
应当理解的是,原则上除了标志方案之外或代替标志方案,可以使用不同的计数策略。例如,可选地,可以为每个体素提供并行计数器,当对应于该体素的像素出现在渲染中时,该并行计数器可计数到M(其中,例如,M是对应于原则上映射到体素的像素的分数的数字)。
因此,例如在先前的对于10cm模型的1mm3体素的情况下,导致100个体素高的体素表示,然后如果渲染的对象是1000个像素高,则可以推断可能100个像素(10×10像素)可以映射到体素上,例如,如果从正面且没有遮挡地观看。
因此,对于1/2的像素,并行计数器将计数到M=50。同时对于1/25的像素,并行计数器将计数到M=4。在这种情况下,主直方图计数器可以仅在并行计数器达到所选M阈值时增加。这将指示对应于该体素的重要比例的像素已在给定视图中渲染。该比例可以例如在100%至1%的范围内的任何地方,但更典型地在50%-1%的范围内,更典型地仍在25%-2%的范围内,更典型地仍在15%-3%的范围内,更典型地仍在10%-4%的范围内。
类似地可选地,可以提供计数到P的并行计数器,其中P同样是可以被渲染的可能像素的比例。在给定渲染的分析结束时,并行计数器中的最终值被添加到主直方图计数器中。这将使不同数量的像素的反射对视图中每个体素被渲染,同时限制直方图值之间的不一致度。继续上述示例,如果分数为1/10,使得P=10,则渲染了100个对应的像素的体素只会在其直方图上加10,而渲染了5个对应的像素的体素会将所有5个加到其直方图中。随着时间的推移,模型中的哪些区域比其他区域表现得更好仍然是显而易见的,但差异值不可能达到多个数量级,这可能会使后续处理变得困难。
因此,在这种情况下,该方法将包括将每个体素与限定于预定最大计数值的第二计数器相关联,并且增加主直方图计数器的步骤将包括增加与体素相关联的第二计数器,其受制于预定最大计数值,如果对应于该体素的对象表面的部分上的像素被渲染,则随后将主直方图计数器增加第二计数器的最终值。
再次参照图5和图8B,一旦已经完成了预定相机位置处的所有渲染并且已经累积了用于摄影测量的相关数据,则单独体素模型的主直方图计数器将具有指示目标对象的相应区域在所有不同相机位置上多久渲染一次(或者可选地,指示多完整地)的值。。
然后,现在参照图9,在本发明的实施例中,对于每个体素,3D打印建模的方法如下进行:
在第五步骤S950中,将计数器与预定阈值进行比较以检测其是否低于该值。如果它高于阈值,则假设对应于该体素的(多个)目标对象的区域已经足够频繁地成像以向摄影测量处理提供良好的输入,这可以如前所述进行以便生成3D表面几何形状(并且可选地但优选地还生成相关联的纹理)。生成的3D表面几何形状可以是以多边形、点云、高分辨率体素壳或用于如本文稍后描述的后续处理的任何合适的表示的形式。
然而,如果计数器低于阈值,则假设对应于该体素的(多个)目标对象的区域未足够频繁地成像以向摄影测量处理提供良好输入,并且因此至少需要一个额外的渲染。例如,可以寻找Q-R渲染,其中Q是预定阈值,且R是该体素的主直方图计数器的实际值。可替换地,可以仅寻找一个额外的渲染。
为了获得该渲染,在第六步骤s960中,从体素的位置投影多条线(例如,从体素的中心或表面等距地辐射的16、32、64、128、256条线)。这些线可以被认为是虚拟相机的候选视线方向,其被确保与对应于体素的(多个)目标对象的区域相交(当向下看向朝向体素位置的线时)。
然后,第七步骤s970包括检测是否有任何线达到预定距离而没有被其他体素遮挡。例如,参照图5,可以检测是否有任何线达到虚拟相机所在的球体的表面而没有被其他体素中断/遮挡。
应当理解的是,如果相机沿着等效线看,任何线与该球体的交点表示可以放置虚拟相机的位置,以便获得包括对应于体素的(多个)目标对象的至少一些区域的渲染。
因此,在第八步骤s980中,选择至少一条这样的线(如果渲染空间使用不同的坐标,则转置到渲染空间)作为用于进一步渲染(多个)目标虚拟对象的光轴,并且在步骤s990中,然后生成沿着所选光轴或每个所选光轴的(多个)目标对象的渲染。
在多条线没有中断地达到预定距离的情况下,则可选地,可以以这种方式使用其中的全部、或者其中的预定数量、或者其中的Q-R、或者仅仅一个。在使用可用线的子集的情况下,可选地,选择线以最大化相机球体上的所选线之间的距离,以便获得(多个)目标模型的相关区域的不同视点。
以这种方式,可以识别和获得用于捕获目标模型的代表性不足区域的视图的附加渲染,以便为了摄影测量目的而提高模型的所需覆盖范围。
因此,在对其计数低于预定阈值的任何体素已经完成该处理之后,再次地,渲染可以为摄影测量处理提供良好的输入,其可以如先前所描述的那样进行以便生成3D表面几何形状(并且可选地但是优选地,还有相关联的纹理)。同样,所生成的3D表面几何形状可以是以多边形、点云、高分辨率体素壳或用于如本文稍后描述的后续处理的任何合适的表示的形式。
因此,无论是否需要额外的渲染,摄影测量处理的直接产物是目标对象的3D表面几何形状(以及可选的任何相关联的纹理)。该3D表面几何形状(以及可选的纹理)可以导出到单独的设备以进行修改(如本文稍后所述)、或保存、共享到本地或远程的私有或公共存储库。
同时,如果对于给定的体素在没有被其他体素遮挡的情况下没有线达到预定距离,则可选地可以增加线的数量(例如,从128到256条线),从而增加线密度和线具有不中断路径的机会。这样的处理可以继续,直到线的最大数目被达到(例如,512)。
如果在没有遮挡的情况下没有线达到预定距离(可选地,在增加线的数目之后),则该方法可以包括向用户发出所得到的摄影测量将基于(多个)目标对象的不完整视图的并且因此基于渲染对象的虚拟摄影测量的3D打印模型可能包含错误警告的步骤。然后该方法可以终止,向用户提供终止的选项,向用户提供继续进行或继续的选择。
特别地,在线的数量达到最大数量而没有任何线达到预定距离的情况下,这意味着对应于体素的模型区域的视图非常有限,并且因此在该区域中模型中的任何所得到的失真或误差可能具有极小的美学影响。
可选地,可以向用户提供覆盖有所谓的“热图”的模型的一个或多个渲染,其,其基于对应体素的直方图计数器值对模型的区域进行颜色编码。这为用户提供了渲染的任何给定区域的源数据(例如,渲染的数量)质量的简单指示。
类似地,在摄影测量完成之后,可以为用户渲染所得到的模型,使得例如用户可以控制视点并检查模型。同样可选地,所得到的模型可以提供颜色热图叠加,其向用户指示所得模型的任何给定区域的源数据(例如,渲染的数量)的质量。在提交3D打印模型之前,这可以帮助用户更密切地检查可能包括错误的模型的区域。
修改模型
应当理解的是,由摄影测量处理生成的3D表面几何形状,无论是以多边形表示,还是作为点云或作为高分辨率体素壳,都将具有可忽略的厚度,其对应于抽象的零厚度或一个像素厚度或一个(高分辨率)体素厚度。在任何情况下,当传动到3D打印机时,这是可能被解释为一个打印体素厚度(例如,使用上面的示例,1mm厚度)。对于任何给定的模型,这在实践中不太可能是足够的。
因此,现在将3D表面几何形状视为待打印的体素的壳,可以将壳挤压到预定厚度。可以通过对在他们从其投影到共享虚拟建模空间的一侧的相对侧上的每个表面体素添加相邻体素来执行挤压(即,在壳的内部或下侧)。添加的体素的数量可以是Y体素中的较小者或者达到对象的相对的现有表面所需的数量。Y可被选择以导致响应于用于打印模型的材料的重量和强度的厚度。
类似地,可以确定(现在挤压的)模型中的最低点。至少两个附加的点(通常在壳的下侧)可以进一步被挤压以匹配最低点,从而提供物理模型的至少三个支持点。优选地,这些支持点围绕模型的计算质心分布。
以这种方式,可以从多个游戏中的图像构建虚拟环境的3D模型,该3D模型在物理打印时一直存在并且可以从多个角度查看。
然后将模型发送到3D打印机驱动器,该驱动器将模型从下向上切割成多个层。然后如前所述由3D打印机连续打印这些层。
如上所述,可以使用至少部分虚拟环境的摄影测量来生成可以用作3D打印模型的基础的体素壳。一些环境比其他环境更适合这种3D打印处理。例如,内的简单的基于块的环境非常适合通过3D打印机来渲染。
然而,这是例外而不是规律。视频游戏的特殊吸引力在于它们呈现不受正常物理规则约束的环境和角色的能力。具体地,对象可以以彼此预定的关系存在,而不具有必物理连接(如图3中的角色“Blobman”所示,在该图中其手和脚没有物理地附接到他的躯干),而其它对象可以仅在三维环境内的两个维度中定义,诸如窗帘、披肩、以及在许多情况下诸如墙壁的环境组件。这是因为物理强度不是虚拟环境的要求,其中程序规则阻止移动超出某些边界,并且墙壁仅仅是用于划分这些边界的纹理的装饰性表面。
因此,虚拟环境可以包括几个具有零厚度的边界表面,在该边界表面上放置物理对象,如果要物理打印,其中一些可能另外是不稳定的或不支持的。这种边界表面的示例可以是图3的虚拟环境200中的房间210的墙壁。
使用3D打印机可信地打印这样的虚拟环境可能是不可行的。
因此,在本发明的实施例中,修改先前描述的体素壳以考虑3D打印模型的物理要求。
如先前所指出的,体素的壳可以被挤压到M体素厚度,以提供一些物理强度。这也解决了环境中的2D对象的问题,由于对应于这些对象的体素的壳以与体素的壳的任何其他元素相同的方式被挤压。
然而,对于环境的某些元素,这可能无法提供足够的物理支持,或者在环境中的空中对象的情况下,可能完全缺少支持。
程序化的补充几何形状
因此,为3D打印的目的可以提供对体素壳的程序定义的修改。这些程序化修改为虚拟环境的一些元素提供了结构强度和/或物理支持,否则在3D打印模型中复制这些元素是不可行的。
在下文中,对“打印机几何形状”的引用是指为定义用于打印的3D模型而创建的体素。
一旦已经生成了初始体素壳,娱乐设备就可以生成程序化地生成或修改的打印机几何形状。
分析体素壳以根据几个基本规则检测是否需要额外的几何形状。
一个分析步骤是检测环境中是否存在不支持的对象。
如果是这样,则这些可能会受制于最小尺寸阈值,以便忽略低于该阈值的对象(诸如,例如,雪花、子弹等)并且随后不保留在3D模型中。可以删除体素壳中的相关联的体素。可选地,此步骤可以在修改的渲染处理中实施,以便在为模型收集图像时,就不会首先渲染这些项,从而简化对图像的分析。
同时,对于满足阈值的对象,可以在对象和附近的锚定点之间程序化地生成诸如连杆的支持结构的打印机几何形状,锚定点是最终连接到地面的环境的一部分。该地面本身可以被假定为连接到体素壳的最低点。可选地,分析可以从体素壳的最低部分向上进行,使得不支持的对象可以被顺序地支持,使它们能够依次支持后续对象。
因此,例如,当视频游戏角色跳跃到空中时,通过创建体素圆筒(例如,默认为M个体素厚度),将在其脚底与地面之间形成支持杆。
然而,杆的厚度也可以根据基本规则程序化地确定。对于给定类型的打印机,将知道普通3D打印机材料的体积重量及其压缩和弯曲强度。此外,还将知道打印模型的预期尺寸。因此,娱乐设备可以估计不支持的对象的重量,并计算出在模型中充分支持对象所需的支持杆的厚度。具体地,在连杆部分或全部横向并因此可能弯曲的情况下,不支持的对象的力矩是其重量乘以其与沿杆的当前位置的距离的函数。此外,当为这样的对象构造连杆时,连杆本身的重量可能占重量的很大比例。因此,由于杆的各个部分在锚定点处比在不支持的对象处支持更大的重量,杆可能在更靠近锚定点处更厚,并在朝向不支持的对象更薄。
在另一个分析步骤中,上述原理可应用于体素壳的其他部分;例如,游戏中的虚拟模型桌面可能具有太细的腿,无法支持桌面和桌面上任何对象的总质量。例如,如果桌子上有个角色站在上面,但桌腿只有几个体素厚度,则它们可能不够强韧以支持物理模型。因此,可以评估体素壳的特征,以确定它们在模型中支持的总重量,并且在这超过了支持该重量的体素壳的横截面积的安全界限的情况下,这可以通过扩大其横截面积且填充体素来增厚。例如,该原则也可适用于环境中的树木,其中树枝和树干的累积重量用于局部修改树枝或树干的几何图形,以使其横截面更大以适应重量,在这种情况下,当使用与3D打印机相关联的特殊材料渲染为3D模型时,现有的几何形状局部不足以容纳重量。
随后,可以计算调整的模型的重心以检测它是否会翻倒。如果是这样,则可以移动支持以重建稳定性,或者可选地,可以在一个或多个选定位置加厚体素壳以将重心改变回稳定位置。
如前所述,环境的二维组件与初始体素壳的其他部分一起被挤压,以生成具有至少最小厚度的三维对象。然而,该挤压处理可以如下所述进一步修改。
现在参照图10A至图10E,可以看出,图10A示出了来自环境200的二维墙壁,在其上放置了游戏内的蜡烛和烛台。然后,图10B说明了挤压处理,以沿垂直于墙壁平面且与图像投影侧相反的方向延伸墙壁,以程序化地生成描述具有预定厚度的墙壁的几何形状,例如Y体素。然而,如图10C所示,物理打印的墙壁的累积重量将根据墙壁上的位置而变化,并且墙壁的额外地支持蜡烛和烛台的一些部分也会发生阶跃变化。因此,等厚的墙壁可能不合适,因为靠近基底的墙壁厚度可能不足以充分支持模型的累积重量。
因此,参照图10D至图10E,然后在墙壁顶部以最小优选挤压厚度开始,挤压厚度随着累积重量的函数而增加,导致烛台到墙壁的附接点处的厚度阶跃变化,以提供额外的支持。应当理解的是,如图10D至图10E所示,程序化规则可能会使这种附接点周围的区域变厚,从而在烛台的负载施加到墙壁之前使墙壁稍微增厚。此外,当挤压墙壁的较低部分时,程序化规则可以容纳支持厚度本身的额外的质量。最后,烛台和支持区域施加的负载既可以横向分布也可以纵向分布,使得加厚的支持区域在沿着墙壁向下传播时向侧面展开,如图10E所示。
程序化规则还可以与游戏开发者提供的附加信息交互,以帮助自动生成所需的辅助几何图形。
例如前面提到的规则,连杆是在无支持的对象和最近的锚定点之间程序化地生成的,其中锚定点是最终连接到地面的环境的一部分,可能会导致如图11所示的Blobman 220的3D模型。应当理解的是,当角色的手被分析时,相比角色的躯干,很可能他们更靠近角色的脚,并且角色的躯干可能还没有连接到锚结构本身。相应地,程序化规则可以将角色的手附接到仅有的可用接地锚定点(即脚);随后躯干可以锚接到最近的单个锚定点(现在是一只手)。其结果是,虽然稳定但在解剖学上不符合用户的预期的结构。
因此,游戏开发者(或用户)可识别环境元素之间的优选连接点,以指导连杆或其他连接/支持结构的程序化生成。连接的这些点可以通过使用一个或多个颜色通道内的保留值被限定,从而使连接点能够通过使用图像内的特殊着色的识别像素来识别;例如,如果在蓝色通道上保留了值128以表示连接点,则可以在图12的Blobman角色220的示例中使用该值来指定模型上存在的优选连接点。然后在体素壳中使用这些保留值,从而创建可识别的锚定点以与程序化规则一起使用。例如,可使用识别像素的其他两个颜色通道中的匹配值来指示成对的连接点,以便识别像素中的红色和绿色值对于手和躯干是相同的,从而使这些被识别的成为连接到一起的部分。以这种方式,开发人员就可以在不需要单独元数据的情况下保持连接结构的放置的美学控制。在Blobman的情况下,这可以用来确保一组解剖学可接受的连杆,如图7所示。同时,连接/支持结构的程序化生成规则仍将决定充分支持打印结构所需的横截面。
还应当理解的是,对于在渲染游戏中未找到的补充打印机几何形状的元素(诸如,上面的“Blobman”示例中的连杆),纹理(颜色)可以从现有体素壳推算,或者可以指定无颜色。在推算颜色的情况下,可选地,颜色可以从支持元素抵抗重力的结构部分(例如,地面,或在Blobman的情况下,分别从脚到躯干,以及从躯干到手和头)推算,因为这可能会在模型中创建最不显眼的支持结构。可替换地,在不使用纹理的情况下,裸露的塑料(或其他3D打印机材料)会暴露在外,使观众清楚这是一种功能支持,而不是原始图像的一部分。对于用户来说,哪种方式是优选的可能是一种美学的决定。
还应当理解的是,在选择用于打印的比例上,所渲染的图像的像素分辨率可以比3D打印机的体素分辨率更高。因此,渲染环境的特征有时可能具有相对于3D打印机的体素分辨率的高空间频率。因此,可以在投影到共享虚拟模型空间之前将图像过滤到兼容的分辨率,以去除这样的高频细节,并且从而避免在所得到的模型中出现混叠效应。在这种情况下,如果程序化规则要使用保留的颜色通道值,则在过滤后将这些值保留或重新插入到较低分辨率的图像中。可以类似地过滤深度信息。
因此,使用任何或上述技术或任何其他合适的技术,可以修改3D表面几何形状的属性(诸如,其厚度或连接元素)以形成3D可打印模型数据,其可以立即或者在未来预期地输出用于3D打印。因此,修改3D表面几何形状的特性以形成随后输出的3D可打印模型数据的直接产品是3D可打印模型数据。在任何打印模型的决定之前,该3D可打印模型数据可以直接输出到打印机,或者可替换地输出到本地或远程的私人或公共存储库以供用户或其他人查看。
泛洪填充算法
应当理解的是,当3D打印的模型来自计算机辅助设计包时,这些模型结构良好,并且易于处理以进行3D打印。然而,当要打印视频游戏数据时,捕获的模型可以包含退化的多边形和/或零厚度特征(诸如,本文前面讨论的与图10相关的那些特征)。
使这些模型可打印的一种方式是首先识别模型中的实心(封闭)区域,并且然后根据需要执行操作以加强或加厚这些区域,例如根据诸如本文其他地方所述的方法。
现在参照图13A至图13C,为了识别实心或封闭区域,例如在3D体素模型的片(slice)内,可以采用泛洪填充技术来识别片中的实心区域。
图13A示出了示例2D片,在这种情况下包括五个封闭区域。为了识别这些区域,然后在图13B中,可以从片的外边界发起泛洪填充,以占用片的不在封闭区域中的那些部分。
可以将得到的泛洪填充视为掩模,并且通过反转该掩模识别封闭区域,如图13C所示。
虽然原则上可以直接填充单独封闭区域中的每一个,如果填充的片的区域较小,则可能需要较少的计算资源,这需要预知封闭区域的位置。这种预知无法得到保证。因此,通过从片外部使用泛洪填充,可以在没有关于它们的存在或位置的任何先验知识或假设的情况下识别封闭区域。
然而,应当理解的是,对于详细的3-D模型,以这种方式处理的片的数量可能非常大,并且每个片可能具有高分辨率。结果,泛洪填充处理的计算负荷可能非常高。如果频繁使用填充处理,则可能会加剧此问题,例如,在创建补充几何图形之后、或在创建补充几何图形期间、或在已经进行用户编辑之后评估模型的完整性。
因此,优选的是实施计算上有效的泛洪填充算法。
传统的泛洪填充算法是用另一种颜色填充相同颜色像素的连接区域的流行方法。然而,该算法本质上是顺序的,因为算法逐个像素地逐步填充它们。
同时,在诸如索尼PlayStation 4的娱乐设备上,这种泛洪填充算法的优选的处理平台是GPU。然而,GPU具有大量不能有效运行顺序进程的运行线程。
因此,在本发明的实施例中,为了利用GPU处理,提供了并行的泛洪填充算法,使得部分虚拟处理可以同时运行。
简而言之,并行洪泛填充算法为要填充的图像构造四叉树。四叉树存储泛洪填充源像素的多分辨率表示以及一些附加数据(在下文中描述)以加速填充操作。
四叉树遍历从树的根(对于由外至内的填充)或树的叶节点(对于像素种子填充)开始。遍历在图像中局部特征尺寸允许的最低四叉树层级(最大区域节点)上进行,以提高跨图像的填充速度。
在遍历期间,跟踪处理的每个四叉树单元的入口边界以正确地遍历到子四叉树节点,并在步进到相邻单元时指导泛洪操作。
算法的结果是泛洪掩模,它指示已填充的像素。掩模优选地存储在莫顿(z次序)曲线中,使得与四叉树单元(在任何四树层级)相关的所有像素是连续的,以便更快地处理。掩模可以稍后用于从具有泛洪像素的源图像生成图像,或者用于其他目的,如本文稍后所述。
值得注意的是,该算法还可以通过使用八叉树(octree)、跟踪每个单元的所有8个入口平面和填充结果掩码地址的3个组件莫顿曲线来扩展到三维,以实施体积泛洪填充。
更详细地,使用以下术语在下面描述该算法:
-泛洪填充源颜色:这是要由目标泛洪填充颜色替换的图像中的源颜色。例如,图像13A和图像14中的泛洪填充源颜色是黑色。
-泛洪填充目标颜色:这是替换泛洪填充源颜色的连接区域的目标颜色。例如,填充目标颜色可以是白色。
-边界像素:这是源图像中不是泛洪填充源颜色的任何像素。在图14中,边界像素形成三个螺旋并且主要是单色的,但是融合该颜色和泛洪填充源颜色的抗锯齿边界也是边界像素。因此,通常在泛洪填充期间保留所有边界像素(可选地,在泛洪填充源颜色的预定容限内)。
-四叉树:用于根据特征细节以不同的分辨率在图像上进行多线程遍历的加速结构(空间划分方案)。
在本发明的实施例中,用于处理泛洪填充的四叉树包含3条信息:
1)位(“占用_全部”)表示四叉树单元内的所有像素都是边界(非泛洪填充源颜色)。
2)位(“占用_一些”)指示四叉树单元内的至少一个像素是边界(非泛洪填充源颜色)。
3)对于完全没有边界像素的单元,存储高程深度,该高度深度指示四叉树可以朝向根部爬升多少,同时仍然保持在完全非边界单元中。
对于四叉树入口,通常需要6位,对于高达65536x65536的图像尺寸,高程深度的上限为log2(图像尺寸),并且其他两个字段中的每一个都需要一位。
高程深度是图像中任何点处泛洪填充源颜色公开性的良好指示或代表。图15示出了图14的图像的高程深度,并且并示出了得到的四叉树结构,其中较浅的灰色阴影表示较大的高程深度,这意味着较大的四叉树单元将用于填充图像的该区域。
对于局部特征尺寸,泛洪填充算法使用最接近四叉树的根的四叉树层级来进行。因此,当填充操作接近边界时,它将朝向树的叶移动。如果算法通过填充区域中的空隙挤入开放区域,则它将向四叉树的根移回,以便更有效地填充。
在第一步骤中,生成顶层像素占用。
它通过测试泛洪源颜色来识别图像中边界像素的占用信息。其结果是四叉树叶的四叉树单元的二维数组,其中每个单元与源图像中的像素相关,并且在“占用_全部”和“占用_一些”位中包含相同的值(因为每个单元包含1个像素)。
在第二步骤中,生成mipmap层像素占用。
对于在占用层级上的每个2×2单元组,合并单元的占用_全部和占用_一些信息是通过“与操作”所有子占用_全部和“或操作”所有子占用_一些字段生成的。重复这一处理,直到顶层只有1个单元,其中包含整个图像的占用_全部和占用_一些。在此阶段之后,四叉树结构完成。下一阶段生成一些附加信息,以便在运行期间加速遍历处理。
在上述第一步或第二步之前、期间或之后的任何点处,单元高程深度也被初始化为零。
在第三步骤中,生成深度高程值。
从四叉树的根开始,并且朝着叶方向工作,对于完全没有边界像素的所有单元(占用_一些=0),其4个子单元(children)的高程深度设置为比当前单元大1。这将一直重复到四叉树的叶节点(每个节点代表图像中的1个像素)。对于任何单元,高程深度都允许算法在保持在空节点内的同时向树的根移动,并允许算法快速处理大量连续的泛洪填充源颜色区域。
图16示出了通过四叉树(这里表示为二叉树)的片,其示出了可能存储的数据。底行包括示例源图像的16个像素,组合到树的根处的单个节点。在每个单元中,第一个数字是高程深度,并描述了在保持在完全空的单元中的同时可以朝树上面走多远。因此,在这种情况下,可以识别5个最上面的单元(1610-50)。
在第四步骤中,执行泛洪填充。
泛洪填充可以以两种模式运行。从外至内或从种子像素开始。这两种方法的区别仅在于算法的起始条件。从外至内从图像的外部开始,从四叉树的根开始(其中四叉树单元表示整个图像)。像素种子从四叉树的叶节点开始(其中节点表示单个像素)。
该算法适用于可以并行运行的一堆工作项。工作列表项标识四叉树中的节点,以及从其进入单元的方向的列表。这些方向允许算法在将四叉树向下移动到更精细的单元时、或者在跳到相邻单元时做出对应的决定。工作列表项的格式为:
四叉树层级 通过其进入该单元的边界列表 单元X 单元Y
应当理解的是,泛洪填充算法在其前进通过树结构的图像/单元时有效地具有流。当其流过图像/单元时,单元的入口边界跟踪泛洪填充的方向。
可以从零个或多个边界进入单元(零仅针对初始种子填充像素发生,所有4个边界仅针对从外至内填充的初始“整个图像”单元发生)。当算法进行时,通常通过一个入口边界(一侧)或两个入口边界(例如,拐角)进入单元。
单元有4条边,以顶边、底边、左边和右边界定该四边形。该算法然后跟踪如何进入单元,以便可以按正确的顺序选择子单元,如下面关于子单元递归所解释的。当单元包含可能阻止泛洪填充的边界像素时,会发生这种情况。使用边界以选择子单元可确保以正确的顺序处理子单元,并防止泛洪填充跳过边界特征。
应当理解的是,对于八叉树,存在6个边界(立方体的面),但原理在其他方面是相同的。
将工作列表项从GPU线程组中的多个线程推送到堆栈中。
工作列表的初始状态包含单个工作项,取决于填充模式。
对于从外至内:
四叉树 通过其进入该单元的边界列表 单元X 单元Y
根层级 左、右、上、下 0 0
对于像素种子:
四叉树 通过其进入该单元的边界列表 单元X 单元Y
叶层级 NA 像素X 像素Y
如上所述,许多工作项可以从堆栈中弹出并由许多GPU线程并行处理,当算法如下进行时:从堆栈中获取工作项,其指定以下信息:
·四叉树层级。
·单元的入口边界。
·单元XY坐标。
读取工作项单元的占用,占用指定以下信息:
·高程深度。
·占用_全部位,指示单元中所有的像素都是边界。
·占用_一些位,指示单元中的一些像素是边界。
然后使用占用的高程深度升高单元。这需要:
·使用占用的高程深度从工作项调整四叉树层级。
·使用高程深度调整单元坐标。
然后基于占用_全部位和占用_一些位确定需要为单元产生的工作:
占用_全部 占用_一些 操作
1 任意 丢弃单元,无需进一步操作
0 1 基于入口边界递归到子单元
0 0 填充单元并基于入口边界遍历邻居
然后,这个处理从开始处重复,直到没有工作项要处理为止。
上述三个操作(单元处理情形)如下:
“丢弃单元,无需进一步操作”:在这种情况下,单元完全充满边界颜色,此单元无进一步处理,并且可以将其丢弃。对于工作项堆栈没有进一步的工作生成。
“基于入口边界递归到子单元”:参照图17A,单元被部分填充并且可能包含一些要填充的空间。为子单元生成工作项目,由入口边界选择。例如,从顶部和左侧进入父单元将导致三个子单元被处理,具有如图17A中所描述的各种组合或入口标志(由粗边表示的入口边界)。使用正确的边界入口标志将新工作项推送到所有相关子单元的堆栈中。
“填充单元并基于入口边界遍历邻居”:参照图17B,在这种情况下,单元的边界像素完全是空的并需要填充。然而,由于存在到单元的多个路径,因此该单元可能已经被另一个线程/工作项填充。如果单元尚未被填充(通过测试填充掩码结果确定),则填充应该遍历到邻居,以避开从其进入到该单元的邻居。使用正确的边界入口标志将新工作项推送到所有相关邻居单元的堆栈。应当理解的是,入口边界是泛洪填充从其进入单元的边界(如图17B的左侧图像所示),并且当遍历到邻居时,输出单元是除入口边界单元之外的所有相邻单元,如图17B的右侧图像所示,因为可以假设进入当前单元的方向上的单元已经被处理了。
使用此方法,泛洪填充算法可以构建填充掩码,并且四叉树高程机制确保基于局部特征尺寸填充的单元格尽可能最大。如果填充掩码按莫顿顺序存储,则四叉树单元的所有像素在填充掩码中都是连续的,且处理速度更快。
上面的四叉树方式在使用GPU或具有不能有效运行顺序进程的大量运行线程的类似的并行处理器时提供了泛洪填充的有效计算的实施方式。它可以分析模型的大量片,这些片可能被3D打印,以便对完全封闭的区域等进行分析。
此外,在某些情况下,该算法比传统的泛洪填充算法表现更好;参照图18A,其复制了图13A的示例片,但是现在片内的对象延伸到图像的边界(或换句话说,图像被裁剪到包含其中的对象的最小尺寸,当然,这减少了整体图像尺寸,并且从而降低了计算复杂度)。
然而,现在参照图18B和18C,从初始点(例如,图像的左上角)开始的传统泛洪填充不能进入图像的左下角和右下角,如图18B所示,因为这些被图像中的对象有效地阻挡。结果,在图18C中封闭区域被错误地描述。
相反,本发明可以基于片/图像的边界而不是单个种子点来填充(尽管也可以这样做,如前所述);结果是它仍然可以正确识别图像左下角和右下角的区域。
应当理解的是,这也由图14和图15示出;由于螺旋图案的范围,它实际上将背景划分为四个独立的部分;然而,系统识别它们中的每一个(可以从图15中的高程图推断)。
然而,即使四叉树算法也会遇到困难,因此仍有进一步细化的余地:
参照图19A,在示例场景中,一对圆筒(1910,1920)同心地布置在游戏环境的对象内以进行3D打印。在图19B中,通过对象的所得的片示出了同心壁,其限定了片内的交替空隙和封闭区域。
参照图19C,即使从片图像的边界填充时,泛洪填充算法也不能(并且不应该)通过外圆筒的外壁。结果,没有识别外圆筒和内圆筒之间的中间空隙以及内圆筒的中心空隙。
结果,在图19D中,圆筒的内部结构丢失并且它被表示为实心对象。显然,无论在模型的保真度损失方面还是在3D打印材料的浪费方面,这都是不希望的。
因此,在本发明的实施例中,使用四叉树导航2D图像片被八叉树导航3D(体积的)图像所替换。
换句话说,该算法不使用四叉树对模型的2D片的序列执行泛洪填充,而是使用八叉树对模型的单个立体图像执行泛洪填充。应当理解的是,四叉树中的每一层将矩形划分成四个子矩形,而八叉树中的每一层将长方体划分成八个子长方体。与创建工作项高程深度、占用数据等相关的算法的其余部分基本相同(体积单元具有六个可能的入口平面,以实现与2D单元的四个可能的入口边界一样的功能)。
回到图19A的示例,应当理解的,当用单一的立体图像表示,并使用前面描述的算法的八叉树版本进行体积泛洪填充时,同心圆筒的问题得到解决,因为该算法可以识别圆筒的顶部和底部的空隙,并且因此可以填充中间和中心空隙,如图20所示(为了便于说明,示出了结果的2D片)。
因此,更一般地,应当理解的是,本文描述的泛洪填充算法采用层次空间分割数据结构来将泛洪填充问题分解为可以并行处理的工作单元(例如,通过GPU),该结构通常是2D图像的四叉树或立体图像的八叉树,用响应于数据结构的不同层级处的图像中的特征的占用生成的高程深度数据,使得其能够有效地导航并且有效地识别空白图像区域。
至于何时以及如何将该算法用于3D打印的目的,可以考虑进一步的变型。
例如,参照图8A和8B中所示的武士,在武士的体素捕获中,角色的斧头可以是单独的对象,其实际上与视频游戏环境内的角色稍微间隔开(例如,是因为角色被建模以抓握许多不同的物品并且并非所有物品都能完美匹配,或者因为角色/斧头在捕获时刻用于打印的特定位置,或者因为角色刚刚开始投掷斧头等)。
然而,因为这个,当武士被打印时,斧头将从武士的手中掉落(或者至少是松散的)。
对于在游戏世界中组装或并置的、而不是源自单个模型的视频游戏角色的常见元素,这个问题可能是有问题的;一个示例是视频游戏角色的眼睛经常与角色的头部分开;取决于捕获处理,面部和眼睛之间的任何空隙都可能导致眼睛被松散地打印,并且然后落入角色的空心体内。
因此,更一般地,现在参照图21,在实例(a)中,是前面为了解释的目的所描述的模型的2D片,角色或其他可打印对象可以是若干直接相邻元素A和D的综合体,但是用户也可能期望它们带有相关附件C(或者同样是角色的另一个未完全对齐的元素)。同时,可能位于角色/对象的整个区域内的环境的另一个元素B可以被认为是分离的,或者是不想要的或被认为是次要的可打印对象(例如,即将被角色踢的足球)。
运行如本文所述的泛洪填充算法导致如实例(b)所示的三个对象的预期识别:A和D的综合体,以及分离的C和B。
回顾泛洪填充算法可以在图像中的特定叶/点处(而不是从边界)初始化,然后该算法可以用于单独的目的:
通过第一次泛洪填充确定封闭区域后,可以在封闭区域中的一个(例如,与A&D相对应的最大封闭区域)内使用不同的颜色或值作为ID进行第二次泛洪填充。该区域内的精确起点并不重要,尽管可选地进行测试以确保它与任何现有的源填充目标颜色之间的距离大于N个像素,以确保第一个像素不是颜色的抗锯齿混叠,而实际上是区域的表示。但显然,在本文所述的体积模型的情况下,这种抗锯齿混叠不是问题,并且因此这种考虑不是必要的。
由于部分B和C未连接,因此它们将不会被填充,如图21的实例(c)所示。然后可以识别尚未被填充的像素,并使用不同的颜色/ID再次应用该算法,直到没有留下泛洪填充源颜色/ID的像素,并且因此所有断开的部分都已被识别。结果,部分B和C中的每个都会收到自己的填充颜色/ID,最终结果如图21的实例(d)所示。此时,也可以计数每个ID所占用的像素/体素(或统计填充处理期间已进行的计数),以确定哪个是主要部分(如果与任何进一步的处理相关)。
应当理解的是,上述方法还扩展到算法的八叉树和立体图像版本。
给定通过该方式创建的图像的片的完整特征,然后可以确定分离对象在彼此的阈值距离内的位置,并应用规则来确定这些对象是否应实际连接。
例如,基于两个对象之间的距离除以对象在该距离或预定阈值最大距离内的(可选地加权)长度或面积的度量可以与阈值进行比较,以确定两个对象是否可以被连接。
换句话说,当两个不规则形状的对象恰好在一个单独的点上彼此靠近时,它们之间的距离通过除以该距离内短共享长度来偏移,因此实际上,这些对象必须更接近彼此才能触发将其组合。这也对通过狭窄的并且因此可能易碎的可能脆弱的链接来连接对象产生了不利影响。相比之下,例如,如果两个对象相距中等距离,但以显著的长度彼此平行(通常表示意图将对象视为一个对象),则中等距离除以该长度,使对象更有可能连接。
其他方式对于技术人员来说是显而易见的,诸如例如简单地在两个对象之间设置阈值距离,在此阈值距离内他们应该被合并。
在任何情况下,应当理解的是,可选地,本文先前描述的那种补充几何形状然后可被用来提供连接和/或加厚和强化连接。
可替换地或另外地,两个对象中较小的对象可以移动以与较大的对象合并,并且移动量可以可选地是合并对象直到交叉点处的小对象的横截面积达到视为提供足够强的连接的阈值尺寸所需的移动量。可选地,较小对象可经受扩大或再缩放功能以增加其在较大对象附近的横截面积。这可能直接导致较小的对象与较大的对象合并,或者简单地增加小对象的横截面积,从而减少实现强连接所需的运动。
类似地,两个对象中较小的对象可以被挤压以与较大的对象相交,并且同样可选地,挤压可以在具有被认为提供足够强的连接的预定横截面积的小对象中的一个点处开始。
虽然已经关于调节小对象的特征描述了上述内容,但是应当理解的是,可以可替代地或另外地调节较小对象附近的较大对象的特征以使两个对象连接。
在图21的实例(e)和(f)中示出了扩大或重新缩放选项,在这种情况下,结果是整个对象C变得更大,并且以足够大的横截面积与主体对象相交以形成强连接。
在这点上可选地,在移动或调整对象尺寸引起整个对象内的连接上的其他变化的情况下,可以使用泛洪填充算法重新运行识别图像内的对象的处理。
结果是组合原始对象A、C和D的单个主体(如实例(g)所示)。同时,较远的对象B不满足距离/共享长度度量、或绝对距离度量、或用于合并的任何其他合适的度量,并且因此保持分离,如图21的实例(h)所示。
应当理解的是,这种方法优选地使用算法的八叉树和立体图像版本来实施,因为在实践中,真实的视频游戏角色的不同元素不太可能是平坦的且彼此平行的,并且因此这样的模型中的两个元素可以在连续的横截面中彼此之间具有不同的距离。因此,根据特定于该片的条件的2D元素的移动、缩放或挤压单个片可能会导致整个模型中的不一致结果。因此,尽管限制条件可以在连续片之间继承,但在立体图像中实施此处理要简单得多。
还应当理解的是,可以将模型呈现给用户以进行手动编辑,可以使用如上参照图21的实例(d)所述的填充算法来标记,以识别可能需要注意的任何/每个分离的封闭区域,并且模型中由用户的操作导致的结果变化以相同的方式被重新评估。
现在还参照图22,在本发明的概述实施例中,用于并行实施方式的泛洪填充方法包括:
在第一步骤s2210中,接收图像(例如,游戏中对象的2D片或3D立体图像,可选地在如本文其他地方所述已经应用其他修改之前、期间或之后),该图像包括具有要被替换为洪泛填充目标颜色的洪泛填充源颜色的第一元素,以及不具有泛洪填充源颜色的第二元素(例如,如前所述的边界像素);
在第二步骤s2220中,根据层次空间分割方案(例如,四叉树或八叉树)划分该图像,以形成在层次中的多个层级处的单元(诸如图16中所示的那些);
在第三步骤s2230中,检测每个单元被第二元素的占用(例如,使用本文先前所述的占用_全部位和占用_一些位);
对于没有被第二元素占用的任何单元,在第四步骤s2240中,将该单元的子单元的深度高程值设置为大于该单元的值的深度高程值,表示泛洪填充将通过单元的深度高程量将层级向根单元导航,同时只占用没有任何第二元素的节点,从而达到可以被泛洪填充的最大的父单元(例如,如本文先前所述并如图16所示);以及
在第五步骤s2250中,用泛洪填充目标颜色填充没有被第二元素占用的单元的泛洪填充源颜色,从而修改接收的图像。
在该概述实施例的实例中,图像是二维的,层次空间分割方案是四叉树,并且单元是直线构成的。
在该概述实施例的实例中,图像是立体的,层次空间分割方案是八叉树,并且单元是长方体。
在该概述实施例的实例中,当处理单元时,存储从其进入单元的至少一侧,并且用于处理的附加单元被识别为除了从其进入单元的存储的一侧上的单元外的那些相邻单元。
在该概述实施例的实例中,当处理单元时,存储从其进入单元的至少一侧,并且为与所述存储的至少一侧相邻的子单元生成工作项。
在该概述实施例的实例中,为多个单元中的每一个生成工作项,并且并行处理两个或更多个对应的工作项。
在这种情况下,可选地,两个或更多个对应的工作项由图形处理单元处理。
在该概述实施例的实例中,用泛洪填充目标颜色替换的图像元素表示泛洪填充掩码。
在本实例的版本中,泛洪填充掩码外的图像区域被定义为封闭区域。
在该版本中,可选地,为两个封闭区域之间的距离确定基于距离的度量,并且如果该度量小于预定的阈值量,则通过列表中的一个或多个修改对两个区域中的至少一个进行修改,包括:移动两个区域中的至少一个,直到两个区域相交;以及增加两个区域中至少一个的至少一部分的尺寸,直到两个区域相交。
可选地,如果两个区域中的至少一个被修改,则重复泛洪填充算法。
在该版本中,图像可以表示要进行3D打印的对象的部分或全部。
可选地,然后,通过向识别为封闭区域的图像的区域添加由具有泛洪填充目标颜色的一个或多个元素形成的孔来修改该图像。这可以用于创建3D打印材料的引流方式,否则3D打印材料可能被困在封闭区域内(参照本文后面的“废料”部分)。可选地,添加孔可以以闭合区域大于阈值尺寸或体积为条件。该孔可以是固定长度(例如,等于或长于已知的壳厚度),或者可以通过将像素的预定宽度(例如,边界像素)替换为泛洪填充目标颜色来延伸,直到检测到像素的宽度包含泛洪填充源颜色,指示封闭区域的“墙壁”被打破。
如果图像表示要3D打印的对象中的一些或全部,则可选地,该方法可以包括响应于泛洪填充图像生成3D打印指令的步骤;以及为3D打印机输出这些3D打印指令的步骤。
对象选择
上面的讨论假设已经从虚拟环境的区域中选择了(多个)目标对象;例如,用户可以选择仅打印他们的化身,或他们的化身和对手。
例如,可以通过用户界面在所需的(多个)对象周围定义边界框、或者通过用户界面使用光标或标线指示游戏环境中的特定对象进行选择。
如果以这种方式选择与支持表面隔离的(多个)对象,则可以生成诸如平面的默认表面,其具有响应所选的(多个)对象的尺寸的区域。然后,可以使用本文所述的技术将所选的(多个)对象耦合到该支持表面。
编辑
一旦使用上述技术(如适用)获得了打印机几何形状,则可选地,可将其传输到编辑应用程序,以便用户在将模型发送到打印机之前进行预览或对模型进行修改。例如,可能需要针对可能的错误检查模型,和/或编辑某些关键角色的姿势和位置。编辑器也可以例如通过删除表面体素,仅将贴标添加到绘制的纹理中、或添加到对象的表面结构中,以便用户可以有效地将信息雕刻到模型的表面中。
最终打印
一旦用户对他们的3D模型满意,就可以将其发送到打印机。如前所述,打印机驱动器分析模型并将其划分为体素层以进行连续打印。
如果打印机是物理地附接到控制台或共享家庭网络的家庭设备,则可以在娱乐设备上实施打印机驱动器,并且娱乐设备将生成的绘制列表发送到打印机。
然而,可选地,也可以由娱乐设备的网络提供打印服务(也就是说,例如,由娱乐设备的制造商提供的网络)。这可能允许访问比一般消费者负担得起的更昂贵和复杂的3D打印机,并且因此允许更高质量的模型。在这种情况下,打印机驱动可能仍在控制台上,以便在用户之间分配处理负载,也可能位于连接到3D打印机的中央服务器上。在第一种情况下,本地打印机驱动器将生成可与用户的邮寄地址相关的元数据一起安全发送到中央打印队列服务器的绘制列表。在第二种情况下,娱乐设备安全地将3D模型打印机几何形状发送到中央打印机驱动器,该驱动器程序执行相关分析,以在将所需的绘制列表排队进行打印之前生成这些列表。在这两种情况的任一种下,模型的打印可能依据费用的支付而定,例如经由在娱乐设备的网络上注册的支付卡,或类似地可能依据代金券的接收而定,该代金券例如作为战利品或其他游戏中的奖励而赢得、或作为游戏的购买价的一部分获得,从而授权给用户从该游戏创建预定数量的3D模型。
因此,基于输出的3D可打印模型数据的3D打印模型的步骤直接产生3D打印模型。
废料
应当理解的是,3D打印技术(诸如选择性激光烧结)可将大量的未加工的打印机材料困在生成的模型内。这是因为在打印过程中,这些技术将连续的粉末层覆盖在模型的顶部,只融合与模型的外围相对应的小部分,而将剩余的粉末留置在不可触及的外围的内部。总的结果是大量的粉末,其内部是融合的壳,该壳外部的粉末可以被移除,而壳内部的粉末则被困住。
这就产生了浪费的原材料方面的不必要的成本。它还可能影响得到的对象的平衡。因此,在设计的用于3D打印的模型中,通常包括通风孔或开口,以允许倾倒或冲掉废粉末。
然而,视频游戏角色中不存在这种通风孔或开口,并且这种通风孔或开口是不可取的。
因此,在本发明的实施例中,如果要使用基于粉末的打印机,则实施程序化规则来计算打印场景中对象内的有效空间体积。当该体积超过阈值量时,对象被视为空心体,并且程序化规则在空心体的体素壳中创建一个允许打印机粉末流出的尺寸的开口。优选地,该开口位于空心体的底面和/或当用户指示他们想要打印场景时,位于朝向远离屏幕上显示的原始视点的一侧。该开口可以是体素壳中的孔,或者优选地是形成环形或其他闭合环形状的环形空隙。在环形空隙的情况下,这会生成打印体中的松动的盖子(cover),该盖子可以被移除以允许粉末排出,但是该盖子然后可以被粘结回模型,从而将在成品上去除粉末的美学影响降到最低。
应当理解的是,3D打印场景可能包含多个此类空心体。例如,场景可以包括地面、角色(诸如Blobman)和树。地面通常是开口壳。同时,树置于其上,以地面形成树的底部。通过计算模型中的体积,可以将树干识别为空心对象。因此,可以在树下的地面上创建孔,只有从下面看模型时才可见。相比之下,Blobman角色由地面上的连杆支持。因此,如果角色躯干被识别为空心体,则包括朝向远离原始视点的方向的环形空隙,可选地,在距离任何连杆的阈值距离处。这允许躯干排出粉末,但也可以通过将环形空隙形成的躯干的可移除的组件重新固定到位来进行修复。
可选地,程序化规则可以使用对象本身的特征来减少孔或环形空隙的美学影响,例如,通过设置孔或空隙的一个或多个边界的部分或全部以跟随模型中纹理颜色之间的相邻边界,和/或跟随模型表面中的相邻脊或其他不连续处。
系统可以使用3D模型数据来估计所需的打印机原材料量,并在用户承诺做这些之前提供估计打印模型成本的报价。
最后,参照回图1,应当理解的是,装置或装置的系统可实施上述方法的概述实施例或变体实例、版本和选项、以及更一般地本文所述的泛洪填充技术。
因此,例如,在另一个概述实施例中,娱乐设备(诸如,PlayStation
Figure BDA0002136139050000351
)10包括:泛洪填充处理器(诸如在适当的软件指令下操作的GPU 20B),其在操作中适应于:接收图像,图像包括具有要被替换为洪泛填充目标颜色的洪泛填充源颜色的第一元素,以及不具有泛洪填充源颜色的第二元素;根据层次空间分割方案划分图像,以形成在层次中的多个层级处的单元;检测每个单元被第二元素的占用,对于没有被第二元素占用的任何单元,将该单元的子单元的深度高程值设置为大于该单元的值的深度高程值,表示泛洪填充应通过深度高程量将层级向根单元导航,同时只占用没有任何第二元素的节点,从而达到可以被泛洪填充的最大的父单元;以及用泛洪填充目标颜色填充没有被第二元素占用的单元的泛洪填充源颜色,从而修改接收的图像。
因此,在适当的软件指令下操作的通用计算机可以实施前面描述的泛洪填充方法。
本文所述的其他方法和技术也可由在适当的软件指令下操作的设备10实施,并且3D打印本身可由与3D打印机100一起操作的设备实现。
从上述描述中可以知晓,本文所述的方法可以在适当地通过软件指令或通过包含或替换专用硬件进行调整的传统硬件上执行。
因此,对传统等效设备的现有部分所需的配置可以以计算机程序产品的形式实施,所述计算机程序产品包括存储在非暂时性机器可读介质(诸如软盘、光盘、硬盘、PROM、RAM、闪存或这些或其它存储介质的任何组合)上的处理器可实现指令,或者在硬件上实现为ASIC(application specific integrated circuit,专用集成电路)或FPGA(fieldprogrammable gate array,现场可编程门阵列)或其他适用于配置传统等效设备的可配置电路。另外,此类计算机程序可经由网络(诸如以太网、无线网络、互联网或这些网络或其他网络的任何组合)上的数据信号进行传输。

Claims (16)

1.一种用于并行实施的洪泛填充方法,包括步骤:
接收图像,所述图像包括具有要被替换为洪泛填充目标颜色的洪泛填充源颜色的第一元素,以及不具有所述泛洪填充源颜色的第二元素;
根据层次空间分割方案划分所述图像,以形成在所述层次中的多个层级处形的单元;
检测每个单元被所述第二元素的占用;
对于没有被所述第二元素占用的任何单元,将那个单元的子单元的深度高程值设置为大于那个单元的值的深度高程值,表示所述泛洪填充应通过单元的所述深度高程量将层级向根单元导航,同时只占用没有任何所述第二元素的节点,从而达到可以被泛洪填充的最大的父单元;以及
用所述泛洪填充目标颜色填充没有被所述第二元素占用的单元的所述泛洪填充源颜色,从而修改所述接收的图像。
2.根据权利要求1所述的方法,其中所述图像是二维的,所述层次空间分割方案是四叉树,并且所述单元是直线构成的。
3.根据权利要求1所述的方法,其中所述图像是立体的,所述层次空间分割方案是八叉树,并且所述单元是长方体。
4.根据权利要求1所述的方法,其中,当处理单元时,存储从其进入单元的至少一侧,并且用于处理的附加单元被识别为除了从其进入所述单元的存储的一侧上的单元外的那些相邻单元。
5.根据权利要求1所述的方法,其中,当处理单元时,存储从其进入单元的至少一侧,并且为与所述存储的至少一侧相邻的子单元生成工作项。
6.根据权利要求1所述的方法,其中为多个单元中的每一个生成工作项,并且并行处理两个或多个对应的工作项。
7.根据权利要求6所述的方法,其中所述两个或多个对应的工作项由图形处理单元处理。
8.根据权利要求1所述的方法,其中用所述泛洪填充目标颜色替换的图像元素表示泛洪填充掩码。
9.根据权利要求8所述的方法,其中所述泛洪填充掩码外的图像区域被定义为封闭区域。
10.根据权利要求9所述的方法,其中,为两个封闭区域之间的距离确定基于距离的度量,并且如果所述度量小于预定的阈值量,则通过列表中的一个或多个修改对所述两个区域中的至少一个进行修改,包括:
i.移动所述两个区域中的至少一个,直到所述两个区域相交;以及
ii.增加所述两个区域中至少一个的至少一部分的尺寸,直到所述两个区域相交。
11.根据权利要求10所述的方法,其中,如果所述两个区域中的至少一个被修改,则重复所述泛洪填充算法。
12.根据权利要求9所述的方法,其中所述图像表示要进行3D打印的对象的部分或全部。
13.根据权利要求12所述的方法,包括步骤:
通过向识别为封闭区域的图像的区域添加由具有所述泛洪填充目标颜色的一个或多个元素形成的孔来修改所述图像。
14.根据权利要求12所述的方法,包括步骤:
响应于所述泛洪填充图像生成3D打印指令;以及
为3D打印机输出那些3D打印指令。
15.一种计算机程序产品,其包含程序指令,所述程序指令当由计算机运行时,实施上述方法权利要求的任一项所述的方法。
16.一种娱乐设备,包括:
泛洪填充处理器,在操作上适于:
接收图像,所述图像包括具有要被替换为洪泛填充目标颜色的洪泛填充源颜色的第一元素,以及不具有所述泛洪填充源颜色的第二元素;
根据层次空间分割方案划分所述图像,以形成在所述层次中的多个层级处的单元;
检测每个单元被所述第二元素的占用;
对于没有被所述第二元素占用的任何单元,将那个单元的子单元的深度高程值设置为大于那个单元的值的深度高程值,表示泛洪填充应通过所述深度高程量将层级向根单元导航,同时只占用没有任何所述第二元素的节点,从而达到可以被泛洪填充的最大的父单元;以及
用所述泛洪填充目标颜色填充没有被所述第二元素占用的单元的泛洪填充源颜色,从而修改所接收的图像。
CN201910653679.7A 2018-07-27 2019-07-19 泛洪填充的并行方法和装置 Pending CN110853129A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB1812271.3 2018-07-27
GB1812271.3A GB2571382B (en) 2018-07-27 2018-07-27 A parallel method of flood filing, and apparatus

Publications (1)

Publication Number Publication Date
CN110853129A true CN110853129A (zh) 2020-02-28

Family

ID=63518122

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910653679.7A Pending CN110853129A (zh) 2018-07-27 2019-07-19 泛洪填充的并行方法和装置

Country Status (5)

Country Link
US (1) US10974459B2 (zh)
EP (1) EP3599587B1 (zh)
JP (1) JP7308088B2 (zh)
CN (1) CN110853129A (zh)
GB (1) GB2571382B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112001924A (zh) * 2020-06-30 2020-11-27 深圳点猫科技有限公司 一种基于本地浏览器的抠图方法及装置
WO2021196392A1 (zh) * 2020-03-30 2021-10-07 鹏城实验室 一种点云几何编码方法、解码方法、编码设备及解码设备
CN114420015A (zh) * 2021-12-24 2022-04-29 合肥通用机械研究院有限公司 一种具备折叠收纳功能的移动展示系统

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20210308936A1 (en) * 2018-07-31 2021-10-07 Hewlett-Packard Development Company, L.P. Three-dimensional printing of texture images
US11710272B2 (en) * 2021-03-24 2023-07-25 Disney Enterprises, Inc. Volumetric representation of digital objects from depth renderings
EP4281926A1 (en) * 2021-07-13 2023-11-29 Samsung Electronics Co., Ltd. A system and method for rendering differential video on graphical displays
CN113628224B (zh) * 2021-08-09 2023-12-19 南通大学 一种基于三维欧式距离变换的房间分割方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140043331A1 (en) * 2012-08-08 2014-02-13 Umbra Software Ltd. Conservative cell and portal graph generation
US20160092777A1 (en) * 2014-09-26 2016-03-31 Granta Design Limited System for and method of determining corrosion risks

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6396492B1 (en) * 1999-08-06 2002-05-28 Mitsubishi Electric Research Laboratories, Inc Detail-directed hierarchical distance fields
CN100578525C (zh) * 2002-07-10 2010-01-06 哈曼贝克自动系统股份有限公司 生成物体三维电子模型的系统和方法
JP5419044B2 (ja) * 2008-12-20 2014-02-19 国立大学法人 東京大学 ボリュームデータの実時間レンダリング方法及び装置
TWI628208B (zh) * 2015-01-12 2018-07-01 國立台灣科技大學 積層製造方法及光敏樹脂的光固化方法
US20170109922A1 (en) * 2015-10-15 2017-04-20 Michal Kulon System and method for facilitating assessment of the bowel course and facilitation of transition point detection on cross-sectional radiologic digital images by elimination of air-fluid levels during image post-processing.

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140043331A1 (en) * 2012-08-08 2014-02-13 Umbra Software Ltd. Conservative cell and portal graph generation
US20160092777A1 (en) * 2014-09-26 2016-03-31 Granta Design Limited System for and method of determining corrosion risks

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
VUCKOVIC VLADAN: "Generalized N-way iterative scanline fill algorithm for real-time applications", 《HTTPS://LINK.SPRINGER.COM/ARTICLE/10.1007/S11554-017-0732-1》, 6 November 2017 (2017-11-06), pages 1 - 19 *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021196392A1 (zh) * 2020-03-30 2021-10-07 鹏城实验室 一种点云几何编码方法、解码方法、编码设备及解码设备
CN112001924A (zh) * 2020-06-30 2020-11-27 深圳点猫科技有限公司 一种基于本地浏览器的抠图方法及装置
CN114420015A (zh) * 2021-12-24 2022-04-29 合肥通用机械研究院有限公司 一种具备折叠收纳功能的移动展示系统
CN114420015B (zh) * 2021-12-24 2024-02-09 合肥通用机械研究院有限公司 一种具备折叠收纳功能的移动展示系统

Also Published As

Publication number Publication date
GB2571382B (en) 2020-02-19
GB2571382A (en) 2019-08-28
JP7308088B2 (ja) 2023-07-13
EP3599587A3 (en) 2020-03-18
EP3599587B1 (en) 2024-04-03
EP3599587A2 (en) 2020-01-29
US10974459B2 (en) 2021-04-13
US20200031058A1 (en) 2020-01-30
GB201812271D0 (en) 2018-09-12
JP2020015314A (ja) 2020-01-30

Similar Documents

Publication Publication Date Title
CN110853129A (zh) 泛洪填充的并行方法和装置
US11529762B2 (en) System and method of 3D print modelling
US11654633B2 (en) System and method of enhancing a 3D printed model
CN106066634B (zh) 选择用于3d打印的对象的设备和方法
CN105938424B (zh) 3d打印的系统、设备和方法
EP3065109A2 (en) System, device and method of 3d printing
EP3649621B1 (en) 3d modelling for 3d printing of objects having zero-thickness parts
WO2018203029A1 (en) System and method of 3d print modelling
EP3494550B1 (en) Device and method of analysing an object for 3d printing
GB2543097A (en) Device and method of generating 3D printing data for a model
EP3714436B1 (en) A system and method of 3d print modelling
JP2005173685A (ja) 仮想空間構築装置およびその方法、画像合成装置およびその方法

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