KR100233972B1 - 기하학적 모델을 압축 및 압축해제하는 컴퓨터 시스템과 압축 및압축해제 - Google Patents

기하학적 모델을 압축 및 압축해제하는 컴퓨터 시스템과 압축 및압축해제 Download PDF

Info

Publication number
KR100233972B1
KR100233972B1 KR1019960061004A KR19960061004A KR100233972B1 KR 100233972 B1 KR100233972 B1 KR 100233972B1 KR 1019960061004 A KR1019960061004 A KR 1019960061004A KR 19960061004 A KR19960061004 A KR 19960061004A KR 100233972 B1 KR100233972 B1 KR 100233972B1
Authority
KR
South Korea
Prior art keywords
triangular
vertex
node
path
spanning tree
Prior art date
Application number
KR1019960061004A
Other languages
English (en)
Other versions
KR970059967A (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 KR970059967A publication Critical patent/KR970059967A/ko
Application granted granted Critical
Publication of KR100233972B1 publication Critical patent/KR100233972B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/40Data acquisition and logging
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • G06T9/40Tree coding, e.g. quadtree, octree

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Computer Hardware Design (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Image Generation (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

컴퓨터 시스템은 압축된 단순 삼각 메쉬를 저장 및 전송한다. 컴퓨터는 n-차원 공간내의 단순 삼각 그물을 표현하는 데이타 구조를 사용한다. 데이타 구조는 삼각 메쉬에 대한 연결성 정보를 제공하는 0 이상의 진행 레코드, 삼각 경로표, 정점 경로표를 갖는다. 데이타 구조는 또한 삼각 메쉬의 기하학적 정보를 포함하는 0 이상의 관련 데이타 레코드들을 갖는다. 삼각 경로표와 진행 레코드는 삼각 메쉬가 어떻게 구성되는지(따라서 다각 정점과 경계 에지가 어떻게 구성되는지)를 기술하는 정보를 갖는다. 정점 경로표는 다각형으로부터 삼각 메쉬를 구성하기 위한 부가적인 연결성 정보를 제공하는 정점 스패닝 트리를 기술한다. 관련 데이타 레코드는 공간내의 삼각 메쉬의 정확한 위치를 결정한다. 시스템은 또한 단순 삼각 메쉬로부터 이 데이타 구조를 생성하고, 컴퓨터간에 정보를 전송하며 이 전송된 정보를 압축 및 압축해제하는 방법을 포함한다.

Description

기하학적 모델을 압축 및 압축해제하는 컴퓨터 시스템과 압축 및 압축해제방법
본 발명은 컴퓨터 그래픽 분야에 관한 것이다. 보다 상세히 설명하면, 본 발명은 3 차원 기하학적 모델의 압축 전송(the compressed transmission) 및 저장에 관한 것이다.
기구적 컴퓨터 보조 설계(Mechanical Computer Aided Design)와 에니매이션(animation)에 있어서의 모델링 시스템들은 자신의 기하학적 영역(geometric domain)을 임의 형태 표면(free form surface)으로 확장하지만, 다면체 모델(poly-hedral models)은 여전히 제조(manufacturing), 구조(architectural), 지리적 정보 시스템(Geographic information systems), 지학(geoscience), 오락 산업(entertainment industries) 분야에서 사용되는 기본적인 3D 표변헙(the primary 3D representation)으로 남아 있다. 다면체 모델은 복잡한 컴퓨터 보조 설계 모델을 포함하는 비디오 게임, 가상 현실, 모의 비행(fly-through), 전자 모형 어플리케이션(electronic mock-up application)에 있어 중요한 하드웨어 지원 렌더링(hardware assisted rendering)에 대해 특히 효과적이다.
이미지 및 비디오 압축과 비교해 보면, 연구자 집단(the research community)과 3D 데이타 교환 표준위(3D data exchange standards committees) 둘 모두로부터, 3D 형상의 압축(the compression of 3D shapes)에 대해서는 주의가 덜 기울여져 왔다. 그러나, 이러한 압축에 대한 필요성이 세가지 이유로 급격히 대두되고 있다. 1) 산업용 컴퓨터 보조 설계의 모델이 급격히 복잡해짐에 따라 메모리와 이 메모리들에 의해 요구되는 보조 저장장치에 대한 비용이 현저히 증가한다. 2) 협력 설계, 게임실행(gaming), 신속한 프로토타입화(rapid prototyping), 가상적 상호작용(virtual interactions)을 위한 네트워크상에서의 3D 모델들의 분포는 이용가능한 밴드폭에 의해 심각하게 제한된다. 3) 높은 수준의 하드웨어 어댑터들의 그래픽 성능은 전체 모델을 저장하는데 불충분한 보드상 메모리(insufficient on-board memory)에 의해서 또는 데이타 전송 병목(a data transfer bottleneck)에 의해서 제한된다.
임의의 다각면을 쉽고 효율적으로 삼각분할하는 방법이 종래 기술분야에서 알려져 있으므로, 삼각 메쉬(triangular meshes)에 의해 정의된 기하학적 모델을 고려하는 것으로 충분하다. 삼각 메쉬는 n-차원 벡터인 자신의 정점 위치(기하도형적 배열)에 의해, 또한 각 삼각형과 그 지지 정점(sustaining vertices)간의 관련성(연결성(connectivity))에 의해, 또한 3D 기하도형적 배열(3D geometry)에는 영향을 미치지 않지만 명암이 드리워지는 방식(the way it is shaded)에는 영향을 미치는 컬러(colors) 노말(normals), 텍스처 좌표(texture coordinates)(측광법(photometry))에 의해 결정된다.
3D 기하학적 압축에 있어서 종래 기술은 단순화(simplification), 기하도형적 배열 인코딩(geometry encoding), 연결성 인코딩(connectivity encoding)의 세 가지 범주로 나뉘어질 수 있다.
다면체의 단순화 기법들은 단순화에 의해 야기될 수 있는 에러를 최소화하기 위해 모델의 연결성을 변경하고 나머지 정점의 위치를 적절이 조정함으로써 메쉬내의 정점의 수를 감소시킨다. 이러한 기법들은 가속화된 그래픽(accelerated graphics)에 대한 다중(multiple) 세부화 계층(levels of detail ; LOD)의 생성이나 과도-샘플링된(over-sampled) 메쉬에 대한 데이타 감소를 목적으로 한다. 이 기법들은 손실 압축기법(lossy compression)으로 간주될 수 있으나, 모델의 정확한 연결성에 대한 액세스를 요구하는 어플리케이션에는 적당하지 않다. 사실상 단순화 기법들은, 기하학적 압축이 각 세부화 계층에 적용될 수 있기 때문에, 여기서 기술된 압축기법에 대해 정통적(orthogonal)이다.
기하도형적 배열 인코딩 기법들은 정점 위치와, 가능하다면 컬러, 노말, 텍스처 좌표에 관련된 기하학적 데이타를 위해 필요로 하는 저장공간을 감소시키기 위해 손실(lossy) 또는 비손실(lossless) 압축기법을 사용한다. 기하학적 데이타 스트림에 범용 이진 압축 알고리즘(general purpose binary compression algolithms)을 적용함으로써 근사 최적해(suboptimal solution)를 찾을 수 있다. 기하학적 물체를 단위 입방체로 정규화하고 정점 좌표를 고정 길이 정수(fixed length integer)로 반올림하는 것을 포함하는 기하학적 압축 접근법은 마이클 디어링(Michael Deering)에 의하여 "Geometric Compression", Computer Graphics(proc. SIGGRAPH), pages 13--20, August 1995에 제시되고, 여기서 그 전체가 참고문헌으로서 인용되었다. 라운딩(rounding)은 손실된 정보량을 제어한다.
연결성 인코딩 기법들은 다면체나 삼각 메쉬에 대한 다수의 널리 보급되어 있는 표현법에 내재된 잉여도(redundancy)를 감소시키려고 한다. 예를 들면, 연결성 인코딩 기법은 정보의 손실없이 V 정점의 삼각 메쉬의 삼각형과 T 삼각형을 표현하는데 필요한 비트 수를 최소화하려 한다.
극단적으로, 정점이 항상 규칙적인 2D 그리드로 조직되면, 삼각 메쉬는 이 그리드의 로(rows)와 컬럼(columns)의 수에 의해 완전하게 정의될 수 있다. 규칙적인 그리드들은 지리적 정보 시스템에서의 지형 모델링(terrain modeling)과 바둑판 무늬로 균일하게 정돈되지 않은 사각 파라메트릭 패치(rectangular parametric patches)로 렌더링 하는데 적당할 수 있다. 그러나, 이것들은 컴퓨터 보조 설계와 오락시스템과 다른 어플리케이션에서 발견되는 보다 일반적인 3D 형상을 모델링하는데는 적합하지 않다.
다른 극단에서, T 삼각형과 V 정점의 삼각 메쉬의 정점 위치가 정점 위치 어레이로 표현될 수 있으며, 각 삼각형은 3 개의 지수에 의해 정점 위치 어레이로 표현될 수 있다. 이 해법은 메쉬에 임의의 위상적인 제한(topological limitations)을 부과하지는 않지만, 삼각형당 3 개의 어드레스(전형적인 삼각 메쉬에 대해서는 정점당 거의 6 개의 어드레스)를 저장할 것을 요구한다. 이 모델은 1000 개의 정점 미만으로 제한되었으나, 이 체계는 연결성 정보 하나에 대해 정점당 60개의 비트를 소모하게 된다.
(제이. 네이더(J. Neider), 티. 데이비스(T. Davis), 엠. 우(M. Woo)에 의해 OpenGL Programming Guide, Addison-Wesley, 1993에 제시되고, 여기서 그 전체로서 참고문헌으로서 인용된) 그래픽 응용 프로그래밍 인터페이스(application programming interfaces ; APIs)에 사용된 삼각 스트립(triangle strips)은 새로운 정점이 이전의 두 개의 정점과 결합되어 현재의 스트립(the current stirip)에 새로운 삼각형을 암시적으로 정의하는 절충안(a compromise)을 제공한다. 삼각 스트립은 계산에 상당한 부담이 따르는 기하학적 문제(a challenging computational geometry problem)인 긴 스트립을 만들 수 있는 경우에만 성과가 있다. 또한, 정점은 동일한 삼각 스트립의 일부로서 또는 두 개의 상이한 삼각 스트립의 일부로서 평균적으로 두 번 사용되기 때문에, OpenGL을 갖는 삼각 스트립을 사용하면 대부분의 정점을 여러번 보낼 것을 요구한다. 교환 동작(swap operation)이 없으면 이러한 잉여도가 더욱 증가한다.
압축해제 동안 모든 정점의 위치가 무작위로 액세스하는데 이용가능한 압축기법으로서 삼각 스트립을 적용하면, 삼각형당 한 개의 정점 조회(vertex reference), 스트립당 두 개의 정점 조회, 스트립의 수와 길이에 대한 정보를 보유하는 북(book), 이전 삼각형의 빗변(open side)이 다음 삼각형의 밑변(basis)으로 사용되어야 함을 표시하는 삼각형당 부가적인 정보 비트(이 비트는 GL에서의 SWAP 동작과 같다)를 저장할 것이 여전히 요구된다.
디어링의 방법에 있어서, 스택-버퍼는 모델의 모든 정점을 무작위로 액세스하는 대신 이전에 사용된 정점중 16 개의 정점을 저장하는데 사용된다. 이것은 매우 제한된 보드상 메모리를 갖는 어댑터에 대한 적절한 해결책이다. 디어링은 또한 새로운 정점이 어떻게 사용되는지에 보다 일반적인 제어법을 제공하고 스택상의 현재 정점을 일시적으로 포함하여 스택-버퍼의 16개의 정점중 임이의 한 정점을 재사용하게 함으로써 삼각 스트립 신택스(the triangle strip syntax)를 일반화한다. 이러한 연결성 정보에 대한 저장 비용은, 옛 정점(an old vertex)이 재사용될 때마다, 정점이 스택-버퍼상에 푸쉬되어야 하는지 여부를 표시하기 위해 정점당 1 비트, 현재 스트립이 어떻게 계속되고 있는지를 표시하기 위해 삼각형당 2 비트, 새로운 정점이 판독되어야 하는지 또는 스택-버퍼로부터의 정점이 사용되어야 하는지 여부를 표시하기 위해 삼각형당 1 비트, 스택-버퍼로부터 정점을 선택하기 위하여 어드레스에 대해 4 비트이다. 각 정점이 한 번만 재사용된다고 가정하면, 연결성 정보를 인코딩하기 위한 총 비용은 정점당 1+4 비트 더하기 삼각형당 2+1 비트이다. 정점당 2 개의 삼각형을 가정하면, 총 비용은 대략 정점당 11 비트이다. 우리가 알고 있는 한, 디어링의 일반화된 삼각 메쉬 신택스를 사용하는 일반적인 메쉬의 양호한 트래버설(good traversals)을 시스템에 의해 체계적으로(systematically) 생성하는 알고리즘은 아직 개발되지 않았다. 메쉬의 최초 트래버설은 정점의 상당한 부분이 한 번 이상 보내어 질 것을 의미하는 다수의 고립된 삼각형이나 작은 경로를 초래할 수도 있으며, 이로인해 삼각형당 비트 수를 증가시킬 수도 있다.
연결성 인코딩에 대한 종래의 방법중 어느 것도 삼각 메쉬의 원래의 연결성을 유지하지 않는다. 이 모든 방법들은 삼각 메쉬를 연결된 삼각형 서브세트로 분할한다. 2 이상의 부분에 의해 공유된 정점들이 여러번 표시된다. 이것은 압축방법이 컴퓨터내의 그래픽 어댑터와 CPU간의 통신 밴드폭을 더 잘 활용할 수 있도록 사용된다는 것을 의미하지만, 이러한 연결성의 변화는 원래의 메쉬의 위상적인 특성을 유지할 것을 요구하는 다른 어플리케이션에서는 심각한 단점이 된다.
도 1a와 도 1b를 포함하는 도 1은 종래 기술인 트리에 대한 예이다. ("알이. 타잔(R.E. Tarjan)"에 의해 Data Structures and Network Algorithms, SIAM, 1983에 제시되고 여기서 그 전체가 참고문헌으로 인용된) 종래 기술은 트리(1000)가 1 이상의 노드와 각각 한 쌍의 노드를 연결하는 1 이상의 에지를 포함한다는 것을 인식하고 있다. 한 개의 에지(1015)에 의해 다른 노드(1030)에 연결된 노드(1010)는 리프 노드(a leaf node)이다. 두 개의 에지(1025, 1035)에 의해 두 개의 다른 노드(1030, 1050)에 연결된 노드(1020)는 정규 노드(a regular node)이다. 세 개 이상의 에지(1015, 1035, 1045)에 의해 제각기 노드(1010, 1020, 1055)에 연결된 노드(1030)는 브랜칭 노드(a branching node)이다. 트리는 1 이상의 경로들(runs)의 세트로서 기술될 수 있다. 이 시퀀스는 리프 노드나 브랜칭 노드인 최초 노드(a first node), 정규 노드인 0 이상의 중간 노드(intermediate nodes), 리프 노드나 브랜칭 노드인 최종 노드(a last node)를 갖는다. 예를 들면, 리프 노드(1040), 정규 노드(1050, 1020), 브랜칭 노드(1030)가 경로(1040, 1050, 1020, 1030)을 정의한다.
루트형 트리(a rooted node)(1100)는 자신의 노드(1100)중 하나가 루트 노드(a root node)로서 표시된 트리이다. 루트 노드는 에지에 의해 연결된 각 노드 쌍들간의 패어런트-차일드 관계(a parent-child)를 결정한다. 루트 노드는 또한 각 경로의 최초 노드 및 최종 노드를 결정한다. 루트 노드는 루트형 트리의 트래버설 순서(a order of traversal)를 부분적으로 결정한다. 트래버설 순서를 완전하게 특정하기 위해서는, 경로들이 각각 공통의 최초 노드를 공유하는 모든 경로로 이루어진 1 이상의 공통의 최초 노드 경로의 세트들(sets of common first node runs)로 더 분할되어야 하며, 순서화(ordering)는 공통의 최초 노드 경로들의 세트중 각 한 세트내의 경로에 주어져야 한다. 예를 들면, 루트형 트리(1100)의 루트 노드로서 노드(1110)를 선택하면 노드(1120)와 (1150)이 제각기 경로(1120, 1130, 1140, 1150)의 최초 노드 및 최종 노드이며, 노드(1120)과 (1180)은 제각기 경로(1120, 1160, 1170, 1180)의 최초 노드 및 최종 노드이다. 그러나 이들 두 개의 경로중 어느 것이 먼저 트래버스되는 지는 노드(1110)를 트리의 루트 노드로서 선택한다고 해서 결정되지는 않으며, 명시적으로 특정되어야 한다.
도 2a, 도 2b, 도 2c, 도 2d, 도 2e를 포함하는 도 2는 종래의 삼각 메쉬에 대한 예이다. 삼각 메쉬(2100)는 정점 (2110), 에지(2120), 삼각형(2130)으로 이루어진다.
삼각 메쉬상의 패스(path)는 비반복적(non-repeated) 정점의 시퀀스로서 각각의 이어진 정점 쌍들은 에지에 의해 연결된다. 패스의 최초 및 최종 정점은 패스에 의해 "연결되었다(connected)"고 한다. 예를 들면, 정점(2140)과 정점(2165)은 정점(2140, 2150, 2160, 2165)에 의해 형성된 시퀀스로 정의된 패스에 의해 연결된다. 모든 정점 쌍들이 패스에 의해 연결된 경우 삼각 메쉬가 "연결되었다"고 한다. 예를 들면, 삼각 메쉬(2100)는 연결되었고 삼각 메쉬(2200)는 연결되지 않았다. 삼각 메쉬가 연결되지 않았으면, 이 삼각 메쉬는 원래의 삼각 메쉬의 정점, 에지, 삼각형의 서브세트로 이루어진 2 이상의 연결형 성분(connected components)으로 이루어지며, 삼각 메쉬의 2 개의 정점이 패스에 의해 연결된다면 이 정점들은 동일한 연결형 성분에 속한다. 예를 들면, 삼각 메쉬(2200)는 두 개의 연결형 성분인 삼각 메쉬 (2210)과 (2220)로 이루어져 있다. 정점 (2230)과 (2240)은 패스에 의해 연결될 수 있으므로 동일한 연결형 성분에 속한다. 정점 (2230)과 (2250)은 서로 연결될 경로가 없으므로 다른 연결형 성분에 속한다.
삼각 메쉬의 에지가 정확히 한 개의 삼각형에 속하면 이 에지는 "경계 에지(a boundary edge)"이고, 정확히 두 개의 삼각형에 의해 공유되면 "내부 에지(a internal edge)"이며, 세 개 이상의 삼각형에 의해 공유되면 "특이 에지(a singular edge)"이다. 예를 들면, 삼각형(2300)의 에지(2350)는 경계 이지이고, 삼각 메쉬(2100)의 모든 에지는 내부 에지이며, 삼각형 (2300)의 에지(2340)는 삼각형(2310), (2320), (2330)에 의해 공유되므로 특이 에지이다. (경계 에지와 내부 에지는 또한 정상(regular) 에지로 지칭됨에 유의하자.) 주어진 정점을 제외하고 그 정점을 포함하는 삼각 메쉬의 모든 삼각형의 정점들의 세트가 한 개의 경로를 정의하도록 재순서화될 수 있다면 삼각 메쉬의 그 정점은 정상 정점이다. 정점이 정상 정점이 아니면 그것은 "특이 정점"이다. 예를 들면, 삼각 메쉬(2100)내의 모든 정점은 정상 정점이며, 삼각형(2400)의 정점(2410)은, 정점(2410)을 제외하고는 정점(2410)에 인접한 모든 삼각형의 정점을 재순서화하여 한 개의 경로를 형성할 수 있는 방법이 없기 때문에 특이 정점이다. 삼각 메쉬가 1 이상의 경계 예지를 갖는다면 이 삼각 메쉬는 경계(boundary)를 갖는다. 예를 들면, 삼각 메쉬 (2100)과 (2200)은 경계를 갖지 않고, 삼각 메쉬 (2300)과 (2400)은 경계를 갖는다. 삼각 메쉬가 특이 정점과 특이 에지를 한 개도 갖지 않는다면 이 삼각 메쉬는 "매니폴드(a manifold)"이다. 삼각 메쉬는 매니폴드가 아니면 "논-매니폴드(non-manifold)"이다. 예를 들면, 삼각 메쉬 (2100)과 (2200)은 매니폴드이지만 삼각 메쉬(2300)는 논-매니폴드이다.
삼각 메쉬의 삼각형의 방위(orientation)는 순환적 교환(cyclical permutation)에 의한 삼각형의 세 개의 정점의 순서화(ordering)이다. 따라서, 삼각 메쉬의 삼각형은 두 개의 가능한 방위를 갖는다. 예를 들면, 정점 (2110, (2170), (2180)으로 이루어진 삼각형(2130)의 두 개의 상이한 방위는 순서화 (2110, 2170, 2180)와 (2180, 2170, 2110)이다. 그러나 순서화 (2110, 2170, 2180)와 (2180, 2110, 2170)은 순환적 교환에 의해 관련되어 있기 때문에 동일한 삼각형 방위를 정의한다.
삼각 메쉬의 에지의 방위는 에지의 두 개의 정점의 두 개의 가능한 순서화중 하나이다. 예를 들면 삼각 메쉬(2100)의 에지(2120)에 대한 두 개의 방위는 정점(2110)과 (2170)의 순서화 (2110, 2170)과 (2170, 2110)으로 정의된다. 에지의 두 방위는 서로 반대가 된다. 삼각형의 방위는 세 개의 인접한 에지에 대해 일정한 방위를 유도한다. 예를 들면 방위(2110, 2170, 2180)는 삼각형(2130)의 세 개의 에지에 대한 일정한 방위 (2110, 2170), (2170, 2180), (2180, 2110)을 유도한다. 매니폴드 삼각 메쉬는, 삼각 메쉬의 각 내부 에지에 있어서 에지에 인접한 두 개의 삼각형이 공통 에지에 대하여 반대 방위를 야기하는 식으로 삼각 메쉬의 각 삼각형에 대한 방위가 선택될 수 있다면, "방위지정가능(orientable)"하다. 매니폴드 삼각 메쉬가 방위지정가능하지 않으면 "방위지정불가능(non-orientable)"하다. 모든 논-매니폴드 삼각 메쉬는 방위지정불가능하다. 예를 들면, 삼각 메쉬(2100)는 방위지정가능하고 삼각 메쉬(2500)는 방위지정불가능하다.
V 정점, E 에지, T 삼각형을 갖는 삼각 메쉬의 오일러 특성은 수(number)= V - E + F 이다. ("더블유. 에스. 매세이(W. S. Massey)"에 의해 Algebraic Topology : An Inroduction, Harcourt, Brace & World, 1967에 제시되고, 여기서 그 전체가 참고문헌으로서 인용된) 종래 기술에서 동일한 오일러 특성을 갖는 두 개의 연결형 매니폴드 삼각 메쉬가 둘다 방위지정가능하거나 둘다 방위지정불가능하면 서로 연속적으로 변형될 수 있다는 것이 알려져 있다.
V 정점과 T 삼각형을 갖는 삼각 메쉬는 대개 "정점 위치 어레이(a vertex position array)"와 "삼각 어레이(a triangle array)"로 ("폴리 등(foley et.al)"에 의해 Computer Graphics : Principles and Practice, Addison-Wesley에 제시되고, 여기서 그 전체가 참고문헌으로서 인용된) 종래 기술에서 표현된다. 삼각 메쉬의 각 정점의 위치는 부동 소수점 좌표(floating poing coordinates)에 의해 정점 위치 어레이로 표현된다. 삼각 메쉬의 각 삼각형은 정점 위치 어레이에 대한 세 개의 지수에 의해 삼각 어레이로 표현된다.
설명을 위해, "단순 삼각 메쉬(a simple triangular mesh)"는 연결되고 방위지정되고 매니폴드이고 경계가 없으며 오일러 특성이 2인 n-차원 정점을 갖는 삼각 메쉬이다. 예를 들면 삼각 메쉬(2100)는 3-차원 공간에서의 단순 삼각 메쉬이다. 예를 들면, 모든 단순 삼각 메쉬는 공간을 삼각분할하고 연속적으로 변형시킴으로써 얻어질 수 있다.
본 발명의 목적은 단순 삼각 메쉬를 압축, 저장, 전송, 압축해제하는 개선된 시스템 및 방법을 제공하는 것이다.
본 발명의 목적은 단순 삼각 메쉬의 연결성 정보를 나타내는, 즉 단순 삼각 메쉬의 정점들이 정보의 손실없이 압축된 형태로 메쉬의 삼각면을 형성하는 개선된 시스템 및 방법을 제공하는 것이다.
본 발명의 목적은 압축된 형태로 단순 삼각 메쉬의 정점, 위치, 노말, 컬러, 텍스처 좌표를 나타내는 개선된 시스템 및 방법을 제공하는 것이다.
제1a도 및 제1b도를 포함한 제1도는 종래기술인 트리의 예에 관한 도면
제2a도, 제2b도, 제2c도, 제2d도, 제2e도를 포함하는 제2도는 종래기술인 삼각 메쉬의 예에 관한 도면
제3도는 트리를 나타내는 데이타 구조에 대한 블럭도
제4도는 제각기 루트형 트리의 노드와 연관된, n-차원 공간내의 점들의 세트를 나타내는 데이타 구조에 대한 블럭도
제5도는 n-차원 공간에 단산 삼각 메쉬를 나타내기 위해 본 발명에 제시된 데이타 구조에 대한 블럭도
제6a도, 제6b도, 제6c도, 제6d도, 제6e도, 제6f도를 포함하는 제6도는 제5도의 데이타 구조의 성분과 삼각 메쉬의 요소간의 관계를 예시한 도면
제7도는 1 이상의 진행 커맨드 시퀀스를 갖는 진행 레코드의 구성을 예시한 도면
제8도는 단순 삼각 메쉬를 압축하는 방법에 대한 흐름도
제9a도, 제9b도, 제9c도, 제9d도를 포함하는 제9도는 상이한 전략으로 상이한 수의 경로를 갖는 삼각 스패닝 트리와 정점 스패닝 트리를 생산하는 것을 도시한 도면
제10도는 정점 스패닝 트리와 삼각 스패닝 트리를 생성하는 한 개의 바람직한 실시예에서 수행된 단계를 도시하는 흐름도
제11도는 정점 스패닝 트리와 삼각 스패닝 트리를 생성하는 다른 바람직한 실시예에 의해 수행된 단계를 도시하는 흐름도
제12도는 삼각형의 레이어링(layering)을 도시한 도면
제13도는 정점 경로표내에 값들을 입력하는 흐름도
제14도는 삼각 경로표내에 값들을 입력하는 흐름도
제15도는 바람직한 압축 방법에 관한 단계를 도시하는 흐름도
제16도는 Y 본딩 루프 노드, 즉 삼각 트리내의 브랜칭 포인트에 삼각형을 생성하는 법을 예시하는 도면
제17도는 본 발명의 바람직한 실시예가 동작하는 컴퓨터 시스템을 도시하는 블럭도
제18도는 통신 링크를 통해 제 2 컴퓨터에 접속된 제 1 컴퓨터를 도시하는 블럭도
〈도면의 주요부분에 대한 부호의 설명〉
5000 : 데이타 구조 5030 : 정점 경로표
5040 : 정점 경로 레코드 5050 : 정점 경로 길이 필드
5060 : 정점 리프 필드 5070 : 정점 최종 필드
5085 : 관련 데이타 필드 5090 : 부가적 데이타 레코드
5095 : 부가적인 데이타 필드 5130 : 삼각 경로표
5140 : 삼각 경로 레코드 5150 : 삼각 경로 길이 필드
5160 : 삼각 리프 필드 5180 : 진행 레코드
5185 : 삼각 루트 필드 5190 : 진행 커맨드 시퀀스
본 발명은 단순 삼각 메쉬를 압축, 저장, 전송, 압축해제하는 컴퓨터 시스템 및 방법에 관한 것이다.
컴퓨터는 단순 삼각 메쉬를 압축된 형태로 표현하는 데이타 구조를 사용한다. 데이타 구조는 단순 삼각 메쉬의 연결성 정보를 기술하는 삼각 경로표, 한 개의 진행 레코드(marching record), 정점 경로표를 갖는다. 데이타 구조는 또한 단순 삼각 메쉬의 정점의 위치를 기술하는 정보를 갖는 선택사양적인 관련 데이타 레코드를 갖는다. 데이타 구조는 또한 각각 단순 삼각 메쉬의 컬러, 노말, 텍스처 좌표중 하나를 기술하는 정보를 갖는 1 이상의 부가적인 데이타 레코드를 가질 수도 있다.
단순 삼각 메쉬는 삼각분할된 다각형으로 표현될 수 있다. 다각형내의 삼각형은 다각 삼각형(polygon triangle)이라고 지칭되며, 삼각분할된 다각형에는 내부 정점이 없고, 다각형의 경계는 폐쇄상태(closed)이며, 삼각 메쉬의 각 정점은 다각형의 경계에 있는 1 이상의 정점에 대응한다. 삼각 경로표와 진행 레코드는 다각형이 어떻게 삼각분할되는 지를 결정한다. 삼각분할된 다각형으로부터 삼각 메쉬를 재생성하기 위해서, 삼각분할된 다각형의 경계상에 있는 정점이 정점 경로표에 의해 정의된 정점 스패닝 트리를 트래버스함으로써 연결된다.
삼각 메쉬(예를 들면, 표면)를 삼각분할된 다각형으로 바꿈(및 그 역으로 바꿈)으로써, 삼각 메쉬에 대한 정보가 효율적으로 저장, 압축, 전송, 압축해제될 수 있다.
삼각 경로표는 삼각 스패닝 트리를 기술한다. 삼각 스패닝 트리는 삼각 노드와 삼각 에지를 갖는다. 각각의 삼각 노드는 다각 삼각형에 연관된다. 다수의 이들 다각 삼각형은 다각형을 삼각분할한다. 이렇게 함으로써, 모든 다각 정점들이 다각 경계상에 존재하는, 다각 정점과 다각 경계를 갖는 다각형을 만들 수 있다. 다각 삼각형의 에지중 몇 개는 경계 에지로 지칭되며, 다각 경계상에 존재하고 두 개의 다각 정점을 연결한다. 다각 삼각형의 나머지 에지는 내부 에지로 지칭되며, 두 개의 다각 삼각형에 의해 제각기 공유되고 다각형의 내부에 존재한다.
진행 레코드는 삼각 스패닝 트리를 트래버스함으로써 어떻게 다각 삼각형을 만들 수 있는지(따라서, 다각 정점과 경계 에지를 만들 수 있는지)를 기술하는 부가적인 정보를 갖는다.
정점 경로표는 정점 스패닝 트리를 기술한다. 정점 스패닝 트리는 정점 트리 노드와 정점 트리 에지를 갖는다. 정점 스패닝 트리는 다각형으로부터 단순 삼각 메쉬를 만들기 위해 부가적인 연결성 정보를 제공한다. 정점 스패닝 트리를 트래버스하는 동안, 경계 에지쌍들은 단순 삼각 메쉬의 단일 에지인 것으로 식별된다. 따라서, 정점 스패닝 트리를 트래버스함으로써 단순 삼각 메쉬의 정점과 정점 트리 노드 간의 1 대 1 대응성을 설정한다.
일단 단순 삼각 메쉬의 연결성 정보가 설정되면, 부가적인 데이타 레코드내에 포함된 정보가 단순 삼각 메쉬의 정점 위치를 결정한다. 선택 사양인 부가적 데이타 레코드내에 포함된 정보는 삼각 메쉬의 컬러, 노말, 텍스처 좌표를 결정한다.
본 발명은 단순 삼각 메쉬를 이러한 데이타 구조로 표현함으로써 압축하고 이러한 데이타 구조로 표현된 단순 삼각 메쉬를 압축해제하며, 컴퓨터간에 이러한 데이타 구조로 표현되어 있는 단순 삼각 메쉬를 전송하는 시스템 및 방법을 포함한다.
컴퓨터 그래픽에서, 기하학적 객체나 모델은 단순 삼각 메쉬에 의해 더 잘 표현될 수 있는 삼각 메쉬로 표현될 수 있다. 이 것을 설명하는데 있어, 이 메쉬들의 예가 도 6 및 도 9에 도시딘다. 도 8에 도시된 압축 방법(8000)에서, 이 메쉬들은 도 6b에 기술된 특정 방법으로 에지를 따라 절단되어 삼각 메쉬(예를 들면 도 6a에서의 기하학적 객체)의 삼각분할된 다각형(도 6e) 표현을 생성할 수 있다. 다각형의 삼각분할은 삼각 경로표와 진행 레코드에 의해 주어진 정보로 정의된다(일반적으로는 도 5를 참조하고, 한 세트의 점들을 사용한 특정 실시예에 대해서는 도 3 및 도 4를 참조한다). 삼각분할된 다각형으로부터 삼각 메쉬를 재구성하는데 요구되는 다른 정보는 정점 경로표에 보존되어 있다. 이 정보는 삼각 메쉬의 정점에 대한 위치 정보와 함께 도 5에 도시된다. 삼각 메쉬를 재구성하는데 사용된 압축해제 방법이 도 15에 도시된다.
n 차원 공간내의 점들의 세트(삼각 메쉬의 서브세트, 즉 그 정점들)를 나타내는데 사용된 한 개의 다른 실시예가 도 3과 도 4에 도시된 데이타 구조로 기술된 정보를 사용한다. 공간내의 점들의 세트를 처리하는 이 실시예에서, 점들은 에지에 의해 연결되고 이 점들과 에지들은 트리로 표현될 수 있다. 트리의 노드들은 제각기 이 점들중 하나와 연관된다. 적절한 순서로 트리를 트래버스함으로써, 점들은 자신의 원래 위치로 공간내에 위치될 수 있다. 도 3은 트리를 정의하는 데이타를 포함하고 도 4는 점들이 서로 관련되어 공간내에 위치한 경우를 정의하는 데이타를 포함한다. 도 15에 도시된 방법은 트리로부터 공간내의 점들을 재생성하기 위해 이 데이타 구조들상에서 동작한다.
도 3은 루트형 트리를 나타내는 데이타 구조(3000)에 대한 블럭도이다. 이것은 1 이상의 레코드들(records)(3300)로 구성된 경로표(a table of runs)(3200)로 이루어진다. 각각의 레코드(3300)는 루트형 트리의 경로를 나타내며 경로 길이 필드(a length of run field)(3400), 리프 필드(a leaf field)(3500), 최종 필드(a last field)(3600)로 이루어진다. 경로 길이 필드(3400)는 경로의 최초 노드와 최종 노드를 연결하는 에지 수이다. 리프 필드(3500)는 경로내의 최종 노드가 리프 노드인지 여부를 표시한다. 공통의 최초 노드로부터 시작하는 몇 개의 경로들이 있을 수 있다. "최종" 필드(3600)는 해당 경로가 공통의 최초 노드에서 시작하는 경로들의 세트중 최종 경로인지 여부를 표시한다. 표에서 레코드들의 순서는 루트 노드에 의해 정의된 루트형 트리의 트래버설 순서와 공통의 최초 노드 경로들의 세트중 각 세트내의 경로에 할당된 순서화에 의해 결정된다. 순서는 아래에 기술될 압축 방법에 의해 정의된다.
도 4는 각기 루트형 트리의 노드에 관련된 n 차원 공간내의 점들의 세트를 나타내는 데이타 구조(4000)에 대한 블럭도이다. 데이타 구조(4000)는 루트형 트리를 나타내는 데이타 구조(3000)와 이 점들중 한 점의 위치에 대한 정보를 갖는 1 이상의 관련 데이타 필드(4300)를 갖는 한 개의 부가적인 데이타 레코드(4200)로 이루어진다.
루트형 트리내에는, 페어런트-차일드 관계로 결정된 각 노드로부터 루트 노르에 이르는 유일한 패스가 있다. 각 노드로부터 루트 노드에 이르는 유일한 패스는 이 노드와 이 노드의 0 이상의 선조 노드(ancestor node)로 이루어지며, 이어진 각각의 노드 쌍들은 에지로 연결된다. 루트형 트리에서의 노드의 근접성(proximity)은 종종 n-차원 공간내의 대응하는 점들의 기하학적 근접성(geometric proximity)을 함축하고 있기 때문에, 바람직한 실시예에서 본 발명은 또한 루트형 트리내의 각 노드의 1 이상의 선조 노드에 관련된 점들의 위치를 사용하여 각 점들의 예상 위치(a predicted position)를 추측한다. 이어서 이 점의 예상 위치와 실제 위치간의 차이를 표시하는 교정항(a corrective term)이 사용된다. 한 개의 바람직한 실시예에서, 관련된 데이타 필드(4300)는 교정항이다.
예를 들면, 도 1b에서, 루트형 트리(1100)의 노드들이 n-차원 공간내의 점들과 관련되어 있으면, 노드(1130)로부터 루트 노드(1110)에 이르는 패스는 두 개의 선조 노드(1120, 1110)로 이루어진다. 점(1130)의 위치는 예상 위치(1090)에 교정항(1097)을 더함으로써 얻어진다.
각 노드의 깊이(depth)는 이 노드로부터 루트 노드까지의 유일한 패스상의 노드들을 연결하는 에지 수이며, 루트 노드의 깊이는 0이 된다. pn이 깊이 n인 노드에 관련된 점의 위치를 표시할 때, n =( 1 K n-1 n-K n
루트형 노드의 상부 노드(top node)는 K 개의 선조 노드를 갖지 않을 수도 있기 때문에, 루트 노드가 마이너스 깊이(negative depth)를 갖는 각 선조 노드들 대신에 사용됨을 유의해야 한다. 바람직한 실시예에서, λ=(λ1,…,λK)와 K가 예측자(predictor)의 파라미터들일 때, 예측 함수는 다음 수학식에 의해 정의된 선형 예측자(a line predictor)이다.
K = 1, λ1= 1 을 선택함으로써, 디어링에 의해 사용된 델타가 특정 경우로서 포함된다는 것을 주지하여야 한다. 보다 바람직한 실시예에서, 파라미터 λ1, …, λK는 삼각 메쉬의 모든 정점에 대응하는 교정항 제곱의 합을 최소화하도록 선택된다.
따라서, (4300)은 예상 위치로부터 실제 위치까지 노드를 이동시키는데 사용되는 교정항 εn이다.
바람직한 구현에 있어서, 점들의 위치는 양자화, 즉 고정된 점 표현 체계(a fixed representation scheme)에서 가장 가까운 수로 절단된다. 보다 바람직한 구현에 있어서, 각 관련 데이타 필드(4300)는 교정항 n이다. 보다 바람직한 다른 구현에서는, 관련 데이타 레코드들이 압축된다. 보다 바람직한 또 다른 구현에 있어서, 관련 데이타 레코드들은 ("씨. 더블유. 브라운(C. W. Brown)과 비. 제이. 쉐퍼드(B. J. Shepherd)"에 의해 Graphics File Formats, Prentice Hall, 1995에 제시되고, 여기서 그 전체로서 참고문헌으로 인용된) 엔트로피 인코딩(entropy encoding)에 의해 압축된다.
도 5는 n-차원 공간내의 단순 삼각 메쉬를 나타내기 위해 본 발명에서 제시된 데이타 구조(5000)에 대한 블럭도이다. 데이타 구조는 다음과 같이 구성된다.
1) 제각기 정점 경로 길이 필드(5050), 정점 리프 필드(5060), 정점 최종 필드(5070)를 갖는 1 이상의 정점 경로 레코드(5040)을 갖는 정점 경로표(5030)에 의해 기술된 정점 스패닝 트리.
2) 제각기 삼각 경로 길이 필드(5150)와 삼각 리프 필드(5160)를 갖는 1 이상의 삼각 경로 레코드(5140)를 갖는 삼각 경로표(5130)에 의해 기술된 삼각 스패닝 트리.
3) 삼각 루트 필드(5185)─상기 삼각 루트 필드(5185)는 삼각 스패닝 트리의 삼각 루트 노드에 관련된 삼각형을 구성하는 법을 기술함─와 1 이상의 진행 커맨드(5190) 시퀀스─상기 각 진행 커맨드 시퀀스(5190)는 삼각 경로의 왼쪽 경로 경계 또는 오른쪽 경로 경계 중 하나를 따라 다음 정점으로 진행함으로써 삼각 경로 중 하나로부터 삼각형을 구성하는 법을 표시함─를 갖는 진행 레코드(5180).
4) 제각기 단순 삼각 메쉬의 한 정점의 위치에 대한 정보를 갖는 1 이상의 관련 데이타 필드(5085)를 갖는 (선택사양인) 관련 데이타 레코드(5080).
5) 제각기 단순 삼각 메쉬의 컬러나 노말이나 텍스처 좌표 벡터에 대한 한개의 정보를 갖는 1 이상의 부가적인 데이타 필드(5095)를 갖는 1이상의 (선택사양인) 부가적 데이타 레코드(5090).
도 6a, 도 6b, 도 6c, 도 6d, 도 6e, 도 6f를 갖는 포함하는 도 6은 데이타 구조(5000)의 성분과 삼각 메쉬의 요소간의 관계를 예시한다.
도 6a는 정점 스패닝 트리(6100)를 생성하도록 선택되고 또한 도 6c에서 개략적으로 도시된 1 이상의 에지를 갖는 단순 삼각 메쉬(6000)(기하학적 모델)를 도시한다. 단순 삼각 메쉬는 도 6b에서 정점 스패닝 트리(6100)의 에지를 따라 절단되며, 이 절단에 의해 생성된 경계가 도 6d에 도시된다. 도 6e는 삼각 메쉬를 "평탄화 함(flatterning)"으로써, 즉 삼각 메쉬의 모든 정점과 절단 에지를 한 평면상에 둠으로써 생성된 삼각분할된 다각형(6500)을 도시한다(이것은 오렌지 껍질을 자르고, 오렌지로부터 껍질을 벗겨, 이 껍질을 테이블위에 평평하게 놓는 것을 상상함으로써 알 수 있다). 도 6f는 삼각분할된 다각형(6500)상의 (6600)에 중첩된 삼각 스패닝 트리(6690)를 도시한다. 압축 방법(8000)에 대한 도 8을 사용하여, 데이타 구조(5000)가 보다 압축된 형태로 삼각 메쉬(6000)를 표현하기 위해 사용된다.
도 15에 기술된 압축해제 방법은 삼각 경로표(5130)에 의해 기술된 삼각 스패닝 트리(6690)를 트래버스하며, 진행 레코드(5180)내의 정보를 사용하여 삼각분할된 다각형(6500)이 유일하고 완전하게 정의된다. 정점 경로표(5030)에 의해 기술된 정점 스패닝 트리(6300, 도 6c)를 트래버스함으로써, 삼각분할된 다각형(6500)이 도 6a에서의 삼각 메쉬(6000)을 재생성하기 위해 "함께 이어붙여(stitch)"진다.
본 발명에 있어서, 단순 삼각 메쉬(6000)는, 단순 삼각 메쉬의 정점과 에지에 의해 정의된 그래프상에서, 루트형 트리인 정점 스패닝 트리(6100)에 의해 압축된 형태로 표현된다. n-차원 공간내의 점들의 세트로 간주되는 메쉬의 정점들의 집합과 정점 스패닝 트리는 정점 경로표(5030)에 의해 데이타 구조(5000)로 표현되고, 관련 데이타 레코드(5080)는 n-차원 점들의 집합이 경로표(3200)에 의해 본 발명에 표현된 법에 유사하게 표현되고, 관련 데이타 레코드(3100)는 도 4의 데이타 구조(4000)로 표현된다. 선택사양적으로, 부가적인 데이타 레코드(5090)가 컬러, 노말, 텍스처 좌표에 대한 부가적인 정보를 포함할 수도 있다.
메쉬가 정점 트리 에지를 따라 절단되며, 정점 스패닝 트리(6100)는 2 이상의 바운딩 루프 에지(bounding loop edge)를 갖는 바운딩 루프(bounding loop)가 된다. 도 6b는 정점 트리 에지를 따라 메쉬를 절단함으로써 생성된 위상적인 불일치를 인위적으로 크게 함으로써 바운딩 루프(6200)를 형성하는 것을 예시한다. 절단 후, 각 정점 트리 에지(6105)는 두 개의 바운딩 루프 에지(6205, 6215)에 대응한다. 정점 트리 에지(6105)와 바운딩 루프 에지(6205, 6215)간의 대응성이 정점 스패닝 트리(6100,6300)에 의해 암시적으로 기술된다. 이러한 대응성은 아래의 압축 및 압축해제 방법에서 사용될 것이며, 대응성이 암시적이기 때문에 대응서에 대한 정보는 유지될 필요가 없다. 본 발명에서 정점 트리 에지는 또한 절단 에지(cutedge)(6105)로 지칭된다.
도 6d는 바운딩 루프(6200)에 대한 개략적인 표현을 도시한다. 바운딩 루프(6200)는 1 이상의 바운딩 루프 노드, 예를 들면 (6401)을 갖는다(바운딩 루프(6200, 6400)는 또한 삼각분할된 다각형(6500)의 경계임을 주지해야 한다). 정점 스패닝 트리의 각 노드, 예를 들면 (6301-6304)는 1 이상의 바운딩 루프 노드에 대응한다. 예를 들면, 정점 스패닝 트리의 각 정점 리프 노드(6301)는 한 개의 바운딩 루프 노드(6401)에 대응한다. 정점 스패닝 트리의 각 정점 정규 노드(6302)는 두 개의 바운딩 루프 노드(6402, 6403)에 대응한다. 정점 스패닝 트리의 각 정점 브랜칭 노드(6304)는 3 이상의 바운딩 루프 노드(6404, 6405, 6406, 6407, 6408)에 대응한다.
압축 방법(8000)은 정점 스패닝 트리(6300)의 트래버설(6380)의 정점 순서를 정의하며, 압축해제 방법(15000)은 정점 스패닝 트리(6300)의 트래버설(6380)의 정점 순서를 이용하여 삼각분할된 다각형(6500)을 "함께 이어붙이다". 트래버설(6380)의 정점 순서는 압축(8000)과 압축해제(15000) 방법들이 정점 스패닝 트리(6300)의 정점 경로를 트래버스하는 순서로 정의된다. 예를 들면, 트래버설(6380)의 정점 순서는 첫 번째로 (6310), 두 번째로 (6320), 세 번째로 (6330), 네 번째로 (6340), 다섯 번째로 (6350)인 정점 경로를 트래버스하는 것이 된다. 바람직한 실시예에서, 트래버설 (6380)의 정점 순서는 정점 경로(5040)(3300)가 압축 방법(8000)에 의해 정점 경로표 (5030)(3200)에 위치되는 순서로 표현된다.
삼각 메쉬(6000)가 절단 에지를 따라 절단되며, (내부 정점이 없는) 삼각분할된 다각형(6500)이 만들어 진다. 도 6e는 인위적으로 평탄화된 바운딩 루프(6400)로 둘러쌓인 삼각분할된 다각형(6500)을 도시한다. 바운딩 루프 노드(6401, 6402, 6403, 6404, 6405, 6406, 6407, 6408)는 삼각분할된 다각형(6500)의 다각 정점(6501, 6502, 6503, 6504, 6505, 6506, 6507, 6508)에 대응한다. 바운딩 루프(6400)는 삼각분할된 다각형(6500)의 삼각형을 도 6f에 도시된 "삼각 스패닝 트리(a triangle spanning tree)"(6690)로서 구성한다. 삼각 스패닝 트리(6690)는 삼각분할된 다각형(6500)의 이중 그래프(the dual graph)이고, 이 삼각 스패닝 트리의 각 노드는 삼각분할된 다각형(6500)의 한 개의 다각 삼각형, 예를 들면 (6611, 6621)에 제각기 관련된 삼각 노드(대표적으로는 (6610, 6620) 등)로 지칭된다.
삼각 스패닝 트리(6690)는 삼각 경로표(5130)에 의해 데이타 구조(5000)로 표현된다. 삼각 경로 표내의 삼각 경로 레코드 순서는 삼각 루트 노드, 예를 들면(6610)에 관한 트래버설(6680)의 삼각 순서(a triangle order of traversal)에 의해 결정된다(삼각 루트 노드(6610)는 루트형 트리인 삼각 스패닝 트리(6690)의 루트 노드이다). 각각의 삼각 경로 레코드(5140)는 삼각 스패닝 트리의 경로를 나타내며, 경로 길이 필드(5150)와 리드 필드(5160)인, 2 개의 필드로 이루어진다. 이 필드들의 의미는 도 3의 데이타 구조(3000)에서와 동일하다. 그러나, 삼각 스패닝 트리가 이원적(binary)이기 때문에 삼각 경로 레코드에는 "최종" 필드가 필요하지 않다.
삼각 경로표(5130)에 기술된 삼각 스패닝 트리(6690)의 구조는 바운딩 루프(6400)의 바운딩 루프 노드, 예를 들면 (6401-6404)를 연결함으로써 삼각분할된 다각형(6500)을 어떻게 삼각분할하는 지를 유일하게 특정하지는 않는다. 동일한 이중 그래프, 즉 삼각 스패닝 트리(6690)를 갖는 다수의 상이한 삼각분할된 다각형(6500)이 있다. 따라서, 진행 레코드(5180)에 포함된 정보는 삼각분할된 다각형(6500)이 실제로 어떻게 삼각분할되는 지에 대한 설명을 완전하게 하는데 필요하다.
삼각 스패닝 트리(6690)는 루트형 트리이다. 삼각 루트 노드(6610)는 진행 레코드(5180)의 삼각 루트 필드(5185)에 나타나고, 진행 커맨드는 진행 레코드(5180)에 나타난다.
바람직한 구현에 있어서, 삼각 루트 노드(6610)는 대응하는 삼각형(6611)에 의해 연결된 세 개의 이어진 바운딩 루프 노드(6514, 6504, 6524)중 두 번째 바운딩 루프 노드(6504)에 의해 식별되는 삼각 스패닝 트리(6690)의 삼각 리프 노드이다. 삼각 경로표(5130)내의 레코드(5140) 순서에 의해 정의된 바와 같이 트래버설(6680)의 삼각 순서에 따라 삼각 스패닝 트리(6690)를 트래버스함으로써, 압축해제 방법(15000)은 다각 삼각형, 대표적으로는 (6611)로 바운딩 루프(6400)를 채워 삼각분할된 다각형(6500)을 재구성한다.
도 7은 압축 방법(8000)이 삼각 경로 레코드(5140)과 연관된 각각의 진행 커맨드(5190)들의 시퀀스 내에서 어떻게 진행 커맨드를 구성하는 지를 예시한다. 예로써 도 7에서 도시된 삼각 경로(7000)는 바운딩 루프(6400)의 일부가 경로의 트래버설 방향(7005)에 대해 결정된 바와 같이 어떻게 왼쪽 경로 경계(a left run boundary)(7210)와 오른쪽 경로 경계(a right run boundary)(7310)를 포함하는 지를 예시한다. 삼각 경로(7000)가 트래버스됨(7005)에 따라, 진행 에지, 예를 들면(7600)이 트래버설(6680)의 삼각 순서에 의해 결정된 순서로 가로질러 진다. 진행 에지는 삼각분할된 다각형(6500)의 내부 에지이다. 각 진행 에지(7600)는 삼각 경로내의 이전 진행 에지(7500)와 정점을 공유한다. 각 공유된 정점(7700)은 왼쪽 경로 경계 또는 오른쪽 경로 경계(7310) 중 하나상에 위치한다. 압축 방법(8000)은 공유된 정점(7700)이 왼쪽 경로 경계상에 존재하는지 오른쪽 경로 경계상에 존재하는지를 식별하기 위해 진행 레코드(5180)내에 값을 할당한다. 삼각 경로가 트래버스됨(7005)에 따라, 삼각 경로내의 각 진행 에지(7600)는 이 값들 중 하나에 의해 식별되고 이 값들의 시퀀스는 각각의 삼각 경로(7000)와 연관된 진행 커맨드(5190)의 시퀀스이다. 예를 들면, 삼각 경로(7000)가 트래버스됨(7005)에 따라, 진행 에지(7500, 7600, 7800)가 가로질러 진다. 진행 에지(7500)를 가로지르는데 있어서, 값"0"은 삼각형(7505)이 왼쪽 경로 경계(7210)상에서의 전진(advancing)에 의해 만들어졌음을 표시하는 것으로 주어진다. 환언하면, 삼각형(7505)의 변중 하나가 왼쪽 경로 경계(7210)상에 있다. 진행 에지(7600)를 가로지르는데 있어서, 값 "1"은 삼각형(7605)이 오른쪽 경로 경계(7310)상에서의 전진에 의해 만들어짐을 표시하는 것으로 주어진다. 환언하면, 삼각형(7605)의 변중 하나가 오른쪽 경로 경계(7310)상에 있다. 최종 진행 에지(7800)가 가로질러 질 대는, 어떤 값도 할당될 필요가 없다(이하 참조).
도 8은 단순 삼각 메쉬를 압축하는 방법(8000)에 대한 흐름도이다. 상기 기술된 바와 같이, 단순 삼각 메쉬를 압축하는 방법은 다음 단계, 즉 1) 단순 삼각 메쉬의 정점과 에지에 대한 그래프에 정점 스패닝 트리와 삼각 스패닝 트리를 구축하는 단계, 2) 정점 경로 표(8200)로 정점 스패닝 트리를 기술하는 단계, 3) 관련 데이타 레코드(8300)으로 단순 삼각 메쉬의 정점 위치를 기술하는 단계, 4) 삼각 경로표(8400)로 삼각 스패닝 트리를 기술하는 단계, 5) 진행 레코드(8500)을 만드는 단계를 포함한다. 일단 이 데이타 구조들이 압축 방법(8000)에 의해 정의되면, 데이타 구조가 메모리내에 저장(8600)되고/되거나 통신 링크, 예를 들면 네트워크(인터넷)을 통해 송신(8600)될 수 있다.
단계(8100)에서, 정점 스패닝 트리와 삼각 스패닝 트리가 생성된다. 이것은 단순 삼각 메쉬(6000)의 에지(2120)가 절단 에지(7105)인 지(즉, 정점 스패닝 트리(6100)에 속하는 지)와 단순 삼각 메쉬(6000)의 에지(2120)가 진행 에지(7600)인 지(삼각 스패닝 트리에 속하는 지)를 판단함으로써 행해진다. 이 단계는 몇 가지 방법으로 수행될 수 있다. 이에 대해서는 아래의 도 10-11를 참조한다.
단계(8200, 8300, 8400, 8500)는 압축된 형태로 단순 삼각 메쉬를 나타내기 위해 데이타 구조(5000)를 이용한다.
단계(8200)는 정점 경로표(5030)내에 레코드(5040)들을 생성함으로써 정점 스패닝 트리(6100)를 데이타 구조(5000)로 정의한다. 이것은 이하의 도 12에서 더 기술된다.
단계(8300)는 단순 삼각 메쉬의 모든 정점에 대응하는 교정향을 결정한다. 이 단계는 선택사양적으로 수행된다. 단계(8300)는 단계(8200)에서 결정된 트래버설 순서를 이용하여 각 주어진 정점의 선조들을 식별한다. 이어서 교정항이 상기 언급된 바와 같이 각 주어진 정점에 대해 결정되고 데이타 구조(5000)의 레코드(5080)내에 위치된다. 이 단계(8300)에서, 컬러, 노말, 텍스처 좌표를 나타내는 데이타 및 기타 정보가 부가적인 데이타 레코드(5090)내에 위치된다는 것을 주지해야 한다.
단계(8400)는 삼각 경로표(5130)에 레코드(5140)들을 생성함으로써 삼각 스패닝 트리(6690)를 데이타 구조(5000)로 정의한다. 이것은 이하의 도 13에서 더 기술된다.
단계(8500)는 진행 레코드(5180)를 데이타 구조(5000)로 만든다. 이에 대해서는 상기 도 7에서 기술된다.
단계(8600)는 데이타 구조(5000)를 메모리내에 저장하고/하거나 통신 링크를 통해 데이타 구조(5000)내의 정보를 송신한다. 이 정보는 더 압축되고/되거나 알려진 기법에 의해 암호화될(encrypted) 수 있다.
도 9a, 도 9b, 도 9c, 도 9d를 포함하는 도 9는 상이한 절단 전략이 상이한 경로수를 갖는 정점 스패닝 트리와 삼각 스패닝 트리를 만든다는 것을 가시적으로 도시하고 있다. 예를 들어, 단순 삼각 메쉬(9000)가 1 개의 정점 경로(9015)로 구성된 정점 스패닝 트리(9010)의 에지를 따라 절단되며, 3 개의 삼각 경로(9210, 9220, 9230)을 갖는 삼각 스패닝 트리(9200)가 생성된다. 그러나, 동일한 단순 삼각 메쉬(9100)가 5 개의 정점 경로, 대표적으로는 (9115)를 갖는 정점 스패닝 트리(9110)의 에지를 따라 절단되면, 17 개의 삼각 경로(대표적으로는 (9310, 9320))를 갖는 삼각 스패닝 트리(9300)가 대신 획득한다.
도 10은 정점 스패닝 트리와 삼각 스패닝 트리를 생성하는 한 개의 바람직한 실시예에서 수행된 단계들을 도시하는 흐름도이다. 단계(10100)에서, 단순 삼각 메쉬의 각 에지에 "비용(cost)"이 할당된다. 단계(10200)에서, 정점 스패닝 트리가 최소 스패닝 트리 구성 알고리즘(a minimum spanning tree construction algolithm)을 사용하여 총 비용이 최소한으로 되는 스패닝 트리로서 구성된다. 이러한 다수의 알고리즘이 종래 기술분야에서 알려져 있다. 에지는 비용을 증가시킴으로써 우선 순서화된다. 단계(10300)에서, 삼각 스패닝 트리는 정점 스패닝 트리에 의해 사용되지 않은 모든 에지를 사용하여 구성된다.
보다 바람직한 실시예에 있어서, 단계(10100)에서 메쉬의 각 에지에 할당된 비용은 에지 길이이다. 다른 바람직한 실시예에서, 메쉬의 각 에지에 할당된 비용은 에지의 중점에서부터 정점 스패닝 트리의 정점 루트 노드와 연관된 정점까지의 유클리드 거리(Euclidian distance)이다. 이런 식으로 하여 정점 스패닝 트리 루트에 보다 가까운 에지들이 멀리 떨어진 것들 이전에 고려되며, 두 트리 모두 전체 메쉬를 실질적으로 커버하는 정점 스패닝 트리 루트로부터 멀어져 간다.
도 11은 정점 스패닝 트리와 삼각 스패닝 트리를 생성하는 단계(8100)에 대한 다른 바람직한 실시예에 의해 수행된 단계들을 도시하는 흐름도이다. (8100)의 이 실시예에 있어서, 단순 삼각 메쉬는 삼각분할된 층들의 층 시퀸스(a layer sequence of triangulated layers)로 압축해제된 후, 정점 스패닝 트리와 삼각 스패닝 트리가 둘다 이 층 시퀀스내의 이들 각 층을 방문함(visiting)으로써 점증적으로 구성된다. 직관적으로 볼 때 이 방법은 동심을 이루는 링을 절단하고, 이 링이 오픈되도록 잘라, 도 9c에 도시된 바와 같이 이것들을 나선모양으로 결합시킴으로써 오렌지를 벗기는 동작과 유사하다.
처음에, 정점 스패닝 트리(6100)와 삼각 스패닝 트리(6690)는 에지를 포함하지 않는다. 단계(11100)에서 현재의 정점들의 세트가 선택된다. 처음에는 현재의 정점들의 세트는 오직 한 개의 정점을 가진다. 단계(11150)는 단순 삼각 메쉬내의 모든 삼각형이 방문되었는지 여부를 알기 위해 체크한다. 모든 삼각형이 방문되었다면, 방법(8100)이 중단된다. 방문하지 않았다면, 단계(11200)가 단계(11100)내에 선택된 현재의 정점 세트내의 1 이상의 정점을 포함하는 처리되지 않은(방문되지 않은) 모든 삼각형을 선택한다. 선택된(11200) 삼각형 세트는 현재의 삼각분할된 층으로 지칭된다. 이들 현재 삼각분할된 층들의 예가 도 12의 (12100)으로서 도시된다. 단계(11300)에서 할당되지 않았고 현재 정점 세트내의 정점중 적어도 한 개의 정점을 포함하는 모든 에지가 층 에지의 세트로서 선택된다. 이 층 에지(12200)들은 현재의 삼각분할된 층의 내부에 있다.
단계(11310, 11320, 11340, 11360)는 층 에지들을 삼각 스패닝 트리(6690)나 정점 스패닝 트리(6100)중 하나에 할당하는 단계이다. 단계(11310)는 먼저 처리될 임의의 나머지 층 에지가 있는지 여부를 판단한다. 없다면, 방법(8100)이 단계(11400)에서 계속된다. 나머지 층 에지가 있다면, 주어진 한 개의 층 에지가 선택(단계11320)되고 단계(11340)에서 선택된 층 에지가 삼각 스패닝 트리에 할당될수 있는지 여부를 판단한다. 층 에지는 삼각 스패닝 트리내에 루프를 생성하지 않는 경우에만 삼각 스패닝 트리에 할당될 수 있다. 이것은 잘 알려진 기법을 사용함으로써 결정된다. 단계(11350)에서, 층 에지가 삼각 스패닝 트리에 루프를 생성하지 않은 경우, 이 층 에지는 삼각 스패닝 트리에 할당된다. 층 에지가 삼각 스패닝 트리내에 루프를 생성하면, 단계(11360)에서 층 에지가 정점 스패닝 트리에 할당된다. 단순 삼각 메쉬에서, 층 에지가 삼각 스패닝 트리내에 루프를 생성하게 되면 정점 스패닝 트리에서는 루프를 생성하지 않는다는 것을 주지해야 한다. 따라서, 층 에지를 할당하기 위해 이 방법을 사용하면, 층 에지는 정점 스패닝 트리나 삼각 스패닝 트리중 하나에는 루프를 생성하지 않는다.
이 방법(8100)의 나머지 단계는 삼각분할된 층에 나머지 할당되지 않은 삼각형의 에지를 할당한다. 이 에지들은 삼각분할된 층의 시퀀스에서 다음 삼각분할된 층으로부터 현재의 삼각분할된 층을 분리시키기 때문에 분리 에지(separating edges)(12300)라고 지칭된다. 단계(11400)에서 이 분리 에지들이 선택된다.
단계(11410, 11420, 11440, 11450, 11460)는 정점 스패닝 트리(6100)나 삼각 스패닝 트리(6690)중 하나에 분리 에지를 할당하는 단계이다. 단계(11410)는 우선 처리될 임의의 나머지 분리 에지가 있는지 여부를 판단한다. 없다면, 방법(8100)은 단계(11500)에서 계속된다. 나머지 분리 에지가 있다면 주어진 한 개의 분리 에지가 선택(단계(11420))되고, 단계(11440)에서 선택된 분리 에지가 정점 스패닝 트리에 할당될 수 있는지 여부가 결정된다. 분리 에지는 정점 스패닝 트리에 루프를 생성하지 않은 경우에만 정점 스패닝 트리에 할당될 수 있다. 이것은 잘 알려진 기법을 사용함으로써 판단된다. 단계(11450)에서, 분리 에지는 정점 스패닝 트리에 루프를 생성하지 않은 경우 스패닝 트리에 할당된다. 분리 에지가 정점 스패닝 트리에 루프를 생성하면, 단계(11460)에서 층 에지가 삼각 스패닝 트리에 할당한다. 단순 삼각 메쉬에서는, 층 에지가 정점 스패닝 트리에 루프를 생성하면 삼각 스패닝 트리에는 루프를 생성하지 않는다는 것을 주지해야 한다. 따라서, 분리 에지를 할당하기 위해 이 방법을 사용하면 삼각 스패닝 트리나 정점 스패닝 트리중 하나에는 루프를 생성하지 않는다.
단계(11500)에서 분리 에지에 포함된 정점들의 세트가 현재의 정점 세트로서 설정되고 방법(8100)이 단계(11150)에서 계속된다.
도 13에 도시된 방법(8200)은 정점 경로표에 레코드(5040)을 생성한다. 단계(13005)에서, 방법(8200)은 정점 루트 노드로서 정점 리프 노드(6301)중 하나를 임의로 선택한다. 선택된 정점 리프 노드는 최초 경로 노드로 설정(13010)된다(정점 리프 노드(6301)가 앞서 정의되었음을 알아야 한다). 이것은 정점 경로의 최초 노드를 정의한다.
단계(13100)에서 제 1 경로 노드에서 시작하는 이전에 트래버스되지 않았던 경로가 선택된다(정점 리프 노드(6301)에서 시작했을 때, 트래버스될 수 있는 경로는 단지 한 개였음에 유의해야 한다). 또한 트래버설(6280)의 정점 순서로 경로가 선택된다. 단순 삼각 메쉬(6000)의 방위는 임의의 노드, 특히 최초 경로 노드 주위의 회전 방향(시계방향 또는 반시계방향)을 결정한다. 바람직한 실시예에서, 최초 경로 노드 주위의 트래버설(6380)의 정점 순서는 최초 경로 노드에 진입하는 에지에서 시작하여 반시계방향 순서로 최초 경로 노드를 떠나는 경로를 취함으로써 결정된다. 대안적으로, 반시계방향 순서로 경로가 선택될 수 있다. 그러나, 트래버설(6380)의 동일한 정점 순서는 동일하게 삼각분할된 메쉬내의 모든 최초 경로 노드에 대해 사용되어야 한다는 것을 주지해야 한다.
단계(13200)에서 현재 처리되고 있는 경로가 공통적으로 최초 경로 노드를 갖는 경로중 처리되어야 할 최종 경로인지 여부가 판단된다. 이 테스트의 결과로서 정점 경로표(5030)의 정점 경로 레코드(5040)의 "정점 최종" 필드(5070)내의 값의 위치가 결정된다. 단계(13300)에서는 단계(13100)에서 선택된 경로내의 에지가 카운트되고 이 값이 데이타 구조(5000)의 "정점 경로 길이" 필드(5050)에 입력된다.
단계(13400)에서 경로가 리프에서 종결되는지 여부가 판단된다. 이 테스트의 결과로서 정점 경로표(5030)의 정점 경로 레코드(5040)의 "정점 최종" 필드(5070)내의 값의 위치가 결정된다. 경로가 리프에서 종결되지 않으면(즉, 브랜치에서 종결되면), 최초 경로 노드는 현재의 최종 노드(브랜칭 노드)로 설정되고 방법(8200)은 단계(13100)로 되돌아 간다.
단계가 리프(13400)에서 종결되면, 방법(8200)은 단순 삼각 메쉬의 모든 경로가 방법(8200)에 의해 트래버스되었는지 여부를 판단한다(단계 (13500)). 모즌 경로가 트래버스되었다면, 방법(8200)은 종결된다. 그렇지 않다면, 단계(13600)가 수행된다.
단계(13600)에서 최초 경로 노드는 트래버스되지 않은 경로를 갖는 선택된 리프 노드(의 패어런트) 이전에 최종 방문된 브랜칭 노드로 설정되고, 방법은 단계(13100)에서 다시 시작된다. 따라서, 방법(8200)은, 정점 스패닝 트리의 모든 경로가 식별되어 데이타 구조(5000)내의 정점 경로 레코드(5040)내의 값으로 할당될 때까지, 정점 리프 노드에서 시작하여 정점 스패닝 트리에 이르기까지 계속된다.
도 14에 도시된 방법(8400)은 삼각 경로표내에 레코드(5140)을 생성한다. 단계(14005)에서, 방법(8400)은 삼각 루트 노드로서 삼각 리프 노드(6610)중 하나를 임의로 선택한다. 선택된 삼각 리프 노드는 최초 삼각 경로 노드로 설정(14100)된다(삼각 리프 토드(6610)는 앞서 정의되었음을 주지해야 한다).
단계(14100)에서 최초 삼각 경로 노드에서 시작하는 이전에 트래버스되지 않았던 경로가 선택된다(삼각 리프 노드(6610)에서 시작하는 경우에는 트래버스될 수 있는 한 개의 경로만이 있다). 또한 트래버설(6680)의 삼각 순서로 경로가 선택된다. 단순 삼각 메쉬(6000)의 방위는 임의의 노드, 특히 최초 삼각 경로 노드 주위의 회전 방향(시계방향 또는 반시계방향)을 결정한다. 바람직한 실시예에서, 최초 경로 노드 주위의 트래버설(6380)의 삼각 순서는 최초 삼각 경로 노드에 진입하는 에지에서 시작하여 반시계방향 순서로 최초 삼각 경로 노드를 떠나는 삼각 경로를 취함으로써 결정된다. 대안적으로, 반시계방향 순서로 삼각 경로가 선택될 수 있다. 그러나, 트래버설(6380)의 동일한 정점 순서는 동일하게 삼각분할된 메쉬내의 모든 최초 삼가 경로 노드에 대해 사용되어야 한다는 것을 주지해야 한다.
단계(14200)에서 현재 처리되고 있는 경로가 공통적으로 최초 삼각 경로 노드를 갖는 경로중 처리되어야 할 최종 경로인지 여부가 판단된다. 단계(14300)에서는 단계(14100)에서 선택된 삼각 경로내의 진행 에지(7600)가 카운트되고 이 값이 데이타 구조(5000)의 "삼각 경로 길이" 필드(5150)에 입력된다.
단계(14400)에서 삼각 경로가 리프에서 종결되는지 여부가 판단된다. 이 테스트의 결과로서 삼각 경로표(5130)의 삼각 경로 레코드(5140)의 "삼각 리프" 필드(5160)내의 값의 위치가 결정된다. 삼각 경로가 리프에서 종결되지 않으면(즉, 브랜치에서 종결되면), 최초 삼각 경로 노드는 현재 경로의 최종 삼각 노드(브랜칭 노드)로 설정되고 방법(8400)은 단계(14100)로 되돌아 간다.
단계가 리프(14400)에서 종결되면, 방법(8400)은 단순 삼각 메쉬의 모든 경로가 방법(8400)에 의해 트래버스되었는지 여부를 판단한다(단계 (14500)). 모즌 경로가 트래버스되었다면, 방법(8400)은 종결된다. 그렇지 않다면, 단계(14600)가 수행된다.
단계(14600)에서 최초 경로 노드는 트래버스되지 않은 경로를 갖는 선택된 리프 노드(의 패어런트) 이전에 최종 방문된 브랜칭 노드로 설정되고, 방법은 단계(14100)에서 다시 시작된다. 따라서, 방법(8400)은, 삼각 스패닝 트리의 모든 경로가 식별되어 데이타 구조(5000)내의 삼각 경로 레코드(5140)내의 값으로 할당될 때까지, 삼각 리프 노드에서 시작하여 삼각 스패닝 트리에 이르기까지 계속된다.
도 15은 바람직한 압축해제 방법(15000)의 단계를 도시하는 흐름도이다.
단순 삼각 메쉬를 압축해제하는 방법(15000)은 다음 단계, 즉 1)데이타 구조(5000)를 액세스하고/하거나 수신하는 단계(15100), 2) 정점 위치표를 제구성하는 단계(15200), 3) 바운딩 루프 노드와 정점 스패닝 트리 노드간의 대응성을 설정하는 룩업표(look-up table)를 구성하는 단계(15300), 4) 사용될 순서대로 Y 바운딩 루프 노드에 대한 상대적 지수(15400)를 계산하는 단계, 5) 삼각 스트립을 재구성하고 링크하는 단계(15500)를 포함한다.
부가적으로 압축된 표현이 컬러나 노말이나 텍스처 좌표를 기술하는 부가적인 데이타 레코드들(5090)을 갖는다면, 컬러나 노말이나 텍스처 좌표 벡터에 대한 표들이 정점 위치표가 구성되는 것과 유사하게 구성된다.
단계(15100)에서, 데이타 구조(5000)는 메모리로 부터 액세스되고/되거나 통신 링크를 통해 수신된다. 이 데이타 구조(5000)내의 정보는 상기 언급된 바와 같이 더 압축되고/되거나 번호매김될 수 있다.
단계(15200)에서 정점 경로표(5030)에 포함된 정점 스패닝 트리 정보의 구조와 트래버설(6380)의 정점 순서에 따라 정점 스패닝 트리의 노드들을 방문하는 동안의 관련된 데이타 레코드(5080)으로부터 정점 위치 어레이가 구성된다. 바람직한 실시예에서, 트리 트래버설 동안 정점 노드가 방문되고 있더라도 정점의 선조에 대한 지수 어레이는 유지되며, 교정항을 정점의 예상 위치에 더함으로써 정점의 위치가 계산된다.
단계(15300)에서 룩업표(look-up table)가 바운딩 루프 노드와 정점 스패닝 트리 노드 사이에 대응성을 설정한다. 예로서, 바운딩 노드(6402)와 (6403)이 둘다 정점 스패닝 트리 노드(6302)에 연관된 것처럼 바운딩 노드(6401)(도 6 참조)는 정점 스패닝 트리 노드(6301)에 연관된다. 따라서, 정점 스패닝 트리(6300)가 단계(15200)에서 트래버스되는 동안 각 정점 스패닝 트리 노드에 대한 바운딩 루프 노드 정보가 결정되어 룩업표에 입력된다.
바운딩 루프는 정점 스패닝 트리의 반복적 트래버설 동안 구성되어 룩업표로 표현된다. 트리를 내려가면서 만나게 되는 정점에 대한 참고자료는 트래버설 동안 이 표에 첨가된다. 리프 정점에 대한 것들을 제외한 이 참고자료들은 또한 스택상에 푸쉬(push)된다. 정점이 어떻게 연결되어 정점 스패닝 트리를 형성하는 지를 기술하는 각 정점 경로의 최종 필드와 리프 필드가 트리 트래버설 및 스택 팝 동작(the stack poping)을 제어하는데 사용된다.
단계(15400)에서 삼각 스패닝 트리 트래버설(6680)의 순서로 Y 바운딩 루프 노드에 대한 상대 지수가 계산된다. 이 단계에서 바운딩 루프 노드상에서 삼각형의 제 3 정점을 찾아냄으로써 삼각 스패닝 트리의 브랜칭 노드에서 삼각형이 어떻게 생성되는지가 결정된다. 이에 대해서는 도 16을 참조한다.
도 16은 Y 바운딩 루프 노드를 예시한다. 삼각 경로(16100)는 최초 노드(16200)와 최종 노드(16300)을 갖는다. 삼각 경로의 최종 진행 에지(16400)는 최종 노드(16300)과 연관된 최종 삼각형을 삼각 경로내의 이전 삼각형에 연결한다. 최종 진행 에지(16400)는 또한 최종 왼쪽 바운딩 루프 노드(16500)를 최종 오른쪽 바운딩 루프 노드(16600)에 연결한다. 최종 삼각형은 최종 왼쪽 바운딩 루프 노드와 최종 오른쪽 바운딩 루프 노드를, Y 바운딩 루프 노드라고 지칭되는 제 3 바운딩 노드(16700)에 연결한다. 최종 삼각형을 구성하기 위해, 제 3 바운딩 노드(16700)가 모든 최종 삼각형중 한 삼각형, 즉 브랜칭 노드에 있는 삼각형들에 대한 사전처리에서 결정되어야 한다. 이 정보는 삼각 경로표(5130)에 암시적으로 포함된다. 따라서, 삼각 경로에 삼각형을 구성하는 것을 시작하기 전에, 최종 삼각형에 대한 이 정보가 명확히 만들어져야 한다.
이것은 각 브랜칭 삼각형의 왼쪽 방향이나 오른쪽 방향으로부터 바운딩 루프 둘레의 거리를 결정함으로써 행해진다. 각 브랜칭 삼각형에 대해, 왼쪽 브랜치 경계 길이 및 오른쪽 브랜치 경계 길이(the left branch boundary length and right branch boundary length)인, 왼쪽이나 오른쪽 정점으로부터 Y 바운딩 루프 노드까지의 루프를 따른 거리는 반복(recurtion)에 의해 계산될 수 있다. nL과 nR은 경로가 리프 삼각형에서 종결되면 1이고 경로가 브랜치 삼각형에서 종결되는 경우 제각기 브랜치 삼각형의 왼쪽 브랜치 경계 길이와 오른쪽 브랜치 경계 길이가 될 때, 길이 경로 n으로 시작하는 브랜치의 경계 길이는 n+nL+nR-1이 된다.
브랜치 경계 길이는 압축 알고리즘의 사전처리 단계에서와 같이 각 브랜치에 대해 계산되어 브랜치 경계 길이표에 저장된다. 삼각 재구성 단계 동안 브랜칭 삼각형이 만나는 경우, 대응하는 브랜칭 정점의 동일성(identity)은 왼쪽 브랜치 경계 길이를 왼쪽 정점의 루프 인덱스에 더함으로써 결정될 수 있다. 바운딩 루프표의 순환성 때문에, 이러한 부가는 바운딩 루프의 길이에 따라 수행된다.
단계(15500)에서, 삼각분할된 다각형에 대한 삼각형은 3 개의 바운딩 루프 노드의 그룹으로서 구성된다. 이렇게 하기 위해, 삼각 경로표(5130)와 진행 레코드(5180)이 사용된다. 진행 레코드(5180)의 삼각 루트 필드(5185)는 삼각 스패닝 트리(6690)의 삼각 루트 노드(6610)와 연관된 삼각형 중 하나를 구성하는 3 개의 이어진 바운딩 루프 노드를 식별한다. 도 7에 설명된 바와 같이, 각 삼각 경로내의 삼각형들의 나머지는 진행 커맨드에 따라 경로의 왼쪽이나 오른쪽상에서 전진함으로써 재구성된다.
바람직한 실시예에서, 이것은 처음에는 둘 다 비어있는 2 개의 스택인 왼쪽 정점 스택과 오른쪽 정점 스택을 가지고 반복에 의해 행해진다. 삼각 경로표의 삼각 경로 레코드에 의해 기술된, n 개의 삼각형의 삼각경로의 시작점에 현재의 왼쪽 및 오른쪽 정점을 두고, 진행 패턴의 다음 n 개의 비트는 루프의 다수의 정점이 어떻게 스트립의 각면상에서 트래버스되는지를 식별한다.
삼각 경로의 삼각 최종노드가 삼각 브랜칭 노드라면, 대응하는 T 바운딩 루프 노드에 연관된 바운딩 루프 노드가 사전 계산되어 브랜치 경계 길이표에 저장된 정보와 현재의 왼쪽 및 오른쪽 정점에 의해 결정된 삼각형으로부터 결정되고, Y 바운딩 루프 노드가 재구성된다. Y 바운딩 루프 노드와 현재의 오른쪽 정점은 제각기 왼쪽 및 오른쪽 정점 스택상에 푸쉬되며, 현재의 오른쪽 정점은 Y 바운딩 루프 노드와 같게 설정된다. 삼각 경로의 삼각 최종 노드가 삼각 리프 노드라면, 현재의 오른쪽 정점에 대한 후손은 현재의 왼쪽 정점에 대한 선조와 같게 되어야 한다. 이 경우, 리프 삼각형이 재구성되고, 가능하다면 현재의 왼쪽 및 오른쪽 정점은 왼쪽 및 오른쪽 정점 스택에서 팝되어 나간다. 대신에 스택이 비어 있다면, 모든 삼각형이 재구성되었기 때문에 재구성 프로세스는 중단된다.
바람직한 실시예에서, 노말, 컬러, 텍스처 좌표가 양자화되고, 예측자 에러(predictor errors)는 정점 위치의 경우에서와 같이 엔트로피 인코딩된다. 다른 바람직한 실시예에 있어서, 노말은 디어링의 비직선적(non-rectilinear) 방법을 사용하여 양자화된다.
도 17은 본 발명의 바람직한 실시예가 동작하는 컴퓨터 시스템(17300)의 예를 도시하는 블럭도이다. 바람직한 실시예는 하나 이상의 응용 프로그램(17302)를 포함한다. 응용 프로그램(17302)의 한 타입으로서 옵티마이저(optimizer)(17306)를 포함하는 컴파일러(compiler)(17305)가 있다. 컴파일러(17305)와 옵티마이저(17306)는 (다른 응용 프로그램(17302)과 같은) 소스 프로그램을 최적화로 실행가능한 코드로 변환시키도록 구성된다. 보다 일반적으로, 소스 프로그램은 최적화된 형태로 변환된 후 실행가능한 코드로 변환된다. 컴파일러(17305)와 옵티마이저(17306)는 하드웨어 유닛(17312)을 포함하는 컴퓨터 플랫폼(17304)상에서 동작한다. 시스템(17300)상에서 실행되는 몇몇 응용 프로그램(17302)은 상기 기술된 압축(8000) 및 압축해제(15000)를 포함한다.
하드웨어 유닛(17312)은 하나 이상의 중앙 처리 유닛(CPU)(17316), 랜덤 액세스 메모리(RAM)(17341), 입/출력 인터페이스(17318)를 포함하고, 예를 들면 축소형 인스트럭션 세트(a reduced instruction set)인 마이크로-인스터럭션 코드(micro-instruction code)(17310)가 또한 플랫폼(17304)상에 포함된다. 다양한 주변기기 소자가 그래픽 인터페이스나 터미날(17326), 데이타 저장 장치(17330), 프린팅 장치(17334)를 포함하는 컴퓨터 플랫폼(10304)에 연결될 수 있다. 오퍼레이팅 시스템(17308)은 컴퓨터 시스템(17300)의 여러 소자의 동작을 지시한다. 이와 같은 컴퓨터 시스템(10300)의 예로서 IBM RISC 시스템/6000(RISC 시스템/6000은 IBM사의 상표임)이 있다. 컴퓨터 기술분야의 당업자라면 다수의 동등한 컴퓨터 시스템(17300)에도 익숙하다는 것이 쉽게 이해될 것이다.
도 18은 통신 링크(18220)를 통해 제 2 컴퓨터(18210)에 접속된 제 1 컴퓨터(18200)를 도시하는 도면이다. 통신 링크의 예로는 직렬 링크(serial links)(RS-232), 병렬 링크, 라디오 주파수 링크, 적외선 링크가 있다. 네트워크(LAN, WAN)는 또한 종래 기술인 통신 링크의 예이다. 네트워크는 일반적으로 알려져 있다. 네트워크의 일례로서 인터넷이 있다. 이에 대해서는, 1992년, 10월 14일 아타나시오(Attanasio) 등에 특허되고 여기서 그 전체가 참고문헌으로 인용된 미국 특허 제 5,371,852 호를 참조한다. 컴퓨터(18200)는 기하학적 압축 방법(8000)을 실행함으로써 삼각 메쉬를 압축하고 통신 링크(18220)를 통해 결과적인 데이타 구조(5000)를 전송한다. 컴퓨터(18210)는 데이타 구조(5000)를 수신하여 기하학적 압축 방법(15000)을 실행함으로써 삼각 메쉬를 압축해제한다.
여기서 제기된 것과 동등한 다른 실시예는 당업자에게는 명백한 것이 된다. 또한, 이 실시예들은 본 발명에 의해 기대되는 범위내에 있다.
본 발명은 단순 삼각 메쉬를 압축, 저장, 전송, 압축해제하는 개선된 시스템 및 방법을 제공하고, 단순 삼각 메쉬의 연결성 정보를 나타내는, 즉 단순 삼각 메쉬의 정점들이 정보의 손실없이 압축된 형태로 메쉬의 삼각면을 형성하는 개선된 시스템 및 방법을 제공하며, 압축된 형태로 단순 삼각 메쉬의 정점 위치, 노말, 컬러, 텍스처 좌표를 나타내는 개선된 시스템 및 방법을 제공하는 것이다.

