Delph Chapter 1 Lovers

Technology and 言い訳集

この研究は3年かかりますた

マリモ特製 FFK+HNN技術 / Full Forward Kinematics + Hierarchical Nerve Network

HNN 階層化生物神経網

Full Forward Kinematics + Hierarchical Nerve Network

FishSaver2で使用しているAIは見た目の通り理路整然とした非常に数理的な演算で動いています。つまり、全体的な調和から位置決めされると強制的にその位置に魚が入り込むように調整されます。FishSaver3 REPAでは、DEMOモードが終わると魚の代わりに野菜が泳ぎまわりますが、別に形態が魚でなくても群体の動きはそれらしく見えると言う事です。

以前より挑戦してやっとできた今回のAIは、そういった数値的な位置決めではなく、「認識」−「判断」−「行動」ループを基本とした、本当に生物が行っている行動を実装しようとするものです。
例えば、ある動物はなんらかの欲求(好意)を受けると対象物(彼女?)を欲します。この要求は大脳に意識として働きかけるか、小脳に情動を生み出し、学習された運動行動を発生して物理的に近づこうとします。イルカでは、目測された距離に必要な加速を得るためにキックします。
実際の生物は生まれてからの運動学習により、どれだけキックすればどれだけ近づくか体得しているので、実際に蹴る前に必要なKick強度が分かります。そしておおむね正確に近寄ることができます。

今回のAIではこの生物的な動きを再現するため、AIを4つのレイヤに分け、それぞれ上位からの電気パルスで動作するようになっています。一番下のレイヤは、末梢神経層です。イルカでは、背骨の曲がる角度、顎の開ける角度、尻尾の角度、などです。その上が脊髄反射層で、無意識だが統合的に動作する動きです。全体的に丸まる、波動キック、力強くキック、ブレーキ行動、目標物を見る、笑う、などです。
その上が間脳−小脳層です。半意識的に、例えばキックパルスを発生します。半意識的、というのは目測距離でKick量が加減されるからです。この時、生物はいちいち計算していません。
その上が中脳−大脳レイヤです。ここでは場の雰囲気を読んで編隊を組んだり、編隊のどの位置につくかを決めたり、愛情表現を行動に変換したりします。

FFK 完全前進KINEMATIX

HNNの出力はKINEMATIXとして現れます。体の間接の角度を全て決定づけるような信号の束が得られます。これをポリゴンで表現するため、Bone Skin 技術を使っています。ただし、これらのBONEは従来ある、あらかじめ用意されたモーションキャプチャーされたデータで駆動されるのではなく、階層化生物神経網からリアルタイムで発生した信号で駆動されます。 ひとつの末梢神経網に複数の脊髄反射層の入力が入ったり、脊髄反射層に複数の小脳行動が指令されるため、結果として複数の動きが混ざって再生されます。
今回のChapter1では、笑いながら回頭方向を見つつスピンしたりします。

このように、INVERSE KINEMATIX データ無しの FULL FORWARD KINEMATIXでBONEをダイレクト制御するのが HNNとセットになり、極めて生物的な動きを生み出しています。

DYNAMIX

従来の群体制御は最初にDYNAMIXがあってベクトル演算し、それにふさわしいKINEMATIXがアフレコで加えられますが、Delph ではKinematixの結果としてDYNAMIXが演算されます。KickもKick量や、体のひねり具合で加速度/回頭角度が決められます。
一般技術

Dolphin Shader

DolphinのShaderはMarimoの過去最大です。
BONE Skin
DOT3 BUMP
平行光1 点光源1
環境ライティング
WeightMorph ( まぶた、ヒレのFLEX)
	  
あとShadowMapもつけていたのですが、Debugできませんでした。

Reflect / Refract

最新のCry Engine 、Half Lifeエンジンで採用されているミラーマトリクス型の反射、屈折を採用しました。この技術をアピールする壮大な背景が欲しかったのですが、今回は時間切れです。しかし、水上からみた水中のイルカは、カナーリ、良くできましたよ

Glare

派手にGlareを入れてみました。もう、病気ッポイですね

Cloud & Occulusion Query

雲はTexture Perturbの重ねあわせです。雲による光源遮蔽を得るため、Occlusion Queryしています。この結果、太陽が雲に隠れるとFlareが弱まります。このQuery値は全体ライティングなどいろいろアピール法があるのですが、今回は時間切れです。

Polygon Water Splash

イルカのジャンプ時に、ポリゴンでしぶきを作って背景を屈折像として入れてみました。可能性はかなりある手法ですが、今回は調整不足で、見た目なんじゃこりゃ状態になってしまいました。
一瞬、ドキっとは、するのですが。
いいわけ集

なぜ2頭だけ?

Renderingさせるだけなら、30頭くらい表示しても30FPS以上出るようにはなっているのですが、いかんせん新型のAIが賢くなく、まったく編隊を組めません!!。
今回のAIでは編隊行動を決定したらその位置につくよう各個体が考えて動いていかなければいけないので、それが、まだ記述できていません。
もう、バラバラの蜂の巣状態です。

そんな訳で今回は2頭で Lovers と。 (汗

ヤシの木が水没している

反射像として壮大な背景があれば迫力があったのですが。例えば、ニュージーランド観光協会のCMに出てくるような、高さ100Mの崖の脇でイルカが跳ねているような画です。
AIにかかりっきりで崖まで作れなかったので、以前作ったヤシを持ってきたのですが、画角に反射像が入るようにすると、どうしても近づけないといけなく。

そんな訳で根っこ部分、水没していまぁす。(汗

枯れるがな

リゾートコテージとかでもいいんですけど

イルカの歯が怖いよ

イルカが可愛く見える要素をいくつか分析しましたが、あるビデオを見ていて、大口開けた時にきれいに並んだ割と大きめの歯もポイントだと、かなり製作後期に気づきました。モデルの修正は大量の戻りが入るので、今回は諦めましたが、、、

要するに、歯がとがっているとイルカではなくワニになってしまうということです。実際のイルカの歯は良く見ると先端がボール状で、押し付けたら肩こりに効きそうとか、歯もなでてみたいぞ とか、そういうチャームポイントがあります。肉食らしからぬ歯です。

それに気づかず4角錐で作ってしまったのですが、そうではなく正20面体くらいのポリゴンが必要だったという事です。

暫定対策として、あんまり大口開けないようにしました。(汗

イルカの体が相手を透過する

Hakowarのノウハウを生かして衝突回避はちょっと凝った物を搭載していますが、Kinematixが効いていない棒状の状態で判定しているので、体が曲がっていると、相手を透過しちゃいますね、、

nVidia DUAL Viewで動作が変

バグだと思います。おかしくなったらDelphのレジストリを削除してみてください。

なぜに3年もかかるの

当初はQuaternionが使いこなせてなかったので、オイラー角ですべて記述しようとするとあっという間に行き詰ってFishSaverみたいになってしまいました。次に、水上にJumpした時にPhysicsを解かないといけないのですが、やはりHAKOWARくらいのノウハウが無いと書けませんでした。

あと、単純にこのAIは難しいです。編隊行動はまだ全然できていません。
難しさのひとつとして、生物が運動学習で体得している運動パルス量を全然知らないので、あれこれ実測しながら試行錯誤しないといけないという点です。

わからんがな

鼻がないです

SideViewばっかり見てModelingしてたら、鼻を作り忘れてました。

水中で泡がぽこぽこ漏れる所を作ってたら、 ありゃ、どっから出てるんだっけ、と (汗 窒息しますがな