KR101017974B1 - 메쉬 연결성을 유지하는 병렬적 등위면 추출 방법 및 그 기록 매체 - Google Patents

메쉬 연결성을 유지하는 병렬적 등위면 추출 방법 및 그 기록 매체 Download PDF

Info

Publication number
KR101017974B1
KR101017974B1 KR1020100093191A KR20100093191A KR101017974B1 KR 101017974 B1 KR101017974 B1 KR 101017974B1 KR 1020100093191 A KR1020100093191 A KR 1020100093191A KR 20100093191 A KR20100093191 A KR 20100093191A KR 101017974 B1 KR101017974 B1 KR 101017974B1
Authority
KR
South Korea
Prior art keywords
index
cell
unique
array
vertex
Prior art date
Application number
KR1020100093191A
Other languages
English (en)
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 주식회사 쓰리디산업영상
Priority to KR1020100093191A priority Critical patent/KR101017974B1/ko
Application granted granted Critical
Publication of KR101017974B1 publication Critical patent/KR101017974B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • G06T17/20Finite element generation, e.g. wire-frame surface description, tesselation
    • 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
    • G06T2210/00Indexing scheme for image generation or computer graphics
    • G06T2210/52Parallel processing

Landscapes

  • Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Graphics (AREA)
  • Geometry (AREA)
  • Software Systems (AREA)
  • Image Generation (AREA)

Abstract

본 발명은 메쉬 연결성을 유지하는 병렬적 등위면 추출 방법에 관한 것으로, 셀 분류 과정(제1단계), 히스토피라미드 구축 과정(제2단계), 정점 보간 및 인덱스 할당 과정(제3단계), 및 인덱스 계산 과정(제4단계)을 포함하여, 제1단계부터 제4단계까지의 과정을 '볼륨의 단면(cross-section)의 수 - 1' 반복한다. 마칭 큐브(Marching Cube) 알고리즘은 공간에서 표면(surface) 정보를 추출하는 알고리즘이다. CT 장비의 발달과 더불어 높은 정밀도를 갖는 대용량 볼륨데이터가 사용되고 있지만 마칭 큐브 알고리즘을 이용한 방법은 볼륨 내 모든 복셀을 탐색하여 추출하기 때문에 오랜 시간이 걸리는 단점이 있다. 본 발명에서는 시간을 줄이기 위한 방법으로 멀티코어를 이용한 병렬처리 방법을 제안한다. 히스토피라미드(histopyramid)를 사용하여 표면을 포함하는 셀을 미리 구분하여 병렬 처리함으로써 추출시간을 단축시켰다. 기존에 제시된 병렬처리 알고리즘의 한계는 인접 셀 간의
동일한 정점(vertex)을 여러 번 추출하는 문제와 정점을 하나의 인덱스로 처리하기 어려운 문제가 있었다. 이를 해결하기 위해 더미 셀들(dummy cells)을 추가하여 모서리(edge)당 한 개 이하의 정점만 추출하였고 정점과 인덱스간의 매핑 과정을 히스토피라미드를 이용하여 병렬 처리 하였다. 추출의 병렬화와 단일 정점 추출, 그리고 정점과 인덱스간의 사상(mapping)과정의 병렬화는 기존 알고리즘 대비 최대 10배 이상의 속도 향상을 가져왔다.

Description

