(57)【特許請求の範囲】
【請求項１】
風のシミュレーション・システムであって、
シミュレーション空間内に、シミュレーションを行う対象であるオブジェクトの配置を行うオブジェクト配置手段と、
前記オブジェクトによる境界条件を、シミュレーション計算のために、前記シミュレーション空間全体を分割した広域計算用の格子及び配置されたオブジェクトの形状・配置状態に応じた詳細計算用の格子と対応つけて、境界条件マップを作成する境界条件マップ作成手段と、
作成した前記境界条件マップを用い、前記広域計算用の格子を用いて風のシミュレーション計算を行い、該シミュレーション計算の結果を基に、詳細計算用の格子を用いて風のシミュレーション計算を行う風シミュレーション計算手段と、
前記シミュレーション計算手段の結果により、風によるオブジェクトの変形計算を行う変形計算手段と、
変形されたオブジェクトを描画する描画手段と
を備えることを特徴とする風のシミュレーション・システム。
【請求項２】
請求項１に記載の風のシミュレーション・システムにおいて、
さらに、風の設定を行うための風設定手段を備え、
風上領域や風力を設定できることを特徴とする風のシミュレーション・システム。
【請求項３】
請求項２に記載の風のシミュレーション・システムにおいて、
前記風設定手段は、風力の時間変化も設定することができることを特徴とする風のシミュレーション・システム。
【請求項４】
請求項１〜３のいずれかに記載の風のシミュレーション・システムにおいて、
さらに、前記描画手段で描画された、変形されたオブジェクトにより環境条件マップを更新する環境条件マップ更新手段を備え、
更新した前記境界条件マップを用いて、前記風シミュレーション計算手段で風のシミュレーション計算を行うことを特徴とする風のシミュレーション・システム。
【請求項５】
請求項１〜４のいずれかに記載の風のシミュレーション・システムにおいて、
視点から遠くに配置されたオブジェクトに対する詳細計算用の格子として、粗い格子を使用することを特徴とする風のシミュレーション・システム。
【請求項６】
請求項１〜５のいずれかに記載の風のシミュレーション・システムにおいて、
前記オブジェクト配置手段は、樹木のオブジェクトを再帰処理により生成する樹木生成手段を含むことを特徴とする風のシミュレーション・システム。
【請求項７】
請求項１〜６のいずれかに記載の風のシミュレーション・システムの各手段をコンピュータ・システムに機能させるコンピュータ・プログラムを記録した記録媒体。
【請求項８】
請求項１〜６のいずれかに記載の風のシミュレーション・システムの各手段をコンピュータ・システムに機能させるコンピュータ・プログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、３次元グラフィックスのアニメーションに関し、特に、風に揺れる樹木等の風による動きのシミュレーション・システムに関する。
【０００２】
【従来の技術】
近年の計算機の高性能化によって、流体の物理シミュレーションがパソコンでも可能になってきている。そこで、コンピュータ・グラフィックスの分野においても、それらを利用した流体の動きのアニメーション作成手法がいくつか考案されている。例えば、煙、雲の流れを再現するための研究などがある。しかし、それらは流体そのものの動きだけを表現するものである。
【０００３】
【発明が解決しようとする課題】
本発明の目的は、流体の動きによって引き起こされる他の物体への影響に着目してシミュレートすることで、風の動きによって引き起こされる樹木等の変形を表現するアニメーションを生成することである。
【課題を解決するための手段】
上記目的を達成するために、本発明は、風のシミュレーション・システムであって、シミュレーション空間内に、シミュレーションを行う対象であるオブジェクトの配置を行うオブジェクト配置手段と、前記オブジェクトによる境界条件を、シミュレーション計算のために、前記シミュレーション空間全体を分割した広域計算用の格子及び配置されたオブジェクトの形状・配置状態に応じた詳細計算用の格子と対応つけて、境界条件マップを作成する境界条件マップ作成手段と、作成した前記境界条件マップを用い、前記広域計算用の格子を用いて風のシミュレーション計算を行い、該シミュレーション計算の結果を基に、詳細計算用の格子を用いて風のシミュレーション計算を行う風シミュレーション計算手段と、前記シミュレーション計算手段の結果により、風によるオブジェクトの変形計算を行う変形計算手段と、変形されたオブジェクトを描画する描画手段とを備えることを特徴とする風のシミュレーション・システムである。
さらに、前記描画手段で描画された、変形されたオブジェクトにより環境条件マップを更新する環境条件マップ更新手段を備え、更新した前記境界条件マップを用いて、前記風シミュレーション計算手段で風のシミュレーション計算を行うとよい。
さらに、風の設定を行うための風設定手段を備えることができ、風上領域や風力を設定することも可能である。この風設定手段は、風力の時間変化も設定することができる。
また、視点から遠くに配置されたオブジェクトに対する詳細計算用の格子として、粗い格子を使用することもできる。前記オブジェクト配置手段は、樹木のオブジェクトを再帰処理により生成する樹木生成手段を含むこともできる。
これらの風のシミュレーション・システムの各手段をコンピュータ・システムに機能させることができるコンピュータ・プログラムやコンピュータ・プログラムを記録した記録媒体も本発明である。
【０００４】
【発明の実施の形態】
本発明の実施形態を、図面を参照して詳細に説明する。
＜風の物理シミュレーション空間＞
流体が運動することによって、新たに物質が生成されたり消滅したりすることはない。このような、流体が途切れることなく、連続的に流れることを表す連続の式において、定常流れで、非圧縮性流体の場合には密度ρは一定であるので、空気の流れである風で扱う連続の式は、ｘ，ｙ，ｚ方向それぞれの流速をｕ，ｖ，ｗとすると、次式となる。
【数１】
0003958527.tif 000002
また、風の流れ場全体の様子を詳しく求めるには、流体粒子の運動に関する方程式を解けばよい。そこで、流体粒子の持つ６つの物理量、すなわち３方向の速度成分ｕ，ｖ，ｗ、密度ρ、圧力ｐ、および温度Ｔを用いて方程式をたて、それを解くことにより風の様子を求めることができる。
また、水や空気のようなもっとも一般的な流体でも、その運動が音速に比べて速いか遅いか、時間とともに変化するかしないかなどの条件により方程式が異なる。風は音速と比べて遅いため、圧縮性の影響を無視することができるので、本論文では風を非圧縮性流体として扱う。
温度一定の非圧縮性流体では密度ρは一定である。したがって、状態方程式やエネルギー保存の法則とは無関係に風の運動を求めることができる。つまり、風は流体粒子のもつ３つの速度成分と、圧力の４つの物理量で決定される。
音速よりも遅い流れでは非圧縮性流体におけるＮａｖｉｅｒ−Ｓｔｏｋｅｓの方程式が用いられる。その方程式とは、ｘ，ｙ，ｚ方向それぞれの流速をｕ，ｖ，ｗ、流体の渦度をξ，η，ζとすると、次のようになる。
【数２】
0003958527.tif 000003
Ｒｅ：レイノルズ数
【０００５】
（差分方程式）
さて、上述のように、粘性流体の解析に用いられる方程式は、連続の式とＮａｖｉｅｒ−Ｓｔｏｋｅｓの方程式である。しかし、Ｎａｖｉｅｒ−Ｓｔｏｋｅｓの式は非線形方程式であるので、厳密解は、極めて簡単な条件の流れに対してのみ得られる。
偏微分方程式は、離散化することによって数値的に求めることができる。以下に、代表的な離散化手法の１つである差分法を用いて離散化する方法について述べる。本発明では、上式から、差分法を用いて数値解を求めることで、風の物理シミュレーションを行う。
差分法は、流れ場を有限個の格子に分割し、流れ場の連続的な物理量を格子点の物理量で代表させて、流れ場の解を求めるものである。流れ場のｘ，ｙ，ｚ座標に配置された格子点をｉ，ｊ，ｋとして、渦度ζ（ｘｙ方向、ｘｚ方向）と流線方向の流れの強さを表す流れ関数φを求める差分方程式は、次式となる。
【数３】
0003958527.tif 000004
「流れの情報は主に上流側から来る」という考えに基づき、風上差分と呼ばれる手法を用いて、Ｎａｖｉｅｒ−Ｓｔｏｋｅｓの方程式を差分化すると、流れ関数φの差分式を変形でき、次式となる。
【数４】
0003958527.tif 000005
【０００６】
（周囲境界条件）
差分法を用いる際には、空間を有限の格子に分割するために計算領域の端に境界が生じる。そのため、この部分において通常の計算とは違う特別な処理を行う必要がある。
そこで、本発明では次のような周囲境界条件を使用した。
▲１▼流入領域（流速ｖで流入）
平行流の条件
【数５】
0003958527.tif 000006
より
【数６】
0003958527.tif 000007
▲２▼上下前後境界
▲１▼と同様の条件より、
【数７】
0003958527.tif 000008
【０００７】
＜風の運動シミュレーションの手順＞
上述の流体の運動方程式及びその数値解法をもとに、風の運動シミュレーションを行う際の手順について述べる。
（ステップ１：格子サイズの決定）
シミュレーションを行う前段階として、計算格子のサイズを決定する必要がある。もちろん、格子サイズはモデルに対して十分に大きくとらなければならないが、サイズが大きくなればなるほど、計算時間やメモリの使用量が増大する。
本発明においては、シミュレーション対象となる樹木、地形などのサイズのオーダーに合わせて、この格子サイズを決定する。なぜなら、対象となるモデルの形状を十分に表現できる程度の格子点を設定することが重要だからである。
よって、格子サイズの決定法は対象となるモデルごとに後述するが、例えば樹木であれば、その葉１つ１つを格子点上に配置し、境界条件として機能する程度のオーダーで格子サイズを決定する。
（ステップ２：風上領域の値の設定）
差分法による計算を行う際に、最初に設定されるのが風上領域の値の設定である。これは、計算格子に対して外部から与えられる唯一の値であり、この値がシミュレーション空間を流れる風の強さを決定する。
（ステップ３：差分法による計算）
シミュレーションのメインとなる部分である。ここでは上述の式を用い、各格子点における時間Δｔ後の風の状態を求める。
（ステップ４：外部境界条件）
次の繰り返し計算に備えて、上述に示した外部境界条件を整える。
（ステップ５：繰り返し）
次の時刻における風の動きを求めるために、ステップ２に戻る。
以上５つのステップによって、風のシミュレーションが行われる。
【０００８】
＜風に揺れる樹木＞
（樹木形状）
風に揺れる樹木は、風の影響を受けて動く代表的な物体である。樹木の動きから風の強さや方向を知ることができ、また落ち葉や花びらなどは季節を感じる要因の１つである。そのような樹木のモデル化について説明する。また、上述の風のシミュレーション・モデルと生成した樹木モデルとの関わりについても述べる。
樹木モデル作成の第一段階として、形状の生成を行う。本実施形態では、樹木の構造の基本単位を枝とし、幹に相当する１つの大きな枝から再帰によって子となる枝を増やし、末端に葉を配置することで１つの樹木を構成する。
（枝の構造）
図１（ａ）のように、枝１１０の構造は５つの節１１１〜１１５を持つ円柱からなっている。各節ごとに角度の変化をつけることができ、図１（ｂ）のようにまっすぐな枝だけでなく、曲がった枝１２０を表現することができる。
各枝の長さと太さは可変であり、この値を変化させることで、太い幹から細い末端の枝に分かれていく際にも、同様の構造で枝を再現できる。
（枝の生成法）
図１（図２（ａ）参照）に示した枝を用いて、樹木の形状を生成する。その際、図２（ｂ）のように、枝を構成する節に対して、１つの枝から最大８本の子の枝を生成し、乱数によって角度に変化をつける。
また、より本物の樹木の形状に近い形にするために子の枝を生成する際に、下２ブロックに関しては枝の生成を行わないという制限を設ける。このような方法をとることで、実際に生成される形状がどのように変化するかを、図３に示す。図３（ａ）は制限無しで生成したもので、図３（ｂ）は下２ブロックに関しては枝の生成を行わないという制限を設けて生成したものである。
図３（ａ）に示した樹木は、根元から枝が生成されているため、あたかも木の上部だけを切り取ったような状態になっている。それに対して、図３（ｂ）に示した制限を設けた樹木はきちんとした形状になっているのがわかる。
（葉の生成）
葉の生成は、図４に示すように、枝の生成と同様に、枝を構成する節に葉をつけることで行われる。本発明では、詳細な形状を表示することが目的ではないので、葉の形状には、楕円を用いる。
（再帰の深さ）
樹木生成を行う際の再帰の深さを変えることによって、樹木形状全体がどのように変化するかを、図５に示す。
図５に示すように、深さ４ならば十分に樹木らしい形状となっている。本発明では、データ量を抑え、アニメーションを高速に生成するために、この深さ４の樹木を用いることとするが、再帰構造を用いているので、容易に形状をより複雑にすることもできる。
【０００９】
（風に対する樹木の物理特性）
上述の処理で、樹木形状の生成を行ったが、本発明の目的は風による動きを生成することであるので、樹木の風に対する物理特性を定義する必要がある。
風の状態は流線方向の風の強さとｘ，ｙ，ｚ方向の回転力で表されるので、これらの力を示したものが図６である。図６は２次元的に示したものであるが、風力Ｆｗ、回転角θｗが得られた場合、枝の配置角度がθｂ、抵抗値Ｒとすると、次の時刻における枝の角度は、以下の式で求められる。
【数８】
0003958527.tif 000009
このとき与えられる抵抗値Ｒは、樹木の特性を考慮して、幹のような太いものについては大きく、末端の枝や葉は小さく設定する。
また、末端の葉にかかった力は、その葉を持つ枝に伝達され、逆に、その枝からも親となる枝へと伝達されるようにする。
（落ち葉）
樹木に対する風の効果をより印象的に見せるために、落ち葉の効果を付加する。
樹木の葉は、強い風によって、または四季の移り変わりによって枝から離れ、落ち葉となる。また、樹木の種類によっては、四季の変化では、葉を落とさないものもある。そこで、樹木モデルに落葉のフラグを設定する。
また、葉が落ち葉に変化する確率（落葉率）を次のように設定する。
【数９】
落葉率  ＝  基本落下率  ×  風力
上式で、基本落下率はその樹木に固有のものであり、再現するシーンの時期や種類を考慮して与える。落葉率は、基本落下率に風力を掛けることで、強風によって葉が飛ばされるという現象を再現するためのものである。
枝から切り離された落ち葉は、遠くまで吹き飛ばされる。そのため、ここで述べるような樹木周りの計算格子では対応しきれない。そこで、シミュレーション空間全体の風の流れを求める必要があるが、これに関しては後で述べる。また、地面に落下した葉に関しては移動に抵抗を持たせる。図７に、落ち葉の様子を示す。
【００１０】
＜境界条件マップ＞
ここでは、アニメーション生成を行うために物理シミュレーションと形状モデルとの関係を表す境界条件マップを定義する。また、風の階層的計算やＬＯＤによる高速化手法についても述べる。
まず、物理シミュレーションと樹木モデルの関係を表すための境界条件マップについて述べる。
風の物理シミュレーションを行う際に、ある物体周りの風の動きを求める場合、その物体によって風が遮られる部分が生じる。したがって、その物体の特性を考慮した境界条件を設ける必要がある。この境界条件を計算格子に適用することで物体の周囲の風の流れを計算することができる。
この境界条件の設定次第で風の動きも変化してしまうので、この値はシミュレーション全体に大きな影響を及ぼす。つまり、境界条件マップとは、仮想空間上の物体と計算格子上の場所を関連付けるための情報のことである。これを用いることで、形状の変化を計算格子に適用し、また、結果を形状にフィードバックさせることができる。
（境界条件マップの生成）
樹木の境界条件マップは、図８に示すのように生成される。
図８（ａ）の計算格子において、図８（ｂ）に示す樹木の形状のように、塗りつぶされた部分（図８（ｃ）参照）が、境界としてマッピングされた部分である。樹木の周囲の風の流れを求めるためには、樹木形状に対して十分な大きさの計算格子を用意する必要がある。
【００１１】
（境界条件問題）
図８（ｃ）に示すような境界条件マップを活用し、風の流れを計算する際に問題となるのが、その境界条件をどのような方法で決定するかである。そこで、風に対する樹木の境界条件を考える必要がある。
まず幹については、これは完全に風を通さない物体であり、粘性流体に関してはすべりなしの条件が成り立つので、物体表面と接触する部分の流体の速度はゼロとなる。
それに対して、葉の部分の境界条件は複雑である。葉は幹などと違って、とても軽く、小さいものである。それゆえ、幹のように風を完全に遮断することなく、一部を通過させるであろうことは容易に想像がつく。それゆえ、葉に対しては幹とは異なった境界条件を用いる必要がある。そこで、葉の周りの風の動きを観察するために、葉の形状の周りに詳細な計算格子を設け、上述の数値計算の手法を用いて風下においてどれだけの風が通過しているかを調べた。以下にその結果を図９のグラフで示す。図９に示したグラフは、横軸が時間、縦軸が（風下の風力の平均値）／（風上の風力の平均値）である。このグラフを見ると、０．５２を中心に値が分布している。このことから、葉形状によって生成される境界条件を
【数１０】
風上の風速＊０．５２  ＝  風上の風速
と定めた。
（樹木に適した計算格子）
境界条件マップを利用することで、樹木と計算格子の関係を示すことができる。そこで、上で述べた手法で生成した樹木に対して用いる計算格子を次のように定義する。
本実施形態で用いている樹木は、約４２００枚の葉から構成されている。その位置は生成時の乱数の影響で一定ではないが、枝の長さなどからある程度の距離内に収まることがわかる。そこで、樹木を完全に覆うような正方形の空間を考え、それを分割することで境界条件マップと対応させる。分割数は葉の配置状態を正確に反映できるように細かくとる必要がある。そこで、分割数に対する葉の作り出す境界の数を調べた。その結果を計算格子の分割数と葉の配置数である次の表に示す。
【表１】
0003958527.tif 000010
この結果から、分割数４９＊４９＊４９ならば、十分に葉の配置状態を引き出すことができることがわかる。また、計算格子のサイズ、境界条件マップのサイズも同様となる。
【００１２】
＜格子サイズ＞
アニメーション生成の対象となる空間に対して、どのようなサイズの計算格子を割り当てればよいかを考える。ここで考慮すべき要素は、地形の複雑さ、木の本数、落ち葉の枚数などがある。もちろん、格子は細かいほどよいが、そこまで厳密な解を求める必要はなく、むしろ、高速に解を求めることで、動きの連続性が理解できるようになる。しかし、計算結果として意味のある解を求めるためには、ある程度の大きさの計算格子を用いる必要がある。そこで、地形の複雑さ、樹木の数などを考慮し、それぞれの形状、配置状態が十分に反映されるような大きさの格子を用いる。
（階層的な計算手法）
アニメーション生成を行う空間は、樹木の詳細な形状に対して数十倍の大きさがある。よって、上で述べた樹木周辺の詳細な計算格子を用いて空間全体を計算することは、データ量的にも、計算量的にも無駄が多い。そこで、空間全体を計算する格子は、上で述べたように、地形などの状態を反映できる程度の格子を用いて、個々の樹木周りに関しては、より詳細な計算格子を用いることとする。そのために、風の階層的な計算を行う。この風の階層的な計算を、図１０を用いて説明する。これは、図１０に示すように、広域計算用には、荒い格子の計算格子を用いて空間全体に対して計算している。樹木の周りでは詳細な計算格子を用意する。そして、空間全体の計算格子の一部の値を樹木周りの詳細な計算格子へと伝達し、そこで、ふたたび樹木周りに関して再計算を行うという手法を用いる。これによって、空間全体に詳細な格子を用いずに、詳細な動きを求めることが可能となる。
（Level of Detail（ＬＯＤ）による高速化）
アニメーション生成を行う際に、ＬＯＤによる高速化を行う。本発明ではＬＯＤによって樹木の形状を簡略化するだけでなく、計算格子の精度を落すことによって高速化を行う。
さて、遠い樹木は詳細な形状が見えなくなるだけでなく、詳細な動きも見ることができない。そこで、計算格子の精度を落し計算格子全体のサイズを小さくすることで計算の高速化が可能となる。樹木の計算格子は、表１において定義した４９＊４９＊４９の格子を用いているが、樹木の視点からの距離が詳細な動きが見えなくなるような値を超えたときには、計算格子のサイズを２５＊２５＊２５に変更する。これにより、計算量は１／８に減少する。
【００１３】
＜アニメーション生成システム＞
上述では、風のシミュレーションを行うための差分計算の基礎的な式、風のシミュレーションによるアニメーションの代表的なオブジェクトである樹木の生成手法、計算のための格子や境界条件マップについて説明した。これらを用いて、風のシミュレーションによるアニメーションを作成することが可能である。このためのシミュレーション・システム（アニメーション作成システム）を以下に説明する。
（アニメーション生成の手順）
アニメーション生成の手順を、図１１のフローチャートを用いて説明する。
まず、シミュレーションを行う前段階として、ユーザーが各オブジェクトの配置を行う（Ｓ２０２）。各オブジェクトとしては、上述の樹木の外、建物、地形等がある。これらの配置については後述する。次に風の発生についての設定を行う（Ｓ２０４）。これについても後述する。
これらの風のシミュレーションを行うために必要な設定入力が終了すると、図８に示したように、各オブジェクトに関する境界条件マップを生成し、風の物理シミュレーションの準備を行う（Ｓ２０６）。そして、アニメーションを行う空間全体の風の流れを求めるために、図１０に示すように、広域計算用の格子において、上述の差分方程式を用いて風の物理シミュレーションを行う（Ｓ２０８）とともに、広域計算より得られた結果をもとに、樹木周辺に関しても詳細な格子を用いて風の物理シミュレーションを行う（Ｓ２１０）。
物理シミュレーションの計算結果により、計算格子から、樹木の各枝と、葉に対してかかる風力をフィードバックして、変形を行う（Ｓ２１２）。この変形をもとに、オブジェクトの描画を行う（Ｓ２１４）。まだ、終了しない場合（Ｓ２１６でＮＯ）、樹木の変形結果を反映させるために、境界条件マップを更新する（Ｓ２１８）。
【００１４】
＜オブジェクトの配置等＞
（風を遮蔽するオブジェクト）
風のアニメーションを作成する際には、建物、地形、車、人などの、風に影響を及ぼすオブジェクトを配置することにより、より効果的なシーンを作り出すことができる。
本発明では、風を遮蔽するオブジェクトとして建物と地形を考える。この２つのオブジェクトは、風の進路を妨げるため、風の流れに大きな影響を及ぼす。また、樹木とは異なり風の力によって変形することがないので、物理特性などを考慮する必要もない。
（建物モデル）
本発明では、建物の形状を直方体で表す。この直方体を、空間全体のサイズと比較し、境界条件マップを作成すればよい。その境界条件は、すべりなしの条件より、建物表面での流速がゼロになるようにすればよい。
（地形モデル）
地形モデルは風へ影響を及ぼすだけでなく、建物、樹木、落ち葉に高さの変化をつけるためにも必要である。そのために、２００＊２００の格子点をもつ平面を考える。それぞれの点に対して高さの値を設定することで、詳細な地形を表せるようにした。また、境界条件に関しては、これらの格子点の高さから境界条件マップを生成し、建物と同様の境界条件を用いる。
＜配置等のユーザー・インターフェース＞
上述において、本システムで用いるオブジェクト等について説明した。ここでは、それらを利用し、実際のアニメーションを生成する際に使用するユーザー・インターフェースについて述べる。
（樹木、建物の配置）
樹木、建物の配置は、「樹木、建物配置画面」で行われ、その配置状態が表示されるとともに、「アニメーション生成画面」でその結果を確認することができる。
「樹木、建物配置画面」では、樹木を配置すると、「樹木形状確認画面」に詳細な形状が表示され、樹木の色や、落ち葉の処理を行うかどうかを設定できる。樹木の色の設定を行うことで、紅葉、桜の木などの表現も可能である。また、「樹木、建物配置画面」において、建物を配置すると、建物の大きさと、テクスチャを指定できる。
（地形の編集）
地形の編集は地形編集画面で行われる。地形は２００＊２００の格子点からできているので、１つ１つの高さを設定することは、非常に煩わしい作業である。そこで、マウスを用いて、高くしたい部分を指定する。その際に、周囲の高さを上げることで、より自然な地形を作り出せるようする。地形編集画面は標高が高くなるにつれて、その部分の色が緑→黄色→赤と変化するので、見た目で地形の様子を理解しやすくする。
図１２に、「アニメーション生成画面」（シミュレーション空間）３００内に対して、建物３１０，３２０、地形モデル３３０、樹木３４０，３５０を配置した状態を示す。
【００１５】
（風の編集）
図１３に示すように、「風の編集画面」４００は３つの部分からなっている。
ユーザーが風力の情報を入力する際に、各時間ステップごとの風力を入力するのは非常に手間のかかる作業である。そこで、「風の編集画面」４００では、「風力設定部」４３０において、時間ステップよりも大きな刻み幅で値を設定し、間を補間することで、負担を軽減できるようにしている。また、数値ではなく、マウスによる視覚的な操作によって風力を入力することで、風力値と樹木の運動に関する詳細な関係を知らなくとも風の設定を行うようにする。さらに、異常な強風の入力を無意識のうちに抑えることもできるようにする。
ユーザーから取得する情報と、その補間法について述べる。まず、入力情報であるが、ユーザーからは１０ステップに１つの割合で風力を取得する。入力情報は図１３の「風力設定部」４３０で、四角の点で表している。これは、動画を生成した際に急激な風の変化を感じ、また、緩やかな変化を作成する際にも煩わしさを感じないように考慮し、このような間隔を設定している。この各入力点をＢ−Ｓｐｌｉｎｅ補間を用いて補間して、図１３の「風力設定部」４３０に示す曲線を得ている。
次に、風の発生位置の設定について述べる。風を設定する際には、その位置もシーンを決定する重要な要素となる。そこで、風上部分の平面に関して、風の発生する位置４１２を、図１３の「風の編集画面」４００の「風の範囲入力部」４１０において平面として指定できる。図１３の色のついている部分が、風の発生する位置である。この部分に、「風力設定部」４３０で入力された風力が割り当てられる。
上述で説明した風力、位置の設定だけでは、単純な風しか作り出せない。そこで、風の種類を６つに増やし、各上述の風の発生する位置で指定した範囲ごとに異なった強さの風が吹くように、「風の種類設定部」４２０において設定できるようにしている。これは、風の発生する位置に対して「風の種類設定部」４２０から選択した異なった色を付与することにより、複雑な風の動きを与えることができる。
【００１６】
＜スクリーン・キャプチャー＞
本発明の手法を用いてアニメーション生成を行った場合、数本の樹木であればパソコンでもリアルタイムにシーンを生成することが可能である。しかし、数十本の樹木が含まれるようなシーンを再現する場合、１フレームを生成するのに数十秒かかってしまう。そこで、各フレームの画像をキャプチャーし、ビットマップ形式で保存する。これにより、市販のムービー製作ツールを用いることで、目的のシーンを生成することができる。
【００１７】
【実施例】
図１４に生成されたアニメーションの例を示す。図１４に示した各シーンでは、樹木の葉が風に飛ばされている様子が表現されている。また、図１５は、樹木の動きを示したものである。
枝の持つ風力に対する抵抗値を変えたときに、形状にどのような変化が現れるかを図１６および図１７に示す。図１６（ａ）で示した木の抵抗値を１／２にした木を図１６（ｂ）〜（ｄ）に示す。図１６（ａ）に示した樹木の抵抗値を３倍にした木を図１７（ｂ）〜（ｄ）に示す。
図１６（ｂ）〜（ｄ）では抵抗値が小さすぎるため、現実の樹木では折れてしまうくらい枝がしなっている。これに対して図１７（ｂ）〜（ｄ）では、同じ強さの風を受けているにもかかわらず、枝がほとんどしなっていない。これらの結果から、図１５で示されているような、適度なしなりを見せる木だけでなく、非常に柔らかい木から、堅いものまで表現できる。
【００１８】
＜ＬＯＤによる高速化＞
ＬＯＤによる高速化を示すために、図１８に示すように６本の樹木を徐々に遠ざけて処理を行った。図１８（ａ）には、近距離に６本配置している様子を示す。図１８（ｂ）には、近距離に３本、遠距離３本配置している様子を示す。図１８（ｃ）には遠距離に６本配置している様子を示す。
これらの図の様に配置した樹木に対して、風のシミュレーション処理を行った結果を表２に示す。
【表２】
ＬＯＤとフレームレート
0003958527.tif 000011
この結果から、ＬＯＤによる風の計算の簡略化によって、フレームレートが向上していることがわかる。
＜建物の効果＞
建物が風を遮蔽する様子を図１９に示す。図１９（ａ）〜図１９（ｃ）が建物無し、図１９（ｄ）〜（ｆ）が建物ありを示している。
図１９に示すように建物のあるなしでは、明らかに樹木の揺れに差が出ている。これは、建物が風を遮蔽する物体として働いているからである。また、図１９からは読み取りにくいが建物のある樹木においても、風が迂回して到達している個所があるので、アニメーション上では、その様子が確認できる。
【００１９】
＜他の実施形態＞
本実施形態では、物理シミュレーションと形状モデルとの関係を定義する際に、樹木、建物、地形の３種類の形状についてのみ扱ったが、次の様にしてもよい。
（１）本発明では樹木の特性だけに着目しているが、他の物体に関しても応用が可能である。例えば、衣服、煙など風によって影響を受けるものは他にも多々ある。さらに、川の流れや、海の波なども同じ流体であるので、これらについても本発明の手法を用いることができる。よって、本発明の手法により流体の及ぼす力を用いたアニメーションを生成できるものは非常に多いといえる。
（２）再帰構造を用いて生成された樹木は、再帰の深さをかえることで容易に形状の複雑さを変えることができる。その際にも本発明で用いた手法によって樹木の動きを生成することができる。よって、計算機の性能によって、現実の樹木と同数の枝や、葉をもつ樹木モデルを構成し、その動きを再現することも可能である。
（３）本発明では風を受ける物体について、その力学特性を詳細には求めなかったが、例えば布のシミュレーションのように、特定の物体の内部特性に関する従来からの研究は多数ある。そこで、それらの手法を本発明と融合し、より現実に近い動きを生成することも可能になる。
本発明は、スタンド・アローンのコンピュータ・システムばかりではなく、複数のシステムから構成される例えばクライアント・サーバ・システム等に適用してもよい。
本発明に関するプログラムを格納した記憶媒体から、プログラムをシステムで読み出して実行することにより、本発明の構成を実現することができる。この記録媒体には、フロッピー・ディスク、ＣＤ−ＲＯＭ、磁気テープ、ＲＯＭカセット等がある。また、本発明に関するプログラムを電気通信回線（例えばインターネット等）を介して伝送し、これを用いて本システムを構築することもできる。
【００２０】
【発明の効果】
上述のように本発明では、物理シミュレーションに基づく新規な風のアニメーション作成手法を用いて、アニメーション生成のためのシステムを作成した。
そして、次に述べるような成果を得た。
（１）境界条件マップを用いることで、樹木などの形状モデルと風の物理シミュレーション空間の関連を定義することができる。それによって、対象となる空間の風の流れを求め、樹木に及ぼす力を計算し、風の影響による樹木の変形の様子をシミュレーションすることができた。
（２）階層的な風の計算、ＬＯＤによる高速化などの手法によってアニメーション作成の時間的な負担を軽減することができる。これらにより、本発明では効率的な風の影響による物体の動きを表現するアニメーション作成の手法を得ることができた。
（３）再帰による樹木の生成を行い、複雑な樹木形状の自動生成を可能にした。また、落ち葉の概念を導入することにより、樹木と風の関係をより明確に表現できるようになった。
（４）地形、建物モデルは風の流れに変化をもたらし、樹木の動きを変えるだけでなく、落ち葉の振る舞いなどにも影響を与え、より効果的なシーンを作成することを可能にした。
（５）各種ユーザー・インターフェースを用意することで、ユーザーが手軽に、かつ思い通りのシーンを生成することができた。
以上のことから、本発明は風の物理シミュレーションと各種形状モデルとの関係を境界条件マップという方法を用いて定義することによって、風の流れを表現するアニメーションを作成することができた。
【図面の簡単な説明】
【図１】樹木生成における枝の構造を示す図である。
【図２】樹木生成における枝の生成を示す図である。
【図３】枝生成の制限を示す図である。
【図４】樹木生成における葉の生成を示す図である。
【図５】再帰処理の深さによる樹木生成を示す図である。
【図６】樹木の風に対する物理特性を示す図である。
【図７】落ち葉の様子を示す図である。
【図８】樹木の境界条件マップの生成を示す図である。
【図９】葉に対する風力比の変化を示す図である。
【図１０】広域計算用や詳細計算用の計算格子を示す図である。
【図１１】アニメーション作成処理を示すフローチャートである。
【図１２】地形、建物モデルを導入した図である。
【図１３】風の編集画面を示す図である。
【図１４】落ち葉のアニメーションを示す図である。
【図１５】樹木の揺れを示すアニメーションを示す図である。
【図１６】樹木の風に対する抵抗値を減らした場合を示す図である。
【図１７】樹木の風に対する抵抗値を増やした場合を示す図である。
【図１８】ＬＯＤによる高速化を示すための図である。
【図１９】建物の効果を示す図である。
【図１】
0003958527.tif 000012
【図２】
0003958527.tif 000013
【図３】
0003958527.tif 000014
【図４】
0003958527.tif 000015
【図５】
0003958527.tif 000016
【図６】
0003958527.tif 000017
【図７】
0003958527.tif 000018
【図８】
0003958527.tif 000019
【図９】
0003958527.tif 000020
【図１０】
0003958527.tif 000021
【図１１】
0003958527.tif 000022
【図１２】
0003958527.tif 000023
【図１３】
0003958527.tif 000024
【図１４】
0003958527.tif 000025
【図１５】
0003958527.tif 000026
【図１６】
0003958527.tif 000027
【図１７】
0003958527.tif 000028
【図１８】
0003958527.tif 000029
【図１９】
0003958527.tif 000030