KR101087427B1 - 3차원 장면 계층구조를 2차원 합성 시스템으로 통합하기 위한 컴퓨터로 구현된 방법 및 컴퓨터 판독가능 기록 매체 - Google Patents

3차원 장면 계층구조를 2차원 합성 시스템으로 통합하기 위한 컴퓨터로 구현된 방법 및 컴퓨터 판독가능 기록 매체 Download PDF

Info

Publication number
KR101087427B1
KR101087427B1 KR1020067021882A KR20067021882A KR101087427B1 KR 101087427 B1 KR101087427 B1 KR 101087427B1 KR 1020067021882 A KR1020067021882 A KR 1020067021882A KR 20067021882 A KR20067021882 A KR 20067021882A KR 101087427 B1 KR101087427 B1 KR 101087427B1
Authority
KR
South Korea
Prior art keywords
visual
objects
model
scene
tree hierarchy
Prior art date
Application number
KR1020067021882A
Other languages
English (en)
Other versions
KR20070004878A (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 KR20070004878A publication Critical patent/KR20070004878A/ko
Application granted granted Critical
Publication of KR101087427B1 publication Critical patent/KR101087427B1/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • G06T17/005Tree description, e.g. octree, quadtree
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T19/00Manipulating 3D models or images for computer graphics
    • G06T19/20Editing of 3D images, e.g. changing shapes or colours, aligning objects or positioning parts

Abstract

3D 장면의 2D 뷰를 포함하는 이미지를 컴퓨터 디스플레이 상에 렌더링하는 한결같은 프로세스를 위해 2D 비주얼(visual) 객체와 3D 장면(scene) 객체의 계층구조가 통합된다. 비주얼 계층구조에서의 2D 비주얼 객체와 3D 모델 객체의 프로세스는 3D 동작과 2D 동작 간에 쉽게 핸드 오프(hand off)될 수 있도록 통합된다. 또한 디스플레이 이미지를 생성할 때 비주얼 2D 객체와 3D 모델 객체의 프로세스 간의 이행 횟수도 구조적으로 제한이 없다. 3D 모델 객체를 가리키는 3D 장면 객체 또는 비주얼 2D 객체를 갖는 비주얼 트리 객체 계층구조에서 3D 이미지와 2D 이미지를 생성하기 위한 본 발명의 데이터 구조는 컴퓨터 프로그램 객체를 통합한다. 이 데이터 구조는 객체 트리 계층구조, 하나 이상의 비주얼 2D 객체 및 3D 모델 객체를 가리키는 하나 이상의 3D 참조 또는 장면 객체를 포함한다. 비주얼 2D 객체는 2D 이미지를 그리는 동작을 정의한다. 3D 참조 또는 장면 객체는 하나 이상의 3D 모델로 이루어진 3D 장면의 2D 뷰를 함께 그리는 동작들을 갖는 객체를 가리키는 참조를 정의한다. 3D 참조 또는 장면 객체는 3D 모델 객체 또는 카메라 객체를 가리킨다. 카메라 객체는 3D 장면의 2D 뷰를 정의한다. 3D 모델 객체는 3D 모델을 그리고, 모델의 윤곽(contour)을 그리는 데에 사용되는 메쉬(mesh) 정보와, 모델의 표면 텍스처(texture)를 그리는 데에 사용되는 소재(material) 정보를 정의한다. 모델의 표면 텍스처에 대한 소재 정보는 비주얼 2D 객체, 3D 참조 또는 장면 객체, 또는 비주얼 2D 객체 및/또는 3D 참조 장면 객체의 트리 계층구조에 의해 정 의될 수 있다.
2D 비주얼 객체, 3D 장면 객체, 트리 계층구조

Description

3차원 장면 계층구조를 2차원 합성 시스템으로 통합하기 위한 컴퓨터로 구현된 방법 및 컴퓨터 판독가능 기록 매체{A COMPUTER IMPLEMENTED METHOD AND COMPUTER READABLE RECORDING MEDIUM FOR INTEGRATING THREE DIMENSIONAL SCENE HIERARCHY INTO TWO DIMENSIONAL COMPOSITING SYSTEM}
본 발명은 일반적으로 컴퓨터 그래픽 분야에 관한 것이다. 보다 구체적으로는, 본 발명은 3차원 그래픽을 2차원 합성(compositing) 시스템에 통합하는 것에 관한 것이다.
컴퓨터 시스템에서 그래픽을 액세스하는 종래 모델은, 일부분, 메모리와 버스의 속도가 메인 프로세서 및/또는 그래픽 프로세서의 발전 속도를 따라 잡지 못하기 때문에 그 한계에 도달하고 있다. 일반적으로, 비트맵을 이용하여 프레임을 작성하는 현재의 모델에서는, 복잡한 그래픽 효과를 원하는 경우 하드웨어의 리프레시 레이트에 부응하기 위해서는 아주 많은 데이터 처리를 필요로 한다. 그 결과, 종래의 그래픽 모델로 복잡한 그래픽 효과를 시도하는 경우, 다음 프레임에 대해 때맞추어 시각적 효과를 인지하게 하는 변경을 완료하지 못하고, 그 변경이 다른 프레임들에 더해져 시각적으로 바람직하지 않은 결과를 초래한다.
또한, 이러한 문제점은 3D 그래픽과 3D 이미지가 디스플레이되고 있는 애니메이션과 같은 특수 효과의 도입으로 인해 심화되었다. 따라서, 실시간으로 3D 이 미지를 렌더링하며, 컴퓨터 프로그램에 의해 호출되는 이미지로 이미지를 생성할 수 있는 그래픽 생성 및 합성 시스템이 필요하게 되었다. 또한, 3D 이미지의 생성은, 필요한 경우, 디스플레이 상에 3D 이미지와 2D 이미지를 혼합하여 제공하기 위해 반드시 2D 그래픽 디스플레이로 통합되어야 한다.
상술된 문제점과 다른 문제점들은 3D 모델 객체를 2D 비주얼(visual) 객체의 계층구조로 통합하고 2D 디스플레이 상에 렌더링하기 위해 3D 이미지와 2D 이미지를 한결같이 처리함으로써 해결된다. 비주얼 계층구조에서의 2D 비주얼 객체와 3D 모델 객체의 처리는 3D 동작과 2D 동작 간에 쉽게 핸드 오프(hand off)될 수 있도록 통합된다. 또한 디스플레이 이미지를 생성할 때 비주얼 2D 객체와 3D 모델 객체의 처리 간의 이행 횟수도 구조적으로 제한이 없다. 따라서, 사용자는 3D 이미지를 2D 이미지에 포함시키고 2D 이미지를 3D 이미지에 포함시키는 그래픽을 무한히 생성할 수 있다. 예를 들어, 사용자 인터페이스 대화 박스는, 원뿔형(cone)으로 텍스처링된(textured) 다른 대화 박스의 일부로서 디스플레이되는 구형(sphere)으로 텍스처링될 수 있다.
본 발명의 다른 양태에 따르면, 본 발명은 3D 모델 객체를 가리키는 3D 장면(scene) 객체 또는 비주얼 2D 객체를 갖는 비주얼 트리 객체 계층구조에서 3D 이미지와 2D 이미지를 생성하기 위한 컴퓨터 프로그램 객체를 통합하기 위한 데이터 구조에 관한 것이다. 이 데이터 구조는 객체 트리 계층구조, 하나 이상의 비주얼 2D 객체 및 3D 모델 객체를 가리키는 하나 이상의 3D 참조 또는 장면 객체를 포함한다. 비주얼 2D 객체는 2D 이미지를 그리는 동작을 정의한다. 3D 참조 또는 장면 객체는 하나 이상의 3D 모델로 이루어진 3D 장면의 2D 뷰를 함께 그리는 동작들을 갖는 객체를 가리키는 참조를 정의한다. 3D 참조 또는 장면 객체는 3D 모델 객체 및 카메라 객체를 가리킨다. 카메라 객체는 3D 장면의 2D 뷰를 정의한다. 3D 모델 객체는 3D 모델을 그리고, 모델의 윤곽(contour)을 그리는 데에 사용되는 메쉬(mesh) 정보와, 모델의 표면 텍스처(texture)를 그리는 데에 사용되는 소재 (material) 정보를 정의한다. 모델의 표면 텍스처에 대한 소재 정보는 비주얼 2D 객체, 3D 참조 또는 장면 객체, 또는 비주얼 2D 객체 및/또는 3D 참조 장면 객체의 트리 계층구조에 의해 정의될 수 있다.
본 발명의 또 다른 양태에 따르면, 본 발명은 컴퓨터의 출력으로 2D 이미지와 3D 이미지의 혼합 이미지를 생성하기 위한 컴퓨터 프로그램 비주얼 객체의 계층구조를 처리하기 위한 방법에 관한 것이다. 이 방법은 비주얼 객체의 제1 트리 계층구조의 분기점(branch)을 횡단하여 종단(leaf) 객체와 분기 객체를 처리하는 단계, 처리되지 않은 다음 비주얼 객체가 비주얼 2D 객체인지 또는 비주얼 3D 객체인지를 검출하는 단계를 포함한다. 비주얼 2D 객체가 검출되면, 이 비주얼 객체를 처리하기 위해 2D 프로세스가 호출된다. 비주얼 3D 객체가 검출되면, 이 비주얼 객체를 처리하기 위해 3D 프로세스가 호출된다. 3D 프로세스는 카메라 뷰를 설정하고, 비주얼 3D 객체에 의해 정의되는 하나 이상의 3D 모델의 이미지를 그린다. 이미지는 하나 이상의 3D 모델의 카메라 뷰에 기초하여 그려진다.
본 발명은 컴퓨터 프로세스로서, 컴퓨팅 시스템으로서, 또는 컴퓨터 프로그램 제품 또는 컴퓨터 판독가능 매체와 같은 제조품으로서 구현될 수 있다. 컴퓨터 판독가능 매체는 컴퓨터 시스템에 의해 판독가능하고, 컴퓨터 프로세스를 실행하기 위한 컴퓨터 명령어 프로그램을 인코딩한 컴퓨터 기억 매체일 수 있다. 컴퓨터 판독가능 매체는 또한 컴퓨팅 시스템에 의해 판독가능하거나 컴퓨터 프로세스를 실행하기 위한 컴퓨터 명령어 프로그램을 인코딩한 반송파의 전파된 신호일 수 있다.
본 발명을 특징짓는 이러한 특징 및 각종 다른 특징뿐만 아니라 이점들은, 이하의 상세한 설명을 읽고 관련된 도면을 보면 명백해질 것이다.
도 1은 3D 객체를 2D 객체의 비주얼 트리에 포함시키는, 본 발명의 한 실시예에 따라 조직된 비주얼 객체 계층구조를 도시하는 도면.
도 2는 본 발명의 실시예가 구현되기에 적합한 컴퓨팅 시스템 환경의 예를 도시하는 도면.
도 3은 본 발명이 구체화될 수 있는 그래픽 계층 아키텍처를 일반적으로 나타내는 블록도.
도 4는 비주얼의 장면 그래프 및, 그래픽 명령 및 다른 데이터를 제공하기 위해 장면 그래프를 횡단하는 것과 같이 장면 그래프를 처리하기 위한 관련 컴포넌트를 나타내는 도면.
도 5는 유효성(validation) 비주얼, 드로잉(drawing) 비주얼 및 관련 드로잉 프리미티브(primitive)가 구성되어 있는 장면 그래프를 나타내는 도면.
도 6은 비주얼 트리 계층구조 일부의 상세 예를 도시하는 도면이며, 여기서, 비주얼 3D 객체는 3D 모델 객체를 가리키고 있으며, 이 3D 모델 객체는 3D 장면을 또한 가리키는 비주얼 3D 컨텐츠를 갖는 프리미티브 3D 객체를 가지며, 이 3D 장면은 소재 컨텐츠로서 비주얼 2D 객체를 갖는 하나의 3D 모델을 갖는 3D 모델 그룹으로 이루어진 도면.
도 7은 3D 장면 또는 모델의 카메라 뷰 또는 2D 뷰를 정의하는 데에 사용되는 카메라 매개변수를 도시하는 도면.
도 8은 비주얼 트리의 비주얼 2D 객체를 처리하기 위한 동작 흐름과 동일한 비주얼 트리의 비주얼 3D 객체 프로세스로의 이행을 도시하는 동작 흐름도.
도 9는 비주얼 트리의 비주얼 3D 객체를 처리하기 위한 동작 흐름과 동일한 비주얼 트리의 비주얼 2D 객체 프로세스로의 이행을 도시하는 동작 흐름도.
도 10은 도 8 및 도 9의 동작 흐름도에서 처리되는 예시적인 비주얼 객체 트리를 도시하는 도면.
본 발명의 한 실시예에 따르면, 도 1은 트리가 비주얼 2D 객체와 3D 참조 또는 장면 비주얼 객체 모두를 가질 수 있도록 비주얼 객체 트리 계층구조에 통합된 3D 참조 또는 장면 비주얼 객체를 도시한다. 본 명세서에서 객체와 관련될 때 "비주얼(visual)"이라는 것은 객체가 컴퓨터 디스플레이 스크린 상에 렌더링한 드로잉(drawing)을 나타낸다. 비주얼 트리의 이 예시적인 도면에서, 루트 비주얼 객체(10)는 4 개의 자식을 가지며, 3D 장면 자식들 중 하나는 대안이다. 비주얼 2D 자식은 객체(12,14 및 16)이고, 3D 장면 객체들(18 및 20) 중 하나는 루트 비주얼 객체(10)의 네 번째 자식이다.
3D 장면 객체(18)는 비주얼 3D 객체(18)이고, 모델 3D 객체(24)로의 참조 또는 포인터(23)와, 3D 이미지를 2D 이미지로 보기 위한 카메라 객체(22)로의 참조 또는 포인터(25)를 포함한다. 비주얼 3D 객체에 관해서는 발명의 명칭이 "MODEL 3D CONSTRUCTION APPLICATION PROGRAM INTERFACE"인 상호 참조된 특허 출원에 상세히 기술되어 있다. 카메라(22)는 객체(24)가 그린 3D 모델을 3D 장면으로 본다. 모델 3D 객체(24)와 카메라 객체(22)는 컴퓨터 디스플레이 스크린 상에 3D 장면의 2D 이미지를 함께 생성한다. 3D 장면 객체(20)는 컨텍스트(context)를 그리는 비주얼 2D 객체다. 본 발명의 이 실시예에서, 비주얼 2D 객체의 드로잉 컨텍스트는 모델 3D 객체(24)로의 참조 또는 포인터(27)와 카메라 객체(22)로의 참조 또는 포인터(29)를 포함한다.
이미지를 생성하고 디스플레이를 렌더링하기 위해, 비주얼 트리의 분기점들은 왼쪽에서 오른쪽으로 횡단되고 처리된다. 따라서, 도 1에서의 렌더링 순서는 왼쪽에서 오른쪽으로 도시되어 있다. 드로잉 컨텍스트를 갖는 비주얼 2D 객체와 비주얼 트리의 프로세스는 상호 참조되고 발명의 명칭이 "VISUAL AND SCENE GRAPH INTERFACE"인 공동 양도된 특허에 설명되어 있다. 그 프로세스에 대한 간단한 리뷰가 본 명세서의 도 3 내지 도 5의 설명에 포함될 것이다.
이미지 디스플레이가 이 렌더링 순서로 어떻게 생성되는지를 설명하기 위해, 비주얼 2D 객체(12)가 삼각형을 생성하고, 비주얼 2D 객체(14)가 원을 생성하고, 비주얼 2D 객체(16)가 사각형을 생성한다고 가정한다. 3D 장면 비주얼 3D 객 체(18) 또는 3D 장면 비주얼 2D 객체(20)는 카메라로부터 보는 것과 같은 3D 장면을 생성한다. 렌더링 순서가 왼쪽에서 오른쪽이므로 나중에 렌더링된 객체가 먼저 렌더링된 객체를 겹칠 수 있고, 따라서 비주얼 트리(8)는 도 1의 디스플레이 이미지(25)를 만든다. 다시 말해, 비주얼(12)로부터 생성된 삼각형과 비주얼(14)로부터 생성된 원은, 비주얼(16)이 비주얼(12)과 비주얼(14) 후에 처리되었기 때문에 비주얼(16)이 제공한 사각형에 의해 겹쳐진다. 마찬가지로, 3D 장면 객체(18 또는 20)에 의해 생성된 3D 장면의 2D 뷰는 원 후에 만들어졌으므로 원 위에 겹쳐진다. 3D 장면과 이 장면을 볼 수 있는 가상 카메라를 포함하는 3D 장면 객체를 제공함으로써, 3D 장면 객체는 비주얼 트리의 다른 2D 이미지로서 렌더링될 수 있는 2D 이미지로 변환된다. 또한, 이미지가 비트맵 이미지가 아니라 그려지는 것이기 때문에, 디스플레이는 컴퓨터 디스플레이 스크린 또는 다른 컴퓨터 비디오 출력 상에 실시간으로 렌더링될 수 있다.
본 발명의 또 다른 중요한 특징은, 3D 모델 객체(24)가 소재(material) 또는 텍스처(texture) 정보(26)를 가질 수 있다는 것이다. 소재 정보(26)는 비주얼 객체(28)로 표현된 또 다른 비주얼 트리를 가리킬 수 있다. 이 비주얼 객체(28)는 비주얼 트리 루트 객체(10)와 마찬가지로 비주얼 2D 객체와 3D 장면 객체를 지닐 수 있다. 따라서, 비주얼 트리 계층구조는 3D 장면 객체를 2D 객체가 있는 비주얼 트리에 포함시킬 수 있고, 또한, 2D 객체와 3D 장면 객체를 갖는 제2의 비주얼 트리는 제1 비주얼 트리의 3D 장면 객체의 3D 모델에 포함될 수 있다. 트리 계층구조에서 이와 같이 3D 객체와 2D 객체를 순차적으로 교대로 포함하는 것은, 그래픽 프로그램 생성자가 2D 이미지와 3D 이미지가 혼합되어 있는 원하는 디스플레이를 만들기 위해 원하는 만큼 많이 처리될 수 있다.
비주얼 트리 계층구조에서의 3D 객체와 2D 객체의 통합에 대한 더 상세한 설명은 도 6에 도시되어 있다. 한편, 도 2 내지 도 5에서는 이제 통합된 비주얼 트리 계층구조를 처리하기 위한 예시적인 운영 환경 및 소프트웨어 환경에 대해 설명한다.
예시적인 운영 환경
도 2는 본 발명이 구현되기에 적합한 컴퓨팅 시스템 환경(100)의 예를 도시하고 있다. 컴퓨팅 시스템 환경(100)은 적합한 컴퓨팅 환경의 단지 일례이며, 본 발명의 사용 범위 또는 기능에 관해 어떠한 제한을 제안하고자 하는 것이 아니다. 컴퓨팅 환경(100)이 예시적인 운영 환경(100)에서 도시된 임의의 하나의 컴포넌트 또는 컴포넌트들의 조합에 관해 임의의 종속성 또는 요구사항을 가지는 것으로 해석되어서는 안 된다.
본 발명은 많은 기타 범용 또는 특수 목적의 컴퓨팅 시스템 환경 또는 구성에서 동작할 수 있다. 본 발명과 함께 사용하기에 적합하고 잘 알려진 컴퓨팅 시스템, 환경 및/또는 구성의 예로는 퍼스널 컴퓨터, 서버 컴퓨터, 핸드-헬드 또는 랩톱 장치, 태블릿 장치, 멀티프로세서 시스템, 마이크로프로세서 기반 시스템, 셋톱 박스, 프로그램가능한 소비자 가전제품, 네트워크 PC, 미니컴퓨터, 메인프레임 컴퓨터, 상기 시스템이나 장치 등의 임의의 것을 포함하는 분산 컴퓨팅 환경이 있지만 이에 제한되는 것은 아니다.
본 발명은 컴퓨터에 의해 실행되는 프로그램 모듈과 같은 컴퓨터 실행가능 명령어의 일반적인 문맥으로 기술될 수 있다. 일반적으로, 프로그램 모듈은 특정 태스크를 수행하고 또는 특정 추상 데이터 유형을 구현하는 루틴, 프로그램, 객체, 컴포넌트, 데이터 구조 등을 포함한다. 본 발명은 또한 통신 네트워크를 통해 링크된 원격 처리 장치들에 의해 태스크가 수행되는 분산 컴퓨팅 환경에서도 실행될 수 있다. 분산 컴퓨팅 환경에서, 프로그램 모듈은 메모리 저장 장치를 포함하는 로컬 및/또는 원격 컴퓨터 저장 매체 둘 다에 위치할 수 있다.
도 2와 관련하여, 본 발명을 구현하는 예시적인 시스템은 컴퓨터(110)의 형태인 범용 컴퓨팅 장치를 포함한다. 컴퓨터(110)의 컴포넌트는 처리 장치(120), 시스템 메모리(130) 및 시스템 메모리를 포함하는 각종 시스템 컴포넌트를 처리 장치(120)에 결합시키는 시스템 버스(121)를 포함하지만 이에 제한되는 것은 아니다. 시스템 버스(121)는 메모리 버스 또는 메모리 컨트롤러, 주변 버스 및 각종 버스 아키텍처 중 임의의 것을 이용하는 로컬 버스를 포함하는 몇몇 유형의 버스 구조 중 어느 것이라도 될 수 있다. 예로서, 이러한 아키텍처는 ISA(industry standard architecture) 버스, MCA(micro channel architecture) 버스, EISA(Enhanced ISA) 버스, VESA(video electronics standard association) 로컬 버스, AGP(Accelerated Graphics Port) 버스 그리고 메자닌 버스(mezzanine bus)로도 알려진 PCI(peripheral component interconnect) 버스 등을 포함하지만 이에 제한되는 것은 아니다.
컴퓨터(110)는 통상적으로 각종 컴퓨터 판독가능 매체를 포함한다. 컴퓨 터(110)에 의해 액세스 가능한 매체는 그 어떤 것이든지 컴퓨터 판독가능 매체가 될 수 있고, 이러한 컴퓨터 판독가능 매체는 휘발성 및 비휘발성 매체, 이동식 및 이동불가식 매체를 포함한다. 예로서, 컴퓨터 판독가능 매체는 컴퓨터 저장 매체 및 통신 매체를 포함하지만 이에 제한되는 것은 아니다. 컴퓨터 저장 매체는 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터와 같은 정보의 저장을 위해 모든 방법 또는 기술로 구현되는 휘발성 및 비휘발성, 이동식 및 이동불가식 매체를 포함한다. 컴퓨터 저장 매체는 RAM, ROM, EEPROM, 플래시 메모리 또는 기타 메모리 기술, CD-ROM, DVD(digital versatile disk) 또는 기타 광 디스크 저장 장치, 자기 카세트, 자기 테이프, 자기 디스크 저장 장치 또는 기타 자기 저장 장치, 또는 컴퓨터(110)에 의해 액세스되고 원하는 정보를 저장할 수 있는 임의의 기타 매체를 포함하지만 이에 제한되는 것은 아니다. 통신 매체는 통상적으로 반송파(carrier wave) 또는 기타 전송 메커니즘(transport mechanism)과 같은 피변조 데이터 신호(modulated data signal)에서 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터 등을 구현하고 모든 정보 전달 매체를 포함한다. "피변조 데이터 신호"라는 용어는, 신호 내의 정보가 인코딩되도록 그 신호의 하나 이상의 특성을 설정 또는 변경시킨 신호를 의미한다. 예로서, 통신 매체는 유선 네트워크 또는 다이렉트 유선 접속과 같은 유선 매체, 그리고 음향, RF, 적외선, 기타 무선 매체와 같은 무선 매체를 포함하지만 이에 제한되는 것은 아니다. 상술된 매체들의 모든 조합이 또한 컴퓨터 판독가능 매체의 영역 안에 포함되어야 한다.
시스템 메모리(130)는 판독 전용 메모리(ROM)(131) 및 랜덤 액세스 메모리(RAM)(132)와 같은 휘발성 및/또는 비휘발성 메모리의 형태로 컴퓨터 저장 매체를 포함한다. 시동 시 컴퓨터(110) 내의 구성요소들 사이의 정보 전송을 돕는 기본 루틴을 포함하는 기본 입/출력 시스템(BIOS)(133)은 통상적으로 ROM(131)에 저장되어 있다. RAM(132)은 통상적으로 처리 장치(120)에 즉시 액세스 가능하고 및/또는 현재 처리 장치(120)에 의해 동작되고 있는 데이터 및/또는 프로그램 모듈을 포함한다. 예로서, 도 2는 운영 체제(134), 애플리케이션 프로그램(135), 기타 프로그램 모듈(136) 및 프로그램 데이터(137)를 도시하고 있지만 이에 제한되는 것은 아니다.
컴퓨터(110)는 또한 기타 이동식/이동불가식, 휘발성/비휘발성 컴퓨터 저장매체를 포함한다. 단지 예로서, 도 2는 이동불가식, 비휘발성 자기 매체로의 기록 또는 그로부터의 판독을 위한 하드 디스크 드라이브(141), 이동식, 비휘발성 자기 디스크(152)로의 기록 또는 그로부터의 판독을 위한 자기 디스크 드라이브(151), CD-ROM 또는 기타 광 매체 등의 이동식, 비휘발성 광 디스크(156)로의 기록 또는 그로부터의 판독을 위한 광 디스크 드라이브(155)를 포함한다. 예시적인 운영 환경에서 사용될 수 있는 기타 이동식/이동불가식, 휘발성/비휘발성 컴퓨터 기억 매체로는 자기 테이프 카세트, 플래시 메모리 카드, DVD, 디지털 비디오 테이프, 고체(solid state) RAM, 고체 ROM 등이 있지만 이에 제한되는 것은 아니다. 하드 디스크 드라이브(141)는 통상적으로 인터페이스(140)와 같은 이동불가식 메모리 인터페이스를 통해 시스템 버스(121)에 접속되고, 자기 디스크 드라이브(151) 및 광 디 스크 드라이브(155)는 통상적으로 인터페이스(150)와 같은 이동식 메모리 인터페이스에 의해 시스템 버스(121)에 접속된다.
위에서 설명되고 도 2에 도시된 드라이브들 및 이들과 관련된 컴퓨터 저장 매체는, 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 및 컴퓨터(110)의 다른 데이터를 저장한다. 도 2에서, 예를 들어, 하드 디스크 드라이브(141)는 운영 체제(144), 애플리케이션 프로그램(145), 기타 프로그램 모듈(146) 및 프로그램 데이터(147)를 저장하는 것으로 도시되어 있다. 여기서 주의할 점은 이 컴포넌트들이 운영 체제(134), 애플리케이션 프로그램(135), 기타 프로그램 모듈(136) 및 프로그램 데이터(137)와 동일할 수도 있고 다를 수도 있다는 것이다. 이에 관해, 운영 체제(144), 애플리케이션 프로그램(145), 기타 프로그램 모듈(146) 및 프로그램 데이터(147)에 다른 번호가 주어졌다는 것은 적어도 이들이 서로 다른 사본(copy)이라는 것을 도시한다. 사용자는 태블릿(전자 디지타이저)(164), 마이크(163), 키보드(162) 및 일반적으로 마우스, 트랙볼(trackball) 또는 터치 패드라고 알려진 포인팅 장치(161) 등의 입력 장치를 통해 명령 및 정보를 컴퓨터(110)에 입력할 수 있다. 다른 입력 장치(미도시)로는 조이스틱, 게임 패드, 위성 안테나, 스캐너 등이 있을 수 있다. 이들 및 기타 입력 장치는 종종 시스템 버스에 결합한 사용자 입력 인터페이스(160)를 통해 처리 장치(120)에 접속되지만, 병렬 포트, 게임 포트 또는 USB(universal serial bus) 등의 다른 인터페이스 및 버스 구조에 의해 접속될 수도 있다. 모니터(191) 또는 다른 유형의 디스플레이 장치도 비디오 인터페이스(190) 등의 인터페이스를 통해 시스템 버스(121)에 접속될 수 있다. 모 니터(191)는 또한 터치 스크린 인터페이스(192)와 같은 인터페이스를 통해 컴퓨터 시스템(110)에 핸드라이팅과 같은 디지털화된 입력을 입력할 수 있는 터치 스크린 패널(193) 등과 통합될 수 있다. 모니터 및/또는 터치 스크린 패널이 터치 스크린 패널(193)이 실질적으로 태블릿(164)으로 기능하는 경우 태블릿형 퍼스널 컴퓨터와 같은 컴퓨팅 장치(110)에 포함된 하우징에 물리적으로 결합할 수 있다는 것을 유의한다. 또한, 컴퓨팅 장치(110)와 같은 컴퓨터는 출력 주변장치 인터페이스(194) 등을 통해 접속될 수 있는 스피커(195) 및 프린터(196)와 같은 기타 출력 주변장치를 또한 포함할 수 있다.
컴퓨터(110)는 원격 컴퓨터(180)와 같은 하나 이상의 원격 컴퓨터로의 논리적 접속을 사용하여 네트워크화된 환경에서 동작할 수 있다. 원격 컴퓨터(180)는 또 하나의 퍼스널 컴퓨터, 서버, 라우터, 네트워크 PC, 피어 장치 또는 다른 공통 네트워크 노드일 수 있고, 통상적으로 컴퓨터(110)와 관련하여 상술된 구성요소의 대부분 또는 그 전부를 포함하지만, 도 2에는 메모리 저장 장치(181)만이 도시되어 있다. 도 2에 도시된 논리적 연결로는 LAN(171) 및 WAN(173)이 있지만, 다른 네트워크를 포함할 수도 있다. 이러한 네트워킹 환경은 사무실, 회사 전체에 걸친 컴퓨터 네트워크, 인트라넷 및 인터넷에서 일반적이다.
LAN 네트워킹 환경에서 사용될 때, 컴퓨터(110)는 네트워크 인터페이스 또는 어댑터(170)를 통해 LAN(171)에 접속된다. WAN 네트워킹 환경에서 사용될 때, 컴퓨터(110)는 통상적으로 인터넷과 같은 WAN(173) 상에서의 통신을 설정하기 위한 모뎀(172) 또는 기타 수단을 포함한다. 내장형 또는 외장형일 수 있는 모뎀(172) 은 사용자 입력 인터페이스(160) 또는 기타 적절한 메커니즘을 통해 시스템 버스(121)에 접속될 수 있다. 네트워크화된 환경에서, 컴퓨터(110) 또는 그의 일부와 관련하여 기술된 프로그램 모듈은 원격 메모리 저장 장치에 저장될 수 있다. 그 예로서, 도 2는 메모리 장치(181)에 상주하고 있는 원격 애플리케이션 프로그램(185)을 도시하고 있지만 이에 제한되는 것은 아니다. 도시된 네트워크 접속은 예시적인 것이며 이 컴퓨터들 사이의 통신 링크를 설정하는 다른 수단이 사용될 수 있다는 것을 이해할 것이다.
비주얼 트리 계층구조를 처리하기 위한 소프트웨어 환경
도 3은 비주얼 트리를 처리할 수 있는 일반적인 계층화 아키텍처(200)를 나타낸다. 도 3에 도시된 바와 같이, 프로그램 코드(202)(예를 들어, 응용 프로그램 또는 운영 체제 컴포넌트 등)는 본 발명의 양태에 따라, 이미징(204), 벡터 그래픽 구성요소(206) 및/또는 비주얼 응용 프로그래밍 인터페이스(application programming interface:API) 층(212)으로 바로 향하는 함수/메소드 호출을 통해서와 같이 하나 이상의 각종 방법으로 그래픽 데이터를 출력하도록 개발될 수 있다. 일반적으로, 이미징(204)은 프로그램 코드(202)에 비트맵과 같은 이미지를 로딩하고, 편집하고 또 저장하기 위한 메커니즘을 제공한다. 후술되는 바와 같이, 이들 이미지는 시스템의 다른 부분들에 의해 사용되며, 직접 이미지를 그리기 위해 프리미티브 드로잉 코드를 사용하는 방법이 또한 있다. 벡터 그래픽 구성요소(206)는 (이하에 설명되는) 나머지 객체 모델과 일관된, 그래픽을 그리는 또 다른 방법을 제공한다. 벡터 그래픽 구성요소(206)는, 구성요소/특성 시스템(208)과 제공자 시 스템(210)이 비주얼 API 계층(212)으로의 적절한 호출을 생성하도록 해석하는 마크업 언어를 통해 생성될 수 있다.
그래픽 계층 아키텍처(200)는 캐싱 데이터 구조(216)를 포함하거나 또는 그것과 관련되는 상위-레벨 합성(composition) 및 애니메이션 엔진(214)을 포함한다. 캐싱 데이터 구조(216)는 후술되는 바와 같이 규정된 객체 모델에 따라 관리되는 계층적으로 배열된 객체를 포함하는 장면 그래프를 포함한다. 일반적으로, 비주얼 API 계층(212)은 프로그램 코드(202)(와 제공자 시스템(210))에, 캐싱 데이터 구조(216)에 데이터를 제공하기 위해 객체를 생성하고, 객체를 열고 객체를 닫는 등의 기능을 포함하여, 캐싱 데이터 구조(216)로의 인터페이스를 제공한다. 다시 말해, 상위-레벨 합성 및 에니메이션 엔진(214)은, 개발자가 그래픽 정보를 디스플레이하는 그래픽과 매체에 대한 의도를 표현할 수 있고, 플랫폼이 프로그램 코드를 위한 하드웨어의 사용을 최적화할 수 있도록 기초 플랫폼에 충분한 정보를 제공할 수 있는 단일화된 매체 API 계층(212)을 노출시킨다. 예를 들어, 기초 플랫폼은 캐싱, 자원 협상 및 매체 통합을 담당할 것이다.
상위-레벨 합성 및 애니메이션 엔진(214)은 명령어 스트림과 아마도 다른 데이터(예를 들어, 비트맵으로의 포인터)를 빠른 하위-레벨 합성 및 애니메이션 엔진(218)으로 전달한다. 본 명세서에서 사용된 바와 같이, 용어 "상위-레벨"과 "하위-레벨"은 다른 컴퓨팅 시나리오에서 사용되는 것과 유사하며, 일반적으로, 소프트웨어 컴포넌트가 상위 컴포넌트에 대해 덜 관련되면 될수록, 그 컴포넌트는 하드웨어에 가깝다. 따라서, 예를 들어, 상위-레벨 합성 및 애니메이션 엔진(214)으로 부터 전송된 그래픽 정보는 하위-레벨 합성 및 애니메이션 엔진(218)에서 수신될 수 있고, 이 정보는 하드웨어(222)를 포함한 그래픽 서브시스템으로 그래픽 데이터를 송신하는 데에 사용된다.
프로그램 코드(202)와 함께 상위-레벨 합성 및 애니메이션 엔진(214)은 프로그램 코드(202)가 제공하는 그래픽 장면을 나타내는 장면 그래프를 구축한다. 예를 들어, 그려질 각각의 아이템들은 드로잉 명령어에 의해 로딩될 수 있고, 시스템은 장면 그래프 데이터 구조(216)에 캐싱할 수 있다. 후술되는 바와 같이, 이 데이터 구조(216)와 그려질 것을 특정하는 각종 많은 방법이 있다. 또한, 상위-레벨 합성 및 애니메이션 엔진(214)은 타이밍 및 애니메이션 시스템(220)과 같이 선언적(또는 다른) 애니메이션 제어(예를 들어, 애니메이션 간격) 및 타이밍 제어를 제공한다. 애니메이션 시스템을 이용하여 애니메이트 값이 구성 요소 속성 레벨(208), 비주얼 API 계층(212) 내부 및 임의의 다른 자원으로를 포함하여, 시스템의 어느 곳으로나 사실상 전달될 수 있다는 것을 유의한다.
하위-레벨 합성 및 애니메이션 엔진(218)은 장면을 합성하고, 움직이게 하고 렌더링하는 것을 관리하여, 이것을 그래픽 시스템(222)에 제공한다. 하위-레벨 엔진(218)은 다수의 애플리케이션의 장면을 위한 렌더링을 구상하고, 렌더링 컴포넌트로 스크린으로의 그래픽의 실제 렌더링을 구현한다. 그러나, 때때로 렌더링 중 일부는 더 높은 레벨에서 일어나는 것이 필요하고 및/또는 이롭다는 것을 유의한다. 예를 들어, 다수의 애플리케이션으로부터 하위 계층 서비스가 요청될 때, 상위 계층은 애플리케이션별로 인스턴스화되며, 그것에 따라 이미징 메커니즘(204)을 통해 높은 레벨에서의 시간이 소요되거나 또는 애플리케이션에 고유한 렌더링을 수행하여, 하위 계층으로 비트맵에 대한 기준을 전달하는 것이 가능하다.
도 4 및 도 5는 비주얼이라 지칭되는 기반(base) 객체를 포함하는 예시적인 장면 그래프(300 및 400)를 각각 도시한다. 일반적으로, 비주얼은 사용자로의 비주얼 표면을 나타내고 디스플레이 상에 시각적으로 표현하는 객체를 포함한다. 도 4에 표현된 바와 같이, 최상위-레벨(또는 루트) 비주얼(302)이 비주얼 관리자 객체(304)에 접속되어 있고, 이것은 또한 윈도우(HWnd)(306)와 또는 그래픽 데이터가 프로그램 코드에 대한 출력인 유사한 장치와 (예를 들어, 핸들을 통해) 관계를 지닌다. 비주얼 관리자(304)는 그 윈도우(306)에 최상위-레벨 비주얼(및 그 비주얼의 모든 자식)을 그리는 것을 관리한다. 그리기 위해, 비주얼 관리자(304)는 디스패처(dispatcher)(308)에 의해 스케줄된 대로 장면 그래프를 처리(예를 들어, 횡단 또는 전송)하며, 그래픽 명령어와 다른 데이터를 그 대응 윈도우(306)에 대한 하위-레벨 컴포넌트(218)(도 3 참조)에 제공한다. 장면 그래프 프로세스는 보통 하위-레벨 컴포넌트(218) 및/또는 그래픽 서브시스템(222)의 리프레시 레이트보다는 비교적 느린 레이트로 디스패처(308)에 의해 스케줄링된다. 도 4는 최상위-레벨(루트) 비주얼(302) 아래에 계층적으로 배열된 많은 자식 비주얼들(310-315)을 도시하며, 이중 일부는 예를 들어, 드로잉 프리미티브 및 다른 비주얼을 포함하는 관련 명령어 목록(318 및 319)을 각각 갖는 드로잉 컨텍스트(316 및 317)(이것은 그것의 일시적인 속성을 나타내기 위해 점선 박스로 도시되어 있음)를 통해 활성화된 것으로 나타나 있다. 비주얼은 또한 이하의 예시적인 비주얼 클래스에서 도시된 바와 같이, 다른 속성 정보를 포함할 수 있다.
Figure 112006075949813-pct00001
이로부터 알 수 있듯이, 비주얼은 변형(transfrom), 클립(clip), 불투명도(opacity) 및, get 메소드를 통해 판독되거나 설정될 수 있는 다른 속성을 제공함으로써 서비스를 제공한다. 또한, 비주얼은 이것이 어떻게 히트(hit) 테스트에 참여할지를 제어하는 플래그를 지닌다. Show 속성은 거짓일 때는 비주얼이 보이지 않게 하고, 그렇지 않을 경우 비주얼이 보이도록 하는 것과 같이 비주얼을 보여 주거나/숨기는 데에 사용된다.
transform 속성에 의해 설정되는 변형은 비주얼의 서브-그래프에 대한 좌표계를 정의한다. 변형 전의 좌표계는 변형 전 좌표계라 지칭되며, 변형된 후의 좌표계는 변형 후 좌표계라 지칭되며, 즉, 변형된 비주얼은 부모로서 변형 노드를 갖는 비주얼과 동등하다. 비주얼 트리와 합성 시스템에 관한 더 자세한 설명은 상술되고 상호 참조된 발명의 명칭이 "VISUAL AND SCENE GRAPH INTERFACE"인 관련 특허 에 포함되어 있다.
비주얼 트리 계층구조로의 비주얼 3D의 포함
상술된 하드웨어 및 소프트웨어 환경을 염두에 두면서, 도 6은 비주얼 2D를 또한 갖는 비주얼 트리 계층구조에 3D 장면 객체를 통합시키는 것을 도시한다. 도 1을 참조하여 전술된 바와 같이, 비주얼 3D 장면 객체는 3D 장면의 카메라 뷰인 2D 이미지를 생성한다. 도 1에 대해 상술한 바와 같이, 3D 장면 객체는 3D 모델로의 포인터를 갖는 비주얼 3D 객체 또는, 3D 모델을 가리키는 드로잉 컨텍스트를 갖는 비주얼 2D 객체로 구현된다. 도 1에 대해 또한 상술한 바와 같이, 카메라 객체로 향하는 도 1에 도시된 제2 포인터가 있다. 도 6의 예에서, 3D 장면 객체에서 3D 모델로 향하는 포인터가 포인터(602)로 도시되어 있다. 이 포인터(602)는 3D 객체를 그리고, 이 3D 객체를 그릴 때 메시 정보(606)와 소재 정보(608)를 이용하는 3D 모델 프리미티브(604)를 가리킨다.
메쉬 정보(606)는 3D 모델의 3D 윤곽을 근사하는 데에 사용될 수 있는 2D 형상의 메쉬를 지칭한다. 예를 들어, 의자와 같은 3D 모델 위로 천으로 된 메쉬 그물을 누르는 것을 그리는 경우, 그물을 의자의 윤곽이라 가정한다. 통상적으로 메쉬는 평면 삼각형으로 이루어진다. 삼각형이 일반적으로 매우 작아서 3D 윤곽을 따르는 데에 사용될 수 있는 정밀 메쉬를 형성할 수 있기 때문이다. 삼각형 외에, 세 개보다 많은 면 또는 심지어 연속 면을 갖는 다른 2D 형상이 메쉬를 형성하는 데에 사용될 수 있지만, 삼각형의 세 점이 한 평면을 정의하고 이것이 메쉬가 계산을 단순화시키기 때문에 삼각형이 바람직하다.
또한 3D 모델 객체(604)에 관련된 정보인 소재 정보(608)는, 3D 모델의 이미지 상의 표면을 채우는 데에 사용되는 텍스처를 지칭한다. 텍스처는 음영(shading), 컬러, 또는 추가의 비주얼 이미지일 수 있다. 도 6에서, 소재에 대한 추가의 비주얼 이미지는 3D 장면 객체(610)다.
3D 장면 객체(610)는 도 1에 기술된 바와 같이 비주얼 3D 객체이거나 또는 비주얼 2D 객체일 수 있다. 어느 경우든지 이것은 3D 모델로의 포인터와 카메라 객체로의 포인터를 갖는다. 포인터(612)는 3D 장면의 2D 뷰를 렌더링하는 카메라 매개변수를 정의하는 카메라 객체를 가리킨다. 도 6에서의 3D 객체로의 포인터(616)는 3D 컨텐츠(612)의 일부다. 포인터(616)는 3D 비주얼 트리를 구성하는 모델 3D 객체들의 루트 객체(618)를 가리킨다. 이 루트 객체는 3D 모델 그룹 객체(618)다. 3D 모델 그룹 객체(618)는 하나 이상의 모델 3D 프리미티브 객체를 포함하는 3D 비주얼 트리의 집합 노드 또는 루트 노드의 역할을 한다. 프리미티브 객체는 비주얼 3D 트리의 분기점의 종단에 있으며, 3D 모델을 생성하기 위한 드로잉 정보를 포함한다. 도 6에서, 두 개의 모델 3D 프리미티브 객체(프리미티브(620)와 프리미티브(622))와 모델 3D 광(light) 객체(624)가 있다. 광 객체(624)의 광 정보 컨텐츠는 3D 모델로 이루어진 3D 장면을 비추는 광과 가능하다면 광선의 방향을 정의한다. 3D 모델 프리미티브 각각의 드로잉 정보 컨텐츠는 메쉬 정보와 소재 정보를 포함한다. 이 컨텐츠는 메쉬 정보(626)와 소재 정보(628)로 프리미티브(622)에 대해서만 도시되어 있다. 소재 정보(628)는 단순하게 드로잉 컨텐츠 정보만을 가질 수도 있고 또는 비주얼 2D 객체 또는 3D 장면 객체 또는 그 둘 모두를 지닐 수 있다. 도 6의 예에서, 소재 정보(628)는 비주얼 2D 객체(630)를 갖는다.
도 6에 도시되어 있는 통합 구조를 다시 살펴보면, 도 6은 도 1의 객체(18) 또는 객체(20)와 같은 3D 장면 객체에서 모델 3D 객체(604)로 향하는 포인터로 시작된다. 모델 3D 객체(604)는 모델 3D 그룹 객체(618)와 카메라 객체(614)를 가리키는 3D 장면 객체(610)를 또한 갖는 소재 정보(608)를 갖는다. 자식을 갖는 3D 그룹(618)에 의해 정의된 3D 장면에서, 3D 프리미티브 객체(622)는 비주얼 2D 객체(630)를 가리키는 소재 정보 포인팅을 갖는다. 이러한 방식으로, 2D 비주얼 객체를 갖는 비주얼 트리 계층구조는 3D 장면 객체에 의해 생성된 3D 장면을 그 비주얼 트리 계층구조에 통합시킬 수 있다. 이어서, 3D 장면 트리의 모델 3D 객체는 추가의 비주얼 2D 객체, 3D 장면 객체 또는 그 둘 모두를 제2 비주얼 트리에 통합시키는 제2 비주얼 트리를 가리키는 정보 포인팅을 가질 수 있다. 3D 장면 객체와 비주얼 2D 객체의 이러한 통합은 무한히 진행될 수 있다.
본 발명의 두드러진 특징 중 하나는 비주얼 객체와 모델 3D 객체가 생성될 이미지의 비트맵을 저장하는 것이 아니라, 비주얼 트리가 처리될 때 이미지를 그리기 위한 명령어를 제공한다는 것이다. 이러한 비주얼 트리에 대한 프로세스가 바로 위에서 설명되었다. 3D 장면 비주얼 트리의 프로세스는 유사하지만 모델 3D 객체에 의해 정의되는 3D 장면의 2D 뷰를 생성하는 몇몇 동작이 추가된다.
3D 장면 객체는 3D 장면의 카메라 뷰, 즉 2D 뷰를 생성한다. 카메라 뷰는 가상 카메라의 "위치(position)", 가상 카메라의 "보기(look at)" 또는 목표 방향 그리고 카메라 뷰의 "시야(field)"를 식별하는 매개변수에 의해 특정된다. 카메라 매개변수의 예가 도 7에 도시되어 있으며, 여기서 카메라의 위치 또는 뷰 포인트는 X,Y,Z 좌표 (2,7,0)에 위치한다. 카메라의 보기 또는 목표 방향은 X,Y,Z 좌표가 6,1,2인 보기 위치에 의해 특정된다. 카메라의 뷰 시야는 30°로 표시되어 있다. 이들 카메라 매개변수는 3D 프리미티브가 생성하는 3D 모델을 그릴 때 카메라 또는 2D 뷰를 설정하는 데에 사용된다.
이들 카메라 매개변수는 뷰 카메라의 관점을 반영한다. 관련 특허로 상호 참조되고 상술되었으며, 발명의 명칭이 "MODEL 3D CONSTRUCTION APPLICATION PROGRAM INTERFACE"이고 공동으로 양도된 출원에 설명되어 있는 것과 같은 다른 카메라가 사용될 수도 있다. 예를 들어, 직교 카메라는 모든 광선이 평행하고 주 카메라 매개변수가 뷰의 목표 또는 보기, 방향 및 시야인 직교 뷰를 제공할 것이다.
도 8 및 도 9는 비주얼 2D 객체와 3D 장면 객체 둘 모두를 포함하는 비주얼 트리를 처리하기 위한 동작 흐름을 도시하는 도면이다. 도 8과 도 9를 설명할 때, 도 8과 도 9의 동작에 의해 처리되고 있는 비주얼 트리의 예로서 도 10을 참조한다. 도 8과 도 9의 논리적 동작은 (1) 컴퓨팅 시스템 상에서 실행되는 컴퓨터 구현 액트 또는 프로그램 모듈의 시퀀스로서 및/또는 (2) 컴퓨팅 시스템 내의 상호접속된 기계 논리 회로 또는 회로 모듈로서 구현된다. 구현은 본 발명을 구현하는 컴퓨팅 시스템의 성능 요구사항에 좌우되는 선택 사항이다. 따라서, 본 명세서에서 설명된 본 발명의 실시예를 구성하는 논리 동작은 다양하게 동작, 구조적 장치, 액트 또는 모듈로 지칭된다. 당업자들은 이들 동작, 구조적 장치, 액트 및 모듈이 본 명세서에 첨부된 청구항 내에 기술된 바와 같이 본 발명의 취지 및 범위에서 벗어나지 않고, 소프트웨어, 펌웨어, 특수 목적의 디지털 논리 장치 및 이들의 임의의 조합으로 구현될 수 있다는 것을 이해할 것이다.
도 10의 예에서, 비주얼 트리는 컴퓨터 디스플레이 스크린 상의 윈도우를 나타낸다. 윈도우에 대한 비주얼 2D 루트 객체(1002)는 세 개의 자식, 패널 비주얼 객체(1004), 체크박스 비주얼 객체(1006) 및 비주얼 3D 객체(1008)를 갖는다. 패널 비주얼 객체(1004)는 컨테이너(container) 비주얼 객체이고, 이것은 두 개의 자식, 버튼 비주얼 객체(1010)와 스크롤바 비주얼 객체(1012)를 갖는다. 따라서, 프로그래머는 2D 이미지로 보여지는 3D 장면을 제공하는, 3D 장면 객체와 함께 버튼, 스크롤 바 및 체크박스를 갖는 윈도우를 생성할 수 있다.
3D 장면 객체(1008)는 포인터(1009)로 카메라 매개변수(1011)를 가리키고, 포인터(1014)로 3D 장면 객체(1016)를 가리킨다. 3D 장면 객체(1016)는 두 개의 모델 3D 그룹 객체(1018 및 1020), 두 개의 모델 3D 프리미티브 객체(1024 및 1025) 및 하나의 모델 3D 광 객체(1022)로 이루어져 있다. 3D 프리미티브 각각은 드로잉 컨텍스트를 포함하며, 이 둘 모두 상이한 드로잉 컨텍스트 가능성을 나타낸다. 광 객체(1022)는 광 객체(1022)와 프리미티브 객체(1024)가 그룹 객체(1020)의 자식인 경우, 프리미티브 객체(1024)가 그리는 모델의 조명을 특정한다. 프리미티브 객체(1024)는 메쉬 정보(1026)와 소재 정보(1028)를 포함한다. 프리미티브 객체(1025)는 메쉬 정보(1027)와 소재 정보(1029)를 포함한다. 소재 정보(1029)는 비주얼 트리 루트(1030)와 비주얼 2D 객체(1032)와 3D 장면 객체(1034) 둘 모두를 갖는 추가의 비주얼 트리를 가리킨다.
도 10의 비주얼 트리를 처리하기 위한 동작 흐름은 도 8에서 시작되며, 이것은 3D 장면 객체 프로세스로의 연결(bridge)을 갖는 비주얼 2D 객체 프로세스를 도시한다. 이 동작 흐름의 설명에서 명백해지는 바와 같이, 도 8과 도 9에서의 흐름은 재귀적이다. 동작의 흐름은 트리의 한 분기점에서 아래를 향해 종단으로, 또 다른 분기점에서 아래를 향해 종단으로 진행된다. 도 1에 설명된 바와 같이, 트리 횡단 및 이미지 렌더링 순서는 왼쪽에서 오른쪽이다. 그러나, 예를 들어 나무의 오른쪽에서 왼쪽으로, 또는 분기점의 길이에 따라, 또는 프로그래머가 구현하고자 하는 트리 횡단에 대한 임의의 다른 우선 순위에 따라서와 같이 임의의 방식으로 조직될 수도 있다.
도 8은 도 8 외부(미도시)의 호출 동작에 의해 비주얼 트리 프로세스가 호출될 때 도 10의 비주얼 트리의 프로세스를 시작한다. 이 호출 동작은 윈도우 객체(1002)로 시작되는 윈도우를 생성하기 위한 프로세스로의 주 호출자(primary caller)다. 윈도우를 생성하는 동작 흐름은 비주얼 트리 프로세스 엔트리(800)로 진입한다. 이동 동작(801)은 아직 처리되지 않은 트리 내의 다음 객체로 프로세스를 이동시킨다. 이러한 제1 객체가 윈도우 객체(1002)다. 동작 흐름은 호출 동작(803)과 추가 객체 테스트 동작(704)을 포함하는 루프(802)로 진입한다. 비주얼 2D 객체가 처리될 때, 루프(802)의 프로세스는 트리 전체에 걸쳐 프로세스를 진행한다.
호출 동작(803)이 2D 프로세스 엔트리 포인트(805)를 호출한다. 엔트리 포 인트(805)에서, 동작 흐름은 3D 장면 테스트 동작(806)으로 진행된다. 테스트 동작(806)은 그 객체가 3D 장면 객체인지 또는 비주얼 2D 객체인지 여부를 검출한다. 도 10의 윈도우 객체(1002)의 경우와 같이, 그것이 비주얼 2D 객체라면, 동작 흐름은 "아니오"로 분기하여 비주얼 동작(808)을 처리한다. 프로세스 동작(808)은 위도우 이미지를 그리는 윈도우 객체(1004)를 실행한다. 동작(808)은 발명의 명칭이 "VISUAL AND SCENE GRAPH INTERFACES"이고 상술되고 상호 참조된 관련 특허에 설명되어 있다. 비주얼 동작 프로세스(808)가 완료된 후, 반환 동작(810)은 동작 흐름을 호출 동작(803)으로 반환시킨다.
호출 동작(803)에서, 흐름은 추가 객체 테스트 동작(804)으로 향한다. 추가 객체 테스트 동작(804)은 비주얼 트리에서 처리될 객체가 더 있는지 여부를 검출한다. 더 있는 경우, 동작 흐름은 "예"로 분기하여 이동 동작(801)으로 진행된다. 이동 동작(801)에 의해 처리되지 않은 다음 객체이며 트리의 가장 왼쪽에 있는 분기점인 도 10의 패널 객체(1004)로 이동한다. 트리의 분기는 왼쪽에서 오른쪽으로 처리될 것이다.
패널 객체(1004)는 또 다른 비주얼 2D 객체이므로 윈도우 객체(1002)에 대해 지금 막 설명된 것과 동일한 방식으로 처리된다. 반환 동작으로 인해 흐름은 호출 동작(803)으로 다시 반환되고, 이동 동작(801)으로 진행된다. 프로세스는 이제 패널 객체(1004)의 제1 자식인 버튼 비주얼 2D 객체(1010)로 이동한다. 버튼 객체도 객체(1002)에 대해 상술된 바와 같이 처리되므로 흐름은 호출 동작(803)으로 반환되고, 따라서 이동 동작(801)으로 진행된다. 동일한 분기점에서 처리되지 않은 다 음 객체는 스크롤 바 비주얼 객체(1012)다. 이것도 비주얼 2D 객체이므로, 동작 흐름은 3D 장면 테스트 동작(806)을 거쳐 비주얼 2D 프로세스 동작(808)으로 진행될 것이다. 비주얼 2D 프로세스 동작(808)은 윈도우 객체(1002)의 프로세스에 대해 상술한 바와 동일한 방식으로 스크롤 바 비주얼 객체(1012)를 처리할 것이다. 동작 흐름은 다시 호출 동작(803)으로 반환되고, 이동 동작(801)은 다음 분기점의 제1 객체인 체크 박스 객체(1006)로, 도 6의 비주얼 트리로 진입한다.
체크 박스 비주얼 2D 객체(1006)가 처리된 후, 이동 동작(801)은 3D 장면 객체(1008)로 진행된다. 3D 장면 객체(1008)는 테스트 동작(806)에 의해 검출되고, 동작 흐름은 "예"로 분기하여 호출 동작(812)에서 3D 장면 프로세스를 호출한다. 3D 장면 프로세스 동작 흐름은 도 9에 도시되어 있으며, 호출 동작(812)은 도 9의 3D 장면 엔트리 포인트(900)로 동작의 흐름을 이동시킨다.
도 9에서, 이동 동작(901)은 아직 처리되지 않은 3D 장면 트리의 다음 객체로 프로세스를 이동시킨다. 이러한 제1 객체가 3D 장면 트리의 루트 노드인 3D 그룹 객체(1018)다. 동작 흐름은 호출 동작(903)과 추가 객체 테스트 동작(904)을 포함하는 루프(902)로 진입한다. 3D 장면 트리(1016)의 모델 3D 객체가 처리되는 바와 같이, 루프(902) 주위의 동작 흐름은 왼쪽에서 오른쪽으로 3D 장면 트리의 분기점들에 걸쳐 프로세스를 진행한다.
호출 동작(903)이 3D 프로세스 모듈 엔트리 포인트(909)를 호출한다. 엔트리 포인트(909)에서, 동작 흐름은 그룹 객체 테스트 동작(914)으로 진행된다. 제1 객체가 3D 그룹 객체(1018)다. 그룹 테스트 동작(914)은 이 그룹 객체를 검출하여 동작 흐름을 3D 그룹 동작 프로세스(903)로 분기시킨다. 그룹 동작은 모델 클립 동작, 음영화 동작, 와이어 프레임 동작 등을 설정하는 것와 같은 변형 동작 또는 기타 동작일 수 있다. 그룹 동작(903)을 처리한 후, 호출자로의 반환(920)에 다시 호출 동작(903)으로 흐름이 다시 반환된다.
호출 동작(903)으로 반환함에 따라 흐름이 루프(902)에서 추가 객체 테스트 동작(904)으로 진행된다. 추가 객체 테스트 동작(904)은 3D 장면 트리에 처리되어야 할 객체가 더 있는지 여부를 검출한다. 더 있을 경우, 동작 흐름은 "예"로 분기하여 이동 동작(901)으로 진행된다. 이동 동작(901)에 의해 처리되지 않은 다음 객체이며 3D 장면 트리의 가장 왼쪽에 있는 분기점인 도 10의 3D 그룹 객체(1020)로 이동한다. 트리의 분기는 왼쪽에서 오른쪽으로 처리될 것이다.
모델 3D 객체(1020)는 또 다른 그룹 객체이므로, 그룹 테스트 동작(914)에서 "예"로 분기하여 그룹 객체(1020)를 처리하는 그룹 프로세스 동작(930)으로 진행된다. 반환 동작(920)은 흐름을 다시 호출 동작(903)으로 반환시키고, 흐름은 이동 동작(901)으로 진행된다. 이제 프로세스는 3D 장면 트리(1016)의 동일한 분기점에서 처리되지 않은 다음 객체인 3D 광 객체(1022)로 진행된다. 흐름은 그룹 객체 테스트 동작에서 광 객체 테스트 동작(916)으로 진행된다. 광 객체(1022)가 검출되고, 광 객체 프로세스 동작(918)으로 진행된다. 광 객체 프로세스 동작은 3D 그룹 객체(1020)에 의해 수집된 3D 장면을 위해 광을 설정하고, 이제 흐름은 호출자로의 반환 동작(920)으로 진행된다.
흐름은 호출 동작(903)으로 반환되어 이동 동작(901)으로 진행된다. 동일한 분기점에서 처리되지 않은 다음 객체는 3D 프리미티브 객체(1024)다. 프리미티브 객체는 3D 모델을 그린다. 프리미티브 객체(1024)를 검출할 경우 그룹 객체 테스트(914)와 광 객체 테스트(916)의 결과는 "아니오"다. 따라서, 동작 흐름은 광 객체 테스트(916)에서 "아니오"로 분기하여 카메라 매개변수를 검색하는 카메라 동작(222)으로 진행된다. 뷰 설정 동작(924)은 카메라 또는 2D 뷰를 설정하며, 동작 흐름은 2D 컨텐츠 테스트 동작(926)으로 진행된다. 도 10의 프리미티브 객체(1024)에는 비주얼 객체가 없으므로 그에 딸린 2D 컨텐츠도 없고, 따라서 동작은 "아니오"로 분기하여 프리미티브 드로잉 동작(928)으로 진행된다. 프리미티브 드로잉 동작(928)은 모델 3D 프리미티브 객체(1024)에 포함되어 있는 메쉬 정보(1026)와 소재 정보(1029)에 기초하여 3D 모델을 그린다. 이 모델은 카메라 매개변수에 기초하여 카메라 뷰의 관점으로부터 그려진다. 그 결과는 광 객체(1022)에 따라 비추어진 3D 모델의 2D 이미지다. 호출자로의 반환 동작(920)에서, 동작 흐름은 호출 동작(903)으로 다시 반환된다. 추가 객체 테스트 동작(904)은 3D 장면 트리에 처리될 객체가 더 있는지 여부를 검출한다. 이동 동작(901)은 다른 분기점으로, 처리되지 않은 다음 객체인 3D 프리미티브 객체(1025)로 3D 장면 트리에서 이동된다.
3D 프리미티브 객체(1025)는 비주얼 2D와 3D 장면 객체 둘 모두를 포함하는 소재 정보(1029)를 갖는다. 따라서, 동작 흐름은 2D 컨텐츠 테스트 동작(926)에서 "예"로 분기하여 비주얼 트리 프로세스 동작(932)을 호출한다. 비주얼 트리 프로세스 호출은 도 8의 엔트리 포인트(800)를 호출하고, 이동 동작(801)은 프로그램 제어를 비주얼 2D 객체(1030) 프로세스로 이동시킨다. 호출 동작(803)이 2D 프로세스를 호출하고, 비주얼 2D 객체(1030)는 비주얼 프로세스 동작(808)에서 처리된다. 동작은 호출자로 의 반환 동작(810)으로 진행되어 호출 동작(803)으로 반환된다. 이동 동작(801)은 2D 컨텐츠 트리를 횡단하여 그 객체(1032)에 이른다. 비주얼 2D 객체(1032)를 처리하기 위해 2D 프로세스가 다시 호출된다. 비주얼 2D 객체(1032)는 비주얼 프로세스 동작에 의해 처리되고 동작 흐름은 루프(802)로 반환된다. 이제 이동 동작(801)은 3D 장면 객체(1034)로 제어가 이동된다.
호출 동작(803)이 2D 프로세스를 호출하고, 3D 장면 객체(1034)는 3D 장면 테스트 동작(806)에 의해 검출된다. 그 결과, 호출 동작(812)이 도 9의 3D 장면 프로세스를 호출하여 3D 장면 객체의 모델 3D 객체(미도시)를 처리한다. 이 프로세스는 3D 장면 트리(1016)의 예에서 상술했던 것과 동일할 것이다. 도 9의 3D 장면 객체(1034)가 호출되어 비주얼 3D 객체(1034)로 표현된 3D 장면 모델을 처리하고, 3D 장면 객체(1034)에 대한 마지막 모델이 그려질 때, 동작 흐름은 도 9의 호출자로의 반환 동작(920)으로 진행된다. 이 경우 호출자는 호출 동작(903)이다.
호출 동작(903)은 3D 장면 객체(1034)와 관련된 객체가 더 있는지 여부를 검출하는 추가 객체 테스트(904)로 진행된다. 동작 흐름은 "아니오"로 분기하여 호출자 동작(906)으로 진행되고, 흐름을 호출 동작(812)으로 다시 이동된다. 호출 동작은 호출 동작(803)으로 다시 흐름을 이동시킨다. 추가 객체 테스트 동작(804)에서 객체(1030,1032 및 1034)로 구성된 2D 컨텐츠 트리에서 처리될 객체가 더 있는지를 검출한다. 따라서 흐름은 "아니오"로 분기하여 호출자로의 반환 동작(814) 으로 진행된다. 이 경우, 2D 컨텐츠 트리를 처리하기 위해 비주얼 트리 프로세스를 호출했던 호출 동작(932)으로 반환된다. 3D 프리미티브 드로잉 동작(934)은 2D 컨텐츠 트리 객체(1030,1032 및 1034)로 표현된 소재 정보를 이용하여 프리미티브 객체(1025)를 위한 3D 모델을 그린다. 호출자로의 반환 동작(920)에 의해 흐름은 호출 동작(903)으로 반환된다.
추가 객체 테스트 동작(904)은 3D 장면 트리(1016)에 객체가 더 있는지를 검출하고 호출자로의 반환 동작(906)으로 진행된다. 반환 동작(906)에 의해 흐름이 도 8의 3D 장면 동작(812)으로 반환된다. 이 흐름은 반환 동작(810)에 의해 호출 동작(803)으로 다시 반환된다. 추가 객체 테스트 동작(804)은 도 10의 비주얼 트리가 완전히 처리되었는지를 검출하고 그 동작 흐름은 호출자로의 반환 동작(810)으로 진행된다. 호출자로의 반환 동작에 의해 프로그램 제어는 다시 호출자(932)로 넘어간다. 호출 동작(932)은 이제 비주얼 2D 객체(1030)를 처리하는 도 8의 2D 프로세스를 호출한다. 비주얼 2D 객체(1030)는 소재 정보(1028)의 루트 객체다. 비주얼 프로세스 동작(808)은 루트 객체(1030)를 처리하고, 호출자로의 반환 동작(810)은 프로그램 제어를 도 10의 비주얼 프로세스를 처리하기 위해 호출했던 주 호출자(미도시)로 다시 이동시킨다. 이렇게 함으로써 3D 장면 객체와 비주얼 2D 객체가 통합되어 있는 도 10의 예시적인 비주얼 트리의 프로세스가 완료된다.
본 발명이 컴퓨터의 구조적인 특징에, 방법론적인 액트에 및 컴퓨터 판독가능 매체에 의해 고유한 언어로 기술되었지만, 첨부된 청구항에 정의된 발명이 기술된 특정 구조, 액트 및 매체에 제한될 필요는 없다는 것을 이해할 것이다. 따라 서, 특정 구조적인 특징, 액트 및 매체는 청구된 발명을 구현하는 예시적인 실시예로서 개시된다.
상술된 각종 실시예는 단지 예로서 도시된 것이며, 본 발명을 제한하는 것으로 해석되어서는 안 된다. 당업자들은 본 명세서에 설명되고 도시된 예시적인 실시예와 응용을 따르지 않고, 또한 첨부된 청구항에서 설명되는 본 발명의 진정한 취지 및 범위에서 벗어나지 않고, 본 발명의 각종 수정 및 변형이 있을 수 있다는 것을 이해할 것이다.
비주얼 계층구조에서의 2D 비주얼 객체와 3D 모델 객체의 프로세스가 3D 동작과 2D 동작 간에 쉽게 핸드 오프(hand off)될 수 있도록 통합된다. 또한 디스플레이 이미지를 생성할 때 비주얼 2D 객체와 3D 모델 객체의 프로세스 간의 이행 횟수도 구조적으로 제한이 없다. 따라서, 사용자는 3D 이미지를 2D 이미지에 포함시키고 2D 이미지를 3D 이미지에 포함시키는 그래픽을 무한히 생성할 수 있다.

Claims (19)

  1. 컴퓨터로부터의 출력으로서 2D(two-dimensional) 이미지와 3D(three-dimensional) 이미지의 혼합 이미지를 생성하기 위한 컴퓨터 프로그램 비주얼 객체의 계층구조(hierarchy)를 처리하기 위한 컴퓨터로 구현된 방법에 있어서,
    비주얼 객체의 제1 트리 계층구조의 분기점들(branch)을 횡단하여 종단(leaf) 객체와 분기 객체를 처리하는 단계;
    처리되지 않은 다음 비주얼 객체가 비주얼 2D 객체인지 또는 3D 장면 객체인지를 검출하는 단계; 및
    비주얼 2D 객체가 검출되는 경우 비주얼 객체를 처리하기 위해 2D 프로세스를 호출하고, 3D 장면 객체가 검출되는 경우 모델 3D 객체를 처리하기 위해 3D 프로세스를 호출하는 단계
    를 포함하는, 컴퓨터로 구현된 방법.
  2. 제1항에 있어서,
    상기 3D 프로세스는,
    카메라 뷰를 설정하는 단계; 및
    하나 이상의 모델 3D 객체에 의해 정의된 하나 이상의 3D 모델의 이미지를 그리는 단계를 포함하고,
    상기 이미지는 상기 하나 이상의 3D 모델의 카메라 뷰에 기초하는, 컴퓨터로 구현된 방법.
  3. 제2항에 있어서,
    상기 3D 모델은 3D 장면 객체가 가리키는 하나 이상의 모델 3D 객체의 제2 트리 계층구조로서 정의되는, 컴퓨터로 구현된 방법.
  4. 제3항에 있어서,
    상기 제2 트리 계층구조의 상기 하나 이상의 모델 3D 객체는 상기 3D 모델을 그리는 데에 사용되는 비주얼 객체의 제3 트리 계층구조를 정의하는, 컴퓨터로 구현된 방법.
  5. 제4항에 있어서,
    상기 제3 트리 계층구조는 적어도 하나의 비주얼 2D 객체를 가지며, 이 비주얼 2D 객체는 이어서 모델 3D 객체의 제4 트리 계층구조를 정의하며, 이에 의해 3D 장면 객체와 비주얼 2D 객체는 객체 트리 계층구조의 분기점들을 따라 복수의 연속적인 객체에서 통합되고, 상기 2D 프로세스와 3D 프로세스에 의해 처리될 수 있는, 컴퓨터로 구현된 방법.
  6. 2D(two-dimensional) 이미지용의 비주얼 객체와 3D(three-dimensional) 모델의 2D 이미지용의 비주얼 객체를 통합하기 위한 컴퓨터 프로그램 객체의 데이터 구조가 인코딩되어 있는 컴퓨터 판독가능 기록 매체에 있어서,
    상기 데이터 구조는,
    2D 이미지를 생성하는 비주얼 객체들의 비주얼 트리 계층구조와,
    3D 모델과 상기 3D 모델의 2D 뷰를 참조하는 3D 장면 객체인 상기 비주얼 객체들 중 하나 이상의 비주얼 객체를 포함하고,
    상기 3D 모델은 객체들의 제2 트리 계층구조에 의해 정의되고,
    상기 제2 트리 계층구조의 객체들은 상기 3D 모델을 그리는 동작을 정의하는 드로잉(drawing) 객체와 상기 3D 모델의 조명을 정의하는 광 비주얼 객체를 적어도 포함하는 컴퓨터 판독가능 기록 매체.
  7. 제6항에 있어서,
    상기 3D 모델의 2D 뷰는 정의된 제1 위치와 정의된 제2 위치의 관점으로부터 정의되고, 상기 제1 및 제2 위치는 상기 3D 모델의 뷰에 대한 목표 방향(aim direction)을 정의하는 컴퓨터 판독가능 기록 매체.
  8. 제7항에 있어서,
    상기 제1 위치는 카메라 위치 포인트이고, 상기 제2 위치는 "보기(look-at)" 위치 포인트인 컴퓨터 판독가능 기록 매체.
  9. 제7항에 있어서,
    상기 드로잉 객체는 상기 모델의 표면을 텍스처링(texturing)하는 데에 사용되는 소재(material) 정보를 포함하는 컴퓨터 판독가능 기록 매체.
  10. 제9항에 있어서,
    상기 소재 정보는 객체들의 제3 트리 계층구조를 정의하는 컴퓨터 판독가능 기록 매체.
  11. 제10항에 있어서,
    상기 데이터 구조는,
    제2의 3D 모델과 상기 제2의 3D 모델의 2D 뷰를 참조하는 3D 장면 객체인 상기 제3 트리 계층구조의 객체들 중 하나 이상의 객체들을 더 포함하고,
    상기 제2의 3D 모델은 객체들의 제4 트리 계층구조에 의해 정의되고,
    상기 제4 트리 계층구조의 객체들은 상기 3D 모델을 그리는 동작을 정의하는 드로잉 객체와 상기 3D 모델의 조명을 정의하는 광 비주얼 객체를 적어도 포함하는 컴퓨터 판독가능 기록 매체.
  12. 제11항에 있어서,
    상기 데이터 구조의 드로잉 객체는 상기 3D 모델의 윤곽(contour)을 근사하기(approximate) 위한 평면 형태를 정의하기 위한 메쉬(mesh) 정보를 더 포함하는 컴퓨터 판독가능 기록 매체.
  13. 단계를 수행하기 위한 컴퓨터 실행가능 명령어가 포함되어 있는 컴퓨터 판독가능 기록 매체에 있어서,
    상기 단계들은,
    2D(two-dimensional) 이미지용의 비주얼 객체와 3D(three-dimensional) 모델의 2D 이미지용의 비주얼 객체를 통합하기 위한 컴퓨터 프로그램 객체의 데이터 구조를 인스턴스화(instantiating)하는 단계와,
    상기 컴퓨터 프로그램 객체의 데이터 구조를 인코딩하는 단계
    를 포함하고,
    상기 데이터 구조는
    2D 이미지를 생성하는 비주얼 객체들의 비주얼 트리 계층구조와,
    3D 모델과 상기 3D 모델의 2D 뷰를 참조하는 3D 장면 객체인 상기 비주얼 객체들 중 하나 이상의 비주얼 객체를 포함하고,
    상기 3D 모델은 객체들의 제2 트리 계층구조에 의해 정의되고,
    상기 제2 트리 계층구조의 객체들은 상기 3D 모델을 그리는 동작을 정의하는 드로잉(drawing) 객체와 상기 3D 모델의 조명을 정의하는 광 비주얼 객체를 적어도 포함하는 컴퓨터 판독가능 기록 매체.
  14. 제13항에 있어서,
    정의된 제1 위치와 정의된 제2 위치의 관점으로부터 정의되는 바와 같이 상기 3D 모델의 2D 뷰를 인코딩하기 위한 명령어를 더 포함하고,
    상기 제1 및 제2 위치는 상기 3D 모델의 뷰에 대한 목표 방향(aim direction)을 정의하는 컴퓨터 판독가능 기록 매체.
  15. 제14항에 있어서,
    상기 제1 위치를 카메라 위치 포인트로서, 상기 제2 위치를 "보기(look-at)" 위치 포인트로서 인코딩하기 위한 명령어를 더 포함하는 컴퓨터 판독가능 기록 매체.
  16. 제14항에 있어서,
    상기 모델의 표면을 텍스처링(texturing)하는 데에 사용되는 소재(material) 정보를 포함하도록 상기 드로잉 객체를 인코딩하기 위한 명령어를 더 포함하는 컴퓨터 판독가능 기록 매체.
  17. 제16항에 있어서,
    객체들의 제3 트리 계층구조를 정의하도록 소재 정보를 인코딩하기 위한 명령어를 더 포함하는 컴퓨터 판독가능 기록 매체.
  18. 제17항에 있어서,
    상기 데이터 구조를 인코딩하기 위한 명령어 단계는,
    제2의 3D 모델과 상기 제2의 3D 모델의 2D 뷰를 참조하는 3D 장면 객체이도록 상기 제3 트리 계층구조의 객체들 중 하나 이상의 객체들을 인코딩하고;
    객체들의 제4 트리 계층구조에 의해 정의되는 바와 같이 상기 제2의 3D 모델을 인코딩하고;
    상기 3D 모델을 그리는 동작을 정의하는 드로잉 객체와 상기 3D 모델의 조명을 정의하는 광 비주얼 객체를 적어도 포함하도록 상기 제4 트리 계층구조의 객체들을 인코딩하기 위한 명령어를 더 포함하는 컴퓨터 판독가능 기록 매체.
  19. 제18항에 있어서,
    상기 3D 모델의 윤곽(contour)을 근사하기(approximate) 위한 평면 형태를 정의하도록 메쉬(mesh) 정보로 상기 데이터 구조의 드로잉 객체를 인코딩하기 위한 명령어를 더 포함하는 컴퓨터 판독가능 기록 매체.
KR1020067021882A 2004-05-03 2004-07-29 3차원 장면 계층구조를 2차원 합성 시스템으로 통합하기 위한 컴퓨터로 구현된 방법 및 컴퓨터 판독가능 기록 매체 KR101087427B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/838,935 2004-05-03
US10/838,935 US7145562B2 (en) 2004-05-03 2004-05-03 Integration of three dimensional scene hierarchy into two dimensional compositing system
PCT/US2004/024368 WO2005111943A1 (en) 2004-05-03 2004-07-29 Integration of three dimensional scene hierarchy into two dimensional compositing system

Publications (2)

Publication Number Publication Date
KR20070004878A KR20070004878A (ko) 2007-01-09
KR101087427B1 true KR101087427B1 (ko) 2011-11-25

Family

ID=35186598

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020067021882A KR101087427B1 (ko) 2004-05-03 2004-07-29 3차원 장면 계층구조를 2차원 합성 시스템으로 통합하기 위한 컴퓨터로 구현된 방법 및 컴퓨터 판독가능 기록 매체

Country Status (11)

Country Link
US (1) US7145562B2 (ko)
EP (1) EP1743303A4 (ko)
JP (1) JP5225674B2 (ko)
KR (1) KR101087427B1 (ko)
CN (1) CN1942904A (ko)
AU (2) AU2004319589B2 (ko)
BR (1) BRPI0418680A (ko)
CA (1) CA2560475C (ko)
MX (1) MXPA06012368A (ko)
RU (1) RU2360290C2 (ko)
WO (1) WO2005111943A1 (ko)

Families Citing this family (48)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8031190B2 (en) * 2004-05-03 2011-10-04 Microsoft Corporation Translating two-dimensional user input on three-dimensional scene
WO2006004894A2 (en) * 2004-06-29 2006-01-12 Sensable Technologies, Inc. Apparatus and methods for haptic rendering using data in a graphics pipeline
US7426304B2 (en) * 2004-09-15 2008-09-16 Hewlett-Packard Development Company, L.P. Method and device for three-dimensional graphics to two-dimensional video encoding
US7535480B2 (en) * 2005-08-24 2009-05-19 Microsoft Corporation Compositing rendering layers
US8803872B2 (en) * 2005-12-01 2014-08-12 Intel Corporation Computer graphics processor and method for rendering a three-dimensional image on a display screen
FR2902908B1 (fr) * 2006-06-21 2012-12-07 Streamezzo Procede de creation et de restitution optimise du rendu d'une scene multimedia comprenant au moins un objet actif, sans modification prealable de la semantique et/ou du format de description de scene
JP5055570B2 (ja) * 2006-08-08 2012-10-24 株式会社ニコン カメラおよび画像表示装置並びに画像記憶装置
US8059124B2 (en) * 2006-11-28 2011-11-15 Adobe Systems Incorporated Temporary non-tiled rendering of 3D objects
US8300050B2 (en) 2006-11-28 2012-10-30 Adobe Systems Incorporated Temporary low resolution rendering of 3D objects
TWI322392B (en) * 2006-12-14 2010-03-21 Inst Information Industry Apparatus, method, application program, and computer readable medium thereof capable of pre-storing data for generating self-shadow of a 3d object
DE602007003849D1 (de) * 2007-10-11 2010-01-28 Mvtec Software Gmbh System und Verfahren zur 3D-Objekterkennung
US20090153550A1 (en) * 2007-12-18 2009-06-18 Disney Enterprises, Inc. Virtual object rendering system and method
KR101475779B1 (ko) * 2008-06-02 2014-12-23 삼성전자주식회사 3d 영상 처리 방법
US8179393B2 (en) * 2009-02-13 2012-05-15 Harris Corporation Fusion of a 2D electro-optical image and 3D point cloud data for scene interpretation and registration performance assessment
CN101630419B (zh) * 2009-08-13 2013-01-02 苏州市数字城市工程研究中心有限公司 一种用于城市综合管网三维可视化系统的架构方法
US9035949B1 (en) * 2009-12-21 2015-05-19 Lucasfilm Entertainment Company Ltd. Visually representing a composite graph of image functions
JP4858626B2 (ja) 2010-04-16 2012-01-18 カシオ計算機株式会社 情報表示装置及びプログラム
US8723886B2 (en) * 2010-09-08 2014-05-13 Navteq B.V. Generating a multi-layered geographic image and the use thereof
KR101530634B1 (ko) * 2010-11-01 2015-06-23 한국전자통신연구원 체험형 학습 콘텐츠 저작 장치 및 방법
EP2461587A1 (en) * 2010-12-01 2012-06-06 Alcatel Lucent Method and devices for transmitting 3D video information from a server to a client
US20130127849A1 (en) * 2011-05-26 2013-05-23 Sebastian Marketsmueller Common Rendering Framework and Common Event Model for Video, 2D, and 3D Content
WO2013022804A1 (en) * 2011-08-05 2013-02-14 Caustic Graphics, Inc. Systems and methods for 3-d scene acceleration structure creation and updatting
US9342322B2 (en) 2011-09-12 2016-05-17 Microsoft Technology Licensing, Llc System and method for layering using tile-based renderers
WO2013107273A1 (en) * 2012-01-21 2013-07-25 Thomson Licensing Method and apparatus for compressing texture information of three-dimensional (3d) models
US9123162B2 (en) 2012-06-11 2015-09-01 Disney Enterprises, Inc. Integration cone tracing
US9053582B2 (en) 2012-06-11 2015-06-09 Disney Enterprises, Inc. Streaming light propagation
CN102760304A (zh) * 2012-06-28 2012-10-31 电子科技大学 一种基于可视化编辑的高级材质合成系统与方法
US9123154B2 (en) 2012-10-09 2015-09-01 Disney Enterprises, Inc. Distributed element rendering
CN102938165B (zh) * 2012-10-17 2015-06-17 山东理工大学 基于型面特征逼近的产品stl模型光顺方法
CN103914877A (zh) * 2013-01-09 2014-07-09 南京理工大学 一种基于扩展合并的三维模型多细节层次结构
DE102013201377A1 (de) 2013-01-29 2014-07-31 Bayerische Motoren Werke Aktiengesellschaft Verfahren und Vorrichtung zum Verarbeiten von 3d-Bilddaten
US9508315B2 (en) 2013-03-08 2016-11-29 Disney Enterprises, Inc. Ordering rays in rendered graphics for coherent shading
GB2544931B (en) 2013-03-15 2017-10-18 Imagination Tech Ltd Rendering with point sampling and pre-computed light transport information
EP3995952A1 (en) * 2013-04-19 2022-05-11 Huawei Technologies Co., Ltd. Method for displaying a 3d scene graph on a screen
CN103412700B (zh) * 2013-07-24 2016-05-11 天脉聚源(北京)传媒科技有限公司 一种分场景展示多媒体资源的方法及装置
US9261966B2 (en) 2013-08-22 2016-02-16 Sony Corporation Close range natural user interface system and method of operation thereof
US9552664B2 (en) * 2014-09-04 2017-01-24 Nvidia Corporation Relative encoding for a block-based bounding volume hierarchy
US10235338B2 (en) 2014-09-04 2019-03-19 Nvidia Corporation Short stack traversal of tree data structures
WO2016142794A1 (en) 2015-03-06 2016-09-15 Wal-Mart Stores, Inc Item monitoring system and method
US9875502B2 (en) 2015-03-06 2018-01-23 Wal-Mart Stores, Inc. Shopping facility assistance systems, devices, and methods to identify security and safety anomalies
US20180099846A1 (en) 2015-03-06 2018-04-12 Wal-Mart Stores, Inc. Method and apparatus for transporting a plurality of stacked motorized transport units
CN106157353B (zh) * 2015-04-28 2019-05-24 Tcl集团股份有限公司 一种文字渲染方法和文字渲染装置
US20170249772A1 (en) * 2016-02-26 2017-08-31 Blackberry Limited System and method for accelerated rendering of two-dimensional graphics
CA2961938A1 (en) 2016-04-01 2017-10-01 Wal-Mart Stores, Inc. Systems and methods for moving pallets via unmanned motorized unit-guided forklifts
CN107480174A (zh) * 2017-06-30 2017-12-15 百度在线网络技术(北京)有限公司 三维城市模型与二维地图的联动方法、装置及可读介质
CN110046333B (zh) * 2018-01-16 2023-03-21 阿里巴巴集团控股有限公司 信息展示方法、数据处理方法、设备及系统
CN110795609A (zh) * 2019-10-28 2020-02-14 国网新疆电力有限公司经济技术研究院 一种用于变电站的二次系统三维可视化方法
US11567474B2 (en) 2020-03-25 2023-01-31 Opt Industries, Inc. Systems, methods and file format for 3D printing of microstructures

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6518965B2 (en) 1998-04-27 2003-02-11 Interactive Silicon, Inc. Graphics system and method for rendering independent 2D and 3D objects using pointer based display list video refresh operations
US6912293B1 (en) 1998-06-26 2005-06-28 Carl P. Korobkin Photogrammetry engine for model construction

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0925557B1 (en) * 1997-07-11 2003-10-01 Koninklijke Philips Electronics N.V. Audiovisual data decoding method
WO2001001075A2 (en) * 1999-06-25 2001-01-04 Bethere Photogrammetry engine for model construction
AU7831500A (en) * 1999-09-24 2001-04-24 Sun Microsystems, Inc. Method and apparatus for rapid processing of scene-based programs
JP4758013B2 (ja) * 2000-03-14 2011-08-24 三星電子株式会社 三次元シーンのノード処理方法及びその装置
JP2001273520A (ja) * 2000-03-23 2001-10-05 Famotik Ltd マルチメディアドキュメント統合表示システム
US7436406B2 (en) * 2002-07-12 2008-10-14 Raytheon Company Scene graph based display for desktop applications
US7486795B2 (en) * 2002-09-20 2009-02-03 University Of Maryland Method and apparatus for key management in distributed sensor networks
US7511718B2 (en) * 2003-10-23 2009-03-31 Microsoft Corporation Media integration layer

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6518965B2 (en) 1998-04-27 2003-02-11 Interactive Silicon, Inc. Graphics system and method for rendering independent 2D and 3D objects using pointer based display list video refresh operations
US6912293B1 (en) 1998-06-26 2005-06-28 Carl P. Korobkin Photogrammetry engine for model construction

Also Published As

Publication number Publication date
CA2560475A1 (en) 2005-11-24
CA2560475C (en) 2014-03-25
KR20070004878A (ko) 2007-01-09
AU2004319589B2 (en) 2010-11-25
BRPI0418680A (pt) 2007-06-12
AU2004319589A1 (en) 2005-11-24
CN1942904A (zh) 2007-04-04
AU2010227110B2 (en) 2011-12-15
US7145562B2 (en) 2006-12-05
WO2005111943A1 (en) 2005-11-24
JP2007536621A (ja) 2007-12-13
EP1743303A4 (en) 2011-07-13
RU2006142687A (ru) 2008-06-10
EP1743303A1 (en) 2007-01-17
MXPA06012368A (es) 2007-01-17
AU2010227110A1 (en) 2010-11-04
US20050243086A1 (en) 2005-11-03
RU2360290C2 (ru) 2009-06-27
JP5225674B2 (ja) 2013-07-03

Similar Documents

Publication Publication Date Title
KR101087427B1 (ko) 3차원 장면 계층구조를 2차원 합성 시스템으로 통합하기 위한 컴퓨터로 구현된 방법 및 컴퓨터 판독가능 기록 매체
RU2324229C2 (ru) Визуальный и пространственный графические интерфейсы
JP4290477B2 (ja) ベクターグラフィック用のマークアップ言語およびオブジェクトモデル
JP4796499B2 (ja) 映像およびシーングラフインターフェイス
RU2360275C2 (ru) Уровень интеграции сред
US8031190B2 (en) Translating two-dimensional user input on three-dimensional scene
KR20070011062A (ko) 모델 3d 구성 애플리케이션 프로그램 인터페이스
Stenning Direct3D Rendering Cookbook
Trapp Analysis and exploration of virtual 3D city models using 3D information lenses

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
FPAY Annual fee payment

Payment date: 20141017

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20151016

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20161019

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20171018

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20181018

Year of fee payment: 8