JP3715568B2 - 画像描画装置、記録媒体及びプログラム - Google Patents
画像描画装置、記録媒体及びプログラム Download PDFInfo
- Publication number
- JP3715568B2 JP3715568B2 JP2001359017A JP2001359017A JP3715568B2 JP 3715568 B2 JP3715568 B2 JP 3715568B2 JP 2001359017 A JP2001359017 A JP 2001359017A JP 2001359017 A JP2001359017 A JP 2001359017A JP 3715568 B2 JP3715568 B2 JP 3715568B2
- Authority
- JP
- Japan
- Prior art keywords
- polygon
- leaf
- image
- vector
- image drawing
- 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
Links
Images
Landscapes
- Image Generation (AREA)
Description
本発明は、植物の葉などのように、同一形状のオブジェクトを多数描画する場合に好適な画像描画装置、この画像描画処理を実現するプログラムが記録された記録媒体及びプログラムに関する。
【0002】
【従来の技術】
近時、隠線処理、隠面消去処理、スムーズシェーディング、テクスチャマッピング等のコンピュータグラフィックス(CG)処理が、ハードウエアの飛躍的な発達と相俟って急速に進歩している。
【0003】
CG処理としては、一般に、CADの3次元モデリングによって複数の3次元形状(オブジェクト)を作成し、これらのオブジェクトに対して色や陰影をつけ、鏡面反射、拡散反射、屈折、透明感などの光学的特性を付加し、表面模様をつけ、更に、まわりの状況(窓や景色の映り込みや光の回り込み等)に応じて描画するというレンダリング処理が行われる。
【0004】
【発明が解決しようとする課題】
ところで、植物の葉などのように、同一形状のオブジェクトを多数描く場合、すべてのオブジェクトについて上述したレンダリング処理を施して描画する方法が考えられるが、細かなポリゴン単位に処理が行われるため、その計算や描画に長時間がかかり、例えばモニタの画面上でのこれらオブジェクトの表示速度が遅くなるという不都合が生じる。
【0005】
また、葉をそれぞれ1つのポリゴンで表示させる場合に、ポリゴンは平面であることから視点の位置によっては表示が不自然になることがある。
【0006】
それぞれの葉を複数のポリゴンで構成すれば、実物の葉のように緩やかな曲面をもつ形状に近似させることも可能であるがポリゴン情報データが肥大化してしまう。
【0007】
さらには、植物の葉のように多数のポリゴンを有する画像を製作する場合、画像製作者がその多数のポリゴンの配置を1つずつ決めなくてはならず、画像製作者にとって大きな負担となっている。
【0008】
本発明はこのような課題を考慮してなされたものであり、植物の葉などのように、同一形状の構成物を多数描画する場合に各々の構成物を1つのポリゴンで表し、さらに、適切な方向を向くようにポリゴンを回転させる処理を行うことで計算や描画にかかる時間を大幅に低減することができる画像描画装置、前記画像描画処理を実現することができるプログラムが記録された記録媒体及びプログラムを提供することを目的とする。
【0009】
【課題を解決するための手段】
本発明に係る画像描画装置、本発明に係る記録媒体並びに本発明に係るプログラムは、オブジェクトおよびポリゴンが配置される仮想空間上の座標系で、少なくとも1つのポリゴンについて、所定の手段により回転させる手段と、画像を描画する基準の仮想視点の方向と、回転した前記ポリゴンの面の法線の方向とのなす角が90°±a°のときに、前記ポリゴン面の向きを再設定する手段とを有することを特徴とする。
【0010】
このようにすることにより、仮想視点から見てポリゴンが見えづらいということがなく、また、植物の自然な雰囲気を表現することなどができる。ここで、前記ポリゴンは、植物の葉または枝を含む画像とすれば植物を描画することができる。
【0011】
また前記所定の手段は乱数発生手段であり、該乱数発止手段によって得られた乱数から設定された方向に前記ポリゴンを回転させてもよい。
【0013】
このようにすることにより、仮想視点から見てポリゴンが見えづらいということがなく、また、植物の自然な雰囲気を表現することなどができる。
【0019】
さらに、前記ポリゴンは、長方形又は正方形であると処理しやすい。
【0020】
またさらに、前記ポリゴンに関する情報は、前記ポリゴンの全頂点のうち少なくとも1つの頂点の位置情報データを有するようにするとデータ量を少なくすることができる。
【0021】
前記ポリゴンを回転させるステップでは、前記少なくとも1つの頂点の位置情報データに対して回転の計算を施して回転後の変換位置を求めるとともに、他の頂点は前記変換位置から換算して求めると計算量を低減させることが可能である。
【0022】
【発明の実施の形態】
以下、本発明に係る画像描画装置をエンタテインメントシステムに適用した実施の形態例と、本発明に係る記録媒体及びプログラムを前記エンタテインメントシステムで実行されるプログラムやデータが記録された記録媒体及びプログラムに適用した実施の形態例について図1〜図27を参照しながら説明する。
【0023】
まず、本実施の形態に係るエンタテインメントシステム10は、基本的には、図1に示すように、各種プログラムを実行させるエンタテインメント装置12と、該エンタテインメント装置12に対して着脱自在とされるメモリカード14と、エンタテインメント装置12に対して着脱自在とされた操作装置(コントローラ)16と、エンタテインメント装置12からの映像・音声信号が供給されるテレビ受像機等の表示装置であるモニタ(ディスプレイ)18とから構成される。
【0024】
エンタテインメント装置12は、例えば、CD−ROMやDVD−ROM等の光ディスク20等の大容量記憶媒体に記録されているプログラムを読み出して、使用者(例えば、ユーザ、ゲームプレイヤ等)からの指示に応じてゲーム等を実行するためのものである。なお、ゲームの実行とは、主として、コントローラ16からの入力をコネクタ15を通じて受け、モニタ18の画面上における表示や音声を制御しながらゲームの進行を制御することをいう。
【0025】
このエンタテインメント装置12は、図1に示すように、扁平な直方体を重ねた形状を有しており、前面パネルには、プログラム・データの記録媒体である光ディスク20が装着されるディスク装着部としての前後に移動するディスクトレイ22と、現在実行中のプログラム等を任意にリセット等するためのリセットスイッチ24と、ディスクトレイ22を引き出すためのオープンボタン26と、メモリカード14の2つの差込口30と、コントローラ16のコネクタ15が差し込まれる2つのコントローラ端子32等とが配置され、背面側には、電源スイッチ28、映像と音声の出力端子であり、AV(audio visual)ケーブルを介してモニタ18と接続される図示していないAVマルチ出力端子等が配置されている。
【0026】
エンタテインメント装置12は、コンピュータゲーム(ビデオゲーム)のプログラムやデータが記録されたCD−ROM、DVD−ROM等の記録媒体である光ディスク20から当該プログラムを読み取り、それを実行することによりモニタ18の画面上にキャラクタやシーンを表示させる制御機能のほか、他の光ディスク20であるDVD(digital video disk)による映画の再生およびCDDA(compact disk digital audio)による音楽の再生等の各種制御機能が内蔵されている。また、通信ネットワーク等を介して通信により得られるプログラムを実行する機能も有する。ゲームプログラムの実行中には、表示装置としてのモニタ18の画面上にエンタテインメント装置12が生成した3次元コンピュータグラフィックス映像が表示される。
【0027】
この場合、コントローラ16からの信号も、エンタテインメント装置12の上記制御機能の一つによって処理され、その内容がモニタ18の画面上の、例えばキャラクタの動き、シーンの切り替えなどに反映されるようになっている。
【0028】
コントローラ16は、上面の中央左右に第1、第2操作部51、52が設けられ、側面には第3、第4操作部53、54が設けられ、上面の手前側左右には、アナログ操作を行うための左側のジョイスティック70と右側のジョイスティック72が設けられている。
【0029】
第1の操作部51は、たとえばモニタ18の画面に表示されたキャラクタ等に動作を与えるための押圧操作部であり、光ディスク20に記録されているプログラム等によりその機能が設定され、キャラクタ等を上下左右等に動かす機能を有する4つの操作キー(方向キーともいう。)51a、51b、51c、51dから構成されている。方向キー51aは上方向キー、方向キー51bは下方向キー、方向キー51cは左方向キー、方向キー51dは右方向キーともいう。
【0030】
第2の操作部52は、押圧操作用の円柱状をした4個の操作ボタン52a、52b、52c、52dを有し、各操作ボタン52a〜52dの頭部には、それぞれ「△」、「○」、「×」、「□」の識別マークが付けられており、各操作ボタン52a〜52dは、それぞれ△ボタン52a、○ボタン52b、×ボタン52c、□ボタン52dともいう。
【0031】
この第2の操作部52の各操作ボタン52a〜52dは、光ディスク20に記録されたプログラム等によりその機能が設定され、各操作ボタン52a〜52dに、たとえばキャラクタ等の左腕、右腕、左足、右足を動かす機能が割り付けられる。
【0032】
第3、第4操作部53、54は、ほぼ同じ構造をしており、ともに上下に並ぶ押圧操作用の2個の操作ボタン(L1ボタンともいう。)53a、操作ボタン(L2ボタンともいう。)53b、および操作ボタン(R1ボタンともいう。)54a、操作ボタン(R2ボタンともいう。)54bを備えている。これら第3、第4操作部53、54も、光ディスク20に記録されたプログラムによりその機能が設定され、たとえばキャラクタに特殊な動作をさせる機能が割り付けられる。
【0033】
左右のジョイスティック70、72は、それぞれ操作軸を中心に360゜方向に傾動、回転可能とされる可変抵抗器等の信号入力素子を備えており、傾動、回転に応じてアナログ値が出力される。また、この左右のジョイスティック70、72は、図示していない弾性部材により中立位置に復帰するようになっている。なお、左右のジョイスティック70、72は、それぞれ下方に押圧することによって、ジョイスティック70、72の傾動、回転に伴うアナログ値とは別の信号が出力される。つまり、左右のジョイスティック70、72は、押圧操作用の第5、第6操作部としての操作ボタン(L3ボタン)70a、(R3ボタン)72aの機能を有している。
【0034】
左右のジョイスティック70、72を回転、傾動操作することにより、たとえばキャラクタ等を回転させながら移動させ、あるいは速度を可変しながら移動させ、さらには状態を変更させる等のアナログ的な動きを行うことを可能とする指令信号を入力することが可能となる。
【0035】
図1において、左右のジョイスティック70、72は、前記第1及び第2操作部51、52と切り換えて使用可能となる。その切換えは、アナログモードスイッチ74により行う。アナログモードスイッチ74により左右のジョイスティック70、72が選択されると、表示部76が点灯して、左右のジョイスティック70、72の選択状態を表示するようになっている。
【0036】
左右のジョイスティック70、72を操作することによって得られるアナログ入力値は、図3に示すように、垂直方向について上から下に向けて「0」〜「255」とされ、水平方向について左から右に向けて「0」〜「255」とされている。
【0037】
コントローラ16には、上記のほかにゲーム等の開始を指示するスタートボタン(スタートスイッチ)78や、ゲーム開始に際してゲームの難易度等を選択するためのセレクトボタン(選択スイッチ)80などが設けられている。
【0038】
次に、図2のブロック図を参照して、図1に示したエンタテインメント装置12の内部構成とその一般的な動作について説明する。
【0039】
このエンタテインメント装置12は、該エンタテインメント装置12を制御するCPU401に対して、半導体メモリとしてのRAM402及びバス403がそれぞれ接続されて構成されている。
【0040】
前記バス403には、グラフィックシンセサイザー(GS)404、インプットアウトプットプロセッサ(IOP)409がそれぞれ接続される。GS404には、フレームバッファ、Zバッファおよびテクスチャメモリ等を含むRAM(画像メモリ)405と、このRAM405中のフレームバッファへの描画機能を含むレンダリング機能を有するレンダリングエンジン(RE)406とが含まれる。
【0041】
このように構成されるGS404には、例えばデジタルRGB信号等をNTSC標準テレビジョン方式に変換するためのエンコーダ407を介して、外部機器としてのモニタ18が接続される。
【0042】
IOP409には、光ディスク20に記録されているデータを再生し、デコードするためのドライバ(DRV)410、サウンド生成系412、フラッシュメモリからなる外部メモリとしてのメモリカード14、コントローラ16およびオペレーティング・システム等の記録されたROM416がそれぞれ接続される。サウンド生成系412は、増幅器413を介して、外部機器としてのスピーカ414およびモニタ18に接続され、音声信号を供給する。
【0043】
サウンド生成系412は、CPU401からの指示に基づいて、楽音、効果音等を発生する音声処理装置(Sound Processing Unit:SPU)420と、このSPU420により発生された楽音、効果音等を記憶しているサウンドバッファ422とを有する。SPU420によって発生される楽音、効果音等の信号は、スピーカ414やモニタ18の音声端子に供給され、これらスピーカ414やモニタ18のスピーカから楽音、効果音等として出力(発音)するようになっている。
【0044】
ここで、SPU420は、例えば16ビットの音声データを4ビットの差分信号として適応予測符号化(ADPCM:Adaptive Differential PCM)された音声データを再生するADPCM復号機能と、サウンドバッファ422に記憶されている波形データを再生することにより、効果音等を発生する再生機能と、サウンドバッファ422に記憶されている波形データを変調させて再生する変調機能等を備えている。
【0045】
このような機能を備えることによって、このサウンド生成系412は、CPU401からの指示によってサウンドバッファ422に記録された波形データに基づいて楽音、効果音等を発生するいわゆるサンプリング音源として使用することができるようになっている。
【0046】
また、メモリカード14は、たとえばCPUもしくはゲートアレイおよびフラッシュメモリからなるカード型の外部記憶装置であって、図2に示されたエンタテインメント装置12に対し、その差込口30を介して着脱自在となっており、ゲームの途中状態が記憶されたり、DVD再生用のプログラム等が記憶されている。
【0047】
コントローラ16は、搭載された複数のボタンの押圧により、指令(2値指令または多値指令)をエンタテインメント装置12に与えるためのものである。また、ドライバ410は、MPEG(moving picture experts group)標準に基づいてエンコードされた画像をデコードするためのデコーダを備えている。
【0048】
また、CPU401は図示しない乱数発生器を備えている。
【0049】
ところで、木のオブジェクトを3次元画像で描く場合、一般に、幹のオブジェクトと、多数の葉のオブジェクトに分けて描くことが考えられる。通常のレンダリング処理にて幹と葉の両オブジェクトを描く場合、特に、葉のオブジェクトは、幹のオブジェクトと同様に、複数のポリゴンで、かつ、固定化した座標のもとで描くことになる。
【0050】
しかし、1つの葉を構成する複数のポリゴンについて、それぞれ各頂点データを持たせる必要から、膨大なデータ量になることは明らかである。
【0051】
そこで、本実施の形態では、幹のオブジェクトは、通常どおり、該幹のオブジェクトを構成する多数のポリゴンについてそれぞれ頂点データを持たせたデータ構造を採用するが、葉のオブジェクトについては、図4に示すように、1枚の例えば長方形又は正方形のポリゴンで描くようにする。実際には、長方形のポリゴンに葉のテクスチャを貼り付けて描くようにする。
【0052】
この場合、1つの辺をワールド座標上、鉛直方向に向かせるようにすれば、1つの頂点が決まると同時に他の頂点も自動的に決まることになり、該ポリゴンに関する頂点データの情報量を大幅に減らすことが可能となる。
【0053】
図5は幹のオブジェクトと多数の葉のオブジェクトを描いた例を平面から見た状態を示している。
【0054】
ところで、このような描画方法においては1つの問題がある。それは、ある1つの視点から木のオブジェクトを見た場合、葉を構成するポリゴンについて、全てのポリゴンの面が仮想視点eの方向に向いた状態になっているため、葉が生い茂った木として見ることができるが、視点を例えば90°転回して仮想視点eaとした場合は、葉を構成するポリゴンについて、全てのポリゴンの面が、視点の方向に対して90°±a°の角度で配置された状態になるため、この視点から木を見た場合、葉のテクスチャはほとんど見ることができず、落葉した幹となってしまい、表示上不都合が生じる。
【0055】
そこで、本実施の形態では、上述の手法に加えて、葉を構成するポリゴンのポリゴン面を視点の方向に向けて描画することで、上述の問題点を解決するようにしている。
【0056】
具体的に、本実施の形態に係るいくつかの描画方法を図6A〜図27を参照しながら説明する。一連の処理はCPU401、RE406がそれぞれ処理を分担して行うものであり、その際に使用される作業用メモリはRAM402や画像メモリ405などを用いるものとする。
【0057】
図6Aは、仮想空間100のZX平面図である。仮想空間100は、画像を描画するためにオブジェクトやポリゴンを配置するために仮想的に設定されているものである。この仮想空間100は3次元空間であり、描画する画像面に水平な向きのX軸、描画する画像面の高さ方向に相当するY軸(図6C参照)及び描画する画像面に垂直なZ軸を有する。
【0058】
なお、実際の一般のCG手法ではこのように画像面の向きを基準にした座標系(スクリーン座標系)の他に画像面に左右されないワールド座標系を有する。
【0059】
仮想空間100において、描画するための基準となる仮想視点eと、画像が描画されるZ軸に垂直な仮想のスクリーン(背景面)Z0の間にはY軸方向に伸びる幹102のオブジェクトと幹102のオブジェクトの近傍に設けられた複数の葉のポリゴン104aが配置されている。葉のポリゴン104a(図4も参照)は長方形であり、葉のポリゴン104aの4つの頂点は104a1〜104a4と表され、かつ、頂点104a1と104a4が対角をなすように構成されている。葉のポリゴン104aは必ずしも葉の絵だけが表示されるものでなく枝の絵を含むものであってもよい。また、葉の絵の数は1枚である必要はなく複数枚であってもよい。
【0060】
図6Bは、図6Aの葉のポリゴン104aの1つを拡大して示した図である。ここで、Vは葉のポリゴン104aの基準点Loを基点とした法線ベクトルであり、Veは基準点Loを基点として仮想視点eの方向を示す視点ベクトルである。葉のポリゴン104aを、法線ベクトルVと視点ベクトルVeとのなす角度θ1だけ回転させると、変換したポリゴン104bになる。変換したポリゴン104bを仮想視点eを基準にしてスクリーンZ0に投影すると葉の投影面104cになる。
【0061】
図6Cは、仮想空間100のZY平面図であり、幹102、変換したポリゴン104b、仮想視点e及び葉の投影面104cの位置関係を明確にしたものである。図6Aで表されるZX平面の投影関係はZY平面でも同様になっている。
【0062】
第1の実施の形態に係る画像描画方法は、図6A及び図6Bに示すように、幹102の周りに予め配置された任意の向きの葉のポリゴン104aのポリゴン面の法線Vが、基準点Loと仮想視点eを結ぶ直線に一致するように回転させて、変換したポリゴン104bを得る。次に、変換したポリゴン104bをスクリーン面Z0に投影する計算を行うことで葉の投影面104cを得る。
【0063】
第1の実施の形態に係る画像描画方法の具体的手法について図6A〜図16を参照しながら説明する。
【0064】
木の描画については図7に示すように初期化処理(ステップS1)、幹の描画処理(ステップS2)と葉の描画処理(ステップS3)の3つの処理に分けることができる。
【0065】
初期化処理(ステップS1)では、光ディスク20から図8に示すオブジェクト情報テーブル106、図9に示す幹のポリゴン情報テーブル108、図13に示す葉のポリゴン情報テーブル110等をRAM402にロードし、さらに、ポリゴンの模様データであるテクスチャマップを画像メモリ405のテクスチャメモリにロードする。
【0066】
オブジェクト情報テーブル106は、幹の基準絶対座標T0、幹のポリゴンの数Nm、幹のポリゴン情報テーブルアドレスADm、枝の数Nb及び枝ベクトル情報テーブルアドレスADbを含む情報である。
【0067】
幹のポリゴン情報テーブル108は、Nm個の幹のポリゴンの情報を有し、それぞれの幹のポリゴン情報はポリゴンの4つの頂点104a1〜104a4の相対位置座標、4つの頂点104a1〜104a4の色データ及びテクスチャマップアドレスADtiを含む。iは幹のポリゴンの番号を表し0〜Nm−1の数値をとる。
【0068】
幹の描画(ステップS2)について、その処理内容を示した図10を参照しながら説明する。
【0069】
まず、ステップS101において、図8に示すオブジェクト情報テーブル106から幹のポリゴンの数Nm、幹の基準絶対座標T0及び幹のポリゴン情報テーブル108のアドレスADmをレジスタ等に確保する。
【0070】
そして、ステップS102において、カウンタiに初期値「0」を格納して、該カウンタiを初期化する。
【0071】
次に、ステップS103において、アドレスADmで示される幹のポリゴン情報テーブル108からカウンタiで示される幹のポリゴン情報を読み込む。
【0072】
ステップS104において、読み込まれた幹のポリゴン情報のうち4つの頂点104a1〜104a4の相対座標に幹の基準絶対座標T0を加算する。こうして、葉のポリゴン104aの4つの頂点104a1〜104a4のワールド座標値を得る。また、この4つの頂点104a1〜104a4のワールド座標値からスクリーンZ0に対してZ軸上の相対位置Zrを求める。
【0073】
次に、色の補正及びスクリーンZ0への投影処理等を行う。これらの処理ステップS105〜S108においては一般にレンダリング処理と呼ばれているものである。
【0074】
レンダリング処理では、まず、ステップS105において、変換されたポリゴンの色の計算を行う。まず、幹102のポリゴン情報に含まれる4つの頂点104a1〜104a4の色データを用いて、変換したポリゴン104bの範囲内の色を補正する。そして、図示しない仮想光源の情報などから光学計算を行うことで表面輝度を求めて、さらに表面の質感の補正を行う。
【0075】
そして、ステップS106において、変換したポリゴン104bをスクリーンZ0に投影した葉の投影面104c(図6A参照)を求める。
【0076】
ステップS107において、この投影面の範囲に対して、ポリゴン情報のうちテクスチャマップアドレスADtiで示されるテクスチャを投影面形状に合わせて加え描画画像を得る。
【0077】
ステップS108では、得られた描画画像をRAM405のうち表示バッファに書き込むとともに、前記Z軸上の相対位置ZrをRAM405のZバッファに書き込む。
【0078】
そして、ステップS109において、カウンタiを+1更新した後、次のステップS110において処理が完了したか判別される。つまり、iとNmが等しければ幹のポリゴンに対しては全ての処理が完了したので、図7に示す葉の描画処理(ステップS3)に移る。iとNmが異なれば(iがNmより小さければ)、前記ステップS103に戻り処理を繰り返す。
【0079】
次に、葉の描画(ステップS3)について、その処理内容を示した図11を参照しながら説明する。
【0080】
まず、ステップS201において、描画する葉のポリゴン104aの数Nlを決定する。葉のポリゴン104aの数Nlは予め決定されたもので光ディスク20等に記憶されているものでもよいし、また、ステップS1で描画した幹102の形状に応じた葉のポリゴン104aの数を適宜決定してもよい。
【0081】
そして、ステップS202において、葉の配置を決める処理を行い、ステップS203において、葉の向きを決める処理レンダリング処理を行うことで、葉を描画することができる。このうち、ステップS202の処理については後述する。
【0082】
ステップS203の葉の向きを決める処理においては、その内部の処理としてまず、ステップS203aにおいて最初にカウンタiを初期化して「0」にする。次に、ステップS203bにおいて、カウンタiで示される葉の向きを決定する。このステップS203bの処理の詳細については後述する。
【0083】
そして、ステップS203cにおいて、カウンタiを+1更新した後、次のステップS203dにおいて処理が完了したか判別される。つまり、iとNlが等しければ幹のポリゴンに対しては全ての処理が完了したので、レンダリング処理(ステップS204)に移る。iとNlが異なれば(iがNlより小さければ)前記ステップS203bに戻り処理を繰り返す。
【0084】
ステップS204おけるレンダリング処理は、幹の描画処理で説明したステップS105〜S108と同じ処理であるのでその詳細な説明は省略する。
【0085】
図11における葉の配置を決定する処理(ステップS202)について、その処理内容を示した図12及び図13を参照しながら説明する。
【0086】
まず、ステップS301において、カウンタiに初期値「0」を格納して、該カウンタiを初期化する。
【0087】
次に、ステップS302において、葉のポリゴン情報テーブル110からカウンタiで示される葉のポリゴン情報を読み出す。
【0088】
図13に示すように、それぞれの葉のポリゴン情報テーブル110は幹のポリゴン情報テーブル108とほぼ同様の構成であり、葉を1つのポリゴンとして表している。つまり、4つの頂点104a1〜104a4の相対座標値と、その4つの頂点104a1〜104a4の色のデータ及びテクスチャマップアドレスADliを有する構造である。この4つの頂点104a1〜104a4の相対座標は平面を構成するように設定されている。また、葉のポリゴン情報テーブル110は描画する葉の数Nl個の情報を有する。
【0089】
そして、ステップS303に移り、4つの頂点104a1〜104a4の相対座標値を幹102の基準絶対座標T0を基準にして絶対座標に変換して、カウンタiで示される葉のポリゴン104aの4つの頂点104a1〜104a4のワールド座標値が決定する。このように、葉の位置の情報は相対座標で構成されているので、幹102が仮想空間100上のどこに配置されていても対応が可能である。
【0090】
そして、ステップS304において、カウンタiを+1更新した後、次のステップS305において処理が完了したか判別される。つまり、iとNlが等しければ幹のポリゴンに対しては全ての処理が完了したので、図11における葉の描画処理(ステップS203)に移る。iとNlが異なれば(iがNlより小さければ)、前記ステップS301に戻り処理を繰り返す。
【0091】
次に、図11におけるカウンタiが示す葉の向きを決める処理(ステップS203b)について図6A、図6B、図15及び図16を参照しながら説明する。葉の向きを決める処理はいくつかの手法が考えられ、図15及び図16は葉の向きを決める処理の種別をフローチャートに表したものである。このうち第1の実施の形態に係る葉の向きを決める方法について説明する。
【0092】
まず、ステップS401において、前記ステップS202で行った処理で葉のポリゴン104aの向きが決定されているか判別する。第1の実施の形態においては、葉のポリゴン104aの情報は4つの頂点104a1〜104a4のワールド座標値を持っており、しかも、この4つの頂点104a1〜104a4の座標は平面を構成するように設定されているので葉の向きは一義的に決定される。従って、次のステップS402に移る。
【0093】
ステップS402においては、4つの頂点104a1〜104a4のワールド座標値から葉の法線ベクトルVを演算する。4つの頂点104a1〜104a4は平面を構成するように設定されているので、このうち3つを選択して得られる2つのベクトルに対して法線ベクトルVを演算するようにすればよい。
【0094】
次に、ステップS403においては、法線ベクトルVの向きが仮想視点eに対して表示上不都合な向きになっていないか考慮するかどうかを決める。この判断は画像製作者が処理速度などを勘案して予め決めておくものであり、CPU401が判断するものでなくてもよい。法線ベクトルVを考慮しない場合、つまり、一律に葉のポリゴン104aの向きを変更する場合はステップS405に移る。
【0095】
法線ベクトルVを考慮する場合はステップS404に移り、法線ベクトルVの向きを判定する。この判定は葉ポリゴン104aの基準点Loと仮想視点eを結ぶ直線のベクトルを視点ベクトルVeとして、この視点ベクトルVeと法線ベクトルVとのなす角度θ1を演算する。得られた角度θeが90°±a°以内であるときは、葉が仮想視点eに対して略平行の向きとなっているので表示上不都合である。従ってステップS405に移り葉の向きを変更する処理を行う。またそれ以外の角度であるときは、葉の向きに変更は加えないものとして図15に示す処理を終了する。ここで、a°とは画像製作者が任意に決定するものであるが、概ね45°以内の数値である。
【0096】
ステップS405及びS405aでは葉の向きを変更するにおいてどのような基準で変更するか決定する。この判断は画像製作者が予め決定しておいてもよい。第1の実施の形態ではステップS406へ移るものとする。
【0097】
ステップS406においては、葉のポリゴン104aの向きを仮想視点eの方向へ向けるように回転させる。この回転の処理を図6A及び図6Bを参照しながら説明する。
【0098】
葉のポリゴン104aの基準点Loを中心に法線ベクトルVが視点ベクトルVeに一致するように角度θ1だけ回転させる。つまり、その回転によりポリゴン104aの4つの頂点104a1〜104a4が移る変換したポリゴン104bの座標値をそれぞれ計算する。図6Bは、基準点Loを葉のポリゴン104aの4つの頂点104a1〜104a4のうちの1つ、例えば頂点104a1に設定した例を示している。このように、4つの頂点104a1〜104a4のうちの1つを基準点Loにとれば、残りの3つの頂点だけを計算すればよい。
【0099】
また、葉のポリゴン104aが長方形又は正方形で、かつ、法線ベクトルVがZX平面に平行になるように設定しておくことにより、葉のポリゴン104aの対角の2頂点、例えば、頂点104a1及び頂点104a4だけについて計算して回転後の変換位置を求めておけば、残りの2つの頂点104a2、104a3については頂点104a1及び頂点104a4に関する計算の結果の変換位置から換算して表現できる。さらに、この場合、基準点Loを4つの頂点104a1〜104a4のうちの1つ、例えば104a1に設定すれば、その対角の頂点104a4の1点だけについて回転後の変換位置を求めておけば、他の頂点については換算して表現できるので計算量が大幅に低減される。
【0100】
しかも、葉のポリゴン104aに関して必要な情報は、複数の頂点のうち1つの頂点の情報だけでよいことになるのでデータ量を少なくすることができる。
【0101】
こうして、ポリゴン104aを回転させて得られた変換したポリゴン104bは仮想視点eの方向を向いているので、表示上不都合がない。
【0102】
葉の向きが決定したので、図11におけるステップS203bが終了する。この処理をカウンタiの制御処理(ステップS203a、ステップS203c及びステップS203d)に従い実行し、Nl個の葉のポリゴン104aについて向きが決定したらレンダリング処理(ステップS204)に移ればよい。
【0103】
なお、葉の向きを決定する処理(ステップS203)については、図6A及び図6Bを参照してZX平面上で説明したが、実際には葉のポリゴン104aを3次元空間内で回転させてもよい。
【0104】
葉のポリゴン104aを3次元空間内で回転させる方法について図14A及び図14Bを参照しながら説明する。なお、図14A及び図14Bで示すX軸、Y軸及びZ軸はスクリーン座標系の軸と同じ向きであるが、スクリーン座標系の原点は無視して、相対的な方向だけを表すものとする。
【0105】
図14Aは、葉のポリゴン104aの法線ベクトルVを視点ベクトルVeの方向へZX平面上で回転させた状態を説明した図である。
【0106】
Vy、Veyは、法線ベクトルVと視点ベクトルVeのそれぞれのZX平面成分の2次元ベクトルである。θ11は2次元ベクトルVyとVeyのなす角度である。V1は法線ベクトルVをY軸を中心に角度θ11だけ回転させたベクトルである。
【0107】
図14Bは、2次元ベクトルVeyとY軸で構成した2次元座標を示す。θ12は回転したベクトルV1と視点ベクトルVeyとのなす角度である。
【0108】
葉のポリゴン104aを仮想視点eの方向へ向けるためには、まず、葉の法線ベクトルVをY軸を中心にして角度θ11だけ回転させる第1の回転処理を行う。この処理により法線ベクトルVはベクトルV1の位置に移る。この状態では移動後のベクトルV1と視点ベクトルVeのZX平面成分が一致することになる。
【0109】
次に、図14Bで示す2次元座標系で移動後のベクトルV1を角度θ12だけ回転させる第2の回転処理を行う。この処理によりベクトルV1は視点ベクトルVeに一致して、葉のポリゴン104aは仮想視点eの方向を向くことになる。
【0110】
なお、このように回転処理を2回に分けなくとも、3次元空間上で法線ベクトルVから視点ベクトルVeの方向へ直接的に回転するように処理してもよい。
【0111】
さらに、上述の説明では図11に示すとおり、ステップS202で全ての葉の配置を決定し、その後、ステップS203で葉の向きを決定する、いわゆるバッチ式で処理しているが、各葉ごとに葉の向きと葉の配置を連続して決定するように処理してもよい。
【0112】
また、ポリゴンは長方形、正方形など4角形に限定されるものではなく3角形、5角形などでもよい。
【0113】
このように、第1の実施の形態に係る画像描画方法においては、葉のポリゴンを全て仮想視点eの方向へ向くようにするので、仮想視点eから見てポリゴンが見えづらいということがない。
【0114】
また、葉のポリゴン情報テーブル110を持つことから、個別の葉に対して配置や色、及びテクスチャを自由に設定できるので表現上の自由度が高い。
【0115】
さらに、葉のポリゴン104aの形状を長方形にして、回転の基準点をポリゴンの頂点に設定することで回転に係る計算量を大幅に低減することができる。
【0116】
次に、第2の実施の形態に係る画像描画方法について図17A〜図18を参照しながら説明する。
【0117】
第2の実施の形態においては、第1の実施の形態とほぼ同じ処理を行うが、葉のポリゴン104aを回転させる処理において、回転させる方向が異なる。すなわち、図17A及び図17Bに示すようにポリゴン104aをZ軸の方向へ回転させて、変換したポリゴン104dを得る。
【0118】
具体的には、図15における処理でステップS405からステップS405aの分岐処理を経由してステップS407へ移る。
【0119】
ステップS407においては、葉のポリゴン104aの向きをZ軸の方向へ向けるように回転させる。この回転の処理を図17A及び図17Bを参照しながら説明する。
【0120】
図17Aは、第2の実施の形態に係る仮想空間100のZX平面図である。104dはポリゴン104aをZ軸の方向へ回転させた変換したポリゴンである。それ以外の符号は図6Aと同じである。また、図17Bは図17Aの葉のポリゴン104a部分の拡大図である。Vzは葉のポリゴン104aの基準点Loを起点としたZ軸方向を示すZ軸ベクトルである。角度θ2は法線ベクトルVとZ軸ベクトルVzとのなす角度である。
【0121】
基準点Loを中心に法線ベクトルVがZ軸ベクトルVzに一致するように角度θ2だけ回転させる。つまり、その回転によりポリゴン104aの4つの頂点104a1〜104a4が移る変換したポリゴン104dの座標値をそれぞれ計算する。このように、Z軸の方向へ向くように回転させる場合に、仮想視点eの方向を考慮する必要がなく演算が単純になるという効果がある。また、葉がZ軸の方向を向くことで、仮想視点eの方向とは異なるもののスクリーンZ0に対しては平行なので画像描画上特に見えづらいということはない。
【0122】
また、基準点Loの選択の方法や、ポリゴンの形状設定は第1の実施の形態と同様にすれば計算量の低減を図ることができる。
【0123】
葉の向きが決定したので、図11におけるステップS203bが終了する。この処理をカウンタiの制御処理(ステップS203a、ステップS203c及びステップS203d)に従い実行し、Nl個の葉のポリゴン104aについて向きが決定したらレンダリング処理(ステップS204)に移ればよい。
【0124】
なお、葉の向きを決定する処理(ステップS203)については、図17Bを参照してZX平面上で説明したが、実際には葉のポリゴン104aを3次元空間内で回転させてもよい。
【0125】
葉のポリゴン104aを3次元空間内で回転させる方法について図18を参照しながら説明する。
【0126】
図18は、葉のポリゴン104aの法線ベクトルVをZ軸ベクトルVzの方向へZX平面上で回転させた状態を説明した図である。
【0127】
図18において、座標と法線ベクトルVの位置関係および2次元ベクトルVyは図14Aと同じである。角度θ21は2次元ベクトルVyとZ軸ベクトルVzのなす角度である。V2は法線ベクトルVをY軸を中心に角度θ21だけ回転させたベクトルである。角度θ22は回転したベクトルV2とZ軸ベクトルVzとのなす角度である。
【0128】
葉のポリゴン104aをZ軸ベクトルVzの方向へ向けるためには、まず、葉の法線ベクトルVをY軸を中心にして角度θ21だけ回転させる第1の回転処理を行う。この処理により法線ベクトルVはベクトルV2の位置に移る。この状態では移動後のベクトルV1とZ軸ベクトルVzのZX平面成分が一致することになる。
【0129】
次に、ZY平面上で移動後のベクトルV2を角度θ22だけ回転させる第2の回転処理を行う。この処理によりベクトルV2はZ軸ベクトルVzに一致して、葉はZ軸の方向を向くことになる。
【0130】
なお、このように2回に分けて計算しなくとも、3次元空間上で法線ベクトルVからZ軸ベクトルVzの方向へ直接的に回転するように処理してもよい。
【0131】
このように、第2の実施の形態に係る画像描画方法においては、葉を全てZ軸の方向へ向くようにするので、回転の計算量が少なくて済み、また、仮想視点eから見て特に見えづらいということはない。
【0132】
次に、第3の実施の形態に係る画像描画方法について図15、図16及び図19を参照しながら説明する。
【0133】
第3の実施の形態においては、第1の実施の形態とほぼ同じ処理を行うが、葉のポリゴン104aを回転させる処理において、回転させる処理が異なる。すなわち、特定の方向へ向けるのではなく乱数発生器により得られた乱数により任意の方向を向くようにしてる。
【0134】
具体的には、図15及び図16における処理でステップS405からステップS405aの分岐処理を経由してステップS408に移る。
【0135】
ステップS408においては、乱数発生器によりいくつかの乱数を得る。そしてこの乱数によりある一定方向の範囲内の方向を向く乱数ベクトルVr(図19参照)を設定する。
【0136】
図19に示すようにZ軸を中心とした4角錐Pyの範囲を考える。図19において、x0、y0はそれぞれ4角錐Pyを規定するX座標値、Y座標値である。x1、y1は設定する乱数ベクトルVrのX座標値、及びY座標値である。z1は乱数ベクトルVrのZ座標値である。
【0137】
乱数ベクトルVrのZ軸座標値z1と、4角錐を規定するX軸座標値x0とY軸座標値y0を適当な値に設定する。X軸座標値x0、Y軸座標値y0はZ軸座標値z1より小さい値が好ましい。次に、乱数発生器により2つの乱数を取得する。この乱数発生器は±1の範囲内の値を発生するものとする。そして、得られた2つの乱数とX軸座標値x0、Y軸座標値y0をそれぞれ掛け合わせて乱数ベクトルVrのX軸座標値x1及び乱数ベクトルVrのY軸座標値y1を得る。この値をZ軸座標値z1と組み合わせて乱数ベクトルVr(x1、y1、z1)が規定されることになる。この乱数ベクトルVrは、Z軸を中心としてX軸には±x0、Y軸には±y0の範囲内の方向を示す。
【0138】
乱数ベクトルVrが規定されたら、次にステップS409に移る。
【0139】
ステップS409においては、ステップS408で得られた乱数ベクトルVrの向きを判定する。この判定は視点ベクトルVeと乱数ベクトルVrとのなす角度を演算することにより判断する。そして、得られた角度が90°±a°以内であるときは、葉が仮想視点eに対して略平行の向きとなっているので表示上不都合である。従ってステップS408に移り葉の向きを変更する処理を行う。また、それ以外の角度であるときは、葉の向きに変更は加えないものとして次のステップS410に移る。
【0140】
ステップS410においては、葉のポリゴン104aの向きを乱数ベクトルVrの方向へ向けるように葉のポリゴン104aを回転させる。この回転の処理は第1の実施の形態で説明した図6A、図6B、図14A及び図14Bにおいて、視点ベクトルVeの代わりに乱数ベクトルVrの方向へ回転させるものである。その処理手順は同様であるのでその詳細な説明を省略する。
【0141】
葉の向きが決定したので、図11におけるステップS203bが終了する。この処理をカウンタiの制御処理(ステップS203a、ステップS203c及びステップS203d)に従い実行し、Nl個の葉のポリゴン104aについて向きが決定したらレンダリング処理(ステップS204)に移ればよい。
【0142】
なお、葉の向きを決定する処理(ステップS203)については、図19を参照して乱数ベクトルVrが4角錐Pyの範囲内の方向を向くように設定したが、この範囲は4角錐Pyで示されるものでなくともよく、また、特に範囲を設定せずに任意の方向を向くようにしてもよい。
【0143】
このように、第3の実施の形態に係る画像描画方法においては、乱数を用いて葉のポリゴン104aの向きを決定するので、各々の葉の向きが異なるように設定され、植物の自然な雰囲気を表現することができる。
【0144】
また、仮想視点eの方向と略平行になる葉については向きを再設定する処理を施すので、仮想視点eから見て特に見えづらいということはない。
【0145】
以上の第1乃至第3の実施の形態においては、葉のポリゴン104aの向きが適切な方向になるように描画する方法を示した。以下の第4乃至第6の実施の形態においては、葉のポリゴン104aを幹102の周りに配置する方法について説明する。
【0146】
第4の実施の形態に係る画像描画方法について図15、図16、図20及び図21を参照しながら説明する。
【0147】
第4の実施の形態においては、第1の実施の形態とほぼ同じ処理を行うが、葉のポリゴン104aを配置させる処理が異なる。すなわち、乱数を用いることで各葉のオブジェクトごとにその配置位置を決定する。
【0148】
具体的には、図11における葉の配置を決める処理(ステップS202)の処理内容として図15、図16及び図20で示す処理を行う。
【0149】
図21は、基準絶対座標T1を幹102の略中央部に設定し、さらに葉を描画する空間の範囲Sを半径rの球状体に設定した例を示す。
【0150】
図20のステップS501において、葉を描画する基準絶対座標T1を適当に決定する。この基準絶対座標T1は幹102の座標値に基づいて決めればよい。
【0151】
次に、ステップS502において、基準絶対座標T1を基準として、葉を描画する空間の範囲Sを設定する。この範囲Sは球状体、楕円体、円柱体又は円錐体などのような形状でもよい。以下、範囲Sを球状体(図21参照)として説明する。
【0152】
ステップS503において、カウンタiに初期値「0」を格納して、該カウンタiを初期化する。
【0153】
そして、ステップS504において、CPU401の乱数発生器により3つの乱数を作りその乱数を範囲Sに合わせて葉の基準位置を得る。具体的には、乱数発生器によって得られた3つの乱数をq1、q2、q3として、また半径rを用いて、
K=r/(sqr(q1×q1+q2×q2+q3×q3))
なる定数値Kを求める。ここでsqr(…)は平方根関数である。
【0154】
そして、定数値Kをq1、q2、q3にそれぞれ掛け合わせて葉のポリゴン104aの4つの頂点104a1〜104a4のうちの1つ、例えば、頂点104a1のX軸相対座標値r1、Y軸相対座標値r2及びZ軸相対座標値r3を得る。
【0155】
葉のポリゴン104aの1つの頂点104a1の相対座標値(r1、r2、r3)が求まったら、この相対座標値を基準絶対座標T1を基準としてワールド座標値に変換し、カウンタiが示す番目の葉のポリゴン104aの1つの頂点104a1の位置としてRAM402などに記憶する。
【0156】
そして、ステップS505において、カウンタiを+1更新した後、次のステップS506において処理が完了したか判別される。つまり、iとNlが等しければNl個の葉のポリゴン104aの1つの頂点104a1の配置が決定したので、図20に示す処理を終了して、図11に示すステップS203に移る。iとNlが異なれば(iがNlより小さければ)、ステップS504に戻り処理を繰り返す。
【0157】
葉のポリゴン104aの配置が決定したら、図11におけるステップS202が終了したことになる。
【0158】
次に、図11の葉の向きを決める処理(ステップS203)に移る。この中でカウンタiで示される描画する葉の向きを決める処理(ステップS203b)以外は第1の実施の形態と同じである。
【0159】
ステップS203bを説明した図15及び図16において、まず最初にステップS401において、葉の向きが一義的に特定されているか判別する。第4の実施の形態においては、葉のポリゴン104aは4つの頂点104a1〜104a4のうち1つの頂点104a1の座標しか決まっていないので、向きは特定されていない。
【0160】
そこで、図16のステップS411に移り、葉のポリゴン104aの向きを仮に特定する。ここでは、第2の実施の形態の場合と同じ向きであるZ軸方向に規定するものとする。
【0161】
以降の処理は、第1の実施の形態及び第2の実施の形態の場合と同様である。すなわち、図15及び図16においてステップS412とステップS412aはステップS405とステップS405aに、ステップS413はステップS406に、ステップS414はステップS408に、ステップS415はステップS409に、そして、ステップS416はステップS410にそれぞれ相当する。
【0162】
第2の実施の形態の場合のステップS407に相当する処理はないが、当初の向きが第2の実施の形態の場合の向きと同じなのでステップS412aにおける分岐後の処理は不要であり、結果としてステップS407が不要となっている。
【0163】
これにより、図11における葉の向きを決める処理(ステップS203)が終了するので、以降は第1の実施の形態と同様に処理をすればよい。
【0164】
このように、第4の実施の形態に係る画像描画方法においては、乱数を用いて葉のポリゴン104aの配置を決定するので、画像製作者は葉の枚数Nlだけを決定すればよく、通常のモデリング作業が不要になる。しかも、異なった葉の配置を有する木を何種類でも構成することができる。
【0165】
次に、第5の実施の形態に係る画像描画方法について図22、図23A、図23B及び図23Cを参照しながら説明する。
【0166】
第5の実施の形態においては、第1の実施の形態とほぼ同じ処理を行うが、葉のポリゴン104aを配置させる処理が異なる。すなわち、所定の関数を用いることで各葉のオブジェクトごとにその配置位置を決定する。
【0167】
具体的には、図11における描画する葉の配置を決める処理(ステップS202)の処理内容として図15、図16及び図22で示す処理を行う。
【0168】
図23Aは関数fに最大値がrである正規分布関数を変形したものを使用して前記X軸相対座標値r1を計算する例である。関数fは正規分布関数の縦軸を逆にしたものであり、この関数fを用いることでカウンタiに対して比較的0に近い値が多く得られ、半径rに近い値は少なくなる。また半径r以上の値はあり得ない。
【0169】
図23Bも、関数gに最大値がrである正規分布関数を変形したものを使用して前記Y軸相対座標値r2を計算する例である。関数gは通常の正規分布関数を2つに分けて位相をずらしたものであり、関数fとは異なる値が得られるようになっている。
【0170】
図23Cは、関数hに1次関数を使用して前記Z軸相対座標値r3を計算する例である。正規分布関数のように複雑な演算を必要としないので簡易に計算できる。
【0171】
図22のステップS601において、葉を描画する基準絶対座標T1を適当に決める。さらに、ステップS602において、基準絶対座標T1を基準として葉を描画する空間の範囲Sを設定する。基準絶対座標T1及び範囲Sは第4の実施の形態で説明したとおりであり、以下の説明においても範囲Sを半径rの球状体とする(図21参照)。
【0172】
次に、ステップS603において、カウンタiに初期値「0」を格納して、該カウンタiを初期化する。
【0173】
そして、ステップS604において、適当な関数により葉のポリゴン104aの4つの頂点104a1〜104a4のうちの1つ、例えば、頂点104a1の配置を決定する。関数は3つ用意し、それぞれ、
r1=f(i、r)
r2=g(i、r)
r3=h(i、r)
とする。関数f、g、hはそれぞれカウンタiと半径rにより値を決定するものである。
【0174】
関数f、g、hの例を図23A、図23B及び図23Cに示す。
【0175】
なお、これらの関数f、g、hは適宜設定すればよく、上記以外のものでもよい。また、各関数f、g、hの横軸値はカウンタiにより順次増加させるのではなく、乱数などを用いてランダムに横軸値を選択するようにしてもよい。
【0176】
このようにして、半径rの球状体の範囲S内に分布する葉のポリゴン104aの4つの頂点104a1〜104a4のうち1つの頂点104a1の相対座標(r1、r2、r3)が決まる。
【0177】
この相対座標値を基準絶対座標T1を基準としてワールド座標値に変換し、カウンタiで示す葉のポリゴン104aの4つの頂点104a1〜104a4のうち1つの頂点104a1の位置としてRAM402などに記憶する。
【0178】
そして、ステップS605において、カウンタiを+1更新した後、次のステップS606において処理が完了したか判別される。つまり、iとNlが等しければNl個の葉のポリゴン104aの配置が決定したので、図20に示す処理を終了して図11に示すステップS203に移る。iとNlが異なれば(iがNlより小さければ)ステップS604に戻り処理を繰り返す。
【0179】
葉のポリゴン104aの配置が決定したら、図11におけるステップS202が終了したことになる。
【0180】
次に、図11、図15及び図16で示される葉の向きを決める処理に移る。これらの処理は第4の実施の形態の場合と同様であるのでその詳細な説明を省略する。
【0181】
また、葉の向きを決める処理が終了したら、それ以降は第1の実施の形態と同様に処理をすればよい。
【0182】
このように、第5の実施の形態に係る画像描画方法においては、関数を用いて葉のポリゴンの配置を決定するので、画像製作者は葉の枚数Nlと関数f、g、hだけを決定すればよいので通常のモデリング作業が不要になり、しかも、正規分布関数などを用いることで、基準絶対座標T1を中心として、中心が密で、半径rの方向に向かい遠方になるほど粗であるような葉の配置を実現し、植物の自然な雰囲気を表現することができる。
【0183】
次に、第6の実施の形態に係る画像描画方法について図24〜図27を参照しながら説明する。
【0184】
第6の実施の形態においては、第1の実施の形態とほぼ同じ処理を行うが、葉のポリゴン104aを配置させる処理が異なる。すなわち、幹102の枝ベクトルVbi(図26参照)を用意しておくことで、この枝ベクトルVbi上に葉のポリゴン104aを配置するようにする。なお、iはカウンタiの値である。
【0185】
具体的には、図11における葉の配置を決める処理(ステップS202)の処理内容として図15、図16及び図24で示す処理を行う。
【0186】
図25に示す枝ベクトル情報テーブル112は、Nb個の枝ベクトルVbiの情報を有し、それぞれの枝ベクトル情報は基準に対する枝ベクトルVbiの起点の相対座標、角度データ及び長さLiを含む。
【0187】
図26は枝ベクトルVbiを説明する図である。ここで、枝ベクトルVbiとは幹102に関してNb個の枝を示すものであり、その起点は相対座標で表されている。つまり幹102が仮想空間100のどこに配置されていても対応が可能である。また、枝ベクトルVbi角度と大きさLiで表される極座標形式で表されるものとする。
【0188】
図27は葉のポリゴン104aの頂点の4つの頂点104a1〜104a4のうち1つの頂点104a1の位置を示すベクトルVbijを説明する図である。ベクトルVbijは枝ベクトルVbiと同じ向きで大きさのみを変更したものであることを示す。
【0189】
図24のステップS701において、幹102の枝に関するデータを読み込む。つまりオブジェクト情報テーブル106(図8参照)に含まれている枝の数Nb、枝ベクトル情報テーブルアドレスADb、図25に示す枝ベクトル情報テーブル112を読み込む。
【0190】
次に、ステップS702において、カウンタiに初期値「0」を格納して、該カウンタiを初期化する。
【0191】
ステップS703に移り、アドレスADbで示される枝ベクトル情報テーブル112からカウンタiで示される枝ベクトルVbiの情報を読み込む。
【0192】
そして、ステップS704において、枝ベクトルVbiに関する葉の数Nbiを決定する。説明を簡略化するためにNbi=Nl/Nbとする。つまり、全ての葉の数の合計が他の実施の形態と同様にNlになるようにする。
【0193】
ステップS705において、カウンタjに初期値「0」を格納して、該カウンタjを初期化する。
【0194】
ステップS706に移り、カウンタiで示される枝ベクトルVbiに関して、その枝ベクトルVbi上にNbi枚の葉のポリゴン104aの配置を計算する。
【0195】
つまり、図25及び図27に示すように、枝ベクトルVbiの大きさがLiであることから、枝ベクトルVbiと向きが同じで大きさがLi×j/Nbiである葉のポリゴン104aの1つの頂点104a1の相対座標ベクトルVbijを求める。そしてこの相対座標値を基準絶対座標T1を基準としてワールド座標値に変換し、(i×Nbi)+j番目の葉の位置としてRAM402などに記憶する。
【0196】
そして、ステップS707において、カウンタjを+1更新した後、次のステップS708において処理が完了したか判別される。つまり、カウンタjと枝ベクトルVbi上の葉の数Nbiが等しければステップS709に移る。jとNbiが異なれば(jがNbiより小さければ)ステップS706に戻り次の処理を行う。
【0197】
さらに、ステップS709において、カウンタiを+1更新した後、次のステップS710において処理が完了したか判別される。つまり、カウンタiと枝ベクトルVbiの数Nmが等しければNl個の葉のポリゴン104aの頂点104a1の配置が決定したので、図24に示す処理を終了して図11に示すステップS203に移る。iとNmが異なれば(iがNmより小さければ)、ステップS703に戻り次の処理を行う。
【0198】
葉のポリゴン104aの配置が決定したら、図11におけるステップS202が終了したことになる。
【0199】
次に、図11、図15及び図16で示される葉の向きを決める処理に移る。これらの処理は第4の実施の形態の場合と同様であるのでその詳細な説明を省略する。
【0200】
また、葉の向きを決める処理が終了したら、それ以降は第1の実施の形態と同様に処理をすればよい。
【0201】
枝ベクトルは実際に幹102の一部として描画されている箇所を例示して説明したが、枝の存在しない箇所に葉だけを表示させるために、架空の位置に枝ベクトルVbiを設定してもよい。
【0202】
このように、第6の実施の形態に係る画像描画方法においては、幹102に枝ベクトルVbiを用意して、その枝ベクトル上に葉を配置するようにしたので、画像製作者は葉の枚数Nlと枝ベクトルVbiだけを決定すればよいので通常のモデリング作業が不要になり、しかも、各葉は枝上に配置されることからより実際の植物に近い雰囲気を表現することができる。
【0203】
上述の説明では葉の描画について述べたが、葉の描画以外にも動物の群の描画など他の態様に適用してもよい。
【0204】
なお、この発明に係る画像描画装置、記録媒体及びプログラムは、上述の実施の形態に限らず、この発明の要旨を逸脱することなく、種々の構成を採り得ることはもちろんである。
【0205】
【発明の効果】
以上説明したように、本発明に係る画像描画装置、記録媒体及びプログラムによれば、所定のポリゴン面の法線が所定の方向を向くようにポリゴン面を回転させる。
【0206】
このため、描画上不都合な向きのポリゴンを修正することができるという効果が達成される。
【図面の簡単な説明】
【図1】本実施の形態に係るハードウェア構成図である。
【図2】本実施の形態に係る電気回路の構成図である。
【図3】左右のジョイスティックにより得られるアナログ入力値の説明図である。
【図4】葉のポリゴンを表す図である。
【図5】幹のオブジェクトと多数の葉のオブジェクトを描いた例を示す図である。
【図6】図6Aは仮想空間のZX平面図であり、図6Bは図6Aの拡大図であり、図6Cは仮想空間のZY平面図である。
【図7】木の描画処理のフローチャートである。
【図8】オブジェクト情報テーブルを示す図である。
【図9】幹のポリゴン情報テーブルを示す図である。
【図10】幹の描画処理のフローチャートである。
【図11】葉の描画処理のフローチャートである。
【図12】第1の実施の形態に係る葉の向きを決定するフローチャートである。
【図13】葉のポリゴン情報テーブルを示す図である。
【図14】図14Aは第1の実施の形態に係る第1の回転処理を説明する図であり、図14Bは第1の実施の形態に係る第2の回転処理を説明する図である。
【図15】葉の向きを決定する処理方法を選択する流れを示すフローチャート(その1)である。
【図16】葉の向きを決定する処理方法を選択する流れを示すフローチャート(その2)である。
【図17】図17Aは第2の実施の形態に係る仮想空間のZX平面図であり、図17Bは図17Aの拡大図である。
【図18】第2の実施の形態に係る回転処理を説明する図である。
【図19】第3の実施の形態に係る回転処理において、ベクトルを説明する図である。
【図20】第4の実施の形態に係る葉の配置を決定するフローチャートである。
【図21】第4の実施の形態に係る葉の描画範囲を説明する図である。
【図22】第5の実施の形態に係る葉の配置を決定するフローチャートである。
【図23】図23Aは第5の実施の形態に係る葉の配置のX軸成分を決定する関数を示す図であり、図23Bは第5の実施の形態に係る葉の配置のY軸成分を決定する関数を示す図であり、図23Cは第5の実施の形態に係る葉の配置のZ軸成分を決定する関数を示す図である。
【図24】第6の実施の形態に係る葉の配置を決定するフローチャートである。
【図25】枝ベクトル情報テーブルを示す図である。
【図26】枝ベクトルを表す図である。
【図27】枝ベクトルを表す図である。
【符号の説明】
100…仮想空間 102…幹
104a…葉のポリゴン
104a1〜104a4…葉のポリゴンの頂点
e…仮想視点 f、g、h…関数
V…ポリゴン面の法線ベクトル Vbi…枝ベクトル
Z0…スクリーン面
Claims (8)
- 画像を表示するための表示装置が接続可能とされ、各種プログラムを実行するCPUが内蔵された画像描画装置において、
前記プログラムは、
オブジェクトおよびポリゴンが配置される仮想空間上の座標系で、
少なくとも1つのポリゴンについて、所定の手段により回転させる手段と、
画像を描画する基準の仮想視点の方向と、回転した前記ポリゴンの面の法線の方向とのなす角が90°±a°のときに、前記ポリゴン面の向きを再設定する手段と、
して機能することを特徴とする画像描画装置。 - 請求項1記載の画像描画装置において、
前記ポリゴンは、植物の葉または枝を含む画像であることを特徴とする画像描画装置。 - 請求項1又は2記載の画像描画装置において、
前記所定の手段は乱数発生手段であり、該乱数発止手段によって得られた乱数から設定された方向に前記ポリゴンを回転させることを特徴とする画像描画装置。 - 請求項1〜3のいずれか1項に記載の画像描画装置において、
前記ポリゴンは、長方形又は正方形であることを特徴とする画像描画装置。 - 請求項1〜4のいずれか1項に記載の画像描画装置において、
前記ポリゴンに関する情報は、前記ポリゴンの全頂点のうち少なくとも1つの頂点の位置情報データを有することを特徴とする画像描画装置。 - 請求項5記載の画像描画装置において、
前記ポリゴンを回転させる手段では、前記少なくとも1つの頂点の位置情報データに対して回転の計算を施して回転後の変換位置を求めるとともに、他の頂点は前記変換位置から換算して求めることを特徴とする画像描画装置。 - 画像を表示するための表示装置が接続可能とされ、各種プログラムを実行するCPUが内蔵された画像描画装置で使用されるプログラムやデータが記録され、前記CPUが読み取り可能な記録媒体において、
前記プログラムは、
オブジェクトおよびポリゴンが配置される仮想空間上の座標系で、
少なくとも1つのポリゴンについて、所定の手段により回転させる手段と、
画像を描画する基準の仮想視点の方向と、回転した前記ポリゴンの面の法線の方向とのなす角が90°±a°のときに、前記ポリゴン面の向きを再設定する手段と、
して機能することを特徴とする記録媒体。 - 画像を表示するための表示装置が接続可能とされ、各種プログラムを実行するCPUが内蔵された画像描画装置で使用され、コンピュータにて読み取り、実行可能なプログラムにおいて、
オブジェクトおよびポリゴンが配置される仮想空間上の座標系で、
少なくとも1つのポリゴンについて、所定の手段により回転させる手段と、
画像を描画する基準の仮想視点の方向と、回転した前記ポリゴンの面の法線の方向とのなす角が90°±a°のときに、前記ポリゴン面の向きを再設定する手段と、
して機能することを特徴とするプログラム。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2001359017A JP3715568B2 (ja) | 2000-12-14 | 2001-11-26 | 画像描画装置、記録媒体及びプログラム |
Applications Claiming Priority (3)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2000-380786 | 2000-12-14 | ||
| JP2000380786 | 2000-12-14 | ||
| JP2001359017A JP3715568B2 (ja) | 2000-12-14 | 2001-11-26 | 画像描画装置、記録媒体及びプログラム |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JP2002245481A JP2002245481A (ja) | 2002-08-30 |
| JP3715568B2 true JP3715568B2 (ja) | 2005-11-09 |
Family
ID=26605849
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2001359017A Expired - Fee Related JP3715568B2 (ja) | 2000-12-14 | 2001-11-26 | 画像描画装置、記録媒体及びプログラム |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JP3715568B2 (ja) |
Family Cites Families (6)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP3401899B2 (ja) * | 1994-03-01 | 2003-04-28 | 株式会社セガ | 画像表示処理装置 |
| JP2981516B2 (ja) * | 1995-03-10 | 1999-11-22 | 富士通株式会社 | 三次元形状編集装置 |
| JP3420870B2 (ja) * | 1995-12-18 | 2003-06-30 | 株式会社ナムコ | 画像合成方法、画像合成装置及びゲーム装置 |
| JPH09305738A (ja) * | 1996-05-10 | 1997-11-28 | Sony Computer Entertainment:Kk | 画像処理方法および装置 |
| US6831659B1 (en) * | 1998-05-20 | 2004-12-14 | Kabushiki Kaisha Sega Enterprises | Image processor unit, game machine, image processing method, and recording medium |
| JP2000132703A (ja) * | 1998-10-23 | 2000-05-12 | Sega Enterp Ltd | 画像処理装置 |
-
2001
- 2001-11-26 JP JP2001359017A patent/JP3715568B2/ja not_active Expired - Fee Related
Also Published As
| Publication number | Publication date |
|---|---|
| JP2002245481A (ja) | 2002-08-30 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP3668019B2 (ja) | 記録媒体、画像処理装置および画像処理方法 | |
| JP3637031B2 (ja) | ゲーム装置およびゲームプログラム | |
| EP0840256B1 (en) | Apparatus and method for generating skeleton-based dynamic picture images as well as medium storing therein program for generation of such picture images | |
| US6798408B2 (en) | Image generation apparatus, method and recording medium | |
| US6166718A (en) | Video game system with vertical array of cursor images | |
| EP2105905A2 (en) | Image generation apparatus | |
| US6670957B2 (en) | Entertainment apparatus, storage medium and object display method | |
| US7062157B2 (en) | Method and system for modifying a displayed symbolic image based on the accuracy of an input geometric shape | |
| JP3661167B2 (ja) | リフラクション・マッピングを実行する装置及び方法 | |
| JP3602835B2 (ja) | ビデオゲーム装置およびその制御方法ならびにゲームプログラム | |
| JP3990258B2 (ja) | 画像生成システム、プログラム及び情報記憶媒体 | |
| JP3001538B1 (ja) | ビデオゲーム装置、ビデオゲームにおけるモデル表示方法及びビデオゲームにおけるモデル表示プログラムが記録された可読記録媒体 | |
| JP3715568B2 (ja) | 画像描画装置、記録媒体及びプログラム | |
| US6585594B2 (en) | Storage medium storing display control program, entertainment apparatus, and display control program | |
| JP3539839B2 (ja) | 疑似3次元表示されたフィールド内におけるカーソルの表示方法、ゲームシステム及び記録媒体 | |
| US20020082078A1 (en) | Storage medium storing display control program, entertainment apparatus, and display control program | |
| JP3839355B2 (ja) | ゲーム装置およびゲームプログラム | |
| JP4447000B2 (ja) | 画像生成システム、プログラム及び情報記憶媒体 | |
| JP4054708B2 (ja) | ゲーム装置およびゲームプログラム | |
| US20020075275A1 (en) | Storage medium storing display control program, entertainment apparatus, and display control program | |
| JP3183636B2 (ja) | 3次元ゲーム装置及び情報記憶媒体 | |
| JP4824738B2 (ja) | ゲームプログラム、ゲーム装置、及びゲーム制御方法 | |
| JP3735535B2 (ja) | テクスチャマッピング方法、記録媒体、プログラム、およびプログラム実行装置 | |
| JPH06205879A (ja) | 電子遊戯機器 | |
| JP2002251626A (ja) | 画像の生成方法及びそれに用いるプログラム |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20050113 |
|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20050125 |
|
| A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20050324 |
|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20050524 |
|
| A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20050720 |
|
| 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: 20050823 |
|
| A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20050825 |
|
| R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080902 Year of fee payment: 3 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090902 Year of fee payment: 4 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090902 Year of fee payment: 4 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100902 Year of fee payment: 5 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100902 Year of fee payment: 5 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110902 Year of fee payment: 6 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120902 Year of fee payment: 7 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130902 Year of fee payment: 8 |
|
| 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 |