(57)【要約】【課題】  モニタ画面に表示された画像を写真のような高い画質で印刷する。【解決手段】  ポリゴンによって物体の三次元形状を表したポリゴンデータから、二次元画像を生成してモニタ画面に表示する。モニタ画面に表示された二次元画像の印刷命令を受け取った場合には、該二次元画像の画像データか、該二次元画像の生成に用いたポリゴンデータの少なくとも一方を取得することにより、該二次元画像と物体の配置が同一で、且つ、該ポリゴンデータよりも小さなポリゴンに基づく画像データを生成する。こうして得られた画像データを印刷データとして用いて画像を印刷すれば、物体の三次元形状が細かなポリゴンによって正確に表現された画像を印刷することができるので、モニタ画面に表示された画像を、写真のような高い画質で印刷することが可能となる。【選択図】        図１５
2006154884.tif 000002
【特許請求の範囲】
【請求項１】
物体の表面を複数のポリゴンに分割し、該各々のポリゴンを構成する頂点の座標によって該物体の三次元形状を表現したポリゴンデータから、該物体の二次元画像を表す画像データを生成する画像データ生成装置であって、
前記ポリゴンデータから生成された前記画像データに基づいて、前記物体の二次元画像を画面上に表示する画像表示手段と、
前記画面上に表示された二次元画像の印刷命令を受け取ると、前記画像データまたは該画像データの生成に用いられた前記ポリゴンデータの少なくとも一方を取得することにより、該二次元画像と前記物体の配置が同一で、且つ、該ポリゴンデータよりも小さなポリゴンに基づく画像データを、該二次元画像を印刷するための印刷データとして生成する印刷データ生成手段と
を備える画像データ生成装置。
【請求項２】
請求項１記載の画像データ生成装置であって、
前記物体を前記画面に表示するためのポリゴンデータたる表示用ポリゴンデータと、該表示用ポリゴンデータを構成する前記ポリゴンよりも小さなポリゴンによって構成された精密ポリゴンデータとを記憶しているポリゴンデータ記憶手段を備え、
前記画像表示手段は、前記表示用ポリゴンデータから生成された前記画像データに基づいて、前記二次元画像を表示する手段であり、
前記印刷データ生成手段は、前記表示用ポリゴンデータまたは該表示用ポリゴンデータから生成された画像データの少なくとも一方を取得して、該表示用ポリゴンデータを前記精密ポリゴンデータで置き換えたポリゴンデータから、前記印刷データを生成する手段である画像データ生成装置。
【請求項３】
請求項２記載の画像データ生成装置であって、
前記ポリゴンデータ記憶手段は、少なくとも前記表示用ポリゴンデータおよび前記精密ポリゴンデータを記憶している物体については、該物体に対して所定の位置に設定された少なくとも３つの座標点を、該表示用ポリゴンデータおよび該精密ポリゴンデータの各々の基準点として記憶している手段であり、
前記印刷データ生成手段は、前記表示用ポリゴンデータの基準点と、前記精密ポリゴンデータの基準点とを少なくとも前記画面上では一致させた状態で該表示用ポリゴンデータを該精密ポリゴンデータで置き換えた後、前記印刷データを生成する手段である画像データ生成装置。
【請求項４】
請求項１記載の画像データ生成装置であって、
前記印刷データ生成手段は、前記印刷命令を受け取ると、前記画像データの生成に用いられた前記ポリゴンデータに基づいて、該ポリゴンデータを構成するポリゴンが複数のポリゴンに分割された印刷用のポリゴンデータを生成し、該印刷用のポリゴンデータから前記印刷データを生成する手段である画像データ生成装置。
【請求項５】
請求項１記載の画像データ生成装置であって、
前記印刷データ生成手段は、前記印刷命令を受け取ると、前記二次元画像の画像データを取得して該二次元画像に含まれるポリゴンを分割することにより、前記印刷データを生成する手段である画像データ生成装置。
【請求項６】
請求項４または請求項５に記載の画像データ生成装置であって、
前記印刷データ生成手段は、前記分割して生成したポリゴンについては、該ポリゴンの色属性を、隣接するポリゴンの色属性に基づいて決定しながら、前記印刷データを生成する手段である画像データ生成装置。
【請求項７】
請求項１記載の画像データ生成装置であって、
前記印刷データ生成手段は、前記印刷命令に加えて、前記二次元画像を印刷するための所定の印刷条件を受け取ることにより、該印刷条件が反映された前記印刷データを生成する手段である画像データ生成装置。
【請求項８】
請求項１記載の画像データ生成装置であって、
前記画面に表示された二次元画像の光景を撮影するとしたときの撮影条件を設定する撮影条件設定手段を備え、
前記印刷データ生成手段は、前記印刷命令に加えて、前記撮影条件を受け取ることにより、該撮影条件が反映された前記印刷データを生成する手段である画像データ生成装置。
【請求項９】
請求項１記載の画像データ生成装置であって、
前記印刷データ生成手段は、前記印刷データとして、前記各々のポリゴンを構成する頂点の二次元座標値と、該各々のポリゴンの色属性とを少なくとも含んだデータを、生成する手段である画像データ生成装置。
【請求項１０】
請求項１記載の画像データ生成装置であって、
前記印刷データ生成手段は、前記印刷データとして、前記二次元画像を構成する画素毎に階調値が設定された画像データを、生成する手段である画像データ生成装置。
【請求項１１】
ポリゴンを構成する頂点の座標によって物体の三次元形状を表したポリゴンデータに基づいて画面上に表示された二次元画像を、印刷媒体上に出力する印刷装置であって、
前記画面上に二次元画像を表示するための画像データを、前記ポリゴンデータから生成して該画面上に表示する画像表示手段と、
前記画面上に表示された二次元画像の印刷命令を受け取ると、前記画像データまたは該画像データの生成に用いられた前記ポリゴンデータの少なくとも一方を取得することにより、該二次元画像と前記物体の配置が同一で、且つ、該ポリゴンデータよりも小さなポリゴンに基づく画像データを、該二次元画像を印刷するための印刷データとして生成する印刷データ生成手段と、
前記印刷データに基づいて、前記印刷媒体上に画像を出力する画像出力手段と
を備える印刷装置。
【請求項１２】
物体の表面を複数のポリゴンに分割し、該各々のポリゴンを構成する頂点の座標によって該物体の三次元形状を表現したポリゴンデータから、該物体の二次元画像を表す画像データを生成する画像データ生成方法であって、
前記ポリゴンデータから生成された前記画像データに基づいて、前記物体の二次元画像を画面上に表示する第１の工程と、
前記画面上に表示された二次元画像の印刷命令を受け取ると、前記画像データまたは該画像データの生成に用いられた前記ポリゴンデータの少なくとも一方を取得することにより、該二次元画像と前記物体の配置が同一で、且つ、該ポリゴンデータよりも小さなポリゴンに基づく画像データを、該二次元画像を印刷するための印刷データとして生成する第２の工程と
を備える画像データ生成方法。
【請求項１３】
ポリゴンを構成する頂点の座標によって物体の三次元形状を表したポリゴンデータに基づいて画面上に表示された二次元画像を、印刷媒体上に出力する印刷方法であって、
前記画面上に二次元画像を表示するための画像データを、前記ポリゴンデータから生成して該画面上に表示する工程（Ａ）と、
前記画面上に表示された二次元画像の印刷命令を受け取ると、前記画像データまたは該画像データの生成に用いられた前記ポリゴンデータの少なくとも一方を取得することにより、該二次元画像と前記物体の配置が同一で、且つ、該ポリゴンデータよりも小さなポリゴンに基づく画像データを、該二次元画像を印刷するための印刷データとして生成する工程（Ｂ）と、
前記印刷データに基づいて、前記印刷媒体上に画像を出力する工程（Ｃ）と
を備える印刷方法。
【請求項１４】
物体の表面を複数のポリゴンに分割し、該各々のポリゴンを構成する頂点の座標によって該物体の三次元形状を表現したポリゴンデータから、該物体の二次元画像を表す画像データを生成する方法を、コンピュータで実現するためのプログラムであって、
前記ポリゴンデータから生成された前記画像データに基づいて、前記物体の二次元画像を画面上に表示する第１の機能と、
前記画面上に表示された二次元画像の印刷命令を受け取ると、前記画像データまたは該画像データの生成に用いられた前記ポリゴンデータの少なくとも一方を取得することにより、該二次元画像と前記物体の配置が同一で、且つ、該ポリゴンデータよりも小さなポリゴンに基づく画像データを、該二次元画像を印刷するための印刷データとして生成する第２の機能と
を実現するプログラム。
【請求項１５】
ポリゴンを構成する頂点の座標によって物体の三次元形状を表したポリゴンデータに基づいて画面上に表示された二次元画像を、印刷媒体上に印刷する方法を、コンピュータを用いて実現するためのプログラムであって、
前記画面上に二次元画像を表示するための画像データを、前記ポリゴンデータから生成して該画面上に表示する機能（Ａ）と、
前記画面上に表示された二次元画像の印刷命令を受け取ると、前記画像データまたは該画像データの生成に用いられた前記ポリゴンデータの少なくとも一方を取得することにより、該二次元画像と前記物体の配置が同一で、且つ、該ポリゴンデータよりも小さなポリゴンに基づく画像データを、該二次元画像を印刷するための印刷データとして生成する機能（Ｂ）と、
前記印刷データに基づいて、前記印刷媒体上に画像を出力する機能（Ｃ）と
を実現するプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、コンピュータグラフィックス技術を用いて作成した３次元データから、２次元画像を生成して印刷する技術に関する。
【背景技術】
【０００２】
近年では、いわゆるコンピュータグラフィックス（ＣＧ）技術の進歩により、想像によって作り上げた架空の世界を、あたかも実在するかのように表現することが可能となっている。また、こうした技術を利用して、実在するかのように表現された仮想的な世界の中を、これも実在するかのように表現されたキャラクタを動かしてゲームを進めるゲーム機も開発されており、現在では広く使用されている。
【０００３】
ＣＧ上で３次元の物体を扱う場合、物体の表面を小さな平面多角形に分割して、これら多角形の集まりによって表現する方法を用いることが一般的である。このように、物体の形状を規定するために用いられる平面多角形は「ポリゴン」と呼ばれている。ポリゴンは平面であるから、ポリゴンを用いて表現した物体は表面がゴツゴツした感じとなり、違和感を与えるおそれがあるが、こうした問題はポリゴンの大きさを小さくすることによって、事実上問題とならない程度まで改善することができる。もちろん、ポリゴンの大きさを小さくすれば、物体を構成するポリゴン数が増加するので、画像を迅速に表示することは困難となる。そこでポリゴンの大きさは、物体を実在する物のように表現することに対する要求と、画像の表示速度との兼ね合いから決定されている。
【０００４】
ＣＧ技術を活用したゲーム機では、画像の表示速度に対する要求は更に大きなものとなる。すなわちゲーム機では、ゲームを行う者の操作に反応してキャラクタを速やかに動かさなければならず、このためには画像の表示を迅速に行う必要がある。その一方で、ゲーム中はキャラクタが動いていることが多く、表面のゴツゴツした感じは目立ち難いという特性がある。そこでゲーム機では、物体を真実らしく表現することよりも、画像の表示速度に比重を置いてポリゴンの大きさが設定されている。また、ポリゴンによって表現された物体を、より本物らしく表現しながら、画像を迅速に表示可能とするために、種々の技術が開発され、提案されている（例えば、特許文献１、特許文献２など）。
【０００５】
【特許文献１】特開平７−２６２３８７号公報
【特許文献２】特開平８−１６１５１０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかし、たとえ画面上では実在する物のように表現されていたとしても、例えば紙媒体などの様に、より鮮明に画像を表示可能な媒体に印刷すると、物体表面がゴツゴツしていることが分かってしまうという問題があった。印刷した画像で、物体表面がゴツゴツしていることが分かってしまうと、もはや画面上に表示された画像でさえも、仮想的に表現されたものであることが気になってしまうと言う問題があった。
【０００７】
この発明は従来技術における上述した課題を解決するためになされたものであり、画面上に表示されている物体を、紙媒体などのより鮮明に表示可能な媒体に印刷した場合でも、実在する物であるかのように表現可能とする技術の提供を目的とする。
【課題を解決するための手段】
【０００８】
上述した課題の少なくとも一部を解決するために、本発明の画像データ生成装置は、次の構成を採用した。すなわち、
物体の表面を複数のポリゴンに分割し、該各々のポリゴンを構成する頂点の座標によって該物体の三次元形状を表現したポリゴンデータから、該物体の二次元画像を表す画像データを生成する画像データ生成装置であって、
前記ポリゴンデータから生成された前記画像データに基づいて、前記物体の二次元画像を画面上に表示する画像表示手段と、
前記画面上に表示された二次元画像の印刷命令を受け取ると、前記画像データまたは該画像データの生成に用いられた前記ポリゴンデータの少なくとも一方を取得することにより、該二次元画像と前記物体の配置が同一で、且つ、該ポリゴンデータよりも小さなポリゴンに基づく画像データを、該二次元画像を印刷するための印刷データとして生成する印刷データ生成手段と
を備えることを要旨とする。
【０００９】
また、上記の画像データ生成装置に対応する本発明の画像データ生成方法は、
物体の表面を複数のポリゴンに分割し、該各々のポリゴンを構成する頂点の座標によって該物体の三次元形状を表現したポリゴンデータから、該物体の二次元画像を表す画像データを生成する画像データ生成方法であって、
前記ポリゴンデータから生成された前記画像データに基づいて、前記物体の二次元画像を画面上に表示する第１の工程と、
前記画面上に表示された二次元画像の印刷命令を受け取ると、前記画像データまたは該画像データの生成に用いられた前記ポリゴンデータの少なくとも一方を取得することにより、該二次元画像と前記物体の配置が同一で、且つ、該ポリゴンデータよりも小さなポリゴンに基づく画像データを、該二次元画像を印刷するための印刷データとして生成する第２の工程と
を備えることを要旨とする。
【００１０】
かかる本発明の画像データ生成装置および画像データ生成方法においては、ポリゴンデータから画像データを生成して二次元画像を画面上に表示する。画面に表示されている二次元画像の印刷命令を受け取ると、該二次元画像の生成に用いられた画像データ、もしくは、該画像データを生成するために使用したポリゴンデータの少なくとも一方を取得して、該二次元画像と前記物体の配置が同一で、且つ、該ポリゴンデータよりも小さなポリゴンに基づく画像データを生成する。ここで、小さなポリゴンから生成された画像データを生成するに際しては、一旦、小さなポリゴンによって構成されたポリゴンデータを生成し、次いで、生成したポリゴンデータに基づいて画像データを生成することができる。あるいは、新たに生成したポリゴンデータに基づいて画像データを生成するのではなく、画像データに所定の処理を施すことによって、小さなポリゴンから生成された画像データを生成することとしてもよい。また、画面に表示された二次元画像の画像データ、もしくは、その画像データを生成するために用いられたポリゴンデータの少なくとも一方を取得しておけば、表示されている二次元画像と物体の配置が一致する画像データを生成することができる。例えば、小さなポリゴンによるポリゴンデータを、取得したポリゴンデータと同じ位置に生成してもよい。あるいは、小さなポリゴンのポリゴンデータによる二次元画像が、画像データを取得した二次元画像と重なるように、小さなポリゴンによって表現される物体を移動あるいは回転させることとしても良い。このようにして、小さなポリゴンから生成された画像データが得られたら、この画像データを、画面上に表示されている画像を印刷するための印刷データとする。
【００１１】
このようにして得られた印刷データは、小さなポリゴンから生成された画像データとなっているので、たとえ、紙媒体などの様に鮮明に画像を表示可能な媒体上に印刷した場合でも、物体表面がゴツゴツした画像となることがなく、あたかも実在する物体を撮影した写真のような、高画質な画像を得ることができる。また、こうして印刷された画像は、画面上に表示された二次元画像と、物体の配置が同一となっているので、画面上の二次元画像をそのまま印刷したかのような印象を与えることができる。このため、印刷して得られた高画質な画像が、そのまま画面に表示されているかのような印象を与えることになり、画面の表示を実際の表示以上に実物らしく見せるという効果も得ることができる。
【００１２】
かかる画像データ生成装置においては、物体を画面に表示するためのポリゴンデータたる表示用ポリゴンデータと、該表示用ポリゴンデータを構成するポリゴンよりも小さなポリゴンによって構成された精密ポリゴンデータとを記憶しておき、画面上に表示された二次元画像を印刷する場合には、精密ポリゴンデータを使用して、次のようにして印刷データを生成することとしても良い。すなわち、画面上に表示された二次元画像の印刷命令を受け取ると、表示用ポリゴンデータを精密ポリゴンデータに置き換えた後、この精密ポリゴンデータを用いて印刷データを生成する。ポリゴンデータを置き換えるに際しては、表示用ポリゴンデータまたは該表示用ポリゴンデータから生成された画像データの少なくとも一方を取得し、取得したデータを用いて、精密ポリゴンデータを位置合わせしてから置き換えてやる。
【００１３】
このように印刷データを生成することとすれば、物体の形状を正確に表現したポリゴンデータを精密ポリゴンデータとして記憶しておくことで、あたかも実在する物体を撮影して得られた写真のような、高画質な画像を印刷することができる。
【００１４】
また、表示用ポリゴンデータを精密ポリゴンデータに置き換えるに際しては、次のようにして、精密ポリゴンデータの位置合わせを行ってから置き換えることとしても良い。すなわち、少なくとも表示用ポリゴンデータおよび精密ポリゴンデータの何れのデータも記憶されている物体については、該物体に対して所定の位置に設定された少なくとも３つの座標点を、該表示用ポリゴンデータおよび該精密ポリゴンデータの各々の基準点として記憶しておく。ここで、基準点としては、表示用ポリゴンデータのポリゴンを構成する複数の頂点と、精密ポリゴンデータのポリゴンを構成する複数の頂点の中から、何れにも含まれる頂点を選択することもできるし、あるいは、これら頂点とは別の座標値に基準点を設定することも可能である。次いで、精密ポリゴンデータを、物体の三次元形状を維持したまま移動あるいは回転させることにより、表示用ポリゴンデータの基準点と精密ポリゴンデータの基準点とを、少なくとも画面上で一致させる。このとき、表示用ポリゴンデータ側の基準点の三次元座標と、精密ポリゴンデータ側の基準点の三次元座標とが一致していることを確認しても良いし、あるいは、これら基準点が画面上で一致していることを確認しても良い。こうして２つのポリゴンデータの基準点を一致させた状態で、表示用ポリゴンデータを精密ポリゴンデータで置き換えた後に、印刷データを生成することとしてもよい。
【００１５】
このようにして基準点を一致させてから表示用ポリゴンデータを精密ポリゴンデータで置き換えてやれば、精密ポリゴンデータによる画像を、表示用ポリゴンデータによる画像に正確に位置合わせすることができるので、物体の配置が画面の表示と同じとなり、あたかも画面の表示をそのまま印刷したかのような画像を印刷することが可能となる。
【００１６】
また、上述した画像データ生成装置においては、印刷のためのポリゴンデータを予め記憶しておく代わりに、画像の表示に用いたポリゴンデータから印刷用のポリゴンデータを生成することとしてもよい。すなわち、画面に表示された二次元画像の印刷命令を受け取ると、該二次元画像の画像データを生成するために用いられたポリゴンデータを取得して、該ポリゴンデータを構成するポリゴンが複数のポリゴンに分割された印刷用のポリゴンデータを生成する。次いで、この印刷用のポリゴンデータから印刷データを生成することとしてもよい。
【００１７】
こうすれば、印刷用のポリゴンデータを予め記憶しておく必要がないので、記憶容量を節約することが可能となる。また、画面の表示のためのポリゴンデータから、該ポリゴンデータを構成するポリゴンを分割することによって印刷用のポリゴンデータを生成しているため、印刷用ポリゴンデータは画面の表示のためのポリゴンデータと同じ位置に生成されることになる。このため、印刷用ポリゴンデータの位置合わせを行う必要がなく、画面の表示を印刷する処理を簡素なものとすることが可能となる。
【００１８】
あるいは、画面に表示された二次元画像の印刷命令を受け取ると、該二次元画像の画像データを取得して、該二次元画像に含まれるポリゴンを複数のポリゴンに分割することにより、小さなポリゴンから構成された画像データを生成して印刷データとすることとしてもよい。
【００１９】
このようにしても、印刷用のポリゴンデータを予め記憶しておく必要が無い。また、画面に表示された二次元画像の画像データを取得して、該二次元画像に含まれるポリゴンを分割しているので、小さなポリゴンによる画像データは元の画像データと同じ位置に生成することになり、画像データの位置合わせを行う必要もない。
【００２０】
また、ポリゴンデータを構成するポリゴン、あるいは画像データに含まれるポリゴンを分割する場合には、これら分割して生成したポリゴンについては、該ポリゴンの色属性を、隣接するポリゴンの色属性に基づいて決定することとしてもよい。ここで、ポリゴンの色属性としては、単に色彩に限らず、例えば、金属色や、ガラスの色、更には木目や布目など、物体の表面に現れる視覚的な特徴とすることができる。
【００２１】
ポリゴンを複数のポリゴンにしても、必ずしも物体形状の表現精度が向上するわけではないが、分割して生成したポリゴンの色属性を、隣接するポリゴンに基づいて決定してやれば、ポリゴン間の色属性の変化を少なくすることができる。このため、必ずしも物体形状の表現精度が向上していなかったとしても、表面がゴツゴツした感じを抑制することができ、写真の様な高画質な画像を印刷することが可能となる。
【００２２】
また、こうした画像データ生成装置においては、画面に表示された二次元画像の印刷命令に加えて、該二次元画像を印刷するための所定の印刷条件を受け取り、該印刷条件が反映された印刷データを生成することとしてもよい。ここで、印刷条件としては、例えば、印刷媒体の大きさ、印刷媒体の種類などを設定することとしてもよい。
【００２３】
所定の印刷条件として、予め定められた項目について設定しておけば、設定内容を反映させて適切な印刷データを生成することができるので、より高画質な画像を印刷することが可能となる。
【００２４】
あるいは、画面に表示された二次元画像の印刷命令に加えて、該二次元画像に表示された光景を撮影するとしたときの撮影条件を受け取り、受け取った撮影条件が反映された印刷データを生成することとしてもよい。ここで、撮影条件としては、例えば、表示された画面の中で印刷する範囲や、画面の中で焦点を合わせる位置（焦点位置）、更には、焦点深度などを設定することとしてもよい。
【００２５】
写真のような高画質な画像が得られることに加えて、このように撮影条件を設定することができれば、あたかも実在する対象を撮影したかのような印象を与えることができるので、得られた画像に、より一層の臨場感を付与することができる。
【００２６】
また、上述した画像データ生成装置においては、次のような印刷データを生成することとしても良い。すなわち、各々のポリゴンを構成する頂点の二次元座標値と、該各々のポリゴンの色属性とを少なくとも含んだデータを、印刷データとして生成することとしても良い。
【００２７】
物体の三次元形状が複数のポリゴンによって表現されている場合、各々のポリゴンを構成する頂点の二次元座標値と、該各々のポリゴンの色属性とを用いれば、二次元画像を効率よく表現することができる。従って、生成した印刷データのデータ量が低減するため、迅速に印刷データを出力することができ、延いては、迅速に画像を印刷することが可能となる。
【００２８】
あるいは、上述した画像データ生成装置においては、二次元画像を構成する画素毎に階調値が設定された画像データを、印刷データとして生成することとしても良い。
【００２９】
印刷装置の中には、画素毎に階調値が設定された画像データを受け取って、画像を印刷可能なものも多数存在する。従って、このような画像データを印刷データとして出力しておけば、このような印刷装置に印刷データを供給することで、そのまま画像を印刷することが可能となる。加えて、画素毎に設定される階調値を、いわゆる光の三原色に相当するＲ，Ｇ，Ｂ各色の階調値としておけば、画面に表示するために画像データを生成する処理と、画像を印刷するための印刷データを生成する処理との共通化を図ることが可能になるという利点も得ることができる。
【００３０】
また、上述した本発明の画像データ生成装置は、画面に表示された二次元画像を印刷するために、印刷データを生成する装置である。従って、本発明は、印刷データを生成する画像生成装置と、生成された印刷データを用いて画像を印刷する印刷装置とを組み合わせた印刷装置として把握することも可能である。こうした本発明の印刷装置は、
ポリゴンを構成する頂点の座標によって物体の三次元形状を表したポリゴンデータに基づいて画面上に表示された二次元画像を、印刷媒体上に出力する印刷装置であって、
前記画面上に二次元画像を表示するための画像データを、前記ポリゴンデータから生成して該画面上に表示する画像表示手段と、
前記画面上に表示された二次元画像の印刷命令を受け取ると、前記画像データまたは該画像データの生成に用いられた前記ポリゴンデータの少なくとも一方を取得することにより、該二次元画像と前記物体の配置が同一で、且つ、該ポリゴンデータよりも小さなポリゴンに基づく画像データを、該二次元画像を印刷するための印刷データとして生成する印刷データ生成手段と、
前記印刷データに基づいて、前記印刷媒体上に画像を出力する画像出力手段と
を備えることを要旨とする。
【００３１】
また、上記の印刷装置に対応する本発明の印刷方法は、
ポリゴンを構成する頂点の座標によって物体の三次元形状を表したポリゴンデータに基づいて画面上に表示された二次元画像を、印刷媒体上に出力する印刷方法であって、
前記画面上に二次元画像を表示するための画像データを、前記ポリゴンデータから生成して該画面上に表示する工程（Ａ）と、
前記画面上に表示された二次元画像の印刷命令を受け取ると、前記画像データまたは該画像データの生成に用いられた前記ポリゴンデータの少なくとも一方を取得することにより、該二次元画像と前記物体の配置が同一で、且つ、該ポリゴンデータよりも小さなポリゴンに基づく画像データを、該二次元画像を印刷するための印刷データとして生成する工程（Ｂ）と、
前記印刷データに基づいて、前記印刷媒体上に画像を出力する工程（Ｃ）と
を備えることを要旨とする。
【００３２】
かかる本発明の印刷装置および印刷方法においては、画面に表示されている二次元画像の印刷命令を受け取ると、該二次元画像の生成に用いられた画像データ、もしくは、該画像データを生成するために使用したポリゴンデータの少なくとも一方を取得して、該二次元画像と前記物体の配置が同一で、且つ、該ポリゴンデータよりも小さなポリゴンに基づく画像データを、印刷データとして生成する。次いで、生成した印刷データに基づいて、印刷媒体上に画像を出力する。ここで、印刷媒体としては、いわゆる印刷用紙に限らず、例えば布や、樹脂フィルム、金属泊など、種々の媒体を用いることができる。
【００３３】
このようにして画像を出力すれば、小さなポリゴンから生成した印刷データに基づいて画像を出力することができるので、鮮明に画像を表示可能な媒体上に印刷した場合でも、物体表面がゴツゴツした画像となることがなく、あたかも実在する物体を撮影した写真のような、高画質な画像を得ることができる。また、こうして印刷された画像は、画面上に表示された二次元画像と、物体の配置が同一となっている。このため、画面上の二次元画像をそのまま印刷したかのような印象を与えることが可能となる。
【００３４】
更に本発明は、上述した画像データ生成方法あるいは印刷方法を実現するためのプログラムをコンピュータに読み込ませ、コンピュータを用いて実現することも可能である。従って、本発明は次のようなプログラム、あるいは該プログラムを記録した記録媒体として把握することもできる。すなわち、上述した画像データ生成方法に対応する本発明のプログラムは、
物体の表面を複数のポリゴンに分割し、該各々のポリゴンを構成する頂点の座標によって該物体の三次元形状を表現したポリゴンデータから、該物体の二次元画像を表す画像データを生成する方法を、コンピュータで実現するためのプログラムであって、
前記ポリゴンデータから生成された前記画像データに基づいて、前記物体の二次元画像を画面上に表示する第１の機能と、
前記画面上に表示された二次元画像の印刷命令を受け取ると、前記画像データまたは該画像データの生成に用いられた前記ポリゴンデータの少なくとも一方を取得することにより、該二次元画像と前記物体の配置が同一で、且つ、該ポリゴンデータよりも小さなポリゴンに基づく画像データを、該二次元画像を印刷するための印刷データとして生成する第２の機能と
を実現することを要旨とする。
【００３５】
また、上記のプログラムに対応する本発明の記録媒体は、
物体の表面を複数のポリゴンに分割し、該各々のポリゴンを構成する頂点の座標によって該物体の三次元形状を表現したポリゴンデータから、該物体の二次元画像を表す画像データを生成するプログラムを、コンピュータで読み取り可能に記録した記録媒体であって、
前記ポリゴンデータから生成された前記画像データに基づいて、前記物体の二次元画像を画面上に表示する第１の機能と、
前記画面上に表示された二次元画像の印刷命令を受け取ると、前記画像データまたは該画像データの生成に用いられた前記ポリゴンデータの少なくとも一方を取得することにより、該二次元画像と前記物体の配置が同一で、且つ、該ポリゴンデータよりも小さなポリゴンに基づく画像データを、該二次元画像を印刷するための印刷データとして生成する第２の機能と
を実現するプログラムを記憶していることを要旨とする。
【００３６】
更に、上述した印刷方法に対応する本発明のプログラムは、
ポリゴンを構成する頂点の座標によって物体の三次元形状を表したポリゴンデータに基づいて画面上に表示された二次元画像を、印刷媒体上に印刷する方法を、コンピュータを用いて実現するためのプログラムであって、
前記画面上に二次元画像を表示するための画像データを、前記ポリゴンデータから生成して該画面上に表示する機能（Ａ）と、
前記画面上に表示された二次元画像の印刷命令を受け取ると、前記画像データまたは該画像データの生成に用いられた前記ポリゴンデータの少なくとも一方を取得することにより、該二次元画像と前記物体の配置が同一で、且つ、該ポリゴンデータよりも小さなポリゴンに基づく画像データを、該二次元画像を印刷するための印刷データとして生成する機能（Ｂ）と、
前記印刷データに基づいて、前記印刷媒体上に画像を出力する機能（Ｃ）と
を実現することを要旨とする。
【００３７】
また、上記のプログラムに対応する本発明の記録媒体は、
ポリゴンを構成する頂点の座標によって物体の三次元形状を表したポリゴンデータに基づいて画面上に表示された二次元画像を、印刷媒体上に印刷するプログラムを、コンピュータで読み取り可能に記録した記録媒体であって、
前記画面上に二次元画像を表示するための画像データを、前記ポリゴンデータから生成して該画面上に表示する機能（Ａ）と、
前記画面上に表示された二次元画像の印刷命令を受け取ると、前記画像データまたは該画像データの生成に用いられた前記ポリゴンデータの少なくとも一方を取得することにより、該二次元画像と前記物体の配置が同一で、且つ、該ポリゴンデータよりも小さなポリゴンに基づく画像データを、該二次元画像を印刷するための印刷データとして生成する機能（Ｂ）と、
前記印刷データに基づいて、前記印刷媒体上に画像を出力する機能（Ｃ）と
を実現するプログラムを記録していることを要旨とする。
【００３８】
こうしたプログラム、あるいは記録媒体に記録されているプログラムをコンピュータに読み込ませ、該コンピュータを用いて上述の各種機能を実現すれば、画面に表示された二次元画像を、あたかも実在する物体を撮影した写真のような高画質の画像として出力することが可能となる。
【発明を実施するための最良の形態】
【００３９】
以下では、本発明の作用・効果をより明確に説明するために、本発明の実施の形態を、次のような順序に従って説明する。
Ａ．装置構成  ：
Ａ−１．ゲーム機の構成  ：
Ａ−２．カラープリンタの構成  ：
Ｂ．ゲーム画面の表示の概要  ：
Ｃ．第１実施例  ：
Ｃ−１．第１の変形例  ：
Ｃ−２．第２の変形例  ：
Ｃ−３．第３の変形例  ：
Ｃ−４．第４の変形例  ：
Ｄ．第２実施例  ：
Ｄ−１．第２実施例の変形例  ：
Ｅ．第３実施例  ：
Ｅ−１．第３実施例の変形例  ：
【００４０】
Ａ．装置構成  ：
Ａ−１．ゲーム機の構成  ：
図１は、本実施例の画像データ生成装置を備えたゲーム機１００の構成を示す説明図である。本実施例のゲーム機１００は、ＣＰＵ１０１を中心として、メインメモリ１１０、座標変換器（以下、ＧＴＥ：Ｇeometry Ｔransfer Ｅngine）１１２、フレームバッファ１１４、画像処理器（以下、ＧＰＵ：Ｇraphic Ｐroccesing Ｕnit）１１６、ＲＯＭ１０８、ドライバ１０６、通信制御部１０３などが、バスを介して相互にデータをやり取り可能に接続されて構成されている。また、ゲーム機１００には、ゲーム機１００の操作を行うためのコントローラ１０２などが接続されている。更に、本実施例のゲーム機１００にはカラープリンタ２００も接続されており、ゲーム中の画面をカラープリンタ２００に出力することも可能となっている。
【００４１】
ＣＰＵ１０１は、いわゆる算術演算や論理演算を実行する中央演算装置であり、ゲーム機１００全体の制御を司っている。ＲＯＭ１０８は、読み出し専用のメモリであり、ゲーム機１００の電源投入後にＣＰＵ１０１が初めに実行するプログラム（ブートプログラム）を始めとして、各種のプログラムが格納されている。メインメモリ１１０は、データの読み出しおよび書き込みが可能なメモリであり、ＣＰＵ１０１が算術演算や論理演算を実行する際に一時的な記憶領域として使用される。ＧＴＥ１１２は、ＣＰＵ１０１の制御の下で、メインメモリ１１０にアクセスしながら、幾何学的形状を三次元空間で移動、回転させるための演算を高速に実行する。ＧＰＵ１１６は、ＣＰＵ１０１からの命令を受けて、モニタ１５０上に表示される画面を生成する処理を高速に実行する。フレームバッファ１１４は、ＧＰＵ１１６が、モニタ１５０上に表示される画面を生成するために使用する専用メモリである。ＧＰＵ１１６は、フレームバッファ１１４上に生成した画面のデータを読み出してモニタ１５０に出力することにより、ゲーム中の画面を表示する。また、ゲーム中の画面を印刷する場合には、フレームバッファ１１４上に生成されたデータがＧＰＵ１１６を介してカラープリンタ２００に供給されることによって、ゲーム中の画像が印刷される。
【００４２】
ゲームを実行するためのプログラムや各種のデータは、いわゆるコンパクトディスクやデジタルビデオディスクなどの記憶ディスク１０５に記憶されている。これら記憶ディスク１０５をゲーム機１００にセットすると、記憶ディスク１０５に記憶されているプログラムおよびデータがドライバ１０６によって読み出され、メインメモリ１１０に一旦記憶される。そして、コントローラ１０２の操作内容が通信制御部１０３を介してＣＰＵ１０１に入力されると、ＣＰＵ１０１が、メインメモリ１１０に記憶されているプログラムを読み出して所定の処理を実行することにより、ゲームが実行される。
【００４３】
Ａ−２．カラープリンタの構成  ：
図２は、本実施例のゲーム機１００に接続されているカラープリンタ２００の概略構成を示す説明図である。カラープリンタ２００はシアン，マゼンタ，イエロ，ブラックの４色インクのドットを形成可能なインクジェットプリンタである。もちろん、これら４色のインクに加えて、染料または顔料濃度の低いシアン（淡シアン）インクと、染料または顔料濃度の低いマゼンタ（淡マゼンタ）インクとを含めた合計６色のインクドットを形成可能なインクジェットプリンタを用いることもできる。尚、以下では場合によって、シアンインク，マゼンタインク，イエロインク，ブラックインク，淡シアンインク，淡マゼンタインクのそれぞれを、Ｃインク，Ｍインク，Ｙインク，Ｋインク，ＬＣインク，ＬＭインクと略称することがあるものとする。
【００４４】
カラープリンタ２００は、図示するように、キャリッジ２４０に搭載された印字ヘッド２４１を駆動してインクの吐出およびドット形成を行う機構と、このキャリッジ２４０をキャリッジモータ２３０によってプラテン２３６の軸方向に往復動させる機構と、紙送りモータ２３５によって印刷用紙Ｐを搬送する機構と、ドットの形成やキャリッジ２４０の移動および印刷用紙の搬送を制御する制御回路２６０などから構成されている。
【００４５】
キャリッジ２４０には、Ｋインクを収納するインクカートリッジ２４２と、Ｃインク，Ｍインク，Ｙインクの各種インクを収納するインクカートリッジ２４３とが装着されている。インクカートリッジ２４２，２４３をキャリッジ２４０に装着すると、カートリッジ内の各インクは図示しない導入管を通じて、印字ヘッド２４１の下面に設けられた各色毎のインク吐出用ヘッド２４４ないし２４７に供給される。
【００４６】
図３は、インク吐出用ヘッド２４４ないし２４７におけるインクジェットノズルＮｚの配列を示す説明図である。図示するように、インク吐出用ヘッドの底面には、Ｃ，Ｍ，Ｙ，Ｋの各色のインクを吐出する４組のノズル列が形成されており、１組のノズル列あたり４８個のノズルＮｚが、一定のノズルピッチｋで配列されている。
【００４７】
制御回路２６０は、ＣＰＵや、ＲＯＭ、ＲＡＭ、ＰＩＦ（周辺機器インターフェース）等がバスで相互に接続されて構成されている。制御回路２６０は、キャリッジモータ２３０および紙送りモータ２３５の動作を制御することによってキャリッジ２４０の主走査動作および副走査動作を制御するとともに、外部から供給される印刷データに基づいて、各ノズルから適切なタイミングでインク滴を吐出する制御を行う。こうして、制御回路２６０の制御の下、印刷媒体上の適切な位置に各色のインクドットを形成することによって、カラープリンタ２００はカラー画像を印刷することができる。
【００４８】
また、インク滴を吐出するためにノズルに供給される駆動信号波形を制御してやれば、吐出されるインク滴の大きさを変更して、大きさの異なるインクドットを形成することもできる。このようにしてインクドットの大きさを制御することができれば、印刷しようとする画像の領域に応じて異なる大きさのインクドットを使い分けてやることで、より高画質の画像を印刷することも可能となる。
【００４９】
尚、各色のインク吐出ヘッドからインク滴を吐出する方法には、種々の方法を適用することができる。すなわち、ピエゾ素子を用いてインクを吐出する方式や、インク通路に配置したヒータでインク通路内に泡（バブル）を発生させてインク滴を吐出する方法などを用いることができる。また、インクを吐出する代わりに、熱転写などの現象を利用して印刷用紙上にインクドットを形成する方式や、静電気を利用して各色のトナー粉を印刷媒体上に付着させる方式のプリンタを使用することも可能である。
【００５０】
以上のようなハードウェア構成を有するカラープリンタ２００は、キャリッジモータ２３０を駆動することによって、各色のインク吐出用ヘッド２４４ないし２４７を印刷用紙Ｐに対して主走査方向に移動させ、また紙送りモータ２３５を駆動することによって、印刷用紙Ｐを副走査方向に移動させる。制御回路２６０は、キャリッジ２４０の主走査および副走査の動きに同期させながら、適切なタイミングでノズルを駆動してインク滴を吐出することによって、カラープリンタ２００は印刷用紙上にカラー画像を印刷することが可能となっている。
【００５１】
Ｂ．ゲーム画面の表示の概要  ：
本実施例のゲーム機１００では、ゲームの舞台として設定された仮想的な三次元空間の中で、メインキャラクタを操作することによってゲームが進行するようになっている。図４は、モニタ１５０上にゲーム中の画面が表示されている様子を例示した説明図である。図示されている画面には、想像上の惑星表面が表示されており、惑星の表面には各種の建造物が設定されている様子が仮想的に表示されている。このようなゲームの舞台の中を、メインキャラクタである飛行艇を操縦しながら進んでいくことによってゲームが行われる。
【００５２】
モニタ１５０の画面では二次元の形状しか表現し得ないが、ゲーム機１００の内部では、惑星表面や、飛行艇、各種の建造物などについては三次元的な形状を伴った物体として表現されている。このように、ゲーム機１００の内部で三次元的な形状を伴うものとして扱われている物体を、本明細書中では「オブジェクト」と呼ぶことにする。図４に例示した画面では、画面のほぼ中央に大きく表示された飛行艇ob1 や、惑星表面ob2 、ドーム状の建造物ob3 、遠方に見えるピラミッド状の２つの建造物ob11、ob12、更には、惑星の表面上を飛行する６つの円盤ob4 ないしob9 などがオブジェクトであり、これらについては、物体の表面形状を三次元的に表すデータが記憶されている。このため、メインキャラクタである飛行艇ob1 を操作することにより、飛行艇ob1 に対して、他のオブジェクト（例えば建造物や円盤等）の位置関係が変化すると、これに伴って、モニタ１５０上でのオブジェクトの見え方も変化することになる。この結果、飛行艇ob1 や、惑星表面ob2 などのオブジェクトは、想像によって作り出されたものであるにも拘わらず、あたかも現実に存在しているかのように、モニタ１５０に表示することが可能となっている。また、詳細には後述するが、本実施例のゲーム機１００では、モニタ１５０に表示された画面を印刷することで、あたかも写真で撮影したかのような画像を印刷することも可能となっている。
【００５３】
尚、図４に示した例では、惑星の空の部分や、空に浮かぶ衛星は、オブジェクトではなく二次元的な画像がそのままモニタ１５０に表示されたものとなっている。従って、これらについては、飛行艇ob1 を操作しても、モニタ１５０上での見え方が変化することはない。これは、ゲームのメインキャラクタである飛行艇ob1 の移動範囲に対して極めて遠方にあるため、飛行艇ob1 の位置が変わっても見え方はほとんど変化せず、従って二次元画像として扱えば十分であることによる。図５は、モニタ１５０の画面上で、二次元画像がそのまま表示されている領域を、ハッチングを付して表した説明図である。このように、本実施例のゲーム機１００では、モニタ１５０に表示される画面の一部に、二次元画像を嵌め込んで表示することも可能となっている。
【００５４】
次に、ゲーム機１００が、物体を三次元的な形状を伴ったオブジェクトとして取り扱う方法について説明する。図６は、メインキャラクタである飛行艇ob1 の形状を示す斜視図である。図の左側には、飛行艇ob1 を斜め後方から見た様子が示されており、図の右側には、飛行艇ob1 を斜め前方から様子が示されている。図示されているように、飛行艇ob1 は、表面のほとんどの部分が滑らかな曲面によって構成されている。ゲーム機１００の内部では、このような三次元的な曲面を有する物体を、平面多角形を用いて表現する。すなわち、三次元的な曲面を細かな平面多角形に分割し、これら平面多角形によって近似的に表現するのである。
【００５５】
図７は、メインキャラクタの飛行艇ob1 の形状を細かな平面多角形によって表現した様子を概念的に示した説明図である。このように、細かな多角形に分割すれば三次元的な曲面を持った物体形状を、平面多角形によって表現することが可能である。尚、このような平面多角形は「ポリゴン」と呼ばれている。本実施例のゲーム機１００では、全てのオブジェクトがポリゴンの集まりとして表現されており、ポリゴンを構成する各頂点の三次元座標値によってオブジェクトの形状が表現されている。本明細書においては、ポリゴンの頂点の座標によってオブジェクトの形状を表現したデータを、「ポリゴンデータ」と呼ぶことにする。また、本実施例のゲーム機１００においては、各オブジェクトのポリゴンデータは、オブジェクトテーブルと呼ばれるテーブルによって管理されている。
【００５６】
図８は、本実施例のゲーム機１００において、各オブジェクトのポリゴンデータを管理するために用いられるオブジェクトテーブルを概念的に示した説明図である。図示されているように、オブジェクトテーブルには、各オブジェクトを識別するためのオブジェクト番号と、オブジェクトの形状を示したポリゴンデータが格納されているメインメモリ１１０の先頭アドレスと、オブジェクトを構成するポリゴン数とが記憶されている。オブジェクトテーブルには、このようなオブジェクト番号とポリゴンデータの先頭アドレスとポリゴン数とを一組とするレコードが、オブジェクトの数だけ設定されている。
【００５７】
図９は、オブジェクトの形状を示したポリゴンデータのデータ構造を示す説明図である。図示されているようにポリゴンデータは、ポリゴンの通し番号と、各ポリゴンを構成する頂点のＸＹＺ座標値と、ポリゴンに付与されるテクスチャの番号と、オブジェクトに設定されている基準点のＸＹＺ座標値などから構成されている。このうち、ポリゴンの番号、頂点座標、テクスチャ番号についてはポリゴン毎に一組ずつ設定されており、一方、基準点のＸＹＺ座標値はオブジェクトについて設定されている。
【００５８】
各ポリゴンに設定されている頂点座標の個数は、ポリゴンの形状に応じた個数が設定されている。例えば、ポリゴンが三角形であれば３つの頂点から構成されているから、そのポリゴンについては３つの頂点座標が設定される。同様に、ポリゴンが四角形であれば４つの頂点座標が設定されることになる。本実施例では、全てのオブジェクトが三角形のポリゴンで構成されており、従って、各ポリゴンには３つずつ頂点座標が設定されている。
【００５９】
また、テクスチャ番号は、簡単に言えば、ポリゴン内を塗りつぶすべき色彩を示す番号のようなものと考えることができる。例えば、オブジェクトの表面が赤ければ、そのオブジェクトを構成する全てのポリゴンを赤色としておけばよい。この場合、ポリゴンのテクスチャ番号には、赤色を示す番号が指定されることになる。もっとも、このように色彩だけでなく、アルミや真鍮などの各種の金属表面や、ガラスのような透明な表面、更には木肌のような表面を、テクスチャ番号として指定することも可能である。テクスチャ番号は、このようにポリゴンに付与される表面の状態を指定する番号である。
【００６０】
一方、オブジェクトについて設定されている基準点は、三次元空間におけるオブジェクトの位置と姿勢とを表すために用いられるＸＹＺ座標値である。本実施例のゲーム機１００では、ゲーム中に表示されるモニタ１５０の画面を、あたかも写真のような鮮明な画像として印刷することが可能となっており、詳細には後述するが、対象とするオブジェクトの位置および向きの情報を用いることによって、このような鮮明な画像を印刷することを可能としている。このため本実施例のオブジェクトには、そのオブジェクトが三次元空間内のどの位置に存在していて、どちらの方向を向いているかを特定するために、基準点が設定されている。図７に示した飛行艇（オブジェクト番号ob1 ）については、機体先頭部に設けられた基準点Ｐ１と、左右の尾翼の後端にそれぞれ設けられた基準点Ｐ２、Ｐ３の、合計３つの基準点が設けられている。このように、最低３つの基準点が設けられていれば、三次元空間内でのオブジェクトの位置および向きを特定することができる。もちろん、基準点の個数は３つに限らず、より多数の基準点を設けておくこととしても良い。図９に示したポリゴンデータには、これら基準点のＸＹＺ座標値が設定されている。尚、基準点は、必ずしも全てのオブジェクトに設けられている必要はない。この点については、後ほど詳しく説明する。
【００６１】
以上に説明したように、本実施例のゲーム機１００では、全てのオブジェクトにオブジェクト番号が付与されており、オブジェクトの表面形状はポリゴンの頂点座標を示すポリゴンデータによって表現されている。そして、オブジェクト番号からオブジェクトテーブルを引くことによって対応するポリゴンデータの先頭アドレスを取得すれば、メインメモリ１１０の該当アドレス以降に書き込まれているデータを読み出すことによって、オブジェクトの三次元的な形状を表した頂点座標を取得することが可能となっている。ゲーム機１００のモニタ１５０に表示するための画像データは、このようにして取得した三次元形状を示すポリゴンデータに、後述する処理を施すことによって生成されている。
【００６２】
尚、図８に例示したオブジェクトテーブルでは、ポリゴンデータの先頭アドレス、およびオブジェクトを構成するポリゴン数の２つの項目だけが、オブジェクト番号に対応付けて設定されているが、これら以外の項目も設定することとしても良い。例えば、オブジェクトを構成するポリゴンのタイプ、すなわちポリゴンが何角形であるかを示すデータや、ポリゴンに基準点が設けられているか否か、更には基準点の個数を示すデータなどを、オブジェクト番号に対応付けて設定しておくことも可能である。
【００６３】
図１０は、本実施例のゲーム機１００が、ゲーム中の画面をモニタ１５０に表示する処理の概要を示したフローチャートである。かかる処理は、ＣＰＵ１０１を中心として、メインメモリ１１０、ＧＴＥ１１２、フレームバッファ１１４、ＧＰＵ１１６などが協動しながら実行される処理である。以下、フローチャートに従って説明する。
【００６４】
ゲーム画面表示処理を開始すると、ＣＰＵ１０１は、コントローラ１０２からの入力があったか否かを判断する（ステップＳ１０）。前述したように、ゲーム中は、ゲーム機１００に対する操作は専らコントローラ１０２によって行われるので、先ず初めにコントローラ１０２からの操作入力があったか否かを判断するのである。そして、入力がなかった場合は（ステップＳ１０：ｎｏ）、フレームバッファ１１４に記憶されている画像データをモニタ１５０に出力して、画面の表示を更新する処理（画面更新処理）を行う（ステップＳ５０）。フレームバッファ１１４には、モニタ１５０に表示すべき画像データが生成されて記憶されている。画像データを生成してフレームバッファ１１４に記憶するための処理、およびフレームバッファ１１４に記憶されている画像データをモニタ１５０に出力する画面更新処理の内容については後述する。一方、コントローラ１０２からの入力があったと判断された場合には（ステップＳ１０：ｙｅｓ）、コントローラ１０２による操作の内容をモニタ１５０の画面に反映させるべく、後述する一連の処理を行う。
【００６５】
コントローラ１０２からの入力が検出されると、コントローラ１０２によって操作されたオブジェクトを、ゲームの舞台として設定されている三次元空間内で、操作に応じた距離および方向に移動させる処理を行う（ステップＳ２０）。一例として、コントローラ１０２による操作が、メインキャラクタである飛行艇ob1 を前進させるものであった場合について説明する。前述したように飛行艇ob1 は、ゲーム機１００の内部では複数のポリゴンによって表現されており（図７参照）、各ポリゴンの頂点座標はポリゴンデータに設定されている（図９参照）。また、ポリゴンデータが記憶されているメモリ領域の先頭アドレスは、オブジェクトテーブルを参照することによって取得することができる。
【００６６】
そこで、メインキャラクタである飛行艇ob1 を前進させる場合は、先ずオブジェクトテーブルを参照して、飛行艇（オブジェクト番号ob1 ）に対応するポリゴンデータの先頭アドレスを取得する。次いで、メインメモリ１１０上の取得したアドレスを先頭とするメモリ領域に記憶されているポリゴンデータを読み出すことによって、各ポリゴンを構成する頂点座標を取得する。こうして得られた頂点座標は、ゲームの舞台として設定された三次元空間内において、現時点での飛行艇ob1 の位置を表す座標となっている。
【００６７】
この点について、若干補足して説明する。記憶ディスク１０５には、各オブジェクトについてのポリゴンデータの初期値が記憶されている。ゲームの開始時には、初期値のポリゴンデータが、記憶ディスク１０５から読み込まれてメインメモリ１１０に記憶されるとともに、ポリゴンデータを記憶した先頭アドレス値が、オブジェクトテーブルに設定される。そして、ゲームの進行に伴って、オブジェクトが移動、回転、あるいは変形すると、後述する処理によって、メインメモリ１１０に記憶されているポリゴンデータの内容が更新されていく。従って、オブジェクトテーブルを参照して先頭アドレスを取得すれば、各オブジェクトの現時点での頂点座標を読み出すことが可能となっているのである。
【００６８】
ここでは、飛行艇ob1 が前進するように、コントローラ１０２が操作されたものとしているから、図１０に示したゲーム画面表示処理のＳ２０では、オブジェクトテーブルを参照することにより、現在の飛行艇ob1 の位置を示すポリゴンデータをメインメモリ１１０から取得する。次いで、コントローラ１０２の操作量から、三次元空間内で飛行艇ob1 を移動させる向きと移動量とを決定し、移動後の飛行艇ob1 の座標値を算出する。かかる演算は、ＣＰＵ１０１の制御の下でＧＴＥ１１２によって高速に実行される。具体的には、ＣＰＵ１０１は飛行艇ob1 の移動方向および移動量を決定すると、ポリゴンデータの先頭アドレスの値と共にＧＴＥ１１２に供給する。ＧＴＥ１１２は、供給された先頭アドレスに基づいて飛行艇ob1 のポリゴンデータを読み出した後、このポリゴンデータの頂点座標に対して座標変換を行うことにより、移動後の頂点座標を算出する。こうして得られた変換後の頂点座標によって、メインメモリ１１０のポリゴンデータを更新する。以上では、メインキャラクタである飛行艇ob1 を前進させた場合について説明したが、コントローラ１０２によって他のオブジェクトが操作された場合は、操作されたオブジェクトについて同様の処理が実行される。この結果、メインメモリ１１０に記憶されている各オブジェクトのポリゴンデータには、常に最新のオブジェクトの座標値が記憶されていることになる。
【００６９】
このようにして、コントローラ１０２の操作をオブジェクト位置に反映させたら、各オブジェクトのポリゴンデータから二次元画像のデータを生成する処理（レンダリング処理）を開始する（ステップＳ３０）。レンダリング処理では、ポリゴンデータによって表現された三次元的なオブジェクトを、モニタ１５０の画面に相当する平面上に投影するような処理を行うことによって、三次元的なオブジェクトから二次元的な画像を生成する。
【００７０】
図１１は、レンダリング処理の概要を示した説明図である。図１１では、サイコロ形状のオブジェクトにレンダリング処理を施すことにより、二次元的な画像を生成する様子が示されている。レンダリング処理に際しては、先ず初めに、オブジェクトを観察するための視点Ｑを設定し、次いで、オブジェクトと視点Ｑとの間に、モニタ１５０の画面に相当する投影面Ｒを設定する。そして、オブジェクトの表面から選択した任意の点と視点Ｑとを直線で結び、この直線が投影面Ｒと交差する交点を決定する。例えば、図１１に示したように、オブジェクト上のａ点を選択したとすると、ａ点と視点Ｑとを結ぶ直線が投影面Ｒと交わる交点としてＲａ点を決めることができる。ここで、周知のように光は直進する性質を有するから、ａ点から出て視点Ｑに向かう光は、投影面Ｒ上のＲａ点に像を結ぶことになる。換言すれば、投影面Ｒ上のＲａ点は、オブジェクト上のａ点が投影される点と考えることができる。従って、オブジェクトの表面の全ての点について、このような操作を行えば、投影面Ｒ上に投影されたオブジェクトの二次元像を得ることができる。
【００７１】
もっとも、前述したようにオブジェクトはポリゴンによって表現されているから、オブジェクト表面の全ての点についてこうした操作を行う必要はなく、ポリゴンの頂点座標についてのみ実行すればよい。例えば、図１１に示すように、オブジェクト表面のｂ点およびｃ点が、投影面Ｒ上のＲｂ点、Ｒｃ点にそれぞれ投影されたものとする。この場合、オブジェクト上のａ点、ｂ点、ｃ点を頂点とする三角形のポリゴンは、投影面Ｒ上では、Ｒａ点、Ｒｂ点、Ｒｃ点を頂点とする三角形の領域に投影されるものと考えて良い。また、オブジェクト上のポリゴンが例えば赤色であったとすると、このポリゴンが投影面Ｒ上に投影された三角形の領域も赤色になると考えて良い。すなわち、オブジェクト上のポリゴンが有するテクスチャ番号は、投影面Ｒ上に投影された領域にも引き継がれると考えることができる。
【００７２】
更に、レンダリング処理では、いわゆる陰面消去と呼ばれる処理も行われる。陰面消去とは、オブジェクト表面の中で、他の表面の陰になっている部分を消去する処理である。例えば、図１１に示した例では、オブジェクト表面のｂ点、ｄ点、ｅ点を頂点とするポリゴンは、視点Ｑから見てオブジェクトの裏側にあり、全体が他の表面の陰になっているため投影面Ｒ上に像を結ぶことはない。そこで、このようなポリゴンについては、投影面Ｒ上に投影像が表示されないようにするのである。尚、オブジェクトの形状および視点Ｑの設定によっては、あるポリゴンの一部の領域だけが他の表面の陰になる場合もある。このような場合は、そのポリゴンの陰になっている部分だけの表示が省略されて、陰になっていない部分についてだけ、投影像が表示されることになる。
【００７３】
このように、レンダリング処理では、オブジェクトを構成するポリゴンの頂点を投影面Ｒに投影したときの座標値を算出する処理が行われる。このような座標値の算出は、比較的簡単に行うことができる。図１２（ａ）は、オブジェクト上の座標点（Ｘ，Ｙ，Ｚ）を投影して得られる投影面Ｒ上の座標値（Ｕ，Ｖ）を求める計算式を示した説明図である。ここで、図１２（ａ）中のα、β、γ、δは、視点Ｑから投影面Ｒ、あるいはオブジェクトまでの距離によって定まる係数である。あるいは、簡易的には、図１２（ｂ）に示すように、除算を含まない計算式を用いることもできる。ここで、図１２（ｂ）中のε、ζ、η、θ、ι、κは、それぞれ視点Ｑから投影面Ｒ、あるいはオブジェクトまでの距離によって定まる係数である。
【００７４】
また、詳細な説明は省略するが、レンダリング処理では、三次元空間内の予め設定された位置に光源を置いて、オブジェクト表面に陰影を付けるシェーディングと呼ばれる処理や、遠近感を強調するために、遠方にある部分ほど輝度を低下させたり、投影像をぼかす処理などが行われることもある。こうした一連の処理からなるレンダリング処理は、ＧＴＥ１１２がＣＰＵ１０１からの命令を受け取って、メインメモリ１１０に記憶されているポリゴンデータに対して所定の演算を実行し、得られた結果を用いて、メモリ上のポリゴンデータを更新することによって行われる。そして、モニタ１５０の画面に現れる全てのオブジェクトについて、以上のような処理を行ったら、図１０のステップＳ３０に示したレンダリング処理を終了する。
【００７５】
上述したレンダリング処理に続いて、ゲーム機１００のＣＰＵ１０１は、描画処理を開始する（図１０のステップＳ４０）。描画処理とは、レンダリング処理によって生成された投影像から、画素毎に階調値が設定された画像データを生成する処理である。すなわち、レンダリング処理で得られた投影像は、ポリゴンが投影された多角形の頂点の座標と、その多角形に付与すべきテクスチャ番号とを用いた形式で表現されている。これに対して、モニタ１５０上で表示可能な画像データは、画像を画素と呼ばれる微細な領域に細分し、画素毎に階調データ（通常は、輝度を表すデータ）を設定した形式で表現されている。各画素に１種類の輝度データを設定した場合には、モノクロ画像の画像データとなり、光の三原色を構成するＲＧＢ各色の輝度データを設定した場合には、カラー画像の画像データとなる。尚、ＲＧＢ各色の輝度データの代わりに、明度に対応する階調データと、色差に対応する２種類の階調データを用いてカラー画像を表現することも可能である。いずれにしても、レンダリング処理によって得られた投影像を表すデータは、そのままではモニタ１５０上に表示することができないので、モニタ１５０で表示可能なデータ形式に変換する処理を行う。このような処理が描画処理と呼ばれる処理である。また、図５を用いて前述したように、画面に二次元画像が嵌め込まれている場合は、描画処理の中で二次元画像のデータを嵌め込んでやればよい。
【００７６】
描画処理を開始すると、ゲーム機１００のＣＰＵ１０１は、ＧＰＵ１１６に向かって描画命令を出力する。この描画命令を受けて、ＧＰＵ１１６が画像データを生成してフレームバッファ１１４に記憶することによって描画処理が行われる。
【００７７】
図１３は、描画命令によって描画しようとする画像、すなわち、前述したレンダリング処理によって生成された投影像を、概念的に示した説明図である。また、図１４は、このような画像を描画するために、ＣＰＵ１０１からＧＰＵ１１６に向かって出力される描画命令のデータ構造を概念的に示した説明図である。先ず、図１３を参照しながら、描画の対象となる投影像について説明する。描画の対象となる投影像は、前述したように、オブジェクトを構成するポリゴンを投影面Ｒ上に投影することによって得られた二次元画像である。本実施例では、オブジェクトは全て三角形のポリゴンを用いて構成されているものとしているから、原則として全てのポリゴンが、三角形の画像として投影面Ｒ上に投影される。尚、ポリゴンとは、前述したようにオブジェクトを構成する平面多角形を指しており、ポリゴンが投影面Ｒに投影された多角形は、厳密にはポリゴンとは異なるものである。しかし、以下では説明の便宜から、このようなポリゴンの投影像も、ポリゴンと呼ぶことがあるものとする。また、特にこれらを区別する場合は、「オブジェクトを構成するポリゴン」、および「投影像を構成するポリゴン」などと称することがあるものとする。
【００７８】
図１３に示されている投影像は、ポリゴン１、ポリゴン２、ポリゴン３の３つのポリゴンから構成されている。また、投影像がいずれも三角形のポリゴンによって構成されているのは、オブジェクトを構成するポリゴンが全て三角形のポリゴンによって構成されており、これら三角形のポリゴンを投影面Ｒ上に投影すると三角形の投影像が得られることに対応したものである。そして、図１１を用いて前述したように、これら投影像を構成するポリゴンには、オブジェクトを構成するポリゴンと同じテクスチャ番号が付与されている。
【００７９】
このような投影像を描画する場合、ＣＰＵ１０１は図１４に示すようなデータ構造の描画命令を出力する。図示されているように描画命令は、「ＣＯＤＥ」と、テクスチャ番号と、投影面Ｒ上での頂点の座標値とを一組とするデータが、投影像を構成するポリゴン毎に設定された構造となっている。ここで、「ＣＯＤＥ」は、この命令が描画命令であることを表すとともに、描画の対象としているポリゴンの形状を指定するデータとなっている。すなわち、オブジェクトを構成するポリゴンは、三角形に限らず、四角形や五角形などのポリゴンが使用される場合もあり、これに伴って投影像を構成するポリゴンの形状も変わってくる。また、オブジェクトのポリゴンが三角形であったとしても、一部が他のポリゴンの陰になった場合などには投影面Ｒの上のポリゴンを、例えば四角形のポリゴンとして扱うことも可能である。このようなことを考慮して、本実施例の描画命令では、ポリゴン毎にポリゴンの形状を指定可能となっているのである。
【００８０】
本実施例の描画命令には、「ＣＯＤＥ」に続いて、テクスチャ番号が設定されている。このテクスチャ番号は、投影像を構成するポリゴンに付与されているテクスチャ番号であり、ほとんどの場合は、オブジェクトを構成するポリゴンに付与されたテクスチャ番号と同じものとなる。尚、テクスチャ番号の代わりに、ポリゴンに付与すべき色情報（例えば、Ｒ，Ｇ，Ｂ各色の階調値）を設定しておくことも可能である。
【００８１】
テクスチャ番号に続いて、ポリゴンを構成する頂点の投影面Ｒ上での座標値が設定されている。頂点座標の個数は上述した「ＣＯＤＥ」によって決定される。例えば、「ＣＯＤＥ」においてポリゴンの形状が三角形と指定されている場合は、３つの頂点座標が設定され、四角形のポリゴンと指定されている場合は、４つの頂点座標が設定されることになる。描画命令は、このような「ＣＯＤＥ」、テクスチャ番号、頂点座標を一組とするデータが、投影像を構成するポリゴン毎に設定されたデータ構造となっている。
【００８２】
図１４に例示した描画命令では、描画の対象としている投影像が、ポリゴン１ないしポリゴン３の３つのポリゴンから構成されていることと対応して、「ＣＯＤＥ」、テクスチャ番号、頂点座標からなる三組のデータが設定されている。すなわち、ポリゴン１については、「ＣＯＤＥ」およびテクスチャ番号に続いて、ポリゴン１を構成する３つの頂点Ａ、Ｂ、Ｃの座標値が設定されている。また、ポリゴン２については、「ＣＯＤＥ」およびテクスチャ番号に続いて、ポリゴン２を構成する３つの頂点Ｂ、Ｃ、Ｄの座標値が設定され、ポリゴン３については、「ＣＯＤＥ」、テクスチャ番号に続いて、ポリゴン３を構成する３つの頂点Ｃ、Ｄ、Ｅの座標値が設定されている。これらポリゴンの頂点座標およびテクスチャ番号は、前述したレンダリング処理の中でＧＴＥ１１２によって生成された後、メインメモリ１１０に記憶されている。ＣＰＵ１０１は、メインメモリ１１０に記憶されているデータの中から、モニタ１５０の画面上に表示すべき全てのオブジェクトについて、これらのデータを読み出すことにより、図１４に示すようなデータ構造の描画命令を生成してＧＰＵ１１６に供給する。
【００８３】
ＧＰＵ１１６は、このような描画命令を受け取ると、各頂点を結んだ多角形の内部を、テクスチャ番号が示す色彩あるいは模様で塗り潰した二次元画像に展開する。そして、得られた二次元画像を、画像を構成する画素毎に階調データを設定した表現形式のデータに変換して、画像データとしてフレームバッファ１１４に記憶する。この結果、投影面Ｒ上でのポリゴンの頂点座標と、ポリゴンのテクスチャ番号とによって表現された投影像が、モニタ１５０で表示可能なデータ形式の画像データに変換されて、フレームバッファ１１４に記憶されたことになる。尚、本実施例のゲーム機１００では、Ｒ，Ｇ，Ｂ各色の階調値が画素毎に設定された画像データを生成するものとする。モニタ１５０の画面に現れる全ての投影像について、以上のような処理を行ったら、図１０のステップＳ４０に示した描画処理を終了する。
【００８４】
描画処理を終了すると、今度は、フレームバッファ１１４上に得られた画像データをモニタ１５０に出力して、モニタ１５０の画面を更新する処理を行う（ステップＳ５０）。すなわち、画面解像度や、インターレースあるいはノンインターレースと言った走査方式など、モニタ１５０の仕様に合わせて、フレームバッファ１１４から画像データを読み出してビデオ信号としてモニタ１５０に供給する。こうすることで、フレームバッファ１１４に展開した二次元画像をモニタ１５０の画面に表示させることができる。
【００８５】
また、モニタ１５０の表示を少なくとも１秒間に２４回以上の頻度で更新してやれば、人間の網膜が有する残像現象により、あたかも連続して動いているかのような画像を表示することができる。本実施例のゲーム機１００では、図１０に示したゲーム画面表示処理を１秒間に３０回程度の頻度で実行して画面の表示を更新することで、あたかもモニタ１５０の画面内で飛行艇ob1 などの各種オブジェクトが連続して動いているかのように表示することが可能となっている。そして、このような高速な処理を可能とするために、本実施例のゲーム機１００では、座標変換を始めとする各種の演算を高速に実行可能なＧＴＥ１１２や、演算に用いる大量のデータを高速に読み書き可能なメインメモリ１１０、ＣＰＵ１０１から受け取った描画命令に基づいて画像データを迅速に生成するＧＰＵ１１６、更には、生成した画像データを高速に記憶するとともにモニタ１５０に高速に出力可能なフレームバッファ１１４などが搭載されている。
【００８６】
もっとも、処理対象とするポリゴン数があまりに多くなると、図１０に示したゲーム画面表示処理を、１秒間に３０回程度の頻度で実行することは困難となる。そこで、飛行艇ob1 を始めとする各種のオブジェクトは、ポリゴン数があまり多くならないように、若干大きめのポリゴンによって構成されている。前述したようにポリゴンは平面多角形なので、ポリゴンが大きくなると、オブジェクトの表面がゴツゴツしてしまうという弊害がある。しかし、幸いにも、ゲームの画面ではオブジェクトは動いていることが多く、加えて、モニタ１５０は写真の様には高い描画力を有していないため、オブジェクト表面がゴツゴツしていることが目立つことはなく、従って、ゲームの臨場感を損なってしまうといった弊害が生じることはない。
【００８７】
しかし、モニタ１５０の画面を印刷装置で印刷すると、こうした状況は一変することがある。すなわち、印刷して得られる画像は静止画像であることに加えて、近年の印刷装置は写真に迫る高い描画力を有していることから、印刷画像を見ればオブジェクトの表面がゴツゴツしていることがハッキリと分かってしまうことがある。そして、このような印刷画像を見てしまった後では、たとえゲーム中のモニタ１５０に表示されたオブジェクトでさえも、表面がゴツゴツしている様に見えてしまい、ゲームの臨場感が大きく損なわれてしまう畏れも生じる。これに対して本実施例のゲーム機１００では、モニタ１５０の画面を印刷装置で出力した場合でも、あたかも実物を写真で撮影したかのような、鮮明な画像を出力することが可能となっている。以下では、こうしたことを可能とする処理について詳しく説明する。
【００８８】
Ｃ．第１実施例  ：
図１５は、第１実施例のゲーム機１００によって行われる画像印刷処理の流れを示すフローチャートである。以下、フローチャートに従って、画像印刷処理について説明する。
【００８９】
ゲーム機１００のＣＰＵ１０１は、コントローラ１０２に設けられた所定の印刷ボタンが押されたことを検出すると、割り込みを発生させて、図１５に示す画像印刷処理を開始する。尚、割り込みを発生させると、それまでＣＰＵ１０１が行っていた処理は一旦中断され、これに伴ってゲームの進行も、画像印刷処理を終了するまで中断されることになる。
【００９０】
画像印刷処理を開始すると、先ず初めにＣＰＵ１０１は、コントローラ１０２の印刷ボタンが押された時点でモニタ１５０に表示されていた画像の、元となったポリゴンデータを取得する（ステップＳ１００）。すなわち、前述したように、モニタ１５０に表示される画像は、オブジェクトを投影面Ｒに投影して得られた画像であり、オブジェクトを構成するポリゴンの頂点の座標値はポリゴンデータとして、メインメモリ１１０に記憶されている。そこで、ステップＳ１００では、コントローラ１０２の印刷ボタンが押された時点でモニタ１５０に表示されている各オブジェクトについて、オブジェクトのポリゴンデータを取得する。
【００９１】
次いで、取得したポリゴンデータについて、精密ポリゴンデータが記憶されているか否かを判断する（ステップＳ１０２）。ここで、精密ポリゴンデータとは、前述したゲーム画面表示処理で用いたポリゴンよりも小さなポリゴンによって、オブジェクトの三次元形状を表したデータである。図１６は、メインキャラクタである飛行艇ob1 の三次元的な形状が小さなポリゴンによって表現されている様子を概念的に示した説明図である。精密ポリゴンデータは、このようなポリゴンを構成する各頂点の三次元座標値によって、オブジェクトの表面形状を表現したデータである。
【００９２】
また、精密ポリゴンデータにも、図７および図９に示した通常のポリゴンデータと同様に、複数（本実施例では３つ）の基準点が設けられている。これら基準点は、精密ポリゴンデータの場合でも、通常のポリゴンデータの場合でも、オブジェクトに対する位置関係では同じ位置に設けられている。例えば、図７に示したように、飛行艇ob1 の通常のポリゴンデータでは、機体の先端と、左右の尾翼の後端とに、それぞれ基準点ｐ１、ｐ２、ｐ３が設けられている。これと同様に、飛行艇ob1 の精密ポリゴンデータでも、機体先端と、左右の尾翼の後端とに、それぞれ基準点ｐ１、ｐ２、ｐ３が設けられている。このように、精密ポリゴンデータが存在するオブジェクトについては、通常のポリゴンデータおよび精密ポリゴンデータのそれぞれについて、オブジェクトに対して同じ位置に基準点が設けられている。逆に言えば、精密ポリゴンデータが存在しないオブジェクトについては、オブジェクトデータに必ずしも基準点が設定されている必要はない。
【００９３】
図７と図１６とを比較すれば、ゲーム画面表示処理で用いたポリゴンデータと比べて、精密ポリゴンデータは小さなポリゴンが用いられていることが分かる。また、オブジェクト表面の曲率が大きい（曲率半径が小さい）部分ほど、小さなポリゴンによって構成されていることが分かる。このように、小さなポリゴンを用いれば、オブジェクトの形状をより正確に表現することができ、表面の曲率が大きな部分でも、見る者にゴツゴツした印象を与えることがない。
【００９４】
このような精密ポリゴンデータが存在するか否かは、精密ポリゴンデータの有無が予め設定されたテーブル（精密ポリゴンデータテーブル）を参照することによって判断することができる。図１７は、精密ポリゴンデータの有無を判断するために参照されるテーブルを概念的に示した説明図である。図示されているように、精密ポリゴンデータテーブルには、精密ポリゴンデータが存在するオブジェクトのオブジェクト番号と、ポリゴン数とが設定されている。従って、精密ポリゴンデータテーブルを参照してオブジェクト番号が設定されていれば、そのオブジェクトについては精密ポリゴンデータが存在すると判断することができる。逆に、精密ポリゴンデータテーブルにオブジェクト番号が設定されていなければ、そのオブジェクトについては、精密ポリゴンデータは存在しないと判断することができる。
【００９５】
尚、図８を用いて前述したオブジェクトテーブルには、全てのオブジェクトについて、固有のオブジェクト番号と、ポリゴンデータの先頭アドレスとが設定されていた。これに対して精密ポリゴンデータテーブルでは、複数のオブジェクト番号に対して同じ先頭アドレスが設定される場合がある。例えば、図４に示したように、オブジェクトob4 〜ob9 の６つのオブジェクトは何れも円盤を表しており、これら円盤は同じ形状となっている。このような場合、精密ポリゴンデータテーブルには、図１７に示すように、オブジェクト番号ob4 〜ob9 の６つのオブジェクトについては、同じ先頭アドレスおよびポリゴン数が設定される。このように、精密ポリゴンデータテーブルでは、異なるオブジェクト番号に対しても、同じ先頭アドレスおよびポリゴン数が設定されることがある理由については、後述する。
【００９６】
ステップＳ１０２において、精密ポリゴンデータが存在すると判断されたオブジェクトについては、ステップＳ１００で先に取得しておいたポリゴンデータを、基準点を一致させた状態で、精密ポリゴンデータに差し替える処理を行う（ステップＳ１０４）。以下、この処理の内容について詳しく説明する。先ず、精密ポリゴンデータテーブルに設定されている先頭アドレスに基づいて、精密ポリゴンデータを読み出し、メインメモリ１１０の連続するアドレスに記憶する。ここでは、メインメモリ１１０上のアドレス値Ａppd 以降の連続した領域に精密ポリゴンデータが記憶されたものとする。
【００９７】
次いで、メインメモリ１１０のアドレスＡppd 以降のメモリ領域に記憶した精密ポリゴンデータに対して、オブジェクトを移動あるいは回転させる座標変換を行うことにより、精密ポリゴンデータの基準点の座標を、ステップＳ１００で取得しておいた通常のポリゴンデータの基準点の座標に一致させる。このような座標変換は、図１７に示した精密ポリゴンデータテーブルの先頭アドレスで示されているデータに対して行うのではなく、この精密ポリゴンデータを読み出してメインメモリ１１０のアドレスＡppd 以降に展開したデータに対して実行する。そして、精密ポリゴンデータの基準点の座標を、通常のポリゴンデータの基準点の座標と一致させたら、メインメモリ１１０上で、この精密ポリゴンデータが記憶されているメモリ領域の先頭アドレスＡppd および精密ポリゴンデータを構成するポリゴン数によって、図８を用いて前述したオブジェクトテーブルの先頭アドレスおよびポリゴン数を書き換えてやる。このようにオブジェクトテーブルに設定されている先頭アドレスおよびポリゴン数を書き換えておけば、続いて実行するレンダリング処理および描画処理においては、通常のポリゴンデータではなく、精密ポリゴンデータを参照することになる。図１５のステップＳ１０４において、ポリゴンデータを精密ポリゴンデータで差し替える処理とは、具体的には、このようにオブジェクトテーブルに設定されている先頭アドレスおよびポリゴン数を、位置合わせした精密ポリゴンデータの先頭アドレスおよびポリゴン数に書き換える処理のことである。
【００９８】
ここで、図１７に示したように、精密ポリゴンデータテーブルでは、異なるオブジェクト番号に対しても、同じ先頭アドレスおよびポリゴン数が設定されることがある理由について説明する。上述したように、精密ポリゴンデータが存在するオブジェクトについては、精密ポリゴンデータを読み込んだ後、基準点の座標が通常のポリゴンデータの基準点の座標に一致するように、精密ポリゴンデータを移動あるいは回転させる。ここで、異なるオブジェクトは必ず異なる三次元座標値を持っているから、たとえ同じ精密ポリゴンデータを読み込んだ場合でも、移動あるいは回転後は、異なった精密ポリゴンデータとなっている。従って、オブジェクト毎にメインメモリ１１０の異なる領域でこうした操作を行っておけば、元の精密ポリゴンデータは同じデータを使用することが可能であり、このため、精密ポリゴンデータテーブルでは、同じ形状のオブジェクトについては、同じ先頭アドレスおよびポリゴン数が設定されているのである。
【００９９】
ステップＳ１０４の処理では、精密ポリゴンデータが存在するオブジェクトについて、このようにポリゴンデータを精密ポリゴンデータで差し替える処理を行う。一方、精密ポリゴンデータの存在しないオブジェクトについては、このような処理はスキップすればよい。
【０１００】
次いで、画像の撮影条件を設定する処理を開始する（ステップＳ１０６）。撮影条件の設定は、ゲーム機１００の操作者が、モニタ１５０に表示された画面を確認しながら行うことができる。図１８は、画像の撮影条件を設定するための画面が、モニタ１５０に表示されている様子を例示した説明図である。図示されているように、撮影条件を設定する画面のほぼ中央には、印刷ボタンを押したときにモニタ１５０に表示されていた画面を表示するモニタ領域１５１が設けられている。また、モニタ領域１５１の周辺には、焦点距離や、絞り、焦点を合わせる位置などを設定するボタンが設けられている。本実施例のゲーム機１００では、単にモニタ１５０に表示されている画面を印刷するのでなく、これらの項目を設定することで、あたかも仮想的なカメラを操作して写真を撮影しているかのようにして、モニタ１５０上の画像を印刷することが可能となっている。
【０１０１】
焦点距離の設定は、モニタ領域１５１の右側に設けられたツマミ１５３を上下に動かすことで、望遠から広角までの焦点距離を選択することによって行う。また、絞りの設定は、モニタ領域１５１の右下に設けられたツマミ１５４を上下に動かすことで、開放側から絞り側までの絞り値を選択することで行う。また、焦点を合わせる位置の設定は、コントローラ１０２の十字カーソルを操作しながら、モニタ領域１５１に表示されているカーソル１５２を、焦点を合わせたい位置まで移動した後、設定画面上の「焦点位置設定」と表示されたボタンを押すことによって設定することができる。こうした設定した撮影条件による効果は、モニタ領域１５１に表示されている画像に反映されるので、効果を確認しながら撮影条件を設定することができる。そして、所望の撮影条件が決まったら、設定画面上の「ＯＫ」と表示されたボタンを押すことによって、設定した撮影条件を確定することができる。図１５に示した画像印刷処理のステップＳ１０６では、以上のようにして、各種の撮影条件を設定する処理を行う。
【０１０２】
撮影条件の設定に続いて、レンダリング処理および描画処理を開始する（ステップＳ１０８、およびステップＳ１１０）。前述したようにレンダリング処理とは、各オブジェクトのポリゴンデータから二次元画像のデータを生成する処理である。かかる処理は、図１１を用いて前述したように、視点Ｑと各オブジェクトとの間に設定した投影面Ｒへの、各オブジェクトの投影像を算出することによって行うことができる。また、描画処理とは、レンダリング処理によって生成された投影像から、画素毎に階調値が設定された画像データを生成する処理である。図１０を用いて前述したゲーム画面表示処理と同様に、レンダリング処理は、ＣＰＵ１０１の制御の下でＧＴＥ１１２がオブジェクトテーブルを参照しながら実行し、得られた二次元画像のデータはメインメモリ１１０に記憶される。撮影条件設定処理で設定された内容は、レンダリング処理における視点Ｑおよび投影面Ｒの設定に反映される。また、視点Ｑに対して遠方あるいは近くにあるオブジェクトに対しては、絞りの設定に応じて、投影像をぼやかすようなフィルタを施すなどの特殊な操作も行われる。
【０１０３】
続いて行われる描画処理は、ＣＰＵ１０１が出力した描画命令を受けてＧＰＵ１１６が実行し、得られた画像データはフレームバッファ１１４に記憶される。これらレンダリング処理および描画処理の詳細な内容については、ここでは説明を省略する。但し、精密ポリゴンデータが存在するオブジェクトについては、前述したステップＳ１０４においてオブジェクトテーブル（図８参照）が書き換えられていることから、コントローラ１０２の印刷ボタンを押したときにモニタ１５０に表示されていた通常のポリゴンデータではなく、精密ポリゴンデータに対してレンダリング処理および描画処理が実行される点が異なっている。
【０１０４】
ゲーム機１００のＣＰＵ１０１は、レンダリング処理（ステップＳ１０８）および描画処理（ステップＳ１１０）に続いて、印刷条件設定処理を開始する（ステップＳ１１２）。印刷条件設定処理も、上述したステップＳ１０６の撮影条件設定処理と同様に、ゲーム機１００の操作者が、モニタ１５０に表示された画面を確認しながら行うことができる。図１９は、画像の印刷条件を設定するための画面が、モニタ１５０に表示されている様子を例示した説明図である。図示されているように、本実施例のゲーム機１００では、印刷条件として、印刷に用いる用紙サイズ、用紙種類、および印刷に際しての印刷モードの３つの項目を設定することが可能となっている。用紙サイズ及び用紙種類の設定は、コントローラ１０２の十字カーソルを操作することにより、画面上に表示されたカーソル１５２を用いて用紙サイズを選択することによって行う。また、印刷モードについては、画面に表示されたツマミ１５８を「きれい」から「速い」までの間で動かすことによって設定することができる。また、これらの条件に加えて、印刷枚数や、いわゆる縁なし印刷を行うか否か、といった項目を設定可能としても良い。以上のようにして、印刷条件を設定したら、設定画面上の「ＯＫ」と表示されたボタンを押すことによって、設定した印刷条件を確定する。
【０１０５】
印刷条件を設定したら、ゲーム機１００のＣＰＵ１０１は、フレームバッファ１１４に記憶されている画像データから印刷データを生成して、カラープリンタ２００に出力する処理（印刷データ出力処理）を開始する（ステップＳ２００）。
【０１０６】
図２０は、印刷データ出力処理の流れを示したフローチャートである。印刷データ出力処理を開始すると、ＣＰＵ１０１は先ず初めに、解像度変換処理を開始する（ステップＳ２０２）。解像度変換処理とは、フレームバッファ１１４に記憶されている画像データの解像度を、カラープリンタ２００が画像を印刷しようとする解像度（印刷解像度）に変換する処理である。また、印刷解像度は、モニタ１５０の画面を構成している画素数と、印刷しようとする画像の大きさ、すなわち前述した印刷条件設定処理（図１５のステップＳ１１２）で設定した印刷用紙のサイズによって決定される。
【０１０７】
そして、画像データの解像度よりも印刷解像度の方が高い場合は、補間演算を行って画素間に新たな画像データを生成することにより解像度を増加させる。逆に、画像データの解像度の方が印刷解像度よりも高い場合は、読み込んだ画像データを一定の比率で間引くことによって解像度を低下させる。解像度変換処理では、フレームバッファ１１４上の画像データに対して、このような操作を行うことにより、描画処理によって生成した画像データの解像度を印刷解像度に変換する。
【０１０８】
こうして画像データの解像度を印刷解像度に変換したら、今度は、色変換処理を行う（ステップＳ２０４）。色変換処理とは、Ｒ，Ｇ，Ｂの階調値の組合せによって表現されているＲＧＢカラー画像データを、印刷のために使用される各色の階調値の組合せによって表現された画像データに変換する処理である。前述したように、本実施例のゲーム機１００では、画素毎にＲ，Ｇ，Ｂ各色の階調値が設定された画像データを生成しているのに対して、カラープリンタ２００は、図２に示した様に、Ｃ，Ｍ，Ｙ，Ｋの４色のインクを用いて画像を印刷する。そこで、ＲＧＢ各色によって表現された画像データを、Ｃ，Ｍ，Ｙ，Ｋの各色の階調値によって表現されたデータに変換する処理（色変換処理）を行うのである。
【０１０９】
色変換処理は、色変換テーブル（ＬＵＴ）を参照することで、迅速に行うことができる。図２１は、色変換処理のために参照されるＬＵＴを概念的に示した説明図である。ＬＵＴとは、次のように考えれば、三次元の数表の一種と考えることができる。先ず、図２１に示されているように、直交する３つの軸にＲ軸、Ｇ軸、Ｂ軸を取って色空間を考える。すると、全てのＲＧＢ画像データは、必ず色空間内の座標点に対応付けて表示することができる。このことから、Ｒ軸、Ｇ軸、Ｂ軸のそれぞれを細分して色空間内に多数の格子点を設定してやれば、それぞれの格子点はＲＧＢの画像データを表していると考えることができ、ＲＧＢの画像データに対応するＣ，Ｍ，Ｙ，Ｋ各色の階調値を、各格子点に対応付けてやることができる。ＬＵＴは、こうして色空間内に設けた格子点に、Ｃ，Ｍ，Ｙ，Ｋ各色の階調値を対応付けて記憶した３次元の数表の様なものである。ＬＵＴに記憶されているＲＧＢの画像データとＣ，Ｍ，Ｙ，Ｋ各色の階調データとの対応関係に基づいて色変換処理を行えば、ＲＧＢ各色の階調値によって表現された画像データを、Ｃ，Ｍ，Ｙ，Ｋ各色の階調データに迅速に変換することが可能となる。
【０１１０】
また、印刷用紙が違えば用紙の地色も違うし、インクの発色も異なっている。更には、インクの滲み方も印刷用紙の種類によって異なっており、滲み方の違いは印刷された画像の色合いに影響を与える。このことから、高画質な画像を印刷するためには、印刷用紙の種類に応じて適切なＬＵＴを使い分けることが好ましい。そこで、ステップＳ２０４では、前述した印刷条件設定処理（図１５のステップＳ１１２）で設定された印刷用紙の種類に応じて、予め定められたＬＵＴを使い分けながら、色変換処理を行う。
【０１１１】
以上のようにして色変換処理を行ったら、ゲーム機１００のＣＰＵ１０１は、ハーフトーン処理を開始する（ステップＳ２０６）。ハーフトーン処理とは、次のような処理である。色変換処理によって得られた画像データは、データ長を１バイトとすると、画素毎に、階調値０から階調値２５５までの値を取り得る階調データである。これに対してカラープリンタ２００はドットを形成することによって画像を表示しているから、それぞれの画素については「ドットを形成する」か「ドットを形成しない」かのいずれかの状態しか取り得ない。このためカラープリンタ２００では、画素毎の階調値を変化させる代わりに、所定領域内で形成されるドットの密度を変化させることによって中間階調を表現している。ハーフトーン処理とは、画像データの階調値に応じて適切な密度でドットが発生するように、画素毎にドット形成の有無を判断する処理である。
【０１１２】
階調値に応じた適切な密度でドットを発生させる手法としては、誤差拡散法やディザ法などの種々の手法を適用することができる。誤差拡散法は、ある画素についてドットの形成有無を判断したことでその画素に発生する階調表現の誤差を、周辺の画素に拡散するとともに、周囲から拡散されてきた誤差を解消するように、各画素についてのドット形成の有無を判断していく手法である。発生した誤差を周辺の各画素に拡散させる割合は、誤差拡散マトリックスに予め設定されている。また、ディザ法は、ディザマトリックスに設定されている閾値と画像データの階調値とを画素毎に比較して、画像データの方が大きい画素にはドットを形成すると判断し、逆に閾値の方が大きい画素についてはドットを形成しないと判断することで、各画素についてドット形成の有無を判断していく手法である。本実施例の印刷データ出力処理では、いずれの手法を用いることもできるが、ここではディザ法と呼ばれる手法を用いてハーフトーン処理を行うものとする。
【０１１３】
図２２は、ディザ法で参照される一般的なディザマトリックスの一部を拡大して例示した説明図である。図示したマトリックスには、縦横それぞれ６４画素、合計４０９６個の画素に、階調値０〜２５５の範囲から万遍なく選択された閾値が設定されている。ここで、閾値の階調値が０〜２５５の範囲から選択されているのは、本実施例では画像データが１バイトデータであり、画素に設定される階調値が０〜２５５の値を取り得ることに対応するものである。尚、ディザマトリックスの大きさは、図２２に例示したように縦横６４画素分に限られるものではなく、縦と横の画素数が異なるものも含めて種々の大きさとすることができる。
【０１１４】
図２３は、ディザマトリックスを参照しながら、画素毎にドット形成の有無を判断している様子を概念的に示した説明図である。ドット形成有無の判断に際しては、先ず、判断の対象として着目している画素（着目画素）についての画像データの階調値と、ディザマトリックス中の対応する位置に記憶されている閾値とを比較する。図中に示した細い破線の矢印は、着目画素の階調値を、ディザマトリックス中の対応する位置に記憶されている閾値と比較していることを模式的に表したものである。そして、ディザマトリックスの閾値よりも着目画素の階調値の方が大きい場合には、その画素にはドットを形成するものと判断する。逆に、ディザマトリックスの閾値の方が大きい場合には、その画素にはドットを形成しないものと判断する。
【０１１５】
図２３に示した例では、画像データの左上隅にある画素の画像データは階調値１８０であり、ディザマトリックス上でこの画素に対応する位置に記憶されている閾値は１である。従って、左上隅の画素については、画像データの階調値１８０の方がディザマトリックスの閾値１よりも大きいから、この画素にはドットを形成すると判断する。図２３中に実線で示した矢印は、この画素にはドットを形成すると判断して、判断結果をメモリに書き込んでいる様子を模式的に表したものである。一方、この画素の右隣の画素については、画像データの階調値は１３０、ディザマトリックスの閾値は１７７であり、閾値の方が大きいので、この画素についてはドットを形成しないものと判断する。ディザ法では、このようにディザマトリックスを参照しながらドットを発生させる。
【０１１６】
図２０に示した印刷データ出力処理のステップＳ２０６では、色変換処理によって変換されたＣ，Ｍ，Ｙ，Ｋ各色の階調値毎に、以上のようにしてドット形成の有無を判断する処理を行う。
【０１１７】
以上のようにしてハーフトーン処理を終了すると、ゲーム機１００のＣＰＵ１０１は、インターレース処理を開始する（ステップＳ２０８）。インターレース処理とは、ドットの形成有無による表現形式に変換された画像データを、ドットが実際に印刷用紙上に形成される順序を考慮しながら、カラープリンタ２００に転送する順序に並べ替える処理である。ゲーム機１００のＣＰＵ１０１は、インターレース処理を行って画像データを並べ替えた後、最終的に得られたデータを、ＧＰＵ１１６からカラープリンタ２００に印刷データとして出力する（ステップＳ２１０）。そして、全ての印刷データをカラープリンタ２００に出力したら、図２０に示す印刷データ出力処理を終了して、図１５の画像印刷処理に復帰する。
【０１１８】
画像印刷処理では、印刷データ出力処理から復帰すると、ゲーム復帰処理を行う（ステップＳ１１４）。ゲーム復帰処理は、図１５に示した画像印刷処理を終了して、ゲームを再開するための処理である。すなわち、上述した画像印刷処理は、前述したようにコントローラ１０２の印刷ボタンが押されると、ゲーム機１００のＣＰＵ１０１が割り込みを発生させて、進行中のゲームを一旦、中断した状態で開始される。そこで、画像印刷処理の終了に先立って、ＣＰＵ１０１は、プログラムカウンタや各種データを、ゲームの中断前の状態に復帰させて、ゲームを再開するための準備を行うのである。前述したように、精密ポリゴンデータが存在するオブジェクトについては、画像印刷処理の中でオブジェクトテーブルの設定値も書き換えられているので、これらについても、ゲーム復帰処理で元の設定値に戻されることになる。
【０１１９】
こうしてゲーム復帰処理を終了したら（ステップＳ１１４）、図１５に示した画像印刷処理を終了する。プログラムカウンタを始めとする各種の変数およびデータは、ゲーム中断前の状態に戻っているので、中断したところからゲームを再開することが可能となる。
【０１２０】
一方、カラープリンタ２００は、このようにしてＧＰＵ１１６から供給された印刷データに従って、印刷用紙上にドットを形成することにより画像を印刷する。すなわち、図２を用いて前述したように、キャリッジモータ２３０および紙送りモータ２３５を駆動することによってキャリッジ２４０の主走査および副走査を行い、これらの動きに合わせて印字ヘッド２４１を駆動してインク滴を吐出することによりインクドットを形成する。その結果、モニタ１５０の画面に表示されているものと、同じ場面の印刷画像が得られることになる。
【０１２１】
上述したように、画像印刷処理では精密ポリゴンデータから印刷データを生成しているため、印刷データではオブジェクトの表面が、曲面部分を含めて滑らかな表面として表現されている。従って、このような印刷データに基づいて得られた印刷画像では、オブジェクトの表面がゴツゴツすることがなく、あたかも実在する対象を写真で撮影したかのような印刷画像を得ることができる。
【０１２２】
もちろん、初めから精密ポリゴンデータのような細かなポリゴンを用いてオブジェクトを構成しておけば、モニタ１５０に表示される画面をそのまま印刷した場合でも、写真で撮影したかのような画像を得ることができる。しかし、これではオブジェクトを構成するポリゴン数が増加するため、ゲーム中の画像を迅速に表示することができなくなってしまう。これに対して、ゲーム中は、大きめのポリゴンから生成されたポリゴンデータを用いてモニタ１５０に画像を表示しておき、画面を印刷する際には、ゲームを進行させるために使用しているポリゴンデータの内容に基づいて、新たに精密ポリゴンデータを生成しているために、ゲーム中は画像を迅速に表示しつつ、写真のような高画質な画像を印刷することが可能となる。また、この場合でも、画像を印刷する場合には、多くのポリゴンを処理する必要があるため、モニタ１５０に表示する場合のように迅速に処理することは困難となる。しかし、ゲームを中断して行う画像印刷処理では、十分な時間をかけて印刷データを生成することができるので、精密ポリゴンデータのポリゴン数が多くなっても事実上の弊害が生じることはない。
【０１２３】
更に、印刷データを生成するために通常のポリゴンデータを精密ポリゴンデータに置き換えるに際しては、ゲーム中断時点で通常のポリゴンデータの基準点があった座標値と、精密ポリゴンデータの基準点の座標値とが重なるように、精密ポリゴンデータを位置決めしてから置き換えている。このため、コントローラ１０２の印刷ボタンが押されたときにモニタ１５０に表示されていた画像とは、実際には異なるポリゴンデータが用いられているにも拘わらず、モニタ１５０に表示されていた画像がそのまま印刷されたかのように、高画質な画像を出力することが可能となる。
【０１２４】
上述した第１実施例のゲーム機１００には、種々の変形例が存在している。以下では、これら変形例について簡単に説明する。
【０１２５】
Ｃ−１．第１の変形例  ：
上述した第１実施例の画像印刷処理では、撮影条件を設定した後、レンダリング処理および描画処理を行い、その後に、印刷条件を設定するものとした。しかし、撮影条件および印刷条件を一度に設定してから、レンダリング処理に続く一連の処理を行うものとしても良い。また、この場合、撮影条件の一部の項目と印刷条件とを連動させることとしても良い。例えば、撮影条件として、図１８に示したように細かな項目を設定可能な撮影モード（プロモード）と、モニタ１５０に表示された画面をそのまま撮影する様なモード（アマチュアモード）とを選択可能としておき、撮影条件としてプロモードが選択された場合は、印刷用紙は「専用紙」が、そして印刷モードは「きれい」が、それぞれ自動的に標準として選択される様にしても良い。
【０１２６】
Ｃ−２．第２の変形例  ：
上述した第１実施例の画像印刷処理では、ゲーム中にモニタ１５０に表示された画面を印刷するものとして説明した。この場合は、ゲーム中の任意の画面を印刷することが可能である。しかし、任意の画面ではなく、ゲーム中に予め設定しておいた舞台、あるいはゲームとは別に撮影用に設定した舞台の中でだけ、画像を印刷可能としても良い。ゲーム中の任意の画面を印刷可能とした場合は、種々のオブジェクトが印刷される可能性があるので、これらオブジェクトについて精密ポリゴンデータを用意しておく必要がある。これに対して、ゲーム中に予め設定しておいた舞台もしくは撮影用の専用の舞台でのみ、画像を印刷可能としておけば、用意すべき精密ポリゴンデータを少なくすることができるという利点が得られる。
【０１２７】
Ｃ−３．第３の変形例  ：
以上の説明では、ゲームの画面を印刷するものとして説明したが、ゲームの操作者が用意した画像を組み込んだ状態で印刷することとしても良い。例えば、人物の顔を写した画像データを用意しておき、ゲームに登場するキャラクタの顔の部分に嵌め込んだ状態で、画像を印刷することとしても良い。図２４は、飛行艇ob1 を操縦するキャラクタの顔の部分に、別途用意した顔を嵌め込む様子を示した説明図である。図中で斜線を付した部分が、画像データを嵌め込む部分である。嵌め込む画像データは、例えば、デジタルカメラで撮影したものを使用することもできるし、あるいは写真からスキャナで取り込んだデータを用いることもできる。こうして用意された画像データは、二次元的な画像データである。従って、前述した描画処理によってフレームバッファ１１４上に展開された画像データに対して、該当する部分のデータを置き換えてやればよい。
【０１２８】
Ｃ−４．第４の変形例  ：
上述した実施例では、精密ポリゴンデータに設定された基準点の三次元座標と、通常のポリゴンデータに設定された基準点の三次元座標とを一致させた後、通常のポリゴンデータを精密ポリゴンデータに差し替えるものとして説明した。しかし、基準点の三次元座標を一致させるのではなく、投影面Ｒに投影された基準点を一致させることとしてもよい。すなわち、通常のポリゴンデータの基準点を投影面Ｒに投影した座標点（投影点）を予め求めておく。次いで、精密ポリゴンデータの基準点を投影して得られた投影点を求める。そして、精密ポリゴンデータの基準点の投影点が、通常のポリゴンデータの基準点の投影点と一致するように、精密ポリゴンデータを三次元空間内で移動あるいは回転させる。こうして、２つのポリゴンデータの基準点の投影点が一致させた後、通常のポリゴンデータを精密ポリゴンデータに差し替えることとしてもよい。
【０１２９】
このようにすれば、基準点の三次元座標を一致させるのではなく、投影点の二次元座標を一致させればよいので、通常のポリゴンデータと精密ポリゴンデータとを容易に位置合わせすることができる。その結果、容易に精密ポリゴンデータを差し替えることが可能となる。
【０１３０】
Ｄ．第２実施例  ：
以上に説明した第１実施例の画像印刷処理では、精密ポリゴンデータを予め記憶しておき、画像の印刷に際しては、通常のポリゴンデータを精密ポリゴンデータに置き換えた後、精密ポリゴンデータを含む各オブジェクトに対して、レンダリング処理や描画処理などの一連の処理を行って画像を印刷した。もっとも、精密ポリゴンデータを予め用意しておくのではなく、通常のポリゴンデータから精密ポリゴンデータを生成し、このデータに対して、レンダリング処理を始めとする一連の処理を行うこととしても良い。以下では、このような第２実施例の画像印刷処理について説明する。
【０１３１】
図２５は、第２実施例の画像印刷処理の流れを示すフローチャートである。かかる処理は、前述した第１実施例の画像印刷処理に対して、通常のポリゴンデータから精密ポリゴンデータを生成している点が大きく異なっており、他の部分の処理は、第１実施例の処理とほぼ同様である。以下では、こうした相違点を中心として、第２実施例の画像印刷処理について説明する。
【０１３２】
第２実施例の画像印刷処理においても、前述した第１実施例と同様に、ゲーム機１００のＣＰＵ１０１は、コントローラ１０２に設けられた所定の印刷ボタンが押されたことを検出すると、割り込みを発生させて画像印刷処理を開始する。そして、先ず初めに、コントローラ１０２の印刷ボタンが押された時点でモニタ１５０に表示されていた画像の、元となったポリゴンデータを取得する（ステップＳ３００）。
【０１３３】
次いで、ポリゴンデータを取得したオブジェクトの中から、精密ポリゴンデータを生成するオブジェクトを選択する（ステップＳ３０２）。オブジェクトの選択は、次のようにして行う。
【０１３４】
前述したように、オブジェクトを構成するポリゴンの大きさは、オブジェクトの表面を正確に表現することに対する要求と、図１０に示したゲーム画面表示処理を迅速に実行することに対する要求との兼ね合いによって決定されている。このため、基本的には、オブジェクトによらず、ポリゴンはほぼ同じ大きさとなっている。しかし、図１１に示したように、レンダリング処理では、オブジェクトを構成するポリゴンの投影像を求めて二次元画像を生成しており、投影像を構成するポリゴンの大きさは、投影面Ｒから遠方にあるオブジェクトほど小さくなる。従って、オブジェクトを構成するポリゴンの大きさが同じであっても、投影像を構成するポリゴンの大きさは、遠方にあるオブジェクトについては小さくなり、近くのオブジェクトについては大きくなる。そこで、第２実施例の画像印刷処理では、投影像を構成するポリゴンが所定値以上の大きさのオブジェクトについては、精密ポリゴンデータを生成することにして、そうでないオブジェクトについては通常のポリゴンデータのまま、続く一連の処理を行う。図２５のステップＳ３０２では、投影像を構成するポリゴンが所定値以上の大きさのオブジェクトを、精密ポリゴンデータを生成するオブジェクトとして選択する処理を行うのである。
【０１３５】
次いで、選択したオブジェクトについて、ステップＳ３００で取得しておいた通常のポリゴンデータから、精密ポリゴンデータを生成する処理を開始する（ステップＳ３０４）。図２６は、通常のポリゴンデータから精密ポリゴンデータを生成する原理を示した説明図である。図中に太い実線で示した三角形は、それぞれが通常の大きさのポリゴンである。精密ポリゴンデータの生成にあたっては、ポリゴンを構成する各辺の中点を結んでポリゴンを分割することにより、小さなポリゴンを生成する。図２６に示した三角形ＡＢＣのポリゴンについて説明すると、辺ＡＢの中点ａｂと、辺ＢＣの中点ｂｃと、辺ＡＣの中点ａｃとをそれぞれ結ぶことにより、三角形ＡＢＣをより小さな４つの三角形に分割することができる。隣接するポリゴンＢＣＤについても同様にして、辺ＢＣの中点ｂｃと、辺ＣＤの中点ｃｄと、辺ＢＤの中点ｂｄとをそれぞれ結べば、三角形ＢＣＤを４つの三角形に分割することができる。このような操作を繰り返していけば、オブジェクトを構成する全てのポリゴンを小さなポリゴンに分割することができる。
【０１３６】
もちろん、各辺の中点ではなく、辺上に任意に取った点を結ぶことによっても、三角形を４つの小さな三角形に分割することができる。しかし、各辺の中点同士を結んで分割してやれば、分割して生成した三角形をほぼ同じ大きさとすることができる。すなわち、比較的簡単な操作により、ポリゴンを適切に分割することが可能である。
【０１３７】
また、こうして生成した小さなポリゴンのテクスチャ番号は、元になったポリゴンのテクスチャ番号と、隣接するポリゴンのテクスチャ番号とに基づいて決定する。一例として、図２６に示した三角形ＢＣＤのポリゴンを用いて説明する。中央に生成された小さなポリゴンｃ１については、元になったポリゴンのテクスチャ番号をそのまま付与しておく。一方、隣接する２つのポリゴン（三角形ＡＢＣ、三角形ＣＤＥ）に挟まれた小さなポリゴンｃ２については、隣接する２つのポリゴンのテクスチャと、元になったポリゴン（三角形ＢＣＤ）のテクスチャとの中間的なテクスチャとなるテクスチャ番号を設定する。同様に、分割して生成した小さなポリゴンｃ３については、隣接するポリゴン（三角形ＡＢＣ）と、元になったポリゴン（三角形ＢＣＤ）との中間的なテクスチャとなるテクスチャ番号を設定してやればよい。以上のようにして、ポリゴンを小さなポリゴンに分割し、分割して生成したポリゴンの頂点を検出するとともに、各ポリゴンのテクスチャ番号を設定してやれば、通常のポリゴンデータから精密ポリゴンデータを生成することができる。
【０１３８】
尚、以上の説明では、中点同士を結んでポリゴンを分割するものとしたが、頂点と、これに対抗する辺（対辺）の中点とを結んでポリゴンを分割することとしても良い。図２７（ａ）は、このようにしてポリゴンを分割している様子を示した説明図である。図示されているように、このようにしてポリゴンを分割してやれば、三角形のポリゴンを６つの小さな三角形にポリゴンに分割することができる。また、頂点と、対辺の中点とを結んで分割しておけば、分割して生成されたポリゴンの大きさを、ほぼ同じにすることができる。また、ポリゴンが四角形の場合は、図２７（ｂ）に示すように、対抗する辺の中点同士を結んでポリゴンを分割してやればよい。
【０１３９】
図２５に示した第２実施例のＳ３０４では、選択しておいたオブジェクトのポリゴンを、このようにして分割することによって精密ポリゴンデータを生成し、次いで、これらオブジェクトについて、オブジェクトテーブルに設定されている先頭アドレスおよびポリゴン数を書き換える処理を行う。
【０１４０】
尚、第２実施例では、コントローラ１０２の印刷ボタンが押されたときのポリゴンデータを取得して（図２５のステップＳ３００）、このポリゴンデータから精密ポリゴンデータを生成している。すなわち、生成した精密ポリゴンデータによって表現されるオブジェクトは、取得したポリゴンデータによって表現されるオブジェクトと、三次元空間内に置かれた位置および向きが一致している。従って、前述した第１実施例の画像印刷処理のように、基準点を用いて、通常のポリゴンデータと精密ポリゴンデータとの位置合わせを行う必要がなく、ポリゴンデータに基準点を設定しておく必要もない。
【０１４１】
以上のようにして精密ポリゴンデータを生成したら、以降は、前述した第１実施例の画像印刷処理と同様にして画像を印刷する。以下、簡単に説明する。
【０１４２】
先ず、画像の撮影条件を設定する処理を開始する（ステップＳ３０６）。撮影条件は、モニタ１５０に表示された画面（図１８を参照）を確認しながら行うことができる。次いで、前述したレンダリング処理および描画処理を行う（ステップＳ３０８、Ｓ３１０）。レンダリング処理では、オブジェクトテーブルを参照してＣＰＵ１０１が、ポリゴンデータあるいは精密ポリゴンデータが格納されている先頭アドレスおよびポリゴン数を、ＧＴＥ１１２に供給し、これを受けて、ＧＴＥ１１２がレンダリング処理を実行して、得られた結果をメインメモリ１１０に記憶する。次いで、ＣＰＵ１０１がメインメモリ１１０を参照しながらＧＰＵ１１６に対して描画命令を出力する。すると、ＧＰＵ１１６は、レンダリング処理によって生成された二次元画像を、画素毎に階調データが設定された画像データに変換して、フレームバッファ１１４に記憶する。
【０１４３】
描画処理に続いて、印刷条件を設定した後（ステップＳ３１２）、前述した印刷データ出力処理を開始する（Ｓ２００）。かかる処理の内容は、前述した第１実施例において行われる印刷データ出力処理と全く同様であるため、ここでは説明を省略する。
【０１４４】
第２実施例の画像印刷処理においても、印刷データ出力処理から復帰すると、ゲーム復帰処理を行う（ステップＳ３１４）。すなわち、第２実施例の画像印刷処理も、進行中のゲームを一旦、中断させて開始されるので、画像印刷処理を終了させる前に、プログラムカウンタや各種データをゲームの中断前の状態に復帰させて、ゲームを再開するための準備を行うのである。そして、ゲーム復帰処理を終了したら、図２５に示した第２実施例の画像印刷処理を終了する。
【０１４５】
以上に説明した第２実施例の画像印刷処理では、モニタ１５０に表示された画像を印刷するに際して、オブジェクトを構成するポリゴンを細かなポリゴンに分割して精密ポリゴンデータを生成する。もちろん、ポリゴンを細かなポリゴンに分割するだけでは、オブジェクト形状の表現精度が向上するわけではないが、このようにして細かなポリゴンに分割しておけば、各ポリゴンに適切なテクスチャを付与することで、オブジェクト表面がゴツゴツした印象を大幅に緩和することができる。このため、カラープリンタ２００から画像を出力した場合でも、実在する対象を写真で撮影したかのような印刷画像を得ることができる。
【０１４６】
また、上述した第２実施例の画像印刷処理では、取得したポリゴンデータから精密ポリゴンデータを生成するために、前述した第１実施例の画像印刷処理のように、取得したポリゴンデータと精密ポリゴンデータとを、基準点を用いて位置合わせする処理が不要である。このため、メモリ容量や処理能力が比較的小さなゲーム機１００を用いた場合でも、迅速に画像を印刷することが可能となる。
【０１４７】
Ｄ−１．第２実施例の変形例  ：
上述した第２実施例のゲーム機１００についても、変形例が存在している。以下では、この変形例について簡単に説明する。
【０１４８】
図２８は、第２実施例の変形例の画像印刷処理の流れを示すフローチャートである。上述した第２実施例の画像印刷処理では、オブジェクトを構成するポリゴンを分割して精密ポリゴンデータを生成し、このポリゴンデータに対してレンダリング処理を行っていた。これに対して、以下に説明する変形例の画像印刷処理では、レンダリング処理を行った後に、投影像を構成するポリゴンを分割する点が大きく異なっている。以下では、図２８のフローチャートに従って、第２実施例の変形例の画像印刷処理について説明する。
【０１４９】
変形例の画像印刷処理においても、上述した第２実施例の画像印刷処理と同様に、処理を開始すると、コントローラ１０２の印刷ボタンが押された時点でモニタ１５０に表示されていた画像の、元となったポリゴンデータを取得する（ステップＳ３５０）。
【０１５０】
変形例の画像印刷処理では、続いて、モニタ１５０に表示された画面（図１８を参照）を確認しながら、画像の撮影条件を設定する（ステップＳ３５２）。撮影条件を設定したら、レンダリング処理を開始する（ステップＳ３５４）。すなわち、ステップＳ３５０で取得したポリゴンデータから、撮影条件を考慮して設定された投影面Ｒへの投影像を算出する。
【０１５１】
変形例の画像印刷処理では、レンダリング処理を終了すると、レンダリング処理によって二次元の投影像として表現されたオブジェクトの中から、構成するポリゴンが大きなオブジェクトを選択する（ステップＳ３５６）。すなわち、図１１を用いて前述したように、投影像を構成するポリゴンの大きさは、視点Ｑおよび投影面Ｒから遠方にあるオブジェクトほど小さくなり、逆に、近くにあるオブジェクトほど大きくなる。そこで、近くにあって、投影像を構成するポリゴンが、所定値以上に大きなオブジェクトを選択するのである。
【０１５２】
次いで、選択したオブジェクトの投影像を構成するポリゴンを、複数のポリゴンに分割する処理を行う（ステップＳ３５８）。かかる処理は、三次元で行うか二次元で行うかの違いはあるものの、前述した第２実施例の画像印刷処理中で精密ポリゴンデータを生成する処理（図２５のステップＳ３０４）と、ほぼ同様である。すなわち、前述した第２実施例の画像印刷処理では、図２６に示したように、三次元のオブジェクトを構成するポリゴンについて、ポリゴンを構成する各辺の中点を結ぶことによってポリゴンを分割した。これに対して、第２実施例の変形例のステップＳ３５８の処理では、二次元の投影像を構成するポリゴンについて、ポリゴンを構成する各辺の中点を結ぶことで、１つのポリゴンを４つの小さなポリゴンに分割する。こうすれば、比較的簡単な操作によって、ほぼ等しい大きさのポリゴンに分割することができるので、適切に分割することができる。また、こうして得られた小さなポリゴンのテクスチャ番号についても、前述した第２実施例の画像印刷処理と同様にして決定することができる。すなわち、隣接するポリゴンのテクスチャと、元になったポリゴンのテクスチャとの中間的なテクスチャとなるように、テクスチャ番号を決定すればよい。このようにして、ポリゴンが分割された投影像のデータは、メインメモリ１１０に記憶される。
【０１５３】
以上のようにしてポリゴンを分割したら、今度は描画処理を開始する（ステップＳ３６０）。描画処理の内容は、前述した第２実施例の画像印刷処理と同様である。簡単に説明すると、ゲーム機１００のＣＰＵ１０１が、メインメモリ１１０を参照しながらＧＰＵ１１６に対して描画命令を出力する。すると、ＧＰＵ１１６は、ポリゴンが分割された投影像の二次元画像を、画素毎に階調データが設定された画像データに変換して、フレームバッファ１１４に記憶する。
【０１５４】
次いで、印刷条件を設定した後（ステップＳ３６２）、フレームバッファ１１４に記憶されている画像データを印刷データに変換して、カラープリンタ２００に出力する処理（印刷データ出力処理）を開始する（Ｓ２００）。これら処理の内容も、上述した第２実施例と全く同様であるため、ここでは説明を省略する。そして、印刷データ出力処理から復帰すると、第２実施例と同様にゲーム復帰処理を行った後（ステップＳ３６４）、図２８に示した第２実施例の変形例の画像印刷処理を終了する。
【０１５５】
以上に説明した第２実施例の変形例の画像印刷処理においても、１つのポリゴンを複数のポリゴンに分割し、分割して生成した小さなポリゴンに適切なテクスチャ番号を付与することで、モニタ１５０の画面を、写真で撮影したかのような高画質な画像として印刷することが可能となる。
【０１５６】
Ｅ．第３実施例  ：
以上に説明した各種実施例では、ゲーム機１００内で画像データから印刷データを生成し、生成した印刷データをカラープリンタ２００に供給することによって画像を印刷した。もっとも、ゲーム機１００のＣＰＵ１０１が出力する描画命令を、そのままカラープリンタ２００に供給して、カラープリンタ２００内で印刷データを生成して画像を印刷することとしてもよい。以下では、こうした第３実施例について説明する。
【０１５７】
図２９は、第３実施例のゲーム機５００の構造を示した説明図である。上述した各種実施例のゲーム機１００では、カラープリンタ２００がＧＰＵ１１６に接続されていた。これに対して、第３実施例のゲーム機５００には、ゲーム機が周辺機器とデータをやり取りするための周辺機器インターフェース（以下では、ＰＩＦ）１１８が搭載されており、カラープリンタ２００が、このＰＩＦ１１８を介してゲーム機５００に接続されている点が異なっている。
【０１５８】
この第３実施例のゲーム機５００は、ゲーム中の画面の表示は、前述した各種実施例と同様にして実施する。すなわち、図１０を用いて前述したように、コントローラ１０２からの入力の有無を検出し（図１０のステップＳ１０）、ゲームの舞台に設定されている三次元空間内でオブジェクトを移動させる（ステップＳ２０）。次いで、移動させたオブジェクトのポリゴンデータに対して、レンダリング処理を行うことにより、三次元形状を有するオブジェクトの二次元画像を生成する（ステップＳ３０）。オブジェクトの移動およびレンダリング処理は、ゲーム機５００に搭載されたＧＴＥ１１２が実行し、得られた結果はメインメモリ１１０に記憶される。
【０１５９】
こうして生成した二次元画像に対して描画処理を行うことにより、画素毎に階調値が設定された画像データを生成する（ステップＳ４０）。描画処理は、ＣＰＵ１０１が出力する描画命令を受けて、ＧＰＵ１１６が実行し、得られた画像データはフレームバッファ１１４に記憶される。そして、このフレームバッファ１１４に記憶された画像データを、モニタ１５０に供給することによって、表示画像を更新する（ステップＳ５０）。
【０１６０】
一方、第３実施例のゲーム機５００では、モニタ１５０の画像を印刷する場合には、ＣＰＵ１０１がＰＩＦ１１８を介して、カラープリンタ２００に描画命令を供給し、カラープリンタ２００で描画命令を実行することによって画像を印刷する。図２９中に一点鎖線で示した矢印は、モニタ１５０の画像を印刷するために、ＣＰＵ１０１がカラープリンタ２００に向かって描画命令を出力する様子を、概念的に表したものである。すなわち、メインメモリ１１０には、ＧＴＥ１１２によってポリゴンデータから生成された二次元画像のデータが記憶されている。そこでＣＰＵ１０１は、この二次元画像のデータを用いて描画命令を生成して、カラープリンタ２００に出力する。こうすれば、描画命令から印刷データを生成することなくカラープリンタ２００に供給することができるので、速やかにゲームに復帰することができる。また、描画命令は印刷データよりもデータ量が少ないため、データ転送に要する時間も僅かとなり、迅速に画像を印刷することも可能となる。以下では、第３実施例のゲーム機５００が、このようにしてモニタ１５０の画面を印刷する処理について簡単に説明する。
【０１６１】
図３０は、第３実施例のゲーム機５００がモニタ１５０に表示された画面を印刷するために行う画像印刷処理の流れを示すフローチャートである。かかる処理は、前述した第１実施例の画像印刷処理に対して、レンダリング処理を行うと、描画命令をカラープリンタ２００に供給する点が異なっている。以下では、かかる相違点を中心として、第３実施例の画像印刷処理について簡単に説明する。
【０１６２】
第３実施例の画像印刷処理も、コントローラ１０２に設けられた所定の印刷ボタンが押されたことを検出して割り込みを発生させることによって開始される。第３実施例の画像印刷処理を開始すると、先ず初めに、モニタ１５０に表示されている画像のポリゴンデータを取得し（ステップＳ５００）、次いで、取得したポリゴンデータのオブジェクトに、精密ポリゴンデータが設定されているか否かを判断する（ステップＳ５０２）。精密ポリゴンデータが存在するオブジェクトについては（ステップＳ５０２：ｙｅｓ）、取得しておいた通常のポリゴンデータを、精密ポリゴンデータによって差し替える。このとき、通常のポリゴンデータの基準点と、精密ポリゴンデータの基準点を一致させることにより、オブジェクトの位置合わせを行う。一方、精密ポリゴンデータが存在しないオブジェクトについては（ステップＳ５０２：ｎｏ）、こうした処理はスキップする。
【０１６３】
次いで、画像の撮影条件を設定した後（ステップＳ５０６）、レンダリング処理を行う（ステップＳ５０８）。その結果、精密ポリゴンデータあるいは通常のポリゴンデータによって表現された各オブジェクトが、投影面上に投影された二次元画像に変換されて、得られた二次元画像のデータ（すなわち、ポリゴン頂点の二次元座標、ポリゴンのテクスチャ番号など）がメインメモリ１１０に記憶される。
【０１６４】
第３実施例の画像印刷処理では、ＣＰＵ１０１はレンダリング処理を終了すると、得られた二次元画像の描画命令を生成して、カラープリンタ２００に出力する（ステップＳ５１０）。図１４を用いて前述したように、描画命令は、「ＣＯＤＥ」、すなわち描画命令であることを表すとともに、二次元画像のポリゴンの形状を指定するデータと、ポリゴンに付与すべきテクスチャを示すテクスチャ番号と、二次元画像を構成するポリゴンの頂点座標とによって構成されている。また、二次元画像を構成するポリゴンのテクスチャ番号、およびポリゴンを構成する頂点の二次元座標は、レンダリング処理の中で生成されてメインメモリ１１０に記憶されている。そこで、ＣＰＵ１０１は、メインメモリ１１０からこれらのデータを読み出して、図１４に示すような描画命令を生成した後、カラープリンタ２００に出力する。そして、モニタ１５０に表示されている全てのポリゴンについて描画命令を出力したら、ステップＳ５１０の処理を終了して、ゲーム復帰処理を開始する（ステップＳ５１２）。
【０１６５】
ゲーム復帰処理では、プログラムカウンタや各種データをゲームの中断前の状態に復帰させて、ゲームを再開するための準備が行われる。そして、ゲーム復帰処理が終了すると、図３０に示した第３実施例の画像印刷処理を終了する。その結果、中断したところから、再びゲームが開始される。
【０１６６】
一方、カラープリンタ２００は、ＣＰＵ１０１からＰＩＦ１１８を介して描画命令を受け取ると、描画命令に基づいて画像データを生成し、生成した画像データから印刷データを発生させて、画像を印刷する。図２に示したように、カラープリンタ２００にはＣＰＵやＲＡＭ、ＲＯＭなどが搭載されている。従って、これらを用いれば、図１０を用いて前述した描画処理と同様の処理を実行して、描画命令から画像データを生成することができる。もちろん、カラープリンタ２００に、ＧＰＵ１１６やフレームバッファ１１４を搭載することも可能である。もっとも、画像を印刷するための処理は、モニタ１５０の画面を表示する処理のようには、迅速な処理が要求されないので、ＧＰＵ１１６などを搭載せずに、ＣＰＵやＲＡＭを用いて同様の処理を行った場合でも、実用上の弊害が生じることはない。こうして描画命令から画像データを生成したら、印刷条件を設定した後、図２０を用いて前述した印刷データ出力処理と同様の処理を行うことによって、画像を印刷することができる。
【０１６７】
Ｅ−１．第３実施例の変形例  ：
以上の説明では、ＣＰＵ１０１が出力する描画命令は、モニタ１５０の画面を更新するためにＧＰＵ１１６に出力する場合も、画像を印刷するためにカラープリンタ２００に出力する場合も、同様なデータ構造の描画命令を出力するものとして説明した。これに対して、画像を印刷する場合には、データ構造を変更した描画命令をカラープリンタ２００に出力することとしても良い。
【０１６８】
図３１は、変形例の画像印刷処理で出力される描画命令のデータ構造を例示した説明図である。図３１（ａ）に示したデータ構造では、テクスチャ番号の代わりに、ポリゴンに付与すべき色彩を示すＲ，Ｇ，Ｂ階調値が設定されている。図１４に示したように、ポリゴンのテクスチャ番号ではなく、Ｒ，Ｇ，Ｂ階調値に変換してから描画命令として出力してやれば、カラープリンタ２００で、テクスチャ番号を解釈する必要が無い。
【０１６９】
また、図２１に例示した色変換テーブルＬＵＴをゲーム機５００に記憶しておき、テクスチャ番号から得られたＲ，Ｇ，Ｂ階調値を、更にＣ，Ｍ，Ｙ．Ｋ各色の階調値に変換した後、カラープリンタ２００に描画命令として出力することとしても良い。あるいは、図２１に示す通常のＬＵＴの代わりに、テクスチャ番号に対してＣ，Ｍ，Ｙ，Ｋ各色の階調値を対応付けた専用のＬＵＴを記憶しておき、カラープリンタ２００に描画命令を出力する場合には、この専用ＬＵＴを参照してテクスチャ番号を変換してから、出力することとしても良い。
【０１７０】
以上、各種の実施例について説明してきたが、本発明は上記すべての実施例に限られるものではなく、その要旨を逸脱しない範囲において種々の態様で実施することができる。
【０１７１】
例えば、上述した各種の実施例では、モニタ１５０に表示された画面を印刷する場合、画像を印刷するための細かなポリゴンに基づく画像データを生成すると、この画像データは印刷データを生成するためだけに用いられるものとして説明した。しかし、生成した画像データを用いてモニタ１５０に画像を表示することとしても良い。例えば、印刷データの生成を開始するとともに、細かなポリゴンに基づいて生成された画像データを、モニタ１５０の画面に表示することとしても良い。印刷のために生成された画像データは、モニタ１５０に表示するために生成された画像データよりも高画質な画像を表示可能であり、加えて、撮影条件などを考慮して各種の処理が施された画像データとなっている。従って、印刷データの生成中に、この細かなポリゴンに基づく画像データをモニタ１５０に表示してやれば、こうした効果をモニタ１５０の上でも確認することが可能となる。
【０１７２】
あるいは、印刷データの生成を開始する前に、細かなポリゴンに基づく画像データをモニタ１５０の画面上に表示することとしても良い。こうすれば、撮影条件などの各種の設定項目を、細かなポリゴンに基づく画像データによって、効果を確認しながら設定することができるので、より適切な設定を行うことが可能となる。
【図面の簡単な説明】
【０１７３】
【図１】本実施例の画像データ生成装置を備えたゲーム機の構成を示す説明図である。
【図２】本実施例のゲーム機に接続されているカラープリンタの概略構成を示す説明図である。
【図３】インク吐出用ヘッドにおけるノズルＮｚの配列を示す説明図である。
【図４】モニタにゲーム中の画面が表示されている様子を例示した説明図である。
【図５】モニタの画面上で二次元画像が嵌め込まれている領域を表した説明図である。
【図６】メインキャラクタである飛行艇の形状を示す斜視図である。
【図７】メインキャラクタの飛行艇の形状をポリゴンによって表現した様子を概念的に示した説明図である。
【図８】オブジェクトのポリゴンデータを管理するために用いられるオブジェクトテーブルを概念的に示した説明図である。
【図９】オブジェクトの形状を表すポリゴンデータのデータ構造を示す説明図である。
【図１０】本実施例のゲーム機がゲーム中の画面をモニタに表示する処理の概要を示したフローチャートである。
【図１１】レンダリング処理の概要を示した説明図である。
【図１２】オブジェクトを構成するポリゴンの頂点座標を、二次元平面の座標点に投影する変換式を例示した説明図である。
【図１３】レンダリング処理によって生成された投影像を概念的に示した説明図である。
【図１４】ＣＰＵがＧＰＵに出力する描画命令のデータ構造を概念的に示した説明図である。
【図１５】第１実施例のゲーム機によって行われる画像印刷処理の流れを示すフローチャートである。
【図１６】メインキャラクタである飛行艇の三次元的な形状が小さなポリゴンによって表現されている様子を概念的に示した説明図である。
【図１７】精密ポリゴンデータの有無を判断するために参照されるテーブルを概念的に示した説明図である。
【図１８】画像の撮影条件を設定するための画面がモニタに表示されている様子を例示した説明図である。
【図１９】画像の印刷条件を設定するための画面がモニタに表示されている様子を例示した説明図である。
【図２０】印刷データ出力処理の流れを示したフローチャートである。
【図２１】色変換処理のために参照されるＬＵＴを概念的に示した説明図である。
【図２２】ディザ法で参照される一般的なディザマトリックスの一部を拡大して例示した説明図である。
【図２３】ディザマトリックスを参照しながら画素毎にドット形成の有無を判断している様子を概念的に示した説明図である。
【図２４】描画処理によって生成された画像データに、別の画像データを嵌め込む様子を示した説明図である。
【図２５】第２実施例の画像印刷処理の流れを示すフローチャートである。
【図２６】通常のポリゴンデータから精密ポリゴンデータを生成する原理を示した説明図である。
【図２７】ポリゴンを分割して複数のポリゴンを生成する他の態様を例示した説明図である。
【図２８】第２実施例の変形例の画像印刷処理の流れを示すフローチャートである。
【図２９】第３実施例のゲーム機の構造を示した説明図である。
【図３０】第３実施例の画像印刷処理の流れを示すフローチャートである。
【図３１】第３実施例の変形例において出力される専用の描画命令のデータ構造を例示した説明図である。
【符号の説明】
【０１７４】
１００...ゲーム機、    １０１...ＣＰＵ、    １１０...メインメモリ、
１１２...ＧＴＥ、    １１４...フレームバッファ、    １１６...ＧＰＵ、
１５０...モニタ、    ２００...カラープリンタ、    ５００...ゲーム機
【図１】
2006154884.tif 000003
【図２】
2006154884.tif 000004
【図３】
2006154884.tif 000005
【図４】
2006154884.tif 000006
【図５】
2006154884.tif 000007
【図６】
2006154884.tif 000008
【図７】
2006154884.tif 000009
【図８】
2006154884.tif 000010
【図９】
2006154884.tif 000011
【図１０】
2006154884.tif 000012
【図１１】
2006154884.tif 000013
【図１２】
2006154884.tif 000014
【図１３】
2006154884.tif 000015
【図１４】
2006154884.tif 000016
【図１５】
2006154884.tif 000017
【図１６】
2006154884.tif 000018
【図１７】
2006154884.tif 000019
【図１８】
2006154884.tif 000020
【図１９】
2006154884.tif 000021
【図２０】
2006154884.tif 000022
【図２１】
2006154884.tif 000023
【図２２】
2006154884.tif 000024
【図２３】
2006154884.tif 000025
【図２４】
2006154884.tif 000026
【図２５】
2006154884.tif 000027
【図２６】
2006154884.tif 000028
【図２７】
2006154884.tif 000029
【図２８】
2006154884.tif 000030
【図２９】
2006154884.tif 000031
【図３０】
2006154884.tif 000032
【図３１】
2006154884.tif 000033