ペンインターフェースを用いた群集アニメーションの作成
荻原佑輔†

尾下真樹‡

†九州工業大学大学院 情報工学研究科 情報科学専攻‡九州工業大学 情報工学研究院 システム創成情報工学研究系〒820-8502 福岡県飯塚市川津 680-4
E-mail:ogiwara@cg.ces.kyutech.ac.jp，oshita@ces.kyutech.ac.jp

近年の映画やテレビゲームでは，数千人単位の大規模な戦闘シーンや街中のシーンにおいて，群集モデルを用いて生成された群集アニメーションが利用されている．群集モデルとは，一定のルールによってエージェントを独立に操作する手法である．しかし，群集モデルを用いてアニメーションを生成するためには，エージェントの移動速度，他のエージェントとの距離といった群集パラメタを手作業で設定する必要があり，利用者の望むようなアニメーションの生成には手間がかかる問題がある．そこで，本研究ではマウスやペンタブレットを用いて，利用者が数本の軌道を入力するだけで,移動経路，移動速度，エージェント同士の標準距離，距離の補正量などの群集パラメタを自動的に決定し，群集アニメーションを生成する手法を開発した．

Pen-based Interface for Crowd Animation
Yusuke OGIWARA and Masaki OSHITA
Department of Systems Innovation and Informatics, Kyushu Institute of Technology
680-4 Kawazu, Iizuka-Shi, Fukuoka, 820-8502, JapanE-mail:ogiwara@cg.ces.kyutech.ac.jp，oshita@ces.kyutech.ac.jp

Recently, crowd animation based on an agent model has been used for making a scene oflarge-scale battles and a scene in a town for movies and video games. Agent model is a method
to operate each agent independently based on specific rules. In order to use an agent model,
however, a user should specify crowd parameters such as path, velocity and distance manually.
It is difficult for a user to specify appropriate for generating an animation that the user wants.
In this paper, we propose a technique to set crowd parameters such as path, velocity, standard
distance among agents and variation of distance automatically based on few trajectories thatare given by a user using a mouse or a pen-tablet.

1. はじめに
近年，群集アニメーションは映画やテレビゲームで用いられている．例えば，映画「ロード・オブ・ザ・リング」では，大規模な戦闘シーンでエキストラの代わりに CG で作られたキャラクタを使用している．群集アニメーションは市販のソフトウェアや，ユーザが独自開発したシステムを用いて作成されている．しかし，これらのシステムを用いて群集アニメーションを作成するためには，ユーザは群集の初期位置，移動軌道，移動速度，キャラクタ同士の間隔など様々なパラメタを手動で設定する必要がある．これは非直感的で非常に手間がかかる作業である．そこで，少ない手間で直感的にパラメタを設定できるインターフェースが求められている．
本研究は，ペンインターフェースを用いて群集アニメーションを直感的に作成できるシス-1-テムの開発を目的としている．
ユーザは，マウスやペンタブレットのような入力機器を用いて，群集の移動経路のサンプルになるような軌道を数本入力する．システムは入力された軌道を基にして群集モデルのパラメタを自動的に計算する（図 1（a））．計算された群集パラメタを用いて，エージェントモデルによる群集シミュレーションを行うことで，群集アニメーションを生成する（図 1（b））．
システムは，入力された軌道から，目標経路，移動速度，エージェント同士の標準距離，距離の補正量の 4 つの群集パラメタを計算する．目
標経路は，エージェントが移動する上での大まかな経路である．ただし，必ずしもエージェン
トは目標経路の上を移動するものではない．軌
道を入力する速度に応じて群集の移動速度を決定する．また，入力された複数の軌道間の幅からエージェント同士の標準距離を決定する．

