CN107209954A - 八叉树串行化 - Google Patents
八叉树串行化 Download PDFInfo
- Publication number
- CN107209954A CN107209954A CN201580074448.0A CN201580074448A CN107209954A CN 107209954 A CN107209954 A CN 107209954A CN 201580074448 A CN201580074448 A CN 201580074448A CN 107209954 A CN107209954 A CN 107209954A
- Authority
- CN
- China
- Prior art keywords
- node
- nodes
- identifier
- nonleaf
- leaf
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 claims abstract description 49
- 230000008569 process Effects 0.000 claims abstract description 25
- 230000004044 response Effects 0.000 claims description 33
- 239000000463 material Substances 0.000 description 37
- 238000007639 printing Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 4
- 238000003491 array Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 238000010146 3D printing Methods 0.000 description 2
- 230000009471 action Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 238000006116 polymerization reaction Methods 0.000 description 2
- 238000000926 separation method Methods 0.000 description 2
- 239000004566 building material Substances 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000005611 electricity Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000012530 fluid Substances 0.000 description 1
- 208000000509 infertility Diseases 0.000 description 1
- 230000036512 infertility Effects 0.000 description 1
- 231100000535 infertility Toxicity 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 239000011800 void material Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T17/00—Three dimensional [3D] modelling, e.g. data description of 3D objects
- G06T17/005—Tree description, e.g. octree, quadtree
-
- B—PERFORMING OPERATIONS; TRANSPORTING
- B29—WORKING OF PLASTICS; WORKING OF SUBSTANCES IN A PLASTIC STATE IN GENERAL
- B29C—SHAPING 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/00—Additive 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/30—Auxiliary operations or equipment
- B29C64/386—Data acquisition or data processing for additive manufacturing
- B29C64/393—Data acquisition or data processing for additive manufacturing for controlling or regulating additive manufacturing processes
-
- B—PERFORMING OPERATIONS; TRANSPORTING
- B33—ADDITIVE MANUFACTURING TECHNOLOGY
- B33Y—ADDITIVE 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/00—Data acquisition or data processing for additive manufacturing
- B33Y50/02—Data acquisition or data processing for additive manufacturing for controlling or regulating additive manufacturing processes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2246—Trees, e.g. B+trees
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/50—Information retrieval; Database structures therefor; File system structures therefor of still image data
- G06F16/58—Retrieval characterised by using metadata, e.g. metadata not derived from the content or metadata generated manually
- G06F16/583—Retrieval characterised by using metadata, e.g. metadata not derived from the content or metadata generated manually using metadata automatically derived from the content
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T3/00—Geometric image transformations in the plane of the image
- G06T3/04—Context-preserving transformations, e.g. by using an importance map
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Materials Engineering (AREA)
- Chemical & Material Sciences (AREA)
- Software Systems (AREA)
- Computer Graphics (AREA)
- Geometry (AREA)
- Manufacturing & Machinery (AREA)
- Library & Information Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- Optics & Photonics (AREA)
- Mechanical Engineering (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
在一些示例中,八叉树串行化可以包括存储指令的非暂时性机器可读介质,高指令可由处理资源执行,以顺序地评估八叉树结构中的两个或更多个节点,直至到达叶节点,其中两个或更多个节点包括至少一个非叶节点,并且基于与两个或更多个节点中的每个节点相关联的头中的相应的节点标识符,生成串行化的八叉树文档。
Description
背景技术
三维(3D)打印是可用来描述用于制造3D物体的工艺的术语。在3D打印中,增材工艺可以用来连续地把材料(例如,构造材料和/或打印液体)分层堆放以创建3D物体。3D物体几乎可以是任意形状。打印的3D物体的分辨率可以受限于用来打印3D物体的3D打印机的分辨率。
附图说明
图1示出了根据本公开的计算设备的示例的框图。
图2示出了根据本公开的用于八叉树串行化的系统的示例的框图。
图3示出了根据本公开的字的示例。
图4示出了根据本公开的八叉树的示例。
图5示出了根据本公开的用于八叉树串行化的方法的示例的流程图。
图6示出了根据本公开的包括处理资源和存储可执行指令的非暂时性计算机可读介质的系统的示例的图。
具体实施方式
八叉树串行化可包括读取来自八叉树树数据结构中的节点的数据,对来自节点的数据进行编码,和/或对来自节点的数据进行解码。读取来自八叉树结构中的节点的数据可包括获取打印特性(例如,3D物体的形状规格和/或3D物体的材料规格)。如本文所用的,八叉树树数据结构为有序的节点集合。3D物体为可沿x轴、y轴和z轴表示的物体。形状规格限定了3D物体的形状(例如几何形状)。材料规格限定了形成3D物体的材料和/或材料属性(例如,弹性、强度、和/或颜色,以及其它材料属性)。八叉树串行化还可包括记录和/或写与节点相对应的数据,以创建3D物体的树数据结构表示。如本文所用的,八叉树串行化是将八叉树数据转换为字节流。相反,八叉树去串行化可包括将字节流转换为八叉树。通常,八叉树数据存储在易失性存储器内,而字节流存储在非易失性存储器内。
在若干其它方法中,可以使用表面网格执行3D打印,每种3D物体采用单一材料。这种方法典型地受限于每个所打印的3D物体的单一材料。
为了解决这种限制(例如每个所打印的3D物体的单一材料的限制),若干其它方法可以依赖基于中央处理单元(CPU)的台式应用,以生成3D打印机可以用来生成3D物体的数据。然而,即使在这种基于CPU的应用中,多种材料的使用可能依赖于手工(即,由基于3D的台式应用的用户)将各材料分配给各个非结构化的表面网格(unstructured surfacemesh)。结果,在这种方法中,材料取决于物体的形状。进一步地,除了其它缺陷,手工将每一种材料分配给每个网格很费时,未提供可重用的材料模板,和/或未提供多种材料之间的连续渐变。而且,这种方法不能打印由复杂和/或相当大的数据集表示的3D物体(例如,无法如想要地打印这种物体)。例如,3D打印机可能没有足够的硬件和/或存储器来接收和/或存储基于CPU的台式应用所提供的大数据集(例如,作为单个数据包提供给打印机)。
相反,本公开的若干示例提供了具有编码和/或解码多材料体素和/或八叉树数据结构的能力的八叉树串行化,使得数据结构中的任意体素能够被标识。进一步地,本公开的示例提供了串行化和/或去串行化机制,以将存储器对象写入存储位置,从存储器位置读取存储器对象,和/或基于所读取的存储器对象重构八叉树数据结构。
图1示出了根据本公开的计算设备的示例的框图。计算设备100可以包括经链路104连接到存储器资源106(例如,计算机可读介质(CRM)、机器可读介质(MRM)、数据库等)的处理资源102。存储器资源106可以包含若干计算模块。图1的示例示出了确定模块108、串行化模块109和去串行化模块110。如本文所用的,计算模块可以包括程序代码,(例如,计算机可执行指令,硬件,固件,和/或逻辑),但至少包括处理资源102可执行的指令(例如,采用模块的形式),以执行本文参考图2至6更详细描述的动作、任务和功能。
如本文所用且如本文将更详细解释的,确定模块108,可以包括由处理资源102执行的指令,以顺序地评估八叉树结构中的两个或更多节点,直至到达叶节点,其中两个或更多个节点包括非叶节点和叶节点。在一些示例中,确定模块108可以包括由处理资源102执行的指令,以响应于该节点为叶节点,确定该节点是否为空节点(void node)或填充节点(filled node)。
如本文所用的,“非叶节点”为具有后代节点(例如子节点)的八叉树节点,而“叶节点”为无后代节点(例如子节点)的节点。在一些示例中,非叶节点可以携带八叉树结构,而叶节点可携带系统的物理属性。作为一个示例,叶节点可以携带至少一个关于系统的打印特性。如本文所用的,“打印特性”为位置(例如,坐标、大小等)、材料和/或描述要打印什么和/或要在哪里打印以形成3D物体的其它相关联的量。在一些示例中,叶节点携带的打印特性可规定单一材料类型或材料标识。
例如,打印特性可以描述3D物体的形状(例如,几何形状)。单个形状规格可以描述3D物体,或多个形状规格中的每一个可以描述3D物体的多个部分。材料规格可以描述材料和/或与形成3D物体的材料相关联的若干材料属性值。也就是说,材料规格可以由材料值(例如,多个材料属性值)定义。
串行化模块109可以包括由处理资源102执行的指令,以基于与两个或更多节点中的每个节点相关联的各个头(header)中的相应的节点标识符,生成串行化的八叉树文档,其中相应的节点标识符将两个或更多节点中的节点标识为包括叶节点和至少一个非叶节点。如本文所用的,“节点标识符”为存储在与节点相关联的字(word)的头中、可以将节点标识为非叶节点或叶节点的标示(例如,整数)。
如本文进一步讨论的,在一些示例中,生成串行化的八叉树文档可以包括响应于确定节点为非叶节点,将第一整数记录在与该节点相关联的头中。生成串行化的八叉树文档可以进一步包括响应于确定节点为空的叶节点,将第二整数记录在与该节点相关联的头中。在一些示例中,材料类型可以被定义为空,响应于确定节点为空的叶节点,可以将空的材料类型记录在与节点相关联的有效负载中。
去串行化模块110可以包括由处理资源120执行的指令,以响应于将两个或更多个节点中的节点标识为非叶节点的相应的节点标识符,递增计数器。在一些示例中,去串行化模块110可以包括由处理资源102执行的指令,以响应于将两个或更多个节点中的节点标识为非叶节点的节点标识符,将子节点的位置记录在八叉树结构中。
在一些示例中,去串行化模块110可以包括由处理资源102执行的指令,以响应于在头中的、将节点标识为空的叶节点的相应的节点标识符,将表示空的一个整数或多个整数记录在与两个或更多个节点中的节点相对应的字的各自的有效负载中,并响应于在头中的、标识填充的叶节点的相应的节点标识符,将信息记录在与两个或更多个节点中的节点相对应的字的各自的有效负载中。
图1所示的若干模块(例如,确定模块108,串行化模块109和去串行化模块110)可以与其它模块相结合,或是其它模块的子模块。模块可以存储在如图1所示的存储器资源106中,和/或包含在同一计算设备内。在另一示例中,若干模块(例如,确定模块108、串行化模块109和去串行化模块110)可以包括在(诸如在分布式计算环境(例如,云计算环境)中的)不同存储器资源(例如,CRM等)上分离且不同的位置处的个体模块。进一步地,执行与特定模块(例如,确定模块108,串行化模块108,去串行化模块110)相关联的指令的处理资源102,可以用作引擎,诸如图2所示的示例性引擎。如本文所用的,若干模块和/或若干引擎可包括比所示的那些更多或更少的引擎/模块。
图2示出了根据本公开的用于八叉树串行化的系统220的示例的框图。系统220可以执行本文描述的若干功能和操作(例如,八叉树串行化)。系统220可以包括数据存储221。图2的示例示出了确定引擎224、串行化引擎226和去串行化引擎228。系统220可以包括硬件,例如以晶体管逻辑和/或特定用途集成电路(ASIC)、固件的形式,以及软件,例如以机器可读且可执行的指令(例如,机器可读介质中存储的程序指令)的形式,其共同可以形成如结合图1所讨论的计算设备。
在图2的示例中,确定引擎224可以包括硬件和/或硬件与编程(例如可执行指令)的组合,但是至少包括硬件,以顺序地评估八叉树结构中的两个或更多个节点,直至到达叶节点,其中两个或更多个节点包括非叶节点和叶节点。
串行化引擎226可以包括硬件和/或硬件与编程的组合,但至少包括硬件,以基于与两个或更多个节点中的每个节点相关联的相应的头中的相应的节点标识符、生成串行化的八叉树文档,其中相应的节点标识符将两个或更多个节点中的节点标识为包括叶节点和至少一个非叶节点。在一些示例中,节点标识符可以包括将节点标识为非叶节点(例如,0)的第一整数,或节点标识符可以包括将节点标识为叶节点的第二整数(例如,1)。示例不限于此,且第一整数可以将节点标识为非叶节点或叶节点(例如,如果节点为非叶节点,第一整数可以为0,且如果节点为叶节点,第一整数可以为1),同时第二整数可以响应于将节点标识为叶节点的第一整数,将节点标识为空或填充(例如,如果叶节点为空,第二整数可以为0,且如果叶节点为填充,第二整数可以为1)。示例不受限于这些具体的整数值。
去串行化引擎228可以包括硬件和/或硬件与编程的组合,但至少包括硬件,以响应于将两个或更多个节点中的节点标识为非叶节点的相应的节点标识符,递增计数器,并且响应于将两个或更多个节点中的节点标识为叶节点的节点标识符,将子节点的位置记录在八叉树结构中。
在一些示例中,去串行化引擎228可以包括硬件和/或硬件与编程的组合,但至少包括硬件,以响应于在头中的、将节点标识为空的叶节点的相应的节点标识符,将表示空的整数记录在与两个或更多个节点中的节点相对应的字的各自的有效负载中,并响应于在头中的、标识填充的叶节点的相应的节点标识符,将信息记录在与两个或更多个节点中的节点相对应的字的各自的有效负载中。
图2所示的确定引擎224、串行化引擎226及去串行化引擎228和/或图1中的确定模块108、串行化模块109及去串行化模块110可以为其它引擎/模块的子引擎/模块,和/或结合起来执行特定系统和/或计算设备内的特定的动作、任务和功能。进一步地,结合图1及图2描述的引擎和/或模块可以位于单个系统和/或计算设备中,或驻于分布式计算环境(例如云计算)中的分离且不同的位置处。示例不限于这些示例。
图3示出了根据本公开的字301的示例。在一些示例中,字301可以包含用于节点(例如,图4中图示的节点440-1)的代码。字301可以包括有效负载部分332和/或头部分334。字301可以包含用于图形处理单元(GPU)加速的32位;然而,示例不限于包含特定数目的位的字。
在字包含32位的示例中,例如,有效负载部分332可以包含24位,并且头部分334可以包含8位。在一些示例中,字301的头部分334可以记录节点是否为叶节点(例如图4中图示的节点440-1)或非叶节点(例如,图4中图示的空的叶节点442-1,填充的叶节点444-1)。
图4示出了根据本公开的八叉树结构403的示例。八叉树结构403可以包括可以与八叉树403的层级关系(hierarchal relationship)相对应的多个阵列(例如,阵列_i 445,阵列_(i+1)446,阵列_(i+2)447,阵列_(i+3)448等)。例如,节点440-1可以为父节点,并能位于阵列i 445。父节点440-1的所有子女(例如,阵列_(i+1)446中的节点)可以位于阵列_(i+1)446等。在一些示例中,可以根据特定的顺序,将每个阵列的子节点放置在它们各自的阵列中。在这方面,父节点440-1,……,440-N可以确定其子女中的每一个的位置和/或唯一地标识其子女中的每一个。作为一个示例,节点440-1可以确定其子女中的每一个的位置和/或唯一地标识其子女中的每一个,例如,阵列_(i+1)446的节点。
多个阵列中的每一个可以包括一个或多个节点440-1,…,440-N,442-1,…,442-N,444-1,444-2,…,444-N等(本文统称为节点440、442、444)。多个节点440、442、444中的每一个可以表示节点,该节点或为非叶节点(例如,节点440)、或为空的叶节点(例如,节点442)、或为填充的叶节点(例如,节点444)的节点。在图4的示例中,不同类型的节点由不同的阴影表示。例如,用网纹网状线填充的节点(例如,节点440)为非叶节点,用斜线填充的节点(例如,节点444)为填充的叶节点,无填充的节点(例如,节点442)为空的叶节点。
如果节点为叶节点440,可以将至少一个打印特性(例如,材料标识等)记录在字301的有效负载部分332。如果节点为非叶节点442、444,可以将子节点的位置记录在字301的有效负载部分332。例如,字301的有效负载部分332可以记录在阵列_(i+1)446中的子节点的位置。
在一些示例中,字301的头部分334可以记录子节点是否为叶节点440或非叶节点442、444。这可以为八叉树文档提供额外的检错。字301的头部分334可以用于记录子节点是不重要(trivial)的还是重要(non-trivial)的。如本文所用的,“不重要”节点为在与该节点相关联的有效负载部分332中没有信息的节点,而“非不重要”节点为非叶节点、或者在与节点相关联的有效负载部分332中包含信息的叶节点。例如,字301的头部分334可以记录节点442是不重要的(例如,空),或头部分334可以记录节点440、444是非不重要的。在这个示例中,可以通过在阵列中不记录不重要子女,节省存储空间。
在这方面,字301的头部分334可以提供充足的信息,允许识别每个子女,而无需记录和/或检查字301的有效负载部分332中包含的信息。
根据若干示例,如上所述,可以基于被编码在字301的头334中的信息,构造和/或遍历八叉树结构403。例如,可以从非叶(例如,根)节点开始,构造八叉树结构。在图4的示例中,阵列_i 445包含一个元素:非叶节点440-1。
针对八叉树403中的每个额外层(例如,每个额外阵列),可以响应于非叶节点,对计数器进行递增。例如,计数器可以记录系统内的非叶节点的数目。针对八叉树结构403中的每个非叶节点,可以通过从计数器减1并乘以8,来确定相应的非叶节点的第一代子女。示例不限于此;然而,例如,当记录具有不均匀大小的子女时,可以对子女的数目进行计数。
在一些示例中,可以通过从阵列_i 445开始并读取非叶(例如,根)节点440-1,遍历八叉树结构403。可以基于与非叶节点440-1相关联的字301的头334中包含的信息,定位第一子节点(例如,441-1)。在八叉树结构403中,阵列(例如,阵列_(i+1)446)中的接下来的7个元素也是非叶节点440-1的子女。可以重复此过程,直至到达填充的叶节点444,可以从与填充的叶节点444相关联的字301的有效负载332获取打印特性。
在一些示例中,八叉树结构403可以与体素的网格(例如,体素的3D网格)相关联。如本文所用的,体素表示3D空间上的值。体素可以为与3D空间相关联的体积。体素可以具有实体值、空值或3D空间的不同定义的描述的值。可以基于体素相对其它体素的位置,推断该体素的位置。
八叉树403可以表示任意形状(例如,凸面、凹面和/或有孔),并且可以携带表示任意材料分布(例如,材料类型和/或材料属性)的节点属性。八叉树可以通过使用最大可能的体素来表示均匀区域,压缩体素数据结构。如本文所用的,当树数据结构(例如,八叉树)中的体素(例如,节点)具有形状、材料类型和/或材料属性的均匀性,而不具有与多个邻近节点交叉的形状边界、材料类型边界和/或材料属性边界时,区域是均匀的。
在一些示例中,可以将八叉树结构403写入到用于未来使用或其它应用的文件。也就是说,八叉树串行化可以允许将八叉树被输出到或以流的形式传输到3D打印机。例如,被创建以在第一3D打印机上打印3D物体的八叉树可以被重用,以在具有与第一3D打印机的打印分辨率不同的打印分辨率的第二3D打印机上打印3D物体,而不必重建八叉树。
在一些示例中,在八叉树结构403的每个层(例如,每个阵列),可以将节点标识符写入到与节点(例如,节点440-1)相关联的字301的头334。在一些示例中,节点标识符可以为0,如果节点为非叶节点,可以将该节点标识符写入到与该节点相关联的头334。可以将节点标识符写入到头334中的特定块(例如,块335)。然而,示例不限于此,可以将节点标识符写入到头334中的任意块。在一些示例中,如果节点(例如,442,444)为叶节点,如果叶节点为空(例如,442),可以将1写入到头334,并且如果叶节点是填充的(例如,444),有效负载332可以被写入。在叶节点444的情况下,可以将计数器移位2,且该过程可以再次从非叶节点440开始。
图5示出了根据本公开的用于八叉树串行化的方法550的示例的流程图。在552,方法550可以包括顺序地评估八叉树结构中的两个或更多个节点,直至到达叶节点,其中两个或更多个节点包括叶节点和非叶节点。
在554,方法550可以包括基于与两个或更多个节点中的每个节点相关联的头中的相应的节点标识符,生成串行化的八叉树文档,其中相应的节点标识符将两个或更多个节点中的节点标识为包括至少一个叶节点和至少一个非叶节点。在一些示例中,串行化的八叉树文档可以具有与立体平版印刷方法产生的文件大小相比相对小的文件大小。这个相对较小的大小可能至少部分是由于可以跳过节点标识符提供的不重要(例如空)节点。也就是说,通过使用节点标识符忽略不重要节点,八叉树的整个结构可被保存,而无需读取、存储或写入不重要节点的数据。在一些示例中,如上所述,相对较小的文件大小可能至少部分是由于八叉树串行化可以产生相对大的表示均匀区域的体素。
在556,方法550可以包括响应于将两个或更多个节点中的节点标识为叶节点的节点标识符,将至少一个打印特性记录在与节点相关联的相应的有效负载中。
在558,方法550可以包括响应于将两个或更多个节点中的节点标识为非叶节点的节点标识符,将节点的第一子节点的位置记录在与两个或更多个节点中的节点相关联的相应有效负载中。
在一些示例中,方法550可以包括基于与第一子节点关联的相应的头中包含的信息,确定第一子节点是否为叶节点或非叶节点。方法550可以进一步包括响应于将子节点标识为叶节点的节点标识符,将至少一个打印特性记录在与子节点相关联的相应的有效负载中,并且响应于将第一子节点标识为非叶节点的节点标识符,将第二子节点的位置记录在与第一子节点相关联的相应的有效负载中。在一些示例中,可以响应于将第一子节点标识为非叶节点的节点标识符,将第二子节点的位置和包括第二子节点的阵列中的接下来7个子节点的位置记录在第一子节点的头和/或有效负载中。示例不限于此,并且一旦响应于将父节点标识为非叶节点的父节点的节点标识符确定第一子女的位置,阵列中的第一子节点之后的7个节点可以是父节点的子女。
在一些示例中,方法550可以包括响应于将两个或更多个节点中的节点标识为非叶节点的节点标识符,记录第一节点的8个子节点中的每个节点的各自的位置。例如,与节点相关联的头可以包括8位,并且8位中的每一位可与第一节点的8个子节点中的每个节点的相应位置相对应。
方法550可以包括将与八叉树结构中的8个子节点中的每个节点对应的至少一个节点属性记录在与非叶节点相关联的头中。如本文所用的,“节点属性”为子节点的聚合属性的标示。例如,可以记录聚合的8个子节点的和、加权和、和/或布尔(Boolean)属性。在一些示例中,在对八叉树进行解码时,可以将节点属性与存储在与父节点相关联的头中的信息进行比较,以提供检错。
图6示出了根据本公开的包括处理资源602和存储可执行指令的非暂时性计算机可读介质661的系统660的示例的图。例如,系统660可以为图2的示例性系统220的实现。
处理资源602可以配置为执行存储在非暂时性计算机可读介质661上的指令。例如,非暂时性计算机可读介质661可以是任意类型的易失性或非易失性存储器或存储设备,诸如随机存取存储器(RAM)、闪存、只读存储器(ROM)、存储卷、硬盘或其组合。当被执行时,指令可以使处理资源602执行诸如关于图5描述的方法的八叉树串行化。
示例性介质661可以存储可由处理资源602执行的指令662,以顺序地评估八叉树结构中的两个或更多个节点,直至到达叶节点,其中两个或更多个节点中至少包括一个非叶节点。在一些示例中,处理资源602可以执行指令662以执行图5的方法的框552。
示例性介质661可以进一步存储指令664。指令664可被执行为基于与两个或更多个节点中的每个节点相关联的头中的相应的节点标识符,生成串行化的八叉树文档。在一些示例中,头中的相应的节点标识符可以将节点标识为非叶节点、空的叶节点或填充的叶节点。串行化的八叉树文档可以具有与立体平版印刷方法产生的文件大小相比相对小的文件大小。
示例性介质661可以进一步存储可由处理资源602执行的指令,以响应于与非叶节点相对应的相应的标识符,确定八叉树结构中的子节点的位置。在一些示例中,示例性介质661可以进一步存储可由处理资源602执行的指令,以响应于与填充的叶节点相对应的相应的标识符,读取与两个或更多个节点中的至少一个节点相关联的打印特性。
在本公开中,参考构成部分本公开的附图,在附图中举例示出如何可以实施本公开的若干示例。这些示例以足够的细节被描述,以使得本领域技术人员可以实施本公开文件的示例,并且可以理解的是可以使用其它示例,并且可以做出过程、电和/或结构的修改,而不背离本公开的范畴。
本文的附图遵循编号规定,其中第一数字与附图编号相对应,其余的数字标识附图中的元件或组件。可以增加、交换和/或删去本文各图中所示的元件,以便提供本公开的若干额外示例。附图中提供的元件的比例和的相对尺寸旨在图示本公开的示例,而不该在限制意义上采用。
说明书示例提供了本公开的系统及方法的应用及用途的描述。因为可以未背离本公开的系统及方法的精神及范围作出许多示例,本说明书记载了许多可能的示例性配置及实施中的一些。
如本文所用的,“一个”或“若干”某物可以指一个或更多个这种事物。例如,“若干小工具”可能指一个或更多个小工具。
Claims (15)
1.一种存储指令的非暂时性机器可读介质,所述指令可由处理资源执行以:
顺序地评估八叉树结构中的两个或更多个节点,直至到达叶节点,其中所述两个或更多个节点包括至少一个非叶节点;并且
基于与所述两个或更多个节点中的每个节点相关联的头中的相应的节点标识符,生成串行化的八叉树文档。
2.根据权利要求1所述的非暂时性机器可读介质,其中所述串行化的八叉树文档具有与立体平版印刷方法产生的文件大小相比相对小的文件大小。
3.根据权利要求1所述的非暂时性机器可读介质,其中所述头中的所述相应的节点标识符将节点标识为非叶节点。
4.根据权利要求3所述的非暂时性机器可读介质,其中所述指令包括响应于与非叶节点相对应的所述相应的标识符,确定所述八叉树结构中的子节点的位置的指令。
5.根据权利要求1所述的非暂时性机器可读介质,其中所述头中的所述相应的标识符将节点标识为空的叶节点。
6.根据权利要求1所述的非暂时性机器可读介质,其中所述头中的所述相应的标识符将节点标识为填充的叶节点。
7.根据权利要求6所述的非暂时性机器可读介质,其中所述指令包括响应于与填充的叶节点相对应的所述相应的标识符,读取与所述两个或更多个节点中的至少一个节点相关联的打印特性。
8.一种系统,包括:
确定引擎,用于顺序地评估八叉树结构中的两个或更多个节点,直至到达叶节点,其中所述两个或更多个节点包括非叶节点和所述叶节点;
串行化引擎,用于基于与所述两个或更多个节点中的每个节点相关联的相应的头中的相应的节点标识符,生成串行化的八叉树文档,其中所述相应的节点标识符将所述两个或更多个节点中的节点标识为包括叶节点和至少一个非叶节点;以及
去串行化引擎,用于:
响应于将所述两个或更多个节点中的节点标识为非叶节点的所述相应的节点标识符,递增计数器;并且
响应于将所述两个或更多个节点中的所述节点标识为非叶节点的所述节点标识符,将子节点的位置记录在所述八叉树结构中。
9.根据权利要求8所述的系统,所述去串行化引擎用于:
响应于在头中的、将所述两个或更多个节点中的节点标识为空的叶节点的相应的节点标识符,将表示空的整数记录在与所述节点相对应的字的相应的有效负载中;并且
响应于在所述头中的、标识填充的叶节点的所述相应的节点标识符,将信息记录在与所述两个或更多个节点中的节点对应的所述字的所述相应的有效负载中。
10.根据权利要求9所述的系统,其中记录在所述字的所述有效负载中的所述信息包括至少一个打印特性。
11.一种方法,包括:
顺序地评估八叉树结构中的两个或更多个节点,直至到达叶节点,其中所述两个或更多个节点包括非叶节点和叶节点;
基于与所述两个或更多个节点中的每个节点关联的头中的相应的节点标识符,生成串行化的八叉树文档,其中所述相应的节点标识符将所述两个或更多个节点中的节点标识为包括至少一个叶节点和至少一个非叶节点;
响应于将所述两个或更多个节点中的节点标识为叶节点的所述节点标识符,将至少一个打印特性记录在与所述节点相关联的相应的有效负载中;并且
响应于将所述两个或更多个节点中的节点标识为非叶节点的所述节点标识符,将所述节点的第一子节点的位置记录在与所述两个或更多个节点中的节点相关联的所述相应的有效负载中。
12.根据权利要求11所述的方法,进一步包括:
基于与所述第一子节点相关联的所述相应的头中包含的信息,确定所述第一子节点为叶节点或非叶节点;
响应于将所述第一子节点标识为叶节点的所述节点标识符,将至少一个打印特性记录在与所述子节点关联的相应的有效负载中;并且
响应于将所述第一子节点标识为非叶节点的所述节点标识符,将第二子节点的位置记录在与所述第一子节点相关联的相应的有效负载中。
13.根据权利要求11所述的方法,进一步包括:响应于将所述两个或更多个节点中的所述节点标识为非叶节点的所述节点标识符,记录所述第一节点的八个子节点中的每一个子节点的相应的位置。
14.根据权利要求13所述的方法,包括:将与所述八叉树结构中的所述八个子节点中的每一个子节点相对应的至少一个节点属性记录在与非叶节点关联的所述头中。
15.根据权利要求11所述的方法,其中所述头为32位字中包含的8位头。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2015/026873 WO2016171673A1 (en) | 2015-04-21 | 2015-04-21 | Octree serialization |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107209954A true CN107209954A (zh) | 2017-09-26 |
CN107209954B CN107209954B (zh) | 2022-05-27 |
Family
ID=57143316
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201580074448.0A Active CN107209954B (zh) | 2015-04-21 | 2015-04-21 | 八叉树串行化 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10853997B2 (zh) |
EP (1) | EP3234922A4 (zh) |
CN (1) | CN107209954B (zh) |
WO (1) | WO2016171673A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111183588A (zh) * | 2017-10-05 | 2020-05-19 | 索尼公司 | 信息处理装置和方法 |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10853997B2 (en) * | 2015-04-21 | 2020-12-01 | Hewlett-Packard Development Company, L.P. | Octree serialization |
WO2017200527A1 (en) * | 2016-05-16 | 2017-11-23 | Hewlett-Packard Development Company, L.P. | Generating a shape profile for a 3d object |
US10839598B2 (en) * | 2016-07-26 | 2020-11-17 | Hewlett-Packard Development Company, L.P. | Indexing voxels for 3D printing |
CA3090919A1 (en) * | 2018-02-14 | 2019-08-22 | Panasonic Intellectual Property Corporation Of America | Three-dimensional data encoding method, three-dimensional data decoding method, three-dimensional data encoding device, and three-dimensional data decoding device |
US10783698B2 (en) * | 2018-07-31 | 2020-09-22 | Intel Corporation | Point cloud operations |
US10893299B2 (en) | 2018-07-31 | 2021-01-12 | Intel Corporation | Surface normal vector processing mechanism |
US10887574B2 (en) | 2018-07-31 | 2021-01-05 | Intel Corporation | Selective packing of patches for immersive video |
US10762394B2 (en) | 2018-07-31 | 2020-09-01 | Intel Corporation | System and method for 3D blob classification and transmission |
US11212506B2 (en) | 2018-07-31 | 2021-12-28 | Intel Corporation | Reduced rendering of six-degree of freedom video |
US11178373B2 (en) | 2018-07-31 | 2021-11-16 | Intel Corporation | Adaptive resolution of point cloud and viewpoint prediction for video streaming in computing environments |
US11057631B2 (en) | 2018-10-10 | 2021-07-06 | Intel Corporation | Point cloud coding standard conformance definition in computing environments |
US20210245047A1 (en) | 2020-02-10 | 2021-08-12 | Intel Corporation | Continuum architecture for cloud gaming |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1681330A (zh) * | 2004-03-08 | 2005-10-12 | 三星电子株式会社 | 自适应2n叉树生成方法及3D体数据编码和解码方法和设备 |
CN1684109A (zh) * | 2004-02-17 | 2005-10-19 | 三星电子株式会社 | 用于编码和解码三维数据的方法和装置 |
US20080238919A1 (en) * | 2007-03-27 | 2008-10-02 | Utah State University | System and method for rendering of texel imagery |
CN103440238A (zh) * | 2012-03-09 | 2013-12-11 | 辉达公司 | 图形处理单元中的3d加速结构的完全并行适当地构造 |
CN103999490A (zh) * | 2011-11-28 | 2014-08-20 | 汤姆逊许可公司 | 可终止的基于空间树的位置编码和解码 |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH09512220A (ja) | 1994-04-25 | 1997-12-09 | 3ディ・システムズ・インコーポレイテッド | ステレオリソグラフィーにおける高度な構成技術 |
US6014514A (en) * | 1995-05-15 | 2000-01-11 | Sun Microsystems, Inc. | System for generating and graphically displaying call stack information for processing elements in a parallel processing system |
US7406361B2 (en) * | 2001-08-16 | 2008-07-29 | Riken | Rapid prototyping method and apparatus using V-CAD data |
KR100513732B1 (ko) | 2002-12-05 | 2005-09-08 | 삼성전자주식회사 | 3차원 객체 데이터 부호화 및 복호화 방법 및 장치 |
KR100695142B1 (ko) * | 2004-03-08 | 2007-03-14 | 삼성전자주식회사 | 적응적 2의 n 제곱 진트리 생성방법 및 이를 이용한 3차원 체적 데이터 부호화/복호화 방법 및 장치 |
US7561156B2 (en) * | 2006-02-08 | 2009-07-14 | INOVO Limited | Adaptive quadtree-based scalable surface rendering |
JP4759464B2 (ja) * | 2006-07-31 | 2011-08-31 | キヤノン株式会社 | 文書処理装置および文書処理方法 |
JP5311870B2 (ja) * | 2008-04-22 | 2013-10-09 | キヤノン株式会社 | 構造化文書変換装置、構造化文書変換方法、及びコンピュータプログラム |
US8175734B2 (en) | 2009-10-08 | 2012-05-08 | 3D M. T. P. Ltd. | Methods and system for enabling printing three-dimensional object models |
US20140031967A1 (en) * | 2012-07-30 | 2014-01-30 | 6598057 Manitoba Ltd. | Method and system for rapid prototyping of complex structures |
US20140297014A1 (en) | 2013-03-31 | 2014-10-02 | Microsoft Corporation | Three-dimensional object fabrication using an implicit surface representation |
WO2014172687A2 (en) | 2013-04-18 | 2014-10-23 | Massachusetts Institute Of Technology, Inc. | Methods and apparati for implementing programmable pipeline for three-dimensional printing including multi-material applications |
US9767226B2 (en) | 2013-06-27 | 2017-09-19 | Massachusetts Institute Of Technology | System and method for designing three-dimensional objects |
EP2933777A1 (en) * | 2014-04-17 | 2015-10-21 | amberMind | Three dimensional modeling |
US9987800B2 (en) * | 2014-11-17 | 2018-06-05 | Formlabs, Inc. | Systems and methods of simulating intermediate forms for additive fabrication |
US10853997B2 (en) * | 2015-04-21 | 2020-12-01 | Hewlett-Packard Development Company, L.P. | Octree serialization |
-
2015
- 2015-04-21 US US15/545,038 patent/US10853997B2/en active Active
- 2015-04-21 CN CN201580074448.0A patent/CN107209954B/zh active Active
- 2015-04-21 EP EP15890076.1A patent/EP3234922A4/en not_active Withdrawn
- 2015-04-21 WO PCT/US2015/026873 patent/WO2016171673A1/en active Application Filing
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1684109A (zh) * | 2004-02-17 | 2005-10-19 | 三星电子株式会社 | 用于编码和解码三维数据的方法和装置 |
CN1681330A (zh) * | 2004-03-08 | 2005-10-12 | 三星电子株式会社 | 自适应2n叉树生成方法及3D体数据编码和解码方法和设备 |
US20080238919A1 (en) * | 2007-03-27 | 2008-10-02 | Utah State University | System and method for rendering of texel imagery |
CN103999490A (zh) * | 2011-11-28 | 2014-08-20 | 汤姆逊许可公司 | 可终止的基于空间树的位置编码和解码 |
CN103440238A (zh) * | 2012-03-09 | 2013-12-11 | 辉达公司 | 图形处理单元中的3d加速结构的完全并行适当地构造 |
Non-Patent Citations (2)
Title |
---|
ARMIN HORNUNG 等: "OctoMap:An Efficient Probabilistic 3D Mapping Framework Based on Octrees", 《AUTONOMOUS ROBOTS》 * |
郑顺义 等: "一种便捷式小型物体三维重建方法", 《武汉大学学报(信息科学版)》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111183588A (zh) * | 2017-10-05 | 2020-05-19 | 索尼公司 | 信息处理装置和方法 |
CN111183588B (zh) * | 2017-10-05 | 2023-09-26 | 索尼公司 | 信息处理装置和方法 |
Also Published As
Publication number | Publication date |
---|---|
US20180117897A1 (en) | 2018-05-03 |
WO2016171673A1 (en) | 2016-10-27 |
US10853997B2 (en) | 2020-12-01 |
CN107209954B (zh) | 2022-05-27 |
EP3234922A1 (en) | 2017-10-25 |
EP3234922A4 (en) | 2018-12-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107209954A (zh) | 八叉树串行化 | |
US10259164B2 (en) | Methods and apparatus for 3D printing of point cloud data | |
US10529126B2 (en) | Generating slice data from a voxel representation | |
US9881388B2 (en) | Compression and decompression of a 3D modeled object | |
Lo | Finite element mesh generation | |
De Floriani et al. | A hierarchical boundary model for solid object representation | |
US20180032060A1 (en) | Creating a voxel representation of a three dimensional (3-d) object | |
CN1248140C (zh) | 综合形状和物理特性的实体数据的存储方法 | |
CN111492381A (zh) | 神经网络的功能子网络的同时训练 | |
CN103914865B (zh) | 形成几何图案的面的组 | |
Cerveny et al. | Nonconforming mesh refinement for high-order finite elements | |
WO2016143314A1 (en) | Data structure of 3d object and 3d data management apparatus | |
CN112231961A (zh) | 大规模有限元网格数据存储索引方法 | |
Burkhart et al. | Adaptive and feature‐preserving subdivision for high‐quality tetrahedral meshes | |
Mueller‐Roemer et al. | Ternary sparse matrix representation for volumetric mesh subdivision and processing on GPUs | |
Liu et al. | Generating sparse self-supporting wireframe models for 3D printing using mesh simplification | |
WO2008026261A1 (fr) | Procédé de traitement de calcul haute vitesse d'une équation de combinaison à base d'un procédé à éléments finis et d'un procédé à éléments limites | |
CN108182244A (zh) | 一种基于多层次列式存储结构的时序数据存储方法 | |
Aleardi et al. | ESQ: Editable SQuad representation for triangle meshes | |
Boaventura Filho et al. | Geographic data modeling for NoSQL document-oriented databases | |
US11699008B2 (en) | Non-conformal domain decomposition with imprints at interfaces with boundaries for finite element analysis | |
Heber et al. | Supporting finite element analysis with a relational database backend, part ii: Database design and access | |
KR100384807B1 (ko) | Lsi 마스크 묘화 데이터 압축 장치 및 압축방법 | |
Ye et al. | A Method of Parametric Model Data Exchange and Reconstruction Based on Feature Script | |
CN111666689A (zh) | 特征线追踪方法、堆芯中子物理计算方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |