gooブログはじめました!

写真付きで日記や趣味を書くならgooブログ

3DCGのあるアニメーションの回転操作

2023-01-29 08:03:43 | ブログ
 参考文献によれば、3DCGを利用するアニメーションにおいて、回転操作を行う際に、「四元数を用いれば、アニメーションの作成、とくに補間を行う上ではるかに便利な形で回転を指定できる」と論じている。

 物体を何度も回転させるとき、通常の方法で変換を表現すると、多数回の演算による累積誤差のために、どうしても物体の形が歪んでしまうが、四元数を使えばそれを防ぐことができるとのことである。

 2021年10月10日のブログ「3Dオブジェクトの回転操作」では、四元数を用いる回転操作について記述したが、3DCGのあるアニメーションの補間のように連続する多数回の回転操作を行う際に、通常の方法と四元数を用いる方法のどちらが便利なのかについて見直したいと考えた。

 通常の方法とは、数学の教科書や参考書に出てくる回転操作を意味するのであろう。これらの方法は、数学的な一般性や抽象性を重んじるためであろう、座標軸を回転させるときに任意の同一点Pがどのような操作によって変換されるか、あるいは点Pをx,y,z軸の各々のまわりに指定された角度だけ回転させたときの変換規則について記述する。言い換えれば、特定の回転軸に注目して、点Pの座標値がどのように変換されるかを記述するものではない。

 一方、四元数を用いる方法は、特定の回転軸の方向ベクトルと、回転角度を指定することから始める。(x,y,z)座標軸に着目した座標軸や点Pの回転操作とは異なる。

 回転軸の正規化された方向ベクトルuの各成分を(ux,uy,uz)とする。ベクトルuの向きに右ねじが進む方向に角度t(シータ)だけ回転させる操作を考える。この回転に対応する四元数を以下のように定める。
   q=cos(t/2)+(uxi+uyj+uzk)sin(t/2)
ここでベクトルa=(ax,ay,az)と四元数axi+ayj+azkを同一視する。ベクトルaを、qが定める回転によって回転させると、b=qaq_になる。q_は、qに共役な四元数である。

 方向ベクトルuを変えずに、連続して回転操作を行うときには、b=qaq_の計算式が定型となる。ベクトルuと垂直な平面上の(ax,ay)成分=(rcost0,rsint0)を(rcos(t0+t),rsin(t0+t))に更新するだけでよい。az成分は変わらない。

 方向ベクトルuを変更するときには、新しい回転軸のまわりの回転が生じるであろうから、新たにb=qaq_の計算を行うことになる。

 さて、通常の方法と四元数を用いる方法のどちらが3DCGアニメーションに適しているかについては、実施者がご判断下さい。

 参考文献
 イアン・スチュアート著「世界を支えるすごい数学」(河出書房新社)
 インターネット記事「四元数と三次元空間における回転」

シロアリのカースト社会をのぞく

2023-01-08 07:40:12 | ブログ
 富山大学の前川清人先生が講演された「社会性昆虫の多様な形をどう作るかーシロアリのカースト分化」を聴講した機会に、シロアリ社会の進化と遺伝学について、ブログ記事として纏めておくことにした。

 シロアリ社会は、繁殖に関与する王と女王のほかに、翅アリ(オス・メス)、兵隊およびワーカーから構成される。翅アリは、生殖に関与できるので、生殖カーストと呼ばれる。兵隊とワーカーは、生殖に関与しないので、不妊カーストと呼ばれる。

 ドーキンスの著書によると、王と女王のペアがつくった卵からカースト分化したシロアリが生じるが、ペアの一方が死ぬと、同じコロニーの翅アリが翅を落として後を継ぐ場合が多いので、同系交配の傾向が強い。王・女王の予備軍である翅アリ間の競合を避けるために、翅アリが飛翔して別のコロニーの王または女王になる場合もあるが、その後同系交配と異系交配が入り乱れることになり、多くのコロニーに亘ってシロアリの遺伝情報は同じものに統一されていく。

 繁殖相手を求める個体が生まれたコロニーを去って別のコロニーに移ることを一般に「移動分散」と言うが、より多くの子孫を残すためには移動分散が有利なことを数理で確認しておこう。

 各コロニーには平均してS匹の翅アリが生まれるとし、そのうち平均して割合Qで翅アリが移動するものとする。翅アリが移動中に天敵に食われるなどして死亡する可能性があるので、個体が移動中に死ぬ確率をCとする。そうすると、各コロニーには、平均的に生来の個体数S(1-Q)と外来の個体数SQ(1-C)を合計した
   F=S(1-Q)+SQ(1-C)=S(1-QC)
だけの翅アリが存在することになる。そうすると、Qが0でなくCが0でない場合には、Fは移動分散しない場合のSより小さくなり、繁殖の競合相手の翅アリが減るとともに、移動する翅アリにとっても繁殖のチャンスが増える可能性があるので、移動分散が有利なことが分かる。

 シロアリ社会の遺伝情報(ゲノム)が同じになると、いわゆる「進化の平衡状態」となって、シロアリにローカルな突然変異が生じても自然淘汰によって切り捨てられ、カースト構造の崩壊のような革命的な変化は生じないと考えられる。現にシロアリ社会が1億5千万年もの長い間続いてきたゆえんである。

 それでは、同じゲノムをもったシロアリの卵からどのようにして翅アリ、兵隊およびワーカーの各カーストが分化するのか。前川先生の説明によれば、ゲノム中の遺伝子を発現させるか否か調節する作用により、カースト分化を行い、各カーストの形を作るということである。この調節機能により、環境要因を検知し、環境に適した生物の形や性質を決めているとの説明である。先生は、湿度が高くなってきたことを検知して、翅アリを出す時期を予想し、卵が翅アリにする遺伝子を発現させて翅アリを作る例を挙げておられた。また、他の例として、兵隊の多いコロニーでは新しい兵隊は不要なので、兵隊になる遺伝子を発現させないように調節している。

 参考文献
 リチャード・ドーキンス「利己的な遺伝子」(紀伊国屋書店)
 入谷亮介「数理の窓から世界を読みとくー第3章: 数理で読みとく生物進化」(岩波ジュニア新書)