さらに，入力軌道のなめらかさでエージェント同士の標準距離に補正を与える．このようにユーザは軌道の入力に応じて，エージェントごとに独立したパラメタを決定する．群集パラメタ
は,全てエージェントの位置で変化する関数である．移動速度は全エージェントで共通で，残りのパラメタはエージェントごとに異なる値をとる．
ユーザが入力する軌道は，主線と補助線（図2）の 2 種類である．主線は群集パラメタの目標経路と移動速度を決定する 1 本だけの軌道である．補助線は群集の広がりとばらつきを決定する複数本の軌道である．補助線は 1 本以上入力することができる．基本的には，主線を挟む形で 2 本以上の補助線を入力することを想定している．たとえ，補助線が 1 本だとしても，群集パラメタを求めることは可能である．しかし，群集アニメーションの作りやすさを考慮すると，2 本以上が好ましい．例えば，軌道の幅が広いところでは群集は広がって移動し（図 3（a），（b）），狭いところでは狭くなって移動する（図 3（c），（d））．主線を素早く入力したところでは群集は素早く移動し，ゆっくり入力したところではゆっくり移動する．また，補助線をなめらかに入力するとばらつきの小さい群集になる（図 3（a），（c））．ばらつきが小さいと，エージェント同士の距離はほぼ同じ値になる．なめらかでない補助線を入力すると，エージェント同士の距離がばらついた群集になる（図 3（b），（d））．

主線

補助線

図 2：入力軌道

入力(a) 幅が広くまとまった群集(b) 幅が広くばらついた群集(c) 幅が狭くまとまった群集(d) 幅が狭くばらついた群集

図 3：入力軌道による群集の違い

パラメタの自動生成

2. 関連研究エージェント・モデル[1]は，群集アニメーション生成手法の中でも最も一般的な手法である．この手法は，一定のルールに従って各エージェントを独立に操作する．ルールの例として，リーダーに追従する，他のエージェントと一定の距離を維持するといったものがある．この研究[1]では，目標軌道に沿って移動するようなルールや，移動経路の特定の位置でエージェント同士の距離を変化させるルールは使われていなかった．本研究の群集モデルでは，これらのルールも取り入れている．
群集アニメーションのインターフェースに関する研究も行われている．Ulicny ら[2]は，ブラシ型のインターフェースを用いて，群集の一部もしくは全体に，移動の目標位置，移動速度，注視方向などのパラメタを用意に設定できるインターフェースを提案した．彼らの研究は，任意のエージェントへのパラメタ設定のしやすさに重点を置いており，群集の移動軌道は細かく設定できず，パラメタの値も手動で指定する必要がある．一方，本研究では，群集の移動に重点を置いており，目標経路や移動速度など

群集モデル
ペンインターフェースからの軌道パラメタ(a)入力からパラメタを計算
出力

群集モデル
パラメタ

群集アニメーション(b)パラメタからアニメーションを出力
図 1：システムの入出力

2

