JPH09501786A - オブジェクト指向シェーディング - Google Patents

オブジェクト指向シェーディング

Info

Publication number
JPH09501786A
JPH09501786A JP7507544A JP50754494A JPH09501786A JP H09501786 A JPH09501786 A JP H09501786A JP 7507544 A JP7507544 A JP 7507544A JP 50754494 A JP50754494 A JP 50754494A JP H09501786 A JPH09501786 A JP H09501786A
Authority
JP
Japan
Prior art keywords
item
shading
shader
image
user
Prior art date
Legal status (The legal status 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 status listed.)
Pending
Application number
JP7507544A
Other languages
English (en)
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 JPH09501786A publication Critical patent/JPH09501786A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/00Three-dimensional [3D] image rendering
    • G06T15/50Lighting effects
    • G06T15/506Illumination models

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Graphics (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Image Generation (AREA)
  • Medicines That Contain Protein Lipid Enzymes And Other Medicines (AREA)
  • Pharmaceuticals Containing Other Organic And Inorganic Compounds (AREA)
  • Processing Or Creating Images (AREA)

Abstract

(57)【要約】 オブジェクト指向フレームワークで使用するためにシェーディング情報を計算して提供する方法と装置に関し、それらはシェーディング計算を導くシェーディング関係のオブジェクトとオプション群をレンダラに提供する。用意されているシェーダは柔軟性を持つユーザ定義モジュールの働きをして、複数の表面プロパティを表すイメージ値を計算する。ユーザは、複数の異なるパラメータ(例えば、光源、オブジェクト表面の向き、アイテムの表面のマテリアルの種類など)からシェーディングを計算するためのシェーダを選択してそのシェーダを指定する。ユーザが行うシェーダの選択は、結果として得られるイメージの望みの速度とイメージ均等性に基づいて行われる。シェーダは相互間で自由に交換可能であり、シェーダの修正が必要であっても、殆ど修正することなくレンダラと一緒に使用できる機能を備えている。本発明による方法は、アイテムのイメージを表示し、複数のユーザ定義シェーダをその各々が表示されるアイテムを表すデータを処理するように設定し、表示されるアイテムの表面の複数のプロパティの少なくとも1つのプロパティ(例えば、シェーディング・データ)を検出し、表面の少なくとも1つのプロパティとそのアイテムのユーザ定義コンポーネントの少なくとも1つに基づいてシェーディング計算を自動生成し、シェーディング計算に基づいてアイテムのディスプレイを修正する処理を含む。

Description

【発明の詳細な説明】 オブジェクト指向シェーディング 発明の背景 発明の分野 本発明は、一般的には、オブジェクト指向環境における3D(3次元)オブジェ クトの計算と生成の改善に関し、より具体的には、レンダリング期間に3D表面の シェーディング(shading)を判断し、シェーディング計算を導くシェーディング 関連のオブジェクトとオプションを持つレンダラ(renderer)を提供する方法、装 置およびフレームワークに関する。本発明によれば、アプリケーション開発者は 、オブジェクト指向オペレーティング・システム内に置かれているシェーダ・フ レームワーク(shader framework)内の任意のシェーダを選択的に選んで、レンダ ラを修正する必要があっても殆ど修正することなく、レンダラと一緒に使用する ことができる。別の方法として、アプリケーション開発者は、カストマイズした シェーダを開発すれば、オペレーティング・システム内のシェーダ・フレームワ ークを、開発したシェーダでオーバライド(override −無効化すること)するこ とも可能である。 関連技術の説明 従来の3Dハードウェア・グラフィックス・システムでは、カラー(またはシェ ーディング)計算のための公式(formula)は固定されている。その結果、ユーザ が異なるシェーディング品質を望んでいる場合は、別の専用ハードウェア・グラ フィックス・システムを購入しなければならなかった。同様に、大多数のソフト ウェア・パッケージでは、得られるシェーディング効果が限られていた。その結 果、ユーザは異なるシェーディング品質を得るためには、異なるソフ トウェア・パッケージの間で切り替える必要があった。このような処理は、ソフ トウェア開発とその使い方が非効率になり、不便である。さらに、シェーディン グ品質はユーザの特定の要求に合わせてカストマイズすることができない。また 、新開発が行われ、新しいニーズが起こったとき、ソフトウェアを容易に拡張す ることができない。 発明の概要 従って、本発明の目的は、シェーダ・フレームワーク、すなわち、オブジェク ト指向オペレーティング・システム内に置かれて、コール可能であり、広範囲に わたる表面プロパティ(surface properties)と結合した複数のシェーダを含み、 インタフェース・ソフトウェア開発を最小限にとどめてレンダラと共に選択的に 利用できるシェーダ・フレームワークを提供することである。 本発明の一形態によれば、シェーディング・フレームワークはオペレーティン グ・システム内に用意され、異なるプロパティに基づいてシェーディングを計算 するためにコールされる。シェーダ・フレームワークは、コール可能な複数のシ ェーダ・クラスとデフォルト・シェーダ・クラスを含んでおり、好ましくは、テ キスチャ・マップ(texture map)、バンプ・マップ(bump map)、およびリフレク ション・マップ(reflection map)をシェーディング・モデル内に生成して現実感 を向上させるためのファシリティ(facility)を含んでいる。そのほかに、シェー ディングをプロシージャによる定義を使用して行えば、オブジェクトが木材や大 理石などの現実のマテリアルから作られているかのようにイメージを生成するこ ともできる。アプリケーション開発者は、速度とイメージ品質との間のトレード オフに応じてシェーダ・フレームワーク内の適当なシェーダを自由に選択するこ とができる。別の方法として、開発者は、シェーダ・フレームワーク内のシェー ダが持つプロパティの一部または全部を無効化(オーバライド)するカスタム・ シェーダ(custom shader)を作ることも可能である。本発明によれば、要求され ることはシェーダの設定だけであり、そうすれば、レンダラがそのシェーダを呼 び出す。 本発明によれば、グラフィックス・システムはレンダリング・ルーチンとシェ ーダとをクリーン・インタフェース(clean interface)で結ぶので、異なるシェ ーダを使用するとき、レンダラの修正が必要であったとしても、殆どその必要は ない。従って、シェーダは極めて使いやすく、実現が容易である。さらに、シェ ーダの修正は、異なるレンダラを使用するとき最小限で済む。 好適オペレティング・システムは、基本的イルミネーション・モデル(basic illumination model)を実現できるだけの十分なファシリティを備えている。ま た、好適オブジェクト指向オペレーティング・システムは、複雑なシェーダを構 築するために、ビルディング・ブロックとして使用される多数のシェーダ・ユー ティリティも備えている。ある種の複雑なシェーディング効果は、「パイプライ ン」方式で配列された複数のシェーダ、あるいはシェーダ・ツリーとして構築さ れた複数のシェーダを通して得ることができる。 以上のように、本発明によれば、オブジェクト指向フレームワークは3Dシェー ディングを計算するために提供されたもので、そこには複数のデフォルト・レン ダラとシェーダ・オブジェクトが用意されている。オブジェクトとして、好適オ ペレーティング・システムは、3D空間に定義された幾何学形状(geometrics)を出 力デバイス上のイメージに変換するデフォルト3Dレンダリング・パイプラインを 備えている。パイプライン・エレメントとしては、表面テセレータ(surface tes sellator)(これは3D表面を小さな断片に変換する)やレンダラ(renderer)(こ れは可視性(visibility)と計算で求めたカラー(computed colors)を基に表面を 表示する)などのオブジェクトがある。上述したように、シェーダ、すなわち、 イメージ・テクスチャ・マッピング、バンプ・マッピング、環境マッピング、お よびプロシージャによるテクスチャ・マッピングを行うシェーダがシェーダ・フ レームワーク内に用意される。シェーダ・フレームワーク内の各シェーダは、ロ ーカル・イルミネーション・シェーディング・モデル(local illumination shad ing model)を実現するデフォルト・リフレクタンス・シェーダ(reflectance sha der)を持っている。種々のマップを作成するためのユーティリティ群も用意され ている。ユーザは、レンダラの修正が必要であっても、殆ど修正しないで該当の シェーダを選択することができる。同様に、レンダラは、異 なるレンダラが使用されるとき、シェーダを殆ど修正しないで選択することがで きる。 図面の簡単な説明 上記およびその他の目的、形態および利点をよりよく理解しやすくするために 、以下では、添付図面を参照して本発明の好適実施例について詳しく説明する。 添付図面において、 第1図は、高解像度グラフィックス・ディスプレイ・デバイスおよびマウスな どのカーソル・ポインティング・デバイスをサポートして、そこで本発明を実現 できるようにする機能を備えた汎用コンピュータ・システムを絵で表して示す図 である。 第2図は、第1図に示す汎用コンピュータ・システムを示すブロック図であり 、好適実施例によるコンピュータ・システムの主要エレメントをより詳細に示す 。 第3図は、好適実施例に従いレンダリング期間に3D表面のカラーを判断する3D 属性バンドル・オブジェクトを示す図である。 第4図は、好適実施例によるオープン・シリンダの内側面と外側面を示す図で ある。 第5図は、好適実施例によるカラー空間の例を示す図である。 第6図は、好適実施例によるレンダラとシェーダとの関係を示す図である。 第7図は、シェーダ・オブジェクトとデフォルト・シェーダ階層を示す概略図 であり、好適実施例によるシェーダのインプリメンテーションを示す。 第8図は、好適実施例によるレンダラによって初期化されるシェーディング変 数を示す図である。 第9図は、好適実施例によるシェーディングの式で使用される記号を示す図で ある。 第10図は、好適実施例による好適オペレーティング・システムで採用されたラ イト・オブジェクト(light object)を示す図である。 第11図は、好適実施例によるTReflectanceShaderクラスによって使用されるデ フォルト・シェーダの式を示す図である。 第12図は、好適実施例によるTShadingSampleのfBaseColorからObjectColor を 選択したことを示す図である。 第13図は、好適実施例に従ってスクリーン・ピクセルから表面へ、次にテクス チャ・マップへマッピングする例を示す図である。 第14図は、好適実施例によるスクリーン・ピクセルと幾何学形状とテクスチャ ・マップとの関係を示す図である。 第15図は、好適実施例によるテクスチャ・エリアの近似化を示す図である。 第16図は、好適実施例によるバンプ・マッピングの例を示す図である。 第17図は、好適実施例によるバンプ・マップにおける新旧の法線軸を示す図で ある。 第18図は2Dリフレクション・マップであり、好適実施例に従いマップを2Dから 3Dに拡張することを示している。 第19図は、好適実施例によるキュービック環境マップ(cubic environment map )である。 第20図は、好適実施例による好適オペレーティング・システムのサンプル・プ ロシージャ・マップを示す図である。 第21図は、好適実施例に従い値をカラーにマッピングするノイズ・シェーダの カラー・スプラインを示す図である。 第22図は、好適実施例によるバンプ・マッピングで使用されるテクスチャ・イ メージである。 第23図は、好適実施例によるTBumpMapShaderを使用して形成されたイメージを 示す図である。 第24図は、好適実施例によるマーブル(marble)およびリンクル(wrinkle)マッ プを持つTSurfaceShaderを示す図である。 第25図は、好適実施例によるイメージおよびバンプ・マップを持つTSurfaceSh aderを示す図である。 第26図は、好適実施例によるイメージおよびバンプ・マップを持つ TSurfaceShaderを示す別の図である。 発明の好適実施例の詳細な説明 以下、図面を参照して説明する。特に第1図に示すように、本発明は、汎用コ ンピュータ10上に置かれたオペレーティング・システムの環境下で使用されるこ とが好ましい。コンピュータ10はシステム・ユニット12と陰極線管(CRT)さもな くば、代りに液晶ディスプレイ(LCD)のような高解像度ディスプレイ・デバイス1 4を有している。ディスプレイのタイプは、グラフィック・ユーザ・インタフェ ース(GUI)で代表されるウィンドウ操作システムで要求される高解像度能力を持 つディスプレイであることを除けば、重要ではない。コンピュータへのユーザ入 力は、キーボード16とマウス18などのカーソル・ポインティング・デバイスによ り行われる。マウス18はキーボード16に接続され、キーボードはシステム・ユニ ット12に接続されている。別の方法として、マウス18をシステム・ユニット12内 の専用またはシリアルポートに接続することも可能である。第1図に示すタイプ の汎用コンピュータの例としては、アップル社マッキントッシュ(アップル・コ ンピュータ社の登録商標)およびIBM PS/2がある。その他の例としては、IBM RI SCシステム/6000 およびSun Microsystemsコンピュータのような種々のワークス テーションがある。 第2図は、第1図に示す汎用コンピュータ・システムの主要エレメントをより 詳細に示す。システム・ユニット12は、中央演算処理ユニット(CPU)21、ランダ ム・アクセス・メモリ(RAM)22、およびリードオンリ・メモリ(ROM)23 を含み、 これらはバス24に接続されている。CPU21 は市販のマイクロプロセッサのいずれ か、たとえば、アップル社マッキントッシュ(登録商標)コンピュータに一般的 に使用されているモトローラ68030 および68040 マイクロプロセッサ、IBM PS/2 コンピュータに一般的に使用されているインテル80386 および80486 マイクロプ ロセッサを利用できる。ワークステーションに代表的に使用されているRISC(縮 小命令セット・コンピュータ)マイクロプロセッサのような他のマイクロプロセ ッサを使用することもできる。ROM24 はCPU21 用の基本マイクロコードを格納 しており、この中には基本入出力システム(basic input/output system-BIOS)が 含まれる。コンピュータ・システム10用のオペレーティング・システム(OS)もRO M24 に格納しておくことができるが、代りに初期プログラム・ロード(IPL)の一 部としてOSがRAM22 に格納されていることもある。RAM22 はアプリケーション・ プログラムの一部とプログラムの実行時に生成される一時データをストアしてお くためにも使用される。バス24としては、アップル社NuBus(登録商標)、IBM 社M icroChannel(登録商標)、またはISA(業界標準アダプタ)やEISA(拡張業界標準 アダプタ)バスなどの業界標準の1つが使用可能である。 バス24には、ユーザ・インタフェース・アダプタおよび入出力(I/O)アダプタ2 6を含む種々の入出力アダプタも接続されている。キーボード16はユーザ・イン タフェース・アダプタ25に接続され、入出力アダプタ26はフロッピ・ディスク・ ドライブ27とハードディスク・ドライブ28とに結合されている。フロッピ・ディ スク・ドライブ27はデータおよびプログラムを脱着可能媒体との間で読み書きで きるのに対し、ハードディスク・ドライブ28はページインおよびページアウトさ れるRAM22 のデータとプログラムとをストアしているのが代表的である。ディス プレイ・デバイス14はディスプレイ・アダプタ29を介してバス24に接続されてい る。通信アダプタ30はネットワークとのインタフェースとなるものである。サポ ートされる他の回路(図示せず)は集積回路(IC)チップとしてバス24および/ま たはCPU21 に接続されている。この中には、例えば、バス24上のトラフィックを 制御するバス・マスタ・チップが含まれる。バス24はある種のコンピュータでは 2バスになっている場合がある。すなわち、データ・バスと、グラフィック・ユ ーザ・インタフェースで望ましいとされるディスプレイ・オペレーションの高速 化を可能にするディスプレイ・バスである。 シェーディング・アーキテクチャ・モデル(第7図を参照して以下で詳しく説 明する)はオブジェクト指向プログラミング原理を基礎にしている。オブジェク ト指向プログラミング(object oriented programming -OOP)は、ユーザに親しみ やすい、インテリジェント・コンピュータ・ソフトウェアを構築するのに好適な 環境である。OOP のキーとなるエレメントはデータのカプセル化(encapsulation )、継承(inheritance)および多態(polymorphism)である。これ らのエレメントを使用すると、アイコン、マウス・カーソルおよびメニューを持 つウィンドウ操作環境で代表される特徴を持つグラフィカル・ユーザ・インタフ ェース(graphical user interface - GUI)を作ることができる。この3つのキー ・エレメントはOOP 言語に共通しているが、大部分の言語では、これらのキー・ エレメントのインプリメントの仕方が異なっている。 OOP 言語の例としては、Smalltalk、Object Pascal およびC++ がある。 Smalltalk は実際には言語以上のものである。それはプログラミング環境である といった方が正確かもしれない。Smalltalk は、Xerox 社 Palo Alto Research Center(PARC)のLearning Research Group で1970年代初期に開発されたものであ る。Smalltalk では、メッセージがオブジェクトへ送られ、オブジェクト自体が 評価される。メッセージは従来のプログラミング言語における関数コール(funct ion call)のそれと似たタスクを実行する。プログラマはデータのタイプ(型) を気にする必要がなく、むしろ、プログラマはメッセージを正しい順序で作成し 、正しいメッセージを使うことだけを気にするだけでよい。Object Pascalはア ップル社マッキントッシュ(登録商標)コンピュータ用に使用されている言語で ある。Object Pascal はPascalの設計者であるNiklaus Wirth の協力を得てアッ プル社が開発したものである。C++ はCの拡張として、1983年にAT&T社 Bell La boratoriesのBjarne Stroustrup によって開発されたものである。C++ のキーと なる概念はクラスであり、これはユーザが定義するタイプである。クラスはオブ ジェクト指向プログラミングの特徴を持っている。C++ モジュールはCモジュー ルと互換性があり、自由にリンクして既存のCライブラリをC++ プログラムで使 用することができる。最も広く使用されるベース・オブジェクトおよびオブジェ クト指向のプログラミング言語は、ノールウェイのO-J.Dahl,B.Myhrhaugおよ びK.Nygardによって1960年代に開発されたSimulaにまで由来がさかのぼる。OOP を主題としたさらなる情報としては、Grady Booch 著「オブジェクト指向設計と そのアプリケーション」(Object Oriented Design with Applications)(The Be njimin/Cummings Publishing Co.,Inc.,Redwood City,Calif.,1991)がある。 オブジェクト指向プログラミングの一般概念は、以上、簡潔に説明した通りで あり、その一般概念はよく知られていると思われるので、これ以上詳しく説明す ることは省略する。極めて一般的には、データはオブジェクト、すなわち、シェ ーディング情報を表すか、あるいはその情報を収めているオブジェクトで抽象化 され、カプセル化され、そのオブジェクトは、アーキテクチャ全体を変更せずに データ・フォーマットを変えることにより表される。オブジェクトとのインタフ ェースはオブジェクト自体は抽象的で、独立したまま、一定となる。 オブジェクト指向プログラミング設計におけるクラスまたはオブジェクトは構 造(例えば、データ)と、その構造に影響を及ぼす作用(behavior)(例えば、「 メソッド関数(method functions)」と呼ばれているもの)をカプセル化する。オ ブジェクト指向設計では、インタフェースは、クラスまたはオブジェクトの構造 と作用を隠したままにして、クラスまたはオブジェクトを外側から見たものであ る。さらに、ある基底クラス(base class)から派生するオブジェクトはすべてそ の基底クラスのプロパティ(property)を継承するので、オブジェクトはすべて基 底クラスと同じプロパティを持つことになり基底クラスのオペレーションに対し て多態的になっている。従って、基底クラスから派生するオブジェクトを使用す ると、基底クラスのインスタンス(instance)を表すことができ、また基底クラス がコールされるときいつでも、置換することができる。 以上のように、シェーディングの可能性はシェーディング・アーキテクチャに よって無制限に使用でき、シェーディング・アーキテクチャ・モデルを使用する と、データ内容がどのように表現されているかをプログラマまたはユーザが知ら なくても、シェーディングを表現することができる。シェーダ(shader)は、表示 カラーを、種々のパラメータ例えば、イルミネーション、テクスチャ、空間配向 (spatial orientation)、カラー情報などの種々のパラメータに基づいて計算す るものであるが、そのシェーダは種々のパラメータ(例えば、時間、イメージ品 質など)に応じて、自由に選択することができ、その場合、レンダラの修正が必 要になっても、その修正を最小限にとどめることができる。従って、シェーディ ングの可能性は、新しいモデルやスキーム(Schemes)が開発されたとき、従来シ ステム、すなわち、固定した(シェーディング効果が非常に限られている)シェ ーディング計算スキームを採用している従来システムに比べて、拡張が容易 化となる。 第7図は本発明の基本構成を示しているが、Booch 図と似たものにすることが 可能である。オブジェクトのクラスとサブクラス(オブジェクト指向プログラミ ングで採用している用語の意味において)は、矢印に従ってその階層を示してい る。各ラインは階層の次の上位レベルを指しているので、「〜である(“is a” )」関係を表している。「〜を持つ(“has a”)」または包含(containment)の 関係は選択されたクラスとサブクラス間の関係を示している。「使用する(“us es”)」関係は、その使われ方を示している。Booch 図の詳しい説明は、前掲の Grady Booch 著「オブジェクト指向設計とそのアプリケーション」に記載されて いる。 好ましくは、本発明は、オブジェクト指向プログラミング(object oriented p rogamming)と呼ばれるものから開発されたオブジェクト・テクノロジで具現化さ れている。オブジェクト指向プログラミングに対する関心は、データ処理テクノ ロジが供する多種類のタスクの並列または同時処理に対するサポートが増大化す るのに伴って高まっている。オブジェクト・テクノロジでは、オブジェクトがプ ログラム式汎用コンピュータ(programmed general purpose computer)とエミュ レートされていることが好ましいが、オブジェクトを特殊目的データ・プロセッ サと考えるかあるいは実際に実現することもできる。そのオブジェクトが、必要 とする種々の関数を実行するために用意される。各オブジェクトによって実行で きるメソッド(method)またはプロシージャ(procedure)が比較的少数のときは、 必要になるデータはそのオブジェクト自体と密接に関連づけられている。そのメ ソッドはカプセル化(encapsulate)されている。すなわち、あるオブジェクトに よって実行される特定のメソッドを要求できる他のオブジェクトから見えないよ うになっている。 さらに、オブジェクトは類似の特性によりクラスまたはサブクラスに分類する ことができ、クラスの特性(データまたはメソッドのどちらか)はサブクラスに よって継承できるので、別に指定する必要がない。そのほかに、継承された特性 は、サブクラス内のオブジェクトによって無効化(override)される。結果として 、多態(polymorphism)として知られているプロパティ(実行されるメソッドと 一緒に呼び出されるので実行時バインディング(run time binding)とも呼ばれて いる)が得られる。 従って、本発明の好適実施例の文脈内では、オブジェクトおよびそのクラスは 基本的にはシステム全体の機能要素(functional elements)である。これらの要 素間の機能関係は、責任(例えば、他のオブジェクトの作成を含むが、これに限 定されないメソッドまたはオペレーション)および階層依存関係(hierarchical dependencies)すなわち、オブジェクトとオブジェクトのクラスとを関係づける 階層依存関係を明確化したものとして定義される。オブジェクトの階層と継承を 定義することは、一般に「サブクラス化(subclassing)」と呼ばれている。従っ て、本発明はこの分野に精通した当業者ならば容易に理解されるように、クラス とサブクラスの編成の責任と依存関係からとらえて説明されている。ほとんどど のデータ処理システムも、少なくとも1つのディスプレイ・デバイスまたはディ スプレイ・デバイス・ドライバを含んでいる。システムがブートされるとき、内 部コードはシステムに含まれる(例えば、システムに接続される)ディスプレイ ・デバイスやドライバなどの種々のデバイスをアクセスし、各デバイスと中央プ ロセッサが内部システム・バス上で相互に通信できるようにする。広い意味では 、本発明によるビデオ・フレームワークはこの時点でアクティベートされ、1つ または2つ以上の構成アクセス・マネージャ(configuration access manager)が 連続的にまたは周期的にバスを通過または「ウォーキング(walking)−バス上を 調べていくこと」すると、それを受けてディスプレイ・デバイスとドライバをイ ンスタンス化または削除し、必要時にはディスプレイ・プレゼンテーションの制 御を変更して、システムの現在状態を反映するようにする。 本発明の本質を知る上で重要なことは「フレームワーク」の概念と、フレーム ワークと「オブジェクト」および「オブジェクト指向プログラミング」との関係 を理解することである。フレームワークとそこに具現化されている基本概念を説 明した初期の論文として、Kurl A.Schmucker著「MACAPP:アプリケーション・フ レームワーク」(MACAPP: An Application Framework)(Byte magazine,August 1 986)がある。なお、この論文は、参照により全文が本明細書の一部を構成するも のである。オブジェクトの重要なプロパティは、オブジェクトが責任を担う するデータとメソッドをカプセル化することができる。つまり、汎用コマンド(g eneric command)をあるオブジェクトに出したとき、そのオブジェクトがコマン ドをどのように実行するかの内部詳細は、他のどのオブジェクトにも知らせる必 要がない。 同じ意味で、コマンド、データ・ファイル名などはグローバルな互換性を持つ 必要がないので、オブジェクト相互間を自由に関連づけることができる。フレー ムワークは、本質的には、オブジェクトのクラスの関連づけからなる汎用的(gen eric)アプリケーションであり、そのオブジェクトを必要に応じて他のオブジェ クトと関連づけると、より具体的なアプリケーションが得られる。フレームワー クは、オブジェクトのクラスを関連づけると共に、オブジェクトのクラス間の機 能関係がそこに定義されているので、必要とするどの程度の汎用的または具体的 機能でも得ることができ、フレームワークと関連づけることができる追加オブジ ェクトを正しく機能させることができる。 フレームワークは、したがってオブジェクト間の責任をネットワーク化したも のを提供し、オブジェクトのクラス間での継承(例えば、オブジェクトのクラス の上位階層レベルにあるスーパークラス(superclasses)のデータとメソッド)に 備え、イベント(事象)が起こったときのライブラリのコールに対して備えるシ ステムと考えることができる。フレームワークとして構築されたシステムは、オ ブジェクト、すなわち、より特定的な関数を実行し、フレームワークにより用意 された関数を無効化することもできるオブジェクトを追加することにより、カス トマイズすることも可能である。フレームワークの種々のクラスおよびサブクラ スにおけるマシン特有およびデバイス特有のオブジェクトを使用すると、フレー ムワーク自体をマシン独立およびデバイス独立(machine-device-indendent)にし 、応用性を汎用化することができる。さらに、特定のフレームワークは、相互関 係、それは責任分担と継承からとらえてそのフレームワークがオブジェクトとオ ブジェクトのクラス間に設定するが、その相互関係およびそれが実現する機能と によって特徴づけられる。フレームワーク自体は、カストマイゼーションと機能 のオーバライド(無効化)がフレームワーク内に具体的オブジェクトとして用意 されるような、具体的アプリケーションを開発するときのテンプレート (template)として利用することも可能である。 第3図に示すように、好適オペレーティング・システムの属性(attribute)オ ブジェクト(例えば、"TGrafBundle3D"オブジェクトと呼ばれているもの。なお 、本明細書では詳細には説明を省略しない)の3D部分はレンダリング期間に3D表 面のカラーを判断して、ある種の環境変数(environmental variable)(例えば、 光源、カメラなど)に関してシェーディング計算を導くシェーディング関連のオ ブジェクトとオプションをレンダラに提供する。3Dレンダラはシェーダ、すなわ ちカラーまたはシェーディングを計算し、計算で求めたカラーをレンダラに返し てディスプレイ・デバイスに出力するシェーダにシェーディング情報を提供する 。本発明の全体を理解するために、まず、いくつかのシェーディング・オブジェ クトについて簡単に説明することにする。各エレメントの詳しい説明はそのあと で行うことにする。 オペレーティング・システムにより、表面の向きに応じて表面に異なったシェ ーディング(陰影付け)を行うことができる。表面はそれが右手の法則に従って 定義されていれば、「外側面」である(第4図)。この場合は、3Dパイプライン は「外側」の表面カラーと「外側」のシェーダを使用して、シェーディング計算 を行ってその表面のカラーを判断する。 シェーディング解像度(shading resolution)オプションとは、レンダリング期 間にレンダラから内側または外側シェーダをコールする頻度のことであり、それ はイメージ品質を制御する。シェーディング・インタポレーション(shading int erpolation)オプションは、ピクセルのカラーをシェーディング・サンプル間に どのように「埋め込む(fill in)」かを制御するものである。バックフェース・ カリング(backface culling)オプションは、レンダリング期間にバックフェーシ ング表面をスキップできるかどうかを判断するものである。TGrafBundle3D にお けるテクスチャ・マッピング・マトリックス(texture mapping matrix)は3D幾何 学形状と2Dテクスチャ間のマッピング関係を設定するものである。表面指向デー タベース(surface oriented data base)(例えばTSurface3D)では、マトリック スは(u,v)パラメータとマップ間のマッピング関係を表している。TGrafBundle3D の個々のオブジェクトとオプションの各々につ いては、以下で詳しく説明する。 内側カラーと外側カラー 上に示した2つの疑似コード・ルーチンは、内側面と外側面にベース・カラー(b ase color)を割り当てる。この表面カラーはシェーダによって修正されて、表示 すべきカラーが求められる。 内側または外側カラーは内側面または外側面全体に適用される。3Dパイプライ ンのレンダラは2カラーの1つを選択し(例えば、カメラの位置から見た表面の 向きから判断される)、下述するように、そのカラーを常にTShadingSampleのfB aseColorに残しておく。カラーについての以後の変更は、完全にシェーダによっ て判断される。この関数はTColorオブジェクトの形になっている。ユーザは、第 5図に示すように、都合のよいカラー空間(color space)を選んで、カラーを割 り当てることができる。TColorを使用すると、ユーザはカラーをスペクトル・サ ンプル(spectral sample)として定義でき、それを使用して高度のシェーディン グ・モデルを作ることができる。 バンドル(例えば、シェーディング)があるタイプのカラー(例えば、RGB)に 初期化され、シェーダが別のカラー・モデル(例えば、スペクトル分布)を使用 すると、カラー変換はシェーディング計算期間に少なくとも1回必要になる。こ の変換はTColorサブクラスによって自動的に行われるが、ピクセル単位(per-pix el)のシェーディングが必要なときは非常に高価になる。従って、カラー・モデ ルは、オブジェクト・カラー、シェーダ・カラー、および光源カラー用には同じ ものを選択すべきである。カラーを初期化する疑似コードを示すと、次のとおり である。 デフォルト設定値 内側カラーはTRGBColor(1.,0.,0.)に初期設定される。 //赤 外側カラーはTRGBColor(1.,1.,1.)に初期設定される。 //白 例 内側および外側シェーダ 内側および外側シェーダをもっと詳しく示すと、内側および外側シェーダを設 定する疑似コードは下に示すとおりである。 上に示した2つのルーチンは内側面と外側面にシェーダを割り当てる。面の向き に基づいて、レンダラは内側シェーダか外側シェーダのどちらかを選んでシェー ディング計算を行う。 デフォルト設定 デフォルトの内側シェーダはTReflectanceShaderのインスタンスである。 デフォルトの外側シェーダはTReflectanceShaderのインスタンスである。 (TReflectanceShaderは以下でより詳しく説明する。) シェーダ・オブジェクトは、それは表面の3D属性をシミュレートするが、3Dパ イプラインのレンダラのためにカラーまたはシェーディング関係の変数を計算す る。レンダラ(例えば、Zバッファ)は、最初に、第6図に示すように、表面上 のある点がシーン(場面)内の他のすべてのオブジェクトに対して見えるかどう かを判断する。点が見えるものならば、次に、レンダラはTShadingSampleオブジ ェクトを初期化し、ある種の光源オブジェクトおよびカメラ・オブジェクトすな わち別のオブジェクト(例えば、TSceneBundle)に置かれている、ある種の光源 オブジェクトおよびカメラ・オブジェクトと一緒に、それをシェーダ・オブジェ クトに渡してシェーディング計算を行う。なお、TSceneBundleオブジェクトの詳 しい説明は本明細書では省略している。TShadingSampleは、シェーディングされ る個所の表面の位置と向きといったローカル表面特性を記述している。メンバ関 数ComputeShade()は、すべてのシェーディング計算を実行し、その結果のカラー をCRT などから表示するためにTShadingSampleにストアしておく。このプロセス はすべてのプリミティブ(primitives)がレンダリングされるまで繰り返される。 複数のシェーダ・オブジェクトをパイプライン方式に容易に配列することが可 能である。パイプラインの各「ステージ」ごとに、シェーダの関数ComputeShade ()はTShadingSampleを修正し、TShadingSampleをパイプラインの次のステージヘ 渡していく。シェーダがパイプライン化されたシェーダを含むことができること はもちろんである。レンダラは関数myCompoundShader::ComputeShade()を実行し て最終カラーを返す。 3Dバンドル設計のキーとなる要素は、シェーダがレンダラから切り離されてい ることである。シェーダは、レンダラが情報をどのように生成するかを知ってい る必要はない。レンダラとシェーダとの関係、TShadingSampleの内容、およびTS hadingSampleの使用例の詳細は以下で説明する。レンダラとシェーダはお互いに からみ合っている。シェーダはシェーディング計算のための必要な情報(例えば 、シェーディング法線(shading normal)を提供することをレンダラに任せる。レ ンダラは最終表示のためのカラーを生成することをシェーダに任せる。 必要な情報を再計算することをレンダラに要求する代わりに、シェーダはシェ ーディング計算のためになにが必要であるかをレンダラに「通知」する。隣接ピ クセル間の情報コヒーレンスを利用すると、レンダラは標準スキャン変換手法を 用いてシェーディング・サンプル間の線形補間(linear interpolations)に よって情報を生成することができる。実際のインプリメンテーションでは、シェ ーダ・オブジェクトはどの変数がシェーダ内で参照されたかの情報を保持してい るので、レンダラによる不必要な計算を避けることができる。 シェーダ・オブジェクトは、次のものを含んでいるTShadingSampleに基づいて カラー関係の情報を計算する。 シェーディング法線(Shading Normal)−シェーディング計算で使用されるベク トル。 幾何学的法線(Geometric Normal)−表面に直交するベクトル(例えば、U方向 とV方向のタンジェント・ベクトルのクロス積)。 世界位置(World Position)−世界座標系に定義された3D点。 テクスチャ座標(Texture Coordinate)−表面テクスチャ座標。 フィルタ・バイアス・ベクトル(Filter Bias Vectors)−アンチエイリアシン グ(anti-aliased)されたテクスチャを生成するために使用されるフィルタ(例え ば、フィルタ境界を作るには2つのベクトルが必要である)。 U,V−表面パラメータ(0から1 まで)。 TangentU,TangentV-UとVに対する特定の表面ロケーションの微分(dPdUお よびdPdVで表されることがある)。 dU,dV−表面エリアにまたがるパラメータUとVの変化。 ベース・カラー(Base Color)−光源によって変更される表面カラー。 結果のカラー(Resultant Color)−計算で求めたカラー。 TShadingSampleの疑似コードの例を示すと、次のとおりである。 一般的に、シェーダは、それはTShadingSampleを修正するが、元の入力値をセ ーブし、リストアする責任がある。パイプライン化シェーダと兄弟(sibling)シ ェーダとは明確に区別されている。変数をセーブしリストアすることにより、兄 弟シェーバは未修正のTShadingSampleを常に受け取ることができる。 さらに、シェーダGetShadingUsageVariables()におけるバーチャル(仮想)関 数は変数照会のために使用される。例えば、シェーダ・パイプラインがどの変数 を必要としているかをレンダラが知りたければ、シェーダのGetShadingUsageVar iables()をコールするだけでよい。このルーチンはシェーダ・パイプライン内の シェーダのすべてのシェーディング変数を探索して、正しい値を返す。レンダラ は表面について一度だけこのルーチンをコールするだけでよい。 TShadingSampleを使用するときのもう1つのガイドラインとしては、端子ノー ド(terminal node)だけが計算で求めたカラーをfResultantColor へ返却する点 がある。最初のシェーダは、fResultantColor を修正する事後処理(post-proces sing)を行うことが許される。これは、中間のシェーダがパイプラインの途中でf BaseColorとfResultantColor の間のカラーを選択したとき、混乱が生じないよ うにするためである。 さらに、例外に強い(exception-safe)シェーダをシェーダ・パイプライン内に 設計するときは、ComputeShade()のインプリメンテーションの中に置かれるロー カル・オブジェクトを作ると、修正される変数だけをスワップすることができる 。例外ハンドラはソフトウェア例外が発生したとき、デストラクタ(destructor) をコールすることを保証する。従って、TShadingSampleの中のデータは有効のま まになっている。例えば、TSwapVariablesと名づけたローカル・オブジェクトの 疑似コードは次のように書くことができる。 シェーダ設計は、非常に単純な平面シェーディング(例えば、プレビューを迅 速化するため)から高品質イメージ・レンダリング(例えば、印刷目的)に至る までの広範囲にわたるシェーディング要件を満足するようにしておくことが好ま しい。シェーダ設計とそのインプリメンテーションはGouraud とPhong シェーデ ィング、種々のフィルタリング手法によるテクスチャ・イメージ・マッピング、 バンプ・マッピング、およびリフレクション・マッピングをカバーしている。 本発明によるシェーダ設計とそのインプリメンテーションは、グローバル・ イルミネーションのためのレイトレーシング(ray tracing)とラジオシティ(radi osity)手法をカバーしていない。オブジェクト間には相互依存関係があるために 、グローバル・イルミネーションは、レイトレーシングの場合のレイインタセク シヨン(ray intersection)計算と、ラジオシティの場合のフォームファクタ(for m-factor)計算といったシェーディング関連のオペレーションの実行を、特殊目 的のレンダラに任せている。上記の手法はローカル・イルミネーションを目的と しているので、周囲のオブジェクトを考慮に入れないでシェーディングを判断す ることができる。グローバル・イルミネーションにおける多くの手法では、ロー カル・イルミネーションが再帰的(recursive)に統合化されるので、以下では、 ローカル・イルミネーションを中心に説明することにする。グローバル・イルミ ネーションは、下述するシステムに簡単に統合化できると思われる。 シェーダのインプリメンテーション 第7図は、シェーダ・オブジェクトとそのデフォルト・シェーダ階層を示して いる。抽象基底クラスTShader は次のような主要メンバ・メソッドを持っている 。 TShader基底クラスとシェーダ階層を詳しく説明すると、レンダラは、シェー ダがどのタイプの変数を必要としているかをシェーダに質問する。TShadingSamp leがレンダラ(例えば、Zバッファ)によって生成されるので、 シェーダはシェーディングを計算して最終カラーを判断することができる。 TShader のサブクラスであるTReflectanceShaderは単純なライト・イルミネー ション・シェーディング・モデルに基づいて表面のカラーを計算する。TReflect anceShaderは、TImageMapShader、TBumpMapShader、TProcedureMapShader、TSur faceShader、および TEnvironmentMapShader(これらは以下で個別に説明する) のデフォルト・シェーダである。第7図に示すように、TReflectanceShaderはSe tChildShader()を使用すると簡単にユーティリティ内にセットすることができる 。TImageMapShader、TBumpMapShader、TProcedureMapShader、TSurfaceShader、 およびTEenvironmentMapShaderは、表面カラーとシェーディングについて各自の ユーティリティに照会したあとで、それぞれの計算を実行する。 第8図は、レンダラによって初期化されたシェーディング変数を示している。 3Dパイプラインは、例えば第8図に示すように、シェーダのGetShadingUsageVar iales() ルーチンを数回コールすることにより、シェーダで必要とされるすべて の変数を検出する。パイプラインのレンダラはその要求に応えるために、ある種 の有効な情報(この例では、シェーディング法線とテクスチャ座標)をTShading Sampleにストアする。最終的には、レンダラはシェーダのComputeShade()を呼び 出して表示すべきカラーを判断する。レンダラがレンダリング期間に変数照会を 行うのは、ピクセルごとではなく、表面について一回行うだけでよい。これは時 間と効率性の点で重要である。さらに、レンダラは最小限の情報を与えるだけで よい。3DパイプラインはTShadingSample内の少数のアイテムをグループ化して、 レンダリング期間に各グループで必要な情報を生成することができる。 派生シェーダ(derived shaders)に関しては、シェーダがTShadingSample単独 の内容に基づいてカラーを生成できれば、基底TShader から直接に派生すること ができる。直接派生シェーダは単純であるので、レンダリング・スピードが重視 されるイメージ・プレビューを行うのに最も適している。これらの単純シェーダ は、オブジェクトの3次元を示すのに十分な情報だけを生成する。 ライト・イルミネーション・モデルをシェーダに組み入れるために、別の派生 クラスであるTReflectanceShaderが調べられる。TReflectanceShaderクラスは、 オブジェクトがライトを反射する方法をシミュレートする。これは、イルミネー ションと表面反射プロパティとの相互作用をモデル化して、表面の該当カラーを 計算する。単純な平面シェーディングからレイトレーシンなどのある種の高度シ ェーディング・モデルに至るまで、反射モデルはいつでも、3つの主要コンポー ネント、つまり、周囲反射(ambient reflection)、拡散反射(diffuse reflectio n)、および鏡面反射(specular reflection)に分割可能である。イルミネーショ ン・モデルが異なると、そのインプリメンテーションは大幅に変化する。 TReflectanceShaderは3つの主要関数、つまり、Ambient() 、Diffuse() 、お よびSpecular()を、上記に示した基本反射モデルに基づいて実装している。 TReflectanceShaderのデフォルトインプリメンテーション(defaultimplementa tion)では、表面のカラーがAmbient()、Diffuse()、およびSpecular()から計算 された輝度(intensity)の加重総和(weighted sum)であると想定している。パイ プラインにおけるシェーダ、TShadingSample、カメラ、および光源との間の関係 を理解するために、以下では、これらの3関数について検討する。まず、第9図 に示すように、いくつかの記号を定義することから始めるが、これらの記号は、 このあとに記載されている多くのシェーディング式の中で使用されているもので ある。さらに、オペレーティング・システムに用意されているライト・クラスは 第10図に示されている。関係記号の定義は次のとおりである。 Ka = 周囲反射係数 Kd = 拡散反射係数 Ks = 鏡面反射係数 Sexp = 鏡面集中指数 OC = オブジェクト・カラー LC = ライト・カラー Lexp = ライト集中指数(主にスポットライトのライト・オブジェクトの場 合) Latt = ライトから点までの距離に基づくライト減衰係数 N = 表面法線 L = ライト・ベクトル LO = ライトからオブジェクトまでのベクトル R = ライト反射係数 V = カメラから表面の点までのカメラ・ベクトル 派生ライト・オブジェクトはすべて、周囲、拡散、および鏡面の輝度の貢献度 をインプリメント(実装)していなければならない。メンバ関数ComputeIntensi ty()は関心のある個所(代表例として、シェーディングする表面の点)のライト のカラーを返却する。TLightの関数ComputeIntensity()を使用すると、ユーザは 特殊な光源を作ることもできる。「ウィンドウ・ライト(window light)」を例に して説明すると、レンダリング期間に、レンダリングする点の位置から、ウィン ドウ・ライトは、ライトの輝度がその点でどうなっているか(黒であるか、ウィ ンドウ境界から書き入れられた(interpolated)カラーであるか)を判断すること ができる。 係数設定に関しては、オブジェクトは周囲、拡散、および鏡面反射に対して異 なった反応をする。例えば、ぼやけた(dull)面は強い拡散反射を示しているが、 鏡面反射はほとんど見られない。これとは対照的に、光沢のある面は強い鏡面反 射を示している。TReflectanceShaderクラスを使用すると、ユーザは係数群(周 囲反射係数Ks、拡散反射係数Kd、鏡面反射係数Ks)に値を割り当てて、マテリア ルのプロパティをシミュレートすることができる。これらの係数は表面のマテリ アルを特徴づける。 好適オペレーティング・システムは好ましくは、Phong のイルミネーション・ モデルを使用して鏡面反射を計算し、VベクトルとRベクトル間の角度がゼロの とき最大ハイライトが発生し、角度の増加と共に急峻に降下することを想定して いる。この降下はcosn(angle)によって近似値を求めている。ここで、nはマテ リアルの鏡面反射指数である。値が小さいと降下が広くなり、値が大きいと急峻 な鏡面ハイライトがシミュレートされる。デフォルトインプリメンテーションで は、オーバフローした輝度が合法的な範囲に戻るようにスケールされる。 TReflectanceShaderは次のような主要メンバ・メソッドを持っている。 デフォルト設定 周囲係数 = .3 拡散係数 = .7 鏡面係数 = 0.; // 鏡面反射なし 鏡面指数 = 20. 例 TReflectanceShaderのメンバ関数ComputeShade()について述べると、このメン バ関数は次の式を使用してシェーディング計算を行う(シェーダ・ツリーバーシ ョンは第11図に示されている)。 上記式中の変数ObjectColor はTShadingSampleのfBaseColorを使用するが、これ は、第12図に示すように内側カラーか外側カラーのどちらかがレンダラによって 設定されたものである。良質なイメージ品質を実現するために、いくつかの反射 係数を慎重に調整して、表面カラーを使用すると、TReflectanceShaderの中で使 用されている単純な式は、妥当な品質を持つイメージを生成する。しかし、表面 細部が欠如しているために、TReflectanceShaderを持つオブジェクトは、極端に 円滑(smooth)にあるいは極端に均一(uniform)に現れることがある。表面細部を 大きくする1つの方法は、3D幾何学的プリミティブによって細部をモデル化する ことである。例えば、表面パッチ(surface patches)を使用すると、床の木材模 様を描写することができる。 しかし、細部が微細になっていくと、幾何学的プリミティブを使用して表面細 部をシミュレートするモデル化は不可能になる。好適オペレーティング・システ ムには、イメージをディジタル化した現実イメージまたはプロシージャで定義し た「仮想」イメージから3Dプリミティブにマッピングすることによって、表面細 部を大きくする方法がいくつか用意されている。 利用可能なイメージおよびプロシージャ・テクスチャ・ライブラリを使用する ユーティリティ・クラスをシェーダ・フレームワークにより使用すると利点があ る。例えば、マップは表面のカラーを表すことも、法線ベクトルが乱れたとき使 用することも(「バンプ・マップ」)、あるいは3Dオブジェクトの周囲環境をシ ミュレートする単純な反射を表すことも可能である。本発明によるオペレーティ ング・システムには、マッピング関連のシェーダで使用できるマッピング・ユー ティリティ群を提供する。 好適オペレーティング・システムのテクスチャ・マッピング・ユーティリティ は、3D幾何学形状のマッピング・パラメータ(u,v)を生成する関数を提供する。 好適オペレーティング・システムのテクスチャ・マッピング機能は2つのアプロ ーチでテクスチャ・マッピングのエイリアシング(aliasing)を解決する。1つの アプローチでは、空間バリアント・フィルタ(space variant filter)を使用し、 それによりピクセルごとにフィルタのディメンションを再計算する。スクリーン 上の各ピクセルは異なるテクスチャ境界が対応づけられているので、空間バリア ント・フィルタはエイリアシングを解決する上で不可欠である。デフォルトでは 、四辺形テクスチャ領域は第14図および第15図に示すように四角形または長方形 で近似化されている。ユーザは楕円フィルタ(ellipse filter)の2つのベース・ ベクトルをレンダラに要求すれば、スーパ品質(super quality)のテクスチャ・ マッピングを行うことができる。 もう1つのアプローチでは、ミップマップ(mip-map)手法を用いてプリフィル タ(pre-filter)を行っている。この手法では、マップ内の値を判断するために3 つのインデックス(テクスチャ、位置、およびフィルタ径)が必要である。好適 オペレーティング・システムのデフォルト・レンダラは、ミップマップ・アクセ スのために使用される空間バリアント・フィルタの情報を出力する。この情報を 受け取ると、ミップマップは該当のサブマップから値を抽出する。 好適オペレーティング・システムには、例えば、TImageMap、TBumpMap、TProc edureMap、TEnvironmentMapなどのように、種々のシェーダによって使用できる いくつかのマップ・ユーティリティ・クラスを提供する。各マップ・クラスは、 アンチエイリアシングのための、内部に構築されたミップマップを含んでいる。 TImageMap、すなわち、もう1つのマップ・ユーティリティであるTImageMap はカラー修正のために使用されるテクスチャ・マップである。TImageMap はマッ プ中の内容を表面カラー修正として解釈するシェーダで使用することができる。 マップから抽出された値は直接カラー置換としても、別のカラー・マップを指す インデックスとしても、乗数(multiplier)としても使用できる。解釈の方式は完 全にシェーダによって判断される。TImageMap テクスチャはレンダリング期間に 幾何学プリミティブのスキン(例えば、表面)だけに適用される(例えば、壁紙 が壁の表面に貼付されるのと同じように)。TImageMap クラスは次のような主要 メソッドを持っている。 以下では、法線が乱れたとき使用されるテクスチャ・マッピング関数であるTB umpMapについて説明する。第16図と第17図に示すように、バンプ・マッピングは 表面の幾何学形状を変更したり(これは不可能なこともある)、平面のカラーを モジュレートしたりするのではなく、凹凸面やくぼみ面をシミュレートするので 便利な手法である。TBumpMapクラスの疑似コード例を示すと、次のとおりである 。 本発明によるオペレーティング・システムに含まれているもう1つのマップ・ユ ーティリティはTEnvironmentMap であり、これは第18図と第19図に示すように反 射のために使用されるテクスチャ・マップである。TEnvironmentMap の疑似コー ドは下に示す通りである。 表面のカラーはプロシージャで定義することもでき、この方法によると、カラ ーは、オブジェクトの位置、法線、その他の幾何学情報に基づいて即座に生成さ れる。例えば、チェッカボード模様の表面はレンダリング期間にテクスチャ座標 を計算することで表示できる。この場合、テクスチャとして使用するために、巨 大な2Dチェッカボード・イメージを生成する必要はない。 第一の概念はプロシージャ・テクスチャの概念である。イメージ・テクスチャ とプロシージャ・テクスチャとの主な違いは、後者が3次元領域にわたって定義 されるので、オブジェクトの形状を考慮しないでテクスチャを適用できることで ある。さらに、プロシージャ・テクスチャは、一般的に、必要メモリ量が非常に 少ない。この独特な特徴により、複雑なイメージは異なるマテリアルからなる多 数の3Dオブジェクトを持つことができる。さらに、明細度を制御して生成するこ とができ、エイリアシング問題を回避するためにバンドが制限できるので、少な いパラメータでマッピングを定義できるのが通常である。 プロシージャ・シェーダの中心となる要素はノイズ発生であり、ノイズの使い 方である。好適オペレーティング・システムには、基底クラスTGrafNoiseとデフ ォルトの派生クラスTLatticeNoise を提供し、すべてのデフォルト・プロシージ ャ・テクスチャは好ましくはTLatticeNoise(これは、必要ならば、ユーザのノイ ズ・オブジェクトで置き換えることが可能である)を使用している。基底TNoise オブジェクトの疑似コードは下に示すとおりである。 好適オペレーティング・システムは、大理石、みかげ石、木材などのマテリア ルをシミュレートする、いくつかの組込みプロシージャ・マップを備えているこ とが好ましい。これらのマップを含んでいるシェーダは、3Dオブジェクトがソリ ッド・マテリアルからなるかのようにイメージを作成する。プロシージャ・テク スチャ・マップは、TBumpMap基底クラスで必要とされるテクスチャ・イメージな しで、法線の乱れをシミュレートすることもできる。 基底クラスTProcedureMap は、GetRequireShadingVariables()などの変数照会 ルーチンを全て提供するので、このプロシージャ・マップを含んでいるシェーダ は、レンダラに通知して必要な情報を得ることができる。好適オペレーティング ・システムのサンプル・プロシージャは第20図に示されている。 TNoiseとプロシージャ・マップとの関係を説明するために、完全なサンプル・ マップであるTMarbleProcedureMap を例にして検討することにする。第21図は、 プロシージャ・シェーダにカラーを割り当てるクラス図を示している。このサン プル・クラスを参考にすると、ユーザは種々のマテリアル属性の他のシェーダを 簡単に書くことができる。疑似コードの例を示すと、次のとおりである。 プロシージャ・マップは、デフォルトのTWrinkleProcedureMapから送られてき た法線を変更することも可能である。 以前に、いくつかのユーティリティ・クラスについて説明したが、これらは表 面カラーを生成するか、シェーディング法線を変更するものである。 TImageMapShader は TImageMapを指すポインタ(ユーザがセットしたNIL に初期 化されている)を持っている。 TImageMapShader はデフォルトTReflectanceShaderも持っている。カラーがTI mageMap から抽出されると、カラーはデフォルトTReflectanceShaderを通して光 源によって変更される。デフォルトTReflectanceShaderはSetChildShader()によ ると、どのシェーダにも簡単に置き換えることができる。疑似コードの例は下に 示すとおりである。 TImageMapShader の疑似コードの例を示すと、以下のとおりである。 TBumpMapShaderはTBumpMapを指すポインタ(ユーザがセットしたNIL に初期化 されている)を持ち、デフォルトTReflectanceShaderも持っている。オリジナル 法線がTBumpMapによって変更されると、オブジェクトのカラーは新しい法線に基 づいて光源によって変更される。デフォルトTReflectanceShaderは、SetChildSh ader()によると、どのシェーダにも簡単に置き換えることができる。 疑似コードの例は下に示すとおりである。 TProcedureMapShader は、TShadingSampleの多数のフィールドを変更できるTP rocedureMap を指すポインタ(ユーザがセットしたNIL に初期化されている)を 持っている(例えば、TProcedureMapShader はサブクラスである)。TProcedure MapShader は光源と変更されたTShadingSampleとに基づいてカラーを計算するデ フォルトTReflectanceShaderも持っている。疑似コードの例を示す と、次のとおりである。 TImageMapShader、TBumpMapShader、およびTProcedureMapShader のほかに、好適 オペレーティング・システムには、TSurfaceShaderと名づけた便利なシェーダを も提供する。これは、好適オペレーティング・システムにより与えられるマップ ・ユーティリティ・クラスを指す多数のポインタ(ユーザがセットしたNIL に初 期化されている)を含んでいる。大部分のアプリケーションはこのシェーダを使 用するだけでよい。 マップ・アクセスの順序は、計算結果に影響するので、TSurfaceShaderは表面 カラーを変更するマップを先にアクセスし、次にシェーディング法線を変更する マップをアクセスする。TSurfaceShaderの疑似コードの例を示すと、次のとおり である。 第22図〜第26図は、好適実施例による種々のシェーダを示す例である。上述し たシェーダ設計はシェーディングを光源から直接に計算するものであるが、これ らのシェーディング・モデルは一般的にローカル・イルミネーション・モデルと 呼ばれている。シェーディング・パラメータ、ライト・セッティングおよびテク スチャ・マップを慎重に調整することにより、ローカル・イルミネーションから 多数のアプリケーションのためのイメージを得ることができる。隣接面はローカ ル・イルミネーションではシェーディング計算の一部になっていないので、表面 が被さったシャドウは無視される。しかし、上述したシステムは、照明と反射が ローカル・イルミネーションよりも複雑化している現実の環境に応用可能である 。具体的には、すべての表面は光源から直接にライトを受けるか、あるいは隣接 面からの反射から間接的に光を受ける(例えばグローバル・イルミネーション) 。グローバル・イルミネーション・モデルは上述したシステムに組み入れること ができるので、上述したシェーダの拡張機能と考えるべきである。 以上を要約すると、上述してきた方法とシステムはオブジェクト指向フレーム ワークで使用してレンダリング期間に3D表面のシェーディングを判断するための ものであり、レンダラには、シェーディング計算を導くシェーディング関連のオ ブジェクトとオプションを提供する。本発明の一形態では、光源と表面の向きだ けからシェーディングを計算するためのシェーダが用意されている。カラーは周 囲、拡散および鏡面反射を加重総和したものである。テクスチャ・マップ、バン プ・マップ、および反射マップをシェーディング・モデルに生成するための機能 をシェーダに持たせると、現実感を向上することができる。さらに、シェーディ ングをプロシージャ定義によって行うと、オブジェクトが木材や大理石などの現 実のマテリアルから作られているかのようにイメージを生成することができる。 本発明によれば、ユーザは、速度とイメージ品質とのトレードオフに応じて該 当するシェーダを自由に選択することができる。また、本発明によれば、シェー ダが設定されると、レンダラはそのシェーダを呼び出すので、複数のシェーダに 容易に拡張可能で、しかもレンダラを修正する必要があっても、その修正を最小 限にして拡張可能で効率的なシステムを構築することができる。従って、本発明 は、シェーディング効果が固定または制限されている従来のシステムに比べて利 点があることは明らかである。さらに、レンダリング・ルーチンとシェーダとを 結ぶインタフェースは、異なるシェーダが使用されるとき、レンダラの修正が必 要であっても、わずかで済むようになっている。従って、シェーダは非常に使い やすく、実現化が非常に容易になっている。さらに、シェーダの修正は、異なる レンダラが使用されるときいつでも最小限で済むようになっている。以上の結果 、本発明のオブジェクト指向フレームワークによれば、シェーディング・モデル の数に関係なく、容易に拡張可能になっている。 以上、好適実施例を参照して本発明を説明してきたが、請求の範囲に明確化さ れている本発明の精神と範囲内で種々態様に変更して、本発明を実施できること は勿論である。
【手続補正書】特許法第184条の8 【提出日】1995年8月28日 【補正内容】 請求の範囲 1.汎用コンピュータ(第1図および第2図)およびオブジェクト指向シェーデ ィング・フレームワークを有するメモリを持ったオブジェクト指向オペレーティ ング・システムを使用して高解像度表示をする際に、少なくとも1つの表面を有 する3次元アイテムのカラーイメージを表示する方法において、 (a) 前記少なくとも1つの表面を表わすモデル・データおよび光源情報からレ ンダリングされるイメージを有した前記3次元アイテムの情報を表示するステッ プ(第23図〜第26図)と、 (b) 予め定められたデータ・タイプを有するデータおよび前記光源情報からカ ラーを計算するためのメンバ関数を有するシェーダ・オブジェクトを作成するス テップ(第6図および第7図)と、 (c) 前記モデル・データを受け取るレンダラ・オブジェクトを作成するステッ プ(第6図および第8図)と、 (d) 前記レンダラ・オブジェクトから前記シェーダ・オブジェクトへのゲット ・リクエスト(get request)を出し(issuing)、前記カラー計算を実行する前記シ ェーダ・オブジェクトにより必要とされる予め定めたデータ・タイプを検索する ステップ(第17図および第18図)と、 (e) 前記レンダラ・オブジェクトにおいて検索され予め定められたデータ・タ イプを用いて、前記予め定めたデータ・タイプを有するモデル・データから計算 されるデータを含んでいるシェーディング・サンプル・オブジェクトを作成する ステップ(第6図,第8図および第12図)と、 (f) 前記シェーディング・サンプル・オブジェクトを前記シェーダ・オブジェ クトに転送し(forwarding)、前記シェーダ・オブジェクト・メンバ関数を呼び出 す(invoke)ステップであって、該シェーダ・オブジェクト・メンバ関数は予め定 められたデータ・タイプ(第12図)を有するデータを持っているステップと、 (g) 前記レンダラ・オブジェクトを用いて、結果のカラー(resultant color) を持つイメージをレンダリングするステップ(第20図および第21図)と を具えたことを特徴とする方法。 2.請求の範囲第2項に記載の方法において、 前記イメージはその内のいくつかが表示不可能である複数の面からなり、 (h) 表示される複数の表面のそれぞれに対して、ステップ(d)から(g)を実行す るステップと、 (i) 表示不可能である複数の表面のそれぞれに関して、ステップ(d)から(g)を バイパスするステップと を具えたことを特徴とする方法。 3.請求の範囲第1項に記載の方法において、ステップ(g)は前記結果のカラー を少なくとも1つの表面上で補間するステップを含むことを特徴とする方法。 4.請求の範囲第1項に記載の方法において、前記アイテムは1つの内面および 1つの外面を有し、 (j) 第2のシェーダ・オブジェクトを作成するステップと、 (k) 前記シェーダ・オブジェクトを前記内面に割り当てるステップと、 (l) 前記第2のシェーダ・オブジェクトを前記外面に割り当てるステップと、 (m) 内面または外面を前記モデル・データに応答して表示すべきか否かを決定 するステップと、 (n) 割り当てられたシェーダ・オブジェクトを選択し、前記シェーディング・ サンプル・オブジェクトを前記選択されたシェーダ・オブジェクトに転送するス テップと を具えたことを特徴とする方法。 5.請求の範囲第1項に記載の方法において、 (o) 少なくとももう1つのシェーダ・オブジェクトを作成するステップと、 (p) 前記シェーダ・オブジェクトおよび前記少なくとももう1つのシェーダ・ オブジェクトをアレンジして、シェーダ・オブジェクトの1つのパイプラインを 形成するステップであって、そのパイプラインは複合シェーダ・オブジェクトを 形成し、そこで複合シェーダ・オブジェクトの各シェーダ・オブジェクトはメン バ関数、すなわち、対応のシェーディング計算に従ってシェーディング情報を決 定するための前記シェーディング・サンプル・オブジェクトの中のモデルデータ に応答するメンバ関数を含むステップと を具えたことを特徴とする方法。 6.請求の範囲第5項に記載の方法において、ステップ(d)は前記複合シェーダ ・オブジェクトへのゲット・リクエストを出し、前記パイプライン中の前記シェ ーダ・オブジェクトのそれぞれが必要とする予め定められたデータ・タイプを検 索するステップを有することを特徴とする方法。 7.高解像度表示をする際に、少なくとも1つのオープン表面(open surface)を 有する3次元アイテムのカラー・イメージを表示する装置で、オブジェクト指向 オペレーティング・システムと、オブジェクト指向シェーディング・フレームワ ークを有するメモリと、前記イメージすなわち、前記アイテムの少なくとも1つ の表面を表わすモデル・データおよび光源情報からレンダリングされるイメージ を持つイメージを表示する手段を備えた汎用コンピュータを有する装置において 、 (a) 予め定めたデータ・タイプを有するデータおよび光源情報に応答して、結 果のカラー(resultant color,第6図および第7図)を計算する手段を含むシェ ーダ・オブジェクトと、 (b) 前記シェーダ・オブジェクトへのゲット・リクエストを出し、前記カラー 計算(第6図,第8図,第17図および第18図)を実行する前記シェーダ・オブジ ェクトが必要とする前記予め定めたデータ・タイプを検索する手段を含むレンダ ラ・オブジェクトと、 前記検索された予め定めたデータ・タイプおよび前記モデル・データに応答し て、前記予め定めたデータ・タイプを有するデータを含んでいるシェーディング ・サンプル・オブジェクトを作成し、該シェーディング・サンプル・オブジェク トを前記シェーダ・オブジェクトに転送し、前記予め定めたデータ・タイプを 有するデータを前記シェーダ・オブジェクト(第6図,第8図および第12図)に 供給する手段と、 前記モデル・データおよび前記結果のカラーに応答して、前記イメージ(第20 図および第21図)をレンダリングする手段と を具えたことを特徴とする装置。 8.請求の範囲第7項に記載の装置において、前記イメージはその内のいくつか が表示不可能である多くの表面からなり、前記レンダラ・オブジェクトは、さら に表面が表示不可能な時に、前記発生手段(issuing weans)、前記作成手段およ びレンダリング手段による処理を前記モデル・データに応答してバイパスする手 段を含むことを特徴とする装置。 9.請求の範囲第7項に記載の装置において、前記レンダリング手段は、さらに 前記結果のカラーを少なくとも1つの表面上で補間する補間手段を含むことを特 徴とする装置。 10.請求の範囲第7項に記載の装置において、前記アイテムは1つの内面および 1つの外面を有し、 第2のシェーダ・オブジェクトと、 前記モデル・データに応答して、前記シェーダ・オブジェクトを前記内面に割 り当てる手段と、 前記モデル・データに応答して前記第2のシェーダ・オブジェクトを前記外面 に割り当てる手段と をさらに有し、 前記レンダラ・オブジェクトは、前記モデル・データに応答して、内面または 外面が表示されるべきか否かを決定し、割り当てられたシェーダ・オブジェクト を選択し、前記シェーディング・サンプル・オブジェクトを前記選択されたシェ ーダ・オブジェクトに転送する手段をさらに含むことを特徴とする装置。 11.請求の範囲第7項に記載の装置において、前記シェーダ・オブジェクトと組 み合わせてパイプラインを形成するようアレンジされる少なくとももう一つのシ ェーダ・オブジェクトを含み、そのパイプラインは複合シェーダ・オブジェクト を形成し、該複合シェーダ・オブジェクトの各シェーダ・オブジェクトは、シェ ーディング・サンプル・オブジェクトの中のモデル・データに応答して、対応シ ェーディング計算に従ってシェーディング情報を決定する手段を含むことを特徴 とする装置。 12.請求の範囲第11項に記載の装置において、 前記複合シェーダ・オブジェクトは、前記ゲット・リクセストに応答して、前 記パイプラインの中のシェーダ・オブジェクトのそれぞれが必要とする前記予め 定めたデータのタイプを返却する(returning)ことを特徴とする装置。 13.請求の範囲第7項に記載の装置において、前記シェーディング・サンプル・ オブジェクト作成手段は前記モデル・データから前記予め定めたデータのタイプ を有するデータを計算する手段を含むことを特徴とする装置。 14.アイテムのイメージを、前記アイテムの3次元モデルを記述する(descibing )モデル情報および光源情報に基づいて、ディスプレイ上に表示するオブジェク ト指向ディスプレイシステムで、前記モデル情報およびカラー情報に応答して、 前記アイテムのイメージを前記ディスプレイ上にレンダリングする手段を有する オブジェクト指向ディスプレイシステムにおいて、 (a) 前記モデル情報に応答して、前記モデル情報の一部分を含んでいるシェー ディング・サンプル・オブジェクトを作成する手段(第6図,第8図および第12 図)を有し、 (b) 1つのシェーダ・オブジェクトから他のシェーダ・オブジェクトにシェー ディング・サンプル・オブジェクトをその中で移すパイプラインに接続される複 数のユーザ定義のシェーダ・オブジェクトであって、前記シェーダ・オブジェク トのそれぞれは前記シェーディング・サンプル・オブジェクトの中のモデル情報 および前記光源情報に応答してシェーディング計算を実行し、カラー情報を発生 する手段を含む複数のユーザ定義のシェーダ・オブジェクト(第6図および第7 図)を特徴とするオブジェクト指向ディスプレイシステム。 15.請求の範囲第14項に記載のオブジェクト指向ディスプレイ・システムにおい て、前記複数のシェーダ・オブジェクトはモジュール化されており、パイプライ ン構成中において相互間で自由に交換可能であることを特徴とするオブジェクト 指向ディスプレイシステム。
───────────────────────────────────────────────────── フロントページの続き (81)指定国 EP(AT,BE,CH,DE, DK,ES,FR,GB,GR,IE,IT,LU,M C,NL,PT,SE),OA(BF,BJ,CF,CG ,CI,CM,GA,GN,ML,MR,NE,SN, TD,TG),AT,AU,BB,BG,BR,BY, CA,CH,CN,CZ,DE,DK,ES,FI,G B,HU,JP,KP,KR,KZ,LK,LU,LV ,MG,MN,MW,NL,NO,NZ,PL,PT, RO,RU,SD,SE,SK,UA,UZ,VN (72)発明者 マーシュ,ドナルド,エム. アメリカ合衆国 94043 カリフォルニア 州 マウンテン ビュー デル アヴェニ ュ 476 (72)発明者 ピーターソン,ジョン アメリカ合衆国 94025 カリフォルニア 州 メンロ パーク ビショップ レーン 12 (72)発明者 シールド,ロバート アメリカ合衆国 94303 カリフォルニア 州 パロ アルト コロニアル レーン 946 (72)発明者 ワタナベ,リョージ アメリカ合衆国 95014 カリフォルニア 州 クパチーノ パーム アヴェニュ 22284 【要約の続き】 ィ(例えば、シェーディング・データ)を検出し、表面 の少なくとも1つのプロパティとそのアイテムのユーザ 定義コンポーネントの少なくとも1つに基づいてシェー ディング計算を自動生成し、シェーディング計算に基づ いてアイテムのディスプレイを修正する処理を含む。

Claims (1)

  1. 【特許請求の範囲】 1.接続されたディスプレイとメモリを備えたプロセッサ内のオブジェクト指向 フレームワークを使用して情報を表示する方法であって、 (a) アイテムを表示するステップと、 (b) 当該表示されるアイテムを表しているデータを処理するための、複数のユ ーザ定義コンポーネントを確立し、該ユーザ定義コンポーネントは予め定めた属 性をその中に含むステップと、 (c) 前記表示されるアイテムの複数のプロパティのうち少なくとも1つを検出 するステップと、 (d) 前記少なくとも1つのプロパティと、前記アイテムのための複数のユーザ 定義コンポーネントのうち少なくとも1つとに基づいて、該アイテムの少なくと も一部のシェーディング計算を生成するステップと、 (e) 前記アイテムの表示をシェーディング計算に基づいて修正するステップと を有し、複数のユーザ定義コンポーネントはアイテムの複数のプロパティのう ち必要とするものの各々をそれぞれ修正するために、相互間で選択的に交換可能 であることを特徴とする方法。 2.請求の範囲第1項に記載の方法において、前記プロパティ検出ステップは、 前記アイテムの幾何学形状、少なくとも1つの光源からのイルミネーション量、 少なくとも1つの光源からの前記アイテムの方向、予め定めた座標系における前 記アイテムの位置、シェーディング法線、前記アイテムの表面のテクスチャ、前 記アイテムの表面の反射プロパティ、および表面のベース・カラーを判断するス テップを含むことを特徴とする方法。 3.請求の範囲第1項に記載の方法において、前記修正ステップは表示される前 記アイテムのカラーを調整するステップを含むことを特徴とする方法。 4.請求の範囲第1項に記載の方法において、前記シェーディング計算を自動生 成するステップは表示すべき前記アイテムの表面のカラーを判断するステップを 含むことを特徴とする方法。 5.請求の範囲第1項に記載の方法において、前記シェーディング計算を自動生 成するステップは前記アイテムのディメンションを表すためにシェーデイング計 算情報の量を判断するステップを含むことを特徴とする方法。 6.請求の範囲第2項に記載の方法において、前記アイテムの表面の反射プロパ ティを判断するステップは当該アイテムの表面の複数の反射コンポーネントのう ち少なくとも1つを判断することを含み、前記反射コンポーネントは周囲反射コ ンポーネント、拡散反射コンポーネントおよび鏡面反射コンポーネントを含んで いることを特徴とする方法。 7.請求の範囲第2項に記載の方法において、前記イルミネーション量を判断す るステップは少なくとも1つの光源のライトのクラスを判断するステップを含む ことを特徴とする方法。 8.請求の範囲第2項に記載の方法において、前記表面の反射コンポーネントを 判断するステップは前記アイテムの表面のマテリアルに基づいて、反射係数を対 話方式で選択するステップを含むことを特徴とする方法。 9.請求の範囲第1項に記載の方法において、前記シェーディング計算を生成す るステップは予め定めたマッピング・パラメータに基づいて、前記アイテムの表 面のテクスチャ・マップを生成するステップを含むことを特徴とする方法。 10.請求の範囲第9項に記載の方法において、前記テクスチャ・マップを生成す るステップはイメージ・マップ、バンプ・マップ、環境マップおよびプロシージ ャ・マップの少なくとも1つを生成するステップを含むことを特徴とする方 法。 11.請求の範囲第1項に記載の方法において、前記シェーディング計算を自動生 成するステップはオブジェクト指向オペレーティング・システムを採用している ことを特徴とする方法。 12.オブジェクト指向フレームワークを使用して情報を表示する装置であって、 (a) アイテムを表示する手段と、 (b) 当該表示されるアイテムを表しているデータを各々が処理するための複数 のユーザ定義コンポーネントであって、予め定めた属性をその中に含んでいるユ ーザ定義コンポーネントと、 (c) 当該表示されるアイテムの複数のプロパティのうち少なくとも1つを検出 する手段と、 (d) 前記アイテムの表面の複数のプロパティのうち少なくとも1つのプロパテ ィと、該アイテムのための前記複数のユーザ定義コンポーネントのうち少なくと も1つとに基づいて、当該アイテムの少なくとも一部のシェーディング計算を生 成する手段と を具え、前記検出する手段は前記シェーディング計算に基づいて前記アイテム の表示を修正する手段を含み、前記複数のユーザ定義コンポーネントは、前記ア イテムの表面のプロパティのうち必要とするものの各々を修正するために相互間 で選択的に交換可能であって、その各々が当該修正する手段と自由に互換可能で ある複数のシェーダを含んでいることを特徴とする装置。 13.請求の範囲第12項に記載の装置において、少なくとも1つの光源を含み、前 記プロパティを検出する手段は、前記アイテムの幾何学形状、前記少なくとも1 つの光源からのイルミネーション量、当該少なくとも1つの光源からのアイテム の方向、予め定めた座標系における前記アイテムの位置、シェーディング法線、 前記アイテムの表面のテクスチャ、前記アイテムの表面の反射プロパティ、およ び表面のベース・カラーのうち少なくとも1つを判断する手段を含むことを特徴 とする装置。 14.請求の範囲第12項に記載の装置において、前記修正する手段は前記表示され るアイテムのカラーを調整する手段を含むことを特徴とする装置。 15.請求の範囲第12項に記載の装置において、前記シェーディング計算を自動生 成する手段は前記表示すべきアイテムの表面のカラーを判断する手段を含むこと を特徴とする装置。 16.請求の範囲第12項に記載の装置において、前記シェーディング計算を生成す る手段はアイテムのディメンションを表すためにシェーデイング計算情報の量を 判断する手段を含むことを特徴とする装置。 17.請求の範囲第13項に記載の装置において、前記アイテムの表面の反射プロパ ティを判断する手段は前記アイテムの表面の複数の反射コンポーネントのうち少 なくとも1つを判断する手段を含み、該反射コンポーネントは周囲反射コンポー ネント、拡散反射コンポーネントおよび鏡面反射コンポーネントを含んでいるこ とを特徴とする装置。 18.請求の範囲第17項に記載の装置において、前記アイテムの表面の反射コンポ ーネントを判断する手段は前記アイテムの表面のマテリアルに基づいて、反射係 数を対話方式で判断して選択する手段を含むことを特徴とする装置。 19.請求の範囲第12項に記載の装置において、前記シェーディング計算を生成す る手段はマッピング・パラメータに基づいて前記アイテムの表面のテクスチャ・ マップを生成する手段を含むことを特徴とする装置。 20.請求の範囲第19項に記載の装置において、前記テクスチャ・マップを生成す る手段はイメージ・マップ、バンプ・マップ、環境マップおよびプロシージャ・ マップの少なくとも1つを生成する手段を含むことを特徴とする装置。 21.請求の範囲第12項に記載の装置において、前記シェーディング計算を自動生 成する手段はオブジェクト指向オペレーティング・システムを採用していること を特徴とする装置。 22.オブジェクト指向ディスプレイ・システムであって、 (a) アイテムのイメージを表示する手段と、 (b) 前記アイテムのイメージに関連するシェーディング情報を判断する手段と 、 (c) 複数のユーザ定義シェーダであって、その各々が前記シェーディング情報 を判断する手段と選択的におよび対話方式で結合されて、シェーディング計算を 実行するための予め定めた属性を含んで複数のユーザ定義シェーダと を具えたことを特徴とするオブジェクト指向ディスプレイ・システム。 23.請求の範囲第22項に記載のオブジェクト指向ディスプレイ・システムにおい て、前記複数のシェーダはモジュール化され、相互間で自由に交換可能であるこ とを特徴とするオブジェクト指向ディスプレイ・システム。 24.請求の範囲第22項に記載のディスプレイ・システムにおいて、前記複数のシ ェーダは表面の反射率を計算する少なくとも1つの手段と、イメージのマップを 生成する手段とを含み、前記マップ生成手段は前記アイテムの表面のイメージを マッピングする手段、前記アイテムの表面のイメージをテクスチャ・マッピング する手段、当該表面のイメージをバンプ・マッピングする手段、当該表面のイメ ージをプロシージャでマッピングする手段および当該表面のイメージの環境マッ プを作成する手段のうち少なくとも1つを含んでいることを特徴とするオブジェ クト指向ディスプレイ・システム。 25.請求の範囲第24項に記載のディスプレイ・システムにおいて、前記シェーデ ィング情報を判断する手段はシェーディング計算を受け取って、計算で求めた最 終シェーディングを前記表示する手段へ送るためのおよび、当該表示されるオブ ジェクトのイメージを修正するためのレンダラを含んでいることを特徴とするオ ブジェクト指向ディスプレイ・システム。 26.請求の範囲第22項に記載のディスプレイ・システムにおいて、予め定めた時 間内にコンポーネントが選択されなかったときデフォルトのユーザ定義コンポー ネントをセットする手段を含んでいることを特徴とするオブジェクト指向ディス プレイ・システム。
JP7507544A 1993-08-24 1994-04-11 オブジェクト指向シェーディング Pending JPH09501786A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11124193A 1993-08-24 1993-08-24
US08/111,241 1993-08-24
PCT/US1994/003982 WO1995006298A1 (en) 1993-08-24 1994-04-11 Object oriented shading

Publications (1)

Publication Number Publication Date
JPH09501786A true JPH09501786A (ja) 1997-02-18

Family

ID=22337351

Family Applications (1)

Application Number Title Priority Date Filing Date
JP7507544A Pending JPH09501786A (ja) 1993-08-24 1994-04-11 オブジェクト指向シェーディング

Country Status (7)

Country Link
EP (1) EP0698259B1 (ja)
JP (1) JPH09501786A (ja)
CN (1) CN1119047A (ja)
AU (1) AU6665194A (ja)
CA (1) CA2147846A1 (ja)
DE (1) DE69400878T2 (ja)
WO (1) WO1995006298A1 (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001266172A (ja) * 2000-02-28 2001-09-28 Mitsubishi Electric Research Laboratories Inc グラフィックオブジェクトの表面点の陰属性をフィルタリングする方法
JP2002074388A (ja) * 2000-08-23 2002-03-15 Nintendo Co Ltd グラフィクスシステムにおいて環境を写し込んだバンプマッピングのための方法および装置
JP2006120158A (ja) * 2004-10-19 2006-05-11 Microsoft Corp 3dにおけるハードウェアアクセラレートされたアンチエイリアジング(hardwareacceleratedanti−aliasing)のための方法
WO2009111119A1 (en) * 2008-03-04 2009-09-11 Microsoft Corporation Shader-based extensions for a declarative presentation framework

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5660176A (en) 1993-12-29 1997-08-26 First Opinion Corporation Computerized medical diagnostic and treatment advice system
US6206829B1 (en) 1996-07-12 2001-03-27 First Opinion Corporation Computerized medical diagnostic and treatment advice system including network access
USRE43433E1 (en) 1993-12-29 2012-05-29 Clinical Decision Support, Llc Computerized medical diagnostic and treatment advice system
GB2334869B (en) * 1994-12-22 1999-11-03 Apple Computer Three-dimensional graphics rendering system
US6496190B1 (en) * 1997-07-02 2002-12-17 Mental Images Gmbh & Co Kg. System and method for generating and using systems of cooperating and encapsulated shaders and shader DAGs for use in a computer graphics system
US9007393B2 (en) 1997-07-02 2015-04-14 Mental Images Gmbh Accurate transparency and local volume rendering
US7548238B2 (en) 1997-07-02 2009-06-16 Nvidia Corporation Computer graphics shader systems and methods
US6570578B1 (en) * 1998-04-03 2003-05-27 Avid Technology, Inc. System for automatic generation of selective partial renderings of complex scenes
US7002591B1 (en) 2000-08-23 2006-02-21 Nintendo Co., Ltd. Method and apparatus for interleaved processing of direct and indirect texture coordinates in a graphics system
US7034828B1 (en) 2000-08-23 2006-04-25 Nintendo Co., Ltd. Recirculating shade tree blender for a graphics system
GB2367471B (en) 2000-09-29 2002-08-14 Pixelfusion Ltd Graphics system
US9081879B2 (en) 2004-10-22 2015-07-14 Clinical Decision Support, Llc Matrix interface for medical diagnostic and treatment advice system and method
US8451270B2 (en) 2008-06-25 2013-05-28 Microsoft Corporation Real-time radiosity system in a video game environment
US8970588B1 (en) * 2009-07-31 2015-03-03 Pixar System and methods for implementing object oriented structures in a shading language
CN102568027B (zh) * 2011-12-28 2014-07-02 浙江工业大学 一种像素化的虚拟树木光照影响区域获取方法
US9804900B2 (en) 2014-05-30 2017-10-31 Apple Inc. Manipulating shaders with object-oriented programming
US10347039B2 (en) * 2017-04-17 2019-07-09 Intel Corporation Physically based shading via fixed-functionality shader libraries
CN114220042B (zh) * 2021-11-16 2025-06-20 成都智鑫易利科技有限公司 一种视频图像三维位置提取方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4866637A (en) * 1987-10-30 1989-09-12 International Business Machines Corporation Pipelined lighting model processing system for a graphics workstation's shading function

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001266172A (ja) * 2000-02-28 2001-09-28 Mitsubishi Electric Research Laboratories Inc グラフィックオブジェクトの表面点の陰属性をフィルタリングする方法
JP2002074388A (ja) * 2000-08-23 2002-03-15 Nintendo Co Ltd グラフィクスシステムにおいて環境を写し込んだバンプマッピングのための方法および装置
JP2006120158A (ja) * 2004-10-19 2006-05-11 Microsoft Corp 3dにおけるハードウェアアクセラレートされたアンチエイリアジング(hardwareacceleratedanti−aliasing)のための方法
WO2009111119A1 (en) * 2008-03-04 2009-09-11 Microsoft Corporation Shader-based extensions for a declarative presentation framework
JP2011517803A (ja) * 2008-03-04 2011-06-16 マイクロソフト コーポレーション 宣言型プレゼンテーション・フレームワークのためのシェーダーベースの拡張
US8345045B2 (en) 2008-03-04 2013-01-01 Microsoft Corporation Shader-based extensions for a declarative presentation framework

Also Published As

Publication number Publication date
AU6665194A (en) 1995-03-21
DE69400878T2 (de) 1997-05-22
EP0698259A1 (en) 1996-02-28
EP0698259B1 (en) 1996-11-06
CN1119047A (zh) 1996-03-20
WO1995006298A1 (en) 1995-03-02
DE69400878D1 (de) 1996-12-12
CA2147846A1 (en) 1995-03-02

Similar Documents

Publication Publication Date Title
EP0698259B1 (en) Object oriented shading
JP4191614B2 (ja) シェーダプログラムを発生するシステム、方法およびコンピュータプログラム製品
CA2267440C (en) A system for automatic generation of selective partial renderings of complex scenes
CA2147847C (en) Object-oriented rendering system
KR20070011062A (ko) 모델 3d 구성 애플리케이션 프로그램 인터페이스
JP4129039B2 (ja) 三次元グラフィックス・レンダリング・システム
JPH09506191A (ja) グラフィック・エディタ・フレームワーク・システム
Döllner et al. Object‐oriented 3D Modelling, Animation and Interaction
Phillips Geomview manual
Stemkoski et al. Developing graphics frameworks with Python and OpenGL
Schechter et al. Functional 3D graphics in C++—with an object-oriented, multiple dispatching implementation
Lehn et al. The Open Graphics Library (OpenGL)
Bauchinger Designing a modern rendering engine
Baruah Diving into Three. js
Hubbold et al. GKS-3D and PHIGS—Theory and Practice
Kaplan The design of the Doré graphics system
Guelch et al. Object-oriented software design in semiautomatic building extraction
Sourin Let’s Draw
GB2334870A (en) Three dimensional graphics rendering system
HK40097762B (zh) 图像渲染方法、装置、电子设备及存储介质
HK40097762A (zh) 图像渲染方法、装置、电子设备及存储介质
Finger et al. DRAWxtl V5. 5
Bivins A texture-based framework for improving CFD data visualization in a virtual environment
CN119888039A (zh) 渲染方法、装置、设备、系统、芯片及介质
Zhao Implementing Surfaces in OpenGL