Claims (38)

  1. n-차원 공간의 점들의 세트를 나타내는 컴퓨터 메모리내의 데이타 구조에 있어서, 상기 데이타 구조는, 경로표로서, ⓐ 각각 정규 노드(a regular node)나 브랜칭 노드(a blandhing node)나 리프 노드(a leaf node)이고 제각기 n-차원 공간의 점을 나타내는 하나 이상의 노드를 갖는 루트형 트리(rooted node)를 기술하고, ⓑ 제각기 루트형 트리의 경로(run)─상기 경로는 리프나 브랜칭 노드인 최초 노드와 리프나 브랜칭 노드인 최종 노드를 갖고, 경로내의 모든 연속적인 노드 쌍간의 연결이 에지인 경우 최초 노드와 최종 노드 사이에 하나 이상의 정규 노드를 연결함─를 나타내고, 경로내의 에지수의 항인 경로 길이 필드와 상기 경로가 리프 노드에서 종결되는지 여부를 표시하는 리프 필드와 상기 레코드에 의해 표현된 상기 경로가 상기 루트형 트리내의 동일한 최초 노드를 갖는 최종 경로인지 여부를 표시하는 최종 경로 필드를 갖는 하나 이상의 레코드(records)을 갖는 경로표를 포함하는 데이타 구조.
  2. 제1항에 있어서, 현재의 노드라고 지칭되는 노드중 하나에 관련된 현재 포인트의 실제 위치와 이 현재 포인트의 예상 위치간의 차이인 교정항인 관련 데이타 필드를 더 포함하는 데이타 구조.
  3. 제2항에 있어서, 상기 현재 포인트의 예상 위치는 상기 현재 포인트의 하나 이상의 선조 포인트─상기 선조 포인트는 현재 노드로부터 루트 노드에 이르는 유일한 패스상에 존재함─를 사용하는 예상 방법에 의해 결정되는 데이타 구조.
  4. 제2항에 있어서, 상기 관련 데이타 필드는 고정 소숫점 포맷인 데이타 구조.
  5. 제2항에 있어서, 상기 관련 데이타 레코드들은 압축형인 데이타 구조.
  6. 제5항에 있어서, 상기 관련 데이타 레코드들은 허프만 인코등(Huffman encoding)이나 산술적 코딩(Arithmetic coding)이나 샤논-파노-엘리아스 코딩(Shannon-Fano-Elias coding)이나 렘펠-지브 코딩(Lempel-Ziv coding)중 하나에 의해 압축되는 데이타 구조.
  7. 제1항에 있어서, 컴퓨터 저장 장치내에 포인트 위치를 저장하는데 사용되는 데이타 구조.
  8. 제1항에 있어서, 통신 링크를 통해 컴퓨터로부터 전송되는 데이타 구조.
  9. 제1항에 있어서, 통신 링크를 통해 컴퓨터에 의해 수신되는 데이타 구조.
  10. 제1항에 있어서, 상기 포인트는 n 차원의 기하학적 형상의 정점─각 트리 에지는 각각의 지리학적 형상 에지에 대응함─을 나타내는 데이타 구조.
  11. n-차원 공간내의 단순 삼각 메쉬를 나타내는 데이타 구조에 있어서, ① 정점 경로표로서, ⓐ 정상 정점 노드나 브랜칭 정점 노드나 리프 정점 노드이고 메쉬의 정점과 연관된 하나 이상의 정점 노드를 갖는 정점 스패닝 트리를 기술하며, ⓑ 상기 정점 스패닝 트리의 정점 경로─상기 정점 경로는 리프나 브랜칭 정점 노드인 최초 정점 노드와 리프나 브랜칭 정점 노드인 최종 정점 노드를 갖고, 연속적인 모든 정점 노드쌍들이 정점 트리 에지에 의해 연결된 경우 상기 최초 정점 노드와 상기 최종 정점 노드 사이의 하나 이상의 정상 정점 노드를 연결함─를 제작기 표현하고, 상기 정점 경로내의 정점 트리 에지수에 의해 주어진 정점 경로 길이 필드와 정점 경로 레코드에 의해 표현된 정점 경로의 최종 정점 노드가 리프 정점 노드인지 여부를 표시하는 정점 리프 필드와 상기 정점 경로가 동일한 최초 정점 노드를 공유하는 최종 정점 경로인지 여부를 표시하는 정점 최종 경로 필드를 갖는 하나 이상의 정점 경로 레코드─상기 정점 경로는 정점 루트 노드에 대한 정점 스패닝 트리의 트래버설의 순서로 주어짐─을 갖는 정점 경로표와, ② 삼각 경로표로서, ⓐ 정상 삼각 노드나 브랜칭 삼각 노드나 리프 삼각 노드이고 메쉬의 삼각형과 연관된 하나 이상의 삼각 노드를 갖는 삼각 스패닝 트리를 기술하며, ⓑ 상기 삼각 스패닝 트리의 삼각 경로─상기 삼각 경로는 리프나 브랜칭 삼각 노드인 최초 삼각 노드와 리프나 브랜칭 삼각 노드인 최종 삼각 노드를 갖고, 연속적인 모든 삼각 노드쌍들이 삼각 트리 에지에 의해 연결된 경우 상기 최초 삼각 노드와 상기 최종 삼각 노드 상이의 하나 이상의 정상 삼각 노드를 연결함─를 제각기 표현하고, 상기 삼각 경로 레코드에 의해 표현된 상기 삼각 경로내의 삼각 트리 에지수에 의해 주어진 삼각 경로 길이 필드와 삼각 레코드에 의해 표현된 삼각 경로의 최종 삼각 노드가 리프 삼각 노드인지 여부를 표시하는 삼각 리프 필드─상기 삼각 경로는 삼각 루트 노드에 관한 삼각 스패닝 트리의 트래버설 순서에 의해 주어짐─를 갖는 하나 이상의 삼각 경로 레코드를 갖는 삼각 경로표와, ③ 진행 레코드로서, ⓐ 상기 삼각 스패닝 트리의 삼각 루트 노드와 연관된 삼각형이 어떻게 구성되는지를 기술하는 삼각 루트 필드와, ⓑ 삼각 경로의 왼쪽 경로 경계나 오른쪽 경로 경계를 따라 다음 정점으로 진행함으로써 상기 삼각 경로중 한 경로로부터 어떻게 삼각형이 구성되는지를 제각기 표시하는 하나 이상의 커맨드 시퀀스─상기 진행 커맨드는 상기 삼각 루트 노드에 관한 삼각 스패닝 트리의 트래버설 순서에 의해 주어짐─를 갖는 진행 레코드와, ④ 제각기 단순 삼각 메쉬의 정점중 한 정점의 위치에 대한 정보를 가지며 정점 루트 노드에 관한 정점 스패닝 트리의 트래버설 순서로 주어지는 하나 이상의 관련 데이타 필드를 갖는 관련 데이타 레코드을 포함하는 데이타 구조.
  12. 제11항에 있어서, 상기 정점 스패닝 트리의 트래버설 순서는 깊이 우선(depth first) 폭 우선(breadth first), 프리오더(preorder), 포스트오더(postorder)중 임의의 하나를 포함하는 데이타 구조.
  13. 제11항에 있어서, 각각의 관련 데이타 필드는 현재의 노드라고 지칭되는 노드중 한 노드와 연관된 현재의 정점의 실제 위치와 현재의 정점의 예상 위치간의 차이인 교정항인 데이타 구조.
  14. 제13항에 있어서, 상기 현재의 정점의 예상 위치는 현재의 정점의 하나 이상의 선조 정점─상기 선조 정점은 현재의 정점 노드로부터 정점 루트 노드에 이르는 유일한 경로상에 존재하는 노드에 대응함─을 사용하는 예상 방법에 의해 결정되는 데이타 구조.
  15. 제11항에 있어서, 상기 관련 데이타 필드는 고정 소수점 포맷(fixed point format)인 데이타 구조.
  16. 제11항에 있어서, 상기 관련 데이타 레코드는 압축형인 데이타 구조.
  17. 제16항에 있어서, 상기 관련 데이타 레코드들은 허프만 인코딩이나 산술적 코딩이나 샤논-파노-엘리아스 코딩이나 렘펠-지브 코딩(Lempel-Ziv coding)중 하나에 의해 압축되는 데이타 구조.
  18. 제11항에 있어서, 상기 삼각형 스패닝 트리의 트래버설 순서가 삼각 경로표내의 삼각 경로 레코드들의 순서에 의해 결정되는 데이타 구조.
  19. 제18항에 있어서, 상기 삼각 스패닝 트리의 트래버설 순서는 깊이 우선, 폭 우선, 프리오더, 포스터오더중 임의의 하나를 포함하는 데이타 구조.
  20. 제11항에 있어서, 상기 진행 레코드들은 압축형인 데이타 구조.
  21. 제25항에 있어서, 상기 진행 레코드들은 허프만 인코딩이나 산술적 코딩이나 샤논-파노-엘리아스 코딩이나 렘펠-지브 코딩중 임의의 하나에 의해 압축된 데이타 구조.
  22. 제11항에 있어서, 각 진행 커맨드는 한 비트인 데이타 구조.
  23. 제11항에 있어서, 제각기 부가적인 정보를 갖는 하나 이상의 부가적인 데이타 필드를 제각기 갖는 하나 이상의 부가적 데이타 레코드들을 포함하는 데이타 구조.
  24. 제23항에 있어서, 상기 부가적 정보는 노말, 컬러, 텍스처 좌표중 하나 이상을 포함하는 데이타 구조.
  25. 제11항에 있어서, 컴퓨터 저장 장치내에 삼각 메쉬를 저장하는데 사용되는 데이타 구조.
  26. 제11항에 있어서, 통신 링크를 통해 컴퓨터로부터 전송되는 데이타 구조.
  27. 제11항에 있어서, 통신 링크를 통해 컴퓨터에 의해 수신되는 데이타 구조.
  28. 제11항에 있어서, 다중 연결된 성분들을 갖는 n-차원 공간내의 삼각 메쉬의 연결된 성분을 나타내는 데이타 구조.
  29. 기하학적 모델을 압축 및 압축해제하는 하나 이상의 컴퓨터 시스템에 있어서, ① 프로세스를 실행하는 중앙 처리 유닛과, ② 메모리와, ③ 정점 경로표로서, ⓐ 각각 정규 노드나 브랜칭 노드나 리프 노드이고 제각기 메쉬의 정점에 연관된 하나 이상의 정점 노드를 갖는 정점 스패닝 트리를 기술하는 메모리 상에 상주(reside)하고, ⓑ 제각기 정점 스패닝 트리의 정점 경로─상기 정점 경로는 리프나 브랜칭 노드인 최초 정점 노드와 리프나 브랜칭 노드인 최종 정점 노드를 갖고, 연속적인 모든 정점 노드 쌍들이 정점 트리 에지에 의해 연결된 경우 최초 정점 노드와 최종 정점 노드 사이의 하나 이상의 정규 노드를 연결함─를 나타내고, 상기 정점 경로내의 정점 트리 에지수로 주어진 정점 경로 길이 필드와 상기 정점 경로 레코드에 의해 표현된 상기 정점 경로의 최종 정점 노드가 리프 정점 노드인지 여부를 표시하는 정점 리프 필드와 상기 정점 경로가 동일한 최초 정점 노드를 공유하는 최종 정점 경로인지 여부를 표시하는 정점 최종 경로 필드─상기 정점 경로는 표현된 정점 루트노드에 관한 정점 스패닝 트리의 트래버설 순서에 의해 주어짐─를 갖는 하나 이상의 정점 경로 레코드를 갖는 정점 경로표와, ④ 삼각 경로표로서, ⓐ 제각기 정상 삼각 노드나 브랜칭 삼각 노드나 리프 삼각 노드이고 제각기 상기 메쉬의 삼각형과 연관된 하나 이상의 삼각 노드를 갖는 삼각 스패닝 트리를 기술하는 메모리상에 상주하며, ⓑ 상기 삼각 스패닝 트리의 삼각 경로─상기 삼각 경로는 리프나 브랜칭 삼각 노드인 최초 삼각 노드와 리프나 브랜칭 삼각 노드인 최종 삼각 노드를 갖고, 연속적인 모든 삼각 노드쌍들이 삼각 트리 에지에 의해 연결된 경우 최초 삼각 노드와 최종 삼각 노드 사이의 하나 이상의 정상 삼각 노드를 연결함─를 제각기 표현하고, 상기 삼각 경로 레코드에 의해 표현된 상기 삼각 경로내의 삼각 트리 에지수에 의해 주어지는 삼각 경로 길이 필드와 상기 삼각 레코드에 의해 표현된 삼각 경로의 최종 삼각 노드가 리프 삼각 노드인지 여부를 표시하는 삼각 리프 필드─상기 삼각 경로는 삼각 루트 노드에 관한 삼각 스패닝 트리의 트래버설 순서에 의해 주어짐─갖는 하나 이상의 삼각 경로 레코드를 갖는 삼각 경로표와 ⑤ 진행 레코드로서, ⓐ 상기 삼각 스패닝 트리의 삼각 경로 노드와 연관된 삼각형이 어떻게 구성되는지를 기술하는 삼각 루트 필드와, ⓑ 상기 삼각 경로의 왼쪽 경로 경계나 오른쪽 경로 경계를 따라 다음 정점으로 진행함으로써 상기 삼각 경로중 한 경로로부터 어떻게 삼각형이 구성되는지를 제각기 표시하는 하나 이상의 진행 커맨드 시퀀스─상기 진행 커맨드는 상기 삼각 루트 노드에 관한 삼각 스패닝 트리의 트래버설 순서에 의해 주어짐─를 갖는 메모리상에 거주하는 진행 레코드를 포함하는 컴퓨터 시스템.
  30. 제29항에 있어서, 2 이상의 컴퓨터 시스템은 통신 링크에 의해 접속되는 컴퓨터 시스템.
  31. 제30항에 있어서, 상기 통신 링크는 인터넷, 인트라넷(a intranet), 원거리 통신망, 근거리 통신망, 라디오 주파수 링크, 적외선 링크(an infra red link), 직렬 통신 링크(a serial communication link)중 임의의 하나를 포함하는 컴퓨터 시스템.
  32. 제30항에 있어서, 상기 정점 경로표, 상기 삼각 경로표, 상기 진행 레코드에 대한 데이타가 하나 이상의 제 1 컴퓨터 시스템으로부터 상기 통신 링크에 의해 접속된 하나 이상의 제 2 컴퓨터 시스템으로 전송되는 컴퓨터 시스템.
  33. 제29항에 있어서, 상기 기하학적 모델로부터 상기 정점 경로표, 상기 삼각 경로표, 상기 진행 레코드를 생성하는 압축 방법을 더 포함하는 컴퓨터 시스템.
  34. 제29항에 있어서, 상기 정점 경로표, 상기 삼각 경로표, 상기 진행 레코드로부터 기하학적 모델을 생성하는 압축해제 방법을 더 포함하는 컴퓨터 시스템.
  35. 압축방법에 있어서, ① 기하학적 모델로부터 정점 스패닝 트리와 삼각 스패닝 트리를 만드는 단계와, ② 정점 경로표로 상기 정점 스패닝 트리를 기술하는 단계와, ③ 삼각 경로표로 상기 삼각 스패닝 트리를 기술하는 단계와, ④ 상기 정점 경로표에 따라 삼각 스패닝 트리를 트래버스하는 동안 삼각 스패닝 트리내에 어떻게 하나 이상의 삼각형을 구성하는지를 기술하는 진행 레코드를 설정하는 단계를 포함하는 압축 방법.
  36. 제35항에 있어서, 상기 정점 스패닝 트리와 삼각 스패닝 트리는, ⓐ 기하학적 모델의 하나 이상의 에지에 비용을 할당하는 단계와, ⓑ 최소한의 전체 비용을 갖는 정점 스패닝 트리를 정점 스패닝 트리로서 정의하는 단계와, ⓒ 정점 스패닝 트리에 포함되지 않은 에지를 갖는 삼각 스패닝 트리를 만드는 단계를 포함하는 압축 방법.
  37. 제35항에 있어서, 상기 정점 스패닝 트리와 삼각 스패닝 트리는, ⓐ 상기 기하학적 모델의 하나 이상의 현재의 정점들의 세트를 선택하는 단계와, ⓑ 현재의 정점을 포함하고 방문되지 않은 모든 삼각형들을 현재의 삼각분할된 층으로서 선택하는 단계와, ⓒ 할당된 적이 없고 적어도 상기 한 개의 현재의 정점을 포함하는 삼각형의 모든 에지들을 층 에지(layer edges)으로서 선택하는 단계─선택되지 않은 에지는 분리 에지임─와, ⓓ 상기 층 에지가 상기 삼각 스패닝 트리내에 루프를 생성하지 않은 경우에는 각각의 층 에지를 상기 삼각 스패닝 트리에 할당하고, 상기 삼각 스패닝 트리내에 루프를 생성한 경우에는 각각의 층 에지를 정점 스패닝 트리에 할당하는 단계와, ⓔ 상기 층 에지가 상기 삼각 스패닝 트리내에 루프를 생성하지 않은 경우에는 각각의 분리 에지를 상기 삼각 스패닝 트리에 할당하고, 상기 삼각 스패닝 트리내에 루프를 형성한 경우에는 각각의 분리 에지를 상기 정점 스패닝 트리에 할당하는 단계와, ⓕ 상기 분리 에지를 현재의 정점들의 세트로서 선택하는 단계와, ⓖ 더 이상 에지가 없을 때까지 ⓐ에서 ⓕ 단계까지를 반복하는 단계와, ⓗ 상기 각각 할당된 에지를 사용하여 상기 정점 스패닝 트리와 삼각 스패닝 트리를 만드는 단계를 포함하는 압축 방법.
  38. 압축해제 방법에 있어서, ① 정점 위치를 재구성하는 단계와, ② 바운딩 루프를 구성하는 단계와, ③ 하나 이상의 Y-바운딩 루프 노드의 상대 지수를 결정하는 단계와, ④ 하나 이상의 삼각 스트립을 재구성하여 링크하는 단계를 포함하는 압축해제 방법.