の移動に関連するパラメタを容易に設定できる．
Kwon ら[3]は，既存の群集の移動軌道を簡単なマウス操作によって編集することで，新しいシーンに適用する手法を提案した．この研究[3]では，軌道を生成するために，元となる群集の軌道をあらかじめ用意する必要がある．一方，本研究では，ユーザが入力した軌道に基づいて軌道を生成するため，元となる軌道は必要ない．
Karamouzas ら[4]は，1 本の軌道を，テクスチャの生成で用いられる Parlin ノイズを用いて変化させ，移動軌道を生成する手法を提案した．この研究では，Parlin ノイズの係数をユーザが手動で指定する必要がある．一方，本研究では，生成した目標経路にノイズを与えてエージェントの移動に変化をつけることはできないが，エージェントの衝突回避等の外乱によって，同等の効果を得ることができる．
実在の人間の動作からルールを学習し，群集アニメーションを生成する研究も行われている．Couty ら[5]，Lee ら[6]，Lerner ら[7]は，動画から人間の移動軌道を得ることで，群集の歩行動作の動作ルールを抽出し，群集アニメーションを生成する．これらの研究では，人ごみの中をぶつからずに移動，門の間を並んで通り抜けることが可能となっている．また，実際のデータを利用しているため，手間はかかるが自然な動きを生成できる．本研究での入力軌道を，人間の移動軌道としてルールを抽出すれば，より自然な群集の移動を実現できると考える．
3. 群集パラメタ
本手法で求める群集パラメタは，目標経路
P j {p ′j ,1 , p ′j , 2 ,..., p ′j , K }，移動速度 v k ，エージェン
ト同士の標準距離 sk ，距離の補正量 e j ,k により表せる ． p′k は 3 次元のベク トルである．
j{1,2,..., M }は，エージェントの番号を表し，Mはエージェントの総数を表わす．k {1,2,..., K1}は，軌道の点の番号を表す．K i は軌道 i に含まれる点の数である．
目標経路 P j は，エージェントごとに異なる経路であり，エージェントが移動する際に目標位置とする点の集まりである．エージェントは目標経路上の点に近づく力の影響を受けて移動する．このパラメタは，ユーザが入力した軌道によって決まる大まかな経路である．エージ
ェントは，目標経路に沿って移動するが，他のエージェントとの衝突回避や障害物との衝突回避を行う際は目標経路を外れる．
移動速度 v k は，エージェントが移動する際の速度である．移動速度は，ユーザが主線を入力した際の入力速度に基づいて決定される．移動速度の値が大きい場所では群集は素早く移3動し，値が小さい場所では群集はゆっくり移動する．
エージェント同士の標準距離 sk は，エージ
ェントが移動する際に周囲のエージェントとどれだけの距離をとるかを表す値である．標準距離は，全てのエージェントで共通の値を持つ．
距離の補正量 e j ,k は，エージェント同士の標準距離にどれだけのばらつきを与えるかを表す値である．距離の補正量は，エージェントごとに異なる値を持つ．
4. 群集パラメタの計算
群集パラメタは，入力軌道 Q i q i ,1 , q i , 2 ,..., q i , Kiから求める．入力軌道の数を N とし，
i{1,2,..., i,..., N } である． i = 1 の軌道を主線とし， i ≥ 2 の軌道を補助線とする．また，生成される目標経路の点の数は主線の点の数と同数になる．求めた群集パラメタをもとに，群集の動きを生成する．

{}

4.1 目標経路の生成
入力軌道（主線および補助線），エージェン
トの初期位置 p j , 0 ，エージェントの数から，各エージェントの目標経路を求める．なお，現在は，エージェントの初期位置とエージェントの数は，ユーザがあらかじめ手動で指定するものとしている．
エージェントの目標経路は，ユーザが入力した軌道を補間して生成する．現在では，軌道を補間する方法として，エージェントの初期位置に一番近い入力軌道の影響を強く受けて生成するようにしている．生成される目標経路の形
状は，入力された主線と補助線の影響を受ける．
しかし，補助線からは，大まかな形状の影響だけ受けるようにし，細かい形状は後述の距離の補正量を決定する際に用いる．
まず最初に，補助線の大まかな形状を得るた
めに，平滑化を行う．補助線を一定間隔 δ で平均値を計算し，その値を平滑化した補助線 qi,kとする．ただし，(2 ≤ i ≤ N ) の範囲をとり，補助線の点の間隔は十分小さいものとする．

qi ,k =1∑ (qδδ d = −δ1, k + d− q i ,k + d)

(1)

次に，目標経路の形状を決めるため，各軌道への距離の比率を決定する．エージェントの初期位置から各軌道までの距離を li とし，入力軌道の数を N ，i{1,2,..., i,..., N − 1, N }は軌道の番号とする．距離の比率を o j ,i とすると，o j ,i =1l j ,i × L j
2(2)ただし L j =N

∑li =1

1

後， k に最も近い， qi,k で一番遠い点をもう片(3)2側の点 q R,k とする．軌道の幅は，両者から計算できる．

j ,iとなる．
最後に，距離の比率 o j ,i に応じて移動経路のWk = q L , k − q R , k

