[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

JP4349733B2 - Method and apparatus for providing non-realistic cartoon outline in 3D video graphics system - Google Patents

Method and apparatus for providing non-realistic cartoon outline in 3D video graphics system Download PDF

Info

Publication number
JP4349733B2
JP4349733B2 JP2000289625A JP2000289625A JP4349733B2 JP 4349733 B2 JP4349733 B2 JP 4349733B2 JP 2000289625 A JP2000289625 A JP 2000289625A JP 2000289625 A JP2000289625 A JP 2000289625A JP 4349733 B2 JP4349733 B2 JP 4349733B2
Authority
JP
Japan
Prior art keywords
pixel
depth
value
color
data
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.)
Expired - Fee Related
Application number
JP2000289625A
Other languages
Japanese (ja)
Other versions
JP2001134779A5 (en
JP2001134779A (en
Inventor
吉孝 安本
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nintendo Co Ltd
Original Assignee
Nintendo Co Ltd
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
Priority claimed from US09/468,109 external-priority patent/US6747642B1/en
Application filed by Nintendo Co Ltd filed Critical Nintendo Co Ltd
Publication of JP2001134779A publication Critical patent/JP2001134779A/en
Publication of JP2001134779A5 publication Critical patent/JP2001134779A5/ja
Application granted granted Critical
Publication of JP4349733B2 publication Critical patent/JP4349733B2/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

  • Image Generation (AREA)
  • Processing Or Creating Images (AREA)

Description

【0001】
【発明の属する技術分野】
本発明は、三次元コンピュータグラッフィクスに関し、より特定的には、非写実的な三次元画像化に関する。さらに特定すれば、本発明は、コンピュータによる三次元対象物の陰影上の線およびその他その縁に見られる境界の生成・表示方法および装置に関する。
【0002】
【従来の技術】
コンピュータグラッフィックスに関する研究の多くは、リアルな画像の生成に注目する傾向にあり、これまでかなりの成功を収めてきている。今では、コンピュータの作り出す画像は非常にリアルなものとなってきており、写真と見分けることができないほどである。たとえば、コンピュータによって作り出された特殊効果による、非常に写実的で本物であるかのような恐竜、異星人などを映画やテレビで見かけることも多い。新人のパイロットが訓練を受けているコンピュータによるフライトシミュレータは、非常にリアルで、実際の飛行状態をほぼ再現している。低価格な家庭用ビデオゲームシステムにおいても、驚くべきレベルのリアリズムが実現されており、ゲームのプレーヤは、たとえば、本物のレースカーでトラックを走行しているような、雪や氷に覆われたスロープをスキーで滑っているような、中世の城の中を歩いているような錯覚を覚えるほどである。大抵のゲームでは、このリアリズムによる錯覚がゲームプレイ体験を非常にすばらしいものにしている。
【0003】
しかし、場合によってはリアルでない画像の方が好ましいこともある。たとえば、対話型ビデオやコンピュータゲームなどにおいて、現実の(または空想上の)世界をリアルにシミュレートするのではなく、わざと非現実的なパロディー調の漫画キャラクタが、たくさん登場する漫画の世界を創造して表示すれば、娯楽的価値を持たせることができる。例えば、このようなゲームでは、動き、音声、および対話性をもたせながら、手描きの漫画本を再現するように努めている。
【0004】
このような三次元コンピュータシステムにおいて、望ましい視覚効果の1つとしては、表示対象物の陰影の線やその他その縁にみられる境界をはっきりと、確かなものにすることである。このような境界線によって、ある種の画像は鮮明になる。たとえば、漫画キャラクタの輪郭、風景の丘や山、壁の縁など、それぞれ異なる面をユーザがよりはっきり区別しやすくなる。さらに、このような境界線によって、漫画家による手描きであるかのような望ましい印象が生まれやすくなる。
【0005】
【発明が解決しようとする課題】
ここで、キャラクタなどの対象物の縁周りの境界線のような、リアルでない効果を付与する方法の一つに、ある対象物を形成するポリゴンの縁に隣接した別の対象物と区別するラインをはっきり示す方法がある。
【0006】
しかし、別の対象物とのボーダをはっきり示すと、画像処理が極めて複雑化する。その結果、リソースの限られたシステムにおいて、この方法は画像生成の遅延や効率の低下を招く。対話型三次元ゲームシステムなどの低価格の三次元グラッフイックスシステムにおいては、効率は極めて重要である。より効率のよい技術を用いて視覚効果を生成する方が、乏しいシステムリソースにかかる負担を軽減し、さらには、速度やその他の性能にそれほど影響を及ぼすことなく、視覚効果を総合的に向上させることができる。
【0007】
【課題を解決するための手段および発明の効果】
本発明は、家庭用ビデオゲームコンソールなどの、三次元グラフィックスシステムにおいて、陰影の線やその縁における境界線を表示するための効率的な技術を提供することによって、この問題を解決する。
【0008】
第1の発明によれば、画像がフレームバッファにおいて描画された後、境界線を生成する。本発明では、フレームバッファに記憶された数値を用いて、対象物の輪郭またはその他、縁にどの画素が位置しているかを求め、ボーダカラーをこれら画素に選択的にブレンドして表示する。
【0009】
また、或る実施例によれば、輪郭の縁は、ある画素の深度値とその周辺画素の深度値とを比較して配置される。たとえば、「距離」値が或る画素の深度とその周辺画素の深度との間の距離の絶対値を基に計算される。その後、この距離値を基に、望ましい境界線のカラーがその画素のカラー値にブレンドされる。たとえば、距離値は画素のアルファ値を計算するために用いられ、このアルファ値は画素のカラーにブレンドされるボーダカラーの量を制御するのに用いられる。
【0010】
別の例では、さらに深度変化を利用する。たとえば、距離値と、画素深度の関数であるさらに設けられた値とを基に画素のアルファ値を計算して、画素の深度値によって変化したアルファ値を求める。この深度によって変化させたアルファ値を基に、ボーダカラーを画素カラーにブレンドする。
【0011】
さらなる実施例では、対象物の輪郭上ではなく、漫画家が境界線を引くであろう或る内部の縁の上に境界線を引く。例えば、漫画キャラクタが身体の前で腕を曲げている状態を考える。この場合、漫画家は、キャラクタの腕の輪郭の周りに境界線を引くと思われる。たとえ、このキャラクタが、腕の輪郭の縁が全体の輪郭の内部に位置するように胴体の前部で腕を曲げていても、である。本発明のさらなる特徴によれば、画像の画素にはそれぞれ異なる識別値が割り当てられる。この識別値は、典型的にはアルファ値のために用意されたフレームバッファメモリ領域等に格納される。これらの識別値は、境界線のある縁と、境界線が付与されない縁とを識別するのに用いられる。
【0012】
【発明の実施の形態】
以下、本発明における実施の形態について、図面を参照しながら説明する。図1は、本発明に係る、境界線を表示するための三次元ビデオグラフィックスシステム1005の例を示す。
【0013】
システム1005は、たとえば、ゲームコントローラ1007および/または他の手入力装置からの対話型リアルタイム入力に応答し、表示装置1009(たとえば、家庭用カラーテレビ受像機、ビデオモニタ、または他のディスプレイなど)に映像表示を行う。システム1005は、外部記憶媒体1011(たとえば、交換可能なビデオゲームカートリッジ、CD−ROM、または他の光ディスクなど)に記憶されたビデオゲームプログラムなどのコンピュータプログラムの制御によって動作する。
【0014】
本例においては、システム1005は、プロセッサ1010,三次元グラフィックスコプロセッサ1020およびメモリ1030を含む。プロセッサ1010は、三次元グラフィックスコマンドをグラフィックスコプロセッサ1020に与える。グラフィックスコプロセッサ1020は、三次元グラフィックスコマンドに従って、三次元の世界における二次元ビューをインタラクティブに生成する。たとえば、グラフィックスコプロセッサ1020は、ハードウェアによる三次元グラフィックスパイプラインを含む。このパイプラインは、三次元空間において規定されたポリゴンなどのグラフィックスプリミティブを操作して、任意に選ばれた視点に基づく視野面に投影された三次元空間の二次元画像を表す画素を生成する。本例において、ユーザは、ゲームコントローラ1007を用いて、リアルタイムでインタラクティブに視点を変更することができる。
【0015】
グラフィックスコプロセッサ1020は、生成した表示画素を、メモリ装置1030内のフレームバッファ1040に記憶する。フレームバッファ1040は、カラーフレームバッファ1042と、深度(Z)バッファ1044とを備える。本例において、カラーフレームバッファ1042は、赤、緑、青(RGB)のカラー値の二次元アレイ、および対応するアルファ(A)値を記憶する。記憶されたRGBカラー値と表示装置1009上に表示される画素との間は一対一の関係であってもよい。または、フレームバッファ1042は、副サンプルを記憶してもよい。Zバッファ1044は、カラーフレームバッファに記憶されている各画素または副画素についての深度値(たとえば、視点に対するz方向の距離)を記憶する。よく知られているように、Zバッファ1044は、グラッフィクスパイプラインが画像を「構築」する際に、さまざまな目的に用いられる(たとえば、見えない面の除去など)。
【0016】
好ましい実施例において、カラーフレームバッファ1042および/またはzバッファ1044の内容は、ボーダカラーを、カラーフレームバッファ42に記憶されている画素カラー値に選択的にブレンドして、対象物の境界線を規定する役割も果たす。具体的には、システム1005は、画素フィルタ50を備えていても良い。画素フィルタ50は、三次元グラフィックスコプロセッサ1020によって描画される画像の画素値を処理して、境界線カラーを表示する対象物の輪郭線、および/または他の縁の上に選択的に付与する。好ましい実施例における画素フィルタ50は、画像データがフレームバッファ1040または他の画素メモリにおいて描画された後に、画素後処理の段階で動作する。たとえば、画素フィルタ50は、グラフィックスコプロセッサからの画像データと、メモリ1030への画像データとの結合処理中に、三次元グラフィックスコプロセッサ1020で描画されてバッファされた画像データに、境界線などの非写実的な画像要素を付与してもよい。
【0017】
図2は、本発明を実施しうるインタラクティブ三次元コンピュータグラフィックスシステム1005全体のより詳細な模式図である。システム1005は、魅力的なステレオ音声を伴うインタラクティブ三次元ビデオゲームを行うために用いることができる。光ディスク1011などの適切な記憶媒体を光ディスク再生装置1134に挿入することによって、いろいろなゲームを行うことができる。ゲームを行う者は、手動コントローラ1007などの入力装置を操作することによって、システム1005とリアルタイムに対話することができる。このコントローラ1007は、ジョイスティック、ボタン、スイッチ、キーボード、キーパッドなど、さまざまな操作器が含まれる。
【0018】
本例において、メインプロセッサ1010が、手動コントローラ1007(および/または他の入力装置)からの入力を受ける。メインプロセッサ1010は、インタラクティブにこのようなユーザ入力に応答し、たとえば外部記憶装置1011から提供される、ビデオゲームや他のグラフィックスプログラムを実行する。たとえば、メインプロセッサ1010は、衝突検出や動画処理のほかにも、様々なリアルタイムでインタラクティブな制御機能を行うことが可能である。
【0019】
メインプロセッサ1010は、三次元グラフィックスコマンドや音声コマンドを生成し、これらをグラフィックスおよび音声コプロセッサ1020に送信する。グラフィックスおよび音声コプロセッサ1020は、これらのコマンドを処理して、魅力的な画像を表示装置1009に表示し、ステレオ音声をステレオスピーカ1137R、1137L、または適切な音声生成装置において生成する。
【0020】
システム1005は、TVエンコーダ1140を含む。TVエンコーダは、画像信号をコプロセッサ1020から受信し、標準的な表示装置1009(たとえば、コンピュータモニタや家庭用カラーテレビ受像機)での表示に適するように合成ビデオ信号に変換する。また、システム1005は、オーディオコーデック(圧縮器/伸長器)1138を含む。
【0021】
オーディオコーデック1138は、デジタル化された音声信号を圧縮/伸長する(さらに、デジタルアナログ音声信号形式間の変換を行ってもよい)。オーディオコーデック1138は、バッファ1141を介して音声入力を受信し、コプロセッサ1020に送信する(コプロセッサ1020における処理には、コプロセッサが生成する他の音声信号、および/または、光ディスク装置1134のストリーミング音声出力を介して受信した他の音声信号とのミキシングなどがある)。
【0022】
コプロセッサ1020は、音声関連情報を音声タスク専用のメモリ1144に記憶させる。コプロセッサ1020は、処理後の音声出力信号をオーディオコーデック1138に与えて、圧縮および(たとえば、バッファ増幅器1142Lおよび1142Rを介して)アナログ信号への変換を行い、スピーカ1137Lおよび1137Rによって再生できるようにする。
【0023】
コプロセッサ1020は、システム1005内の様々な周辺機器と通信することができる。たとえば、パラレルデジタルバス1146は、光ディスク装置1134との通信に用いられてもよい。シリアル周辺バス1148は、様々な周辺機器との通信に用いられてもよい。この周辺機器の例としては、ROMおよび/またはリアルタイムクロック1150,モデム1152,フラッシュメモリ1154などが挙げられる。さらなる外部シリアルバス1156は、拡張メモリ1158(たとえば、メモリカード)との通信に用いられてもよい。
【0024】
図3は、コプロセッサ1020内の構成要素例のブロック図である。コプロセッサ1020は、1つの集積回路であって、三次元グラフィックスプロセッサ1107と、プロセッサインターフェース1108と、メモリインターフェース1110と、オーディオディジタル信号プロセッサ(DSP)1162と、オーディオメモリインターフェース(I/F)1164と、オーディオインターフェースおよびミキサ1166と、周辺制御器1168と、表示制御器1128とを含む。
【0025】
三次元グラフィックスプロセッサ1107は、グラフィックス処理タスクを行い、オーディオディジタル信号プロセッサ1162は、オーディオ処理タスクを行う。表示制御器1128は、メモリ1030から画像情報をアクセスして取り出し、表示装置1009に表示するためにTVエンコーダ1140へ与える。オーディオインターフェースおよびミキサ1166は、オーディオコーデック1138とのインターフェースとなり、発生源の異なる音声(たとえば、ディスク1011からのストリーミングオーディオ入力、オーディオDSP1162の出力、オーディオコーデック1138を介して受信した外部オーディオ入力など)を混合することも可能である。プロセッサインターフェース1108は、メインプロセッサ1010およびコプロセッサ1020間のデータや制御に関するインターフェースとなる。メモリインターフェース1110は、コプロセッサ1020およびメモリ1030間のデータや制御に関するインターフェースとなる。本例において、メインプロセッサ1010は、プロセッサインターフェース1108とコプロセッサ1020の一部であるメモリインターフェース1110とを介して、メインメモリ1108にアクセスする。周辺制御器1168は、コプロセッサ1020および上述の様々な周辺機器(たとえば、光ディスク装置1134、コントローラ1007、ROMおよび/またはリアルタイムクロック1150、モデム1152、フラッシュメモリ1154、およびメモリカード1158)間のデータや制御に関するインターフェースとなる。オーディオメモリインターフェース1164は、オーディオメモリ1144とのインターフェースを提供する。
【0026】
図4は、三次元グラフィックスプロセッサ1107と、それに関連するコプロセッサ1020内の構成要素のより詳細な図である。三次元グラフィックスプロセッサ1107は、コマンドプロセッサ1114と、三次元グラフィックスパイプライン1116とを含む。メインプロセッサ1010は、グラフィックスデータのストリームをコマンドプロセッサ1114とやり取りする。コマンドプロセッサ1114は、このような表示コマンドを受信し、(メモリ1030から処理に必要な追加のデータを取得して)解析を行い、三次元処理および描画のために頂点コマンドのストリームをグラフィックスパイプライン1116に与える。グラフィックスパイプライン1116は、これらのコマンドに基づいた三次元画像を生成する。処理後の画像情報は、メインメモリ1030に転送され、表示制御器1128によってアクセスできるようにしてもよい。表示制御器1128は、表示装置1009にパイプライン1116のフレームバッファ出力を表示する。メモリ要求アービトレーション回路130は、グラフィックスパイプライン1116と、コマンドプロセッサ1114と、表示部128とにおけるメモリアクセスを調停する。
【0027】
図4に示すように、グラフィックスパイプライン1116は、変換部1118と、セットアップ/ラスタライザ1120と、テクスチャ部1122と、テクスチャ環境部1124と、画素エンジン1126とを含んでもよい。グラフィックスパイプライン1116において、変換部1118は、様々な三次元変換動作を行い、さらに、照明効果やテクスチャ効果を行ってもよい。変換部1118の行う処理は、たとえば、頂点毎に入力される形状のオブジェクト空間からスクリーン空間への変換、入力されるテクスチャ座標の変換、射影テクスチャ座標の計算、ポリゴンクリッピング、頂点毎の照明度計算、バンプマッピングテクスチャ座標の生成などがある。セットアップ/ラスタライザ1120は、セットアップ部を含む。セットアップ部は、変換部1118から頂点データを受信し、三角形のセットアップ情報を複数のラスタライザに送信する。ラスタライザは、縁のラスタ化、テクスチャ座標のラスタ化、カラーのラスタ化を行う。テクスチャ部1122は、テクスチャリングに関連して様々なタスクを行う。このタスクには、マルチテクスチャ処理、キャッシュ後のテクスチャ伸長処理、テクスチャフィルタリング、浮き出しバンプマッピング、射影テクスチャを用いた陰影付け、およびアルファ透明度および深度を用いたBLITなどがある。テクスチャ部1122は、フィルタリングされたテクスチャ値をテクスチャ環境部1124に出力する。テクスチャ環境部1124は、ポリゴンカラーとテクスチャカラーとをブレンドし、テクスチャフォグやその他の環境関連機能を行う。画素エンジン1126は、zバッファリングやブレンドを行い、データを集積回路上のフレームバッファメモリに記憶する。
【0028】
図5に示すように、グラフィックスパイプライン1116は、フレームバッファ情報を局所的に記憶するDRAMメモリ1126aを搭載してもよい。集積回路上のフレームバッファ1126aは、集積回路上には備えられていないメインメモリ1030に定期的に書き込まれ、集積回路上の表示部1128がアクセスできるようにする。たとえば、画素フィルタ50は、この書き込み処理中に境界線などの輪郭を漫画に付与するよう動作する。グラフィックスパイプライン1116のフレームバッファ出力(最終的にはメインメモリ1030に記憶される)は、表示部1128によってフレーム毎に読み出される。表示部1128は、表示装置1009における表示のために、ディジタルRGB画素値を提供する。
【0029】
上述したビデオゲームシステムの構成要素の或るものは、上述の家庭用ビデオゲームコンソール構成以外のものとして実現することも可能である。一般的に、家庭用ビデオゲームソフトウェアは、特定の家庭用ビデオゲームシステム上で実行されるように記述されている。このビデオゲームソフトウェアは、異なるシステムのハードウェアやソフトウェア構成を考慮に入れて、その異なるシステムに「移植される」(変換される)ことも、場合によっては可能である。このような「移植」には、ビデオゲームのソースコードにアクセスする必要があることが多い。この他に、構成の異なるシステムにおいてゲームソフトウェアを実行させるための方法としては、第2のシステムに第1のシステムをエミュレートさせる方法がある。第2のシステムが第1のシステムのハードウェアおよびソフトウェア資源をうまくエミュレートまたはシミュレートすることができれば、第2のシステムはビデオゲームソフトウェアのバイナリで実行可能な画像をうまく実行することができ、ゲームソフトウェアのソースコードにアクセスする必要はなくなる。
【0030】
家庭用ビデオゲームにおいて、エミュレータは、ゲームプログラム用のシステム、すなわちゲームプログラムを実行することができるように設計されているシステムとは異なるシステムである。一例として、エミュレータシステムは、ゲームソフトウェア用のシステムのものとは異なるハードウェアおよび/またはソフトウェア構成(プラットフォーム)を提供する。エミュレータシステムは、ゲームソフトウェア用のシステムのソフトウェアおよび/またはハードウェア構成要素を模倣するソフトウェアおよび/またはハードウェア構成要素を含む。たとえば、エミュレータシステムは、当該ゲームソフトウェア用システムのハードウェアおよび/またはファームウェアをシミュレートするソフトウェアエミュレータプログラムを実行するパーソナルコンピュータなどの汎用ディジタルコンピュータを備えてもよい。
【0031】
エミュレータソフトウェアは、コンソールを用いた図1ないし図4に示すような家庭用ビデオゲームシステム用のゲームをパーソナルコンピュータやその他の汎用ディジタルコンピュータ上で実行できるように開発されてもよい。このような汎用ディジタルコンピュータ(たとえば、IBMやマッキントッシュのパーソナルコンピュータやその互換機)には、DirectXや他の標準三次元グラフィックスコマンドアプリケーションプログラムインターフェース(API)に対応する三次元グラフィックスパイプラインを提供する三次元グラフィックスカードを搭載しているものがある。また、サウンドコマンドの標準セットに基づいて、高品質のステレオサウンドを提供するステレオサウンドカードを搭載しているものもある。エミュレータソフトウェアを実行するこのようなマルチメディアハードウェア搭載パーソナルコンピュータは、専用の家庭用ビデオゲームコンソールハードウェア構成におけるグラフィックス性能やサウンド性能に近づくのに十分な性能を有することもある。エミュレータソフトウェアは、パーソナルコンピュータプラットフォーム上のハードウェア資源を制御して、家庭用ビデオゲームコンソールプラットフォームが行う処理(このプラットフォームのためにゲームプログラマはゲームソフトウェアを書いたのであるが)、三次元グラフィックス、サウンド、周辺機器、および他の機能をシミュレートする。
【0032】
図6は、エミュレーション処理全体の一例を示す。本エミュレーション処理の例は、ホストプラットフォーム1201と、エミュレータ要素1303と、ROMまたは光ディスク1305などの記憶媒体や他の記憶装置上のバイナリ画像を実行可能なゲームソフトウェアとを用いる。ホスト1201は、たとえばパーソナルコンピュータや他の型のゲームコンソールのような汎用または専用のディジタルコンピューティング装置であってもよい。
【0033】
エミュレータ1303は、ホストプラットフォーム1201において実行されて、記憶媒体1305からのコマンド、データおよび他の情報をホスト1201によって処理可能な形式へリアルタイムで変換する。たとえば、エミュレータ1303は、図1ないし図4に示すような家庭用ビデオゲームプラットフォーム用のプログラム命令を取り出し、このプログラム命令をホスト1201が実行または処理できるような形式に変換する。一例として、ゲームプログラムがZ−80、MIPS、IBM PowerPCを用いたプラットフォームまたは他の特定の処理装置上で実行されるように書かれたものであって、かつホスト1201が異なる(たとえば、インテル社)の処理装置を用いたパーソナルコンピュータである場合に、エミュレータ1303は、記憶媒体1305から1つまたは一連のプログラム命令を取り出し、1つまたはそれ以上のインテル社のプログラム命令に変換する。
【0034】
同様に、エミュレータ1303は、図3に示すグラフィックスおよびオーディオコプロセッサによる処理用のグラフィックスコマンドやオーディオコマンドを取り出し、ホスト1201において利用可能なグラフィックスハードウェアおよび/またはソフトウェアならびにオーディオ処理資源が処理できるような形式に変換する。一例として、エミュレータ1303は、このようなコマンドを、ホスト1201の特定のグラフィックスおよび/またはサウンドカードが(たとえば、標準のDirectXやサウンドアプリケーションプログラムインターフェース(API)を用いて)処理できるようなコマンドに変換してもよい。
【0035】
上述のようなビデオゲームシステムの機能の一部または全部を提供するために用いられるエミュレータ1303は、エミュレータを用いて実行されるゲーム用の様々な選択肢や画面モードの選択を簡略化または自動化するグラフィックユーザインターフェース(GUI)を備えていてもよい。一例として、このようなエミュレータ1303は、当該ビデオゲームソフトウェアが元来想定していたホストプラットフォームに比して高い機能性をさらに有していてもよい。
【0036】
図7は、エミュレータ1303と共に用いるのに適した、パーソナルコンピュータに基づくホスト1201を示す。パーソナルコンピュータシステム1201は、処理部1203と、システムメモリ1205とを含む。システムバス1207は、システムメモリ1205などの様々なシステム要素と、処理部1203とを接続する。システムバス1207は、メモリバスまたはメモリコントローラ、周辺バス、ローカルバスなど、数種のバス構造(各々のバス構造には様々なバスアーキテクチャのうちのいずれかが用いられる)のいずれであってもよい。
【0037】
システムメモリ1207は、読み出し専用メモリ(ROM)1252と、ランダムアクセスメモリ(RAM)1254とを含む。ROM1252には、ベーシック入出力システム(BIOS)1256が記憶されており、これには、立ち上げ時などにパーソナルコンピュータシステム1201内の要素間の情報伝達を助ける基本ルーチンが含まれている。
【0038】
パーソナルコンピュータシステム1201は、様々なドライブおよび関連するコンピュータが読み出し可能な媒体をさらに含む。ハードディスクドライブ1209は、(典型的には固定の)磁気ハードドライブ1211に対して、読み出しや書き込みを行う。磁気ディスクドライブ1213は、着脱可能な「フロッピー」や他の磁気ディスク1215に対して、読み出しや書き込みを行う。光ディスクドライブ1217は、CD−ROMや他の光学媒体などの着脱可能な光ディスク1219に対して読み出しを行い、構成によっては書き込みも行う。ハードディスクドライブ1209、磁気ディスクドライブ1213、および光ディスクドライブ1217は、それぞれ、ハードディスクドライブインターフェース1221、磁気ディスクドライブインターフェース1223、および光ドライブインターフェース1225によって、システムバス1207に接続されている。これらドライブおよび関連するコンピュータが読み出し可能な媒体は、コンピュータが読み出し可能な命令、データ構造、プログラムモジュール、ゲームプログラム、およびパーソナルコンピュータシステム1201のための他のデータを不揮発的に記憶する。
【0039】
また、他の構成においては、コンピュータがアクセス可能なデータを保存することができる、コンピュータが読み出し可能な他の媒体(たとえば、磁気カセット、フラッシュメモリカード、ディジタルビデオディスク、ベルヌーイ(bernoulli)カートリッジ、ランダムアクセスメモリ(RAM)、読み出し専用メモリ(ROM)など)が用いられてもよい。
【0040】
エミュレータ1303を含む多くのプログラムモジュールが、システムメモリ1205のハードディスク1211、着脱可能な磁気ディスク1215、光ディスク1219および/またはROM1252および/またはRAM1254に記憶されてもよい。このようなプログラムモジュールは、グラフィックスおよびサウンドAPI、1つ以上のアプリケーションプログラム、他のプログラムモジュール、プログラムデータ、およびゲームデータを提供するオペレーティングシステムを含んでもよい。ユーザは、キーボード1227やポインティングデバイス1229などの入力装置を用いて、パーソナルコンピュータシステム1201に対して、コマンドや情報を入力する。他の入力装置としては、マイクロフォン、ジョイスティック、ゲームコントローラ、衛星放送用アンテナ、スキャナなどがある。このような入力装置は、システムバス1207に接続しているシリアルポートインターフェース1231を介して、処理装置1203に接続される場合が多いが、たとえばパラレルポート、ゲームポート、ユニバーサルシリアルバス(USB)などの他のインターフェースによって接続されてもよい。また、システムバス1207には、モニタ1233や他の型の表示装置が、ビデオアダプタ1235などのインターフェースを介して接続されている。
【0041】
パーソナルコンピュータ1201は、インターネットなどのワイドエリアネットワーク1152と通信を行うためのモデム1154などの手段をさらに含んでもよい。モデム1154は、内蔵でも外付けでもよく、シリアルポートインターフェース1231を介してシステムバス1207に接続される。パーソナルコンピュータ1201は、ネットワークインターフェース1156をさらに備えていてもよく、これによって遠隔計算装置1150(たとえば、他のパーソナルコンピュータ)とローカルエリアネットワーク1158を介して通信することができる(このような通信は、ワイドエリアネットワーク1152、または他の通信路、たとえばダイアルアップ方式や他の通信手段などを介して行われてもよい)。パーソナルコンピュータシステム1201は、典型的には、プリンタなどの標準周辺機器のような他の周辺出力装置を含む。
【0042】
たとえば、ビデオアダプタ1235は、三次元グラフィックスパイプラインチップセットを含んでもよい。このチップセットは、マイクロソフト社のDirectXのような標準三次元グラフィックスアプリケーションプログラマインターフェースに基づいて出された三次元グラフィックスコマンドに応答して、三次元グラフィックス描画を高速に行う。さらに、一連のステレオスピーカ1237が、システムバス1207に接続されており、この接続は、バス1207によって与えられるサウンドコマンドに基づく高品質ステレオサウンド生成に対応したハードウェアおよび内蔵ソフトウェアを提供する従来の「サウンドカード」などのサウンド生成インターフェースを介して行われる。このようなハードウェアの性能により、ホスト1201は、記憶媒体1305に記憶されたビデオゲームを行うのに充分な速度のグラフィックスおよびサウンド性能を提供することができる。
【0043】
(本発明による非写実的な漫画的な輪郭線処理法の例)
本発明による漫画の輪郭線/境界線処理は、ハードウエアおよび/またはソフトウエアで有利に実行され得る。時間が充分にあると仮定すると、グラッフィクスコプロセッサ1020が画像をフレームバッファにおいて描画した後であってその画像が表示される前に、プロセッサ1010は、フレームバッファ1040にアクセスして画素後処理を行い、境界線カラーをカラーフレームバッファ1042にブレンドする。あるいは、グラフィックスコプロセッサ1020内にハードウエアおよび/またはソフトウエアを備えて、この機能を行わせる。上述のように、コプロセッサ1020は、グラッフィクスパイプライン内のアルファブレンディングおよびzバッファ演算回路などの既存のハードウエアサポートを利用して、画素後処理/フィルタリングを行い、対象物の縁周りに境界線を付与してもよい。あるいは、プロセッサ1010および/または表示部1128が、フレームバッファ1040の内容を基に画素フィルタリング処理を行うこともできる。
【0044】
コプロセッサ1020がこの画素後処理を完了すると、変更された画素値はフレームバッファメモリ1030に書き戻される。このフレームバッファメモリ1030から、コプロセッサ内のビデオ生成回路によって内容がアクセスされて、表示装置1009上に映像が生成される。あるいは、変更された値は他の場所へ(たとえば、直接、表示装置1005へ)送られる。この伝送効率を高めるために、フレームバッファ1040のデータをダブルバッファしてもよく、DMAを使用してもよい。フレームバッファ1040が1ラインずつ読み出され、かつ処理される場合、前に位置するラインのZ値を保持するためにラインバッファを使用してもよい。
【0045】
図8は、好ましい実施例に係る画素フィルタリングルーチン100の一例を示すフローチャートであって、画素フィルタ50に対して画素後処理境界線を行う。図8の画素フィルタルーチン100は、フレームバッファ1040(ブロック102)内に記憶された画素[x][y]のそれぞれに対して行われる。この画素フィルタ100は画素のカラー値(画素R[x][y]、画素G[x][y]、画素B[x][y])を読み出し、さらに画素の深度値(Z[x][y])を読み出す(ブロック104)。加えて、この画素フィルタルーチン100は、画素[x][y]周辺にある画素の深度値も読み出す(同じくブロック104)。本例において、画素フィルタルーチン100は隣接画素2つの深度値を読み出す。つまり、x−yアレイ内の所定の画素の「左」隣にある周辺画素における深度値Z[x][y]、およびx−yアレイ内の所定の画素の真「下」にある周辺画素における深度値Z[x][y−1]である。以上は、図9を参照のこと。フレームバッファ1040が1ラインずつ読み出され、かつ処理された場合、ラインバッファは前に位置するラインのZ値を保持するのに使用され得る。
【0046】
画素フィルタルーチン100は、たとえば以下のDz演算(ブロック106参照)によって、画素[x][y]が対象物の縁であるかどうかを判別する、たとえば、画素の深度値(Z[x][y])と1つ以上の周辺の(本例においては隣接する)画素の深度値との差を判別する。
DzDx = |Z[x][y]−Z[x−1][y]|
DzDy = |Z[x][y]−Z[x][y−1]|
Dz = max(DzDx,DzDy)
上記演算を行う際、画素フィルタ100は画素の深度と、2つの隣接画素それぞれとの差を判別する、つまりこれらの差の絶対値をとり(ある対象物は別の対象に近いか遠いかのどちらかであることを利用する)、得られた2つの絶対値のうち大きい方を選択する。この結果が距離値Dzであって、ある画素がz方向において、ある周辺画素からどれだけ離れているかをはかる値である。この演算は、画素が対象物の縁上にあるかどうかをテストするために行われる。たとえば、画素が対象物の縁上にある場合、Dzは一般に大きくなり(典型的に、周辺画素はそれぞれ異なる深度を有しているため)、画素が対象物の縁上にない場合は、Dzは一般に小さくなる(周辺画素は深度が相似するためである)。
【0047】
別の例においては、2つの周辺画素の距離値の総計をとることで距離値Dzを演算することができる。たとえば、下式が例である。
Dz = DzDx+DzDy
また、その他の方法でも可能である(たとえば、演算方法を変えたり、使用する周辺画素を変更したり、または周辺画素数を変更するなど)。
【0048】
本例における画素フィルタルーチン100は、上述のように演算された距離値Dzに比例してカラーを変化させる。たとえば、画素フィルタ100は、得られた距離値Dzの係数をスケーリング/修正して変更し、その結果得られた値をクランプして、たとえば以下のような画素ブレンドファクタを成立させる(ブロック108参照)。
アルファ = クランプ((スケール係数*Dz+ベース係数),0,1)
ここで、クランプは、クランプ(x,0,1)とした場合において、xが0以下のときには0を返し、xが1以上のときには1を返し、0<x<1のときにはxを返す関数である。
【0049】
スケール係数が正の値であると仮定すると、得られたアルファ値はDzが大きいと大きくなり(たとえば、ほぼ1、または1になるようにクランプされる)、Dzが小さいとアルファ値も小さくなる(たとえば、ほぼ0、または0になるようにクランプされる)。画素ブレンドファクタを成立させるには、方法は問わない。たとえば、画素ブレンドファクタを演算する別の方法を以下に示す。
グレイ = クランプ((Dz−係数A)*係数B,0,1)
【0050】
本例における画素フィルタ100は、ブレンド処理(たとえば、アルファブレンディング)で得られた画素ブレンド係数を用いて、選択的に所定の境界線カラー(たとえばラインR、ラインG、ラインB)を、カラーフレームバッファ1042から得られた画素のカラー値(画素R[x][y]、画素G[x][y]、画素B[x][y])とブレンドする。このブレンドを行うための演算の例は、以下の通りである。
新画素.R[x][y] = 旧画素.R[x][y]*(1−アルファ)+ライン.R*アルファ
新画素.G[x][y] = 旧画素.R[x][y]*(1−アルファ)+ライン.G*アルファ
新画素.B[x][y] = 旧画素.R[x][y]*(1−アルファ)+ライン.B*アルファ
これら演算に従って、ブレンドされた(「新」)画素カラー値は、距離値Dzが小さいと、ほとんどの場合、初期値になり、距離値Dzが大きいと境界線カラーになる。
【0051】
上記のブレンド演算は、境界線カラーを黒(たとえばライン.R=0、ライン.G=0、ライン.B=0)に限定し、および/またはホワイトキャンバスのカラー(ライン.R=255,ライン.G=255,ライン.B=255)だけを用いることで簡略化が可能である(たとえば、さらなる最適化のために行われる)。より最適化するためには、RGBカラーでないフォーマット、たとえばYUV(この場合、境界線が鮮明に見えるよう、確実に付与するために明るさYを制御する)などを用いる。
【0052】
ブレンド後、ブレンドされた画素をバッファして表示装置1009(ブロック112)に表示する。たとえば、画素フィルタルーチン100を、フレームバッファ1040内の画素すべてに対して行い、その結果得られるブレンドされたフレームバッファの内容を表示装置1009に表示する。
【0053】
遠近処理は、場合によっては上記処理で得られる結果に影響を及ぼす。図10に示すように、遠くに画素PixA、近くに画素PixBがある場合について考える。変換により、遠くにある画素PixAのDzDyは、近くにある画素PixBのDzDyよりも大きくなる。この結果、未処理のDzDxおよびDzDy値を用いた画像全体における、境界線の検知がさらに難しくなる。この問題を克服するためには、Zレンジに応じてZ値に修正を加えるとよい。修正には、たとえばレンジ変換するため、以下のようにlog2(n)関数を用いる。
DzDx=|log2(Z[x][y])−log2(Z[x−1][y])|
DzDy=|log2(Z[x][y])−log2(Z[x][y−1])|
プロセッサ1010に浮動小数点計算機能があり、Z値が例えば以下のような浮動小数点フォーマットで記憶されている場合、log2(n)関数の計算は非常に都合がよい。
[3ビット指数][11ビット仮数]
【0054】
図11は、図8に示すフローチャ−トを変更して、このlog2(n)のレンジ変換式を加えたものである。
【0055】
図12は、ブレンディングを制御するのに用いられる、アルファ値の深度変調を行う後処理画素フィルタ200のもう一つの例である。図12に示す、ブロック204、206、および208は、図8(レンジ修正が適用される場合は図11)に示す対応するブロック104、106、および108と同一である。図12のブロック210は、ブロック208で計算された値、および画素深度zの関数であるさらなる値の関数(たとえば、積)としてアルファAを計算するために付加されたものである。たとえば、
アルファ=アルファDz*アルファZ
この結果得られたアルファ値、つまり図8のブロック210に関連して説明した、ブレンディングの制御(ブロック212参照)に用いられるアルファ値も、画素の深度に左右される。
【0058】
(漫画的な輪郭線処理のさらなる実施例)
演算方法によっては、上記境界線の応用アルゴリズムでは、漫画的な輪郭線処理において、満足のいく結果が得られないことがある。図13においてそのような例を示す。図13における漫画キャラクタ300には、上記のように陰影の縁302に境界線が付与されている。図13から、この漫画キャラクタ300は右手、手首を有しており、腕を前部で曲げている様子がわかる。上記の手法では、場合によって(キャラクタの腕が胴体部からどれだけ離れているかによるが)、右の手、手首、および腕の周りの縁は陰影の縁ではなく内部だと判断されるため、それらの箇所には境界線を付与しない。図13では、漫画的な輪郭線処理がキャラクタの陰影の縁302だけに施された場合、漫画キャラクタ300が部分的に消滅する、あるいはやや鮮明でなくなる様子を示す。ところが、ユーザは(塗り絵、手描きのアニメ漫画、および/または漫画本などの記憶から)手、手首および腕がはっきり示されるような境界線を期待している。
【0059】
漫画キャラクタ300が手描きであるかのように見せるには、内部の縁304にも境界線を付すとよい。本例においては、内部の縁は、キャラクタが自身の前部で曲げている手、手首および腕を規定している。図14では、このキャラクタ300の内部の縁304に境界線が付与されている。この内部の縁304は、キャラクタ300が腕を外に向けて延ばしている場合は輪郭線の縁になるが、図14に示す腕の位置では内部の縁になる。
【0060】
本発明に係る別の局面によれば、図14に示すような内部の縁においては、漫画的な輪郭線処理は自動的に行われる。つまり、対象物の部分によって、画素にはそれぞれ異なる識別値が付与される。たとえば、通常はアルファ情報をエンコードするのに用いられるフレームバッファ1040および/またはDRAM1126a内に、ビット割り当てを行うことにより、この識別値を指定する。この指定された識別値を用いて、その画素の位置に境界線を付すかどうかを決定してもよい。たとえば、ある画素の識別値と、その画素の近辺にある(隣接した)画素の識別値とを比較する。これら2つの画素の識別値間にある所定の関係が認められた場合、境界線は付与されない。たとえば、識別値が同一の場合、これら2つの画素は同一面上にあるため、境界線は付さない。しかし、これら2つの画素の識別値が、別の所定の関係にある場合は、境界線を付与する。
【0061】
15(A)〜(C)では一例を示す。図15(A)は、3つの部分320、322および324に大別される対象物319の斜視図である。図15(B)は、同じ対象物319の平面図である。対象部分320は四角形であり、対象部分322は円形であり、対象部分324は円錐である。ここで、グラフィックスアーチストが、円錐324が四角形320に視覚的に接触するが、円形322には接触しない部分、または円形が四角形に接触する部分に境界線330(図15(A)参照)を引こうとしていると仮定する。この場合、四角形320、円形322および円錐324内の画素は、それぞれ異なる識別値でコーディングされる。たとえば、四角形320内の画素は識別値「1」でコーディングされ、円形322内の画素は識別値「2」でコーディングされ、さらに円錐324内の画素は識別値「3」でコーディングされる。図15(C)は、コーディング情報を記憶するフレームバッファ1040および/または1126aのアルファ部の一例を示す(斜線を付したセルが境界線カラーを付与するセルである)。
【0062】
画素後処理の段階においては、フレームバッファ内の様々な識別値に対してテストを行う。隣接する画素のように同一の識別値を有する画素(このような画素はすべて同一面上に存在する)に対しては、境界線を付与しない。また、或る画素の識別値が隣接画素のそれと、ある基準を下回って異なっている場合は境界線を付与しない(たとえば、画素kの識別値が画素k+1の識別値から2以上違わない場合、境界線は付与しない)。しかし、ある画素の識別値が隣接画素のそれと、ある基準を上回って異なっている場合は境界線を付与する(たとえば、画素kの識別値が画素k+1の識別値から2以上違う場合、境界線を画素kに付与する)。
【0063】
16は、本実施例において、境界線を付与するための画素後処理ルーチンの一例を示すフローチャートである。ルーチン350は、ループ(ブロック352−362)を含み、このループはフレームバッファ1040および/または1126aに記憶される画像における画素[i][j]それぞれに対して行われる。上述のように、画像生成処理においては、フレームバッファで画像を描画する際、通常はアルファ値を記憶するためにビットが割り当てられているフレームバッファ内にある対象物の部分毎に識別値を設定する。ルーチン350において、これらアルファ値(ここではID値)をテストして境界線を引くかどうかを決定する。本例において、ルーチン350では、画素[i][j]のアルファ(ID)値および隣接画素(たとえば、画素[i−1][j]および画素[i][j−1])のアルファ(ID)値を検索する(ブロック352)。その後、ルーチン352では、以下の演算を行い(ブロック354)画素[i][j]のアルファ(ID)値と隣接画素のアルファ(ID)値との差を求める。
diffX=|(アルファ[i][j]−アルファ[i−1][j])|
diffY=|(アルファ[i][j]−アルファ[i][j−1])|
【0064】
その後ルーチン350では、演算して得られた差の値、diffXとdiffYとをテストして、どちらかが所定の差の値を超えているかどうかを判別する(たとえば任意に固定の、または1のようなプログラム可能閾値)(ブロック356)。差の値のうち、少なくとも1つが所定の差の値を超えている場合、ルーチン350は画素[i][j]のカラーを境界線カラーに設定する(ブロック358)。これにより本例においては、アルファスロープが−1から+1の場合、画素は同一面上にあるとされる。ステップ352から358は、画像内にある画素それぞれに対して順に行われる(ブロック360、362)。
【0065】
ルーチン350の変形例として、対象物をある特別なアルファ識別値(たとえば0x00)でコーディングして、境界線を付与するために無視すべき対象物内の画素を特定する(図17参照)。境界線が付与されていない対象物をビットマップとして描画する際に有用である(例えば、爆発のアニメーション等)。
【0066】
18は、上記ルーチン350を用いて、図13および図14に示す対象物300にいかに効率良く境界線を引くかを示す。本例において、対象物は部分毎にそれぞれ異なるアルファ(ID)値でコーディングされている。たとえば、対象物300は2本の腕311a、311bおよび胴体309を備える。腕はそれぞれ手313、手首部315、下腕部312、肘部308、上腕部310、および肩部317を備える。これら部位は、以下のようにそれぞれ異なるアルファIDでコーディングされる。
身体部 アルファID
左手313a 1
左手首315a 2
左下腕312a 3
左肘308a 4
左上腕310a 5
左肩317a 6
胴体309 7
右肩317b 8
右上腕310b 9
右肘311b 10
右下腕312b 11
右手首315b 12
右手313b 13
上記アルファIDコーディングの例によれば、ルーチン350では、図18に太線で示されているような境界線を引く。しかし、部位の区切り部分(点線で示す)には境界線を引かない。
【0067】
上記コーディングは、同じ対象物300の部位の区切り部分に境界線を引くのにも用いることができる。従来の塗り絵や手描きアニメ漫画などでは、このような区切り部分にも漫画的な輪郭線処理を施して、さらに関節を規定したり、筋肉の発達を想像させたりしている。図19(A)〜(C)では、キャラクタ300の上腕310と下腕とをつなぐ関節308(つまり肘)を特に示す。上記コーディングを用いて、図19(B)および(C)に示すように、関節308を曲げることで上腕310と312とが互いに隣接(接触)して位置した場合、ルーチン350では(下腕310のアルファIDと、上腕312のアルファIDとの差が1より大きいかどうかに基づいて)、部位310と312との間に境界線セグメント316を付与する。
【0068】
これにより、本発明は、三次元コンピュータグラフィックスにおいて、漫画的な輪郭線のような非写実的な効果を付与するための効果的な手法を提供する。これら手法は、画素後処理の段階で(すなわち、三次元グラフィックスパイプラインが画像をフレームバッファにおいて描画されてから)用いられ、三次元グラフィックスパイプラインによって与えられる以外の画素情報を必要としない(すなわち、色、深度およびアルファ画素情報)。このように、本発明における画素後処理の手法は、フレームバッファ(たとえば、回路上のバッファの一部から回路外のバッファへ、エリアシングまたは他の後処理動作)の「ダウンストリーム」で効果的に、かつ効率良く行われ、これによって三次元グラフィックスパイプラインまたはシステムの他の構成要素が実質的に複雑化することもない。
【0069】
本発明は、現在最も現実的で好ましい実施例と思われるものに関連して説明されてきたが、本発明は、開示された実施例に限定されるものではなく、様々な変形例や均等な構成を含むことを想定していると解釈される。
【図面の簡単な説明】
【図1】本発明を具体化するための三次元ビデオグラフィックスシステムの例を示す図である。
【図2】本発明を実施しうるインタラクティブ三次元コンピュータグラフィックスシステム1005全体のより詳細な模式図である。
【図3】コプロセッサ1020内の構成要素例のブロック図である。
【図4】三次元グラフィックスプロセッサ1107と、それに関連するコプロセッサ1020内の構成要素のより詳細な図である。
【図5】本発明におけるスクリーン効果を例示的に示す図である。
【図6】エミュレーション処理全体の一例を示した図である。
【図7】エミュレータ1303と共に用いるのに適した、パーソナルコンピュータに基づくホストを示した図である。
【図8】好ましい実施例に係る画素フィルタリングルーチン100の一例を示すフローチャートである。
【図9】画素フィルタルーチン100が隣接画素2つの深度値を読み出す例を示した模式図である。
【図10】遠くに画素PixA、近くに画素PixBがある場合の遠近処理を示した模式図である。
【図11】図8に示すフローチャ−トを変更して、log2(n)のレンジ変換式を加えたフローチャートである。
【図12】ブレンディングを制御するのに用いられる、アルファ値の深度変調を行う後処理画素フィルタ200の一例である。
【図13】漫画的な輪郭線処理による漫画キャラクターの一例を示す図である。
【図14】漫画的な輪郭線処理による漫画キャラクターの別例を示す図である。
【図15】漫画的な輪郭線処理の境界線の箇所を特定するための対象物識別値を用いた、本発明のさらなる実施形態を示す図である。
【図16】本実施例において、境界線を付与するための画素後処理ルーチンの一例を示すフローチャートである。
【図17】ルーチン350の変形例を示した模式図である。
【図18】漫画的な輪郭線効果を得るために行う、対象物識別値コーディングの一例を示す図である。
【図19】漫画的な輪郭線効果を得るために行う、対象物識別値コーディングの別例を示す図である。
[0001]
BACKGROUND OF THE INVENTION
The present invention relates to 3D computer graphics, and more particularly to non-realistic 3D imaging. More particularly, the present invention relates to a method and apparatus for generating and displaying a line on a shadow of a three-dimensional object by a computer and other boundaries found on the edges thereof.
[0002]
[Prior art]
Much of the research on computer graphics has tended to focus on generating realistic images and has been quite successful so far. Nowadays, computer-generated images are becoming very realistic and cannot be distinguished from photographs. For example, we often see dinosaurs, aliens, and so on that appear to be very realistic and real due to special effects created by computers. The computer-based flight simulator trained by new pilots is very real and almost reproduces the actual flight conditions. Even in low-cost home video game systems, an amazing level of realism has been realized, and game players are covered in snow and ice, for example, running on a track in a real race car You can feel the illusion of walking in a medieval castle, like skiing down a slope. In most games, this illusion of realism greatly enhances the gameplay experience.
[0003]
However, in some cases, an unreal image may be preferable. For example, in interactive video and computer games, instead of realistically simulating the real (or fantasy) world, a cartoon world with many unrealistic parody-like characters will be created on purpose. If it is displayed, it can be provided with entertainment value. For example, in such a game, an effort is made to reproduce a hand-drawn comic book with movement, voice, and interactivity.
[0004]
In such a three-dimensional computer system, one of the desirable visual effects is to make sure that the shadow lines of the display object and other boundaries seen at the edges thereof are clear and reliable. Such a border makes certain images clearer. For example, it becomes easier for the user to distinguish different faces such as the outline of a cartoon character, a landscape hill or mountain, and the edge of a wall. Furthermore, such a boundary line tends to create a desirable impression as if it were hand-drawn by a cartoonist.
[0005]
[Problems to be solved by the invention]
Here, a line that distinguishes from another object adjacent to the edge of the polygon that forms a certain object is one of the methods that give an unreal effect such as a boundary line around the edge of the object such as a character. There is a way to show clearly.
[0006]
However, if the border with another object is clearly shown, the image processing becomes extremely complicated. As a result, in systems with limited resources, this method results in delays in image generation and reduced efficiency. Efficiency is extremely important in low-cost 3D graphics systems such as interactive 3D game systems. Using more efficient techniques to generate visual effects reduces the burden on scarce system resources and further improves visual effects overall without significantly affecting speed or other performance be able to.
[0007]
[Means for Solving the Problems and Effects of the Invention]
The present invention solves this problem by providing an efficient technique for displaying shadow lines and borders at their edges in 3D graphics systems, such as home video game consoles.
[0008]
According to the first invention, after the image is drawn in the frame buffer, the boundary line is generated. In the present invention, the values stored in the frame buffer are used to determine which pixels are located on the contour or other edges of the object, and the border color is selectively blended with these pixels and displayed.
[0009]
Further, according to an embodiment, the edge of the contour is arranged by comparing the depth value of a certain pixel with the depth value of the surrounding pixels. For example, the “distance” value is calculated based on the absolute value of the distance between the depth of a certain pixel and the surrounding pixels. Then, based on this distance value, the desired border color is blended with the color value of that pixel. For example, the distance value is used to calculate the alpha value of the pixel, and this alpha value is used to control the amount of border color blended into the pixel color.
[0010]
In another example, depth changes are further used. For example, the alpha value of the pixel is calculated based on the distance value and a further provided value that is a function of the pixel depth, and the alpha value changed according to the depth value of the pixel is obtained. Based on the alpha value changed by this depth, the border color is blended with the pixel color.
[0011]
In a further embodiment, the border is drawn on some internal edge where the cartoonist will draw the border, rather than on the contour of the object. For example, consider a state where a cartoon character is bending an arm in front of the body. In this case, the cartoonist would draw a border around the character's arm outline. Even if this character bends the arm at the front of the torso so that the edge of the contour of the arm is located inside the entire contour. According to a further feature of the present invention, different identification values are assigned to each pixel of the image. This identification value is typically stored in a frame buffer memory area or the like prepared for the alpha value. These identification values are used to identify an edge with a boundary line and an edge without a boundary line.
[0012]
DETAILED DESCRIPTION OF THE INVENTION
Embodiments of the present invention will be described below with reference to the drawings. FIG. 1 shows an example of a three-dimensional video graphics system 1005 for displaying boundaries according to the present invention.
[0013]
The system 1005 is responsive to interactive real-time input from, for example, the game controller 1007 and / or other manual input devices, and displays on a display device 1009 (eg, a home color television receiver, video monitor, or other display). Display video. The system 1005 operates under the control of a computer program such as a video game program stored on an external storage medium 1011 (eg, a replaceable video game cartridge, CD-ROM, or other optical disc).
[0014]
In this example, system 1005 includes a processor 1010, a three-dimensional graphics processor 1020 and a memory 1030. The processor 1010 provides a three-dimensional graphics command to the graphics score processor 1020. The graphics coprocessor 1020 interactively generates a 2D view in the 3D world according to the 3D graphics command. For example, the graphics coprocessor 1020 includes a hardware three-dimensional graphics pipeline. This pipeline manipulates graphics primitives such as polygons defined in 3D space to generate pixels that represent 2D images in 3D space projected onto a field of view based on an arbitrarily chosen viewpoint. . In this example, the user can use the game controller 1007 to interactively change the viewpoint in real time.
[0015]
The graphics coprocessor 1020 stores the generated display pixel in the frame buffer 1040 in the memory device 1030. The frame buffer 1040 includes a color frame buffer 1042 and a depth (Z) buffer 1044. In this example, the color frame buffer 1042 stores a two-dimensional array of red, green and blue (RGB) color values and corresponding alpha (A) values. There may be a one-to-one relationship between the stored RGB color values and the pixels displayed on the display device 1009. Alternatively, the frame buffer 1042 may store the subsample. The Z buffer 1044 stores a depth value (for example, a distance in the z direction with respect to the viewpoint) for each pixel or sub-pixel stored in the color frame buffer. As is well known, the Z-buffer 1044 is used for a variety of purposes (eg, removal of invisible surfaces) when the graphics pipeline “builds” the image.
[0016]
In the preferred embodiment, the contents of the color frame buffer 1042 and / or the z buffer 1044 selectively blend the border color with the pixel color values stored in the color frame buffer 42 to define object boundaries. Also plays a role. Specifically, the system 1005 may include a pixel filter 50. The pixel filter 50 processes the pixel values of the image rendered by the 3D graphics coprocessor 1020 and selectively applies them on the contours and / or other edges of the object displaying the border color. . The pixel filter 50 in the preferred embodiment operates at the pixel post-processing stage after the image data is rendered in the frame buffer 1040 or other pixel memory. For example, the pixel filter 50 may apply a boundary line or the like to the image data drawn and buffered by the three-dimensional graphics processor 1020 during the process of combining the image data from the graphics processor and the image data into the memory 1030. Non-realistic image elements may be added.
[0017]
FIG. 2 is a more detailed schematic diagram of an entire interactive 3D computer graphics system 1005 in which the present invention may be implemented. System 1005 can be used to play interactive 3D video games with attractive stereo sound. Various games can be played by inserting an appropriate storage medium such as the optical disc 1011 into the optical disc playback apparatus 1134. A game player can interact with the system 1005 in real time by operating an input device such as a manual controller 1007. The controller 1007 includes various operating devices such as a joystick, a button, a switch, a keyboard, and a keypad.
[0018]
In this example, main processor 1010 receives input from manual controller 1007 (and / or other input devices). The main processor 1010 interactively responds to such user input and executes a video game or other graphics program provided from, for example, the external storage device 1011. For example, the main processor 1010 can perform various real-time interactive control functions in addition to collision detection and moving image processing.
[0019]
The main processor 1010 generates a three-dimensional graphics command and a voice command, and transmits them to the graphics and voice coprocessor 1020. The graphics and audio coprocessor 1020 processes these commands to display a compelling image on the display device 1009 and generate stereo audio on the stereo speakers 1137R, 1137L, or an appropriate audio generator.
[0020]
System 1005 includes a TV encoder 1140. The TV encoder receives the image signal from the coprocessor 1020 and converts it into a composite video signal suitable for display on a standard display device 1009 (eg, a computer monitor or a home color television receiver). The system 1005 also includes an audio codec (compressor / decompressor) 1138.
[0021]
The audio codec 1138 compresses / decompresses the digitized audio signal (and may convert between digital analog audio signal formats). The audio codec 1138 receives the audio input via the buffer 1141 and transmits it to the coprocessor 1020 (for processing in the coprocessor 1020, other audio signals generated by the coprocessor and / or streaming of the optical disc device 1134). For example, mixing with other audio signals received via the audio output).
[0022]
The coprocessor 1020 stores the voice related information in the memory 1144 dedicated to the voice task. Coprocessor 1020 provides the processed audio output signal to audio codec 1138 for compression and conversion to an analog signal (eg, via buffer amplifiers 1142L and 1142R) for playback by speakers 1137L and 1137R. To do.
[0023]
Coprocessor 1020 can communicate with various peripheral devices in system 1005. For example, the parallel digital bus 1146 may be used for communication with the optical disc device 1134. The serial peripheral bus 1148 may be used for communication with various peripheral devices. Examples of the peripheral device include a ROM and / or a real-time clock 1150, a modem 1152, and a flash memory 1154. An additional external serial bus 1156 may be used for communication with expansion memory 1158 (eg, a memory card).
[0024]
FIG. 3 is a block diagram of example components within the coprocessor 1020. The coprocessor 1020 is an integrated circuit, and includes a three-dimensional graphics processor 1107, a processor interface 1108, a memory interface 1110, an audio digital signal processor (DSP) 1162, and an audio memory interface (I / F) 1164. An audio interface and mixer 1166, a peripheral controller 1168, and a display controller 1128.
[0025]
The three-dimensional graphics processor 1107 performs a graphics processing task, and the audio digital signal processor 1162 performs an audio processing task. Display controller 1128 accesses and retrieves image information from memory 1030 and provides it to TV encoder 1140 for display on display device 1009. The audio interface and mixer 1166 serves as an interface with the audio codec 1138, and receives audio of different sources (eg, streaming audio input from the disk 1011, output of the audio DSP 1162, external audio input received via the audio codec 1138, etc.). It is also possible to mix. The processor interface 1108 is an interface related to data and control between the main processor 1010 and the coprocessor 1020. The memory interface 1110 is an interface related to data and control between the coprocessor 1020 and the memory 1030. In this example, the main processor 1010 accesses the main memory 1108 via the processor interface 1108 and the memory interface 1110 that is a part of the coprocessor 1020. Peripheral controller 1168 provides data between coprocessor 1020 and the various peripheral devices described above (eg, optical disk device 1134, controller 1007, ROM and / or real time clock 1150, modem 1152, flash memory 1154, and memory card 1158). Interface for control. The audio memory interface 1164 provides an interface with the audio memory 1144.
[0026]
FIG. 4 is a more detailed view of the 3D graphics processor 1107 and its associated components within the coprocessor 1020. The three-dimensional graphics processor 1107 includes a command processor 1114 and a three-dimensional graphics pipeline 1116. The main processor 1010 exchanges a graphics data stream with the command processor 1114. The command processor 1114 receives such a display command, analyzes (acquires additional data required for processing from the memory 1030), analyzes the vertex command stream for graphics processing and drawing for three-dimensional processing and drawing. 1116. The graphics pipeline 1116 generates a three-dimensional image based on these commands. The processed image information may be transferred to the main memory 1030 and made accessible by the display controller 1128. The display controller 1128 displays the frame buffer output of the pipeline 1116 on the display device 1009. The memory request arbitration circuit 130 arbitrates memory access in the graphics pipeline 1116, the command processor 1114, and the display unit 128.
[0027]
As shown in FIG. 4, the graphics pipeline 1116 may include a conversion unit 1118, a setup / rasterizer 1120, a texture unit 1122, a texture environment unit 1124, and a pixel engine 1126. In the graphics pipeline 1116, the conversion unit 1118 may perform various three-dimensional conversion operations, and may further perform illumination effects and texture effects. The processing performed by the conversion unit 1118 includes, for example, conversion from an object space having a shape input for each vertex to screen space, conversion of input texture coordinates, calculation of projected texture coordinates, polygon clipping, and calculation of illumination intensity for each vertex. And bump mapping texture coordinate generation. The setup / rasterizer 1120 includes a setup unit. The setup unit receives the vertex data from the conversion unit 1118 and transmits triangular setup information to a plurality of rasterizers. The rasterizer performs edge rasterization, texture coordinate rasterization, and color rasterization. The texture unit 1122 performs various tasks related to texturing. This task includes multi-texture processing, post-cache texture decompression processing, texture filtering, raised bump mapping, shading using projected textures, and BLIT using alpha transparency and depth. The texture unit 1122 outputs the filtered texture value to the texture environment unit 1124. The texture environment unit 1124 blends the polygon color and the texture color, and performs texture fog and other environment-related functions. The pixel engine 1126 performs z buffering and blending, and stores data in a frame buffer memory on the integrated circuit.
[0028]
As shown in FIG. 5, the graphics pipeline 1116 may include a DRAM memory 1126a that stores frame buffer information locally. The frame buffer 1126a on the integrated circuit is periodically written in the main memory 1030 that is not provided on the integrated circuit so that the display unit 1128 on the integrated circuit can access it. For example, the pixel filter 50 operates to add a contour such as a boundary line to the cartoon during the writing process. The frame buffer output of the graphics pipeline 1116 (which is finally stored in the main memory 1030) is read by the display unit 1128 for each frame. The display unit 1128 provides digital RGB pixel values for display on the display device 1009.
[0029]
Some of the components of the video game system described above can also be implemented as other than the home video game console configuration described above. Generally, home video game software is written to run on a specific home video game system. This video game software may be “ported” (converted) to the different systems, taking into account the hardware and software configuration of the different systems. Such “porting” often requires access to the video game source code. In addition, there is a method for causing the second system to emulate the first system as a method for executing the game software in a system having a different configuration. If the second system can successfully emulate or simulate the hardware and software resources of the first system, the second system can successfully execute the image executable in the video game software binary; There is no need to access the source code of the game software.
[0030]
In home video games, an emulator is a system different from a system for a game program, that is, a system designed to be able to execute a game program. As an example, an emulator system provides a hardware and / or software configuration (platform) that is different from that of a system for game software. The emulator system includes software and / or hardware components that mimic the software and / or hardware components of the system for game software. For example, the emulator system may include a general-purpose digital computer such as a personal computer that executes a software emulator program that simulates the hardware and / or firmware of the game software system.
[0031]
The emulator software may be developed so that a game for a home video game system as shown in FIGS. 1 to 4 using a console can be executed on a personal computer or other general-purpose digital computer. For such general-purpose digital computers (for example, IBM and Macintosh personal computers and compatible computers), a 3D graphics pipeline corresponding to DirectX and other standard 3D graphics command application program interface (API) is provided. Some have a 3D graphics card. Some have a stereo sound card that provides high-quality stereo sound based on a standard set of sound commands. Such multimedia hardware-equipped personal computers that run emulator software may have sufficient performance to approximate the graphics and sound performance in a dedicated home video game console hardware configuration. Emulator software controls the hardware resources on the personal computer platform to do what the home video game console platform does (though game programmers wrote game software for this platform), 3D graphics, Simulate sound, peripherals, and other functions.
[0032]
FIG. 6 shows an example of the entire emulation process. This example of emulation processing uses a host platform 1201, an emulator element 1303, and game software that can execute a binary image on a storage medium such as a ROM or an optical disk 1305 or another storage device. Host 1201 may be a general purpose or dedicated digital computing device such as a personal computer or other type of game console.
[0033]
The emulator 1303 is executed on the host platform 1201 to convert commands, data, and other information from the storage medium 1305 into a format that can be processed by the host 1201 in real time. For example, the emulator 1303 takes out the program instructions for the home video game platform as shown in FIGS. 1 to 4 and converts the program instructions into a format that can be executed or processed by the host 1201. As an example, the game program is written to be executed on a platform using Z-80, MIPS, IBM PowerPC, or other specific processing device, and the host 1201 is different (for example, Intel Corporation). ), The emulator 1303 takes one or a series of program instructions from the storage medium 1305 and converts them into one or more Intel program instructions.
[0034]
Similarly, the emulator 1303 extracts graphics commands and audio commands for processing by the graphics and audio coprocessor shown in FIG. 3, and the graphics hardware and / or software available in the host 1201 and audio processing resources are processed. Convert to a format that you can do. As an example, emulator 1303 converts such commands into commands that can be processed by a particular graphics and / or sound card of host 1201 (eg, using standard DirectX or a sound application program interface (API)). It may be converted.
[0035]
The emulator 1303 used to provide part or all of the functions of the video game system as described above is a graphic that simplifies or automates the selection of various options and screen modes for games executed using the emulator. A user interface (GUI) may be provided. As an example, such an emulator 1303 may further have higher functionality than the host platform originally assumed by the video game software.
[0036]
FIG. 7 shows a personal computer based host 1201 suitable for use with emulator 1303. The personal computer system 1201 includes a processing unit 1203 and a system memory 1205. A system bus 1207 connects various system elements such as the system memory 1205 and the processing unit 1203. The system bus 1207 may be any of several types of bus structures (one of various bus architectures is used for each bus structure) such as a memory bus or memory controller, a peripheral bus, and a local bus. .
[0037]
The system memory 1207 includes a read only memory (ROM) 1252 and a random access memory (RAM) 1254. The ROM 1252 stores a basic input / output system (BIOS) 1256, which includes a basic routine that helps to transfer information between elements in the personal computer system 1201 at the time of start-up.
[0038]
Personal computer system 1201 further includes various drives and associated computer readable media. The hard disk drive 1209 reads from and writes to a (typically fixed) magnetic hard drive 1211. The magnetic disk drive 1213 reads from and writes to a removable “floppy” and other magnetic disks 1215. The optical disc drive 1217 reads from and attaches to a removable optical disc 1219 such as a CD-ROM or other optical medium, and also writes depending on the configuration. The hard disk drive 1209, magnetic disk drive 1213, and optical disk drive 1217 are connected to the system bus 1207 by a hard disk drive interface 1221, a magnetic disk drive interface 1223, and an optical drive interface 1225, respectively. These drives and associated computer readable media store computer readable instructions, data structures, program modules, game programs, and other data for the personal computer system 1201 in a nonvolatile manner.
[0039]
In other configurations, other computer readable media (eg, magnetic cassettes, flash memory cards, digital video disks, Bernoulli cartridges, random storage media that can store computer accessible data can be stored. An access memory (RAM), a read-only memory (ROM), or the like may be used.
[0040]
Many program modules including the emulator 1303 may be stored in the hard disk 1211, removable magnetic disk 1215, optical disk 1219 and / or ROM 1252 and / or RAM 1254 in the system memory 1205. Such program modules may include an operating system that provides graphics and sound APIs, one or more application programs, other program modules, program data, and game data. The user inputs commands and information to the personal computer system 1201 using an input device such as a keyboard 1227 and a pointing device 1229. Other input devices include a microphone, joystick, game controller, satellite dish, scanner, and the like. Such an input device is often connected to the processing device 1203 via a serial port interface 1231 connected to the system bus 1207. For example, a parallel port, a game port, a universal serial bus (USB), etc. It may be connected by another interface. A monitor 1233 and other types of display devices are connected to the system bus 1207 via an interface such as a video adapter 1235.
[0041]
The personal computer 1201 may further include means such as a modem 1154 for communicating with a wide area network 1152 such as the Internet. The modem 1154 may be internal or external and is connected to the system bus 1207 via the serial port interface 1231. The personal computer 1201 may further include a network interface 1156 that allows communication with a remote computing device 1150 (eg, another personal computer) via the local area network 1158 (such communication is It may be performed via the wide area network 1152 or other communication paths, such as a dial-up system or other communication means). The personal computer system 1201 typically includes other peripheral output devices such as standard peripherals such as printers.
[0042]
For example, video adapter 1235 may include a 3D graphics pipeline chipset. This chipset performs 3D graphics drawing at high speed in response to 3D graphics commands issued based on a standard 3D graphics application programmer interface such as Microsoft DirectX. In addition, a series of stereo speakers 1237 are connected to the system bus 1207, which provides hardware and built-in software that supports high quality stereo sound generation based on sound commands provided by the bus 1207. This is done through a sound generation interface such as a “sound card”. Such hardware capabilities allow the host 1201 to provide graphics and sound performance that is fast enough to play a video game stored on the storage medium 1305.
[0043]
(Example of non-realistic cartoon-like contour processing method according to the present invention)
Cartoon outline / border processing according to the present invention may be advantageously performed in hardware and / or software. Assuming there is enough time, after the graphics coprocessor 1020 renders an image in the frame buffer and before the image is displayed, the processor 1010 accesses the frame buffer 1040 to perform pixel post-processing. The border color is blended into the color frame buffer 1042. Alternatively, hardware and / or software is provided in the graphics coprocessor 1020 to perform this function. As described above, the coprocessor 1020 utilizes existing hardware support such as alpha blending and z-buffer arithmetic in the graphics pipeline to perform pixel post-processing / filtering and to create a border around the object's edge. May be given. Alternatively, the processor 1010 and / or the display unit 1128 may perform pixel filtering processing based on the contents of the frame buffer 1040.
[0044]
When the coprocessor 1020 completes this pixel post-processing, the changed pixel value is written back to the frame buffer memory 1030. The contents are accessed from the frame buffer memory 1030 by a video generation circuit in the coprocessor, and an image is generated on the display device 1009. Alternatively, the changed value is sent elsewhere (eg, directly to display device 1005). In order to increase the transmission efficiency, the data in the frame buffer 1040 may be double buffered or DMA may be used. If the frame buffer 1040 is read and processed line by line, the line buffer may be used to hold the Z value of the previously located line.
[0045]
FIG. 8 is a flowchart illustrating an example of a pixel filtering routine 100 according to a preferred embodiment, which performs pixel post-processing boundary lines for the pixel filter 50. The pixel filter routine 100 of FIG. 8 is performed for each of the pixels [x] [y] stored in the frame buffer 1040 (block 102). The pixel filter 100 reads pixel color values (pixel R [x] [y], pixel G [x] [y], pixel B [x] [y]), and further reads a pixel depth value (Z [x]). [y]) is read (block 104). In addition, the pixel filter routine 100 also reads the depth values of the pixels around the pixel [x] [y] (also block 104). In this example, the pixel filter routine 100 reads the depth values of two adjacent pixels. That is, the depth value Z [x] [y] in the neighboring pixel that is “left” next to the predetermined pixel in the xy array, and the peripheral pixel that is truly “below” the predetermined pixel in the xy array Is the depth value Z [x] [y-1]. See FIG. 9 for the above. If the frame buffer 1040 is read and processed line by line, the line buffer can be used to hold the Z value of the previous line.
[0046]
The pixel filter routine 100 determines whether the pixel [x] [y] is the edge of the object by, for example, the following Dz operation (see block 106). For example, the pixel depth value (Z [x] [ y]) and the depth value of one or more neighboring (adjacent in this example) pixels.
DzDx = | Z [x] [y] −Z [x−1] [y] |
DzDy = | Z [x] [y] −Z [x] [y−1] |
Dz = max (DzDx, DzDy)
When performing the above calculation, the pixel filter 100 discriminates the difference between the pixel depth and each of two adjacent pixels, that is, takes the absolute value of these differences (whether an object is near or far from another object). The larger of the two obtained absolute values is selected. This result is a distance value Dz, which is a value that measures how far a certain pixel is from a certain peripheral pixel in the z direction. This operation is performed to test whether the pixel is on the edge of the object. For example, if the pixel is on the edge of the object, Dz is generally large (typically because neighboring pixels have different depths), and if the pixel is not on the edge of the object, Dz Is generally smaller (because neighboring pixels are similar in depth).
[0047]
In another example, the distance value Dz can be calculated by taking the sum of the distance values of two neighboring pixels. For example, the following formula is an example.
Dz = DzDx + DzDy
Other methods are also possible (for example, changing the calculation method, changing the surrounding pixels to be used, or changing the number of surrounding pixels).
[0048]
The pixel filter routine 100 in this example changes the color in proportion to the distance value Dz calculated as described above. For example, the pixel filter 100 scales / modifies the coefficient of the obtained distance value Dz, changes the resulting value, and clamps the resulting value to establish a pixel blend factor such as the following (see block 108): ).
Alpha = Clamp ((Scale factor * Dz + Base factor), 0, 1)
Here, when the clamp is clamp (x, 0, 1), the function returns 0 when x is 0 or less, returns 1 when x is 1 or more, and returns x when 0 <x <1. It is.
[0049]
Assuming that the scale factor is a positive value, the resulting alpha value increases with increasing Dz (eg, clamped to approximately 1 or 1), and decreases with decreasing Dz. (E.g., clamped to approximately zero or zero). Any method can be used to establish the pixel blend factor. For example, another method for calculating the pixel blend factor is shown below.
Gray = Clamp ((Dz-Coefficient A) * Coefficient B, 0, 1)
[0050]
The pixel filter 100 in this example uses a pixel blend coefficient obtained by blending processing (for example, alpha blending), and selectively applies a predetermined border color (for example, line R, line G, line B) to a color frame. The pixel color values (pixel R [x] [y], pixel G [x] [y], pixel B [x] [y]) obtained from the buffer 1042 are blended. An example of calculation for performing this blending is as follows.
New pixel. R [x] [y] = old pixel. R [x] [y] * (1-alpha) + line. R * alpha
New pixel. G [x] [y] = old pixel. R [x] [y] * (1-alpha) + line. G * Alpha
New pixel. B [x] [y] = old pixel. R [x] [y] * (1-alpha) + line. B * Alpha
In accordance with these operations, the blended (“new”) pixel color value is almost always an initial value when the distance value Dz is small, and becomes a border color when the distance value Dz is large.
[0051]
The blend operation described above limits the border color to black (eg, line.R = 0, line.G = 0, line.B = 0) and / or the color of the white canvas (line.R = 255, line .G = 255, line .B = 255) can be used for simplification (eg done for further optimization). For further optimization, a format other than RGB color, for example, YUV (in this case, the brightness Y is controlled so as to ensure that the boundary line is clearly visible) is used.
[0052]
After blending, the blended pixels are buffered and displayed on the display device 1009 (block 112). For example, the pixel filter routine 100 is performed on all the pixels in the frame buffer 1040, and the resulting blended frame buffer contents are displayed on the display device 1009.
[0053]
Perspective processing affects the results obtained by the above processing in some cases. Consider the case where there is a pixel PixA in the distance and a pixel PixB in the vicinity as shown in FIG. Due to the conversion, DzDy of the distant pixel PixA becomes larger than DzDy of the distant pixel PixB. As a result, it becomes more difficult to detect the boundary line in the entire image using unprocessed DzDx and DzDy values. In order to overcome this problem, the Z value may be corrected according to the Z range. For the correction, for example, a log2 (n) function is used as follows for range conversion.
DzDx = | log2 (Z [x] [y]) − log2 (Z [x−1] [y]) |
DzDy = | log2 (Z [x] [y]) − log2 (Z [x] [y−1]) |
If the processor 1010 has a floating point calculation function and the Z value is stored in, for example, the following floating point format, the calculation of the log2 (n) function is very convenient.
[3-bit exponent] [11-bit mantissa]
[0054]
FIG. 11 is obtained by changing the flow chart shown in FIG. 8 and adding this log2 (n) range conversion formula.
[0055]
FIG. 12 is another example of a post-processing pixel filter 200 that performs depth modulation of the alpha value used to control blending. Blocks 204, 206, and 208 shown in FIG. 12 are identical to the corresponding blocks 104, 106, and 108 shown in FIG. 8 (FIG. 11 when range correction is applied). Block 210 of FIG. 12 is added to calculate alpha A as a function (eg, product) of the value calculated in block 208 and a further value that is a function of pixel depth z. For example,
Alpha = Alpha Dz * Alpha Z
The resulting alpha value, that is, the alpha value used for blending control (see block 212) described in connection with block 210 of FIG. 8, also depends on the pixel depth.
[0058]
(Further examples of cartoon outline processing)
Depending on the calculation method, the boundary line application algorithm may not provide satisfactory results in the comic outline processing. Figure 13 Such an example is shown in FIG. Figure 13 As described above, the cartoon character 300 is provided with a border line on the shadow edge 302. Figure 13 From this, it can be seen that this cartoon character 300 has a right hand and a wrist, and the arm is bent at the front. In the above approach, depending on the case (depending on how far your character's arm is from the torso), the edges around the right hand, wrist, and arm are determined to be internal rather than shadow edges, No border is given to those points. Figure 13 Now, when the cartoon outline processing is performed only on the shadow edge 302 of the character, the cartoon character 300 partially disappears or becomes slightly unclear. However, the user expects a border where the hands, wrists and arms are clearly shown (from memories such as coloring books, hand-drawn anime comics, and / or comic books).
[0059]
In order to make the cartoon character 300 appear as if it is hand-drawn, it is preferable to add a border line to the inner edge 304 as well. In this example, the inner edge defines the hand, wrist and arm that the character bends at his front. Figure 14 Then, a boundary line is given to the inner edge 304 of the character 300. This inner edge 304 becomes the edge of the contour line when the character 300 extends its arm outward, 14 In the position of the arm shown in FIG.
[0060]
According to another aspect of the invention, 14 At the inner edge as shown in FIG. 2, the cartoon outline processing is automatically performed. That is, different identification values are assigned to the pixels depending on the portion of the object. For example, this identification value is specified by assigning bits in the frame buffer 1040 and / or DRAM 1126a, which is normally used to encode alpha information. This specified identification value may be used to determine whether or not to add a boundary line to the pixel position. For example, an identification value of a certain pixel is compared with an identification value of a pixel in the vicinity (adjacent) of the pixel. When a predetermined relationship between the identification values of these two pixels is recognized, no boundary line is given. For example, when the identification values are the same, since these two pixels are on the same plane, no boundary line is attached. However, when the identification values of these two pixels are in another predetermined relationship, a boundary line is given.
[0061]
Figure 15 An example is shown in (A) to (C). Figure 15 (A) is a perspective view of the object 319 roughly divided into three parts 320, 322 and 324. Figure 15 (B) is a plan view of the same object 319. The target portion 320 is a rectangle, the target portion 322 is a circle, and the target portion 324 is a cone. Here, the graphics artist has a boundary 330 (see FIG. 5) at a portion where the cone 324 visually contacts the quadrangle 320 but does not contact the circle 322, or a portion where the circle contacts the rectangle. 15 (See (A)). In this case, the pixels within the square 320, the circle 322, and the cone 324 are coded with different identification values. For example, pixels within square 320 are coded with identification value “1”, pixels within circle 322 are coded with identification value “2”, and pixels within cone 324 are coded with identification value “3”. Figure 15 (C) shows an example of the alpha part of the frame buffer 1040 and / or 1126a that stores the coding information (the hatched cells are the cells that give the border color).
[0062]
In the pixel post-processing stage, tests are performed on various identification values in the frame buffer. A border line is not given to pixels having the same identification value, such as adjacent pixels (all such pixels exist on the same plane). In addition, when the identification value of a certain pixel is different from that of an adjacent pixel below a certain reference, no boundary line is given (for example, when the identification value of pixel k does not differ by two or more from the identification value of pixel k + 1, No boundary line is given). However, if the identification value of a certain pixel differs from that of an adjacent pixel by more than a certain reference, a boundary line is given (for example, if the identification value of pixel k differs by two or more from the identification value of pixel k + 1, the boundary line Is applied to the pixel k).
[0063]
Figure 16 These are the flowcharts which show an example of the pixel post-processing routine for providing a boundary line in a present Example. Routine 350 includes a loop (blocks 352-362) that is performed for each pixel [i] [j] in the image stored in frame buffer 1040 and / or 1126a. As described above, in the image generation process, when drawing an image in the frame buffer, an identification value is set for each part of the object in the frame buffer to which bits are normally assigned to normally store the alpha value. To do. In routine 350, these alpha values (here ID values) are tested to determine whether to draw a border. In this example, routine 350 determines the alpha (ID) value of pixel [i] [j] and the alpha (e.g., pixel [i-1] [j] and pixel [i] [j-1]) alpha ( The ID) value is retrieved (block 352). Thereafter, in the routine 352, the following calculation is performed (block 354) to determine the difference between the alpha (ID) value of the pixel [i] [j] and the alpha (ID) value of the adjacent pixel.
diffX = | (alpha [i] [j] −alpha [i−1] [j]) |
diffY = | (alpha [i] [j] −alpha [i] [j−1]) |
[0064]
Thereafter, the routine 350 tests the difference values obtained by the calculation, diffX and diffY, to determine whether one exceeds a predetermined difference value (eg, arbitrarily fixed or 1). Programmable threshold) (block 356). If at least one of the difference values exceeds a predetermined difference value, the routine 350 sets the color of pixel [i] [j] to the border color (block 358). Accordingly, in this example, when the alpha slope is −1 to +1, the pixels are assumed to be on the same plane. Steps 352 through 358 are performed sequentially for each pixel in the image (blocks 360, 362).
[0065]
As a variation of routine 350, the object is coded with a special alpha identification value (eg, 0x00) to identify pixels within the object that should be ignored to provide a border (see FIG. 17 reference). This is useful when drawing an object to which a boundary line is not applied as a bitmap (for example, an explosion animation).
[0066]
Figure 18 Using the routine 350 above, 13 And figure 14 It shows how to draw a boundary line efficiently on the object 300 shown in FIG. In this example, the object is coded with a different alpha (ID) value for each part. For example, the object 300 includes two arms 311 a and 311 b and a body 309. Each arm includes a hand 313, a wrist 315, a lower arm 312, an elbow 308, an upper arm 310, and a shoulder 317. These sites are coded with different alpha IDs as follows:
Body Alpha ID
Left hand 313a 1
Left wrist 315a 2
Lower left arm 312a 3
Left elbow 308a 4
Upper left arm 310a 5
Left shoulder 317a 6
Body 309 7
Right shoulder 317b 8
Upper right arm 310b 9
Right elbow 311b 10
Lower right arm 312b 11
Right wrist 315b 12
Right hand 313b 13
According to the above alpha ID coding example, in routine 350, the diagram 18 Draw a border line as shown by the bold line. However, no boundary line is drawn at the part delimiters (indicated by dotted lines).
[0067]
The above coding can also be used to draw a boundary line between the parts of the same object 300. In traditional coloring books and hand-drawn anime comics, cartoon-like contour processing is also applied to these delimiters to further define joints and make muscles imagine. Figure 19 In (A) to (C), a joint 308 (that is, an elbow) connecting the upper arm 310 and the lower arm of the character 300 is particularly shown. Using the above coding, 19 As shown in (B) and (C), when the upper arms 310 and 312 are positioned adjacent to (contact with) each other by bending the joint 308, in the routine 350 (the alpha ID of the lower arm 310 and the upper arm 312) A border segment 316 is provided between the portions 310 and 312 (based on whether the difference from the alpha ID is greater than 1).
[0068]
Thus, the present invention provides an effective technique for imparting a non-realistic effect such as a cartoon outline in three-dimensional computer graphics. These techniques are used at the pixel post-processing stage (ie, after the 3D graphics pipeline is rendered in the frame buffer) and do not require pixel information other than that provided by the 3D graphics pipeline (ie. , Color, depth and alpha pixel information). Thus, the pixel post-processing techniques of the present invention are effective at “downstream” of a frame buffer (eg, aliasing or other post-processing operation from a portion of the buffer on the circuit to a buffer outside the circuit). In addition, it does not substantially complicate the 3D graphics pipeline or other components of the system.
[0069]
Although the present invention has been described in connection with what is presently considered to be the most realistic and preferred embodiments, the present invention is not limited to the disclosed embodiments, and various modifications and equivalents It is interpreted as including the composition.
[Brief description of the drawings]
FIG. 1 is a diagram illustrating an example of a three-dimensional video graphics system for embodying the present invention.
FIG. 2 is a more detailed schematic diagram of an entire interactive 3D computer graphics system 1005 in which the present invention may be implemented.
FIG. 3 is a block diagram of example components within the coprocessor 1020;
FIG. 4 is a more detailed view of the three-dimensional graphics processor 1107 and its associated components within the coprocessor 1020.
FIG. 5 is a diagram exemplarily showing a screen effect in the present invention.
FIG. 6 is a diagram showing an example of the entire emulation process.
FIG. 7 shows a personal computer based host suitable for use with emulator 1303;
FIG. 8 is a flowchart illustrating an example of a pixel filtering routine 100 according to a preferred embodiment.
FIG. 9 is a schematic diagram illustrating an example in which the pixel filter routine 100 reads out the depth values of two adjacent pixels.
10 is a schematic diagram showing perspective processing when a pixel PixA is in the distance and a pixel PixB is in the vicinity. FIG.
11 is a flowchart in which a range conversion formula of log2 (n) is added by changing the flowchart shown in FIG.
FIG. 12 is an example of a post-processing pixel filter 200 that performs depth modulation of alpha values used to control blending.
[Figure 13 FIG. 11 is a diagram showing an example of a cartoon character by a cartoon outline process.
[Figure 14 FIG. 10 is a diagram showing another example of a cartoon character by a cartoon outline process.
[Figure 15 FIG. 11 is a diagram showing a further embodiment of the present invention using an object identification value for specifying a boundary line portion of a cartoon outline processing.
[Figure 16 In the present embodiment, this is a flow chart showing an example of a pixel post-processing routine for providing a boundary line.
[Figure 17 FIG. 10 is a schematic diagram showing a modification of routine 350.
[Figure 18 FIG. 10 is a diagram showing an example of object identification value coding performed to obtain a cartoon outline effect.
[Figure 19 FIG. 10 is a diagram showing another example of object identification value coding performed to obtain a cartoon outline effect.

Claims (12)

対話型の三次元画像処理装置であって、
ユーザによるリアルタイム操作入力が可能な、少なくとも1つの手動制御器と、
少なくとも1つの複数の部位から成るキャラクタを描画するための三次元データを記憶する記憶媒体と、
画素ごとにカラーデータと深度データとを含む画像データを記憶するバッファメモリと、前記バッファメモリに接続される三次元グラッフィクスパイプラインと、
前記バッファメモリに接続され、輪郭線処理を前記画像データに適用して、前記キャラクタの周囲に境界線を生成するフィルタとを備え、
前記三次元グラッフィクスパイプラインは、少なくとも前記ユーザによるリアルタイム操作入力および前記キャラクタを表現する前記三次元データに基づいて、前記キャラクタに対応する画像データを前記バッファメモリにおいて描画し、
前記記憶媒体は、前記複数の部位それぞれに異なる識別値を記憶し、
前記フィルタは、前記バッファメモリに記憶されている画素の深度データと、前記部位の識別値とに基づいて、前記カラーデータを選択的に変更して境界線を生成する、三次元画像処理装置。
An interactive 3D image processing apparatus,
At least one manual controller capable of real-time operation input by the user;
A storage medium for storing three-dimensional data for drawing a character composed of at least one part;
A buffer memory for storing image data including color data and depth data for each pixel; a three-dimensional graphics pipeline connected to the buffer memory;
A filter connected to the buffer memory and applying contour processing to the image data to generate a border around the character;
The three-dimensional graphics pipeline draws image data corresponding to the character in the buffer memory based on at least real-time operation input by the user and the three-dimensional data representing the character,
The storage medium stores different identification values for each of the plurality of parts,
The three-dimensional image processing device, wherein the filter selectively changes the color data based on pixel depth data stored in the buffer memory and an identification value of the part to generate a boundary line.
前記フィルタは、前記画素に対応する深度データと、前記画素周辺に或る1つの画素に対応する深度データとの差を求め、これにより前記差が所定の閾値を上回った場合には、前記画素に対応する前記カラーデータを変更することを特徴とする、請求項1に記載の三次元画像処理装置。  The filter obtains a difference between depth data corresponding to the pixel and depth data corresponding to one pixel around the pixel, and when the difference exceeds a predetermined threshold, the pixel The three-dimensional image processing apparatus according to claim 1, wherein the color data corresponding to is changed. 前記バッファメモリは、前記画素ごとにアルファ値を更に含み、
前記フィルタは、前記画素に対応するアルファ値を、前記画素の深度データに対応する値に設定することを特徴とする、請求項1に記載の三次元画像処理装置。
The buffer memory further includes an alpha value for each pixel,
The three-dimensional image processing apparatus according to claim 1, wherein the filter sets an alpha value corresponding to the pixel to a value corresponding to depth data of the pixel.
前記フィルタは、前記画素に対応するアルファ値を、前記画素の深度と、その周辺の画素の深度との差に対応する値に設定することにより、前記バッファメモリに記憶されるカラーデータを選択的に変更することを特徴とする、請求項3に記載の三次元画像処理装置。  The filter selectively sets color data stored in the buffer memory by setting an alpha value corresponding to the pixel to a value corresponding to a difference between the depth of the pixel and the depth of surrounding pixels. The three-dimensional image processing apparatus according to claim 3, wherein the three-dimensional image processing apparatus is changed to: 前記画素は、前記画像においてP[x、y]であると指定され、前記フィルタは、前記画素の深度をP[x−1、y]であると指定される第1画素と、P[x、y−1]であると指定される第2画素の深度と比較することを特徴とする、請求項1に記載の三次元画像処理装置。  The pixel is designated as P [x, y] in the image, and the filter has a first pixel designated with a depth of the pixel as P [x-1, y], and P [x , Y−1], the three-dimensional image processing apparatus according to claim 1, wherein the three-dimensional image processing apparatus compares the depth with the depth of the second pixel designated as y−1]. 複数の部位から成り、複数の部位ごとに識別値を記憶した三次元画像を描画するためのデータと、画像の画素に対応するカラーデータおよび深度データを記憶する画素メモリを含むコンピュータグラフィックスシステムにおける三次元画像処理方法であって、
(a)少なくとも1つの手動制御器からユーザのリアルタイム操作入力を取得するステップ、
(b)前記画素メモリから画素データを読み出し、当該画素に対応する深度データと、部位の識別値とに基づいて、当該画素のカラーデータを選択的に変更するステップ、
(c)前記三次元画像を描画するためのデータと、前記変更されたカラーデータと、前記リアルタイム操作入力とに基づいて、三次元画像を描画するステップ、
からなる三次元画像処理方法。
A computer graphics system including data for rendering a three-dimensional image composed of a plurality of parts and storing identification values for the plurality of parts, and a pixel memory for storing color data and depth data corresponding to the pixels of the image A three-dimensional image processing method,
(A) obtaining a user's real-time operation input from at least one manual controller;
(B) reading pixel data from the pixel memory, and selectively changing the color data of the pixel based on the depth data corresponding to the pixel and the identification value of the part;
(C) drawing a three-dimensional image based on the data for drawing the three-dimensional image, the changed color data, and the real-time operation input;
A three-dimensional image processing method comprising:
前記三次元画像を描画するステップは、前記画素に対応する深度データと、前記画素の少なくとも1つの隣接画素に対応する深度データとの差を求め、これにより前記差が所定の閾値を上回った場合には、前記画素に対応する前記カラーデータを変更することを特徴とする、請求項に記載の方法。The step of rendering the three-dimensional image obtains a difference between depth data corresponding to the pixel and depth data corresponding to at least one adjacent pixel of the pixel, and thereby the difference exceeds a predetermined threshold value 7. The method according to claim 6 , wherein the color data corresponding to the pixel is changed. 前記画像メモリは、前記画素ごとにアルファ値を更に含み、
前記三次元画像を描画するステップは、前記画素に対応するアルファ値を、前期画素の深度データに対応する値に設定することを特徴とする、請求項に記載の方法。
The image memory further includes an alpha value for each pixel,
The method of claim 6 , wherein the step of rendering the three-dimensional image sets an alpha value corresponding to the pixel to a value corresponding to depth data of the previous pixel.
前記三次元画像を描画するステップは、前記画素に対応するアルファ値を、前記画素の深度と少なくとも1つの周辺画素の深度との差に対応する値に設定することを特徴とする、請求項に記載の方法。Step of drawing the three-dimensional image, an alpha value corresponding to the pixel, and sets a value corresponding to the difference between the depth of the depth and at least one of the surrounding pixels of the pixel, claim 8 The method described in 1. 前記画素は、前記画像においてP[x、y]であると指定され、前記三次元画像を描画するステップは、前記画素の深度を、P[x−1、y]であると指定される第1画素と、P[x、y−1]であると指定される第2画素の深度と比較することを特徴とする、請求項に記載の方法。The pixel is designated as P [x, y] in the image, and the step of drawing the three-dimensional image designates the depth of the pixel as P [x-1, y]. The method according to claim 6 , characterized in that it compares the depth of one pixel and the second pixel specified to be P [x, y-1]. 画像に境界線を引く処理をコンピュータに実行させるためのプログラムを記録したコンピュータ読み取り可能な記憶媒体であって、
前記画像の各画素の深度値をメモリから読み出す読み出しステップと、
読み出された深度値を用いて各画素がオブジェクトの縁であるかどうかを判別する判別ステップと、
縁上にある画素を境界線の色に変更する変更ステップとを前記コンピュータに実行させ
前記判別ステップにおいて、前記コンピュータは、画素の深度値と、その画素の周辺にある画素の深度値との差を算出し、算出された差に基づいてオブジェクトの縁であるかどうかを判別し、
前記変更ステップにおいて、前記コンピュータは、変更前の画像の色と、前記境界線の色とを前記差に応じた割合でブレンドすることによって、縁上にある画素を境界線の色に変更する、プログラムを記録した記憶媒体。
A computer-readable storage medium storing a program for causing a computer to execute a process of drawing a boundary line on an image,
A reading step of reading out a depth value of each pixel of the image from a memory;
A determination step of determining whether each pixel is an edge of the object using the read depth value;
Changing the pixel on the edge to the border color, and causing the computer to execute
In the determining step, the computer calculates a difference between a depth value of a pixel and a depth value of a pixel around the pixel, determines whether the edge of the object based on the calculated difference,
In the changing step, the computer changes the pixel on the edge to the boundary line color by blending the color of the image before the change and the color of the boundary line at a ratio corresponding to the difference. A storage medium that records the program.
画像に境界線を引く処理を実行する画像処理装置であって、
前記画像の各画素の深度値をメモリから読み出す読み出し手段と、
読み出された深度値を用いて各画素がオブジェクトの縁であるかどうかを判別する判別手段と、
縁上にある画素を境界線の色に変更する変更手段とを備え、
前記判別手段は、画素の深度値と、その画素の周辺にある画素の深度値との差を算出し、算出された差に基づいてオブジェクトの縁であるかどうかを判別し、
前記変更手段は、変更前の画像の色と、前記境界線の色とを前記差に応じた割合でブレンドすることによって、縁上にある画素を境界線の色に変更する、画像処理装置
An image processing apparatus that executes a process of drawing a boundary line on an image,
Reading means for reading out the depth value of each pixel of the image from the memory;
Discrimination means for discriminating whether each pixel is an edge of the object using the read depth value;
Changing means for changing the pixel on the edge to the color of the boundary line,
The determination unit calculates a difference between a depth value of a pixel and a depth value of a pixel around the pixel, determines whether the edge of the object based on the calculated difference,
The image processing apparatus is configured to change the pixel on the edge to the color of the boundary line by blending the color of the image before the change and the color of the boundary line at a ratio corresponding to the difference .
JP2000289625A 1999-09-24 2000-09-22 Method and apparatus for providing non-realistic cartoon outline in 3D video graphics system Expired - Fee Related JP4349733B2 (en)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US15566099P 1999-09-24 1999-09-24
US60/155660 1999-12-21
US09/468109 1999-12-21
US09/468,109 US6747642B1 (en) 1999-01-29 1999-12-21 Method and apparatus for providing non-photorealistic cartoon outlining within a 3D videographics system

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2009130618A Division JP4672072B2 (en) 1999-09-24 2009-05-29 Method and apparatus for providing non-realistic cartoon outline in 3D video graphics system

Publications (3)

Publication Number Publication Date
JP2001134779A JP2001134779A (en) 2001-05-18
JP2001134779A5 JP2001134779A5 (en) 2007-08-23
JP4349733B2 true JP4349733B2 (en) 2009-10-21

Family

ID=26852501

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2000289625A Expired - Fee Related JP4349733B2 (en) 1999-09-24 2000-09-22 Method and apparatus for providing non-realistic cartoon outline in 3D video graphics system
JP2009130618A Expired - Lifetime JP4672072B2 (en) 1999-09-24 2009-05-29 Method and apparatus for providing non-realistic cartoon outline in 3D video graphics system

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2009130618A Expired - Lifetime JP4672072B2 (en) 1999-09-24 2009-05-29 Method and apparatus for providing non-realistic cartoon outline in 3D video graphics system

Country Status (5)

Country Link
JP (2) JP4349733B2 (en)
CN (1) CN1316723A (en)
AU (1) AU5652700A (en)
BR (1) BR0004415A (en)
CA (1) CA2319279A1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7940057B2 (en) 2007-08-23 2011-05-10 Fanuc Ltd Method of detecting disconnection and power discontinuity of I/O unit connected to numerical controller

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7551322B2 (en) * 2004-06-29 2009-06-23 Intel Corporation Image edge filtering
WO2007096816A2 (en) * 2006-02-27 2007-08-30 Koninklijke Philips Electronics N.V. Rendering an output image
US7612783B2 (en) * 2006-05-08 2009-11-03 Ati Technologies Inc. Advanced anti-aliasing with multiple graphics processing units
JP5236214B2 (en) * 2007-06-11 2013-07-17 任天堂株式会社 Image processing program
CN101540055B (en) * 2009-04-13 2011-05-04 浙江大学 Cartoon stylization method facing online real-time application
JP4847572B2 (en) * 2009-11-13 2011-12-28 株式会社コナミデジタルエンタテインメント Image processing apparatus, image processing apparatus control method, and program
JP5439454B2 (en) * 2011-10-21 2014-03-12 富士フイルム株式会社 Electronic comic editing apparatus, method and program
CN109741408A (en) * 2018-11-23 2019-05-10 成都品果科技有限公司 A kind of image and video caricature effect real-time rendering method
CN111127614B (en) * 2019-12-25 2023-07-21 上海米哈游天命科技有限公司 Model edge tracing processing method and device, storage medium and terminal

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2603445B2 (en) * 1994-11-10 1997-04-23 インターナショナル・ビジネス・マシーンズ・コーポレイション Hair image adaptation method and computer system
JPH08279057A (en) * 1995-04-05 1996-10-22 Hitachi Ltd Emphasis display device for outline and ridge of three-dimensional graphic
JP3721623B2 (en) * 1995-12-29 2005-11-30 カシオ計算機株式会社 Drawing color changing method and moving picture reproducing apparatus
JPH09311954A (en) * 1996-05-22 1997-12-02 Hitachi Ltd Three-dimensional graphic display system and method

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7940057B2 (en) 2007-08-23 2011-05-10 Fanuc Ltd Method of detecting disconnection and power discontinuity of I/O unit connected to numerical controller

Also Published As

Publication number Publication date
CA2319279A1 (en) 2001-03-24
BR0004415A (en) 2001-04-10
CN1316723A (en) 2001-10-10
JP4672072B2 (en) 2011-04-20
JP2001134779A (en) 2001-05-18
AU5652700A (en) 2001-03-29
JP2009199620A (en) 2009-09-03

Similar Documents

Publication Publication Date Title
JP4698893B2 (en) Method, graphics system, and program for providing improved fog effects
JP4672072B2 (en) Method and apparatus for providing non-realistic cartoon outline in 3D video graphics system
US6747642B1 (en) Method and apparatus for providing non-photorealistic cartoon outlining within a 3D videographics system
JP4846120B2 (en) Graphics device with skeleton animation stitching hardware
JP4719363B2 (en) Graphics system with copy-out conversion between internal frame buffer and main memory
JP4691273B2 (en) Graphics processing system and embossed bump mapping method
US7061502B1 (en) Method and apparatus for providing logical combination of N alpha operations within a graphics system
JP2002074390A (en) Shadow mapping in inexpensive graphics system
JP2002269583A (en) Method and device for dynamically reconstructing order of hidden surface processings based on drawing mode
JP2002063590A (en) Recirculating shade tree blender for graphics system
US6914612B2 (en) Image drawing method, image drawing apparatus, recording medium, and program
US6717575B2 (en) Image drawing method, image drawing apparatus, recording medium, and program
US7164421B2 (en) Image generation system, program, and information storage medium
JP2001143100A (en) Method and device for providing depth gradation effects in three-dimensional video graphic system
JP2001079261A (en) Image forming system and information recording medium
JP4804122B2 (en) Program, texture data structure, information storage medium, and image generation system
JP3297410B2 (en) Image generation system and information storage medium
JP3254195B2 (en) Image generation system and information storage medium
EP1094421A2 (en) Method and apparatus for providing non-photorealistic cartoon outlining within a 3D videographics system
JP4574058B2 (en) Image generation system, program, and information storage medium
JP4740476B2 (en) Method and apparatus for providing a logical combination of N alpha operations in a graphics system
JP4740490B2 (en) Clamping Z values in the Z neighborhood to maximize the accuracy of visually important Z components in graphics rendering systems and avoid Z neighborhood clipping
JP2006323512A (en) Image generation system, program, and information storage medium
MXPA00009280A (en) Method and apparatus for providing non-photorealistic cartoon outlining within a 3d videographics system
JP2006277488A (en) Program, information storage medium and image generation system

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060724

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060724

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060809

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070710

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20090501

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090515

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090529

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20090623

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20090721

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120731

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4349733

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120731

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120731

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120731

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130731

Year of fee payment: 4

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130731

Year of fee payment: 4

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees