KR20190028789A - 서브 볼륨 옥트리 - Google Patents

서브 볼륨 옥트리 Download PDF

Info

Publication number
KR20190028789A
KR20190028789A KR1020197004565A KR20197004565A KR20190028789A KR 20190028789 A KR20190028789 A KR 20190028789A KR 1020197004565 A KR1020197004565 A KR 1020197004565A KR 20197004565 A KR20197004565 A KR 20197004565A KR 20190028789 A KR20190028789 A KR 20190028789A
Authority
KR
South Korea
Prior art keywords
volume
node
octree
layer
data
Prior art date
Application number
KR1020197004565A
Other languages
English (en)
Other versions
KR102192805B1 (ko
Inventor
로렌스 알렉스 카루에스코
알바르 비나쿠아
페레 브루네트
세르지오 곤잘레스
로겔 조르디 곤잘레스
마르크 코미노
아드로헤르 조셉 기랄트
로셀로 루이스 아벨로
아이 헤르메스 세바스티아 코르테스
Original Assignee
휴렛-팩커드 디벨롭먼트 컴퍼니, 엘.피.
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 휴렛-팩커드 디벨롭먼트 컴퍼니, 엘.피. filed Critical 휴렛-팩커드 디벨롭먼트 컴퍼니, 엘.피.
Publication of KR20190028789A publication Critical patent/KR20190028789A/ko
Application granted granted Critical
Publication of KR102192805B1 publication Critical patent/KR102192805B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/18Numerical control [NC], i.e. automatically operating machines, in particular machine tools, e.g. in a manufacturing environment, so as to execute positioning, movement or co-ordinated operations by means of programme data in numerical form
    • G05B19/4097Numerical control [NC], i.e. automatically operating machines, in particular machine tools, e.g. in a manufacturing environment, so as to execute positioning, movement or co-ordinated operations by means of programme data in numerical form characterised by using design data to control NC machines, e.g. CAD/CAM
    • G05B19/4099Surface or curve machining, making 3D objects, e.g. desktop 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
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/08Volume rendering
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N1/00Scanning, transmission or reproduction of documents or the like, e.g. facsimile transmission; Details thereof
    • H04N1/46Colour picture communication systems
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/30Nc systems
    • G05B2219/35Nc in input of data, input till input file format
    • G05B2219/351343-D cad-cam
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/30Nc systems
    • G05B2219/49Nc machine tool, till multiple
    • G05B2219/490233-D printing, layer of powder, add drops of binder in layer, new powder
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02PCLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS
    • Y02P10/00Technologies related to metal processing
    • Y02P10/25Process efficiency

Abstract

한 예에서, 방법은 적층 가공에서 생성될 오브젝트의 제1 데이터 모델을, 프로세서에서, 수신하는 것을 포함한다. 프로세서를 사용하여, 제2 데이터 모델이 결정될 수도 있다. 제2 데이터 모델을 결정하는 것은, 오브젝트를 포함하는 볼륨의 복수의 연속적이고 중첩되지 않는 서브 볼륨의 각각에 대해, 서브 볼륨을 특성 묘사하며 루트 노드를 갖는 서브 볼륨 옥트리를 생성하는 것을 포함할 수도 있다. 제2 데이터 모델을 결정하는 것은, 오브젝트를 포함하는 볼륨을 특성 묘사하는 볼륨 옥트리를 생성하는 것을 더 포함할 수도 있는데, 볼륨 옥트리는 자신의 최하위 노드에서 서브 볼륨 옥트리의 루트 노드를 특성 묘사한다.

Description

서브 볼륨 옥트리
적층 가공 기법(additive manufacturing technique)은, 구축 재료(build material)의 선택적인 응고(solidification)를 통해 층 단위 기반(layer-by-layer basis)으로 삼차원 오브젝트를 생성할 수도 있다. 이러한 기법의 예에서, 구축 재료는 층 단위 방식으로 공급되고, 응고 방법은, 선택된 영역, 예를 들면, 융제(fusing agent)를 함유하는 영역에서 용융을 야기하도록 구축 재료의 층을 가열하는 것을 포함할 수도 있다. 다른 기법에서, 다른 응고 방법, 예컨대 화학적 응고 방법 또는 결합재(binding material)가 사용될 수도 있다.
생성될 삼차원 오브젝트에 관련이 있는 데이터는, 적층 가공 장치에 제공되어 삼차원 오브젝트를 생성하기 위해 사용될 수도 있다.
비제한적인 예가 첨부의 도면을 참조하여 이제 설명될 것인데, 첨부의 도면에서:
도 1은 삼차원 오브젝트를 나타내는 데이터를 생성하기 위한 예시적인 방법의 플로우차트이다;
도 2는 옥트리 구조(octree structure)를 예시하는 개략도이다;
도 3은 옥트리에 노드를 정의하기 위한 예시적인 방법의 플로우차트이다;
도 4는 적층 가공을 사용하여 오브젝트를 생성하기 위한 예시적인 방법의 플로우차트이다;
도 5는 예시적인 프로세싱 장치의 개략도이다;
도 6은 머신 판독 가능 매체와 연계한 예시적인 프로세서의 개략도이다; 그리고
도 7은 멀티레벨 옥트리 구조를 예시하는 개략도이다.
적층 가공 기법은 구축 재료의 응고를 통해 삼차원 오브젝트를 생성할 수도 있다. 몇몇 예에서, 구축 재료는, 예를 들면, 플라스틱, 세라믹 또는 금속 분말일 수도 있는 분말형 입상 재료(powder-like granular material)일 수도 있다. 생성된 오브젝트의 특성(property)은, 사용되는 구축 재료의 타입 및 응고 메커니즘의 타입에 의존할 수도 있다. 구축 재료는, 예를 들면, 인쇄 베드(print bed) 상에 퇴적될 수도 있고, 예를 들면, 제조 챔버 내에서 층 단위로 처리될 수도 있다.
몇몇 예에서, 선택적 응고는, 예를 들면, 지향성 에너지가 인가되는 곳에서 구축 재료의 응고로 나타나는 레이저 또는 전자 빔을 사용하는 에너지의 지향성 인가를 통해 달성된다.
다른 예에서, 적어도 하나의 인쇄 작용제(print agent)가 구축 재료에 선택적으로 도포될 수도 있고, 도포시 액체일 수도 있다. 예를 들면, 융제('유착제(coalescence agent)' 또는 '유착 작용제(coalescing agent)'로 또한 칭해짐)는, 생성될 삼차원 오브젝트의 슬라이스를 나타내는 데이터로부터 유도되는 패턴(이것은, 예를 들면, 구조 설계 데이터로부터 생성될 수도 있음)으로 구축 재료의 층의 부분 상으로 선택적으로 분배될 수도 있다. 융제는, 에너지(예를 들면, 열)가 층에 인가될 때 구축 재료가 유착되고 응고되어 패턴에 따라 삼차원 오브젝트의 슬라이스를 형성하도록, 에너지를 흡수하는 조성물을 가질 수도 있다. 다른 예에서, 유착은 몇몇 다른 방법으로 달성될 수도 있다. 예를 들면, 유착을 감소시키거나 또는 증가시키는 것에 의해 융제의 효과를 수정하도록 또는 오브젝트에 특정한 마무리 또는 외양을 생기게 함에 있어서 보조하도록 작용하는 유착 개질제(coalescence modifying agent)(개질제(modifying agent) 또는 장식제(detailing agent)로 또한 칭해짐)가 몇몇 예에서 인쇄 작용제로서 또한 사용될 수도 있고, 따라서 이러한 작용제는 장식제로 칭해질 수도 있다. 예를 들면, 염료 또는 착색제(colorant)를 포함하는 착색 작용제(coloring agent)가, 몇몇 예에서, 융제 또는 개질제로서, 및/또는 오브젝트에게 특정한 컬러를 제공하기 위한 인쇄 작용제로서 사용될 수도 있다.
적층 가공 시스템은 구조 설계 데이터에 기초하여 오브젝트를 생성할 수도 있다. 이것은 설계자가, 예를 들면, 컴퓨터 지원 설계(computer aided design; CAD) 애플리케이션을 사용하여, 생성될 오브젝트의 삼차원 모델을 생성하는 것을 수반할 수도 있다. 모델은 오브젝트의 입체 부분(solid portion)을 정의할 수도 있다. 적층 가공 시스템을 사용하여 모델로부터 삼차원 오브젝트를 생성하기 위해, 모델 데이터는 모델의 평행한 평면의 슬라이스를 생성하도록 프로세싱될 수 있다. 각각의 슬라이스는, 적층 가공 시스템에 의해 응고될 또는 유착되게 될 구축 재료의 각각의 층의 부분을 정의할 수도 있다.
크고 복잡한 부품을 고해상도로 모델링하는 경우, 데이터 모델은 빠르게 커질 수 있다.
도 1은, 컴퓨터 구현 방법일 수도 있는 방법의 플로우차트인데, 그 방법은, 블록(102)에서, 적층 가공에서 생성될 오브젝트일 수도 있는 오브젝트의 제1 데이터 모델을 수신하는 것을 포함한다.
몇몇 예에서, 이 데이터는 복수의 노드로서 층 단위 가공 프로세스(layer-by-layer manufacturing process)에서 가공될 오브젝트의 적어도 일부의 옥트리 표현으로서, 예를 들면, 가장 큰 볼륨('루트' 노드)을 나타내는 노드가 먼저 설명되고, 후속하여 그것의 팔분공간(octant)이 설명되고, 후속하여 그들의 팔분공간이 설명되고, 계속 그런 식으로 설명되는 고전적인 옥트리 표현으로서 제공될 수도 있다. 몇몇 예에서, 데이터는 오브젝트의 표현을, STL 파일, .OBJ 파일, DXF 파일, json 파일, 3mf 파일, vtk 파일, 또는 등등과 같은, 설계 파일로서 제공할 수도 있다. 오브젝트는 메쉬(mesh)(예를 들면, 다각형 메쉬(polygon mesh))로서, 또는 일련의 슬라이스로 표현될 수도 있다. 몇몇 예에서, 표현은, 예를 들면, 오브젝트 및/또는 주변 볼륨(예를 들면, 오브젝트를 둘러싸는 직육면체)의 각각의 '복셀(voxel)'에 대한 인쇄 재료(예를 들면, 인쇄 작용제 또는 구축 재료의 선택) 또는 적어도 하나의 속성(attribute)(예를 들면, 유무(present or absent), 컬러, 텍스쳐, 투명도, 전도도, 강도, 공극률, 탄성, 또는 등등)의 명세를 포함하는, 데이터의 인쇄 해상도 표현을 포함할 수도 있다. 복셀은, 부피가 있는 픽셀(volumetric pixel)로 생각될 수도 있고, 임의의 각각의 복셀은 인쇄 주소 지정 가능 영역(print addressable area)일 수도 있으며, 몇몇 예에서, 복셀은 장치의 인쇄 해상도에서 정의된다. 몇몇 예에서, 각각의 복셀은, 예를 들면, 정육면체 또는 동일한 사이즈를 포함하는, 동일한 형상 및/또는 사이즈이고, 반면, 다른 예에서, 복셀은 사이즈 및/또는 형상에서 상이할 수도 있다.
블록(104 및 106)은 제2 데이터 모델을 생성하는 방법을 포함한다. 블록(104)은, 오브젝트를 포함하는 볼륨의 복수의 연속적이고 중첩되지 않는 서브 볼륨(sub-volume)의 각각에 대해, 서브 볼륨을 특성 묘사하는 서브 볼륨 옥트리를 생성하는 것을 포함하고, 블록(106)은 오브젝트를 포함하는 볼륨을 특성 묘사하는 볼륨 옥트리를 생성하는 것을 포함하는데, 볼륨 옥트리는 자신의 최하위 노드(lowest node)에서 서브 볼륨 옥트리의 루트 노드를 특성 묘사한다.
볼륨 옥트리 및 서브 볼륨 옥트리의 맥락에서의 용어 '볼륨' 및 '서브 볼륨'은, 볼륨 옥트리가 주목하는 '전체' 볼륨을 설명하고 서브 볼륨 옥트리 각각이 주목하는 볼륨의 일부를 설명하기 때문에, 순전히 식별자로서 의도된다. 용어 '제1' 및 '제2' 옥트리가 대신 사용될 수 있을 것이다.
3 레벨 옥트리의 표현이 도 2에서 도시된다. 도 2에서, 루트 노드 A는 단일의 볼륨이다. 다음 레벨은 이 볼륨을 팔분공간(B1 내지 B8)으로 분할하는데, 이들의 각각은 물리적인 서브 볼륨을 나타낸다. B1, B2, B3 및 B4는, 볼륨의 하위 절반(lower half)의 사분면(quadrant)을 나타내고, 반면 B5, B6, B7 및 B8은 볼륨의 상위 절반(upper half)에 관련된다. 도 2는 또한 다음 레벨을 도시하지만, 그러나 예시의 간략화의 목적 때문에, 이것은 B1에 대해서만 도시된다. 다음 레벨은 B1을 팔분공간(C11 내지 C18)(이 표기법은, B2가 C21 내지 C28로 라벨링되는 팔분공간으로 분할될 수도 있도록, 그리고 더 일반적으로는, Bn이 Cn1 내지 Cn8로 라벨링되는 팔분공간으로 분할될 수도 있도록, 이하에서 확장됨)으로 분할하는데, 그 각각은 물리적인 서브 볼륨을 나타낸다. 다시, 이 예에서, Cn1 내지 Cn4는 각각의 Bn 볼륨(n = 1 내지 8)의 하위 절반을 나타낸다. 하기에서 추가로 설명되는 바와 같이, 각각의 노드는 오브젝트의 적어도 하나의 양태를 설명하는 데이터를 포함한다는 것이 이해될 것이다.
비록 도시되지는 않지만, 'D' 레벨 노드가 정의될 수도 있는데, 각각의 Cnm(여기서 n = 1 내지 8 및 m = 1 내지 8) 볼륨이 팔분공간으로 분할되는 것을 포함한다. 한 예에서, 각각의 D 레벨 노드는 여덟 개의 인쇄 해상도 복셀을 설명할 수도 있다. 이러한 예에서, 도 1의 블록(104)은 64 개의 서브 볼륨 옥트리를 형성하는 것을 포함할 수도 있는데, 각각은, 자신의 8 개의 서브 볼륨 및 512 개의 D 레벨 노드를 설명하는 단일의 C 노드를 포함한다. 블록(106)은, 루트 노드(8 개의 서브 볼륨을 설명하는 A), 및 여덟 개의 B 노드(각각 8 개의 서브 볼륨을 설명함, 서브 볼륨 각각은 C 노드에 대응함)를 구비하는 옥트리를 생성하는 것을 포함할 수도 있다.
이러한 방식으로, 오브젝트를 설명하는 옥트리의 두 개의 '레벨' 또는 '순서(order)'가 생성된다. 옥트리가 오브젝트를 나타내는 효과적인 방법을 제공하지만, 오브젝트가 소정의 해상도에서 설명되어야 하는 경우, 심지어 데이터 압축 기법이 사용되는 경우에도, 모델을 효과적으로 핸들링하기 위한 데이터 저장 및 프로세싱 리소스는 상당할 수도 있다. 예를 들면, 오브젝트를 설명하는 데 12 개의 옥트리 레벨이 적절할 수도 있지만, 이것은 16 Gb 미만의 RAM에서는 프로세서 속도를 느리게 할 수도 있다. 옥트리가 깊이에서 기하급수적으로 성장함에 따라, 해상도를 증가시키는 것은, 데이터를 핸들링하기 위한 프로세싱 및 저장 리소스도 또한 급격하게 증가한다는 것을 의미하고, 따라서 문제는 쉽게 확장되지 않는다.
도 1은, 체적 공간(volumetric space)이 서브 볼륨 셀의 규칙적인 그리드로 효과적으로 세분되고, 이들 셀의 각각에 대한 서브 볼륨 옥트리가 구축되는 분할 레벨 옥트리 표현(split-level octree representation)을 형성하기 위한 방법을 설명한다. 그들이 모두 구축된 경우, 글로벌 볼륨 옥트리의 최상위 레벨을 구축하기 위해 그리드는 횡단된다. 이하에서 더 상세히 설명되는 바와 같이, 옥트리는 후속하여 병합될 수도 있다.
몇몇 예에서, 오브젝트는 속성을 참조하여 설명될 수도 있다. 몇몇 예에서, 오브젝트 내의 볼륨은 다음 중 하나로서 분류될 수도 있다: (i) 전체 볼륨에 걸쳐 미리 결정된 속성을 가짐(즉, 볼륨의 모든 서브 볼륨 또는 영역이 미리 결정된 속성을 공유함), (ii) 미리 결정된 속성이 완전히 없음(즉, 볼륨의 모든 서브 볼륨 또는 영역이 미리 결정된 속성이 없음) 또는 (iii) 미리 결정된 속성을 갖는 서브 영역 및 미리 결정된 속성이 없는 서브 영역을 포함함.
하나의 예에서, 속성은, 볼륨이 오브젝트의 일부를 포함하는지의 여부일 수도 있고, 각각의 볼륨은 다음 중 하나로서 분류될 수도 있다:
(i) 전체적으로(wholly) 오브젝트 내부에 있음('블랙'으로 칭해짐)
(ii) 전체적으로 오브젝트 외부에 있음('화이트'로 칭해짐),
(iii) 볼륨의 서브 영역이 오브젝트 내부에 있고 다른 서브 영역이 외부에 있도록, 오브젝트 경계에 걸쳐 있음("그레이"로 칭해짐).
몇몇 예에서, 경계를 스캐닝하는(또는 더 일반적으로 한 속성을 갖는 서브 영역 및 그 속성이 없는 서브 영역을 포함하는) 볼륨에 대해 두 개의 가능한 카테고리가 있다: '말단 그레이(terminal grey)' 볼륨 또는 '중간 그레이(intermediate grey)' 볼륨. 말단 그레이 볼륨은, 볼륨이 인쇄 해상도 볼륨이거나, 또는 특정한 모델에 의해 인코딩되는 가장 작은 볼륨인 경우 인코딩될 수도 있다. 볼륨을 블랙 볼륨으로서 취급할지 또는 화이트 볼륨으로서 취급할지의 여부에 관한 결정이 이루어질 수도 있기 때문에 이러한 그레이 볼륨은 중간 그레이 볼륨과는 상이하게 취급될 수도 있다; 예를 들면, 실용적인 면에서, 볼륨은 오브젝트의 내부 또는 외부 중 어느 하나인 것으로 할당된다. 그러나, 이러한 말단 그레이 볼륨은 몇몇 예에서 생략될 수도 있다.
Figure pct00001
이 예에서, 볼륨의 분류는 2 비트로 표현된다: 화이트 볼륨의 경우 00, 블랙 볼륨의 경우 01, 중간 그레이 볼륨의 경우 10, 말단 그레이 볼륨의 경우 11.
각각의 노드는 자신의 서브 볼륨을 특성 묘사하는 16 비트 스트링으로서 표현될 수도 있다. 따라서, 오브젝트가, 도 2에서 도시되는 정육면체의 하위 1/4(bottom quarter)을 차지하는, 정육면체의 하위를 채우는 슬라이스를 차지하면, 'A' 노드는 4 개의 '그레이' 볼륨 및 네 개의 화이트 볼륨을 가질 것이고, 자신의 서브 볼륨의 관점에서 번호 순서에서 다음으로서 표현될 수 있을 것이거나,
B1{10}, B2{10}, B3{10}, B4{10}, B5{00}, B6{00}, B7{00}, B8{00}, 또는 다음으로서 표현될 수 있을 것이다:
[1010101000000000]
B1 노드는 상위 절반에서 화이트 볼륨을 그리고 하위 절반에서 (오브젝트에 포함되는) 블랙 볼륨을 가지며, 따라서 다음으로서 인코딩될 수 있을 것이다
[0101010100000000]
B5 볼륨은 화이트이다: 하기에서 더 설명되는 바와 같이, 몇몇 예에서, 이것은, B5 볼륨과 관련하여 얻어질 더 이상 어떠한 정보도 없기 때문에 옥트리 내에 B5 노드가 형성되지 않는다는 것을 의미할 수도 있다.
더 일반적으로, 이러한 인코딩은, 임의의 2진 속성, 예를 들면, 특정한 컬러, 전도도, 탄성, 인쇄 작용제, 또는 등등의 존재 또는 부재를 명시하기 위해 사용될 수 있을 것이다. 예를 들면, 각각의 볼륨은 '레드' 또는 '레드가 아님' 또는 '레드 서브 영역 및 레드가 아닌 서브 영역을 포함함'으로 분류될 수 있을 것이거나, 또는 '전도성 있음' 또는 '전도성 없음' 또는 '전도성이 있는 서브 영역 및 비전도성의 서브 영역을 포함함'으로서 분류될 수 있을 것이다.
몇몇 예에서, 데이터는 미리 결정된 방식으로, 예를 들면, 노드 내에서 설명되는 서브 볼륨의 위치에 기초하여 배열될 수도 있다. 예를 들면, '최하위 비트(least significant bit)', 즉 비트 스트링의 끝에 있는 비트는, 더 작은 z 좌표를 갖는 서브 볼륨에 관한 정보를 포함하고, z 좌표가 동일하면, 더 작은 x 좌표를 갖는 자식(children)이 최하위 비트를 차지하고, 및 등등이다. 다른 미리 결정된 순서가 사용될 수 있을 것이다.
2 비트 지정은 또한 노드 타입을 그레이, 블랙 또는 화이트로 식별하도록 확장될 수도 있다. 이것은, 네 개의 이러한 노드가 한 바이트를 포함하고 따라서 함께 저장될 수도 있기 때문에 유용할 수도 있다. 하기에서 명백해지는 바와 같이, 몇몇 예에서, 옥트리는 병합되거나 또는 그 일부가 추출된다. 그러나, 하기에서 주어지는 다양한 예에서, 예를 들면, 오브젝트 생성의 층 단위 성질(nature)을 고려하여 직렬화된 표현이 채택될 수도 있다. 도 2에서 예시하는 바와 같이, 각각의 해상도에서 오브젝트의 횡단 영역(transverse region)에 4 개의 노드가 있으며, 이들 노드는 임의의 데이터 프로세싱에서 함께 핸들링될 것이다.
다른 예에서, 허프만(Huffman) 인코딩과 같은 다른 인코딩이 사용될 수 있을 것이다.
볼륨 B5와 관련하여 상기에서 간략히 언급된 바와 같이, 그리고 용이하게 이해될 수 있는 바와 같이, B 레벨 볼륨이 전체적으로 오브젝트 내부에 있으면, 형성될 수도 있는 그것의 임의의 서브 노드도 또한 전체적으로 오브젝트 내부에 있을 것이다. 따라서, '그레이' 노드, 즉 한 속성을 갖는 서브 영역 및 그 속성이 없는 서브 영역을 포함하는 노드가 저장되는 경우가 있을 수도 있다. 볼륨이 화이트 또는 블랙이면, 볼륨이 선행하는 노드에서 특성 묘사되기 때문에 그것은 노드로서 저장될 필요가 없고, 이 특성 묘사는 모든 후손(descendant)에게 확장된다. 예를 들면, 볼륨의 하위 절반을 차지하는 오브젝트의 경우, 이것은, 상위 z를 갖는 4 개의 화이트 서브 볼륨 및 하위 z를 갖는 4 개의 블랙 서브 볼륨을 갖는, 단일의 노드를 갖는 하나의 레벨 옥트리에 의해 완전히 특성 묘사된다. 예를 들면, 16 비트 스트링이 루트 노드(이것은 그레이 볼륨을 설명함)를 다음으로서 특성 묘사할 수 있을 것이다: 0000000001010101. 이것은 전체 오브젝트를 완전히 나타낸다. 그러나 블랙 또는 화이트 서브 볼륨 중 하나가 대신 그레이이면, 그 서브 볼륨에 대해, 그 서브 볼륨의 서브 볼륨을 특성 묘사하는 추가적인 노드가 형성될 수 있을 것이다.
따라서, 몇몇 예에서, (블랙 및 화이트 노드 볼륨이 저장될 필요가 없기 때문에) 옥트리는 그레이 볼륨을 특성 묘사하는 노드를 포함할 수도 있고, 복셀, 또는 인쇄 해상도 레벨에서, 서브 볼륨은 블랙 또는 화이트로서 분류될 수도 있다. 다른 예에서, 그레이 노드는 (심지어 후손 노드 모두가 속성을 갖는 경우에도 또는 속성이 없는 경우에도) 세분되는 임의의 노드일 수도 있다. 블랙 또는 화이트 노드는 세분되지 않는 노드일 수도 있다.
몇몇 예에서, 서브 볼륨 옥트리는 루트 노드를 가지도록 정의될 수도 있다. 서브 볼륨이 전체적으로 일관된(예를 들면, '블랙' 또는 '화이트') 볼륨이면, 그것은, 그럼에도 불구하고, 노드로서 유지될 수도 있다. 따라서, 몇몇 예에서, 옥트리는, 완전히 일관된 볼륨을 설명할 수도 있는, 서브 볼륨 옥트리의 루트 노드의 경우를 제외하면, 상이한 카테고리의 팔분공간으로 만들어지는 노드만을 포함한다.
도 3은, 오브젝트의 옥트리 표현을 구축하기 위한 컴퓨터 구현 방법일 수도 있는, 그리고 상기의 블록(104 및 106) 중 어느 하나를 수행함에 있어서 활용될 수도 있는 방법의 한 예를 도시한다. 방법은, 더 작은 볼륨으로 시작하는, 옥트리를 구축하는 '상향식(bottom up)' 방법으로서 생각될 수도 있다.
블록(302)은 데이터 모델의 제1 사이즈의 여덟 개 볼륨의 그룹을 검사하는 것을 포함한다. 이러한 검사는 특정한 미리 결정된 속성(예를 들면, 내부, 전도성, 특정한 컬러, 등등)과 관련하여 수행될 수도 있다. 블록(304)에서, 전체 볼륨에 전반에 걸쳐 미리 결정된 속성을 공유하는 볼륨으로 그룹이 전체적으로 구성되는지가 결정된다. 만약 그렇다면, 블록(306)에서, 볼륨은, 미리 결정된 속성을 갖는 제2(더 큼, 8 배의 볼륨을 포함함) 사이즈의 볼륨을 정의하도록 병합된다. 그렇지 않다면, 블록(308)에서, 전체 볼륨에 전반에 걸쳐 미리 결정된 속성이 없는 볼륨으로 그룹이 전체적으로 구성되는지가 결정되고, 그 경우, 블록(310)은, 미리 결정된 속성이 없는 제2 사이즈의 볼륨을 정의하도록 볼륨을 병합하는 것을 포함한다. 이들 조건 중 어느 것도 참이 아니면, 그룹은 혼합된다: 제1 사이즈의 몇몇 볼륨은, 적어도 부분적으로, 속성을 가지며, 제1 사이즈의 몇몇 볼륨은, 적어도 부분적으로, 속성이 없다. 그 경우, 블록(312)은, 자신의 하위 부분(sub-portion)에서 속성을 포함하는 제2 사이즈의 볼륨을 나타내는 노드를 정의하는 것을 포함한다. 블록(306 및 310)의 각각의 병합 액션의 각각에서, 더 작은 볼륨은, 구체적으로 그에 관련되는 데이터가 유지되지 않도록 사실상 폐기될 수도 있는데, 그러한 데이터가 오브젝트에 관해 이용 가능한 정보에 기여하지 않을 것이기 때문이다. 그러나, 블록(312)에서 노드를 형성할 때, 속성을 포함하는 볼륨과 그 속성이 없는 볼륨 사이를 구별하기 위해, 제1 사이즈의 볼륨을 설명하는 데이터는 유지될 수도 있다. 예를 들면, 이 데이터는 노드를 특성 묘사하는 비트 스트링에서 반환될 수도 있는데, 비트 스트링은 상기에서 설명되는 바와 같이 16 비트 스트링일 수도 있다.
서브 볼륨 옥트리를 생성할 때, 도 3의 방법은, 선행하는 반복에서 정의되는 노드/볼륨에 의해 표현되는 볼륨을 검사하는 것 및 그 서브 볼륨을 나타내는 노드 또는 볼륨이 형성될 때까지 - 그 시점에서, 데이터는, 예를 들면, 컴퓨터 판독 가능 메모리에 저장될 수도 있음 - 새로운 노드/볼륨을 형성하는 것에 의해 반복적으로 수행될 수도 있다. 상기에서 언급되는 바와 같이, 몇몇 예에서, 가장 큰 볼륨은, 심지어 자신의 서브 볼륨 모두가 속성을 공유하는 경우에도, 또는 모든 서브 볼륨이 속성이 없는 경우에도, 그들 서브 볼륨을 특성 묘사하는 노드로서 저장된다. 서브 볼륨의 사이즈는, 메모리 및 프로세싱 성능에 기초하여 결정될 수도 있다. 예를 들면,서브 볼륨의 사이즈는, 이용 가능한 프로세싱 장치에 의해 병렬로 구축될 수 있는 서브 볼륨의 수, 또는 서브 볼륨을 저장하는 데 이용 가능한 메모리의 타입에 따라 결정될 수도 있다.
이러한 서브 볼륨 옥트리는, 데이터가 프로시져 전체에 걸쳐 반복적으로 액세스될 수도 있기 때문에, (RAM과 같은) 상대적으로 빠른 액세스 메모리에서 구축될 수도 있다. 서브 볼륨 옥트리의 깊이 레벨의 수는, 이용 가능한 리소스 및 모델 복잡성에 기초하여 결정될 수도 있다.
볼륨 옥트리를 생성할 때, 도 3의 방법은, 선행하는 반복에서 정의되는 노드/볼륨에 의해 표현되는 볼륨을 검사하는 것 및 서브 볼륨을 나타내는 노드/볼륨으로 시작하는, 그리고 몇몇 예에서 '루트 노드'가 형성될 때까지 계속되는 새로운 노드를 형성하는 것에 의해 반복적으로 수행될 수도 있다.
몇몇 예에서, 하나보다 더 많은 서브 볼륨 레벨이 있을 수도 있다. 예를 들면, 서브 볼륨 옥트리에 의해 특성 묘사되는 각각의 볼륨은 분할 레벨 옥트리에 의해 설명될 수도 있다.
옥트리를 결정하는 것은, 데이터를 직렬화하는 것을 포함할 수도 있는데, 이 경우, 이하에서 더 상세히 설명되는 바와 같이, 직렬화된 표현은, 노드가 특정한 방식으로 배열되도록 구성된다. 이것은, Z 좌표가 오브젝트의 높이에 관련되는 XYZ 공간을 고려하는 경우, XY 평면에 놓이는 층 단위로 Z 좌표가 생성되기 때문에, 'Z 우선(Z-first)' 배열(ordering)로서 생각될 수도 있다. 명백하게 되는 바와 같이, 이러한 배열은, 삼차원 오브젝트에 관련이 있는 데이터를 층 단위로 프로세싱하는 데 적합할 수도 있다.
한 예에서, 직렬화된 표현은 세 개의 규칙을 따르는데, 세 개의 규칙은 도 2에서 도시되는 3 레벨 옥트리와 관련하여 논의되고, 도 2에서 도시되는 3 레벨 옥트리는, 설명의 이 부분을 위해, 볼륨 옥트리의 또는 서브 볼륨 옥트리의 예일 수도 있다. B1, B2, B3 및 B4는 볼륨의 하위 절반의 사분면을 나타내고, 반면 B5, B6, B7 및 B8은 볼륨의 상위 절반과 관련된다는 것이 기억될 수도 있다. 마찬가지로, Cn1 내지 Cn4(n = 1 내지 8)는 각각의 B 볼륨의 하위 절반을 나타낸다.
직렬화된 표현을 저장함에 있어서 적용될 제1 규칙은, 오브젝트 생성의 의도된 순서에서 더 일찍 생성될 오브젝트의 층을 포함하는 볼륨을 나타내는 노드가, 후속하여 생성될 오브젝트의 층(들)으로 구성되는 볼륨을 나타내는 노드에 선행한다는 것이다.
도 2의 예를 취하면(그리고 모든 노드가 옥트리 내에 존재한다는 것을 가정하면), 그리고, 적층 가공에서, 오브젝트가 자신의 베이스로부터 상방으로 일반적으로 생성된다는 것에 기초하면, 한 예에서, 먼저 생성될 층은, Cn1 내지 Cn4(n = 1 내지 4)를 포함하는 하위 층이다. 노드 A와 마찬가지로, 노드 B1 내지 B4도 또한 이 층을 포함한다. 따라서, 이 규칙은 A 및 B1 내지 B4가, B5 및 B6(이들은 제1 층의 표현을 포함하지 않음)보다 먼저 나열될 것이다는 것을 의미한다. 그것은 또한, Cn1 내지 Cn4(n = 1 내지 4)가 다른 모든 C 노드보다 먼저 나열될 것이다는 것을 의미한다.
제2 규칙은, 오브젝트의 주어진 층을 포함하는 볼륨을 나타내는 노드가, 부모 노드가 후손 노드보다 먼저 나타나는 옥트리 표현 내에서의 노드의 레벨에 기초하여 배열된다는 것이다. 따라서, 제1 층의 경우, A는 B1 내지 B4 중 임의의 것보다 먼저 나열될 것이고 그 B1 내지 B4는 Cn1 내지 Cn4(n = 1 내지 4)보다 먼저 나열될 것이다.
제3 규칙은, 제1 및 제2 규칙이 적용된 이후, 즉 오브젝트의 주어진 층을 포함하는 볼륨을 나타내며 옥트리 내에서 동일한 레벨을 갖는 노드의 경우, 노드는 위치 인코딩 패턴에 따라 직렬화된다는 것이다. 예를 들면, 이것은 공간을 통해 특정한 경로를 정의할 Morton(모턴)(Z 순서(Z-order)) 코드 또는 등등일 수도 있다. 모턴 코드는, 지역성(locality)을 보존하면서 다차원 데이터를 일차원으로 매핑하는 함수의 하나의 예이다. 이 예에서, 위치 인코딩 패턴은, 따라서, B1 내지 B4의 그리고 Cn1 내지 Cn4(n = 1 내지 4)의 순서를 결정하기 위해 적용될 수도 있다.
상기에서 언급되는 바와 같이, 오브젝트의 제1 층의 경우, 이것은 A, (위치 인코딩 패턴에 따라 배열되는) B1 내지 B4, (공간 인코딩 패턴에 따라 배열되는) Cn1 내지 Cn4(n = 1 내지 4)의 순서로 나타날 것이다. 이것은 직렬화된 표현의 제1 부분을 제공한다. 표현의 용이성을 위해, 대괄호(square bracket) 및 이 부분에서 나타내어지는 위치 인코딩 패턴은 다음과 같이 요약될 수 있을 것이다:
Figure pct00002
아직 포함되지 않은 위쪽의 다음 층은 Cn5 내지 Cn8(n = 1 내지 4)을 포함한다. 그러나, 이 층은 B1 내지 B4 및 A에 의해서도 또한 표현되며, 따라서, 이 층을 나타내는 것은, 단순히, 상기의 코드 부분의 끝에 Cn1 내지 Cn4(n = 5 내지 8)를 추가하는 것을 의미하며, 이것이 규칙의 어떤 것도 위반하지 않기 때문에, 직렬화 표현을 다음과 확장시킨다:
Figure pct00003
아직 포함되지 않은 위쪽의 다음 층은 B5 내지 B8의 부분을 포함하는데, 이들은 그들의 후손 노드 이전에 포함되어야 한다. 이것은, 이 예에서, 볼륨 A에 포함되는 오브젝트의 직렬화된 표현을 다음과 같이 제공한다:
Figure pct00004
다른 레벨, 즉 "D" 레벨이 추가되면, 노드는, Z 우선 배열에 따라 그들의 대응하는 'C' 레벨 표현 이후에 삽입될 것이다.
언급된 바와 같이, 몇몇 예에서, 몇몇 노드는, 몇몇 경우에, 그들이, 모두 속성을 갖는 또는 모두 속성이 없는(그리고 서브 볼륨 옥트리의 루트 노드가 아닌) 서브 볼륨을 나타내는 경우 정의되지 않을지도 모르며, 따라서, 몇몇 노드는 상기에서 설명되는 바와 같은 표현으로부터 누락될 수도 있다.
이러한 데이터 구조는, 오브젝트의 특정한 층을 설명하는 데이터가 사슬연결되기 때문에, 삼차원 인쇄에 매우 적합하다. 이것은 레벨 순서(이것은 '폭 우선(breadth first)' 배열로 칭해질 수도 있음)로 나타내는 옥트리와 대조될 수도 있는데, 이 경우, 동일한 표기법 하에서, 오브젝트의 설명은 다음과 같을 수도 있다:
Figure pct00005
데이터의 다른 가능한 표현은, 다음과 같이 표현될 수도 있는 '깊이 우선(depth first)' 배열일 수도 있다:
Figure pct00006
이러한 표현에서, 가공될 제1 층, 즉 Cn1 내지 Cn4(n = 1 내지 4)의 설명은, 데이터 전체에 걸쳐 분산되고 데이터를 검색하는 것은 복잡하게 된다. 또한, 후속하는 논의로부터 명백해지는 바와 같이, 이러한 표현은, 하나의 층과 관련하여 검색되는 데이터가, 후속하는 층과 관련하여 데이터를 검색함에 있어서 도움이 되는 것을 허용하지 않는다.
상기의 예에서, 루트 노드 A를 나타내는 노드는 직렬화에서 먼저 배열된다.
데이터는, 데이터가 명시된 순서와 관련된다는 것을 데이터 판독기가 이해할 것이다는 의미에서 직렬화로 '배열된'다. 몇몇 예에서, 데이터는 저장 매체(예를 들면, 랜덤 액세스 저장 매체) 상에 물리적으로 분산될 수도 있다. 그러나, 데이터는, 데이터의 설명된 배열이 인코딩되는 관계를 가지도록 저장된다.
도 4는, 오브젝트의 옥트리 표현을 제공하는 방법일 수도 있는, 그리고 컴퓨터 구현 방법일 수도 있는 방법의 한 예이다.
블록(402)은, 이 예에서는 상기에서 설명되는 "Z 우선" 직렬화 표현을 사용하여, 복수의 서브 볼륨 옥트리를 형성하는 것을 포함하고, 각각의 서브 볼륨 옥트리는, 블록(404)에서, 데이터 오브젝트로서 머신 판독 가능 매체에 독립적으로 저장된다. 블록(406)은 (또한 직렬화된 표현을 사용하여) 볼륨 옥트리를 형성하는 것을 포함하고, 블록(408)은, 볼륨 옥트리를 데이터 오브젝트로서 머신 판독 가능 매체에 저장하는 동안, 각각의 서브 볼륨 옥트리를 볼륨 옥트리에 삽입하는 것에 의해 볼륨 옥트리 및 서브 볼륨 옥트리를 병합하는 것을 포함한다. 병합은, 단순히, 볼륨 옥트리의 최종 노드 사이에, 서브 볼륨 옥트리의 루트 노드, 및 그 임의의 후손 노드를 삽입하는 것에 의해 수행될 수 있다. 이러한 병합된 직렬화된 표현은, 상기에서 설명되는 'Z 우선' 순서에도 또한 적합할 것이다.
한 예에서, 병합된 옥트리에 약 10 내지 14 개의 깊이 레벨이 존재할 수도 있다. 옥트리의 14 번째 깊이 레벨이 완료되면(즉, 옥트리가 그 깊이 레벨에서 모든 가능한 노드를 포함하면), 이것은, 약 5×1012 개의 노드가 저장될 것이다는 것을 의미한다. 그러한 옥트리를 구축할 때, 데이터 저장 명세(data storage specification)가 너무 높지 않는 한, 메모리 내 표현은 실용적이다.
옥트리 노드가 16 비트(2 바이트)를 포함하는 경우, 전술한 예는 (214)3 * 2 바이트 = 8796 GB의 RAM을 필요로 할 것인데, 이것은 상당한 컴퓨팅 리소스를 나타낸다.
16 비트 노드가 상기에서 설명되었지만, 노드의 구조를 정의하기 위해 포인터가 사용될 수도 있는데, 이것은, 실제로는, 노드가 약 34 바이트일 수 있다는 것을 의미한다. 또한, 설명되는 16 비트 노드는 단지 하나의 특성을 인코딩한다. 오브젝트의 데이터 모델은 다수의 특성을 가질 수도 있고, 따라서, 실제로는, 리소스 명세는 상당히 더 높을 수도 있다.
따라서, 심지어 상대적으로 간단한 오브젝트도 저장 및 프로세싱하는 데 상당한 양의 데이터로 나타날 수도 있고, 이것은 현재 보통 쉽게 액세스 가능한 하드웨어의 범위를 벗어날 수 있고, '기성의(off-the-shelf)' 프로세싱 리소스 명세를 초과할 수도 있다. 이러한 예에서, 멀티레벨 접근법이 메모리 내 프로세싱을 위한 프로세싱 리소스 명세를 완화할 수도 있다.
예를 들면, 처음 6 개 레벨이 볼륨 옥트리로 표현되고 64×64×64 개의 서브 볼륨 옥트리가 정의되도록 옥트리가 분할되면, 각각의 옥트리는 약 20×106 개의 노드를 포함할 것인데, 이것은 '코어 내(in core)'에서, 즉 RAM 내에서, 또는 이용 가능한 고속 메모리 리소스 내에서 효율적으로 핸들링될 수도 있다.
블록(410)은, 적층 가공에서 생성될 복수의 층의 각각의 데이터 표현을 제공하기 위해 제2 데이터로부터 데이터를 추출하는 것을 포함하고, 블록(412)은 데이터 표현에 기초하여 오브젝트를 생성하는 것을 포함한다.
Z 우선 순서는, 블록(412)에서, 오브젝트 생성을 위한 효율적인 데이터 추출을 허용할 수도 있다. 몇몇 예에서, 직렬화된 데이터는 메모리에 저장될 수도 있고, 그 일부는, 오브젝트를 생성하기 위한 제어 명령어를 결정하기 위한 프로세싱을 수행하기 위해(예를 들면, 구축 재료 및/또는 인쇄 작용제가 배치될 수도 있는 곳, 사용할 재료/작용제의 종류, 온도, 등등과 같은 사용될 수도 있는 파라미터의 종류를 명시하는 명령어를 결정하기 위해) 검색될 수도 있다.
한 예를 고려하면, 오브젝트의 최하위 층을 생성하기 위해, 제1 층의 적어도 일부를 포함하는 모든 노드를 나타내는 데이터가 직렬화된 표현으로부터 추출될 수도 있다. 이 논의의 목적을 위해, 이 예에서, 제1 층은 하위 C 노드에 대응하고 제2 층은 상위 C 노드에 대응하지만, 다른 예에서, 이들 노드의 각각은 하나보다 더 많은 층을 나타내는 서브 볼륨으로 분할될 수도 있다.
도 2의 예를 고려하면, 오브젝트의 최하위 층의 일부를 포함하는 모든 노드는 단일의 스트링으로 배열되는데, 이것은 다음과 같이 표현될 수도 있다:
Figure pct00007
이 표현은 모든 'C 레벨' 노드가 옥트리에 포함된다는 것을 가정한다. B 노드 중 하나가 그것의 서브 볼륨이 고려 중에 있는 속성의 관점에서 동질성이다는 것을 나타낼 수도 있고, 따라서, 그 서브 볼륨에 대응하는 C 레벨 노드가 존재하지 않을 수도 있기 때문에, 이것은 사실이 아닐 수도 있다.
제1 층의 표현이 추출된 데이터로부터 결정될 수도 있다. 예를 들면, 이것은, 자신의 다수의 서브 볼륨의 각각에 관한 정보를 제공하는 노드 [Cn1-Cn4]n=1-4를 추출하는 것을 포함할 수도 있다. C 노드 중 임의의 것이 정의되지 않으면, 제1 층의 표현을 결정하는 것은, 더 높은 레벨, 즉, 이 예에서는, B 또는 A 노드인 노드의 콘텐츠를 고려하는 것을 포함할 수도 있다. 몇몇 예에서, 제1 층의 결정된 표현은 오브젝트 생성 해상도에 있을 수도 있다. 말단 그레이 볼륨을 포함하는 예에서, 제1 층의 표현을 결정하는 것은, 각각의 볼륨을 블랙 또는 화이트 볼륨으로서 할당하는 것을 포함할 수도 있다. 몇몇 예에서, 제1 층의 표현은, 적층 가공 장치에 대한 제어 명령어를 생성하기 위한 입력으로서 사용될 수도 있다. 예를 들면, 오브젝트 내부에 있는 것으로서의 볼륨의 특성 묘사는, 그 볼륨에 대응하는 물리적 위치에서 융제를 배치하기 위한 명령어로 나타날 수도 있다. 오브젝트에 대해 전체적으로 외부에 있는 것으로서의 볼륨의 특성 묘사는, 그 볼륨에 대응하는 물리적 위치에서 어떠한 융제도 배치하지 않기 위한, 또는 장식제를 배치하기 위한 명령어로 나타날 수도 있다.
몇몇 예에서, 제어 명령어는, 적층 가공 장치에 의해 오브젝트를, 그리고 제1 층의 표현을 사용하여 오브젝트 층을 생성하기 위해 사용될 수도 있다.
추출된 데이터 및 추출된 데이터에 포함되지 않는 직렬화된 표현에서의 데이터의 위치를 나타내는 인덱스를 포함하는 데이터 블록이 메모리에 저장될 수도 있다. 이 데이터 블록은, 예를 들면, (다른 것들 중에서도) C 프로그래밍 언어에서 사용되는 용어로서의 'struc'를 포함할 수도 있다. 인덱스는, 직렬화된 데이터에서의 마지막으로 추출된 노드, 또는 제1 '추출되지 않은' 노드를 나타내는 포인터를 포함할 수도 있다.
이러한 데이터 블록이 오브젝트의 직렬화된 표현과 비교되는 경우 상대적으로 작을 수도 있기 때문에, 그것은, 실용적인 관점에서, 더 느린 메모리 리소스(예를 들면, '코어 외(off-core)' 또는 솔리드 스테이트 메모리)와는 대조적으로, 상대적으로 빠른 코어 내(in-core), 또는 프로세서 메모리에서 유지될 수도 있다.
그 다음, 층 단위 가공 프로세스에서 생성될 오브젝트의 제2 층의 데이터 표현이 생성될 수도 있다. 예를 들면, 이것은 제1 층 바로 다음에 생성될 층일 수도 있거나(즉, 제2 층이 물리적으로 생성된 오브젝트의 제1 층 바로 위에 놓일 것이다), 또는 후속하는 층일 수도 있다. C 레벨 노드가 하나보다 더 많은 층을 나타내는 예에서, 이러한 층을 생성하기 위한 데이터는 이미 추출된 데이터 내에 포함될 수도 있고, 따라서 이 방법은 적절한 후속 층에 대해 수행될 수도 있다. 그러나, 이 예에서, 제2 층은 상위 C 노드에 대응한다.
이것은 데이터 블록에 먼저 액세스하는 것에 의해 생성될 수도 있다. 상기에서 언급되는 바와 같이, 이 데이터 블록은, 몇몇 예에서, 그것이 상대적으로 작기 때문에, 로컬의, "코어 내" 또는 고속 메모리에 유지될 수도 있다. 이것은, 큰 데이터 파일의 경우 상당할 수 있는 메모리 액세스 지연의 감소로 나타날 수 있을 것이다. 제2 층의 어떠한 부분도 나타내지 않는 임의의 노드를 나타내는 데이터는 폐기될 수도 있다. 이 예에서, 이것은 데이터를 남긴다:
Figure pct00008
인덱스는 직렬화된 데이터에서 시작 위치를 결정하기 위해 사용될 수도 있다. 이 예에서, 인덱스는, 이 예에서 하기의 위치 "Loc"인, 마지막으로 판독된 직렬화된 데이터에서의 위치에 대한 포인터일 수도 있다. 실제로, 이것은 추출된 데이터 부분의 끝에 대한, 또는 추출되지 않은 후속 데이터의 시작에 대한 포인터일 수도 있다.
Figure pct00009
제2 층의 적어도 일부를 나타내는 그리고 시작 위치 이후 나타나는 모든 노드를 나타내는 데이터는, 직렬화된 표현으로부터 추출될 수도 있다. 이것은, 데이터 블록으로부터의 유지된 데이터와 함께, 제2 층의 표현을 생성하기 위해 사용될 수도 있다. 이 예에서, 그것이 기초로 하는 데이터는 다음과 같다:
Figure pct00010
(상기에서 언급되는 바와 같이, 이것은 B 및 C 노드가 존재하는 경우이다).
그 다음, 제2 층의 표현을 사용하여 오브젝트 층이 생성될 수도 있고, 한편, 제1 데이터 블록으로부터 유지되는 데이터 및 제2 층에 대해 추출되는 데이터를 포함하는 업데이트된 데이터 블록이, 새로운 위치에 대한 포인터와 함께, 메모리에 저장된다. 이 예에서, 포인터는 *Loc*로서 나타내어지는 위치에 대한 포인터일 것이다.
Figure pct00011
이 프로세스는, 최종 층에 관련이 있는 데이터가 검색될 때까지 업데이트된 데이터 블록이 생성되어 다음 층에 대해 사용되면서, 가공의 의도된 순서대로 층 단위로 반복적으로 수행될 수도 있다. 이 예에서, 위쪽의 다음 층은, B1 내지 B4가 아닌 영역 B5 내지 B8에 있고, 따라서, 폐기될 데이터는 이전 데이터 블록으로부터 단지 노드 A를 남길 것이고, 추출될 다음 데이터 스트링은
Figure pct00012
을 포함할 것이다.
상기에서 논의된 바와 같이, 데이터 블록은 코어 내, 또는 상대적으로 고속 메모리 리소스(예를 들면, 로컬 RAM)에 유지될 수도 있고 상대적 효율성을 가지고 액세스될 수도 있다. 직렬화된 표현은, 솔리드 스테이트 메모리 리소스와 같은 "코어 외" 고용량 메모리 리소스에 유지될 수도 있다. 데이터 액세스 시간 관점에서 상대적으로 느릴 수도 있는 이러한 고용량 메모리에 대한 데이터 추출 작업은, 층을 생성하기 위한 프로세싱 전반에 걸쳐 효과적으로 분산된다. 상기의 예에서, 방법은 오브젝트 생성 동안 수행되는데, 이 경우, 그것은, 과도하게 길지 않은 실질적으로 일정한 층 프로세싱 시간을 제공하는 데 기여할 수도 있다. 후속 층에 대한 데이터 프로세싱은, 선행하는 층의 생성이 진행되는 동안 수행될 수도 있다.
층 프로세싱 시간의 영향을 고려하기 위해, 예시적인 적층 가공 프로세스는 다양한 프로세스를 수반할 수도 있다. 구축 재료의 층은 인쇄 베드, 또는 구축 플랫폼(build platform) 상에 형성될 수도 있다. 구축 재료의 층은, 예를 들면, 구축 재료 분배기(build material distributor)를 사용하여 형성될 수도 있는데, 구축 재료 분배기는 구축 재료를 의도된 두께로 인쇄 베드 상으로 퇴적 및 도포할 수도 있다.
구축 재료의 층은, 예를 들면, 적외선 램프와 같은 방사선 소스(radiation source)를 사용하여, 또는 몇몇 다른 수단에 의해 예열될 수도 있다. 인쇄 작용제는, 작용제 배포기에 의해 구축 재료의 층 상으로 배포될 수도 있다. 융제가 적용된 구축 재료의 부분의 유착 및 응고를 야기하기 위해, 에너지, 예를 들면, 하나의 정착 램프(fusing lamp)로부터의 또는 다수의 정착 램프로부터의 열이 구축 재료의 층에 인가될 수도 있다. 추가적인 예에서, 구축 재료의 층은 정착 및 냉각되는 것이 허용될 수도 있다.
예시적인 적층 가공 프로세스를 참조하여 상기에서 설명되는 프로세스는, 생성될 다층 오브젝트의 각각의 층에 대해 반복될 수도 있는 층 프로세싱 사이클의 일부를 형성할 수도 있다. 층 프로세싱 사이클, 또는 층 생성 사이클은, 구축될 삼차원 오브젝트의 슬라이스를 형성하기 위해 구축 재료의 단일의 층에 대해 수행되는 프로세스의 세트를 포함하는 것으로 간주될 수도 있고, 구축 재료의 단일의 층에 대해 프로세스의 세트를 수행할 시간은 층 프로세싱 시간, 또는 층 생성 시간인 것으로 간주될 수도 있다. 이것은, 오브젝트의 표현으로부터 추출되는 데이터에 기초할 수도 있는, 예를 들면 인쇄 작용제의 배치, 온도 또는 등등을 명시하는, 층을 형성함에 있어서 사용될 명령어를 생성하기 위한 프로세싱 시간을 포함할 수도 있다.
층 프로세싱 시간은, 생성될 오브젝트의 모든 층에 대해 동일하거나 또는 대략 동일하다는 것이 의도될 수도 있다. 즉, 적층 가공 프로세스에서 각각의 층에 대한 층 프로세싱 시간은 대략 일정하거나 또는 고정될 수도 있다. 여기서, 표현 "동일"은, 정확하게 동일한 것 또는 대략적으로 동일한 것을 의미하도록 의도된다.
생성될 오브젝트의 모든 층에 대해 일정한 또는 대략적으로 일정한 층 프로세싱 시간을 유지하는 것은, 오브젝트가 일관된 층을 가지고 생성되는 것을 보장하는 데 도움이 된다.
설명되는 직렬화된 방식으로 데이터를 저장하는 것에 의해, 그것의 검색은 데이터 프로세싱 전체에 걸쳐 효율적으로 '분할 상환될(amortized)' 수도 있고, 과도하게 길지 않은 일정한 층 프로세싱 시간이 더욱 쉽게 달성될 수도 있다. 몇몇 경우에, 후속 층의 프로세싱은, 선행하는 층의 생성이 진행 중인 동안, 시작할 수도 있다.
도 5는, 프로세서(502), 코어 외 메모리(off-core memory)(504) 및 코어 내 메모리(in-core memory)(506)를 포함하는 컴퓨터 시스템의 개략적인 표현을 도시한다. 코어 외 메모리(504) 및 코어 내 메모리(506)는, 각각, '원격' 및 '로컬' 메모리를 포함할 수도 있는데, 여기서 이들 용어는 프로세서에 대한 데이터 검색의 관점에서 이해되어야 한다: 코어 내 메모리(506)는 코어 외 메모리(504)보다 더욱 신속하게 액세스될 수도 있다. 코어 외 메모리(504)는, 예를 들면, 데이터의 효율적인 대량 저장을 위해 구성될 수도 있고, 반면, 코어 내 메모리는 실질적으로 요구에 따라 데이터를 제공하도록 구성될 수도 있다. 이를 위해, 메모리(504, 506)는 상이한 타입을 가질 수도 있다. 예를 들면, 코어 외 메모리(504)는 솔리드 스테이트 메모리, 예를 들면 하드 디스크 드라이브(Hard Disk Drive; HDD) 또는 솔리드 스테이트 드라이브(Solid State Drive; SSD)를 포함할 수도 있고, 반면, 코어 내 메모리는 랜덤 액세스 메모리(random access memory; RAM)를 포함할 수도 있다. 다른 예에서, 코어 외 메모리(504)는 리드 온리 메모리(read-only memory)를 포함할 수도 있다.
몇몇 예에서, 코어 내 메모리(506)는 (더 짧은 신호 경로를 허용하기 위해) 프로세서(502)에 물리적으로 더 가까울 수도 있고, 코어 외 메모리(504)보다 물리적으로 더 작을 수도 있다. 몇몇 예에서, 프로세서(502)는, 근거리 통신망(Local Area Network), 광역 통신망(Wide Area Network), 또는 인터넷과 같은 컴퓨터 네트워크를 통해 코어 외 메모리(504)에 연결될 수도 있고, 반면, 코어 내 메모리는 프로세서(502)를 포함하는 장치 내에 또는 근처에 배열될 수도 있다. 몇몇 예에서, 코어 내 메모리(502)는 프로세서와 동일한 칩 또는 다이 상에 제공될 수도 있거나, 또는 프로세서는 '메모리 내 프로세싱(processing in memory)' 프로세서일 수도 있다. 몇몇 예에서, 메모리(504, 506)는 실질적으로 병치될(co-located) 수 있을 것이다.
몇몇 예에서, 직렬화된 데이터는 코어 외 메모리(504)에 저장될 수도 있고, 특정한 층에 관련이 있는 데이터의 일부만을 포함하는 데이터 블록은 코어 내 메모리(506)에 저장될 수도 있다. 일단 제1 층에 대한 데이터 블록이 공식화되면, 제2 층에 관련이 있는 적어도 몇몇 데이터는 코어 외 메모리(504)로부터 이미 검색되었다는 것이 주목될 수도 있다. 데이터의 상대적으로 느린 검색은 데이터 검색 및 프로세싱 전체에 걸쳐 (그리고 몇몇 예에서는, 오브젝트 생성 연습 전체에 걸쳐) 확산된다. 몇몇 예에서, 서브 볼륨 옥트리는 코어 내 메모리(506)에 형성될 수도 있다.
도 6은 머신 판독 가능 매체(602) 및 프로세서(604)를 도시한다. 머신 판독 가능 매체(602)는, 프로세서에 의해 실행될 때, 프로세서로 하여금 층 단위 가공에서 생성될 오브젝트를 나타내는 데이터 모델을 생성하게 하는 명령어를 포함한다.
명령어는, 제1 사이즈의 여덟 개 볼륨의 그룹을 검사하는 것, 및, 각각의 그룹에 대해, 다음의 것을 하는 것에 의해, 층 단위 가공에서 생성될 오브젝트를 나타내는 복수의 제1 데이터 모델을 생성하기 위한 명령어를 포함한다: (i) 그룹이 미리 결정된 속성을 공유하는 볼륨으로 구성되는 경우, 미리 결정된 속성을 갖는 제2 사이즈의 볼륨을 정의하도록 볼륨을 병합하는 것; 그렇지 않고, (ii) 그룹이 미리 결정된 속성이 없는 볼륨으로 구성되는 경우, 미리 결정된 속성이 없는 제2 사이즈의 볼륨을 정의하도록 볼륨을 병합하는 것, 및 그렇지 않으면, (iii) 자신의 하위 부분에서 속성을 포함하는 제2 사이즈의 볼륨을 나타내는 노드를 정의하는 것. 몇몇 예에서, 명령어는 도 3의 방법을 수행하기 위한 명령어를 포함할 수도 있다.
명령어는, 형성된 노드의 표현을 포함하는 데이터 세트가 임계 사이즈에 도달할 때까지 선행하는 반복에서 정의되는 노드/볼륨에 의해 표현되는 볼륨을 검사하는 것에 기초하여 노드/볼륨의 형성이 반복적으로 수행되도록 하는 그러한 것일 수도 있다. 몇몇 예에서, 노드가 이전에 식별되지 않은 경우, 가장 큰 볼륨은 어느 경우든 노드로서 인코딩될 수도 있다.
명령어는, 프로세서(604)로 하여금 복수의 제1 데이터 모델을 (예를 들면, 메모리에) 저장하게 하고 제2 데이터 모델을 생성하게 하는 명령어를 더 포함할 수도 있는데, 제2 데이터 모델을 생성하는 것은, 노드/제1 데이터 모델을 생성함에 있어서 형성되는 가장 큰 볼륨을 나타내는 노드/볼륨으로부터 시작하여, 제1 사이즈의 여덟 개 볼륨의 그룹을 검사하는 것, 및, 각각의 그룹에 대해, (i) 그룹이 미리 결정된 속성을 공유하는 볼륨으로 구성되는 경우, 미리 결정된 속성을 갖는 제2 사이즈의 볼륨을 정의하도록 볼륨을 병합하는 것, 그렇지 않고, (ii) 그룹이 미리 결정된 속성이 없는 볼륨으로 구성되는 경우, 미리 결정된 속성이 없는 제2 사이즈의 볼륨을 정의하도록 볼륨을 병합하는 것, 및 그렇지 않으면, (iii) 자신의 하위 부분에서 속성을 포함하는 제2 사이즈의 볼륨을 나타내는 노드를 정의하는 것을 포함한다. 노드/볼륨의 형성은, 단일의 노드가 오브젝트를 포함하는 볼륨을 나타낼 때까지 선행하는 반복에서 정의되는 노드/볼륨에 의해 표현되는 볼륨을 검사하는 것에 기초하여 반복적으로 수행될 수도 있다.
머신 판독 가능 매체(602)는, 프로세서(604)에 의해 실행될 때, 프로세서(604)로 하여금, 예를 들면, 도 4와 관련하여 설명되는 바와 같이, 복수의 제1 데이터 모델을 제2 데이터 모델에 인터리빙하는 것에 의해 제1 및 제2 데이터 모델을 병합하게 하는 명령어를 더 포함할 수도 있다.
머신 판독 가능 매체(602)는, 프로세서(604)에 의해 실행될 때, 프로세서(604)로 하여금, 각각의 데이터 모델에서, 다음과 같이 되도록, 제1 및 제2 데이터 모델을 생성하게 하는 명령어를 더 포함할 수도 있다:
(i) 오브젝트 생성의 의도된 순서에서 더 일찍 생성될 오브젝트의 층을 포함하는 볼륨을 나타내는 노드가, 후속하여 생성될 오브젝트의 층(들)으로 구성되는 볼륨을 나타내는 노드에 선행하도록;
(ii) 오브젝트의 주어진 층을 포함하는 볼륨을 나타내는 노드의 경우, 더 거친 체적 해상도(volumetric resolution)의 노드가 더 미세한 체적 해상도의 노드에 선행하도록; 그리고
(iii) 주어진 층을 포함하는 볼륨을 나타내며 동일한 해상도를 갖는 노드가 미리 결정된 위치 인코딩 패턴에 따라 직렬화되도록.
다시 말하면, 데이터 모델은 각각 상기에서 설명되는 바와 같은 "Z 우선" 데이터 모델을 포함할 수도 있다.
도 7은, 층 단위 가공 프로세스에서 가공될 오브젝트의 적어도 일부의 표현을 나타내는데, 그 표현은: 제1 해상도 및 제2 해상도 사이의 오브젝트의 체적 해상도(이 예에서는, 세 개의 체적 해상도)에 걸쳐 있는 제1 복수의 노드를 갖는 옥트리(702)를 나타내는 데이터 및 제3 해상도 및 제4 해상도 사이의 오브젝트의 체적 해상도(이 예에서는, 추가적인 두 개의 체적 해상도)에 걸쳐 있는 제2 복수의 노드를 갖는 복수의 옥트리(704a-n)의 각각을 나타내는 데이터를 포함한다. 옥트리(702)는, 제2 복수의 노드가 관련되는 최대 64 개의 옥트리(704a-n)를 구비할 수도 있다는 것이 인식될 것이다. 제1 해상도와 제2 해상도 사이의 오브젝트의 체적 해상도에 걸쳐 있는 노드를 갖는 옥트리(702)는 볼륨 옥트리를 포함할 수도 있고, 제3 해상도와 제4 해상도 사이의 오브젝트의 체적 해상도에 걸쳐 있는 노드를 갖는 옥트리(704)는 서브 볼륨 옥트리를 포함할 수도 있다.
각각의 옥트리(702, 704)의 직렬화된 표현 내에서, 노드는, 오브젝트 생성의 의도된 순서에서 더 일찍 생성될 오브젝트의 층을 포함하는 볼륨을 나타내는 노드가, 후속하여 생성될 오브젝트의 층(들)으로 구성되는 볼륨을 나타내는 노드에 선행하도록, 오브젝트의 주어진 층을 포함하는 볼륨을 나타내는 노드의 경우, 더 거친 체적 해상도의 노드가 더 미세한 체적 해상도의 노드에 선행하도록, 그리고 주어진 층을 포함하는 볼륨을 나타내며 동일한 해상도를 갖는 노드가 미리 결정된 위치 인코딩 패턴에 따라 직렬화되도록(즉, 데이터가 상기에서 설명되는 바와 같이 'Z 우선' 순서에 따라 배열되도록), 배열될 수도 있다. 이러한 데이터 구조는, 상기에서 설명되는 바와 같이, 적층 가공 프로세스에서 '분할 상환된' 데이터 검색에 적합하다.
몇몇 예에서, 옥트리의 각각의 노드는 미리 결정된 공통 길이의 비트 스트링에 의해 표현되고, 복수의 서브 볼륨을 다음 중 하나로서 분류한다:
(i) 서브 볼륨 전체에 걸쳐 일관된 미리 결정된 속성을 갖는 것,
(ii) 서브 볼륨 전체에 걸쳐 미리 결정된 속성이 없는 것
(iii) 서브 볼륨의 하위 부분에서 미리 결정된 속성을 갖는 것.
본 개시의 예는, 소프트웨어, 하드웨어, 펌웨어 또는 등등의 임의의 조합과 같은, 방법, 시스템 또는 머신 판독 가능 명령어로서 제공될 수 있다. 이러한 머신 판독 가능 명령어는, 안에 또는 상에 컴퓨터 판독 가능 프로그램 코드를 구비하는 (디스크 스토리지, CD-ROM, 광학 스토리지, 등등을 포함하는 그러나 이들로 제한되지는 않는) 컴퓨터 판독 가능 저장 매체에 포함될 수도 있다.
본 개시는, 본 개시의 예에 따른 방법, 디바이스 및 시스템의 플로우차트 및/또는 블록도를 참조하여 설명된다. 비록 상기에서 설명되는 흐름도가 실행의 특정한 순서를 나타내지만, 실행의 순서는 묘사되는 순서와는 상이할 수도 있고, 적어도 몇몇 프로세스는 병렬로 수행될 수도 있다. 하나의 플로우차트와 관련하여 설명되는 블록은, 다른 플로우차트의 것과 결합될 수도 있다. 플로우차트에서의 적어도 몇몇 흐름뿐만 아니라, 플로우차트 및/또는 블록도에서의 흐름 및/또는 다이어그램의 조합은, 머신 판독 가능 명령어에 의해 실현될 수 있다는 것이 이해될 수 있을 것이다.
머신 판독 가능 명령어는, 예를 들면, 범용 컴퓨터, 특수 목적 컴퓨터, 임베딩된 프로세서 또는 다른 프로그래밍 가능한 데이터 프로세싱 디바이스의 프로세서에 의해 실행되어, 설명 및 다이어그램에서 설명되는 기능을 실현할 수도 있다. 특히, 프로세서 또는 프로세싱 장치는 머신 판독 가능 명령어를 실행할 수도 있다. 따라서, 장치 및 디바이스의 기능 모듈은, 메모리에 저장되는 머신 판독 가능 명령어를 실행하는 프로세서, 또는 논리 회로부(logic circuitry)에 임베딩되는 명령어에 따라 동작하는 프로세서에 의해 구현될 수도 있다. 용어 '프로세서'는, CPU, 프로세싱 유닛, ASIC, 논리 유닛, 또는 프로그래밍 가능한 게이트 어레이 등등을 포함하도록 광범위하게 해석되어야 한다. 방법 및 기능적 모듈은 모두 단일의 프로세서에 의해 수행될 수도 있거나 또는 여러 개의 프로세서 사이에서 분할될 수도 있다.
특정한 모드에서 동작하도록 컴퓨터 또는 다른 프로그래밍 가능한 데이터 프로세싱 디바이스를 안내할 수 있는 이러한 머신 판독 가능 명령어는 또한, 컴퓨터 판독 가능 스토리지에 저장될 수도 있다.
이러한 머신 판독 가능 명령어는 또한 컴퓨터 또는 다른 프로그래밍 가능한 데이터 프로세싱 디바이스 상으로 로딩될 수도 있고, 그 결과, 컴퓨터 또는 다른 프로그래밍 가능한 데이터 프로세싱 디바이스는 일련의 동작을 수행하여 컴퓨터 구현 프로세싱을 생성하고, 따라서, 컴퓨터 또는 다른 프로그래밍 가능한 디바이스 상에서 실행되는 명령어는 플로우차트에서의 흐름(들)에 의해 명시되는 기능을 실현한다.
또한, 본원에서의 교시는 컴퓨터 소프트웨어 제품의 형태로 구현될 수도 있는데, 컴퓨터 소프트웨어 제품은 저장 매체에 저장되고, 컴퓨터 디바이스가 본 개시의 예에서 기재되는 방법을 구현하게 만들기 위한 복수의 명령어를 포함한다.
방법, 장치 및 관련 양태가 소정의 예를 참조하여 설명되었지만, 본 개시의 사상을 벗어나지 않으면서 다양한 수정, 변경, 생략, 및 대체가 이루어질 수 있다. 따라서, 방법, 장치 및 관련 양태는, 하기의 청구항 및 그들의 균등물의 범위에 의해서만 제한되어야 한다는 것이 의도된다. 상기 언급된 예는 본원에서 설명되는 것을 제한하기보다는 예시하며, 기술 분야의 숙련된 자는 첨부된 청구항의 범위를 벗어나지 않으면서 많은 대안적인 구현예를 설계할 수 있을 것이다는 것을 유의해야 한다. 하나의 예와 관련하여 설명되는 피쳐는 다른 예의 피쳐와 결합될 수도 있다.
단어 "포함하는(comprising)"은, 청구범위에서 나열되는 것 이외의 엘리먼트의 존재를 배제하지는 않으며, "a(한)"또는 "an(한)"은 복수를 배제하지 않으며, 단일의 프로세서 또는 다른 유닛이 청구항에서 기재되는 여러 개의 유닛의 기능을 수행할 수도 있다.
임의의 종속 청구항의 피쳐는, 독립 청구항 또는 다른 종속 청구항 중 임의의 것의 피쳐와 결합될 수도 있다.

Claims (15)

  1. 방법으로서,
    프로세서에서, 오브젝트의 제1 데이터 모델을 수신하는 단계와,
    상기 프로세서를 사용하여, 제2 데이터 모델을 생성하는 단계를 포함하되, 상기 제2 데이터 모델을 생성하는 단계는:
    상기 오브젝트를 포함하는 볼륨의 복수의 연속적이고 중첩되지 않는 서브 볼륨의 각각에 대해, 상기 서브 볼륨을 특성 묘사하며(characterising) 루트 노드를 구비하는 서브 볼륨 옥트리(sub-volume octree)를 생성하는 단계와,
    상기 오브젝트를 포함하는 상기 볼륨을 특성 묘사하는 볼륨 옥트리(volume octree) - 상기 볼륨 옥트리는 자신의 최하위 노드(lowest node)에서 상기 서브 볼륨 옥트리의 상기 루트 노드를 특성 묘사함 - 를 생성하는 단계를 포함하는
    방법.
  2. 제1항에 있어서,
    옥트리를 생성하는 단계는:
    상기 데이터 모델에서 제1 사이즈의 여덟 개 볼륨의 그룹을 검사하는 단계와,
    각각의 그룹에 대해:
    상기 그룹이 미리 결정된 속성을 공유하는 볼륨으로 구성되는 경우, 상기 미리 결정된 속성을 갖는 제2 사이즈의 볼륨을 정의하도록 상기 볼륨을 병합하는 단계와,
    그렇지 않고, 상기 그룹이 상기 미리 결정된 속성이 없는 볼륨으로 구성되는 경우, 상기 미리 결정된 속성이 없는 상기 제2 사이즈의 볼륨을 정의하도록 상기 볼륨을 병합하는 단계와,
    그렇지 않으면, 자신의 하위 부분(sub-portion)에서 상기 속성을 포함하는 상기 제2 사이즈의 볼륨을 나타내는 노드를 정의하는 단계를 포함하는
    방법.
  3. 제2항에 있어서,
    상기 속성은 상기 볼륨이 상기 오브젝트에 대해 완전히 내부에 있는지의 여부의 표시를 포함하는
    방법.
  4. 제2항에 있어서,
    서브 볼륨 옥트리를 생성하는 단계는, 선행하는 반복에서 정의되는 노드 및/또는 볼륨에 의해 표현되는 볼륨을 검사하는 단계 및 루트 노드 또는 볼륨이 정의될 때까지 새로운 노드 및/또는 볼륨을 정의하는 단계를 포함하는
    방법.
  5. 제4항에 있어서,
    적어도 하나의 서브 볼륨 옥트리를 저장하는 단계를 더 포함하는
    방법.
  6. 제4항에 있어서,
    상기 볼륨 옥트리를 생성하는 단계는, 상기 서브 볼륨 옥트리의 루트 노드 및/또는 볼륨으로부터 시작하여, 선행하는 반복에서 정의되는 노드 및/또는 볼륨에 의해 표현되는 볼륨을 반복적으로 검사하는 단계를 포함하는
    방법.
  7. 제1항에 있어서,
    옥트리를 생성하는 단계는, 상기 오브젝트의 상기 직렬화된 옥트리 표현에서,
    (i) 오브젝트 생성의 의도된 순서에서 더 일찍 생성될 상기 오브젝트의 층을 포함하는 볼륨을 나타내는 노드가, 후속하여 생성될 상기 오브젝트의 층(들)으로 구성되는 볼륨을 나타내는 노드에 선행하고,
    (iii) 상기 오브젝트의 주어진 층을 포함하는 볼륨을 나타내는 노드가 상기 옥트리 - 상기 옥트리 내에서, 부모 노드는 후손 노드보다 먼저 나타남 - 내에서의 상기 노드의 레벨에 기초하여 배열되며,
    (iii) 상기 오브젝트의 주어진 층을 포함하는 볼륨을 나타내며 상기 옥트리 내에서 동일한 레벨을 갖는 노드가 위치 인코딩 패턴에 따라 직렬화되도록,
    노드가 배열되게 끔 상기 오브젝트의 직렬화된 옥트리 표현을 형성하는 단계를 포함하는
    방법.
  8. 제7항에 있어서,
    상기 오브젝트의 주어진 층을 포함하는 볼륨을 나타내며 상기 옥트리 내에서 동일한 레벨을 갖는 노드는 Morton(모턴) 코드 패턴에 따라 직렬화되는
    방법.
  9. 제1항에 있어서,
    각각의 서브 볼륨 옥트리를 상기 볼륨 옥트리에 삽입하는 것에 의해 상기 볼륨 옥트리 및 상기 서브 볼륨 옥트리를 병합하는 단계를 더 포함하는
    방법.
  10. 제1항에 있어서,
    적층 가공(additive manufacturing)에서 생성될 복수의 층의 각각의 데이터 표현을 제공하기 위해 상기 제2 데이터 모델로부터 데이터를 추출하는 단계와,
    상기 데이터 표현에 기초하여 오브젝트를 생성하는 단계
    를 더 포함하는 방법.
  11. 명령어를 포함하는 머신 판독가능 매체로서,
    상기 명령어는, 프로세서에 의해 실행될 때, 상기 프로세서로 하여금:
    제1 사이즈의 여덟 개 볼륨의 그룹을 검사하는 것, 및, 각각의 그룹에 대해:
    상기 그룹이 미리 결정된 속성을 공유하는 볼륨으로 구성되는 경우, 상기 미리 결정된 속성을 갖는 제2 사이즈의 볼륨을 정의하도록 상기 볼륨을 병합하는 것;
    그렇지 않고, 상기 그룹이 상기 미리 결정된 속성이 없는 볼륨으로 구성되는 경우, 상기 미리 결정된 속성이 없는 상기 제2 사이즈의 볼륨을 정의하도록 상기 볼륨을 병합하는 것;
    그렇지 않으면, 노드 - 상기 노드는 자신의 하위 부분에서 상기 속성을 포함하는 상기 제2 사이즈의 볼륨을 나타냄 - 를 정의하는 것
    에 의해, 층 단위 가공(layer-by-layer manufacturing)에서 생성하기 위한 오브젝트를 나타내는 복수의 제1 데이터 모델 및 제2 데이터 모델을, 오브젝트 모델 데이터로부터, 생성하게 하고,
    상기 제1 데이터 모델을 생성함에 있어서 노드 및/또는 볼륨을 정의하기 위한 상기 명령어는, 상기 제2 사이즈의 볼륨이 미리 결정된 사이즈에 도달할 때까지 선행하는 반복에서 정의되는 노드 및/또는 볼륨을 검사하는 것에 기초하여 노드 및/또는 볼륨을 반복적으로 정의하기 위한 명령어이고, 상기 미리 결정된 사이즈의 상기 볼륨을 나타내는 노드가 정의되고; 그리고
    상기 제2 데이터 모델을 생성함에 있어서 노드 및/또는 볼륨을 정의하기 위한 상기 명령어는, 상기 제1 데이터 모델을 생성함에 있어서 정의되는 상기 미리 결정된 사이즈의 상기 노드로부터 시작하여, 단일의 노드가 상기 오브젝트를 포함하는 볼륨을 나타낼 때까지 선행하는 반복에서 정의되는 노드 및/또는 볼륨을 검사하는 것에 기초하여 노드 및/또는 볼륨을 반복적으로 정의하기 위한 명령어를 포함하고; 그리고
    상기 명령어는 상기 프로세서로 하여금 상기 복수의 제1 데이터 모델을 저장하게 하는 명령어를 더 포함하는
    머신 판독가능 매체.
  12. 제11항에 있어서,
    프로세서에 의해 실행될 때, 상기 프로세서로 하여금, 상기 복수의 제1 데이터 모델을 상기 제2 데이터 모델에 인터리빙하는 것에 의해 상기 제1 및 제2 데이터 모델을 병합하게 하는 명령어를 더 포함하는
    머신 판독가능 매체.
  13. 제11항에 있어서,
    프로세서에 의해 실행될 때, 상기 프로세서로 하여금, 각각의 데이터 모델에서:
    (i) 오브젝트 생성의 의도된 순서에서 더 일찍 생성될 상기 오브젝트의 층을 포함하는 볼륨을 나타내는 노드가, 후속하여 생성될 상기 오브젝트의 층(들)으로 구성되는 볼륨을 나타내는 노드에 선행하고,
    (ii) 상기 오브젝트의 주어진 층을 포함하는 볼륨을 나타내는 노드의 경우, 더 거친 체적 해상도의 노드가 더 미세한 체적 해상도의 노드에 선행하며,
    (iii) 주어진 층을 포함하는 볼륨을 나타내며 동일한 해상도를 갖는 노드가 미리 결정된 위치 인코딩 패턴에 따라 직렬화되도록,
    상기 제1 및 제2 데이터 모델을 생성하게 하는 명령어를 더 포함하는
    머신 판독가능 매체.
  14. 층 단위 가공 프로세스에서 가공될 오브젝트의 적어도 일부의 표현을 포함하는 머신 판독가능 매체로서,
    상기 표현은:
    제1 해상도 및 제2 해상도 사이의 상기 오브젝트의 체적 해상도에 걸쳐 있는 제1 복수의 노드를 갖는 옥트리를 나타내는 데이터와,
    제3 해상도 및 제4 해상도 사이의 상기 오브젝트의 체적 해상도에 걸쳐 있는 제2 복수의 노드를 갖는 복수의 옥트리의 각각을 나타내는 데이터를 포함하고,
    각각의 옥트리 트리에서,
    (i) 오브젝트 생성의 의도된 순서에서 더 일찍 생성될 상기 오브젝트의 층을 포함하는 볼륨을 나타내는 노드가, 후속하여 생성될 상기 오브젝트의 층(들)으로 구성되는 볼륨을 나타내는 노드에 선행하고,
    (ii) 상기 오브젝트의 주어진 층을 포함하는 볼륨을 나타내는 노드의 경우, 더 거친 체적 해상도의 노드가 더 미세한 체적 해상도의 노드에 선행하며,
    (iii) 주어진 층을 포함하는 볼륨을 나타내며 동일한 해상도를 갖는 노드가 미리 결정된 위치 인코딩 패턴에 따라 배열되도록,
    노드가 배열되는
    머신 판독 가능 매체.
  15. 제14항에 있어서,
    상기 옥트리의 각각의 노드는 미리 결정된 공통 길이의 비트 스트링에 의해 표현되고 각각의 노드의 적어도 하나의 서브 볼륨을
    (i) 상기 서브 볼륨 전체에 걸쳐 일관된 미리 결정된 속성을 갖는 것,
    (ii) 상기 서브 볼륨 전체에 걸쳐 상기 미리 결정된 속성이 없는 것,
    (iii) 상기 서브 볼륨의 하위 부분에서 상기 미리 결정된 속성을 갖는 것
    중 하나로서 분류하는
    머신 판독가능 매체.
KR1020197004565A 2016-10-12 2016-10-12 서브 볼륨 옥트리 KR102192805B1 (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2016/056568 WO2018071013A1 (en) 2016-10-12 2016-10-12 Sub-volume octrees

Publications (2)

Publication Number Publication Date
KR20190028789A true KR20190028789A (ko) 2019-03-19
KR102192805B1 KR102192805B1 (ko) 2020-12-21

Family

ID=61905873

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020197004565A KR102192805B1 (ko) 2016-10-12 2016-10-12 서브 볼륨 옥트리

Country Status (6)

Country Link
US (1) US11003166B2 (ko)
EP (1) EP3469546B1 (ko)
JP (1) JP6746790B2 (ko)
KR (1) KR102192805B1 (ko)
CN (1) CN109643442B (ko)
WO (1) WO2018071013A1 (ko)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017200527A1 (en) * 2016-05-16 2017-11-23 Hewlett-Packard Development Company, L.P. Generating a shape profile for a 3d object
DE112016007098T5 (de) * 2016-07-26 2019-04-18 Hewlett-Packard Development Company, L.P. Indexierung von voxeln für das 3d-drucken
US11526150B2 (en) 2017-07-10 2022-12-13 Hewlett-Packard Development Company, L.P. Inferring object attributes
US11367245B2 (en) * 2017-07-10 2022-06-21 Hewlett-Packard Development Company, L.P. Transforming object data models to disperse object properties
US11910026B2 (en) * 2018-09-28 2024-02-20 Sony Corporation Image processing apparatus and method
US10693492B1 (en) * 2019-06-28 2020-06-23 Blackberry Limited Context determination for planar mode in octree-based point cloud coding
CN112258661B (zh) * 2020-10-28 2023-12-26 江苏旗阵信息技术服务有限公司 一种基于八叉树的电网设备模型切片方法
WO2023146545A1 (en) * 2022-01-31 2023-08-03 Hewlett-Packard Development Company, L.P. Transforming object data models
CN114895885B (zh) * 2022-05-20 2023-08-15 杭州宏深科技有限公司 在三维检测软件基于特征的重计算方法
CN117341206B (zh) * 2023-10-08 2024-03-29 南京林业大学 一种基于八叉树的支撑结构生成方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS60237578A (ja) * 1984-01-12 1985-11-26 オクトリー・コーポレーション 3次元物体の2次元イメージ発生方法及びその装置
JPH08153214A (ja) * 1994-11-25 1996-06-11 Nissan Motor Co Ltd 3次元直交格子データの生成方法
JP2000182081A (ja) * 1998-12-14 2000-06-30 Suzuki Motor Corp 解析モデル作成方法および装置並びに解析モデル作成用プログラム若しくは解析モデルデータを記憶した記憶媒体
JP2005235204A (ja) * 2004-02-12 2005-09-02 Fuji Xerox Co Ltd 三次元視覚化表現のレイアウト作成方法、三次元視覚化表現作成システム、三次元グラフィカル・ユーザ・インタフェース装置、及び三次元視覚化表現作成プログラム
EP2933777A1 (en) * 2014-04-17 2015-10-21 amberMind Three dimensional modeling

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100519780B1 (ko) * 2004-02-17 2005-10-07 삼성전자주식회사 3차원 체적 데이터 부호화/복호화 방법 및 장치
US7940279B2 (en) * 2007-03-27 2011-05-10 Utah State University System and method for rendering of texel imagery
US8169434B2 (en) 2008-09-29 2012-05-01 Microsoft Corporation Octree construction on graphics processing units
EP2483804B1 (en) * 2009-10-02 2016-05-18 VRVIS Zentrum Für Virtual Reality Und Visualisierung Forschungs-GmbH Visual queries in data exploration
US8780112B2 (en) 2011-06-08 2014-07-15 Pacific Data Images Llc Coherent out-of-core point-based global illumination
US20120320073A1 (en) * 2011-06-14 2012-12-20 Obscura Digital, Inc. Multiple Spatial Partitioning Algorithm Rendering Engine
US8542939B2 (en) * 2011-08-04 2013-09-24 Arm Limited Methods of and apparatus for using tree representations for representing arrays of data elements for encoding and decoding data in data processing systems
US9396512B2 (en) 2012-03-09 2016-07-19 Nvidia Corporation Fully parallel construction of k-d trees, octrees, and quadtrees in a graphics processing unit
US9817388B2 (en) * 2013-11-27 2017-11-14 Adobe Systems Incorporated Method and apparatus for preserving structural integrity of 3-dimensional models when printing at varying scales
US10347042B2 (en) * 2014-03-13 2019-07-09 Pixar Importance sampling of sparse voxel octrees
US10311381B2 (en) * 2014-12-12 2019-06-04 Autodesk, Inc. Tool and method for conductive trace generation in a 3D model for a hybrid electro-mechanical 3D printer
US20170078593A1 (en) * 2015-09-16 2017-03-16 Indoor Reality 3d spherical image system

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS60237578A (ja) * 1984-01-12 1985-11-26 オクトリー・コーポレーション 3次元物体の2次元イメージ発生方法及びその装置
JPH08153214A (ja) * 1994-11-25 1996-06-11 Nissan Motor Co Ltd 3次元直交格子データの生成方法
JP2000182081A (ja) * 1998-12-14 2000-06-30 Suzuki Motor Corp 解析モデル作成方法および装置並びに解析モデル作成用プログラム若しくは解析モデルデータを記憶した記憶媒体
JP2005235204A (ja) * 2004-02-12 2005-09-02 Fuji Xerox Co Ltd 三次元視覚化表現のレイアウト作成方法、三次元視覚化表現作成システム、三次元グラフィカル・ユーザ・インタフェース装置、及び三次元視覚化表現作成プログラム
EP2933777A1 (en) * 2014-04-17 2015-10-21 amberMind Three dimensional modeling

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
De Chiffre, et al. "Quantitative characterisation of surface texture." CIRP Annals 49.2 (2000)* *

Also Published As

Publication number Publication date
EP3469546A1 (en) 2019-04-17
EP3469546A4 (en) 2019-12-11
JP2019527905A (ja) 2019-10-03
BR112019003826A2 (pt) 2019-06-18
EP3469546B1 (en) 2022-04-27
WO2018071013A1 (en) 2018-04-19
US20200050175A1 (en) 2020-02-13
JP6746790B2 (ja) 2020-08-26
KR102192805B1 (ko) 2020-12-21
CN109643442A (zh) 2019-04-16
US11003166B2 (en) 2021-05-11
CN109643442B (zh) 2023-02-17

Similar Documents

Publication Publication Date Title
KR102192805B1 (ko) 서브 볼륨 옥트리
US10853998B2 (en) Serialising a representation of a three dimensional object
US10678217B2 (en) Creating a voxel representation of a three dimensional (3-D) object
US20140324204A1 (en) Methods and apparati for implementing programmable pipeline for three-dimensional printing including multi-material applications
JP2019531537A (ja) 3dモデルを印刷するシステムおよび方法
US11543800B2 (en) Method of printing a 3D model from point cloud data
US11335073B2 (en) 3D print selection based on voxel property association and conflict resolution
JP2023071722A (ja) 画像を入力とする関数を学習するためのデータセット
CN107709699A (zh) 生成多孔岩石样本的三维微型模型
US20200327729A1 (en) Systems and Methods for Preparing a Virtual Three-Dimensional (3D) Object for 3D Printing
Vassilakos et al. Fabrication of parts with heterogeneous structure using material extrusion additive manufacturing
JP2022546045A (ja) 複数の部品を備える対象物の3次元ワイヤーフレームモデルを生成するコンピュータ実装の方法
WO2020023811A1 (en) 3d object design synthesis and optimization using existing designs
US20190205483A1 (en) Data processing in additive manufacturing
BR112019003826B1 (pt) Método e mídia legível por máquina para representar árvores de octantes de subvolumes
US20230325548A1 (en) Machine learning-based design of beam-based physical structures
US11822311B2 (en) Generation of representations of three-dimensional objects using Boolean operations
US11308690B2 (en) Information processing apparatus and non-transitory computer readable medium for determining attribute value of voxel
CN112215951B (zh) 一种核外多分辨率点云表示方法及点云显示方法
CN113226769A (zh) 用于设计多级晶格结构的计算机辅助设计系统

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant