粒子を使った電子の道作製 ステップ1:ビーム方向とデリート

particles

はじめに

「粒子を使った伝搬モデル」をこれまで6回述べてきました。主にビームを次々に伝搬させるタイプと、ビームを曲げて形を作るタイプとを検討してきました。およそできることがわかったので、何かに応用したいと考えておりました。思い出したのが、2025.09.01「ポテンシャルフィールド 環境とのインターラクション」の中で、”最短経路の探索”という問題を扱っていたことです。これは凸凹した地形がある場合に、AからBへ行くのに、ほぼ最短経路を簡単に見つける方法を検討した内容です。結局、凸凹した大地の上にA、Bを結ぶゴムを張ってこれを弾くと、凸凹の低い所へゴムが落ちて行き、それがほぼ最短経路でしょう、という考えです。次がその時の映像です。再録致します。

この映像で経路ができた際、経路は複数のポイントでできているわけですが、Aから次のポイントまでビームを放射し、そこへ到達すると、次のポイントへビームを放射、また達するとその次のポイントまでビームを放射、といことを繰り返してビームを伝搬させ、Bに到着するようにすれば、ナビゲーション的なイメージが作れるのではないかと思いました。空想の中では、自動運転車が電子の道を走ることが、実体としては実空間を走っていることになるという、ディジタルツインの考えに興味を持っています。そして仮想空間のポテンシャルが実際の障害物や心的な障害物を現わすフィジカル・インテリジェンスの考えにも関心があります(2025.10.26「フィジカル・インテリジェンス」)。この案は実際の自動運転車となんの関係もありません。独自に空想した案です。しかしゲーム等のキャラクターが自律的に目的地へ向かうのに、あるいは災害時に出口に向かって人はどう動くのかのシミュレーションには役立つかもしれません。

最短経路問題と粒子の伝搬を合わせたプログラムを少しづつ何回かに分けて作製していこうと思います。作製過程を小出しに述べて行くことになります。blogは次回何について書くのか、これを考えるのが一番の悩みです。小出しに書いていくのは良い案のように思います。今回はそのステップ1です。

課題:ビーム方向と突き抜け防止

ビームを放射する際の問題はこれまでに扱ってきました。その応用になります。基本課題は2つあります。AからBへビームを放射する際に、位置Bがランダムに動く場合、Bの方向をどうして決めるのか、もう一つはビームはBに達しても止まりません、粒子は突き抜けます。これはparticle POPのLife Expectの値を調整して防ぐこともできますが、Bが変化するとこの値は毎回変えないといけないので適していません。そこでdelete POPを使って、Bを超えた粒子を消します。この2点を対策する必要があります。それでは作製した映像を見てください。

Bが動いた方向にビームが放射され、ビームは突き抜けていません。
プログラムの主要部分を以下に示します。

object CHOPがベクトルの方向を求めたり、2点間の距離を求めたりできます。これまでの例では宇宙駆逐艦雪風の船首方向を動かすのに使っています。今回は片方のAは原点ですので、使う必要は無かったのですが、後に2点間の方向を求めることになるので、用いることにしました。ここで求めたベクトルの方向がビームの方向ですので、それをforce radial POPのDirectionパラメータに入力すると、Bに向かって粒子が放射されます。意外に簡単でした。force radial POPを使ったビーム生成は、point generator POP ー> particle POP ー> force radial POP ー> null POP(particle POPへのフィードバック)の構成で行います。これは定番の使い方です。
次にBを超えて飛んでいく粒子を消す方法について述べます。最初に思いつくのは極座標表示で、Bまでの距離を求め(これはobject CHOPで得られます)、それを超える粒子をgroup化し削除することです。これは適切な方法と思いますが、このものずばりのオペレータがありません(group POPに距離の内側/外側の選択が在るといいと思っています)。そのため、この機能をPOPの組み合わせやスクリプトを使って書くのが一つの方法です。今回はこの方法ではなく、図中のdeleteアレイと書いた、group POPとdelete POPの組み合わせで場合別けをしました。そしてどの場合を使うかの選択をswitch POPのコントロールと書いた部分で行っています。この説明図を次に示します。

x-z平面で高さ方向がy軸です。領域を0, 1, 2, 3と4つにわけます。Bはこの4領域のどこかになります。その場合別けをgroup SOPで行っています。図中でP(0)はx座標、P(2)はz座標のことです。CombineがAndになっていることを注意ください。これで領域を別けれます。そそれぞれの領域に対して、どういう場合にdeleteするかをdelete POPに書きます。図はBが第3領域の場合を示しています。B点のその外の粒子を消せばいいので、Bのxの値の外側、あるいはzの値の外側を設定しています。同様なことを他の領域でも行います。そして、4領域あるわけですが、今どれを選択すればよいかを決めるのが、switch POPのコントロール部分です。ここではBの位置が、4領域のどこに入っているかを求め、これでswitchのどの入力を使うかを選択します。2026.07.25「粒子を使った伝搬モデル1」で、既に飛び出した部分を消す目的でdelete POPを使っています。この時は方向がx軸、Bの位置も定まっていたため、場合別けが必要ありませんでした。Bの位置が任意になったことが今回代わった点です。

まとめ

経路探索で探索した経路の誘導に粒子ビームを使う方向を検討して行きます。これを何回かに別けて述べます。今回は任意のBの位置に粒子ビームを放射し、Bを超えた部分を消去する方法を述べました。領域を4つに別け、位置の外側を消すプログラムにしました。任意の方向で、Bを超えることなく放射するビ粒子ームが作製できました。

コメント