ポテンシャルフィールド 環境とのインターラクション

ポテンシャル

先に示した「擾乱を伴う反復系」やBoidsの例では、マウスによってオブジェクトを動かしていました。これはマウスを操作する人とオブジェクトとのインターラクションになります。もう一つよく扱うインターラクションにオブジェクトと環境があります。主となるオブジェクトの外にある存在をオブジェクトに対して環境とみなします。するとオブジェクトが動くことで環境が変わる、あるいは、環境が変化することでオブジェクトの振る舞いが変化する、といったインターラクションを加えることができます。今回は環境とのインターラクションとしてポテンシャルフィールドを扱います。ポテンシャルフィールドは物理にでてくる位置エネルギーを持つ場に対応します。代表的なイメージは丘のようにその場所が高くなっているということです。そこから何かを落とすと、高い程下にあるモノを壊しやすくなります。ですから高いということは、壊すエネルギーをその高さは潜在的に持っていた、というように解釈します。また逆にへっこんでいると、ポテンシャルエネルギーは低いわけです。そうすると、近くのモノは引き寄せられるので、引き付けるエネルギーを潜在的に持っていたことになります。この考えを使うと、なんでも場を作ることができます。例えば好きな食べ物屋さんの好き度を数値にして高さ(低さ)として地図上に描くと、好きな食べ物屋さんポテンシャル分布ができますす。地図にできたその複数の窪みを目指してクルマを走らせると、好きな食べ物屋さんポテンシャルナビになります。

環境によって形状を変える方法

直近の4回のblogは「擾乱を伴う反復系」に関係する内容でした。そこで線状の束を作るのに使っていたのはspring SOPというバネの働きでした。今回扱うのはバネとポテンシャルとの関係性を解説します。「擾乱を伴う反復系」から離れて、バネでできた線状の束の分布がポテンシャルフィールドに対してどのようにふるまうかを見ることに致します。「擾乱を伴う反復系」が自身の内部フィードバックと擾乱によって変化する構造を持ち、これによって予測不可能な動きを創り出していました。今回は自分自身ではなく環境の変化を使って予測不可能な形状を創りだす方法を検討します。この2つの考え方は非常に重要です。自分自身の内部構造によって自律的に変化する場合と、環境が変化するのでそれに適用するように変化する場合、またどちらも含む場合もあるでしょう。それではまずはいつものように動画をみていただきましょう。

画面は左右2つに分かれています。まず左の画面について説明致します。ランダムに発生させたポテンシャル分布に、上から模様が落ちてきて衝突します。模様はポイントで構成されています。ポイントはポテンシャルの低いところへ移動して安定になります。次のマウス現れます。マウスが移動すると、ポイント全体がマウスの方向に移動しますが、その時底辺からはポテンシャルの山を乗り越えることはできません、山のへこんだところにあるポイントは超えることができる場合もあります。このため一様に動くのではなく形状が変化して動きます。右の画面はポテンシャルとマウスの表示を消してポイントの動きだけを表示しています。これだけを見ていると、少し生物的でどういう動きをしているのかわからず神秘的な模様が作れます。ポテンシャルは環境に相当しますから、環境が変わることでそれに応じて形状が変化する様子を表しています。環境であるポテンシャルを外から与えているので、現状自律したシステムとは言えません。しかし線状の束自身に、線状のポイントでできたパターン周辺のポテンシャル分布を変化させる機能を持たせるなら、自律して形状が変化するシステムになります。こうなれば環境を自ら変化させることで自分自身を変化させる自律したシステムの登場です。今後この方向を模索しようと思っています。別のアプリケーションとしては、建物の配置等の検討に役立つのではないかと思っています。先回のblog「偶然性の補足」では、線状の束のポイントを利用して建物を配置しました。この時地形の形状を考慮していません。しかし地形をポテンシャルで表すと、平地に多く山の高いところには少なく配置となるでしょう。また池をポテンシャルとして表すと池の周りに建物を多く配置することが自然にできるでしょう。

プログラムについて簡単に説明致します。Touchdesignerで作製しました。ポテンシャル分布はsphere SOPにmetaballを接続したものを複数用意しmergeします。それにforce SOPを加えてspring SOPのinput 2に接続しています。input1 にはnoise SOPから作製した線状の束を接続します。この線状の束が元図で、これにポテンシャル分布が作用して形状が変わっていきます。変わっていく線状の束の全てのポイントの平均を求め、マウスと線状の束の平均位置との差をspring SOPのextrenal forceにフィードバックしてマウスを追っかけるようにしています。ポテンシャル分布が変わるのはsphere SOPの位置をランダムに変えているからです。

最短経路の探索

山あり谷ありの凸凹した地形を通って、AからBへ行く道を探す方法を検討致します。山を越えていくと最短で行くことができますが山越えの労力が大きいのです。そこでできるだけ平坦な道を選び最適な経路を探します。昔の街道は概ね自然の谷や断層に沿った道になっています。概ねこのイメージの経路となります。ここでもバネであるspring SOPとポテンシャルを使って考えてみます。ポテンシャルを卵型のつるっとした形状にしておいて、出発地とゴールのAB間にバネを張り、バネを持ち上げて離すと、凸がつるつるなら、その形状にしたがってバネは下に落ちていき、ルートが見つかります。そのバネの形状が最適だと考えるのです。本当に最適なのかというとそうではない可能性もありますが、この方法は様々な経路の可能性を計算することなく、およそ最適な経路を見つけることができます。それでは動画をみていただきましょう。

黄色の〇が出発地点Aで、白い〇が到着地点Bです。その間にポテンシャルの山がランダムにでき、AB間の経路を探すことを行います。AB間を結んでいる黄色のラインがバネです。上から落ちてくるようにしていますがこれは演出です。AB間にバネを張った後spring SOPをリセットすると、ポテンシャルの低いところへラインが落ちていって安定化します。それがおよそ最適経路です。動画では安定してから白い〇を動かしています、その時は途中から線路が曲がって動きます。これはリセットしていないからです。地点が決まりリセットすると、次の地形ができその地形に対しておよその最適経路を求めます。
プログラムは動画1とあまりかわりません。線状の束の元図形がこちらではline SOPになっている点と、フィードバックの必要が無い点が違っています。こうしたポテンシャルを利用した経路選択は、デパート等の商用施設の避難経路を決める際、屋内でGPSが機能しない場所では依然便利な方法です。ケースや棚等をポテンシャルとして表し、入口と出口を出発点と到着点にすると移動する経路が求まります。配置換えを頻繁にするような施設では便利です。このポテンシャルを活用する方法と先先回のblog「boids(ボイド)と群コントロール」とを組み合わせると、避難経路のシミュレーションに発展することが想像できます。

「擾乱を伴う反復系」とポテンシャル分布とは相性のよい技術だと思っています。そのうち合わせた活用例を作製したいと思っています。

コメント