(57)【要約】【課題】より適切にモデルの輪郭線を表現する。【解決手段】複数のポリゴンで構成された第１モデルを描画する際に、第１モデルと重ねて描画し第１モデルの輪郭線を表現するための第２モデルを形成するモデル形成方法が、複数のポリゴンの各頂点のうち少なくとも一部の頂点について、当該一部の頂点に設定されている法線ベクトルと異なる向きの押出ベクトルを取得する第１ステップ（ＳＰ１０）と、少なくとも第１モデルと押出ベクトルとに基づき、第２モデルを形成する第２ステップ（ＳＰ１２）と、を有する。【選択図】図４
2015018519.tif 000002
【特許請求の範囲】
【請求項１】
複数のポリゴンで構成された第１モデルを描画する際に、前記第１モデルと重ねて描画し前記第１モデルの輪郭線を表現するための第２モデルを形成するモデル形成方法であって、
前記複数のポリゴンの各頂点のうち少なくとも一部の頂点について、前記一部の頂点に設定されている法線ベクトルと異なる向きの押出ベクトルを取得する第１ステップと、
少なくとも前記第１モデルと前記押出ベクトルとに基づき、前記第２モデルを形成する第２ステップと、
を有するモデル形成方法。
【請求項２】
前記第１ステップは、
前記第１モデルの開口部を検出するステップと、
検出した前記開口部に隣接する頂点を検出するステップと、
検出した前記頂点に対して、検出した前記頂点に設定されている前記法線ベクトルに基づき前記押出ベクトルを設定するステップと、
を含む請求項１に記載のモデル形成方法。
【請求項３】
前記押出ベクトルを設定するステップでは、検出した前記頂点を含む前記ポリゴン内の一点から検出した前記頂点に向かう方向のベクトルと、検出した前記頂点の前記法線ベクトルとを合成することで、前記押出ベクトルを設定する、
請求項２に記載のモデル形成方法。
【請求項４】
前記第１ステップは、
前記ポリゴン同士が共有している前記頂点に対して、設定されている少なくとも２つの前記法線ベクトルが互いに異なる向きであることを検出するステップと、
検出した互いに異なる向きの前記法線ベクトル同士を合成することで、前記押出ベクトルを設定するステップと、
を含む請求項１〜請求項３の何れか１項に記載のモデル形成方法。
【請求項５】
前記第１ステップでは、前記押出ベクトルの大きさを、各頂点に応じた係数を乗じて設定する、
請求項１〜請求項４の何れか１項に記載のモデル形成方法。
【請求項６】
前記係数は、少なくとも２つの前記頂点で異なる、
請求項５に記載のモデル形成方法。
【請求項７】
前記第１ステップでは、前記押出ベクトルの大きさを、各頂点が属する面の曲率に基づいた前記係数を乗じて設定する、
請求項５又は請求項６に記載のモデル形成方法。
【請求項８】
前記第１ステップでは、前記押出ベクトルの大きさを、前記第１モデルの動く速度又は加速度に基づいた前記係数を乗じて設定する、
請求項５〜請求項７の何れか１項に記載のモデル形成方法。
【請求項９】
前記押出ベクトルを設定するステップでは、検出した前記頂点に設定されている前記法線ベクトルを残しておき、
前記法線ベクトルを用いて、前記第１モデルのシェーディング処理を行う、
請求項２又は請求項３に記載のモデル形成方法。
【請求項１０】
複数のポリゴンで構成された第１モデルを描画する際に、前記第１モデルと重ねて描画し前記第１モデルの輪郭線を表現するための第２モデルを形成する際に用いる押出ベクトルのベクトル計算方法であって、
前記複数のポリゴンの各頂点のうち少なくとも一部の頂点に設定される前記法線ベクトルを検出するステップと、
前記一部の頂点について、検出した前記法線ベクトルと異なる向きの前記押出ベクトルを設定するステップと、
を有するベクトル計算方法。
【請求項１１】
複数のポリゴンで構成された第１モデルを描画する際に、前記第１モデルと重ねて描画し前記第１モデルの輪郭線を表現するための第２モデルを形成するプログラムであって、
コンピュータに対し、
前記複数のポリゴンの各頂点のうち少なくとも一部の頂点について、前記一部の頂点に設定されている前記法線ベクトルと異なる向きの押出ベクトルを取得する第１ステップと、
少なくとも前記第１モデルと前記押出ベクトルとに基づき、前記第２モデルを形成する第２ステップと、
を実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、モデル形成方法、ベクトル計算方法及びプログラムに関する。
【背景技術】
【０００２】
従来から、セルアニメーション等で３次元（３Ｄ）モデルを描画する場合、通常の３Ｄモデルでは輪郭線が描画されないので、３Ｄモデルの描画とは別個に輪郭線を描画する必要があった。
【０００３】
このような輪郭線を描画する方法として、特許文献１及び２には、複数のポリゴンで構成された３Ｄモデルを描画する際に、当該３Ｄモデルと、当該３Ｄモデルの複数のポリゴンの各頂点の法線ベクトルとに基づいた輪郭線用モデルを３Ｄモデルと重ねて描画することで、輪郭線を表現する方法が記載されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特許第３４７４１７９号明細書
【特許文献２】特許第３８０４３２８号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、各頂点での法線ベクトルに基づいた輪郭線用モデルを描画する方法では、開口部や角ばったモデルの輪郭線等を適切に表現できない場合があった（図１１左下図及び図１２左下図参照）。
【０００６】
そこで、本発明は、より適切にモデルの輪郭線を表現することが可能なモデル形成方法、ベクトル計算方法及びプログラムを提供することを目的の一つとする。
【課題を解決するための手段】
【０００７】
本発明に係るモデル形成方法は、複数のポリゴンで構成された第１モデルを描画する際に、前記第１モデルと重ねて描画し前記第１モデルの輪郭線を表現するための第２モデルを形成するモデル形成方法であって、前記複数のポリゴンの各頂点のうち少なくとも一部の頂点について、前記一部の頂点に設定されている法線ベクトルと異なる向きの押出ベクトルを取得する第１ステップと、少なくとも前記第１モデルと前記押出ベクトルとに基づき、前記第２モデルを形成する第２ステップと、を有する。
【０００８】
本発明に係るモデル形成方法では、前記第１ステップは、前記第１モデルの開口部を検出するステップと、検出した前記開口部に隣接する頂点を検出するステップと、検出した前記頂点に対して、検出した前記頂点に設定されている前記法線ベクトルに基づき前記押出ベクトルを設定するステップと、を含むことが好ましい。
【０００９】
本発明に係るモデル形成方法において、前記押出ベクトルを設定するステップでは、検出した前記頂点を含む前記ポリゴン内の一点から検出した前記頂点に向かう方向のベクトルと、検出した前記頂点の前記法線ベクトルとを合成することで、前記押出ベクトルを設定する、ことが好ましい。
【００１０】
本発明に係るモデル形成方法では、前記第１ステップは、前記ポリゴン同士が共有している前記頂点に対して、設定されている少なくとも２つの前記法線ベクトルが互いに異なる向きであることを検出するステップと、検出した互いに異なる向きの前記法線ベクトル同士を合成することで、前記押出ベクトルを設定するステップと、を含むことが好ましい。
【００１１】
本発明に係るモデル形成方法において、前記第１ステップでは、前記押出ベクトルの大きさを、各頂点に応じた係数を乗じて設定する、ことが好ましい。
【００１２】
本発明に係るモデル形成方法では、前記係数は、少なくとも２つの前記頂点で異なることが好ましい。
【００１３】
本発明に係るモデル形成方法において、前記第１ステップでは、前記第１ステップでは、前記押出ベクトルの大きさを、各頂点が属する面の曲率に基づいた前記係数を乗じて設定する、ことが好ましい。
【００１４】
本発明に係るモデル形成方法において、前記第１ステップでは、前記押出ベクトルの大きさを、前記第１モデルの動く速度又は加速度に基づいた前記係数を乗じて設定する、ことが好ましい。
【００１５】
本発明に係るモデル形成方法において、前記押出ベクトルを設定するステップでは、検出した前記頂点に設定されている前記法線ベクトルを残しておき、前記法線ベクトルを用いて、前記第１モデルのシェーディング処理を行う、ことが好ましい。
【００１６】
本発明に係るベクトル計算方法は、複数のポリゴンで構成された第１モデルを描画する際に、前記第１モデルと重ねて描画し前記第１モデルの輪郭線を表現するための第２モデルを形成する際に用いる押出ベクトルのベクトル計算方法であって、前記複数のポリゴンの各頂点のうち少なくとも一部の頂点に設定される前記法線ベクトルを検出するステップと、前記一部の頂点について、検出した前記法線ベクトルと異なる向きの前記押出ベクトルを設定するステップを有する。
【００１７】
本発明に係るプログラムは、複数のポリゴンで構成された第１モデルを描画する際に、前記第１モデルと重ねて描画し前記第１モデルの輪郭線を表現するための第２モデルを形成するプログラムであって、コンピュータに対し、前記複数のポリゴンの各頂点のうち少なくとも一部の頂点について、前記一部の頂点に設定されている前記法線ベクトルと異なる向きの押出ベクトルを取得する第１ステップと、少なくとも前記第１モデルと前記押出ベクトルとに基づき、前記第２モデルを形成する第２ステップと、を実行させる。
【発明の効果】
【００１８】
本発明によれば、より適切にモデルの輪郭線を表現することができる。
【図面の簡単な説明】
【００１９】
【図１】本発明の実施形態に係るモデル形成方法、ベクトル計算方法を含むプログラムを実行するコンピュータの一例としての画像処理装置のブロック図である。
【図２】実モデルの一例の斜視図である。
【図３】実モデルの１つのポリゴンを取り出したポリゴンの説明図である。
【図４】本発明の実施形態に係るベクトル計算方法及びモデル形成方法を含んだ描画方法の流れを示すフローチャートである。
【図５】図４に示すステップＳＰ２０の押出ベクトルの計算方法の流れを示すフローチャートである。
【図６】図５に示す押出ベクトルの計算方法の流れの続きである。
【図７】上図は、各ポリゴンの法線ベクトルが外側を向いた球状の実モデルが、実モデルより一回り大きく、かつ各ポリゴンの法線ベクトルが内側を向いた球状の輪郭線用モデル５０に内包される場合を示す。下図は、輪郭線用モデルの外部にある視点から実モデル及び輪郭線用モデルを見た場合に、表示されるポリゴンを示す。
【図８】ポリゴンの一例であって、押出ベクトルの設定の説明図である。
【図９】ポリゴンの他の例であって、押出ベクトルの設定の説明図である。
【図１０】ポリゴンのさらに他の例であって、押出ベクトルの設定の説明図である。
【図１１】上図は、５つの平らな面と開口面（開口部）を有した正六面体の実モデルのみを描画した正面図である。左下図は、５つの平らな面と開口面（開口部）を有した正六面体の実モデルと、各頂点での法線ベクトルに基づいた従来の輪郭線用モデルを第３ステップＳＰ１４で描画した正面図である。右下図は、５つの平らな面と開口面（開口部）を有した正六面体の実モデルと、押出ベクトルに基づいた輪郭線用モデルを第３ステップＳＰ１４で描画した正面図である。
【図１２】上図は、６つの平らな面を有した正六面体の実モデルのみを描画した斜視図である。左下図は、６つの平らな面を有した正六面体の実モデルと、各頂点での法線ベクトルに基づいた従来の輪郭線用モデルを第３ステップＳＰ１４で描画した正面図である。右下図は、６つの平らな面を有した正六面体の実モデルと、押出ベクトルに基づいた輪郭線用モデルを第３ステップＳＰ１４で描画した正面図である。
【図１３】上図は、複数のポリゴンを有した実モデルのみを描画した斜視図である。左下図は、複数のポリゴンを有した実モデルと、各頂点での法線ベクトルに基づいた従来の輪郭線用モデルを第３ステップＳＰ１４で描画した正面図である。右下図は、複数のポリゴンを有した実モデルと、押出ベクトルに基づいた輪郭線用モデルを第３ステップＳＰ１４で描画した正面図である。
【発明を実施するための形態】
【００２０】
以下、図面を参照して本発明の実施の形態を説明する。なお、以下の図面の記載において、同一または類似の部分には同一または類似の符号を付して表している。図面は模式的なものであり、必ずしも実際の寸法や比率等とは一致しない。図面相互間においても互いの寸法の関係や比率が異なる部分が含まれていることがある。
【００２１】
＜コンピュータ＞
図１は、本発明の実施形態に係るモデル形成方法、ベクトル計算方法を含むプログラムを実行するコンピュータの一例としての画像処理装置１０のブロック図である。なお、この画像処理装置１０は、実モデル４０等の作成者側の画像処理装置１０Ａとして、また、実モデル４０等の表示者側の画像処理装置１０Ｂとして用いられる。
【００２２】
ＣＰＵ１２は、ブートＲＯＭ２０から起動プログラムを読み出し、システムメモリ１６からシステムプログラムを読み出して、画像処理装置１０の初期設定等を行う。また、ＣＰＵ１２は、外部記憶装置としてのハードディスク（ＨＤＤ）１８からアプリケーションプログラムを読み出して、画像処理装置１０をアプリケーションプログラムの管理下に置く。
【００２３】
ジオメトリプロセッサ１４は、ポリゴンの３次元座標データを高速に処理するプロセッサで、ＣＰＵ１２から送られてくるポリゴンの座標データにモデルの移動、回転等に対する処理を行い、ポリゴンの法線ベクトルを計算し、更にクリッピング、視野変換等の処理を行う。
【００２４】
レンダリングプロセッサ２４は、３次元座標空間のポリゴンモデル（以下、「実モデル」と称す。）のレンダリングを高速に処理するプロセッサで、ジオメトリプロセッサ１４から送られてくるポリゴンデータに対して、陰面処理及びシェーディング処理等を行う。なお、本実施形態の画像処理装置１０では、輪郭線の輝度の設定は、レンダリングプロセッサ２４において輝度パラメータを指定することにより高速に行われる。
【００２５】
レンダリングプロセッサ２４で処理された実モデルのデータは、１画面毎にグラフィックメモリ２６に格納され、それらのデータはビデオＤ／Ａコンバータ２８で映像信号に変換されて図示しないテレビジョンモニタ等に表示される。
【００２６】
オーディオプロセッサ３０は、ＨＤＤ１８から音楽データを読み出し、また、オーディオメモリ３２から遊戯者の操作に応じた効果音等のデータを読み出す。それらのオーディオデータは、オーディオＤ／Ａコンバータ３４でアナログ信号に変換され、図示しないテレビジョンモニタ又はオーディオ装置に出力される。
【００２７】
バスアービタ２２は、どのプロセッサにバスの使用権を与えるかを決定するものである。即ち、本実施の形態の画像処理装置１０は、ＣＰＵ１２、レンダリングプロセッサ２４等の複数のプロセッサがバスを共用しているため、例えば、ＣＰＵ１２から送出されたデータが、レンダリングプロセッサ２４から送出されたデータと衝突しないように、バスアービタ２２によりバスの使用権が管理、調停される。
【００２８】
モデム３６は、電話回線を使用してデータを送受信するための変復調器で、図示しないモジュラージャックに接続される。なお、図１においてバスアービタ２２に接続されるペリフェラルには、図示しないコントローラ等のキー操作のためのスイッチのほか、バックアップメモリ、表示装置、ポインティングデバイス等、画像処理装置１０あるいはコントローラに着脱可能なものも含まれる。
【００２９】
＜実モデルの説明＞
図２は、実モデル４０の一例の斜視図である。
【００３０】
実モデル４０は、ゲームやアニメ、映画等においてセルアニメーション等で描画されるものである。実モデル４０としては、例えばキャラクタや物体等のモデルが挙げられる。実モデル４０の形状は、本実施形態では特に限定されず様々な形状を以下に示すが、図２では一例として正六面体を現している。この実モデル４０は、複数のポリゴンＰ、例えばポリゴンＰ１からポリゴンＰi（ｉ：２以上の整数）で構成されている。各ポリゴンＰ1〜Ｐiの形状は、例えば三角形である。
【００３１】
図３は、実モデル４０の１つのポリゴンＰk（ｉ＝ｋ，ｋ：１以上の整数）を取り出したポリゴンの説明図である。
【００３２】
ポリゴンＰkは、頂点Ｖ（例えばＶk1〜Ｖk3）を有している。各頂点Ｖk1〜Ｖk3には法線ベクトルｎ（例えばｎk1〜ｎk3）が付属する（設定されている）。各法線ベクトルｎk1〜ｎk3は、単位ベクトルである。なお、実モデル４０は、その外部から見られることを前提としているため、各法線ベクトルｎk1〜ｎk3は実モデル４０の外側に向かう方向になる。また、ポリゴンＰkの法線ベクトルｎk0は、各法線ベクトルｎk1〜ｎk3の例えばベクトル平均により求めたもので、ポリゴンＰkの重心Ｇに設定されてもよい。逆に、ポリゴンＰkの法線ベクトルｎk0を、各法線ベクトルｎk1〜ｎk3としてもよい。
【００３３】
＜描画方法＞
次に、本発明の実施形態に係るベクトル計算方法及びモデル形成方法を含んだ描画方法について説明する。
【００３４】
図４は、本発明の実施形態に係るベクトル計算方法及びモデル形成方法を含んだ描画方法の流れを示すフローチャートである。なお、以下、括弧中の識別符号は、図４中のステップ識別符号と対応している。
【００３５】
この描画方法の流れは、一又は複数のプログラムを一又は複数の画像処理装置１０で実行することにより実現される。なお、本実施形態では、後述する第１ステップＳＰ１０と、第２ステップＳＰ１２及び第３ステップＳＰ１４とで、プログラム及び画像処理装置１０が異なる場合を説明する。
【００３６】
−第１ステップＳＰ１０−
第１ステップＳＰ１０は、プログラムとしての作成ツールを、実モデル４０等の作成者側の画像処理装置１０ＡのＣＰＵ１２やジオメトリプロセッサ１４等で実行することにより実現される。この第１ステップＳＰ１０は、以下のステップＳＰ２０を含む。
【００３７】
（ＳＰ２０）画像処理装置１０Ａは、第１モデルとしての実モデル４０を構成する複数のポリゴンＰの各頂点Ｖのうち少なくとも一部の頂点について、当該一部の頂点に設定されている法線ベクトルｎと異なる向きの押出ベクトルを取得する。この「取得」には、単に「読み出す」という意味と、「計算する」という意味の両方が含まれる。本実施形態では、「取得」を「計算」という意味で用いる。この計算方法の詳細については後述する。
【００３８】
−第２ステップＳＰ１２及び第３ステップＳＰ１４−
第２ステップＳＰ１２は、以下のステップＳＰ２２、２４を含む。また、第３ステップＳＰ１４は、以下のステップＳＰ２６、２８、３０を含む。これら第２ステップＳＰ１２及び第３ステップＳＰ１４は、プログラムとしての描画プログラムを実モデル４０等の表示者側の画像処理装置１０ＢのＣＰＵ１２やジオメトリプロセッサ１４等で実行することにより実現される。
【００３９】
（ＳＰ２２）画像処理装置１０Ｂは、例えばＨＤＤ１４に記憶されている実モデル４０（のデータ）を読み出す。この際、画像処理装置１０Ｂは、実モデル４０に設定されている法線ベクトルｎや押出ベクトル等のデータも読み出す。
【００４０】
（ＳＰ２４）画像処理装置１０Ｂは、読み出した少なくとも実モデル４０と押出ベクトルとに基づき、第２モデルとしての輪郭線用モデル５０（図７参照）を形成する。より具体的には、実モデル４０の各頂点Ｖをコピーし、コピーしたものを押出ベクトル（押出ベクトルが設定されていない場合は、法線ベクトルｎ）が示す方向に、押出ベクトル（又は法線ベクトルｎ）が示す量だけ押し出す。この結果、押し出された頂点によって複数のポリゴンＰ′が形成され、これら複数のポリゴンＰ′により輪郭線用モデル５０が形成される（図２参照）。なお、輪郭線用モデル５０は、例えば実モデル４０を拡大したような形となる。
【００４１】
（ＳＰ２６）画像処理装置１０Ｂは、輪郭線用モデル５０を実モデル４０へ重ね合わせる。輪郭線用モデル５０を実モデル４０へ重ね合わせることは、実際には、輪郭線用モデル５０のデータを実モデル４０のデータにリンクさせることである。即ち、輪郭線用モデル５０のデータは、実モデル４０のデータと所定の関係により結合されるので、例えば、実モデル４０がワールド座標空間において移動すると、輪郭線用モデル５０も実モデル４０と連動して移動する。
【００４２】
（ＳＰ２８）画像処理装置１０Ｂは、輪郭線用モデル５０を構成する各ポリゴンの各法線ベクトルｎ′（対応する法線ベクトルｎと同方向）を逆方向にする。実モデル４０及び輪郭線用モデル５０の各ポリゴンＰ，Ｐ′の法線ベクトルｎ，ｎ′の向きは、陰面処理において、そのポリゴンＰ，Ｐ′を表示するか否かを決定する。即ち、画像処理装置１０Ｂは、ポリゴンＰ，Ｐ′の法線ベクトルｎ，ｎ′が視点方向の成分を含む場合にそのポリゴンＰ，Ｐ′を表示し、ポリゴンＰ，Ｐ′の法線ベクトルｎ，ｎ′が視点と反対方向の成分を含む場合は、そのポリゴンＰ，Ｐ′を表示しない。これにより、輪郭線用モデル５０は実モデル４０の輪郭線として描画される。
【００４３】
このことを図７により、実モデル４０と輪郭線用モデル５０を簡略化して説明する。図７の上図は、各ポリゴンＰ，Ｐ′の法線ベクトルｎ，ｎ′が外側を向いた球状の実モデル４０が、実モデル４０より一回り大きく、かつ各ポリゴンＰ′の法線ベクトルｎ′11〜ｎ′j3（ｊ：２以上の整数）が内側を向いた球状の輪郭線用モデル５０に内包される場合を示す。
【００４４】
図７の下図は、輪郭線用モデル５０の外部にある視点６０から実モデル４０及び輪郭線用モデル５０を見た場合に、表示されるポリゴンＰ，Ｐ′を示す。実モデル４０の法線ベクトルｎ11〜ｎi3は外側を向いているので、法線ベクトルｎ11〜ｎi3に視点６０方向の成分を含むポリゴンＰ、即ち、視点６０に近い側の略半球部分４２が表示され、法線ベクトルに視点６０と反対方向の成分を含むポリゴンＰ、即ち、視点６０から遠い側の略半球部分４４は表示されない。
【００４５】
一方、輪郭線用モデル５０の法線ベクトルｎ′11〜ｎ′j3は内側を向いているので、法線ベクトルｎ′11〜ｎ′j3に視点６０方向の成分を含むポリゴンＰ′、即ち、視点６０から遠い側の略半球部分５２が表示対象になり、法線ベクトルｎ′11〜ｎ′j3に視点６０と反対方向の成分を含むポリゴンＰ′、即ち、視点６０に近い側の略半球部分５４は表示対象にならない。ただし、表示対象の略半球部分５２のうち実際に表示されるのは、描画メモリ等に遠くから順に重ね書きされる結果、視点６０に対して実モデル４０の裏側になる部分を除いた実モデル４０の外側の部分５２Ａ，５２Ｂである。この結果、輪郭線用モデル５０は実モデル４０の輪郭線として表示される。
【００４６】
（ＳＰ３０）画像処理装置１０Ｂは、実モデル４０と輪郭線用モデル５０を含んだ画像を描画する。この表示の際に、画像処理装置１０Ｂは、実モデル４０と輪郭線用モデル５０を光源の影響を受けない状態にする。次に、画像処理装置１０Ｂは、実モデル４０と輪郭線用モデル５０の合体モデルを背景画面に重ね合わせた後、重ね合わせた画像に対してレンダリングプロセッサ２４等を用いて表示処理を開始する。
【００４７】
＜ベクトル計算方法＞
次に、ベクトル計算方法について具体的に説明する。本実施形態では、図４に示すステップＳＰ２０で、押出ベクトルを計算する。
【００４８】
図５は、図４に示すステップＳＰ２０の押出ベクトルの計算方法の流れを示すフローチャートである。図６は、図５に示す押出ベクトルの計算方法の流れの続きである。なお、以下、括弧中の識別符号は、図５及び図６中のステップ識別符号と対応している。
【００４９】
（ＳＰ４０）作成者側の画像処理装置１０Ａは、ＨＤＤ１８から実モデル４０を読み出して、当該実モデル４０に開口部６２（図８参照）があるか否か判断する。画像処理装置１０Ａは、開口部６２がある（Ｙｅｓ）と判断した場合ステップＳＰ４２の処理に移行し、開口部がない（Ｎｏ）と判断した場合ステップＳＰ５０の処理に移行する。開口部６２があるか否かの判断方法は、例えば各ポリゴンＰについて着目し、着目しているポリゴンに他のポリゴンＰと共有していない辺があるか否かを判断する方法が挙げられる。なお、画像処理装置１０Ａは、２つ以上開口部６２があると判断した場合、開口部６２の数だけ以下のステップＳＰ４２〜ＳＰ４８の処理を繰り返す。
【００５０】
（ＳＰ４２）画像処理装置１０Ａは、実モデル４０の開口部６２に隣接する辺の頂点Ｖを検出する。例えば、図８に示す場合であると、画像処理装置１０Ａは、開口部６２に隣接するポリゴンＰkの辺６４の頂点Ｖk2，Ｖk3を検出する。
【００５１】
（ＳＰ４４）画像処理装置１０Ａは、検出した頂点Ｖを含むポリゴンＰの重心Ｇから検出した頂点に向かう方向のベクトルＡ（図８参照）を生成する。例えば、図８に示す場合であると、画像処理装置１０Ａは、検出した頂点Ｖk2，Ｖk3を含むポリゴンＰkの重心Ｇから検出した頂点Ｖk2，Ｖk3に向かう方向のベクトルＡk2，Ａk3を生成する。
【００５２】
（ＳＰ４６）画像処理装置１０Ａは、ステップＳＰ４４で生成したベクトルＡと、ステップＳＰ４２で検出した頂点Ｖのうち対応する頂点の法線ベクトルｎとを合成することで、対応する頂点に設定されている法線ベクトルｎと異なる向きの押出ベクトルＢ（図８参照）を生成する。例えば、図８に示す場合であると、画像処理装置１０Ａは、生成したベクトルＡk2と、これに対応する頂点Ｖk2の法線ベクトルｎk2とを合成することで、押出ベクトルＢk2を生成する。また、画像処理装置１０Ａは、生成したベクトルＡk3と、これに対応する頂点Ｖk3の法線ベクトルｎk3とを合成することで、押出ベクトルＢk3を生成する。
【００５３】
（ＳＰ４８）画像処理装置１０Ａは、生成した押出ベクトルＢを実モデル４０の対応する頂点Ｖに関連付けて、ＨＤＤ１８に保存する。これにより、複数のポリゴンＰの各頂点Ｖのうち少なくとも一部の頂点について、押出ベクトルＢが設定される。例えば、図８に示す場合であると、少なくともＶk2，Ｖk3について押出ベクトルＢk2，Ｂk3が設定される。
【００５４】
（ＳＰ５０，ＳＰ６０）画像処理装置１０Ａは、変数ｌの値が１からポリゴンＰの構成数ｉが示す値に達するまで、ｌに「１」を加算しつつ（ｌ＝ｌ＋１）、ステップＳＰ５０とステップＳＰ６０の間のステップＳＰ５２〜ステップＳＰ５８までの処理を繰り返す。
【００５５】
（ＳＰ５２）画像処理装置１０Ａは、ｌ番目のポリゴンＰが他のポリゴンＰの頂点Ｖを共有しているか否か判断する。言い換えれば、画像処理装置１０Ａは、ｌ番目のポリゴンＰlの頂点Ｖが他のポリゴンＰの頂点Ｖでもあるか否か判断する。以下、このような複数のポリゴンＰで共有している頂点Ｖを「共有頂点Ｖｓ」と称す。画像処理装置１０Ａは、肯定判断した場合（Ｙｅｓ）にはステップＳＰ５４の処理に移行し、否定判断した場合（Ｎｏ）にはステップＳＰ６０の処理に移行する（ステップＳＰ５２の処理に戻る）。例えば、図９に示す場合であると、画像処理装置１０Ａは、ｌ番目のポリゴンＰlの２つの頂点Ｖl1，Ｖl2が他のポリゴンＰl-1の頂点Ｖ(l-1)1，Ｖ(l-1)2でもある、共有頂点Ｖｓと判断する。
【００５６】
（ＳＰ５４）画像処理装置１０Ａは、他のポリゴンＰと共有しているｌ番目のポリゴンＰlの共有頂点Ｖｓの法線ベクトルｎと、当該他のポリゴンＰの共有頂点Ｖｓの法線ベクトルｎと、が互いに向きが異なるか否か判断する。画像処理装置１０Ａは、肯定判断した場合（Ｙｅｓ）にはその共有頂点Ｖｓを検出してステップＳＰ５６の処理に移行し、否定判断した場合（Ｎｏ）にはステップＳＰ６０の処理に移行する（ステップＳＰ５２の処理に戻る）。例えば、図９に示す場合であると、画像処理装置１０Ａは、ｌ番目のポリゴンＰlの共有頂点ＶｓであるＶl1の法線ベクトルｎl1と、他のポリゴンＰl-1の共有頂点ＶｓであるＶ(l-1)1の法線ベクトルｎ(l-1)1と、が互いに向きが異なると判断する。
【００５７】
（ＳＰ５６）画像処理装置１０Ａは、検出した共有頂点Ｖｓの互いに異なる向きの法線ベクトルｎ同士を合成することで、押出ベクトルＢを生成する。例えば、図９に示す場合であると、画像処理装置１０Ａは、ｌ番目のポリゴンＰlの共有頂点ＶｓであるＶl1の法線ベクトルｎl1と、他のポリゴンＰl-1の共有頂点ＶｓであるＶ(l-1)1の法線ベクトルｎ(l-1)1と、を合成して、押出ベクトルＢl1、Ｂ(l-1)1を生成する。また、画像処理装置１０Ａは、ｌ番目のポリゴンＰlの共有頂点ＶｓであるＶl2の法線ベクトルｎl2と、他のポリゴンＰl-1の共有頂点ＶｓであるＶ(l-1)2の法線ベクトルｎ(l-1)2と、を合成して、押出ベクトルＢl2、Ｂ(l-1)2を生成する。
【００５８】
なお、押出ベクトルＢl1と押出ベクトルＢ(l-1)1は互いに同じ値である。また、押出ベクトルＢl2と押出ベクトルＢ(l-1)2は互いに同じ値である。また、ステップＳＰ４８で共有頂点Ｖｓに既に押出ベクトルＢが設定されている場合には、押出ベクトルＢ同士又は押出ベクトルＢと法線ベクトルｎとを合成して、押出ベクトルＢを再生成する。
【００５９】
（ＳＰ５８）画像処理装置１０Ａは、生成した押出ベクトルＢを実モデル４０の対応する頂点Ｖに関連付けて、ＨＤＤ１８に保存する。これにより、複数のポリゴンＰの各頂点Ｖのうち少なくとも一部の頂点について、押出ベクトルＢが設定される。例えば、図９に示す場合であると、頂点Ｖl1に押出ベクトルＢl1が設定され、頂点Ｖl2に押出ベクトルＢl2が設定され、頂点Ｖ(l-1)1に押出ベクトルＢ(l-1)1が設定され、頂点Ｖ(l-1)2に押出ベクトルＢ(l-1)2が設定される。
【００６０】
（ＳＰ６２，ＳＰ７４）画像処理装置１０Ａは、変数ｍの値が１からポリゴンＰの構成数ｉが示す値に達するまで、ｍに「１」を加算しつつ（ｍ＝ｍ＋１）、ステップＳＰ６２とステップＳＰ７４の間のステップＳＰ６４〜ステップＳＰ７２までの処理を繰り返す。
【００６１】
（ＳＰ６４）画像処理装置１０Ａは、ＨＤＤ１８から、ｍ番目のポリゴンＰmの各頂点Ｖm1〜Ｖm3の法線ベクトルｎm1〜ｎm3を取得する。
【００６２】
（ＳＰ６６）画像処理装置１０Ａは、各頂点Ｖm1〜Ｖm3の属する面の曲率を計算することにより取得する。頂点Ｖm1の曲率の計算方法としては、特に限定されないが、本実施形態では、図１０に示す方法を一例に挙げる。図１０に示す方法では、画像処理装置１０Ａは、頂点Ｖm1の法線ベクトルｎm1と、頂点Ｖm1の全ての隣接頂点Ｖ（Ｖm2、Ｖm3を含む）の法線ベクトルｎ（ｎm2、ｎm3を含む）との成す角度を求め、これらの角度の平均を求める。同様に、各頂点Ｖm2やＶm3の属する面の曲率の計算方法も同様である。
ここで、求めた角度が小さいと、より平らであり曲率が小さいことになる。また、求めた角度が大きいと、より尖っており曲率が大きいことになる。したがって、以上のように角度の平均を求めることは、画像処理装置１０Ａは、各頂点Ｖm1〜Ｖm3の属する面の曲率を計算することになる。
【００６３】
（ＳＰ７０）画像処理装置１０Ａは、各頂点Ｖm1〜Ｖm3の法線ベクトルｎm1〜ｎm3に、それぞれ求めた曲率に基づいた係数を乗じる。例えば、面の曲率が大きい場合は大きい係数を乗じ、面の曲率が小さい場合は小さい係数を乗じて、押出ベクトルＢm1〜Ｂm3を生成する。この係数の値は、特に限定されないが、１以上の係数だけでなく、０以上１未満の係数であってもよい。なお、ステップＳＰ４８やＳＰ５８で既に押出ベクトルＢm1〜Ｂm3が設定されている場合には、その押出ベクトルＢm1〜Ｂm3に係数を乗じて、押出ベクトルＢm1〜Ｂm3を再生成する。また、上記係数は、曲率にもよるが、少なくとも２つの頂点Ｖで異なることが好ましい。
【００６４】
（ＳＰ７２）画像処理装置１０Ａは、押出ベクトルＢm1〜Ｂm3をＨＤＤ１８に保存する。以上を繰り返すことにより、複数のポリゴンＰの全ての頂点Ｖについて、押出ベクトルＢが設定される。
【００６５】
＜効果＞
以上、本発明の実施形態に係るモデル形成方法は、複数のポリゴンＰの各頂点Ｖのうち少なくとも一部の頂点について、当該一部の頂点に設定されている法線ベクトルｎと異なる向きの押出ベクトルＢを取得する第１ステップＳＰ１０と、少なくとも実モデル４０と押出ベクトルＢとに基づき、輪郭線用モデル５０を形成する第２ステップＳＰ１２と、を有する。
【００６６】
この方法によれば、形成した輪郭線用モデル５０を描画すると、各頂点Ｖでの法線ベクトルｎに基づいた輪郭線用モデルを描画した場合に比べて、輪郭線用モデル５０の各ポリゴンＰ′のサイズを変化させることができるので、より適切に実モデル４０の輪郭線を表現することができる。
【００６７】
また、本発明の実施形態に係るモデル形成方法では、第１ステップＳＰ１０は、実モデル４０の開口部６２を検出するステップＳＰ４０と、検出した開口部６２に隣接する頂点Ｖを検出するステップＳＰ４２と、検出した頂点Ｖに対して、検出した頂点Ｖに設定されている法線ベクトルｎに基づき押出ベクトルＢを設定するステップＳＰ４６と、を含む。また、この押出ベクトルＢを設定するステップＳＰ４６では、検出した頂点Ｖを含むポリゴンＰの重心Ｇから検出した頂点Ｖに向かう方向のベクトルＡと、検出した頂点Ｖの法線ベクトルｎとを合成することで、押出ベクトルＢを設定する。
【００６８】
この方法によれば、各頂点Ｖでの法線ベクトルｎに基づいた輪郭線用モデルを描画した場合に比べて、開口部６２周辺の輪郭線をより適切に表現することができる。
【００６９】
具体的には、図１１を用いて説明する。図１１の上図は、５つの平らな面Ｚ1〜Ｚ5と開口面Ｚ６（開口部６２）を有した正六面体の実モデル４０のみを描画した正面図である。図１１の左下図は、５つの平らな面Ｚ1〜Ｚ5と開口面Ｚ6（開口部６２）を有した正六面体の実モデル４０と、各頂点Ｖでの法線ベクトルｎに基づいた従来の輪郭線用モデル５０Ａを第３ステップＳＰ１４で描画した正面図である。図１１の右下図は、５つの平らな面Ｚ1〜Ｚ5と開口面Ｚ6（開口部６２）を有した正六面体の実モデル４０と、押出ベクトルＢに基づいた輪郭線用モデル５０を第３ステップＳＰ１４で描画した正面図である。
この図１１に示すように、実モデル４０と、各頂点Ｖでの法線ベクトルｎに基づいた従来の輪郭線用モデル５０Ａを描画すると、開口部６２に隣接する辺に輪郭線が表現されない。一方で、実モデル４０と、押出ベクトルＢに基づいた輪郭線用モデル５０を描画すると、開口部６２に隣接する辺に輪郭線が表現される。
【００７０】
また、本発明の実施形態に係るモデル形成方法では、第１ステップＳＰ１０は、ポリゴンＰ同士が共有している頂点Ｖに対して、各ポリゴンＰに対応する法線ベクトルｎが互いに異なる向きであることを検出するステップＳＰ５４と、検出した互いに異なる向きの法線ベクトルｎ同士を合成することで、押出ベクトルＢを設定するステップＳＰ５６，５８と、を含む。
【００７１】
この方法によれば、各頂点Ｖでの法線ベクトルｎに基づいた輪郭線用モデルを描画した場合に比べて、角部周辺等での輪郭線の途切れを抑制できる。
【００７２】
具体的には、図１２を用いて説明する。図１２の上図は、６つの平らな面Ｚ1〜Ｚ6を有した正六面体の実モデル４０のみを描画した斜視図である。図１２の左下図は、６つの平らな面Ｚ1〜Ｚ6を有した正六面体の実モデル４０と、各頂点Ｖでの法線ベクトルｎに基づいた従来の輪郭線用モデル５０Ａを第３ステップＳＰ１４で描画した正面図である。図１２の右下図は、６つの平らな面Ｚ1〜Ｚ6を有した正六面体の実モデル４０と、押出ベクトルＢに基づいた輪郭線用モデル５０を第３ステップＳＰ１４で描画した正面図である。なお、面Ｚ1〜Ｚ6は、例えば図２に示すように、それぞれ複数のポリゴンＰで構成されている。
この図１２に示すように、実モデル４０と、各頂点Ｖでの法線ベクトルｎに基づいた従来の輪郭線用モデル５０Ａを描画すると、実モデル４０の角部周辺で輪郭線が途切れてしまう。一方で、実モデル４０と、押出ベクトルＢに基づいた輪郭線用モデル５０を描画すると、角部周辺等での輪郭線の途切れがない。
【００７３】
また、本発明の実施形態に係るモデル形成方法において、第１ステップＳＰ１０では、各頂点Ｖついて、各頂点Ｖが属する面の曲率に基づいた係数を乗じた押出ベクトルＢを取得するステップＳＰ６２〜７４を有する。
【００７４】
この方法によれば、各頂点Ｖでの法線ベクトルｎに基づいた輪郭線用モデルを描画した場合に比べて、表面の凹凸の度合に応じて輪郭線の厚みを変えることができ、輪郭線に対して漫画的な味のある表現をすることができる。
【００７５】
具体的には、図１３を用いて説明する。図１３の上図は、複数のポリゴンＰ（不図示）を有した実モデル４０のみを描画した斜視図である。この実モデル４０は、例えば３つの石を上に積んだような形状である。図１３の左下図は、複数のポリゴンＰ（不図示）を有した実モデル４０と、各頂点Ｖでの法線ベクトルｎに基づいた従来の輪郭線用モデル５０Ａを第３ステップＳＰ１４で描画した正面図である。図１３の右下図は、複数のポリゴンＰ（不図示）を有した実モデル４０と、押出ベクトルＢに基づいた輪郭線用モデル５０を第３ステップＳＰ１４で描画した正面図である。
この図１３に示すように、実モデル４０と、各頂点Ｖでの法線ベクトルｎに基づいた従来の輪郭線用モデル５０Ａを描画すると、輪郭線の厚みが一定となってしまう。一方で、実モデル４０と、押出ベクトルＢに基づいた輪郭線用モデル５０を描画すると、輪郭線の厚みに変化が生じ、輪郭線に対して漫画的な味のある表現をすることができる。例えば、面の曲率が大きい場合は大きい係数を乗じ、面の曲率が小さい場合は小さい係数を乗じて、押出ベクトルＢm1〜Ｂm3を生成すると、図１３に示すにように、面の曲率が大きい箇所の輪郭線は厚みが大きく、面の曲率が小さい箇所の輪郭線が小さい。
なお、本実施形態では、実モデル４０と、各頂点Ｖでの法線ベクトルｎに基づいた従来の輪郭線用モデル５０Ａを描画すると、実モデル４０の底辺角部周辺で輪郭線が途切れてしまう場合がある。一方で、実モデル４０と、ステップＳＰ５０〜ステップＳＰ６０を経て設定された押出ベクトルＢに基づいた輪郭線用モデル５０を描画すると、底辺角部周辺での輪郭線の途切れがない。
【００７６】
＜変形例＞
以上、本願の開示する技術の実施形態について説明したが、本願の開示する技術は、上記に限定されるものではない。
【００７７】
例えば、上記実施形態では、第１ステップＳＰ１０と、第２ステップＳＰ１２及び第３ステップＳＰ１４とで、プログラム及び画像処理装置１０が異なる場合を説明したが、第１ステップＳＰ１０と、第２ステップＳＰ１２とで、プログラム及び画像処理装置１０が同じであってもよい。すなわち、実モデル４０等の作成者側の画像処理装置１０Ａでベクトル計算方法及びモデル形成方法を行ってもよい。同様に、実モデル４０等の表示者側の画像処理装置１０Ｂでベクトル計算方法及びモデル形成方法を行ってもよい。また、本実施形態では、実モデル４０等の作成者側の画像処理装置１０Ａでベクトル計算方法（第１ステップＳＰ１０）のみ行ってもよい。また、本実施形態では、実モデル４０等の表示者側の画像処理装置１０Ｂでベクトル計算方法により予め設定されている押出ベクトルＢに基づいて輪郭線用モデル５０の形成と描画を行ってもよい。この場合、図４に示すステップＳＰ２０では、画像処理装置１０Ｂは、押出ベクトルＢを設定するのではなく、予め設定されている押出ベクトルＢを読み出す。
【００７８】
また、図５に示すステップＳＰ４４でのベクトルＡは、重心Ｇから頂点Ｖに向かう方向のベクトルとしたが、重心に限らず、ポリゴンＰの内部の代表点（一点）から頂点Ｖに向かう方向のベクトルとしてもよい。例えば、三角形のポリゴンＰの内心や外心、垂心から頂点Ｖに向かう方向のベクトルとしてもよい。また、法線ベクトルｎと直交するベクトルとしてもよい。
【００７９】
また、図６に示すステップＳＰ６８での面の曲率は、ある頂点Ｖの法線ベクトルｎと、当該頂点Ｖの全ての隣接頂点Ｖの法線ベクトルｎとの成す角度の平均である場合を説明したが、特定軸におけるある頂点Ｖの高さと、当該頂点Ｖの全ての隣接頂点Ｖの高さとの差分の平均であってもよい。ただし、よりよく輪郭線が表現できるという観点から、面の曲率が角度の平均である方が好ましい。
【００８０】
また、押出ベクトルＢの大きさは、曲率に基づいて設定する場合を説明したが、実モデル４０の動く速度や加速度に基づいた係数を乗じて設定してもよい。例えば、実モデル４０の動く速度や加速度が大きいほど、より大きい係数を乗じて押出ベクトルＢの大きさを設定することで太い輪郭線を表示してもよい。なお、この場合には、実モデル４０等の表示者側の画像処理装置１０Ｂでベクトル計算方法及びモデル形成方法を行う。
【００８１】
また、図５に示すステップＳＰ５４においてポリゴンＰ同士が共有している頂点Ｖに対して設定されている法線ベクトルｎが互いに異なる向きでなければ、その頂点Ｖに対して押出ベクトルを設定しない場合を説明した。しかし、ポリゴンＰ同士が共有している頂点Ｖに対して、設定されている少なくとも２つの法線ベクトルｎが互いに同じ向きである、又は設定されている法線ベクトルｎが単一であっても、その頂点Ｖに対して押出ベクトルＢを設定するようにしてもよい。具体的には、ポリゴンＰ同士が共有している頂点Ｖに対して、設定されている少なくとも２つの法線ベクトルｎが互いに同じ向きである、又は設定されている法線ベクトルｎが単一であることを検出するステップと、検出した頂点Ｖに対して、法線ベクトルｎと同一方向の押出ベクトルＢを設定するステップを設けるようにしてもよい。このような場合、図４に示すステップＳＰ２４では、画像処理装置１０Ｂは、実モデル４０と押出ベクトルのみに基づき、輪郭線用モデル５０（図７参照）を形成することができる。
【００８２】
また、ステップＳＰ４６やＳＰ５６等で押出ベクトルＢを計算してステップＳＰ４８やＳＰ５８等で保存する際に、頂点Ｖの法線ベクトルｎを残し、輪郭線は押出ベクトルＢを使用し、通常のシェーディングは法線ベクトルｎを使用するようにしてもよい。
【符号の説明】
【００８３】
１０…画像処理装置（コンピュータ）、４０…実モデル（第１モデル）、５０…輪郭線用モデル（第２モデル）、６２…開口部、Ｂ…押出ベクトル、Ｇ…重心、ｎ…法線ベクトル、Ｐ…ポリゴン、Ｖ…頂点
【図２】
2015018519.tif 000003
【図３】
2015018519.tif 000004
【図４】
2015018519.tif 000005
【図５】
2015018519.tif 000006
【図６】
2015018519.tif 000007
【図７】
2015018519.tif 000008
【図８】
2015018519.tif 000009
【図９】
2015018519.tif 000010
【図１０】
2015018519.tif 000011
【図１１】
2015018519.tif 000012
【図１２】
2015018519.tif 000013
【図１】
2015018519.tif 000014
【図１３】
2015018519.tif 000015