메쉬 연결성을 유지하는 병렬적 등위면 추출 방법 및 그 기록 매체{Method for extracting isosurface with mesh continuity and recording medium thereof}
본 발명은 메쉬 연결성을 유지하는 병렬적 등위면 추출 방법에 관한 것으로, 보다 상세하게는 등위면 추출을 병렬화하되 기존에 처리하기 어려웠던 인접 셀간의 동일한 정점을 한번만 추출함으로써 메쉬의 연결성을 유지하고 추출 시 걸리는 시간을 단축하는, 메쉬 연결성을 유지하는 병렬적 등위면 추출 방법 및 그 기록 매체에 관한 것이다.
등위면(isosurface)이란 볼륨 상에서 특정한 값을 가지고 있는 점의 집합으로 이루어진 표면(surface)을 말한다. 이를테면 특정한 값의 압력, 온도, 밀도 등을 연결한 표면이 이에 해당한다.
추출된 표면은 의료영역에서 장기나 암조직 등을 분리하여 볼륨 렌더링(volume rendering)한 결과와 혼합하여 보여주는데 사용된다. 산업영역에서는 역설계시 필요한 폴리곤 데이터로 활용하기 위해 등위면 추출 기법이 필요하다. 추출된 표면은 3차원 형상을 삼각패치로 구성한 파일 포맷 STL(Stereo Lithography File)로 저장되며 이는 CAD에서 사용하는 포맷의 중간단계로서 사용된다.
도 1은 표면 추출과 역설계를 설명하는 도면으로, 추출된 표면은 CAD 데이터의 파일 포맷으로 사용되고 CAD 모델은 역설계시 이용된다.
마칭 큐브(marching cube) 알고리즘은 볼륨을 8개의 복셀(voxel)을 갖는 셀(cell)로 나눈 후 삼각화 과정을 통해 등위면(isosurface)을 추출하는 기술이다. 현재 CT 장비의 발달과 더불어 높은 정밀도를 갖는 대용량 볼륨데이터가 사용되고 있다. 대용량 볼륨 데이터인 경우 추출되는 삼각형이 볼륨이 가지고 있는 셀의 수에 비례함으로 추출 시간이 오래 걸리고 결과를 실시간으로 확인하기 어렵다.
시간을 줄이기 위한 알고리즘 개선이 있었지만 단일 코어에 의한 처리는 한계가 있었다. 그 대안으로 멀티코어를 이용한 병렬처리 알고리즘이 제시되었다. 히스토피라미드(histopyramid)를 이용한 표면 추출 방법은 그 대안 중 하나로 표면을 포함하는 셀만 미리 구분하여 병렬 처리함으로써 추출시간을 단축 시켰다. 그 외 표면 추출을 위한 여러 가지 알고리즘이 제시되었지만 병렬처리 알고리즘의 근본적인 한계는 동일한 정점(vertex)을 여러 번 추출하고 중복되는 정점을 하나의 인덱스(index)로 처리하기 어렵다는 문제점이 있었다.
본 발명은 전술한 종래의 문제점을 해결하기 위한 것으로, 그 목적은 등위면 추출을 병렬화하되 기존에 처리하기 어려웠던 인접 셀간의 동일한 정점을 한번만 추출함으로써 메쉬의 연결성을 유지하고 추출시 걸리는 시간을 단축하도록 된 메쉬 연결성을 유지하는 병렬적 등위면 추출 방법 및 기록 매체를 제공하는 것이다.
전술한 목적을 달성하기 위해 본 발명의 일 측면에 따른 메쉬 연결성을 유지하는 병렬적 등위면 추출 방법은, 각 셀의 좌표에 대응하는 배열의 좌표에 마칭 큐브 케이스를 저장하는 마칭 큐브 케이스(marching cube case) 저장 단계와, 마칭 큐브 케이스를 구분한 후 미리 정의된 테이블을 이용해서 추출될 삼각형이 몇 개의 인덱스가 필요한지를 저장하는 삼각형화 인덱스 카운트(triangulation index count) 저장 단계와, 유일한 정점을 추출하기 위해 각 셀 당 3개의 모서리를 검사하여 셀의 좌표와 대응하는 배열의 좌표에 해당하는 유일한 정점 케이스를 저장하는 유일한 정점 케이스(unique vertex case) 저장 단계와, 셀마다 추출해야 하는 유일한 정점의 수를 셀과 대응하는 배열의 좌표에 저장하는 유일한 정점 카운트(unique vertex count) 저장 단계를 포함하여 각 셀을 분류하는 셀 분류 단계; 상기 삼각형화 인덱스 카운트가 저장된 배열과 상기 유일한 정점 카운트가 저장된 배열에 대해 히스토피라미드를 만들고, 히스토피라미드의 마지막 레벨에서 구한 삼각형화 인덱스의 총수와 유일한 정점의 총수를 저장하는 히스토피라미드 구축 단계; 히스토피라미드에서 구한 유일한 정점의 총 수만큼 키 인덱스를 만들고, 상기 유일한 정점 카운트의 히스토피라미드를 이용하여 키 인덱스에 해당하는 배열의 좌표를 구하며, 히스토피라미드를 타고 내려와 특정 좌표에 도달했으면 기존에 구했던 유일한 정점의 총 수에 키 인덱스 값을 더한 값을 인덱스 배열에서 셀에 대응하는 위치에 저장하는 정점 보간 및 인덱스 할당 단계; 및 히스토피라미드에서 구한 삼각형화 인덱스의 총 수만큼 키 인덱스를 만들되, 히스토피라미드를 타고 내려와서 배열에 특정 좌표에 도달하면 마칭 큐브 케이스 배열에서 이 위치에 해당하는 값을 읽어오고, 기반 레벨에서의 복제 번호와 마칭 큐브 케이스를 참조하여 셀 내부 삼각형 인덱스를 가져오는 인덱스 계산 단계를 포함할 수 있다.
상기 삼각형화 인덱스 카운트 저장 단계에서 인덱스수의 저장은 볼륨의 단면상에서 셀의 추출 위치와 동일한 곳에 저장하고, 배열의 크기는 볼륨의 단면의 크기보다 클 수 있으므로 가로 세로가 m과 n을 초과하는 영역에서는 0으로 채우며, 셀 내에 중복되는 정점의 인덱스도 삼각형화 인덱스 카운트에 누적하도록 한다.
상기 유일한 정점 케이스 저장 단계에서 유일한 정점 케이스는 3개의 모서리로 구분되므로 총 8개의 경우가 존재하며, 상기 유일한 정점 카운트 저장 단계에서 모서리는 각 셀마다 3개씩 검사하므로 0 ~ 3까지의 값이 저장된다.
또한, 상기 한 셀당 3개의 모서리는 모든 셀에 대해 대응하는 위치의 1개의 정점을 공통으로 갖는 3개의 모서리로 정의할 수 있다.
이상에서 설명한 바와 같이 본 발명의 다양한 측면에 따르면, 기존 병렬처리 알고리즘의 한계인 정점과 인덱스의 사상은 병렬화하기 어려운 특성을 가지고 있었으나 본 방법을 이용하면 병렬화가 가능하고, 또한 각 셀 당 3개의 모서리를 검사함으로써 인접 셀 간의 중복된 정점 추출을 없애고 정점추출 시간을 단축 시켰으며, 싱글 코어에서도 같은 볼륨크기에 폴리곤 수가 많을수록 정점과 인덱스의 사상에 레드-블랙 트리를 쓰는 알고리즘보다 그 속도가 빨라졌다. 히스토피라미드를 만드는데 볼륨공간만큼의 탐색 시간이 소요되기 때문에 볼륨에서 추출되는 폴리곤이 적을 경우에는 속도가 느렸지만, 멀티코어를 이용한 병렬적인 표면 추출은 볼륨에서 추출되는 폴리곤의 수와 관계없이 단일 코어를 이용한 알고리즘 보다 빨랐다. 이 역시 폴리곤수가 많아진다면 단일 코어 대비 10배 이상의 속도 차이를 보였다.
도 1은 표면 추출과 역설계를 설명하는 도면,
도 2는 마칭 큐브 케이스를 나타낸 도면,
도 3은 중복된 것을 제외한 마칭 큐브 케이스를 나타낸 도면,
도 4는 히스토피라미드 자료 구조를 설명하는 도면,
도 5는 히스토피라미드를 이용한 병렬처리 시간 단축을 설명하는 도면,
도 6은 히스토피라미드 레벨을 나타내는 도면,
도 7은 히스토피라미드 순회를 설명하는 도면,
도 8은 삼각형 두 개로 표현된 정사각형을 나타낸 도면,
도 9는 본 발명의 일 실시예에 따라 유일한 정점 추출을 위한 한 셀당 3개의 모서리를 나타낸 도면,
도 10은 볼륨 가장자리의 더미 셀을 나타낸 도면,
도 11은 본 발명의 일 실시예에 따른 메쉬 연결성을 유지하는 병렬적 등위면 추출 방법의 전체 과정의 흐름도,
도 12는 본 발명의 일 실시예에 따라 볼륨을 처리하기 위해 필요한 공간을 나타낸 도면,
도 13은 본 발명의 일 실시예에 따라 인덱스 카운트를 누적하는 예를 설명하는 도면,
도 14는 본 발명의 일 실시예에서 마칭 큐브 케이스와 트라이앵귤러 에지 테이블(Triangulation Edge Table)을 예를 설명하는 도면,
도 15는 본 발명의 일 실시예에서 참조하는 인접 모서리를 나타낸 도면,
도 16은 본 발명의 일 실예에 따라 256*256*256 데이터 표면 추출 결과를 나타낸 도면,
도 17은 본 발명의 일 실예에 따라 813*813*905 데이터의 표면 추출 결과를 나타낸 도면이다.
이하, 첨부도면을 참조하여 본 발명의 실시예에 대해 구체적으로 설명한다. 각 도면의 구성요소들에 참조부호를 부가함에 있어서 동일한 구성요소들에 대해서는 비록 다른 도면상에 표시되더라도 가능한 한 동일한 부호를 가지도록 하였고, 또한, 본 발명의 실시예에 대한 설명 시 관련된 공지 구성 또는 기능에 대한 구체적인 설명이 본 발명의 요지를 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명은 생략한다.
본 발명의 실시예에서는 히스토피라미드를 이용하여 표면 추출을 병렬화 하되 기존에 처리하기 어려웠던 인접 셀 간의 동일한 정점을 한번만 추출함으로써 시간을 단축 시켰다. 기존 맵(map)을 이용하여 추출한 정점을 인덱스와 연결시키는 작업 또한 히스토피라미드를 이용하여 병렬화 함으로써 속도향상을 가져왔다.
본 발명의 실시예는 먼저 알고리즘의 기초가 되는 마칭 큐브 알고리즘과 히스토피라미드 자료구조에 대해 설명하고, 이어 세부적인 알고리즘을 설명하도록 하며, 다음에는 추출되는 삼각형의 개수를 달리하여 다른 알고리즘과의 추출 속도를 비교하고, 마지막으로 실험 결과를 설명하도록 한다.
마칭 큐브 알고리즘
등위면이란 볼륨 상에서 일정한 값을 가지고 있는 점들을 표현한 표면이고 등위값(isovalue)은 이때 주어지는 상수 값이다. 마칭큐브 알고리즘은 삼차원 볼륨 데이터 상에서 등위면을 추출 하는 알고리즘이다. 마칭 큐브의 추출단위는 셀로서 이웃한 8개의 가상적인 정육면체 모양의 복셀들을 가리킨다. 셀 안에 8개의 복셀을 등위값과 비교하여 총 28인 256가지의 경우의 수로 나누어 셀을 구분한다.
도 2는 마칭 큐브 케이스를 설명하는 도면으로, 동도면에 도시된 바와 같이 셀의 각 꼭지점을 등위값과 비교하여 8개의 비트(V1~V7)에 0과 1로 쓴다. 8개의 비트는 마칭 큐브 케이스가 된다.
셀의 각 복셀은 인접 셀의 등위면 추출에도 이용된다. 볼륨을 구성하고 있는 복셀의 수가 n*m*l 일 때 셀의 개수는 (n-1)*(m-1)*(l-1)이 된다. 추출 시 생기는 폴리곤은 삼각형으로 분할되게 되며 삼각형들의 집합으로 표면을 구성한다.
도 3은 중복된 것을 제외한 마칭 큐브 케이스를 나타낸 도면으로, 동 도면에 도시된 바와 같이, 총 256개의 마칭 큐브 케이스 중 중복되는 경우를 제외하면 15가지의 경우가 된다. 본 발명의 실시예에서는 256개의 마칭 큐브 케이스를 모두 사용하도록 한다.
마칭 큐브를 이용한 등위면 추출 알고리즘의 속도향상을 위한 여러 가지 방법이 제시 되었다. 하지만 단일코어로서는 그 한계가 있었다. 기본적으로 마칭 큐브를 이용하여 폴리곤 추출을 하려면 모든 복셀을 참조해야 하기 때문이다. 단일 코어의 한계를 극복하기 위해 멀티코어를 사용한 추출 알고리즘이 제시 되었다. 히스토피라미드를 이용한 추출 방법도 그 중에 하나이다.
히스토피라미드(Histopyramid)
데이터 압축(data compaction) 이란 처리해야 할 데이터와 처리하지 않을 데이터를 미리 예측하여 데이터의 양을 줄이는 방법이다. 히스토피라미드는 데이터 압축을 위한 자료 구조이다.
도 4는 히스토피라미드 자료구조를 설명하기 위한 도면으로, 동 도면에 도시된 바와 같이, 히스토피라미드를 이용하여 입력 영상에서 처리해야 할 픽셀만 구분하여 처리한다.
도 4의 입력 이미지에서 8*8=64 픽셀(pixel) 중 처리해야 할 픽셀은 9개이다. 히스토피라미드를 만들면 최상위 원소(top element)에 처리해야 할 픽셀의 수 9가 써진다.
도 5는 히스토피라미드를 이용한 병렬처리 시간 단축을 설명하기 위한 도면으로, 병렬처리 시 등위면이 지나는 셀만 정점을 계산하여 시간을 단축할 수 있다.
즉, 병렬적인 마칭 큐브 알고리즘을 사용하여 표면을 추출할 경우 등위면이 지나는 셀에 대해 정점의 좌표를 구할 때 등위면이 지나지 않는 셀도 지나는 셀에서 정점을 구할 때까지 기다리게 된다. 히스토피라미드를 이용하게 되면 지나지 않는 셀을 미리 제거할 수 있고 지나는 셀만 정점의 좌표를 구함으로 빠른 처리가 가능하다.
히스토피라미드 알고리즘은 크게 두 가지 단계로 나뉜다. 첫 번째는 밉맵(mipmap)과 비슷한 형태로 피라미드(pyramid)를 구축하는 단계(construction)이고, 두 번째는 만들어놓은 피라미드 꼭대기에서 아래로 내려오면서 대응되는 입력 원소(input element)를 찾는 단계(traversal)이다.
피라미드 구축(construction)에 대한 설명
히스토피라미드는 이차원 배열(또는 텍스쳐(texture)라 칭함)의 스택(stack)이다. 밉맵과 비슷한 형태로 낮은 레벨의 배열은 상위 레벨의 배열 크기의 1/4이 된다. 피라미드 모양의 이차원 배열의 스택 중 가장 아래 있고 가장 크기가 큰 배열을 기반 배열(base texture)라 부른다. 스택의 꼭대기에 있는 1*1 배열을 최상위 원소라 부른다.
기반 배열에 저장된 각각의 원소가 나타내는 수는 한 셀에 포함된 폴리곤을 만들기 위한 정점의 개수를 나타낸다. 즉 배열의 한 픽셀은 볼륨 상에서 셀과 대응한다. 밉맵과 다른 점은 상위 레벨의 배열에 저장되는 값이 평균이 아니라 합이라는 것이다. 하위 레벨의 배열에 있는 4개의 원소의 합으로 상위 레벨 배열의 원소를 채운다. 볼륨에서 추출할 경우 각 배열은 삼차원이 되며 상위 레벨의 배열의 크기는 아래 레벨의 8배가 된다. 가장 높은 레벨에 있는 최상위 원소는 전체 표면을 구성하는 폴리곤을 만들기 위한 정점 수의 합이 된다.
도 6은 히스토피라미드의 레벨을 나타내는 도면으로, 동 도면에 도시된 바와 같이 상위 레벨의 원소는 하위 레벨의 인접하는 4개의 원소 합으로 이루어진다.
입력 원소를 찾는 순회과정(traversal)에 대한 설명
두 복셀을 보간 하여 정점의 좌표를 구하는 것은 최상위 원소의 값만큼만 반복하면 된다. 히스토피라미드 자료구조의 장점은 이 과정을 병렬적 처리 할 수 있다는 점이다. 최상위 원소의 값을 n이라 할 때 0 ~ n-1까지의 순번이 붙여져 있는 더미 인덱스(dummy index)를 만드는데 이것을 키 인덱스(key index)라 부른다. 각각의 키 인덱스는 히스토피라미드의 꼭대기에서부터 시작하여 기반 배열에 이르게 되는데 이때 해당하는 기반 배열의 좌표와 복제 번호(clone number)를 출력으로 갖게 된다. 복제 번호는 다른 키 인덱스가 동일한 배열을 가졌을 때 이를 구분해 준다. 각 셀에서 추출할 정점의 수는 1개 이상이 될 수 있고 이를 위해서 복제 번호가 필요하다.
도 7은 히스토피라미드를 설명하기 위한 도면으로 가장 꼭대기에 있는 레벨 = 2, 기반 레벨 = 0인 히스토피라미드에서 키 인덱스가 4인 입력인 예를 들어보자.
각각의 원소의 값은 범위를 나타낸다. 최상위 원소의 값이 9이고 [0,9)범위를 가지고 있다. 여기서 기호 '['는 이상을 나타내고 ')'는 미만을 나타낸다. 키 인덱스가 4는 이 범위에 속하니 하위 레벨로 내려간다. 레벨 1에서 현재 비교한 최상위 원소의 값을 만들었던 원소들을 대상으로 범위를 검사한다. 최상위 원소는 밑의 레벨에 있는 모든 원소의 합으로 구성됨으로 키 인덱스는 레벨 1의 모든 원소들과 비교해야 한다. 키 인덱스 4를 레벨 1의 처음 원소의 범위인 [0,3) 사이에 속해 있는지 검사한다. 속해있지 않으면 다음 원소범위에 속하는지 검사한다. 다음 원소는 2로 [3,5)범위를 나타내고 4는 여기에 속함으로 현재 원소를 만들었던 낮은 레벨의 원소들을 확인한다. 레벨 0에서 확인해야 할 원소들의 배열 좌표는 (0,2), (0,3), (1,2), (1,3)이다. [0,2)범위에 속함으로 출력은 (2,1)이 된다. 키 인덱스 5와 6은 동일한 배열 좌표를 갖는다. 한 셀에 추출되는 정점의 수는 여러 개가 있을 수 있으므로 키 인덱스가 다르더라도 같은 배열을 가지고 있을 수 있다. 이럴 경우는 복제 번호로 셀 내의 정점을 구분할 수 있다.
정점 버퍼와 인덱스 버퍼
정점 버퍼는 각 점의 좌표를 저장해 놓는 버퍼이다. 표면을 삼각형의 집합으로 표현하다 보면 삼각형들은 각 변을 공유하게 된다. 공유하는 좌표를 중복 저장한다면 저장 공간이 낭비 된다.
도 8은 삼각형 두 개로 표현된 정사각형을 나타낸 도면으로, 동 도면에서 삼각형 두 개는 (0,0), (0,1), (1,0), (1,0), (0,1), (1,1)로 표현 할 수 있다. (0,0), (0,1), (1,0), (1,1)을 각각 0, 1, 2, 3에 대응 시키면 위와 같은 삼각형 두 개는 0, 1, 2, 2, 1, 3으로 표현 할 수 있고 이를 인덱스라 부른다. 인덱스 버퍼를 이용하면 중복되는 정점의 저장 공간을 절약 할 수 있고 같은 좌표의 정점을 하나로 처리 할 수 있어 메쉬 간소화(mesh simplification)등에서 유용하게 이용된다.
히스토피라미드를 이용한 표면 추출
마칭 큐브 알고리즘은 각 셀에 대한 정점 추출을 병렬 처리 하여 추출 속도를 빠르게 할 수 있다. 하지만 인접한 셀 간의 동일 좌표의 정점을 각 셀마다 독립적으로 추출하고 동일한 좌표의 정점을 하나의 인덱스로 처리하기 어려운 문제가 있다.
볼륨 전체에서 단 한번만 추출되는 정점을 ‘유일한 정점’이라 하자. 두 복셀을 잇는 모서리에 정점은 유일하게 정의된다. 모서리 상에 두개 이상의 정점은 존재 하지 않는다. 표면을 구성하는 모든 유일한 정점을 구하기 위해서는 볼륨상의 모든 모서리에 대해 등위값을 포함하고 있는지를 검사해야 한다.
도 9는 본 발명의 일 실시예에 따라 유일한 정점의 추출을 위한 한 셀당 3개의 모서리를 나타내는 도면으로, 동 도면에 도시된 바와 같이 각 셀 당 3개의 모서리를 검사하도록 하면 볼륨의 가장자리(border)를 제외하고는 모든 모서리를 검사 할 수 있다. 본 실시예에서 한 셀당 3개의 모서리는 모든 셀에 대해 공통 위치의 정점에 공통으로 연결된 3개의 모서리로 정의 될 수 있다. 즉, 본 실시예에서 한 셀당 3개의 모서리는 모든 셀에 대해 서로 대응하는 위치의 1개의 정점을 공통으로 갖는 3개의 모서리인 것이다.
도 10은 본 실시예에 따른 볼륨 가장자리 더미 셀을 나타낸 도면으로, 동 도면에 도시된 바와 같이, 볼륨의 가장자리 부분에서 검사에 포함되지 않는 모서리는 더미 셀들을 추가함으로써 포함시킬 수 있다. 볼륨의 6면 중 3면을 감싸는 더미 셀들을 추가한다. 즉, 도 10과 같이 더미 셀 추가하여 볼륨이 포함하고 있는 정점을 빠짐없이 추출 할 수 있다
m*n*l의 볼륨이 있을 때 (m-1)*(n-1)*(l-1)개의 셀이 존재 하게 된다. 더미 셀들을 볼륨의 가장자리에 추가 한 후 m*n*l개의 셀에 대해서 3개의 모서리를 검사하게 되면 빠짐없이 유일한 정점을 추출할 수 있게 된다. 이 과정에서 원 볼륨에는 없는 추가적인 정점이 추출될 수 있으나 인덱스 버퍼를 만들 때는 원 볼륨만 고려하기 때문에 추출되는 폴리곤 수에 영향을 주지 않는다. 또한 이는 전체 볼륨에 대해서 소수이므로 속도에 큰 영향을 미치지 않는다.
도 11은 본 발명의 일 실시예에 따른 메쉬 연결성을 유지하는 병렬적 등위면 추출 방법의 전체 과정의 흐름도로, 동 도면에 도시된 바와 같이, 볼륨 구분 및 셀 분류 과정(제1단계), 히스토피라미드 구축 과정(제2단계), 정점 보간 및 인덱스 할당 과정(제3단계), 및 인덱스 계산 과정(제4단계)을 포함한다. 제1단계부터 제4단계까지의 과정을 '볼륨의 단면(cross-section)의 수 - 1' 만큼 반복한다.
도 12는 본 발명의 일 실시예에 따라 볼륨을 처리하기 위해 필요한 공간을 나타낸 도면으로, 동 도면에서 k는 k>=m and k>=n 이고 2의 제곱 승이다.
이어, 본 발명의 일 실시예에 따른 상기 제1단계 내지 제4단계를 상세히 설명한다
볼륨 구분 및 셀 분류 (제1단계)
본 발명의 실시예에 따른 셀 분류 과정(제1단계)은 하기의 설명과 같이 볼륨 구분 및 마칭 큐브 케이스 저장 단계, 삼각형화 인덱스 카운트 단계, 유일한 정점 케이스 저장 단계, 및 유일한 정점 카운트 저장 단계를 포함한다.
볼륨 구분 및 마칭 큐브 케이스(marching cube case) 저장 단계
먼저, 불륨을 단면(cross-section) 단위로 나눈다. m*n*l개의 복셀이 이루는 볼륨이 있다면 단면은 m*n의 복셀로 정의 된다. 마칭 큐브 알고리즘은 셀 단위의 추출을 하기 때문에 인접한 2개의 단면을 이용하여 (m-1)*(n-1)개의 셀을 대상으로 추출한다. 두 개의 단면에 대해 마칭 큐브 케이스를 볼륨의 더미 셀들을 추가한 크기인 m*n 이차원 배열에 저장한다. 각 셀의 좌표에 대응하는 배열의 좌표에 마칭 큐브 케이스를 저장한다.
삼각형화 인덱스 카운트(triangulation index count) 저장 단계
마칭 큐브 케이스를 구분한 후 미리 정의된 테이블을 이용해서 추출될 삼각형이 몇 개의 인덱스가 필요한지를 저장한다. 이때 필요한 공간의 크기는 (m-1)*(n-1)의 공간이 필요하다. 하지만 삼각형화 인덱스 카운트 배열은 히스토피라미드의 기반 배열로 사용됨으로 가로세로가 같고 그 길이가 2의 제곱 승이 되는 공간에 저장해 놓는다. 인덱스수의 저장은 볼륨의 단면상에서 셀의 추출 위치와 동일한 곳에 저장한다. 이 배열의 크기는 볼륨의 단면의 크기보다 클 수 있으므로 가로 세로가 m과 n을 초과하는 영역에서는 0으로 채워 놓는다.
도 13은 본 발명의 일 실시예에 따른 인덱스 카운트의 누적 예를 나타낸 도면으로, 동 도면에 도시된 바와 같이, 셀 내에 중복되는 정점의 인덱스도 삼각형화 인덱스 카운트에 누적하도록 한다.
유일한 정점 케이스(unique vertex case) 저장 단계
유일한 정점을 추출하기 위해 각 셀 당 3개의 모서리를 검사한다. 유일한 정점 케이스는 3개의 모서리로 구분되므로 총 8개의 경우가 존재한다. 셀의 좌표와 대응하는 배열의 좌표에 저장한다. 0 ~ 7까지의 값이 저장된다.
유일한 정점 카운트(unique vertex count) 저장 단계
셀마다 추출해야 하는 유일한 정점의 수를 셀과 대응하는 배열의 좌표에 저장한다. 모서리는 각 셀마다 3개씩 검사하므로 0 ~ 3까지의 값이 저장된다. 다음 단계에서 히스토피라미드를 만드는데 쓰이므로 m과 n보다 큰 2의 제곱승의 공간에 저장시켜 놓는다.
히스토피라미드(Histopyramid) 구축 (제2단계)
삼각형화 인덱스 카운트가 저장된 배열과 유일한 정점 카운트가 저장된 배열에 대해 히스토피라미드를 만든다. 히스토피라미드의 마지막 레벨에서 구한 삼각형화 인덱스의 총수와 유일한 정점의 총수를 저장한다.
정점 보간 및 인덱스 할당 (제3단계)
보간을 이용하여 정점을 구함
히스토피라미드에서 구한 유일한 정점의 총 수만큼 키 인덱스를 만든다. 유일한 정점 카운트의 히스토피라미드를 이용하여 키 인덱스에 해당하는 배열의 좌표를 구한다. 방금 구한 좌표를 이용하여 유일한 정점 케이스 배열을 참조할 수 있고 볼륨상의 정점 위치를 구할 수 있다. 추출한 정점은 정점 버퍼에 추가시킨다.
인덱스 배열 저장
히스토피라미드를 타고 내려와 특정 좌표에 도달했으면 기존에 구했던 유일한 정점의 총 수에 키 인덱스 값을 더한 값을 인덱스 배열에서 셀에 대응하는 위치에 저장시킨다. 기존에 구했던 유일한 정점의 총 수는 볼륨을 단면으로 나누어 처리할 때 이미 처리한 단면에서 나온 유일한 정점의 총 수이다. 인덱스 배열에 저장된 값은 다음단계에서 인덱스를 구하기 위하여 쓰인다. 인덱스는 같은 셀 당 총 3개까지 있을 수 있고 3개의 인덱스는 각기 다른 값을 가져야 한다. 좌표가 다른 정점이 같은 인덱스 가질 수 없기 때문이다. 따라서 인덱스 배열은 [m*n][3]인 2차원 배열을 사용한다. 각 셀에서 인덱스를 구할 때 현 인덱스 배열 외에도 이전 볼륨의 단면에서 구한 인덱스 배열도 필요하다. 따라서 인덱스 배열은 이번 단계가 끝나도 다음 단계를 위해 저장 시켜 놓는다.
인덱스 계산 (제4단계)
히스토피라미드에서 구한 삼각형화 인덱스의 총 수만큼 키 인덱스를 만든다. 히스토피라미드를 타고 내려와서 배열에 특정 좌표에 도달하게 된다. 마칭 큐브 케이스 배열에서 이 위치 즉, 그 도달된 특정 좌표에 해당하는 값을 읽어온다. 기반 레벨에서의 복제 번호와 마칭 큐브 케이스를 참조하여 도 14에 도시된 바와 같은 트라이앵귤레이션 에지 테이블에서 값을 가져온다. 즉, 기반 레벨에서의 복제 번호와 마칭 큐브 케이스를 참조하여 셀 내부 삼각형 인덱스를 가져온다.
도 14의 트라이앵귤레이션 에지 테이블에서 가져오는 값을 이용하여 현재의 셀을 포함한 인접 셀들을 검사한다. 셀 안에 있는 모서리는 인덱스 배열을 참조하여 인덱스를 가져온다. 도 15에 도시된 바와 같이 총 7개의 셀을 검사하면 모든 인덱스를 알 수 있다. 7개의 셀 중 3개의 셀은 이전 볼륨의 단면에서 구한 인덱스 배열 값을 참조해야 한다. 구한 인덱스를 인덱스 버퍼에 저장한다.
마지막으로, 볼륨의 마지막 단면인가를 판단하여 마지막이 아니라면 전술된 제1단계부터 다시 시작하고 마지막이라면 종료토록 한다.
이어, 본 실시예의 실험 결과 및 분석을 설명한다.
개발 언어는 C++, Directx 10를 사용하였다. CPU는 Intel Q6600 2.4GHz , GPU는 Nvidia GTX480을 사용하였다.
각기 다른 3가지 방법으로 테스트 하였다.
CPU1: 볼륨 전체를 돌면서 유일한 정점을 추출한다. visual c++의 Standard Template Library인 map을 이용하여 정점과 인덱스의 연결을 했다. map은 내부적으로는 레드-블랙 트리(red-black tree)를 사용하고 있으며 삽입과 동시에 정렬이 된다. 삽입에 걸리는 시간은 O(log n)이며 key에 대해 value를 찾는 시간도 O(log n)임을 보장한다.
CPU2: 본 알고리즘의 CPU 버전이다. 볼륨을 단면으로 나누어 유일한 정점을 추출하며 단면 단위로 폴리곤을 추출한다. 싱글 코어를 사용하기 때문에 병렬화의 효과를 볼 수 없다.
GPU: 본 알고리즘의 GPU 버전이다. Directx 10을 사용했고 히스토피라미드는 밉맵을 이용하여 구현하였다. GPU를 이용한 병렬화의 효과를 볼 수 있다. 인덱스 배열을 저장시키는 과정은 저장하는 좌표가 일정 하지 않다. scatter라 불리는 이 작업은 GPU로 불가능한 작업이다. scatter를 구현하기 위해 해당하는 좌표를 차례대로 저장한 후에 CPU로 내려서 저장된 값을 배열의 위치로 사용하였다. scatter를 위한 작업과 그래픽스 파이프라인의 한계 때문에 병렬화에서 추가 작업이 생긴다. 또한 CPU와 GPU의 통신 과정에서 생기는 오버헤드도 있다.
실험 결과는 다음과 같다.
법선 벡터 계산과 렌더링(rendering)시간, 파일에서 볼륨을 읽는 시간은 제외하였다. 총 걸린 시간은 추출하는데 걸리는 시간과 인덱스 버퍼와 정점 버퍼를 채우는 시간까지 포함한다. 256*256*256 데이터와 813*813*905 데이터를 가지고 실험하였다. 10번 추출의 평균을 구했다.
256*256*256
  CPU1 CPU2 GPU
