(57)【特許請求の範囲】
【請求項１】
コンピュータのソフトウエアにより実行され、複数個のボクセルを含むボリュームデータセットを複数個のピクセルを含む画像平面上にレンダリングする方法において、
画像平面の各ピクセルを通しレイを投射し、
各レイに沿う複数のサンプル点の各々に隣接するボクセルをサンプリングすることにより、ボリュームデータセットの表面に平行な平面に配列されている複数個のサンプル点の各々に対しサンプル値を求め、
各レイのサンプル点のサンプル値を合成してレイが投射された各ピクセル毎にピクセル値を求める段階を含み、
前記表面が前記画像平面に対し最も近似していることを特徴とするボリュームデータセットのレンダリング方法。
【請求項２】
コンピュータのソフトウエアにより実行され、複数個のボクセルを含むボリュームデータセットを複数個のピクセルを含む画像平面上にレンダリングする方法において、
画像平面の各ピクセルを通しレイを投射し、
各レイに沿う複数のサンプル点の各々に隣接するボクセルをサンプリングすることにより、ボリュームデータセットの表面に平行な平面に配列されている複数個のサンプル点の各々に対しサンプル値を求め、
各レイのサンプル点のサンプル値を合成してレイが投射された各ピクセル毎にピクセル値を求める段階を含み、
各レイを画像平面に対し垂直に投射することを特徴とするボリュームデータセットのレンダリング方法。
【請求項３】
コンピュータのソフトウエアにより実行され、複数個のボクセルを含むボリュームデータセットを複数個のピクセルを含む画像平面上にレンダリングする方法において、
画像平面の各ピクセルを通しレイを投射し、
各レイに沿う複数のサンプル点の各々に隣接するボクセルをサンプリングすることにより、ボリュームデータセットの表面に平行な平面に配列されている複数個のサンプル点の各々に対しサンプル値を求め、
各レイのサンプル点のサンプル値を合成してレイが投射された各ピクセル毎にピクセル値を求める段階を含み、
前記表面が前記ボリュームデータセットの基底面であることを特徴とするボリュームデータセットのレンダリング方法。
【請求項４】
コンピュータのソフトウエアにより実行され、複数個のボクセルを含むボリュームデータセットを複数個のピクセルを含む画像平面上にレンダリングする方法において、
画像平面の各ピクセルを通しレイを投射し、
各レイに沿う複数のサンプル点の各々に隣接するボクセルをサンプリングすることにより、ボリュームデータセットの表面に平行な平面に配列されている複数個のサンプル点の各々に対しサンプル値を求め、
各レイのサンプル点のサンプル値を合成してレイが投射された各ピクセル毎にピクセル値を求める段階を含み、
各サンプル点のｘ−およびｙ−座標が各ピクセルのｘ−およびｙ−座標と同一であり、前記サンプル点のｚ−座標軸が前記ボリュームデータセットのボクセルのｚ−座標軸に平行であることを特徴とするボリュームデータセットのレンダリング方法。
【請求項５】
コンピュータのソフトウエアにより実行され、複数個のボクセルを含むボリュームデータセットを複数個のピクセルを含む画像平面上にレンダリングする方法において、
画像平面の各ピクセルを通しレイを投射し、
各レイに沿う複数のサンプル点の各々に隣接するボクセルをサンプリングすることにより、ボリュームデータセットの表面に平行な平面に配列されている複数個のサンプル点の各々に対しサンプル値を求め、
各レイのサンプル点のサンプル値を合成してレイが投射された各ピクセル毎にピクセル値を求める段階を含み、
さらに、８個のボクセルをサンプリングして各サンプルのサンプル値を求める段階を含むことを特徴とするボリュームデータセットのレンダリング方法。
【請求項６】
コンピュータのソフトウエアにより実行され、複数個のボクセルを含むボリュームデータセットを複数個のピクセルを含む画像平面上にレンダリングする方法において、
画像平面の各ピクセルを通しレイを投射し、
各レイに沿う複数のサンプル点の各々に隣接するボクセルをサンプリングすることにより、ボリュームデータセットの表面に平行な平面に配列されている複数個のサンプル点の各々に対しサンプル値を求め、
各レイのサンプル点のサンプル値を合成してレイが投射された各ピクセル毎にピクセル値を求める段階を含み、
サンプル点が、それぞれ基底面に対して平行な２×２スタンプとして配列されることを特徴とするボリュームデータセットのレンダリング方法。
【請求項７】
複数個のボクセルを含むボリュームデータセットを複数個のピクセルを含む画像平面上にレンダリングするシステムにおいて、
画像平面の各ピクセルを通しレイを投射するための手段と、
各レイに沿う複数のサンプル点の各々に隣接するボクセルをサンプリングすることにより、ボリュームデータセットの表面に平行な平面に配列されている複数個のサンプル点の各々に対しサンプル値を求めるための手段と、
各レイのサンプル点のサンプル値を合成してレイが投射された各ピクセル毎にピクセル値を求める手段と
を含み、
さらに、
主メモリに接続された中央プロセッサを有するホストコンピュータであって、前記表面を選択し、前記レイを投射し且つ前記サンプル点を定義するホストコンピュータと、
前記ホストコンピュータにバスにより接続された複数個の並列のレンダリングパイプラインであって、各レンダリングパイプラインが、サンプリング手段を含む補間段と前記合成手段を含む合成段とを備えていることを特徴とするボリュームデータセットのレンダリングシステム。
【請求項８】
複数個のボクセルを含むボリュームデータセットを複数個のピクセルを含む画像平面上にレンダリングするシステムにおいて、
画像平面の各ピクセルを通しレイを投射するための手段と、
各レイに沿う複数のサンプル点の各々に隣接するボクセルをサンプリングすることにより、ボリュームデータセットの表面に平行な平面に配列されている複数個のサンプル点の各々に対しサンプル値を求めるための手段と、
各レイのサンプル点のサンプル値を合成してレイが投射された各ピクセル毎にピクセル値を求める手段と
を含み、
さらに、
ボクセルをボリュームとして記憶するためのレンダリングメモリと、一度に８個ずつボクセルを読出すメモリインターフェースとを含むことを特徴とするボリュームデータセットのレンダリングシステム。
【請求項９】
複数個のボクセルを含むボリュームデータセットを複数個のピクセルを含む画像平面上にレンダリングするシステムにおいて、
画像平面の各ピクセルを通しレイを投射するための手段と、
各レイに沿う複数のサンプル点の各々に隣接するボクセルをサンプリングすることにより、ボリュームデータセットの表面に平行な平面に配列されている複数個のサンプル点の各々に対しサンプル値を求めるための手段と、
各レイのサンプル点のサンプル値を合成してレイが投射された各ピクセル毎にピクセル値を求める手段と
を含み、
サンプル点が、それぞれ基底面に対し平行な２×２スタンプとして配列され、
前記パイプラインの各々がさらに、前記スタンプの４つのサンプル点に陰影を付けるイルミネータを備えていることを特徴とするボリュームデータセットのレンダリングシステム。
【請求項１０】
各サンプル点のｘ−およびｙ−座標が各ピクセルのｘ−およびｙ−座標と同一であり、前記サンプル点のｚ−座標軸が前記ボリュームデータセットのボクセルのｚ−座標軸に対し平行であり、
各補間モジュールがさらに、
ｚ−補間サンプルを得るためにｚ−次元で前記ボリュームをサンプリングするｚ−補間手段と、
サンプル点の値を得るために前記ｚ−補間値をサンプリングするためのｘｙ−補間手段と
を備えたことを特徴とする請求項８に記載のボリュームデータセットのレンダリングシステム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、コンピュータ・グラフィックスの技術分野に係わり、特に、並列パイプライン制御ハードウエア・レンダリング・エンジンを用いてボリュームデータセット（体積もしくは三次元データセット）をレンダリングすることに関する。
【０００２】
三次元データを可視化する必要があるコンピュータグラフィックス用アプリケーションにおいては、ボリュームレンダリング（三次元図形データを二次元画像データにすること）がしばしば用いられている。ボリュームデータ（三次元データ）は、物理学上または医学上のオブジェクト或るいは大気、地球物理学その他の科学的モデルをスキャン（走査）することにより得られ、このデータによれば、データを可視化することにより、当該データによって表される実世界の内在構造も理解が容易になる。
【０００３】
ボリュームレンダリングでは、物理的オブジェクトの内部構造ならびに外部表面特徴が可視化される。ボクセル（三次元ピクセル）はボリュームレンダリングにおいて通常用いられる基本的データ項目である。すなわち、ボクセルとは、オブジェクト或るいはモデルの特定の三次元部分を表すデータである。各ボクセルの座標（ｘｙｚ）で、ボクセルは、表示されるオブジェクト或るいはモデル内の位置に写像される。
【０００４】
１つのボクセルは、オブジェクト或るいはモデルにおける特定の位置に関連する１つまたは複数の値を表す。従来、所与のボリュームに対し、ボクセルに含まれる値は、密度、組織のタイプ、弾力性或るいは速度のような数多の異なったパラメータの内の特定の１つのパラメータであり得る。レンダリング中、ボクセル値を、ボクセルの輝度値にしたがってカラーおよび不透明度（ＲＧＢα）値に変換し、二次元画像平面に射影することで観察することができる。
【０００５】
レンダリング中、しばしば用いられる技術の１つにレイキャスティング（光線の投射）がある。この方法によれば、仮想上のレイ群がボクセルを通して投射される。レイは或る視点或るいは画像平面から発生される。ボクセルはレイ（光線）に沿う複数の点でサンプリング（標本化）される。なお、サンプリングした値をピクセル値に変換するための技術としては種々なものが知られている。いずれにせよ、ボリュームの処理は、後部から前部へ或るいは前部から後部に向かう順序で行うことができる。
【０００６】
ボリュームレンダリングのための１つの伝統的なレイキャスティング技術として、Lecroute および Levoy のシヤーワープアルゴリズム（shear-warp algorithm）に基づくものがある。これに関しては、Lecroute および Levoy の "Fast Lolume Rendering Using a Shear-Warp Factorization of the Viewing Transformation"コンピュータグラフィックス、28(4)、451-458、（1994年８月）を参照されたい。
【０００７】
上記の技術には、ボクセルが記憶された順序に密接に関連する順序でボリュームデータセットを逓進的に、すなわち、ステップ バイ ステップで取り扱えるという利点がある。上記順序は、「オブジェクトオーダー」と称されている。このオブジェクトオーダー方法には２つの利点がある。すなわち、ボリュームメモリを最適な仕方でアクセスすることが可能であることおよびサンプル値を決定するのに補間重みによる３回の乗算しか要求されないという利点である。その結果として、ボリュームデータを、最大速度で読み出して処理することができる。実時間で対話形のボリュームレンダリングを最初に可能にしたのは、このレイキャスティング技術であった。
【０００８】
シヤーワープ（剪断変形-歪曲変形）技術は、ボリュームデータセットの「基底面」上のボクセルにより定義される格子にしたがいレイ（光線）を投射することによりそのパフォーマンスを実現する。ここで基底面とは、画像平面に最近似的に平行であるボリュームの表面に平行な面である。シヤーワープ技術においては、ボリュームを通して投光されるレイは、ボリューム自体における行および列に平行な行および列の格子上に位置する。この順序立った行列配列がオブジェクトオーダーのレンダリングを、特にメモリアクセスおよびサンプル値の補間に対して効果的にしている。
【０００９】
しかしながら、得られる画像は基底面に整列されておって画像面には整列されていない。さらにまた、特殊な事例を除き、得られる基底面整列画像は、ボリュームオブジェクトの所望の最終画像から歪んでいる。したがって、シヤーワープ技術は実際には２段階法であって、「シヤー（剪断変形）」段階と称する第１の段階で画像は基底面にレンダリングされ、他方、第２の段階、すなわち「ワープ歪曲変形」段階と称する段階では、基底面画像の歪みが除去されて画像面上に正しく位置決めされる。
【００１０】
したがって、ワープ段階は、実効的に、画像平面上に最終画像を生成するための基底面画像の再標本化もしくはリサンプリングであると言える。この結果、実際に実施する場合には、実現可能な画像品質に劣化が生ずる。
【００１１】
ワープ段階は実施が困難ではなく、たとえば、ＯｐｅｎＧＬ（登録商標）のような慣用の３Ｄ多角形グラフィックスのテクスチャマップ機能を使用して容易に実現できる。しかしながら、すべてのアプリケーション環境が、このようなグラフィックス機能もしくは能力を備えているシステム用に設計されている訳ではない。したがってワープ段階を実行するためには、システム設計に対し面倒な付加や所要のパフォーマンスを満足する余分のソフトウエアモジュールが要求される。
【００１２】
別のレイキャスティング方法として、画像オーダー法（image order）として知られている方法がある。この方法においては、ボリュームデータセットに最終画像面上のピクセルからレイ（光線）を投射する。これにより、歪みを伴うことなく且つワープ段階を経ることなく直接正しい画像を生成することができる。このようにして得られる画像は、一般に、シヤーワープ技術で実現できる品質よりも高い品質を有する。このように画像オーダーレンダリング方法で高品質の画像が生成される理由は、最終画像面上の各ピクセルが該ピクセルを通る単一のレイから直接発生されることにある。これとは対照的にオブジェクトオーダー法では、最終画像面における各ピクセルは、基底面画像上の近接する多数のピクセルから合成される。したがって、オブジェクトオーダー方法の場合には、２回サンプリングが行われることになり、それにより画像品質が劣化する。
【００１３】
しかしながら、画像オーダーレンダリング方法にはデメリットがある。すなわち、ボリュームデータを、シヤーワープ技術の場合のようにメモリから効率的に読み取ることができない。また、サンプル値の補間には、オブジェクトオーダーの場合には３回の乗算で済むのに対し、画像オーダー方法では、補間重みによる７回の乗算が必要とされる。したがって画像オーダーレンダリング方法は、実時間対話形ボリュームレンダリングが最小のボリュームデータセット以外には不可能であるという点で、オブジェクトオーダーレンダリング方法よりも非常に時間が掛かる。実際、従来の画像オーダー技術では、不可能とは言わないまでも、たとえば実時間医療撮像のような実際的な対話形アプリケーションは実施が非常に困難であった。
【００１４】
レンダリングにおける別の問題点は、多角形のオブジェクトおよび他のオブジェクトの埋込み画像に関する問題である。画像オーダーレンダリング方法においては、このようなオブジェクトおよび画像の埋込みは直截的である。単に、オブジェクトを、従来より知られている３Ｄグラフィックスシステムを用いて、画像平面上に、最終ボリュームレンダ画像と同じピクセル解像度で描けば良い。埋込まれた多角形或るいは画像の再標本化、すなわちリサンプリングを行う必要はなく、したがって、埋込みの結果画像品質の劣化が生ずることはない。
【００１５】
対照的にオブジェクトオーダーボリュームレンダリング技術（シヤーワープ技術）では、基底面上に歪んだ画像が発生するので、埋込みオブジェクトも基底面上に等化の歪を以て描かれることになる。このようにして埋込まれた多角形を有するレンダリングされた画像は次いで、ワープ段階で最終画像にワープされる。このワープ段階では、特に埋込まれた幾何学的パターンが鋭い縁もしくはエッジを有する場合に、描画された多角形の画像品質に由々しい劣化が生ずる。
【００１６】
【発明が解決しようとする課題】
上の説明から明らかなように、オブジェクトオーダーレンダリングの優れたパフォーマンスを確保しつつ、画像オーダーボリュームレンダリングの卓越した品質を実現することが望ましい。
【００１７】
【課題を解決するための手段】
この発明は、画像平面の各ピクセルを通してレイ（光線）を投射することにより、ピクセルからなる画像平面上にボクセルからなるボリュームデータセットをレンダリングするためのシステムおよび方法を提供するものである。ボリュームデータセットの表面を基底面として選択する。サンプル点を、基底面に平行な平面内に位置するように各レイに沿って定義する。パフォーマンスを高めるために、基底面に平行なスライスにおいてボリュームメモリから読み込む。各サンプル点に隣接するボクセルを補間して各サンプル点毎にサンプル値を求め、各レイのサンプル値を合成して各ピクセル毎にピクセル値を決定する。
【００１８】
【発明の実施の形態】
この発明は、ボクセルからなるボリュームデータセットを画像平面におけるピクセルにレンダリングするためのシステムおよび方法を提供するものである。この発明の実施に当たっては、画像平面の各ピクセルを介してレイ（光線）を投射（casting）するレイキャスティング技術が用いられる。ボリュームの１つの表面を基底面として選択する。サンプル点が、選択された基底面に対し平行な平面内に配列されるように、該サンプル点を各レイに沿って定義する。各サンプル点に隣接するボクセルを補間してサンプル値を求める。各レイ（光線）のサンプル値を合成し、最終画像における各ピクセルに対しピクセル値を決定する。なお、この発明者等は、この方法を「ｘｙ−画像オーダーレンダリング」と呼称することにした。
【００１９】
以下の説明においては、まず、この発明によるｘｙ−画像オーダーボリュームレンダリングで用いられるいくつかの一般的概念について説明し、次いで、この発明によるパイプラインボリュームレンダリングシステムによって用いられる種々な座標系および変換について説明し、最後に、この発明によるｘｙ−画像オーダーレンダリングを採用したレンダリングシステムを実現するための好適なハードウエア構成について説明する。
【００２０】
序説
ボリュームレンダリングとは、コンピュータ端末、印刷ページその他の二次元の視覚媒体（「画像平面」と総称する）上にボリュームデータセットを表示もしくは可視化することである。また、ボリュームデータセットとは、三次元空間内の点と関連するデータ値の三次元アレイを言う。ボリュームデータセットにおける各データ値は、体積素もしくはボクセル（三次元のピクセル）と称する情報量である。多くの場合、ボリュームデータセットは実世界における三次元のオブジェクトを表し、それに関連の座標系は、当該オブジェクトが占める三次元の物理的空間を表す。しかしながら、ボリュームはまた、仮想オブジェクトのモデルであっても良い。
【００２１】
各ボクセルの情報は、典型的に、オブジェクトの１つまたは複数の特性を表し、当該ボクセルの極く近傍における小さい空間領域に対しこのような特性を記述する。このような特性としては、たとえば、ＣＴスキャンで得られる人体組織の密度、流体動力学的モデルにおける流体の速度或るいはその位置と関連するカラー（色）等が挙げられる。一般に、ボクセルのデータはスカラー量或るいはベクトル量であり得る。また、ボリュームデータセットのシーケンスで、時間とともに変化もしくは変動するオブジェクトを表すことができる。このようなシーケンスの各構成要素は、時間的に異なった時点で見た場合のシーケンスに含まれる三次元ボリュームデータセットである。
【００２２】
ボクセルは、或る種の空間パターンにしたがって配列される。最も単純なボクセル配列は、直線形データセット、すなわち、物理的空間において互いに直角の軸を有する三次元格子である。このような直線形データセットの例として少数の例を挙げれば、３Ｄ（三次元）再現医療データ、コンピュータでの流体動力学的シミュレーションから得られるシミュレーションデータセット或るいは計算有限要素モデル等がある。このようなボリュームデータは、コンピュータメモリ内に三次元アレイとして表すことができ、オブジェクトにおける各ボクセルの位置は直截的に、メモリアレイにおける当該ボクセルの座標に対応する。
【００２３】
格子
等方性の格子においては、ボクセル間の間隔は物理的空間の３つのすべての次元において同じである。異方性の格子においては、ボクセル間の間隔は所与の次元においては一定であるが次元毎に異なる。異方性データは、しばしば、縦軸方向におけるＣＴまたはＭＩＲスキャンの解像度を他の２つの方向における解像度とは独立して制御することができる医療用途において往々に生ずるデータである。
【００２４】
シヤー格子（剪断変形格子）では、格子の軸がオブジェクトの物理的世界において直角でない。このような格子もまた医療分野においては一般で用いられており、この分野では当該データセットはガントリー傾斜ボリュームデータセットと称されている。このようなシヤー格子は、ＣＴスキャナのセンサがたとえば、身体の上側を縦軸線に対し直角ではない角度で通過する場合に起こり得る。
【００２５】
好適な実施例においては、ボリュームデータは、８−ビット、１６−ビットまたは３２−ビットボクセルで各次元において２の１６乗個までのボクセルを有することができる。尤も、他のサイズのボリュームやボクセルも可能である。ボリュームデータセットのボクセルは、多数の構成要素フィールドもしくはコンポーネントフィールドを有し得る。この場合、各フィールドはオブジェクトの異なった特性を表す。ボクセルのサイズ、位置およびフォーマットは、ランタイムベースでボクセルフォーマット記述子により特定することができる。
【００２６】
当該技術分野においては、０.０〜１.０の範囲内の数を表すのにｎビット値を使用するのが一般である。たとえば、８ビットのアルファ不透明度フィールドは、０〜２５５の範囲内の値を含み、０.０（完全透明）から１.０（完全不透明）までの不透明度を表す。本明細書において、これらの数は循環少数（repeating frations）と称する。この名称は、２進小数点の右側にｎビット値を無限に繰り返す数を生成することによりｎビット数を０.０〜１.０の範囲内の値に変換することが可能であるという事実に由来する。
【００２７】
ボクセルの各フィールドは、たとえば、４ビットの合成体とされてもよい。外部的には、ボクセルフィールドは、記号無しの２進整数、［０〜１.０］の範囲内の記号無しの有理数、すなわち循環少数、或るいは範囲［−１.０〜１.０］の記号付きの有理数、すなわち範囲［０.０〜１.０］内の循環小数の大きさに記号ビットを加えたもののいずれであっても良い。内部的には、各ボクセルフィールドは［０.０〜１.０］の範囲内の数に基準化され変換される。
【００２８】
ボリュームのレンダリングの結果として、典型的には、１つまたは複数の画像が得られる。この発明によるレンダリングエンジンでは、動的に変動する観察条件下で実時間画像が生成される。各画像はピクセルアレイ（ピクセル配列）として表示される。ここでピクセル（画素）とは、二次元の画像平面内の関連の点を中心とするグレイスケールまたはカラーの小さなパッチを表すデータ構造である。各ピクセルの３つの成分（ＲＧＢ）は、当該ピクセルにおいて画像に貢献する原色「赤」、「緑」および「青」の各々の量を表す。また、第４の成分アルファ（α）は当該カラーパッチの不透明度或るいは透明度を表す。
【００２９】
二次元の画像アレイすべてではないが、これらの中には二次元深度アレイ（two-dimensional depth array）がある。このような深度アレイは対応の座標に位置する画像アレイ内の各ピクセルに対し１つのエレメント（要素）を有する。深度アレイにおける各値は或る基準平面からの距離を表す。深度アレイは、典型的には、三次元空間において対応のピクセルにより表される画像の小さい部分の位置を表記するのに用いられる。また、深度アレイは、任意のクリップ面を表すのに用いたり或るいはボリュームとともに正しい位置に埋込みオブジェクトを位置決めするのに用いることができる。
【００３０】
レイ（光線）
レンダリングは、ボリュームデータセットにレイを投ずることにより行われる。すなわち、仮想レイ（便宜上、光線とも称する）を画像平面の各ピクセル或るいは他の或る平面上の特定の点を通過せしめる。各レイに沿うサンプル点におけるカラーおよび不透明度値を累算し、累算値を当該レイに関連するピクセルに記憶する。この発明の実施の形態においては、ボリュームの選択された基底面に平行な平面に配列されたサンプル点が用いられる。
【００３１】
レイに沿いカラーおよび不透明度を累算するために、５つの基本的な演算が行われる。すなわち、勾配の推定、補間、分類、照明および合成である。以下、これら動作もしくは演算についてさらに詳細に説明する。
【００３２】
勾配
有らゆる処理に先行し、まずボクセルにおける、またはボクセルと関連する勾配を推定する。ここで勾配とは、ボクセルの或るフィールドまたはオブジェクトの或る性質の空間的変化率を表すベクトルである。すなわち、勾配とは、三次元の各次元における単位ステップ毎のフィールド値または性質における変化の単位数である。
【００３３】
中心差分
図１の（ａ）に示すように、中心差分をとることにより勾配を推定する。すなわち、ボクセルＶiにおける勾配ベクトルの３つの成分を、３つの次元における隣接ボクセルの各々の対応のフィールドを減算することにより推定する。たとえば、ボクセル点Ｖ1１０２において、水平方向における勾配成分に対し右側のボクセルフィールドを左側の同じボクセルフィールドから減算し、且つ垂直方向における勾配成分に対しては、下側のボクセルのフィールドを該ボクセルの上側のボクセルの同じフィールドから減算することにより勾配Ｇ1１０１を推定する。第３次元における勾配成分も、後部のボクセルフィールドから前部のボクセルフィールドを減算することにより同様に得ることができる。なお、３つの勾配成分すべてに対し同じボクセルフィールドを使用する必要はないことを注記しておく。
【００３４】
図１の（ａ）において、曲線１０３は、ボリュームデータセットによって表される２つの異なったタイプのマテリアル間の「面」もしくは境界、たとえば、骨と筋肉との間の界面或るいは皮膚と空気との間の界面を表す。ボクセルＶ1はこの境界上に位置するので、勾配の大きさは大であり、勾配自体はこの面もしくは境界に対する法線ベクトルに近似する。対照的に、ボクセルＶ2１０４およびＶ3１０５におけるボリューム内のマテリアルは比較的均質であるので、これらボクセルにおける勾配の大きさは非常に小さくランダムな方向に指向している。なお、ボクセルにおける点ばかりではなく面に沿う他の点における勾配、たとえば、サンプル点Ｓ4１０７における勾配Ｇ4１０６を求めるのも望ましいことは言うまでもない。
【００３５】
勾配の補正
図１の（ｂ）に示すように、勾配推定機能では、異方性を有するボリュームもしくはガントリー傾斜ボリュームに対して歪んだ勾配が生成される。この場合、１つの方向（垂直方向）におけるボクセル間の間隔は、他の方向（水平方向）におけるボクセル間間隔よりも大きくなる。したがって、垂直方向における中心差分は、水平方向における中心差分の場合よりも、実世界においてさらに大きく離間しているボクセルのフィールド間の差分となる。その効果として、勾配の垂直成分が水平成分に対して最小化され、それにより、面或るいは境界に対して実際に法線とはならないベクトルＧ6１０８が生成されてしまう。容易に理解されるように、これは、互いに直角の軸を有しないデータセット、または次元毎に変動するボクセル間間隔を有するデータセットに対し、システム上の問題となる。
【００３６】
この問題に対処するために、この発明によれば勾配補正行列が提案される。この行列は、勾配の推定後各勾配に適用することができる。この行列の適用で、異方性およびシヤーの効果を反転する線形変換が行われ、その結果として変換された勾配は推定点における面に対して一層垂直な法線となる。
【００３７】
座標系
図２に示すように、この発明のシステムは多数の座標系および変換を用いて動作する。これら座標系および変換の中には、従来の３Ｄ多角形グラフィックスで用いられているものに関連のものもあれば、また、この発明によるボリュームレンダリングに特殊なものもある。座標系は「空間」を定義する。なお、以降、術語「空間」および「座標系」は意味論的に互換性を有するものとする。図２を参照するに、左側に示した座標系は当該コンピュータグラフィックス分野において馴染み深いものであり、他方右側に示した座標系はこの発明による座標系である。
【００３８】
オブジェクト座標系
オブジェクト座標系２０１は、レンダリングされるオブジェクト（ボリューム）のネイティブな（固有の）内部座標系である。３Ｄ多角形グラフィックスにおいては、これはオブジェクトの面を内部原点および標準視点に対して記述する座標のセット、すなわち集合である。しかしながら、ボリュームグラフィックスにおいては、オブジェクト座標はボクセルの三次元アレイと関連するアレイインデックス（指標）である。
【００３９】
さらに詳細に述べると、この発明のシステムにおいて、ボリュームオブジェクトのオブジェクト座標系はボクセルが負でない整数座標に存在する三次元の直角座標系である。等方性のボリュームデータセット（集合）は、ボクセル値の三次元アレイとしてオブジェクト空間に表される。オブジェクト座標系の原点は、アレイ座標（０、０、０）により表されるボクセルの中心である。ｕ、ｖおよびｗが負でない整数であるアレイ座標（ｕ、ｖ、ｗ）にけるボクセル値は、オブジェクト空間にける当該座標に中心が合わされた或るいはその近傍の空間領域におけるオブジェクトの１つもしくは複数の性質を表す。たとえば、或るオブジェクトのＣＴスキャンの場合、ボクセルは、該ボクセルに中心が合わされたガウスボリュームに亙るオブジェクトのマテリアルの密度または濃度の積分を表す。
【００４０】
この発明においては、オブジェクト座標２０１を参照する場合、座標ｕｖｗおよびＵＶＷを使用する。
【００４１】
物理座標
オブジェクト空間自体は線形座標系である。すなわち、その軸は含意的に互いに直角であり、ボクセル間の間隔はどの次元においても正確に１単位の距離（１単位距離）である。これは必ずしもオブジェクト自体が存在する実世界に対応するものではない。特に、オブジェクトを表すボクセルは（たとえば、ガントリー傾斜ボリュームのように）互いに直角な座標にしたがって配列されていない場合があり得るし、また、ボクセル間の間隔は、異方性のボリュームについて既に述べたように、三次元の各々において同じである必要はない。
【００４２】
したがって、物理座標２０２と称する第２の関連の座標系が導入される。これは、オブジェクトの内部原点またはオブジェクト内の他の指定された点に対しオブジェクトの実世界もしくは物理的世界における実際の位置にボクセルが存在するデカルト座標系、すなわち直角座標系である。特に、ボクセルはオブジェクト空間においては整数座標に位置するが、物理空間においては必ずしも整数座標に位置しない。また、厳密な意味においては必要ではないが、物理空間の軸のうちの１つをオブジェクト空間の対応の軸と同じにし、他方、他の２つの軸はオブジェクト座標２０１の軸に対しずれをもたらすなどして較正するのが便利である。
【００４３】
たとえば、人体のＣＴスキャンにおいては、身体の頭部から足部へと延びる縦軸を固定し、スライスの間隔はスキャナのオペレータによって定める。他の２つの軸の角度は、ＣＴスキャナのガントリーの傾きに依存し、これら２つの軸に沿うボクセルの間隔はスキャナのＸ線トランスジューサにおける電子的設定に依存する。
【００４４】
したがって、ボクセルは、オブジェクト座標を用いた場合には整数位置にあるが、物理的座標系においては、身体の縦軸に対する実世界の三次元デカルト座標系における実際の非整数位置に置かれる。
【００４５】
図３は、ＣＴスキャナのスキャナ台上に横たわっている人間の頭部３０１のボクセル３００の断面図である。実線で示す軸はオブジェクト空間の軸を表し、イタリック体で示した座標値はオブジェクト座標系におけるボクセルの位置を示す。物理空間の縦軸３０３は、オブジェクト空間の縦軸に重畳しており、したがって別々には見えない。物理空間の「垂直」の軸３０４は、室（ルーム）の垂直軸であり、縦軸に対し直角の点描矢印で示してある。スキャナのガントリー３０５の軸は斜めの矢印で示してある。また、ボールド書体の座標値は物理空間におけるボクセルの位置を示す。
【００４６】
図２に示す補正変換（Ｃ）は、オブジェクト空間から物理空間への線形変換である。すなわち、この変換（Ｃ）２０３では、オブジェクト空間２０１の整数座標が、実世界におけるオブジェクト内の内部原点に対するボクセルの位置を反映する非整数座標に変換される。変換（Ｃ）２０３は、オブジェクトの性質ならびにボリュームデータセットを発生するためにオブジェクトをサンプリングした仕方に関係する。この変換は、オブジェクトと周囲環境もしくはシーン（場面）との関係には依存しない。
【００４７】
物理座標系の導入には２つの理由がある。第１に、この物理座標系を採用することにより、シーン（場面）グラフマネージャで、ボリュームオブジェクトを生成するサンプリング方式の内在的な性質を特に意識する必要なしにオブジェクトをシーン、すなわち場面内に位置決めすることが可能となる。たとえば、オブジェクトを世界空間内で回転するのが望まれる場合には、１つの試行として、ガントリー傾斜／異方性を表しオブジェクトの原点を回転軸の中心に再配置するように変換Ｃを構築することである。次いで、内部表面に関係なく物理オブジェクトの回転を表すために連続した物理モデル化行列（ＰＭ）２０４を定義することができる。
【００４８】
物理座標２０２を導入する第２の理由は、照明のための環境を提供することにある。オブジェクト空間２０１が物理空間２０２と同じでない場合には、オブジェクト空間においてボクセルから推定される勾配は実世界におけるそれらの表面に対して垂直にはならないであろう。したがって、補正変換２０３を用いて、照明計算で用いられるように勾配を補正する。
【００４９】
世界スペース２０５は、シーン（場面）のすべてのオブジェクトが埋込まれている座標系である。各オブジェクトは、その特定のオブジェクト座標を世界座標に変換するモデル化変換（Ｍ）２０６を有している。この変換でオブジェクトは他のオブジェクトに対し或る「世界」内のオブジェクト位置に回転、較正もしくは変換される。なお、モデル化変換はコンピュータグラフィックスの分野において周知である。
【００５０】
ボリュームオブジェクト、特に異方性格子またはガントリー傾斜格子にサンプリングされたオブジェクトの場合には、モデル化変換（Ｍ）２０６は、補正変換（Ｃ）２０３と物理モデル化変換（ＰＭ）２０４との連結、すなわちＭ＝ＰＭ×Ｃと見做すことができる。物理モデル化変換は、異方性またはガントリー傾斜サンプリング特性を顧慮することなくオブジェクトを世界空間に位置決めし、基準化し且つ回転する。
【００５１】
すなわち、補正変換（Ｃ）は、ボリュームオブジェクト自体ならびにボクセルを得るのに用いたサンプリングプロセス（標本化プロセス）によって決定される。補正変換は、場面もしくはシーン内の他のオブジェクトに対する当該オブジェクトの関係または該他のオブジェクトの観察方法には依存しない。変換（ＰＭ）２０４は世界または場面（シーン）内における他のオブジェクトに対する当該オブジェクトの位置および配向によって決定される。なお、変換（ＰＭ）は、ボリュームオブジェクトのサンプリング方法ならびにボクセルの間隔およびアラインメントには依存しない。
【００５２】
カメラ座標２０７は、ビュワー（観察する主体）によって観察されるシーン（場面）を表す。このカメラ座標２０７は、ＯｐｅｎＧＬ（登録商標）レンダリングシステムのカメラ機能「ｇｌｕＬｏｏｋＡｔ」によって行うことができるようなビュー変換（Ｖ）２０８により得ることができる。ビュー変換２０８は、カメラが実世界に対して運動するに伴い、たとえば、シーンの周囲を軌道運動するに伴い変化する。しかしながら、ビュー変換は、実世界のオブジェクトが回転する場合（すなわち、そのＭ変換（モデル化変換）２０６が変る場合）には変化しない。
【００５３】
クリップ座標
クリップ座標２０９は、カメラにより観察される世界のビューを無限座標系から、円錐台表示窓或るいは平行六面体表示窓により画定される有限座標系に縮小する。射影変換（ＰＪ）２１０はカメラ座標系２０７をクリップ座標系２０９に写像する。
【００５４】
正規化された射影座標２１１は、ｘ−、ｙ−およびｚ−方向の各方向で範囲［−１.０〜 +１.０］内の標準座標集合に対しカメラから見たシーンの正規化を表す。透視投影の場合には、オブジェクトは、奥行き縮小して見え、平行線は遠方に収斂するように見える。正規化座標２１１は、透視分割（透視的に見た状態での分割）２１２、すなわち同次座標におけるスケーリング因子ｗを用いてクリップ座標２０９から得られる。直交透視の場合には、ｗ＝１である。
【００５５】
画像座標
画像座標２１３は、スクリーン、ウインドウ或るいは出力装置、すなわち画像平面の座標である。多くの事例において、これは、オブジェクト或るいはシーンが表示されている画像の二次元座標系である。多くの３Ｄ多角形グラフィックスシステムは、画像の平面に対し垂直な軸が奥行き（深度）値の集合として表される２.５次元の座標系（two-and-a-half dimensional coordinate system）を有する。この発明によれば、画像平面に対し、真の三次元画像座標系が用いられる。
【００５６】
本明細書において、説明の便宜上、画像座標系を、ｘ−およびｙ−次元における１単位が正確に画像平面における１ピクセルに対応し、ｚ−次元における１単位が深度値（奥行きの値）の最小増分に対応する三次元座標系であると定義する。この座標系は、埋込まれた多角形オブジェクトをレンダリングしたり、可視性およびオブジェクトの他のオブジェクトによるオクルージョンをチェックするのに用いられる。
【００５７】
窓表示変換（ＶＴ）２１４では、正規化された射影座標２１１は、画像座標系２１３に写像される。ここで画像座標系の軸をｘiｙiＤ或るいはＸiＹiＤで表す。
【００５８】
この発明によるｘｙ−画像オーダーレンダリングエンジン（後述する）においては、レイは画像座標系における整数位置に存在するピクセルの中心を垂直に通過する。画像平面は、少なくとも視点に対して、クリップ空間２０９の表示円錐台或るいは表示平行六面体の「近い方の面」と同程度の一定の深度を有する像座標系の任意の平面である。
【００５９】
置換座標系
置換座標系２２０は、ボリュームオブジェクトのオブジェクト座標系２０１の変換に対応する。この変換について以下に詳述する。この変換では、オブジェクト空間のｚ−軸が実質的にレイに平行になるように、すなわち、ビュー方向（視点方向）に実質的に平行になるようにラベル、そして場合によりオブジェクト座標系の軸の方向を再配列する。１つの実施形態においては、この配向は、画像平面に最も近似的に平行であるボリュームの表面を基底面として選択することにより実現できる。したがって、レイはｘ−、ｙ−およびｚ−次元の各々において、非負の方向にボリュームデータを横切る。なお、この発明において、置換座標系２２０を表すのに表記ｘvｙvｚvおよびＸvＹvＺvを用いる。置換座標系２２０の原点、すなわち、（０、０、０）点ならびにオブジェクト座標２０１は実質的に互いに近接しているが、必ずしも同一点にある必要はない。
【００６０】
ボクセルは、レンダリングメモリ１３６０（図１３を参照し追って説明する）において、ミニブロック１４０１として組織化される。（図１４参照）。ここで、各ミニブロックは２×２×２のボクセルアレイからなる。メモリ内のボリュームデータセットに対する各データアクセスで関連のアドレスにおけるミニブロックが取り出される。ビュー方向が、レンダリングエンジンがボリュームを１つまたは複数の軸に沿い負の方向にスキャンするような方向である場合には、ミニブロック境界に出発点を置くために、該出発点を当該次元において１ボクセル分だけ変位する。これは、置換変換Ｐ２２１を用いてオブジェクト座標２０１を置換座標２２０に変換する場合に当該次元においてバイアス値「１」を減算することにより実現される。
【００６１】
オブジェクト-置換座標
図４は、オブジェクト座標の置換座標への置換例を示す。図を参照するに、オブジェクト座標系の軸ｕ４０１は置換座標系の負のｚ−軸４０２に置換されており、オブジェクト座標系の軸ｖ４０３は負のｘ−軸４０４に置換されており、そして軸ｗ４０５は正のｙ−軸４０６に置換されている。オブジェクト座標系の原点４１０（０u、０v、０w）は置換座標系の点（−１x、０y、１z）４１５に位置する。
【００６２】
ボックス（箱状物）４２０は、該ボックスの１つの角のボクセルＸ４２１がｕｖｗ−座標系、すなわちオブジェクト座標系の座標（２、４、１）に位置し、ｘvｙvｚv−座標系では座標（−５、１、−３）となるように位置決めされている。
【００６３】
置換座標系２２０は、ボクセルを読み取ってサンプル（標本）を順序立って処理するのに便利な手段である。この発明によるレンダリングパイプライン内部処理の多くは、オブジェクト座標ではなく置換ボクセル座標で表現される。特定のオブジェクトおよびモデリングのための置換座標の導出ならびにビュー変換（窓表示変換）を以下に説明する。
【００６４】
オブジェクト空間においては、ボクセルは整数座標に位置するが、置換座標空間においては臨機的に非整数座標を用いる。この発明のレンダリングエンジンは、置換座標をボクセル間隔の１／２５６にまで分解もしくは解像することが可能である。なお、このように分解されたボクセルをサブボクセルと称することにする。また、この発明のレンダリングエンジンでは、サブボクセル位置を生成する増分計算において、精度を期すために追加ビットとして９ビットが用いられる。また、以下の説明において、時に応じ、術語「置換サブボクセル座標（系）」を用いるが、この術語は、因数「１／２５６」で基準化した置換座標を意味する。すなわち、この置換座標は８ビットの分数精度を有する。したがって、置換座標はこの発明を実施するのに必ずしも必要とされない。別の実施の形態においては、直接オブジェクト座標からサンプル座標にボリュームレンダリングを行う。
【００６５】
サンプル座標系
サンプル空間とは、すべてのレイ（光線）が最も近似的に置換座標系のｚ−軸に対して平行であり且つすべてのサンプル点がｘ−、ｙ−およびｚ−次元の各々において非負の整数座標に１単位ずつ離間して位置する座標系である。特定のレイのサンプル点の集合は、ｘ−およびｙ−座標が一定でありｚ−座標が変化するサンプル座標系における点の集合である。サンプル座標系における点を表すのに表記ｘsｙsｚsおよびＸsＹsＺsを用いることにする。置換座標をサンプル座標に変換するのに再サンプリング変換Ｒ２３１を適用する。この変換について以下に詳細に説明する。
【００６６】
ＸＹ−画像オーダー
特定の状況下においてサンプル空間をどのように定義するかはこのサンプル空間で何を行うかに依存する。この発明のボリュームレンダリング方法の主たる様相によれば、レイを画像平面のピクセルの中心に通し、該レイに沿うサンプル点をボリュームの置換座標系のｚv−軸に平行なスライス（基底面に平行な平面）に組織化する。この手法をｘｙ−画像オーダーレンダリング（xy-image order rendering）と称する。
【００６７】
別法として、シヤーワーププロセスの変形プロセスを用いる。この場合には、レイを、「基底面」、すなわち画像平面に対し最も近似的に平行であるボリュームのｘvｙv−面と同面関係にある平面内のピクセル点の整列された矩形格子を通して投射する。これを、「オブジェクトオーダーレンダリング（object order rendering）」と称することにする。
【００６８】
ｘｙ−画像オーダーレンダリングと関連し、サンプル座標系のｘ−およびｙ−軸を画像座標系２１３のｘ−およびｙ−軸と実質的に同じであると定義する。すなわち、この定義によれば、各ピクセル毎に１本のレイが存在する。以下に、ｘｙ−画像オーダーレンダリングについて詳細に説明する。
【００６９】
ところで、ｚs−軸は画像座標系２１３の深度（奥行きもしくは距離）軸（Ｄ−軸と称する）とは異なる。特に、Ｄ−座標、すなわちサンプル点の深度は該サンプル点の画像平面からの距離の尺度である。サンプル空間においては、これとは対照的に一定のｚ−値の平面は置換空間ｘvｙv−平面に対して平行であり、したがって必ずしも画像平面に対しては平行ではない。したがってサンプル空間から画像空間に移行するのに深度ワープ（depth warp）変換（Ｄ）２４０を行う。
【００７０】
このように通常とは異なってサンプル座標２３０の定義を行う理由は、この発明では、効率的で順序立った仕方で、ｘｙ−画像順序であれ或るいはオブジェクト順序であれ一度にボクセルのスライスをアクセスすることによりボリュームレンダリングを行うからである。このようにして得られるボクセルスライスから本来的にボクセルスライスに対して平行であるサンプルスライスを得るためのリサンプリング（再サンプリング）が行われる。すなわち、同じサンプルスライスのすべてのサンプルは置換ボクセル座標２２０と同じｚv−座標を有する。このことは、この発明の定義によれば、２回ではなく１回の補間を行うことによって得られる従来の画像順序化レンダリングで達成される画像品質と、補間を行うのに要求される乗算回数を減少するために平行なボクセルおよびサンプル平面を用いて得られる従来のオブジェクト順序化レンダリングで実現されるパフォーマンスとが組み合わされるという利点が得られる。
【００７１】
図５はこの発明によるレイキャスティング（光線の投射）およびボクセルのサンプリングとともにボリュームデータセットを示す。図５において、ボリューム５００の横断面が置換空間に示してある。画像平面５０１は、図の左上に位置しボリュームの外側にあってボリュームに対し任意の角度で傾いている。レイ５０２は、画像平面の各ピクセルからボリューム５００を通過するように投射される。直交投影の場合には、レイは画像平面に対して垂直である。
【００７２】
ボリュームのｘｖ−およびｚｖ−軸５１０が図５に示してあり、ｙｖ−軸は図の面に対して垂直である。画像平面のｘ−およびｙ−軸は一般に図の面に対して平行または垂直ではく、画像平面上のピクセルの矩形アレイは、レイに平行な軸を中心に回転し得る。表面５０３が基底面として選択される。１つの実施形態においては、選択される表面は画像平面５０１に対して最も（最近似的に）平行である。
【００７３】
サンプル点５２０（各レイ５０２上の×印）は基底面５０３(ｘv−およびｙv−軸）に対して平行な平面上に位置する。各サンプル点もまたレイ上に位置し、したがって、サンプル点のスライスは、置換座標で一定のｚv−値を有する特定の平面と交差する。なお、サンプル点のスライスのｚv−座標は必ずしも或るいは典型的に置換座標系における整数ではないことを注記しておく。しかしながら定義によって、サンプル空間内の対応のｚs−座標値は整数であるとする。
【００７４】
サンプル座標系の原点
以降の説明において、この発明によるサンプル座標系２３０の原点は、画像座標系２１３における（０、０、depth０）と一致するものと定義する。この定義において、depth０は、埋込まれた多角形オブジェクトをレンダリングする必要性に鑑みて割り当てられる深度値である。深度値が画像平面に向かう方向において増加するか或るいは減少するかは、３Ｄ多角形グラフィックスシステムにおける深度の表現のような外部因子の関数に依存する。
【００７５】
サンプル座標系の原点を、レンダリング中に、ボリュームを横断するための出発点として用いる。この横断は、置換座標系２２０でのボクセルに対する該原点の位置を知る上で必要である。
【００７６】
図６は、画像平面の視点からのボリューム６００を示す。このボリュームは、任意量で基準化され、回転され且つ変換された直方体である。この図において、ｘs−およびｙs−軸６０１は図の平面内にあり、ｚs−軸は図６を見る方向に平行であって図の面に対し垂直であり且つ図の面に指向している。
【００７７】
この特定の例においては、置換ボクセル座標系２２０の原点６１０は、右上の前部の角近傍に位置する。この発明による置換座標系の定義にしたがい、ｚv−軸６０３は視線の方向に最近似的に平行である。この例においては、ｚv−軸は、ボリュームの大きな薄い斜線を引いた面６０４に垂直な軸である。置換座標系の他の２つの軸６０５はレイが非負の方向を指向する右側座標系を形成するように選択されている。
【００７８】
この場合、サンプル座標系２３０の原点６０２は、ボリュームより相当外側に位置し、置換座標系の原点に対し三次元すべてにおいて負方向にある。また、ボリューム自体の輪郭は、サンプル座標系でｚs＝０平面上に投影された場合に不規則な六角形を形作ることも理解されるであろう。なお、このことは、図６において太い破線６２０で示してある。
【００７９】
ビュー切頭体
ボリュームレンダリングにとって特に関心のあるのはビュー切頭体またはビュー平行六面体である。これは、三次元すべてにおけるサンプル座標の部分集合或るいは範囲であり、実効的にはサンプル空間において直交するクリップ領域である。ビュー切頭体が完全にボリュームを含む場合もあれば、またビュー切頭体が完全にボリューム内に含まれる場合もある。さらにまた、ビュー切頭体がボリュームと交差する場合もあり得る。
【００８０】
図７の（ａ）〜（ｃ）は、ビュー切頭体のいくつかの例を示す図である。図７の（ａ）はボリューム７００全体の画像を包入するのに充分な大きさのビュー切頭体７０１を示す。また、図７の（ｂ）はボリューム７００の像よりも小さいビュー切頭体７０２を示し、したがってこの場合には、ビュワーは関心のある特定領域に集中することができる。図７の（ｃ）は、周囲空間に延在しているボリュームの縁に位置するビュー切頭体７０３を示す。これは、たとえば、他のオブジェクトをボリュームに隣接して表示したり或るいはボリューム内に埋込んで表示する場合に相当する。
【００８１】
ビュー切頭体は、サンプル空間２３０において最小および最大の境界座標により特定される。すなわち、ｘsの最小および最大値、ｙsの最小および最大値ならびにｚsの最小および最大値により特定される。これは、ビューポート変換２１４から得られる範囲に対応する。
【００８２】
この発明では、ビュー切頭体外部のレイについては考慮しないし、また、ビュー切頭体外ではどのサンプル点の処理も行わない。他のオブジェクトの画像を埋込む場合には、ビュー切頭体内に存在するオブジェクトのピクセルおよび深度値だけを読み取る。更新した深度値を書き出す場合、或るいはレンダリングされたボリュームのピクセル値を書き出す場合には、ビュー切頭体内に位置するピクセルおよび深度アレイのエレメントに対してのみ書き込みを行う。
【００８３】
サンプル座標系の変換
図２には、サンプル座標系に関する２つの変換が示してある。第１の変換は、リサンプリング（再サンプリング）変換（Ｒ）２３１であり、この変換では置換ボクセル座標がサンプル座標に写像（マッピング）される。これにより、置換座標２２０の各点（ｘv、ｙv、ｚv）はサンプル空間２３０において一致する点の座標（ｘs、ｙs、ｚs）に変換される。
【００８４】
一般に、変換Ｒは、サンプル空間（ｘs、ｙs、ｚs）の点を置換空間において一致する位置（ｘv、ｙv、ｚv）にマッピングする逆変換Ｒ-1を有する。この発明によるハードウエアレンダリングエンジンは、実際に、Ｒ-1変換を効率的に実行する。
【００８５】
この発明によれば、サンプル空間をｘsｙsｚs−順序（オーダ）で進捗し、各サンプル点毎に、逆リサンプリング変換Ｒ-1を増分的に適用することにより、ｘvｙvｚv−座標を得る。Ｒ-1の行列表現からレンダリングパラメータを取り出す。したがって一般には、サンプル空間をステップバイステップで進捗して、サンプル点を増分的にオブジェクト空間に写像（マッピング）する。
【００８６】
サンプル空間に関連する他の変換は深度ワープ変換（Ｄ）２４０である。この変換では、サンプル空間２３０の座標が画像空間２１３の座標に写像される。深度ワープ変換は２つの目的に仕える。
【００８７】
第１に、ｘｙ−画像オーダーボリュームレンダリングの場合には、後述するように深度ワープ変換でサンプル空間２３０のｚs−座標が画像空間２１３の深度値に変換される。なお、深度ワープ変換２４０ではｘs−およびｙs−座標は変更されないままに残る。
第２に、シヤーワーププロセスによるボリュームレンダリングの場合には、深度ワープ変換は、ｚs−座標を深度値に写像することに加えてワープステップ（歪曲変形ステップ）をも実行することができる。
【００８８】
レンダリングパラメータの導出
シヤーワープ処理もしくはプロセスのためのレンダリングパラメータを導出するには、逆ビュー／モデリング化変換によりカメラ座標２０７でｚ−次元に単位ベクトルを投影してオブジェクト座標２０１における均等な表現を見出すことで充分である。これにより、レイの勾配および他のレンダリングパラメータを導出できる。原点の割当ては特に必要ではなく、レイ間の間隔ならびにレイに沿うサンプル間の間隔は経験的に決定できる。
【００８９】
ここでは、ｘｙ−画像オーダーレンダリングを行う際に、レイが正確に画像平面内のピクセルの中心を通過するようにレンダリングパラメータおよび変換を決定する。
【００９０】
ｘｙ−画像オーダーレンダリングの利点は、その結果得られる二次元画像を、直接、表示装置もしくは出力装置にコピーでき、従来技術の場合にようにワープ（歪曲変形）処理その他の事後処理段階が必要とされない点にある。
【００９１】
このような変換を用い、ソフトウエアで、ビュー方向および（または）オブジェクトの配向に関係なくシーンもしくは場面内の該オブジェクトの位置を正確に制御することができる。後にこの分析手法を用いて、シヤーワーププロセス（剪断／歪曲変形）プロセスでレンダリングするための正確な設定量を演繹することについて述べるであろう。
【００９２】
ＸＹ−画像オーダーレンダリングの概要
ボリュームオブジェクトをレンダリングすべきグラフィックスの脈絡から図２の左側に示してあるすべてのグラフィックス変換を知ることから出発する。これには、モデル化変換（モデリング変換）Ｍ２０６、ビュー変換Ｖ２０８、投影変換ＰＪ２１０、透視分割２１２およびビューポート変換ＶＴ２１４が含まれる。以降、表記の便宜上、変換ＰＪ、透視分割、および変換ＶＴを単一の変換ＶＰで集約的に表すことにする。なお、変換Ｍ、ＶおよびＶＰはすべて逆変換ＶＰ-1を有するものと仮定する。
【００９３】
また、ボリュームオブジェクトを表示すべきビューポートに関する詳細が与えられているものとする。この詳細には、前面および後面の幅、高さおよび深度値depth Nearおよびdepth Farが含まれる。なお、深度値は、埋込まれた多角形オブジェクトをレンダリングするための慣用の多角形グラフィックスシステム、たとえばＯｐｅｎＧＬ（登録商標）で用いられている深度値と同じにすべきである。
【００９４】
最後に、ビューポートにおいて各レイに沿うサンプル点の数も得られる。
【００９５】
図８に示すように、ｘｙ−画像オーダーでボリュームレンダリングを行うのに下記のステップを実行する。
【００９６】
ステップ８１０においては、積ＶＰ×Ｖ×Ｍを反転し、その結果を用いて画像平面内の単位ベクトルをオブジェクト空間での表現に写像する。この表現から、置換変換Ｐおよびその逆変換Ｐ-1を構築する。
【００９７】
ステップ８２０においては、
【数１】
0004205327.tif 000002
を構築する。この行列は、置換座標系の任意点の画像座標系内の同じ点への変換を表す。
【００９８】
ステップ８３０において、行列Ｍpを
【数２】
0004205327.tif 000003
、すなわち、リサンプリング変換と深度ワープ変換の積に分解する。ＤおよびＲ各々の行列表現には２つの未知の項目がある。
【００９９】
冒頭に述べた仮定から、ステップ８４０でこれら未知の値の解を求めて、完全なＤおよびＲの行列表現を得る。
【０１００】
ステップ８５０において、Ｒを反転しＲ-1を得る。これは、サンプル空間の点を置換空間における座標に写像する変換の行列表現である。ＤおよびＲ-1の行列項目を用いて、レンダリングパイプラインのレジスタの増分値（ステップの大きさもしくはサイズ）を設定する。
【０１０１】
好適な実施の形態においては、上記のステップを、ユーザによる特定の観察モードの選択に応答し、ホストコンピュータ内のグラフィックスドライバーソフトウエアによって実行する。次いで、行列項目を、レンダリングパイプラインの動作を制御するレジスタに書き込む。レジスタ値は本質的に、サンプル点に対するステップサイズ（ステップの大きさ）を制御する増分値（デルタ（Δ）値）である。
【０１０２】
置換変換
置換変換Ｐを得るために、画像座標からオブジェクト座標に単位ビューベクトルの変換を行う。ここで画像座標における単位ビューベクトルとは、画像平面からｚ−軸に沿いボリュームオブジェクトに指向するベクトルであり、画像空間の深度軸のオリエンテーションもしくは配向に依存し下記のいずれかの式で表される長さの深度の１単位である。
【数３】
0004205327.tif 000004
【０１０３】
画像平面から離れるに伴い深度が増加すると仮定すると、ＶＰ、ＶおよびＭ変換の逆変換を適用してベクトル［ｄｕ、ｄｖ、ｄｗ、１］Tを得ることによりオブジェクト空間にビューベクトルを表現することができる。ここでＴは変換演算子であり、次式で与えられる。
【数４】
0004205327.tif 000005
【０１０４】
このベクトルから、オブジェクト座標の軸の置換座標の軸への写像を、レイがｚ−軸に最近似的に平行で、非負のｘ−、ｙ−およびｚ−方向においてボリュームを横切るように演繹することが可能である。
【０１０５】
ｚ−軸の選択は直截的である。このｚ−軸は、構成要素もしくはコンポーネントの絶対値｜ｄｕ｜、｜ｄｖ｜および｜ｄｗ｜の内の最大値に対応する軸である。したがって｜ｄｕ｜が最大であるとすれば、ビュー方向はｕ−軸に最近似的に平行であり、したがってこのｕ−軸が置換座標のｚ−軸に写像される。同様にして｜ｄｖ｜が最大である場合には、ｖ−軸が置換座標におけるｚ−軸に写像される。また、｜ｄｗ｜が最大である場合にはｗ−軸が置換座標のｚ−軸に写像される。２つのコンポーネントの絶対値が等しく、それが第３のコンポーネントよりも大きい場合には、２つの内のいずれかを選ぶことができる。また、｜ｄｕ｜＝｜ｄｖ｜＝｜ｄｗ｜である場合には、どの軸を選択しても良い。
【０１０６】
上記のことは図９に図示してある。画像座標２１３から単位ビューベクトルの変換値をオブジェクト座標系２０１におけるｕｖ−およびｖｗ−平面に投影する。ベクトル９０１は、ｕｖ−平面上への単位ベクトルの投影であり、ベクトル９０２は、単位ベクトルのｖｗ−平面への投影である。図９から明らかなように、ビューベクトルはｕ−軸に最近似的に平行である。すなわち、ビューベクトルとｕ−軸との角度は、ビューベクトルとｖ−軸およびビューベクトルとｗ−軸との間の角度よりも小さい。これは、｜ｄｕ｜、すなわちｕ−成分の大きさが、｜ｄｖ｜或るいは｜ｄｗ｜のいずれよりも大きいことと等価である。
【０１０７】
下表１は、ｍａｘ(｜ｄｕ｜,｜ｄｖ｜,｜ｄｗ｜）＝｜ｄｕ｜が成り立つ右側のシステムにおける軸の割当てを示す。
【０１０８】
【表１】
0004205327.tif 000006
【０１０９】
ｚ−軸の同定後、その方向ならびに他の２つの軸の割り当てをｄｕ、ｄｖおよびｄｗの記号から導出する。特に、レイは置換座標系においてｘ−、ｙ−およびｚ−次元で非負の方向を指向しなければならない。したがって、便宜上、右側座標系を考察の対象にする。２４の可能な右側座標系があり、その内の８つの座標系はそれぞれｚ−軸の写像に関するものである。さらに、他の２４の可能な左側座標系がある。
【０１１０】
表１は、｜ｄｕ｜が少なくとも｜ｄｖ｜或るいは｜ｄｗ｜のいずれとも同じ大きさである右側座標系への写像もしくはマッピングを示す。｜ｄｖ｜が｜ｄｕ｜よりも大きく且つ少なくとも｜ｄｗ｜と同じ大きさである場合ならびに｜ｄｗ｜が｜ｄｕ｜或るいは｜ｄｖ｜のいずれよりも大きい場合について、左側の座標系と関連し、表１に対応の表をどのようにして構築するかは説明するまでもなく理解できるであろう。
【０１１１】
表１から単位ビューベクトルがｕ−軸に最近似的に平行である８つのケースに対応する８個の置換行列Ｐを構築することができる。これら行列は図１０に示してある。軸が他の負の軸に写像される置換の場合には、原点は当該次元において−１により変換されることを述べておく。したがって、図１０に示したいくつかのＰ行列の４番目の列にはいくつかの非零値がある。置換行列Ｐから、逆置換行列Ｐ-1を得ることが可能である。
【０１１２】
中間変換Ｍp
図８のステップ８２０で、次式で定まるＭpと称する中間変換を行う。
Ｍp＝ＶＰ×Ｖ×Ｍ×Ｐ-1          [1]
【０１１３】
ＶＰ、ＶおよびＭはグラフィックスの脈絡から行列内で既知であり、そしてＰ-1は上記の置換変換から求めることができるので、Ｍpを行列乗算で求めることが可能である。
【０１１４】
図２を参照すれば明らかなように、Ｍpは、置換座標を画像座標に変換する。また、Ｍpは置換座標の原点を画像空間内の点に変換する。
【０１１５】
１つの３Ｄ空間から他の３Ｄ空間への線形変換は４つの列ベクトルから構成される同次座標における行列として表現することができる。最初から３つの列は、ソース空間の３つの各次元の単位ベクトルがどのようにしてそれぞれ目標空間内のベクトルに変換されるかを定義する。４番目の列は、ソース空間の原点が目標空間の原点にどのよう変換されるかを定義する。Ｍpはこのような線形変換であり、したがって、下記のように記述される。
【数５】
0004205327.tif 000007
【０１１６】
上記行列において、列ベクトル［ｄｘiｘv、ｄｙiｘv、ｄＤxv、０］T は置換空間におけるｘ−次元の単位ベクトル（すなわち、Ｘv）の画像空間、すなわちＸiＹiＤ−座標系における表現である。
【０１１７】
同様に、列ベクトル［ｄｘiｙv、ｄｙiｙv、ｄＤｙv、０］T および［ｄｘiｚv、ｄｙiｚv、ｄＤｚv、０］T も同様に、それぞれ、置換空間におけるｙ−およびｚ−次元の単位ベクトルの画像空間における表現である。画像空間座標［Ｘ０i、Ｙ０i、Ｚ０i、１］T は置換空間の零点もしくは原点を表す。
【０１１８】
Ｍp は式１から行列乗算により求めることができるので、式２における各項は既知の値となる。
【０１１９】
Ｍp の分解
図２から、変換Ｍp は下式に等価であることが分かる。
Ｍp＝Ｄ×Ｒ            ［３］
【０１２０】
すなわち、置換座標、すなわちＸvＹvＺv−空間における点またはベクトルを、リサンプル変換Ｒを用いてサンプル空間、すなわちＸsＹsＺs−空間の座標にマッピングもしくは写像することにより画像空間に写像（マッピング）し、次いでその結果を、深度ワープ変換Ｄを用いて画像空間に写像する。言うまでもないことであるが、式２は式１と同じ結果を生ずる。
【０１２１】
既述のｘｙ−画像オーダーの定義により、サンプル空間におけるｘs−およびｙs−座標は正確に、画像空間におけるｘi −およびｙi −座標と同じである。さらにまた、サンプル空間における零点を画像空間における点（０、０、depth０）に写像する。サンプル空間のｚs −座標だけは深度ワープ変換により変換する。したがって、Ｄは下式で表される。
【数６】
0004205327.tif 000008
【０１２２】
上式から明らかなように、サンプル空間内の任意の点［ｘs、ｙs、ｚs、１］T  は下式で表される点として画像空間に写像される。
【数７】
0004205327.tif 000009
【０１２３】
Ｄの第３行の４つの項目はいずれも既知ではない。しかしながら、これら項目はすべて、他の情報および他の仮定、特に、画像空間のｘ−およびｙ−次元はサンプル空間のこれら次元と同じであるという仮定から、画像空間のサブセット（部分集合）としてビューポートの仕様ならびに式３の行列Ｍpから演繹することができる。
【０１２４】
Ｒの行列表現もまた式３ならびにｘｙ−画像オーダーの定義から次のように書き換えることができる。
【数８】
0004205327.tif 000010
【０１２５】
これは、サンプル空間のｘs−およびｙs−軸が正確に画像空間のｘi−およびＹi−軸と同じであるからである。したがって、Ｒの最初から２つの行における値はＭpの最初から２つの行における値と正確に同じである。しかしながら、表記は各項毎に「ｉ」を「ｓ」で置換することにより変更してある。
【０１２６】
第３の行は上述の２つの行とは異なる。サンプル空間において、定数ｚsの平面は、置換空間における定数ｚvの平面に平行である。すなわち、基底面に平行である。したがって、ｘv或るいはｙvのいずれかに変化があってもｚsには全く変化は生じない。したがって、Ｒの第３行の最初から２つの項目は零である。また、第３行の最後の２つの項目、すなわちｄｚsｚvおよびＺ０sは依然として未知である。
【０１２７】
Ｄにおける未知項目の解法
式５で示したＲの左下の４分の１区分が零であることに注目されたい。したがってＲは下記のように書き換えることができる。
【数９】
0004205327.tif 000011
【０１２８】
上式中、Ａ、ＢおよびＣは２×２行列である。上述のように、ＡおよびＢの項はすべて既知であるがＣは依然として２つの未知項目を含んでいる。ＭpおよびＤの行列式を式３に代入することにより次式が得られる。
【数１０】
0004205327.tif 000012
【０１２９】
特に第３行は下記のように表される。
【数１１】
0004205327.tif 000013
【０１３０】
Ｒの左下の４分の１区分は零であるので、下式が成り立つ。
【数１２】
0004205327.tif 000014
【０１３１】
転置をとると、式９は、
【数１３】
0004205327.tif 000015
したがって、
【数１４】
0004205327.tif 000016
に等価である。
【０１３２】
ｄｘsｘv、ｄｙsｘv、ｄｘsｙvおよびｄｙsｙvはＲから既知であり且つｄＤｘvおよびｄＤｙvはＭpから既知であるので、行列反転および乗算を用いることにより、Ｄの２つの未知項目、すなわちｄＤｘsおよびｄＤsを計算した。
【０１３３】
レイに沿うサンプル点の間隔
第３の未知項目、すなわちｄＤｚsは下式で求められる。
【数１５】
0004205327.tif 000017
【０１３４】
すなわち、ｄＤｚsは、深度単位で測定してレイに沿うサンプル点間の距離、すなわち間隔を表す。式１２は、深度単位で測定してビューポートの前部から後部までの全距離を該距離内に存在するサンプル数で除算することを意味する。なお、ｄＤｚsは、深度値が画像平面に向かって増加するか或るいは画像平面から離れるにつれて増加するかに依存して正かまたは負となる。
【０１３５】
レイに沿うサンプル点の間隔もしくは距離を計算するための好適な方法は、ビューポートにおけるボリュームオブジェクトの回転に関係なく且つボリュームデータセット自体に固有の異方性またはシヤー（剪断変形）に関係なく、サンプル段階毎に深度値に一定の変化を与えることである。画像処理の観点からは、このことは厳密には必要ではないが、これによって利点が得られると信じられる。なお、サンプル間間隔はまた他の方法を用いて決定することも可能であることを付記する。
【０１３６】
例として、図１１の（ａ）および（ｂ）は、異方性をもってサンプリングしたボリュームデータセット（集合）１１００の断面を示す。これら図において、ボクセルは「×」印１１０１で表されており、矢印１１０２は２つのビュー方向（レイ方向）を表し、そして各矢印におけるハッシュマーク１１０３はレイに沿うサンプル点を表す。
【０１３７】
図１１の（ａ）に示す矢印上のハッシュマークは、画像内で測定した場合でも、実世界で測定した場合でも或るいは物理空間で測定した場合でも、図１１の（ｂ）に示す矢印上のハッシュマークと同様に正確に同じ距離だけ互いに離間している。図１１の（ａ）の場合には、ビューベクトルは近似的に水平であり、したがって、置換空間のｚv−軸は水平軸である。サンプル点の間隔は、ボクセルスライス毎に実質的に２つのサンプルが得られるような間隔である。図１１の（ｂ）の場合、ビューベクトルは近似的に垂直であり、したがって、置換空間のｚv−軸としては垂直軸が選ばれる。右側の矢印に沿うサンプル点の間隔は実質的に、ボクセルスライス毎に３サンプルが得られる間隔である。
【０１３８】
Depth０の評価
サンプル空間の原点の深度depth０の値の選択は決して無益ではない。ビューポートに対してサンプル空間は歪んでいるので、原点の深度depth０はボリュームを見る方向で変化し得る。このことは、図１２の（ａ）〜（ｃ）を参照することにより一層良く理解できよう。なお、これら図は、ボリュームオブジェクトが３つの異なった仕方で位置設定されているビューポートの俯瞰図である。なお、ビューポートのｙ−次元は図の面に対して垂直である。
【０１３９】
各図において、画像平面は右側に、そしてビュー方向は視点１２０１から右に向かうベクトルにより示されている。また、ビューポートは実線で描いたボックス１２０２で示してあり、ビューポートの長さはビューベクトルに平行であり、深度値depth Near１２０６およびdepth Far１２０７はボックスの端を表す。画像平面は図の面に対して垂直であり、ｘ−次元は上から見てｘsに平行に図の面内に存在する。さらに、ｙ−次元は図の面に対して垂直である。
【０１４０】
図１２の（ａ）は、ボリュームオブジェクト、すなわち実線で示した輪郭を有する小さいボックス１２０３をその面の１つに対し垂直で見た状態で示している。この場合、depth０の割当ては容易である。すなわち、depth Near１２０６に設定することができる。したがってサンプル空間は、ビューポートに正確に適合もしくは嵌合する三次元空間である。サンプル空間のｘｚ−断面は破線１２０４でその輪郭が示してある。このサンプル空間はビューポート内のすべての点を含む。たとえば、ビューポート内に多角形のオブジェクトを描いたとすると、該多角形オブジェクトはサンプル空間内に存在しボリュームオブジェクト内に部分的に埋込まれ得る。
【０１４１】
図１２の（ｂ）は、図の面に垂直な軸線を中心に回転したボリュームオブジェクトを示している。ｚv−軸は、置換変換に関して既に述べた方法により選択される。サンプル空間のスライスは、画像平面に最近似的に平行であるボリュームの面に対して平行であるので、サンプル空間はボリュームオブジェクトの回転量分だけ歪む。たとえば、多角形オブジェクトをビューポート内に埋込む目的でサンプル空間がビューポート内のすべての点を含むのが望ましいことを前提条件とすると、サンプルの前後の境界は、破線１２０２により示すように延伸しなければならない。サンプル空間のｘs−およびｚs−軸は矢印およびラベルで示してある。
【０１４２】
サンプル空間の原点は、破線で示した輪郭の左上の端によって表される角１２０５に位置する。サンプル空間のｘs−およびｙs−次元は俯瞰図の場合と正確に同じである。しかしながら、サンプル空間の原点の深度値depth０は全く異なる。したがって、このサンプル空間の原点の深度値depth０は、depth Nearおよびdepth Far間ならびにビューポート内のすべての点が、該ビューポートにより特定される正しい深度値を有するように計算しなければならない。たとえば、破線で示した輪郭の左下の角１２０６は、depth Nearの深度値を有しなければならない。正しい深度値が、図１２の（ｂ）における位置１２０５のような位置においてハードウエアレジスタでサポートされている範囲を越える場合には、深度の計算は不正確になり得る。この発明の好適な実施の形態においては、この問題に対処するために、深度計算論理で記号（±）付きの深度を取り扱うことができ且つ最大深度を大きくすることができる。
【０１４３】
図１２の（ｃ）には、ビューポート内で他の方向に回転された上述のものと同じボリュームオブジェクトが示してある。したがって、ｚv−軸は図１２の（ｂ）に示した軸とは異なる。その結果、サンプル空間は他の方向に歪む。この場合、サンプル空間の原点の深度値depth０には、値depth Nearを割り当てることができるが、サンプル空間は画像平面の左側の点を含み、深度値はdepth Nearよりも画像平面に近くなる。
【０１４４】
ｙｚ−次元においてサンプル空間の類似の歪みを想像することは可能であるが描画することは困難である。さらにまた、図１２の（ｂ）に示すように、サンプル空間はｘｚ−次元において１つの方向に歪み、そしてｙｚ−次元においては、図１２の（ｃ）に示すように他の方向に歪む可能性がある。このような歪みもしくはスキューイングを可視化するためには３Ｄモデルが要求される。
【０１４５】
しかしながら、歪みもしくはスキューイングに関係なく、この発明によれば、Ｄに対する未知項目の解に関して先に述べたようにして、Ｄの項目からdepth０の値を求めることができる。まず、ビューポート内のサンプル空間のスライス零の４つの角は、下記のように表されるｘsｙs−座標を有することに注目する。
【数１６】
0004205327.tif 000018
【０１４６】
上式中、widthおよびheightは、ビューポートの画像平面の幅および高さを表す。したがって、これら４つの角の深度値は、行列乗算により式４の深度変換Ｄから求めることができる。すなわち、それぞれ下記の通りである。
【数１７】
0004205327.tif 000019
【０１４７】
depth Nearがdepth Farよりも小さい場合、すなわち、深度値がビュワーからオブジェクトに向かって増加する場合には、これら４つの角の最大深度値を選択する。この最大深度値は、depth Nearより小さいかまたはそれに等しくすべきである。すなわち、最大深度値を有する角はビューポートの前面に位置するか或るいはそれよりも前に位置すべきである。便宜上、深度値depth Nearを割り当てることにする。すなわち、
【数１８】
0004205327.tif 000020
【０１４８】
逆に、depth Nearがdepth Farよりも大きい場合、すなわち深度値が画像平面に向かって増加する場合には、上記４つの角の内の最小のものを選択する。すなわち、
【数１９】
0004205327.tif 000021
【０１４９】
このようにして、深度行列Ｄの導出が完了する。ここで１つ注意を喚起しておく。すなわち、深度値は、ビューポート外部のサンプル空間領域、すなわち、図１２の（ｂ）および図１２の（ｃ）において視点の左側および右側の三角形の領域において深度カウンタの上／下限値を越えたりまたは下回わらないことである。
【０１５０】
Ｒ-1レンダリングパラメータ
リサンプリング変換Ｒの残った未知項目を決定する。リサンプリング変換Ｒの第３および第４列とＤの第３行とのドット積を取ることによりＭpのエントリもしくは項目ｄＤｚvおよびＺ０iが得られる。すなわち、
【数２０】
0004205327.tif 000022
および
【数２１】
0004205327.tif 000023
式１３をｄｚsｚvについて解くと次式が得られる。
【数２２】
0004205327.tif 000024
【０１５１】
同様にして、式１４をＺ０sを解くと次式が得られる。
【数２３】
0004205327.tif 000025
【０１５２】
このようにして、ＲおよびＤは今や双方ともに既知となる。Ｄの項目もしくはエントリを後述のようにレンダリングエンジンのレジスタに割り当てる。リサンプリング変換Ｒは、使用前に反転しなければならない。
【０１５３】
式１５および１６から、Ｒのすべての項目の値が今や既知となっている。したがって、サンプル空間を置換空間に変換するためには、単にＲを反転するだけで良い。これは、通常の行列反転アルゴリズムにより直接行うことができる。
【０１５４】
Ｒ-1はサンプル空間の置換空間への線形変換を表す。したがって、これは、同次座標における行列として下記のように書き換えることができる。
【数２４】
0004205327.tif 000026
【０１５５】
この行列の項目もしくはエントリは、ボリュームデータセットをｘｙ−画像オーダーにしたがってレンダリングするのに必要な値である。後述するように、これら値はレンダリングパイプラインのレンダリングレジスタに書き込まれる。
【０１５６】
サンプル空間のスライス内のサンプル点のスペーシング
既に述べたように、ｘｙ−画像オーダーレンダリングの場合には、サンプル空間は、画像平面上のピクセルを通るレイを含む。また、シヤーワープの場合には、基底面を通るレイを含む。この発明においては、サンプル空間のスライス（サンプル点の平面）は、置換空間のスライス（ボクセルの平面）に対して常に平行である。しかしながら、サンプル空間のｘ−およびｙ−軸は必ずしも置換されたボクセル空間の軸に対して平行ではない。したがって、ボクセルのスライスと交差するレイの格子は、図１９に示すように、任意の角度にすることができる。さらにまた、画像平面上に矩形のパターンで組織化されたレイは、平行四辺形パターンでボクセルスライスと交差し得る。
【０１５７】
図１９を参照するに、ボクセル１９０１は、シンボル「×」で示されており、矩形格子１９０２に整列されている。置換座標におけるｘv−およびｙv−軸１９０３は左上の隅に示してあり、ラベルＸvおよびＹvが付けられている。サンプル点は、画像平面から投射されたレイが同じスライスと交差する点である。これら点は中実のドット１９０４で示されており、非矩形格子上に配列されている。サンプル空間のｘ−およびｙ−軸１９０５は左下の隅にラベルＸsおよびＹsで示してある。
【０１５８】
下表２に示すレジスタｄＸｖｄＸｓ、ｄＹｖｄＸｓ、ｄＸｖｄＹｓおよびｄＹｖｄＹｓは、同じスライスにおける隣接の点のサブボクセル座標からサンプル空間における点の固定点サブボクセル座標を見付ける方法を指定する。
【０１５９】
【表２】
0004205327.tif 000027
【０１６０】
詳述すると、レジスタｄＸｖｄＸｓは、ｘs−方向に１単位進むのに必要なＸv−方向における単位数を格納する。これは、式１７のｄｘvｘsに相当し、図１９に円で囲んだ参照数字１で示してある。レジスタ値ｄＹｖｄＸｓは、ｘs−方向に１単位進むのに必要なＹv−方向における単位数を示す。これは、式１７のｄｙvｘsに相当し、図１９に円で囲んだ参照数字２で示してある。レジスタ値ｄＹｖｄＹｓは、ｙs−方向に１単位進むのに必要なＹv−方向における単位数を示す。これは、式１７のｄｙvｙsに相当し、図１９に円で囲んだ参照数字３で示してある。さらに、レジスタ値ｄＸｖｄＸｓは、ｙs−方向に１単位進むのに必要なＸv−方向における単位数を示す。これは、式１７のｄｘvｙsに相当し、図１９に円で囲んだ参照数字４で示してある。
【０１６１】
次に、この発明が教示するｘｙ−画像順序でボリュームデータセットをレンダリングするレンダリングエンジンの好適な実施の形態について説明する。
【０１６２】
パイプライン編成
図１３は、この発明によるボリュームレンダリングエンジン１３００の全体的な編成もしくは構成を示す。エンジン１３００は単一のＡＳＩＣ（特定用途向けＩＣ）として実現するのが有利である。レンダリングエンジンの主たるモジュールは、メモリインターフェース１３１０、バス論理１３２０、シーケンサー１３３０および４本の並列パイプライン１３４０である。４本すべてのパイプラインを連絡する一対のスライスバッファ１３５０を除き、パイプライン（Ａ、Ｂ、ＣおよびＤ）は互いに独立に動作する。
【０１６３】
メモリインターフェース１３１０は、レンダリングメモリを構成する８個の倍速（ＤＤＲ）同期ＤＲＡＭ（ダイナミックＲＡＭ）チャンネル１３６０を制御する。レンダリングメモリとは、ボリュームレンダリングに必要とされるすべてのデータ１３１１、すなわちボクセル、入／出力画像、深度値、参照テーブルおよびコマンドキュー（待ち行列）のための一体的な記憶装置である。メモリインターフェース１３１０はメモリ１３６０に対するすべてのメモリアクセスを実行し、バス論理１３２０およびシーケンサー１３３０の要求を調停し、広帯域幅のアクセスおよび動作に際してモジュールおよびメモリ１３６０にアレイデータを分配する。
【０１６４】
バス論理
バス論理１３２０は、ホストコンピュータシステム１０とのインターフェースを構成する。ホストコンピュータシステム１０は、ＣＰＵ１１および主メモリ１２を具備する。主メモリには、オペレーチングシステムと交信するグラフィックアプリケーションソフトウエアおよびグラフィックドライバを格納しておくことができる。ソフトウエアはＣＰＵで実行される。好適な実施例においては、ホストコンピュータで表２のレンダリングレジスタ用の値を発生するのが有利である。
【０１６５】
ホストコンピュータ１０がパーソナルコンピュータ（ＰＣ）或るいはワークステーションである場合には、バスは、たとえばＰＣＩ規格バージョン２.２にしたがい６４ビットの６６ＭＨｚＰＣＩバス１３２１とすることができる。バス論理もメモリインターフェース１３１０を介してメモリ１３６０とデータ転送を行うためにＤＭＡ動作（直接メモリアクセス動作）を制御する。なお、ＤＭＡ動作はバーストモードでのデータ転送である。
【０１６６】
この目的で、レンダリングエンジンはＰＣＩバスマスタとして機能する。バス論理はまた、内部レジスタ１３２２および主メモリ１２に対してアクセスを行う。これらアクセスは、個々のレジスタおよびメモリ内の個々の記憶場所に対する直接読出しおよび／または書込みである。これらのアクセスは、上記ホストコンピュータから開始することもできるし或るいはまたＰＣＩバス上の他の何らかのデバイスにより開始することができる。バス論理はまた、レンダリングエンジンの動作の効率的な制御を行うためのレンダリングコマンド（指令）を解釈する。さらにまた、バス論理はレンダリング動作を制御するためにシーケンサー１３３０に直接レジスタ値を送ったり、シーケンサー、たとえば表２のレジスタからステータス情報を受ける。
【０１６７】
シーケンサー
シーケンサー１３３０はボリュームレンダリングエンジンを制御する。該シーケンサーは、メモリから取り出すべきデータを決定し、該データを４本のパイプライン１３４０に発送し、適時に個々のパイプラインに対し補間重みのような制御情報を送り、そしてレンダリング動作からの出力データを受ける。シーケンサ自体は多数のレジスタによって制御される有限状態機械である。これらレジスタは一般に、レジスタロード指令に応答してバス論理１３１０により書込まれる。内部的にはシーケンサは、一度に１セクションずつサンプル空間を段階的に処理するのに必要とされるカウンタの保守を行う。ここで、１セクションとは、たとえば２４×２４個までのピクセルを含む画像平面上の矩形領域である。別の見方として、セクションとは、レイならびにこれらレイに沿うすべてのサンプル点の集合と見做すことができる。シーケンサはまた、サンプル座標の置換ボクセル座標への変換をも制御して、４本のパイプラインの各ステージで必要とされる制御情報を発生する。
【０１６８】
パイプラインおよびミニブロック
図１４は、４本のレンダリングパイプラインの詳細を示すとともに、これらパイプラインにどのようにしてデータおよびレンダリング動作が配分するかを示す図である。各パイプラインは勾配推定段１４１０、分類／補間段１４２０、イルミネータ段１４３０および合成段１４４０を備える。
【０１６９】
ボクセルは、メモリ１３６０内にミニブロック１４０１、すなわちそれぞれ２×２×２ボクセルの小立法体アレイとして記憶される。レンダリング動作中、シーケンサ１３３０はメモリインターフェースを介してミニブロックストリームを読み込む。これらミニブロックは、１クロックサイクル毎に１ミニブロックの速度でパイプラインに供給される。
【０１７０】
ミニブロックは、ｘ−ｙ−ｚ−オーダーでボリュームデータから読出される。すなわち、ミニブロックはｘ−方向において逐次読出されて１セクションの行を埋め、次いでｙ−方向において行ベースでスライスを埋め、最後にｚ−方向においてスライス-バイ-スライスベースで当該セクション全体をレンダリングする。
【０１７１】
各ミニブロックがメモリインターフェース１３１０を介して到達する毎に、該ミニブロックはビュー方向にしたがい軸を配向することによって既述のように置換変換Ｐにしたがい置換される。そこで、ミニブロックは４つの１×１×２ボクセルアレイ１４０２に分解される。すなわち、ｚ−方向に配列された４対のボクセルに分解され、図１３に示すように、一対毎に各パイプラインに供給される。
【０１７２】
各ボクセル対は、勾配推定段１４１０を通されて、それにより、図１の（ａ）および図１の（ｂ）を参照し説明したように、各ボクセル毎に勾配値が得られる。中心差分演算子を用いて勾配を求める結果として、出力ボクセルおよび勾配は、入力から各次元で１単位ずつ偏位している。この結果、パイプライン間で少量のデータ交換が要求される。
【０１７３】
勾配推定段から、ボクセルおよび勾配１４０３は分類／補間段１４２０に供給される。この段においては、ボクセルフィールドはＲＧＢα値に変換されて、勾配とともにレイに沿うサンプル点における値に補間される。既述のように、サンプルスライスはボクセルスライスに対し平行である。なお、この段における分類および補間ステップはいずれの順序で実施しても良い。また、分類／補間段は、４本のパイプラインすべてにより共有される一対のスライスバッファ１３６０を有する。
【０１７４】
４個のパイプラインの４つの分類／補間段の出力１４０４は、サンプル空間における２×２点アレイ（点配列）におけるＲＧＢα値および勾配のアレイである。なお、２×２点アレイはスタンプと称し図１８に参照数字１８０５で示してある。スタンプの点は常にサンプル空間の同じスライス（平面）内に位置し、レイと整列している。画像平面上のピクセルをレイが通過する場合、これをｘｙ−画像オーダーと称する。と言うのはｘs−およびｙs−座標が画像空間の座標と同じであるからである。
【０１７５】
次に、ＲＧＢα値および勾配のスタンプは４つのイルミネータ１４３０へ供給される。これらイルミネータにおいては、反射率マップを用いて周知の Phong シェーディング（陰影付け）が行われる。各パイプラインのイルミネータは、レンダリング中データ交換を行わないという意味で、他のパイプラインのイルミネータから独立している。尤も当然のことながら、イルミネータはすべて同じクロックで同期的に動作する。
【０１７６】
勾配は、レンダリング動作が勾配の出力を指定する場合を除いて、イルミネータ段で消費される。レンダリング動作が勾配の出力を指定する場合には、パイプラインにおける赤、緑および青の色成分が３つの勾配成分により置換される。
【０１７７】
各パイプラインのイルミネータ段の出力１４０５はサンプル点の色寄与を表す照明されたＲＧＢα値である。この出力は合成段に送られる。合成段１４４０では、レイのＲＧＢα値がピクセルに結合される。１つのセクションのレンダリングの終わりで、４つの合成段の出力１４０６からは、一度に１つずつスタンプが読出されてレンダリングメモリ１３６０に格納される。
【０１７８】
以下、各ブロックの詳細について説明する。
【０１７９】
勾配の推定
図１５は、１つのパイプラインの勾配推定段１５００を示す。先に述べたように、８つのボクセルからなるミニブロックはｚ−次元で前後に配列された４対のボクセルに区分される。各ボクセル対は各パイプラインに供給される。すなわち、各サイクルの始めにパイプラインの頂部に置換座標（ｘ、ｙ、ｚ）および（ｘ、ｙ、ｚ＋１）における一対のボクセル１５０１が入力される。ここでｘ、ｙおよびｚは任意の値であるが、ｚは偶数である。
【０１８０】
ボクセル対は、１６×１６×２個の３２ビットボクセルの大きさ或るいはそれより大きいサイズのスラブバッファ１５１０に書き込まれる。したがって、４組のパイプラインは、任意の視角における大きさのセクションのスライスをレンダリングするのに充分な大きさの集合的なスラブバッファを実現している。入力ボクセル対はまた、一対のｚ−中心差分モジュール１５２０の一方に供給される。一対の、すなわち２つの中心差分モジュール１５２０は、スラブバッファから読み取られた同じｘ−およびｙ−座標を有する一対のボクセルのフィールドを出力する。すなわち、上記一対のもしくは２つの中心差分モジュールは下記の式で表される２つの差分を計算する。
【数２５】
0004205327.tif 000028
【０１８１】
上式中Ｆz（ｘ、ｙ、ｚ）は、勾配のｚ−成分のベースとなる座標（ｘ、ｙ、ｚ）におけるボクセルのフィールドの値である。
【０１８２】
ここで、上記中心差分対は、ｚ−方向においてボクセル座標から１単位だけ偏位している。したがって、１スライス遅延段１５３０を設けて、上記対のボクセルを遅延しこれらボクセルを、新たに算出した勾配のｚ−成分、すなわちＧzと整列する。
【０１８３】
次いで、一対のボクセルおよび一対のＧzを含む整列されたセットを１６×１×２サイズの行バッファ１５４０、すなわちｘ−次元が１６単位幅で、ｙ−次元が１単位幅で、ｚ−次元が２単位深度である行バッファに格納する。行バッファの各エレメントは、３２ビットまでの元のボクセル値および対応のＧz値（１２ビットに記号）を記憶する。対の入力（ボクセル−Ｇz）値も一対のｙ−中心差分モジュール１５５０の一方に供給される。
【０１８４】
上記２つのモジュールの他方は、その入力にｘ−およびｚ−座標が同じであるが、ｙ−座標がｙ−２である行バッファ１５４０内の対の（ボクセル−Ｇz）値を受ける。したがって、ｙ−中心差分モジュールは下記の式で表される２つの差分を計算する。
【数２６】
0004205327.tif 000029
【０１８５】
上式中、Ｆy（ｘ、ｙ、ｚ）は勾配のｙ−成分のベースとなる座標（ｘ、ｙ、ｚ）におけるボクセルのフィールドの値である。
【０１８６】
パイプラインがスラブ内のボクセルＧz値の行を処理する際に、該パイプラインは交互の行だけを処理する。介在する行、たとえばｙ−座標（ｙ−１）は別のパイプラインによって処理される。これはミニブロックが区分化されてパイプラインに分配されるためにである。この結果、ｙ−中心差分は、対の入力ボクセルＧz値からｙ−次元において１単位だけずれることになる。このずれもしくは不整列を確定するために、パイプラインは同じｘ−座標であるがｙ−座標が異なるパイプラインと、その対の入力ボクセル−Ｇz値を交換する。対のボクセル−Ｇz値は１行サイクルだけ遅延される。これは、交換／遅延ブロック１５５５によって行われる。
【０１８７】
この勾配推定段のセクションの出力はしたがって、座標（ｘ、ｙ−１、ｚ−１）および（ｘ、ｙ−１、ｚ）の各々における元のボクセル、Ｇz値およびＧy値である。
【０１８８】
このプロセスが、勾配Ｇxのｘ−成分に対してどのように繰り返されるかは容易に理解されるであろう。ｘ−バッファ１５５８は１エレメント分だけ大きい深度を有し、座標（ｘ−２、ｙ−１、ｚ−１）に対する元のボクセル、Ｇz値およびＧy値を格納している。対のｘ−中心差分エンジン１５６０は下記の演算を実行する。
【数２７】
0004205327.tif 000030
【０１８９】
上式中、Ｆx（ｘ、ｙ、ｚ）は、勾配のｘ−成分のベースとなるボクセルのフィールドの値である。この場合にも、元のボクセルならびにＧzおよびＧy値を含む入力値をブロック１５６５を介し反対側のｘ−座標のパイプラインの値と交換して各量を１ボクセル分の遅延で新たに計算したＧx値と整合（位置合わせ）させなければならない。
【０１９０】
勾配推定段の最後のセクション１５７０では、勾配の最終的な「クリーンナップ（整理または整頓）」が行われる。まず、勾配は、Ｇx、ＧyおよびＧzの成分がオブジェクト座標のＧu、ＧvおよびＧwに変換されるように「逆置換」される。第２に、必要に応じて既に述べたように、元のデータセットにおける異方性およびシヤーを補正するためにグラジェント補正行列を適用する。この場合，補正行列は３×３上部三角行列であって、勾配をオブジェクト空間２０１から物理空間２０２に変換する。図２を参照されたい。これにより一層正確なイルミネーションすなわち照明の実現が可能になる。
【０１９１】
第３に、勾配成分を勾配推定モジュールにおける内部精度から標準のフォーマットに丸めて、記号ビットを加え、範囲［０,..,１］内の循環小数として送り出す。
【０１９２】
勾配推定段１５００には内部的な機能停止は起こらない。しかしながら、入力データが無い場合とか或るいは次続のモジュールが出力を受け付けることができない場合には、機能停止が有り得る。そこで勾配推定段の一番上に、入力ボクセル対を書き込むＦＩＦＯ（先入れ先出し）メモリを設けておく。メモリインタフェースが処理に要する時間よりもメモリからデータを読出すのに長い時間をとる場合には、このＦＩＦＯを空にして、勾配推定段は単に待機する状態となる。
【０１９３】
同様に、パイプライン内の次続の段、すなわち分類／補間段が多くのボクセルおよび勾配を受け付けることができない場合には、勾配推定段は、読み取りおよびボクセル処理を停止するだけである。この場合にも、この種の機能停止中にデータの損失が起こらないようにするために、勾配推定段の一番下側に小さな容量のＦＩＦＯを設けておく。
【０１９４】
分類／補間段
図１６は分類／補間段の概略図である。この分類／補間段は、ボクセルフィールド抽出ユニット１６１０と分類／不透明度重みユニット１６２０を有する。分類／不透明度重みユニット１６２０はマルチプレクサ１６３０を介してパイプラインのトップ近傍或るいは下部近傍に接続し、交差接続構造を実現することができる。分類／補間段はまた、原または分類ボクセルおよびそれらの勾配を記憶するための３対のスライスバッファ１６４０と、ｚ−次元における原または分類ボクセルフィールドおよび勾配成分を補間する（サンプリング）するためのｚ−補間ユニット１６５０と、ｚ−補間値および勾配のスライスを保持する２つのサンプルバッファ１６６０と、サンプルバッファ内のｚ−補間サンプル値をｘ−、ｙ−次元で補間（サンプリング）してサンプル空間の点におけるそれらの値を得るｘｙ−補間ユニット１６７０とを有する。
【０１９５】
前処理および分類
データ１６０１は、図１５の勾配推定段から、関連の勾配とともにボクセルの流れもしくはストリームの形態で分類／補間段（ＣＩ）に達する。ボクセルは整数の置換座標、すなわちｘv、ｙv、ｚvを有する。好適な実施の形態においては、レンダリングモードに依存するが、一対のボクセルおよび勾配を送るのに１クロックまたは２クロックを要する。
【０１９６】
特に、補間前の分類、すなわち「ＣＩ」モードでレンダリングを行う場合には、勾配推定モジュールは、一対のボクセルおよびグラジェントを発生するのに２クロックを必要とする。これに対し、補間後の分類、すなわち「ＩＣ」モードでレンダリングを行う場合には、勾配推定モジュールは、一対のボクセルおよび勾配を発生するのに１クロックを必要とする。これは、補間バッファ論理はクロック毎に２つのボクセルおよび勾配を受け付けることができるが、分類モジュールはクロック毎に単一のボクセルおよび勾配しか受け付けることができないためである。これによりゲートが節約される。と言うのは、クロック毎に２つのボクセルを受け付けることで、２回の分類テーブル参照しか必要とされないからである。ＩＣモードで分類されるデータ量は減少する。その理由は、エッジ効果に起因し補間モジュールでデータ量が減少するからである。
【０１９７】
補間前であれ或るいは補間後であれ、ボクセルはフィールドベースで分類されて、それにより各フィールド毎にＲＧＢα値が生成される。これらＲＧＢα値は結合されて、それにより単一のＲＧＢα値が形成される。なお、ＲＧＢ値は、分類段１６２０で重み付けされた不透明度とすることもできる。次いでフィールドが結合され、分類結果が、関連の勾配とともにスライスバッファの１つに書き込まれる。ＩＣモード、すなわち分類前に補間を行うモードでレンダリングする場合には、ボクセルフィールドおよび関連の勾配１６０２が一度に２つずつ一対のスライスバッファに書き込まれる。
【０１９８】
スライスバッファ
各パイプラインの分類／補間段は、３対のスライスバッファ１６４０、すなわち合計で６個のバッファを有する。各スライスバッファは、１６×１６個のエレメントを保持する。スライスバッファは下記のように利用される。任意所与の時点で２つのバッファが勾配推定段からの原または分類データ入力を書き込むように割当てられる。残りの４つのスライスバッファはｚ−補間ユニット１６５０により読み取られるように割当てられる。分類されたボクセルおよびそれらの勾配が勾配推定モジュールから一度に１つずつ到達するＣＩモードの場合には、書き込み用に割当てられた２つの交互のスライスバッファに、同じ値を有するボクセルが同じスライスバッファに書き込まれるようにして入力される。スライスバッファのスライスは置換されたｚ−座標で注記される。ＩＣモードの場合には、分類されていないボクセルおよびそれらの勾配が一度に２つずつ到達する。これらは、同時に２つの隣接するスライスバッファに書き込まれる。
【０１９９】
最終的には、書き込み用に割当てられたスライスバッファ対は満杯になる。この時点で、分類／補間段は、スライスバッファ対が満杯である旨の信号を勾配推定モジュールに送る。そこで勾配推定モジュールは、上記信号が無くなるまで動作を停止する。最終的には、スライスは、下に述べるように、ｚ−補間ユニット１６５０によって消費される。一対の隣接スライス内のデータすべてが処理された後に関連のバッファ対が書き込み用に割当てられて、それ以前に満杯になっているバッファは読み出し用に割当てられる。この時点で、勾配推定段への上記信号が無くなり、ボクセルおよび勾配データのフローが再び開始される。実際のアプリケーション例においては、勾配推定モジュールは、ｚ−補間モジュール１６５０よりも相当進捗した場合にのみ動作を停止する。
【０２００】
ｘ−次元での補間
先に述べたように、ｚ−補間ユニットは、置換空間１６５１内の座標で動作する。すなわち、ボクセル値およびそれと関連の勾配は、置換（ｘv、ｙv、ｚv）空間内の整数点におけるデータおよび変化率を表す。
【０２０１】
ｚ−補間ユニットは、ボリュームをサンプル空間にリサンプリングする方向で第１のステップを実行する。すなわち、ｚ−補間ユニットは、一度に１サンプルスライスのベースでデータを処理する。すなわち、該ユニットは、スライスバッファ１６４０の２つのボクセルスライスからボクセルおよび勾配を読み出し、ｚ−次元において該ボクセルおよび勾配間で補間を行い、その結果を１４×１４個のサンプルスライスアレイ１６６０内の１つに格納する。ここで２つのスライスとは互いに隣接するスライスである。多くの場合、スライスは前に使用したスライス１６６０にオーバーラップする。しかしながら、サンプル空間内のスライスが１ボクセルスライス以上離間している場合、すなわちｚ−次元でのサンプリングでは、オーバーラップすることはない。
【０２０２】
ｚ−補間ユニットの出力値は、置換されたｘ−およびｙ−座標ならびにサンプルのｚ−座標、すなわち（ｘv、ｙv、ｚs）の形態にある座標値を有する。このことは、図１６に表記「混成空間」１６５２で示してある。
【０２０３】
図１６に示した３対のスライスバッファは各スライス毎に１６×１６個のエレメントを有する。しかしながら、サンプルバッファ１６６０は１４×１４個のエレメントしか有しない。このようなサイズは、セクションのサイズ（２４×２４）の関数である。オブジェクトオーダーレンダリングにおいては、サイズｓ×ｓのセクションは、（ｓ＋８）／２×（ｓ＋８）／２個のスライスバッファ１６５０および（ｓ＋４）／２×（ｓ＋４）／２個のサンプルバッファ１６６０を必要とする。すなわち、ｚ−補間ユニット１６５０は、サンプルバッファ１６６０の各行および列に多くとも１４個のエレメントの書込みを行う。この不一致は、図１７に例示するようにレイの角度に起因する。ｘｙ−画像オーダーレンダリングでは、最大のセクションの大きさすなわちサイズを支持するために大きなサイズが要求され得る。したがって、この発明の実施に当たっては、セクションサイズを可変にする。
【０２０４】
図１７は、ボクセル点の４個のスライス（平面）１７０１およびｚ−補間サンプル点の３個のインターリーブドスライス（平面）の断面を示す。ボクセル点には×印を付け、サンプル点は円で示してある。サンプルおよびボクセルの平面は互いに平行である点に注目されたい。ビュー方向１７０３が最悪である場合、すなわち４５度の角度である場合には、ボクセルの平面間のオフセットは、１６個のボクセルの２つの行または列から僅か１４個のサンプルしか得ることができないような大きさになる。
【０２０５】
ｚ−補間段１６５０は、原ボクセルまたは分類ボクセルの各フィールドを独立に且つまた３つの勾配成分の各々を線形的に補間するように動作する。補間重みは８ビット数である。ボクセルフィールドの補間結果は直ちに丸めるが、低位の小数点１ビットは、各勾配成分の補間値用に保留しておく。
【０２０６】
このｚ−補間段は本質的に、オブジェクトオーダー補間段と同様に動作し、補間される値毎に１回の重み付け和乗算（weighted sum multiply）を必要とする。画像オーダーの場合には、従来技術と関連して説明したように、Ｚ−次元における４回の重み付け和乗算が要求される。その理由は、ブジェクトオーダーおよびｘｙ−画像オーダーでは、サンプルＺ−平面がボクセルＺ−平面に平行であり、その結果、隣接のサンプルが同じＺ−補間を共有するからである。画像オーダーでは、平面は平行ではなく、したがって共有は生じ得ない。
【０２０７】
Ｘ−およびＹ−次元での補間
ｚ−補間段の出力１６０３は、２つの１４×１４サンプルバッファ１６６０のつちの１つに書き込まれる。その間、他のサンプルバッファはｘｙ−補間モジュール１６７０により読み出される。したがって、サンプルバッファ１６６０の各エレメントは、４つの１２ビットのｚ−補間された原または分類ボクセルのフィールドと、３つの１１ビット勾配成分と、９ビットと１つの下位ビットと、記号とを含む。
【０２０８】
総合すると、４本のパイプラインの４個の１４×１４ｚ−補間スライスバッファ１６４０は、ボクセルが交互パターンで配列された単一の２８×２８ｚ−補間スライスバッファから構成される。
【０２０９】
図１８は、置換空間のｘv−およびｙv−次元１８０１および１８０２におけるボクセル位置の平面１８００を示す。ボクセルは×印１８０３で示してある。「Ａ」で印した位置におけるボクセルは、図１４の上部における右ブロックの右上４分の１部分に対応する。すなわち、これらボクセルはパイプラインＡによって処理されたものである。同様に、Ｂ、ＣおよびＤで表した位置にあるボクセルはそれぞれ、パイプラインＢ、ＣおよびＤにより処理されたものである。
【０２１０】
円１８０４は、サンプル点、すなわちレイ（光線）がサンプルスライスに交差する点を表す。図から理解されるように、各サンプル点は、それぞれパイプラインＡ、Ｂ、ＣおよびＤのサンプルバッファから１つずつ合計４個のボクセルにより取り囲まれている。
【０２１１】
したがって、サンプル点の各値は、４本のパイプラインそれぞれに対して既知の値の間に補間を行うことによって得ることができる。これは、ｘ−およびｙ−次元におけるサンプリング頻度数とは関係ない。すなわち、各パイプラインのｘｙ−補間ユニット１６７０はそれ自身のサンプルバッファからの１個のｚ−補間値に加えて、ライン１６０４を介し３本の他のパイプラインからのサンプルバッファそれぞれからの値を読出す必要がある。実際、サンプルバッファは４本のパイプライン間で共有されている。各パイプラインはそれ自身のサンプルバッファに対してのみ書込みを行うが、読出しは４つすべてのサンプルバッファから行うことができる。
【０２１２】
４本のパイプラインはスタンプと称する２×２アレイの４個の点を補間する。１つのサンプル１８０５の輪郭は破線で示してある。この点から始めて、パイプラインを流れ下るすべてのデータはレイに沿うサンプル点におけるデータを表す。残りの段においては、一度に１つずつスタンプが処理される。レイは画像平面内のピクセルの中心を垂直に通過する。
【０２１３】
ｘｙ−補間モジュールの各出力１６０５は７８ビット、すなわちそれぞれ１２ビットに丸められた４つの補間された原または分類ボクセルフィールドと、それぞれ１０ビットに丸められた３つの補間された勾配成分とを含む。
【０２１４】
ｘｙ−画像オーダーレンダリングの１つの利点は、ｘｙ−次元における補間に僅か３回の重み付け和乗算しか要求されないことである。すなわち２回の重み付け和乗算がｙ−次元における補間に必要とされ１回の重み付け和乗算が上記補間から得られる値をｘ−次元において補間するのに必要とされる。これは、オブジェクトオーダーレンダリングで要求される２回の乗算（ｙに対して１回でｘに対して１回）に匹敵する。なお、オブジェクトオーダーレンダリングではｙ−次元における乗算を共用することが可能である。したがって、画像オーダーでは合計７回の乗算が必要とされ、オブジェクトオーダーでは合計３回の乗算が必要とされ、そしてｘｙ−画像オーダーでは合計４回の乗算が要求される。
【０２１５】
レンダリングモードが既述のＩＣモードである場合には、ｘｙ−補間ユニット１６７０から流れるデータは補間されたボクセルフィールドおよび補間された勾配成分を含む。分類／補間段における最後のステップは、これらの値をＲＧＢα値に変換して不透明度重み付け関数を適用することである。これは、サンプル空間１６５３において行われる。レンダリングモードがＣＩモードでは、変換は既に原ボクセルのフィールドに対して行われており、色成分は既に個々に補間されている。
【０２１６】
以上の説明から明らかなように、この発明は、従来のシヤーワープボリュームレンダリング技術とは大きな相違のあるボリュームデータセットのためのパイプラインレンダリング方法を提供した。この発明の方法によれば、シヤーワープボリュームレンダリング技術の処理上の利点、すなわち、非常に順序立った仕方でスライス-バイ-スライスベースで且つ少ない乗算数（画像オーダーレンダリングに対して要求される数の半分）でボリュームを段階的に処理する能力と真の意味での「画像オーダー」レンダリングの視覚上の利点とが組み合わされる。
【０２１７】
その効果は、真の画像オーダーの場合と同様に最終画像のピクセル毎に１本のレイが投射される点に見られる。しかしながらまたこの発明では、サンプルがシヤーワープオーダーのスライスを似ねたスライス内の各レイに沿いサンプルが配置される。このようにすれば、従来のシヤーワープ技術よりも遥かに高い画像品質ならびに遥かに良好なパフォーマンスが得られるとともに、さらに、ワープステップを完全に省略することができる。また、この発明は、ボリュームデータセットに埋込まれた多角形のレンダリングも可能である。
【０２１８】
さらに明らかなように、この発明によるパイプライン編成はまた、シヤーワープオーダーによる処理をも支持する。この場合には、スタンプ１８０５は常にボリュームの軸と整列し、したがってスライスの軸とも常に整列する。シヤーワープオーダーは、式１７の変換Ｒ-1でｄｙsｄｘs＝ｄｘyｄｙs＝０を設定することにより達成される。
【０２１９】
以上、この発明を好適な実施の態様を例として説明したが、この発明の精神および範囲内で他の種々な適応化および変更が可能であることは理解されるべきである。したがって、請求項の記述は、この発明の真の精神および範囲内に入るこのような変形および変更すべてを包摂するように解釈されるべきである。
【図面の簡単な説明】
【図１】  （ａ）および（ｂ）はボクセルに対し勾配の推定を図解する略図である。
【図２】  この発明による座標系ならびに該座標系間で用いられる変換を示す略図である。
【図３】  ボクセルの横断面を示す略図である。
【図４】  置換軸を有するオブジェクトを示す。
【図５】  ボリュームデータセットを通して投射されるレイを示す。
【図６】  画像平面の視点から見たボリュームを示す。
【図７】  （ａ）〜（ｃ）は、ビュー切頭体の３つのの例を示すブロックダイヤグラムである。
【図８】  この発明のレンダリングエンジンで用いられる方法のブロックダイヤグラムである。
【図９】  オブジェクト空間への単位ベクトルの投影を示す。
【図１０】  ８個の変換行列を示す。
【図１１】  （ａ）および（ｂ）は、それぞれ異方性をもってサンプリングしたボリュームデータセットの横断面を示す図である。
【図１２】  （ａ）〜（ｃ）は、ボリュームオブジェクトとともにビューポートを示す俯瞰図である。
【図１３】  この発明によるレンダリングエンジンのブロックダイヤグラムである。
【図１４】  ４本の並列パイプラインおよびミニブロックのブロックダイヤグラムである。
【図１５】  パイプラインの勾配推定段のブロックダイヤグラムである。
【図１６】  パイプラインの分類／補間段のブロックダイヤグラムである。
【図１７】  ｚ−補間およびビュー方向を示す。
【図１８】  サンプルスライスバッファ内のｚ−補間サンプルを示す。
【図１９】  任意角度でボクセルのスライスと交差するレイの格子を示す。
【符号の説明】
１０  ホストコンピュータシステム、１１  ＣＰＵ、１２  主メモリ、１０１勾配、１０２  ボクセル点、１０３  曲線、１０４  １０５    ボクセル、１０６  勾配、１０７  サンプル点、１０８  ベクトル、２０１  オブジェクト座標系、２０２  物理座標系（空間）、２０３  補正変換（Ｃ）、２０４  物理モデル化行列（変換）（ＰＭ）、２０５  世界空間、２０６  モデル化変換（Ｍ）、２０７  カメラ座標系、２０８  ビュー変換（Ｖ）、２０９  クリップ座標系（空間）、２１０  投影変換（ＰＪ）、２１１  正規化された投影座標、２１２透視分割、２１３  画像座標系、２１４  ビューポート変換（ＶＴ）、２２０置換座標系、２３０  サンプル座標系、２３１  リサンプリング変換（Ｒ）、２４０  深度ワープ変換（Ｄ）、３００  ボクセル、３０１  人間の頭部、３０３  物理空間の縦軸、３０４  物理空間の垂直軸、３０５  ガントリー、３２０サンプル空間、４０１  オブジェクト座標系の軸、４０２  置換座標系ｚ−軸、４０３  置換座標系ｖ−軸、４０４  置換座標系ｘ−軸、４０６  置換座標系ｙ−軸、４１０  オブジェクト座標系の原点、４２０  ボックス（箱状物）、４２１  ボクセル、５００  ボリューム、５０１  画像平面、５０２  レイ、５０３  基底面、５１０  ｘv−およびｚv−軸、５２０  サンプル点、６００  ボリューム、６０１  ｘs−およびｙs−軸、６０３  ｚv−軸、６１０  原点、７００  ボリューム、７０１、７０２、７０３  ビュー切頭体、９０１、９０２  ベクトル、１２０１  視点、１２０２  ボックス、１２０６、１２０７  深度値、１３００  ボリュームレンダリングエンジン、１３１０  バス論理、１３１０  メモリインターフェース、１３１１  データ、１３２０  バス論理、１３２１  ６６ＭＨｚの６４ビットＰＣＩバス、１３２２  内部レジスタ、１３３０  シーケンサー、１３４０  並列パイプライン、１３５０  スライスバッファ、１３６０  レンダリングメモリ、１４０１  ミニブロック、１４０４  分類／補間段の出力、１４０５  イルミネータ段の出力、１４０６  合成段の出力、１４１０  勾配推定段、１４２０  分類／補間段、１４３０  イルミネータ、１４４０  合成段、１５００  勾配推定段、１５０１  ボクセル、１５１０  スラブバッファ、１５２０  ｚ−中心差分モジュール、１５３０  スライス遅延段、１５４０  行バッファ、１５５０  ｙ−中心差分モジュール、１５５５  交換／遅延ブロック、１５５８  ｘ−バッファ、１５６０  ｘ−中心差分エンジン、１５６５  ブロック、１５７０  セクション、１６０１  データ、１６０２  勾配、１６０４ライン、１６１０  ボクセルフィールド抽出ユニット、１６２０  分類／不透明度重みユニット、１６２０  分類段、１６３０  マルチプレクサ、１６４０  スライスバッファ、１６５０  ｚ−補間ユニット、１６５１  置換空間、１６５３  サンプル空間、１６６０  サンプルバッファ、１６７０  ｘｙ−補間ユニット、１８０５  スタンプ、１９０１  ボクセル、１９０２  矩形格子、１９０５ｘ−、ｙ−軸。
【図１】
0004205327.tif 000031
【図２】
0004205327.tif 000032
【図３】
0004205327.tif 000033
【図４】
0004205327.tif 000034
【図５】
0004205327.tif 000035
【図６】
0004205327.tif 000036
【図７】
0004205327.tif 000037
【図８】
0004205327.tif 000038
【図９】
0004205327.tif 000039
【図１０】
0004205327.tif 000040
【図１１】
0004205327.tif 000041
【図１２】
0004205327.tif 000042
【図１３】
0004205327.tif 000043
【図１４】
0004205327.tif 000044
【図１５】
0004205327.tif 000045
【図１６】
0004205327.tif 000046
【図１７】
0004205327.tif 000047
【図１８】
0004205327.tif 000048
【図１９】
0004205327.tif 000049