エージェント同士の標準距離 s j ,k は，軌道の点 p ′j,k を求めることで，エージェント j の移動{}

幅 Wk に比例して変化する．軌道の幅が十分狭

経 路 P j p ′j ,1 ,..., p ′j ,k ,..., p′j , K1 を 生 成 す る ．

いときの幅を WN ，十分広いときの幅を WW とし，そのときのエージェント同士の標準距離をそれぞれ s N ， sW とする．これらの値は固定とする．エージェント同士の標準距離を，以下の式で決定する．
(Wk ≤ WN )⎧s N⎪
s j ,k = ⎨s ′ × (W j ,k − WN ) + s N (WN < Wk < WW ) (7)⎪(Wk ≥ WW )⎩sW

p′j,k は，主線上の対応点 q1,k から，平滑化した各補助線上の q1,k に対応した点 qi ,k ′ へのベク
トルを Vi,k とすると，以下の式で求められる．
p ′j ,k = ∑ (Vi ,k o j ,i ) + q 1,kN

(4)

i =1

4.2 群集の移動速度
移動速度は，群集全体で共通の値を持つ．移動速度は，主線の入力速度から計算する．
移動経路は，入力された点の座標 q k とその点が入力されたときの時刻 t k を用いて求める．

ただし， s ′ =ユーザが入力した軌道の線分の長さ Δl k （メートル）と，入力にかかった時間 Δt k から入力速度を求める．軌道の線分は Δl k = q k − q k −1 で求め，入力にかかった時間は Δt k = t k − t k −1 で求める．これらの値から，群集の移動速度 v k を，以下の式で求める．

vk =Δl kΔt k

(6)

(5)

4.3 エージェント同士の標準距離
エージェント同士の標準距離は，入力された軌道の両端の幅が広いときに大きい値になり，幅が狭いときに小さい値になるようにする．ただし，際限なく小さくまたは大きくすることは，得策ではない．この理由は，エージェント同士の距離を小さくし過ぎると，エージェント同士のめりこみが生じ，大きくしすぎても，エージェント同士が軌道の両端の幅以上に離れることは現実的ではないためである．
まず，軌道の両端の幅 Wk を求める．軌道の幅は，主線と平滑化された補助線を用いる．これは，ユーザが，距離の補正量を決めるために入力した，補助線の細かい形状の影響を与えないようにするためである．まず，幅を求めるた
めに，主線の点 q1,k における，両端の点 q L,k とsW − s Nである．
WW − WN

4.4 距離の補正量
このパラメタは，エージェント同士の標準距離にばらつきを与えるパラメタである．距離の補正量は，補助線がなめらかであれば小さく，なめらかでなければ大きくなる．
まず，全てのエージェントで共通のばらつき
Ek を求める．Ek は，主線と各補助線との距離の変化量 Gi ,k の分散値から求める．まず，主線上の点 q1,k と，対応した補助線 i 上の点 q i ,k ′ との微分を次の式で求める．

Gi ,k =q1,k − q i ,k ′ − q1,k +1 − q i ,k ′+1q1,k − q1,k +1(8)

次に， Gi ,k の平均値 AVGi ,k を軌道ごとに求める．ただし，Gi ,k を中心に一定間隔 δ で平均をとる．

AVGi ,k =1δ∑Gδ δd =−i ,k + d(9)この平均値を使って各距離の変化量の分散値
VARi,k を求める．分散値は，

1 Ki(Gi,k − AVGi,k )2 (10)∑K i k =1となり，全体の分散値 VARk は，N を入力されVARi ,k =た軌道の数とすると

q R,k を求める．主線を基準として，全軌道上の k の位置にある点 qi,k の中から，主線上の点q1,k に一番遠い点を片側の点 q L,k とする．そのVARk =41 N∑VARi ,kN i =1(11)となり，これに係数 α をかけたものが共通のばらつき E k になる．