Vertices :   277,066
Indices  : 1,504,056
2,527 ms 2,028 ms 468 ms
Vertices :   505,232
Indices  : 3,065,616
4,259 ms 2,823 ms 530 ms
도 16은 256*256*256 데이터 표면 추출 결과를 나타낸 도면으로, 좌측 도면은 전체 추출된 표면의 와이어 프레임을 나타내고 우측 도면은 좌측 도면에서 표시된 영역을 확대한 것이다.
GPU1보다 CPU2가 속도가 더 빠르다. 추출되는 폴리곤이 많을수록 그 차이는 심해진다. 레드-블랙 트리(red-black tree)의 사상이 밑이 2인 log를 쓰는 반면 histopyramid에서는 밑이 4인 log를 사용하기 때문이라고 추측된다.
병렬화를 사용한 GPU버전이 속도면에서 CPU1, CPU2와 확연한 차이를 보여준다. CPU<->GPU간의 통신과 병렬화를 위한 추가적인 작업이 있음에도 불구하고 CPU1과 6~10배의 속도 차이를 보인다. GPU 버전도 폴리곤이 많이 있으면 있을수록 CPU1과의 차이가 커진다. 정점의 좌표를 구하는 시간이 병렬화로 인해 많이 단축되었기 때문이다.
813*813*905
  CPU1 CPU2 GPU
