KR101075378B1 - 애니메이션 렌더링 시스템 및 애니메이션 애플리케이션을처리하기 위한 방법 - Google Patents

애니메이션 렌더링 시스템 및 애니메이션 애플리케이션을처리하기 위한 방법 Download PDF

Info

Publication number
KR101075378B1
KR101075378B1 KR1020067004497A KR20067004497A KR101075378B1 KR 101075378 B1 KR101075378 B1 KR 101075378B1 KR 1020067004497 A KR1020067004497 A KR 1020067004497A KR 20067004497 A KR20067004497 A KR 20067004497A KR 101075378 B1 KR101075378 B1 KR 101075378B1
Authority
KR
South Korea
Prior art keywords
animation
subsystem
high level
low level
clock
Prior art date
Application number
KR1020067004497A
Other languages
English (en)
Other versions
KR20060126919A (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 KR20060126919A publication Critical patent/KR20060126919A/ko
Application granted granted Critical
Publication of KR101075378B1 publication Critical patent/KR101075378B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T13/00Animation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/545Interprogram communication where tasks reside in different layers, e.g. user- and kernel-space

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Processing Or Creating Images (AREA)
  • Communication Control (AREA)
  • Image Processing (AREA)
  • Image Generation (AREA)
  • Computer And Data Communications (AREA)

Abstract

고레벨 애니메이션 시스템과 저레벨 애니메이션 시스템 간의 비동기적 데이터 교환을 관리하는 통신 프로토콜이 설명된다. 고레벨 애니메이션 시스템은 변경가능한 중간 주파수 프레임 속도를 가지며, 상호작용을 위해 최적화된다. 저레벨 애니메이션 시스템은 일정한 고주파수 프레임 속도를 가지며, 높은 리프레시 프레임 속도를 위해 최적화된다. 통신 프로토콜은 애니메이션, 및 애니메이션이 특정 기간에 걸쳐 어떻게 변해야할지를 지정하기 위해, 고레벨 애니메이션 시스템에 의해 저레벨 애니메이션 시스템으로 송신될 수 있는 메시지를 포함한다. 그 결과, 저레벨 시스템은 매 프레임마다 애니메이션 데이터가 고레벨 시스템으로부터 수신되지 않더라도 높은 리프레시 속도로 애니메이션을 디스플레이할 수 있다.
통신 프로토콜, 고레벨 애니메이션 시스템, 저레벨 애니메이션 시스템, 프레임, 리프레시 속도

Description

애니메이션 렌더링 시스템 및 애니메이션 애플리케이션을 처리하기 위한 방법{COMMUNICATION PROTOCOL FOR SYNCHRONIZING ANIMATION SYSTEMS}
본원에 설명된 시스템 및 방법은 일반적으로 애니메이션 시스템에 관한 것이며, 보다 구체적으로 복수의 애니메이션 시스템들 간에 데이터 및 클럭 동기화를 유지하기 위한 통신 프로토콜에 관한 것이다.
비디오 게임, 네트워크 웹 사이트, 멀티미디어 프리젠테이션(multimedia presentation)에 관련되든지 아니든지에 상관없이, 최근 그래픽 품질에 대한 사용자 기대는 상당히 증가했다. 그 결과, 이 높은 수준의 기대는 비디오/애니메이션 시스템 및 애플리케이션 개발자들에게 늘 증가하는 도전과제를 준다.
상호작용적 애니메이션 애플리케이션은, 두 개의 애니메이션 시스템(예를 들어, 로컬 또는 원격 메모리 내에 저장된 애플리케이션, 및 디스플레이 장치 시스템)들이 고품질 사용자 경험을 제공하기 위해 서로 통신해야 하기 때문에, 특별한 고려사항을 제시한다. 한 애니메이션 시스템(즉, 디스플레이 장치 시스템)은 주로 리프레시 속도와 같은 렌더링(rendering) 양태에 관련되는 반면 다른 애니메이션 시스템(즉, 메모리에 저장된 애플리케이션)은 주로 사용자 상호작용에 관련되기 때문에, 문제점이 존재한다. 이러한 경쟁적인 이해관계는 원하는 사용자 경험을 제 공하기 위해 조정되어야 한다.
두 개의 별개의 애니메이션 시스템을 포함하는 시스템 및 방법이 설명된다. 고레벨 애니메이션 시스템(예를 들어, 애플리케이션)은 주로 상호작용 및 복잡한 타이밍 구조에 관련되며, 따라서 높은 상호작용에 대해서 최적화된다. 저레벨 애니메이션 시스템(예를 들어, 디스플레이 장치)은 주로 렌더링 리프레시(refresh) 속도에 관련되며, 따라서 높은 리프레시 프레임 속도에 대해서 최적화된다. 복수의 별개의 애니메이션 시스템들의 제공은 애니메이션이, 상호작용을 불리하게 하지 않으면서 미리 정의된 디스플레이 리프레시 속도로 동작하도록 허용하고, 그 역도 허용한다.
두 개의 애니메이션 시스템은 비동기적으로 동작하므로, 이에 따라 각각의 시스템은 자기 자신의 타이밍 구조 내에서 자신의 주요 기능에 더 잘 주의를 기울일 수 있다. 사용자 경험을 최적화하기 위해, 두 개의 애니메이션 시스템은 동기화되어야 한다. 본원에 설명되는 동기화 프로세스에서, 고레벨 애니메이션 시스템과 저레벨 애니메이션 시스템은 이 목적을 위해 특별히 설계된 통신 프로토콜을 이용하여 데이터(예를 들어, 클럭 데이터, 애니메이션 함수 데이터 등)를 교환한다.
본원에 도입된 통신 프로토콜은 요청된 데이터를 교환하기 위한 효율적인 방식을 제공한다. 이 통신 프로토콜은 각각의 프레임마다 대용량의 데이터를 송신하는 대신. 애니메이션이 특정 기간에 걸쳐 어떻게 변할지 기대되는지에 대한 단지 소량의 데이터만을 송신하는 것을 제공한다. 시스템 오버헤드를 줄이는 것 이외에, 프로토콜은 저레벨 애니메이션 시스템이 몇몇 애니메이션 프레임들을 처리하기 위한 정보를 가짐으로써, 리프레시 데이터의 부족에 의해 렌더링 프레임이 드롭(drop)되지 않음을 보증한다.
본 발명의 예시적인 방법 및 배치는 첨부된 도면에 관련하여 취해진 다음의 상세한 설명을 참조함으로써 보다 완벽하게 이해될 수 있다:
도 1은 애니메이션 서브시스템을 포함하는 서버-클라이언트 시스템의 블럭도.
도 2는 예시적인 애니메이션 렌더링 시스템 아키텍처의 블럭도.
도 3은 분해된 애니메이션/렌더링 시스템의 기초 동작의 방법론적 구현을 나타내는 흐름도.
도 4a는 고레벨 애니메이션 시스템을 저레벨 애니메이션 시스템과 동기화시키기 위해 고레벨 타이밍 엔진(high level timing engine)으로부터 저레벨 타이밍 엔진으로 전송되는 통신 프로토콜 메시지 및 매개변수의 도면.
도 4b는 고레벨 애니메이션 시스템을 저레벨 애니메이션 시스템과 동기화시키기 위해 저레벨 타이밍 엔진으로부터 고레벨 타이밍 엔진으로 전송되는 통신 프로토콜 메시지 및 매개변수들의 도면.
도 4c는 고레벨 애니메이션 시스템을 저레벨 애니메이션 시스템과 동기화시키기 위해 고레벨 애니메이션 객체로부터 저레벨 애니메이션 객체로 전송되는 통신 프로토콜 메시지 및 매개변수의 도면.
도 5는 전체적으로 관련된 고레벨 애니메이션 시스템 및 저레벨 애니메이션 시스템을 갖는 렌더링 시스템 내의 애니메이션 프로세스의 예시적인 방법론적 구현을 나타내는 흐름도.
도 6은 부분적으로 관련된 고레벨 애니메이션 시스템 및 저레벨 애니메이션 시스템을 갖는 렌더링 시스템 내의 애니메이션 프로세스의 예시적인 방법론적 구현을 나타내는 흐름도.
도 7은 본원에 설명된 시스템 및 방법에 따른 예시적인 컴퓨팅 환경을 나타내는 도면.
다음의 설명은 일반적으로 애니메이션의 생성 및 렌더링에 이용되는 전송을 관리하는 통신 프로토콜을 이용하여 애니메이션을 생성 및 렌더링하는 (즉, 시간이 지남에 따라 그래픽 객체를 수정하는 기능) 컴퓨터 시스템에 대해 다룬다. 그래픽 객체는 창, 대화 상자 등을 포함할 수 있다. 본원에 이용된 바와 같이, "컴퓨터 시스템"이란 용어는 단일 컴퓨터 또는 함께 동작하는 복수의 컴퓨터들을 의미할 수 있다. 컴퓨터 시스템은 각각이 특정한 애니메이션 또는 렌더링 기능에 주의를 기울이는 복수의 별개의 애니메이션/렌더링 시스템(또는 서브시스템)을 포함한다.
후술된 바와 같이, 통신 프로토콜은 두 개의 애니메이션 시스템 또는 서브시스템의 관점에서 설명된다. 그러나, 이들은 단지 예일 뿐이며, 통신 프로토콜은 세 개 이상의 별개의 애니메이션 시스템 또는 서브시스템에서 이용될 수도 있다는 것이 주의된다.
"렌더링"이란 용어는 본원에 도입된 통신 프로토콜을 설명하는 데 이용된다. "렌더링"은 디스플레이할 애니메이션을 정의하고/하거나 그 애니메이션을 디스플레이하는 애니메이션 프로세스 내의 단계로서 보여질 수 있다. "렌더링 시스템"은 렌더링 기능을 포함하는 시스템일 수 있다. 이것은 단지 렌더링 기능만을 수행하는 시스템을 설명하기 위해 협의적으로 정의하거나, 하나 이상의 렌더링 기능 이외의 다른 기능들도 수행하는 애니메이션 시스템과 같은 시스템을 설명하기 위해 광의적으로 정의될 수 있다.
마찬가지로, 본원에 이용된 "애니메이션 시스템"이란 용어는 애니메이션 기능을 포함하는 시스템을 의미한다. "애니메이션 시스템"은 오직 애니메이션 기능만을 수행하는 시스템이거나, 렌더링 기능과 같은 다른 기능 이외의 하나 이상의 애니메이션 기능들도 수행하는 시스템일 수 있다.
"렌더링 시스템" 또는 "애니메이션 시스템"이란 특별한 용어의 이용은 본원에 관련된 아키텍처 및/또는 기능의 범위를 제한하기 위한 것은 아니다. 이용된 용어의 적절한 범위는 그 용어가 이용된 문맥에서부터 유도될 수 있다.
모든 특징이 갖춰진 애니메이션 시스템(full-featured animation system)은, 각각의 애니메이션이 개별적인 클럭에 의해 구동될 수 있는 복잡한 타이밍 구조를 포함하며, 그 클럭들은 애플리케이션 개발자에 의해 특정된 임의 규칙 세트에 관련된다. 예를 들어, 하나의 애니메이션(A)이 다른 애니메이션(B)이 종료됨과 정확히 동시에 시작되도록 특정될 수 있거나, 애니메이션 그룹이 그들의 보통 스피드의 반으로 동작하도록 특정될 수 있다. 보다 일반적으로, 이러한 시스템은 또한 클럭을 (오디오 및 비디오와 같은) 선형 미디어의 각각의 단편에 관련시킴으로써, 애니메이션과 다른 유형의 선형 미디어와의 동기화를 핸들링할 수 있다.
이외에, 클럭들은 아무 때나 시작, 일시정지 또는 종료될 수 있다는 점에서 상호작용적이며, 그러한 상호작용들은 동기화 규칙에 의해 제시된 바와 같이 전체 타이밍 계층 구조에 전파되는 변경들을 발생시킬 수 있다. 상기 예에 따라, 애니메이션(B)이 일시정지되어 있다가 5초 후에 재개되면, 애니메이션(A)은 본래 계획된 것보다 5초 뒤에 시작될 것이다. 이것은 다른 클럭들의 타이밍을 변경시킬 수 있으며, 잠재적으로 전체 타이밍 구조에 전파될 수 있다.
타이밍 구조에의 변경을 계산하는 것은 비싸고 무한한 동작이므로, 이 동작은 예측가능한 프레임 속도를 맞추는 것을 목적으로 하는 실시간 렌더링 시스템에 적절하지 않을 수 있다. 이 두 개의 목적(모든 특징이 갖춰진 애니메이션 시스템을 제공하는 것, 및 예측가능한 프레임 속도를 유지하는 것)은 모순적이다. 하나의 해결책은 시스템을 두 개의 부분으로 나누는 것인데, 하나는 클럭들 간의 동기화 규칙에 대해 아는 것이고, 다른 것은 각각의 클럭을 완벽히 독립적인 엔티티로서 고려하는 것이다.
본원에 주장된 통신 프로토콜이 두 개의 별개의 애니메이션 시스템을 동기적으로 유지함으로써, 애니메이션은 상호작용을 불리하게 하지 않으면서 높은 디스플레이 리프레시 속도로 동작할 수 있으며, 그 역도 가능하다.
본원에 설명된 애니메이션 시스템은 적어도 두 개의 컴포넌트를 포함하는데, 즉, 주로 상호작용 및 복잡한 타이밍 구조에 관련된 고레벨 애니메이션 서브시스템 과 주로 높고 일정한 디스플레이 리프레시 속도로 하나 이상의 애니메이션을 디스플레이 상에 렌더링하는 것에 관련된 저레벨 애니메이션 서브시스템이다. "저레벨" 애니메이션 시스템은 금속(또는 기기)에 가까운 반면, "고레벨"이란 용어는 그 애니메이션 시스템이 사용자에 더 가깝다는 사실을 의미한다.
고레벨 애니메이션 시스템의 일례는 애플리케이션으로부터 수신되거나 사용자로부터의 데이터에 따라 애니메이션을 제어하는 애플리케이션이다. 저레벨 애니메이션 서브시스템의 예는 애니메이션 데이터를 물리적으로 디스플레이된 애니메이션으로 변환하는 것을 제어하는 디스플레이 장치 시스템이다. 디스플레이 장치 시스템은 소프트웨어는 물론, 비디오 카드 하드웨어(명시적으로 도시되지 않음) 상에 또는 비디오 카드 상에 물리적으로 상주하지 않는 컴포넌트 내에 포함될 수 있는 하드웨어 컴포넌트도 포함한다.
본원에서, 디스플레이 장치는 디스플레이 시스템 또는 애니메이션 시스템 또는 서브시스템으로 참조될 수 있다. 그러나, 디스플레이 시스템의 모든 컴포넌트 및 프로세싱들이 반드시 디스플레이 장치 상에 물리적으로 상주하지는 않는다. 본원에서 이용될 때, "디스플레이 장치"란 용어는 디스플레이를 제어하는 프로세서 동작 및 임의의 종류의 디스플레이 메모리를 포함한다.
통상적으로, 애니메이션 프로세스는 (단일 애니메이션 시스템을 이용하여) 처리시에 고레벨 애니메이션 서브시스템과 저레벨 애니메이션 서브시스템 모두를 포함하는 단일 기기 상에서 동작한다고 생각된다. 그러나, 본원에 설명된 통신 프로토콜은 두 개의 별개의 애니메이션 시스템에 대해서 (1) 단일 프로세스 내의 두 개의 스레드, (2) 단일 기기 상의 두 개의 별개의 프로세스, 또는 (3) 클라이언트-서버 아키텍처와 같은 네트워크에 의해 분리된 두 개의 별개의 기기로 동작하는 고레벨 및 저레벨 애니메이션 서브시스템이 예상된다.
예시적인 서버-클라이언트 시스템
도 1은 본원에 설명된 시스템 및 방법에 관련된 예시적인 서버-클라이언트 시스템(100)의 블럭도이다. 서버-클라이언트 시스템(100)은 인터넷과 같은 네트워크(106)를 통해 통신하는 서버(102)와 클라이언트(104)를 포함한다.
서버(102)는 메모리(108), 프로세서(110), 네트워크(106)를 통한 통신을 제어하기 위한 네트워크 인터페이스 카드(112) 및 전형적으로 서버가 표준 서버 기능을 수행하는 데에 필요한 다른 다양한 하드웨어(114)를 포함한다. 메모리(110)는 운영 체제(116) 및 서버 기능을 제공하는 이종 소프트웨어 컴포넌트(118)를 포함한다.
애플리케이션(120)도 또한 메모리(108)에 포함되며, 하나 이상의 애니메이션 기능을 제어하는 컴퓨터 코드를 통합한 고레벨 애니메이션 서브시스템(122)을 포함한다. 애니메이션 기능은 창, 대화 상자 등일 수 있다. 고레벨 애니메이션 서브시스템(122)은 주로 상호작용 및 복잡한 타이밍 구조에 주의를 기울인다. 다음의 설명에서 나타낼 때, 애플리케이션(120)은 사용자 작성 컴퓨터 코드, 및 사용자 코드가 하나 이상의 애플리케이션 프로그래밍 인터페이스(API)를 통해 액세스하는 사용자 코드로부터 격리된 시스템 컴퓨터 코드를 포함할 수 있다.
클라이언트(104)는 메모리(130), 프로세서(132), 네트워크(106)로의 및 그로 부터의 통신을 제어하는 네트워크 인터페이스 카드(134), 디스플레이(136)를 포함한다. 클라이언트(104)는 또한 클라이언트(104)에 대해서 적절하게 기능하도록 요청할 수 있는 다양한 하드웨어(140)는 물론 디스플레이 장치(138)도 포함한다.
메모리(130)는 네트워크(106)에의 액세스를 제공하고 네트워크를 네비게이팅하도록 구성된 브라우저(142), 및 클라이언트(104)의 기초 기능을 제어하는 운영 체제(144)를 저장한다. 다양한 소프트웨어 컴포넌트(146)도 또한 메모리(130)에 저장되며, 필요한 클라이언트(104) 기능 및 클라이언트 서비스를 제공하는 소프트웨어를 포함한다.
디스플레이 장치(138)는 디스플레이 장치 메모리(도시되지 않음), 디스플레이 장치 하드웨어 컴포넌트(도시되지 않음), 또는 클라이언트(104) 내에 포함된 메모리(130) 내에 저장될 수 있는 저레벨 애니메이션 서브시스템(148)을 포함한다. 도 1은 디스플레이 장치(138) 컴포넌트의 적어도 일부가 클라이언트(104)의 메인 메모리(130) 내에 상주할 수 있음을 보여준다. 저레벨 애니메이션 서브시스템(148)은 높은 리프레시 프레임 속도(초당 30개의 프레임의 최소 리프레시 속도)에서 렌더링 목표를 만족하는 것에 주의를 기울인다. 애니메이션 시스템의 궁극적인 목적인 높은 리프레시 프레임 속도를 유지하는 것은 탁월한 결과를 제공하며 관찰자를 즐겁게 한다.
애니메이션에 대해서 높은 리프레시 프레임 속도를 유지하는 방식에 존재하는 두 개의 장애물은 (1) 지연 및 (2) 대역폭이다. 네트워크를 통해 데이터를 송신할 때, 데이터는 세계 어느 곳이나 목적지로 할 수 있으며, 이것은 상당한 지연 을 생성할 수 있다. 지연 문제점은 적절한 메시지 및 피드백이 정시에 도착하는 것을 방해하며, 그리고 이것은 리프레시 속도를 떨어뜨리고 사용자 경험을 격하시킬 수 있다. 애니메이션을 제어하기 위해서는 대용량 데이터가 주기적으로 전송되어야 하기 때문에, 이것은 단일 엔티티로 구성된 애니메이션 시스템에 커다란 문제점이다.
대역폭 문제는 또한 단일 엔티티 시스템에 대해서 보다 큰 문제점을 제시한다. 복잡한 애니메이션에서, 매 프레임마다 엄청난 양의 데이터가 특정한 경계(스레드, 프로세스, 네트워크)를 가로질러 송신되어야 한다. 두 개의 별개의 애니메이션 서브시스템을 포함하는 본원에 설명된 시스템에서도, 대역폭을 이용하는 것은 본질적으로 대역폭을 제한하는 모뎀의 이용 및 수많은 클라이언트를 서빙하는 서버에 관련하여 문제점이 될 수 있다. 서버가 오직 단순한 애니메이션에 대한 상대적으로 소량의 데이터만을 전송해야만 한다고 하더라도, 데이터가 4백 개의 클라이언트에 서비스되어야 한다면, 그것은 대역폭 문제가 될 수 있다.
본원에 설명된 시스템 및 방법은 높은 리프레시 속도를 유지하면서 대역폭 이용을 최소화하기 위한 효과적인 방식을 제공한다.
시스템 아키텍처를 렌더링하는 예시적인 애니메이션
도 2는 본원에 설명된 시스템 및 방법에 따른 예시적인 애니메이션 렌더링 시스템 아키텍처(200)의 블럭도이다. 도 2에 도시된 몇몇 구성요소들은 또한 도 1에도 포함된 구성요소들이다. 참조를 위해, 양 도면에 포함된 구성요소는 도 1 내의 구성요소에서 이용된 것과 동일한 참조 번호로 도 2 내에 도시된다.
예시적인 아키텍처(200)는 애플리케이션(120) 및 디스플레이 장치(138)를 포함한다. 애플리케이션(120)은 보다 상세하게 후술될 통신 프로토콜(216)에 따라 통신 채널(204)을 통해 디스플레이 장치(138)와 통신한다. 전술된 바와 같이, 통신 채널(204)은 스레드, 프로세스 또는 기기 간의 경계일 수 있는 경계를 트레버싱(traversing)한다. 기기 간의 경계에 대해서, 예를 들어, 통신 채널(204)은 앞서 도시된 네트워크(106)일 수 있다.
사용자 코드(202)는 사용자 코드(202)와 함께 동작하는 애플리케이션(120)을 이용하길 원하는 개발자에게 애플리케이션(120)에의 액세스를 제공하는 시스템 API의 세트인 API 경계(206)를 통해 애플리케이션(120)과 함께 기능한다.
전술된 바와 같이, 애플리케이션(120)은 고레벨 애니메이션 서브시스템(122)을 포함한다. 고레벨 애니메이션 서브시스템(122)은 고레벨 그래픽 컴포넌트(208), 고레벨 애니메이션 객체 데이터베이스(210) 및 고레벨 타이밍 엔진(212)을 포함한다. 타이밍 엔진(212)은 고레벨 애니메이션 객체 데이터베이스(210)에 저장된 하나 이상의 고레벨 클럭(214)을 생성 및 제어한다.
고레벨 타이밍 엔진(212)은 고레벨 클럭(214)을 설정 및 동기화할 책임이 있다. 그러므로, 예를 들어, 함께 동작하리라고 생각되는 10개의 애니메이션이 있으면, 고레벨 타이밍 엔진(212)은 애니메이션들을 동시에 디스플레이하기 위해 10개의 고레벨 클럭(214)을 동기화한다.
고레벨 그래픽 컴포넌트(208)는 애니메이션에 이용되는 그래픽 유형을 저장한다. 고레벨 애니메이션 객체 데이터베이스(210)는 하나 이상의 애니메이션에 관 련된 애니메이션 값(및/또는 하나 이상의 매체에 관련된 미디어 객체)을 저장한다. 애니메이션 값은 적어도 애니메이션에 관련된 타임라인(timeline)(즉, 클럭)을 포함한다. 본원에서 이용될 때 "클럭" 및 "타임라인"이란 용어는 상호변경가능함이 주의 된다. 애니메이션 값은 고레벨 클럭(214)의 값에 기초하여 애니메이션 렌더링의 출력에 영향을 준다. 각각의 애니메이션은 고레벨 그래픽 컴포넌트(208)의 하나 이상의 양태를 수정한다.
예를 들어, 점 P1에서부터 점 P2까지의 선을 생성하는 단순한 애니메이션에서, 애니메이션 객체 데이터베이스(210)는 시간=0에서 P1에 대한 값을 그리고 시간=1에서 P2에 대한 값을 저장할 것이다(P1과 P2 사이의 모든 점들이 내삽됨).
예시적인 애니메이션 렌더링 시스템 아키텍처(200)의 디스플레이 장치(138)는 도 1에 도시된 저레벨 애니메이션 서브시스템(148)을 포함한다. 저레벨 애니메이션 서브시스템(148)은 고레벨 애니메이션 서브시스템(122)과 등가의 구조이며, 저레벨 그래픽 컴포넌트(128), 저레벨 애니메이션 객체 데이터베이스(220) 및 저레벨 타이밍 엔진(222)을 포함한다. 타이밍 엔진(222)은 저레벨 애니메이션 객체 데이터베이스에 저장되는 하나 이상의 저레벨 클럭(224)을 생성한다.
저레벨 애니메이션 서브시스템(148)의 컴포넌트(218-224)는 고레벨 애니메이션 서브시스템(122)의 컴포넌트(208-214)와 유사하며, 그들의 기능 및 연동가능성은 전술된 바와 유사하다.
예시적인 애니메이션 렌더링 시스템 아키텍처(200)(즉, 두 개의 서브시스템으로 분해링된 애니메이션 시스템)와 같은 아키텍처에 대한 장점이 존재한다. 애 니메이션이 비싸고 상호작용에 관련하여 다수의 오버헤드를 소요하면, 애니메이션은 계속될 수 있기 전에 상호작용적인 부분이 완료되길 기다리지 않더라도 계속될 수 있다. 분해되지 않는 시스템에서, 애니메이션이 디스플레이에 규칙적인 데이터 갱신을 제공하지 않으면, 디스플레이는 움직이는 애니메이션보다는 정적인 이미지를 그릴 수 있다.
통상적인 문제점의 예는, 시스템이 정보를 처리하는 동안 디스플레이되는 상태 리본 표시자에 의해 나타내질 수 있다. 예를 들어, 주로 표시자는 몇몇의 프로세싱이 진행하는 것을 나타내는 좌측으로부터 우측의 방향으로 진행된다. 그러나, 상태 표시자가 정지했는데 사용자가 시스템이 잠겼는지 또는 여전히 무언가를 처리하고 있는지를 말할 수 없을 때가 있다. 이것은 애니메이터(animator)의 상호작용적인 일부가 프레임 리프레시 속도를 만족시키기 위한 시간에 디스플레이부에 갱신된 데이터를 제공하지 않았을 때 일어난다.
이러한 시스템은 특히 비디오에 대해서 열등하다. 비디오에서, 단순히 시스템이 또 다른 태스크(마우스 커서를 이동시키는 것처럼 경미한 것일 수 있음)를 처리하느라 바빴기 때문에 (결함 또는 가공물의 결과로) 프레임을 드롭할 수 있다.
분해된 애니메이션 시스템에서, 저레벨 애니메이션 서브시스템(148)은 고레벨 애니메이션 서브시스템(122)과 비동기적으로 동작하며, 이에 따라 고레벨 애니메이션 서브시스템(122)이 프레임이 리프레시되기 전에 그 프레임을 다시 그리지 못하게 하는 태스크를 처리하는 데에 묶여 있을 때 조차도 계속 동작(즉, 그리기)한다. 그러므로, 분해된 애니메이션 시스템은 애니메이션 동작을 고르게 디스플레 이하고, 이에 따라 탁월한 사용자 경험을 제공한다.
예시적인 방법론적 구현: 기초 동작
도 3은 도 1 및 도 2에 도시된 바와 같은 분해된 애니메이션/렌더링 시스템의 기초 동작을 나타내는 흐름도이다. 다음의 설명에서, 도 1 및 2에 도시된 구성요소 및 참조 번호는 계속 참조될 것이다.
분해된 애니메이션 시스템(즉, 서로 비동기적으로 기능하는 적어도 두 개의 별개의 애니메이션 서브시스템으로 분해된 애니메이션 시스템)에서, 사용자(애플리케이션)는 그래픽을 디스플레이 상에 어떻게 나타낼지가 기대되는지를 시스템 API을 통해 고레벨 시스템에 말한다. 고레벨 시스템은 저레벨 시스템을 향해 있는 특정화된 통신 프로토콜을 이용하여, 고레벨 시스템에 구축된 것과 유사한 구조를 생성한다.
고레벨 시스템이 저레벨 시스템 내에 몇몇 구성요소들을 생성하도록 구성되기 때문에, 도 4에 관련하여 보다 상세하게 후술된 통신 프로토콜은 몇몇 "생성" 메시지 또는 코맨드(command)를 포함할 필요가 있다. 도 3에 도시된 흐름도는 고레벨 애니메이션 서브시스템(122)이 내부에 구조를 구축하기 위해 저레벨 애니메이션 서브시스템(148)과 통신할 때 발생하는 몇몇 기초 단계들을 커버한다.
블럭(300)에서, 고레벨 애니메이션 서브시스템(122)은 저레벨 애니메이션 서브시스템(148) 내에 애니메이션 객체(220)를 생성하기 위한 메시지를 송신한다. 고레벨 애니메이션 서브시스템(122)은, 방금 생성된 애니메이션 객체(220)에 포함될 클럭(224)(즉, 타임라인)을 생성하기 위해 저레벨 애니메이션 서브시스템(148) 과 통신한다[단계(302)].
애니메이션 객체와 타임라인 간의 비율이 반드시 1:1일 필요는 없음이 주의된다. 즉, 하나의 타임라인은 두 개 이상의 애니메이션 객체를 제어할 수 있다. 그러므로, 전술된 블럭(302)에 대한 단계에서, 타임라인이 이미 존재하고 새로 생성된 애니메이션 객체가 그 기존의 타임라인에 관련될 수 있으면, 타임라인이 생성될 필요가 없을 수 있다.
이제, 애플리케이션(120)은 또 다른 애니메이션 객체를 생성하거나 기존 애니메이션을 수정할 수 있다. 애니메이션(120)이 또 다른 애니메이션 객체를 생성하도록 구성되면["애니메이션 객체" 브랜치(branch), 단계(304)], 단계(300)에서 고레벨 애니메이션 서브시스템(122)은 또 다른 애니메이션 객체(220)를 생성하기 위한 통신 프로토콜 메시지를 저레벨 애니메이션 서브시스템(138)에 송신한다. 그 후 단계(302)에서 고레벨 애니메이션 서브시스템(122)은 타임라인을 새로 생성된 애니메이션 객체(220)와 관련시키기 위한 메시지를 송신한다. 타임라인은 생성될 수도 있고 기존 타임라인일 수도 있다.
애플리케이션(120)은 또한 수정을 지원하도록 구성된다. 고레벨 애니메이션 서브시스템(122)은 애니메이션 객체(220) 및/또는 그 관련 타임라인을 수정하기 위한 메시지를 송신한다["수정" 브랜치, 단계(304)]. 애니메이션의 양태를 수정하는 직접적인 수정 이외에, "일시정지" 동작 및 "종료" 동작도 또한 수정된다. "일시정지" 동작은 전형적인 수정의 관점에서 코딩될 수 있다: 예를 들어, "시간 0에서 클럭은 10이고, 시간 10에서 클럭은 10임". "종료" 동작은 "애니메이션 제거" 메 시지에 의해 개시된다.
수정이 "애니메이션 제거" 메시지이면["예" 브랜치, 단계(306)], 단계(308)에서 애니메이션은 멈춘다. 그렇지 않으면["아니오" 브랜치, 단계(306)], 고레벨 애니메이션 시스템(122)은 기존 애니메이션을 수정되도록 구성된 하나 이상의 메시지들을 송신한다[단계(310)]. 기존 애니메이션을 수정하는 것은 또한 기존 애니메이션에 관련된 타임라인을 수정하는 것을 의미한다.
전술된 바와 같이, 상기 흐름도는 고레벨 애니메이션 서브시스템(122)으로부터 통신 프로토콜 메시지를 송신함으로써 저레벨 애니메이션 서브시스템(148)을 구성하기 위한 일반적인 방법론을 나타낸다. 통신 프로코콜의 세부사항이 설명된 다음, 그 통신 프로토콜을 이용하는 적어도 두 개 이상의 특정한 방법론적 구현은 다음에 보다 상세하게 설명될 것이다.
통신 프로토콜
도 4a, 4b 및 4c는 고레벨 애니메이션 시스템과 저레벨 애니메이션 시스템 간의 전송을 관리하는 데 이용되는 통신 프로토콜의 메시지/코맨드를 개략적으로 나타내는 표이다. 다음 설명에서, 도 1 및 도 2에 도시되고 설명된 구성요소 및 참조번호들이 계속 참조될 것이다.
도 4a는 고레벨 타이밍 엔진(212)으로부터 저레벨 타이밍 엔진(222)으로 송신되는 메시지를 설명하는 표(400)를 나타낸다. "클럭 생성" 메시지(402)는 저레벨 타이밍 엔진(222)이 애니메이션에 대한 클럭을 생성하게 한다. "클럭 생성" 메시지(402)는 초기 클럭 속성인 "클럭 생성 매개변수"(404)를 포함한다. 클럭 속성 은 (시작 시간으로부터의) 지속시간, 부모 클럭(이 클럭 내의 모든 시간들은 관련 있음), 스피드(그것의 부모에 상대적임), 가속 및 감속을 포함할 수 있지만, 이에만 한정되는 것은 아니다. 가속 및 감속 매개변수는 애니메이션의 "스피드 증가" 또는 "스피드 감소"에 소요되는 "지속시간"의 백분율을 특정한다.
"속성 갱신" 메시지(406)는 기존 클럭의 속성에 대한 갱신을 제공한다. "속성 갱신 매개변수"(408)는 타겟 클럭(즉, 갱신될 속성을 갖는 클럭)과 갱신된 속성 및 값을 포함한다. "간격 추가" 메시지(410)는 저레벨 타이밍 엔진이 기존 애니메이션(객체)에 간격을 추가하도록 명령하며, 타겟 클럭 및 타겟 클럭에 추가되는 간격의 속성을 식별하는 "간격 추가 매개변수"(412)를 포함한다.
프로토콜은 고레벨 애니메이션 서브시스템(122)과 저레벨 애니메이션 서브시스템(148) 간의 동기화를 유지하는데 이용되는 "동기화 슬립 리셋(Reset Synchronization Slip)" 메시지(414) 및 "동기화 슬립 리셋 매개변수" 메시지(416)를 포함한다. 이것을 어떻게 구현해야 할지는 특정 시스템 디자인의 문제이다.
적어도 하나의 구현에서의 동기화 프로세스는 다음의 예에 의해 설명된다. 저레벨 애니메이션 서브시스템(148)이 비디오 파일을 제어하고 비디오가 뒤처진다는 것을 탐지하면(예를 들어, 네트워크 트래픽 때문에), 저레벨 애니메이션 서브시스템(148)은 고레벨 애니메이션 서브시스템(122)에 "미디어 슬립에 의한 동기화" 메시지 및 매개변수(들)(이하, 도 4b 참조)를 송신하고, 슬립이 발생했다는 사실과 슬립의 크기를 저장한다.
고레벨 애니메이션 서브시스템(122)[구체적으로, 고레벨 타이밍 엔진(212)] 이 슬립을 고려하기 위한 간격을 갱신하는 것을 끝마치면, 그것은 "동기화 슬립 리셋" 메시지(414) 및 관련된 "동기화 슬립 리셋 매개변수"(416)를 저레벨 애니메이션 서브시스템(148)에 송신하여, 슬립 오프셋을 0(zero)으로 리셋할 것을 명령한다.
이 특정한 프로토콜 메시지에 대한 더한 설명을 위해, 이하 도 4b를 참조하자.
"모든 간격 제거" 메시지(418)가 저레벨 타이밍 엔진(222)에 송신되어, 특정한 클럭에 관련된 임의의 기존 간격을 제거할 수 있다. 타겟 클럭이 "모든 간격 제거 매개변수"(420) 내에 식별된다. "클럭 삭제" 메시지(422)도 또한 통신 프로토콜에 포함되며, 그것이 저레벨 타이밍 엔진(222)에 송신되어 "클럭 삭제 매개변수"(424) 내에 식별된 타겟 클럭이 제거된다.
도 4b는 저레벨 타이밍 엔진(222)으로부터 고레벨 타이밍 엔진(212)으로 송신되는 통신 프로토콜 내의 메시지를 설명하는 표(430)를 나타낸다. "미디어 슬립으로 동기화" 메시지(432)는 미디어 컴포넌트에 의해 동기화되기 위해 고레벨 타이밍 엔진(212)이 특정 클럭에 슬립해야 하는 양을 고레벨 타이밍 엔진(212)에 제공한다. ***주의: 이것은 정정과도 유사한가?*** "미디어 슬립으로 동기화 매개변수"(434)는 슬립할 클럭인 타겟 클럭, 및 슬립의 크기를 식별하는 슬립 양을 포함한다.
메시지는 저레벨 애니메이션 서브시스템으로부터 고레벨 애니메이션 서브시스템(122)으로 데이터를 역송신한다. 이것은 통신 채널(204) 내에 지연이 존재하 기 때문에 필요하다. 이것이 발생할 수 있는 하나의 경우는 사용자가 "일시정지" 코맨드를 활성화할 때이다. 시스템들이 서로 비동기적으로 통신하기 때문에, 저레벨 애니메이션 서브시스템은 고레벨 애니메이션 서브시스템이 저레벨 애니메이션 서브시스템을 따라잡을 수 있기 전에 다수의 프레임을 처리할 수 있다. 그 결과, 저레벨 시스템이 오랫동안 동작한다.
이것은 애니메이션에 관련된 클럭이 서브시스템들을 동기화하기 위해 저레벨 클럭(224)과 "동기화" 또는 "슬립"할 필요가 있다는 정보를 고레벨 애니메이션 서브시스템(122)에 제공하는 "미디어 슬립으로 동기화" 메시지(432)에 의해 처리된다.
도 4c는 고레벨 애니메이션 객체(210)로부터 저레벨 애니메이션 객체(220)로 송신되는 메시지를 설명하는 표(440)를 나타낸다. 표(440)는 저레벨 애니메이션 서브시스템(148)에 새로운 애니메이션 객체를 생성하라고 명령하는 "애니메이션 생성" 메시지(442)를 포함한다. "애니메이션 생성 매개변수"(444)는 애니메이션되는 속성의 유형, 애니메이션 함수, 애니메이션 함수 및 제어 클럭을 식별하는 출력 값 유형을 포함한다.
예를 들어, 회전 변형의 각도가 애니메이션되면, 출력 유형은 "두 배 정밀도의 부동 소수점 숫자(double-precision floating point number)"이다. 선의 한 끝점이 애니메이션되면, 출력 유형은 "점"이다. 사각형의 색깔이 애니메이션되면, 출력 유형은 "색깔"이다.
애니메이션 함수들이 본 기술에 알려져 있지만, 임의의 이러한 애니메이션 함수도 본원에 지정될 수 있다. 단순한 애니메이션 함수의 예는 "5로부터 10으로"이다. 이것은, 애니메이션 함수가 간격의 시작시에는 5의 값을 출력하고, 종료시간에는 10을 출력하며, 출력 함수의 중간에는 7.5의 값을 출력하는 등을 의미한다. 더욱 복잡한 애니메이션 함수는 "5로부터 6에서 10으로"이다. 여기서, 애니메이션의 중간 출력 값은 6이다. 함수는 값 리스트는 물론 함수가 그러한 값들을 (그 사이의 모든 값들을 내삽하여) 출력해야하는 시간 리스트를 특정함으로써 더욱 복잡하게 만들어질 수 있다.
전술된 애니메이션 함수들은 예시적인 것일 뿐, 첨부된 청구항의 범위를 이러한 애니메이션 함수들로 한정하도록 의도된 것은 아님이 주의된다. "애니메이션 함수"로 고려될 수 있는 임의의 컴퓨터 동작은 이 문맥으로 이용될 수 있다.
마지막으로, 전술된 바와 같이, 새로운 애니메이션 객체에 대한 제어 클럭은 새로운 클럭일 수 있거나 하나 이상의 다른 애니메이션 객체를 제어할 수 있거나 할 수 없는 기존 클럭일 수 있다.
표(440)는 또한 저레벨 애니메이션 서브시스템(148) 내의 기존 애니메이션을 갱신하기 위한 정보를 제공하는 "애니메이션 갱신" 메시지(446)도 포함한다. "애니메이션 갱신 매개변수"(448)는 타겟 애니메이션(즉, 갱신될 애니메이션) 및 갱신되는 속성(갱신될 속성 및 속성에 대한 갱신되는 값)을 포함한다.
"애니메이션 집합 생성" 메시지(450)는 집합으로 그룹화되는 저레벨 애니메이션 객체들[데이터베이스](220) 내의 복수의 애니메이션들을 식별한다. "애니메이션 집합 생성 매개변수"(452)는 집합으로 그룹화될 애니메이션의 초기 리스트를 식별한다.
애니메이션 집합 또한 본 분야에 잘 알려져 있다. 애니메이션 집합은 개발자가 단일 선형 내삽으로는 표현될 수 없는 복잡한 애니메이션 행동을 생성하는 것을 허용한다. 예를 들어, 하나의 애니메이션이 점을 위아래로 반복적으로 이동시키는 동안, 제2 애니메이션은 점을 우측으로 이동시킬 수 있다. 두 개의 애니메이션 모두가 함께 동작할 때, 이 점은 우측으로의 파형 패턴을 따르는 것처럼 보인다. 후술된 프로토콜 내의 메시지의 존재로 인해 애니메이션 집합이 편집될 수 있다.
"집합에 애니메이션 추가" 메시지(454)는 "집합에 애니메이션 추가 매개변수"(456) 내에 식별된 애니메이션을 또한 "집합에 애니메이션 추가 매개변수"(456) 내의 식별된 애니메이션 집합에 추가하도록 저레벨 시스템에 명령한다. 마찬가지로, "집합으로부터 애니메이션 제거" 메시지(458)는 타겟 애니메이션 집합 및 그 집합으로부터 제거될 집합 내의 애니메이션을 식별하는 "집합으로부터 애니메이션 제거 매개변수"(460)와 함께 포함된다.
표(440)는 또한 "정적인 값 생성" 메시지(462)를 포함한다. 정적인 값은 저레벨 애니메이션 서브시스템(148)이 애플리케이션(120)에 의해 제공되는 애니메이션을 지원할 수 없는 경우에 이용된다. 이 상황은 도 6에 관련하여 보다 상세하게 후술된다. "정적인 값 생성" 메시지(462)는 값 유형 및 생성된 정적인 값에 대한 초기 값을 식별하는 "정적인 값 생성 매개변수"(464)에 관련된다.
"정적인 값 갱신" 메시지(466)는 정적인 값에 대한 갱신을 제공한다. "정적 인 값 갱신 매개변수"(468)가 타겟 정적인 값 객체를 식별하여, 그 정적인 값 객체에 대한 새로운 값이 식별된다.
도 4a-c에 도시된 메시지 및 매개변수는 저레벨 애니메이션 서브시스템(148)에 의해 렌더링된 애니메이션이 고레벨 애니메이션 서브시스템에 의해 비동기적으로 제어될 수 있는 효율적이고 효과적인 방식을 제공한다. 매 렌더링 리프레시 프레임마다 하나 이상의 메시지가 송신될 필요가 없기 때문에, 디스플레이는 높고 일정한 속도로 프레임을 렌더링할 수 있다. 동시에, 고레벨 시스템은 저레벨 시스템에 (즉, 느리고 다양한 리프레시 속도로) 데이터를 제공할 수 있게 되는 처리 시간을 이용할 수 있다.
예시적인 방법론적 구현: 완전히 연결된 시스템
도 5는 완전히 연결된 고레벨 애니메이션 시스템 및 저레벨 애니메이션 시스템을 갖는 렌더링 시스템 내의 애니메이션 프로세스의 예시적인 방법론적 구현을 나타내는 흐름도이다.
도 5 내에 설명된 시나리오는 다음과 같다: 애플리케이션 개발자는 고정된 앵커 점(fixed anchor point)으로부터 시간이 지남에 따라 이동하는 제2 점으로 나아가는 애니메이션되는 직선을 그리길 원한다. 개발자는 다음의 세 가지 것을 제공할 필요가 있다: (1) 렌더링 동작(예를 들어, 정적인 점 A와 애니메이션 점 B 사이에 선을 그림), (2) 애니메이션 함수(예를 들어, 점 B를 (0, 0)으로부터 (100, 100)으로 이동), 및 (3) 애니메이션의 타이밍(예를 들어, 5초에 시작하여 10초 동안 이동한 후 역이동을 한번 반복).
도 5는 전술된 정보를 포함하는 애니메이션(120)으로의 고레벨 애니메이션 서브시스템(122)의 응답을 나타낸다. 단계(500)에서, 고레벨 애니메이션 서브시스템(122)은 애플리케이션(122)으로부터 정보를 수신한다. 고레벨 애니메이션 서브시스템(122)은 단계(502)에서 라인은 나타내는 렌더링 객체를 생성한다. 단계(504)에서, 고레벨 애니메이션 서브시스템(122)은 (0, 0)으로부터 (100, 100)으로의 값을 출력하는 애니메이션 함수를 생성한다. 단계(506)에서, 고레벨 애니메이션 서브시스템(122)은 5초에 시작하여 10초 동안 동작한 후 반대로 동작하는 클럭을 생성한다.
저레벨 애니메이션 서브시스템(148)이 이러한 객체를 지원함으로써, 고레벨 애니메이션 서브시스템(122)이 저레벨 애니메이션 서브시스템(148)에 메시지를 송신하고[단계(508)], 이것은 통신 채널(204) 상에 트래픽을 생성한다[단계(510-518)에 나타냄 ].
단계(510): 클럭1 생성; 클럭1 에 대한 매개변수 설정, 지속시간 = 10.
단계(512): 클럭1에 간격 추가; "지금+5"로부터 "지금+15"로, t=0으로부터 t=10으로 이동.
단계(514): 클럭1에 간격 추가; "지금+15"로부터 "지금+25"로, t=10으로부터 t=1으로 이동.
단계(516): 애니메이션1 생성; 애니메이션1에 대한 매개변수 설정, (0, 0)으로부터 (100, 100)으로, 클럭 = 클럭1.
단계(518): 애니메이션1을 참조하는 [DrawLine] 명령어를 생성.
이 예에서, DrawLine 함수는 애니메이션을 렌더링하기 위한 프로토콜에 의해 지원되는 임의의 그리기 명령어를 대표한다. DrawLine 명령어는 단지 예시적인 것일 뿐이다.
메시지가 고레벨 애니메이션 서브시스템(122)으로부터 저레벨 애니메이션 서브시스템(148)으로 전송된 후, 저레벨 애니메이션 서브시스템(148)은 고레벨 서브시스템(148)에 독립적으로 동작하고, 가능한 최고 프레임 속도로 선의 위치를 갱신한다. 두 개의 서브시스템(122, 148) 간에는 더 이상 아무 메시지도 송신될 필요가 없다.
도시된 바와 같이, 본원에 도입된 통신 프로토콜은 통신 채널(204)에 놓이는 데이터의 총량을 줄임으로써 통신 채널(204)을 최적화한다. 전술된 짧은 메시지 및 매개변수가 이용되지 않으면, 다수의 동작들이 시스템을 동기화하기 위해 파이프라인을 통해 송신되어야 할 것이다.
그러나 실제로 통신 채널(204) 상에 놓이는 것은 다수의 클럭들에 대한 간격들의 리스트이다. 클럭에 대해서, 간격이, 즉 '시간 0과 시간 10 사이에, 클럭이 0으로부터 10으로 이동'(이것은 실세계 클럭을 정의함)처럼 정의된다. 또는, 클럭이 2배로 느리게 동작하기를 바랄 수 있다. 이 경우는 '시간 0과 시간 10 사이에 클럭이 0으로부터 5로 이동'이다.
타이밍 간격의 리스트를 정의함으로써, 클럭에 대한 모든 동작이 정의될 수 있다. 예를 들어, 일시정지 동작은 클럭 간격에 의해 정의될 수 있다: '시간 0에서는 클럭이 10이고 시간 10에서는 클럭이 10임'. 그러므로, 모든 동작은 선형 간 격으로 표현될 수 있다.
예시적인 방법론적 구현: 부분적으로 연결된 시스템
도 6은 부분적으로 연결된 고레벨 애니메이션 시스템 및 저레벨 애니메이션 시스템을 갖는 렌더링 시스템 내의 애니메이션 프로세스의 예시적인 방법론적 구현을 나타내는 흐름도이다.
이 예의 시나리오는 다음과 같다: 애플리케이션 개발자는 고정된 앵커 점으로부터 커스텀 경로 상에서 시간이 지남에 따라 이동하는 제2 점으로 나아가는 애니메이션되는 직선을 그리길 원한다. 개발자는 다음의 것을 제공할 필요가 있다: (1) 렌더링 동작(예를 들어, 정적인 점 A와 애니메이션 점 B 사이에 선을 그림), (2) 커스텀 애니메이션 함수(예를 들어, 점 B의 위치를 계산하기 위해 커스텀 애니메이션1을 호출), 및 (3) 애니메이션의 타이밍(예를 들어, 5초에 시작하여 10초 동안 이동한 후 역이동을 한번 반복).
단계(600)에서 고레벨 애니메이션 서브시스템(122)은 애플리케이션 정보를 수신한다. 애플리케이션의 요청에 응답하여, 고레벨 애니메이션 서브시스템(122)은 선을 나타내는 렌더링 객체[단계(602)], 사용자 코드(202)를 호출하도록 구성된 애니메이션 함수[단계(604)] 및 5초에 시작하여 10초 동안 동작한 후 반대로 동작하는 클럭[단계(606)]을 생성한다. 단계(608)에서, 적절한 메시지가 저레벨 애니메이션 서브시스템(148)으로 송신된다.
주문 애니메이션이 사용자 코드를 요청하지만, 그것이 저레벨 서브시스템에 의해 처리될 수 없으므로, 통신 채널 상에서 다음의 초기 트래픽이 생성된다:
단계(610): 정적인 점 값1을 생성.
단계(612): 점 값1을 참조하는 [DrawLine] 명령어를 생성(DrawLine 명령어는 단지 예일 뿐임, 상기 참조).
단계(614)에서, 저레벨 애니메이션 서브시스템(148)은 고레벨 애니메이션 서브시스템(122)으로부터 전송된 데이터를 수신한다. 저레벨 애니메이션 서브시스템(148)은 애니메이션을 정적인 선으로 취급한다.
데이터의 초기 전송 이후 매 프레임마다, 고레벨 애니메이션 서브시스템(122)은 점 B의 위치를 계산하기 위한 사용자 코드(202)를 호출하고[단계(620)], 단계(622)에서 새로운 위치 값을 수신한다. 그 후 고레벨 애니메이션 서브시스템(122)은 정적인 점 값1의 값을 갱신하기 위한 메시지를 통신 채널(204)을 통해 저레벨 애니메이션 서브시스템에 송신한다:
단계(626): 점 B에 대한 새로운 값을 갖는 정적인 점 값을 갱신.
예시적인 컴퓨터 환경
본원에 설명된 다양한 컴포넌트 및 기능들이 컴퓨팅 시스템에 구현된다. 도 7은 참조번호(700)에 의해 참조된 컴퓨팅 시스템의 예, 즉, 컴퓨터의 컴포넌트를 도시한다. 도 7에 도시된 컴포넌트는 오직 예일 뿐이며, 본 발명의 기능의 범위에 대해 어떠한 제한도 제안하도록 의도되지 않으며, 본 발명은 도 7에 도시된 특징에 반드시 의존하지는 않는다.
일반적으로, 다수의 상이한 범용 또는 특수목적 컴퓨팅 시스템 구성들이 이용될 수 있다. 본 발명에 이용하기에 적합할 수 있는 잘 알려진 컴퓨팅 시스템, 환경 및/또는 구성의 예는 퍼스널 컴퓨터, 서버 컴퓨터, 핸드헬드 또는 랩탑 장치, 멀티프로세서 시스템, 마이크로프로세서-기반 시스템, 셋 탑 박스, 프로그램가능한 가전제품, 네트워크 PC, 미니컴퓨터, 메인프레임 컴퓨터, 상기의 시스템 또는 장치 중의 임의의 것을 포함하는 분산형 컴퓨팅 환경 등이 포함되지만, 이에 한정되지 않는다.
컴퓨터의 기능은 컴퓨터에 의해 실행되는, 프로그램 모듈과 같은 컴퓨터 실행가능 명령어에 의한 여러 경우에 실시된다. 일반적으로, 프로그램 모듈은 특정 태스크를 수행하거나 특정 추상 데이터 유형을 구현하는 루틴, 프로그램, 오브젝트, 컴포넌트, 데이터 구조 등을 포함한다. 태스크들은 또한 통신 네트워크를 통해 링크된 원격 프로세싱 장치에 의해 수행된다. 분산 컴퓨팅 환경에서, 프로그램 모듈은 국부 및 원격 컴퓨터 저장 매체 모두 내에 위치할 수 있다.
명령어 및/또는 프로그램 모듈은 컴퓨터의 일부이거나 컴퓨터에 의해 판독될 수 있는 다양한 컴퓨터 판독가능 매체에 서로 다른 시간에 저장된다. 예를 들어, 프로그램은 전형적으로 플로피 디스크, CD-ROM, DVD 또는 변조된 신호와 같은 통신 매체의 몇몇 형태 상에 분산된다. 따라서, 그들은 설치되거나, 컴퓨터의 2차 메모리에 로드된다. 실행시에, 그들은 컴퓨터의 주 전자 메모리에 적어도 부분적으로 로드된다. 본원에 설명된 본 발명은 이러한 매체가 마이크로프로세서 또는 다른 데이터 프로세서에 관련하여 후술된 단계들을 구현하기 위한 명령어 프로그램 및/또는 모듈을 포함할 때 이러한 및 다른 컴퓨터 판독가능 매체의 다양한 유형을 포함한다. 본 발명은 또한 후술된 방법 및 기술에 따라 프로그래밍될 때 컴퓨터 자 체를 포함한다.
예시를 위해, 프로그램 및 운영 체제와 같은 다른 실행가능 프로그램 컴포넌트는 다양한 시간에 컴퓨터의 상이한 저장 컴포넌트에 상주하고 컴퓨터의 데이터 프로세서(들)에 의해 실행된다고 인식되지만, 본원에는 개별적인 블럭으로 예시된다.
도 7을 참조하면, 컴퓨터(700)의 컴포넌트들은 프로세싱 유닛(702), 시스템 메모리(704), 및 시스템 메모리를 포함하는 다양한 시스템 컴포넌트를 프로세싱 유닛(702)에 접속시키는 시스템 버스(706)가 포함할 수 있지만, 이에 한정되는 것은 아니다. 시스템 버스(706)는 메모리 버스 또는 메모리 제어기, 주변 버스, 및 다양한 버스 아키텍처 중의 임의의 것을 이용하는 국부 버스를 포함하는 몇 가지 유형의 버스 구조 중의 임의의 것일 수 있다. 예로서, 이러한 아키텍처는 산업 표준 아키텍처(ISA) 버스, 마이크로 채널 아키텍처(MCA) 버스, 인핸스드 ISA(Enhanced ISA; EISA) 버스, 비디오 일렉트로닉스 표준 어소시에이션(VESA) 국부 버스, 및 메자닌(Mezzanine) 버스로도 알려진 주변 컴포넌트 상호접속(PCI) 버스를 포함하지만, 이에 한정되는 것은 아니다.
컴퓨터(700)는 통상적으로 다양한 컴퓨터 판독가능 매체를 포함한다. 컴퓨터 판독가능 매체는 컴퓨터(700)에 의해 액세스될 수 있는 임의의 이용가능한 매체일 수 있으며, 휘발성 및 비휘발성 매체, 분리형 및 비분리형 매체를 둘 다 포함한다. 예로서, 컴퓨터 판독가능 매체는 컴퓨터 저장 매체 및 통신 매체를 포함할 수 있지만, 이에 한정되는 것은 아니다. "컴퓨터 저장 매체"는 컴퓨터 판독가능 명령 어, 데이터 구조, 프로그램 모듈 또는 다른 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현되는 휘발성 및 비휘발성, 분리형 및 비분리형 매체를 포함한다. 컴퓨터 저장 매체는 RAM, ROM, EEPROM, 플래시 메모리 또는 다른 메모리 기술, CD-ROM, DVD 또는 다른 광학 디스크 저장장치, 자기 카세트, 자기 테이프, 자기 디스크 저장장치 또는 다른 자기 저장 장치, 또는 컴퓨터(700)에 의해 액세스될 수 있고 원하는 정보를 저장하는 데 이용될 수 있는 임의의 다른 매체를 포함하지만, 이에 한정되지 않는다. 통신 매체는 통상적으로 반송파 또는 다른 전송 메커니즘 등의 변조된 데이터 신호에 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈, 또는 다른 데이터를 구현하며, 임의의 정보 전달 매체를 포함한다. "변조된 데이터 신호"라는 용어는 신호 내의 정보를 인코딩하도록 하나 또는 그 이상의 특성을 설정 또는 변경시킨 신호를 의미한다. 예로서, 통신 매체는 유선 네트워크 또는 직접 유선 접속 등의 유선 매체와, 음향, RF, 적외선 및 다른 무선 매체 등의 무선 매체를 포함하지만, 이에 한정되지 않는다. 상술한 것들의 임의의 조합 또한 컴퓨터 판독가능 매체의 범위 내에 포함되어야 한다.
시스템 메모리(704)는 ROM(708) 및 RAM(710) 등의 휘발성 및/또는 비휘발성 메모리의 형태의 컴퓨터 저장 매체를 포함한다. 시동중과 같은 때에 컴퓨터(700) 내의 구성요소들 간에 정보를 전송하는 것을 돕는 기본 루틴을 포함하는 기본 입출력 시스템(712; BIOS)은 일반적으로 ROM(708)에 저장된다. RAM(710)은 일반적으로 프로세싱 유닛(702)에 의해 즉시 액세스가능하고/하거나 프로세싱 유닛(702)에 의해 현재 작동되는 프로그램 모듈 및/또는 데이터를 포함한다. 예로서, (한정하고 자 하는 것은 아님) 도 7은 운영 체제(714), 애플리케이션 프로그램(716), 다른 프로그램 모듈(718) 및 프로그램 데이터(720)를 예시한다.
컴퓨터(700)는 또한 다른 분리형/비분리형, 휘발성/비휘발성 컴퓨터 저장 매체를 포함할 수 있다. 단지 예로서, 도 7에는 비분리형 비휘발성 자기 매체로부터 판독하거나 그 자기 매체에 기록하는 하드 디스크 드라이브(722), 분리형 비휘발성 자기 디스크(726)로부터 판독하거나 그 자기 디스크에 기록하는 자기 디스크 드라이브(724), 및 CD-ROM 또는 다른 광학 매체 등의 분리형 비휘발성 광학 디스크(730)로부터 판독하거나 그 광학 디스크에 기록하는 광학 디스크 드라이브(728)가 예시되어 있다. 예시적인 운영 환경에서 이용될 수 있는 다른 분리형/비분리형, 휘발성/비휘발성 컴퓨터 저장 매체는 자기 테이프 카세트, 플래시 메모리 카드, DVD, 디지털 비디오 테이프, 고체 RAM, 고체 ROM 등을 포함하지만, 이에 한정되지 않는다. 하드 디스크 드라이브(722)는 일반적으로 데이터 매체 인터페이스(732) 등의 비분리형 메모리 인터페이스를 통해 시스템 버스(706)에 접속되고, 자기 디스크 드라이브(724) 및 광학 디스크 드라이브(728)는 일반적으로 인터페이스(734) 등의 분리형 메모리 인터페이스에 의해 시스템 버스(706)에 접속된다.
전술되고 도 7에 예시된 드라이브 및 그 관련 컴퓨터 저장 매체는 컴퓨터(700)에 대한 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 및 다른 데이터의 저장을 제공한다. 도 7에서, 예를 들어, 하드 디스크 드라이브(722)는 운영 체제(715), 애플리케이션 프로그램(717), 다른 프로그램 모듈(719) 및 프로그램 데이터(721)를 저장하는 것으로 예시된다. 이들 컴포넌트는 운영 체제(714), 애플리 케이션 프로그램(716), 다른 프로그램 모듈(718) 및 프로그램 데이터(720)와 동일할 수도 있고 다를 수도 있다. 운영 체제(715), 애플리케이션 프로그램(717), 다른 프로그램 모듈(719), 및 프로그램 데이터(721)는 최소한 다른 복사본임을 나타내기 위하여 상이한 번호가 부여된다. 사용자는 일반적으로 마우스, 트랙볼 또는 터치 패드라 불리는 포인팅 장치(738) 및 키보드(736)와 같은 입력 장치를 통해 컴퓨터(700)에 코맨드 및 정보를 입력할 수 있다. (도시되지 않은) 다른 입력 장치는 마이크로폰, 조이스틱, 게임 패드, 위성 안테나, 스캐너 등을 포함할 수 있다. 이들 입력 장치 및 다른 입력 장치는 시스템 버스에 연결된 입출력 인터페이스(740)를 통해 종종 프로세싱 유닛(702)에 접속되지만, 병렬 포트, 게임 포트 또는 USB와 같은 다른 인터페이스 및 버스 구조에 의해 접속될 수도 있다. 모니터(742) 또는 다른 유형의 디스플레이 장치는 또한 비디오 어댑터(744) 등의 인터페이스를 통해 시스템 버스(706)에 접속된다. 모니터(742) 외에도, 컴퓨터는 또한 입출력 인터페이스(740)를 통해 접속될 수 있는 다른 주변 출력 장치(746)(예를 들어, 스피커) 및 하나 이상의 프린터(748)를 포함할 수 있다.
컴퓨터는 원격 컴퓨팅 장치(750)와 같은 하나 이상의 원격 컴퓨터로의 논리적 접속을 이용한 네트워크 환경에서 동작할 수 있다. 원격 컴퓨팅 장치(750)는 퍼스널 컴퓨터, 서버, 라우터, 네트워크 PC, 피어(peer) 장치, 또는 다른 공통 네트워크 노드일 수 있으며 컴퓨터(700)에 관하여 상술한 구성요소 중 다수 또는 모든 구성요소를 일반적으로 포함한다. 도 7에 도시된 논리적 접속은 LAN(752) 및 WAN(754)을 포함한다. 도 7에 도시된 WAN(754)은 인터넷이지만, WAN(754)는 또한 다른 네트워크를 포함할 수 있다. 이러한 네트워킹 환경은 사무실, 기업 광역 컴퓨터 네트워크, 인트라넷 등에서 일반적인 것이다.
LAN 네트워킹 환경에서 이용되는 경우, 컴퓨터(700)는 네트워크 인터페이스 또는 어댑터(756)를 통해 LAN(752)에 접속된다. WAN 네트워킹 환경에서 이용되는 경우, 컴퓨터(700)는 일반적으로 인터넷(754)을 통해 통신을 구축하기 위한 모뎀(758) 또는 다른 수단을 포함한다. 내장형 또는 외장형일 수 있는 모뎀(758)은 입출력 인터페이스(740) 또는 다른 적절한 메커니즘을 통해 시스템 버스(706)에 접속될 수 있다. 네트워킹된 환경에서, 컴퓨터(700)에 관하여 도시된 프로그램 모듈 또는 그 일부는 원격 메모리 컴퓨팅 장치(750)에 저장될 수 있다. 예로서 (한정하고자 하는 것은 아님), 도 7은 원격 컴퓨팅 장치(750)에 상주하는 원격 애플리케이션 프로그램(760)을 예시한다. 도시된 네트워크 접속은 예시적인 것이며, 컴퓨터들 간의 통신 링크를 구축하는 그 외의 수단이 이용될 수 있음이 인식될 것이다.
결론
설명된 시스템 및 방법에 대한 통신 프로토콜은, 상호작용을 위해 최적화된 고레벨 시스템이 다양한 프레임 속도로 동작할 수 있으면서 저레벨 시스템이 빠르고 일정한 프레임 리프레시 속도로 동작할 수 있도록, 고레벨 애니메이션 시스템을 저레벨 애니메이션 시스템과 동기화하는 방식을 제공한다. 탁월한 그래픽이 임의의 상호작용 성능을 희생시키지 않고서도 달성될 수 있다. 프로토콜은 또한 두 개의 애니메이션 시스템들 간에 전송되는 데이터의 양을 최소화시킴으로써, 오버헤드를 줄이고 성능을 최적화한다.
특정한 구현 및 실시예의 상세가 전술되어 있지만, 이러한 상세는 다음의 청구항의 범위를 제한하기 보다는 규약 개시 책임을 만족하도록 의도된다. 그러므로, 청구항에 의해 정의된 본 발명은 전술된 특정한 특징에 제한되지 않는다. 오히려, 본 발명은 등가물에 따라 적절하게 해석된 첨부된 청구항의 적절한 범위에 속하는 임의의 형태 또는 수정물로 주장된다.

Claims (26)

  1. 애니메이션 렌더링 시스템에 있어서,
    상기 시스템에 대한 상호작용 함수(interaction function)들을 핸들링하는 고레벨 애니메이션 서브시스템;
    상기 시스템에 대한 디스플레이 함수들을 핸들링하는 저레벨 애니메이션 서브시스템;
    고레벨 애니메이션 동작들에 의해 참조되는 적어도 하나의 고레벨 클럭;
    저레벨 애니메이션 동작들에 의해 참조되는 적어도 하나의 저레벨 클럭; 및
    통신 프로토콜에 따라 상기 고레벨 애니메이션 서브시스템과 상기 저레벨 애니메이션 서브시스템 간에 메시지들을 송신하기 위한 통신 채널
    을 포함하고,
    상기 통신 프로토콜은 상기 고레벨 애니메이션 서브시스템과 상기 저레벨 애니메이션 서브시스템 간의 동기화를 핸들링하기 위하여, 상기 저레벨 애니메이션 서브시스템으로부터 상기 고레벨 애니메이션 서브시스템으로 송신되는 적어도 하나의 메시지를 더 포함하며, 상기 메시지는 애니메이션에 관련된 타겟 클럭 및 상기 고레벨 애니메이션 서브시스템을 상기 저레벨 애니메이션 서브시스템에 의해 실행되고 있는 애니메이션에 동기화시키기 위해 상기 타겟 클럭이 반드시 슬립(slip)해야 하는 양을 식별하는 "미디어 슬립으로 동기화(synchronize with media slip)" 메시지를 포함하며,
    상기 통신 프로토콜은, 애니메이션을 지정하고 상기 애니메이션이 특정 기간에 걸쳐 어떻게 변해야 할지를 특정하는, 상기 고레벨 애니메이션 서브시스템에 의해 상기 저레벨 애니메이션 서브시스템으로 제공되는 정보를 포함함으로써, 상기 저레벨 애니메이션 서브시스템이 상기 애니메이션의 몇몇 프레임들을 처리하기 위한 정보를 가질 것을 보증하는 애니메이션 렌더링 시스템.
  2. 제1항에 있어서, 상기 고레벨 애니메이션 서브시스템과 상기 저레벨 애니메이션 서브시스템 간의 통신들은 비동기적인 애니메이션 렌더링 시스템.
  3. 애니메이션 애플리케이션을 처리하기 위한 방법에 있어서,
    상기 애니메이션 애플리케이션으로부터 고레벨 애니메이션 서브시스템으로 애니메이션 데이터를 수신하는 단계; 및
    저레벨 애니메이션 서브시스템이 상기 애니메이션 데이터에 관련된 애니메이션을 디스플레이할 수 있게 하기 위해, 통신 채널을 통해 통신 프로토콜에 따라 상기 고레벨 애니메이션 서브시스템으로부터 상기 저레벨 애니메이션 서브시스템으로 애니메이션 정보를 전송하는 단계
    를 포함하고,
    상기 통신 프로토콜은, 애니메이션을 지정하는 것을 제공하고, 상기 애니메이션이 특정 기간에 걸쳐 어떻게 변해야 하는지에 관한 명령어들을 제공하여, 상기 고레벨 애니메이션 서브시스템은 변경가능한 리프레시 속도로 실행되는 한편 상기 저레벨 애니메이션 서브시스템은 일정한 디스플레이 프레임 리프레시 속도로 상기 애니메이션의 몇몇 프레임들을 처리할 수 있게 하며,
    상기 통신 프로토콜은 고레벨 애니메이션 서브시스템 타이밍 구성요소로부터 저레벨 애니메이션 서브시스템 타이밍 구성요소로 송신되는 메시지들을 포함하며,
    상기 송신되는 메시지들은,
    클럭을 생성하는 메시지;
    클럭 속성들을 갱신하는 메시지;
    클럭에 간격을 추가하는 메시지;
    클럭에 대한 모든 간격들을 제거하는 메시지; 및
    클럭을 삭제하는 메시지인 방법.
  4. 애플리케이션으로부터 애니메이션 정보를 수신하도록 구성된 고레벨 애니메이션 서브시스템;
    상기 애니메이션 정보에 따라 하나 이상의 애니메이션들을 렌더링하도록 구성된 저레벨 애니메이션 서브시스템;
    상기 저레벨 애니메이션 서브시스템 내의 하나 이상의 저레벨 클럭들을 모니터링하고, 상기 저레벨 클럭들을 하나 이상의 고레벨 클럭들에 동기화시키도록 구성된 저레벨 타이밍 엔진; 및
    하나 이상의 고레벨 애니메이션 객체들에 따라 상기 고레벨 애니메이션 서브시스템 내의 하나 이상의 고레벨 클럭들을 모니터링하고, 상기 저레벨 타이밍 엔진에 통신 프로토콜에 맞는 애니메이션 메시지들을 전송하도록 구성된 고레벨 타이밍 엔진
    을 포함하고,
    상기 저레벨 타이밍 엔진은, 고레벨 클럭 및 상기 고레벨 클럭을 저레벨 클럭에 동기화시키기 위해 상기 고레벨 클럭이 얼마나 변경되어야 하는지의 정도를 식별하는 동기화 메시지를 상기 통신 프로토콜에 따라 상기 고레벨 타이밍 엔진에 송신하도록 구성되며,
    상기 고레벨 타이밍 엔진으로부터 상기 저레벨 타이밍 엔진으로 전송되는 상기 애니메이션 메시지들은 하나 이상의 애니메이션 객체들, 및 상기 애니메이션 객체들이 특정 기간에 걸쳐 어떻게 변해야 할지를 지정하는 시스템.
  5. 애니메이션 렌더링 시스템 내의 고레벨 애니메이션 서브시스템에 있어서,
    하나 이상의 고레벨 클럭들;
    상기 하나 이상의 고레벨 클럭들을 추적하도록 구성된 고레벨 타이밍 엔진;
    애니메이션의 적어도 일부를 식별하는 하나 이상의 애니메이션 객체들; 및
    통신 프로토콜 내에 포함된 메시지들에 따라 저레벨 애니메이션 서브시스템에 애니메이션 데이터를 전송하기 위한 수단
    을 포함하고,
    상기 저레벨 애니메이션 서브시스템에 전송된 통신 프로토콜 메시지들은 상기 저레벨 애니메이션 서브시스템 내에서 상기 애니메이션 객체들 중 적어도 하나를 식별하고, 상기 식별된 애니메이션 객체들이 특정 기간에 걸쳐 어떻게 변해야 할지에 대한 데이터를 제공하며,
    상기 통신 프로토콜은,
    생성할 애니메이션을 설명하는 애니메이션 생성 메시지; 및
    갱신할 애니메이션 및 갱신되는 속성들을 식별하는 애니메이션 갱신 메시지
    를 더 포함하는 고레벨 애니메이션 서브시스템.
  6. 애니메이션 시스템을 동기화하는 통신 프로토콜을 사용하는 시스템에 있어서,
    상기 시스템에 대한 상호작용 함수(interaction function)들을 핸들링하는 고레벨 애니메이션 서브시스템;
    상기 시스템에 대한 디스플레이 함수들을 핸들링하는 저레벨 애니메이션 서브시스템;
    고레벨 애니메이션 동작들에 의해 참조되는 적어도 하나의 고레벨 클럭;
    저레벨 애니메이션 동작들에 의해 참조되는 적어도 하나의 저레벨 클럭; 및
    상기 통신 프로토콜에 따라 상기 고레벨 애니메이션 서브시스템과 상기 저레벨 애니메이션 서브시스템 간에 메시지들을 송신하기 위한 통신 채널
    을 포함하고,
    상기 통신 프로토콜은 상기 고레벨 애니메이션 서브시스템과 상기 저레벨 애니메이션 서브시스템 간의 동기화를 핸들링하기 위하여, 상기 저레벨 애니메이션 서브시스템으로부터 상기 고레벨 애니메이션 서브시스템으로 송신되는 적어도 하나의 메시지를 더 포함하며, 상기 메시지는 애니메이션에 관련된 타겟 클럭 및 상기 고레벨 애니메이션 서브시스템을 상기 저레벨 애니메이션 서브시스템에 의해 실행되고 있는 애니메이션에 동기화시키기 위해 상기 타겟 클럭이 반드시 슬립(slip)해야 하는 양을 식별하는 "미디어 슬립으로 동기화(synchronize with media slip)" 메시지를 포함하며,
    상기 통신 프로토콜은, 애니메이션을 지정하고 상기 애니메이션이 특정 기간에 걸쳐 어떻게 변해야 할지를 특정하는, 상기 고레벨 애니메이션 서브시스템에 의해 상기 저레벨 애니메이션 서브시스템으로 제공되는 정보를 포함함으로써, 상기 저레벨 애니메이션 서브시스템이 상기 애니메이션의 몇몇 프레임들을 처리하기 위한 정보를 가질 것을 보증하는 시스템.
  7. 제6항에 있어서, 상기 고레벨 애니메이션 서브시스템과 상기 저레벨 애니메이션 서브시스템 간의 통신들은 비동기적인 시스템.
  8. 애니메이션 시스템들을 동기화하기 위한 방법에 있어서,
    애니메이션 애플리케이션으로부터 고레벨 애니메이션 서브시스템으로 애니메이션 데이터를 수신하는 단계; 및
    저레벨 애니메이션 서브시스템이 상기 애니메이션 데이터에 관련된 애니메이션을 디스플레이할 수 있게 하기 위해, 통신 채널을 통해 통신 프로토콜에 따라 상기 고레벨 애니메이션 서브시스템으로부터 상기 저레벨 애니메이션 서브시스템으로 애니메이션 정보를 전송하는 단계
    를 포함하고,
    상기 통신 프로토콜은, 애니메이션을 지정하는 것을 제공하고, 상기 애니메이션이 특정 기간에 걸쳐 어떻게 변해야 하는지에 관한 명령어들을 제공하여, 상기 고레벨 애니메이션 서브시스템은 변경가능한 리프레시 속도로 실행되는 한편 상기 저레벨 애니메이션 서브시스템은 일정한 디스플레이 프레임 리프레시 속도로 상기 애니메이션의 몇몇 프레임들을 처리할 수 있게 하며,
    상기 통신 프로토콜은 고레벨 애니메이션 서브시스템 타이밍 구성요소로부터 저레벨 애니메이션 서브시스템 타이밍 구성요소로 송신되는 메시지들을 포함하며,
    상기 송신되는 메시지들은,
    클럭을 생성하는 메시지;
    클럭 속성들을 갱신하는 메시지;
    클럭에 간격을 추가하는 메시지;
    클럭에 대한 모든 간격들을 제거하는 메시지; 및
    클럭을 삭제하는 메시지인 방법.
  9. 동기화된 애니메이션 시스템으로서,
    애플리케이션으로부터 애니메이션 정보를 수신하도록 구성된 고레벨 애니메이션 서브시스템;
    상기 애니메이션 정보에 따라 하나 이상의 애니메이션들을 렌더링하도록 구성된 저레벨 애니메이션 서브시스템;
    상기 저레벨 애니메이션 서브시스템 내의 하나 이상의 저레벨 클럭들을 모니터링하고, 상기 저레벨 클럭들을 하나 이상의 고레벨 클럭들에 동기화시키도록 구성된 저레벨 타이밍 엔진; 및
    하나 이상의 고레벨 애니메이션 객체들에 따라 상기 고레벨 애니메이션 서브시스템 내의 하나 이상의 고레벨 클럭들을 모니터링하고, 상기 저레벨 타이밍 엔진에 통신 프로토콜에 맞는 애니메이션 메시지들을 전송하도록 구성된 고레벨 타이밍 엔진
    을 포함하고,
    상기 저레벨 타이밍 엔진은, 고레벨 클럭 및 상기 고레벨 클럭을 저레벨 클럭에 동기화시키기 위해 상기 고레벨 클럭이 얼마나 변경되어야 하는지의 정도를 식별하는 동기화 메시지를 상기 통신 프로토콜에 따라 상기 고레벨 타이밍 엔진에 송신하도록 구성되며,
    상기 고레벨 타이밍 엔진으로부터 상기 저레벨 타이밍 엔진으로 전송되는 상기 애니메이션 메시지들은 하나 이상의 애니메이션 객체들, 및 상기 애니메이션 객체들이 특정 기간에 걸쳐 어떻게 변해야 할지를 지정하는 동기화된 애니메이션 시스템.
  10. 동기화된 애니메이션 렌더링 시스템 내의 고레벨 애니메이션 서브시스템에 있어서,
    하나 이상의 고레벨 클럭들;
    상기 하나 이상의 고레벨 클럭들을 추적하도록 구성된 고레벨 타이밍 엔진;
    애니메이션의 적어도 일부를 식별하는 하나 이상의 애니메이션 객체들; 및
    통신 프로토콜 내에 포함된 메시지들에 따라 저레벨 애니메이션 서브시스템에 애니메이션 데이터를 전송하기 위한 수단
    을 포함하고,
    상기 저레벨 애니메이션 서브시스템에 전송된 통신 프로토콜 메시지들은 상기 저레벨 애니메이션 서브시스템 내에서 상기 애니메이션 객체들 중 적어도 하나를 식별하고, 상기 식별된 애니메이션 객체들이 특정 기간에 걸쳐 어떻게 변해야 할지에 대한 데이터를 제공하며,
    상기 통신 프로토콜은,
    생성할 애니메이션을 설명하는 애니메이션 생성 메시지; 및
    갱신할 애니메이션 및 갱신되는 속성들을 식별하는 애니메이션 갱신 메시지
    를 더 포함하는 고레벨 애니메이션 서브시스템.
  11. 애플리케이션으로부터 애니메이션 정보를 수신하는 고레벨 애니메이션 서브시스템;
    상기 애니메이션 정보에 따라 하나 이상의 애니메이션들을 렌더링하는 저레벨 애니메이션 서브시스템;
    상기 저레벨 애니메이션 서브시스템 내의 하나 이상의 클럭들을 모니터링하고, 상기 클럭들을 상기 고레벨 애니메이션 서브시스템 내의 하나 이상의 클럭들에 동기화시키는 제1 타이밍 엔진; 및
    하나 이상의 고레벨 애니메이션 객체들에 따라 상기 고레벨 애니메이션 서브시스템 내의 하나 이상의 클럭들을 모니터링하고, 하나 이상의 애니메이션 객체 및 상기 애니메이션 객체들이 특정 기간에 걸쳐 어떻게 변해야 하는지를 지정하고 통신 프로토콜에 맞는 애니메이션 메시지들을 상기 제1 타이밍 엔진에 전송하는 제2 타이밍 엔진
    을 포함하고,
    고레벨 애니메이션 객체는, 상기 고레벨 애니메이션 객체를 반영하는 저레벨 애니메이션 객체를 생성 및 갱신하는 통신 프로토콜 메시지들을 통해 상기 저레벨 애니메이션 객체와 통신하며,
    상기 고레벨 애니메이션 서브시스템의 클럭과 동기화하는 애니메이션에 관한 클럭들 중 하나를 식별하는 동기화 메시지를 포함하며, 높고 일정한 디스플레이 프레임 리프레시 속도로 디스플레이될 수 있는 애니메이션 데이터의 몇몇 프레임들을 상기 저레벨 애니메이션 서브시스템에 제공하는 방식으로 상기 고레벨 애니메이션 서브시스템으로부터 변경가능한 속도로 수신되는 메시지들을 통해 상기 클럭들 및 애니메이션 객체들이 생성 및 갱신되는 시스템.
  12. 제11항에 있어서, 상기 제1 타이밍 엔진은, "미디어 슬립으로 동기화(synchronize with media slip)" 메시지를 송신함으로써 상기 저레벨 애니메이션 서브시스템 내의 클럭을 상기 고레벨 애니메이션 서브시스템 내의 클럭과 동기화하는 시스템.
  13. 애니메이션 렌더링 서브시스템에 있어서,
    하나 이상의 클럭들;
    상기 하나 이상의 클럭들을 추적하는 타이밍 엔진;
    애니메이션의 적어도 일부를 식별하는 하나 이상의 애니메이션 객체들; 및
    저레벨 애니메이션 서브시스템 내의 적어도 하나의 애니메이션 객체를 식별하고 특정 기간에 걸쳐 상기 식별된 적어도 하나의 애니메이션 객체를 변경하기 위한 데이터를 제공하는 메시지들에 따라 상기 저레벨 애니메이션 서브시스템에 애니메이션 데이터를 전송하기 위한 수단
    을 포함하고,
    상기 메시지들은, 렌더링할 초기값 및 값 유형을 식별하는 정적인 값 생성 메시지, 및 갱신할 정적인 값 및 상기 정적인 값에 대한 새로운 값을 식별하는 정적인 값 갱신 메시지로 구성된 메시지들의 그룹으로부터 선택된 메시지를 포함하는 애니메이션 렌더링 서브시스템.
  14. 저레벨 애니메이션 서브시스템으로서,
    하나 이상의 클럭들;
    애니메이션의 적어도 일부를 식별하는 하나 이상의 애니메이션 객체들; 및
    상기 하나 이상의 애니메이션 객체들에 관한 하나 이상의 클럭들을 추적하는 타이밍 엔진
    을 포함하고,
    고레벨 애니메이션 서브시스템의 클럭과 동기화하는 애니메이션에 관한 클럭들 중 하나를 식별하는 동기화 메시지를 포함하며, 높고 일정한 디스플레이 프레임 리프레시 속도로 디스플레이될 수 있는 애니메이션 데이터의 몇몇 프레임들을 상기 저레벨 애니메이션 서브시스템에 제공하는 방식으로 상기 고레벨 애니메이션 서브시스템으로부터 변경가능한 속도로 수신되는 메시지들을 통해 상기 클럭들 및 애니메이션 객체들이 생성 및 갱신되는 저레벨 애니메이션 서브시스템.
  15. 컴퓨팅 장치를 위한 디스플레이 장치로서,
    컴퓨터 모니터에 통신으로 연결하기 위한 인터페이스; 및
    애니메이션 렌더링 서브시스템
    을 포함하며,
    상기 애니메이션 렌더링 서브시스템은,
    하나 이상의 클럭들;
    상기 하나 이상의 클럭들을 추적하는 타이밍 엔진;
    애니메이션의 적어도 일부를 식별하는 하나 이상의 애니메이션 객체들; 및
    저레벨 애니메이션 서브시스템 내의 적어도 하나의 애니메이션 객체를 식별하고 특정 기간에 걸쳐 상기 식별된 적어도 하나의 애니메이션 객체를 변경하기 위한 데이터를 제공하는 메시지들에 따라 상기 저레벨 애니메이션 서브시스템에 애니메이션 데이터를 전송하기 위한 수단
    을 포함하고,
    상기 메시지들은, 렌더링할 초기값 및 값 유형을 식별하는 정적인 값 생성 메시지, 및 갱신할 정적인 값 및 상기 정적인 값에 대한 새로운 값을 식별하는 정적인 값 갱신 메시지로 구성된 메시지들의 그룹으로부터 선택된 메시지를 포함하는 컴퓨팅 장치를 위한 디스플레이 장치.
  16. 삭제
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
  21. 삭제
  22. 삭제
  23. 삭제
  24. 삭제
  25. 삭제
  26. 삭제
KR1020067004497A 2003-10-24 2006-03-03 애니메이션 렌더링 시스템 및 애니메이션 애플리케이션을처리하기 위한 방법 KR101075378B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/692,673 US7034834B2 (en) 2003-10-24 2003-10-24 Communication protocol for synchronizing animation systems
US10/692,673 2003-10-24
PCT/US2004/023626 WO2005045567A2 (en) 2003-10-24 2004-07-22 Communication protocol for synchronizing animation systems

Publications (2)

Publication Number Publication Date
KR20060126919A KR20060126919A (ko) 2006-12-11
KR101075378B1 true KR101075378B1 (ko) 2011-10-24

Family

ID=34522189

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020067004497A KR101075378B1 (ko) 2003-10-24 2006-03-03 애니메이션 렌더링 시스템 및 애니메이션 애플리케이션을처리하기 위한 방법

Country Status (11)

Country Link
US (3) US7034834B2 (ko)
EP (2) EP2461250A1 (ko)
JP (1) JP4638442B2 (ko)
KR (1) KR101075378B1 (ko)
CN (1) CN101416221B (ko)
AU (2) AU2004287128B2 (ko)
BR (1) BRPI0414504A (ko)
CA (1) CA2537136C (ko)
MX (1) MXPA06003356A (ko)
RU (1) RU2363050C2 (ko)
WO (1) WO2005045567A2 (ko)

Families Citing this family (44)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB9722766D0 (en) 1997-10-28 1997-12-24 British Telecomm Portable computers
US7469381B2 (en) 2007-01-07 2008-12-23 Apple Inc. List scrolling and document translation, scaling, and rotation on a touch-screen display
US7296243B2 (en) 2002-03-19 2007-11-13 Aol Llc Animating display motion
US7034834B2 (en) * 2003-10-24 2006-04-25 Microsoft Corporation Communication protocol for synchronizing animation systems
US8510662B1 (en) * 2005-06-27 2013-08-13 Oracle America, Inc. Effects framework for GUI components
US7450130B2 (en) * 2005-09-14 2008-11-11 Microsoft Corporation Adaptive scheduling to maintain smooth frame rate
US9019300B2 (en) 2006-08-04 2015-04-28 Apple Inc. Framework for graphics animation and compositing operations
US8130226B2 (en) * 2006-08-04 2012-03-06 Apple Inc. Framework for graphics animation and compositing operations
US8234392B2 (en) 2006-11-17 2012-07-31 Apple Inc. Methods and apparatuses for providing a hardware accelerated web engine
US8813100B1 (en) 2007-01-07 2014-08-19 Apple Inc. Memory management
US20080168402A1 (en) 2007-01-07 2008-07-10 Christopher Blumenberg Application Programming Interfaces for Gesture Operations
US8656311B1 (en) 2007-01-07 2014-02-18 Apple Inc. Method and apparatus for compositing various types of content
US7903115B2 (en) 2007-01-07 2011-03-08 Apple Inc. Animations
US7872652B2 (en) * 2007-01-07 2011-01-18 Apple Inc. Application programming interfaces for synchronization
US20080168478A1 (en) * 2007-01-07 2008-07-10 Andrew Platzer Application Programming Interfaces for Scrolling
US7844915B2 (en) * 2007-01-07 2010-11-30 Apple Inc. Application programming interfaces for scrolling operations
US8321593B2 (en) 2007-01-08 2012-11-27 Apple Inc. Time synchronization of media playback in multiple processes
US8643653B2 (en) * 2007-06-08 2014-02-04 Apple Inc. Web-based animation
US8645827B2 (en) 2008-03-04 2014-02-04 Apple Inc. Touch event model
US8174502B2 (en) * 2008-03-04 2012-05-08 Apple Inc. Touch event processing for web pages
US8416196B2 (en) 2008-03-04 2013-04-09 Apple Inc. Touch event model programming interface
US8717305B2 (en) * 2008-03-04 2014-05-06 Apple Inc. Touch event model for web pages
US20100207951A1 (en) * 2009-01-20 2010-08-19 Pvt Solar, Inc. Method and device for monitoring operation of a solar thermal system
US20100207950A1 (en) * 2009-02-17 2010-08-19 Microsoft Corporation Defining simple and complex animations
US8285499B2 (en) 2009-03-16 2012-10-09 Apple Inc. Event recognition
US8566044B2 (en) * 2009-03-16 2013-10-22 Apple Inc. Event recognition
US8566045B2 (en) 2009-03-16 2013-10-22 Apple Inc. Event recognition
US9311112B2 (en) * 2009-03-16 2016-04-12 Apple Inc. Event recognition
US9684521B2 (en) 2010-01-26 2017-06-20 Apple Inc. Systems having discrete and continuous gesture recognizers
FR2956547B1 (fr) * 2010-02-15 2012-09-14 Sagem Wireless Procede et un systeme de transfert d'une image entre deux appareils de telephonie mobile
US10216408B2 (en) 2010-06-14 2019-02-26 Apple Inc. Devices and methods for identifying user interface objects based on view hierarchy
US9298363B2 (en) 2011-04-11 2016-03-29 Apple Inc. Region activation for touch sensitive surface
US8884970B2 (en) 2011-09-09 2014-11-11 Microsoft Corporation Aligning script animations with display refresh
US9196075B2 (en) 2011-11-14 2015-11-24 Microsoft Technology Licensing, Llc Animation of computer-generated display components of user interfaces and content items
WO2013185111A2 (en) 2012-06-07 2013-12-12 Apple Inc. Methods and apparatus for synchronization among integrated circuits within a wireless network
RU2540786C2 (ru) * 2013-01-11 2015-02-10 Корпорация "САМСУНГ ЭЛЕКТРОНИКС Ко., Лтд." Способ и система динамической генерации трехмерных анимационных эффектов
EP2948858B1 (en) 2013-03-15 2018-06-06 Apple Inc. Method and apparatus for multi-drop digital bus
US9733716B2 (en) 2013-06-09 2017-08-15 Apple Inc. Proxy gesture recognizer
US9858899B2 (en) * 2013-06-13 2018-01-02 Microsoft Technology Licensing, Llc Managing transitions of adaptive display rates for different video playback scenarios
US10157593B2 (en) 2014-02-24 2018-12-18 Microsoft Technology Licensing, Llc Cross-platform rendering engine
US10085224B2 (en) 2014-11-19 2018-09-25 Apple Inc. Methods and apparatus for synchronization of media playback within a wireless network
CN105468358B (zh) 2015-11-17 2019-11-05 腾讯科技(深圳)有限公司 一种移动游戏的数据处理方法以及装置
CN113012027A (zh) * 2019-12-19 2021-06-22 深圳市万普拉斯科技有限公司 动画刷新请求控制方法、装置、计算机设备和存储介质
CN115878065B (zh) * 2023-02-16 2023-05-23 青岛意想意创技术发展有限公司 互动显示单元构成的互动系统的控制方法和装置

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5852449A (en) * 1992-01-27 1998-12-22 Scientific And Engineering Software Apparatus for and method of displaying running of modeled system designs
US5867175A (en) * 1996-05-24 1999-02-02 Microsoft Corporation Method and apparatus for scriping animation
US6563503B1 (en) * 1999-05-07 2003-05-13 Nintendo Co., Ltd. Object modeling for computer simulation and animation
US6924807B2 (en) * 2000-03-23 2005-08-02 Sony Computer Entertainment Inc. Image processing apparatus and method
US7038690B2 (en) * 2001-03-23 2006-05-02 Microsoft Corporation Methods and systems for displaying animated graphics on a computing device
US6919900B2 (en) * 2001-03-23 2005-07-19 Microsoft Corporation Methods and systems for preparing graphics for display on a computing device
US7161599B2 (en) * 2001-10-18 2007-01-09 Microsoft Corporation Multiple-level graphics processing system and method
CN1203418C (zh) * 2001-12-30 2005-05-25 利文劲 一种在互联网上实现交互式动画系统的方法
US7034834B2 (en) * 2003-10-24 2006-04-25 Microsoft Corporation Communication protocol for synchronizing animation systems
JP4702127B2 (ja) * 2006-03-22 2011-06-15 日本電気株式会社 仮想計算機システム及びその物理リソース再構成方法並びにプログラム

Also Published As

Publication number Publication date
CA2537136C (en) 2011-05-10
JP2007519072A (ja) 2007-07-12
KR20060126919A (ko) 2006-12-11
US7265758B2 (en) 2007-09-04
US20060061576A1 (en) 2006-03-23
AU2010200148A1 (en) 2010-02-04
US20050088443A1 (en) 2005-04-28
US20060103656A1 (en) 2006-05-18
US7034834B2 (en) 2006-04-25
AU2004287128B2 (en) 2010-02-18
AU2010200148B2 (en) 2011-08-25
RU2006113603A (ru) 2007-11-27
BRPI0414504A (pt) 2006-11-07
US7436409B2 (en) 2008-10-14
EP2461250A1 (en) 2012-06-06
RU2363050C2 (ru) 2009-07-27
MXPA06003356A (es) 2006-06-08
CN101416221B (zh) 2012-09-05
JP4638442B2 (ja) 2011-02-23
CA2537136A1 (en) 2005-05-19
EP1676183A4 (en) 2009-11-18
WO2005045567A2 (en) 2005-05-19
AU2004287128A1 (en) 2005-05-19
EP1676183A2 (en) 2006-07-05
WO2005045567A3 (en) 2009-02-19
CN101416221A (zh) 2009-04-22

Similar Documents

Publication Publication Date Title
KR101075378B1 (ko) 애니메이션 렌더링 시스템 및 애니메이션 애플리케이션을처리하기 위한 방법
US9977648B2 (en) Using a plurality of buffers to provide audio for synchronized playback to multiple audio devices having separate device clocks
CN111818120B (zh) 端云用户交互方法、系统及相应设备、存储介质
CA2084574C (en) Synchronization techniques for multimedia data streams
JP4937256B2 (ja) アニメーション間の滑らかな遷移
EP3357253B1 (en) Gapless video looping
EP1708079A1 (en) System for efficient remote projection of rich interactive user interfaces
US5608651A (en) Method and apparatus for scheduling and mixing media in a multi-media environment
JPH07234795A (ja) マルチメディア動作を同期化する方法
KR20060109283A (ko) 그래픽 원격화 시스템을 위한 동기화된 그래픽 및 영역데이터
WO2024021353A1 (zh) 直播间展示方法、装置、电子设备及存储介质
JP2005038198A (ja) 情報処理装置
CN115065866B (zh) 一种视频生成方法、装置、设备及存储介质
Wloka Dissertation Proposal: Time-Critical Graphics

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
LAPS Lapse due to unpaid annual fee