(57)【特許請求の範囲】
【請求項１】
画像を表示するための表示装置が接続可能とされ、各種プログラムを実行するＣＰＵが内蔵された画像描画装置において、
前記プログラムは、
オブジェクトおよびポリゴンが配置される仮想空間上の座標系で、
少なくとも１つのポリゴンについて、所定の手段により回転させる手段と、
画像を描画する基準の仮想視点の方向と、回転した前記ポリゴンの面の法線の方向とのなす角が９０°±ａ°のときに、前記ポリゴン面の向きを再設定する手段と、
して機能することを特徴とする画像描画装置。
【請求項２】
請求項１記載の画像描画装置において、
前記ポリゴンは、植物の葉または枝を含む画像であることを特徴とする画像描画装置。
【請求項３】
請求項１又は２記載の画像描画装置において、
前記所定の手段は乱数発生手段であり、該乱数発止手段によって得られた乱数から設定された方向に前記ポリゴンを回転させることを特徴とする画像描画装置。
【請求項４】
請求項１〜３のいずれか１項に記載の画像描画装置において、
前記ポリゴンは、長方形又は正方形であることを特徴とする画像描画装置。
【請求項５】
請求項１〜４のいずれか１項に記載の画像描画装置において、
前記ポリゴンに関する情報は、前記ポリゴンの全頂点のうち少なくとも１つの頂点の位置情報データを有することを特徴とする画像描画装置。
【請求項６】
請求項５記載の画像描画装置において、
前記ポリゴンを回転させる手段では、前記少なくとも１つの頂点の位置情報データに対して回転の計算を施して回転後の変換位置を求めるとともに、他の頂点は前記変換位置から換算して求めることを特徴とする画像描画装置。
【請求項７】
画像を表示するための表示装置が接続可能とされ、各種プログラムを実行するＣＰＵが内蔵された画像描画装置で使用されるプログラムやデータが記録され、前記ＣＰＵが読み取り可能な記録媒体において、
前記プログラムは、
オブジェクトおよびポリゴンが配置される仮想空間上の座標系で、
少なくとも１つのポリゴンについて、所定の手段により回転させる手段と、
画像を描画する基準の仮想視点の方向と、回転した前記ポリゴンの面の法線の方向とのなす角が９０°±ａ°のときに、前記ポリゴン面の向きを再設定する手段と、
して機能することを特徴とする記録媒体。
【請求項８】
画像を表示するための表示装置が接続可能とされ、各種プログラムを実行するＣＰＵが内蔵された画像描画装置で使用され、コンピュータにて読み取り、実行可能なプログラムにおいて、
オブジェクトおよびポリゴンが配置される仮想空間上の座標系で、
少なくとも１つのポリゴンについて、所定の手段により回転させる手段と、
画像を描画する基準の仮想視点の方向と、回転した前記ポリゴンの面の法線の方向とのなす角が９０°±ａ°のときに、前記ポリゴン面の向きを再設定する手段と、
して機能することを特徴とするプログラム。
【発明の詳細な説明】
【０００１】
本発明は、植物の葉などのように、同一形状のオブジェクトを多数描画する場合に好適な画像描画装置、この画像描画処理を実現するプログラムが記録された記録媒体及びプログラムに関する。
【０００２】
【従来の技術】
近時、隠線処理、隠面消去処理、スムーズシェーディング、テクスチャマッピング等のコンピュータグラフィックス（ＣＧ）処理が、ハードウエアの飛躍的な発達と相俟って急速に進歩している。
【０００３】
ＣＧ処理としては、一般に、ＣＡＤの３次元モデリングによって複数の３次元形状（オブジェクト）を作成し、これらのオブジェクトに対して色や陰影をつけ、鏡面反射、拡散反射、屈折、透明感などの光学的特性を付加し、表面模様をつけ、更に、まわりの状況（窓や景色の映り込みや光の回り込み等）に応じて描画するというレンダリング処理が行われる。
【０００４】
【発明が解決しようとする課題】
ところで、植物の葉などのように、同一形状のオブジェクトを多数描く場合、すべてのオブジェクトについて上述したレンダリング処理を施して描画する方法が考えられるが、細かなポリゴン単位に処理が行われるため、その計算や描画に長時間がかかり、例えばモニタの画面上でのこれらオブジェクトの表示速度が遅くなるという不都合が生じる。
【０００５】
また、葉をそれぞれ１つのポリゴンで表示させる場合に、ポリゴンは平面であることから視点の位置によっては表示が不自然になることがある。
【０００６】
それぞれの葉を複数のポリゴンで構成すれば、実物の葉のように緩やかな曲面をもつ形状に近似させることも可能であるがポリゴン情報データが肥大化してしまう。
【０００７】
さらには、植物の葉のように多数のポリゴンを有する画像を製作する場合、画像製作者がその多数のポリゴンの配置を１つずつ決めなくてはならず、画像製作者にとって大きな負担となっている。
【０００８】
本発明はこのような課題を考慮してなされたものであり、植物の葉などのように、同一形状の構成物を多数描画する場合に各々の構成物を１つのポリゴンで表し、さらに、適切な方向を向くようにポリゴンを回転させる処理を行うことで計算や描画にかかる時間を大幅に低減することができる画像描画装置、前記画像描画処理を実現することができるプログラムが記録された記録媒体及びプログラムを提供することを目的とする。
【０００９】
【課題を解決するための手段】
本発明に係る画像描画装置、本発明に係る記録媒体並びに本発明に係るプログラムは、オブジェクトおよびポリゴンが配置される仮想空間上の座標系で、少なくとも１つのポリゴンについて、所定の手段により回転させる手段と、画像を描画する基準の仮想視点の方向と、回転した前記ポリゴンの面の法線の方向とのなす角が９０°±ａ°のときに、前記ポリゴン面の向きを再設定する手段とを有することを特徴とする。
【００１０】
このようにすることにより、仮想視点から見てポリゴンが見えづらいということがなく、また、植物の自然な雰囲気を表現することなどができる。ここで、前記ポリゴンは、植物の葉または枝を含む画像とすれば植物を描画することができる。
【００１１】
また前記所定の手段は乱数発生手段であり、該乱数発止手段によって得られた乱数から設定された方向に前記ポリゴンを回転させてもよい。
【００１３】
このようにすることにより、仮想視点から見てポリゴンが見えづらいということがなく、また、植物の自然な雰囲気を表現することなどができる。
【００１９】
さらに、前記ポリゴンは、長方形又は正方形であると処理しやすい。
【００２０】
またさらに、前記ポリゴンに関する情報は、前記ポリゴンの全頂点のうち少なくとも１つの頂点の位置情報データを有するようにするとデータ量を少なくすることができる。
【００２１】
前記ポリゴンを回転させるステップでは、前記少なくとも１つの頂点の位置情報データに対して回転の計算を施して回転後の変換位置を求めるとともに、他の頂点は前記変換位置から換算して求めると計算量を低減させることが可能である。
【００２２】
【発明の実施の形態】
以下、本発明に係る画像描画装置をエンタテインメントシステムに適用した実施の形態例と、本発明に係る記録媒体及びプログラムを前記エンタテインメントシステムで実行されるプログラムやデータが記録された記録媒体及びプログラムに適用した実施の形態例について図１〜図２７を参照しながら説明する。
【００２３】
まず、本実施の形態に係るエンタテインメントシステム１０は、基本的には、図１に示すように、各種プログラムを実行させるエンタテインメント装置１２と、該エンタテインメント装置１２に対して着脱自在とされるメモリカード１４と、エンタテインメント装置１２に対して着脱自在とされた操作装置（コントローラ）１６と、エンタテインメント装置１２からの映像・音声信号が供給されるテレビ受像機等の表示装置であるモニタ（ディスプレイ）１８とから構成される。
【００２４】
エンタテインメント装置１２は、例えば、ＣＤ−ＲＯＭやＤＶＤ−ＲＯＭ等の光ディスク２０等の大容量記憶媒体に記録されているプログラムを読み出して、使用者（例えば、ユーザ、ゲームプレイヤ等）からの指示に応じてゲーム等を実行するためのものである。なお、ゲームの実行とは、主として、コントローラ１６からの入力をコネクタ１５を通じて受け、モニタ１８の画面上における表示や音声を制御しながらゲームの進行を制御することをいう。
【００２５】
このエンタテインメント装置１２は、図１に示すように、扁平な直方体を重ねた形状を有しており、前面パネルには、プログラム・データの記録媒体である光ディスク２０が装着されるディスク装着部としての前後に移動するディスクトレイ２２と、現在実行中のプログラム等を任意にリセット等するためのリセットスイッチ２４と、ディスクトレイ２２を引き出すためのオープンボタン２６と、メモリカード１４の２つの差込口３０と、コントローラ１６のコネクタ１５が差し込まれる２つのコントローラ端子３２等とが配置され、背面側には、電源スイッチ２８、映像と音声の出力端子であり、ＡＶ（audio visual）ケーブルを介してモニタ１８と接続される図示していないＡＶマルチ出力端子等が配置されている。
【００２６】
エンタテインメント装置１２は、コンピュータゲーム（ビデオゲーム）のプログラムやデータが記録されたＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ等の記録媒体である光ディスク２０から当該プログラムを読み取り、それを実行することによりモニタ１８の画面上にキャラクタやシーンを表示させる制御機能のほか、他の光ディスク２０であるＤＶＤ（digital video disk）による映画の再生およびＣＤＤＡ（compact disk digital audio）による音楽の再生等の各種制御機能が内蔵されている。また、通信ネットワーク等を介して通信により得られるプログラムを実行する機能も有する。ゲームプログラムの実行中には、表示装置としてのモニタ１８の画面上にエンタテインメント装置１２が生成した３次元コンピュータグラフィックス映像が表示される。
【００２７】
この場合、コントローラ１６からの信号も、エンタテインメント装置１２の上記制御機能の一つによって処理され、その内容がモニタ１８の画面上の、例えばキャラクタの動き、シーンの切り替えなどに反映されるようになっている。
【００２８】
コントローラ１６は、上面の中央左右に第１、第２操作部５１、５２が設けられ、側面には第３、第４操作部５３、５４が設けられ、上面の手前側左右には、アナログ操作を行うための左側のジョイスティック７０と右側のジョイスティック７２が設けられている。
【００２９】
第１の操作部５１は、たとえばモニタ１８の画面に表示されたキャラクタ等に動作を与えるための押圧操作部であり、光ディスク２０に記録されているプログラム等によりその機能が設定され、キャラクタ等を上下左右等に動かす機能を有する４つの操作キー（方向キーともいう。）５１ａ、５１ｂ、５１ｃ、５１ｄから構成されている。方向キー５１ａは上方向キー、方向キー５１ｂは下方向キー、方向キー５１ｃは左方向キー、方向キー５１ｄは右方向キーともいう。
【００３０】
第２の操作部５２は、押圧操作用の円柱状をした４個の操作ボタン５２ａ、５２ｂ、５２ｃ、５２ｄを有し、各操作ボタン５２ａ〜５２ｄの頭部には、それぞれ「△」、「○」、「×」、「□」の識別マークが付けられており、各操作ボタン５２ａ〜５２ｄは、それぞれ△ボタン５２ａ、○ボタン５２ｂ、×ボタン５２ｃ、□ボタン５２ｄともいう。
【００３１】
この第２の操作部５２の各操作ボタン５２ａ〜５２ｄは、光ディスク２０に記録されたプログラム等によりその機能が設定され、各操作ボタン５２ａ〜５２ｄに、たとえばキャラクタ等の左腕、右腕、左足、右足を動かす機能が割り付けられる。
【００３２】
第３、第４操作部５３、５４は、ほぼ同じ構造をしており、ともに上下に並ぶ押圧操作用の２個の操作ボタン（Ｌ１ボタンともいう。）５３ａ、操作ボタン（Ｌ２ボタンともいう。）５３ｂ、および操作ボタン（Ｒ１ボタンともいう。）５４ａ、操作ボタン（Ｒ２ボタンともいう。）５４ｂを備えている。これら第３、第４操作部５３、５４も、光ディスク２０に記録されたプログラムによりその機能が設定され、たとえばキャラクタに特殊な動作をさせる機能が割り付けられる。
【００３３】
左右のジョイスティック７０、７２は、それぞれ操作軸を中心に３６０゜方向に傾動、回転可能とされる可変抵抗器等の信号入力素子を備えており、傾動、回転に応じてアナログ値が出力される。また、この左右のジョイスティック７０、７２は、図示していない弾性部材により中立位置に復帰するようになっている。なお、左右のジョイスティック７０、７２は、それぞれ下方に押圧することによって、ジョイスティック７０、７２の傾動、回転に伴うアナログ値とは別の信号が出力される。つまり、左右のジョイスティック７０、７２は、押圧操作用の第５、第６操作部としての操作ボタン（Ｌ３ボタン）７０ａ、（Ｒ３ボタン）７２ａの機能を有している。
【００３４】
左右のジョイスティック７０、７２を回転、傾動操作することにより、たとえばキャラクタ等を回転させながら移動させ、あるいは速度を可変しながら移動させ、さらには状態を変更させる等のアナログ的な動きを行うことを可能とする指令信号を入力することが可能となる。
【００３５】
図１において、左右のジョイスティック７０、７２は、前記第１及び第２操作部５１、５２と切り換えて使用可能となる。その切換えは、アナログモードスイッチ７４により行う。アナログモードスイッチ７４により左右のジョイスティック７０、７２が選択されると、表示部７６が点灯して、左右のジョイスティック７０、７２の選択状態を表示するようになっている。
【００３６】
左右のジョイスティック７０、７２を操作することによって得られるアナログ入力値は、図３に示すように、垂直方向について上から下に向けて「０」〜「２５５」とされ、水平方向について左から右に向けて「０」〜「２５５」とされている。
【００３７】
コントローラ１６には、上記のほかにゲーム等の開始を指示するスタートボタン（スタートスイッチ）７８や、ゲーム開始に際してゲームの難易度等を選択するためのセレクトボタン（選択スイッチ）８０などが設けられている。
【００３８】
次に、図２のブロック図を参照して、図１に示したエンタテインメント装置１２の内部構成とその一般的な動作について説明する。
【００３９】
このエンタテインメント装置１２は、該エンタテインメント装置１２を制御するＣＰＵ４０１に対して、半導体メモリとしてのＲＡＭ４０２及びバス４０３がそれぞれ接続されて構成されている。
【００４０】
前記バス４０３には、グラフィックシンセサイザー（ＧＳ）４０４、インプットアウトプットプロセッサ（ＩＯＰ）４０９がそれぞれ接続される。ＧＳ４０４には、フレームバッファ、Ｚバッファおよびテクスチャメモリ等を含むＲＡＭ（画像メモリ）４０５と、このＲＡＭ４０５中のフレームバッファへの描画機能を含むレンダリング機能を有するレンダリングエンジン（ＲＥ）４０６とが含まれる。
【００４１】
このように構成されるＧＳ４０４には、例えばデジタルＲＧＢ信号等をＮＴＳＣ標準テレビジョン方式に変換するためのエンコーダ４０７を介して、外部機器としてのモニタ１８が接続される。
【００４２】
ＩＯＰ４０９には、光ディスク２０に記録されているデータを再生し、デコードするためのドライバ（ＤＲＶ）４１０、サウンド生成系４１２、フラッシュメモリからなる外部メモリとしてのメモリカード１４、コントローラ１６およびオペレーティング・システム等の記録されたＲＯＭ４１６がそれぞれ接続される。サウンド生成系４１２は、増幅器４１３を介して、外部機器としてのスピーカ４１４およびモニタ１８に接続され、音声信号を供給する。
【００４３】
サウンド生成系４１２は、ＣＰＵ４０１からの指示に基づいて、楽音、効果音等を発生する音声処理装置（Sound Processing Unit：ＳＰＵ）４２０と、このＳＰＵ４２０により発生された楽音、効果音等を記憶しているサウンドバッファ４２２とを有する。ＳＰＵ４２０によって発生される楽音、効果音等の信号は、スピーカ４１４やモニタ１８の音声端子に供給され、これらスピーカ４１４やモニタ１８のスピーカから楽音、効果音等として出力（発音）するようになっている。
【００４４】
ここで、ＳＰＵ４２０は、例えば１６ビットの音声データを４ビットの差分信号として適応予測符号化（ＡＤＰＣＭ：Adaptive Differential PCM）された音声データを再生するＡＤＰＣＭ復号機能と、サウンドバッファ４２２に記憶されている波形データを再生することにより、効果音等を発生する再生機能と、サウンドバッファ４２２に記憶されている波形データを変調させて再生する変調機能等を備えている。
【００４５】
このような機能を備えることによって、このサウンド生成系４１２は、ＣＰＵ４０１からの指示によってサウンドバッファ４２２に記録された波形データに基づいて楽音、効果音等を発生するいわゆるサンプリング音源として使用することができるようになっている。
【００４６】
また、メモリカード１４は、たとえばＣＰＵもしくはゲートアレイおよびフラッシュメモリからなるカード型の外部記憶装置であって、図２に示されたエンタテインメント装置１２に対し、その差込口３０を介して着脱自在となっており、ゲームの途中状態が記憶されたり、ＤＶＤ再生用のプログラム等が記憶されている。
【００４７】
コントローラ１６は、搭載された複数のボタンの押圧により、指令（２値指令または多値指令）をエンタテインメント装置１２に与えるためのものである。また、ドライバ４１０は、ＭＰＥＧ（moving picture experts group）標準に基づいてエンコードされた画像をデコードするためのデコーダを備えている。
【００４８】
また、ＣＰＵ４０１は図示しない乱数発生器を備えている。
【００４９】
ところで、木のオブジェクトを３次元画像で描く場合、一般に、幹のオブジェクトと、多数の葉のオブジェクトに分けて描くことが考えられる。通常のレンダリング処理にて幹と葉の両オブジェクトを描く場合、特に、葉のオブジェクトは、幹のオブジェクトと同様に、複数のポリゴンで、かつ、固定化した座標のもとで描くことになる。
【００５０】
しかし、１つの葉を構成する複数のポリゴンについて、それぞれ各頂点データを持たせる必要から、膨大なデータ量になることは明らかである。
【００５１】
そこで、本実施の形態では、幹のオブジェクトは、通常どおり、該幹のオブジェクトを構成する多数のポリゴンについてそれぞれ頂点データを持たせたデータ構造を採用するが、葉のオブジェクトについては、図４に示すように、１枚の例えば長方形又は正方形のポリゴンで描くようにする。実際には、長方形のポリゴンに葉のテクスチャを貼り付けて描くようにする。
【００５２】
この場合、１つの辺をワールド座標上、鉛直方向に向かせるようにすれば、１つの頂点が決まると同時に他の頂点も自動的に決まることになり、該ポリゴンに関する頂点データの情報量を大幅に減らすことが可能となる。
【００５３】
図５は幹のオブジェクトと多数の葉のオブジェクトを描いた例を平面から見た状態を示している。
【００５４】
ところで、このような描画方法においては１つの問題がある。それは、ある１つの視点から木のオブジェクトを見た場合、葉を構成するポリゴンについて、全てのポリゴンの面が仮想視点ｅの方向に向いた状態になっているため、葉が生い茂った木として見ることができるが、視点を例えば９０°転回して仮想視点ｅａとした場合は、葉を構成するポリゴンについて、全てのポリゴンの面が、視点の方向に対して９０°±ａ°の角度で配置された状態になるため、この視点から木を見た場合、葉のテクスチャはほとんど見ることができず、落葉した幹となってしまい、表示上不都合が生じる。
【００５５】
そこで、本実施の形態では、上述の手法に加えて、葉を構成するポリゴンのポリゴン面を視点の方向に向けて描画することで、上述の問題点を解決するようにしている。
【００５６】
具体的に、本実施の形態に係るいくつかの描画方法を図６Ａ〜図２７を参照しながら説明する。一連の処理はＣＰＵ４０１、ＲＥ４０６がそれぞれ処理を分担して行うものであり、その際に使用される作業用メモリはＲＡＭ４０２や画像メモリ４０５などを用いるものとする。
【００５７】
図６Ａは、仮想空間１００のＺＸ平面図である。仮想空間１００は、画像を描画するためにオブジェクトやポリゴンを配置するために仮想的に設定されているものである。この仮想空間１００は３次元空間であり、描画する画像面に水平な向きのＸ軸、描画する画像面の高さ方向に相当するＹ軸（図６Ｃ参照）及び描画する画像面に垂直なＺ軸を有する。
【００５８】
なお、実際の一般のＣＧ手法ではこのように画像面の向きを基準にした座標系（スクリーン座標系）の他に画像面に左右されないワールド座標系を有する。
【００５９】
仮想空間１００において、描画するための基準となる仮想視点ｅと、画像が描画されるＺ軸に垂直な仮想のスクリーン（背景面）Ｚ０の間にはＹ軸方向に伸びる幹１０２のオブジェクトと幹１０２のオブジェクトの近傍に設けられた複数の葉のポリゴン１０４ａが配置されている。葉のポリゴン１０４ａ（図４も参照）は長方形であり、葉のポリゴン１０４ａの４つの頂点は１０４ａ１〜１０４ａ４と表され、かつ、頂点１０４ａ１と１０４ａ４が対角をなすように構成されている。葉のポリゴン１０４ａは必ずしも葉の絵だけが表示されるものでなく枝の絵を含むものであってもよい。また、葉の絵の数は１枚である必要はなく複数枚であってもよい。
【００６０】
図６Ｂは、図６Ａの葉のポリゴン１０４ａの１つを拡大して示した図である。ここで、Ｖは葉のポリゴン１０４ａの基準点Ｌｏを基点とした法線ベクトルであり、Ｖｅは基準点Ｌｏを基点として仮想視点ｅの方向を示す視点ベクトルである。葉のポリゴン１０４ａを、法線ベクトルＶと視点ベクトルＶｅとのなす角度θ１だけ回転させると、変換したポリゴン１０４ｂになる。変換したポリゴン１０４ｂを仮想視点ｅを基準にしてスクリーンＺ０に投影すると葉の投影面１０４ｃになる。
【００６１】
図６Ｃは、仮想空間１００のＺＹ平面図であり、幹１０２、変換したポリゴン１０４ｂ、仮想視点ｅ及び葉の投影面１０４ｃの位置関係を明確にしたものである。図６Ａで表されるＺＸ平面の投影関係はＺＹ平面でも同様になっている。
【００６２】
第１の実施の形態に係る画像描画方法は、図６Ａ及び図６Ｂに示すように、幹１０２の周りに予め配置された任意の向きの葉のポリゴン１０４ａのポリゴン面の法線Ｖが、基準点Ｌｏと仮想視点ｅを結ぶ直線に一致するように回転させて、変換したポリゴン１０４ｂを得る。次に、変換したポリゴン１０４ｂをスクリーン面Ｚ０に投影する計算を行うことで葉の投影面１０４ｃを得る。
【００６３】
第１の実施の形態に係る画像描画方法の具体的手法について図６Ａ〜図１６を参照しながら説明する。
【００６４】
木の描画については図７に示すように初期化処理（ステップＳ１）、幹の描画処理（ステップＳ２）と葉の描画処理（ステップＳ３）の３つの処理に分けることができる。
【００６５】
初期化処理（ステップＳ１）では、光ディスク２０から図８に示すオブジェクト情報テーブル１０６、図９に示す幹のポリゴン情報テーブル１０８、図１３に示す葉のポリゴン情報テーブル１１０等をＲＡＭ４０２にロードし、さらに、ポリゴンの模様データであるテクスチャマップを画像メモリ４０５のテクスチャメモリにロードする。
【００６６】
オブジェクト情報テーブル１０６は、幹の基準絶対座標Ｔ０、幹のポリゴンの数Ｎｍ、幹のポリゴン情報テーブルアドレスＡＤｍ、枝の数Ｎｂ及び枝ベクトル情報テーブルアドレスＡＤｂを含む情報である。
【００６７】
幹のポリゴン情報テーブル１０８は、Ｎｍ個の幹のポリゴンの情報を有し、それぞれの幹のポリゴン情報はポリゴンの４つの頂点１０４ａ１〜１０４ａ４の相対位置座標、４つの頂点１０４ａ１〜１０４ａ４の色データ及びテクスチャマップアドレスＡＤｔiを含む。ｉは幹のポリゴンの番号を表し０〜Ｎｍ−１の数値をとる。
【００６８】
幹の描画（ステップＳ２）について、その処理内容を示した図１０を参照しながら説明する。
【００６９】
まず、ステップＳ１０１において、図８に示すオブジェクト情報テーブル１０６から幹のポリゴンの数Ｎｍ、幹の基準絶対座標Ｔ０及び幹のポリゴン情報テーブル１０８のアドレスＡＤｍをレジスタ等に確保する。
【００７０】
そして、ステップＳ１０２において、カウンタｉに初期値「０」を格納して、該カウンタｉを初期化する。
【００７１】
次に、ステップＳ１０３において、アドレスＡＤｍで示される幹のポリゴン情報テーブル１０８からカウンタｉで示される幹のポリゴン情報を読み込む。
【００７２】
ステップＳ１０４において、読み込まれた幹のポリゴン情報のうち４つの頂点１０４ａ１〜１０４ａ４の相対座標に幹の基準絶対座標Ｔ０を加算する。こうして、葉のポリゴン１０４ａの４つの頂点１０４ａ１〜１０４ａ４のワールド座標値を得る。また、この４つの頂点１０４ａ１〜１０４ａ４のワールド座標値からスクリーンＺ０に対してＺ軸上の相対位置Ｚｒを求める。
【００７３】
次に、色の補正及びスクリーンＺ０への投影処理等を行う。これらの処理ステップＳ１０５〜Ｓ１０８においては一般にレンダリング処理と呼ばれているものである。
【００７４】
レンダリング処理では、まず、ステップＳ１０５において、変換されたポリゴンの色の計算を行う。まず、幹１０２のポリゴン情報に含まれる４つの頂点１０４ａ１〜１０４ａ４の色データを用いて、変換したポリゴン１０４ｂの範囲内の色を補正する。そして、図示しない仮想光源の情報などから光学計算を行うことで表面輝度を求めて、さらに表面の質感の補正を行う。
【００７５】
そして、ステップＳ１０６において、変換したポリゴン１０４ｂをスクリーンＺ０に投影した葉の投影面１０４ｃ（図６Ａ参照）を求める。
【００７６】
ステップＳ１０７において、この投影面の範囲に対して、ポリゴン情報のうちテクスチャマップアドレスＡＤｔiで示されるテクスチャを投影面形状に合わせて加え描画画像を得る。
【００７７】
ステップＳ１０８では、得られた描画画像をＲＡＭ４０５のうち表示バッファに書き込むとともに、前記Ｚ軸上の相対位置ＺｒをＲＡＭ４０５のＺバッファに書き込む。
【００７８】
そして、ステップＳ１０９において、カウンタｉを＋１更新した後、次のステップＳ１１０において処理が完了したか判別される。つまり、ｉとＮｍが等しければ幹のポリゴンに対しては全ての処理が完了したので、図７に示す葉の描画処理（ステップＳ３）に移る。ｉとＮｍが異なれば（ｉがＮｍより小さければ）、前記ステップＳ１０３に戻り処理を繰り返す。
【００７９】
次に、葉の描画（ステップＳ３）について、その処理内容を示した図１１を参照しながら説明する。
【００８０】
まず、ステップＳ２０１において、描画する葉のポリゴン１０４ａの数Ｎｌを決定する。葉のポリゴン１０４ａの数Ｎｌは予め決定されたもので光ディスク２０等に記憶されているものでもよいし、また、ステップＳ１で描画した幹１０２の形状に応じた葉のポリゴン１０４ａの数を適宜決定してもよい。
【００８１】
そして、ステップＳ２０２において、葉の配置を決める処理を行い、ステップＳ２０３において、葉の向きを決める処理レンダリング処理を行うことで、葉を描画することができる。このうち、ステップＳ２０２の処理については後述する。
【００８２】
ステップＳ２０３の葉の向きを決める処理においては、その内部の処理としてまず、ステップＳ２０３ａにおいて最初にカウンタｉを初期化して「０」にする。次に、ステップＳ２０３ｂにおいて、カウンタｉで示される葉の向きを決定する。このステップＳ２０３ｂの処理の詳細については後述する。
【００８３】
そして、ステップＳ２０３ｃにおいて、カウンタｉを＋１更新した後、次のステップＳ２０３ｄにおいて処理が完了したか判別される。つまり、ｉとＮｌが等しければ幹のポリゴンに対しては全ての処理が完了したので、レンダリング処理（ステップＳ２０４）に移る。ｉとＮｌが異なれば（ｉがＮｌより小さければ）前記ステップＳ２０３ｂに戻り処理を繰り返す。
【００８４】
ステップＳ２０４おけるレンダリング処理は、幹の描画処理で説明したステップＳ１０５〜Ｓ１０８と同じ処理であるのでその詳細な説明は省略する。
【００８５】
図１１における葉の配置を決定する処理（ステップＳ２０２）について、その処理内容を示した図１２及び図１３を参照しながら説明する。
【００８６】
まず、ステップＳ３０１において、カウンタｉに初期値「０」を格納して、該カウンタｉを初期化する。
【００８７】
次に、ステップＳ３０２において、葉のポリゴン情報テーブル１１０からカウンタｉで示される葉のポリゴン情報を読み出す。
【００８８】
図１３に示すように、それぞれの葉のポリゴン情報テーブル１１０は幹のポリゴン情報テーブル１０８とほぼ同様の構成であり、葉を１つのポリゴンとして表している。つまり、４つの頂点１０４ａ１〜１０４ａ４の相対座標値と、その４つの頂点１０４ａ１〜１０４ａ４の色のデータ及びテクスチャマップアドレスＡＤｌiを有する構造である。この４つの頂点１０４ａ１〜１０４ａ４の相対座標は平面を構成するように設定されている。また、葉のポリゴン情報テーブル１１０は描画する葉の数Ｎｌ個の情報を有する。
【００８９】
そして、ステップＳ３０３に移り、４つの頂点１０４ａ１〜１０４ａ４の相対座標値を幹１０２の基準絶対座標Ｔ０を基準にして絶対座標に変換して、カウンタｉで示される葉のポリゴン１０４ａの４つの頂点１０４ａ１〜１０４ａ４のワールド座標値が決定する。このように、葉の位置の情報は相対座標で構成されているので、幹１０２が仮想空間１００上のどこに配置されていても対応が可能である。
【００９０】
そして、ステップＳ３０４において、カウンタｉを＋１更新した後、次のステップＳ３０５において処理が完了したか判別される。つまり、ｉとＮｌが等しければ幹のポリゴンに対しては全ての処理が完了したので、図１１における葉の描画処理（ステップＳ２０３）に移る。ｉとＮｌが異なれば（ｉがＮｌより小さければ）、前記ステップＳ３０１に戻り処理を繰り返す。
【００９１】
次に、図１１におけるカウンタｉが示す葉の向きを決める処理（ステップＳ２０３ｂ）について図６Ａ、図６Ｂ、図１５及び図１６を参照しながら説明する。葉の向きを決める処理はいくつかの手法が考えられ、図１５及び図１６は葉の向きを決める処理の種別をフローチャートに表したものである。このうち第１の実施の形態に係る葉の向きを決める方法について説明する。
【００９２】
まず、ステップＳ４０１において、前記ステップＳ２０２で行った処理で葉のポリゴン１０４ａの向きが決定されているか判別する。第１の実施の形態においては、葉のポリゴン１０４ａの情報は４つの頂点１０４ａ１〜１０４ａ４のワールド座標値を持っており、しかも、この４つの頂点１０４ａ１〜１０４ａ４の座標は平面を構成するように設定されているので葉の向きは一義的に決定される。従って、次のステップＳ４０２に移る。
【００９３】
ステップＳ４０２においては、４つの頂点１０４ａ１〜１０４ａ４のワールド座標値から葉の法線ベクトルＶを演算する。４つの頂点１０４ａ１〜１０４ａ４は平面を構成するように設定されているので、このうち３つを選択して得られる２つのベクトルに対して法線ベクトルＶを演算するようにすればよい。
【００９４】
次に、ステップＳ４０３においては、法線ベクトルＶの向きが仮想視点ｅに対して表示上不都合な向きになっていないか考慮するかどうかを決める。この判断は画像製作者が処理速度などを勘案して予め決めておくものであり、ＣＰＵ４０１が判断するものでなくてもよい。法線ベクトルＶを考慮しない場合、つまり、一律に葉のポリゴン１０４ａの向きを変更する場合はステップＳ４０５に移る。
【００９５】
法線ベクトルＶを考慮する場合はステップＳ４０４に移り、法線ベクトルＶの向きを判定する。この判定は葉ポリゴン１０４ａの基準点Ｌｏと仮想視点ｅを結ぶ直線のベクトルを視点ベクトルＶｅとして、この視点ベクトルＶｅと法線ベクトルＶとのなす角度θ１を演算する。得られた角度θｅが９０°±ａ°以内であるときは、葉が仮想視点ｅに対して略平行の向きとなっているので表示上不都合である。従ってステップＳ４０５に移り葉の向きを変更する処理を行う。またそれ以外の角度であるときは、葉の向きに変更は加えないものとして図１５に示す処理を終了する。ここで、ａ°とは画像製作者が任意に決定するものであるが、概ね４５°以内の数値である。
【００９６】
ステップＳ４０５及びＳ４０５ａでは葉の向きを変更するにおいてどのような基準で変更するか決定する。この判断は画像製作者が予め決定しておいてもよい。第１の実施の形態ではステップＳ４０６へ移るものとする。
【００９７】
ステップＳ４０６においては、葉のポリゴン１０４ａの向きを仮想視点ｅの方向へ向けるように回転させる。この回転の処理を図６Ａ及び図６Ｂを参照しながら説明する。
【００９８】
葉のポリゴン１０４ａの基準点Ｌｏを中心に法線ベクトルＶが視点ベクトルＶｅに一致するように角度θ１だけ回転させる。つまり、その回転によりポリゴン１０４ａの４つの頂点１０４ａ１〜１０４ａ４が移る変換したポリゴン１０４ｂの座標値をそれぞれ計算する。図６Ｂは、基準点Ｌｏを葉のポリゴン１０４ａの４つの頂点１０４ａ１〜１０４ａ４のうちの１つ、例えば頂点１０４ａ１に設定した例を示している。このように、４つの頂点１０４ａ１〜１０４ａ４のうちの１つを基準点Ｌｏにとれば、残りの３つの頂点だけを計算すればよい。
【００９９】
また、葉のポリゴン１０４ａが長方形又は正方形で、かつ、法線ベクトルＶがＺＸ平面に平行になるように設定しておくことにより、葉のポリゴン１０４ａの対角の２頂点、例えば、頂点１０４ａ１及び頂点１０４ａ４だけについて計算して回転後の変換位置を求めておけば、残りの２つの頂点１０４ａ２、１０４ａ３については頂点１０４ａ１及び頂点１０４ａ４に関する計算の結果の変換位置から換算して表現できる。さらに、この場合、基準点Ｌｏを４つの頂点１０４ａ１〜１０４ａ４のうちの１つ、例えば１０４ａ１に設定すれば、その対角の頂点１０４ａ４の１点だけについて回転後の変換位置を求めておけば、他の頂点については換算して表現できるので計算量が大幅に低減される。
【０１００】
しかも、葉のポリゴン１０４ａに関して必要な情報は、複数の頂点のうち１つの頂点の情報だけでよいことになるのでデータ量を少なくすることができる。
【０１０１】
こうして、ポリゴン１０４ａを回転させて得られた変換したポリゴン１０４ｂは仮想視点ｅの方向を向いているので、表示上不都合がない。
【０１０２】
葉の向きが決定したので、図１１におけるステップＳ２０３ｂが終了する。この処理をカウンタｉの制御処理（ステップＳ２０３ａ、ステップＳ２０３ｃ及びステップＳ２０３ｄ）に従い実行し、Ｎｌ個の葉のポリゴン１０４ａについて向きが決定したらレンダリング処理（ステップＳ２０４）に移ればよい。
【０１０３】
なお、葉の向きを決定する処理（ステップＳ２０３）については、図６Ａ及び図６Ｂを参照してＺＸ平面上で説明したが、実際には葉のポリゴン１０４ａを３次元空間内で回転させてもよい。
【０１０４】
葉のポリゴン１０４ａを３次元空間内で回転させる方法について図１４Ａ及び図１４Ｂを参照しながら説明する。なお、図１４Ａ及び図１４Ｂで示すＸ軸、Ｙ軸及びＺ軸はスクリーン座標系の軸と同じ向きであるが、スクリーン座標系の原点は無視して、相対的な方向だけを表すものとする。
【０１０５】
図１４Ａは、葉のポリゴン１０４ａの法線ベクトルＶを視点ベクトルＶｅの方向へＺＸ平面上で回転させた状態を説明した図である。
【０１０６】
Ｖｙ、Ｖｅｙは、法線ベクトルＶと視点ベクトルＶｅのそれぞれのＺＸ平面成分の２次元ベクトルである。θ１１は２次元ベクトルＶｙとＶｅｙのなす角度である。Ｖ１は法線ベクトルＶをＹ軸を中心に角度θ１１だけ回転させたベクトルである。
【０１０７】
図１４Ｂは、２次元ベクトルＶｅｙとＹ軸で構成した２次元座標を示す。θ１２は回転したベクトルＶ１と視点ベクトルＶｅｙとのなす角度である。
【０１０８】
葉のポリゴン１０４ａを仮想視点ｅの方向へ向けるためには、まず、葉の法線ベクトルＶをＹ軸を中心にして角度θ１１だけ回転させる第１の回転処理を行う。この処理により法線ベクトルＶはベクトルＶ１の位置に移る。この状態では移動後のベクトルＶ１と視点ベクトルＶｅのＺＸ平面成分が一致することになる。
【０１０９】
次に、図１４Ｂで示す２次元座標系で移動後のベクトルＶ１を角度θ１２だけ回転させる第２の回転処理を行う。この処理によりベクトルＶ１は視点ベクトルＶｅに一致して、葉のポリゴン１０４ａは仮想視点ｅの方向を向くことになる。
【０１１０】
なお、このように回転処理を２回に分けなくとも、３次元空間上で法線ベクトルＶから視点ベクトルＶｅの方向へ直接的に回転するように処理してもよい。
【０１１１】
さらに、上述の説明では図１１に示すとおり、ステップＳ２０２で全ての葉の配置を決定し、その後、ステップＳ２０３で葉の向きを決定する、いわゆるバッチ式で処理しているが、各葉ごとに葉の向きと葉の配置を連続して決定するように処理してもよい。
【０１１２】
また、ポリゴンは長方形、正方形など４角形に限定されるものではなく３角形、５角形などでもよい。
【０１１３】
このように、第１の実施の形態に係る画像描画方法においては、葉のポリゴンを全て仮想視点ｅの方向へ向くようにするので、仮想視点ｅから見てポリゴンが見えづらいということがない。
【０１１４】
また、葉のポリゴン情報テーブル１１０を持つことから、個別の葉に対して配置や色、及びテクスチャを自由に設定できるので表現上の自由度が高い。
【０１１５】
さらに、葉のポリゴン１０４ａの形状を長方形にして、回転の基準点をポリゴンの頂点に設定することで回転に係る計算量を大幅に低減することができる。
【０１１６】
次に、第２の実施の形態に係る画像描画方法について図１７Ａ〜図１８を参照しながら説明する。
【０１１７】
第２の実施の形態においては、第１の実施の形態とほぼ同じ処理を行うが、葉のポリゴン１０４ａを回転させる処理において、回転させる方向が異なる。すなわち、図１７Ａ及び図１７Ｂに示すようにポリゴン１０４ａをＺ軸の方向へ回転させて、変換したポリゴン１０４ｄを得る。
【０１１８】
具体的には、図１５における処理でステップＳ４０５からステップＳ４０５ａの分岐処理を経由してステップＳ４０７へ移る。
【０１１９】
ステップＳ４０７においては、葉のポリゴン１０４ａの向きをＺ軸の方向へ向けるように回転させる。この回転の処理を図１７Ａ及び図１７Ｂを参照しながら説明する。
【０１２０】
図１７Ａは、第２の実施の形態に係る仮想空間１００のＺＸ平面図である。１０４ｄはポリゴン１０４ａをＺ軸の方向へ回転させた変換したポリゴンである。それ以外の符号は図６Ａと同じである。また、図１７Ｂは図１７Ａの葉のポリゴン１０４ａ部分の拡大図である。Ｖｚは葉のポリゴン１０４ａの基準点Ｌｏを起点としたＺ軸方向を示すＺ軸ベクトルである。角度θ２は法線ベクトルＶとＺ軸ベクトルＶｚとのなす角度である。
【０１２１】
基準点Ｌｏを中心に法線ベクトルＶがＺ軸ベクトルＶｚに一致するように角度θ２だけ回転させる。つまり、その回転によりポリゴン１０４ａの４つの頂点１０４ａ１〜１０４ａ４が移る変換したポリゴン１０４ｄの座標値をそれぞれ計算する。このように、Ｚ軸の方向へ向くように回転させる場合に、仮想視点ｅの方向を考慮する必要がなく演算が単純になるという効果がある。また、葉がＺ軸の方向を向くことで、仮想視点ｅの方向とは異なるもののスクリーンＺ０に対しては平行なので画像描画上特に見えづらいということはない。
【０１２２】
また、基準点Ｌｏの選択の方法や、ポリゴンの形状設定は第１の実施の形態と同様にすれば計算量の低減を図ることができる。
【０１２３】
葉の向きが決定したので、図１１におけるステップＳ２０３ｂが終了する。この処理をカウンタｉの制御処理（ステップＳ２０３ａ、ステップＳ２０３ｃ及びステップＳ２０３ｄ）に従い実行し、Ｎｌ個の葉のポリゴン１０４ａについて向きが決定したらレンダリング処理（ステップＳ２０４）に移ればよい。
【０１２４】
なお、葉の向きを決定する処理（ステップＳ２０３）については、図１７Ｂを参照してＺＸ平面上で説明したが、実際には葉のポリゴン１０４ａを３次元空間内で回転させてもよい。
【０１２５】
葉のポリゴン１０４ａを３次元空間内で回転させる方法について図１８を参照しながら説明する。
【０１２６】
図１８は、葉のポリゴン１０４ａの法線ベクトルＶをＺ軸ベクトルＶｚの方向へＺＸ平面上で回転させた状態を説明した図である。
【０１２７】
図１８において、座標と法線ベクトルＶの位置関係および２次元ベクトルＶｙは図１４Ａと同じである。角度θ２１は２次元ベクトルＶｙとＺ軸ベクトルＶｚのなす角度である。Ｖ２は法線ベクトルＶをＹ軸を中心に角度θ２１だけ回転させたベクトルである。角度θ２２は回転したベクトルＶ２とＺ軸ベクトルＶｚとのなす角度である。
【０１２８】
葉のポリゴン１０４ａをＺ軸ベクトルＶｚの方向へ向けるためには、まず、葉の法線ベクトルＶをＹ軸を中心にして角度θ２１だけ回転させる第１の回転処理を行う。この処理により法線ベクトルＶはベクトルＶ２の位置に移る。この状態では移動後のベクトルＶ１とＺ軸ベクトルＶｚのＺＸ平面成分が一致することになる。
【０１２９】
次に、ＺＹ平面上で移動後のベクトルＶ２を角度θ２２だけ回転させる第２の回転処理を行う。この処理によりベクトルＶ２はＺ軸ベクトルＶｚに一致して、葉はＺ軸の方向を向くことになる。
【０１３０】
なお、このように２回に分けて計算しなくとも、３次元空間上で法線ベクトルＶからＺ軸ベクトルＶｚの方向へ直接的に回転するように処理してもよい。
【０１３１】
このように、第２の実施の形態に係る画像描画方法においては、葉を全てＺ軸の方向へ向くようにするので、回転の計算量が少なくて済み、また、仮想視点ｅから見て特に見えづらいということはない。
【０１３２】
次に、第３の実施の形態に係る画像描画方法について図１５、図１６及び図１９を参照しながら説明する。
【０１３３】
第３の実施の形態においては、第１の実施の形態とほぼ同じ処理を行うが、葉のポリゴン１０４ａを回転させる処理において、回転させる処理が異なる。すなわち、特定の方向へ向けるのではなく乱数発生器により得られた乱数により任意の方向を向くようにしてる。
【０１３４】
具体的には、図１５及び図１６における処理でステップＳ４０５からステップＳ４０５ａの分岐処理を経由してステップＳ４０８に移る。
【０１３５】
ステップＳ４０８においては、乱数発生器によりいくつかの乱数を得る。そしてこの乱数によりある一定方向の範囲内の方向を向く乱数ベクトルＶｒ（図１９参照）を設定する。
【０１３６】
図１９に示すようにＺ軸を中心とした４角錐Ｐｙの範囲を考える。図１９において、ｘ０、ｙ０はそれぞれ４角錐Ｐｙを規定するＸ座標値、Ｙ座標値である。ｘ１、ｙ１は設定する乱数ベクトルＶｒのＸ座標値、及びＹ座標値である。ｚ１は乱数ベクトルＶｒのＺ座標値である。
【０１３７】
乱数ベクトルＶｒのＺ軸座標値ｚ１と、４角錐を規定するＸ軸座標値ｘ０とＹ軸座標値ｙ０を適当な値に設定する。Ｘ軸座標値ｘ０、Ｙ軸座標値ｙ０はＺ軸座標値ｚ１より小さい値が好ましい。次に、乱数発生器により２つの乱数を取得する。この乱数発生器は±１の範囲内の値を発生するものとする。そして、得られた２つの乱数とＸ軸座標値ｘ０、Ｙ軸座標値ｙ０をそれぞれ掛け合わせて乱数ベクトルＶｒのＸ軸座標値ｘ１及び乱数ベクトルＶｒのＹ軸座標値ｙ１を得る。この値をＺ軸座標値ｚ１と組み合わせて乱数ベクトルＶｒ（ｘ１、ｙ１、ｚ１）が規定されることになる。この乱数ベクトルＶｒは、Ｚ軸を中心としてＸ軸には±ｘ０、Ｙ軸には±ｙ０の範囲内の方向を示す。
【０１３８】
乱数ベクトルＶｒが規定されたら、次にステップＳ４０９に移る。
【０１３９】
ステップＳ４０９においては、ステップＳ４０８で得られた乱数ベクトルＶｒの向きを判定する。この判定は視点ベクトルＶｅと乱数ベクトルＶｒとのなす角度を演算することにより判断する。そして、得られた角度が９０°±ａ°以内であるときは、葉が仮想視点ｅに対して略平行の向きとなっているので表示上不都合である。従ってステップＳ４０８に移り葉の向きを変更する処理を行う。また、それ以外の角度であるときは、葉の向きに変更は加えないものとして次のステップＳ４１０に移る。
【０１４０】
ステップＳ４１０においては、葉のポリゴン１０４ａの向きを乱数ベクトルＶｒの方向へ向けるように葉のポリゴン１０４ａを回転させる。この回転の処理は第１の実施の形態で説明した図６Ａ、図６Ｂ、図１４Ａ及び図１４Ｂにおいて、視点ベクトルＶｅの代わりに乱数ベクトルＶｒの方向へ回転させるものである。その処理手順は同様であるのでその詳細な説明を省略する。
【０１４１】
葉の向きが決定したので、図１１におけるステップＳ２０３ｂが終了する。この処理をカウンタｉの制御処理（ステップＳ２０３ａ、ステップＳ２０３ｃ及びステップＳ２０３ｄ）に従い実行し、Ｎｌ個の葉のポリゴン１０４ａについて向きが決定したらレンダリング処理（ステップＳ２０４）に移ればよい。
【０１４２】
なお、葉の向きを決定する処理（ステップＳ２０３）については、図１９を参照して乱数ベクトルＶｒが４角錐Ｐｙの範囲内の方向を向くように設定したが、この範囲は４角錐Ｐｙで示されるものでなくともよく、また、特に範囲を設定せずに任意の方向を向くようにしてもよい。
【０１４３】
このように、第３の実施の形態に係る画像描画方法においては、乱数を用いて葉のポリゴン１０４ａの向きを決定するので、各々の葉の向きが異なるように設定され、植物の自然な雰囲気を表現することができる。
【０１４４】
また、仮想視点ｅの方向と略平行になる葉については向きを再設定する処理を施すので、仮想視点ｅから見て特に見えづらいということはない。
【０１４５】
以上の第１乃至第３の実施の形態においては、葉のポリゴン１０４ａの向きが適切な方向になるように描画する方法を示した。以下の第４乃至第６の実施の形態においては、葉のポリゴン１０４ａを幹１０２の周りに配置する方法について説明する。
【０１４６】
第４の実施の形態に係る画像描画方法について図１５、図１６、図２０及び図２１を参照しながら説明する。
【０１４７】
第４の実施の形態においては、第１の実施の形態とほぼ同じ処理を行うが、葉のポリゴン１０４ａを配置させる処理が異なる。すなわち、乱数を用いることで各葉のオブジェクトごとにその配置位置を決定する。
【０１４８】
具体的には、図１１における葉の配置を決める処理（ステップＳ２０２）の処理内容として図１５、図１６及び図２０で示す処理を行う。
【０１４９】
図２１は、基準絶対座標Ｔ１を幹１０２の略中央部に設定し、さらに葉を描画する空間の範囲Ｓを半径ｒの球状体に設定した例を示す。
【０１５０】
図２０のステップＳ５０１において、葉を描画する基準絶対座標Ｔ１を適当に決定する。この基準絶対座標Ｔ１は幹１０２の座標値に基づいて決めればよい。
【０１５１】
次に、ステップＳ５０２において、基準絶対座標Ｔ１を基準として、葉を描画する空間の範囲Ｓを設定する。この範囲Ｓは球状体、楕円体、円柱体又は円錐体などのような形状でもよい。以下、範囲Ｓを球状体（図２１参照）として説明する。
【０１５２】
ステップＳ５０３において、カウンタｉに初期値「０」を格納して、該カウンタｉを初期化する。
【０１５３】
そして、ステップＳ５０４において、ＣＰＵ４０１の乱数発生器により３つの乱数を作りその乱数を範囲Ｓに合わせて葉の基準位置を得る。具体的には、乱数発生器によって得られた３つの乱数をｑ１、ｑ２、ｑ３として、また半径ｒを用いて、
Ｋ＝ｒ／（ｓｑｒ（ｑ１×ｑ１＋ｑ２×ｑ２＋ｑ３×ｑ３））
なる定数値Ｋを求める。ここでｓｑｒ（…）は平方根関数である。
【０１５４】
そして、定数値Ｋをｑ１、ｑ２、ｑ３にそれぞれ掛け合わせて葉のポリゴン１０４ａの４つの頂点１０４ａ１〜１０４ａ４のうちの１つ、例えば、頂点１０４ａ１のＸ軸相対座標値ｒ１、Ｙ軸相対座標値ｒ２及びＺ軸相対座標値ｒ３を得る。
【０１５５】
葉のポリゴン１０４ａの１つの頂点１０４ａ１の相対座標値（ｒ１、ｒ２、ｒ３）が求まったら、この相対座標値を基準絶対座標Ｔ１を基準としてワールド座標値に変換し、カウンタｉが示す番目の葉のポリゴン１０４ａの１つの頂点１０４ａ１の位置としてＲＡＭ４０２などに記憶する。
【０１５６】
そして、ステップＳ５０５において、カウンタｉを＋１更新した後、次のステップＳ５０６において処理が完了したか判別される。つまり、ｉとＮｌが等しければＮｌ個の葉のポリゴン１０４ａの１つの頂点１０４ａ１の配置が決定したので、図２０に示す処理を終了して、図１１に示すステップＳ２０３に移る。ｉとＮｌが異なれば（ｉがＮｌより小さければ）、ステップＳ５０４に戻り処理を繰り返す。
【０１５７】
葉のポリゴン１０４ａの配置が決定したら、図１１におけるステップＳ２０２が終了したことになる。
【０１５８】
次に、図１１の葉の向きを決める処理（ステップＳ２０３）に移る。この中でカウンタｉで示される描画する葉の向きを決める処理（ステップＳ２０３ｂ）以外は第１の実施の形態と同じである。
【０１５９】
ステップＳ２０３ｂを説明した図１５及び図１６において、まず最初にステップＳ４０１において、葉の向きが一義的に特定されているか判別する。第４の実施の形態においては、葉のポリゴン１０４ａは４つの頂点１０４ａ１〜１０４ａ４のうち１つの頂点１０４ａ１の座標しか決まっていないので、向きは特定されていない。
【０１６０】
そこで、図１６のステップＳ４１１に移り、葉のポリゴン１０４ａの向きを仮に特定する。ここでは、第２の実施の形態の場合と同じ向きであるＺ軸方向に規定するものとする。
【０１６１】
以降の処理は、第１の実施の形態及び第２の実施の形態の場合と同様である。すなわち、図１５及び図１６においてステップＳ４１２とステップＳ４１２ａはステップＳ４０５とステップＳ４０５ａに、ステップＳ４１３はステップＳ４０６に、ステップＳ４１４はステップＳ４０８に、ステップＳ４１５はステップＳ４０９に、そして、ステップＳ４１６はステップＳ４１０にそれぞれ相当する。
【０１６２】
第２の実施の形態の場合のステップＳ４０７に相当する処理はないが、当初の向きが第２の実施の形態の場合の向きと同じなのでステップＳ４１２ａにおける分岐後の処理は不要であり、結果としてステップＳ４０７が不要となっている。
【０１６３】
これにより、図１１における葉の向きを決める処理（ステップＳ２０３）が終了するので、以降は第１の実施の形態と同様に処理をすればよい。
【０１６４】
このように、第４の実施の形態に係る画像描画方法においては、乱数を用いて葉のポリゴン１０４ａの配置を決定するので、画像製作者は葉の枚数Ｎｌだけを決定すればよく、通常のモデリング作業が不要になる。しかも、異なった葉の配置を有する木を何種類でも構成することができる。
【０１６５】
次に、第５の実施の形態に係る画像描画方法について図２２、図２３Ａ、図２３Ｂ及び図２３Ｃを参照しながら説明する。
【０１６６】
第５の実施の形態においては、第１の実施の形態とほぼ同じ処理を行うが、葉のポリゴン１０４ａを配置させる処理が異なる。すなわち、所定の関数を用いることで各葉のオブジェクトごとにその配置位置を決定する。
【０１６７】
具体的には、図１１における描画する葉の配置を決める処理（ステップＳ２０２）の処理内容として図１５、図１６及び図２２で示す処理を行う。
【０１６８】
図２３Ａは関数ｆに最大値がｒである正規分布関数を変形したものを使用して前記Ｘ軸相対座標値ｒ１を計算する例である。関数ｆは正規分布関数の縦軸を逆にしたものであり、この関数ｆを用いることでカウンタｉに対して比較的０に近い値が多く得られ、半径ｒに近い値は少なくなる。また半径ｒ以上の値はあり得ない。
【０１６９】
図２３Ｂも、関数ｇに最大値がｒである正規分布関数を変形したものを使用して前記Ｙ軸相対座標値ｒ２を計算する例である。関数ｇは通常の正規分布関数を２つに分けて位相をずらしたものであり、関数ｆとは異なる値が得られるようになっている。
【０１７０】
図２３Ｃは、関数ｈに１次関数を使用して前記Ｚ軸相対座標値ｒ３を計算する例である。正規分布関数のように複雑な演算を必要としないので簡易に計算できる。
【０１７１】
図２２のステップＳ６０１において、葉を描画する基準絶対座標Ｔ１を適当に決める。さらに、ステップＳ６０２において、基準絶対座標Ｔ１を基準として葉を描画する空間の範囲Ｓを設定する。基準絶対座標Ｔ１及び範囲Ｓは第４の実施の形態で説明したとおりであり、以下の説明においても範囲Ｓを半径ｒの球状体とする（図２１参照）。
【０１７２】
次に、ステップＳ６０３において、カウンタｉに初期値「０」を格納して、該カウンタｉを初期化する。
【０１７３】
そして、ステップＳ６０４において、適当な関数により葉のポリゴン１０４ａの４つの頂点１０４ａ１〜１０４ａ４のうちの１つ、例えば、頂点１０４ａ１の配置を決定する。関数は３つ用意し、それぞれ、
ｒ１＝ｆ（ｉ、ｒ）
ｒ２＝ｇ（ｉ、ｒ）
ｒ３＝ｈ（ｉ、ｒ）
とする。関数ｆ、ｇ、ｈはそれぞれカウンタｉと半径ｒにより値を決定するものである。
【０１７４】
関数ｆ、ｇ、ｈの例を図２３Ａ、図２３Ｂ及び図２３Ｃに示す。
【０１７５】
なお、これらの関数ｆ、ｇ、ｈは適宜設定すればよく、上記以外のものでもよい。また、各関数ｆ、ｇ、ｈの横軸値はカウンタｉにより順次増加させるのではなく、乱数などを用いてランダムに横軸値を選択するようにしてもよい。
【０１７６】
このようにして、半径ｒの球状体の範囲Ｓ内に分布する葉のポリゴン１０４ａの４つの頂点１０４ａ１〜１０４ａ４のうち１つの頂点１０４ａ１の相対座標（ｒ１、ｒ２、ｒ３）が決まる。
【０１７７】
この相対座標値を基準絶対座標Ｔ１を基準としてワールド座標値に変換し、カウンタｉで示す葉のポリゴン１０４ａの４つの頂点１０４ａ１〜１０４ａ４のうち１つの頂点１０４ａ１の位置としてＲＡＭ４０２などに記憶する。
【０１７８】
そして、ステップＳ６０５において、カウンタｉを＋１更新した後、次のステップＳ６０６において処理が完了したか判別される。つまり、ｉとＮｌが等しければＮｌ個の葉のポリゴン１０４ａの配置が決定したので、図２０に示す処理を終了して図１１に示すステップＳ２０３に移る。ｉとＮｌが異なれば（ｉがＮｌより小さければ）ステップＳ６０４に戻り処理を繰り返す。
【０１７９】
葉のポリゴン１０４ａの配置が決定したら、図１１におけるステップＳ２０２が終了したことになる。
【０１８０】
次に、図１１、図１５及び図１６で示される葉の向きを決める処理に移る。これらの処理は第４の実施の形態の場合と同様であるのでその詳細な説明を省略する。
【０１８１】
また、葉の向きを決める処理が終了したら、それ以降は第１の実施の形態と同様に処理をすればよい。
【０１８２】
このように、第５の実施の形態に係る画像描画方法においては、関数を用いて葉のポリゴンの配置を決定するので、画像製作者は葉の枚数Ｎｌと関数ｆ、ｇ、ｈだけを決定すればよいので通常のモデリング作業が不要になり、しかも、正規分布関数などを用いることで、基準絶対座標Ｔ１を中心として、中心が密で、半径ｒの方向に向かい遠方になるほど粗であるような葉の配置を実現し、植物の自然な雰囲気を表現することができる。
【０１８３】
次に、第６の実施の形態に係る画像描画方法について図２４〜図２７を参照しながら説明する。
【０１８４】
第６の実施の形態においては、第１の実施の形態とほぼ同じ処理を行うが、葉のポリゴン１０４ａを配置させる処理が異なる。すなわち、幹１０２の枝ベクトルＶｂi（図２６参照）を用意しておくことで、この枝ベクトルＶｂi上に葉のポリゴン１０４ａを配置するようにする。なお、ｉはカウンタｉの値である。
【０１８５】
具体的には、図１１における葉の配置を決める処理（ステップＳ２０２）の処理内容として図１５、図１６及び図２４で示す処理を行う。
【０１８６】
図２５に示す枝ベクトル情報テーブル１１２は、Ｎｂ個の枝ベクトルＶｂiの情報を有し、それぞれの枝ベクトル情報は基準に対する枝ベクトルＶｂiの起点の相対座標、角度データ及び長さＬiを含む。
【０１８７】
図２６は枝ベクトルＶｂiを説明する図である。ここで、枝ベクトルＶｂiとは幹１０２に関してＮｂ個の枝を示すものであり、その起点は相対座標で表されている。つまり幹１０２が仮想空間１００のどこに配置されていても対応が可能である。また、枝ベクトルＶｂi角度と大きさＬiで表される極座標形式で表されるものとする。
【０１８８】
図２７は葉のポリゴン１０４ａの頂点の４つの頂点１０４ａ１〜１０４ａ４のうち１つの頂点１０４ａ１の位置を示すベクトルＶｂijを説明する図である。ベクトルＶｂijは枝ベクトルＶｂiと同じ向きで大きさのみを変更したものであることを示す。
【０１８９】
図２４のステップＳ７０１において、幹１０２の枝に関するデータを読み込む。つまりオブジェクト情報テーブル１０６（図８参照）に含まれている枝の数Ｎｂ、枝ベクトル情報テーブルアドレスＡＤｂ、図２５に示す枝ベクトル情報テーブル１１２を読み込む。
【０１９０】
次に、ステップＳ７０２において、カウンタｉに初期値「０」を格納して、該カウンタｉを初期化する。
【０１９１】
ステップＳ７０３に移り、アドレスＡＤｂで示される枝ベクトル情報テーブル１１２からカウンタｉで示される枝ベクトルＶｂiの情報を読み込む。
【０１９２】
そして、ステップＳ７０４において、枝ベクトルＶｂiに関する葉の数Ｎｂiを決定する。説明を簡略化するためにＮｂi＝Ｎｌ／Ｎｂとする。つまり、全ての葉の数の合計が他の実施の形態と同様にＮｌになるようにする。
【０１９３】
ステップＳ７０５において、カウンタｊに初期値「０」を格納して、該カウンタｊを初期化する。
【０１９４】
ステップＳ７０６に移り、カウンタｉで示される枝ベクトルＶｂiに関して、その枝ベクトルＶｂi上にＮｂi枚の葉のポリゴン１０４ａの配置を計算する。
【０１９５】
つまり、図２５及び図２７に示すように、枝ベクトルＶｂiの大きさがＬiであることから、枝ベクトルＶｂiと向きが同じで大きさがＬi×ｊ／Ｎｂiである葉のポリゴン１０４ａの１つの頂点１０４ａ１の相対座標ベクトルＶｂijを求める。そしてこの相対座標値を基準絶対座標Ｔ１を基準としてワールド座標値に変換し、（ｉ×Ｎｂi）＋ｊ番目の葉の位置としてＲＡＭ４０２などに記憶する。
【０１９６】
そして、ステップＳ７０７において、カウンタｊを＋１更新した後、次のステップＳ７０８において処理が完了したか判別される。つまり、カウンタｊと枝ベクトルＶｂi上の葉の数Ｎｂiが等しければステップＳ７０９に移る。ｊとＮｂiが異なれば（ｊがＮｂiより小さければ）ステップＳ７０６に戻り次の処理を行う。
【０１９７】
さらに、ステップＳ７０９において、カウンタｉを＋１更新した後、次のステップＳ７１０において処理が完了したか判別される。つまり、カウンタｉと枝ベクトルＶｂiの数Ｎｍが等しければＮｌ個の葉のポリゴン１０４ａの頂点１０４ａ１の配置が決定したので、図２４に示す処理を終了して図１１に示すステップＳ２０３に移る。ｉとＮｍが異なれば（ｉがＮｍより小さければ）、ステップＳ７０３に戻り次の処理を行う。
【０１９８】
葉のポリゴン１０４ａの配置が決定したら、図１１におけるステップＳ２０２が終了したことになる。
【０１９９】
次に、図１１、図１５及び図１６で示される葉の向きを決める処理に移る。これらの処理は第４の実施の形態の場合と同様であるのでその詳細な説明を省略する。
【０２００】
また、葉の向きを決める処理が終了したら、それ以降は第１の実施の形態と同様に処理をすればよい。
【０２０１】
枝ベクトルは実際に幹１０２の一部として描画されている箇所を例示して説明したが、枝の存在しない箇所に葉だけを表示させるために、架空の位置に枝ベクトルＶｂiを設定してもよい。
【０２０２】
このように、第６の実施の形態に係る画像描画方法においては、幹１０２に枝ベクトルＶｂiを用意して、その枝ベクトル上に葉を配置するようにしたので、画像製作者は葉の枚数Ｎｌと枝ベクトルＶｂiだけを決定すればよいので通常のモデリング作業が不要になり、しかも、各葉は枝上に配置されることからより実際の植物に近い雰囲気を表現することができる。
【０２０３】
上述の説明では葉の描画について述べたが、葉の描画以外にも動物の群の描画など他の態様に適用してもよい。
【０２０４】
なお、この発明に係る画像描画装置、記録媒体及びプログラムは、上述の実施の形態に限らず、この発明の要旨を逸脱することなく、種々の構成を採り得ることはもちろんである。
【０２０５】
【発明の効果】
以上説明したように、本発明に係る画像描画装置、記録媒体及びプログラムによれば、所定のポリゴン面の法線が所定の方向を向くようにポリゴン面を回転させる。
【０２０６】
このため、描画上不都合な向きのポリゴンを修正することができるという効果が達成される。
【図面の簡単な説明】
【図１】本実施の形態に係るハードウェア構成図である。
【図２】本実施の形態に係る電気回路の構成図である。
【図３】左右のジョイスティックにより得られるアナログ入力値の説明図である。
【図４】葉のポリゴンを表す図である。
【図５】幹のオブジェクトと多数の葉のオブジェクトを描いた例を示す図である。
【図６】図６Ａは仮想空間のＺＸ平面図であり、図６Ｂは図６Ａの拡大図であり、図６Ｃは仮想空間のＺＹ平面図である。
【図７】木の描画処理のフローチャートである。
【図８】オブジェクト情報テーブルを示す図である。
【図９】幹のポリゴン情報テーブルを示す図である。
【図１０】幹の描画処理のフローチャートである。
【図１１】葉の描画処理のフローチャートである。
【図１２】第１の実施の形態に係る葉の向きを決定するフローチャートである。
【図１３】葉のポリゴン情報テーブルを示す図である。
【図１４】図１４Ａは第１の実施の形態に係る第１の回転処理を説明する図であり、図１４Ｂは第１の実施の形態に係る第２の回転処理を説明する図である。
【図１５】葉の向きを決定する処理方法を選択する流れを示すフローチャート（その１）である。
【図１６】葉の向きを決定する処理方法を選択する流れを示すフローチャート（その２）である。
【図１７】図１７Ａは第２の実施の形態に係る仮想空間のＺＸ平面図であり、図１７Ｂは図１７Ａの拡大図である。
【図１８】第２の実施の形態に係る回転処理を説明する図である。
【図１９】第３の実施の形態に係る回転処理において、ベクトルを説明する図である。
【図２０】第４の実施の形態に係る葉の配置を決定するフローチャートである。
【図２１】第４の実施の形態に係る葉の描画範囲を説明する図である。
【図２２】第５の実施の形態に係る葉の配置を決定するフローチャートである。
【図２３】図２３Ａは第５の実施の形態に係る葉の配置のＸ軸成分を決定する関数を示す図であり、図２３Ｂは第５の実施の形態に係る葉の配置のＹ軸成分を決定する関数を示す図であり、図２３Ｃは第５の実施の形態に係る葉の配置のＺ軸成分を決定する関数を示す図である。
【図２４】第６の実施の形態に係る葉の配置を決定するフローチャートである。
【図２５】枝ベクトル情報テーブルを示す図である。
【図２６】枝ベクトルを表す図である。
【図２７】枝ベクトルを表す図である。
【符号の説明】
１００…仮想空間                  １０２…幹
１０４ａ…葉のポリゴン
１０４ａ１〜１０４ａ４…葉のポリゴンの頂点
ｅ…仮想視点                      ｆ、ｇ、ｈ…関数
Ｖ…ポリゴン面の法線ベクトル      Ｖｂi…枝ベクトル
Ｚ０…スクリーン面
【図１】
0003715568.tif 000002
【図２】
0003715568.tif 000003
【図３】
0003715568.tif 000004
【図４】
0003715568.tif 000005
【図５】
0003715568.tif 000006
【図６】
0003715568.tif 000007
【図７】
0003715568.tif 000008
【図８】
0003715568.tif 000009
【図９】
0003715568.tif 000010
【図１０】
0003715568.tif 000011
【図１１】
0003715568.tif 000012
【図１２】
0003715568.tif 000013
【図１３】
0003715568.tif 000014
【図１４】
0003715568.tif 000015
【図１５】
0003715568.tif 000016
【図１６】
0003715568.tif 000017
【図１７】
0003715568.tif 000018
【図１８】
0003715568.tif 000019
【図１９】
0003715568.tif 000020
【図２０】
0003715568.tif 000021
【図２１】
0003715568.tif 000022
【図２２】
0003715568.tif 000023
【図２３】
0003715568.tif 000024
【図２４】
0003715568.tif 000025
【図２５】
0003715568.tif 000026
【図２６】
0003715568.tif 000027
【図２７】
0003715568.tif 000028