Vertices :  5,336,106
Indices  : 32,027,412
65,193 ms 71,963 ms 19,859 ms
Vertices : 10,047,068
Indices  : 60,338,856
104,770 ms 92,478 ms 21,372 ms
Vertices : 15,226,184
Indices  : 90,810,012
148,357 ms 115,316 ms 23,634 ms
도 17은 813*813*905 데이터의 표면 추출 결과를 나타내는 도면으로, 좌측 도면은 전체 추출된 표면의 와이어프레임이고 우측 도면은 좌측에서 표시된 영역을 확대한 것이다.
256*256*256 데이터보다도 40배 이상 큰 데이터이다. CPU2는 CPU1에 비해 볼륨 크기에 해당하는 공간을 한 번 더 탐색한다. 볼륨에서 마칭 큐브 케이스 등을 구분할 때 공간을 한번 탐색하고 히스토피라미드를 만들 때 추가로 공간을 탐색한다. 볼륨에 비해 추출되는 폴리곤데이터가 적으면 볼륨을 한번만 탐색해도 되는 CPU1이 CPU2보다 유리하다. 256*256*256 데이터에서와 같이 추출되는 폴리곤이 많을수록 CPU1대비 CPU2속도가 빨라짐을 알 수 있다.
병렬화를 사용한 GPU버전이 CPU1 대비 3~6배 속도가 차이 났다. GPU의 이 역시 추출되는 폴리곤이 많아질수록 그 폭이 커진다. 주목할 점은 인덱스 3천만 개 추출 속도가 6천만 개가 된다 하더라도 속도가 2배 걸리지 않는다. 폴리곤의 수에 비례하는 CPU1과 달리 GPU 버전은 폴리곤의 숫자 영향이 미비하다. 이는 병렬화를 위한 오버헤드가 실제 폴리곤을 만드는 시간보다도 전체 시간에 더 크게 작용을 한다는 것을 의미한다. 추가적인 작업이 들지 않는 병렬프로그램이 가능하다면 더 빠른 속도를 낼 수 있을 것이다.
전술된 본 발명의 일 실시예에 따른 메쉬 연결성을 유지하는 병렬적 등위면 추출 방법은 다양한 컴퓨터로 구현되는 동작을 수행하기 위한 프로그램 명령을 포함하는 컴퓨터 판독가능 기록 매체로 구현될 수 있다. 상기 컴퓨터 판독 가능 기록 매체는 프로그램 명령, 로컬 데이터 파일, 로컬 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 기록 매체는 본 발명의 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체, CD-ROM, DVD와 같은 광기록 매체, 플롭티컬 디스크와 같은 자기-광 매체, 및 롬, 램, 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 상기 기록 매체는 프로그램 명령, 로컬 데이터 구조 등을 지정하는 신호를 전송하는 반송파를 포함하는 광 또는 금속선, 도파관 등의 전송 매체일 수도 있다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함할 수 있다.
이상의 설명은 본 발명의 기술 사상을 예시적으로 설명한 것에 불과한 것으로서, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자라면 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 다양한 수정 및 변형이 가능할 것이다. 따라서, 본 발명에 개시된 실시예들은 본 발명의 기술 사상을 한정하기 위한 것이 아니라 설명하기 위한 것이고, 이러한 실시예에 의하여 본 발명의 기술 사상의 범위가 한정되는 것은 아니다. 본 발명의 보호 범위는 아래의 청구범위에 의하여 해석되어야 하며, 그와 동등한 범위 내에 있는 모든 기술 사상은 본 발명의 권리범위에 포함되는 것으로 해석되어야 할 것이다.