突を回避する距離より近い場合は回避する．つまり， | p1,t − p j ,t |< r j ,k なら回避する力が発生する．エージェント 1 との衝突を回避する力は⎛⎞
r j ,k⎟(16)
Favoid , j ,t = −(p1,t − p j ,t )⎜1 −⎜ | p −p |⎟1,tj ,t ⎠⎝となる．この力を残りのエージェント全てに対して計算し，合計した値が衝突回避する力となる．

E k = αVARk(12)
次に，エージェントごとに異なる距離の補正
量 e j ,k を求める．エージェントごとに違いを出すため，E k に乱数をかける．乱数の範囲は 0.5から 1 で，これは，距離の補正量を乱数によって小さくしないためである． E k に共通の補正

MF avoid , j ,t = ∑ F avoid , j ,t

量 の 最 大 値 E MAX で 割 っ た 割 合 で 求 め る ．
E MAX は定数とする．

e j ,k = random(0.5,1) ×

EkE MAX(17)

j =1となる．

(13)
5.3 障害物を回避する力
障害物を回避する力は，エージェントが障害物に衝突しないために，その障害物と距離をとろうとする力である．
障害物 x （位置 p block , x ）に衝突しない最小

random(0.5,1) は 0.5 から 1 までの乱数を生成する関数とする．
5

群集アニメーションの生成
本手法では，エージェントモデル[1]により各エージェントの動きを生成する．本手法のエージェントモデルでは，軌道に追従する力，他のエージェントとの衝突を回避する力，障害物との衝突を回避する力を用いる．各エージェン
トごとにこれらの 3 つの力ベクトルを求め，全ベクトルの合計により移動方向を決定する．力は方向と大きさを持つ 3 次元のベクトルである．これらの力は毎ステップごとに計算する．

半 径 を rblock , x と す る ． つ ま り ，| p bloack , x − p j ,t |< rblock , x なら回避する力が発生する．障害物 x との衝突を回避する力は
Fblock , j , x ,t⎛
⎞ (18)
rblock , x⎟
= − (p block , x − p j ,t )⎜ 1 −⎜| p bloack , x − p j ,t | ⎟⎠⎝となる．この力を残りの障害物全てに対して計算し，合計した値が障害物を回避する力となる．
障害物の数を X とすると5.1 目標経路に追従する力
目標経路に追従する力は，エージェントが目標経路上の目標位置から離れているほど大きくなる．目標位置とは，エージェントが目標経路に追従する際に，目標とする座標である．
時刻 t でのエージェント j{1,2,..., j ,..., M } 自身の位置 p j ,t から，目標経路上の目標位置 p ′j ,kに向かう力は⎛⎞R⎟ (14)
Ftrajectory , j ,t = (p ′j ,k − p j ,t )⎜1 −⎜ | p′ − p | ⎟j ,kj ,t ⎠⎝となる．

XFblock , j ,t = ∑ Fblock , j , x ,t(19)x =1となる．
5.4 エージェントの移動
エージェント j は，各力の合計 F j ,t の方向に移動速度 vk で移動する．合計した力は

F j ,t = wtrajectory Ftrajectory , j ,t+ wavoid Favoid , j ,t + wblock Fblock , j ,t

5.2 他のエージェントと衝突回避する力
他のエージェントと衝突回避する力は，エージェントが他のエージェントと衝突をしないために，距離をとろうとする力である．エージ
ェント同士が衝突を回避する距離よりも近い場合，エージェントには離れる力が生じる．
エージェント同士が衝突を回避する距離
r j ,k は，エージェント同士の標準距離に距離の補正量をかけたものである．
(15)
r j , k = s j , k × e j ,k他のエージェント（位置 p1,t ）との距離が，衝(20)となる．ここで wtrajectory , wavoid , wblock は各力の重みである．現在は我々の実験では，衝突回避に関する重みを大きくすることは重要である
ため，wtrajectory : wavoid : wblock = 1 : 2 : 2 としている．
移動量 D j ,t はD j ,t = v k

