(57)【要約】  本発明によるシステムおよび方法は、ズーミング可能なユーザインターフェイスを作成するために使用可能なソフトウェア構成体(ブリック)を提供する。ブリックは、グラフィック表示のパラメータ化されたバリエーションをもたらし、ユーザインターフェイスにおける異なるシーンにまたがって再利用可能であり、カスケードである。
2008527540.tif 000002
【特許請求の範囲】
【請求項１】
グラフィカルユーザインターフェイス上に情報を表示する方法であって、
第1の倍率レベルで第1の複数の画像を表示するステップと、
前記複数の画像の部分集合を識別する第1の選択指示を受け取るステップと、
第2の倍率レベルで前記複数の画像の前記選択された部分集合の第1のズームされたバージョンを表示するステップとを含み、
前記第1および第2の表示するステップは両方とも、少なくとも1つの再利用可能なソフトウェアコードブロックを実行することにより実行される方法。
【請求項２】
前記少なくとも1つの再利用可能なソフトウェアコードブロックは、スケーラブルベクトルグラフィックス(SVG)言語で書かれている請求項1に記載の方法。
【請求項３】
前記少なくとも1つの再利用可能なソフトウェアコードブロックを生成するために使用される前記SVG言語は、ブリック構成体を含むように修正され、前記ブリック構成体は、
識別(id)値、ピクセル単位で対応するノードの幅を指定する幅値、ピクセル単位で対応するノードの高さを指定する高さ値、変換値、ポインタイベント値、可視属性、およびブリックとしてロードするSVGファイルへのURLを属性として有する請求項2に記載の方法。
【請求項４】
前記少なくとも1つの再利用可能なソフトウェアコードブロックは、複数の選択可能なアイテムを前記第1の複数の画像として含む棚を描画するために使用される請求項1に記載の方法。
【請求項５】
前記第1の複数の画像は、前記少なくとも1つの再利用可能なソフトウェアコードブロックにパラメータとして渡される画像データを使用して前記ユーザインターフェイス上に描画される請求項4に記載の方法。
【請求項６】
前記パラメータは、映画および音楽のうちの1つに関連付けられているメタデータである請求項5に記載の方法。
【請求項７】
メタデータ処理システムに関連付けられている分散ソフトウェア構成の方法であって、
それぞれがそれぞれの高レベルメタデータカテゴリとのユーザ対話を定義する複数の第1の種類のシステム規模のソフトウェア構成体を実現するステップと、
少なくとも1つの第2の種類の低レベルのシステム規模のソフトウェア構成体を実現するステップとを含み、前記複数の第1の種類のシステム規模のソフトウェア構成体はそれぞれ、前記第2の種類の低レベルのシステム規模のソフトウェア構成体のうちの1つまたは複数からなる方法。
【請求項８】
前記少なくとも1つの第2の種類の低レベルのシステム規模の構成体は、第2のレベルのメタデータカテゴリとのシステム対話を定義するか、またはメタデータ特有の機能を定義する請求項7に記載の方法。
【請求項９】
前記高レベルメタデータカテゴリは、映画であり、前記第2のレベルのメタデータカテゴリは、映画タイトルおよび映画スターの名前を含む請求項7に記載の方法。
【請求項１０】
前記第2の種類の低レベルのシステム規模の構成体は、スケーラブルベクトルグラフィックス(SVG)言語の修正形態を使用して構成されるブリックである請求項7に記載の方法。
【請求項１１】
分散ソフトウェア構成を有するメタデータ処理システムであって、
さまざまな種類のメタデータを前記メタデータ処理システムに供給するメタデータ供給源と、
それぞれがそれぞれの高レベルメタデータカテゴリとのユーザ対話を定義する複数の第1の種類のシステム規模のソフトウェア構成体と、
少なくとも1つの第2の種類の低レベルのシステム規模のソフトウェア構成体とを備え、前記複数の第1の種類のシステム規模のソフトウェア構成体はそれぞれ、前記第2の種類の低レベルのシステム規模のソフトウェア構成体のうちの1つまたは複数からなるメタデータ処理システム。
【請求項１２】
前記少なくとも1つの第2の種類の低レベルのシステム規模の構成体は、第2のレベルのメタデータカテゴリとのシステム対話を定義するか、またはメタデータ特有の機能を定義する請求項11に記載のメタデータ処理システム。
【請求項１３】
前記高レベルメタデータカテゴリは、映画であり、前記第2のレベルのメタデータカテゴリは、映画タイトルおよび映画スターの名前を含む請求項11に記載のメタデータ処理システム。
【請求項１４】
前記第2の種類の低レベルのシステム規模の構成体は、スケーラブルベクトルグラフィックス(SVG)言語の修正形態を使用して構成されるブリックである請求項11に記載のメタデータ処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、開示が参照により本明細書に組み込まれている、「Distributed Software Construction with Bricks」という表題の2005年1月5日に出願された米国仮特許出願第60/641,406号に関係するものであり、またその優先権を主張するものである。
【０００２】
本発明は、メディアアイテムの編成、選択、および起動を行うためのフレームワークについて説明する。そのフレームワークの一部は、ポイント、クリック、スクロール、ホバリング、およびズームの基本構成要素を備えるグラフィカルユーザインターフェイス、より詳細には、自由空間ポインティングリモコンとともに使用できるメディアアイテムに関連付けられているグラフィカルユーザインターフェイスの設計およびオペレーションを伴う。
【背景技術】
【０００３】
情報の通信に関連する技術は、最近数十年の間に急速に発達した。(単に数例を挙げただけでも)テレビ、携帯電話、インターネットおよび光通信技術が複合することで、消費者は非常に多くの情報および娯楽の選択肢を利用できるようになっている。テレビを例にとると、この30年の間に、有線テレビ放送、衛星テレビ放送、ペイパービュー方式映画、ビデオオンデマンドが導入された。1960年代のテレビ視聴者は、典型的には、無料の電波によるテレビ放送の4つまたは5つのチャンネルをテレビ受像機で受信できたと思われるが、今日のテレビ視聴者は、数百、場合によっては数千ものチャンネルから番組や情報を選択する機会が与えられている。現在主にホテルなどで使用されているビデオオンデマンド技術を利用すれば、数千もの映画タイトルから家庭内で娯楽作品を選択することが可能になる。カリフォルニア州95002アルビソ、ゴールドストリート2160所在のTiVo, Inc.社が販売しているようなデジタルビデオ記録(DVR)機器は、さらに、利用可能な選択肢を広げる。
【０００４】
このような大量の情報およびコンテンツをエンドユーザに対して技術的に提供可能であることは、システム設計者およびサービス提供者に、好機をもたらすとともに、難題を課すことにもなる。難題の1つは、エンドユーザは典型的には与えられる選択肢が少ないのよりも多いのを好むが、この選好は、選択プロセスが高速で、かつ単純であるべきという願望と平衡しているという点である。残念なことに、エンドユーザがメディアアイテムにアクセスするために使用するシステムおよびインターフェイスの開発の結果、高速でもなく単純でもない選択プロセスができあがった。ここでまた、テレビ番組の例を考察する。テレビがまだその幼年時代にあった頃、どの番組を見るか決定することは、主に選択肢が少数であったため、比較的単純なプロセスであった。視聴者は、例えば、(1)近くのテレビチャンネル、(2)それらのチャンネルで伝送されている番組、および(3)日時の間の対応関係を示す一連の列と行として書式化された印刷された番組ガイドを調べる。テレビは、チューナつまみを調節することにより見たいチャンネルに合わされ、視聴者はその選択された番組を見た。その後、リモコンデバイスが導入され、視聴者は離れた場所からテレビのチャンネルを合わせることができるようになった。ユーザテレビジョンインターフェイスにこうした機能の追加が行われ、「チャンネルサーフィン」と呼ばれる現象が引き起こされるようになり、これにより視聴者は、多数のチャンネルで放送されている短い番組断片をすぐに見て、所定の時刻にどの番組が見られるかを素早く知ることができた。
【０００５】
チャンネルの数と視聴可能コンテンツの量は、劇的に増大してきたという事実があるにもかかわらず、テレビで一般的に利用可能なユーザインターフェイスおよびコントロールデバイスオプションおよびフレームワークは、ここ30年間あまり変化していない。印刷された番組ガイドは、なおも、番組情報を伝える最も普及しているメカニズムである。単純な上向き矢印と下向き矢印を備える複数ボタンリモコンは、なおも、最も普及しているチャンネル/コンテンツ選択メカニズムである。利用可能なメディアンコンテンツの増大に対する、TVユーザインターフェイスを設計し、実装する人々の反応は、既存の選択手順およびインターフェイスオブジェクトの直接的な拡張であった。そのため、印刷された番組ガイド中の行と列の数は、さらに多くのチャンネルを盛り込めるように増やされた。リモコンデバイス上のボタンの数も、例えば、図1に示されているように、追加機能およびコンテンツの取り扱いをサポートするために増やされた。しかし、このアプローチでは、視聴者が利用可能な情報を調べるのに要する時間だけでなく選択を実行するのに必要なアクションの複雑度も著しく増大した。ほぼ間違いなく、既存のインターフェイスの扱いにくい性質は、一部のサービス、例えば、ビデオオンデマンドの商業実装を妨げたが、それは、消費者が、すでに遅くて複雑すぎると見ているインターフェイスになおも複雑さを付け加える新しいサービスに抵抗しているからである。
【０００６】
帯域幅およびコンテンツの増大に加えて、ユーザインターフェイスのボトルネック問題は、技術の集約化により悪化しつつある。消費者は、多数の分離可能なコンポーネントではなく、統合システムを購入するオプションを持つことに対し積極的なリアクションを示している。このトレンドのよい例として、3つの以前には独立していたコンポーネントが今日では統合ユニットとして売られることが多くなっているコンビネーションテレビ/VCR/DVDが挙げられる。このトレンドは続く可能性が高く、潜在的に最終的結果として、家庭に現在見られる通信デバイスのすべてではないとしてもその大半が、統合ユニット、例えば、テレビ/VCR/DVD/インターネットアクセス/ラジオ/ステレオユニットとしてパッケージ化されるであろう。セパレート型コンポーネントを購入する人でも、それらのコンポーネントのシームレスなコントロールおよびそれらのコンポーネントの間の相互動作を望んでいる。このような集約化が増えるとともに、ユーザインターフェイスの複雑さが増す可能性がある。例えば、いわゆる「ユニバーサル」リモコンユニットが導入され、例えば、TVリモコンユニットとVCRリモコンユニットの機能を組み合わせたときに、それらのユニバーサルリモコンユニット上のボタンの個数は、典型的には、個別にTVリモコンユニット上のボタンの数またはVCRリモコンユニット上のボタン数のいずれよりも多くなった。このようにボタンと機能の数が増えると、リモコンユニット上の目指すボタンを探し回らずにTVまたはVCRの最も単純な機能以外のものをコントロールすることが非常に困難になる。これらのユニバーサルリモコンユニットが、特定TVに固有の多くのレベルにわかれているコントロールまたは機能にアクセスするのに十分な数のボタンを備えていないことは幾度となくある。これらの場合において、オリジナルのデバイスリモコンユニットはなおも必要であり、複数のリモコンを扱うという元からの面倒な作業は、集約化の複雑さから生じるユーザインターフェイス問題のせいで、いぜんとして残る。いくつかのリモコンユニットでは、このような問題を、エキスパートコマンドでプログラムすることができる「ソフト」ボタンを追加することにより解消している。これらのソフトボタンは、ときには、その動作を示すために付属LCDディスプレイを備える。これらには、また、TVからリモコンに目を移すことなく使用することが困難であるという欠点がある。これらのリモコンユニットのさらに他の欠点は、ボタンの数を減らそうとしてモードを使用することである。これらの「モード付き」ユニバーサルリモコンユニットでは、リモコンユニットがTV、DVDプレーヤ、ケーブルセットトップボックス、VCRなどと通信すべきかどうかを選択する特殊ボタンが存在する。これにより、間違ったデバイスにコマンドを送信すること、正しいモードに入っているかどうかを確認するためにユーザにリモコンユニットを見ることを強いることを含む多くの使用性問題が引き起こされ、複数のデバイスの統合の簡素化が行われない。これらのユニバーサルリモコンユニットの最も進んでいる点は、ユーザが複数のデバイスへのコマンド列をリモコンユニット内にプログラムできるようにすることによるある種の統合を実現することである。���れは、多くのユーザがユニバーサルリモコンユニットをプログラムするためにインストール専門家を雇うような難しいタスクである。
【０００７】
エンドユーザとメディアシステムとの間の画面インターフェイスを現代的にするいくつかの試みもなされてきた。電子番組ガイド(EPG)は、前述のメディアガイドを置き換えるために、開発され実装された。初期のEPGは、印刷されたメディアガイドの本質的に電子レプリカとなるものを備えた。例えば、ケーブルサービス事業者は、アナログEPGを提供し、そこでは、専用チャンネルが、一定期間にわたって、例えば、次の2時間の間に、チャンネルおよび関連する番組のゆっくりスクロールするグリッドを表示する。この方法で100ものチャンネルをスクロールするのは、退屈な作業であり、コンテンツ配布が著しく増える、例えばビデオオンデマンドの場合に対応できるように拡張可能ではない。より高度なデジタルEPGも、開発されている。デジタルEPGでは、番組予定情報、およびオプションでアプリケーション/システムソフトウェアは、専用のEPG機器、例えば、デジタルセットトップボックス(STB)に送信される。デジタルEPGは、ローカルの対話性を実現し、ユーザと表示されるメディアアイテムの選択との間に1つまたは複数のインターフェイス層をかませることができるため、メディアシステム用のユーザインターフェイスを設計する際に柔軟度が高い。このようなインターフェイスの一実施例は、開示が参照により本明細書に組み込まれる、Kamenらの米国特許第6,421,067号に見られる。図2は、'067特許で説明されているGUIを示している。そこで、Kamenらの特許では、第1の列190は、番組チャンネルの一覧を表示し、第2の列191は、現在放映中の番組を示し、列192は、次の半時間に放映する番組を示し、第4の列193は、その後の半時間に放映する番組を示す。野球用バットのアイコン121は、列191および192にわたり、これにより、野球の試合が列192に対応するタイムスロットに続くことが予想されることを示す。しかし、テキストブロック111は、列192内に届かない。これは、フットボールの試合は、列192に対応するタイムスロットに及ぶことが予想されないことを示している。これからわかるように、絵文字194は、フットボールの試合の後、ABCが競馬を表示していることを示す。図2に示されているアイコンは、図には示されていないカーソルを使用して作動させることができ、さまざまな機能を実装する、例えば、選択されたプログラミングに関連する情報をダウンロードすることができる。他のデジタルEPGおよび関係するインターフェイスは、例えば、開示がさらに参照により本明細書に組み込まれる、米国特許第6,314,575号、第6,412,110号、および第6,577,350号で説明されている。
【０００８】
しかし、上で説明されているインターフェイスには、さまざまな欠点のうちとりわけ、メディアアイテムの大きなコレクションとメディアアイテムの小さなコレクションとの間で容易にスケーリングできないという欠点がある。例えば、アイテムのリストに依存するインターフェイスは、メディアアイテムの小さなコレクションの場合にはうまく働くが、メディアアイテムの大きなコレクションの場合にはブラウズに時間がかかる。階層的ナビゲーション(例えば、ツリー構造)に依存するインターフェイスは、メディアアイテムの大きなコレクションについては、リストインターフェイスに比べて横断がスピーディーな場合があるが、メディアアイテムの小さなコレクションには簡単に適応させることができない。さらに、ユーザは、ツリー構造内の3つまたはそれ以上の層内をユーザが移動しなければならない選択プロセスには関心を失う傾向がある。これらの場合すべてに関して、現在のリモコンユニットでは、リストまたは階層をナビゲートするために上および下ボタンを繰り返し押し続けることをユーザに強制するので、この選択プロセッサはなおいっそう退屈なものとなる。ページアップおよびページダウンなどの選択スキップコントロールが利用できる場合、ユーザは、通常、これらの特殊ボタンを見つけるためにリモコンユニットを見なければならないか、またはそもそも存在していることを知ることを学習しなければならない。
【０００９】
ユーザとメディアシステムとの間のコントロールおよび画面インターフェイスを簡素化し、さらには、選択プロセスを高速化する、編成フレームワーク、技術、およびシステムは、「A Control Framework with a Zoomable Graphical User Interface for Organizing, Selecting and Launching Media Items」という表題の2004年1月30日に出願された米国特許出願第10/768,432号で説明されており、その開示は、参照により本明細書に組み込まれ、これ以降「'432出願」と呼ぶ。このようなフレームワークを使用すると、サービスプロバイダは、多数のメディアアイテムおよび新しいサービスをユーザに提供しやすくすることによりエンドユーザ機器への利用可能な帯域幅の増大を利用することができる。
【００１０】
典型的には、ユーザインターフェイスおよび例えばセットトップボックスおよびTVシステムに関連するアプリケーション構築に関連するソフトウェア開発は、両極端の間の選択を伴う。アプローチの1つは、ソフトウェア全体を1つの統一アプリケーションとして開発することである。このアプローチには、ユーザとユーザインターフェイスとの間の対話は、完全にカプセル化され、実行は、完全にコントロールされるという利点がある。このアプローチの欠点は、何かが変更されたときにはいつもアプリケーション全体が影響を受けるため、ユーザインターフェイス用の新しい機能の開発に時間がかかることである。この範囲の他端には、Webブラウザによく似たユーザインターフェイスを設計するアプローチがある。このアプローチを使用すると、HTMLコードを解釈実行し、ユーザインターフェイス画面を構成する小さなマシンが構築される。この第2のアプローチの利点の1つは、アプリケーションの開発が非常に迅速に行えることである。このアプローチの欠点は、対話が完全にはカプセル化されず、帯域幅性能問題が完全にはコントロールされないという点である。首尾一貫したユーザ対話は、よいユーザインターフェイス設計にとって重要であるため、特にTVユーザインターフェイス設計では、前者の問題が重大であることがある。さらに、セットトップボックスは、例えば、重大な帯域幅制限に対処しなければならないことが多いため、この後者の問題も厄介であると考えられる。
【００１１】
したがって、これらの難点を解消するユーザインターフェイス、方法、およびソフトウェア設計構築を提供することが望ましいであろう。
【特許文献１】米国仮特許出願第60/641,406号
【特許文献２】米国特許第6,421,067号
【特許文献３】米国特許第6,314,575号
【特許文献４】米国特許第6,412,110号
【特許文献５】米国特許第6,577,350号
【特許文献６】米国特許出願第10/768,432号
【特許文献７】米国特許出願第11/119,683号
【非特許文献１】Benjamin B. Bederson、「Quantum Treemaps and Bubblemaps for a Zoomable Image Browser」、UIST 2001、ACM Symposium on User Interface Software and Technology、CHI Letters、3(2)、71〜80頁
【非特許文献２】W3C Recommendationにより2003年1月14日に発布された「Scalable Vector Graphics (SVG) 1.1 Specification」
【発明の開示】
【発明が解決しようとする課題】
【００１２】
本発明によるシステムおよび方法は、複数のコントロール要素とともに画面に表示されるユーザインターフェイスを備えることによりこれらのニーズおよび他のニーズを解消するが、複数のコントロール要素のうち少なくとも一部は、少なくとも1つの英数字をその上に表示する。英数字を表示するためのテキストボックスは、複数のコントロール要素および表示されるアイテムの複数のグループを使用して入力される。ユーザインターフェイス上の複数のグループのレイアウトは、表示されるグループの第1の個数に基づいており、グループ内の表示されるアイテムのレイアウトは、そのグループ内に表示されるアイテムの第2の個数に基づく。
【課題を解決するための手段】
【００１３】
本発明の例示的な実施形態によれば、メタデータ処理システムに関連する分散ソフトウェア構成の方法は、複数の第1の種類のシステム規模のソフトウェア構成体を提供し、それぞれのソフトウェア構成体がそれぞれの高レベルのメタデータカテゴリとのユーザ対話を定義する、ステップと、少なくとも1つの第2の種類の下位レベルのシステム規模のソフトウェア構成体を提供し、複数の第1の種類のシステム規模のソフトウェア構成体のそれぞれが、第2の種類の下位レベルのシステム規模のソフトウェア構成体のうちの1つまたは複数からなる、ステップとを含む。
【００１４】
本発明の他の例示的な実施形態によれば、分散ソフトウェア構成を有するメタデータ処理システムは、さまざまな種類のメタデータをメタデータ処理システムに供給するためのメタデータ供給源、それぞれがそれぞれの高レベルメタデータカテゴリとのユーザ対話を定義する複数の第1の種類のシステム規模のソフトウェア構成体、および複数の第1の種類のシステム規模のソフトウェア構成体のそれぞれが第2の種類の下位レベルのシステム規模のソフトウェア構成体のうちの1つまたは複数からなる少なくとも1つの第2の種類の下位レベルのシステム規模のソフトウェア構成体を備える。
【００１５】
付属の図面は、本発明の例示的な実施形態を示している。
【発明を実施するための最良の形態】
【００１６】
本発明の以下の詳細な説明では、付属の図面を参照する。異なる図面の同じ参照番号は、同じまたは類似の要素を明示する。また、以下の詳細な説明は、本発明を限定するものではない。その代わりに、本発明の範囲は、付属の請求項により定義される。
【００１７】
この説明の背景状況をある程度示すために、まず最初に、本発明を使用して実装できる例示的な集約的メディアシステム200を図3〜22に関して説明する。しかし、当業者であれば、本発明がこの種類のメディアシステムの実装に制限されないこと、またそこに含めるコンポーネントを加減できることを理解するであろう。そこでは、入出力(I/O)バス210は、メディアシステム200内のシステムコンポーネントを1つに接続する。I/Oバス210は、メディアシステムコンポーネント間の信号を引き回す多数の異なるメカニズムおよび技術を表している。例えば、I/Oバス210は、オーディオ信号を引き回す適切な数の独立のオーディオ「パッチ」ケーブル、ビデオ信号を引き回す同軸ケーブル、制御信号を引き回す二線シリアルラインまたは赤外線もしくは無線周波トランシーバ、光ファイバ、または他の種類の信号を引き回す他の信号経路メカニズムを備えることができる。
【００１８】
この例示的な実施形態では、メディアシステム200は、I/Oバス210に結合されたテレビジョン/モニタ212、ビデオカセットレコーダ(VCR)214、デジタルビデオディスク(DVD)レコーダ/再生デバイス216、オーディオ/ビデオチューナ218、およびコンパクトディスクプレーヤ220を備える。VCR 214、DVD 216、およびコンパクトディスクプレーヤ220は、単一ディスクまたは単一カセットデバイスとしてよいか、またはそれとは別に、複数ディスクまたは複数カセットデバイスとすることができる。これらは、独立のユニットであるか、または一体化されることもできる。それに加えて、メディアシステム200は、マイクロホン/スピーカシステム222、ビデオカメラ224、および無線I/Oコントロールデバイス226を含む。本発明の例示的な実施形態によれば、無線I/Oコントロールデバイス226は、自由空間ポインティングをサポートし、ナビゲーションをサポートする最低限の数のボタンを備え、RF信号を通じてメディアシステム200と通信するメディアシステムリモコンユニットである。例えば、無線I/Oコントロールデバイス226は、特定の所望のコマンドを決定するため、ジャイロスコープまたは他のメカニズムを使用して画面位置と運動ベクトルの両方を定義する自由空間ポインティングデバイスとすることができる。さらに、一組のボタンを無線I/Oデバイス226上に備え、後述の「クリック」プリミティブだけでなく「back」ボタンも起動することができる。他の例示的な実施形態では、無線I/Oコントロールデバイス226は、IR信号を介してメディアシステム200のコンポーネントと通信する、メディアシステムリモコンユニットである。さらに他の実施形態では、無線I/Oコントロールデバイス226は、外観が典型的なエンターテインメントシステムリモコンに似ている、ユーザがエンターテインメントシステム100のディスプレイ上でカーソルの位置を決めるために使用されるトラックボールまたは他のナビゲーションメカニズムの付加的機能を備える、IRリモコンデバイスとすることができる。
【００１９】
メディアシステム200は、さらに、システムコントローラ228も含む。本発明の例示的な一実施形態によれば、システムコントローラ228は、複数のエンターテインメントシステムデータソースから入手可能なエンターテインメントシステムデータを格納し、表示し、またシステムコンポーネントのそれぞれと関連する広範にわたる機能を制御するように動作する。図3に示されているように、システムコントローラ228は、直接的または間接的に、必要に応じて、I/Oバス210を通して、システムコンポーネントのそれぞれに結合される。例示的な一実施形態では、I/Oバス210に加えて、またはその代わりに、システムコントローラ228は、IR信号またはRF信号を介してシステムコンポーネントと通信することができる、無線通信送信機(またはトランシーバ)を備えるように構成される。コントロール媒体に関係なく、システムコントローラ228は、後述のグラフィカルユーザインターフェイスを介してメディアシステム200のメディアコンポーネントを制御するように構成される。
【００２０】
図3にさらに例示されているように、メディアシステム200は、さまざまなメディアソースおよびサービスプロバイダからメディアアイテムを受信するように構成することができる。この例示的な実施形態では、メディアシステム200は、有線放送230、衛星放送232(例えば、パラボラアンテナを介して)、放送テレビジョンネットワーク234の超短波(VHF)または極超短波(UHF)無線周波通信(例えば、空中線アンテナを介して)、電話網236、およびケーブルモデム238(またはインターネットコンテンツの他のソース)のうちのいずれかまたはすべてからメディア入力を受信し、適宜それらに情報を送信する。当業者であれば、図3に関して例示され、説明されているメディアコンポーネントおよびメディアソースは、純粋に例示的であり、メディアシステム200には、その両方を加減して含めることができることを理解するであろう。例えば、システムへの他の種類の入力は、AM/FMラジオおよび衛星ラジオを含む。
【００２１】
図4は、本発明による、例示的なシステムコントローラ228を例示するブロック図である。例えば、システムコントローラ228は、セットトップボックスとして実装することができ、例えば、プロセッサ300、メモリ302、ディスプレイコントローラ304、他のデバイスコントローラ(例えば、システム200の他のコンポーネントに関連する)、1つまたは複数のデータ記憶デバイス308、およびI/Oインターフェイス310を備える。これらのコンポーネントは、バス312を介してプロセッサ300と通信する。当業者であれば、プロセッサ300は、1つまたは複数の処理ユニットを使用して実装することができることを理解するであろう。(複数の)メモリデバイス302は、例えば、DRAMまたはSRAM、ROMを含むことができ、その一部は、キャッシュメモリとして指定することができ、そこに、プロセッサ300により実行されるソフトウェアおよび/または、後述のグラフィカルユーザインターフェイスに関連するソフトウェアおよび/またはデータを含む、そのようなプログラムにより使用可能なデータを格納する。ディスプレイコントローラ304は、プロセッサ300により、モニタ212の表示を制御して、とりわけ、後述のGUI画面およびオブジェクトを表示するために動作させることができる。本発明の例示的な実施形態によるズーミング可能なGUIは、解像度に関係しないズーミングを行い、したがって、モニタ212は、任意の解像度で表示を行うことができる。デバイスコントローラ306は、メディアシステム200の他のコンポーネントとプロセッサ300との間のインターフェイスをなす。データ記憶デバイス308は、ハードディスクドライブ、フロッピー（登録商標）ディスクドライブ、CD-ROMデバイス、または他の大容量記憶装置のうちの1つまたは複数を含むことができる。入出力インターフェイス310は、例えば、キーボードインターフェイス、RFインターフェイス、IRインターフェイス、およびマイクロホン/会話インターフェイスを含む複数のインターフェイスのうちの1つまたは複数を含むことができる。本発明の例示的な一実施形態によれば、I/Oインターフェイス310は、無線ポインティングデバイスの移動に関連する位置情報を受信するためのインターフェイスを含む。
【００２２】
メディアアイテム選択情報を表示するための本発明の例示的な実施形態によるグラフィカルユーザインターフェイスの生成およびコントロールは、プロセッサ300がメモリ302に格納されている命令シーケンスを実行することに応答してシステムコントローラ228により実行される。このような命令は、(複数の)データ記憶デバイス308などの他のコンピュータ可読媒体から、またはメディアシステム200に外部的に接続されているコンピュータから、メモリ302内に読み込むことができる。メモリ302内に格納されている命令シーケンスが実行されると、プロセッサは、グラフィカルユーザインターフェイスオブジェクトおよびコントロールを、とりわけ、モニタ212上に生成する。他の実施形態において、本発明を実装するために、配線接続されている回路をソフトウェア命令の代わりに、または組み合わせて使用することができる。「背景技術」の節で説明されているように、テレビジョン産業に関連する従来のインターフェイスフレームワークは、単純でしかも広範囲にわたる選択活動をユーザが行えるようにするという点でひどく制限されている。したがって、本明細書で説明されているコントロールフレームワークは、これらの制限を解消し、したがって、もっぱらというわけではないが、テレビとともに使用することが意図されている。また、本明細書で説明されている画期的なコントロールフレームワーク、グラフィカルユーザインターフェイス、および/またはさまざまなアルゴリズムは、コンピュータおよび他の非テレビジョンデバイスとともに使用することができるインターフェイスに応用することができることが予想される。本発明の例示的な実施形態のこれらさまざまな応用例を区別するために、「テレビジョン」および「TV」という用語は、本明細書では、表示デバイスのサブセットを指すために使用されるが、「GUI」、「GUI画面」、「ディスプレイ」、および「表示画面」という用語は、総称的であることが意図されており、テレビジョンディスプレイ、コンピュータディスプレイ、および他の表示デバイスを指す。より具体的には、「テレビジョン」および「TV」という用語は、アダプタを使用してテレビジョン信号を他の形式(例えば、コンピュータビデオ形式)に変換することなく、テレビジョン信号(例えば、NTSC信号、PAL信号、またはSECAM信号)を表示することができる表示デバイスのサブセットを指すことが意図されている。それに加えて、「テレビジョン」および「TV」という用語は、数フィートまたはそれ以上の距離(例えば、ソファーから居間のTVまでの距離)から一般的に見られる表示デバイスのサブセットを指すが、コンピュータディスプレイは、一般的に、接近して見られる(例えば、椅子から机上のモニタまでの距離)。
【００２３】
本発明によるズーミング可能なグラフィカルインターフェイスを含むコントロールフレームワークを実装するために使用することができる例示的なメディアシステムについて説明されているが、このようなインターフェイスのいくつかの実施例をこれから説明する。本発明の例示的な実施形態によれば、ユーザインターフェイスは、カテゴリ別にグループ化できる選択可能アイテムを表示する。ユーザは、リモコンユニット上の注目する1つまたは複数のカテゴリをポイントし、選択ボタンを押して、ズームインするか、または「back」ボタンを押して、ズームを元に戻す。ユーザがズームイン、またはズームを元に戻すアクションを実行する毎に、ユーザインターフェイスにより画面上にレンダリングされる選択可能アイテムの倍率レベルおよび/またはコンテキストが変化する。例示的な実施形態によれば、倍率レベルのそれぞれの変化は、矛盾のないようにできる、つまり、倍率レベルの変化は、所定のステップで行われる。本発明の例示的な実施形態は、さらに、極大までのスケーリングを行ういくつかの視覚的技術を組み込んだユーザインターフェイスを実現する。これらの技術は、スケーラビリティと使い勝手の両方を高める構成要素および技術の組合せ、特に、ユーザインターフェイスオブジェクトの高速再訪のためユーザの視覚的記憶を高めるようにユーザインターフェイスを適応させる技術を伴う。
【００２４】
ユーザインターフェイスは、概して、視覚的経験を与えるものである。このような環境では、本発明の例示的な実施形態は、ユーザがビジュアル環境内でオブジェクトの位置を記憶できることを利用する。これは、ユーザインターフェイス選択項目に対する安定した、信頼できる場所を提供することにより実現される。それぞれのオブジェクトは、ズーミング可能なレイアウトである位置を有する。ユーザが注目するオブジェクトを見つけた後、そのオブジェクトを特定するためにどの方向をとったかを憶えておくことは当然である。そのオブジェクトに特に関心がある場合、ユーザは複数回そのアイテムを再訪する可能性が高く、そのオブジェクトまでの経路に対するユーザの記憶が強化される。本発明の例示的な実施形態によるユーザインターフェイスは、ユーザが注目するアイテムの位置を記憶するのを助ける視覚的ニーモニックを備える。このような視覚的ニーモニックは、パンおよびズームアニメーション、ユーザインターフェイスの仮想的表面をなぞる動きの地理的な感覚を生じさせる遷移効果、およびとりわけ、後述の実施例に基づいてより明らかになる一貫したズーミング機能を含む。
【００２５】
大きな選択集合に関連する詳細が隠されたまま、ユーザが極端に大きなアイテム集合から選択できるようにする編成メカニズムが備えられる。さまざまな種類の編成メカニズムが、本発明により使用することができ、以下に実施例が示される。
【００２６】
図5〜8をまず参照すると、本発明の例示的な一実施形態によるズーミング可能なグラフィカルユーザインターフェイスを含む例示的なコントロールフレームワークは、音楽メディアアイテムを表示し、選択する際に使用することに関して説明されている。図5は、ズーミング可能GUIをズームアウト率最大の状態で示している。そこでは、インターフェイスには、形状500の集合が表示される。それぞれの形状500内に表示されるのは、GUIのその部分を介してアクセス可能なメディアアイテム選択のグループを説明するテキスト502および/または写真504である。図5に示されているように、形状500は、四角形であり、テキスト502および/または写真504は、メディアのジャンルを説明する。しかし、当業者であれば、この第1の表示されるGUIグルーピングは、ユーザから利用できるメディア選択の他の態様、例えば、アーティスト、作成年、アーティストの居住地域、アイテムの長さ、または選択の他の何らかの特性を表すことが可能であることを理解するであろう。また、GUI内のさまざまなグルーピングの概要を示すために使用される形状は、四角形である必要はない。アルバムカバーの縮小バージョンおよび他のアイコンを使用し、形状グルーピング500内のテキスト502および/または写真504の代わりに、またはそれに加えて、ユーザへのさらなるナビゲーション上のヒントとすることができる。GUI 506の背景部分は、無地として表示することができるか、または地図などの写真の一部とすることができ、これは、ユーザがジャンルの空間的配置を記憶しておき、将来、あまり読まずにインターフェイスを使用する補助となる。選択ポインタ(カーソル)508は、入力デバイスの動きに追随し、ユーザがデバイス(図5に示されていない)上のボタンを押したときにズームインする場所を示す。
【００２７】
本発明の例示的な一実施形態によれば、入力デバイスは、以下でさらに詳しく説明されるポイント、クリック、スクロール、ホバリング、およびズーム構成要素をサポートするグラフィカルユーザインターフェイスと結合された、自由空間ポインティングデバイス、例えば、開示が参照により本明細書に組み込まれており、これ以降「'683出願」と呼ばれる、「Free Space Pointing Devices and Methods」という表題の2005年5月2日に出願された米国特許出願第11/119,683号で説明されている自由空間ポインティングデバイスとすることができる。本発明と連携して使用すると有益なこの例示的な入力デバイスの特徴の1つは、2つのボタンとスクロールホイールのみ、つまり、3つの入力作動オブジェクトだけで実装できるという点である。これらのボタンのうち1つは、ZOOM IN(選択)ボタンとして構成することができ、もう1つは、ZOOM OUT(戻る)ボタンとして構成することができる。従来のリモコンユニット、例えば図1に示されているものと比べると、本発明では、ユーザが自分のメディアアイテム選択を行う際に直面する、ボタンの数などを大幅に削減することにより、GUIのこの態様を簡素化している。本発明の例示的な実施形態による入力デバイスの追加の好ましいが、必須ではない、特徴は、ユーザ向けの「自由空間ポインティング」機能を実現することである。「自由空間ポインティング」という語句は、本明細書では、ユーザが表示画面の前の空中で3つ(またはそれ以上)の次元方向に入力デバイスを自由に動かせること、およびそれに対応して、ユーザインターフェイスがそれらの運動を画面上のカーソルの動きに直接変換することができることを指すために使用される。そのため、「自由空間ポインティング」は、表示画面とは別の表面、例えば机の表面またはマウスパッドを、マウスの相対的移動がコンピュータ表示画面上のカーソル移動に変換される際に起点となるプロキシ表面として使用する従来のコンピュータマウスポインティング技術とは異なる。本発明の例示的な実施形態によるコントロールフレームワーク内で自由空間ポインティングを使用することで、さらに、ユーザの選択活動が簡素化されるが、それと同時に、インターフェイスへの区別可能な入力として身振りを導入する機会が与えられる。身振りは、時間の経過を伴う移動の認識可能なパターンとしてみなすことができ、そのパターンは、GUIコマンド、例えば、x、y、z、ヨー、ピッチ、およびロール次元またはそれらの部分的組合せによる移動の関数に変換することができる。しかし、当業者であれば、好適な任意の入力デバイスを、本発明によるズーミング可能なGUIとともに使用できることを理解するであろう。好適な入力デバイスの他の実施例は、限定はしないが、トラックボール、タッチパッド、従来のTVリモコンデバイス、音声入力、ユーザの身振りをGUIコマンド、またはそれらの任意の組合せに伝達/変換することができる任意のデバイスを含む。本明細書で説明されているGUI機能のそれぞれの態様は、身振りおよび音声コマンドのうちの少なくとも1つを使用して本発明によりフレームワーク内で作動させることができることが意図されている。他の実装は、カーソルおよび/または他のリモコンキーまたはさらには音声入力を使用して選択対象のアイテムを識別���ることを含む。
【００２８】
図6は、ジャンル3をズームインしたビューを示しており、これは、ユーザが、例えば、ディスプレイ212上のジャンル3を囲む四角形により包含されている領域上でカーソル508を移動し、入力デバイス上のボタンを押すことにより、図5のジャンル3を選択した場合に表示される。インターフェイスは、図5から図6へのズームをアニメーション表示し、ズームが行われたことをユーザに知らせる。このようなアニメーションによるズーム/遷移効果の一実施例について以下で説明する。ジャンル3を含む形状516が、ディスプレイ212上の画面の大半を占有すると、インターフェイスは、ジャンルに含まれるアルバムを持つアーティストを表示する。この実施例では、いくつかの異なるアーティストおよび/またはその作品が表示される。図5のズームアウトされたビュー内のジャンル3に隣接していた未選択ジャンル515は、まだ、ズームインされたビュー内のジャンル3に隣接しているが、ディスプレイ212の縁によりクリップされる。これらの未選択ジャンルは、選択ポインタ508で選択することによりそこに素早くナビゲートすることができる。しかし、本発明の他の例示的な実施形態では、隣接オブジェクトをクリップするのを省き、代わりに、未クリップ選択のみを表示するようにできることは理解されるであろう。アーティストグループのそれぞれ、例えばグループ512は、縮小されたアルバムカバーの画像、アーティストの写真、またはカテゴリにユーザによって作成されたプレーリストが含まれる場合にユーザによるカスタマイズ可能なアートワークを含むことができる。
【００２９】
次いで、ユーザは、さらに検討および/または選択するためにアーティストグループのうちの1人を選択することができる。図7は、カーソル508の位置決めおよび入力デバイスの作動を介してユーザがアーティスト3を選択したことに対する応答としてさらにズームインしたビューを示しており、アルバムカバーの画像520が見えてくる。図5および図6のGUI画面からの遷移と同様に、未選択の、隣接アーティスト(この実施例におけるアーティスト#2、6、および7)は、ズームイン表示の辺に向かって示され、ユーザは、それらを選択ポインタ508でクリックし、それらのアーティストビューへパンすることができる。インターフェイスのこの部分では、アルバムカバーの画像520に加えて、アーティスト情報524をアーティストグループ内の一アイテムとして表示することができる。この情報は、例えば、アーティストの写真、略歴、雑学的知識、ディスコグラフィ、影響、Webサイトへのリンク、および他の関連データを含むことができる。アルバムカバーの画像520のそれぞれは、アルバムカバーの写真、およびオプションでテキストデータを含むことができる。アルバムカバーの画像520がユーザによって作成されたプレーリストを含む場合、グラフィカルユーザインターフェイスは、このインターフェイスにより自動的に選択される、またはユーザによって事前に選択された写真を表示することができる。
【００３０】
最後に、ユーザがグループ521内からアルバムカバーの画像520を選択した場合、インターフェイスは、図8に示されているようにアルバムカバー内をズームイン表示する。ズームが進行するにつれ、アルバムカバーは、フェードする、またはアルバム530のアーティストおよびタイトル、トラック532のリスト、アルバム536に関する他の情報、アルバムカバー528の縮小バージョン、およびコンテンツを再生するか、分類を修正するか、アーティストWebページにリンクするか、または選択に関する他の情報を見つけるためのコントロール534などのアイテムも含むビューにモーフィングで形を変えることができる。インターフェイスに表示させるために選択ポインタ508を使用して選択できる隣接アルバム538が示されている。上述のように、例えば、本発明の他の実施形態は、選択されたオブジェクト、例えばアルバム5だけを表示し、未選択オブジェクトのクリップされた部分、例えばアルバム4および6を省くようにズームインすることができる。この最終ズームは、意味論的ズーミングの一例となっており、そこでは、前のズームレベルではすでに見えていなかったいくつかのGUI要素が見えるようにされる。本発明の例示的な実施形態により意味論的ズーミングを実行するさまざまな技術について以下で説明する。
【００３１】
図5〜8および説明で示されているように、グラフィカルユーザインターフェイスのこの例示的な実施形態は、楽曲コレクションのナビゲーションを行う。本発明によるインターフェイスは、さらに、DVD、VHSテープ、他の記録媒体、ビデオオンデマンド、ビデオセグメント、およびホームムービーなどのビデオコレクションに対し使用することができる。他のオーディオ用途としては、ラジオショー、インストラクションテープ、歴史アーカイブ、およびサウンドクリップコレクションのナビゲーションがある。ニュース記事および電子ブックなどの印刷またはテキストメディアも、本発明を使用して編成され、アクセスされることができる。
【００３２】
当業者には前記の説明から明らかなように、本発明によるズーミング可能グラフィカルユーザインターフェイスは、ユーザに多数の(または少数の)メディアアイテムを素早く、簡単にブラウズする機能を提供している。この機能は、限定はしないが、(1)特定のメディアアイテムについて画像を選択情報の全部または一部として使用すること、(2)選択を行うためにユーザが必要とする多数の、または少数の情報を素早く与えるようにズーミングを使用すること、および(3)単一平面上にインターフェイス全体が置かれている感覚をユーザに与え、ユーザの方向感覚を使ってGUIのナビゲーションが実行され、記憶されうるように組み合わせる複数のGUI技術を使用することを含む、本発明の例示的な実施形態によるインターフェイスの多数の特性に帰すべきである。本発明によるGUIのこの後者の態様は、とりわけ、一方のGUI画面から次の画面へのGUIオブジェクト連続性を等しく維持する、例えば、現在のGUI画面の境界の周りに隣接する未選択オブジェクトの辺を表示することにより、さまざまなGUI画面を「地理的に」結び合わせることで実現できる。それとは別に、きれいなビューが望まれ、また他のGUI技術で十分な地理的フィードバックが得られる場合、クリップされたオブジェクトを省くことができる。本明細書で使用されているように、「GUI画面」という語句は、同時に1つまたは複数の表示ユニット上にレンダリングされたGUIオブジェクトの集合を指す。GUI画面は、メディアアイテムを出力する同じディスプレイ上にレンダリングすることができるか、または異なるディスプレイ上にレンダリングすることができる。ディスプレイは、TVディスプレイ、コンピュータモニタ、または他の好適なGUI出力デバイスとすることができる。
【００３３】
GUI画面の接続性に対するユーザの感覚を高める他のGUI効果は、ズーミングが実行されたとき、またはユーザが現在選択されているオブジェクトと同じズームレベルで隣接オブジェクトを選択したときに引き起こされるパニングアニメーション効果である。図5の実施例に戻ると、ユーザが最初にGUI画面を見ているときに、ユーザの視点は、点550を中心とする。しかし、ユーザがズームイン対象にジャンル3を選択した場合、ユーザの視点は、点552にシフトする。本発明の例示的な実施形態によれば、ズームインプロセスは、点550から552までPOV中心のシフトを伝えるようにアニメートされる。このパニングアニメーションは、すべてのGUI変化、例えば、ズームレベルの変化または同じGUIズームレベルでの一方のオブジェクトから他のオブジェクトへの変化について実行できる。そのため、例えば、図6のGUI画面に置かれているユーザが一番左の未選択ジャンル515(ジャンル2)を選択した場合、ユーザに左または西への「移動」の視覚的印象を与えるパニングアニメーションが生じるであろう。本発明の例示的な実施形態は、このような技術を使用して、GUI画面間の方向移動に関する首尾一貫した感覚をもたらし、これにより、ユーザは、ズームレベル間でも、同じズームレベルのメディアアイテム間でも、GUIを素早くナビゲートすることができる。
【００３４】
本発明によりズーミング可能なGUIを実装するために、さまざまなデータ構造体およびアルゴリズムを使用することができる。例えば、写真を表示するイメージブラウザでパニングおよびズーミングするためのデータ構造体およびアルゴリズムは、開示が参照により本明細書に踏み込まれている、論文、Benjamin B. Bederson、「Quantum Treemaps and Bubblemaps for a Zoomable Image Browser」、UIST 2001、ACM Symposium on User Interface Software and Technology、CHI Letters、3(2)、71〜80頁で説明されている。しかし、高いレベルで、多数のアプリケーションを切り替えることができ、低いレベルで、さまざまなメディア選択機能を実行する選択されたイメージに関連付けられているユーザコントロールを備える、メディア選択のためのGUIを実現するために、追加のデータ構造体およびアルゴリズムが必要である。
【００３５】
ズーミング可能GUIは、表示デバイスのビューポート内のユーザインターフェイスコンポーネントのシーンの周辺でのパニングおよびズーミングをサポートするものとして概念化することができる。この効果を生じさせるために、本発明の例示的な実施形態によるズーミング可能GUIは、シーングラフデータ構造体を使用して実装することができる。シーングラフ内のそれぞれのノードは、ボタンまたはテキストラベルまたはインターフェイスコンポーネントのグループなどのユーザインターフェイスコンポーネントの何らかの部分を表す。ノードの子は、そのノードの内部のグラフィック要素(直線、テキスト、画像など)を表す。例えば、アプリケーションは、シーングラフ内で、そのインターフェイスにおけるさまざまなグラフィック要素に対する子を持つノードとして表すことができる。2つの特別な種類のノードは、カメラおよび層と本明細書では呼ばれる。カメラは、層ノードを見ることによりビューポートをシーングラフの他の部分の中に与えるノードである。これらの層ノードの下に、ユーザインターフェイス要素を見つけることができる。ズーミング可能なインターフェイスのコントロールロジックでは、プログラミングにより、カメラビュー変換を調節し、パニングおよびズーミングの効果をもたらすようにする。
【００３６】
図9は、本発明の例示的ないくつかの実施形態を実装するために使用することができる基本的なズーミング可能なインターフェイス要素を含むシーングラフを示しており、特に、これは、1つのカメラノード900および1つの層ノード902を含む。カメラノード900と層ノード902との間の点線は、カメラノード900がカメラのビューポート内に層ノード902の子をレンダリングするように構成されていることを示す。アタッチされている表示デバイス904により、ユーザは、カメラのビューポートを見ることになる。層ノード902は、円と一対の卵形を描画する3つの子ノード904を持つ。シーングラフは、さらに、ノード912〜918を使って、四角形が円形内に描画され、3つの三角形が四角形内に描画されることを指定している。シーングラフは、ルートノード920によりデータ構造体内の他のシーングラフに結び付けられる。それぞれのノード906〜918は、局所座標変換行列を使用することによりそのノードの親に関して自己スケーリングおよび位置決めする機能を持つ。図10(a)および10(b)は、第1のズームアウト倍率と第2のズームイン倍率でそれぞれカメラを通してレンダリングされたときにシーングラフがどのように見えるかを例示している。
【００３７】
シーングラフのレンダリングは、以下のように行うことができる。ディスプレイ904を更新する必要がある場合、例えば、ユーザが図10(a)のビューから図10(b)のビューへのズームインをトリガしたときに、塗り直しイベントが、ディスプレイ904にアタッチされているカメラノード900を呼び出し、自己レンダリングさせる。次に、これにより、カメラノード900は、カメラのビューポート内に領域をレンダリングするよう層ノード902に通知する。層ノード902は、自己レンダリングするようにその子に通知することにより自己レンダリングする、というようにさらに続けて行く。現在の変換行列および更新すべき領域に対する有界な四角形は、ステップ毎に受け渡され、適宜修正され、レンダリングに使用すべき適切なスケールおよびオフセットをそれぞれのノードに知らせる。本発明によるズーミング可能GUI内で動作するアプリケーションのシーングラフは、数千ものノードを含むことができ、それぞれのノードは、変換行列および更新すべき領域をチェックし、必ずその描画演算が実際にユーザによって見られるようにすることができる。前述の実施例では、1つのカメラノードおよび1つの層ノードを含むシーングラフを説明しているが、本発明の例示的ないくつかの実施形態は、複数のカメラおよび層を埋め込むことができることが理解されよう。これらの埋め込まれたカメラは、ズーミング可能なインターフェイス全体におけるユーザの現在のビュー位置を示す小さなズームアウトされた地図などのユーザインターフェイス要素を備えることができ、またこれにより、ユーザインターフェイスコンポーネントを独立にズーミング可能およびパニング可能なものとすることができる。
【００３８】
ズーミング可能なインターフェイスを使用して複数のアプリケーションの動作を調整する場合、例えば、図14〜18に関して以下で説明されている例示的なムービーブラウザのように、それぞれのアプリケーションに対するメモリおよびリソース要件は、メディアシステム内で利用可能な全メモリ量を超えることがある。このことは、ユーザがコードおよびデータの一部または全部を見なくなったときにアプリケーション側でそれらをアンロードすることを示唆している。しかし、本発明によるズーミング可能GUIでは、アプリケーションの一部または全部が常時、ユーザに対しアクティブであるように見える外観を与えることが望ましい場合がある。これら2つの競合する目的を達成するために、ユーザの視点から「画面上にない」アプリケーションを一時的待機状態にすることができる。本発明の例示的な実施形態によりズーミング可能GUIでこの挙動を達成するために、ビューポートを出入りするときにそのことを示すイベントが、アプリケーションに送られる。このようなイベントを実装する一方法では、ユーザがビューポートに入ったときにそのことが検出されるようにコンポーネントをレンダリングするコードにロジックを追加する。しかし、このことは、レンダリングイベント毎に通知ロジックが呼び出されることを意味し、さらに重要なのは、ユーザがコンポーネントから離れる方向にビューポートをナビゲートしたときにそのことを容易に検出できないということを意味する。イベントをアプリケーションに送る他の方法では、通知ロジックをGUIナビゲーション要素(ハイパーリンクおよびボタンなどの)に組み込み、注目するコンポーネントを含むようにカメラのビューポートを変更したときに通知がコンポーネントに送られるようにすることである。しかし、これは、プログラマーが、用心深く通知コードを可能なすべてのナビゲーションUI要素に追加することを必要とする。
【００３９】
例示的な一実施形態によれば、計算効率の高いノード監視アルゴリズムを使用することで、GUIコンポーネントおよび/またはアプリケーションがカメラのビューをいつ出入りするかをアプリケーションに通知することができる。高レベルでは、ノード監視アルゴリズムは、(1)初期化、(2)ビューポート変化評価、および(3)シーングラフ変化評価の3つの主要ステージを持つ。初期化ステージでは、ビューポート変化評価により使用されるノード量を計算し、該当するデータ構造体を初期化する。ビューポート変化評価ステージは、ビューポートが変化したときに呼び出され、そのビューポートに入るか、または出た監視されているすべてのノードに通知する。最後に、シーングラフ変化評価ステージで、シーングラフが変化したため無効になった初期化ステージで行われた計算を更新する。例えば、監視されているノードの先行ノードがシーングラフ内の位置を変えた場合、初期化時に行われた計算は、再計算する必要がある場合がある。
【００４０】
これらのステージのうち、ビューポート変化評価では、ノード監視アルゴリズムの残り部分を駆動する。ノードがビューポートを出入りする時期を線引きするために、初期化ステップでは、所望のノードの有界な四角形を決定し、それをその局所座標系からビューポートの局所座標系に変換する。この方法で、ノードに入るのをチェックするのに、ビューポート変化毎に一連の座標変換を行う必要はない。そのノードの親は変換行列を持っている場合があるため、この初期化ステップは、そのノードからカメラまでシーングラフを横断することを必要とする。後述のように、埋め込まれたカメラが、シーングラフデータ構造体中で使用される場合、複数の場所に出現するノードを受け入れるために複数の有界な四角形が必要になることがある。
【００４１】
それぞれの監視されるノードに対する有界な四角形がビューポートの座標系において計算された後、初期化ステージで、有界な四角形をビューポート変化評価データ構造体に加える。ノード監視アルゴリズムは、基本構成要素をシーン内の次元毎に使用する。いくつかの例示的な実施形態によるズーミング可能インターフェイスでは、これは、x次元、y次元、およびスケール次元を含む。しかし、後述のように、他の例示的な実装には、追加の、または異なる次元がある場合がある。スケール次元は、ビューポート内のノードの倍率レベルを記述するものであり、以下の式で表される。
【００４２】
【数１】
2008527540.tif 000003
【００４３】
ただし、sは、スケールであり、dは、ノードの一点からノードの局所座標内の他の点までの距離であり、d'は、その点からビューポート内の他の点までの距離である。
【００４４】
図11は、1つの次元におけるシーンの出入りを検出するための例示的な構成要素を示している。以下では、x次元における取り扱いを説明しているが、当業者であれば、他の次元も同様にして取り扱うことができることを理解するであろう。領域ブロック1100は、変換された有界な四角形座標への参照を含む。これは、四角形の左および右(上および下または最小および最大のスケール)オフセットを含む。左および右オフセットは、それぞれ、それ自体順序付き双方向連結リスト内に置かれ、低い番号のオフセットほど先頭に向かう、遷移ブロック1102および1104内に格納される。現在のビューポート境界は、ビュー境界ブロック1106内に格納される。ブロック1106は、ビューの左辺および右辺をちょうど超えたばかりの遷移ブロックへのポインタを持ち、例えば、ビュー左辺によって指されているもののすぐ右の遷移ブロックは、後者のブロックがビュー右辺により指されていない場合にビュー内にある。
【００４５】
ビューポートが変化した場合、以下の処理が次元毎に実行される。第1に、ビュー左辺およびビュー右辺ポインタをチェックして、遷移ブロックを包含または除外するようにそれらのポインタを移動する必要があるかどうかを調べる。次に、ポインタの一方または両方を移動する必要がある場合、遷移ブロックリスト上でスライドさせて新しい位置に移動する。次いで、ビュー左辺およびビュー右辺ポインタによって受け渡される遷移ブロック毎に、ノード監視アルゴリズムが、後述の遷移ブロック通知コードを実行する。この通知コードは、それぞれのノードがビューポートに入ったか、または出た可能性があるかを決定する。その可能性がある場合、そのノードは後処理リストに追加される。最後に、それぞれの次元についてこの処理の終わりに、後処理リスト上にあるそれぞれのノードがチェックされ、そのビューポートステータスが実際に変化したかが調べられる(変化およびその後の戻る変化とは反対に)。変化が生じた場合、このアルゴリズムは、イベントをコンポーネントに送る。ビューポートがズーミング可能インターフェイスの新しい領域に素早くジャンプする場合には、このアルゴリズムで、さらに多くの偽の入および出イベントを検出することがあることに留意されたい。
【００４６】
遷移ブロック通知コードは、チェックされる次元についてノードがビューポートに入ったかビューポートから出たかを決定する表引きとして実装することができる。表の例を以下に示す。
【００４７】
【表１】
2008527540.tif 000004
【００４８】
列1、2、および3は、遷移通知表への入力である。特に、ノード監視アルゴリズムでは、ノード辺、ビュー辺、およびビュー移動方向の組合せを使用して表を取り扱い、評価されているノードに入ったのか、出たのか、または影響がなかったのかを判定する。列1は、ビューポートポインタによって受け渡される遷移ブロックにより表されるノードの辺を指す。列2は、ビューポートの辺を指し、列3は、ビューポートのその辺が、ノードの遷移ブロックを受け渡したときに移動していた方向を指す。いずれかの出力列4または5は、部分的にまたは完全にビュー内に入っているときにそのことをノードに通知すべきかどうかに応じて選択される。例えば、いくつかの実装では、部分的にビューに入っているビデオウィンドウをズーミング可能GUI内にロードすると表示が崩れることがあるため、完全にビュー内に入ってからのみ、ストリーミングビデオウィンドウなどのアプリケーションに通知することが望ましい場合がある。
【００４９】
表の出力が入または出を示している場合、ノード監視アルゴリズムは、ノードを後処理リストに追加する。表1の出力列は、以下の規則に基づいて値が埋められる。ノードがすべての次元において交差する場合、入通知は、後処理ステップで送られる。ノードがビュー内に入っており、現在は、1つまたは複数の次元が交差を停止している場合、出通知が送られる。後処理リスト内のノードの個数を減らすために、遷移ブロック通知コードは、ノードをリストに追加する前に他の次元との交差がないかチェックする。これにより、次元の総数、例えば3つまたはそれ以上のうちから1つまたは2つの次元のみが交差する場合に後処理ステップが不要になる。ユーザインターフェイスオブジェクト(例えば、アプリケーション)側が、GUIにおけるそのビューポートステータスを通知されることを望んでいる場合、これは、ノード監視アルゴリズムに機能を登録する。アプリケーションがビュー内に入るか、または出ると、ノード監視アルゴリズムは、そのアプリケーションの登録された機能を、発生したイベントを示すパラメータを付けて呼び出す。それとは別に、通知は、メッセージ受け渡しを使用して実行することができる。この場合、それぞれのアプリケーションは、イベントキューを持つ。アプリケーションは、イベントキューとの通信方法をノード監視アルゴリズムに知らせる。例えば、キューのアドレスを指定することが可能である。次いで、ノード監視機能が遷移を検出すると、これは、通知の原因を格納したデータ構造体を作成し、それをアプリケーションのキュー内に入れる。
【００５０】
アプリケーションのメモリ管理にノード監視通知を使用することに加えて、このアルゴリズムは、さらに、本発明によるズーミング可能GUIの他の機能にも使用できる。例えば、ノード監視アルゴリズムは、例えば、オーディオ出力フォーカスを現在表示されているアプリケーションに切り替えることにより、ユーザのビューフォーカスに基づいてアプリケーション挙動を変更することができる。ノード監視アルゴリズムの他のアプリケーションでは、倍率レベルが変化したときに、より解像度の高い複合画像のロードおよびアンロードを行う。これは、解像度がそのディスプレイによりマッチするより少ないオブジェクトをレンダリングさせることによりグラフィックスレンダラに対する計算負荷を低減する。ノード監視アルゴリズムにカメラのビューポートを監視させることに加えて、さらに、アニメーションの後に行き着く場所をビューポートに知らせるナビゲーションコードを監視させることも有益である。これにより、ビュー内に入ろうとしているコンポーネントの通知を早期に行い、さらに、本発明の例示的な実施形態によるズーミング可能GUIに、パニングアニメーションのせいで飛び越えられるノードに通知を送ることを回避させることができる。
【００５１】
ノード監視アルゴリズムの動作をさらによく理解できるように、図12(a)、12(b)、13(a)、および13(b)を参照しつつ一実施例について説明することにする。図12(a)および12(b)は、2つの異なる倍率レベルのズーミング可能GUIの一部を示している。図12(a)の低い倍率レベルでは、円、三角形、および楕円形の3つのノードが見える。図12(b)では、ビューは、楕円および円が部分的にしか見えず、三角形は、ビューから完全に外れているほどズームインされている。これらのノードは、例えば、効率的なイベント通知に依存し、したがって、本発明の例示的な実施形態によりノード監視アルゴリズムにより追跡されるアプリケーションまたはユーザインターフェイスコンポーネントを表すことができる。この実施例では、それぞれのノードに対する有界な四角形は、図12(a)および12(b)に明示されているが、当業者であれば、有界な四角形は、典型的に、GUI上には表示されないことを理解するであろう。それぞれの有界な四角形のそれぞれの辺は、図12(a)および12(b)においてラベルが付けられており、これらのラベルは、有界な四角形の辺と上述の遷移ブロックデータ構造体との間の対応関係を示すために使用される。
【００５２】
図13(a)は、図12(a)のズームアウトされたビューの水平次元に対する例示的なノード監視データ構造体を示している。そこでは、ノードの有界な四角形のそれぞれの辺は、遷移ブロックを使用して表される。水平遷移ブロックは、GUI画面上で左から右に現れる順序で図13(a)に示されている。例えば、円の左辺CLeftが、最初に来て、次いで、三角形の左辺TLeftが続き、というように、楕円の右辺ERightが来るまで続く。リストの両端には、空のセンチネル遷移ブロックがマークとして置かれる。また、図13(a)に示されているのは、それぞれのノードに対する領域ブロックと有界な四角形の水平遷移ブロックへの対応するポインタである。図13(a)の底部には、現在のビューからちょうど外れている遷移ブロックへのポインタを含むビュー境界データ構造体がある。ズームアウトされたビューの場合、すべてのノードは、完全に見えており、したがって、遷移ブロックはすべて、ビュー境界データ構造体により指されている遷移ブロックの間にある。
【００５３】
図13(b)は、図12(b)のズームインされたビューに対するノード監視データ構造体を示している。そこで、データ構造体のビュー境界部分は、三角形の右辺TRightおよび楕円の右辺ERightに対する遷移ブロックを指すように変化していることがわかるが、それは、これら有界な四角形の2辺が現在の(ズームインされた)ビューをちょうど外れているためである。
【００５４】
これらの例示的なデータ構造体およびGUIシーンが与えられると、ズーム遷移が発生している間のノード監視アルゴリズム内の関連する処理は、以下のように説明することができる。ノード監視アルゴリズムは、ビューの左辺から始めて、左辺にあるビューをちょうど外れている遷移ブロックに到達するまでビュー左辺ポインタを右に移動する。図13(b)に示されているように、ビュー左辺ポインタは、最初に、CLeft遷移ブロックを受け渡す。この実施例の場合、円ノードは、ビュー内で全部は見えないときに通知を必要とするズーミング可能GUIに関連するアプリケーションまたは他のユーザインターフェイスオブジェクトを表すものと仮定している。ノード監視アルゴリズムにこれらの入力を与えた場合に、表1は、円ノードが水平次元に対する出通知を受け取ることを示している。もちろん、ノード監視アルゴリズムは、典型的には、すべての次元から通知を集めてから、冗長な出通知を送ることを回避するようノードに通知する。次に、ビュー左辺ポインタは、三角形の左辺TLeftを受け渡す。三角形ノードがそのビューを完全に出るときについて通知を要求した場合、ノード監視アルゴリズムは、表1に関して、通知が必要ないことを指示する。しかし、ビューポインタがTRightを受け渡す場合、表1は、三角形がそのビュー全体から出ており、通知されなければならないことを示している。ビューポインタは、円の有界な四角形の右辺CRightがまだビュー内に見えているため、ここで停止する。
【００５５】
右辺からのノード監視アルゴリズムの処理も類似している。ビュー右辺ポインタは、楕円の右辺Erightの左に移動する。楕円が完全または部分的通知を要求しているかどうかに応じて、ノード監視アルゴリズムは、表1に従って、通知を楕円に送ることも送らないこともある。垂直次元は、類似のデータ構造体および上および下境界四角形値を使用して類似の方法で処理することができる。当業者であれば、さらに、より正確な通知が必要な場合に複数の境界四角形を使用することで非四角形ノードを近似することができることも理解するであろう。さらに、本発明では、ノード監視アルゴリズムにより、他の次元、例えば第3の幾何学的(深さまたはスケール)次元、さらには時間、コンテンツ格付け(アダルト、PG-13など)およびコンテンツタイプ(ドラマ、コメディーなど)の非幾何学的次元を通る移動を追跡し処理することができることも考察している。アルゴリズムは、使用している次元の数に応じて、より正確に、境界セグメント、四角形、およびn次元超立方体の交差点を検出する。
【００５６】
上述のノード監視アルゴリズムに加えて、本発明の例示的な実施形態では、本発明の例示的な実施形態によるズーミング可能GUIにおいて使用することができる解像度整合性のある意味論的ズーミングアルゴリズムを実現する。意味論的ズーミングとは、ズーミング可能GUI内のコンポーネントの詳細を、そのコンポーネントの倍率レベルに応じて、追加、削除、または変更することである。例えば、後述の映画ブラウザインターフェイスでは、ユーザが映画の画像に十分近くズームした場合に、これは、映画メタデータおよび再生コントロールを表示するように変化する。倍率レベルの計算は、表示デバイス上でコンポーネントが使用するピクセルの個数に基づく。ズーミング可能GUIは、例えば映画メタデータおよび再生コントロールがないビューから映画メタデータおよび再生コントロールがあるビューへの切り替えが生じるべきときにそのことを示す閾値倍率レベルを格納することができる。
【００５７】
テレビジョンおよびコンピュータディスプレイは、広範囲にわたる表示解像度を有する。モニタによっては高解像度過ぎて、低解像度ディスプレイだと読み取り可能なグラフィックスおよびテキストが小さくて全く読み取ることができないものもある。さらに、このことは、意味論的ズーミングを、特にHDTVなどの高解像度ディスプレイ上で使用するアプリケーションにとって問題になる。このような環境では、表示されるピクセルの個数に基づいてレンダリングする意味論的ズーミングコードは、より詳細なビューが読み取り可能になる前に画像を変更する。意味論的ズーミングがコンポーネントビューを変更させる閾値をプログラムにより修正する操作は、1つの解像度についてしか働かない。
【００５８】
望ましい結果は、意味論的ズーミングは、すべてのモニタ解像度にわたって矛盾なく実行されることである。1つの解決策では、高解像度モニタで低解像度表示モードを使用し、解像度がすべての表示で同じになるようにすることである。しかし、高解像度モニタのユーザは、意味論的ズーミングが期待通りまだ働く場合にその最良の解像度でグラフィックスがレンダリングされるのを好む。したがって、本発明の例示的な実施形態では、すでに説明されている意味論的ビューに関する問題を引き起こすことなく異なるすべての解像度の表示をサポートする意味論的ズーミング技術を実現する。これは、例えば、シーングラフの内側に仮想ディスプレイを作成することにより達成できる。これは、埋め込まれた仮想カメラノード1200を使用し、表示解像度を補正するロジックを追加することにより図14に示されている。仮想カメラノード1200は、サイズがユーザの視野距離およびモニタサイズにマップされるビューポートを定義する。例えば、大きな仮想カメラビューポートは、ユーザがモニタに十分近い位置に座っているか、または多くの細部を再現できる十分に大きな解像度のモニタを有することを示す。それとは別に、小さなビューポートは、ユーザが、モニタから離れており、より大きなフォントおよび画像を必要とすることを示す。ズーミング可能GUIコードでは、ユーザの好ましい視聴条件を使用し、意味論的ズーミング遷移のベースをこの仮想カメラで見えるコンポーネントの倍率レベルに置くことができる。
【００５９】
表示デバイス1204にアタッチされている主カメラノード1202は、仮想カメラ1200が示すすべてを表示するように構成されたビューポートを有する。グラフィックス画像およびテキストは、この主カメラ1202までピクセルにマッピングされないため、仮想カメラで品質が喪失は生じない。これの結果、高解像度モニタは、より高い画質の画像を表示し、表示を読み取りにくくする意味論的ズーミング変化をトリガしない。
【００６０】
本発明の例示的な一実施形態によれば、このプロセスは、以下のように進む。シーングラフ内のそれぞれのカメラおよびノードは、関連する変換行列(T1からTn)を有する。これらの行列は、そのノードの局所座標系を表示に向かう次のノードの局所座標系に変換する。図では、T1は、座標をそのビューポートから表示座標に変換する。同様に、T2は、その局所座標系をカメラのビューポートに変換する。葉ノード1206がディスプレイ上に何かをレンダリングする必要がある場合、変換行列
A=T1T2...Tn
を計算する。
この計算は、シーングラフを横断している最中に実行することができる。意味論的ズーミングをサポートするように行うコンポーネント変更は、仮想カメラ1200に基づいているため、
B=T4T5...Tn
の計算が実行される。
典型的には、T1からT3は、モニタの解像度を問い合わせてシーングラフを検査することにより前もって決定することができる。したがってAからBを決定することは、これらの行列の逆行列を求め、
B=(T1T2T3)-1A
のように乗算することにより行える。
前もってT1からT3を計算すると問題のある場合、例えば、グラフィックスAPIが追加の変換を隠す場合については、ディスプレイにレンダリングするために使用するはずだった変換行列をインターセプトするロジックを仮想カメラに追加することができる。次いで、このインターセプトされた変換は、意味論的ズーミング閾値を計算するため上述のように逆変換され乗算される。
【００６１】
本発明の例示的な実施形態によるズーミング可能インターフェイスの強みの1つは、インターフェイスをナビゲートしている間にコンテキストを保持することができるという点である。インターフェイスコンポーネントはすべて、ズーミング可能なワールド内に存在するように見え、ユーザは、それらのどれかに到達するために、ただパニングとズーミングを行うだけでよい。上述の意味論的ズーミング技術は、ズームまたは倍率レベルに応じてコンポーネントの外観を変更する。図15(a)および15(b)は、コンポーネントのズームアウトバージョン(図15(a))が写真であり、ズームインバージョン(図15(b))がその同じ写真とともにいくつかのコントロールおよび細部を含むコンポーネントの意味論的ズーミングの一実施例を示している。このいくつかのより詳細な実施例を以下に示す。意味論的ズーミングに関連する難題の1つは、ビュー間の変化は、いきなり発生することがあり、アルファブレンドなどの遷移技術では、2つのこのようなビューの間で遷移が生じたときに視覚的に満足のゆく結果が得られない。
【００６２】
したがって、本発明の例示的な実施形態は、コンポーネントのすべてのビュー内にいくつかの共通画像またはテキストを用意し、意味論ズーミングが実行されたときに遷移効果用の焦点を与える。例えば、図15(a)および15(b)では、共通要素は写真である。ズームアウトバージョンとズームインバージョンとの間の遷移効果は、例えば、上述のノード監視アルゴリズムを以下のように使用することでトリガすることができる。最初に、ノード監視機能への登録を実行し、主カメラのビューポートがコンポーネントのズームアウトバージョンの倍率レベルからズームインバージョンの倍率レベルに遷移する場合のイベントを受け取るようにできる。次いで、イベントが発生したら、ズームアウトバージョンにおけるそれらの位置からズームインバージョンにおけるそれらの位置に縮小し、平行移動する(複数の)共通要素を示すアニメーションを表示することができる。その一方で、カメラのビューポートは、そのコンポーネント内にズームインし続ける。
【００６３】
本発明によるグラフィカルユーザインターフェイスのこれらの機能は、図16〜20に関して後述する他の例示的な実施形態を検討すればなおいっそう明らかになるであろう。そこでは、起動GUI画面1400には、メディアグループ表現として動作する複数の編成オブジェクトが表示される。ホームビデオ、映画、TV、スポーツ、ラジオ、音楽、およびニュースの純粋に例示的なメディアグループ表現は、もちろん、多いまたは少ない異なるメディアグループ表現を含むこともありえる。ユーザによりこれらのアイコンの1つが作動すると、次いで、この例示的な実施形態によるGUIは、それぞれ特定のカテゴリまたはジャンルにグループ化された複数の画像を表示する。例えば、図16の「映画」アイコンがユーザにより作動された場合、図17のGUI画面が表示されることができる。そこでは、多数の、例えば120またはそれ以上の、選択オブジェクトが表示される。これらの選択オブジェクトは、(複数の)特定のグループ、例えば、アクション、クラシック、コメディー、ドラマ、ファミリ、およびニューリリースに分類することができる。当業者であれば、提供するカテゴリを増減することが可能であることを理解するであろう。この例示的な実施形態では、メディアアイテムイメージは、それぞれの映画選択に関連付けられているカバーアートとすることができる。図17のブロックのサイズが小さすぎて選択アイテム画像のこの比較的大きなグループを詳細に示すことができないが、実装では、画像の倍率のレベルは、テキストの一部または全部が小さすぎて容易に読み取れない場合でも、関連する画像により映画が識別できる程度である。
【００６４】
次いで、カーソル(図17に示されていない)を映画画像のグループ上に置き、入力デバイスを作動させてそれらのグループのうちの1つに対する選択指示を出すことができる。この実施例では、ユーザは、ドラマグループを選択し、次いで、グラフィカルユーザインターフェイスが図18に示されているように画像のドラマグループのズームバージョンを表示する。前の実施形態と同様に、遷移効果は、さらに、図17のGUI画面から図18のGUI画面へのGUIシフトとして表示することもでき、例えば、GUIで、ズームの最中またはズームの前に図17のGUI画面の中心から画像のドラマグループの中心までビューをパニングできる。図18のドラマグループのズームバージョンは、ドラマグループ内の全個数の画像のサブセットしか表示しないが、このズームバージョンは、代わりに、選択されたグループ内の画像のすべてのを含むことができることに留意されたい。GUI画面の与えられたズームインバージョンにおける選択されたグループ内のイメージすべてを表示するかどうかの選択は、例えば、グループ内のメディアアイテムの個数および特定のズームレベルに対するメディアアイテムの最低の所望の倍率レベルに基づくようにできる。本発明によるGUIのこの後者の特性は、システム設計者/サービスプロバイダにより予め決定することができるか、またはGUIのソフトウェア設定を介してユーザカスタマイズ可能なものとすることができる。例えば、グループ内のメディアアイテムの個数および最小および/または最大倍率レベルは、サービスプロバイダまたはエンドユーザのいずれかまたは両方により構成可能なものとすることができる。このような機能により、例えば、視力の弱いユーザは、表示されているメディアアイテムの倍率レベルを上げることができる。逆に、特に視力のよいユーザは、倍率のレベルを下げて、これにより、一度にGUI画面に表示されるメディアアイテムの個数を増やし、ブラウズ時間を短縮することができる。
【００６５】
本発明によるグラフィカルユーザインターフェイスで使用することができる例示的な一遷移効果は、本明細書では、「shoe-to-detail」ビュー効果と呼ばれる。作動すると、この遷移効果は、ズームアウト画像を取り出し、同時に、ズームアウト画像を縮小して、より小さなビュー、つまり次に高いレベルの倍率に変換する。図17のGUI画面で使用される倍率レベルから図18のGUI画面で使用されるより大きな倍率への遷移があると、図18のズームインバージョンで表示されている画像についてGUIにより付加的細部が露わにされる。GUIは、それらの細部が現在選択されているズームレベルでうまく表示されるかどうかに基づいてズームレベル毎に細部を選択的に露わにするか、または隠す。肉眼に見えるかどうかに関係なく細部を解像しようとする、カメラズームとは異なり、本発明の例示的な実施形態では、全画像を表示するときから差し控えられている細部を持つ画像のバージョンを表示するときまでの遷移点を指定する構成可能なズームレベルパラメータを備えている。遷移点は、画像の内部解像度独立の表示、むしろ、TV/モニタ212の解像度に基づきうる。この方法で、本発明によるGUIは、メディアシステムで使用されている表示デバイスの解像度に関係なく一貫している。
【００６６】
この例示的な実施形態では、特定の画像に対する倍率の付加的量は、カーソルを特定の画像の上に通すことにより与えることができる。この特徴は、図19で見ることができ、そこでは、カーソルは映画「Apollo 13」の画像上に移動し重なっている。図19には示されていないが、例えば、このような付加的な倍率により、倍率の低いレベルにある図18のGUI画面内の対応する画像と比較して関連するメディアアイテムのカバーアート上に現れる「Houston, we have a problem」という引用をより読みやすくすることが可能である。例えば、入力デバイス上のボタンを押すことにより、この画像をユーザ選択すると、ズームがさらに行われ、図20に示されている細部が表示されるようにできる。これは、すでに説明されているように、意味論的ズーミングのもう1つの実施例となっているが、それは、さまざまな情報およびコントロール要素が図20のGUI画面に存在しているためであり、これらは図19のGUI画面では利用できなかったのである。例えば、とりわけ、映画の上映時間、価格、および俳優情報を含む、映画「Apollo 13」に関する情報が表示される。当業者であれば、他の種類の情報もここに表示できることを理解するであろう。さらに、このGUI画面は、例えば、映画を購入する、次回予告を見る、または前のGUI画面に戻るためのボタンコントロールオブジェクトを含むGUIコントロールオブジェクトを含む(これは入力デバイス上のZOOM OUTボタンを押すことにより遂行することも可能である)。また、ハイパーリンクを使用することにより、ユーザは、例えば、図20のGUI画面の右下コーナに示されている関係する映画に関連するGUI画面、またはこの映画の俳優に関連する情報へジャンプすることもできる。この実施例では、「映画関係文献」という見出しの下にある映画タイトルの一部または全部を、入力デバイスを介してユーザにより作動されたときに、指示されている映画に関して図20の画面に対応するGUI画面をGUIに表示させるハイパーリンクとして実装することができる。
【００６７】
遷移効果は、さらに、ユーザがハイパーリングを作動させたときに使用することもできる。ハイパーリングは、非常に高い倍率レベルで生成することができるため、リンクされているメディアアイテムに単にジャンプするだけでは、ユーザは、メディアアイテム選択「地図」内の自分の場所を見失う可能性がある。したがって、本発明の例示的な実施形態では、遷移効果を実現して、ハイパーリンクが作動されたときに地理的位置に対するユーザの感覚を保持するのを補助する。この目的のために使用することができる例示的な一遷移効果は、ホップ遷移である。遷移効果の初期段階では、GUIは、ハイパーリンクによりポイントされているアイテムの方向にズームアウトし、パニングする。ズームアウトおよびパニングは、目的画像および開始画像が両方ともユーザにより視聴可能になるまで継続する。図20の実施例をもう一度使用すると、ユーザが「Saving Private Ryan」に対するハイパーリンクを選択した場合、ハイパーリンクホップ効果の第1の段階は、「Saving Private Ryan」および「Apollo 13」の画像が両方とも、ユーザに見えるようになるまで「Saving Private Ryan」の画像へズームアウトおよびパニングをすることを含む。この時点で、遷移効果は、目的画像に向かって弧状に上へ移動している視覚的印象をユーザに与えている。目的画像が視野に入ると、遷移効果の第2の段階で、円弧の他方の半分、目的画像にズームインおよびパニングする視覚的印象をユーザに与える。ホップ時間、つまり、この遷移効果の段階1および2の両方が表示される時間量は、2つのハイパーリンクされた画像アイテムの間にあるものとして固定することができる。それとは別に、ホップ時間は、例えば、GUI上で移動する距離に基づいて変化しうる。例えば、ホップ時間は、HopTime=A log(ズームインされたスケールレベル/ホップ頂点スケールレベル)+B(ハイパーリンクされたメディアアイテムの間の距離)+Cとパラメータ化することができ、ただし、A、B、およびCは、適当に選択された定数値である。
【００６８】
図9〜13(b)に関して上で説明されているノード監視アルゴリズムも、図19の例示的なGUI画面に示されているズームレベルと図20の例示的なGUI画面との間の遷移を補助するために使用することができる。選択された画像の他のズームレベルバージョンでは見えないテキストおよび/またはコントロール要素を含むGUI画面のレンダリングは、低倍率レベルの画像に比べて大きな計算量および/メモリ容量を必要とする場合がある。したがって、ノード監視アルゴリズムは、本発明の例示的な実施形態では、ズームインされる特定のメディアアイテムをより迅速に識別するためにGUIのナビゲーションコードを監視することにより図20に示されているようなGUI画面のプリロードを補助することができる。
【００６９】
本発明の例示的な実装に含まれているのは、画面位置および意味論ベースのナビゲーションコントロールである。これらのコントロール領域は、ユーザがカーソルを、図21に示されているようにそれらのコントロールが適切である画面上のコントロールに関連付けられた領域の近く、またはその中に位置決めすると現れる。例えば、映画を再生する場合、早送り、巻き戻し、一時停止、停止、などのいわゆるトリック機能は、意味論的に適切である。この例示的な実施形態では、それらの機能に割り当てられた画面領域は、右下コーナであり、カーソルがその領域の近く、または中に置かれると、それらのトリック機能に対するアイコンの集合が現れる。次いで、これらのアイコンは、関与する機能が明確に完了したか、カーソルが画面上のどこか別のところに再配置されると消える。また、同じ技術を使用して、テキスト検索およびホーム画面選択などの他のナビゲーション機能に対応することができる。この例示的な実装では、これらのコントロールは、すべての画面上で意味論的に関係しており、それらに割り当てられた領域は、右上コーナである。カーソルがその領域の近く、または中に置かれると、これらのナビゲーションコントロールに対するアイコン集合が現れる。次いで、これらのアイコンは、この機能がアクティブ化されるか、カーソルが画面上のどこか別のところに再配置されると消える。ユーザが学習できるように、関連するコントロールアイコンを、最初に、関連する画面の一部または全部に短時間(例えば、5秒間)、適宜現れるようにし、不慣れなユーザにその存在を知らせることができることに留意されたい。
【００７０】
本発明によるズーミング可能なグラフィカルユーザインターフェイスのいくつかの実施例を取り上げて、このようなインターフェイスを使用する例示的なフレームワークおよびインフラストラクチャについて説明することにする。図22は、さまざまな高レベルアプリケーション1900、例えば、映画、テレビジョン、音楽、ラジオ、およびスポーツに関連するズーミング可能なインターフェイスがプリミティブ1902(図の中では、「原子」と呼ばれる)によりサポートされるフレームワーク図を示している。この例示的な実施形態では、プリミティブ1902は、POINT、CLICK、ZOOM、HOVER、およびSCROLLを含むが、当業者であれば、他のプリミティブ、例えば、PANおよびDRAGをこのグループに含めることができることを理解するであろう。上述のように、POINTおよびCLICKプリミティブは、カーソル位置を決定し、例えばユーザがハンドヘルド入力デバイス上のZOOM INまたはZOOM OUTボタンを作動させたときのイベントをトリガするように動作する。これらのプリミティブは、ナビゲーションを簡素化し、上-下-右-左のボタンの繰り返しアクションを不要にする。上に示されているように、ZOOMプリミティブは、可能な選択の概要を与え、ユーザに自分の選択を絞り込むときのコンテキストを与える。この概念により、インターフェイスは、多数のメディア選択および任意の表示サイズに合わせてスケーリングすることができる。SCROLLプリミティブでは、例示的なハンドヘルド入力デバイス上のスクロールホイール入力デバイスからの入力を処理し、例えば、直線的メニューナビゲーションを高速化するために使用することができる。HOVERプリミティブは、ポインタの下にある選択部分を動的に拡大し(および/または選択部分の内容を変更し)、これによりユーザはコミットなしで潜在的選択項目をブラウズすることができる。前述のプリミティブの動作はそれぞれ、多数の異なる方法で本発明によりGUIにおいて作動させることができる。例えば、POINT、CLICK、HOVER、SCROLL、およびZOOMはそれぞれ、ユーザによって実行されうる異なる身振りに関連付けることができる。この身振りは、自由空間ポインタであろうと、トラックボールであろうと、タッチパッドであろうと、入力デバイスを介してシステムに伝達することができ、また適切なプリミティブの作動に翻訳することができる。同様に、プリミティブのそれぞれを、それぞれの音声コマンドに関連付けることができる。
【００７１】
低レベルプリミティブ1902と高レベルアプリケーション1900との間に、本発明によるズーミング可能GUIに関連付けられた画像を生成することに関わるさまざまなソフトウェアおよびハードウェアインフラストラクチャ1904がある。図22に示されているように、このようなインフラストラクチャ1904は、ハンドヘルド入力デバイス/ポインタ、アプリケーションプログラムインターフェイス(API)、ズーミング可能GUI画面、開発者ツールなどを含むことができる。
【００７２】
前述の例示的な実施形態は、純粋に例示することを目的としている。ズームレベルの数とともに、それぞれのレベルでユーザに与えられる特定の情報およびコントロールは変えることができる。当業者であれば、本発明は、ユーザが映画および音楽などのメディアアイテムを容易に検索し、ブラウズし、編成し、再生することができるようにズーミング可能なインターフェイスを使用してメディアアイテムの大きな集合および小さな集合を提示する画期的技術をもたらすことを理解するであろう。本発明によるグラフィカルユーザインターフェイスでは、類似の選択が1つにまとめられるように仮想表面上にメディアアイテム選択を編成する。最初に、このインターフェイスは、表面のズームアウトビューを提示し、ほとんどの場合、実際の選択は、このレベルでは見えず、むしろ、そのグループ名のみが見える。ユーザが徐々にズームインしてゆくと、メディアアイテムグループまたは選択に関するさらに詳しい内容が露わになる。それぞれのズームレベルで、ユーザが選択のグループ、個別の選択を行うか、または仮想表面の他の部分に進み、他の関係するメディアアイテムをブラウズすることができるように異なる複数のコントロールが用意される。本発明の例示的な実施形態によるグラフィカルユーザインターフェイスのズーミングは、任意の深さまで入れ子にされた画像のカテゴリだけでなくカテゴリのカテゴリをも含むことができる。メディアアイテムは、局所的に格納されているか、放送事業者により放送されるか、コンテンツプロバイダからの直接接続を介して受信されるか、またはピア接続に基づくコンテンツを含むことができる。メディアアイテムは、日時情報がGUIのあるレベルで与えられるスケジューリングフォーマットで提供することができる。さらに、本発明の例示的な実施形態によるフレームワークおよびGUIは、選択対象のアイテムがユーザに販売されるテレビジョン商取引にも適用することもできる。
【００７３】
分散ソフトウェア構成
上述のGUI画面とともにそのようなシステムに関連する他のユーザインターフェイス機能を生成するために使用することができるソフトウェアを開発するさまざまな方法が多数ある。本発明の例示的な実施形態は、リッチズーミング可能ユーザインターフェイス(ZUI)をZUIの実装および維持に関連する複雑さを低減しつつレンダリングする環境を備える。「シーン」および「ブリック」という用語は、本発明の例示的な実施形態によるZUI構成について説明する際に以下で使用される。シーンとは、ナビゲーションが変わる毎にユーザが利用できるZUIコンポーネントの集合体のことである。ブリックとは、パッケージングされたZUIコンポーネント、例えば、ボタンまたは画像を表示する(およびそれに関連する機能を処理する)ために使用されるような単純なソフトウェアパッケージ、またはより複雑なものとして、シーンまたはシーンの集合を生成するために使用されるソフトウェアパッケージのことである。
【００７４】
図23は、シーンまたはブリックの設計からそのシーンのレンダリングまたは編集までの例示的なデータフローを示している。そこでは、UI設計ツール2000は、ブリックまたはシーンを構成するためのビジュアルプログラミング環境を備え、その実施例を以下で取り上げる。典型的には、アーティストまたはアプリケーション開発者は、UI設計ツール2000を使用し、ブリック2002またはシーン2004のいずれかを保存する。ブリック2002およびシーン2004は、ブリックライブラリ2006に格納されている通常使用されるUIコンポーネントまたはビットマップ化されたアートワーク、例えば、ユーザインターフェイス内に表示される選択可能メディアアイテムとして上で説明されているムービーカバーなどのマルチメディアリソース2008を参照することができる。この例示的なフレームワーク内で、シーンローダ2010(またはツールキットバックエンド)は、シーンファイルまたはバイトストリームを読み込み、任意の参照されているブリック2002またはマルチメディアリソース2008内で動的にリンクする。この結果、例えば、TV画面上にユーザインターフェイスを生成する際に処理するZSDコンパイラ2012またはローカルシーンレンダラ2014のいずれかに対するシーングラフが構成される。
【００７５】
本発明の例示的な実施形態によれば、ブリックおよびシーンは、スケーラブルベクトルグラフィックス(SVG)として知られるプログラミング言語を使用して生成することができる。SVGは、拡張マークアップ言語(XML)で二次元グラフィックスを記述する際に使用するように設計された言語である。SVGは、W3C Recommendationにより2003年1月14日に発布された「Scalable Vector Graphics (SVG) 1.1 Specification」で規定されており、これは、http://www.w3.org/TR/2003/REC-SVG11-20030114/に掲載されており、その開示は参照により本明細書に組み込まれている。とりわけ、SVGは、ベクトルグラフィック形状(例えば、直線と曲線からなる経路)、画像、およびテキストの3種類のグラフィックオブジェクトを定めている。グラフィックオブジェクトは、グループ化し、スタイル化し、変換し、すでにレンダリングされているオブジェクト内に組み込むことができる。機能集合には、入れ子になった変換、クリッピング経路、アルファマスク、フィルタ効果、およびテンプレートオブジェクトが含まれる。SVGで利用可能な機能の多くは、上述のようなユーザインターフェイスを作成するためのブリックおよびシーンを生成するのに使用することができる。しかし、ブリック構成体を含む、ある種のZUI機能を提供するために本発明の例示的な実施形態により、SVG言語の拡張が開発されている。
【００７６】
より具体的には、シーンおよびブリック記述は、ECMAScript言語(JavaScript（登録商標）の標準化バージョン)を使用するスクリプティングをサポートする。スクリプティングは、機能の中でもとりわけ、シーン間ナビゲーション、アニメーション、データベースクエリ、およびメディアコントロールをシーンおよびブリック機能に追加する。スクリプティングサポートの一コンポーネントは、この機能を実現するために使用されるアプリケーションプログラミングインターフェイス(API)である。このAPIは、本明細書では、ZUIオブジェクトモデル(ZOM)と呼ばれ、ZOMのいくつかの態様について以下で説明する。本発明の例示的な実施形態によりZOMを実装する一態様は、SVG言語において規定されている要素と属性の両方への拡張を含むようにSVGプログラミング言語を拡張することを伴い、そのいくつかの実施例は、ブリックおよびシーンに関連する機能について以下で取り上げる。そこでは、「zui:name」という形態で示される要素名または属性名により、SVGの要素または属性拡張を識別する。
【００７７】
<zui:brick>
zui:brickタグは、他のZML/SVGファイルをシーン内の指定された位置に挿入する。新しい変数コンテキストが、ブリックについて作成され、ユーザは、子zui:variableタグを使用してシーン内に変数を渡すことができる。本発明の例示的な実施形態による修正されたSVGのこの機能は、ズーミング可能なユーザインターフェイスにおいて複数のシーンにまたがって使用可能な(カスケードの)パラメータ化されたグラフィックの性質で特徴付けられるズーミング可能なインターフェイスにおいて使用する柔軟なプログラミング要素を実現する。ブリック実装の詳細な実施例は、図24〜26および対応するソフトウェアコードを参照しつつ以下に示されている。
【００７８】
【表２】
2008527540.tif 000005
【００７９】
<zui:scene>
SVGへのこの拡張は、システム側でシーンを現在のシーンの子として配置すべきであることを指定するために使用される。
【００８０】
【表３】
2008527540.tif 000006
【００８１】
<zui:scene-swap>
SVGへのこの拡張は、シーン遷移に対するシーンスワップ遷移効果をセットアップする。
【００８２】
【表４】
2008527540.tif 000007
【００８３】
<zui:variable>
SVGへのこの拡張は、現在のスコープ内の指定変数を指定値に設定する。変数スコープは、zui:sceneおよびzui:brickタグにより自動的に作成される。
【００８４】
【表５】
2008527540.tif 000008
【００８５】
例えば、テレビジョン用のズーミング可能なユーザインターフェイスを生成する際に特に有用なプログラミング構成体を実現するためにSVGへの先に説明された拡張を使用することは、図24〜26に関して以下で示される純粋に例示を目的とした実施例を考察することによりさらによく理解されるであろう。図24は、音楽選択に関連する例示的なユーザインターフェイスの第1のズーミング可能な表示レベルを示している。そこでは、GUI画面に、6つのグループ(音楽棚)が表示され、それぞれのグループは、カテゴリ別にグループ化された25個の選択可能音楽アイテムを含む(5×5音楽カバーアート画像)。それぞれのグループは、タイトルホバー効果を含むブリックとして実装され、例えば、図24に示されているように、ユーザのカーソル(図に示されていない)は、「Rock & Pop」というタイトルのグループ上に置かれ、そのグループのタイトルとそのグループの要素が、GUI画面上に示されている他の5つのグループに関してわずかに拡大して表示される。このGUI画面を生成するために、このブリックに関連付けられたソフトウェアコードは、以下の例示的なソフトウェアコードの強調表示された部分により例示されているように、タイトル別に並べ替えられたRockのジャンルを持つユーザの音楽コレクションへのクエリである「music」という名前の変数を渡される。
【００８６】
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg height="720" id="svg" onload="music_shelf_system_onload(evt)" width="1280" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:zi="http://ns.hcrest.com/ZUIIllustratorExtensions/1.0" xmlns:zui="http://ns.hcrest.com/ZUIExtensions/1.0" zui:top="true">
<script language="javascript" xlink:href="./music_shelf.js"/>
<g id="bkgd">
<image height="720" id="musicbkgd" preserveAspectRatio="xMidYMid meet" transform="matrix (1.000, 0.000, 0.000, 1.000, 1, 0 ) " width="1280" xlink:href="../background/hdtv/music_hdtv.png" zui:layer="background"/>
<text fill="#ffffff" font-family="HelveticaNeue LT 87 Heavy Condensed" font-size="38" id="glob_121" transform="matrix (0.984, 0.000, 0.000, 1.000, 16, 0 )" x="1020" y="103">
<![CDATA [AIl Music]]>
</text>
<zui:brick height="306" id="svg_123" transform="matrix(0.660 ,0.000 ,0.000 ,0.669 ,245 ,129) " width="262" xlink:href="./brick_shelf.svg" zi:cursorControl="true">
<zui:variable id="var_0" name="music" value="com.hcrest.music.mds:albums (genres contains 'Rock &amp; Pop' , @sort= 'title')"/>
</zui:brick>
<zui:brick height="306" id="glob_124" transform="matrix(0.660, 0.000, 0.000, 0.669, 522, 129)" width="262" xlink:href="./brick_shelf.svg">
<zui:variable id="var_26" name="music" value="com.hcrest.music.mds:albums(genres contains 'Jazz Vocal' , @sort='title')"/>
</zui:brick>
<zui:brick height="306" id="glob_170" transform="matrix(0.660, 0.000, 0.000, 0.669, 245, 391 ) " width="262" xlink:href="./brick_shelf.svg">
<zui:variable id="var_78" name="music" value="com.hcrest.music.mds:albums(genres contains 'International', @sort='title')"/>
</zui:brick>
<zui:brick height="306" id="glob_169" transform="matrix(0.660, 0.000, 0.000, 0.669, 522, 391)" width="262" xlink:href="./brick_shelf.svg">
<zui:variable id="var_104" name="music" value="com.hcrest.music.mds:albums(genres contains 'Blues' ,@sort='title’)"/>
</zui:brick>
<zui:brick height="306" id="glob_168" transform="matrix(0.660, 0.000, 0.000, 0.669, 799, 391)" width="262" xlink:href="./brick_shelf.svg">
<zui:variable id="var_130" name="music" value="com.hcrest.music.mds:albums (genres contains 'Country', @sort='title')"/>
</zui:brick>
<zui:brick height="365" id="svg_0" transform="matrix(0.660, 0.000, 0.000, 0.660, 799, 127)" width="350" xlink:href="../brick_shelf_soundtrackv2.svg">
<zui:variable id="var_51" name="music" value="com.hcrest.music.mds:albums(genres contains 'Soundtracks', @sort='title')"/>
</zui:brick>
</g>
<g id="Layer_3">
<zui:brick height="720" id="playlistBrick" transform="matrix(1.000, 0.000, 0.000 ,1.000, 0, -56)" width="1280" xlink:href="../playlistBrick/playlist_brick.svg" zui:layer="playlistOverlay">
<zui:variable id="var_156" name="playlistGroup" value="'music'"/>
<zui:variable id="var_157" name="playlistType" value="'music'"/>
<zui:variable id="var_158" name="cover_art_field" value="'album.image.uri'"/>
<zui:variable id="var_159" name="title_field" value="'title'"/>
<zui:variable id="var_160" name="watch_uri_field" value="'uri'"/>
</zui:brick>
<g id="screw_you_button_6_state_andjoe">
<g id="new_slideshow">
<image height="67" id="new_slideshow_on" preserveAspectRatio="xMidYMid meet" transform="matrix(0.342, 0.000, 0.000, 1.221, 1071, 376)" width="257" xlink:href="../playlistBrick/images/create_playlist_normal_over.png"/>
<image height="65" id="new_slideshow_off" preserveAspectRatio="xMidYMid meet" transform="matrix(0.342, 0.000, 0.000, 1.221, 1071, 377)" width="257" xlink:href="../playlistBrick/images/create_playlist_normal.png"/>
</g>
</g>
<g id="createplaylist" zi:p6Base="createplaylist-off" zi:p6Down="createplaylist-down" zi:p6Label="true" zi:p60ver="createplaylist-over" zi:p6Sel="createplaylist-sel" zi:p6SelDown="createplaylist-sel_down" zi:p6SelOver="createplaylist-sel_over">
<image height="226" id="createplaylist-sel_down" preserveAspectRatio="xMidYMid meet" transform="matrix(0.734, 0.000, 0.000, 0.734, 1081, 463)" visibility="hidden" width="124" xlink:href="./images/createplaylist-over.png"/>
<image height="226" id="createplaylist-sel_over" preserveAspectRatio="xMidYMid meet" transform="matrix(0.734, 0.000, 0.000, 0.734, 1081, 463)" visibility="hidden" width="124" xlink:href="./images/createplaylist-over.png"/>
<image height="226" id="createplaylist-sel" preserveAspectRatio="xMidYMid meet" transform="matrix(0.734, 0.000, 0.000, 0.734, 1081, 463) " visibility="hidden" width="124" xlink:href="./images/createplaylist-off.png"/>
<image height="226" id="createplaylist-down" preserveAspectRatio="xMidYMid meet" transform="matrix(0.734, 0.000, 0.000, 0.734, 1081, 463)" visibility="hidden" width="124" xlink:href="./images/createplaylist-over.png"/>
<image height="226" id="createplaylist-over" preserveAspectRatio="xMidYMid meet" transform="matrix(0.734, 0.000, 0.000, 0.734, 1081, 463)" visibility="hidden" width="124" xlink:href="./images/createplaylist-over.png" />
<image height="226" id="createplaylist-off" preserveAspectRatio="xMidYMid meet" transform="matrix(0.734, 0.000, 0.000, 0.734, 1081, 463)" width="124" xlink:href="./images/createplaylist-off.png"/>
</g>
</g>
</svg> 
【００８７】
それぞれのグループ内のそれぞれの要素(カバーアート画像)は、さらに、本発明の例示的な実施形態によるブリックとしてコーディングされる。そのため、図25に示されているように、ユーザが「Rock&Pop」グループ内の25個の要素のうちの1つの上でカーソルを一時停止すると、その要素(この実施例では、アルバムカバー「Parachutes」の画像)が拡大される。このGUI画面を実装するための例示的なブリックコードを以下に示す。
【００８８】
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg height="365" onload="brick_shelf_system_onload(evt)" width="350" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:zi="http://ns.hcrest.com/ZUIIllustratorExtensions/1.0" xmlns:zui="http://ns.hcrest.com/ZUIExtensions/1.0">
<script language="javascript" xlink:href="./brick_shelf.js"/>
<g id="Layer_l">
<zui:brick height="46" id="svg24" transform="matrix(1.305, 0.000, 0.000, 1.239, 277, 290)" width="47" xlink:href="./albumCoverEffect.svg">
<zui:variable id="var_0" name="this" value="music[24]"/>
</zui:brick>
<zui:brick height="46" id="svg23" transform="matrix(1.305, 0.000, 0.000, 1.239, 210, 290)" width="47" xlink:href="./albumCoverEffect.svg">
<zui:variable id="var_l" name="this" value="music[23]"/>
</zui:brick>
<zui:brick height="46" id="svg22" transform="matrix(1.305, 0.000, 0.000, 1.239, 144, 290)" width="47" xlink:href="./albumCoverEffect.svg">
<zui:variable id="var_2" name="this" value="music[22]"/>
</zui:brick>
<zui:brick height="46" id="svg21" transform="matrix(1.305, 0.000, 0.000, 1.239, 77, 290)" width="47" xlink:href="./albumCoverEffect.svg">
<zui:variable id="var_3" name="this" value="music[21]"/>
</zui:brick>
<zui:brick height="46" id="svg20" transform="matrix(1.305, 0.000, 0.000, 1.239, 11, 290)" width="47" xlink:href="./albumCoverEffect.svg">
<zui:variable id="var_4" name="this" value="music[20]"/>
</zui:brick>
<zui:brick height="46" id="svgl9" transform="matrix( 1.305, 0.000, 0.000, 1.239, 278, 228)" width="47" xlink:href="./aIbumCoverEffect.svg">
<zui:variable id="var_5" name="this" value="music[19]"/>
</zui:brick>
<zui:brick height="46" id="svgl8" transform="matrix(1.305, 0.000, 0.000, 1.239, 210, 228)" widlh="47" xlink:href="./albumCoverEffect.svg">
<zui:variable id="var_6" name="this" value="music[18]"/>
</zui:brick>
<zui:brick height="46" id="svgl7" transform="matrix(1.305, 0.000, 0.000, 1.239, 144, 228)" width="47" xlink:href="./albumCoverEffect.svg">
<zui:variable id="var_7" name="this" value="music[17J"/>
</zui:brick>
<zui:brick height="46" id="svgl6" transform="matrix( 1.305, 0.000, 0.000, 1.239, 77, 228)" width="47" xlink:href="./aIbumCoverEffect.svg">
<zui:variable id="var_8" name="this" value="music[16]'7>
</zui:brick>
<zui:brick height="46" id="svgl5" transform="matrix(1.305, 0.000, 0.000, 1.239, 11, 228)" width="47" xlink:href="./albumCoverEffect.svg">
<zui:variable id="var_9" name="this" value="music[15]"/>
</zui:brick>
<zui:brick height="46" id="svgl4" transform="matrix( 1.305, 0.000, 0.000, 1.239, 278, 165)" width="47" xlink:href="./albumCoverEffect.svg">
<zui:variable id="var__10" name="this" value="music[14]"/>
</zui:brick>
<zui:brick height="46" id="svgl3" transform="matrix(1.305, 0.000, 0.000, 1.239, 210, 165)" width="47" xlink:href="./albumCoverEffect.svg">
<zui:variable id="var_11 " name="this" value="music[13]"/>
</zui:brick>
<zui:brick height="46" id="svgl2" transform="matrix(1.305, 0.000, 0.000, 1.239, 144, 165)" width="47" xlink:href="./albumCoverEffect.svg">
<zui:variable id="var_12" name="this" value="music[12]"/>
</zui:brick>
<zui:brick height="46" id="svgl1" transform="matrix(1.305, 0.000, 0.000, 1.239, 77, 165)" width="47" xlink:href="./albumCoverEffect.svg">
<zui:variable id="var_13" name="this" value="music[ll]"/>
</zui:brick>
<zui:brick height="46" id="svgl0" transform="matrix(1.305, 0.000, 0.000, 1.239, 1 1, 165)" width="47" xlink:hreF="./albumCoverEffect.svg">
<zui:variable id="var_14" name="this" value="music[10]"/>
</zui:brick>
<zui:brick height="46" id="svg9" transform="matrix(1.305, 0.000, 0.000, 1.239, 278, 101)" width="47" xlink:href="./albumCoverEffect.svg">
<zui:variable id="var_15" natne="this" value="music[9]"/>
</zui:brick>
<zui:brick height="46" id="svg8" transform="matrix(1.305, 0.000, 0.000, 1.239, 210, 101)" width="47" xlink:href="./albumCoverEffect.svg">
<zui:variable id="var_16" name="this" value="music[8]"/>
</zui:brick>
<zui:brick height="46" id="svg7" transform="matrix(1.305, 0.000, 0.000, 1.239, 144, 101)" width="47" xlink:href="./albumCoverEffect.svg">
<zui:variable id="var_17" name="this" value="music[7]"/>
</zui:brick>
<zui:brick height="46" id="svg6" transform="matrix(1.305, 0.000, 0.000, 1.239, 77, 101)" width="47" xlink:href="./albumCoverEffect.svg">
<zui:variable id="var_18" name="this" value="music[6]"/>
</zui:brick> 0.000, 1.239, 1 1, 101)" width="47"
<zui:brick height="46" id="svg4" transform="matrix(1.305, 0.000, 0.000, 1.239, 278, 36)" width="47" xlink:href="./albumCoverEffect.svg">
<zui:variable id="var_20" name="this" value="music[4]"/>
</zui:brick>
<zui:brick height="46" id="svg3" transform="matrix(1.305, 0.000, 0.000, 1.239, 210, 36)" width="47" xlink:href="./albumCoverEffect.svg">
<zui:variable id="var_21" name="this" value="music[3]”/>
</zui:brick>
<zui:brick height="46" id="svg2" transform="matrix(1.305, 0.000, 0.000, 1.239, 144, 36)" width="47" xlink:href="./albumCoverEfFect.svg">
<zui:variable id="var_22" name="this" value="music[2]"/> 
</zui:brick>
<zui:brick height="46" id="svg1" transform="matrix(1.305, 0.000, 0.000, 1.239, 77, 36)" width="47" xlink:href="./albumCoverEffect.svg">
<zui:variable id="var_23" name="this" vaIue="music[l]"/>
</zui:brick>
<zui:brick height="46" id="svg0" transform="matrix(1.305, 0.000, 0.000, 1.239, 1 1, 36)" width="47" xlink:href="./albumCoverEffect.svg">
<zui:variable id="var_24" name="this" value="music[0]"/>
</zui:brick>
<g id="more" visibility="hidden" zi:p6Base="more-off' zi:p6Down="more-down" zi:p6Label="true" zi:p60ver="more-over" zi:p6Sel="more-sel" zi:p6SelDown="more-seI_down" zi:p6SelOver="more-sel_over">
<image height="84" id="more-sel_down" preserveAspectRatio="xMidYMid meet" transform="matrix(0.274, 0.000, 0.000, 0.274, 281, 9)" visibility="hidden" width="213" xlink:href="../movielink/images/homescreen/more-over.png"/>
<image height="84" id="more-sel_over" preserveAspectRatio="xMidYMid meet" transform="matrix(0.274, 0.000, 0.000, 0.274, 281, 9)" visibility="hidden" width="213" xlink:href="../movielink/images/homescreen/more-over.png"/>
<image height="84" id="more-sel" preserveAspectRatio="xMidYMid meet" transform- ' matrix(0.274, 0.000, 0.000, 0.274, 281, 9)" visibility="hidden" width="213" xlink:href="../movielink/images/homescreen/more-off.png"/>
<image height="84" id="more-down" preserveAspectRatio- 'xMidYMid meet" transform="matrix(0.274, 0.000, 0.000, 0.274, 281, 9)" visibility="hidden" width="213" xlink:href="../movielink/images/homescreen/more-over.png"/>
<image height="84" id="more-over" preserveAspectRatio="xMidYMid meet" transform="matrix(0.274, 0.000, 0.000, 0.274, 281, 9)" visibility="hidden" width="213" xlink:href;="../movielink/images/homescreen/more-over.png"/>
<image height="84" id="more-off" preserveAspectRatio- 'xMidYMid meet" transform="matrix(0.274, 0.000, 0.000, 0.274, 281, 9)" width="213" xlink:href="../movielink/images/homescreen/more-off.png"/>
</g>
<zui:text-rect fill="#ffffff” font-family="HelveticaNeue LT 67 Medium Condensed" font-size="24" height="23" id="genre" pointer-events="none" width="235" x="10" y="9" zui:metadata="music[O].genres[O]" zui:text-allcaps="original" zui:text-justification=”left">
<![CDATA[Genre]]>
</zui:text-rect>
<view id="top" viewBox="(-71, -30, 493, 302)" zui:transition="hcrest_view"/>
<a id="top_bounds" xlink:href="#top">
<rect height="302" id="top_rect_l" width="493" x="-71" y="-30"/>
</a>
<view id="bottom" viewBox="(-71, 97, 493, 302)" zui:transition="hcresl_view"/>
<a id="bpttom_bounds" xlink:href="#bottom">
<rect height="302" id="bottom_rect_l" width="493" x="-71" y="97”/>
</a>
<rect height="188" id="autopan_up" stroke="#ffOOOO" visibility="hidden" width="399" x="-24" y="-23"/>
<rect height="167" id="autopan_down" stroke="#OOffOO" visibility="hidden" width="399" x="-24" y="222"/>
</g>
<zui:scene height="48" id="trans_xx_25" width="47" x="8" xlink:href="music_detail.svg" y="37"/>
<zui:scene height="48" id="trans_xx_26" width="47" x="8" xlink:href="music_detail.svg" y="37"/>
<zui:scene height="48" id="trans_xx_27" width="47" x="8" xlink:href="music_detail.svg" y="37"/>
<zui:scene height="48" id="trans_xx_28" width="47" x="8" xlink:href="music_detail.svg" y="37”/>
<zui:scene height="48" id="trans_xx_29" width="47" x="8" xlink:href="music_detail.svg" y="37"/>
<zui:scene height="48" id="trans_xx_30" width="47" x="8" xlink:href="music_detail.svg" y="37"/>
<zui:scene height="48" id="trans_xx_31" width="47" x="8" xlink:href="music_detail.svg" y="37"/>
<zui:scene height="48" id="trans_xx_32" width="47" x="8" xlink:href="music_detail.svg" y="37”/>
<zui:scene height="48" id="trans_xx_33" width="47" x="8" xlink:href=”music_detail.svg” y="37"/>
<zui:scene height="48" id="trans_xx_34" width="47" x="8" xlink:href="music_detail.svg" y="37”/>
<zui:scene height="48" id="trans_xx_35" width="47" x="8" xlink:href="music_detail.svg" y="37”/>
<zui:scene height="48" id="trans_xx_36" width="47" x="8" xlink:href="music_detail.svg" y="37"/>
<zui:scene height="48" id="trans_xx_37" width="47" x="8" xlink:href="music_detail.svg" y="37”/>
<zui:scene height="48" id="trans_xx_38" width="47" x="8" xlink:href="music_detail.svg" y="37”/>
<zui:scene height="48" id="trans_xx_39" width="47" x="8" xlink:href="music_detail.svg" y="37”/>
</svg>
【００８９】
上の実施例の太字のコードは、親SVGブリック(music_shelf.svg)においてセットアップされた変数musicの25番目の要素を指す。前の音楽クエリは、最大25までの要素を返す。次いで、音楽要素(この実施例ではアルバム)は、「this」という変数を使用してalburnCoverEffect.svgと呼ばれる子ブリックに渡される。上記の2つのコードスニペット、および図24および25の対応するGUI画面(シーン)は、ズーミング可能なグラフィカルユーザインターフェイスを生成する際に使用する本明細書で説明されている、本発明の例示的な実施形態によるSVGへの再利用可能な拡張に関連する2つの有益な特性を例示するために使用されている。第1に、SVGブリックは、GUI画面からGUI画面へ(シーンからシーンへ)再利用可能なコードを与えるプログラミング構成体をもたらす。このコンテキストでは、図24のGUI画面を生成するために使用されるブリックコードは、図25のGUI画面を生成するために再利用される。さらに、これらのブリックは、生成されるグラフィック表示コンテンツの少なくとも一部が、メタデータから描画されるという意味でパラメータ化され、これは、時間とともに変化しうる。これは、同じプログラムコードを使用することで、例えば、時間とともに変化する可能性のある、オンデマンドムービーを選択するユーザインターフェイスを生成するために使用することができること、また本発明によるインターフェイスの所定のズームレベルで描画されるユーザインターフェイスのコンテンツも、それに応じて、時間とともに変化しうることを意味する。
【００９０】
ブリックコード自体は、例えば、ビジュアルプログラミングインターフェイスを使用して生成することができ、その一例は、図26に示されており、音楽要素2600(アルバムカバー画像ブリック)がコーディングされている。このツールキット機能に関連するある種の例示的コードを以下に示す。
【００９１】
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg height="46" onload="albumCoverEffect_system_onload(evt)" width="47" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns: zi="http://ns.hcrest.com/ZUIIllustratorExtensions/1.0" xmlns:zui="http://ns.hcrest.com/ZUIExtensions/1.0">
<script language="javascript" xlink:href="./albumCoverEffeet.js"/>
<g id="layer">
<a id="anchor_0" xlink:href="zuichild:trans_0">
<g id="cover">
<image height="150.00" id="image" ρreserveAspectRatio="xMidYMid meet" transform="matrix(0.313, 0.000, 0.000, 0.307, 0.000, -0.050)" width="150.00" xlink:href="../placeholders/cdcover.png" zui:metadata="this.image.uri"/>
<g id="title">
<rect fill="#000000 " height="15" id="rect_0" width="47" x="0" y="31" />
<zui:text-rect fill="#ffffff" font-family="HelveticaNeue LT 67 Medium Condensed" font-size="6" height="14" id="textrect_0" width="45" x="l" y="32" zui:metadata="this.title" zui:text-allcaps="original" zui:text-justification="left">
<![CDATA[album title line two] ] >
</zui:text-rect>
</g>
</g>
</a>
</g>
<zui:scene height="46" id="trans_0" transition="trans_0_transition" width="47" x="0" xlink:href="music_detail.svg" y="0">
<zui:variable name="this" value="this" usage="musicDetail"/>
</zui:scene>
<zui:transition id="trans_0_transition" inherits="hcrest_placement_swap_effect">
<zui:scene-swap cover="cover"/>
</zui:transition>
</svg>
【００９２】
albumCoverAffect.jsも参照されたい。このファイルは、ＳＶＧファイルの付随ファイルである。このＪａｖａＳｃｒｉｐｔ（登録商標）は、実際にタイトルホバー効果を作成するものである。
【００９３】
document.include("../scripts/Hoverzoom.js");
document.include("../scripts/Cursor.js");
function albumCoverEffect_user_onload_pre(evt) {
createCursorController(document.getElementByld("cover"));
createHoverzoomTitleEffect(document.getElementByld("cover"), 0.400000, 250.000000, document.getElementByld("title"));
}
// @Toolkit-begin (pseudo-tag for Toolkit-generated code) //
////////////////////////////////////////////////////////////
!!! The prior function albumCoverEffect_user_onload_pre is what actually creates the title hover effect.
/**
* AUTO GENERATED CODE : DO NOT EDIT
*/
function albumCoverEffect_system_onload (evt) {
if ( "albumCoverEffect_user_onload_pre" in this) {
albumCoverEffect_user_onload_pre (evt);
} if ( "albumCoverEffect_user_onload_post" in this ) {
albumCoverEffect_user_onload_post (evt);
}
}
// @Toolkit-end (pseudo-tag for Toolkit-generated code) //
//////////////////////////////////////////////////////////
【００９４】
上記ソフトウェアコード例の太字部分には、「カバー」と呼ばれる要素がある。カバー要素は、GUI画面上の特定の位置においてこのブリックにより描画されるアルバムカバーに関連する画像メタデータである。なお、そこでは「zui:metadata='this.image.uri'」と書かれているプログラム行に留意されたい。これは、注目するアルバムである第1のコード例(親SVG)においてセットアップされる、つまり、アルバムは、このブリック内に渡され、関連するカバーアートは、この変数により参照される。
【００９５】
前記の例示的な実施形態では、SVGプログラミング言語の拡張に基づきユーザインターフェイス構成要素として使用するコンテキストにおいてブリックを説明しているが、ブリックは、分散ソフトウェア設計を容易にするシステム構成要素としてより一般的に使用することができる。例えば、図27に示されているシステムを考察する。そこでは、ソフトウェアシステム2700は、メタデータ2702(例えば、映画、ショッピング、音楽などに関連するデータ)とテレビジョン2704およびリモコンデバイス2706などのエンドユーザデバイスとの間の制御および対話のための完全なコンテンツ配信フレームワークを提供する。より一般的に、メタデータは、例えば、他のデータの受信、作成、アクセス、および/または修正の方法、その日時、およびその実行者、他のデータのフォーマット方法、他のデータのコンテンツ、品質、状態、履歴、および他の特性のうちの1つまたは複数を記述することができる、特定のデータセットに関する情報である。ブリックは、図27の例示的なシステムにおいて、システムに関連する特定のアプリケーションに適用されるフレームワークレベルよりも高い関連するロジックのすべてを具現化する、利用可能なソフトウェア構成体として事前に定義されたブリックモデルに基づきブリックエンジンにより作成される。このロジックをモジュール化するために、図28に示されているように、異なるレベルのブリック、例えば、アプリケーション、アプレット、意味論的および要素的なものを開発することができる。これらの異なる種類のそれぞれのブリックについて、いくつかの実施例とともに、さらに詳しく説明する。
【００９６】
最高レベルにあるのは、アプリケーションブリックである。図27のシステム実施例では、アプリケーションは、メタデータタイプ、例えば、音楽をエンドユーザに配信する音楽アプリケーション、オンデマンドムービーをエンドユーザに配信する映画アプリケーションなどに対応する。アプリケーション映画ブリックは、エンドユーザと映画メタデータとの間の完全な対話を記述するミニアプリケーションとして働くユーザが映画メタデータをブラウズ/探索/検索するためのエントリ階層を備える。同様に、映画アプリケーションブリックは、エンドユーザと音楽メタデータとの間の完全な対話を記述する。そのため、アプリケーションブリックは、本質的に、図27の例示的なシステムに対する、特定のタイプのメタデータに関連付けられた分散クラスの定義であり、関連するソースメタデータ2702を識別し、分割するための特定のメカニズムを備える。アプリケーションブリックが生成されると、これは、新しいパラメータを受け渡すことによりカスタマイズされるそのアプリケーションブリックの独立したインスタンスを作成することにより再利用することができる。例えば、とりわけ、メタデータ構文解析、ユーザインターフェイスの生成、およびユーザ要求を処理するために映画アプリケーションブリックが作成された後、CinemaNowによりオンデマンドで提供される映画に関して、そのブリックの他のインスタンスは、異なるパラメータをそのブリックの他のインスタンスに受け渡すことにより他のプロバイダ(例えば、Movielink)による映画の提供を処理するために使用することができる。そのため、アプリケーションブリックは、最上位レベルのメタデータカテゴリを完全に操作する自給自足型のシステム規模の構成体としてみなすことができる。図16に例示されている異なる機能性アイコンはそれぞれ、異なるアプリケーションブリックに関連付けることができる。
【００９７】
図28の層の中でレベルを1つ下ると、アプリケーションブリックは、複数のアプレットブリックからなる。アプレットブリックは、第2レベルメタデータカテゴリを完全に操作するか、またはメタデータ固有の機能を完全に表す自給自足型のシステム規模のソフトウェア構成体である。このコンテキストでは、第2レベルメタデータは、高レベルメタデータ領域のコンテキスト内で利用可能なメタデータの種類を指し、例えば、映画の高レベルメタデータについては、第2レベルメタデータは、映画タイトル、映画スター、上演時間などを含むことができる。メタデータ固有の機能は、特定の高レベルメタデータに結び付けられた機能、例えば、映画のブラウズ/再生、またはショッピングメタデータに対するショッピングカートのブラウズ/カートに入れる機能を意味する。例えば、特定のアプリケーションに関連付けられた書棚でいっぱいのナビゲーション画面は、書棚ナビゲーションアプレットブリックを使用して定義することができる。このナビゲーションアプレットブリックは、より高いレベルのアプリケーションブリックに適した方法で編成された関連メタデータのすべてをマップする。例えば、特定の映画プロバイダにより提供される提供物はすべて、映画ナビゲーションアプレットブリックで定義されているように利用可能なメタデータに従って書棚のレイアウトとして示すことができる。同じ映画ナビゲーションアプレットブリックの他のインスタンスを使用して、類似のユーザインターフェイス画面を生成し、異なる映画プロバイダによって提供される提供物について、対話を処理することができる。アプレットブリックは、関連するメタデータ(アプリケーションブリックによりすでに編成されている)とインターフェイスのさまざまな態様を制御するユーザインターフェイスのシーンレイアウト、例えば、書棚次元、カバーアート次元などとの間のリンクを設定する。アプレットブリックは、さらに、このレベルのユーザとシステムとの間の機能的対話、例えば、書棚がその表示領域上で一時停止されているカーソルに反応する仕方も制御することができる(例えば、図24を参照)。
【００９８】
それぞれのアプレットブリックは、複数の意味論的ブリックで構成することができ、これらは、システムに関連付けられている特定の意味論的対話を完全にカプセル化する自給自足型のシステム規模の構成体として動作することが意図されている。例えば、アプレットブリックは、特定のメタデータオントロジーに関連付けることができ、例えば、図24のようなナビゲーション書棚ユーザインターフェイス画面では、意味論的ブリックは、特定の書棚、例えば、図25に示されているようなものについて同じことをしうる。そのため、意味論的ブリックは、アイテム(例えば、カバーアート画像)サイズ設定の詳細、カバーアート詳細、意味論的ホバー詳細(つまり、図25に示されている結果を生み出すために特定のカバーアート画像上でユーザがカーソルを一時停止するときにホバーズームを生成する方法)、タイトル詳細などを含むことができる。
【００９９】
意味論的ブリックの以下の実施例を考察する。特に、特定の人に関する情報を表示するためにブリックエンジンにより意味論的ブリックがインスタンス化されていることを考える(例えば、インターフェイスを使用して選択できる映画の中の俳優)。この意味論的ブリックは、システムのユーザに対し、この意味論的ブリックの属性である、名前、誕生日、略歴、および関連する作品、例えばその人が主演した映画などの情報を表示する。略歴は、さらに、スクロール可能なテキストボックスを含む(図28で参照されている最低順序の要素ブリックを使用して作成することができる)。この意味論的ブリックは、上述の属性をサポートする任意の一般的メタデータタイプについて再利用することができる。また、この意味論的ブリックは、関連する作品のサムネール画像を表示することができることに留意されたい。しかし、意味論的ブリックは、さらに、ユーザがサムネールをクリックしてそのビューに入る場合に、そのシーンに到達するまでの待ち時間が短縮されるように、それぞれのサムネールに関連付けられている大きな画像をプリキャッシュするという機能を定義することも可能である。これは、作成者がミュージシャンか、音楽グループか、俳優か、ディレクターか、または著者かに応じて「person」クラスが異なるインスタンス化を有するという点でOOクラスと類似のものであるとみなすことができる。しかし、この意味論的ブリックは、関連する作品のカバーアートを示すだけでよい場合があり、したがって、名前、誕生日、略歴、およびカバーアートをサポートする任意の種類の一般メタデータでこのブリックを再利用することができる。関連する作品があるが、その作品を表すためにカバーアートが利用できない場合、ブリックは、代わりに、呼ばれたときにユーザインターフェイス上にプレースホルダ画像を表示するように構造化することが可能である。実際、メタデータタイプに応じて異なる種類のプレースホルダ画像を使用することが可能である(例えば、映画リールまたは書籍のように見える)。これは、ブリックのエラー処理機能を示している。
【０１００】
上述のように、要素ブリックは、プリミティブ対話をカプセル化する自給自足型のシステム規模の構成体である。要素ブリックの実施例は、テキストボックス、ボタン、画像、スクロールリストなどである。
【０１０１】
上述の例示的な実施形態は、あらゆる点に関して、本発明を制約するのではなく、例示することを目的としている。そのため、本発明は、当業者であれば本明細書に含まれる説明から導き出せる詳細な実装の多くの変更形態が可能である。このような変更形態および修正形態はすべて、付属の請求項で定められているとおり、本発明の範囲および精神に含まれると考えられる。本出願の説明で使用されるいかなる要素、動作、または指示も、そのようなものとして明示されていない限り、本発明にとって重要または本質的であると解釈すべきではない。また、本明細書で使用されているように、英文中の冠詞「a(1つの、という場合がある)」は、1つまたは複数のアイテムを含むことが意図されている。
【図面の簡単な説明】
【０１０２】
【図１】エンターテインメントシステム用の従来のリモコンユニットを示す図である。
【図２】エンターテインメントシステム用の従来のグラフィカルユーザインターフェイスを示す図である。
【図３】本発明の例示的な実施形態(ディスプレイとリモコンの両方)が実装可能な例示的なメディアシステムを示す図である。
【図４】図3のシステムコントローラをさらに詳しく示す図である。
【図５】本発明の例示的な一実施形態によるメディアシステム用のグラフィカルユーザインターフェイスを示す図である。
【図６】本発明の例示的な一実施形態によるメディアシステム用のグラフィカルユーザインターフェイスを示す図である。
【図７】本発明の例示的な一実施形態によるメディアシステム用のグラフィカルユーザインターフェイスを示す図である。
【図８】本発明の例示的な一実施形態によるメディアシステム用のグラフィカルユーザインターフェイスを示す図である。
【図９】本発明の例示的な一実施形態による例示的なデータ構造体を示す図である。
【図１０】本発明の例示的な一実施形態による図9のデータ構造体を使用して作成される例示的なGUIの一部のバージョンにおいてズームアウト（ａ）・ズームイン（ｂ）した図である。
【図１１】本発明の例示的な一実施形態によりGUI表示を生成するために使用される双方向連結順序付きリストを示す図である。
【図１２】本発明の例示的な一実施形態によるノード監視アルゴリズムの動作を例示するために使用される他の例示的なGUIの一部のバージョンにおいてズームアウト（ａ）・ズームイン（ｂ）した図である。
【図１３Ａ】本発明の例示的な一実施形態による図12(a)のビューから図12(b)のビューまでGUIが遷移するときのノード監視アルゴリズムの動作を例示するために使用される例示的なデータ構造体を示す図である。
【図１３Ｂ】本発明の例示的な一実施形態による図12(a)のビューから図12(b)のビューまでGUIが遷移するときのノード監視アルゴリズムの動作を例示するために使用される例示的なデータ構造体を示す図である。
【図１４】分解能に一致するズーミングで使用する仮想カメラを含む本発明の他の例示的な実施形態によるデータ構造体を示す図である。
【図１５】本発明の例示的な一実施形態による意味論的ズーミングを示す例示的なGUIの一部のバージョンにおいてズームアウト（ａ）・ズームイン（ｂ）した図である。
【図１６】本発明の例示的な他の実施形態によるズーミング可能なグラフィカルユーザインターフェイスを示す図である。
【図１７】本発明の例示的な他の実施形態によるズーミング可能なグラフィカルユーザインターフェイスを示す図である。
【図１８】本発明の例示的な他の実施形態によるズーミング可能なグラフィカルユーザインターフェイスを示す図である。
【図１９】本発明の例示的な他の実施形態によるズーミング可能なグラフィカルユーザインターフェイスを示す図である。
【図２０】本発明の例示的な他の実施形態によるズーミング可能なグラフィカルユーザインターフェイスを示す図である。
【図２１】本発明の例示的な実施形態により実現することができる例示的なオーバーレイコントロールの集合体を示す図である。
【図２２】本発明によりズーミング可能なグラフィカルユーザインターフェイスを実装するための例示的なフレームワークを示す図である。
【図２３】本発明の例示的な一実施形態によるズーミング可能なグラフィカルユーザインターフェイスを生成することに関連するデータフローを示す図である。
【図２４】本発明の例示的な実施形態によりブリックを使用して描画されるGUI画面を示す図である。
【図２５】本発明の例示的な実施形態によりブリックを使用して描画される第2のGUI画面を示す図である。
【図２６】本発明の例示的な実施形態によりブリックを作成するために使用可能なツールキット画面を示す図である。
【図２７】本発明の例示的な一実施形態により分散ソフトウェア設計を容易にするシステム構成要素としてシステムブリックが使用されるシステムを示す図である。
【図２８】本発明の例示的な一実施形態により異なる種類のブリックの階層を示す図である。
【符号の説明】
【０１０３】
2  ジャンル
3  ジャンル
100  エンターテインメントシステム
134  無線I/Oコントロールデバイス
200  メディアシステム
210  入出力(I/O)バス
212  テレビジョン/モニタ
214  ビデオカセットレコーダ(VCR)
216  デジタルビデオディスク(DVD)レコーダ/再生デバイス
218  オーディオ/ビデオチューナ
220  コンパクトディスクプレーヤ
222  マイクロホン/スピーカシステム
224  ビデオカメラ
226  無線I/Oコントロールデバイス
228  システムコントローラ
230  有線放送
232  衛星放送
234  放送テレビジョンネットワーク
236  電話網
238  ケーブルモデム
300  プロセッサ
302  メモリ
304  ディスプレイコントローラ
306  デバイスコントローラ
308  データ記憶デバイス
310  I/Oインターフェイス
312  バス
500  形状
502  テキスト
504  写真
508  選択ポインタ(カーソル)
512  グループ
515  未選択ジャンル
516  形状
520  アルバムカバーの画像
524  アーティスト情報
528  アルバムカバー
530  アルバム
532  トラック
534  コントロール
536  アルバム
538  隣接アルバム
550  点
552  点
900  カメラノード
902  層ノード
904  表示デバイス
1100  領域ブロック
1102および1104  遷移ブロック
1106  ビュー境界ブロック
1200  仮想カメラノード
1202  主カメラノード
1204  表示デバイス
1400  起動GUI画面
1900  高レベルアプリケーション
1902  プリミティブ
1904  ソフトウェアおよびハードウェアインフラストラクチャ
2000  UI設計ツール
2002  ブリック
2004  シーン
2006  ブリックライブラリ
2008  マルチメディアリソース
2010  シーンローダ
2012  ZSDコンパイラ
2014  ローカルシーンレンダラ
2600  音楽要素
2700  ソフトウェアシステム
2702  メタデータ
2704  テレビジョン
2706  リモコンデバイス
【図１】
2008527540.tif 000009
【図２】
2008527540.tif 000010
【図３】
2008527540.tif 000011
【図４】
2008527540.tif 000012
【図５】
2008527540.tif 000013
【図６】
2008527540.tif 000014
【図７】
2008527540.tif 000015
【図８】
2008527540.tif 000016
【図９】
2008527540.tif 000017
【図１０（ａ）】
2008527540.tif 000018
【図１０（ｂ）】
2008527540.tif 000019
【図１１】
2008527540.tif 000020
【図１２（ａ）】
2008527540.tif 000021
【図１２（ｂ）】
2008527540.tif 000022
【図１３Ａ】
2008527540.tif 000023
【図１３Ｂ】
2008527540.tif 000024
【図１４】
2008527540.tif 000025
【図１５】
2008527540.tif 000026
【図１６】
2008527540.tif 000027
【図１７】
2008527540.tif 000028
【図１８】
2008527540.tif 000029
【図１９】
2008527540.tif 000030
【図２０】
2008527540.tif 000031
【図２１】
2008527540.tif 000032
【図２２】
2008527540.tif 000033
【図２３】
2008527540.tif 000034
【図２４】
2008527540.tif 000035
【図２５】
2008527540.tif 000036
【図２６】
2008527540.tif 000037
【図２７】
2008527540.tif 000038
【図２８】
2008527540.tif 000039
【手続補正書】
【提出日】平成19年9月7日(2007.9.7)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】０００２
【補正方法】変更
【補正の内容】
【０００２】
本発明は、メディアアイテムの編成、選択、および起動を行うためのフレームワークについて説明する。そのフレームワークの一部は、ポイント、クリック、スクロール、ホバリング、およびズームの基本構成要素を備えるグラフィカルユーザインターフェイス、より詳細には、３Ｄポインティングリモコンとともに使用できるメディアアイテムに関連付けられているグラフィカルユーザインターフェイスの設計およびオペレーションを伴う。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００１１
【補正方法】変更
【補正の内容】
【００１１】
したがって、これらの難点を解消するユーザインターフェイス、方法、およびソフトウェア設計構築を提供することが望ましいであろう。
【特許文献１】米国仮特許出願第60/641,406号
【特許文献２】米国特許第6,421,067号
【特許文献３】米国特許第6,314,575号
【特許文献４】米国特許第6,412,110号
【特許文献５】米国特許第6,577,350号
【特許文献６】米国特許出願第10/768,432号
【特許文献７】米国特許出願第11/119,663号
【非特許文献１】Benjamin B. Bederson、「Quantum Treemaps and Bubblemaps for a Zoomable Image Browser」、UIST 2001、ACM Symposium on User Interface Software and Technology、CHI Letters、3(2)、71〜80頁
【非特許文献２】W3C Recommendationにより2003年1月14日に発布された「Scalable Vector Graphics (SVG) 1.1 Specification」
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００１８
【補正方法】変更
【補正の内容】
【００１８】
この例示的な実施形態では、メディアシステム200は、I/Oバス210に結合されたテレビジョン/モニタ212、ビデオカセットレコーダ(VCR)214、デジタルビデオディスク(DVD)レコーダ/再生デバイス216、オーディオ/ビデオチューナ218、およびコンパクトディスクプレーヤ220を備える。VCR 214、DVD 216、およびコンパクトディスクプレーヤ220は、単一ディスクまたは単一カセットデバイスとしてよいか、またはそれとは別に、複数ディスクまたは複数カセットデバイスとすることができる。これらは、独立のユニットであるか、または一体化されることもできる。それに加えて、メディアシステム200は、マイクロホン/スピーカシステム222、ビデオカメラ224、および無線I/Oコントロールデバイス226を含む。本発明の例示的な実施形態によれば、無線I/Oコントロールデバイス226は、３Ｄポインティングをサポートし、ナビゲーションをサポートする最低限の数のボタンを備え、RF信号を通じてメディアシステム200と通信するメディアシステムリモコンユニットである。例えば、無線I/Oコントロールデバイス226は、特定の所望のコマンドを決定するため、ジャイロスコープまたは他のメカニズムを使用して画面位置と運動ベクトルの両方を定義する３Ｄポインティングデバイスとすることができる。さらに、一組のボタンを無線I/Oデバイス226上に備え、後述の「クリック」プリミティブだけでなく「back」ボタンも起動することができる。他の例示的な実施形態では、無線I/Oコントロールデバイス226は、IR信号を介してメディアシステム200のコンポーネントと通信する、メディアシステムリモコンユニットである。さらに他の実施形態では、無線I/Oコントロールデバイス226は、外観が典型的なエンターテインメントシステムリモコンに似ている、ユーザがエンターテインメントシステム100のディスプレイ上でカーソルの位置を決めるために使用されるトラックボールまたは他のナビゲーションメカニズムの付加的機能を備える、IRリモコンデバイスとすることができる。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】００２７
【補正方法】変更
【補正の内容】
【００２７】
本発明の例示的な一実施形態によれば、入力デバイスは、以下でさらに詳しく説明されるポイント、クリック、スクロール、ホバリング、およびズーム構成要素をサポートするグラフィカルユーザインターフェイスと結合された、３Ｄポインティングデバイス、例えば、開示が参照により本明細書に組み込まれており、これ以降「'663出願」と呼ばれる、「Free Space Pointing Devices and Methods」という表題の2005年5月2日に出願された米国特許出願第11/119,663号で説明されている３Ｄポインティングデバイスとすることができる。本発明と連携して使用すると有益なこの例示的な入力デバイスの特徴の1つは、2つのボタンとスクロールホイールのみ、つまり、3つの入力作動オブジェクトだけで実装できるという点である。これらのボタンのうち1つは、ZOOM IN(選択)ボタンとして構成することができ、もう1つは、ZOOM OUT(戻る)ボタンとして構成することができる。従来のリモコンユニット、例えば図1に示されているものと比べると、本発明では、ユーザが自分のメディアアイテム選択を行う際に直面する、ボタンの数などを大幅に削減することにより、GUIのこの態様を簡素化している。本発明の例示的な実施形態による入力デバイスの追加の好ましいが、必須ではない、特徴は、ユーザ向けの「３Ｄポインティング」機能を実現することである。「３Ｄポインティング」という語句は、本明細書では、ユーザが表示画面の前の空中で3つ(またはそれ以上)の次元方向に入力デバイスを自由に動かせること、およびそれに対応して、ユーザインターフェイスがそれらの運動を画面上のカーソルの動きに直接変換することができることを指すために使用される。そのため、「３Ｄポインティング」は、表示画面とは別の表面、例えば机の表面またはマウスパッドを、マウスの相対的移動がコンピュータ表示画面上のカーソル移動に変換される際に起点となるプロキシ表面として使用する従来のコンピュータマウスポインティング技術とは異なる。本発明の例示的な実施形態によるコントロールフレームワーク内で３Ｄポインティングを使用することで、さらに、ユーザの選択活動が簡素化されるが、それと同時に、インターフェイスへの区別可能な入力として身振りを導入する機会が与えられる。身振りは、時間の経過を伴う移動の認識可能なパターンとしてみなすことができ、そのパターンは、GUIコマンド、例えば、x、y、z、ヨー、ピッチ、およびロール次元またはそれらの部分的組合せによる移動の関数に変換することができる。しかし、当業者であれば、好適な任意の入力デバイスを、本発明によるズーミング可能なGUIとともに使用できることを理解するであろう。好適な入力デバイスの他の実施例は、限定はしないが、トラックボール、タッチパッド、従来のTVリモコンデバイス、音声入力、ユーザの身振りをGUIコマンド、またはそれらの任意の組合せに伝達/変換することができる任意のデバイスを含む。本明細書で説明されているGUI機能のそれぞれの態様は、身振りおよび音声コマンドのうちの少なくとも1つを使用して本発明によりフレームワーク内で作動させることができることが意図されている。他の実装は、カーソルおよび/または他のリモコンキーまたはさらには音声入力を使用して選択対象のアイテムを識別することを含む。
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】００７０
【補正方法】変更
【補正の内容】
【００７０】
本発明によるズーミング可能なグラフィカルユーザインターフェイスのいくつかの実施例を取り上げて、このようなインターフェイスを使用する例示的なフレームワークおよびインフラストラクチャについて説明することにする。図22は、さまざまな高レベルアプリケーション1900、例えば、映画、テレビジョン、音楽、ラジオ、およびスポーツに関連するズーミング可能なインターフェイスがプリミティブ1902(図の中では、「原子」と呼ばれる)によりサポートされるフレームワーク図を示している。この例示的な実施形態では、プリミティブ1902は、POINT、CLICK、ZOOM、HOVER、およびSCROLLを含むが、当業者であれば、他のプリミティブ、例えば、PANおよびDRAGをこのグループに含めることができることを理解するであろう。上述のように、POINTおよびCLICKプリミティブは、カーソル位置を決定し、例えばユーザがハンドヘルド入力デバイス上のZOOM INまたはZOOM OUTボタンを作動させたときのイベントをトリガするように動作する。これらのプリミティブは、ナビゲーションを簡素化し、上-下-右-左のボタンの繰り返しアクションを不要にする。上に示されているように、ZOOMプリミティブは、可能な選択の概要を与え、ユーザに自分の選択を絞り込むときのコンテキストを与える。この概念により、インターフェイスは、多数のメディア選択および任意の表示サイズに合わせてスケーリングすることができる。SCROLLプリミティブでは、例示的なハンドヘルド入力デバイス上のスクロールホイール入力デバイスからの入力を処理し、例えば、直線的メニューナビゲーションを高速化するために使用することができる。HOVERプリミティブは、ポインタの下にある選択部分を動的に拡大し(および/または選択部分の内容を変更し)、これによりユーザはコミットなしで潜在的選択項目をブラウズすることができる。前述のプリミティブの動作はそれぞれ、多数の異なる方法で本発明によりGUIにおいて作動させることができる。例えば、POINT、CLICK、HOVER、SCROLL、およびZOOMはそれぞれ、ユーザによって実行されうる異なる身振りに関連付けることができる。この身振りは、３Ｄポインタであろうと、トラックボールであろうと、タッチパッドであろうと、入力デバイスを介してシステムに伝達することができ、また適切なプリミティブの作動に翻訳することができる。同様に、プリミティブのそれぞれを、それぞれの音声コマンドに関連付けることができる。
【国際調査報告】
2008527540.tif 000040
2008527540.tif 000041