Claims (7)

  1. 각 셀의 좌표에 대응하는 배열의 좌표에 마칭 큐브 케이스를 저장하는 마칭 큐브 케이스 저장 단계와, 마칭 큐브 케이스를 구분한 후 미리 정의된 테이블을 이용해서 추출될 삼각형이 몇 개의 인덱스가 필요한지를 저장하는 삼각형화 인덱스 카운트 저장 단계와, 유일한 정점을 추출하기 위해 각 셀 당 3개의 모서리를 검사하여, 셀의 좌표와 대응하는 배열의 좌표에 해당하는 유일한 정점 케이스를 저장하는 유일한 정점 케이스 저장 단계와, 셀마다 추출해야 하는 유일한 정점의 수를 셀과 대응하는 배열의 좌표에 저장하는 유일한 정점 카운트 저장 단계를 포함하여 각 셀을 분류하는 셀 분류 단계;
    상기 삼각형화 인덱스 카운트가 저장된 배열과 상기 유일한 정점 카운트가 저장된 배열에 대해 히스토피라미드를 만들고, 히스토피라미드의 마지막 레벨에서 구한 삼각형화 인덱스의 총수와 유일한 정점의 총수를 저장하는 히스토피라미드 구축 단계;
    히스토피라미드에서 구한 유일한 정점의 총 수만큼 키 인덱스를 만들고, 상기 유일한 정점 카운트의 히스토피라미드를 이용하여 키 인덱스에 해당하는 배열의 좌표를 구하며, 히스토피라미드를 타고 내려와 특정 좌표에 도달했으면 기존에 구했던 유일한 정점의 총 수에 키 인덱스 값을 더한 값을 인덱스 배열에서 셀에 대응하는 위치에 저장하는 정점 보간 및 인덱스 할당 단계; 및
    히스토피라미드에서 구한 삼각형화 인덱스의 총 수만큼 키 인덱스를 만들되, 히스토피라미드를 타고 내려와서 배열에 특정 좌표를 구하고 마칭 큐브 케이스 배열에서 그 구한 특정 좌표에 해당하는 값을 읽어오고, 기반 레벨에서의 복제 번호와 마칭 큐브 케이스를 참조하여 셀 내부 삼각형 인덱스를 가져오는 인덱스 계산 단계;
    를 포함하는 것을 특징으로 하는 메쉬 연결성을 유지하는 병렬적 등위면 추출 방법.
  2. 제1항에 있어서,
    상기 삼각형화 인덱스 카운트 저장 단계에서 인덱스 수의 저장은 볼륨의 단면상에서 셀의 추출 위치와 동일한 곳에 저장하는 것을 특징으로 하는 메쉬 연결성을 유지하는 병렬적 등위면 추출 방법.
  3. 제1항에 있어서,
    상기 삼각형화 인덱스 카운트 저장 단계에서 셀 내에 중복되는 정점의 인덱스도 삼각형화 인덱스 카운트에 누적하는 것을 특징으로 하는 메쉬 연결성을 유지하는 병렬적 등위면 추출 방법.
  4. 제1항에 있어서,
    상기 유일한 정점 케이스 저장 단계에서 유일한 정점 케이스는 3개의 모서리로 구분되어 총 8개의 경우가 존재하는 것을 특징으로 하는 메쉬 연결성을 유지하는 병렬적 등위면 추출 방법.
  5. 제1항에 있어서,
    상기 유일한 정점 카운트 저장 단계에서 모서리는 각 셀마다 3개씩 검사하여 0 ~ 3까지의 값이 저장되는 것을 특징으로 하는 메쉬 연결성을 유지하는 병렬적 등위면 추출 방법.
  6. 제1항에 있어서,
    상기 한 셀당 3개의 모서리는 모든 셀에 대해 대응하는 위치의 1개의 정점을 공통으로 갖는 3개의 모서리인 것을 특징으로 하는 메쉬 연결성을 유지하는 병렬적 등위면 추출 방법.
  7. 제1항에 내지 제6항 중 어느 한 항의 상기 메쉬 연결성을 유지하는 병렬적 등위면 추출 방법이 프로그램으로 기록된 컴퓨터로 읽을 수 있는 기록 매체.
