KR20070101844A - 원격 플랫폼을 위한 선언 컨텐트를 저작하는 방법 및 장치 - Google Patents
원격 플랫폼을 위한 선언 컨텐트를 저작하는 방법 및 장치 Download PDFInfo
- Publication number
- KR20070101844A KR20070101844A KR1020077007912A KR20077007912A KR20070101844A KR 20070101844 A KR20070101844 A KR 20070101844A KR 1020077007912 A KR1020077007912 A KR 1020077007912A KR 20077007912 A KR20077007912 A KR 20077007912A KR 20070101844 A KR20070101844 A KR 20070101844A
- Authority
- KR
- South Korea
- Prior art keywords
- authoring
- content
- remote device
- authoring content
- remote
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T19/00—Manipulating 3D models or images for computer graphics
- G06T19/20—Editing of 3D images, e.g. changing shapes or colours, aligning objects or positioning parts
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11B—INFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
- G11B27/00—Editing; Indexing; Addressing; Timing or synchronising; Monitoring; Measuring tape travel
- G11B27/02—Editing, e.g. varying the order of information signals recorded on, or reproduced from, record carriers
- G11B27/031—Electronic editing of digitised analogue information signals, e.g. audio or video signals
- G11B27/034—Electronic editing of digitised analogue information signals, e.g. audio or video signals on discs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T13/00—Animation
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11B—INFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
- G11B27/00—Editing; Indexing; Addressing; Timing or synchronising; Monitoring; Measuring tape travel
- G11B27/36—Monitoring, i.e. supervising the progress of recording or reproducing
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Graphics (AREA)
- Architecture (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Television Signal Processing For Recording (AREA)
- Document Processing Apparatus (AREA)
- Stored Programmes (AREA)
Abstract
한 실시예에서, 본 발명의 방법 및 장치는 저작 컨텐트를 저작 장치에서 원격 장치로 전송하고; 원격 장치 상에서 저작 컨텐트를 직접 재생하며; 원격 장치 상에서 저작 컨텐트의 일부를 재생함과 동시에 저작 장치 상에서 저작 컨텐트의 일부를 모니터하는데, 저작 컨텐트는 선언형 마크업 언어로 스크립트된다.
저작 컨텐트, 저작 장치, 선언형 언어, 스크립트, 디버깅
Description
<관련 출원의 상호 참조>
본 출원은 2004년 9월 9일자로 출원된 미합중국 특허 출원 제10/938,106호로부터 우선권을 주장하는데: 상기 특허 출원 제10/938,106호는 (i) 여기에서 전체적으로 참조로 사용되는 1999년 8월 3일자로 출원된 미합중국 가출원 제60/146,972호에 대한 우선권을 주장하는, 여기에서 전체적으로 참조로 사용되는 2000년 8월 3일자로 출원된 미합중국 특허 출원 제09/632,351호(이제는 미합중국 특허 제6,607,456호)의 계속 출원인, 여기에서 전체적으로 참조로 사용되는 2003년 11월 12일자로 출원된 미합중국 특허 출원 10/712,858호의 일부 계속 출원이고; (ii) 여기에서 전체적으로 참조로 사용되는 1999년 8월 3일자로 출원된 미합중국 가출원 제60/147,092호에 대한 우선권을 주장하는, 여기에서 전체적으로 참조로 사용되는 2000년 8월 3일자로 출원된 미합중국 특허 출원 제09/632,350호의 일부 계속 출원이다. 상기 특허 및 특허 출원의 각각에 대해 우선권이 주장된다.
본 발명은 일반적으로 선언 컨텐트(declarative content)를 저작하는 것(authoring)에 관한 것으로, 더욱 구체적으로 원격 플랫폼을 위한 선언 컨텐트를 저작하는 것에 관한 것이다.
게이밍 콘솔, 셀룰러 폰, 개인 휴대 정보 단말기(PDA) 등과 같은 여러가지 타겟 장치를 위한 컨텐트의 저작은 전형적으로 저작 장치 플랫폼(authoring device platform) 상에서 행해진다. 개인용 컴퓨터 실행 Windows®와 같이 널리 사용된 플랫폼을 이용함으로써, 작성자는 저작 컨텐트를 작성, 편집 및 변경하기 위해 널리 이용가능한 툴을 이용할 수 있다. 몇몇 경우에, 이들 타겟 장치는 저작 장치 플랫폼과 상호교환할 수 없는 유일하고 소유권이 있는 플랫폼을 갖는다. 컨텐트를 작성하기 위한 저작 장치로서 개인용 컴퓨터를 이용하는 것은 흔히 타겟 장치의 플랫폼 내에서 컨텐트를 제작하는 것보다 더 용이한데; 타겟 장치의 플랫폼 상에서 이용할 수 없는 많은 부수적인 툴 및 자원은 전형적으로 개인용 컴퓨터 플랫폼 상에서 이용가능하다.
실제 타겟 장치 상에서 저작 컨텐트를 뷰잉하는 것은 저작 컨텐트를 디버깅하고 미세조정하기 위해 수시로 필요하다. 그러나, 저작 장치 플랫폼에서 타겟 장치 플랫폼으로의 저작 컨텐트의 전송은 때때로, 저작 컨텐트가 실제 타겟 장치 상에서 뷰잉될 수 있기 전에, 실제 타겟 장치 상에서 재컴파일되는 이진 실행가능 형태로 저작 컨텐트가 전송될 것을 요구한다. 이진 실행가능 코드를 재컴파일하는 추가 단계는 타겟 장치 상에서의 저작 컨텐트의 뷰잉을 지연시킨다.
저작 장치 플랫폼 상에서의 저작 컨텐트의 디버깅 및 미세 조정은 흔히 타겟 장치 플랫폼 상에서 저작 컨텐트를 변경하는 것에 비해 유리하다. 불행히도, 타겟 장치 상에서 이진 실행가능 형태를 이용하는 것은 저작 장치 플랫폼 상에서 저작 컨텐트를 디버깅하고 미세조정하는 작성자의 능력을 방해한다.
한 실시예에서, 본 발명의 방법 및 장치는 저작 컨텐트를 저작 장치로부터 원격 장치로 전송하고; 저작 컨텐트를 원격 장치 상에서 직접 재생하며; 저작 컨텐트의 일부를 원격 장치 상에서 재생함과 동시에 저작 컨텐트의 일부를 저작 장치 상에서 모니터하는데, 저작 컨텐트는 선언형 마크업 언어로 스크립트된다.
명세서에 포함되고 명세서의 일부를 구성하는 첨부 도면은 원격 플랫폼을 위한 선언 컨텐트를 저작하는 방법 및 장치의 한 실시예를 도시하고 설명한다. 도면에서,
도 1은 원격 플랫폼을 위한 선언 컨텐트를 저작하는 방법 및 장치가 구현되는 환경을 도시한 도면;
도 2는 원격 플랫폼을 위한 선언 컨텐트를 저작하는 방법 및 장치가 구현되는 한 실시예를 도시한 단순화된 블록도;
도 3은 원격 플랫폼을 위한 선언 컨텐트를 저작하는 방법 및 장치의 한 실시예에 따른 시스템을 도시한 단순화된 블록도;
도 4는 원격 플랫폼을 위한 선언 컨텐트를 저작하는 방법 및 장치의 한 실시예에 따른 시스템을 도시한 단순화된 블록도;
도 5는 원격 플랫폼을 위한 선언 컨텐트를 저작하고 변경하는 방법 및 장치 의 한 실시예에 따른 흐름도;
도 6은 원격 플랫폼을 위한 선언 컨텐트를 저작하고 변경하는 방법 및 장치의 한 실시예에 따른 흐름도;
도 7A는 원격 플랫폼을 위한 선언 컨텐트를 저작하는 방법 및 장치가 구현되는 한 실시예를 도시한 타이밍도;
도 7B는 원격 플랫폼을 위한 선언 컨텐트를 저작하는 방법 및 장치가 구현되는 한 실시예를 도시한 타이밍도;
도 8은 원격 플랫폼을 위한 선언 컨텐트를 저작하는 방법 및 장치가 구현되는 한 실시예를 도시한 단순화된 블록도;
도 9는 원격 플랫폼을 위한 선언 컨텐트를 저작하고 변경하는 방법 및 장치의 한 실시예에 따른 흐름도;
도 10은 원격 플랫폼을 위한 선언 컨텐트를 저작하는 방법 및 장치가 구현되는 한 실시예를 도시한 단순화된 블록도;
도 11은 원격 플랫폼을 위한 선언 컨텐트를 저작하고 변경하는 방법 및 장치의 한 실시예에 따른 흐름도;
원격 플랫폼을 위한 선언 컨텐트를 저작하는 방법 및 장치에 관한 다음의 상세한 설명은 첨부 도면을 참조한다. 상세한 설명은 원격 플랫폼을 위한 선언 컨텐트를 저작하는 방법 및 장치를 제한하고자 하는 것이 아니다. 그 대신에, 원격 플랫폼을 위한 선언 컨텐트를 저작하는 방법 및 장치의 범위는 첨부된 청구범위 및 그 등가물에 의해 정해진다. 본 분야에 숙련된 기술자들은 본 발명에 따른 다른 많은 구현이 가능하다는 것을 알 수 있을 것이다.
"장치"에 대한 참조는 컴퓨터, 휴대용 컴퓨터, 개인 휴대 정보 단말기, 셀룰러 전화, 게이밍 콘솔, 및 컨텐트를 처리할 수 있는 장치와 같은 사용자에 의해 이용된 장치를 포함한다.
"컨텐트"에 대한 참조는 정적 및 동적 장면들(scenes)의 그래픽 표현, 오디오 표현 등을 포함한다.
"장면"에 대한 참조는 특정 방식으로 표시되도록 구성되는 컨텐트를 포함한다.
한 실시예에서, 원격 플랫폼을 위한 선언 컨텐트를 저작하는 방법 및 장치는 저작 장치가 원격 장치 상에서 사용하기 위한 컨텐트를 작성할 수 있게 한다. 한 실시예에서, 저작 장치는 컨텐트를 작성하기 위해 잘 알려진 툴 및 인터페이스를 이용한다. 예를 들어, 예시적인 저작 장치는 Windows®, Apple® 및 Linux® 기반의 개인용 컴퓨터와 같은 개인용 컴퓨터를 포함한다. 한 실시예에서, 원격 장치는 저작 장치를 통해 저작된 컨텐트를 이용하도록 구성된다. 예를 들어, 예시적인 원격 장치는 Sony PlayStation® 애플리케이션을 이용하는 게임 콘솔이다.
한 실시예에서, 저작 장치는 저작된 컨텐트를 작성하기 위해 선언형 언어를 이용한다. 그러한 한가지 선언형 언어는 명세서에 표시된 코드 부분들이 예시된다. 선언형 언어의 사용을 통해, 저작 컨텐트는 저작 장치로부터 직접 스크립트될 수 있다. 더구나, 저작 장치 상에서 작성되는 저작 컨텐트는 원격 장치 상에서의 사용을 위해 특별히 개발된다. 한 예에서, 개인용 컴퓨터 상에서 작성된 저작 컨텐트는 게이밍 콘솔 상에서 이용되도록 구성된다.
한 실시예에서, 원격 플랫폼을 위한 선언 컨텐트를 저작하는 방법 및 장치는 저작 장치 상에서 작성된 저작 컨텐트를 원격 장치가 직접 이용할 수 있게 한다. 더구나, 저작 컨텐트는 저작 장치로부터 전송되어, 원격 장치 상에서 재컴파일하지 않고 원격 장치 상에서 직접 재생된다. 예를 들어, 저작 컨텐트의 일부는 저작 컨텐트를 저작 장치에서 원격 장치로 스트림하면서 동시에 재생될 수 있다. 저작 컨텐트를 원격 장치 상에서 직접 재생함으로써, 저작 장치 상에서의 저작 컨텐트의 변경 및 디버깅이 가능하다.
도 1은 원격 플랫폼을 위한 선언 컨텐트를 저작하는 방법 및 장치가 구현되는 환경을 도시한 도면이다. 이 환경은 전자 장치(110)(예를 들어, 컴퓨터, 개인 휴대 정보 단말기 등과 같이 클라이언트 장치로서 작용하도록 구성된 컴퓨팅 플랫폼), 사용자 인터페이스(115), 네트워크(120)(예를 들어, 근거리 통신망(LAN), 홈 네트워크, 인터넷) 및 서버(130)(예를 들어, 서버로서 작용하도록 구성된 컴퓨팅 플랫폼)을 포함한다.
한 실시예에서, 하나 이상의 사용자 인터페이스(115) 컴포넌트는 전자 장치(110)와 통합된다(예를 들어, 개인 휴대 정보 단말기와 같은 동일한 하우징 내의 키패드 및 비디오 표시 화면 입력 및 출력 인터페이스). 다른 실시예에서, 하나 이상의 사용자 인터페이스(115) 컴포넌트(예를 들어, 키보드나, 마우스, 트랙볼 등 과 같은 포인팅 장치), 마이크로폰, 스피커, 디스플레이, 카메라는 전자 장치(110)와 물리적으로 분리되고, 전자 장치(110)에 통상적으로 연결된다. 한 실시예에서, 사용자는 네트워크(120)를 통해 연결된 전자 장치(110), 서버(130) 또는 원격 저장 장치(도시되지 않음) 내에 저장된 컨텐트 및 애플리케이션을 액세스하고 제어하기 위해 인터페이스(115)를 이용한다.
본 발명에 따르면, 후술되는 원격 플랫폼을 위한 선언 컨텐트를 저작하는 실시예는 전자 장치(110) 내의 전자 프로세서에 의해, 서버(130) 내의 전자 프로세서에 의해, 또는 함께 동작하는 전자 장치(110) 및 서버(130) 내의 프로세서들에 의해 실행된다. 서버(130)는 도 1에 단일 컴퓨팅 플랫폼으로 도시되지만, 다른 경우에는 서버로서 동작하는 2개 이상의 상호접속된 컴퓨팅 플랫폼이다.
한 실시예에서, 전자 장치(110)는 네트워크(120)를 통해 저작 컨텐트를 수신하도록 구성된 원격 장치이다. 다른 실시예에서, 전자 장치(110)는 네트워크(120)를 통해 원격 장치를 위한 저작 컨텐트를 전송하도록 구성된 저작 장치이다.
도 2는 원격 플랫폼을 위한 선언 컨텐트를 저작하는 방법 및 장치가 구현되는 예시적인 아키텍처를 도시한 단순화된 도면이다. 예시적인 아키텍처는 다수의 전자 장치(110), 서버 장치(130), 및 전자 장치(110)를 서버(130)에 접속시키고 각 전자 장치를 서로 접속시키는 네트워크(120)를 포함한다. 다수의 전자 장치(110)는 전자 프로세서(208)에 연결된 랜덤 액세스 메모리와 같은 컴퓨터-판독가능 매체(209)를 포함하도록 각각 구성된다. 프로세서(208)는 컴퓨터 판독가능 매체(209) 내에 저장된 프로그램 명령어를 실행한다. 한 실시예에서, 유일한 사용자 는 도 1을 참조하여 설명된 바와 같이 인터페이스(115)를 통해 각 전자 장치(110)를 동작시킨다.
서버 장치(130)는 컴퓨터 판독가능 매체(212)에 연결된 프로세서(211)를 포함한다. 한 실시예에서, 서버 장치(130)는 데이터베이스(240)와 같은 2차 데이터 저장 소자(제한적인 것은 아님)와 같은 하나 이상의 추가 외부 또는 내부 장치에 연결된다.
한 경우에, 프로세서(208 및 211)는 미국 캘리포니아주 산타 클라라에 위치한 인텔사에 의해 제조된다. 다른 경우에, 다른 마이크로프로세서가 사용된다.
한 실시예에서, 다수의 클라이언트 장치(110) 및 서버(130)는 원격 플랫폼을 위한 선언 컨텐트를 저작하기 위한 명령어를 포함한다. 한 실시예에서, 다수의 컴퓨터 판독가능 매체(209 및 212)는 맞춤화 애플리케이션을 부분적으로 포함한다. 부수적으로, 다수의 클라이언트 장치(110) 및 서버(130)는 맞춤화 애플리케이션과 함께 사용하기 위한 전자 메시지를 수신하고 송신하도록 구성된다. 이와 마찬가지로, 네트워크(120)는 맞춤화 애플리케이션과 함께 사용하기 위한 전자 메시지를 송신하도록 구성된다.
하나 이상의 사용자 애플리케이션은 매체(209), 매체(212) 내에 저장되고, 또는 단일 사용자 애플리케이션은 부분적으로 하나의 매체(209) 내에 저장되고, 부분적으로 매체(212) 내에 저장된다. 한 경우에, 저장된 사용자 애플리케이션은 저장 위치에 상관없이, 후술된 실시예를 사용하여 판정된 바와 같은 원격 플랫폼을 위한 선언 컨텐트의 저작에 기초하여 맞춤가능하게 된다.
도 3은 시스템(300)의 한 실시예를 도시한 것이다. 한 실시예에서, 시스템(300)은 서버(130) 내에 구현된다. 다른 실시예에서, 시스템(300)은 전자 장치(110) 내에 구현된다. 또 다른 실시예에서, 시스템(300)은 전자 장치(110) 및 서버(130) 내에 구현된다.
한 실시예에서, 시스템(300)은 컨텐트 전송 모듈(310), 컨텐트 검출 모듈(320), 저장 모듈(330), 인터페이스 모듈(340) 및 제어 모듈(350)을 포함한다.
한 실시예에서, 제어 모듈(350)은 컨텐트 전송 모듈(310), 컨텐트 검출 모듈(320), 저장 모듈(330) 및 인터페이스 모듈(340)과 통신한다. 한 실시예에서, 제어 모듈(350)은 컨텐트 전송 모듈(310), 컨텐트 검출 모듈(320), 저장 모듈(330) 및 인터페이스 모듈(340) 사이의 태스크, 요청 및 통신을 조정한다.
한 실시예에서, 컨텐트 전송 모듈(310)은 저작 장치에 의해 작성된 저작 컨텐트를 검출하고, 저작 컨텐트를 검출된 원격 장치에 전송한다. 한 실시예에서, 원격 장치는 게이밍 콘솔, 셀룰러 전화, 셋탑 박스 또는 기타 장치와 같이 저작 컨텐트를 이용하도록 특별히 구성된 장치이다.
한 실시예에서, 컨텐트 검출 모듈(320)은 저작 장치로부터 원격 장치에 의해 이용된 저작 컨텐트의 사용을 모니터한다. 원격 장치 상에서 이용되고 있는 동안 저작 컨텐트를 모니터함으로써, 저작 장치로 저작 컨텐트를 개선하고 변경하는 것이 가능하다. 더구나, 원격 장치 상에서 거의 실시간으로 저작 컨텐트를 모니터하는 것은 또한 저작 장치 상에서의 저작 컨텐트의 개선 및 변경을 더욱 편리하게 만든다. 예를 들어, 원격 장치는 추가 저작 컨텐트가 저작 장치에서 원격 장치로 스 트림되는 동안 이와 동시에 저작 컨텐트를 모니터할 수 있다.
한 실시예에서, 저장 모듈(330)은 저작 컨텐트를 저장한다. 한 실시예에서, 저작 컨텐트는 장면의 결과가 명시적으로 설명되는 선언형 언어로 저장된다. 더구나, 저작 컨텐트는 원격 장치와 호환가능하고, 저작 컨텐트를 재컴파일하지 않고 원격 장치에 의해 이용된다.
한 실시예에서, 인터페이스 모듈(340)은 시스템(300)을 통해 저작 장치에서 원격 장치로의 저작 컨텐트의 전송을 나타내는 신호를 전자 장치(110) 중의 하나로부터 수신한다. 다른 실시예에서, 인터페이스 모듈(340)은 원격 장치 상에서의 저작 컨텐트의 사용을 나타내는 신호를 전자 장치(110) 중의 하나로부터 수신한다. 또 다른 실시예에서, 인터페이스 모듈(340)은 저작 컨텐트가 원격 장치 상에서 이용되는 동안 저작 장치 상에서의 저작 컨텐트의 모니터링에 응답하여 신호를 수신한다. 더구나, 인터페이스 모듈(340)은 저작 장치가 원격 장치 상에 있는 저작 컨텐트의 재생을 제어할 수 있게 한다.
도 3에서의 시스템(300)은 예시적으로 도시된 것으로, 원격 플랫폼을 위한 선언 컨텐트를 저작하는 방법 및 장치의 한 실시예일 뿐이다. 추가 모듈은 원격 플랫폼을 위한 선언 컨텐트를 저작하는 방법 및 장치의 범위를 벗어나지 않고서 시스템(300)에 추가될 수 있다. 이와 마찬가지로, 모듈은 원격 플랫폼을 위한 선언 컨텐트를 저작하는 방법 및 장치의 범위를 벗어나지 않고서 결합되거나 삭제될 수 있다.
도 4는 시스템(300) 내에서의 저작 컨텐트로서 사용하기 위한 선언형 언어를 이용하는 예시적인 시스템(411)을 도시한 것이다.
한 실시예에서, 시스템(411)은 다양한 응용 프로그래머 인터페이스(이후 API) 요소 및 객체 모델을 시스템(411) 내에 존재하는 객체들 세트에 제공하는 코어(core) 런타임 모듈(410)을 포함한다. 한 경우에, 파일은 파서(parser)에 의해 미가공 장면 그래프(416)로 분석되어 코어 런타임 모듈(410)로 보내지는데, 이 코어 런타임 모듈에서는 그 객체들이 인스턴스화되고, 런타임 장면 그래프가 형성된다.
객체들은 내장 객체(418), 작성자 정의 객체(420) 또는 원시 객체(424) 등의 객체 내에 저장될 수 있다. 한 실시예에서, 객체들은 플랫폼 서비스(432)를 얻기 위해 한 세트의 이용가능한 매니저(426)를 사용한다. 이들 플랫폼 서비스(432)는 이벤트 처리, 단정(assert) 로딩, 및 매체의 재생(playing) 등을 포함한다. 한 실시예에서, 객체는 표시하기 위한 중간 또는 최종 화상을 합성하기 위해 렌더링 계층(428)을 사용한다.
한 실시예에서, HTML 또는 XML 페이지와 같은 페이지 통합 컴포넌트(430)는 시스템(411) 내의 저작 컨텐트를 외부 환경에 접속시키기 위해 사용된다. 다른 실시예에서, 외부 환경은 게이밍 콘솔, 셀룰러 전화 및 기타 핸드-헬드 장치와 같은 기타 플랫폼을 포함한다.
한 실시예에서, 시스템(411)은 매니저 세트(426)와 관계있는 시스템 객체를 포함한다. 각각의 매니저(426)는 시스템(411)의 소정의 양상을 제어하기 위해 API 세트를 제공한다. 이벤트 매니저(426D)는 사용자 입력에 의해 비롯된 인입 시스템 이벤트 또는 환경 이벤트로의 액세스를 제공한다. 로드 매니저(426C)는 저작 컨텐트 파일 및 원시 노드 구현의 로딩을 용이하게 한다. 매체 매니저(426E)는 오디오, 화상 및 비디오 매체 단정을 로드하고 제어하며 재생하는 능력을 제공한다. 렌더(render) 매니저(426G)는 장면을 렌더링하기 위해 사용된 객체의 생성 및 관리를 허용한다. 장면 매니저(426A)는 장면 그래프를 제어한다. 표면(surface) 매니저(426F)는 장면 요소 및 그외 다른 단정이 합성될 수 있는 표면의 생성 및 관리를 허용한다. 스레드 매니저(426B)는 작성자에게 스레드를 생성하여 제어하는 능력과 그들 사이에서 통신하는 능력을 제공한다.
도 5는 시스템(411)을 통한 컨텐트 흐름의 개념 설명을 흐름도로 도시한 도면이다. 흐름도 내의 블록은 이벤트 참가자에게 메시지를 게시하여 알리는 방법 및 장치의 정신을 벗어나지 않고서 상이한 순서로 실행될 수 있다. 더구나, 블록은 원격 플랫폼을 위한 선언 컨텐트를 저작하는 방법 및 장치의 정신을 벗어나지 않고서 삭제되거나 추가되거나 결합될 수 있다.
블록(550)에서, 프리젠테이션은 파서(414)(도 4)로 가게 되는 컨텐트의 파일 또는 스트림(434)(도 4)을 포함하는 소스에서부터 시작된다. 소스는 고유 VRML형 텍스트 포맷, 고유 이진 포맷, 또는 XML 기반의 포맷 등으로 되어 있을 수 있다. 소스의 포맷에 상관없이, 블록(555)에서, 소스는 미가공 장면 그래프(416)(도 4)로 변환된다. 미가공 장면 그래프(416)는 필드 초기화 값뿐만 아니라, 컨텐트 내의 노드, 필드 및 그외 다른 객체를 나타낸다. 미가공 장면 그래프(416)는 또한 객체 원형(prototype), 스트림(434) 내의 외부 원형 레퍼런스, 및 루트 문장의 설명을 포함할 수 있다.
미가공 장면 그래프(416)의 최상위 레벨은 노드, 최상위 레벨 필드 및 함수, 파일 내에 포함된 원형 및 루트를 포함한다. 한 실시예에서, 시스템(411)은 종래의 구성요소 이외에 최상위 레벨에서의 필드 및 함수를 허용한다. 한 실시예에서, 미가공 장면 그래프(416)의 최상위 레벨은 HTML 페이지와 같은 외부 환경에 인터페이스를 제공하기 위해 사용된다. 다른 실시예에서, 미가공 장면 그래프(416)의 최상위 레벨은 또한 스트림(434)이 원격 장치의 저작 컨텐트로서 사용될 때 객체 인터페이스를 제공한다.
한 실시예에서, 각각의 미가공 노드는 그 문맥 내에서 초기화된 필드의 리스트를 포함한다. 한 실시예에서, 각각의 미가공 필드 엔트리는 그 필드에 대한 이름, 유형(주어진 경우) 및 데이터 값(들)을 포함한다. 한 실시예에서, 각각의 데이터 값은 명시적 유형화 필드 값을 나타낼 수 있는 숫자, 문자열, 미가공 노드 및/또는 미가공 필드를 포함한다.
블록(560)에서, 원형은 미가공 장면 그래프(416)의 최상위 레벨에서 추출되고, 이 장면에 의해 액세스가능한 객체 원형의 데이터베이스에 상주하게 하기 위해 사용된다.
그 다음, 미가공 장면 그래프(416)는 구성 운행법(build traversal)을 통해 보내진다. 이 운행 동안에, 각각의 객체는 객체 원형의 데이터베이스를 사용하여 구성된다(블록(565)).
블록(570)에서는, 스트림(434) 내의 루트가 설정된다. 그 후, 블록(575)에 서, 장면 내의 각 필드가 초기화된다. 한 실시예에서, 초기화는 초기 이벤트를 객체의 비디폴트 필드에 보냄으로써 실행된다. 장면 그래프 구조가 노드 필드의 사용을 통해 달성되기 때문에, 블록(575)은 또한 장면 계층을 구성한다.
한 실시예에서, 이벤트는 순위 운행법을 사용하여 활성화된다. 마주친 제1 노드는 노드 내의 필드들의 수를 확인한다. 한 필드가 한 노드이면, 그 노드가 먼저 운행(traverse)된다. 운행되는 노드 필드의 결과로서, 트리의 그 특정 브랜치 내의 노드들이 또한 초기화된다. 그 다음, 이벤트는 노드 필드를 위한 초기 값을 갖는 그 노드 필드에 보내진다.
주어진 노드가 초기화된 필드를 가진 후, 작성자는 그 노드가 호출시에 완전히 초기화된 것을 보장하기 위해 초기화 로직을 원형화 객체에 추가할 수 있게 된다(블록(580)). 상술된 블록은 바탕(root) 장면을 생성한다. 블록(585)에서, 장면은 장면을 위해 생성된 장면 매니저(426A)(도 4)에게 전달된다.
블록(590)에서, 장면 매니저(426A)는 암시적으로 또는 작성자 제어 하에 행위 처리를 렌더링하여 실행하기 위해 사용된다. 한 실시예에서, 장면 매니저(426A)에 의해 렌더링된 장면은 내장 객체(418), 작성자 정의 객체(420) 및 원시 객체(424)로부터의 객체를 사용하여 구성된다. 예시적인 객체는 아래에 설명된다.
한 실시예에서, 객체들은 그들의 기능을 차후에 확장하거나 변경하는 그들의 부모 객체로부터 어떤 객체 기능을 이어받을 수 있다. 계층구조의 기반에는 객체가 있다. 한 실시예에서, 객체의 2개의 메인 클래스는 노드와 필드이다. 노드는 전형적으로 그중에서도 특히, 렌더 운행법의 일부로서 호출되는 렌더 메소드를 포 함한다. 노드의 데이터 특성은 필드라 불린다. 객체 계층 중에는 상세하게 후술되는 타이밍 객체라고 하는 객체 클래스가 있다. 다음에 오는 코드 부분은 예시적인 것이다. 각 코드 부분의 라인 번호는 단지 그러한 특정 코드 부분의 라인 번호를 나타내는 것이지, 오리지널 소스 코드의 라인 번호를 나타내는 것은 아니다.
표면 객체
Surface Object는 유형 SurfaceNode의 노드이다. 한 실시예에서, SurfaceNode 클래스는 컬러, 심도(depth) 및 불투명도(알파) 값의 어레이로서 2차원 화상을 묘사하는 모든 객체에 대한 기본 클래스이다. SurfaceNodes는 텍스처 맵으로서 사용될 화상을 제공하기 위해 주로 사용된다. SurfaceNode 클래스로부터 파생된 것은 MovieSuface, ImageSurface, MatteSurface, PixelSurface 및 SceneSurface이다.
다음 코드 부분은 MovieSurface 노드를 나타낸 것이다.
MovieSurface 노드는 영화를 규정하는 화상의 시퀀스로의 액세스를 제공함으로써 표면 상에 영화 또는 일련 정적 화상을 렌더링한다. MovieSurface의 TimeNode 부모 클래스는 어떤 프레임이 임의의 주어진 시간에 표면 상으로 렌더링되는지 판정한다. 영화는 또한 오디오 소스로서 사용될 수 있다.
코드 부분의 라인 2에서, (다중값 필드(Multiple Value Field)) URL 필드는 표면에 대한 영화 데이터의 가능한 위치의 리스트를 제공한다. 리스트는 요소 0이 양호한 데이터 소스를 묘사하도록 순서화된다. 어떤 이유로, 요소 0이 이용 불가능하거나 지원되지 않은 포맷으로 되어 있으면, 다음 요소가 사용될 수 있다.
라인 3에서, timeBase 필드는 지정되는 경우에, 영화에 대한 타이밍 정보를 제공하기 위한 노드를 지정한다. 특히, timeBase 필드는 임의의 주어진 순간에 표면 상에 어떤 영화 프레임을 표시할 것인지 판정하기 위해 필요한 정보를 영화에 제공한다. 한 실시예에서, 지정된 timeBase가 없으면, 표면은 제1 영화 프레임을 표시할 것이다.
라인 4에서, 지속시간 필드는 일단 영화 데이터가 페치되었으면 MovieSurface 노드에 의해 수초의 영화 길이로 설정된다.
라인 5 및 6에서, loadTime 및 loadStatus 필드는 영화 데이터의 이용도에 관해 MovieSurface 노드로부터 정보를 제공한다. loadStatus는 5개의 가능한 값, 즉 "NONE", "REQUESTED", "FAILED", "ABORTED" 및 "LOADED"를 갖는다.
"NONE"은 초기 상태이다. "NONE" 이벤트는 또한 값의 수치를 0으로 설정하거나 제1 URL 문자열을 빈 문자열로 설정함으로써 노드의 url이 소거되는 경우에 보내진다. 이것이 발생할 때, 표면의 픽셀은 흑색 및 불투명으로 설정된다(즉, 컬러는 0,0,0이고, 투명도는 0이다).
"REQUESTED" 이벤트는 비어있지 않은 url 값이 설정될 때마다 보내진다. 표면의 픽셀은 "REQUESTED" 이벤트 후에 불변 상태로 남아있다.
"FAILED"는 영화 로딩이 계속적으로 되지 않은 경우에 "REQUESTED" 이벤트 후에 보내진다. 이것은, 예를 들어 URL이 존재하지 않는 파일을 나타내거나 또는 파일이 유효 데이터를 포함하지 않는 경우에 발생할 수 있다. 표면의 픽셀은 "FAILED" 이벤트 후에 불변 상태로 남아있다.
"ABORTED" 이벤트는 현재의 상태가 "REQUESTED"이고, 다음에 URL이 다시 변경되는 경우에 보내진다. URL이 비어있지 않은 값으로 변경되면, "ABORTED"는 "REQUESTED" 이벤트 앞에 온다. URL이 빈 값으로 변경되면, "ABORTED"는 "NONE" 값 앞에 온다. 표면의 픽셀은 "ABORTED" 이벤트 후에 불변 상태로 남아있다.
"LOADED" 이벤트는 영화가 표시될 준비가 되어 있을 때 보내진다. 그것은 값이 현재 시간에 일치하는 loadTime 이벤트의 앞에 온다. timeBase 필드에 의해 표시된 영화의 프레임은 표면 상으로 렌더링된다. timeBase가 NULL이면, 영화의 제1 프레임은 표면 상으로 렌더링된다.
다음 코드 부분은 ImageSurface 노드를 나타낸다.
ImageSurface 노드는 화상 파일을 표면 상으로 렌더링한다. 코드 부분의 라인 2에서, URL 필드는 표면에 대한 화상 데이터의 가능한 위치의 리스트를 제공한다. 리스트는 요소 0이 가장 양호한 데이터 소스를 묘사하도록 순서화된다. 어떤 이유로, 요소 0이 이용 불가능하거나 또는 지원되지 않은 포맷으로 되어 있으면, 다음 요소가 사용될 수 있다. 라인 3 및 4에서, loadTime 및 loadStatus 필드는 화상 데이터의 이용도에 관해 ImageSurface 노드로부터 정보를 제공한다. loadStatus는 "NONE", "REQUESTED", "FAILED", "ABORTED" 및 "LOADED"와 같은 5개의 가능한 값을 갖는다.
다음 코드 부분은 MatteSurface 노드를 나타낸다.
MatteSurface 노드는 표면 1 및 표면 2로부터의 화상 데이터를 제3 표면 상으로 결합하기 위해 화상 합성 동작을 사용한다. 합성 동작의 결과는 표면 2의 해상도로 계산된다. 표면 1의 크기가 표면 2의 크기와 다르면, 표면 1 상의 화상 데이터는 표면 1의 크기를 표면 2의 크기와 동일하게 만들기 위해 동작을 실행하기 전에 줌 업 또는 다운된다.
코드 부분의 라인 2 및 3에서, 표면 1 및 표면 2 필드는 합성 동작을 위해 입력 화상 데이터를 제공하는 2개의 표면을 지정한다. 라인 4에서, 동작 필드는 2개의 입력 표면 상에서 실행하기 위한 합성 함수를 지정한다. 가능한 동작은 "REPLACE_ALPHA", "MULTIPLY_ALPHA", "CROSS_FADE" 및 "BLEND"를 포함한다.
"REPLACE_ALPHA"는 표면 2의 알파 채널 A를 표면 1로부터의 데이터로 겹쳐쓴다. 표면 1이 한 성분(단지 그레이스케일 강도만)을 가지면, 그 성분은 알파(불투명도) 값으로서 사용된다. 표면 1이 2개 또는 4개의 성분(그레이스케일 강도 + 알파 또는 RGBA)를 가지면, 알파 채널 A는 알파 값을 제공하기 위해 사용된다. 표면 1이 3개의 성분(RGB)을 가지면, 동작은 규정되지 않는다. 이 동작은 정적 또는 동 적 알파 마스크를 정적 또는 동적 화상에 제공하기 위해 사용될 수 있다. 예를 들어, SceneSurface는 투명 배경에 대해 동화(animated) 제임스 본드 캐릭터를 렌더링할 수 있다. 그 다음, 이 화상의 알파 성분은 비디오 클립을 위한 마스크 형상으로서 사용될 수 있다.
"MULTIPLY_ALPHA"는 표면 1로부터의 알파 값이 표면 2로부터의 알파 값과 곱해지는 것을 제외하면 REPLACE_ALPHA와 유사하다.
"CROSS_FADE"는 눈에 보이는 각 표면의 퍼센트를 제어하기 위해 파라미터 값을 사용하여 2개의 표면 사이에서 페이딩한다. 이 동작은 2개의 정적 또는 동적 화상 사이에서 동적으로 페이딩한다. 파라미터 값(라인 5)을 0에서 1로 움직이게 함으로써, 표면 1 상의 화상은 점점 표면 2의 화상으로 된다.
"BLEND"는 혼합 퍼센트를 제어하기 위해 표면 2로부터의 알파 채널을 사용하여 표면 1 및 표면 2로부터의 화상 데이터를 결합한다. 이 동작은 표면 2의 알파 채널이 2개 화상의 혼합을 제어할 수 있게 한다. SceneSurface를 렌더링하거나 MovieSurface를 재생하여 표면 2의 알파 채널을 움직이게 함으로써, 복합 이동 메트(matte) 효과가 생성될 수 있다. R1, G1, B1 및 A1이 표면 1의 적색, 녹색, 청색 및 알파 값을 나타내고, R2, G2, B2 및 A2가 표면 2의 대응하는 픽셀의 적색, 녹색, 청색 및 알파 값을 나타내면, 그 픽셀의 적색, 녹색, 청색 및 알파 성분에 관한 결과적으로 얻어진 값은 다음과 같다.
적색(red) = R1*(1-A2)+R2*A2 (1)
녹색(green) = G1*(1-A2)+G2*A2 (2)
청색(blue) = B1*(1-A2)+B2*A2 (3)
알파 = 1 (4)
"ADD" 및 "SUBTRACT"는 표면 1 및 표면 2의 컬러 채널을 더하거나 뺀다. 그 결과의 알파는 표면 2의 알파와 동일하다.
라인 5에서, 파라미터 필드는 합성 함수의 영향을 변경할 수 있는 하나 이상의 부동 소수점 파라미터를 제공한다. 파라미터 값의 특정 해석은 어떤 동작이 지정되는 지에 따라 다르다.
라인 6에서, overwriteSurface2 필드는 MatteSurface 노드가 합성 동작의 결과(overwriteSurface2 = FALSE)를 저장하는 새로운 표면을 저장해야 하는지, 표면 2 상에 저장된 데이터가 합성 동작에 의해(overwriteSurface2 = TRUE) 겹쳐쓰여져야 하는지를 나타낸다.
다음 코드 부분은 SceneSurface 노드를 나타낸다.
PixelSurface 노드는 사용자 지정 픽셀의 어레이를 표면 상으로 렌더링한다. 라인 2에서, 화상 필드는 표면 상으로 렌더링되는 픽셀 데이터를 묘사한다.
다음 코드 부분은 SceneSurface 노드의 사용을 나타낸다.
SceneSurface 노드는 지정된 자식들(children)을 지정된 크기의 표면 상에 렌더링한다. SceneSurface는 자기 자식의 현재 상태를 반영하기 위해 자신을 자동으로 다시 렌더링한다.
코드 부분의 라인 2에서, 자식 필드는 렌더링될 ChildNOdes를 묘사한다. 개념적으로, 자식 필드는 SceneSurface 노드를 포함하는 장면 그래프와 무관하게 렌더링되는 전체 장면 그래프를 묘사한다.
라인 3 및 4에서, 폭 및 높이 필드는 픽셀 내의 표면의 크기를 지정한다. 예를 들어, 폭이 256이고 높이가 512이면, 표면은 픽셀 값의 256 x 512 어레이를 포함한다.
몇몇 실시예에서, MovieSurface, ImageSurface, MatteSurface, PixelSurface 및 SceneSurface 노드는 장면 렌더링 시에 이용된다.
장면 설명의 최상위 레벨에서, 출력은 "최상위 레벨 표면"인 디스플레이 상으로 매핑된다. 그 결과를 디스플레이에 렌더링하는 대신에, 3차원의 렌더링된 장면은 출력이 작성자에 의해 요구된 풍부한 장면 합성으로 편입되도록 이용가능한 상술된 SurfaceNodes 중의 하나를 사용하여 한 표면 상으로 출력을 생성할 수 있다. 표면의 삽입된 장면 설명을 렌더링함으로써 생성된 표면의 컨텐츠는 표면의 구조화 화상 조직의 일부로서 컬러 정보, 투명도(알파 채널) 및 심도를 포함할 수 있다. 이와 관련하여, 화상은 비디오 화상, 정지 화상, 애니메이션 또는 장면을 포함하도록 규정된다.
표면은 또한 통상의 화상 관리 인터페이스 뒤에서, 내부에 위치한 다양한 텍 스처-매핑 시스템의 특별 요구사항을 지원하도록 규정된다. 결과적으로, 시스템 내의 임의의 표면 생성기는 3차원 렌더링 처리에 의한 텍스처로서 소모될 수 있다. 그러한 표면 생성기의 예는 ImageSurface, MovieSurface, MatteSurface, SceneSurface 및 ApplicationSurface를 포함한다.
ApplicationSurface는 스프레드시트 또는 워드 프로세서, 종래의 윈도윙 시스템 내의 애플리케이션 윈도우와 유사한 방식과 같은 자신의 내장 애플리케이션 처리에 의해 렌더링된 화상 데이터를 유지한다.
렌더링 생성 및 텍스처 소모와의 표면 모델의 통합은 완화된 렌더링 속도의 선언 저작을 허용한다. 종래, 3차원 장면은 한 덩어리로 렌더링되어, 장면 복잡성 및 텍스터 스와핑(swapping)으로 인한 최악의 성능에 의해 지배받는 뷰어에 대한 최종 프레임 속도를 생성했다. 실시간의 연속 합성 프레임워크에서, 표면 추상화는 동일한 화면 상의 상이한 요소들에 대한 렌더링 속도를 완화시키는 메카니즘을 제공한다. 예를 들어, 느리게, 아마 초 당 1 프레임으로 렌더링하는, 하지만 다른 애플리케이션에 의해 생성되어 브라우저의 출력과 함께 표시된 비디오 프레임 속도가 초 당 풀 30 프레임으로 지속될 수 있는 동안에만 렌더링하는 웹 브라우저를 표현하는 것이 받아들여질 수 있다.
웹 브라우징 애플리케이션은 자신의 표면으로 당겨지면, 화면 합성기는 완전 동화상 비디오 프레임 속도로 방해받지 않게 렌더링하여, 웹 브라우저의 표면으로부터 마지막 완전히 그려진 화상을 고속 화면 갱신의 일부로서 소모할 수 있다.
타이밍 객체
타이밍 객체는 TimeBase 노드를 포함한다. 이것은 시한(timed) 노드의 필드로서 포함되고, 타이밍 시맨틱(semantic)의 공통 세트를 매체에 공급한다. 노드 인스턴스화를 통해, TimeBase 노드는 다수의 정격 매체 노드를 위해 사용되어, 일시적인 동기를 보장할 수 있다. Score 노드를 포함하는 노드 세트는 매체 이벤트를 순서화하기 위해 이용된다. Score 노드는 시한 노드이고, TimeBase로부터 타이밍을 획득한다. Score 노드는 지정된 시간에 이벤트를 내보내는 Cue 노드의 리스트를 포함한다. Score를 포함하는 다양한 타이밍 객체는 아래에 설명된다.
다음 코드 부분은 TimeNode 노드를 나타낸다. 노드 내의 함수의 설명은 그 뒤에 온다.
이 객체는 TimeBaseNode에 의해 제어된 모든 노드의 부모이다. 코드 부분의 라인 2에서, TimeBase 필드는 타임 베이스가 시작되거나 정지하거나 진행될 때 아래에 열거된 적절한 함수 호출을 하는 제어 TimeBaseNode를 포함한다.
라인 3에서, getDuration 함수는 TimeNode의 지속시간을 돌려보낸다. 이용 불가능한 경우, -1의 값이 돌려 보내진다. 이 함수는 전형적으로 파생된 객체에 의해 무효로 된다.
라인 4는 updateStartTime 함수를 열거한다. 호출될 때, 이 함수는 mediaTime 값에 의해 지정된 시작 오프셋을 갖고, 자신과 관련된 이벤트 또는 제어된 매체의 진행을 시작한다. updateStartTime 함수는 전형적으로 파생된 객체에 의해 무효로 된다.
라인 5는 호출시에 자신과 관련된 이벤트 또는 제어된 매체의 진행을 정지시키는 updateStopTime 함수를 열거한다. 이 함수는 전형적으로 파생된 객체에 의해 무효로 된다.
라인 6에서, updateMediaTime 함수는 mediaTime이 TimeBaseNode에 의해 갱신될 때마다 호출된다. updateMediaTime 함수는 그들의 매체에 관해 그 이상의 제어를 행사하거나 추가 이벤트를 보내기 위해 파생 객체에 의해 사용된다.
다음 코드 부분은 IntervalSensor 노드를 나타낸다.
IntervalSensor 노드는 시간이 경과함에 따라 이벤트를 생성한다. IntervalSensor 노드는 연속적인 시뮬레이션 및 애니메이션을 구동시키는 용도; 주기적 활동(예를 들어, 분 당 하나)를 제어하는 용도; 및 알람 시계와 같은 단일 발생 이벤트를 시작하는 용도를 포함하는(이것에 제한되지 않음) 많은 용도에 사용될 수 있다.
IntervalSensor 노드는 updateStartTime() 함수가 호출될 때 처음 프랙션(fraction) 및 시간 이벤트를 보낸다. 한 실시예에서, 이 노드는 또한 updateMediaTime()이 호출될 때마다 한 프랙션 및 시간 이벤트를 보낸다. 최종적으로, 마지막 프랙션 및 시간 이벤트는 updateStopTime0 함수가 호출될 때 보내진다.
코드 부분의 라인 2에서, cycleInterval 필드는 프랙션이 0에서 1로 가는데 걸리는, 초로 측정된 시간 길이를 판정하기 위해 작성자에 의해 설정된다. 이 값은 getDuration() 함수가 호출될 때 돌려보내진다.
라인 3은 TimeBaseNode가 아래의 식 (1)을 사용하여 실행되고 있을 때마다 이벤트를 생성하는 프랙션 필드를 열거한다:
라인 4는 TimeBaseNode가 실행되고 있을 때마다 이벤트를 생성하는 시간 필드를 열거한다. 시간 필드의 값은 현재의 벽시계 시간이다.
다음 코드 부분은 Score 노드를 나타낸다.
이 객체는 수신된 각각의 updateStartTime(), updateMediaTime() 및 updateStopTime()마다 큐(cue) 필드 내의 각 엔트리를 호출한다. 각각의 큐 엔트리에 대한 호출은 현재 누적된 상대 시간을 돌려보낸다. 이 값은 큐 엔트리들 사이의 상대 오프셋이 계산될 수 있도록 하기 위해 그 다음의 큐 엔트리로 보내진다.
코드 부분의 라인 2에서, cuefield는 mediaTime의 경과에 따라 20개의 호출 될 CueNode 엔트리의 리스트를 보유한다.
다음 코드 부분은 TimeBaseNode 노드를 나타낸다.
이 객체는 mediaTime을 생성하는 모든 노드의 부모이다. 코드 부분의 라인 2는 mediaTime이 진행될 때마다 이벤트를 생성하는 mediaTime 필드를 열거한다. mediaTime 필드는 전형적으로 파생된 객체에 의해 제어된다.
라인 3은 이 TimeBasedNode가 시간 이벤트의 수신에 관한 관심을 등록했으면 시간이 진행될 때 장면 매니저에 의해 호출되는 평가 함수를 열거한다.
라인 4는 이 TimeBaseNode가 그들의 timeBase 필드에서 설정될 때 각 TimeNode에 의해 호출되는 addClient 함수를 열거한다. mediaTime이 시작되거나 진행되거나 정지될 때, 리스트 내의 각 클라이언트가 호출된다. 보내진 노드가 이미 클라이언트이면, 이 함수는 어떤 동작도 실행하지 않는다.
라인 5는 이 TimeBaseNode가 그들의 timeBase 필드에서 더 이상 설정되지 않을 때 각 TimeNode에 의해 호출되는 removeClient 함수를 열거한다. 보내진 노드가 클라이언트 리스트 내에 없으면, 이 함수는 어떤 동작도 실행하지 않는다.
라인 6은 클라이언트 리스트 내에서 현재 클라이언트의 수를 돌려보내는 getNumClients 함수를 열거한다.
라인 7은 보내진 인덱스에서 클라이언트를 돌려보내는 getClient 함수를 열 거한다. 인덱스가 범위 밖이면, NULL 값이 돌려 보내진다.
다음 코드 부분은 TimeBase 노드를 나타낸다.
이 객체는 mediaTime의 진행을 제어한다. TimeBase는 mediaTime 루프를 연속적으로 행할 수 있을 뿐만 아니라, 시작하고, 정지할 수 있으며, 이 값으로 돌아갈 수 있다. TimeBase는 mediaTime이 그 범위의 서브셋에 걸쳐 재생될 수 있게 한다.
코드 부분의 라인 2에서, 루프 필드는 mediaTime이 그 이동의 끝에 도달할 때 mediaTime이 그 진행을 반복할 것인 지의 여부를 제어한다.
라인 3에서, startTime 필드는 mediaTime이 진행을 시작할 때를 제어한다. 벽시계 시간의 단위로 되어 있는 startTime에 도달하면, TimeBase는 실행을 시작한다. 이것은 stopTime이 startTime보다 작은 동안에는 그러하다. 이것이 발생할 때, mediaTime은 속도가 0 이상이면 mediastartTime의 값으로 설정된다. mediaStartTime이 범위 밖이면(mediaStartTime의 무효 범위의 설명에 대해 참조), mediaTime은 0으로 설정된다. 속도가 0 미만이면, mediaTime은 mediaStopTime으로 설정된다. mediaStopTime이 범위 밖이면, mediaTime은 지속시간으로 설정된다. TimeBase는 stopTime에 도달하거나 또는 mediaStopTime(속도가 0 미만인 경우에는 mediastartTime)에 도달할 때까지 계속 실행된다. TimeBase가 실행되고 있는 동안에 startTime 이벤트가 수신되면, 그 이벤트는 무시된다.
라인 4 및 5에서, playTime 필드는 mediaTime이 활동시에 리셋되지 않는 점을 제외하면 startTime과 동일하게 동작한다. playTime 필드는 TimeBase가 stopTime으로 정지된 후에 mediaTime이 계속 진행될 수 있게 한다. playTime과 startTime이 동일한 값을 가지면, startTime이 우선순위를 갖는다. TimeBase가 실행되고 있는 동안에 playTime 이벤트가 수신되면, 그 이벤트는 무시된다. stopTime 필드는 TimeBase가 정지할 때를 제어한다.
라인 6에서, mediastartTime 필드는 mediaTime이 실행될 매체 지속시간의 서브(sub) 범위의 시작을 설정한다. mediastartTime의 범위는 0에서부터 지속시간의 끝까지이다(0..지속시간). mediaStartTime 필드가 범위 밖이면, 그 곳에서는 0이 사용된다.
라인 7에서, mediaStopTime 필드는 mediaTime이 실행될 매체 지속시간의 서브 범위의 끝을 설정한다. mediaStopTime의 범위는 0에서부터 지속시간의 끝까지이다(0..지속시간). mediaStopTime의 값이 범위 밖이면, 그 곳에서는 지속시간 값이 사용된다.
라인 8에서, 속도 필드는 mediaTime이 벽시계 시간의 초 당 1초 이외의 속도로 실행될 수 있게 한다. 속도 필드에서 제공된 속도는 순간 속도로서 사용된다. 평가 함수가 호출될 때, 최종 호출 이후의 경과 시간은 속도와 곱해지고, 그 결과 는 현재의 mediaTime에 더해진다.
라인 9에서, 지속시간 필드는 이 TimeBase의 모든 클라이언트의 지속시간이 그들의 지속시간을 결정했을 때 이벤트를 생성한다. 지속시간 필드의 값은 가장 긴 지속시간을 갖는 클라이언트와 동일하다.
라인 10에서, 인에이블드 필드는 TimeBase를 가능케 한다. 인에이블드가 거짓으로 될 때, isActive는 그것이 참이었으면 거짓으로 되고, mediaTime은 진행을 멈춘다. 거짓인 동안, startTime 및 playTime은 무시된다. 인에이블드 필드가 참으로 될 때, startTime 및 playTime은 TimeBase가 실행을 시작해야 하는지 판정하기 위해 평가된다. 실행을 시작해야 한다면, startTime 또는 playTime에서 설명된 바와 같은 동작이 실행된다.
라인 11은 TimeBase가 동작될 때 참 이벤트를 생성하고 TimeBase가 동작되지 않을 때 거짓 이벤트를 생성하는 isActive 필드를 열거한다.
다음 코드 부분은 CueNode 노드를 나타낸다.
이 객체는 Score의 큐 리스트 내의 모든 객체에 대한 부모이다. 코드 부분의 라인 2에서, 오프셋 필드는 시퀀스의 처음부터 0 상대 오프셋을 설정한다. 예 를 들어, 5의 값은 인입 mediaTime이 5의 값에 도달할 때 CueNode를 활성화시킬 것이다.
라인 3에서, 지연 필드는 CueNode가 활성화되기 전의 상대 지연을 설정된다. 오프셋이 -1(디폴트) 이외의 값이면, 이 지연은 오프셋으로부터 측정된다. 그렇지 않으면, 지연은 이전 CueNode의 끝에서부터, 또는 이것이 제1 CueNode인 경우에 0에서부터 측정된다. 예를 들어, 오프셋이 5의 값을 갖고, 지연이 2의 값을 가지면, 이 노드는 mediaTime이 7에 도달할 때 활성화할 것이다. 오프셋이 -1의 값을 갖고, 지연이 2의 값을 가지면, 이 노드는 이전 CueNode가 끝나고 2초 후에 활성화할 것이다.
라인 4에서, 인에이블드 필드가 거짓이면, CueNode는 디스에이블된다. CueNode는 오프셋 및 지연이 그들의 디폴트 값이었던 것처럼 동작하고, 그것은 이벤트를 활성화하지 않는다. 그것이 참이면, CueNode는 정상적으로 동작한다.
라인 5에서, 방향 필드는 mediaTime의 이동 방향과 관련하여 이 노드가 활성화하는 방법을 제어한다. 이 필드가 0이면, mediaTime이 증가하고 있든지(0보다 큰 속도) 감소하고 있든지(0보다 작은 속도), 이 노드는 이 노드의 오프셋 및/또는 지연에 도달할 때 활성화한다. 방향 필드가 0보다 작으면, 이 노드는 mediaTime이 감소하고 있을 때 그 오프셋 및/또는 지연에 도달하는 경우에만 활성화한다. 방향 필드가 0보다 크면, 이 노드는 mediaTime이 증가하고 있을 때 이 노드의 오프셋 및/또는 지연에 도달하는 경우에만 활성화한다.
라인 6은 부모 Score가 updateStartTime() 함수 호출을 수신할 때 호출되는 updateStartTime 함수를 열거한다. 각각의 CueNode는 차례로 호출된다.
라인 7은 부모 Score 25가 updateStopTime() 함수 호출을 수신할 때 호출되는 updateStopTime 함수를 열거한다. 각각의 CueNode는 차례로 호출된다.
라인 8은 부모 Score가 updateMediaTime 함수 호출을 수신할 때 호출되는 평가 함수를 열거한다. 각각의 CueNode는 차례로 호출되고, 그 누적된 시간을 반환해야 한다. 예를 들어, 오프셋이 5이고, 지연이 2이면, CueNode는 7의 값을 반환할 수 있다. 오프셋이 -1이고, 지연이 2이면, CueNode는 인입 누적 시간의 값에 2를 더한 값을 반환할 수 있다. 이것은 디폴트 동작이다. (IntervalCue와 같은) 몇몇의 CueNode는 활성화 시간뿐만 아니라 잘 정해진 지속시간을 갖는다.
라인 9에서, getAccumulatedTime 함수는 evaluate() 함수에서와 동일한 계산을 사용하여 누적 시간을 반환한다.
라인 10은 CueNode가 그 활성화 시간에 도달할 때 디폴트 evaluate() 함수로부터 호출된 활성화 함수이다. 활성화 함수는 적절한 동작을 실행하기 위해 특정 파생 객체에 의해 무효로 될 예정이다.
다음 코드 부분은 MediaCue 노드를 나타낸다.
이 객체는 이 CueNode가 동작중일 때 mediaTime의 진행을 제어한다. MediaCue는 mediaTime이 그 범위의 서브셋에 걸쳐 재생될 수 있게 한다. MediaCue 는 오프셋 및/또는 지연 필드에 의해 판정된 시간부터, mediaStopTime 마이너스 mediaStartTime에 의해 판정된 시간 길이동안 동작된다. getAccumulatedTime()로부터의 MediaCue 반환 값은 디폴트 함수를 mediaStopTime에 더하고 mediaStartTime을 빼서 계산된 값이다. 이 노드는 활성화 시간 플러스 mediaStartTime을 인입 mediaTime에서 빼서 계산된, 동작 중의 mediaTime을 생성한다. 그러므로, MediaCue는 인입 mediaTime과 동일한 속도로 mediaTime을 진행시킨다.
코드 부분의 라인 2에서, mediaStartTime 필드는 mediaTime이 실행되는 매체 지속시간의 서브 범위의 시작을 설정한다. mediaStartTime의 범위는 0에서부터 지속시간의 끝까지이다(0..지속시간). mediaStartTime 필드의 값이 범위 밖이면, 그 곳에서는 0이 이용된다.
라인 3에서, mediastopTime 필드는 mediaTime이 실행되는 매체 지속시간의 서브 범위의 끝을 설정한다. mediaStopTime의 범위는 0에서부터 지속시간의 끝까지이다(0..지속시간). mediaStopTime 필드가 범위 밖이면, 그 곳에서는 지속시간이 이용된다.
라인 4에서, 지속시간 필드는 이 TimeBaseNode의 모든 클라이언트의 지속시간이 그들의 지속시간을 판정했을 때 이벤트를 생성한다. 지속시간 필드의 값은 가장 긴 지속시간을 갖는 클라이언트와 동일하다.
라인 5는 이 노드가 동작될 때 참 이벤트를 생성하고 이 노드가 동작하지 않게 될 때 거짓 이벤트를 생성하는 isActive 필드를 열거한다.
다음 코드 부분은 IntervalCue 노드를 나타낸다.
이 객체는 시간이 진행됨에 따라 0에서 1로의(또는 램프업(rampup)이 거짓이면 1에서 0으로의) 프랙션 이벤트를 보낸다. 코드 부분의 라인 2는 프랙션 램프가 진행되는 초 단위의 시간을 판정하는 기간 필드를 열거한다.
라인 3에서, rampUp 필드가 참(디폴트)이면, 프랙션은 IntervalCue의 지속시간동안 0에서 1로 올라간다. 거짓이면, 프랙션은 1에서 0으로 내려간다. mediaTime이 거꾸로 실행되면(속도가 0보다 작을 때), 프랙션은 rampUp이 참일 때 1에서 0으로 내려가고, 프랙션은 rampUp 필드가 거짓일 때 0에서 1로 올라간다.
라인 4에서, 프랙션 필드는 이 노드가 동작되는 동안 evaluate()에 대한 각각의 호출을 갖는 이벤트를 보낸다. mediaTime이 앞으로 가고 있으면, 프랙션은 이 노드가 활성화할 때 출력하기 시작하고, 이 노드가 그 활성화 시간 플러스 기간에 도달할 때 출력을 정지한다. 프랙션의 값은 다음과 같이 기술된다:
라인 5는 노드가 동작될 때 참 이벤트를 보내고 노드가 동작되지 않을 때 거짓을 보내는 isActive 필드를 열거한다. mediaTime이 앞으로 가고 있으면, 노드는 mediaTime이 활성화 시간 이상이 될 때 동작된다. 이 노드는 mediaTime이 활성화 시간 플러스 기간 이상이 될 때 동작되지 않는다. mediaTime이 거꾸로 가고 있으면, 노드는 mediaTime이 활성화 시간 플러스 기간 이하로 될 때 동작되고, mediaTime이 활성화 시간 이하로 될 때 동작되지 않는다. 이들 이벤트의 활성화는 방향 필드에 의해 영향받는다.
다음 코드 부분은 FieldCue 노드를 나타낸다.
이 객체는 FieldCue가 활성화할 때 cueOut에 대한 이벤트로서 cueValue를 보낸다. FieldCue는 임의의 필드 유형이 설정되어 보내질 수 있게 한다. cueOut 값은 임의의 유형의 필드로 발송될 수 있다. cueValue의 현재 유형이 수신지 필드의 유형과 호환되지 않으면 규정되지 않은 결과가 발생할 수 있다.
코드 부분의 라인 2에서, cueValue 필드는 이 노드가 활성화할 때 보내질 저작 값이다. 라인 3은 이 노드가 활성화할 때 cueValue의 값을 갖는 이벤트를 보내는 cueOut 필드를 열거한다.
다음 코드 부분은 TimeCue 노드를 나타낸다.
이 객체는 TimeCue가 활성화할 때 cueTime에 대한 이벤트로서 현재의 벽시계 시간을 보낸다. 코드 부분의 라인 2는 이 노드가 활성화할 때 현재의 벽시계 시간을 갖는 이벤트를 보내는 cueTime 필드를 열거한다.
실시간 장면 합성의 문맥 내의 스코어링(scoring) 구성은 화상 플립북(flipbooks) 및 화상 합성 애니메이션(예를 들어, 동화 GIF); 비디오 및 오디오 클립 및 스트림; 접합 변환, 기하학 형태 및 텍스처 좌표와 같은 기하학적 애니메이션 클립 및 스트림; 조명, 안개 및 투명도와 같은 렌더링 파라미터의 애니메이션; 행위, 시뮬레이션 또는 생성 시스템을 위한 파라미터의 변조; 및 단정 로딩, 이벤트 뮤팅 및 논리 함수의 동적 제어를 포함하는 광범위한 프리젠테이션 및 재생 기술에 관한 시간적 제어를 작성자가 선언식으로 기술할 수 있게 한다. 예를 들어, 다음 예는 화상 단정을 사전 로드하기 위해 문자열을 내보낸 다음, 그 화상을 사용하여 애니메이션을 실행하고, 그 다음에 영화를 실행한다. 다음 예에서의 문자열은 또한 반대로 실행될 수 있다(즉, 먼저 영화가 뒤로 재생된 다음에, 애니메이션이 뒤로 재생되고, 그 다음에 화상이 나타난다).
한 실시예에서, Score 내의 Cue 노드는 TimeBase의 매체 시간과 관련하여 활 성화해서, 공통 레퍼런스를 제공함으로써, 다양한 매체 단정들의 타이밍 사이의 정확한 관계가 생긴다. 상기 코드 부분에서, FieldCue(라인 9)는 이 FieldCue가 디폴트 오프셋 및 지연 필드를 가짐으로써 화상이 나타나게 하기 때문에 TimeBase가 시작되자 마자 활성화한다. 코드 부분의 라인 35-45는 표면 상에 화상(500, 도 5)을 로드한다. 그 다음, IntervalCue(라인 13)는 0.5초 후에 시작되고, 다음 2.5초동안 실행되어, 그 프랙션 출력을 0에서 1로 증가시킨다. IntervalCue의 활성화는 화상의 애니메이션(502, 도 5)을 시작한다. 라인 46-50은 애니메이션을 제어한다. MediaCue(라인 18)는 TimeBase 시작 2초 후에 또는 그 애니메이션 내로의 IntervalCue가 1.5초일 때 시작됨으로써, 영화를 시작한다.
라인 51-62는 표면 상에 영화의 제1 프레임(504, 도 5)을 로드한다. 이 문자열이 거꾸로 재생될 때, 먼저 영화가 반대로 재생된다. 그 다음, 0.5초 후에 화상이 나타나고, 화상이 나타난 0.5초 후에 애니메이션이 시작된다. 애니메이션은 정지시 및 화상이 사라지고 나서 0.5초 후에, 2.5초동안 반대로 재생된다. 이 예는 서로로부터 또는 TimeBase로부터 오프셋될 Cue의 능력을 보여주고, 마지막 Cue가 종료되기 전에 후속 Cue가 시작될 수 있다는 것을 보여준다.
한 실시예에서, MediaCue는 작성자에게 동기화 툴을 제공한다. MediaCue는 TimeBase와 유사하게 동작하는 Cue의 형태이다. 실제로, 몇몇 경우에, MediaCue는 상기 예에서 나타낸 바와 같이 TimeBase가 가능한 곳에서 사용될 수 있다. 그러나, MediaCue가 이벤트의 시한 시퀀스 내에 삽입되기 때문에, 구현은 단정에 관한 사전-로딩을 요청하기에 충분한 정보를 갖는다.
도 6은 사전로딩 함수를 이용하는 도 1의 매체 시퀀스의 동기화를 도시한 것이다. 예를 들어, 상기 예에서, 영화가 사전 로드하여 즉시 재생하는데 0.5초 걸린다는 것을 구현물이 알고 있으면, TimeBase의 시작후 1.5초 기다린(블록(610)) 후에, 블록(615)에서, "준비(get ready)" 신호가 MovieSurface로 보내진다. 준비 신호의 수신시에, 블록(620)에서, 영화가 사전 로드된다. 이것은 사전 로드하는데 요청된 0.5초를 제공할 수 있다.
블록(625)에서, 시작 요청이 수신되고, 시작 요청의 수신시에, 블록(630)은 즉시 영화를 시작한다.
시스템(411)에서 허용된 TimeBase와 매체 순서화 능력의 결합은 복잡한 타이밍으로 프리젠테이션을 생성할 수 있게 한다. 도 7A는 시스템(411)의 다양한 컴포넌트의 시간 관계를 도시한 것이다. 뷰어는 새로운 프리젠테이션을 선택시(760), 그가 스토리를 선택할 수 있는 화면을 본다(762). 사용자가 5개의 스토리 S1, S2, S3, S4 및 S5의 선택으로부터 스토리 S3을 선택하면, 아나운서가 있는 웰컴(welcome) 화면이 표시된다(764). 웰컴 화면 상에서, 뷰어는 다른 스토리로의 전환을 선택함으로써(774) 스토리 S3을 중단할 수 있다. 웰컴 문장 후에, 화면은 스토리의 사이트로 이동하고(766), 선택된 스토리가 재생된다(768). 이때, 뷰어는 다음 스토리, 이전의 스토리로 가거나, 현재의 스토리를 되감기하거나, 스토리 S3의 확장 버전을 재생하는 것을 선택할 수 있고(770), 또는 예를 들어 다른 스토리 S5로 점프할 수 있다(772). 선택된 스토리가 재생된 후, 사용자는 다음 선택을 할 수 있다.
렌더링 생성 및 텍스처 소모와의 표면 모델과의 통합은 내포된 장면들이 선언식으로 렌더링될 수 있게 한다. 화상으로서 렌더링된 서브장면들(subscenes)의 재합성은 확장 가능(open-ended) 저작을 가능하게 한다. 특히, 다음에 큰 비디오 문맥으로 화상-혼합되는 동화 서브-장면의 사용은 오락 컴퓨터 그래픽을 위한 더욱 적절한 미학(aesthetic)을 가능하게 한다. 예를 들어, 화상 혼합 장치는 윈도윙 시스템의 이전 세대의 세련되지 못한 하드-에지드(hard-edged) 클리핑에 대한 대안을 비주얼 아티스트에게 제공한다.
도 7B는 시스템(411)의 다양한 컴포넌트의 시간 관계를 도시한 것이다. 도 7A와 유사하게, 뷰어는 새로운 프리젠테이션을 선택시(760), 그가 스토리를 선택할 수 있는 화면을 본다(762). 아나운서가 있는 웰컴 화면이 표시된다(764). 웰컴 화면 상에서, 뷰어는 다른 스토리로의 전환을 선택함으로써(774) 스토리 S3을 중단할 수 있다. 웰컴 문장 후에, 화면은 스토리의 사이트로 이동하고(766), 선택된 스토리가 재생된다(768). 이때, 뷰어는 다음 스토리, 이전의 스토리로 가거나, 현재의 스토리를 되감기하거나, 스토리 S3의 확장 버전을 재생하는 것을 선택할 수 있고(770), 또는 예를 들어 다른 스토리 S5로 점프할 수 있다(772). 선택된 스토리가 재생된 후, 사용자는 다음 선택을 할 수 있다.
그 밖에, TimeBase는 또한 발생할 현재의 액션을 중지시키는 "시간 정지" 기능을 허용한다. 현재의 액션을 중지시킴으로써, 시계는 일시적으로 정지된다. 한 실시예에서, 현재 액션의 중지는 디버깅 동작이 실행될 수 있게 한다. 다른 실시예에서, 현재 액션의 중지는 뷰어가 더 느린 속도로 현재의 액션을 경험할 수 있게 한다.
한 실시예에서, 정지 블록(779)은 새로운 프리젠테이션의 선택(760) 후와 스토리를 선택하기 위한 화면의 표시(762) 이전에 다양한 선택의 표시를 중지시키기 위해 이용된다. 다른 실시예에서, 정지 블록(789)은 선택이 이루어지기 전에 사용자의 선택의 표시를 중지시키기 위해 이용된다. 예를 들어, 정지 블록(789)은 웰컴 화면 상에 가능한 선택을 나타낼 수 있게 하고(764), 스토리의 선택(774) 또는 스토리의 선택(766)을 방지한다. 다른 실시예에서, 정지 블록(787)은 컨텐트를 위한 선택(772)이 선택된 후에 표시 컨텐트를 중지시키기 위해(772) 이용된다.
한 실시예에서, 정지 블록(779, 789 및 787)은 선정된 시간량 동안 액션을 중지시킨다. 다른 실시예에서, 정지 블록(779, 789 및 787)은 액션을 재개하기 위해 추가 입력이 수신될 때까지 액션을 중지시킨다.
도 8은 동화 서브-장면을 포함하는 내포형 장면을 도시한 것이다. 도 9는 도 7의 내포형 장면을 렌더링하기 위해 실행된 동작을 도시한 흐름도이다. 블록(910)은 화면 디스플레이(800) 상에 표시된 배경 화상을 렌더링하고, 블록(915)은 화면 디스플레이(800) 상에 표시된 배경 화상 내에 입방체(cube)(802)를 배치한다. 입방체(802) 밖의 영역은 디스플레이(800) 상의 큐브(802)의 배경을 형성하는 표면의 부분이다. 입방체(802)의 면(804)은 제3 표면으로서 정의된다. 블록(920)은 MovieSurface 노드를 사용하여 제2 표면 상에 영화를 렌더링한다. 그러므로, 입방체의 면(804)은 제3 표면 상에 렌더링되는 영화를 표시한다. 입방체(802)의 면(806)은 제4 표면으로서 정의된다. 블록(925)은 ImageSurface 노드를 사용하여 제4 표면 상에 화상을 렌더링한다. 그러므로, 입방체의 면(806)은 제4 표면 상에 렌더링되는 화상을 표시한다. 블록(930)에서, 전체 입방체(802)는 제5 표면으로서 정의되고, 블록(935)에서, 이 제5 표면은 평행 이동 및/또는 회전됨으로써, 면(804) 상에서 영화가 재생되고 면(806) 상에서 정적 화상이 표시되는 움직이는 입방체를 생성한다. 상이한 렌더링은 상술된 절차를 따름으로써 입방체(802)의 각 면 상에 표시될 수 있다. 블록(910 내지 935)은 동시에 모든 블록(910 내지 935)을 시작하는 것을 포함하여 임의의 순서로 행해질 수 있다.
도 10은 원격 플랫폼을 위한 선언 컨텐트를 저작하는 시스템(1000)이 구현되는 예시적인 아키텍처를 도시한 예시적인 블록도를 도시한 것이다. 한 실시예에서, 시스템(1000)은 저작 장치(1010), 타겟 장치(1020), 인터페이스 장치(1030) 및 네트워크(1040)를 포함한다. 한 실시예에서, 네트워크(1040)는 저작 장치(1010), 타겟 장치(1020) 및 인터페이스 장치(1030)가 서로 통신할 수 있게 한다.
한 실시예에서, 저작 장치(1010)는 상기 코드 부분에 의해 나타낸 바와 같은 선언형 언어를 통해 저작 컨텐트를 사용자가 작성할 수 있게 하는 저작 애플리케이션을 포함한다. 한 실시예에서, (Apache 및 Zope와 같은) 파일 서버는 저작 장치(1010) 상에서 실행되고, 로컬 파일 시스템을 지원한다.
한 실시예에서, 타겟 장치(1020)는 저작 장치(1010)와 통신하고, 저작 장치(1010) 상에서 스크립트되는 저작 컨텐트를 수신한다.
한 실시예에서, 인터페이스 장치(1030)는 원격 장치(1020)를 통해 저작 컨텐트를 재생한다. 인터페이스 장치(1030)는 시각적 표시 화면 및/또는 오디오 스피 커를 포함할 수 있다.
한 실시예에서, 네트워크(1040)는 인터넷이다. 한 실시예에서, 저작 장치(1010)와 원격 장치(1020) 사이의 통신은 TCP/IP 소켓을 통해 달성된다. 한 실시예에서, 저작 컨텐트는 저작 장치(1010)로부터 TCP/IP를 통해 원격 장치(1020)에 의해 요청되고, HTTP를 통해 타겟에 제공된다.
도 11에 도시된 흐름도는 원격 플랫폼을 위한 선언 컨텐트를 저작하는 방법 및 장치의 한 실시예이다. 흐름도 내의 블록은 이벤트 참가자에게 메시지를 게시하여 알리는 방법 및 장치의 정신을 벗어나지 않고서 상이한 순서로 실행될 수 있다. 더구나, 블록은 원격 플랫폼을 위한 선언 컨텐트를 저작하는 방법 및 장치의 정신을 벗어나지 않고서 삭제, 추가 또는 결합될 수 있다. 또한, 블록은 다른 블록과 동시에 실행될 수 있다.
도 11의 흐름도는 본 발명의 한 실시예에 따른 원격 플랫폼을 위한 선언 컨텐트의 저작을 도시한 것이다.
블록(1110)에서, 저작 컨텐트는 저작 장치 상에서 변경되거나 작성된다. 한 실시예에서, 저작 장치는 Windows®, Unix®, Mac OS® 등과 같은 운영 체계를 이용하는 개인용 컴퓨터이다. 한 실시예에서, 저작 장치는 저작 컨텐트를 작성하기 위해 선언형 언어를 이용한다. 한가지 그러한 선언형 언어는 명세서의 앞부분에서 나타낸 코드 부분이 예시된다. 더구나, 저작 장치 상에서 작성되는 저작 컨텐트는 게이밍 콘솔, 셀룰러 전화, 개인 휴대 정보 단말기, 셋탑 박스 등과 같은 원격 장치 상에서 사용하기 위해 특별히 개발된다.
한 예에서, 저작 컨텐트는 원격 장치 상에서 시각적 화상을 표시하도록 구성된다. 다른 예에서, 저작 컨텐트는 원격 장치 상에서 오디오 신호를 재생하도록 구성된다. 또 다른 예에서, 저작 컨텐트는 시각적 화상과 오디오 신호를 동시에 재생하도록 구성된다.
블록(1120)에서, 원격 장치가 검출된다. 한 실시예에서, 특정 TCP/IP 소켓(들)과 같은 원격 장치의 통신 파라미터가 검출된다.
블록(1130)에서, 저작 장치는 원격 장치와 통신한다. 한 실시예에서, 저작 장치는 케이블과 같은 직접적인 유선 접속을 통해 원격 장치와 직접 통신한다. 다른 실시예에서, 저작 장치는 인터넷, 무선 네트워크 등과 같은 네트워크를 통해 원격 장치와 통신한다.
블록(1140)에서, 저작 컨텐트는 저작 장치에서 원격 장치로 전송된다. 한 실시예에서, 저작 컨텐트는 데이터 스트림으로서 원격 장치에 전송된다.
블록(1150)에서, 저작 컨텐트는 원격 장치를 통해 이용된다. 한 실시예에서, 원격 장치는 원격 장치를 이용하여 저작 컨텐트를 시각적으로 표시한다. 다른 실시예에서, 원격 장치는 저작 컨텐트의 오디오 신호를 재생한다. 한 실시예에서, 저작 컨텐트는 인터페이스 장치(1030) 상에서 이용된다. 한 실시예에서, 원격 장치는 저작 컨텐트가 원격 장치로 스트림될 때 저작 컨텐트의 이용을 시작한다. 다른 실시예에서, 원격 장치는 저작 컨텐트가 원격 장치로 전송된 후에 저작 컨텐트를 이용한다.
한 실시예에서, 저작 컨텐트의 일부는 블록(1140)에서 나머지 저작 컨텐트가 원격 장치로 전송되고 있는 것과 동시에 원격 장치 상에서 이용된다.
블록(1160)에서, 저작 장치는 저작 컨텐트가 원격 장치에 의해 이용될 때 저작 컨텐트를 모니터한다. 예를 들어, 저작 장치는 원격 장치 상에 표시된 저작 컨텐트와 대응하는 저작 컨텐트의 특정 부분을 추적한다. 다른 예에서, 저작 장치는 블록(1140)에서 저작 컨텐트의 일부가 원격 장치로 여전히 전송되고 있는 것과 동시에 원격 장치에 의해 이용된 저작 컨텐트를 모니터한다.
블록(1170)에서, 저작 장치는 원격 장치 상에서의 저작 컨텐트의 재생을 제어한다. 예를 들어, 저작 장치는 저작 장치로부터 원격으로 하는 원격 장치 상에서의 저작 컨텐트의 재생을 일시중지, 되감기, 앞으로 감기 및 시작할 수 있다.
블록(1180)에서, 저작 장치는 저작 컨텐트를 디버깅한다. 한 실시예에서, 저작 장치는 원격 장치 상에서 저작 컨텐트의 재생을 경험하면서 저작 장치 상에서 저작 컨텐트의 스크립팅을 봄으로써 저작 컨텐트를 디버깅한다. 다른 실시예에서, 저작 장치는 저작 장치 상에서 저작 컨텐트의 대응하는 스크립팅을 디버깅하면서 원격 장치 상에서의 저작 컨텐트의 재생을 일시 중지한다. 예를 들어, 저작 컨텐트가 원격 장치 상에서 일시 중지되는 동안, 대응하는 저작 컨텐트는 모니터되어, 변경 및/또는 디버깅되도록 저작 장치 상에서 이용가능하다.
본 발명의 특정 실시예의 상기 설명은 예시와 설명을 위해 제공되었다. 본 발명은 다른 여러 애플리케이션에 적용될 수 있다.
본 발명을 총망라하고자 한다거나, 개시된 정밀한 실시예에 제한하고자 하는 것은 아니고, 당연히 많은 변경 및 변형이 상기 교시에 비추어보아 가능하다. 실시예들은 본 발명의 원리 및 그것의 실제 응용을 설명하기 위해 선택되고 설명되었으며, 이에 따라 본 분야에 숙련된 다른 기술자들이 고려된 특정 용도에 적합한 다양한 변경을 갖는 다양한 실시예와 본 발명을 최상으로 이용할 수 있게 한다. 본 발명의 범위는 여기에 첨부된 청구범위 및 그 등가물에 의해 정해진다.
Claims (37)
- 저작 컨텐트(authored content)를 저작 장치(authoring device)에서 원격 장치로 전송하는 단계;상기 원격 장치 상에서 상기 저작 컨텐트를 직접 재생하는 단계; 및상기 원격 장치 상에서 상기 저작 컨텐트의 일부를 재생함과 동시에 상기 저작 장치 상에서 상기 저작 컨텐트의 일부를 모니터하는 단계를 포함하고, 상기 저작 컨텐트는 선언형 마크업 언어(declarative markup language)로 스크립트(script)되는 방법.
- 제1항에 있어서, 상기 원격 장치 상에서 상기 저작 컨텐트의 일부를 재생함과 동시에 상기 저작 장치 상에서 상기 저작 컨텐트의 일부를 변경하는 단계를 더 포함하는 방법.
- 제1항에 있어서, 상기 직접 재생하는 단계는 상기 저작 컨텐트에 대응하는 다수의 화상들을 표시하는 단계를 더 포함하는 방법.
- 제1항에 있어서, 상기 직접 재생하는 단계는 상기 저작 컨텐트에 대응하는 오디오 신호를 재생하는 단계를 더 포함하는 방법.
- 제1항에 있어서, 상기 저작 장치 상에서 상기 저작 컨텐트를 작성하는 단계를 더 포함하는 방법.
- 제5항에 있어서, 상기 저작 컨텐트를 작성하는 단계는 상기 저작 컨텐트를 작성하기 위해 상기 저작 장치 상에 상주하는 툴(tool)을 이용하는 단계를 더 포함하는 방법.
- 제6항에 있어서, 상기 툴은 명세서에 예시되어 있는 것인 방법.
- 제1항에 있어서, 상기 원격 장치 상에서 상기 저작 컨텐트의 일부를 재생함과 동시에 상기 저작 장치 상에서 상기 저작 컨텐트의 일부를 디버깅(debugging)하는 단계를 더 포함하는 방법.
- 제1항에 있어서, 상기 저작 장치로부터 상기 원격 장치 상의 저작 컨텐트를 제어하는 단계를 더 포함하는 방법.
- 제9항에 있어서, 상기 저작 컨텐트를 제어하는 단계는 상기 원격 장치 상에서 상기 저작 컨텐트의 재생을 시작하는 단계를 더 포함하는 방법.
- 제9항에 있어서, 상기 저작 컨텐트를 제어하는 단계는 상기 원격 장치 상에 서 상기 저작 컨텐트의 재생을 일시중지하는(pausing) 단계를 더 포함하는 방법.
- 제9항에 있어서, 상기 저작 컨텐트를 제어하는 단계는 상기 원격 장치 상에서 상기 저작 컨텐트의 재생 위치를 빠르게 감는(fast forwarding) 단계를 더 포함하는 방법.
- 제9항에 있어서, 상기 저작 컨텐트를 제어하는 단계는 상기 원격 장치 상에서 상기 저작 컨텐트의 재생 위치를 되감는(rewinding) 단계를 더 포함하는 방법.
- 제1항에 있어서, 상기 원격 장치는 게이밍 콘솔, 셀룰러 전화, 개인 휴대 정보 단말기(PDA), 셋탑 박스 및 페이저 중의 하나인 방법.
- 제1항에 있어서, 상기 저작 장치는 개인용 컴퓨터인 방법.
- 저작 컨텐트를 저작 장치에서 원격 장치로 전송하는 수단;상기 원격 장치 상에서 상기 저작 컨텐트를 직접 재생하는 수단; 및상기 원격 장치 상에서 상기 저작 컨텐트의 일부를 재생함과 동시에 상기 저작 장치 상에서 상기 저작 컨텐트의 일부를 모니터하는 수단을 포함하고, 상기 저작 컨텐트는 선언형 마크업 언어로 스크립트되는 시스템.
- 저작 장치 상에서 저작 컨텐트를 변경하는 단계 - 상기 저작 컨텐트는 선언형 마크업 언어로 스크립트됨-;상기 저작 컨텐트를 상기 저작 장치에서 원격 장치로 전송하는 단계; 및상기 저작 컨텐트를 상기 저작 장치에서 상기 원격 장치로 전송함과 동시에 상기 원격 장치 상에서 상기 저작 컨텐트의 일부를 재생하는 단계를 포함하는 방법.
- 제17항에 있어서, 상기 원격 장치 상에서 상기 저작 컨텐트의 일부를 재생함과 동시에 상기 저작 장치 상에서 상기 저작 컨텐트의 일부를 모니터하는 단계를 더 포함하는 방법.
- 제17항에 있어서, 상기 원격 장치 상에서 상기 저작 컨텐트의 일부를 재생함과 동시에 상기 저작 장치 상에서 상기 저작 컨텐트의 일부를 디버깅하는 단계를 더 포함하는 방법.
- 제17항에 있어서, 상기 재생하는 단계는 상기 저작 컨텐트에 대응하는 다수의 화상들을 표시하는 단계를 더 포함하는 방법.
- 제17항에 있어서, 상기 직접 재생하는 단계는 상기 저작 컨텐트에 대응하는 오디오 신호를 재생하는 단계를 더 포함하는 방법.
- 제1항에 있어서, 상기 저작 장치 상에서 상기 저작 컨텐트를 작성하는 단계를 더 포함하는 방법.
- 제22항에 있어서, 상기 저작 컨텐트를 작성하는 단계는 상기 저작 컨텐트를 작성하기 위해 상기 저작 장치 상에 상주하는 툴을 이용하는 단계를 더 포함하는 방법.
- 제23항에 있어서, 상기 툴은 명세서에 예시되어 있는 것인 방법.
- 제17항에 있어서, 상기 저작 장치로부터 상기 원격 장치 상의 저작 컨텐트를 제어하는 단계를 더 포함하는 방법.
- 제25항에 있어서, 상기 저작 컨텐트를 제어하는 단계는 상기 원격 장치 상에서 상기 저작 컨텐트의 재생을 시작하는 단계를 더 포함하는 방법.
- 제25항에 있어서, 상기 저작 컨텐트를 제어하는 단계는 상기 원격 장치 상에서 상기 저작 컨텐트의 재생을 일시중지하는 단계를 더 포함하는 방법.
- 제25항에 있어서, 상기 저작 컨텐트를 제어하는 단계는 상기 원격 장치 상에서 상기 저작 컨텐트의 재생 위치를 빠르게 감는 단계를 더 포함하는 방법.
- 제25항에 있어서, 상기 저작 컨텐트를 제어하는 단계는 상기 원격 장치 상에서 상기 저작 컨텐트의 재생 위치를 되감는 단계를 더 포함하는 방법.
- 제17항에 있어서, 상기 원격 장치는 게이밍 콘솔, 셀룰러 전화, 개인 휴대 정보 단말기(PDA), 셋탑 박스 및 페이저 중의 하나인 방법.
- 제17항에 있어서, 상기 저작 장치는 개인용 컴퓨터인 방법.
- 저작 컨텐트를 변경하기 위한 저작 장치 - 상기 저작 컨텐트는 선언형 마크업 언어로 스크립트됨-;상기 저작 컨텐트를 재생하도록 구성된 원격 장치; 및상기 저작 컨텐트를 상기 저작 장치에서 상기 원격 장치로 스트림하도록 구성된 네트워크를 포함하고, 상기 저작 컨텐트의 처음 부분이 상기 원격 장치에 의해 이용되는 것과 동시에 상기 저작 컨텐트의 나머지 부분이 상기 원격 장치로 스트림되는 시스템.
- 제32항에 있어서, 상기 원격 장치에 의해 수신된 상기 저작 컨텐트를 버퍼링하기 위해 상기 원격 장치 내에 저장 모듈을 더 포함하는 시스템.
- 제32항에 있어서, 상기 원격 장치는 게이밍 콘솔, 셀룰러 전화, 개인 휴대 정보 단말기(PDA), 셋탑 박스 및 페이저 중의 하나인 시스템.
- 제32항에 있어서, 상기 저작 장치는 개인용 컴퓨터인 시스템.
- 제32항에 있어서, 상기 네트워크는 인터넷인 시스템.
- 방법을 실행하기 위한 컴퓨터 실행가능 명령어들을 갖고 있는 컴퓨터 판독가능 매체에 있어서,상기 방법은,저작 장치 상에서 저작 컨텐트를 변경하는 단계 - 상기 저작 컨텐트는 선언형 마크업 언어로 스크립트됨-;상기 저작 컨텐트를 상기 저작 장치에서 원격 장치로 전송하는 단계; 및상기 저작 컨텐트를 상기 저작 장치에서 상기 원격 장치로 전송함과 동시에 상기 원격 장치 상에서 상기 저작 컨텐트의 일부를 재생하는 단계를 포함하는 컴퓨터 판독가능 매체.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/938,106 US20050035970A1 (en) | 1999-08-03 | 2004-09-09 | Methods and apparatuses for authoring declarative content for a remote platform |
US10/938,106 | 2004-09-09 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20070101844A true KR20070101844A (ko) | 2007-10-17 |
Family
ID=36060495
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020077007912A KR20070101844A (ko) | 2004-09-09 | 2005-08-19 | 원격 플랫폼을 위한 선언 컨텐트를 저작하는 방법 및 장치 |
Country Status (6)
Country | Link |
---|---|
US (1) | US20050035970A1 (ko) |
EP (1) | EP1800266A4 (ko) |
JP (1) | JP2008518286A (ko) |
KR (1) | KR20070101844A (ko) |
CN (1) | CN101095130B (ko) |
WO (1) | WO2006031381A2 (ko) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7681114B2 (en) * | 2003-11-21 | 2010-03-16 | Bridgeborn, Llc | Method of authoring, deploying and using interactive, data-driven two or more dimensional content |
WO2007015047A2 (en) * | 2005-08-04 | 2007-02-08 | Nds Limited | Advanced digital tv system |
US8117541B2 (en) | 2007-03-06 | 2012-02-14 | Wildtangent, Inc. | Rendering of two-dimensional markup messages |
WO2008115196A1 (en) | 2007-03-15 | 2008-09-25 | Thomson Licensing | Method and system for accessibility and control of parameters in scenegraphs |
US20090079744A1 (en) * | 2007-09-21 | 2009-03-26 | Microsoft Corporation | Animating objects using a declarative animation scheme |
JP5667573B2 (ja) * | 2010-06-08 | 2015-02-12 | パナソニック インテレクチュアル プロパティ コーポレーション オブアメリカPanasonic Intellectual Property Corporation of America | コンテンツ管理サーバ及びコンテンツ管理方法 |
US8634695B2 (en) * | 2010-10-27 | 2014-01-21 | Microsoft Corporation | Shared surface hardware-sensitive composited video |
WO2013126868A1 (en) * | 2012-02-23 | 2013-08-29 | Jadhav Ajay | Persistent node framework |
US9952953B2 (en) | 2015-11-02 | 2018-04-24 | Microsoft Technology Licensing Llc | Non-monotonic eventual convergence for desired state configuration |
US12100112B2 (en) | 2018-08-10 | 2024-09-24 | Nvidia Corporation | Cloud-centric platform for collaboration and connectivity on 3D virtual environments |
US20220134222A1 (en) * | 2020-11-03 | 2022-05-05 | Nvidia Corporation | Delta propagation in cloud-centric platforms for collaboration and connectivity |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5764241A (en) * | 1995-11-30 | 1998-06-09 | Microsoft Corporation | Method and system for modeling and presenting integrated media with a declarative modeling language for representing reactive behavior |
US20030093790A1 (en) * | 2000-03-28 | 2003-05-15 | Logan James D. | Audio and video program recording, editing and playback systems using metadata |
US6359619B1 (en) * | 1999-06-18 | 2002-03-19 | Mitsubishi Electric Research Laboratories, Inc | Method and apparatus for multi-phase rendering |
EP1067458A1 (en) * | 1999-07-09 | 2001-01-10 | CANAL+ Société Anonyme | Running and testing applications |
US6084393A (en) * | 1999-10-15 | 2000-07-04 | U.S. Army Corps Of Engineers As Represented By The Secretary Of The Army | Scour probe assembly |
US6567091B2 (en) * | 2000-02-01 | 2003-05-20 | Interactive Silicon, Inc. | Video controller system with object display lists |
US7107462B2 (en) * | 2000-06-16 | 2006-09-12 | Irdeto Access B.V. | Method and system to store and distribute encryption keys |
US6791574B2 (en) * | 2000-08-29 | 2004-09-14 | Sony Electronics Inc. | Method and apparatus for optimized distortion correction for add-on graphics for real time video |
JP2002073367A (ja) * | 2000-09-05 | 2002-03-12 | Hudson Soft Co Ltd | 光ディスクエミュレーション装置 |
JP4670136B2 (ja) * | 2000-10-11 | 2011-04-13 | ソニー株式会社 | オーサリング・システム及びオーサリング方法、並びに記憶媒体 |
EP1346294A2 (en) * | 2000-12-18 | 2003-09-24 | Kargo, Inc. | A system and method for delivering content to mobile devices |
US20020078103A1 (en) * | 2000-12-20 | 2002-06-20 | Gorman William Phillip | Wizard development kit |
JP2002268999A (ja) * | 2001-03-09 | 2002-09-20 | Toshiba Corp | コンテンツ再生方法及び装置 |
EP1241857A1 (en) * | 2001-03-15 | 2002-09-18 | Nokia Corporation | Method for accessing files stored in a mobile terminal device supporting an internet protocol |
US20030088511A1 (en) * | 2001-07-05 | 2003-05-08 | Karboulonis Peter Panagiotis | Method and system for access and usage management of a server/client application by a wireless communications appliance |
US7400729B2 (en) * | 2001-12-28 | 2008-07-15 | Intel Corporation | Secure delivery of encrypted digital content |
JP2004234497A (ja) * | 2003-01-31 | 2004-08-19 | Canon Inc | リモートデバッグ装置 |
AU2004258523B2 (en) * | 2003-07-07 | 2009-12-10 | Irdeto B.V. | Reprogrammable security for controlling piracy and enabling interactive content |
US20060015580A1 (en) * | 2004-07-01 | 2006-01-19 | Home Box Office, A Delaware Corporation | Multimedia content distribution |
-
2004
- 2004-09-09 US US10/938,106 patent/US20050035970A1/en not_active Abandoned
-
2005
- 2005-08-19 EP EP05788777A patent/EP1800266A4/en not_active Withdrawn
- 2005-08-19 CN CN2005800379248A patent/CN101095130B/zh not_active Expired - Fee Related
- 2005-08-19 JP JP2007531186A patent/JP2008518286A/ja active Pending
- 2005-08-19 WO PCT/US2005/029744 patent/WO2006031381A2/en active Application Filing
- 2005-08-19 KR KR1020077007912A patent/KR20070101844A/ko not_active Application Discontinuation
Also Published As
Publication number | Publication date |
---|---|
CN101095130A (zh) | 2007-12-26 |
EP1800266A2 (en) | 2007-06-27 |
US20050035970A1 (en) | 2005-02-17 |
WO2006031381A2 (en) | 2006-03-23 |
WO2006031381A3 (en) | 2007-07-19 |
CN101095130B (zh) | 2010-12-29 |
JP2008518286A (ja) | 2008-05-29 |
EP1800266A4 (en) | 2012-06-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR20070101844A (ko) | 원격 플랫폼을 위한 선언 컨텐트를 저작하는 방법 및 장치 | |
US9616338B1 (en) | Virtual reality session capture and replay systems and methods | |
US7336280B2 (en) | Coordinating animations and media in computer display output | |
KR101365829B1 (ko) | 대화형 멀티미디어 프리젠테이션을 재생하는 방법을 수행하는 컴퓨터 실행가능 명령어들이 인코딩된 컴퓨터 판독가능 매체, 및 대화형 멀티미디어 프리젠테이션을 재생하는 프리젠테이션 시스템 및 장치 | |
US6707456B1 (en) | Declarative markup for scoring multiple time-based assets and events within a scene composition system | |
US20140229819A1 (en) | Declaratively responding to state changes in an interactive multimedia environment | |
US11169824B2 (en) | Virtual reality replay shadow clients systems and methods | |
WO2007005268A2 (en) | Synchronization aspects of interactive multimedia presentation management | |
EP1899970A2 (en) | Synchronization aspects of interactive multimedia presentation management | |
WO2008100928A1 (en) | Methods and apparatus for processing edits to online video | |
US9761056B1 (en) | Transitioning from a virtual reality application to an application install | |
US9582506B2 (en) | Conversion of declarative statements into a rich interactive narrative | |
US7532217B2 (en) | Methods and systems for scoring multiple time-based assets and events | |
US20050128220A1 (en) | Methods and apparatuses for adjusting a frame rate when displaying continuous time-based content | |
US20050021552A1 (en) | Video playback image processing | |
JP4260747B2 (ja) | 動画像構成方法及びシーン構成方法 | |
Tran et al. | Exploring MPEG-4 BIFS features for creating multimedia games | |
US20240331735A1 (en) | Data processing apparatus, data processing method, and program | |
JP2006505049A (ja) | メディアシーケンスの構成方法及びメディア表示方法 | |
EP1899969A2 (en) | Synchronization aspects of interactive multimedia presentation management | |
WO2004042552A1 (en) | Declarative markup for scoring multiple time-based assets and events within a scene composition system | |
Ranaweera et al. | Event script interpreter for synchronized “roller-cam” graphical display and rotary motion platform |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E601 | Decision to refuse application | ||
J201 | Request for trial against refusal decision | ||
J301 | Trial decision |
Free format text: TRIAL DECISION FOR APPEAL AGAINST DECISION TO DECLINE REFUSAL REQUESTED 20121002 Effective date: 20140226 |