KR101143095B1 - 컴퓨터 디스플레이 출력시의 애니메이션 및 매체 조정 - Google Patents

컴퓨터 디스플레이 출력시의 애니메이션 및 매체 조정 Download PDF

Info

Publication number
KR101143095B1
KR101143095B1 KR1020050100758A KR20050100758A KR101143095B1 KR 101143095 B1 KR101143095 B1 KR 101143095B1 KR 1020050100758 A KR1020050100758 A KR 1020050100758A KR 20050100758 A KR20050100758 A KR 20050100758A KR 101143095 B1 KR101143095 B1 KR 101143095B1
Authority
KR
South Korea
Prior art keywords
animation
delete delete
storyboard
tree
timing
Prior art date
Application number
KR1020050100758A
Other languages
English (en)
Other versions
KR20060055321A (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 KR20060055321A publication Critical patent/KR20060055321A/ko
Application granted granted Critical
Publication of KR101143095B1 publication Critical patent/KR101143095B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/103Formatting, i.e. changing of presentation of documents
    • G06F40/109Font handling; Temporal or kinetic typography
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/40Information retrieval; Database structures therefor; File system structures therefor of multimedia data, e.g. slideshows comprising image and additional audio data
    • G06F16/43Querying
    • G06F16/438Presentation of query results
    • G06F16/4387Presentation of query results by the use of playlists
    • G06F16/4393Multimedia presentations, e.g. slide shows, multimedia albums
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/12Use of codes for handling textual entities
    • G06F40/14Tree-structured documents
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/12Use of codes for handling textual entities
    • G06F40/14Tree-structured documents
    • G06F40/143Markup, e.g. Standard Generalized Markup Language [SGML] or Document Type Definition [DTD]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Artificial Intelligence (AREA)
  • Health & Medical Sciences (AREA)
  • Multimedia (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Processing Or Creating Images (AREA)
  • User Interface Of Digital Computer (AREA)

Abstract

스토리보드 객체가 컴퓨터 그래픽 디스플레이 상에 표시된 다수 요소들의 애니메이션 및/또는 매체를 조정하는 방법 및 시스템이 설명된다. 그룹으로서 함께 애니메이트/플레이되도록, 스토리보드는 요소 트리 내의 요소의 속성을 타임라인에 관련시켜, 스토리보드와 관련된 속성들이 스토리보드를 개시, 정지, 탐색 또는 일시중지시키게 한다. 상태 변경에 응답하여 값을 변경시키는 속성 트리거, 및 이벤트를 시작시키는 이벤트 트리거를 포함하고, 표시된 정보와의 사용자 상호작용에 의해 제어되는 것과 같은 트리거는 스토리보드가 개시, 정지, 일시중지 및 탐색하게 할 수 있다. 스토리보드는 XAML 기반의 프로그램에서 사용될 수 있고, 요소와 직접 관련되거나, 간접적으로 스타일을 통해 요소와 관련될 수 있다. 복합 속성 및 변경가능한 것이 지원된다. 매체 재생은 스토리보드를 통해 제어됨으로써, 그외의 매체 재생 및/또는 애니메이션과 조정될 수 있다.
스토리보드, 타임라인, 요소 트리, 타이밍 트리, 속성 트리거, 이벤트 트리거

Description

컴퓨터 디스플레이 출력시의 애니메이션 및 매체 조정{COORDINATING ANIMATIONS AND MEDIA IN COMPUTER DISPLAY OUTPUT}
도 1은 본 발명이 사용될 수 있는 예시적인 컴퓨터 시스템을 나타내는 블록도.
도 2는 본 발명의 일 양상에 따른 매체 통합 계층 아키텍처를 나타내는 블록도.
도 3은 본 발명의 일 양상에 따라, 비주얼 API 계층과 인터페이싱하기 위해 마크업 언어 코드를 해석하는 컴포넌트를 나타낸 도면.
도 4 및 도 5는 본 발명의 일 양상에 따라, 클록 속성 데이터를 경과 데이터 판정시 사용하기 위한 간격으로 변환하는 타이밍 컴포넌트를 갖고 있는 2레벨 아키텍처를 개괄적으로 나타낸 블록도.
도 6은 본 발명의 일 양상에 따라, 스토리보드(storyboard)가 타임라인(timeline)을 요소 트리의 요소들에 관련시키기 위해 코드로 배열될 수 있는 방식을 나타낸 도면.
도 7은 본 발명의 일 양상에 따라, 스토리보드 타임라인을 나타내기 위해 인스턴스화한 클록을 포함하는 데이터 구조들 사이의 관계를 나타낸 도면.
<도면의 주요 부분에 대한 부호의 설명>
204 : 매체 API
206 : 고레벨 합성 및 애니메이션 엔진
210 : 저레벨 합성 및 애니메이셔 엔진
212 : 그래픽 서브시스템
302 : 마크업 코드
304 : 구문해석기/번역기
314 : 요소 트리/속성 시스템
402 : 타이밍 트리
408 : 이벤트 리스트 생성기
410 : 간격 생성기
414 : 저레벨 계산 엔진
본 발명은 일반적으로 컴퓨터 시스템에 관한 것으로, 더욱 구체적으로 컴퓨터 시스템 상에 표시하기 위한 그래픽 및 그외 다른 시청각 정보의 프로세싱에 관한 것이다.
현대의 컴퓨팅 시스템에서, 마크업 언어 기술의 개발은 프로그램 제작자가 사용자에게 유용한 정보를 제공하고, 표시된 정보와의 사용자 상호작용에 대응하는 요청 등을 수신하는 간단한 방식이 생기게 했다. 일반적으로, 마크업은 요소 트리 를 구성하도록 처리되고, 그 다음에 요소 트리는 대응하는 출력 데이터를 디스플레이 상으로 렌더링하도록 프로세스된다.
미합중국 특허 출원 제10/693,630호 및 제10/693,822호는 그 중에서도 특히, 일반적으로 프로그램 제작을 단순화하도록 되어 있는 한가지 그러한 마크업 언어, 즉 XAML(eXtensible Application Markup Language)을 설명하는 (본 발명의 양수인에게 양도된) 몇몇 특허 출원들 중의 하나들이다. 일반적으로, 프로그램 제작자는 장면(scene) 그래프 데이터 구조 내에 객체를 배치하기 위해 응용 프로그래밍 인터페이스(API)에 대한 호출과 함께 XAML 명령어를 사용한다. 예를 들어, 사용자 인터페이스를 형성하기 위해, XAML 기반의 프로그램은 일반적으로 계층적 장면 그래프를 형성하기 위해 자식(child) 비주얼(visual) 객체를 그외 다른 비주얼 객체에 추가하고, 기하 데이터, 이미지 데이터 및 출력을 위한 기타 데이터와 같은 명령어 리스트를 기록하며, 비주얼 객체에 관한 변환, 클리핑(clipping) 및 불투명도 속성을 지정할 수 있다.
상술된 특허 출원에서 설명된 XAML의 특성들중 하나는 프로그램이 애니메이션 파라미터 및/또는 매체 관련 데이터를 지정한 다음에, 대응하는 애니메이션 및/또는 매체를 포함하는 대응하는 표시 데이터를 효율적으로 출력할 수 있게 하는 특성이다. 예를 들어, 프로그램 제작자는 소정의 표시된 객체 속성이 시간에 따라 어떻게 변하는 지와 같은, 파라미터와 관련하여 원하는 애니메이션 효과를 설명할 수 있는데; 예를 들어, 직사각형의 불투명도 속성은 소정의 지속기간 동안, 불투명에서 투명으로 서서히 희미해지고, 그 다음에 다시 본래상태로 되도록 설정될 수 있다. 일반적인 상황에서, 시스템은 효과를 달성하도록 시간에 따라 변경된 이미지를 정기적으로 리드로잉 위해 프로그램 코드 자체를 요구하기 보다 오히려, 프로그램 코드가 초기에 애니메이션 파라미터만을 지정할 필요가 있도록 애니메이션을 관리한다.
이 때문에, 한 구현 예에서, 운영 체계는 시간에 따른 애니메이션의 전개를 정의하는 타임라인(timeline) 객체의 사용에 대비하고, 필요시, 클록 객체는 그 애니메이션을 위한 타임라인을 나타내기 위해 인스턴스화된다. 애니메이트된 이미지(animated image; 동화상)를 그것의 갱신된 속성으로 재드로잉(redrawing)하기 위해 정기적으로 응용 프로그램을 (예를 들어, 프레임 당 한번) 다시 호출하는 대신에, 클록은 애니메이트되고 있는 표시된 객체를 위한 갱신된 시변 속성 파라미터 또는 파라미터들을 결정하기 위해 저레벨 그래픽스 컴포넌트에 의해 사용되고, 이때 이미지는 갱신된 속성 데이터에 기초하여 다시 그려진다. 일반적으로, 매체도 이와 유사하게 처리된다.
그러한 간단한 프로그래밍은 이와 같이 프로그램 제작자에게 사용자 인터페이스의 일부로서 애니메이션 및 매체를 구현하기 위한 향상되고 간단한 방식을 제공하지만, 타이밍 정보는 지금까지 각각의 애니메이션 또는 매체 요소에 개별적으로 적용되어야 했다. 그 결과, 프로그램 제작자는 지금까지, 상이한 타임라인에서 발생할 수 있는 다양한 액션들(예를 들어, 애니메이션 및 매체의 개시 및 정지 시간들, 및/또는 수신되는 이벤트들이 처리되는 방식)을 수동으로 동기시킬 필요가 있었다. 이것은 프로그램 제작자가 속성들을 동기시키고자 한 경우에도 한 애니메 이트된 속성이 (적어도 일시적으로) 다른 애니메이트된 속성보다 앞서는 것과 같은 불일치 상태를 초래할 수 있다. 이것은 또한 복잡성을 추가하는데; 예를 들어, 재개시 이벤트에서, 그 이벤트에 관련된 개별 애니메이션들을 각각 찾아내어 재개시할 필요가 있다.
간단히 설명하면, 본 발명은 스토리보드(storyboard)라고 하는 네임드 타임라인(named timeline) 객체 내에 애니메이션 세트들을 그룹화함으로써 제작자들이 그 애니메이션 세트들을 스케쥴링할 수 있게 하는 방법 및 시스템을 제공한다. 일 구현예에서, 스토리보드 API 세트는 여러가지 객체 및 속성에 영향을 미치는 타임라인들을 단일 타임라인 트리 내로 결합하는 방식을 제공하여, 프로그램 제작자가 타이밍 이벤트의 복합 세트들을 간단한 방식으로 구성하여 제어할 수 있게 한다. 스토리보드는 애니메이션/비디오/오디오의 특정 인스턴스 상에서 사용되거나, 또는 특정 스타일의 애니메이션에 사용될 수 있다.
한 구현예에서, 스토리보드는 타임라인 트리가 요소 트리 내의 요소들에 대해 지정될 수 있게 하는 객체를 포함한다. 트리 내의 각 타임라인은 요소의 속성값을 설정하고, 요소 및 그것의 서브-트리에 대한 애니메이션을 제어한다. 스토리보드는 본질적으로, 개시되거나, 정지 또는 일시중지되거나, 탐색을 위해 사용될 수 있는 특정 유형의 타임라인 객체에 대응함으로써, 그 스토리보드와 관련되는 매체의 동작 및/또는 애니메이트된 요소들의 양상을 제어한다.
스토리보드는 또한 한 요소와 관련되고 독립적으로 개시될 수 있는 상위 레 벨 타임라인의 컬렉션(collection)을 포함할 수 있다. 예를 들어, 제작자는 2개의 상이한 애니메이션을 동일한 스토리보드 컬렉션 내에 있는 요소와 관련시킬 수 있고, 이들 애니메이션은 독립적으로 트리거될 수 있을 지라도, 하나의 유닛으로서 포함된다. 그러므로, 스토리보드는 스토리보드 내의 애니메이션들이 스토리보드가 첨부되는 요소에 관한 그들의 타겟을 분석할 수 있게 하는 요소 트리와 타이밍 트리 사이에 접속 점을 제공한다.
스토리보드는 또한 상태 변경, 이벤트, 또는 그외의 액션에 의해 활성화될 수 있는 트리거의 컬렉션을 포함할 수 있고, 트리거가 활성화될 때(예를 들어, 타임라인의 개시 또는 정지시) 실행될 확장가능 액션의 세트를 포함할 수 있다. 스토리보드는 사용자가 코드로부터 스토리보드 내의 타임라인을 상호작용으로 개시하고 정지할 수 있게 하는 하위 객체 모델의 일부분이다.
일반적으로, 스토리보드 내의 타임라인은 다양한 서브트리, 요소 및 기타 객체에 적용될 수 있는 애니메이션 템플릿(template)을 나타낸다. 스토리보드는 트리 내의 프레임워크 요소 상에 직접 설정되거나, 또는 스타일(버튼의 컬러, 크기 및 그외의 속성과 같은 요소에 적용될 수 있는 하나 이상의 데이터 값을 포함하는 자원)을 통해 프레임워크 요소에 적용될 수 있다. 스토리보드는 또한, 오리지널 정보가 복원될 수 있도록, 오리지널 정보를 복제한 다음에 복제된 정보를 연산하는 변경가능한 것들과 같은 복제를 지원하는 객체에 애니메이션을 적용하기 위해 사용될 수 있다.
그러므로, 스토리보드는 여러가지 객체 및 속성에 영향을 미치는 다른 독립 된 타임라인을 단일 타임라인 트리 내로 결합하는 방식을 제공하여, 프로그램 제작자가 타이밍 이벤트의 복합 세트를 간단한 방식으로 구성하여 제어할 수 있게 한다. 예를 들어, 타이밍 트리와 요소 트리의 분리는 애니메이션 세트를 순차적으로 실행하거나, 복잡한 타이밍 구조를 루핑하는 것과 같은, 시간 조작을 하기 위해, 제작자가 타이밍 트리를 사용할 수 있게 한다. 스토리보드는 애니메이션/비디오/오디오의 특정 인스턴스 상에서 사용되거나, 또는 특정 스타일의 애니메이션에 사용될 수 있다.
스토리보드는 제작자가 애니메이트하기 위한 객체 및 속성, 및 애니메이트하기 위한 기본값을 지정할 수 있게 하는 속성과 관련된다. 스토리보드는 개별적으로 시간에 따라 각 애니메이션의 변경을 정하는 대신에, 제작자가 애니메이션 세트를 그룹으로서 구성하여 제어할 수 있게 함으로써, 병렬 애니메이션 및 애니메이션의 순서(후술됨)를 포함하여, 복합 방식들로 서로 동기되는 애니메이션의 간단한 작성을 가능하게 한다.
스토리보드는 속성 트리거 및 이벤트 트리거를 사용할 수 있게 하여 그들의 동작(예를 들어, 개시, 일시중지, 탐색 및 정지 액션)을 제어한다. 일반적으로, 속성 트리거는 참 또는 거짓과 같은 소정의 상태/값에 대응하는 반면에, 이벤트를 시작시킨다. 예를 들어, 속성 트리거는 마우스가 한 요소 위에 있었으면 참 값을 가질 수 있고, 그 요소 위에 있지 않으면 거짓 값을 가질 수 있고, 마우스를 그 요소 상에서 클릭하면 이벤트가 시작될 수 있다. 각각의 참 또는 거짓 상태 및/또는 이벤트는 스토리보드 내에서 따로 개시, 정지, 일시중지, 및/또는 탐색하기 위해 사용될 수 있다. 이러한 방식으로, 애니메이션은 표시된 요소 트리 표현과의 사용자 상호작용을 통해 제어가능하다. 이벤트 트리거 이외에, 속성 엔터/엑시트(enter/exit) 트리거는 또한 타임라인의 트리거시에 사용하기 위해 이용가능하다.
스토리보드 및 트리거는 스타일링될 수 있는데, 스타일은 제작자가 하나 이상의 속성을 나타내는 데이터를 함께 그룹화할 수 있게 하고, 하나 이상의 속성은 다음에 하나의 세트로서 요소의 대응하는 속성에 적용될 수 있다. 스타일 내의 이들 속성은 애니메이트되고 및/또는 트리거에 대응할 수 있다.
그 밖의 다른 이점 및 장점은 첨부 도면을 참조한 다음의 상세한 설명으로부터 더욱 명백해질 것이다.
예시적인 동작 환경
도 1은 본 발명이 구현될 수 있는 적합한 컴퓨팅 시스템 환경(100)의 예를 도시한 것이다. 컴퓨팅 시스템 환경(100)은 단지 적합한 컴퓨팅 환경의 일 예이며, 본 발명의 사용 또는 기능의 범위에 제한을 가하도록 의도된 것은 아니다. 컴퓨팅 환경(100)은 예시적인 동작 환경(100)에 도시된 구성요소들 중의 임의의 하나 또는 조합에 관하여 임의의 종속성 또는 요구사항을 갖는 것으로 해석되어서는 안된다.
본 발명은 다수의 기타 범용 또는 전용 컴퓨팅 시스템 환경 또는 구성과 함께 동작가능하다. 본 발명과 함께 사용하기에 적합하게 될 수 있는 널리 공지된 컴퓨팅 시스템, 환경 및/또는 구성의 예는 퍼스널 컴퓨터, 서버 컴퓨터, 핸드-헬드 또는 랩탑 장치, 태블릿 장치, 멀티프로세서 시스템, 마이크로프로세서 기반의 시스템, 셋탑 박스, 프로그램가능한 소비자 전자제품, 네트워크 PC, 미니컴퓨터, 메인프레임 컴퓨터, 임의의 상기 시스템 또는 장치를 포함하는 분산 컴퓨팅 환경 등을 포함하는데, 이것에 제한되지는 않는다.
본 발명은 컴퓨터에 의해 실행되는 프로그램 모듈과 같은 컴퓨터 실행가능한 명령어들의 일반적인 문맥으로 설명될 수 있다. 일반적으로, 프로그램 모듈은 특정 태스크를 실행하거나 특정 추상 데이터형을 구현하는 루틴, 프로그램, 객체, 컴포넌트, 데이터 구조 등을 포함한다. 본 발명은 또한 통신 네트워크를 통해 링크되는 원격 프로세싱 장치에 의해 태스크가 실행되는 분산 컴퓨팅 환경에서 실시될 수 있다. 분산 컴퓨팅 환경에서, 프로그램 모듈은 메모리 저장 장치를 포함하는 로컬 및 원격 컴퓨터 저장 매체 내에 위치될 수 있다.
도 1을 참조하면, 본 발명을 구현하기 위한 예시적인 시스템은 컴퓨터(110)의 형태의 범용 컴퓨팅 장치를 포함한다. 컴퓨터(110)의 구성요소들로는, 프로세싱 유닛(120), 시스템 메모리(130), 및 시스템 메모리를 포함하는 다양한 시스템 컴포넌트를 프로세싱 유닛(120)에 연결시키는 시스템 버스(121)가 포함될 수 있지만, 이것에 제한되지는 않는다. 시스템 버스(121)는 다양한 버스 아키텍처 중의 임의의 것을 사용하는 로컬 버스, 주변 버스, 및 메모리 버스 또는 메모리 제어기를 포함하는 몇가지 유형의 버스 구조 중의 임의의 것일 수 있다. 예로서, 그러한 아키텍처는 산업 표준 아키텍처(ISA) 버스, 마이크로 채널 아키텍처(MCA) 버스, 인핸스드 ISA(Enhanced ISA; EISA) 버스, 비디오 일렉트로닉스 표준 어소시에이션 (VESA) 로컬 버스, AGP(Accelerated Graphics Port) 버스, 및 메자닌(Mezzanine) 버스로도 알려진 주변 컴포넌트 상호접속(PCI) 버스를 포함하지만, 이것에 제한되지는 않는다.
컴퓨터(110)는 통상적으로 다양한 컴퓨터 판독가능한 매체를 포함한다. 컴퓨터 판독가능한 매체는 컴퓨터(110)에 의해 액세스될 수 있는 임의의 이용가능한 매체일 수 있으며, 휘발성 및 불휘발성 매체, 분리형 및 비분리형 매체를 둘다 포함한다. 예로서, 컴퓨터 판독가능한 매체는 컴퓨터 저장 매체 및 통신 매체를 포함할 수 있는데, 이것에 제한되지는 않는다. 컴퓨터 저장 매체는 컴퓨터 판독가능한 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현되는 휘발성 및 불휘발성, 분리형 및 비분리형 매체를 포함한다. 컴퓨터 저장 매체는 RAM, ROM, EEPROM, 플래쉬 메모리 또는 기타 메모리 기술, CD-ROM, DVD(digital versatile disks) 또는 기타 광학 디스크 저장장치, 자기 카세트, 자기 테이프, 자기 디스크 저장장치 또는 기타 자기 저장장치, 또는 컴퓨터(110)에 의해 액세스될 수 있고 원하는 정보를 저장하는데 사용될 수 있는 임의의 기타 매체를 포함할 수 있는데, 이것에 제한되지는 않는다. 통신 매체는 통상적으로 반송파 또는 기타 전송 메커니즘과 같은 변조된 데이터 신호 내에 컴퓨터 판독가능한 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터를 구현하며, 임의의 정보 전달 매체를 포함한다. "변조된 데이터 신호"라는 용어는 신호 내에 정보를 인코딩하는 방식으로 설정되거나 변환된 속성을 하나 또는 그 이상을 갖는 신호를 의미한다. 예로서, 통신 매체는 유선 네트워크 또는 직접 유선 접 속과 같은 유선 매체와, 음향, RF, 적외선 및 기타 무선 매체와 같은 무선 매체를 포함하는데, 이것에 제한되지는 않는다. 상술한 것들 중의 임의의 조합은 또한 컴퓨터 판독가능한 매체의 범위 내에 포함되어야 한다.
시스템 메모리(130)는 ROM(131) 및 RAM(132)과 같은 휘발성 및/또는 불휘발성 메모리 형태의 컴퓨터 저장 매체를 포함한다. 시동중과 같은 때에 컴퓨터(110) 내의 구성요소들 간에 정보를 전송하는 것을 돕는 기본 루틴을 포함하는 기본 입출력 시스템(133; BIOS)은 일반적으로 ROM(131)에 저장된다. RAM(132)은 일반적으로 프로세싱 유닛(120)에 즉시 액세스될 수 있고 및/또는 프로세싱 유닛(120)에 의해 현재 작동되는 프로그램 모듈 및/또는 데이터를 포함한다. 예로서, 도 1은 운영 체계(134), 응용 프로그램(135), 기타 프로그램 모듈(136), 및 프로그램 데이터(137)를 도시하고 있는데, 이것에 제한되지는 않는다.
컴퓨터(110)는 또한 그외 다른 분리형/비분리형, 휘발성/불휘발성 컴퓨터 저장 매체를 포함할 수 있다. 단지 예로서, 도 1에는 비분리형 불휘발성 자기 매체로부터 판독하거나 그 자기 매체에 기록하는 하드 디스크 드라이브(141), 분리형 불휘발성 자기 디스크(152)로부터 판독하거나 그 자기 디스크에 기록하는 자기 디스크 드라이브(151), 및 CD-ROM 또는 기타 광학 매체와 같은 분리형 불휘발성 광학 디스크(156)로부터 판독하거나 그 광학 디스크에 기록하는 광학 디스크 드라이브(155)가 도시되어 있다. 예시적인 동작 환경에서 사용될 수 있는 그외 다른 분리형/비분리형, 휘발성/불휘발성 컴퓨터 저장 매체는 자기 테이프 카세트, 플래쉬 메모리 카드, DVD, 디지털 비디오 테이프, 고체 RAM, 고체 ROM 등을 포함하지만, 이 것에 제한되지는 않는다. 하드 디스크 드라이브(141)는 일반적으로 인터페이스(140)와 같은 비분리형 메모리 인터페이스를 통해 시스템 버스(121)에 접속되고, 자기 디스크 드라이브(151) 및 광학 디스크 드라이브(155)는 일반적으로 인터페이스(150)와 같은 분리형 메모리 인터페이스에 의해 시스템 버스(121)에 접속된다.
앞서 기술되고 도 1에 도시된 드라이브 및 그 관련 컴퓨터 저장 매체는 컴퓨터(110)를 위한 컴퓨터 판독가능한 명령어, 데이터 구조, 프로그램 모듈 및 기타 데이터의 저장을 제공한다. 도 1에서, 예를 들어, 하드 디스크 드라이브(141)는 운영 체계(144), 응용 프로그램(145), 기타 프로그램 모듈(146) 및 프로그램 데이터(147)를 저장하는 것으로 도시된다. 이들 구성요소는 운영 체계(134), 응용 프로그램(135), 기타 프로그램 모듈(136) 및 프로그램 데이터(137)와 동일할 수도 있고 다를 수도 있다. 운영 체계(144), 응용 프로그램(145), 기타 프로그램 모듈(146) 및 프로그램 데이터(147)는 최소한 다른 복사본임을 나타내기 위하여 다른 번호를 부여하였다. 사용자는 통상적으로 마우스, 트랙볼 또는 터치 패드라 불리우는 포인팅 장치(161), 키보드(162), 마이크로폰(163) 및 태블릿(전자 디지타이저)(164)와 같은 입력 장치를 통해 컴퓨터(110) 내로 커맨드 및 정보를 입력할 수 있다. (도시되지 않은) 기타 입력 장치는 조이스틱, 게임 패드, 위성 안테나, 스캐너 등을 포함할 수 있다. 이들 입력 장치 및 그외의 입력 장치는 시스템 버스에 연결된 사용자 입력 인터페이스(160)를 통해 종종 프로세싱 유닛(120)에 접속되지만, 병렬 포트, 게임 포트 또는 유니버셜 시리얼 버스(USB)와 같은 기타 인터페이스 및 버스 구조에 의해 접속될 수 있다. 모니터(191) 또는 그외의 유형의 표시 장치는 또한 비디오 인터페이스(190)와 같은 인터페이스를 통해 시스템 버스(121)에 접속된다. 모니터(191)는 또한 터치-스크린 인터페이스(192)와 같은 인터페이스를 통해 컴퓨터 시스템(110) 내로 손으로 써넣는 것과 같이 디지탈화 입력을 입력할 수 있는 터치-스크린 패널(193) 등과 통합될 수 있다. 모니터 및/또는 터치 스크린 패널은 태블릿형 퍼스널 컴퓨터와 같은 컴퓨팅 장치(110)가 포함되는 하우징에 물리적으로 연결될 수 있는데, 터치 스크린 패널(193)은 본질적으로 태블릿(164)의 작용을 한다는 점을 유의한다. 그 외에, 컴퓨팅 장치(110)와 같은 컴퓨터는 또한 출력 주변 인터페이스(194) 등을 통해 접속될 수 있는 스피커(195) 및 프린터(196)와 같은 기타 주변 출력 장치를 포함할 수 있다.
컴퓨터(110)는 원격 컴퓨터(180)와 같은 하나 이상의 원격 컴퓨터로의 논리적 접속을 이용한 네트워크 환경에서 동작할 수 있다. 원격 컴퓨터(180)는 퍼스널 컴퓨터, 서버, 라우터, 네트워크 PC, 피어 장치, 또는 기타 공통 네트워크 노드일 수 있으며, 비록 도 1에는 메모리 저장 장치(181)만이 도시되어 있지만, 컴퓨터(110)에 관하여 상술한 구성요소 중 다수 또는 모든 구성요소를 일반적으로 포함할 수 있다. 도 1에 도시된 논리적 접속은 근거리 통신망(LAN)(171) 및 원거리 통신망(WAN)(173)을 포함하지만, 그 외의 네트워크도 포함할 수도 있다. 그러한 네트워크 환경은 사무실, 기업 전반의 컴퓨터 네트워크, 인트라넷 및 인터넷에서 일반적인 것이다.
LAN 네트워크 환경에서 사용되는 경우, 컴퓨터(110)는 네트워크 인터페이스 또는 어댑터(170)를 통해 LAN(171)에 접속된다. WAN 네트워크 환경에서 사용되는 경우, 컴퓨터(110)는 일반적으로 인터넷과 같은 WAN(173)을 통해 통신을 구축하기 위한 모뎀(172) 또는 기타 수단을 포함한다. 내장형 또는 외장형일 수 있는 모뎀(172)은 사용자 입력 인터페이스(160) 또는 기타 적절한 메커니즘을 통해 시스템 버스(121)에 접속될 수 있다. 네트워크 환경에서, 컴퓨터(110)에 관하여 도시된 프로그램 모듈 또는 그 일부분은 원격 메모리 저장 장치에 저장될 수 있다. 예로서, 도 1은 메모리 장치(181)에 상주하는 원격 응용 프로그램(185)을 도시하고 있는데, 이것에 제한되지는 않는다. 도시된 네트워크 접속은 예시적인 것이며, 컴퓨터들 간의 통신 링크를 구축하는 그 외의 수단이 사용될 수 있다는 것을 알 수 있을 것이다.
예시적인 계층화 아키텍처
본 발명의 일 양상은 일반적으로 컴퓨터 시스템 상에 원활하고 복합 애니메이션 및/또는 매체를 제공하는 것에 관한 것이다. 이것을 위해, 도 2에 개괄적으로 도시된 바와 같이, 매체 통합 계층 아키텍처(200)가 제공된다. 응용 프로그램, 제어 또는 이와 유사한 다른 고레벨 프로그램 코드(예를 들어, 운영 체계 컴포넌트의 사용자 인터페이스)(202)는 그래픽 정보를 액세스(기입 또는 판독)하기 위해 응용 프로그래밍 인터페이스(API)(204)의 세트 등을 통해 매체 통합 계층 아키텍처(200)를 액세스한다. 비록 여기에 설명된 다수의 예들은 API와의 응용 프로그램 인터페이싱을 참조할 것인데, 그밖의 다른 고레벨 프로그램 코드 및 컴포넌트(예를 들어, 운영 체계의 사용자 인터페이스)가 또한 여기에 설명된 저레벨 컴포넌트와 인터페이싱할 수 있다는 것을 알기 바란다. 응용 프로그램, 사용자 인터페이스 등 등으로 칭해지든 아니든, 그 자체만으로, 그러한 고레벨 프로그램 코드에 대한 참조는 동등하게 간주되어야 한다.
한 구현예에서, 매체 통합 계층 아키텍처(200)는 고레벨 합성 및 애니메이션 엔진(206), 타이밍 및 애니메이션 컴포넌트(208) 및 저레벨 합성 및 애니메이션 엔진(210)을 포함한다. 여기에서 사용되는 바와 같이, 용어 "고레벨" 및 "저레벨"은 다른 컴퓨팅 시나리오에서 사용되는 것과 유사한데, 일반적으로, 높은 레벨의 컴포넌트에 비해 소프트웨어 컴포넌트의 레벨이 낮을 수록, 그 컴포넌트는 하드웨어에 가깝다. 그러므로, 예를 들어, 고레벨 합성 및 애니메이션 엔진(206)으로부터 보내진 그래픽 정보는 저레벨 합성 및 애니메이션 엔진(210)에서 수신될 수 있는데, 여기에서 정보는 하드웨어를 포함하는 그래픽 서브시스템으로 그래픽 데이터를 보내기 위해 사용된다.
일반적으로, 고레벨 합성 및 애니메이션 엔진(여기에서 고레벨 합성기 및 애니메이터 또는 고레벨 엔진 또는 컴포넌트라고도 함)(206)은 응용 프로그램(202)에 의해 제공된 그래픽 장면을 나타내기 위해 표시 요소 트리를 형성하는 반면, 타이밍 및 애니메이션 컴포넌트는 선언적(declarative) (또는 그외의) 애니메이션 및 타이밍 제어를 제공한다. 저레벨 합성 및 애니메이션 엔진(여기에서 저레벨 합성기 및 애니메이터 또는 저레벨 엔진 또는 컴포넌트라고도 함)(210)은 다수 애플리케이션의 장면을 위한 렌더링을 합성하고, 렌더링 컴포넌트로, 실제적인 그래픽 렌더링을 스크린으로 구현한다. 시간-소모적 또는 애플리케이션-특정 렌더링을 더 높은 레벨에서 행하고, 비트맵 등에 대한 참조를 더 낮은 계층으로 보내는 것이 여 전히 가능하다는 것을 알기 바란다.
고레벨 합성 및 애니메이션 엔진(206)은 요소 트리 구조를 형성하고, 그 구조를 트래버스(traverse)하여, 저레벨 합성 및 애니메이션 엔진(210)으로 보내질 렌더링 명령어 및 단순한 애니메이션 간격을 작성한다. 고레벨 합성기에 의해 발생된 렌더링 명령어는 타이밍 및 애니메이션 정보를 포함할 수 있다. 저레벨 합성 및 애니메이션 엔진(210)은 렌더링 명령어 및 애니메이션 간격을 획득하여, 장면의 애니메이팅, 렌더링 및 작성을 관리하는데, 이 장면은 그 다음에 그래픽 서브시스템(예를 들어, 그래픽 소프트웨어 및 하드웨어)(212)에 제공된다. 대안적으로 또는 국부적으로 표시된 출력 이외에, 고레벨 합성 및 애니메이션 엔진(206)(또는 이와 유사한 것)은 렌더링 및 애니메이션 명령어를 적절한 포맷으로, 고정 이미지 데이터를 프린터(222) 등에 보내기 위한 저레벨 프린팅 코드(220)에 제공할 수 있고 및/또는, 렌더링 명령어 및 단순한 애니메이션 간격을 적절한 포맷으로 원격 기계(228)로의 전송을 위한 저레벨 단말 전송 서버(226)에 제공할 수 있다. 더욱 풍부한 정보가 또한 네트워크를 통해 보내질 수 있는데, 예를 들어 어떠한 네트워크 트래픽도 없이 국부적으로 원격 기계 핸들 마우스 롤오버(rollover) 효과를 갖는 것이 바람직할 수 있다는 것을 알기 바란다.
이 구현예에서, 매체 통합 계층 아키텍처(200)는 이와 같이 그래픽 프로세싱을 다수 레벨로 나누고, 이들 각 레벨은 소정의 지능형 그래픽 프로세싱을 실행하는데, 이 프로세싱들은 함께 애플리케이션의 사용자 인터페이스 등(202)이 원활한 애니메이션을 갖는 그래픽을 출력하여, 이 그래픽을 그외의 애플리케이션의 그래픽 과 합성해서, 비디오 프레임으로 작업할 수 있게 한다. 애니메이션 및/또는 합성은 또한 오디오 출력과 동기될 수 있다. 예를 들어, 오디오를 저레벨 컴포넌트에서의 프레임 속도와 동기시킴으로써, 오디오의 타이밍은 본질적으로 비디오 또는 그래픽의 타이밍과 정확하게 맞을 수 있고, 재생 속도로 유지하기 위한 태스크-스케쥴화된 복합 사전 처리의 능력에 좌우되지 않는다.
도 3은 XAML 기반의 코드와 같은 마크업 코드(302)가 구문해석기/번역기(parser/translator)(304)에 의해 해석될 수 있는 일 구현예를 나타낸 것이다. 일반적으로, 구문해석기/번역기(304)는 요소들을 요소 트리/속성 시스템(314)에 추가하고; 요소들은 그들 자신의 레이아웃을 행하는 비주얼 객체들이다. 더욱이, 마크업 코드의 일부 또는 전부는 요구에 따라, 해석되기보다 컴파일됨으로써, 효율을 향상시킬 수 있다는 것을 알기 바란다.
일반적으로, 요소는 속성 시스템, 트리거링 및 레이아웃/프리젠테이션 시스템에 관여하는 요소 계층 내의 한 객체이다. 구문해석기(304)는 태그를 찾아서, 이들 태그들이 요소 또는 자원 객체를 정의하는데 도움이 되는지를 판정한다. 예를 들어, VisualBrush의 특별한 경우에, 동일한 태그는, 미합중국 특허 출원 제10/401,717호에 설명된 바와 같이, 이들 태그가 나타나는 문맥에 의존하여, 예를 들어 복합 속성 구문 내에 나타나는지 아닌지의 여부에 따라, 요소로서 해석되거나 또는 자원 객체로서 해석될 수 있다.
마크업 내에 인라인으로 존재하는 것 이외에, 자원 인스턴스는 다른 곳에(예를 들어, 로컬 또는 원격 네트워크 상에 있을 수 있고 적절하게 다운로드될 수 있 는 파일 내에 또는 마크업 내에) 위치할 수 있고, 이름(예를 들어, 텍스트 이름, 참조 또는 그외의 적합한 식별자)에 의해 참조될 수 있다. 이러한 방식으로, 장면 설계자는 복합 속성 구문에 의해 설명된 요소들을 포함하여, 하나의 장면 전체를 통해 요소 트리 내의 한 요소를 재사용할 수 있다.
구문해석기(304)는 필요에 따라 유형 변환기(308)를 액세스하고 또한 지정된 파라미터를 객체 속성에 매칭하여 복합 속성 구문 내의 마크업을 처리함으로써, 장면 설계자를 위해 복합성을 처리한다. 그러므로, 구문해석기(304)는 객체를 설정할 뿐만 아니라, 객체에 관한 속성을 설정한다. 동일한 렌더링 모델이 요소 레벨과 API 레벨 사이에서 공유되기 때문에, 다수의 객체들이 본질적으로 동일하다. 이것은 구문해석 및 번역을 매우 효율적으로 만들고, 또한 상이한 유형의 프로그래밍 언어들(예를 들어, C#형 언어들)이 마크업에서 자기 자신의 구문으로, 그리고 이와 반대로 쉽게 변환할 수 있게 한다. 도 3에 도시된 바와 같이, (컴파일된 마크업을 포함할 수 있는) 이러한 다른 프로그래밍 언어(310)는 요소를 요소 트리(208)에 추가하거나, 직접 비주얼 API 계층(316)과 인터페이스할 수 있다.
또한 도 3에 도시된 바와 같이, 동일한 마크업(302)은 요소 레벨 및 자원 레벨에서 프로그램하기 위해 사용될 수 있다. 일반적으로, 요소 레벨은 장면 설계자에게 충분한 프로그램 능력, 계승을 제공하는 속성 시스템(예를 들어, 특징과 같은 스타일-시트)의 사용, 및 트리거링을 제공한다(예를 들어, 이것에 의해, 요소는 사용자 입력 이벤트 또는 액션에 응답하여 자신의 양상, 위치 등을 변경하기 위해 첨부 코드를 가질 수 있다). 그러나, 본 발명은 또한 자원 레벨 메커니즘을 제공하 는데, 이 메커니즘에 의해, 장면 설계자는 본질적으로 요소 트리 및 프로그램을 바로 비주얼 API 계층으로 단축할 수 있다. 요소 레벨 특징이 요구되지 않는 여러 유형의 정적 형태, 이미지 등을 위해, 이것은 적절한 객체를 출력하기 위한 더욱 효율적이고 부담없는 방식을 제공한다.
애니메이션 및 매체 출력을 제어하기 위해, 도 4 및 도 5를 참조하여 후술되는 바와 같이 클록을 포함하는 타이밍 트리가 또한 유지된다. 일반적으로, 고레벨 합성기 및 애니메이터 엔진(206)은, 프로세싱의 양을 상당히 감소시키고, 저레벨이 정확한 출력을 제공하기 위해 처리할 필요가 있는 데이터 양을 상당히 감소시키는 복합 프로세싱(때때로 컴파일링이라고 함)을 실행한다. 그러나, 고레벨에 의해 실행되는 프로세싱의 양 및 유형은 저레벨의 부하, 구성 및 능력에 상당히 의존할 수 있다는 것을 알기 바란다. 예를 들어, 고능력 그래픽 하드웨어가 존재하면, 고레벨은 보다 적은 양의 프로세싱을 행할 수 있고, 이와 반대로도 할 수 있다. 고레벨 및 저레벨 계층은 이들 요인에 적응될 수 있다.
일반적으로, 애니메이션은 고레벨 합성기 및 애니메이션 엔진(206) 및 저레벨 합성기 및 애니메이션 엔진(210) 둘다에 의해 달성된다. 일 구현예에서, 고레벨 엔진(206)은 장면을 트래버스하여, 나중의 보간을 위한 간격으로 애니메이션 파라미터를 갱신하고, 이들 단순화된 데이터 구조를, 저레벨 엔진(210)으로 보내지는 명령어 내로 패키지화한다. 이것은 동기 및/또는 비동기 방식으로 행해질 수 있다. 간격 데이터는 렌더링 명령어를 위한 파라미터화 값들뿐만 아니라, 타이밍 종점(개시 및 종료 타이밍 데이터)을 포함하는 것으로 간주될 수 있다. 고레벨 엔진 (204)은 요청된 보간의 일부 또는 전부를 실행할 수 있는데, 예를 들어, 보간 또는 다른 운동(motion) 함수가 너무 복잡하여 저레벨 엔진(210)이 처리하기 힘들거나, 저레벨 엔진이 설정된 프로세싱 요구사항으로 유지될 수 없으면, 고레벨 엔진이 계산의 일부 또는 전부를 실행하여, 저레벨 엔진에게 단순화된 데이터, 명령어 등을 제공해서, 원하는 결과를 달성한다.
일반적인 경우에, 저레벨이 보간을 실행하지 못하면, 애니메이션의 각 프레임마다, 저레벨 엔진(210)은 순시값(instantaneous value)을 얻기 위해 파라미터 간격을 보간하고, 명령어를 그래픽 장치에 의해 실행된 렌더링 커맨드로 디코드한다. 그래픽 장치는 장면 내에 존재할 지도 모르는 임의의 비디오 프레임을 추가하여 최종 장면을 작성한다. 디지털 저작권 관리에 의해 보호된 컨텐트와 같은 그 밖의 다른 데이터가 또한 추가될 수 있다.
고레벨 엔진(206)은 이와 같이 장면 데이터-구조를 트래버스하고, 한 기간동안 각각의 애니메이트된 파라미터를 설명하는 간격을 계산하여, 이들 간격 및 단순화된 파라미터화 드로잉 명령어를 저레벨 엔진(210)으로 보낸다. 파라미터 데이터는 개시 시간, 종료 시간, 보간기 및 보간 데이터를 포함한다. 예로서, 이미지가 움직이는 것으로 보이도록 이미지를 소거하고 재드로잉하는 대신에, 고레벨 합성기 및 애니메이션 엔진(206)은 이미지가 시간에 따라 변해야 하는 방식, 예를 들어 개시 좌표, 종료 좌표, 이미지가 좌표들 사이에서 움직여야 하는 시간의 양(간격), 및 선형과 같은 운동 함수에 관해 저레벨 합성기 및 애니메이션 엔진(210)에게 명령할 수 있다(정지 객체가 예를 들어 자신의 컬러를 변화시켜 애니메이트될 때, 운 동 함수가 애니메이션에 요구되지는 않는다는 것을 알기 바란다). 저레벨 합성기 및 애니메이션 엔진(210)은 프레임들 사이의 새로운 위치를 결정하기 위해 보간하고, 이들을 그래픽 장치가 이해할 수 있는 드로잉 명령어로 변환하여, 커맨드를 그래픽 장치로 보낼 수 있다. 고레벨 엔진(206)의 각각의 패스(pass)는 충분한 데이터를 저레벨 엔진(210)에게 양호하게 제공하여 몇개의 프레임에 걸쳐 원활한 애니메이션을 실행한다.
저레벨(예를 들어, 고속-틱(fast-tick)) 엔진(210)은 고레벨 엔진(206)으로부터 분리된 태스크이다. 저레벨 엔진(210)은 장면을 설명하는 단순화된 파라미터화 드로잉 명령어 및 파라미터 간격을 고레벨 엔진(206)으로부터 수신한다. 저레벨 엔진은 새로운 데이터 구조가 고레벨 엔진(206)에 의해 제공될 때까지 이들 데이터 구조를 유지하고 트래버스한다. 저레벨 엔진은 다수의 고레벨 엔진(206)에게 서비스를 제공하여, 각각에 대해 분리된 데이터 구조를 유지할 수 있다. 저레벨 엔진(210)과 고레벨 엔진(206) 사이의 일 대 다(one-to-many) 관계는 시스템이 다수의 장면을 동시에 원활하게 애니메이트할 수 있게 한다.
저레벨 엔진(210)은 고레벨 엔진이 제공한 간격에 기초하여 본질적으로 순시 애니메이션 파라미터를 보간하고, 드로잉 명령어를 갱신하여, 매 프레임마다 장면을 렌더링한다. 저레벨 엔진(210) 태스크는 프레임이 그래픽 하드웨어 스크린 재생 속도와 같은 속도에서 프리젠테이션할 준비가 되었다는 것을 보장하기 위해, 시스템 상에서 높은 우선순위로 실행된다. 그러므로, 저레벨 엔진(210)에 의해 실행된 보간은 선형, 구분적 선형, 삼차 스플라인(cubic spline) 및 이와 유사한 속도 의 것들과 같은 단순한 고속 함수로 전형적으로 제한된다.
애니메이션 및 매체와 관련하여, 도 4 및 도 5에 개괄적으로 도시된 바와 같이, 응용 프로그램(202)과 같은 프로그램은 고레벨 컴포넌트(206)에 대한, 클록 또는 클록 속성이라고 칭해지는 타이밍 정보와 함께 애니메이션 속성 값을 지정한다. 후술되는 바와 같이, 본질적으로 임의의 독립적인 애니메이션 또는 매체(예를 들어, 비디오 및 오디오와 같은 선형 매체)뿐만 아니라, 지정된 애니메이션을 조정하는 스토리보드는 고레벨 컴포넌트에서 자신을 위해 유지된 클록을 가질 것이다. 일반적으로, 제작자는 클록을 동기화 상태로 유지하기 위해 적절한 때에 클록 내로 인스턴스화되는 타임라인 데이터를 지정한다.
클록 속성은 주어진 클록과 나머지 타이밍 구조 사이의 초기 동기화 관계를 정하는 타이밍 속성을 포함한다. 도 5에 도시된 바와 같이, 고레벨 컴포넌트(206)는 애니메이션의 속성의 현재 값을 결정하기 위해 (예를 들어, 실행되는 공용 언어 런타임이 그 동작을 제어할 수 있게 하는 메타데이터의 형태로 정보를 제공하는 코드인 관리 코드 내에 기입된) 고레벨 애니메이션 함수(520H)를 호출할 수 있다. 고속 프레임 속도 계산 동안에, 저레벨 컴포넌트(210)는 애니메이션의 현재 속성 값을 결정하기 위해 엔진(414)에 의해 계산된 경과와 유사한(또는 동일한) 애니메이션 함수(520L)를 호출한다. 대안적인 구현예에서, 애니메이션 함수는 예를 들어 저레벨 컴포넌트 내로 포함될 수 있다는 것을 알기 바란다.
일반적으로, 애니메이션 및 선형 매체는 동기화 프리미티브(primitive) 및 규칙에 의해 서로에 대해 관련된 클록들 세트와 관련된다. 클록들은 계층적으로 배열될 수 있는데, 예를 들어, 응용 프로그램은 부모 클록을 갖고, 응용 프로그램의 애니메이트된 객체들은 자식이며, 이러한 자식은 차례로 다른 자식을 가질 수 있다. 클록의 속성이 정의되거나 변경되면, 그 클록의 임의의 자식에게 영향이 미친다. 예를 들어, 부모 클록의 일시중지는 임의의 그것의 자식 클록을 일시중지시키고, 부모 클록의 속도를 2배로 하면 임의의 그것의 자식 클록의 속도가 2배로 된다.
이들 클록 속성은 런타임(run-time) 시에 애플리케이션에 의해 시작된 상호작용적 제어 이벤트를 포함하는 소스 이벤트에 의해 변경될 수 있다. 그러므로, 각각의 클록이 애플리케이션에 의해 임의의 시간에, 예를 들어 사용자 입력에 응답하여, 개별적으로 개시, 일시중지, 재개 및 정지될 수 있다는 점에서, 클록들은 상호작용적이다. 또한, 새로운 클록이 타이밍 구조에 추가될 수 있고, 현존하는 클록이 제거될 수 있다.
상술된 미합중국 특허 출원 제10/693,822호에 설명된 바와 같이, 고레벨 타이밍 컴포넌트는 저장된 이벤트 리스트(개시, 일시중지 등)에 기초하여 각 클록에 대한 간격 리스트 및 관련된 동기화 프리미티브를 생성할 수 있다. 활성화 간격은 현실 세계 시간의 상이한 시점들에서 소정의 클록으로 표현된 시간을 설명하는 간단한 비중첩 세그먼트이다.
도 4에 도시된 바와 같이, 적어도 몇가지 클록 속성들은 클록의 타이밍 트리(402) 내에서 계층적으로 관련될 수 있다. 그러한 속성을 갖는 3개의 클록, 즉 클 록 속성(4041-4043)이 도 4에 도시되지만, 더 많은 클록 및 대안적인 타이밍 트리가 소정의 상황에서 존재할 수 있다는 것을 알기 바란다. 예를 들어 표시될 애니메이트된 객체(또는 스토리보드-조정 객체의 세트)에 대응할 수 있는 각 클록에 대해, 고레벨 컴포넌트(206)는 클록 속성으로부터 이벤트 리스트(예를 들어, 4061)를 생성하는 이벤트 리스트 생성기(408)라고 칭해지는 상태 기계를 포함한다. 일반적으로, 이벤트 리스트 생성기(408)는 애니메이션과 관련하여 수신되는 일시중지 및 재개 요청과 같은 임의의 명시적 상호작용 이벤트와 함께 지정된 클록 속성에 의해 초기에 스케쥴링된 이벤트들을 하나의 이벤트 리스트로 그룹화한다. 클록은 각 애니메이션(또는 후술되는 바와 같이 스토리보드를 통한 애니메이션의 그룹)에 대해 유지되므로, 각각의 독립적인 애니메이션/애니메이션 세트에 대응하는 이벤트 리스트뿐만 아니라, 각각의 독립적인 선형 매체에 대응하는 이벤트 리스트가 있다.
고레벨 컴포넌트는 각각의 애니메이션 또는 매체마다 이벤트 리스트(예를 들어, 4063)를 사용하여, 저레벨 컴포넌트(210)로 보내지는 대응하는 간격 리스트(예를 들어, 4123)를 계산하는 간격 생성기(410)를 포함한다. 이번에는, 저레벨 컴포넌트(210)는, 이를테면 간격 데이터에 기초한 경과 값을 그 객체에 제공하고, 애니메이트된 객체의 가변 속성에 대한 현재 값을 결정하는 저레벨 애니메이션 함수 서브시스템(520L)에 현재 시간을 제공함으로써, 간격 데이터에 관한 현재 시간에 기초하여 출력을 제어하는 저레벨 계산 엔진(414)을 포함한다. 예를 들어, 임의의 주 어진 프레임에 대해, 저레벨 계산 엔진(414)은 간격 데이터 및 (시스템 시간 또는 상대 시간일 수 있는) 현재 시간에 기초하여 애니메이트된 객체의 위치를 보간한다. 도 4 및 도 5에 도시된 바와 같이, 고레벨 타이밍 컴포넌트는 타이밍 트리(402) 및 이벤트 리스트(4061-4063)를 포함하는 반면에, 저레벨 타이밍 컴포넌트(210)는 간격 리스트(4121-4123)를 포함하는데, 이들 데이터 구조는 본질적으로 저장장치, 대체로 고속 랜덤 액세스 메모리 내의 임의의 장소에 유지될 수 있다는 것을 알기 바란다.
요약하기 위해, 고레벨 타이밍 컴포넌트(206)는 동기화 규칙 및 프리미티브(primitives)에 의해 (예를 들어, 계층적으로) 관련된 클록의 트리(402)를 살펴본다. 본 발명은 저레벨 타이밍 엔진에 의해 소모되는 활성화 간격 리스트(412)를 컴파일하기 위해 고레벨 타이밍 컴포넌트(206) 내의 클록을 사용한다. 저레벨 타이밍 엔진은 독립된 (예를 들어, 애니메이트된 객체마다의 또는 선형 매체마다의) 클록을 나타내는 간격 리스트(412)를 살펴본다. 도 5에 도시된 바와 같이, 시스템 클록(524)과 같이, 일치된 시간을 양쪽에 제공하는 클록이 있어, 다수의 레벨은 동기화 상태를 유지한다.
애플리케이션(202)(또는 소정의 다른 자원)으로부터 수신한 상호작용적 변경에 응답하여, 고레벨 타이밍 컴포넌트는 그 변경과 직접 관련되는 클록의 상태를 갱신할 필요가 있고, 또한 임의의 그 변경은 동기화 프리미티브에 의해 지정되는 바와 같이 간접적으로 관련된다. 하나의 클록에 대한 변경은 타이밍 구조 내의 다 른 클록에 영향을 미칠 수 있다는 것을 알기 바란다. 예를 들어, 슬라이드 쇼의 제공자는 전체 디스플레이를 일시중지시킬 수 있고, 이것에 의해, 동시에 디스플레이되고 있는 임의의 애니메이션 및 선형 매체는 일시중지될 필요가 있다. 후술되는 바와 같이, 본 발명의 양상에 따르면, 스토리보드는 애니메이션 및/또는 매체가 함께 그룹화되게 하여 원하는 방식으로 조정될 수 있게 한다.
일반적으로, 한 객체와 관련하여 상호작용이 발생하는 때는 언제나, 이벤트 리스트는 필요에 따라 재생성되고, 간격 리스트는 재계산되어 저레벨 타이밍 컴포넌트에 보내진다. 고레벨 컴포넌트는 (예를 들어, 초 당 60회 동작하는) 저레벨 컴포넌트가 각각의 애니메이트된 객체에 대한 현재의 간격 리스트만을 처리할 필요가 있도록 (예를 들어, 초 당 6회 내지 10회 정도의 빈도로) 이들 동작을 실행한다.
한 객체에 대한 이러한 간격 정보 및 개시 및 종료 값 이외에, 추가 파라미터가 고레벨 컴포넌트에 보내져서, 간격 리스트에 변경을 초래할 수 있다. 예를 들어, 애플리케이션은 이벤트에 대응하는 기간을 탐색할 수 있다. 애플리케이션은 탐색이 발생하는 때와 얼마만큼 발생하는 지를 지정한다. 되감기 또는 고속 감기 매체와 같이, 애니메이션의 탐색에 따라, 애플리케이션은 특정 시점의 전후로 점프할 수 있다. 리버스 이벤트는 애플리케이션이 지정할 수 있는 다른 유형의 스케쥴화 또는 상호작용 이벤트이다. 리버스 이벤트가 리스트 내에 있는 경우, 경과 상태는 예를 들어 100퍼센트에서 0퍼센트로, 자동으로 리버스할 것이다. 속도 변경이 또한 지원되는데, 예를 들어 소정 클록 이하의 모든 것은 실제 시간보다 빠르거 나 느리게 실행되도록 설정될 수 있다. 그외 다른 속성이 지정될 수 있는데, 이를테면, 특정 클록에 대해, 재시작이 허용되는 지의 여부, 및/또는 정확하게 실행되지 않는 경우에, 예를 들어 1초에 다시 시작, 10초에 다시 시작, 100초에 다시 시작 등과 같이 다시 시작할 것인 지 등의 여부를 나타내는 속성이 있고, 현재 실행되는 경우에는 선택적으로 재시작을 하거나 하지 않는다.
애니메이션 및 매체를 조정하기 위한 스토리보드
본 발명은 특히, 타임라인 트리가 한 요소(예를 들어, 버튼 등과 같은 제어부, 패널, 윈도우와 같은 FrameworkElement)에 대해 지정될 수 있게 하는 객체를 포함하는 스토리보드에 관한 것이다. 타임라인은 요소의 속성 값을 설정하고, 요소 및 그것의 서브-트리에 대한 애니메이션을 제어한다. 스토리보드는 본질적으로, 개시되거나, 정지 또는 일시중지되거나, 또는 탐색하기 위해 사용될 수 있는 특정 유형의 타임라인 객체에 대응함으로써, 애니메이트된 요소의 양상 및/또는 그 스토리보드와 관련되는 매체의 동작을 제어한다.
알 수 있는 바와 같이, 본 발명의 양상은 스토리보드가 한 요소와 관련될 수 있고 독립적으로 시작될 수 있는 상위 레벨 타임라인의 컬렉션을 포함하는 것이다. 예를 들어, 후술되는 바와 같이, 모델은 제작자가 동일한 스토리보드 컬렉션 내에 있는 요소에 관한 mouseOver 애니메이션 및 mouseClick 애니메이션을 가질 수 있게 한다. mouseOver 및 mouseClick 애니메이션 타임라인은 독립적으로 트리거될 수 있지만, 동일한 유닛 내에 포함된다. 스토리보드는 또한, 스토리보드 내의 애니메이션이, 스토리보드가 첨부되는 요소에 관한 그들의 타겟을 분석할 수 있게 하는 요소 트리와 타이밍 트리 사이의 접속 점을 제공한다. 스토리보드는 또한 상태 변경, 이벤트 또는 그외의 액션에 의해 활성화될 수 있는 트리거의 컬렉션을 포함할 수 있고, 트리거가 활성화될 때(예를 들어, 타임라인의 개시 또는 정지 시에) 실행될 확장가능 액션의 세트를 포함할 수 있다. 스토리보드는 제작자가 코드로부터 스토리보드 내의 타임라인을 상호작용으로 개시 및 정지할 수 있게 하는 하위 객체 모델의 일부분이다.
일반적으로, 스토리보드 내의 타임라인은 다양한 서브트리, 요소 및 기타 객체(예를 들어, 텍스트 글자, 워드, 라인, 단락 등)에 적용될 수 있는 애니메이션 템플릿을 나타낸다. 스토리보드는 FrameworkElement 상에 직접 설정되거나, 스타일(후술되는 바와 같이, 버튼의 컬러, 크기 및 기타 속성과 같이 요소에 적용될 수 있는 하나 이상의 데이터 값을 포함하는 자원)을 통해 FrameworkElement에 적용될 수 있다. 스토리보드는 또한 변경가능한 것(예를 들어, 브러시(brush), 변환, 기하학 등이 있는데, 미합중국 특허 출원 제10/693,438호에 설명되는 바와 같이, 변경가능한 것은 FrameworkElements의 속성을 설정하기 위해 사용될 수 있음)과 같은 복제를 지원하는 객체에 애니메이션을 적용하기 위해 사용될 수 있다. 예를 들어, 브러시는 오리지널 정보가 복원될 수 있도록, 오리지널 배경 정보를 복제한 다음에 복제된 정보를 연산함으로써, 버튼 또는 패널의 배경을 설정하는 변경가능한 것이다. 그러므로, 스토리보드는 FrameworkElement의 속성을 설정하는 변경가능한 것을 애니메이트하기 위해 사용될 수 있다. 즉, 스토리보드에 관련된 2종류의 객체, 즉 (FrameworkElement와 같이) 스토리보드와 관련되는 요소들 및 그렇지 않은 요소 들(예를 들어, 상술된 변경가능한 것)이 있다. 스토리보드의 알고리즘/데이터 구조는 관련되는 것들이 지정될 때 동작하도록 되어 있지만, 복제가 지원되는 한, 관련되지 않는 것들도 지정될 때 동작하도록 되어 있다.
본 발명의 일 양상에 따르면, 스토리보드(예를 들어, API를 통해 액세스한 객체)는 프로그램 제작자가 타임라인 내에 애니메이션을 (요소 속성으로) 그룹화함으로써 조정된 애니메이션 세트를 스케쥴링할 수 있게 한다. 즉, 스토리보드는 타이밍 트리를 요소 트리와 통합하여, 동일한 타임라인을 통해 조정된 방식으로 상이한 애니메이션의 상이한 속성에 대해 타이밍을 조작할 수 있는 능력을 제공한다. 그러므로, 스토리보드는 여러가지 객체 및 속성에 영향을 미치는 다른 독립된 타임라인들을 단일 타임라인 트리로 결합하는 방식을 제공하여, 프로그램 제작자가 복합 타이밍 이벤트 세트를 간단한 방식으로 구성하여 제어할 수 있게 한다. 예를 들어, 개별 애니메이션을 찾아서 재시작해야 하는 것보다는 오히려, 스토리보드의 일부분으로서 타임라인 하에 애니메이션을 그룹화하는 것은 단순히 스토리보드를 재시작함으로써 모든 애니메이션을 동시에 재시작하게 할 수 있다. 또한, 타이밍 트리와 요소 트리의 분리는, 사용자가 타이밍 트리를 사용하여, Y순차적으로 애니메이션 세트를 실행하거나 복합 타이밍 구조를 루핑하는 것과 같은 시간 조작을 할 수 있게 한다.
스토리보드는 애니메이션/비디오/오디오의 특정 인스턴스 상에서 사용되거나, 특정 스타일의 애니메이션에 사용될 수 있다.
대조를 위해, 스토리보드없이 기입된, 따라서 상호작용 응답(이 예에서는, 마우스 클릭 후의 2개의 분리된 버튼의 요구된 동시 애니메이션)을 추가하기 위해 코드-비하인드(code-behind)를 필요로 하는 다음의 예시적인 코드를 고려해보자. 코드의 제작자는 개시 시간들이 각 버튼의 타임라인 상에서 개별적으로 선언되어야 하기 때문에, 각 버튼의 애니메이션에 대해 반드시 동일한 개시 시간을 설정할 필요가 있다. 이 코드는 2개의 버튼을 동시에 애니메이트하는 것을 목표로 하지만, 실제로는, 제1 애니메이션과 제2 애니메이션이 2개의 분리된 (개시) 호출에 의해 개시되기 때문에 제1 애니메이션과 제2 애니메이션 사이에 약간의 지연이 있을 수 있다:
Figure 112005060625356-pat00001
Figure 112005060625356-pat00002
본 발명의 여러 실시예에 따르면, 일 구현예에서, 애니메이션에 스토리보드를 사용하기 위해, 프로그램 제작자는 타임라인, 관련 메커니즘(예를 들어, SetterTimeline 또는 첨부된 스토리보드 속성), 및 애니메이션 객체를 FrameworkElement의 스토리보드 속성에 추가한다. 스토리보드는 특정 요소에 직접 적용되거나, (후술되는 바와 같이) 스타일 내에 정의될 수 있다. 이 구현예에서, 스토리보드는 하나 이상의 타임라인을 지정된 객체의 지정된 속성에 링크하기 위해 사용되는 최소한 하나의 SetterTimeline을 갖는다. 상술된 타임라인의 기본 타이밍 속성 이외에, SetterTimeline은 제작자가 애니메이트하기 위한 객체 및 속성을 지정할 수 있게 하는 3개의 고유한 속성을 갖고, 애니메이트하기 위한 기본 값, 즉 객체 애니메이트를 타겟으로 하는 TargetID; 애니메이트하기 위한 속성을 타겟으로 하는 (여기에서, "Property" 또는 "Path"와 같은 뜻인) PropertyPath; 및 존재하는 경우에 타겟으로 한 속성에 대한 기본값을 지정하는 선택적인 속성인 값을 갖는다. 제작자가 SetterTimeline을 갖는 객체 및 속성을 타겟으로 한 후, 제작자는 타임라인 및 애니메이션을 자신의 자식으로서 추가하여, 그들을 타겟 속성에 인가한다.
다음의 예시적인 코드는 스토리보드가 코딩을 단순화하고, 이전의 예시적인 코드에 관한 기능성을 향상시키는 방식을 나타낸 것이다(이 예는 후술되는 바와 같이 스토리보드 클래스 상의 첨부된 속성을 통해 동작하는 대안적인 구현 대신에, SetterTimeline의 예시적인 구현을 사용한다는 것을 알기 바란다):
Figure 112005060625356-pat00003
이러한 예시적인 XAML 코드의 두번째 세트는 대안적으로, 클릭 이벤트 시에 2개의 버튼 상에서 동시 애니메이션을 시작하기 위해 스토리보드를 사용한다. 이것을 위해, 캔버스(canvas)의 단일 스토리보드 타임라인 내에, 한 요소 속성(myButton 요소의 불투명도 속성)을 그 스토리보드 타임라인으로 묶는 한 SetterTimeline, 및 다른 요소 속성(myButton2 요소의 위치 속성)을 그 동일한 스토리보드 타임라인으로 묶는 다른 SetterTimeline이 있다. 단일 이벤트(myButton 상의 클릭킹)는 시간이 지남에 따라 myButton의 불투명도 및 myButton2의 위치를 변경하는 조정된 애니메이션을 시작하기 위해 스토리보드를 트리거한다.
대조적인 코드 예로부터 알 수 있는 바와 같이, 스토리보드의 사용은 코드 복잡성을 감소시키고, 애니메이션의 개시 시간들 사이의 진짜 좌표를 생성한다. 이 예에서, 2개의 애니메이션은 시작을 위한 분리된 호출이 없기 때문에 진짜로 동시에 시작된다. 또한, XAML이 상호작용을 달성하기 위해 필요로 하는 코드 비하인드가 없으므로, 제작자는 XAML로 코드를 완전히 기입할 수 있다. 게다가, 스토리 보드를 이용하여, 제작자는 조정된 시작 시간을 한 곳에, 즉 스토리보드의 타임라인 상에 설정하기만 하면 된다.
그러므로, 스토리보드는 제작자가 시간에 따른 각 애니메이션의 변경을 개별적으로 정의하는 대신에 애니메이션 세트를 그룹으로 구성하여 제어할 수 있게 함으로써, 서로 동기되는 애니메이션의 간단한 작성, 및 연속적인 애니메이션(후술됨)을 가능하게 한다. 각도를 설정하는 회전 변환의 사용에 의해 현재의 시스템 시간을 자동으로 표시하는 폭과 컬러가 서로 다른 3개의 직사각형 시계바늘, 즉 흑색 시침, 녹색 분침 및 적색 초침을 갖는 시계에 대응하는 다음의 예를 고려해보자. 이 예에서, 단일 스토리보드 타임라인은 3개의 시계바늘이 애니메이션을 조장하기 위해 사용된다:
Figure 112005060625356-pat00004
상기 코드를 실행시에, 렌더(render) 변환 속성 및 회전 변환 각도 서브-속성을 통해, 시간 매니저는 (시계바늘이 각도 0도에 있는 것으로 알려져있는 서력 0년의 00:00:00 이후) 현재 시간에 기초한 각 시계바늘의 회전량, 및 렌더링 시에 사용된 갱신된 각도를 자동으로 계산한다. 각각의 새로운 애니메이션 계산은 시계바늘의 각도 위치를, 예를 들어 프레임당 한번 또는 소정의 다른 비율로 갱신한다. 모든 3개의 시계바늘은 함께 시작되고, 예를 들어, (소정의 예시적인 코드에서 도 시되지 않은) 소정의 이벤트가 시계를 정지시키면, 모든 3개의 시계바늘은 함께 정지될 것이다.
쉽게 알 수 있는 바와 같이, 요소 속성의 애니메이션의 복잡성은, 예를 들어 다수의 SetterTimeline이 단일의 스토리보드 타임라인 하에서 그룹화될 수 있을 때 의미가 있을 수 있고, 각 SetterTimeline은 교대로 상이한 타겟 요소 및 그 요소의 속성을 참조한다. 스토리보드들은 결합할 수 있는데; 예를 들어, 한 스토리보드는 변환을 요소와 관련시킬 수 있고, 다른 스토리보드는 (변환 값이 설정되기 전에 코드 내의 순서화가 정정될 필요가 있을지라도) 그 변환을 위한 값을 설정할 수 있다. 그럼에도 불구하고, 스토리보드의 사용은 제작자가 원하는 요소, 속성 및 애니메이션 움직임을 간단하게 레이아웃하게 한다.
도 6은 그러한 코드가 배열될 수 있는 방식의 일반적 표현을 나타낸 것으로, 캔버스는 한 세트의 스토리보드(예를 들어, Storyboard1-Storyboardn)를 갖고 있고, 세트의 각 스토리보드(예를 들어, Storyboard1)는 아마도 다수의 SetterTimeline, 예를 들어 SetterTimelines1-SetterTimelinesm을 갖는 (또는 후술되는 속성을 갖는 ParallelTimeline과 같은 대등한 요소 트리 관련 메커니즘을 갖는) 타임라인을 포함한다. 캔버스는 또한 후술되는 이벤트 트리거 정보를 포함하고, 애니메이트된 속성을 갖는 타겟으로서 스토리보드와 관련된 (스타일 및 파일 식별자와 같은) 요소 및 자원에 대한 정보를 포함할 수 있다.
쉽게 알 수 있는 바와 같이, 본 발명의 여러 양상을 구현하는 대안적인 방식 이 가능하다. 예를 들어, SetterTimeline을 사용하는 대신에, 대안적인 관련 메커니즘은 스토리보드 클래스 상의 첨부된 속성을 통해 유사한 관련 정보를 지정한다. 이것은 스토리보드 내로의 매체의 통합을 용이하게 한다는 것을 알기 바란다. 이 대안을 위한 예시적인 XAML은 다음과 같다:
Figure 112005060625356-pat00005
상기 예에서는, 소정의 매체 파일(my.wmv)을 스토리보드와 관련시키는 MediaTimeline, 및 스토리보드 속성이 설정되는 ParallelTimeline(간단하게 나타내기 위해 몇몇 생략점이 표시됨)이 있다는 것을 알기 바란다. "ParallelTimeline"은 본질적으로 이전에 알고있는 스토리보드 타임라인으로서, 다른 유형의 타임라인과 구별하기 위해 이름이 변경되었으며, (상기) MediaTimeline 및 (후술되는) SequentialTimeline을 포함한다. 그러나, ParallelTimeline은, 이것이 첨부 속성이 길어지게 하는 경향이 있고, 매우 눈에 보이는 효과가 있는 것이 아니라 해도, 또한 스토리보드 속성의 사용에 의해, 예를 들어 (SetterTimeline의 TargetID, PropertyPath 및 Value 대신에) Storyboard.Property, Storyboard.Value 및 Storyboard.Target의 사용에 의해 SetterTimeline의 필요성을 제거한다. 일반적으로, 각 스토리보드에 대해, 소정의 타겟 속성(예를 들어, TargetID)이 있고, 다른 스토리보드 속성이 TargetID와 동일한 타임라인 상에 있으며, 내포된 타겟들이 없 는 한, 스토리보드 속성들은 임의의 타임라인에 첨부될 수 있다. TargetID가 지정되지 않으면, 타겟은 스토리보드를 호스트하는 요소, 예를 들어 앞의 예에서의 캔버스인 것으로 가정된다는 것을 알기 바란다. 매체의 경우, MediaTimelines은 Storyboard.Property 또는 Storyboard.Value를 지정하지 않는다.
다음 표는 예시적인 스토리보드 클래스 및 그것의 객체 속성 및 메소드를 설명한다:
Figure 112005060625356-pat00006
요소 트리를 스토리보드의 타임라인 트리와 관련시키는 다른 대안은 아래의 XAML 예시들에 표시된다:
Figure 112005060625356-pat00007
상기 대안에서, MediaTimeline은 SetterTimeline의 자식이 아니라, 타임라인 트리의 일부분으로, 타임라인 상의 값이 아니라는 것을 유의한다. 그러므로, 이것 은 대체로 보다 덜 바람직한 구문이다.
Figure 112005060625356-pat00008
상기 대안은 다른 클래스 MediaSetterTimeline을 추가한다.
Figure 112005060625356-pat00009
이러한 상기 대안은 애니메이션 패턴을 따르지만, 값 및 자식이 동일한 속성의 값이 되어야 하기 때문에, 또한 애니메이션 패턴이 MediaTimeline이 그 폭 상에 놓일 수 있게 하기 때문에 혼동되기 쉽다.
다양한 대안이 가능함에도 불구하고, 설명을 위해, 일반적으로, 여기에서 그외 다른 예는 SetterTimeline을 사용하여 설명될 것이다.
일 구현예에서, 스토리보드는 FrameworkElement에 관한 타임라인 컬렉션 속성일 수 있고; 타임라인 컬렉션은 그 요소에 처음 적용될 때 요소 상의 클록으로 인스턴스화된다. 스토리보드 속성의 값은 각각의 타임라인 계층의 리프들(leaves)이 (속성의 기본값을 설정하기 위해 일 구현예에서 사용된) SetterTimeline 등인 타임라인 인스턴스, 예를 들어 IList<Timeline>이거나, 또는 이 구현예에서 SetterTimeline 아래에 애니메이션을 갖는 (기본 값을 변경하기 위해 사용된) 애니메이션 인스턴스이다. SetterTimeline은 타임라인이므로 자식을 가질 수 있지만, 일 구현예에서, SetterTimeline의 유일한 합법적 자식은 애니메이션이다.
스토리보드 속성은 종속 속성이 아니라는 것을 알기 바란다. 스토리보드 속성 내의 각각의 타임라인 인스턴스는 잠재적으로 계층을 나타낸다. 이들 타임라인 계층은 TimelineClock 계층으로 인스턴스화되고, 내부적으로 호스트 FrameworkElement 상에 저장된다. 그 다음에, 이들 개별 클록 인스턴스는 타임라인을 (스토리보드로부터의 타임라인들 중의 하나가 될 필요가 있는) 입력으로서 받아들여 관련 클록을 찾기 위해 그것을 사용하는 FindStoryboardClock API를 사용하여 얻어질 수 있다.
현재의 구현예에서, 스토리보드는 ISupportInitialize.EndInit이 호스트 프레임워크 요소 상에서 호출될 때 처리된다. 일단 스토리보드가 처리되었으면, FrameworkElement.Storyboards는 판독 전용으로 될 수 있어, 변경이 처리되지 않을 것이라는 사실을 반영하는 것을 돕는다.
상술된 바와 같이, SetterTimeline은, 지정된다면 호스트 FrameworkElement 또는 타겟 FrameworkElement에 대해 암시적으로 타겟이 될 수 있고 선택적으로 한 값일 수 있는 속성을 지정하기 위한 타임라인이다. 지정된다면, TargetID는 호스트 FrameworkElement의 자손의 FrameworkElement ID에 대한 참조이다. SetterTimeline 상의 (여기에서 PropertyPath와 같은 뜻인) Path 속성은 어떤 속성이 스토리보드를 통해 애니메이트되고 있고, 요구되는지를 설명한다.
SetterTimeline의 Value 속성 또한 선택적이다. 지정된다면, 그것은 타임라인이 액티브 중일 때 속성이 가져야 되는 기본값을 나타낸다. 이 기본 값은 애니메이션이 없을 때, 또는 애니메이션이 함축적인 값을 필요로 할 때 사용된다. 기본 값은 (요소 상에서 직접 설정된) 로컬 값으로부터, 계층으로부터, 스타일링 등등으로부터 대등하게 비롯될 수 있다. 예를 들어, 다음은 값 10에서 20까지의 속성을 애니메이트한 것이다.
Figure 112005060625356-pat00010
상기 LengthAnimation이 From 및 To 값을 지정했으면, 기본 값(SetterTimeline.Value)은 무시될 수 있다.
일 구현예에서, 타겟은 스토리보드 속성의 호스트 FrameworkElement와 동일한 트리 내에서, FrameworkElement에 대한 참조가 될 필요가 있다. PropertyPath의 제1 컴포넌트는 종속 속성-지지의(backed) 속성이 될 필요가 있다. 예를 들어, Window.WindowAutoLocation은, 그것이 종속 속성이 아니기 때문에 스토리보드 가능한 것이 아니다.
속성은 인덱스화 컬렉션 내의 아이템일 수 있다. SetterTimeline 상의 PropertyPath(또는 Path) 속성은 객체 내로 "아래 점(dot down)"을 찍을 수 있는데, 특별한 경우에 첨부 속성은 괄호로 둘러싸인다. 예를 들어, "브러시"가 Brush이면, 다음의 속성 경로는 선형 그래디언트 브러시의 스톱의 컬러 상의 알파를 액 세스하지만:
brush.Stops[1].Color.A
다음의 경로는 요소 상의 도킹(docking) 첨부 특성을 액세스한다:
button.(DockPanel.Dock)
상기 속성 경로는 첨부 속성 구문 내에 있지만, 실제로는 첨부 속성이 아니라는 것을 유의한다. 즉, BackgroundProperty는 정적 Set/Get 메소드 액세서(method accessor)를 가질 수 있는 종래의 첨부 속성과 대조적으로, Button 자체에 정의되는데, 버튼 상에 공용 언어 런타임 속성 액세서가 있다. 이것은 컴파일시에 TargetID가 특정 유형으로 분석될 수 없기 때문에 필요하고, 따라서 "Background" 속성이 어떤 클래스를 분석하는지 알 수 없다.
PropertyPath는 다음과 같이 정의된다:
Figure 112005060625356-pat00011
복합 속성 경로, 즉 하나 이상의 컴포넌트가 지정된 것들은 아래에 설명된다.
본 발명의 일 양상에 따르면, 타이밍 트리를 요소 트리와 통합하는 것에 추가하여, 스토리보드들은 속성 트리거 및 이벤트 트리거의 사용이 그들의 동작(예를 들어, 개시, 일시중지, 탐색 및 정지 동작들)을 제어할 수 있게 한다. 일반적으 로, 속성 트리거는 참 또는 거짓과 같은 일부 상태/값에 대응하는 반면, 이벤트를 시작시킨다(따라서, 거짓 값을 갖지 않는다). 예를 들어, 속성 트리거는 마우스가 한 요소 위에 있을 때 참 값을 갖고, 그 위에 없을 때 거짓 값을 가질 수 있다. 각각의 참 또는 거짓 상태는 한 스토리보드(또는 스토리보드들) 내에서 따로 개시, 정지, 일시중지 및/또는 탐색하기 위해 사용될 수 있다. 요소 상의 마우스 클릭과 같은 이벤트는 시작되므로, 가변 상태를 갖지 않지만, 마찬가지로 스토리보드의 동작을 제어할 수 있다. 이러한 방식으로, 애니메이션은 표시된 요소 트리 표현과의 사용자 상호작용을 통해 제어가능하다.
트리거는 FrameworkElement 상의 컬렉션 속성이다. 트리거는 SetAction 및 TimelineAction을 포함하는 액션을 지정할 수 있다. SetAction은 속성의 값을 지정한다. TimelineAction은 스토리보드 속성 내의 타임라인을 조작 처리한다.
예로서, 다음은 마우스-오버(mouse-over) 상의 특별한 배경을 버튼에 제공한다:
Figure 112005060625356-pat00012
TriggerAction 및 SetAction은 다음과 같이 정의된다:
Figure 112005060625356-pat00013
SetAction은 SetterTimeline의 패턴을 따르지만, SetAction은 Timeline은 아니라는 것을 유의한다.
TimelineAction은 TimelineClock 상에 각각의 동사 메소드들에 대한 서브클래스를 갖는 추상 클래스이다:
Figure 112005060625356-pat00014
TimelineAction의 TargetID는 스트링(string)인데, 스트링은 현재의 범위 내에서 분석되고, 한 타임라인까지 분석된다.
상술된 바와 같이, 속성 트리거 이외에, 이벤트 트리거가 있는데, 이벤트 트리거는 이벤트가 호스트 요소 상에서 시작될 때 액션이 발생하게 하는 이벤트를 자신의 소스로서 갖는다. 속성 트리거와 달리, 이벤트 트리거는 범위화되지 않고; 이벤트 트리거가 동작을 수행하면, 그 동작이 그 자체의 수명을 결정한다. 예를 들어, 하나의 이벤트는 타임라인을 시작시킬 수 있고, 그 타임라인은 자신의 지속시간 완료까지 실행되거나, 또는 다른 이벤트 트리거 등이 그것을 정지시킬 때까지 실행될 수 있다.
다음은 일반적으로 트리거를 설명한다:
Figure 112005060625356-pat00015
이벤트 트리거를 관련된 타임라인과 함께 사용하여, 다음의 예시적인 코드는 "온" 및 "오프" 버튼으로 조작되는 타임라인-제어 컨텐트를 나타낸다:
Figure 112005060625356-pat00016
Figure 112005060625356-pat00017
상기 코드는 독립적인 타임라인들보다 오히려, 순차적인 타임라인을 사용한다는 것을 유의한다. 순차적 타임라인은 순차적으로 트리거된 자신의 자식 타임라인을 갖는데, 예를 들어 "바(bar)"(도시되지 않음)에 대응하는 일부 스토리보드는 "푸(foo)"의 완료시에 트리거되고, 임의의 프로그램-지정 시간 데이터에서 트리거되지 않는다.
이벤트 트리거 이외에, 속성 엔터/엑시트 트리거는 또한, 일반적으로 아래의 예에 나타낸 바와 같이, 타임라인을 트리거할 때 사용하기 위해 이용가능한 것이다:
Figure 112005060625356-pat00018
본 발명의 다른 양상에 따르면, 스토리보드 및 트리거는 (스토리보드가 자신이 종속 속성이 아니므로, 완전히 유사한 종속 속성은 아니지만) 스타일링될 수 있다. 즉, 상술된 바와 같이, Style은 제작자가 하나 이상의 속성을 나타내는 데이터를 그룹화할 수 있게 하는데, 이 속성들은 다음에 한 세트로서 요소의 대응하는 속성에 적용될 수 있고; Style 내의 이들 속성들은 애니메이트되고 및/또는 트리거에 대응할 수 있다. 예를 들어, 다음과 같은 Style의 적용은 적색과 청색 사이에서 순차적으로 번쩍이도록 페이지 상의 버튼을 스타일링할 수 있다:
Figure 112005060625356-pat00019
알 수 있는 바와 같이, 트리거, 타임라인, 스토리보드, 마크업으로 국부적으로 설정된 값 및 기타를 포함하는, 상이한 메커니즘으로부터의 요소 속성들의 값들 을 제어할 수 있는 능력으로, 속성값들 사이의 충돌 해소는 속성 값이 무엇일지 결정하기 위해 처리될 필요가 있다. 예를 들어, 스토리보드 속성의 일부분으로 설정된 값은 요소 상에 국부적으로 설정된 값을 무효로 한다. 그러므로, 특정 FrameworkElement 상에 속성 값의 우선순위가 있으며, 트리거 속성이 가장 높은 우선순위로서 개시된다. 다수의 트리거가 동일한 속성을 설정하고자 하면, 최종 작성자의 기록 우선(last-writer-wins) 규칙이 적용되는데, 예를 들어 마크업의 경우에, 마크업에서 마지막에 발생하는 트리거는 그 자신의 값이 적용된다.
스토리보드 속성은 그 다음으로 높은 우선순위를 갖는데, 다시 또 최종 작성자의 기록 우선 솔루션이 동일한 속성을 설정하고자 하는 다수의 스토리보드 세터(setter)에 적용된다. 최종 작성자는 타임라인 트리의 깊이 우선 행로(depth-first walk)를 사용하여 해석된다.
요소 상에 국부적으로 설정된 값(예를 들어, FrameworkElement.SetValue)은 그 다음이다. 스타일은 일반적으로 스타일 내의 동일한 우선순위 순서로 그 다음에 오는데, 즉 스타일 트리거(다시 또, 동일한 레벨에서 충돌하는 경우에 최종 작성자의 기록 우선 규칙을 따름), 그 다음에 스타일 스토리보드, 그 다음에 스타일 타겟-유형 값이 온다.
복합 속성 경로에 관한 설명을 참조하면, 세터가 타겟에 관한 속성뿐만 아니라, 몇몇 경우에 타겟의 서브-속성들 중의 하나를 변경하는 것이 가능하다. 일반적으로, 복합 속성은 먼저 한 요소에 대한 속성 값이 무엇인지 설정한 다음에, 애니메이션에 대한 그 속성 내로 아래 점을 찍음으로써 처리된다. 예를 들어, 다음 코드는 불투명도를 애니메이트함으로써 반복적으로 서서히 보일락말락 희미해지는 적색 직사각형을 예시한다:
Figure 112005060625356-pat00020
일 구현예에서, 속성의 제1 컴포넌트는 종속 속성이 될 필요가 있다(예를 들어, 상기 예에서 기입되고 있는 Background). 그러한 종속 속성의 유형은 또한 복제된 카피가 변경될 수 있도록 카피를 복제할 필요성이 있기 때문에, 변경가능한 것(Changeable)으로 될 필요가 있으며; (대안으로는 심층 복제 솔루션(deep cloning solution), 또는 그것을 템플릿으로서 유지하는 것을 포함한다). 이것은 스타일 및 Stoboards/Triggers가 여전히 근본적으로 종속 속성에 근거하고 있기 때문에 효과가 있다는 것을 알기 바란다. Button.Background에 관련된 어떤것이 변경되면, 전체 배경 값이 재계산된다.
그러므로, 상기 예에서, 솔리드 컬러 브러시의 카피가 처음에 이루어지고, 직사각형 인스턴스 상에 저장된다. 내부적으로, 로컬 값은 트리거가 불활성일 경우에 값이 보존될 필요가 있기 때문에, 실제로 교체되지 않는다. 둘째, 트리거는 마치 스크립트를 재생하는 것처럼, 그 카피 상에서 실행된다.
그러므로, 속성 무효화 알고리즘은 2개의 과정, 즉 정말로 복합 속성 경로가 없는 것처럼, 속성의 무효화를 트리거하는 제1 과정, 및 복합 속성 경로가 있는(예를 들어, 그 안에 점이 있는) 트리거가 기본 종속 속성만을 무효화하는 제2 과정으로 발생한다.
애니메이트하기 위해, 속성 값 계산 알고리즘은 복합 속성 값을 갖는 소정의 값을 무시하면서, 기본 속성 값을 찾기 위해 정상 검색 알고리즘을 사용한다. 둘째, 알고리즘은 복합 속성 경로를 갖는 적용가능한 트리거 및 세터를 찾아서, 그들을 위에서부터 기본값에 적용한다. 이것은 가능할 때마다 값을 공유함으로써 최적화될 수 있는 변경가능한 것의 카피를 해야 할 필요가 있을 수 있는데; 카피는 필요할 때만 행해진다.
복합 특성 경로의 사용은 속성 재형성 전반에 걸쳐 일관된 클록을 유지할 것을 요구한다. 예를 들어, 다음의 마크업 코드는, 제1 정지가 하나의 속성 트리거(마우스가 버튼 위에 있을 때)에 의해 변경되고, 제2 정지가 제2 트리거(버튼이 눌러졌을 때)에 의해 변경되는 스토리보드로부터 선형 그래디언트 브러시 배경을 얻는 버튼을 나타낸 것이다:
Figure 112005060625356-pat00021
이 예에서, 처음의 잠깐 동안에, 버튼의 배경은 적색에서 녹색으로의 선형 그래디언트이다. 마우스가 버튼 위로 가면, 브러시는 분홍색에서 녹색으로의 선형 그래디언트로 변한다. 마우스 버튼이 눌러지면, 배경이 다시 분홍색에서 녹색으로의 선형 그래디언트 브러시로 변하는 순간에, 마우스 버튼이 후진되는 때까지, 컬러는 분홍색에서 밝은 녹색으로 선형적으로 변한다. 마우스가 버튼을 떠나면, 배경은 적색에서 녹색으로의 선형 그래디언트로 돌아간다. SetAction 객체 내에 복합 속성 경로를 갖는 것이 가능하다는 것을 알기 바란다.
이러한 시나리오에 적응하는 제1 단계는 스타일이 적용될 때(즉, OnStyleInvalidated 동안에) 스타일화 부모 요소 상에 클록을 저장하는 것이다. 이것은 속성이 재형성될 때 동일한 클록이 재사용될 수 있게 한다. 제2 단계는 속성 경로 에러를 무시하는 것인데; 즉, 처음의 잠깐 후에, 타임라인이 비활성되면, 버튼은 더 이상 선형 그래디언트 브러시를 갖지 않는다. 그때, 정지를 변경하는 트리거는 더 이상 의미가 없고, (데이터 바인딩과 일치하여) 조용히 무시된다.
스토리보드 속성으로부터 각각의 타임라인 트리는 스토리보드를 호스트하는 동일한 FrameworkElement 상에 내부적으로 저장된 TimelineClock 트리로 인스턴스화된다. 각각의 세터 및 애니메이션 클록에 대해, 타겟이 된 요소는 또한 클록에 대한 참조가 제공된다. 각각의 세터 클록에 대해, 타겟이 된 요소는 클록 상의 활성/불활성 이벤트에 귀기울이는데, 그 각각은 속성의 무효화를 트리거한다. 각각의 애니메이션 클록에 대해, 클록은 속성에 대한 타겟 요소의 애니메이션 클록 리스트 내로 통합된다.
도 7은 스토리보드가 요소 상에서 설정되고 처리될 때의 단계들 및 데이터 구조 갱신들의 예를 제공한다. 일반적으로, 도 7은 다음의 단순한 SetterTimeline 예에 대한 객체 및 참조를 나타낸 것이다:
Figure 112005060625356-pat00022
초기에, 하나 이상의 Timeline 인스턴스는, 예를 들어 DockPanel.Storyboards.Add(새로운 SetterTimeline(...))를 호출함으로써, DockPanel의 Storyboard 속성에 추가된다.
DockPanel의 ISupportInitialize.EndInit가 호출되면, (예를 들어, 도 7의 DockPanel(702)의 SetterTimeline(700)에 대응하는) 스토리보드는 스토리보드 내의 타임라인의 각각이 TimelineClock.CreateFromTimeline을 통해 (예를 들어, 도 7에 704로 표시된) 클록으로 인스턴스화되도록 처리되고, 개인적으로 FrameworkElement(예를 들어, 도 7의 직사각형(706)) 상에 저장된다.
각 세터의 타겟에는 영향을 받은 종속 속성과 관련되는 클록에 대한 참조가 제공된다. 타겟은 또한 (Begun 및 Ended)와 같은 클록 경계 이벤트 상에 리스너를 둔다. 세터들 하의 임의의 애니메이션은 (FrameworkElement.GetAnimationClocks을 통해) 타겟의 애니메이션 리스트에 추가된다.
스타일이 FrameworkElement(각각의 FrameworkElement) 상에 설정되면, 클록은 Style.Storyboards 컬렉션 내의 타임라인 계층으로부터 인스턴스화된다. 스타일링된 부모를 타겟으로 하는 세터의 경우, FrameworkElement는 (관련된 종속 속성과 관련된) 클록에 대한 참조를 유지하고, 스타일링된 부모는 클록에 대한 Begun/Ended 이벤트 상에 리스너를 둔다. Style.VisualTree내의 요소를 타겟으로 하는 세터의 경우, FrameworkElement가 요소를 인스턴스화할 때 유사한 참조/리스너가 설정된다.
타임라인이 처리될 때, 단순한 속성 경로(단지 단일 컴포넌트)를 갖는 세터 타임라인은 복합 경로를 갖는 세터 타임라인과 따로 유지된다. 이것은 상술된 속 성값에 대한 2단계 과정 검색을 허용한다.
상기 상세한 설명으로부터 알 수 있는 바와 같이, 스토리보드 형태의 메커니즘이 제공되는데, 이것은 제작자가 애니메이션 동안에(예를 들어, 개시 및 정지시 또는 이벤트에 응답하여) 발생하는 여러가지 동작을 상이한 타임라인에서 수동으로 동기시킬 필요성이 없다는 점이 특히 유리하다. 또한, 스타일링 시스템을 통한 스토리보드의 이용도는 타이밍 정보가 각각의 애니메이션 또는 매체 요소에 개별적으로 적용되어야 할 필요성을 없앤다.
본 발명은 여러가지 변경 및 대안적인 구성이 가능하지만, 소정의 예시된 실시예들이 도면에 도시되었으며, 상세하게 상술되었다. 그러나, 그것은 본 발명을 개시된 특정 형태로 제한하고자 하는 것이 아니라, 오히려 본 발명은 본 발명의 정신 및 범위 내에 속하는 모든 변경, 대안적인 구성 및 등가물을 포함하고자 하는 것이다.
여기에서 참조된 각각의 특허 출원은 본 발명의 양수인에게 양도된 것으로, 여기에서 참조로 사용된다.

Claims (37)

  1. 컴퓨팅 시스템의 사용자에게 표시하기 위한 그래픽 또는 다른 시청각 정보의 프로세싱을 위한 컴퓨팅 시스템에서, 개별적으로 시간에 따라 각각의 애니메이션의 변경을 정하는 대신에, 상이한 애니메이션 속성(property)들의 다양한 타이밍을 조정하기 위하여 단일 타임라인을 사용하여, 애니메이트될 하나 이상의 객체(object)의 상이한 애니메이션 속성들에 대한 다양한 타이밍을 조정하여, 보다 간단한 방식으로 서로 동기화되는 애니메이션들의 생성을 가능하게 하는 방법으로서,
    고레벨 합성 및 애니메이션 엔진에서, 애플리케이션 프로그램 또는 다른 고레벨 프로그램에 의해 제공된 그래픽 장면을 나타내는 계층적 요소 트리(hierarchical element tree)를 생성하는 단계 - 상기 트리의 각각의 노드는 상기 그래픽 장면에서 애니메이트될 객체에 대한 하나 이상의 애니메이션 컴포넌트를 나타냄 -;
    상기 고레벨 합성 및 애니메이션 엔진에서, 상기 그래픽 장면에서 애니메이트될 상기 하나 이상의 객체의 상이한 애니메이션 속성들에 대한 상기 조정된 타이밍 및 동기화를 나타내는 계층적 클록 트리(hierarchical clock tree)를 생성하는 단계 - 상기 계층적 클록 트리의 각각의 노드는 객체의 임의의 애니메이션 속성들에 대한 타이밍을 나타내고, 상기 계층적 클록 트리의 각각의 레벨은 서로 동기화된 채로 유지됨 -;
    상기 고레벨 합성 및 애니메이션 엔진에서, 상이한 애니메이션 컴포넌트들의 상이한 속성들에 대한 타이밍이 상이한 레벨들에서 제공되는 타이밍 및 상기 클록 트리의 노드들에 의해 제어되고 동기화되고, 결과적으로는 상기 클록 트리의 최상위 레벨에서 제공된 타이밍에 의해 동기화되도록, 상기 그래픽 장면에서 애니메이트될 객체에 대한 애니메이션 컴포넌트들을 나타내는 요소 트리의 노드들 중 적어도 일부를 상기 요소 트리의 링크된 애니메이션 컴포넌트들에 대한 타이밍을 나타내는 클록 트리의 노드들 중 적어도 일부와 링크시킴으로써 상기 요소 트리 및 상기 클록 트리를 통합하여, 여러 가지 애니메이션 컴포넌트들에 영향을 미치는 다른 독립된(otherwise independent) 타임라인들의 조정을 제공하는 단계;
    상기 고레벨 합성 및 애니메이션 엔진에서, 상태 기계(state machine)를 이벤트 리스트 생성기의 형태로 사용하여, 상기 요소 트리와 통합될 시에 상기 클록 트리로부터 이벤트 리스트를 생성하는 단계 - 상기 이벤트 리스트는 각각의 독립된 애니메이션 또는 애니메이션 세트에 대응하는 이벤트 리스트가 존재하도록, 두개의 트리들 중 상기 링크된 애니메이션 컴포넌트들 및 타이밍 클록들에 의해 초기에 스케쥴링된 이벤트들을 그룹화함 -;
    상기 고레벨 합성 및 애니메이션 엔진에서, 간격 생성기를 사용하여, 상기 이벤트 리스트의 각각의 애니메이션 또는 애니메이션 세트에 대하여 간격 리스트로 컴파일되는 대응하는 간격을 준비하는 단계; 및
    저레벨 합성 및 애니메이션 엔진에서, 상기 간격 리스트를 수신하고 나서, 상기 간격 리스트를, 상기 애니메이트된 장면을 렌더링(rendering)하고 표시하는 그래픽 서브시스템에 의해 사용되는 출력을 차례로 생성하는 저레벨 계산 엔진으로 입력하는 단계
    를 포함하는 방법.
  2. 제1항에 있어서, 상기 객체에 대한 애니메이션 컴포넌트들을 나타내는 요소 트리의 노드들 중 적어도 일부를 상기 요소 트리의 링크된 애니메이션 컴포넌트들에 대한 타이밍을 나타내는 클록 트리의 노드들 중 적어도 일부와 링크시킴으로써 상기 요소 트리 및 상기 클록 트리를 통합하는 단계는, 확장가능 애플리케이션 마크업 언어(extensible application markup language: XAML)를 사용함으로써 수행되는 방법.
  3. 제1항에 있어서, 상기 클록 트리의 노드들 중 적어도 일부는 요소와 연관된 스타일(style)로부터의 타이밍 데이터를 나타내는 방법.
  4. 제1항에 있어서, 상기 요소 트리와 통합될 시에 상기 클록 트리로부터 이벤트 리스트를 생성하는 단계는 전반적인 스토리보드(storyboard) 타임라인의 정보를 유지하는 클록 객체를 인스턴스화하는 단계를 포함하는 방법.
  5. 제4항에 있어서, 상기 전반적인 스토리보드 타임라인의 정보를 유지하는 클록 객체를 인스턴스화하는 단계는, 트리거에 응답하여 상기 스토리보드 타임라인을 개시시킴으로써 수행되는 방법.
  6. 제5항에 있어서, 상기 트리거는 속성 트리거에 대응하고, 상기 스토리보드 타임라인을 개시시키는 것은 상기 속성 트리거의 상태를 평가하는 것을 포함하는 방법.
  7. 제5항에 있어서, 상기 트리거는 이벤트 트리거에 대응하고, 상기 스토리보드 타임라인을 개시시키는 것은 상기 이벤트 트리거에 의해 시작된(fired) 이벤트를 검출하는 것을 포함하는 방법.
  8. 제5항에 있어서, 상기 트리거는 엔터/엑시트(enter/exit) 트리거에 대응하고, 상기 스토리보드 타임라인을 개시시키는 것은 엔터 이벤트에 대한 속성 트리거의 상태를 평가하는 것을 포함하는 방법.
  9. 제1항에 있어서, 상기 계층적 요소 트리의 복합 속성 경로 내의 타겟 요소의 서브-속성(sub-property)을 변경하는 단계를 더 포함하는 방법.
  10. 제9항에 있어서, 상기 서브-속성을 변경하는 단계는 상기 타겟 요소에 대한 속성 값을 설정하고, 그 후에 서브-속성 값을 변경하는 단계를 포함하는 방법.
  11. 제10항에 있어서, 상기 타겟 요소에 대한 속성 값을 설정하는 단계는 충돌 해결 순서화(conflict resolution ordering)에 기초하여 상기 속성 값을 검색하는 단계를 포함하는 방법.
  12. 제9항에 있어서, 상기 서브-속성의 값을 변경하는 단계는 상기 서브 속성의 값을 변경하기 위한 기본값을 결정하는 단계를 포함하는 방법.
  13. 컴퓨터 시스템으로 하여금 제1항 내지 제12항 중 어느 한 항의 방법을 구현하게 하는 컴퓨터 실행가능 명령어들을 포함하는 컴퓨터 판독가능 저장 매체.
  14. 삭제
  15. 삭제
  16. 삭제
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
  21. 삭제
  22. 삭제
  23. 삭제
  24. 삭제
  25. 삭제
  26. 삭제
  27. 삭제
  28. 삭제
  29. 삭제
  30. 삭제
  31. 삭제
  32. 삭제
  33. 삭제
  34. 삭제
  35. 삭제
  36. 삭제
  37. 삭제
KR1020050100758A 2004-11-18 2005-10-25 컴퓨터 디스플레이 출력시의 애니메이션 및 매체 조정 KR101143095B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/992,462 2004-11-18
US10/992,462 US7336280B2 (en) 2004-11-18 2004-11-18 Coordinating animations and media in computer display output

Publications (2)

Publication Number Publication Date
KR20060055321A KR20060055321A (ko) 2006-05-23
KR101143095B1 true KR101143095B1 (ko) 2012-05-08

Family

ID=35976593

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020050100758A KR101143095B1 (ko) 2004-11-18 2005-10-25 컴퓨터 디스플레이 출력시의 애니메이션 및 매체 조정

Country Status (13)

Country Link
US (1) US7336280B2 (ko)
EP (1) EP1659504A3 (ko)
JP (1) JP4694355B2 (ko)
KR (1) KR101143095B1 (ko)
CN (1) CN1776672B (ko)
AU (1) AU2005229639A1 (ko)
BR (1) BRPI0505092A (ko)
CA (1) CA2523730A1 (ko)
MX (1) MXPA05011864A (ko)
MY (1) MY147448A (ko)
RU (1) RU2391709C2 (ko)
TW (1) TW200627281A (ko)
ZA (1) ZA200508346B (ko)

Families Citing this family (61)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7561159B2 (en) * 2005-05-31 2009-07-14 Magnifi Group Inc. Control of animation timeline
US20070009088A1 (en) * 2005-07-06 2007-01-11 Edic Peter M System and method for imaging using distributed X-ray sources
EP2299358A1 (en) 2005-07-08 2011-03-23 Corizon Limited Method and apparatus for user interface modification
US8972423B2 (en) * 2006-09-26 2015-03-03 Siemens Product Lifecycle Management Software Inc. Opaque mechanism for web service interoperability
US7782324B2 (en) * 2005-11-23 2010-08-24 Dreamworks Animation Llc Non-hierarchical unchained kinematic rigging technique and system for animation
US20070200872A1 (en) * 2006-02-21 2007-08-30 Brauhaus Software Generating an image sequence
US20080084416A1 (en) * 2006-10-06 2008-04-10 Microsoft Corporation User-pluggable rendering engine
US8234392B2 (en) * 2006-11-17 2012-07-31 Apple Inc. Methods and apparatuses for providing a hardware accelerated web engine
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
US8813100B1 (en) 2007-01-07 2014-08-19 Apple Inc. Memory management
US8074227B2 (en) * 2007-02-08 2011-12-06 Microsoft Corporation Utilizing a first managed process to host at least a second managed process
US20080250424A1 (en) * 2007-04-04 2008-10-09 Ms1 - Microsoft Corporation Seamless Window Implementation for Windows Presentation Foundation based Applications
CN100530088C (zh) * 2007-06-26 2009-08-19 腾讯科技(深圳)有限公司 一种应用程序的触发方法及装置
KR101445074B1 (ko) * 2007-10-24 2014-09-29 삼성전자주식회사 미디어 플레이어에서 미디어 객체 처리 방법 및 그 장치
TWI366143B (en) * 2007-11-28 2012-06-11 Inst Information Industry System, method and recording medium for generating response motions of a virtual character dynamically in real time
US20090315897A1 (en) * 2008-06-24 2009-12-24 Microsoft Corporation Animation platform
US20090315896A1 (en) * 2008-06-24 2009-12-24 Microsoft Corporation Animation platform
US20090322760A1 (en) * 2008-06-26 2009-12-31 Microsoft Corporation Dynamic animation scheduling
US8836706B2 (en) * 2008-12-18 2014-09-16 Microsoft Corporation Triggering animation actions and media object actions
US20110090236A1 (en) * 2009-10-15 2011-04-21 Microsoft Corporation Graphic Object Data Binding
US8866822B2 (en) * 2010-09-07 2014-10-21 Microsoft Corporation Alternate source for controlling an animation
US8922564B2 (en) * 2010-12-01 2014-12-30 Microsoft Corporation Controlling runtime execution from a host to conserve resources
US9152395B2 (en) 2010-12-13 2015-10-06 Microsoft Technology Licensing, Llc Response to user input based on declarative mappings
US10169901B2 (en) * 2010-12-17 2019-01-01 Microsoft Technology Licensing, Llc Staggered animation scheduling
US8640047B2 (en) 2011-06-01 2014-01-28 Micorsoft Corporation Asynchronous handling of a user interface manipulation
US8907957B2 (en) 2011-08-30 2014-12-09 Apple Inc. Automatic animation generation
US20130063446A1 (en) 2011-09-10 2013-03-14 Microsoft Corporation Scenario Based Animation Library
US9164576B2 (en) 2011-09-13 2015-10-20 Apple Inc. Conformance protocol for heterogeneous abstractions for defining user interface behaviors
US8819567B2 (en) 2011-09-13 2014-08-26 Apple Inc. Defining and editing user interface behaviors
US9223395B2 (en) * 2011-09-14 2015-12-29 Microsoft Technology Licensing, Llc Viewing presentations in a condensed animation mode
US20140300611A1 (en) * 2013-03-15 2014-10-09 Trigger Happy, Ltd. Web and native code environment modular player and modular rendering system
CN104090709B (zh) * 2014-06-11 2017-11-21 小米科技有限责任公司 图片切换方法和装置
AU2015279544B2 (en) 2014-06-27 2018-03-15 Apple Inc. Electronic device with rotatable input mechanism for navigating calendar application
EP3195098A2 (en) 2014-07-21 2017-07-26 Apple Inc. Remote user interface
KR102156223B1 (ko) 2014-08-02 2020-09-15 애플 인크. 상황 특정 사용자 인터페이스
US10452253B2 (en) 2014-08-15 2019-10-22 Apple Inc. Weather user interface
US10146409B2 (en) 2014-08-29 2018-12-04 Microsoft Technology Licensing, Llc Computerized dynamic splitting of interaction across multiple content
JP2017527033A (ja) 2014-09-02 2017-09-14 アップル インコーポレイテッド ユーザ入力を受信するためのユーザインタフェース
US10254948B2 (en) 2014-09-02 2019-04-09 Apple Inc. Reduced-size user interfaces for dynamically updated application overviews
EP4209872A1 (en) 2014-09-02 2023-07-12 Apple Inc. Phone user interface
US10055121B2 (en) 2015-03-07 2018-08-21 Apple Inc. Activity based thresholds and feedbacks
WO2016144385A1 (en) 2015-03-08 2016-09-15 Apple Inc. Sharing user-configurable graphical constructs
US9916075B2 (en) 2015-06-05 2018-03-13 Apple Inc. Formatting content for a reduced-size user interface
EP3337583B1 (en) 2015-08-20 2024-01-17 Apple Inc. Exercise-based watch face
DK201770423A1 (en) 2016-06-11 2018-01-15 Apple Inc Activity and workout updates
CN106887030B (zh) 2016-06-17 2020-03-06 阿里巴巴集团控股有限公司 一种动画生成方法和装置
DK179412B1 (en) 2017-05-12 2018-06-06 Apple Inc Context-Specific User Interfaces
US11327650B2 (en) 2018-05-07 2022-05-10 Apple Inc. User interfaces having a collection of complications
US10631047B1 (en) * 2019-03-29 2020-04-21 Pond5 Inc. Online video editor
US11340778B2 (en) 2019-05-06 2022-05-24 Apple Inc. Restricted operation of an electronic device
US11960701B2 (en) 2019-05-06 2024-04-16 Apple Inc. Using an illustration to show the passing of time
US11131967B2 (en) 2019-05-06 2021-09-28 Apple Inc. Clock faces for an electronic device
US10852905B1 (en) 2019-09-09 2020-12-01 Apple Inc. Techniques for managing display usage
DK202070624A1 (en) 2020-05-11 2022-01-04 Apple Inc User interfaces related to time
US11372659B2 (en) 2020-05-11 2022-06-28 Apple Inc. User interfaces for managing user interface sharing
EP4133371A1 (en) 2020-05-11 2023-02-15 Apple Inc. User interfaces for managing user interface sharing
US11694590B2 (en) 2020-12-21 2023-07-04 Apple Inc. Dynamic user interface with time indicator
US11720239B2 (en) 2021-01-07 2023-08-08 Apple Inc. Techniques for user interfaces related to an event
US11921992B2 (en) 2021-05-14 2024-03-05 Apple Inc. User interfaces related to time
CN113791821B (zh) * 2021-09-18 2023-11-17 广州博冠信息科技有限公司 基于虚幻引擎的动画处理方法、装置、介质与电子设备

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1376406A2 (en) 2002-06-26 2004-01-02 Microsoft Corporation A system and process for creating an interactive presentation employing multi-media components
US20040163045A1 (en) 1999-03-31 2004-08-19 Canon Kabushiki Kaisha Synchronized multimedia integration language extensions

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5104482A (en) * 1989-02-21 1992-04-14 Lam Research Corporation Simultaneous glass deposition and viscoelastic flow process
US5659792A (en) * 1993-01-15 1997-08-19 Canon Information Systems Research Australia Pty Ltd. Storyboard system for the simultaneous timing of multiple independent video animation clips
JPH07249683A (ja) * 1993-10-12 1995-09-26 Texas Instr Inc <Ti> 低温リフロー用非均一複合ドープ膜およびその形成方法
US20040220926A1 (en) * 2000-01-03 2004-11-04 Interactual Technologies, Inc., A California Cpr[P Personalization services for entities from multiple sources
US20020008704A1 (en) * 2000-07-21 2002-01-24 Sheasby Michael C. Interactive behavioral authoring of deterministic animation
JP2002044594A (ja) * 2000-07-21 2002-02-08 Nippon Telegraph & Telephone West Corp コンテンツ編集装置
KR20040020933A (ko) * 2001-06-22 2004-03-09 노사 오모이구이 지식 검색, 관리, 전달 및 프리젠테이션을 위한 시스템 및방법
US20040205515A1 (en) * 2003-04-10 2004-10-14 Simple Twists, Ltd. Multi-media story editing tool

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040163045A1 (en) 1999-03-31 2004-08-19 Canon Kabushiki Kaisha Synchronized multimedia integration language extensions
EP1376406A2 (en) 2002-06-26 2004-01-02 Microsoft Corporation A system and process for creating an interactive presentation employing multi-media components

Also Published As

Publication number Publication date
MXPA05011864A (es) 2006-05-25
AU2005229639A1 (en) 2006-06-01
RU2005135845A (ru) 2007-05-27
US20060103655A1 (en) 2006-05-18
BRPI0505092A (pt) 2006-07-04
TW200627281A (en) 2006-08-01
CN1776672A (zh) 2006-05-24
US7336280B2 (en) 2008-02-26
RU2391709C2 (ru) 2010-06-10
JP2006146924A (ja) 2006-06-08
KR20060055321A (ko) 2006-05-23
EP1659504A2 (en) 2006-05-24
EP1659504A3 (en) 2009-03-04
JP4694355B2 (ja) 2011-06-08
CN1776672B (zh) 2010-06-09
ZA200508346B (en) 2007-06-27
MY147448A (en) 2012-12-14
CA2523730A1 (en) 2006-05-18

Similar Documents

Publication Publication Date Title
KR101143095B1 (ko) 컴퓨터 디스플레이 출력시의 애니메이션 및 매체 조정
US7477254B2 (en) Smooth transitions between animations
KR100938036B1 (ko) 그래픽 표시 애니메이션 시스템, 표시 요소 애니메이션화 방법, 애니메이션 동작 적용 방법, 및 컴퓨터 판독가능 매체
US8446415B2 (en) Framework for graphics animation and compositing operations
JP3599738B2 (ja) マルチメディア同期システム
US20080303827A1 (en) Methods and Systems for Animating Displayed Representations of Data Items
JPH08509824A (ja) 共同作業システム
JPH08509825A (ja) 並行フレームワーク・システム
WO1994027233A1 (en) Audio synchronization system
JPH08508596A (ja) ランタイム・ローダ
US20080303826A1 (en) Methods and Systems for Animating Displayed Representations of Data Items

Legal Events

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

Payment date: 20170330

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20180328

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20190328

Year of fee payment: 8