KR1020100093191A 2010-09-27 2010-09-27 메쉬 연결성을 유지하는 병렬적 등위면 추출 방법 및 그 기록 매체 KR101017974B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020100093191A KR101017974B1 (ko) 2010-09-27 2010-09-27 메쉬 연결성을 유지하는 병렬적 등위면 추출 방법 및 그 기록 매체

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020100093191A KR101017974B1 (ko) 2010-09-27 2010-09-27 메쉬 연결성을 유지하는 병렬적 등위면 추출 방법 및 그 기록 매체

Publications (1)

Publication Number Publication Date
KR101017974B1 true KR101017974B1 (ko) 2011-03-02

Family

ID=43938167

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020100093191A KR101017974B1 (ko) 2010-09-27 2010-09-27 메쉬 연결성을 유지하는 병렬적 등위면 추출 방법 및 그 기록 매체

Country Status (1)

Country Link
KR (1) KR101017974B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101651827B1 (ko) 2015-02-26 2016-08-30 한밭대학교 산학협력단 파일 및 병렬 처리를 이용한 객체의 복셀화 방법

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100439087B1 (ko) 2002-05-09 2004-07-05 한국과학기술원 3차원 물체 상세화 모델링 방법
KR100795600B1 (ko) 2006-11-10 2008-01-21 인하대학교 산학협력단 볼륨 광선 투사법에 맞도록 변형된 마칭큐브 방법용 테이블 구조를 기록한 컴퓨터로 읽을 수 있는 매체

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100439087B1 (ko) 2002-05-09 2004-07-05 한국과학기술원 3차원 물체 상세화 모델링 방법
KR100795600B1 (ko) 2006-11-10 2008-01-21 인하대학교 산학협력단 볼륨 광선 투사법에 맞도록 변형된 마칭큐브 방법용 테이블 구조를 기록한 컴퓨터로 읽을 수 있는 매체

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101651827B1 (ko) 2015-02-26 2016-08-30 한밭대학교 산학협력단 파일 및 병렬 처리를 이용한 객체의 복셀화 방법

