(57)【要約】【課題】３次元モデルの入力を効率化する。【解決手段】３次元モデリングシステムでは、面要素の入力を受け付け、入力された複数の面要素によって囲まれる領域として３次元モデルを生成する。面要素の入力は、点および方向の指定により受け付けることが好ましい。また、入力済みの面要素を移動または回転させる指示を受け付け、移動または回転後の面要素に３次元モデルを再生成することも好ましい。３次元モデルの生成では、複数の面要素の全ての組合せについて、面要素間の距離を求め、距離が小さい面要素対から順に、面要素対の交線に基づいて３次元モデルを構成する面領域を決定することが好ましい。このとき、交線により分割される領域のうち、面要素を指定する点を含む領域を、３次元モデルを構成する面領域として決定することが好ましい。また、複数の面要素をグループ化し、一括して移動したり回転したりできるようにすることも好ましい。【選択図】図２
2014109935.tif 000002
【特許請求の範囲】
【請求項１】
３次元モデリングシステムにおける３次元モデリング方法であって、
面要素の入力を受け付ける入力ステップと、
入力された複数の面要素によって囲まれる領域として３次元モデルを生成するモデリングステップと、
を含む、３次元モデリング方法。
【請求項２】
前記入力ステップでは、点および方向の指定により面要素の入力を受け付ける、
請求項１に記載の３次元モデリング方法。
【請求項３】
入力済みの面要素を移動または回転させる指示を受け付けるステップをさらに有し、
移動または回転後の面要素に基づいて３次元モデルを再生成する、
請求項１または２に記載の３次元モデリング方法。
【請求項４】
複数の面要素をグループ化する指定を受け付けるステップをさらに含み、
グループ化された複数の面要素に対する移動または回転の指示を受け付けた場合は、当該グループ化された複数の面要素に対して指定された移動または回転を施す、
請求項３に記載の３次元モデリング方法。
【請求項５】
前記モデリングステップは、
複数の面要素の全ての組合せについて、面要素間の距離を求めるステップと、
距離が小さい面要素対から順に、面要素対の交線に基づいて３次元モデルを構成する面領域を決定するステップと、
からなる、請求項１〜４のいずれかに記載の３次元モデリング方法。
【請求項６】
前記面要素は、点および方向の指定により入力を受け付けるものであり、
前記面領域を決定するステップでは、面要素対の交線により分割される領域のうち前記点を含む領域を、３次元モデルを構成する面領域として決定する、
請求項５に記載の３次元モデリング方法。
【請求項７】
複数の面要素をグループ化する指定を受け付けるステップをさらに含み、
前記モデリングステップは、
グループ化された複数の面要素について、３次元モデルを構成する面領域を決定するステップと、
グループ化された複数の面要素について決定された面領域を一つの要素とみなして、他の面要素との間で、３次元モデルを構成する面領域を決定するステップと、
からなる、請求項５または６に記載の３次元モデリング方法。
【請求項８】
複数の面要素の組合せをグループ化してあらかじめ記憶するステップをさらに含み、
前記入力ステップにおいては、あらかじめ記憶されたグループ化された複数の面要素を選択して、配置することが可能である、
請求項１〜７のいずれかに記載の３次元モデリング方法。
【請求項９】
請求項１〜８のいずれかに記載の方法の各ステップを、コンピュータに実行させるためのコンピュータプログラム。
【請求項１０】
面要素の入力を受け付ける面要素入力手段と、
入力された複数の面要素によって囲まれる領域として３次元モデルを生成する３次元モデル決定手段と、
を備える、３次元モデリングシステム。
【請求項１１】
前記面要素入力手段は、点および方向の指定により面要素の入力を受け付ける、
請求項１０に記載の３次元モデリングシステム。
【請求項１２】
入力済みの面要素を移動または回転させる指示を受け付ける面要素編集手段をさらに備え、
前記３次元モデル決定手段は、移動または回転後の面要素に基づいて３次元モデルを再生成する、
請求項１０または１１に記載の３次元モデリングシステム。
【請求項１３】
前記面要素編集手段は、複数の面要素をグループ化する指定を受け付け、
グループ化された複数の面要素に対する移動または回転の指示を受け付けた場合は、当該グループ化された複数の面要素に対して指定された移動または回転を施す、
請求項１２に記載の３次元モデリングシステム。
【請求項１４】
前記３次元モデル決定手段は、
複数の面要素の全ての組合せについて、面要素間の距離を求め、
距離が小さい面要素対から順に、面要素対の交線に基づいて３次元モデルを構成する面領域を決定する、
ことによって３次元モデルを生成する、
請求項１０〜１３のいずれかに記載の３次元モデリングシステム。
【請求項１５】
前記面要素は、点および方向の指定により入力を受け付けるものであり、
前記３次元モデル決定手段は、面要素対の交線により分割される領域のうち前記点を含む領域を、３次元モデルを構成する面領域として決定する、
請求項１４に記載の３次元モデリングシステム。
【請求項１６】
前記面要素編集手段は、複数の面要素をグループ化する指定を受け付け、
前記３次元モデル決定手段は、
グループ化された複数の面要素について、３次元モデルを構成する面領域を決定し、
グループ化された複数の面要素について決定された面領域を一つの要素とみなして、他の面要素との間で、３次元モデルを構成する面領域を決定する、
ことによって３次元モデルを生成する、
請求項１４または１５に記載の３次元モデリングシステム。
【請求項１７】
複数の面要素の組合せをグループ化してあらかじめ記憶する記憶手段をさらに備え、
前記面要素入力手段は、あらかじめ記憶されたグループ化された複数の面要素を選択して、配置することが可能である、
請求項１０〜１６のいずれかに記載の３次元モデリングシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、３次元モデリング技術に関する。
【背景技術】
【０００２】
従来の３次元モデリングにおいては、空間中の頂点が基本的な要素として利用されている。ユーザが空間中に頂点を配置し、それらの頂点の間を辺で連結し、さらに、辺によって閉じられた領域を面として定義することで３次元モデルを表現することが一般的である。このような手法は、計算機の内部表現を直接反映したものであるため、実装が容易であり、広く用いられている。
【０００３】
建築物などについては、大きな平面の組合せで３次元モデルを表現される。モデル作成の際に、平面を平行移動したり回転したりする操作が要求されるが、平面性を維持しつつ頂点を協調して移動させることは困難であり、ユーザに対する負担が大きい。例えば、立方体の１つの面を引き出すには、４つの頂点を平行に移動することが必要である。
【０００４】
非特許文献１や特許文献１に記載の技術では、図２３（ａ）に示すようにまず面を作成し、その面を直接つかんで引っぱり出したり押し込んだりすることによって、図２３（ｂ）に示すようなモデリングを行うことを可能としている。しかしながら、この手法においても内部表現には頂点を用いており、既存の面を回転させると周りの面の平面性が失われるという問題や、何もないところに新たに面を置くことができないという問題を有している。例えば、図２４（ａ）に示す３次元モデルにおいて、辺Ｓを中心として面Ｐ１を回転させた場合には、頂点Ｖ１，Ｖ２の高さが変わるため、図２４（ｂ）に示すように面Ｐ２の平面性が失われてしまう。また、図２５（ａ）に示す３次元モデルを、図２５（ｂ）に示す３次元モデルに変更する場合には、複雑な操作が必要となる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】米国特許第６６２８２７９号明細書
【非特許文献】
【０００６】
【非特許文献１】"SketchUp", [online], 平成24年10月26日検索, Trimble, <URL: http://www.sketchup.com/intl/en/index.html>
【発明の概要】
【発明が解決しようとする課題】
【０００７】
本発明は、効率よく３次元モデルを入力することが可能な３次元モデリング方法および３次元モデリング装置を提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明においては、面を基本要素として３次元モデルの入力を行う。より具体的には、本発明にかかる３次元モデリング方法は、面要素の入力を受け付ける入力ステップと、入力された複数の面要素によって囲まれる領域として３次元モデルを生成するモデリングステップとを、含む。
【０００９】
このように、ユーザから面要素の入力を受け付け、面要素によって囲まれる領域を３次元モデルとして生成するので、少数の平面から構成される３次元形状のモデル作成が容易になる。少数の平面から構成される３次元形状の例として、建築物が挙げられる。
【００１０】
本発明において、入力済みの面要素を移動または回転させる指示を受け付けるステップをさらに有し、移動または回転後の面要素に基づいて３次元モデルを再生成することも好ましい。
【００１１】
面要素に基づいた３次元モデル生成を行っているので、面要素を移動させたり回転させたりするだけで、３次元モデルの編集が行える。すなわち、面要素の移動の際に、複数の頂点が平面を保つようにそれぞれの頂点をユーザが平行移動させたりする必要は無い。また、面要素の回転の際に、周りの平面が平面性を保つように頂点位置を明示的に指示する必要もない。すなわち、ユーザは単純な操作によって３次元モデルの編集が可能となる。
【００１２】
本発明において、複数の面要素をグループ化する指定を受け付けるステップをさらに含み、グループ化された複数の面要素に対する移動または回転の指示を受け付けた場合は、当該グループ化された複数の面要素に対して指定された移動または回転を施すことが好ましい。
【００１３】
このように、複数の面要素をグループ化することで、同一の移動や回転を複数の面要素に対して施す場合の操作が容易となる。
【００１４】
本発明において、複数の面要素によって囲まれる領域として３次元モデルを生成するモデリングステップは、複数の面要素の全ての組合せについて、面要素間の距離を求めるステップと、距離が小さい面要素対から順に、面要素対の交線に基づいて３次元モデルを構成する面領域を決定するステップと、からなることが好ましい。本発明において、面要素は、点および方向の指定により特定することができる。この場合、面要素間の距離は、面要素を指定する点の間の距離として求めれば良い。また、上記の面領域を決定するステップでは、面要素対の交線により分割される領域のうち入力された点を含む領域を、３次元モデルを構成する面領域として決定する、ことが好ましい。
【００１５】
複数の面要素が存在する場合に、これらの面要素によって囲まれる多面体の形状を決定することは必ずしも容易ではない。上記の方法によれば、面要素の入力以外の操作を必要とせずに、適切な３次元モデルを生成することが可能となる。
【００１６】
本発明において、入力された面要素のいくつかがグループ化されている場合には、前記モデリングステップは、グループ化された複数の面要素について、３次元モデルを構成する面領域を決定するステップと、グループ化された複数の面要素について決定された面領域を一つの要素とみなして、他の面要素との間で、３次元モデルを構成する面領域を決定するステップと、からなることも好ましい。なお、グループ化された面要素をさらにグループ化している場合など階層的な構造を有する場合には、末端の要素から順に上記の処理を施せばよい。
【００１７】
このようにすれば、グループ化された面要素の形状を保ちつつ、適切な３次元モデルを生成することが可能である。
【００１８】
本発明における面は、平面であっても良いし、曲面であっても良い。平面を用いる場合には、点および方向（法線）の指定を受け付けることが面の入力を受け付ける。曲面を用いる場合には、点、方向、および曲率の指定を受け付けることで面の入力を受け付ける。
【００１９】
本発明において、複数の面要素の組合せをグループ化してあらかじめ記憶するステップをさらに含み、入力ステップにおいては、あらかじめ記憶されたグループ化された複数の面要素を選択して、配置可能とすることも好ましい。
【００２０】
このようにすれば、複数の面要素から構成される複雑な形状を簡単に入力することができる。また、面要素として平面を用いる場合であっても、複数の平面の組合せにより曲面を近似的に表現することができるので、曲面の入力が容易にできる。
【００２１】
本発明は、上記処理の少なくとも一部を含む３次元モデリング方法として捉えることができる。上記の方法をコンピュータで実行するためのプログラムとして捉えることもできる。また、上記の処理を実行する手段を有する３次元モデリング装置として捉えることもできる。
【発明の効果】
【００２２】
本発明によれば、効率よく３次元モデルを入力することが可能となる。
【図面の簡単な説明】
【００２３】
【図１】３次元モデリングシステムの基本構成要素である面要素を説明する図。
【図２】３次元モデリングシステムにおけるモデリング方法を説明する図。
【図３】３次元モデリングシステムにおけるモデリング方法を説明する図。
【図４】３次元モデリングシステムの装置構成を示す図。
【図５】３次元モデリングシステムの外観を示す図。
【図６】３次元モデリングシステムで用いられる入力装置の構成を示す図。
【図７】３次元モデリングシステムの機能ブロックを示す図。
【図８】面要素記憶部が記憶する情報の例を示す図。
【図９】３次元モデリングシステムが行う３次元モデリング方法のフローチャート。
【図１０】３次元モデリング方法において複数の面要素から３次元形状の領域を決定する領域決定処理の詳細を示すフローチャート。
【図１１】３次元形状の領域決定処理を具体的に説明する図。
【図１２】３次元形状の領域決定処理を具体的に説明する図。
【図１３】面要素の中心点配置の違いによる最終的な３次元形状の違いを説明する図。
【図１４】複数の面要素のグループ化を説明する図。
【図１５】グループに対する編集操作を説明する図。
【図１６】グループに対する編集操作を説明する図。
【図１７】グループ化の有無による最終的な３次元形状の違いを説明する図。
【図１８】グループ化の有無による最終的な３次元形状の違いを説明する図。
【図１９】シーンがグループを含む場合の構造を示す図。
【図２０】グループと面要素の間の領域決定処理を説明する図。
【図２１】グループ同士の間の領域決定処理を説明する図。
【図２２】あらかじめ登録されるグループ化されたプリミティブ形状を説明する図。
【図２３】従来技術の３次元モデリング方法を説明する図。
【図２４】従来技術の３次元モデリング方法における問題点を説明する図。
【図２５】従来技術の３次元モデリング方法における問題点を説明する図。
【発明を実施するための形態】
【００２４】
以下、図面を参照しながら本発明にかかる３次元モデリングシステムについて説明する。
【００２５】
（第１の実施形態）
＜システム概要＞
本実施形態にかかる３次元モデリングシステムは、面要素を基本要素とする３次元モデリングシステムである。すなわち、ユーザが行う主な操作は、向きを持った点として表現
される面要素の３次元仮想空間中への配置と、その移動・回転である。３次元モデリングシステムは、入力された複数の面要素によって囲まれる領域を算出し、３次元形状のモデルを生成する。
【００２６】
本システムにおいて、面要素は、概念的には無限の広がりを持つ平面として扱われるが、実装的にはシステムが扱う有限の３次元仮想空間内に収まるようにトリミングされる。面要素は、位置と向きの２つによって指定される。図１の例では、２つの平面１０１，１０２が示されている。平面１０１は、位置（点）１０１ａおよび向き１０１ｂによって特定される。同様に、平面１０２は、位置（点）１０２ａおよび向き１０２ｂによって特定される。なお、以下では、面要素を指定するために入力された位置（点）のことを、面要素の中心あるいは中心点とも表記する。
【００２７】
本システムにおいては、配置済みの面要素を編集することも可能である。編集とは具体的には、面要素の中心点を移動させたり、面要素の向きを変更したりする操作である。すなわち、面要素の中心点を移動することで面要素の移動（平行移動）が行われ、面要素の向きを変更することで面要素の中心点を中心とした回転が行われる。
【００２８】
複数の面要素から３次元形状のモデルを作成する処理について説明する。上述のように、面要素は半無限に広がる平面であり、複数の面要素が配置されると面要素のペア全てについて交線が求められる。面要素の交線は、それぞれの面要素を２つの領域に分割する。分割された領域のうち、面要素の中心点を含む領域を３次元モデルを構成する面領域とし、面要素の中心点を含まない側の領域はトリミングする。基本的には、このような処理によって３次元モデルを構成する領域を決定し、複数の面からなる多面体を決定する。
【００２９】
入力された３次元形状を画像として出力する際には、上述のようにして求めた３次元形状のそれぞれの頂点座標に基づいて画像を生成する。しかしながら、システム内部では面要素を基本要素として、その中心点と向きとを保持している。したがって、新たに面要素が追加された場合には、それぞれの面要素によって囲まれる領域が再計算されて、３次元形状が決定される。
【００３０】
図２を参照しながら、より具体的に説明する。図２（ａ）は、２つの平面２０１，２０２が配置されている状態である。平面２０１，２０２の中心は点２０１ａ，２０２ａによりそれぞれ示されている。平面の向きの図示は省略する。なお、本システムにおいては、地面を表す水平面があらかじめ設定されており、ユーザが入力した面要素のうち地面より下の部分についてトリミングがされる。図２およびその他の図面において地面に相当する面要素の記載は省略する。
【００３１】
２つの平面２０１，２０２は、図２（ｂ）に示すように、交線２１０で交わり、それぞれの平面が分割される。各平面２０１，２０２の分割領域のうち、点２０１ａ、２０２ａを含む領域を残すことで、図２（ｂ）に示すようなＬ字型の形状が得られる。同様に、図２（ｃ）に示すように新たな平面２０３を追加すると、図２（ｄ）に示すようなＵ字型の形状が得られる。さらに、図２（ｅ）に示すような新たな平面２０４を追加すると、図２（ｆ）に示すような三角柱型の形状が得られる。このように、複数の平面を配置するという直感的な操作のみによって、多面体のモデリングが可能となる。
【００３２】
図２（ｇ）は、図２（ｆ）のモデルに対してさらに平面２０５を追加した状態である。平面２０５によるトリミングが行われるので、図２（ｈ）に示すように台形柱型の形状が得られる。頂点座標を入力する手法では、図２（ｆ）に示す三角柱形状を図２（ｈ）に示す台形柱形状に変更することは容易ではないが、本システムによれば平面を１つ追加するだけでこのような変形が可能である。
【００３３】
さらに、本システムでは、配置済みの面要素に対する移動や回転といった操作を許容するので、平面性を保ちつつ入力済みの３次元形状を編集することが可能である。例えば、図３（ａ）に示す３次元形状を構成する面要素のうち、面要素Ｐ１を回転させると、３次元形状は図３（ｂ）のように変更される。ここで、３次元形状はそれぞれの面要素によって囲まれる領域として決定されるので、面要素Ｐ１を回転させても、その他の面の平面性が失われることがない。頂点座標を入力する手法では、１つの面を回転させる場合にその他の面の平面性を失わないように頂点を決定する必要があるが、本システムによればユーザは平面性の維持を考慮することなく、１つの面を回転させるだけで図３（ａ）の形状を図３（ｂ）の形状に変更することができる。
【００３４】
＜構成＞
図４は、本実施形態にかかる３次元モデリングシステム４００の装置構成を示す図である。３次元モデリングシステムは、ＣＰＵ（中央演算処理装置）４０２、ＲＡＭなどのメインメモリ４０４、記憶部４０６、入力部４０８、出力部４１０から構成される。ＣＰＵ４０２は、記憶部４０６に格納されたオペレーティングシステム（ＯＳ）やアプリケーションプログラム（３次元モデリングプログラム）を実行することにより、図７に示すような機能部として機能する。入力部４０８は、ユーザからの指示を３次元モデリングシステム４００へ伝達するためのインタフェースである。入力部４０８として、マウス、キーボード、タッチスクリーンなどを用いることができる。入力部４０８としてモーションキャプチャ装置を用いて、３次元の入力を容易に行えるようにしてもよい。出力部４１０は、３次元モデリングシステム４００からユーザに対して情報提示を行うためのインタフェースである。出力部４１０として、ディスプレイやスピーカーなどを用いることができる。出力部４１０としてヘッドマウントディスプレイ（ＨＭＤ）を用いることも好ましい。ここでは１台のコンピュータによってシステムを構成する例を説明しているが、互いにネットワークで接続された複数のコンピュータによってシステムを構成してもよい。
【００３５】
図５は、モーションキャプチャ装置を用いて実装した３次元モデリングシステム５００の概要を示す図である。この例では、入力部４０８として、ユーザが操作する入力装置５０８、複数のカメラ５０６ａ〜５０６ｄおよびモーションキャプチャ用ソフトウェア（コンピュータ５０２で実行される）から構成されるモーションキャプチャ装置を採用している。ここでは４つのカメラを示しているが、カメラの数は任意であってよい。ユーザは、入力装置５０８を操作して３次元形状のモデリングを行う。コンピュータ５０２は、ユーザからの入力に基づいて３次元モデリング処理を行い、結果をディスプレイ５０４へ出力する。なお、ここでは出力部４１０としてフラットパネルディスプレイ（ＦＰＤ）を用いる例を示しているが、ヘッドマウントディスプレイを用いて３次元映像の表示を行えば、３次元仮想空間への没入感を高めることができる。
【００３６】
図６は、入力装置５０８の詳細を示す図である。図６（ａ）に示すように、入力装置５０８は、把持部６０１と平面部６０２から構成される。把持部６０１にはボタン６０３ａ，６０３ｂが設けられ、ユーザからの入力がコンピュータ５０２へ伝達される。図６（ｂ）は平面部６０２を正面から示した図である。平面部６０２は、この例では円盤状であり、その表面に４つのマーカー６０４ａ〜ｄが取り付けられている。カメラ５０６がマーカー６０４をトラッキングすることで、コンピュータ５０２への面要素の入力とする。面の中心点は４つのマーカーの中心位置として決定することができ、面の向きは４つのマーカーから定まる平面に垂直な向きとして決定することができる。なお、３つのマーカーがあれば平面が一意に定まるので、マーカーの数は３つでも構わないが、その場合はいずれか１つのマーカーを撮影できない場合にはトラッキングができなくなってしまう。そこで、本実施例では４つのマーカーを採用している。なお、マーカーの数は４つより多くても構わない。
【００３７】
図５，図６に示すように、本実施例ではマーカーをカメラで撮影するモーションキャプチャ装置を採用しているが、任意のヴァーチャルリアリティー技術を採用することができる。例えば入力装置としてコイルを利用し、コイルから発生する磁場を検知する磁気ベースの３次元入力装置を用いてもよい。また、入力装置に対して力覚フィードバックを与えるようにすることで、仮想空間内のオブジェクトとユーザの間のインタラクションに関して力覚情報も与えられる。また、出力装置として、紙に印刷した２次元バーコードに合わせてＨＭＤで仮想オブジェクトを表示することで、実空間に仮想オブジェクトを重ね合わせて表示でき、３次元仮想空間への没入感を高められる。
【００３８】
なお、３次元入力装置などのヴァーチャルリアリティー技術を用いたユーザインタフェースを採用することが好ましいが、平面ディスプレイなどによる仮想空間の表示を行ったり、マウスなどの２次元入力装置によって３次元仮想空間への入力を行ったりしても構わない。
【００３９】
図７は、３次元モデリングシステム４００のＣＰＵ４０２がコンピュータプログラムを実行することにより実現される機能を示す図である。すわなち、３次元モデリングシステムは、面要素入力部７０１、面要素編集部７０２、面要素記憶部７０３、３次元モデル決定部７０４、画像生成部７０５をその機能部として含む。
【００４０】
面要素入力部７０１は、ユーザから新規の面要素の入力を受け付ける機能部である。図１に示されるように、面要素は点と向きとによって表される。図５，図６に示すようなモーションキャプチャ装置を用いる場合には、入力装置５０８の複数のマーカー６０４の中心位置を面要素の中心点とし、複数のマーカー６０４によって定まる平面と垂直な方向を面要素の向きとして取得する。
【００４１】
面要素記憶部７０３には、入力済みの面要素が格納される。具体的には、図８に示すように、それぞれの面要素について、中心点の座標と、向きのベクトルとが格納される。面要素の向きについては、２つの偏角（天頂角と方位角）によって特定して記憶しても構わない。
【００４２】
面要素編集部７０２は、入力済みの面要素について、その中心点あるいは向きを変更する機能部である。面要素の中心点を変更することにより、面要素の平行移動が実現できる。また、面要素の向きを変更することにより、面要素の回転が実現できる。面要素編集部７０２によって面要素が編集された場合は、面要素記憶部７０３内の情報が更新される。
【００４３】
３次元モデル決定部７０４は、面要素記憶部７０３に格納された複数の面要素によって囲まれる領域として、３次元形状を生成する。面要素が交わる場合には、面要素は交線によってそれぞれ２つの領域に分割される。分割された領域のうち、面要素の中心点を含む領域を残し、含まない領域をトリミングすることで、３次元形状を決定する。この際、３次元形状の頂点座標が求められ、記憶装置に記憶される。３次元形状決定のためのより詳細なアルゴリズムについては、後述する。なお、３次元モデル決定部７０４は、面要素が追加・編集される度に３次元モデルの生成を行ってもよいし、ユーザからの明示的な指示に応答して３次元モデルの生成を行ってもよい。
【００４４】
画像生成部７０５は、３次元モデル決定部７０４によって決定された３次元モデルを、ディスプレイに表示するための画像データを生成する機能部である。画像生成部７０５が生成した画像データは、出力部４１０に送られてユーザに向けて提示される。
【００４５】
＜処理＞
図９は、本実施形態にかかる３次元モデリング方法の処理の流れを示すフローチャートである。まず、ユーザから、面要素を追加する入力や、既存の面要素を編集する入力を受け付ける（Ｓ９０１）。新たな面要素の中心点と向きを指定することによって、面要素の追加が行われる。また、既存の面要素の中心点や向きを変更することによって、面要素の編集が行われる。
【００４６】
面要素の追加や編集が行われると、３次元モデル決定部７０４は、入力済みの面要素によって確定される３次元形状を決定する（Ｓ９０２）。この処理の詳細については、図１０〜図１３を参照して後ほど詳しく説明する。この処理により、３次元形状の各頂点座標が求められる。そして、画像生成部７０５が表示装置に表示するための画像データを生成し（Ｓ９０３）、表示装置において画像を表示する（Ｓ９０４）。
【００４７】
図１０は、ステップＳ９０２において３次元モデル決定部７０４が行う３次元形状決定処理の詳細を示すフローチャートである。まず、３次元モデル決定部７０４は、面要素記憶部７０３に格納された面要素の全ての組合せについて、面要素間の距離を求める（Ｓ１００１）。面要素間の距離は、面要素の中心点の間の距離として求めることができる。そして、面要素間距離が小さい面要素の組（面要素対）から順番に、以下の処理を実行する。すなわち、面要素の組の交線を求め（Ｓ１００２）、交線により分割される領域のうち、面要素の中心点を含む領域を残し、中心点を含まない領域をトリミングする（Ｓ１００３）。なお、面要素同士が交わらない場合や、すでにトリミング済みの領域において面要素同士が交わる場合には、ステップＳ１００３の処理は実行されない。
【００４８】
図１１に示す具体例にしたがって説明する。図１１（ａ）は、６つの面要素Ａ〜Ｆが配置されている状態を示す。この図は、３次元仮想空間を上方から見た平面図であり、各面要素Ａ〜Ｆは紙面と垂直である。また、図中の四角形は、各面要素の中心点を表す。
【００４９】
３次元モデル決定部７０４は、６つの面要素のそれぞれの組合せについて、中心点間の距離を求める。ここでは、面要素Ａと面要素Ｂの間の距離が最も小さいものとする。したがって、まず、面要素Ａ，Ｂの組合せについて３次元形状を構成する領域を決定する。図１１（ｂ）に示すように、面要素Ａ，Ｂの交線により、面要素Ａは領域Ａ１と領域Ａ２に分割される。同様に、面要素Ｂも交線により領域Ｂ１と領域Ｂ２に分割される。ここで、分割された領域のうち、面要素の中心点を含む領域（領域Ａ１，Ｂ１）を残し、面要素の中心点を含まない領域（領域Ａ２，Ｂ２）を除外（トリミング）する。このようにして、図１１（ｂ）に太線で示す領域が、３次元形状を構成する領域として仮決定される。
【００５０】
次に面要素間の距離が小さい組合せが、面要素Ｂと面要素Ｃの組合せであるとする。したがって、次に、面要素Ｂと面要素Ｃの組合せについて、３次元形状を構成する領域を同様にして決定する。図１１（ｃ）に示すように、面要素Ｂの領域Ｂ１は、面要素Ｃとの交線により、領域Ｂ１１と領域Ｂ１２に分割される。面要素Ｃは、面要素Ｂとの交線により、領域Ｃ１と領域Ｃ２に分割される。これらの領域のうち、面要素の中心点を含まない領域である領域Ｂ１２および領域Ｃ２をトリミングし、面要素の中心点を含む領域である領域Ｂ１１および領域Ｃ１を３次元形状を構成する領域として仮決定する。
【００５１】
次に面要素間の距離が小さい組合せが、面要素Ａと面要素Ｄの組合せであるとする。上記と同様に、図１１（ｄ）に示すように、交線により分割される領域のうち、面要素の中心点を含まない領域である領域Ａ１２および領域Ｄ２をトリミングし、面要素の中心を含む領域である領域Ａ１１と領域Ｄ１を３次元形状を構成する領域として仮決定する。
【００５２】
次に面要素間の距離が小さい組合せが、面要素Ｅと面要素Ｆの組合せであるとする。上記と同様に、図１１（ｅ）に示すように、交線により分割される領域のうち、面要素の中
心点を含まない領域である領域Ｅ２および領域Ｆ２をトリミングし、面要素の中心を含む領域である領域Ｅ１と領域Ｆ１を３次元形状を構成する領域として仮決定する。
【００５３】
次に面要素間の距離が小さい組合せが、面要素Ｄと面要素Ｅの組合せであるとする。上記と同様に、図１１（ｆ）に示すように、交線により分割される領域のうち、面要素の中心を含む領域である領域Ｄ１１と領域Ｅ１１を３次元形状を構成する領域として仮決定する。次に面要素間の距離が小さい組合せが、面要素Ｃと面要素Ｆの組合せであるとする。上記と同様に、図１１（ｆ）に示すように、交線により分割される領域のうち、面要素の中心を含む領域である領域Ｃ１１と領域Ｆ１１を３次元形状を構成する領域として仮決定する。
【００５４】
このようにして、全ての面要素の組合せについて処理を行った後に、残された面要素の領域が、３次元形状を構成する面領域として決定される。
【００５５】
なお、上記の説明では、全ての面要素の組合せについて説明はしていないが、例えば、面要素Ａと面要素Ｃは互いに交わらないので、トリミング処理は行われない。また、例えば、面要素Ｂ，Ｅ間の距離が、面要素Ｂ，Ａ間およびＢ，Ｃ間の距離よりも大きければ、面要素Ｂ，Ｅの組合せについて処理する時点では面要素Ｂは図１１（ｄ）に示すようにトリミングされており、トリミング後の面要素Ｂは、面要素Ｅと交わらない。したがって、このような場合には面要素Ｂ，Ｅの組合せについては、面要素のトリミング処理は行われない。
【００５６】
別の例を、図１２を参照して説明する。図１２（ａ）では、３つの面要素Ａ〜Ｃが配置されており、面要素間の距離は小さいものから順に、Ｂ−Ｃ，Ａ−Ｃ，Ａ−Ｂとする。まず、面要素Ｂ，Ｃの組合せについて処理が行われ、図１２（ｂ）に示すように面要素Ｂ，Ｃの一部がトリミングされる。次に、面要素Ａ，Ｃの組合せについて処理が行われ、図１２（ｃ）に示すように面要素Ａ−Ｃの一部がトリミングされる。なお、最後に面要素Ａ，Ｂの組合せについて処理が行われるが、ここまでの処理でトリミングされた後の面要素Ａ，Ｂは互いに交わらないので、この組合せについては特に処理が行われない。
【００５７】
面要素の数が増え、その空間的な位置関係が複雑なものになると、面要素からどのような多面体を構成するかは自明ではなく、多面体を一意に決定すること自体が困難である。本３次元モデリングシステムでは、上記のようなアルゴリズムにより、ユーザにとって分かりやすい方法で、多面体を一意に決定することができる。
【００５８】
上記のようなアルゴリズムによって３次元形状を構成する領域を決定するため、面要素の配置が一見同じであっても、面要素の中心点の位置関係によって最終的な３次元形状が変化する。このことを図１３を参照して説明する。図１３（ａ）〜（ｃ）では、３つの面要素が配置されており、いずれの場合も幾何学的な配置は同一である。しかしながら、これらの配置において、各面要素の中心点位置が異なり、したがって面要素間の距離（中心点間の距離）が異なる。図１３（ａ）では、面要素間の距離が小さいものから順に、Ｂ−Ｃ、Ａ−Ｂ、Ａ−Ｃである。図１３（ｂ）では、面要素間の距離が小さいものから順に、Ａ−Ｂ、Ｂ−Ｃ、Ａ−Ｃである。図１３（ｃ）では、面要素間の距離が小さいものから順に、Ａ−Ｃ、Ｂ−Ｃ、Ａ−Ｂである。このような違いにより、３次元形状を構成する領域を決定する順序が異なるため、最終的に得られる３次元形状に違いが生じる。
【００５９】
＜本実施形態の作用・効果＞
本実施形態にかかる３次元モデリングシステムによれば、ユーザは面を配置することによって、３次元形状のモデリングが可能となる。面を配置するだけで３次元形状を作成できるので、頂点座標を入力する手法と比べるとユーザの負担が大幅に軽減される。また、
入力済みの３次元形状に対して１つの面要素を加えるだけで、その面要素によってトリミングをした形状を作成できるので、この点でもユーザの負担が軽減される。また、既存の面要素を移動させたり回転させたりする場合に、３次元形状の各面の平面性が保たれる点でもユーザの負担が軽減される。頂点を基本とする３次元モデリングシステムでは、平面性を保つように各座標を移動させる必要があるが、本システムではそのような考慮をユーザがする必要がないためである。
【００６０】
また、本実施形態にかかる３次元モデリングシステムは、複数の面要素が与えられた場合にそこから３次元形状を決定するための好適なアルゴリズムを提供している。面要素から３次元形状を決定するために、交線を有する面要素対をユーザに指定させる方法も考えられるが、本システムのアルゴリズムを用いればそのような余計な指定をユーザにさせることなく３次元形状を決定することができる。
【００６１】
本実施形態にかかる３次元モデリングシステムは、建築物のような比較的少数の平面から構成される３次元形状を入力する際に、特に好適に利用することができる。
【００６２】
（第２の実施形態）
本実施形態では、複数の面要素をグループ化して、一括して移動や回転などの編集を行えるようにする。本実施形態にかかる３次元モデリングシステムは、グループ化が可能である点を除けば、基本的には第１の実施形態と同様である。以下では、主に第１の実施形態と異なる点について説明を行う。
【００６３】
図１４を参照して複数の面要素のグループ化について説明する。図１４には、３つの面要素１４１０、１４２０、１４３０が示されている。各面要素の中心点はそれぞれ１４１１、１４２１、１４３１であり、向きはそれぞれ１４１２、１４２２、１４３２である。ユーザは面要素編集部７０２を介して、これら３つの面要素を選択してグループ化することが可能である。なお、ここでは３つの面要素をグループ化する場合を例に説明をするが、２つあるいは４つ以上の面要素をグループ化する場合も同様であることは容易に理解できるであろう。
【００６４】
複数の面要素をグループ化する際には、ユーザは、グループを代表する面要素としてこれら複数の面要素のうちから１つの面要素を選択する。以下では、グループを代表する面要素をグループの「核」と称する。そして、グループの核である面要素の中心点および向きをユーザが編集することによって、グループ全体に対して一括して操作が行える。
【００６５】
具体的には、グループの核の中心点を移動させることにより、グループ全体がその相対的な配置を保ったまま平行移動する。内部的には、グループを構成する全ての面要素の中心点に対して、同一の平行移動操作を加えることによって、上記処理を実現可能である。
【００６６】
また、グループの核の向きを変更することによって、グループ全体がその相対位置を保ったまま回転する。内部的には、グループを構成する全ての面要素の向きに対して、同一の回転操作を加えることによって、上記処理を実現可能である。
【００６７】
図１５、図１６は、グループ化によって可能となる操作を説明する図である。図１５（ａ）では、直方体を構成する５つの面要素１５０１〜１５０５が含まれる。これら５つの面要素をグループ化して移動させることで、図１５（ｂ）（ｃ）に示すように、直方体のみを一括して平行移動させることが可能となる。また、図１６（ａ）では、５つの面要素１６０１〜１６０５をグループ化し、グループに対して回転操作を行うことで、図１６（ｂ）に示すようにこれら５つの面要素の傾きを一括して変更することが可能となる。
【００６８】
グループ構造を導入した場合には、３次元形状を構成する領域を決定する処理（図９のステップＳ９０２や図１０）は、第１の実施形態から若干変更する必要がある。まず、初めにグループ化された面要素のみについて領域判定処理を行い、グループの領域を決定する。そして、グループの領域を１つの要素とみなして、他の要素（面要素または他のグループ）との間で領域を決定する。したがって、複数の面要素が同じ配置をしている場合であっても、グループ化の有無によって最終的な３次元形状が異なる。
【００６９】
図１７は、最終的に得られる３次元形状がグループ化の有無によって異なることを説明する図である。図１７（ａ）は、３つの面要素Ａ〜Ｃはグループ化されていない場合の３次元形状を示す。ここでは、面要素Ａ，Ｃの距離がもっとも近く、次に面要素Ｂ，Ｃの距離が近いことを想定する。この場合は、第１の実施形態で説明したような処理を行うことで、図示されるような形状が決定される。図１７（ｂ）に示される面要素Ａ〜Ｃは、中心点および向きのいずれも図１７（ａ）の場合と同じであるが、面要素Ｂ、ＣがＢを核としてグループ化されている。したがって、まず、面要素Ｂ，Ｃの２つに基づいてトリミング処理をして領域が決定され、それに対してさらに面要素Ａによるトリミングが施される。結果として得られる形状は、グループ化を行っていない図１７（ａ）と異なるものとなる。
【００７０】
図１８は、グループ化の有無による違いを説明する別の例を示す図である。図１８（ａ）では３つの面要素Ａ〜Ｃはグループ化されていないが、図１８（ｂ）では面要素Ａ，ＣがＡを核としてグループ化されている。グループ化が行われている図１８（ｂ）では、まず面要素Ａ，Ｃに基づいて領域決定処理が行われ、さらに面要素Ｂを考慮して領域決定処理が行われるので、最終的に得られる形状が図１８（ａ）と異なるものとなる。
【００７１】
グループは入れ子構造とすることができる。すなわち、１つのグループを別のグループの構成要素とすることもできる。すなわち、グループは、面要素同士の組合せであってもよいし、面要素とグループの組合せであってもよいし、グループ同士の組合せであってもよい。したがって、より一般的には、シーン全体を構成する３次元モデルは、木構造として表現される。図１９は、シーン全体の構造を示す木構造グラフの例である。図１９において、末端の葉ノードが面要素を表現し、中間ノードがグループを表現し、根がシーン全体を表現する。ここでは、４つの面要素Ｐ１〜Ｐ４からなるグループＧ１および２つの面要素Ｐ５，Ｐ６からなるグループＧ２が定義されている。そして、グループＧ１，Ｇ２、面要素Ｐ７，Ｐ８からシーンＳが定義されている。
【００７２】
本実施形態における領域決定処理について、より詳細に説明する。本実施形態では、シーン全体は図１７に示すように木構造として表現される。シーン全体のジオメトリを決定するにあたっては、この木構造をボトムアップにたどりながら、それぞれの中間ノードの下についている子ノード群の間で領域決定処理をしながら全体のジオメトリを決定していく。子ノードとしてグループを含みうる点で第１の実施形態と相違するが、子ノードを１つの要素として、第１の実施形態における領域決定処理（図１０）を実行する。
【００７３】
第１の実施形態では図１０のステップＳ１００１において、面要素の全ての組合せについて面要素間の距離を求めて、距離が小さい面要素対から順に処理を行っている。本実施形態では、グループを構成する要素（すなわち、グループまたは面要素）の全ての組合せについて要素間の距離を求める。この際、グループについては核の中心点を基準として距離が求められる。すなわち、グループと面要素の間の距離は、グループの核の中心点と、面要素の中心との間の距離として求められる。グループ間の距離についても同様である。そして、距離の小さい要素対から順に領域決定処理を行っていく。
【００７４】
ステップＳ１００２〜Ｓ１００３のループにおいて、本実施形態ではグループを構成す
る要素の組合せとして、２つの面要素、１つのグループと１つの面要素、および、２つのグループの３通りが考えられる。面要素同士の場合の処理は、第１の実施形態と同様にすればよいので説明は省略する。以下では、グループと面要素に基づく領域決定処理と、２つのグループに基づく領域決定処理について順に説明する。
【００７５】
図２０は、グループと面要素の要素対についての領域決定処理を説明する図である。図２０（ａ）は、図１８（ｂ）に示すように、面要素Ａ、ＣからなるグループＧと、面要素Ｂとから構成されるシーンを示す図である。図中の黒丸は各面要素の中心点を表す。ここでは、面要素ＡとＣが、面要素Ａを核としてグループ化されているものとする。グループＧは図２０（ｂ）に示すような領域を有する。グループＧの領域と面要素Ｂに基づいて領域決定処理は、基本的には第１の実施形態の方法と同様であり、面同士の交線によって分割される領域のうち、面要素の中心点を含む方を残して、中心点を含まない方をトリミングする。ただし、この際にグループ化されている方の形状については、グループの核の中心点に着目して、核の中心点を残すようにトリミングをする点が第１の実施形態と異なる点である。
【００７６】
図２０（ｃ）に示すように、面要素Ｂは交線によって領域Ｂ１とＢ２に分割される。そして、面要素Ｂの中心点を含む領域Ｂ１が残され、領域Ｂ２がトリミングされる。グループＧについては、交線によって領域Ｇ１とＧ２に分割されるが、核である面要素Ａの中心点を含む領域Ｇ１が残され、領域Ｇ２がトリミングされ、最終的に図２０（ｃ）に示す形状が得られる。
【００７７】
なお、グループＧの核が面要素Ｃである場合には、領域Ｇ２が残され、領域Ｇ１がトリミングされるため、最終的に得られる形状は図２０（ｄ）に示すものとなる。
【００７８】
図２１は、グループ同士を要素対とする場合の領域決定処理を説明する図である。図２１（ａ）は、それぞれがＵ字型の形状を有する２つのグループＡ、Ｂから構成されている。グループＡは，図２１（ｂ）に示すように、３つの面要素Ａ１〜Ａ３がグループ化されたものであり、面要素Ａ１が核である。グループＢは、図２１（ｃ）に示すように、３つの面要素Ｂ１〜Ｂ３がグループ化されたものであり、面要素Ｂ１が核である。
【００７９】
グループ同士についての領域決定処理は、グループを構成するジオメトリ内の面の間の全ての対について交線を計算し、その交線によって各面を領域に分割する。例えば、図２１（ａ）では、面２１０２は、面２１０５および面２１０６との交線により３つの領域に分割される。その他の面についても分割領域が決定される。
【００８０】
そして、各グループの核を起点として、その周囲の範囲を広げながら、残すべき領域を決定していく。このとき、核からの距離が近い順に処理を行い、相手グループの領域に交差（または接触）するまで、領域を広げていく。グループＡについては、まず、核Ａ１の周囲から、次の交線までの分割領域を残すべき領域として決定する。すなわち、図２０（ｄ）の領域２１０２ａ，２１０３ａが残すべき領域として決定される。グループＢについても、同様に、領域２１０５ａおよび２１０６ａが残すべき領域として決定される。ここで、グループＡの核から広げた領域２１０３ａとグループＢの核から広げた領域２１０５ａは、互いに交差する。したがって、面２１０３および面２１０５についての領域拡大は、ここで終了となる。領域２１０２ａおよび領域２１０６ａについては、相手グループと交差していないので、引き続き領域拡大処理の対象となる。
【００８１】
グループＡの領域をさらに拡大すると、次の分割領域である領域２１０２ｂが残すべき領域として決定される。グループＢについては、領域２１０６ｂが残すべき領域として決定される。ここで、これらの領域２１０２ｂ、２１０６ｂは、相手グループと交差するの
で、領域拡大は終了する。これにより、全ての領域拡大処理が終了となるので、グループＡとグループＢに基づく領域は、図２１（ｅ）に示すような形状として確定する。
【００８２】
本実施形態によれば、グループを導入することで、複数の面要素に対して移動や回転などの処理を一回の動作で行えるようになるので、ユーザの負担が軽減される。また、グループ化により形状の決定が容易になる。グループ化しない場合には、面要素の位置関係によって最終的に得られる形状が異なるもの（例えば、図１３参照）となるが、グループ化を行うことによってグループ外の面要素との位置関係によらずグループの形状を一定とすることができる（例えば、図１５参照）。
【００８３】
（第３の実施形態）
第１の実施形態では、ユーザが面要素を１つずつ配置して多面体を作成するようにしていた。しかしながら、実際のモデリングにおいては、よく使われるプリミティブな形状が存在する。よく使われるようなプリミティブな形状を、複数の面要素からなるグループとして定義してメモリに記憶しておき、ユーザは面要素入力部７０１を介して、定義されたグループを選択して配置できるようにすれば、入力の負担が軽減する。なお、あらかじめ登録されたグループだけでなく、ユーザが作成したグループを登録して、後から利用可能とすることも好ましい。
【００８４】
定義済みのグループ形状は、任意のものであってよいが、例えば、図２２に示すような形状が考えられる。図２２（ａ）は、２つの面の組合せにより角を表現した形状である。図２２（ｂ）は、３つの面を組み合わせて平面上におく柱を表現した形状である。図２２（ｃ）は、５つの面を組み合わせて平面上におく直方体を表現したものである。図２２（ｄ）は、７つの面を組み合わせて平面上におく半円柱を表現した形状である。上記以外にも任意の種々の形状を、あらかじめ登録することができる。
【００８５】
このようにすれば、使用頻度が高い形状や作成が困難な形状を、ユーザは簡単に配置することができる。特に、図２２（ｄ）のように平面の組合せを用いれば、近似的な曲面を簡単に配置することもできる。
【００８６】
（変形例）
上記の説明では、面要素として平面を用いている。しかしながら、面要素として曲面を採用することも好ましい。曲面の例として、円筒面、球面、放物面などが挙げられるが、その他任意の形状の曲面を用いることもできる。面要素として曲面を採用する場合には、位置と、その位置における法線の向きと、曲面を特徴付けるパラメータを入力することで、面要素を特定する。曲面を特徴付けるパラメータは、円筒面や球面であれば曲率半径、放物面であれば焦点距離などである。
【符号の説明】
【００８７】
７０１  面要素入力部
７０２  面要素編集部
７０３  面要素記憶部
７０４  ３次元モデル決定部
７０５  画像生成部
【図１】
2014109935.tif 000003
【図２】
2014109935.tif 000004
【図３】
2014109935.tif 000005
【図４】
2014109935.tif 000006
【図５】
2014109935.tif 000007
【図６】
2014109935.tif 000008
【図７】
2014109935.tif 000009
【図８】
2014109935.tif 000010
【図９】
2014109935.tif 000011
【図１０】
2014109935.tif 000012
【図１１】
2014109935.tif 000013
【図１２】
2014109935.tif 000014
【図１３】
2014109935.tif 000015
【図１４】
2014109935.tif 000016
【図１５】
2014109935.tif 000017
【図１６】
2014109935.tif 000018
【図１７】
2014109935.tif 000019
【図１８】
2014109935.tif 000020
【図１９】
2014109935.tif 000021
【図２０】
2014109935.tif 000022
【図２１】
2014109935.tif 000023
【図２２】
2014109935.tif 000024
【図２３】
2014109935.tif 000025
【図２４】
2014109935.tif 000026
【図２５】
2014109935.tif 000027