KR1019960061004A 1996-01-16 1996-12-02 기하학적 모델을 압축 및 압축해제하는 컴퓨터 시스템과 압축 및압축해제 KR100233972B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US1004596P 1996-01-16 1996-01-16
US60/010,045 1996-01-16
US8/688,572 1996-07-30
US08/688,572 1996-07-30
US08/688,572 US5825369A (en) 1996-01-16 1996-07-30 Compression of simple geometric models using spanning trees

Publications (2)

Publication Number Publication Date
KR970059967A KR970059967A (ko) 1997-08-12
KR100233972B1 true KR100233972B1 (ko) 1999-12-15

Family

ID=46202952

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019960061004A KR100233972B1 (ko) 1996-01-16 1996-12-02 기하학적 모델을 압축 및 압축해제하는 컴퓨터 시스템과 압축 및압축해제

Country Status (2)

Country Link
US (1) US5825369A (ko)
KR (1) KR100233972B1 (ko)

Families Citing this family (43)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6047088A (en) * 1996-12-16 2000-04-04 Sharp Laboratories Of America, Inc. 2D mesh geometry and motion vector compression
US6184897B1 (en) * 1997-01-15 2001-02-06 International Business Machines Corporation Compressed representation of changing meshes and method to decompress
US6002803A (en) * 1997-03-11 1999-12-14 Sharp Laboratories Of America, Inc. Methods of coding the order information for multiple-layer vertices
US6249616B1 (en) * 1997-05-30 2001-06-19 Enroute, Inc Combining digital images based on three-dimensional relationships between source image data sets
JP3184785B2 (ja) * 1997-07-23 2001-07-09 インターナショナル・ビジネス・マシーンズ・コーポレ−ション 三次元形状モデル送信方法及び装置、三次元形状モデル圧縮方法及び装置、三次元形状モデル表示方法及び装置
US6009435A (en) * 1997-11-21 1999-12-28 International Business Machines Corporation Progressive compression of clustered multi-resolution polygonal models
US6167159A (en) * 1998-04-30 2000-12-26 Virtue Ltd. Triangle mesh compression
US6668091B1 (en) * 1998-10-02 2003-12-23 Samsung Electronics Co., Ltd. 3D mesh coding/decoding method
US6307555B1 (en) * 1998-09-30 2001-10-23 Silicon Graphics, Inc. Boolean operations for subdivision surfaces
US6452596B1 (en) * 1998-10-06 2002-09-17 International Business Machines Corporation Methods and apparatus for the efficient compression of non-manifold polygonal meshes
US6445389B1 (en) * 1998-10-06 2002-09-03 International Business Machines Corp. Compression of polygonal models with low latency decompression
US6718290B1 (en) * 1998-12-10 2004-04-06 Georgia Tech Research Corporation Systems and methods for encoding tetrahedral meshes
US6373484B1 (en) * 1999-01-21 2002-04-16 International Business Machines Corporation Method and system for presenting data structures graphically
US6342884B1 (en) * 1999-02-03 2002-01-29 Isurftv Method and apparatus for using a general three-dimensional (3D) graphics pipeline for cost effective digital image and video editing, transformation, and representation
US6414680B1 (en) 1999-04-21 2002-07-02 International Business Machines Corp. System, program product and method of rendering a three dimensional image on a display
US6384822B1 (en) 1999-05-14 2002-05-07 Creative Technology Ltd. Method for rendering shadows using a shadow volume and a stencil buffer
SG93211A1 (en) * 1999-07-28 2002-12-17 Univ Singapore Method and apparatus for generating atomic parts of graphic representation through skeletonization for interactive visualization applications
US20020118207A1 (en) * 2000-12-22 2002-08-29 Nortel Networks Limited Method and apparatus for determining graph planarity
TW493142B (en) * 2001-03-14 2002-07-01 Ind Tech Res Inst Method for building progressive mesh
JP2005031709A (ja) * 2001-06-08 2005-02-03 Naoto Morikawa 3次元形状の符号化方法及びそれを利用した造形器具
KR100420860B1 (ko) * 2001-08-13 2004-03-02 학교법인연세대학교 가중치 벡터합을 이용한 3차원 그래픽 데이터의 위상 압축방법
WO2003040968A1 (fr) * 2001-11-06 2003-05-15 Naoto Morikawa Systeme de traitement de forme et procede pour representer une forme
US7230616B2 (en) * 2002-07-31 2007-06-12 International Business Machines Corporation Bi-level iso-surface compression
US8019788B1 (en) 2002-09-30 2011-09-13 Siemens Product Lifecycle Management Software Inc. Data compression and file segmentation in directmodel JT datastores
GB0224449D0 (en) * 2002-10-21 2002-11-27 Canon Europa Nv Apparatus and method for generating texture maps for use in 3D computer graphics
US7129942B2 (en) * 2002-12-10 2006-10-31 International Business Machines Corporation System and method for performing domain decomposition for multiresolution surface analysis
WO2004081878A1 (en) * 2003-03-11 2004-09-23 National University Of Singapore Method and apparatus for generating morphing sequence
KR100668714B1 (ko) * 2005-01-14 2007-01-16 한국전자통신연구원 효과적인 텍스처 매핑을 위한 3차원 메쉬 정보의 텍스처좌표 부호화 및 복호화 방법
US7412104B2 (en) * 2005-01-31 2008-08-12 Andrei Talapov Optimized lossless data compression methods
KR100747489B1 (ko) * 2005-04-13 2007-08-08 한국전자통신연구원 3차원 메쉬 정보의 부호화/복호화 방법 및 장치
WO2008084891A1 (en) * 2007-01-11 2008-07-17 Electronics And Telecommunications Research Institute Method and apparatus for encoding/decoding 3d mesh information including stitching information
US8339395B2 (en) * 2008-07-08 2012-12-25 Lockheed Martin Corporation Method and apparatus for model compression
US8462161B1 (en) 2009-01-20 2013-06-11 Kount Inc. System and method for fast component enumeration in graphs with implicit edges
US8098247B2 (en) * 2009-09-24 2012-01-17 Crucs Holdings, Llc Systems and methods for geometric data compression and encryption
EP2387004B1 (en) 2010-05-11 2016-12-14 Dassault Systèmes Lossless compression of a structured set of floating point numbers, particularly for CAD systems
US8935129B1 (en) * 2010-06-04 2015-01-13 Bentley Systems, Incorporated System and method for simplifying a graph'S topology and persevering the graph'S semantics
JP2015504545A (ja) * 2011-11-07 2015-02-12 トムソン ライセンシングThomson Licensing 予測位置符号化
US10248740B2 (en) 2012-04-09 2019-04-02 Autodesk, Inc. Three-dimensional printing preparation
US20130279804A1 (en) * 2012-04-23 2013-10-24 Daniel Kilbank Dual transform lossy and lossless compression
US10109105B2 (en) * 2016-07-12 2018-10-23 Nature Simulation Systems Inc. Method for immediate boolean operations using geometric facets
US10120961B2 (en) * 2016-07-12 2018-11-06 Nature Simulation Systems Inc. Method for immediate boolean operations using geometric facets
US11710259B2 (en) * 2020-02-10 2023-07-25 Tencent America LLC Predictive tree coding for point cloud coding
CN114119804A (zh) * 2021-09-30 2022-03-01 广东三维家信息科技有限公司 平面模型包围多边形生成方法、装置及家具轮廓识别方法