F j ,t(21)F j ,tとなる．この移動量を現在のエージェントの位置に加えることで，エージェントを移動させる．

5

次のステップのエージェントの位置 p j , t + 1 は(22)

ばらついて 狭く移動

遅く移動

6. 実験結果と考察
本システムを用いて，ユーザが思ったとおりの群集アニメーションが作成できるかを実験した（図 5）．実験に使用したコンピュータのス ペ ッ ク は ， CPU は 3.20GHz ， メ モ リ は1024MB ， グ ラ フ ィ ッ ク ボ ー ド はGeForce6600GT である．作成するシーンには，群集の移動速度，群集の広がり，群集のばらつきを変化させる箇所を設け，群集の数は 50 人とする（図 4）．
実験の結果，図 4 のような入力軌道を与えることで，ユーザの意図通りの動きを実現することができた．なお，本システムは，パラメタ設定の容易さから，数千人規模の大群集を扱うことに適していると考える．
7. 今後の課題
本研究では，数本の軌道入力により群集パラメタを決定することで，ユーザが用意に群集アニメーションを作成できるようなシステムを提案した．今後の課題として，軌道上の任意の位置で，エージェントに移動しながらの会話や剣や槍等の武器を使った戦闘などの行動を行わせることができるようなインターフェースも追加したいと考える．具体的には，目標経路上に動作を設定し，他のエージェントと連携した動きを生成する．
また現在，エージェントの初期位置は手動で設定する必要がある．エージェントを配置する手間を考えると，初期位置も入力軌道から自動的に決定することが望ましい．そこで，ユーザが軌道を入力後に，エージェントの数を手動で指定する，入力軌道の開始位置の両端の間に，エージェントを自動的に配置する機能を追加する．
加えて，ユーザは移動経路を始点から終点まで指定する必要があり，複雑な移動経路や広い場所での移動を実現するのに多少手間がかかる．そのため，長い移動経路なしで群集アニメーションを作成できることが望ましい．そこで，エージェントが曲がる頻度などのパラメタを追加し，短い入力軌道からそれらを求めるようにする．

6

ばらつかず
広がって移動速く移動ばらついてとなる．エージェントの移動後に，エージェン
トの位置と目標位置との距離が，目標経路への追従距離 R 以下のときに，目標位置を次の点に更新する．以上の計算を各ステップで行うことによってアニメーションを生成する．

広がって移動p j ,t + 1 = p j ,t + D j ,t

ばらつかず
狭く移動

図 4：群集のコース

参考文献[1] Creg W. Reynolds, “Flocks, Herds, andSchools: A Distributed Behavioral
Model”, SIGGRAPH’87, pp.25-34, 1987.
[2] Branislav Ulicny, Pablo de Heras
Ciechomski,
DanielThalmann,“Crowdbrush: Interactive Authoring ofACM
Real-timeCrowdScenes”,
SIGGRAPH2004, pp. 243-252, 2004.
[3] Taesoo Kwon, Kang Hoon Lee, Shigeo
Takahashi, “Group Motion Editing”,
ACM SIGGRAPH2008, 2008.
[4] Ioannis
karamouzas,
MarkH.
Overmars: “Adding variation to pathplanning”, Comp. Anim. Virtual Worlds
2008, pp.283-293, 2008.
[5] N. Courty, T. Corpetti, “Crowd Motion
Capture”, Computer Animation andVirtual Worlds, Volume 18, Issue 4-5, pp.
361-370, 2007.
[6] K. H. Lee, M. G. Choi, Q. Hong, J. Lee,
“Group Behavior from Video: A
Data-Driven Approach to Crowd
Simulation”,
ACM
SIGGRAPH/Eurographics symposiumon Computer animation, pp. 109-118,
2007.
[7] A. Lerner, Y. Chrysanthou, D.
Lischinski, “Crowds by Example”,
Computer Graphics Forum, Volume 26,
Number 3, pp. 655-664. 2007.