Similar Documents

Publication Publication Date Title
US8570322B2 (en) Method, system, and computer program product for efficient ray tracing of micropolygon geometry
Zhang et al. 3D finite element meshing from imaging data
US20080246766A1 (en) Numerical analysis mesh generating method and apparatus
Greß et al. GPU‐based collision detection for deformable parameterized surfaces
Strugar Continuous distance-dependent level of detail for rendering heightmaps
EP1687777A2 (en) Method and system for distinguishing surfaces in 3d data sets (&#34;dividing voxels&#34;)
US10878628B2 (en) System and method for converting massive, single-material mesh datasets to a hierarchical format
Livnat et al. Interactive point-based isosurface extraction
Zhou et al. A streaming framework for seamless building reconstruction from large-scale aerial lidar data
Chen et al. Regulating complex geometries using layered depth‐normal images for rapid prototyping and manufacturing
Graciano et al. Quadstack: An efficient representation and direct rendering of layered datasets
KR101017974B1 (ko) 메쉬 연결성을 유지하는 병렬적 등위면 추출 방법 및 그 기록 매체
CN110751732B (zh) 一种2d图像转3d图像的方法
Velasco et al. Cell Octrees: A New Data Structure for Volume Modeling and Visualization.
Horvat et al. Ray-casting point-in-polyhedron test
CN116452735A (zh) 基于八叉树的数据处理方法、装置及计算机可读存储介质
Zirr et al. Memory-efficient on-the-fly voxelization and rendering of particle data
CN114648607B (zh) 基于cad平台的倾斜三维模型重建与动态调度方法
CN106355636A (zh) 虚拟现实三维水体渲染中水体网格的处理方法
EP1484698A1 (en) Method and program for converting boundary data into in-cell shape
JP6942007B2 (ja) 画像処理装置、及びプログラム
Schmitz et al. Efficient and high quality contouring of isosurfaces on uniform grids
Gautron et al. Interactive GPU-based Decimation of Large Meshes
CN110197528B (zh) 一种地质体存储、可视化和交互方法及系统
CN115984511B (zh) 一种基于cad的平行六面体体积平均共形网格剖分方法

Legal Events

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

Payment date: 20140129

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20150106

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20151209

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20170210

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20180105

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20190103

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20191211

Year of fee payment: 10