(57)【特許請求の範囲】
【請求項１】
仮想空間内のキャラクタオブジェクトの位置と、面オブジェクトの位置と、光源の位置と、を記憶する記憶部と、
当該光源によって当該面オブジェクトへ投影される当該キャラクタオブジェクトの陰影を計算する陰影計算部と、
当該キャラクタオブジェクトと当該面オブジェクトとの距離を計算する距離計算部と、
前記計算された陰影を、前記計算された当該キャラクタオブジェクトと当該面オブジェクトとの距離に応じて変化させる変化部と、
当該キャラクタオブジェクトと、当該面オブジェクトと、前記変化された当該陰影と、を描画した画像を生成する生成部と、
音楽を再生する再生部と、
を備え、
前記変化部は、前記計算された陰影を、前記再生部によって再生される音楽のジャンル、テンポ、旋律、曲調、リズム、拍子のうち少なくともいずれか一つに応じて変化させる、
ことを特徴とする画像生成装置。
【請求項２】
仮想空間内のキャラクタオブジェクトの位置と、面オブジェクトの位置と、光源の位置と、を記憶する記憶部と、
当該光源によって当該面オブジェクトへ投影される当該キャラクタオブジェクトの陰影を計算する陰影計算部と、
当該キャラクタオブジェクトと当該面オブジェクトとの距離を計算する距離計算部と、
前記計算された陰影を、前記計算された当該キャラクタオブジェクトと当該面オブジェクトとの距離に応じて変化させる変化部と、
当該キャラクタオブジェクトと、当該面オブジェクトと、前記変化された当該陰影と、を描画した画像を生成する生成部と、
を備える画像生成装置であって、
前記変化部は、前記計算された陰影を、当該画像生成装置で実行されるゲームにおいてプレイヤーが獲得した点数に応じて変化させる、
ことを特徴とする画像生成装置。
【請求項３】
仮想空間内のキャラクタオブジェクトの位置と、面オブジェクトの位置と、光源の位置と、を記憶する記憶部と、
当該光源によって当該面オブジェクトへ投影される当該キャラクタオブジェクトの陰影を計算する陰影計算部と、
当該キャラクタオブジェクトと当該面オブジェクトとの距離を計算する距離計算部と、
前記計算された陰影を、前記計算された当該キャラクタオブジェクトと当該面オブジェクトとの距離に応じて変化させる変化部と、
当該キャラクタオブジェクトと、当該面オブジェクトと、前記変化された当該陰影と、を描画した画像を生成する生成部と、
を備える画像生成装置であって、
前記変化部は、前記計算された陰影を、当該画像生成装置で実行されるゲームにおけるプレイヤーによる、ゲーム回数と、プレイ時間と、操作履歴と、のうち少なくともいずれか１つに応じて変化させる、
ことを特徴とする画像生成装置。
【請求項４】
仮想空間内のキャラクタオブジェクトの位置と、面オブジェクトの位置と、光源の位置と、を記憶する記憶部と、
当該光源によって当該面オブジェクトへ投影される当該キャラクタオブジェクトの陰影を計算する陰影計算部と、
当該キャラクタオブジェクトと当該面オブジェクトとの距離を計算する距離計算部と、
前記計算された陰影を、前記計算された当該キャラクタオブジェクトと当該面オブジェクトとの距離に応じて変化させる変化部と、
当該キャラクタオブジェクトと、当該面オブジェクトと、前記変化された当該陰影と、を描画した画像を生成する生成部と、
を備える画像生成装置であって、
前記変化部は、前記計算された陰影を、当該画像生成装置で実行される対戦ゲームにおける、プレイヤーの勝敗数と、プレイヤーの対戦成績と、のうち少なくともいずれか一方に応じて変化させる、
ことを特徴とする画像生成装置。
【請求項５】
請求項１乃至４のいずれか１項に記載の画像生成装置であって、
前記記憶部は、当該キャラクタオブジェクトの形状と、当該面オブジェクトの形状とを更に記憶し、
前記記憶された当該キャラクタオブジェクトの位置と形状と、前記記憶された当該面オブジェクトの位置と形状とに基づいて、当該キャラクタオブジェクトが当該面オブジェクトと所定距離以上離れているか否かを判別する判別部を更に備え、
前記変化部は、前記判別部により当該キャラクタオブジェクトが当該面オブジェクトと所定距離以上離れていると判別された場合、前記計算された陰影を、前記計算された当該キャラクタオブジェクトと当該面オブジェクトとの距離に応じて変化させる、
ことを特徴とする画像生成装置。
【請求項６】
請求項５に記載の画像生成装置であって、
前記判別部は、当該キャラクタオブジェクトが当該面オブジェクトと所定距離以上離れている場合、当該キャラクタオブジェクトが当該面オブジェクトと接していないと判別し、それ以外の場合、当該キャラクタオブジェクトが当該面オブジェクトと接していると判別し、
前記変化部は、前記判別部により当該キャラクタオブジェクトが当該面オブジェクトと接していないと判別された場合、前記計算された陰影を、前記計算された当該キャラクタオブジェクトと当該面オブジェクトとの距離に応じて変化させる、
ことを特徴とする画像生成装置。
【請求項７】
請求項６に記載の画像生成装置であって、
前記判別部は、当該キャラクタオブジェクトの表面の所定領域が当該面オブジェクトと接しているか否かにより、当該キャラクタオブジェクトと当該面オブジェクトが接しているか否かを判別し、
前記変化部は、当該所定領域と当該面オブジェクトとの距離を、当該キャラクタオブジェクトと当該面オブジェクトとの距離とする、
ことを特徴とする画像生成装置。
【請求項８】
請求項１乃至７のいずれか１項に記載の画像生成装置であって、
前記変化部は、前記計算された陰影の色相、彩度、明度のうち少なくともいずれか一つを変化させる、
ことを特徴とする画像生成装置。
【請求項９】
請求項８に記載の画像生成装置であって、
前記変化部は、前記計算された陰影のうち当該所定領域に対応する部分の明度を、当該面オブジェクトと当該所定領域との距離に対して単調増加させる、
ことを特徴とする画像生成装置。
【請求項１０】
請求項８に記載の画像生成装置であって、
前記変化部は、前記計算された陰影のうち当該所定領域に対応する部分の明度を、当該面オブジェクトと当該所定領域との距離に対して単調減少させる、
ことを特徴とする画像生成装置。
【請求項１１】
記憶部、陰影計算部、距離計算部、変化部、生成部、再生部を備える画像生成装置にて実行される画像生成方法であって、
前記記憶部には、仮想空間内のキャラクタオブジェクトの位置と、面オブジェクトの位置と、光源の位置と、が記憶され、
前記陰影計算部が、当該光源によって当該面オブジェクトへ投影される当該キャラクタオブジェクトの陰影を計算する陰影計算ステップと、
前記距離計算部が、当該キャラクタオブジェクトと当該面オブジェクトとの距離を計算する距離計算ステップと、
前記変化部が、前記計算された陰影を、前記計算された当該キャラクタオブジェクトと当該面オブジェクトとの距離に応じて変化させる変化ステップと、
前記生成部が、当該キャラクタオブジェクトと、当該面オブジェクトと、前記変化された陰影と、を描画した画像を生成する生成ステップと、
前記再生部が、音楽を再生する再生ステップと、
を備え、
前記変化ステップでは、前記変化部は、前記計算された陰影を、前記再生ステップで再生される音楽のジャンル、テンポ、旋律、曲調、リズム、拍子のうち少なくともいずれか一つに応じて変化させる、
ことを特徴とする画像生成方法。
【請求項１２】
記憶部、陰影計算部、距離計算部、変化部、生成部を備える画像生成装置にて実行される画像生成方法であって、
前記記憶部には、仮想空間内のキャラクタオブジェクトの位置と、面オブジェクトの位置と、光源の位置と、が記憶され、
前記陰影計算部が、当該光源によって当該面オブジェクトへ投影される当該キャラクタオブジェクトの陰影を計算する陰影計算ステップと、
前記距離計算部が、当該キャラクタオブジェクトと当該面オブジェクトとの距離を計算する距離計算ステップと、
前記変化部が、前記計算された陰影を、前記計算された当該キャラクタオブジェクトと当該面オブジェクトとの距離に応じて変化させる変化ステップと、
前記生成部が、当該キャラクタオブジェクトと、当該面オブジェクトと、前記変化された陰影と、を描画した画像を生成する生成ステップと、
を備え、
前記変化ステップでは、前記変化部が、前記計算された陰影を、当該画像生成装置で実行されるゲームにおいてプレイヤーが獲得した点数に応じて変化させる、
ことを特徴とする画像生成方法。
【請求項１３】
記憶部、陰影計算部、距離計算部、変化部、生成部を備える画像生成装置にて実行される画像生成方法であって、
前記記憶部には、仮想空間内のキャラクタオブジェクトの位置と、面オブジェクトの位置と、光源の位置と、が記憶され、
前記陰影計算部が、当該光源によって当該面オブジェクトへ投影される当該キャラクタオブジェクトの陰影を計算する陰影計算ステップと、
前記距離計算部が、当該キャラクタオブジェクトと当該面オブジェクトとの距離を計算する距離計算ステップと、
前記変化部が、前記計算された陰影を、前記計算された当該キャラクタオブジェクトと当該面オブジェクトとの距離に応じて変化させる変化ステップと、
前記生成部が、当該キャラクタオブジェクトと、当該面オブジェクトと、前記変化された陰影と、を描画した画像を生成する生成ステップと、
を備え、
前記変化ステップでは、前記変化部が、前記計算された陰影を、当該画像生成装置で実行されるゲームにおけるプレイヤーによる、ゲーム回数と、プレイ時間と、操作履歴と、のうち少なくともいずれか１つに応じて変化させる、
ことを特徴とする画像生成方法。
【請求項１４】
記憶部、陰影計算部、距離計算部、変化部、生成部を備える画像生成装置にて実行される画像生成方法であって、
前記記憶部には、仮想空間内のキャラクタオブジェクトの位置と、面オブジェクトの位置と、光源の位置と、が記憶され、
前記陰影計算部が、当該光源によって当該面オブジェクトへ投影される当該キャラクタオブジェクトの陰影を計算する陰影計算ステップと、
前記距離計算部が、当該キャラクタオブジェクトと当該面オブジェクトとの距離を計算する距離計算ステップと、
前記変化部が、前記計算された陰影を、前記計算された当該キャラクタオブジェクトと当該面オブジェクトとの距離に応じて変化させる変化ステップと、
前記生成部が、当該キャラクタオブジェクトと、当該面オブジェクトと、前記変化された陰影と、を描画した画像を生成する生成ステップと、
を備え、
前記変化ステップでは、前記変化部が、前記計算された陰影を、当該画像生成装置で実行される対戦ゲームにおける、プレイヤーの勝敗数と、プレイヤーの対戦成績と、のうち少なくともいずれか一方に応じて変化させる、
ことを特徴とする画像生成方法。
【請求項１５】
コンピュータを、
仮想空間内のキャラクタオブジェクトの位置と、面オブジェクトの位置と、光源の位置と、を記憶する記憶部、
当該光源によって当該面オブジェクトへ投影される当該キャラクタオブジェクトの陰影を計算する陰影計算部、
当該キャラクタオブジェクトと当該面オブジェクトとの距離を計算する距離計算部、
前記計算された陰影を、前記計算された当該キャラクタオブジェクトと当該面オブジェクトとの距離に応じて変化させる変化部、
当該キャラクタオブジェクトと、当該面オブジェクトと、前記変化された陰影と、を描画した画像を生成する生成部、
音楽を再生する再生部、
として機能させ、
前記変化部は、前記計算された陰影を、前記再生部によって再生される音楽のジャンル、テンポ、旋律、曲調、リズム、拍子のうち少なくともいずれか一つに応じて変化させる、
ことを特徴とするプログラム。
【請求項１６】
コンピュータを、
仮想空間内のキャラクタオブジェクトの位置と、面オブジェクトの位置と、光源の位置と、を記憶する記憶部、
当該光源によって当該面オブジェクトへ投影される当該キャラクタオブジェクトの陰影を計算する陰影計算部、
当該キャラクタオブジェクトと当該面オブジェクトとの距離を計算する距離計算部、
前記計算された陰影を、前記計算された当該キャラクタオブジェクトと当該面オブジェクトとの距離に応じて変化させる変化部、
当該キャラクタオブジェクトと、当該面オブジェクトと、前記変化された当該陰影と、を描画した画像を生成する生成部、
として機能させるプログラムであって、
前記変化部は、前記計算された陰影を、当該コンピュータで実行されるゲームにおいてプレイヤーが獲得した点数に応じて変化させる、
ことを特徴とするプログラム。
【請求項１７】
コンピュータを、
仮想空間内のキャラクタオブジェクトの位置と、面オブジェクトの位置と、光源の位置と、を記憶する記憶部、
当該光源によって当該面オブジェクトへ投影される当該キャラクタオブジェクトの陰影を計算する陰影計算部、
当該キャラクタオブジェクトと当該面オブジェクトとの距離を計算する距離計算部、
前記計算された陰影を、前記計算された当該キャラクタオブジェクトと当該面オブジェクトとの距離に応じて変化させる変化部、
当該キャラクタオブジェクトと、当該面オブジェクトと、前記変化された当該陰影と、を描画した画像を生成する生成部、
として機能させるプログラムであって、
前記変化部は、前記計算された陰影を、当該コンピュータで実行されるゲームにおけるプレイヤーによる、ゲーム回数と、プレイ時間と、操作履歴と、のうち少なくともいずれか１つに応じて変化させる、
ことを特徴とするプログラム。
【請求項１８】
コンピュータを、
仮想空間内のキャラクタオブジェクトの位置と、面オブジェクトの位置と、光源の位置と、を記憶する記憶部、
当該光源によって当該面オブジェクトへ投影される当該キャラクタオブジェクトの陰影を計算する陰影計算部、
当該キャラクタオブジェクトと当該面オブジェクトとの距離を計算する距離計算部、
前記計算された陰影を、前記計算された当該キャラクタオブジェクトと当該面オブジェクトとの距離に応じて変化させる変化部、
当該キャラクタオブジェクトと、当該面オブジェクトと、前記変化された当該陰影と、を描画した画像を生成する生成部、
として機能させるプログラムであって、
前記変化部は、前記計算された陰影を、当該コンピュータで実行される対戦ゲームにおける、プレイヤーの勝敗数と、プレイヤーの対戦成績と、のうち少なくともいずれか一方に応じて変化させる、
ことを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想空間内のオブジェクト同士の位置関係を明瞭に表現するために好適な画像生成装置、画像生成方法、ならびに、プログラムに関する。
【背景技術】
【０００２】
仮想空間において光源から発せられる光によって投影されるオブジェクトの影を表現する手法が知られている。例えば、特許文献１には、キャラクタオブジェクトと仮想カメラの位置との距離に基づいてキャラクタオブジェクトの影を表現するためのポリゴン数を変化させ、また、光源の位置に基づいてポリゴンの透明度を変化させることにより、データ量の増大を抑えつつ影を表現することができるゲーム装置が開示されている。
【特許文献１】特許第３９２６８２８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
上記のようなゲーム装置では、キャラクタオブジェクトの姿勢の変化に応じて影の様子も変化するので、よりリアリティのある画像を生成して表示することができる。しかし、キャラクタオブジェクトが細かい動きをする場合には、オブジェクト同士の位置関係が分かりづらくなることがある。例えば、仮想のダンサーがダンスのステップを踏む様子を表現したい場合、床に足が着いた状態と着いていない状態が頻繁に繰り返されると、ユーザは現在ダンサーの足が着いているか否かが判断しづらくなり、ダンサーがどのような動きをしているのか分かりづらくなってしまうことがあった。また、ダンスに限らず、奥行きのある３次元仮想空間を表現する場合、例えばオブジェクト自身の画像が障壁となってしまい、視点となる仮想カメラ視点の位置からはオブジェクト同士が接しているのか否かや、どの程度近づいているのかといった相対的な位置関係が分かりにくくなってしまうことがあった。
【０００４】
本発明はこのような課題を解決するものであり、仮想空間内のオブジェクト同士の位置関係を明瞭に表現するために好適な画像生成装置、画像生成方法、ならびに、プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００５】
以上の目的を達成するため、本発明の原理にしたがって、下記の発明を開示する。
【０００６】
本発明の第１の観点に係る画像生成装置は、記憶部、陰影計算部、距離計算部、変化部、生成部を備える。
記憶部は、仮想空間内のキャラクタオブジェクトの位置と、面オブジェクトの位置と、光源の位置と、を記憶する。
陰影計算部は、当該光源によって当該面オブジェクトへ投影される当該キャラクタオブジェクトの陰影を計算する。
距離計算部は、当該キャラクタオブジェクトと当該面オブジェクトとの距離を計算する。
変化部は、計算された陰影を、計算された当該キャラクタオブジェクトと当該面オブジェクトとの距離に応じて変化させる。
生成部は、当該キャラクタオブジェクトと、当該面オブジェクトと、変化された当該陰影と、を描画した画像を生成する。
このように画像生成装置を構成することにより、生成される画像に含まれるキャラクタオブジェクトの陰影は、キャラクタオブジェクトと面オブジェクトとの距離に応じて変化する。ユーザは、注目しているオブジェクトの影の変化を見れば、そのオブジェクトと他のオブジェクトがどの程度離れているか（近づいているか）といった位置関係を容易に判断することができ、仮想空間における距離感を掴みやすくなる。
例えば、ステップを踏むダンサーを表すオブジェクトをキャラクタオブジェクトとし、そのダンサーが立っている床を面オブジェクトとし、照明器具を光源とする。ダンサーがジャンプすると、変化部は、ジャンプの高さに応じて、照明によるダンサーの影を変化させる。ユーザは、影の変化の具合を見れば、ダンサーがどのくらいジャンプしたのかを容易に把握できる。例えば、精密な光源計算を行って陰影を計算することができるが、陰影が現れるおおよその領域（陰影領域）を計算し、計算した陰影領域を陰影として扱ってもよい。
【０００７】
記憶部は、当該キャラクタオブジェクトの形状と、当該面オブジェクトの形状とを更に記憶してもよい。
また、画像生成装置は、記憶された当該キャラクタオブジェクトの位置と形状と、記憶された当該面オブジェクトの位置と形状とに基づいて、当該キャラクタオブジェクトが当該面オブジェクトと所定距離以上離れているか否かを判別する判別部を更に備えてもよい。
そして、変化部は、判別部により当該キャラクタオブジェクトが当該面オブジェクトと所定距離以上離れていると判別された場合、計算された陰影を、計算された当該キャラクタオブジェクトと当該面オブジェクトとの距離に応じて変化させてもよい。
このように画像生成装置を構成することにより、キャラクタオブジェクトと面オブジェクトが所定距離まで近づけば、キャラクタオブジェクトの影が変化する。ユーザは、注目しているオブジェクトの影が変化すれば、他のオブジェクトと所定距離まで近づいたことが分かり、オブジェクト同士の位置関係を容易に把握することができる。
例えば、ダンサーが足を上げると、変化部は、ある高さより高く足を上げると、上げた高さに応じて、照明によるダンサーの影を変化させる。ユーザは、影の変化の具合を見れば、ダンサーがどのくらい足を上げたのかを容易に把握できる。
【０００８】
判別部は、当該キャラクタオブジェクトが当該面オブジェクトと所定距離以上離れている場合、当該キャラクタオブジェクトが当該面オブジェクトと接していないと判別し、それ以外の場合、当該キャラクタオブジェクトが当該面オブジェクトと接していると判別してもよい。
そして、変化部は、判別部により当該キャラクタオブジェクトが当該面オブジェクトと接していないと判別された場合、計算された陰影を、計算された当該キャラクタオブジェクトと当該面オブジェクトとの距離に応じて変化させてもよい。
このように画像生成装置を構成することにより、キャラクタオブジェクトと面オブジェクトが接触していなければ、キャラクタオブジェクトの影が変化する。ユーザは、注目しているオブジェクトの影が変化すれば、他のオブジェクトと接触したことが分かり、オブジェクト同士の位置関係を容易に把握することができる。
例えば、ダンサーの足が少しでも床から離れると、変化部は、離れた距離に応じて、照明によるダンサーの影を変化させる。ユーザは、影の変化の具合を見れば、ダンサーの足が床に着いているか否かを容易に把握できる。また、ダンサーの足が床からどれくらい浮いているかを容易に把握できる。
【０００９】
判別部は、当該キャラクタオブジェクトの表面の所定領域が当該面オブジェクトと接しているか否かにより、当該キャラクタオブジェクトと当該面オブジェクトが接しているか否かを判別してもよい。
そして、変化部は、当該所定領域と当該面オブジェクトとの距離を、当該キャラクタオブジェクトと当該面オブジェクトとの距離としてもよい。
このように画像生成装置を構成することにより、キャラクタオブジェクトの表面のうちの特定部分が面オブジェクトと接していなければ、キャラクタオブジェクトの影が変化する。ユーザは、注目しているオブジェクトの影を見れば、特定部分が他のオブジェクトと接触したことが分かり、オブジェクト同士の位置関係を容易に把握することができる。
例えば、ダンサーの足裏（靴裏）を特定部分とすると、変化部は、足裏が床と接していなければ、ダンサーの影を変化させる。ユーザは、影の変化の具合を見れば、ダンサーの足裏（靴裏）全体が床に着いているか否かを容易に把握できる。
【００１０】
変化部は、計算された陰影の色相、彩度、明度のうち少なくともいずれか一つを変化させてもよい。
例えば、キャラクタオブジェクトの陰影の色相、彩度、明度は、キャラクタオブジェクトと面オブジェクトとの距離に応じて変化する。ユーザは、注目しているオブジェクトの影の色相又は彩度又は明度の変化を見れば、そのオブジェクトと他のオブジェクトがどの程度離れているか（近づいているか）といった位置関係を容易に判断することができ、仮想空間における距離感を掴みやすくなる。
【００１１】
画像生成装置は、音楽を再生する再生部を更に備えてもよい。
そして、変化部は、計算された陰影を、再生部によって再生される音楽のジャンル、テンポ、旋律、曲調、リズム、拍子のうち少なくともいずれか一つに応じて変化させてもよい。
例えば、ユーザが音楽に合わせてダンスをしたり楽器を演奏したりするゲームにおいて、演奏する曲に応じて影の変化の仕方をアレンジすることができる。
【００１２】
変化部は、計算された陰影を、当該画像生成装置で実行されるゲームにおいてプレイヤーが獲得した点数に応じて変化させてもよい。
例えば、画像生成装置は、プレイヤーがゲームで獲得した点数が多い（少ない）ほどキャラクタオブジェクトの陰影を大きく変化させるので、プレイヤーは影の変化の度合いを見れば自分のスコアが高いか低いかをすぐに確認することができる。
【００１３】
変化部は、計算された陰影領域のうち当該所定領域に対応する部分の明度を、当該面オブジェクトと当該所定領域との距離に対して単調増加させてもよい。
このように画像生成装置を構成することにより、ユーザは、キャラクタオブジェクトの影の変化の大きさを見れば、変化の度合いによってオブジェクト同士がどの程度離れているのか、あるいは接触しているのか否かを容易に把握できる。
例えば、ダンサーの足が床から大きく離れているほど、ダンサーの影が明るくなる。ユーザは、影の明るさを見れば、足が床からどの程度離れているかを容易に把握できる。
【００１４】
変化部は、計算された陰影のうち当該所定領域に対応する部分の明度を、当該面オブジェクトと当該所定領域との距離に対して単調減少させてもよい。
このように画像生成装置を構成することにより、ユーザは、キャラクタオブジェクトの影の変化の大きさを見れば、変化の度合いによってオブジェクト同士がどの程度離れているのか、あるいは接触しているのか否かを容易に把握できる。
例えば、ダンサーの足が床に近いほど、ダンサーの影が明るくなる。ユーザは、影の明るさを見れば、足が床からどの程度離れているかを容易に把握できる。
【００１５】
本発明のその他の観点に係る画像生成方法は、記憶部、陰影計算部、距離計算部、変化部、生成部を備える画像生成装置にて実行される画像生成方法であって、陰影計算ステップ、距離計算ステップ、変化ステップ、生成ステップを備える。
記憶部には、仮想空間内のキャラクタオブジェクトの位置と、面オブジェクトの位置と、光源の位置と、が記憶される。
陰影計算ステップは、陰影計算部が、当該光源によって当該面オブジェクトへ投影される当該キャラクタオブジェクトの陰影を計算する。
距離計算ステップは、距離計算部が、当該キャラクタオブジェクトと当該面オブジェクトとの距離を計算する。
変化ステップは、変化部が、計算された陰影を、計算された当該キャラクタオブジェクトと当該面オブジェクトとの距離に応じて変化させる。
生成ステップは、生成部が、当該キャラクタオブジェクトと、当該面オブジェクトと、変化された当該陰影と、を描画した画像を生成する。
このように画像生成方法を構成することにより、この画像生成方法を用いた画像生成装置は、生成する画像に含まれるキャラクタオブジェクトの陰影は、キャラクタオブジェクトと面オブジェクトとの距離に応じて変化させる。ユーザは、注目しているオブジェクトの影の変化を見れば、そのオブジェクトと他のオブジェクトがどの程度離れているか、どの程度近づいているかといった位置関係を容易に判断することができ、仮想空間における距離感を掴みやすくなる。
【００１６】
本発明のその他の観点に係るプログラムは、コンピュータを、記憶部、陰影計算部、距離計算部、変化部、生成部として機能させる。
記憶部は、仮想空間内のキャラクタオブジェクトの位置と、面オブジェクトの位置と、光源の位置と、を記憶する。
陰影計算部は、当該光源によって当該面オブジェクトへ投影される当該キャラクタオブジェクトの陰影を計算する。
距離計算部は、当該キャラクタオブジェクトと当該面オブジェクトとの距離を計算する。
変化部は、計算された陰影を、計算された当該キャラクタオブジェクトと当該面オブジェクトとの距離に応じて変化させる。
生成部は、当該キャラクタオブジェクトと、当該面オブジェクトと、変化された当該陰影と、を描画した画像を生成する。
このようにプログラムを構成することにより、このプログラムを実行するコンピュータは、生成する画像に含まれるキャラクタオブジェクトの陰影の色相、彩度、明度を、キャラクタオブジェクトと面オブジェクトとの距離に応じて変化させる。ユーザは、注目しているオブジェクトの影を見れば、そのオブジェクトと他のオブジェクトがどの程度離れているか、どの程度近づいているかといった位置関係を容易に判断することができ、仮想空間における距離感を掴みやすくなる。
【発明の効果】
【００１７】
本発明によれば、仮想空間内のオブジェクト同士の位置関係を明瞭に表現することができる。
【発明を実施するための最良の形態】
【００１８】
本発明の実施形態を説明する。以下では、理解を容易にするため、ゲーム用の情報処理装置を利用して本発明が実現される実施形態を説明するが、以下の実施形態は説明のためのものであり、本願発明の範囲を制限するものではない。したがって、当業者であればこれらの各要素もしくは全要素をこれと均等なものに置換した実施形態を採用することが可能であるが、これらの実施形態も本発明の範囲に含まれる。
【００１９】
図１は、プログラムを実行することにより、本発明の画像生成装置の機能を果たす典型的な情報処理装置１００の概要構成を示す模式図である。以下、本図を参照して説明する。
【００２０】
情報処理装置１００は、ＣＰＵ（Central Processing Unit）１０１と、ＲＯＭ（Read Only Memory）１０２と、ＲＡＭ（Random Access Memory）１０３と、インターフェース１０４と、コントローラ１０５と、外部メモリ１０６と、ＤＶＤ−ＲＯＭ（Digital Versatile Disk - Read Only Memory）ドライブ１０７と、画像処理部１０８と、音声処理部１０９と、ＮＩＣ（Network Interface Card）１１０と、を備える。
【００２１】
ゲーム用のプログラムおよびデータを記憶したＤＶＤ−ＲＯＭをＤＶＤ−ＲＯＭドライブ１０７に装着して、情報処理装置１００の電源を投入することにより、当該プログラムが実行され、本実施形態の画像生成装置が実現される。
【００２２】
ＣＰＵ  １０１は、情報処理装置１００全体の動作を制御し、各構成要素と接続され制御信号やデータをやりとりする。また、ＣＰＵ  １０１は、レジスタ（図示せず）という高速アクセスが可能な記憶域に対してＡＬＵ（Arithmetic Logic Unit）（図示せず）を用いて加減乗除等の算術演算や、論理和、論理積、論理否定等の論理演算、ビット和、ビット積、ビット反転、ビットシフト、ビット回転等のビット演算などを行うことができる。さらに、マルチメディア処理対応のための加減乗除等の飽和演算や、三角関数等、ベクトル演算などを高速に行えるように、ＣＰＵ  １０１自身が構成されているものや、コプロセッサを備えて実現するものがある。
【００２３】
ＲＯＭ  １０２には、電源投入直後に実行されるＩＰＬ（Initial Program Loader）が記録され、これが実行されることにより、ＤＶＤ−ＲＯＭに記録されたプログラムをＲＡＭ  １０３に読み出してＣＰＵ  １０１による実行が開始される。また、ＲＯＭ  １０２には、情報処理装置１００全体の動作制御に必要なオペレーティングシステムのプログラムや各種のデータが記録される。
【００２４】
ＲＡＭ  １０３は、データやプログラムを一時的に記憶するためのもので、ＤＶＤ−ＲＯＭから読み出したプログラムやデータ、その他ゲームの進行やチャット通信に必要なデータが保持される。また、ＣＰＵ  １０１は、ＲＡＭ  １０３に変数領域を設け、当該変数に格納された値に対して直接ＡＬＵを作用させて演算を行ったり、ＲＡＭ  １０３に格納された値を一旦レジスタに格納してからレジスタに対して演算を行い、演算結果をメモリに書き戻す、などの処理を行う。
【００２５】
インターフェース１０４を介して接続されたコントローラ１０５は、ユーザがダンスゲームやサッカーゲームなどのゲームの実行の際に行う操作入力を受け付ける。
【００２６】
インターフェース１０４を介して着脱自在に接続された外部メモリ１０６には、ゲームのプレイ状況（過去の成績等）を示すデータ、ゲームの進行状態を示すデータ、ネットワークを用いたゲームのチャット通信のログ（記録）のデータなどが書き換え可能に記憶される。ユーザは、コントローラ１０５を介して指示入力を行うことにより、これらのデータを適宜外部メモリ１０６に記録することができる。
【００２７】
ＤＶＤ−ＲＯＭドライブ１０７に装着されるＤＶＤ−ＲＯＭには、ゲームを実現するためのプログラムとゲームに付随する画像データや音声データが記録される。ＣＰＵ  １０１の制御によって、ＤＶＤ−ＲＯＭドライブ１０７は、これに装着されたＤＶＤ−ＲＯＭに対する読み出し処理を行って、必要なプログラムやデータを読み出し、これらはＲＡＭ  １０３等に一時的に記憶される。
【００２８】
画像処理部１０８は、ＤＶＤ−ＲＯＭから読み出されたデータをＣＰＵ  １０１や画像処理部１０８が備える画像演算プロセッサ（図示せず）によって加工処理した後、これを画像処理部１０８が備えるフレームメモリ（図示せず）に記録する。フレームメモリに記録された画像情報は、所定の同期タイミングでビデオ信号に変換され画像処理部１０８に接続されるモニター（図示せず）へ出力される。これにより、各種の画像表示が可能となる。
【００２９】
画像演算プロセッサは、２次元の画像の重ね合わせ演算やアルファブレンディング等の透過演算、各種の飽和演算を高速に実行できる。
【００３０】
また、仮想３次元空間に配置され、各種のテクスチャ情報が付加されたポリゴン情報を、Ｚバッファ法によりレンダリングして、所定の視点位置から仮想３次元空間に配置されたポリゴンを所定の視線の方向へ俯瞰したレンダリング画像を得る演算の高速実行も可能である。
【００３１】
さらに、ＣＰＵ  １０１と画像演算プロセッサが協調動作することにより、文字の形状を定義するフォント情報にしたがって、文字列を２次元画像としてフレームメモリへ描画したり、各ポリゴン表面へ描画することが可能である。
【００３２】
また、ゲームの画像などの情報をＤＶＤ−ＲＯＭに用意しておき、これをフレームメモリに展開することによって、ゲームの様子などを画面に表示することができるようになる。
【００３３】
音声処理部１０９は、ＤＶＤ−ＲＯＭから読み出した音声データをアナログ音声信号に変換し、これに接続されたスピーカ（図示せず）から出力させる。また、ＣＰＵ  １０１の制御の下、ゲームの進行の中で発生させるべき効果音や楽曲データを生成し、これに対応した音声をスピーカから出力させる。
【００３４】
音声処理部１０９では、ＤＶＤ−ＲＯＭに記録された音声データがＭＩＤＩデータである場合には、これが有する音源データを参照して、ＭＩＤＩデータをＰＣＭデータに変換する。また、ＡＤＰＣＭ（Adaptive Differential Pulse Code Modulation）形式やOgg Vorbis形式等の圧縮済音声データである場合には、これを展開してＰＣＭデータに変換する。ＰＣＭデータは、そのサンプリング周波数に応じたタイミングでＤ／Ａ（Digital/Analog）変換を行って、スピーカに出力することにより、音声出力が可能となる。
【００３５】
ＮＩＣ  １１０は、情報処理装置１００をインターネット等のコンピュータ通信網（図示せず）に接続するためのものであり、ＬＡＮ（Local Area Network）を構成する際に用いられる１０ＢＡＳＥ−Ｔ／１００ＢＡＳＥ−Ｔ規格にしたがうものや、電話回線を用いてインターネットに接続するためのアナログモデム、ＩＳＤＮ（Integrated Services Digital Network）モデム、ＡＤＳＬ（Asymmetric Digital Subscriber Line）モデム、ケーブルテレビジョン回線を用いてインターネットに接続するためのケーブルモデム等と、これらとＣＰＵ  １０１との仲立ちを行うインターフェース（図示せず）により構成される。
【００３６】
このほか、情報処理装置１００は、ハードディスク等の大容量外部記憶装置を用いて、ＲＯＭ  １０２、ＲＡＭ  １０３、外部メモリ１０６、ＤＶＤ−ＲＯＭドライブ１０７に装着されるＤＶＤ−ＲＯＭ等と同じ機能を果たすように構成してもよい。
【００３７】
次に、本実施形態の画像生成装置２００の機能的な構成について説明する。図２に示すように、画像生成装置２００は、記憶部２０１、計算部２０２、判別部２０３、変化部２０４、生成部２０５を備える。
【００３８】
図３に示すように、仮想空間内にはキャラクタオブジェクト３０１と面オブジェクト３０２が配置される。本図は、この仮想空間内に配置された仮想カメラ（図示せず）から見た様子を表している。例えば、ダンスゲームにおいて、キャラクタオブジェクト３０１はプレイヤー（画像生成装置２００のユーザ）にダンスを教えるインストラクターを表すオブジェクトであり、面オブジェクト３０２はインストラクターが立っている床やステージを表すオブジェクトである。仮想空間内には、その他のオブジェクトが配置されていてもよい。
【００３９】
さらに、この仮想空間内には光源３０３が配置される。キャラクタオブジェクト３０１や面オブジェクト３０２などに光源３０３から光が照射されると、面オブジェクト３０２の表面には、光源３０３からの光によるキャラクタオブジェクト３０１の陰影３０４が陰影領域３０５に映る。例えば、光源３０３は仮想空間内の照明器具や太陽などである。
【００４０】
本発明をより理解しやすくするために、本実施形態では光源３０３を点光源とする。ただし、光源３０３は、線光源、面光源、あるいは任意の立体的な形状をもつ光源であってもよい。
【００４１】
なお、ＣＰＵ  １０１は、陰影領域３０５の色相、彩度、明度を変化させ、例えば黒やグレーにしたり相対的に暗くしたりすることによって、陰影領域３０５を陰影３０４としてもよい。例えば、図４（ａ）は、キャラクタオブジェクト３０１が面オブジェクト３０２と接している状態の一例を表す図である。図４（ｂ）は、キャラクタオブジェクト３０１が面オブジェクト３０２と接していない（離れている）状態の一例を表す図である。ＣＰＵ  １０１は、陰影領域３０５の形状を楕円に固定し、キャラクタオブジェクト３０１の位置と形状、面オブジェクト３０２の位置と形状、光源３０３の位置に基づいて、この楕円の位置を移動したり、楕円を拡大・縮小・回転させたりする。このように陰影領域３０５を陰影３０４にすれば、画像生成装置２００は、光源計算を正確に行う必要はなく、陰影３０４の位置と形状を計算しなくて済み、後述する画像を生成する処理を簡略化できる。勿論、形状は楕円に限られず、任意の図形にすることができる。
【００４２】
以下、画像生成装置２００がプレイヤーにダンスの振りなどを教えるゲームを実行し、ゲーム進行に応じてダンスのインストラクターを含む画像を生成して表示する場面を想定して説明する。ただし、これは一つの実施形態に過ぎず、ダンスゲーム以外のその他のゲームに登場する任意のキャラクタ画像を表示するためにも本発明を用いることができる。また、ゲームに限らず、様々なアニメーションや映画等の画像を生成するために本発明を用いることもできる。
【００４３】
記憶部２０１は、（Ａ）キャラクタオブジェクト３０１の位置と形状を示すキャラクタオブジェクト情報２５１と、（Ｂ）面オブジェクト３０２の位置と形状を示す面オブジェクト情報２５２と、（Ｃ）光源３０３の位置を示す光源情報２５３と、を記憶する。ＣＰＵ  １０１は、キャラクタオブジェクト３０１と面オブジェクト３０２の初期位置と初期形状、及び、光源３０３の初期位置をＤＶＤ−ＲＯＭドライブに装着されたＤＶＤ−ＲＯＭから読み出してＲＡＭ  １０３に記憶し、ゲームの進行に応じてこれらの位置と形状を計算して、キャラクタオブジェクト情報２５１と面オブジェクト情報２５２と光源情報２５３を更新する。ＣＰＵ  １０１、ＲＡＭ  １０３、ＤＶＤ−ＲＯＭドライブ１０７が協働して動作することにより、記憶部２０１として機能する。
【００４４】
キャラクタオブジェクト３０１と面オブジェクト３０２と光源３０３の位置は、それぞれ、１個の動径と２個の偏角を用いた極座標系を用いて、各オブジェクト内の代表点の座標（ｒ，θ，φ）で表される。例えば、キャラクタオブジェクト３０１の重心点の座標値が、キャラクタオブジェクト３０１の代表点の位置を示す座標値となる。ただし、座標系はこれに限られるものではなく、例えば互いに直交する３軸による直交座標系を用いてもよい。また、仮想空間の全体を表現するグローバル座標系（ワールド座標系）と、オブジェクトごとのローカル座標系（ボディ座標系）とを別々に設定して座標計算等を行う構成を採用してもよい。
【００４５】
キャラクタオブジェクト３０１と面オブジェクト３０２の形状は、それらの表面を微小な多角形（典型的には三角形や四角形など）のポリゴン（プリミティブ）に分割して、数値データ化されて表される。
【００４６】
例えば、面オブジェクト３０２を平面とすると、面オブジェクト３０２上の任意の少なくとも３点の座標値を用いて、面オブジェクト３０２の位置を定義することができる。ただし、面オブジェクト３０２の形状は平面に限られず、任意の形状の曲面でもよい。
【００４７】
計算部２０２は、陰影計算部２１１と距離計算部２１２を備える。陰影計算部２１１は、光源３０３から照射される光によるキャラクタオブジェクト３０１の陰影３０４が面オブジェクト３０２へ投射される陰影領域３０５の位置を計算する。画像処理部１０８は、ＣＰＵ  １０１の制御により、キャラクタオブジェクト情報２５１と、面オブジェクト情報２５２と、光源情報２５３とに基づいて、面オブジェクト３０２へ投影される陰影領域３０５の位置を計算して、計算結果をＲＡＭ  １０３に記憶する。また、距離計算部２１２は、キャラクタオブジェクト３０１と面オブジェクト３０２との距離δを計算して、計算結果をＲＡＭ  １０３に記憶する。距離δの詳細については後述する。ＣＰＵ  １０１、ＲＡＭ  １０３、画像処理部１０８が協働して動作することにより、計算部２０２として機能する。
【００４８】
図５（ａ）は、キャラクタオブジェクト３０１内に予め定義した所定領域５０１と面オブジェクト３０２とが接していない状態を表す図の一例である。本例では、ヒト型のキャラクタオブジェクト３０１が片足を上げている。所定領域５０１は、キャラクタオブジェクト３０１の足裏（靴裏）に相当する部分である。一方、上述の図３は、キャラクタオブジェクト３０１内の所定領域５０１と面オブジェクト３０２が接している状態を表す図の一例である。
【００４９】
なお、陰影計算部２１１は、陰影領域３０５の位置を計算する代わりに、面オブジェクト３０２へ投影されるキャラクタオブジェクト３０１の陰影３０４の位置と形状を計算し、陰影領域３０５内の所定領域５０１の陰影５０２（図５（ａ）の斜線で塗った部分）の位置を計算してもよい。このようにすれば、影の形がより正確に表現されるので、リアリティのある画像を生成することができる。
【００５０】
本実施形態では、距離計算部２１２は、キャラクタオブジェクト３０１と面オブジェクト３０２との距離δとして、所定領域５０１と面オブジェクト３０２との距離を計算する。
【００５１】
所定領域５０１は、１つのキャラクタオブジェクト３０１について複数箇所存在してもよい。例えば、図５（ａ）では、片足の足裏を所定領域５０１としているが、両足の足裏をそれぞれ所定領域５０１としてもよい。所定領域５０１はキャラクタオブジェクト３０１の表面に予め設定された領域であり、キャラクタオブジェクト３０１の表面の任意の領域（例えば手のひらなど）を所定領域５０１に設定することができる。
【００５２】
判別部２０３は、記憶部２０１に記憶されたキャラクタオブジェクト３０１の位置と形状と、面オブジェクト３０２の位置と形状とに基づいて、キャラクタオブジェクト３０１が面オブジェクト３０２と接しているか否かを判別する。ＣＰＵ  １０１、ＲＡＭ  １０３、画像処理部１０８が協働して動作することにより、判別部２０３として機能する。
【００５３】
具体的には、判別部２０３は、キャラクタオブジェクト３０１内の所定領域５０１が面オブジェクト３０２と接しているか否かにより、キャラクタオブジェクト３０１と面オブジェクト３０２が接しているか否かを判別する。
【００５４】
ここで、図５（ｂ）に示すように、判別部２０３は、所定領域５０１に含まれるある点Ｐ１の座標と、面オブジェクト３０２上の点Ｑ１の座標とが一致すれば、点Ｐ１と面オブジェクト３０２は「接している」と判別する。点Ｐ１として所定領域５０１上の任意の点を選ぶことができ、点Ｑ１として面オブジェクト上の任意の点を選ぶことができる。あるいは、一致しなくても、点Ｐ１から点Ｑ１までの距離ＤＰＱが所定値以内であれば、接しているとしてもよい。すなわち、所定領域５０１内の点Ｐ１の座標と面オブジェクト３０２上の点Ｑ１の座標が一致するか、あるいは点Ｐ１から点Ｑ１までの距離が所定値以内である場合、点Ｐ１と面オブジェクト３０２は接している。
【００５５】
さらに、判別部２０３は、所定領域５０１内のＮ個（Ｎは１以上の整数）の所定の点Ｐ１，Ｐ２，…，ＰＮのうち１つでも面オブジェクト３０２と接している場合、所定領域５０１と面オブジェクト３０２が接していると判別する。一方、所定の点Ｐ１，Ｐ２，…，ＰＮのすべてが面オブジェクト３０２と接していない場合、判別部２０３は、所定領域５０１と面オブジェクト３０２が接していないと判別する。
【００５６】
例えば、キャラクタオブジェクト３０１がダンスのインストラクターであり、面オブジェクト３０１がインストラクターの立っている床であり、所定領域５０１がキャラクタオブジェクト３０１の表面全体のうちインストラクターの足裏（靴裏）に相当する部分であるとする。判別部２０３は、所定領域５０１がその一部分でも面オブジェクト３０２と接していれば、キャラクタオブジェクト３０１と面オブジェクト３０２が接していると判別する。図４（ｂ）のようにインストラクターがジャンプして宙に浮いた状態では、判別部２０３は、インストラクター（キャラクタオブジェクト３０１）と床（面オブジェクト３０２）が接していない、と判別する。また、インストラクターがつま先だけで着地した状態では、判別部２０３は、インストラクターと床が接している、と判別する。
【００５７】
あるいは、判別部２０３は、所定領域５０１内のＮ個の点の全部が面オブジェクト３０２と接していれば、所定領域５０１と面オブジェクト３０２は接していると判別し、そうでなければ接していないと判別してもよい。
【００５８】
例えば、判別部２０３は、所定領域５０１の一部分が面オブジェクト３０２と接していない、すなわち、所定領域５０１全体が面オブジェクト３０２と接しているのでないならば、キャラクタオブジェクト３０１と面オブジェクト３０２が接していない（離れている）と判別するように構成してもよい。この場合、例えばインストラクターがジャンプして宙に浮いた状態では、判別部２０３は、インストラクターと床が接していない、と判別する。また、インストラクターがつま先だけで着地した状態でも、判別部２０３は、インストラクターと床が接していない、と判別する。そして、インストラクターが足裏全体で着地した状態では、判別部２０３は、インストラクターと床が接している、と判別する。
【００５９】
また、判別部２０３は、所定領域５０１内のＮ個の点のうち、所定の割合以上（例えば５０％以上など）の点が面オブジェクト３０２と接していれば、所定領域５０１と面オブジェクト３０２は接していると判別し、そうでなければ接していないと判別してもよい。また、所定領域５０１のうち所定の面積以上の領域が面オブジェクト３０２と接していれば、所定領域５０１と面オブジェクト３０２は接していると判別し、そうでなければ接していないと判別してもよい。
【００６０】
これらのいずれの判別手法を採用してもよいが、本実施形態では、判別部２０３は、所定領域５０１の一部分でも面オブジェクト３０２と接していれば、キャラクタオブジェクト３０１と面オブジェクト３０２は接していると判別することとする。
【００６１】
キャラクタオブジェクト３０１に複数の所定領域５０１を設定する場合、それらの所定領域５０１のうちいずれか１つでも面オブジェクト３０２と接しているか否かを判別すればよい。ただし、すべての所定領域５０１が面オブジェクト３０２と接しているか否かを判別することとしてもよい。
【００６２】
変化部２０４は、キャラクタオブジェクト３０１が面オブジェクト３０２と接していないと判別部２０３により判別された場合、陰影計算部２１１により計算された陰影領域３０５の色相（Ｈ）、彩度（Ｓ）、明度（Ｂ）のうち少なくともいずれか１つを、距離計算部２１２により計算されたキャラクタオブジェクト３０１と面オブジェクト３０２との距離δに応じて変化させる。ＣＰＵ  １０１、ＲＡＭ  １０３、画像処理部１０８が協働して動作することにより、変化部２０４として機能する。
【００６３】
キャラクタオブジェクト３０１と面オブジェクト３０２との距離δとは、図５（ａ）に示すように、所定領域５０１内の所定の代表点から面オブジェクト３０２の表す面に下ろした垂線の長さである。典型的には代表点は所定領域５０１の重心点である。また、所定領域５０１に含まれるすべての点のうち、最も面オブジェクト３０２に近い点から、面オブジェクト３０２の表す面に下ろした垂線の長さを、距離δとしてもよい。
【００６４】
例えば、変化部２０４は、陰影領域３０５の色相と彩度と明度のうち少なくともいずれか１つを、キャラクタオブジェクト３０１と面オブジェクト３０２との距離δに対して単調増加させる。図６（ａ）〜（ｄ）は、変化させる対象として明度を採用し、キャラクタオブジェクト３０１と面オブジェクト３０２との距離δと、明度Ｂと、の関係の例を示す図である。明度はＢｍｉｎ％以上Ｂｍａｘ％以下の値を取る。最小値Ｂｍｉｎと最大値Ｂｍａｘは、０％以上１００％以下であって、Ｂｍｉｎ＜Ｂｍａｘを満たす任意の値に設定できる。
【００６５】
図６（ａ）では、変化部２０４は、所定領域５０１の陰影５０２の明度を、キャラクタオブジェクト３０１と面オブジェクト３０２との距離δに比例して増加させる。ある距離（図示せず）で明度が最大値Ｂｍａｘに達すると、それ以上の距離では明度は最大値Ｂｍａｘで一定となる。
図６（ｂ）では、変化部２０４は、距離δが長くなるほど明度の増加率を小さくする。明度は最終的に最大値Ｂｍａｘに収束する。
図６（ｃ）では、変化部２０４は、明度の増加率を変化させる。増加率は０以上の実数である。
図６（ｄ）では、変化部２０４は、階段関数を用いて明度を変化させる。全体として、距離δが増加するにしたがって明度が大きくなる傾向にあればよく、明度が一定となる区間（増加率がゼロとなる区間）があってもよい。
【００６６】
例えば、変化部２０４は、陰影領域３０５の色相と彩度と明度のうち少なくともいずれか１つを、キャラクタオブジェクト３０１と面オブジェクト３０２との距離δに対して単調減少させてもよい。図７（ａ）〜（ｄ）は、変化させる対象として明度を採用し、キャラクタオブジェクト３０１と面オブジェクト３０２との距離δと、明度Ｂと、の関係の例を示す図である。
【００６７】
図７（ａ）では、変化部２０４は、所定領域５０１の陰影５０２の明度を、キャラクタオブジェクト３０１と面オブジェクト３０２との距離δに比例して減少させる。ある距離（図示せず）で明度が最小値Ｂｍｉｎになると、それ以上の距離では明度は最小値Ｂｍｉｎで一定となる。
図７（ｂ）では、変化部２０４は、距離δが長くなるほど明度の減少率を小さくする。明度は最終的に最小値Ｂｍｉｎに収束する。
図７（ｃ）では、変化部２０４は、明度の減少率を変化させる。減少率は０以上の実数である。
図７（ｄ）では、変化部２０４は、階段関数を用いて明度を変化させる。全体として、距離δが増加するにしたがって明度が小さくなる傾向にあればよく、明度が一定となる区間（減少率がゼロとなる区間）があってもよい。
【００６８】
変化部２０４は、ゲームの進行状況、ゲームの種類、難易度、プレイヤーの成績など様々な数値パラメータに応じて、図６（ａ）〜（ｄ）、図７（ａ）〜（ｄ）のそれぞれに示す関数を使い分けることができる。
【００６９】
例えば、画像生成装置は、ＤＶＤ−ＲＯＭ等に予め記憶された音楽データを読み出して再生する再生部を更に備え、音楽に合わせてプレイヤーがダンスをしたり曲を演奏したりする音楽ゲームを実行する。そして、キャラクタオブジェクト３０１は、再生される音楽にあわせてダンスを踊ったりポーズをとったりする。変化部２０４は、このようなダンスなどの音楽ゲームにおいて、再生部が再生する曲のテンポに応じて上述の関数を使い分ける。テンポが速い曲ではインストラクター（キャラクタオブジェクト３０１）は足（所定領域５０１）を素早く動かし、逆にテンポが遅い曲では足をゆっくり動かすことが予想される。足の動きが速いと、頻繁に床に足が着いたり離れたりするので、プレイヤーは瞬時に判断しなければならない。このため、テンポが速い曲では、図７（ａ）〜（ｄ）に示すように、足が床に近いときに影を比較的大きく変化させる。テンポが遅い曲では、図６（ａ）〜（ｄ）に示すように、足が床から遠いときに影を比較的大きく変化させる。また、テンポがどの程度速いかによって、図７（ａ）〜（ｄ）のどれを採用するかを決めてもよいし、テンポがどの程度遅いかによって、図６（ａ）〜（ｄ）のどれを採用するかを決めてもよい。曲のテンポに限らず、ポップス・ジャズ・クラシックなどのジャンルによって使い分けてもよいし、さらには、曲の旋律、曲調、リズム、拍子によって使い分けてもよい。
【００７０】
例えば、プレイヤーの操作履歴に応じて関数を使い分ける。変化部２０４は、インストラクターの指示通りにプレイヤーが操作できている（つまり成績が良い）場合には、図６（ａ）〜（ｄ）に示すように、足が床に近いときには小さく変化させ、足が床から遠いときには大きく変化させる。逆にインストラクターの指示通りに操作できていない（つまり成績が良くない）場合には、図７（ａ）〜（ｄ）に示すように、足が床に近いときには大きく変化させ、足が床から遠いときには小さく変化させる。変化部２０４は、プレイヤーの獲得点数、ゲーム回数、プレイ時間、勝敗数、勝敗率、対戦成績などに応じて、図６（ａ）〜（ｄ）、図７（ａ）〜（ｄ）に示すような関数を使い分けることができる。
【００７１】
例えば、プレイヤーの操作履歴から、足を床から離すタイミングを重点的に教えることが相応しいと推測される場合には、図７（ａ）〜（ｄ）に示すように単調減少させ、足を上げる高さを重点的に教えることが相応しいと推測される場合には、図６（ａ）〜（ｄ）に示すように単調増加させる。変化部２０４は、足を床から離すタイミングにおけるプレイヤーの獲得点数が基準点数より高ければ単調増加させ、獲得点数が基準点数より低ければ単調減少させる。また、変化部２０４は、足を床から高い位置に維持するタイミングにおけるプレイヤーの獲得点数が基準点数より高ければ単調減少させ、獲得点数が基準点数より低ければ単調増加させる。
【００７２】
変化部２０４が陰影領域３０５の明度を変化させると、インストラクターの影は距離Ｄによって明るくなったり暗くなったりする。つまり、インストラクター（キャラクタオブジェクト３０１）が高くジャンプする（距離δが長くなる）ほど、インストラクターの影（陰影領域３０５）は明るくなる。プレイヤーは、影の明るさの違いによって、インストラクターの足が床からどの程度離れているかを容易に知ることができるようになる。同様に、色相や彩度を距離δによって変化させれば、影の色合いや鮮やかさ等の違いによって、インストラクターの足が床からどの程度離れているかを容易に知ることができる。
【００７３】
変化部２０４は、陰影領域３０５全体の色相、彩度、明度の代わりに、陰影領域３０５のうち所定領域５０１の陰影５０２の色相、彩度、明度を、距離δによって変化させてもよい。例えば、インストラクターの両足裏をそれぞれ所定領域５０１とした場合、変化部２０４はそれぞれの足の影の色相、彩度、明度を変化させるので、プレイヤーはどちらの足がどのくらい床から離れているかを容易に判断することができる。
【００７４】
生成部２０５は、キャラクタオブジェクト３０１の位置と形状、面オブジェクト３０２の位置と形状、及び光源３０３の位置に基づいて、キャラクタオブジェクト３０１と面オブジェクト３０２を含む画像を生成する。この画像には、光源３０３によって面オブジェクト３０２に投影されるキャラクタオブジェクト３０１の影の画像（陰影領域３０５）も含まれる。生成部２０５は、生成する画像中の陰影領域３０５を、変化部２０４により変化された色相、彩度、明度で描画する。つまり、ＣＰＵ  １０１の制御により、画像処理部１０８が、キャラクタオブジェクトの３０１の表面に所定のキャラクタオブジェクト用テクスチャデータを貼り付け、面オブジェクト３０２の表面に所定の面オブジェクト用テクスチャデータを貼り付けて画像を生成する。さらに、計算部２０２によって計算された位置に陰影領域３０５を設定し、生成された画像のうち陰影領域３０５の色相、彩度、明度を変化させる。なお、それぞれのテクスチャデータは、ＤＶＤ−ＲＯＭ等に予め格納されている。ＣＰＵ  １０１、ＲＡＭ  １０３、画像処理部１０８が協働して動作することにより、生成部２０５として機能する。
【００７５】
次に、上述の各部が協働して行う画像生成処理について、図８のフローチャートを用いて説明する。以下の説明では、一例として、キャラクタオブジェクト３０１をダンスのインストラクターとし、面オブジェクト３０２を床とする。また、インストラクターの一方の足裏を所定領域５０１とする。インストラクターは床の上でダンスを踊り、足が床から離れることがある。画像生成装置２００は、床から足裏までの距離に応じてインストラクターの影（陰影領域３０５）の明度を変化させた画像を生成する。上述したように、陰影計算部２１１は、キャラクタオブジェクト３０１の位置と形状、面オブジェクト３０２の位置と形状、及び、光源３０３の位置に基づいて、より詳細な光源計算を行って陰影３０４を計算することができるが、以下の説明では、陰影計算部２１１は、陰影３０４が現れるおおよその領域として陰影領域３０５を計算し、計算した陰影領域３０５を陰影３０４として扱うものとする。
【００７６】
まず、計算部２０２は、キャラクタオブジェクト３０１の位置と形状を示すキャラクタオブジェクト情報２５１と、面オブジェクト３０２の位置と形状を示す面オブジェクト情報２５２と、光源３０３の位置を示す光源情報２５３を、記憶部２０１から読み出して取得する（ステップＳ８０１）。
【００７７】
陰影計算部２１１は、取得したキャラクタオブジェクト情報２５１と面オブジェクト情報２５２と光源情報２５３とに基づいて、陰影領域３０５の位置を計算する（ステップＳ８０２）。
【００７８】
例えば、図９に示すように、陰影計算部２１１は、陰影領域３０５の形状を楕円とし、光源３０３の位置とキャラクタオブジェクト３０１の代表点９０１の位置とを結ぶ直線９０２と、面オブジェクト３０２と、の交点９０３を、陰影領域３０５を表す楕円の中心（長軸と短軸の交点）とする。代表点９０１は、例えばキャラクタオブジェクト３０１の重心や、頭、お腹などの所定位置である。
【００７９】
なお、陰影計算部２１１は、陰影領域３０５を表す楕円の半径Ｒ１，Ｒ２を、距離計算部２１２により計算されたキャラクタオブジェクト３０１と面オブジェクト３０２との距離δが長いほど小さくしてもよい。あるいは、距離計算部２１２が、代表点９０１と面オブジェクト３０２との距離を計算し、陰影計算部２１１が、計算された代表点９０１と面オブジェクト３０２との距離が長いほど半径Ｒ１，Ｒ２を小さくしてもよい。
【００８０】
判別部２０３は、キャラクタオブジェクト情報２５１と面オブジェクト情報２５２とに基づいて、キャラクタオブジェクト３０１が面オブジェクト３０２と接しているか否かを判別する（ステップＳ８０３）。具体的には、例えば、予め設定した所定領域５０１がその一部分でも面オブジェクト３０２と接していればキャラクタオブジェクト３０１が面オブジェクト３０２と接していると判別し、所定領域５０１が面オブジェクト３０２と接していなければ、キャラクタオブジェクト３０１が面オブジェクト３０２と接していないと判別する。
【００８１】
キャラクタオブジェクト３０１が面オブジェクト３０２と接していないと判別された場合（ステップＳ８０３；ＮＯ）、変化部２０４は、キャラクタオブジェクト３０１と面オブジェクト３０２との距離δに応じて陰影領域３０５の明度を変化させる（ステップＳ８０４）。例えば、変化部２０４は、キャラクタオブジェクト３０１と面オブジェクト３０２との距離δが長いほど陰影領域３０５の明度を大きくする。言い換えれば、変化部２０４は、インストラクターの足が床から離れているほど、インストラクターの影を明るくする。勿論、明度の代わりに、もしくは明度に加えて、色相及び／又は彩度を変化させてもよい。また、距離δが長いほど陰影領域３０５の明度を小さくしてもよい。
【００８２】
一方、キャラクタオブジェクト３０１が面オブジェクト３０２と接していると判別された場合（ステップＳ８０３；ＹＥＳ）、変化部２０４は明度を変化させず、所定の明度に設定する。例えば、変化部２０４は、最小値Ｂｍｉｎ、最大値Ｂｍａｘで定める範囲で明度を変化させるとすると、キャラクタオブジェクト３０１が面オブジェクト３０２と接している場合には、明度を最小値Ｂｍｉｎにし、接していない場合には、最大値Ｂｍａｘを超えない範囲で、距離δの長さに応じて明度をＢｍｉｎからだんだんと大きくしていく。
【００８３】
そして、生成部２０５は、キャラクタオブジェクト３０１と面オブジェクト３０２と陰影領域３０５とを表す画像を生成する（ステップＳ８０５）。
【００８４】
このように生成された画像はモニターに表示される。つまり、ＣＰＵ  １０１は、画像処理部１０８を制御して、生成部２０５によって生成された画像をモニターに表示させる。プレイヤーは、キャラクタオブジェクト３０１と、面オブジェクト３０２と、キャラクタオブジェクト３０１の影とを含む画像を見ることができる。キャラクタオブジェクト３０１の影の色相、彩度、明度のうち少なくともいずれか１つは、キャラクタオブジェクト３０１と面オブジェクト３０２との距離に応じて変化するので、プレイヤーは、影の変化を見れば、それらが離れているか否か、離れているとすればどの程度離れているのかをすぐに判断できるようになり、オブジェクト同士の位置関係を把握し易くなる。
【００８５】
なお、陰影計算部２１１は、図１０に示すように、陰影領域３０５の位置と形状を計算する代わりに、各オブジェクトの位置と形状に基づいて光源計算を行って陰影３０４の位置と形状を計算してもよい。そして、陰影計算部２１１は、計算された陰影３０４のうち所定領域５０１の陰影５０２の色相、彩度、明度のうち少なくともいずれか１つを、キャラクタオブジェクト３０１と面オブジェクト３０２との距離δに応じて変化させてもよい。影のおおよその形を表す陰影領域３０５の位置と形状を計算する代わりに、詳細な光源計算を行って陰影３０４の位置と形状を求めれば、よりリアリティのある画像が得られる。
【００８６】
以上説明したように、本実施形態によれば、キャラクタオブジェクト３０１と面オブジェクト３０２との位置関係を明瞭に表現することができる。例えば、キャラクタオブジェクト３０１の影の表現を変えることで、キャラクタオブジェクト３０１と面オブジェクト３０２が接しているか否かがはっきりと分かるようになる。また、キャラクタオブジェクト３０１が面オブジェクト３０２と離れているほど、影の色相、彩度、明度を増加（あるいは減少）させることによって、ユーザは、影の変化の度合いを見れば、これらがどの程度の距離だけ近づいているのかを明瞭に表現することができる。３次元仮想空間のように奥行きのある画像を表示する際、オブジェクト同士が接する可能性がある部分が、影を作るオブジェクト自身あるいは周囲の他のオブジェクトに隠れて見えない場合にも、これらが接しているか否か、どれくらい近づいているかを、影を変化させることによって簡単に且つ明瞭に表現することができる。
【００８７】
陰影３０４と陰影領域３０５はオブジェクトでなくてもよい。本実施形態では、陰影計算部２１１が、面オブジェクト３０２の全領域のうち、キャラクタオブジェクト３０１の光源３０３からの光によって影になる陰影領域３０５の位置（及び形状）を計算し、変化部２０４が、色相、彩度、明度のうち少なくともいずれか１つを変化させ、生成部２０５が、面オブジェクト３０２に所定のテクスチャを貼り付けた後、変化部２０４によって変化された陰影領域３０５を含む画像を生成する。画像生成装置２００は、面オブジェクト３０２に貼り付けるテクスチャの色相と彩度と明度を変えればよい。勿論、陰影３０４あるいは陰影領域３０５をオブジェクトとし、陰影用の所定のテクスチャを貼り付けた後、色相と彩度と明度を変えてもよい。
【００８８】
本実施形態では、仮想空間においてインストラクターが床の上でダンスをする場面を想定して説明したが、他の様々な場面で本発明を適用することができる。
【００８９】
例えば、ジャンプの高さを競うゲームにおいて、画像生成装置２００は、プレイヤーキャラクタが地面から高く跳ぶほど、プレイヤーキャラクタの影の明度を大きく変化させる。すると、プレイヤーは、影の明るさの変化を見れば、どれくらい高く跳んだのかを容易に知ることができる。この場合、プレイヤーキャラクタがキャラクタオブジェクト３０１となり、地面が面オブジェクト３０２となる。画像生成装置２００は、上述のように影を変化させた画像を生成すれば、高さや位置を示すゲージや数値等を表示しなくても、ユーザに高さや位置を知らせることができる。より簡易な画像にしつつ、ユーザに伝えることができる情報量を増やすことができる。
【００９０】
例えば、レーシングゲームにおいて、レーシングカーの車体をキャラクタオブジェクト３０１とし、レースコースの側壁を面オブジェクト３０２とする。画像生成装置２００は、車体の後方の仮想カメラが撮影した映像を生成する。後方からの映像では、車体のフロントウイングの先端が見えづらい。このとき、画像生成装置２００は、車体が側壁に近づくほど、車体の影の明度を大きく（明るく）変化させる。すると、レーシングカーを操作するプレイヤーは、影の明るさの変化を見るだけで、レーシングカーのフロントウイングが側壁にどれくらい近づいているのか、レーシングカーが側壁に接触したのか否か、などを容易に知ることができる。
【００９１】
例えば、対戦ゲームにおいて、プレイヤーキャラクタが敵キャラクタと接近したときに、敵が近くにいることをプレイヤーに知らせるための手段として本発明を利用することもできる。プレイヤーキャラクタから敵キャラクタまでの距離が近いほど、プレイヤーキャラクタの影の明度を大きくする。この場合、プレイヤーキャラクタがキャラクタオブジェクト３０１となり、敵キャラクタを構成するポリゴンのうち所定の一部分（例えば顔）を構成するポリゴンによって定義する面（例えば顔面）を面オブジェクト３０２とすればよい。任意のオブジェクト同士が接近したときに、ユーザにそれらが接近していることを衝突前に通知する手段として本発明を利用することもできる。
【００９２】
例えば、プレイヤーキャラクタをキャラクタオブジェクト３０１とし、透明な窓ガラスを面オブジェクト３０２とする。プレイヤーキャラクタなどの影を単に表現しただけでは、プレイヤーキャラクタと窓ガラスとの距離感が掴みづらいことが多い。このとき、画像生成装置２００は、プレイヤーキャラクタが窓ガラスに近づくほど、プレイヤーキャラクタの影の明度を大きく変化させる。すると、プレイヤーは、影の明るさの変化を見るだけで、窓ガラスにどれくらい近づいているのか、プレイヤーキャラクタの手が窓ガラスに触れたのか否か、などを容易に知ることができる。
【００９３】
本発明は、上述した実施形態に限定されず、種々の変形及び応用が可能である。また、上述した実施形態の各構成要素を自由に組み合わせることも可能である。
【００９４】
陰影計算部２１１は、所定領域５０１の陰影５０２のみを計算してもよい。言い換えれば、インストラクター全体の影ではなく、インストラクターの足の部分の影のみを描画してもよい。例えば図１１（ａ）に示すように、陰影計算部２１１は、キャラクタオブジェクト３０１の位置と形状と、面オブジェクトの位置と形状と、に基づいて光源計算を行って、キャラクタオブジェクト３０１全体のうちの一部分（本図ではインストラクターの片足）１１０１に対応する陰影領域１１０２の位置と形状を計算する。そして、陰影計算部２１１は、計算された陰影領域１１０２の色相、彩度、明度のうち少なくともいずれか１つを、キャラクタオブジェクト３０１と面オブジェクト３０２との距離δに応じて変化させてもよい。勿論、この構成においても、図１１（ｂ）に示すように、詳細な光源計算をする代わりに、陰影領域１１０２を所定の形状に固定して陰影領域１１０２の位置と大きさを変化させてもよい。なお、陰影計算部２１１は、インストラクターの足の部分のみをキャラクタオブジェクト３０１とみなして、陰影領域１１０２の位置と形状を計算すればよい。
【００９５】
画像生成装置２００を装置の全部又は一部として動作させるためのプログラムを、メモリカード、ＣＤ−ＲＯＭ、ＤＶＤ、ＭＯ（Magneto Optical disk）などのコンピュータ読み取り可能な記録媒体に格納して配布し、これを別のコンピュータにインストールし、上述の手段として動作させ、あるいは、上述の工程を実行させてもよい。
【００９６】
さらに、インターネット上のサーバ装置が有するディスク装置等にプログラムを格納しておき、例えば、搬送波に重畳させて、コンピュータにダウンロード等するものとしてもよい。
【００９７】
以上説明したように、本発明によれば、仮想空間内のオブジェクト同士の位置関係を明瞭に表現するために好適な画像生成装置、画像生成方法、ならびに、プログラムを提供することができる。
【図面の簡単な説明】
【００９８】
【図１】本実施形態の画像生成装置が実現される典型的なゲーム装置の概要構成を示す図である。
【図２】画像生成装置の機能的構成を説明するための図である。
【図３】光源からの光によるキャラクタオブジェクトの面オブジェクトへの陰影を説明するための図である。
【図４】（ａ）キャラクタオブジェクトと面オブジェクトとが接している場合の陰影領域の一例を示す図である。（ｂ）キャラクタオブジェクトと面オブジェクトとが離れている場合の陰影領域の一例を示す図である。
【図５】（ａ）所定領域と、所定領域の影とを説明するための図である。（ｂ）所定領域上の点Ｐ１と、面オブジェクト上の点Ｐ２との関係を説明するための図である。
【図６】（ａ）〜（ｄ）は、それぞれ所定領域と面オブジェクトとの距離と、陰影領域の明度との関係の例を表す図である。
【図７】（ａ）〜（ｄ）は、それぞれ所定領域と面オブジェクトとの距離と、陰影領域の明度との関係の他の例を表す図である。
【図８】画像生成処理を説明するためのフローチャートである。
【図９】キャラクタオブジェクト、面オブジェクト、光源、陰影領域、を表す図である。
【図１０】キャラクタオブジェクト、面オブジェクト、光源、陰影、を表す図である。
【図１１】（ａ）と（ｂ）は所定領域のみの陰影を表した図である。
【符号の説明】
【００９９】
１００  情報処理装置
１０１  ＣＰＵ
１０２  ＲＯＭ
１０３  ＲＡＭ
１０４  インターフェース
１０５  コントローラ
１０６  外部メモリ
１０７  ＤＶＤ−ＲＯＭドライブ
１０８  画像処理部
１０９  音声処理部
１１０  ＮＩＣ
２００  画像生成装置
２０１  記憶部
２０２  計算部
２０３  判別部
２０４  変化部
２０５  生成部
２５１  キャラクタオブジェクト情報
２５２  面オブジェクト情報
２５３  光源情報
３０１  キャラクタオブジェクト
３０２  面オブジェクト
３０３  光源
３０４  陰影
３０５  陰影領域
５０１  所定領域
５０２  所定領域の陰影
【図１】
0004612031.tif 000002
【図２】
0004612031.tif 000003
【図３】
0004612031.tif 000004
【図４】
0004612031.tif 000005
【図５】
0004612031.tif 000006
【図６】
0004612031.tif 000007
【図７】
0004612031.tif 000008
【図８】
0004612031.tif 000009
【図９】
0004612031.tif 000010
【図１０】
0004612031.tif 000011
【図１１】
0004612031.tif 000012