Family Cites Families (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA820968A (en) * 1969-08-19 Shima Takesaburo PROCESS FOR PRODUCING HIGH PURITY .beta.-METHYLMERCAPTOPROPIONALDEHYDE
US2542768A (en) * 1945-10-24 1951-02-20 Du Pont Hydroxy-methylmercaptobutyronitrile
US2564105A (en) * 1949-08-03 1951-08-14 Du Pont Aqueous methionine nitrile sulfate
US2626282A (en) * 1949-10-05 1953-01-20 Standard Oil Dev Co Vapor phase production of betamethylmercaptopropionaldehyde
US2676190A (en) * 1951-10-23 1954-04-20 Du Pont Process for the manufacture of beta-methylmercapto-propionaldehyde
US2776996A (en) * 1955-12-22 1957-01-08 Du Pont Manufacture of beta-methylmercaptopropionaldehyde
US3529940A (en) * 1966-04-25 1970-09-22 Sumitomo Chemical Co Apparatus for two-stage production of beta-methylmercaptopropionaldehyde
NL6705792A (ko) * 1966-04-25 1967-10-26
GB1166961A (en) * 1966-04-30 1969-10-15 Sumitomo Chemical Co Process for Producing beta-Methylmercaptopropionaldehyde
BE702187A (ko) * 1966-08-12 1968-01-15
NL132124C (ko) * 1966-09-02
ES357862A1 (es) * 1967-10-13 1970-04-01 Glanzstoff Ag Procedimiento para la fabricacion de beta metilmecaptopro- pionaldehido.
CH491882A (de) * 1967-10-13 1970-06-15 Glanzstoff Ag Verfahren zur Herstellung von B-Methylmercaptopropionaldehyd
NL6809647A (ko) * 1968-07-09 1970-01-13
JPS49818B1 (ko) * 1970-08-12 1974-01-10
JPS4856144A (ko) * 1971-11-12 1973-08-07
BE791831A (fr) * 1971-11-26 1973-03-16 Degussa Procede d'obtention de 3-methylmercaptopropionaldehyde pur
DE2320544C2 (de) * 1973-04-21 1975-06-05 Deutsche Gold- Und Silber-Scheideanstalt Vormals Roessler, 6000 Frankfurt Verfahren zur Herstellung von 3-Methylmercaptopropionaldehyd
FR2314917A1 (fr) * 1975-06-20 1977-01-14 Rhone Poulenc Ind Procede de fabrication de l'aldehyde beta-methylthiopropionique
FR2460925A1 (fr) * 1979-07-10 1981-01-30 Rhone Poulenc Ind Procede de preparation directe d'aldehyde beta-methylthiopropionique
RO85095B1 (ro) * 1982-03-22 1984-10-30 Institutul De Cercetari Pentru Produse Auxiliare Organice Procedeu continuu pentru prepararea beta-metilmercaptopropionaldehidei
US5198578A (en) * 1986-07-17 1993-03-30 Union Carbide Chemicals Anhydrous diluents for the propylene oxidation reaction to acrolein and acrolein oxidation to acrylic acid
US5183936A (en) * 1986-08-21 1993-02-02 Union Carbide Chemicals & Plastics Technology Corporation Anhydrous diluent process for the propylene oxidation reaction to acrolein and acrolein oxidation to acrylic acid
US5015776A (en) * 1986-10-28 1991-05-14 Atochem North America, Inc. Preparation of 3-(alkylthio) aldehydes
US5233688A (en) * 1988-03-31 1993-08-03 Kabushiki Kaisha Toshiba Method and apparatus for process monitoring and method of constructing network diagram for process monitoring
US5155262A (en) * 1988-09-26 1992-10-13 Union Carbide Chemicals & Plastics Technology Corporation Anhydrous diluents for the isobutylene oxidation reaction to methacrolein and methacrolein oxidation to methacrylic acid
US5352837A (en) * 1993-06-08 1994-10-04 Novus International, Inc. Process for the preparation of 3-(methylthio)propanal
WO1996001810A1 (en) * 1994-07-11 1996-01-25 Novus International, Inc. Process for the preparation of 3-(methylthio)propanal

Also Published As

Publication number Publication date
US5825369A (en) 1998-10-20
KR970059967A (ko) 1997-08-12

Similar Documents

Publication Publication Date Title
KR100233972B1 (ko) 기하학적 모델을 압축 및 압축해제하는 컴퓨터 시스템과 압축 및압축해제
US5905507A (en) Compression of geometric models using spanning trees
Taubin et al. Geometric compression through topological surgery
US6184897B1 (en) Compressed representation of changing meshes and method to decompress
US6031548A (en) Progressive multi-level transmission and display of triangular meshes
US6009435A (en) Progressive compression of clustered multi-resolution polygonal models
US6452596B1 (en) Methods and apparatus for the efficient compression of non-manifold polygonal meshes
Guéziec et al. A framework for streaming geometry in VRML
US7230616B2 (en) Bi-level iso-surface compression
De Floriani et al. A survey on data structures for level-of-detail models
JP4372477B2 (ja) 2分木を巡回する方法およびシステム
King et al. Connectivity compression for irregular quadrilateral meshes
Weiss et al. Simplex and diamond hierarchies: Models and applications
JP2000224582A (ja) 漸進的な三次元メッシュ情報の符号化/復号化方法及びその装置
JP3184785B2 (ja) 三次元形状モデル送信方法及び装置、三次元形状モデル圧縮方法及び装置、三次元形状モデル表示方法及び装置
Samet et al. On encoding boundaries with quadtrees
Pascal et al. Fast adaptive quadtree mesh generation
US6718290B1 (en) Systems and methods for encoding tetrahedral meshes
Stewart Tunneling for triangle strips in continuous level-of-detail meshes
Bóo et al. Hardware support for adaptive subdivision surface rendering
Lee et al. Parallel mesh simplification using embedded tree collapsing
US8207965B2 (en) Rewritable compression of triangulated data
Pajarola et al. Implant sprays: Compression of progressive tetrahedral mesh connectivity
US6307551B1 (en) Method for generating and applying changes in the level of detail of a polygonal surface
US20030076319A1 (en) Method and apparatus for encoding and decoding an object

Legal Events

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

Payment date: 20110902

Year of fee payment: 13

LAPS Lapse due to unpaid annual fee