(「かんなP」氏の「物理演算固定」の検証映像!)
「かんなP」氏は、やっぱり凄い!なぁと思うのは、「検証映像」なのに、「かっこいい!」といったCGの美学がある所です!
ただの「ムチ振り」が、すでに!「ダンス」の域にある所まで作り込んであるので、なかなか、こうはできないものです。
(「furia氏」の「物理演算固定」の検証映像!)
今回は、「物理演算固定」や、「乱数」に関する事について書いていきます。
そもそもの発端は、「かんなP氏」、「furia氏」が、MikuMikuDanceの「物理演算」の出力が、ある一定の条件では、「毎回!同じになる!」というのを、検証比較した動画からです!(この2つの「検証映像」は、けっこう!ショックが大きかった!「物理演算固定」が、可能になるとなると、かなり、いろいろな演出が可能になるからです!)
それで、一見、ランダムっぽいはずの「乱数」や「物理演算」結果が、「完全に一致する!」という現象が起きるコンピューターの説明として、自分が、コンピューターや、パソコンでは、数学の問題として「パソコンは、乱数だけは作れない!」という古くからある問題を書いたわけです。
原因は、「数理論理学」という、論理を構成する際の学問があるわけですが、コンピューターは、「1, 0」で動いているので、きちんとした計算は得意なのですが、ランダムのような感じの事は、逆に、とても苦手なわけです。
そもそも、「数学」の数式を使って、自然界にあるような「ランダム」な感じの事を、まったくそっくりに再現できるのか?という数学の命題は、ずっと昔から数学者の関心のまとでしたが、そういったアバウトな発想ではなくて、「あらかじめ、数式表現で可能な範疇に入っているのか?」というのを先に見抜く学問が、「数理論理学」なわけで、どうも、その計算結果が、「できない」の方になったわけです。(似た感じの事はできるけど、コンピューターで作った、「ランダム」や「乱数」には、「クセ」が出てしまうという事)
本来は、「数理論理学」という論理学の公式で、はねだされた計算結果では、まったくの例外無く「100%」確実にできない。という事なので、ここが、論理学の怖い所でもあるのですが、それでは面白く無いという事で、数学者は、あきらめずに、いろいろな手法を考えていくわけです。(ある条件や、計算手法では、「絶対に!不可能!」という計算結果が出ただけ。と考えると良さそうなのですが、「数理論理学」では、「数字」全体の範疇に対しても、できるので、けっこう、シビアなのです!)
もし、この「乱数」を自然科学で扱える程の「論理的に正確な乱数」を発生させる事ができると、「天気予報は、100%確実に当る!」「宇宙の果てが、どうなっているのか?がわかる。」など、完全に、今までとは次元の違うコンピューターの世界になりますが、最低でも「小数点を使うタイプの円周率を使っている段階で、誤差が入るので、100%不可能です!」(円周率などの「円」に関する計算などでは、本来は、「図学」コンピューターが必要で、こちらは、「誤差ゼロ」で計算できるはずです!これが、できるようになると、「天文学」などだけではなく、「人類史」全体が変わってしまう程の、もの凄い事になるので、「ノーベル賞」どころの次元ではない話になってきます。)
現在の私達の扱っている数学では、「近似値」といった分野で、「誤差を含むのが、当たり前で、誤差部分は、人間の頭で近似修正する。」事で成り立っていますが、この手法は、「計算できていない」事を容認してしまうので、数学者から見ると、プライドから、それではいかん!という事なわけです!
どういう事を言っているのか?というと、例えば、「近似値誤差を含む計算式の算出結果で、タイムマシンを使って行くと、100%確実に、違う場所と時間へ移動する事があらかじめわかっている。」という事で、これでは困るわけです。(ある歴史の瞬間に行こうと思っても、誤差、近似式方式だと、10年ずれたり、壁の中へ出現したりするという危なっかしい事になってしまうので。現在は、それでも、間違った誤差、近似値の数式で、宇宙空間へロケットを飛ばせるのは、その後に、人間の頭などで、修正できたりするからです。問題なのは、例えば、「火星への探査機」などを飛ばす場合で、遠くなればなる程、電波が届くのに時間がかかるので、「人間が、見ながら誤差修正できるけれど、2日も、3日も、かかってしまう!」という事で、最終的には、「誤差を含む近似値計算」+「人間の頭で、見ながら修正」の今までの「物理学」「数学」手法では、いつか限界がくる事が目に見えているので、「誤差ゼロ」になるコンピューターや、数学計算の手法が必要になってくるわけです!)
「なんとなくのランダム」と、「自然科学で扱える乱数」の違いがわかった所で、今回は、MikuMikuDanceなわけなので、とりあえず、「もっとリアルなランダムを!」という方向性で書いていきます。
けっこう、今回の記事だけで、かなり大きな1分野を占める位の分量があるので、「3DCG」や「MMEエフェクト」を考える場合には、いろいろと参考になります。(というか、一般、物理学、自然科学など全体で使えるはず。なので、「天文」から「津波防災計算」から、「地震免震計算や設計」など、何でも使えるはず。)
(そもそも、コンピューターの扱う「乱数」って何か?)
パソコンで扱う乱数は、「ランダム関数」などと言っていますが、これは、実は、「乱数」っぽい「定数」の数列が入った箱が入っているだけだった気がします。
なので、そのランダム関数の数列の「定数」を見たい人は、たしか、今、現在の「ランダム関数」の値を、「X」などの変数に出力して、その「X」の値を見るだけで、わかるはずです。(これが、初期状態の時には、パソコンや、コンピューター一般で、同じ数列が毎回出ます!)
この値を使って、「今現在の時計の時間」とか、外部の現在の「温度計の温度」とかの数値をかけたりして、「若干、複雑な”乱数”っぽい事」をやっているだけです。(なので、本物の数学上の「乱数」では、全然なくて、違います!)
なので、「乱数」初期化のような事をやれば、「100%完全一致」で出力できるので、逆にこれを生かして、ゲーム機などの「再生リプレイ映像」とか、レースゲームの「ゴースト」データなどでは、塵の1点に到るまで、「まったく!同じに出力できる!」わけです!
(「乱数」って何?)
「乱数」自体の定義は、けっこう難しくて、さらに、「ある特徴をもった乱数(ムラがあるなど)」もあるわけです。
それで、簡単な所で説明すると、サイコロを振って出る確率のような物なわけですが・・・。
実際の「自然科学」の領域の所は、けっこう複雑で違うのです!
学校では、このような感じで、サイコロを振ると、最終的には、「全て、綺麗に、6分の1になる!」なんて、教えられますが、よく考えてみると、「これって?乱数なのか?」と思う程に、あまりにも綺麗に「スパッと!6分の1」という「乱数」も変だ!となるわけです。
それで、実際には、この「綺麗な6分の1」の部分に、何らかの「波」や「リズム」の波動成分が、「ゆらぎ」として入っている事の部分が「乱数」っぽいという事に気が付いてくるわけです。
「MMEエフェクト」の「炎エフェクト」などを、「ゆらめく炎」などにしたい場合などに必要な「ゆらぎのある乱数」の関数です。
さらに!「乱数」分布も同様で、このような感じで、「綺麗にまばら」だと、やっぱり「変だ!」という事ですが、ここで、けっこう大問題が発生します!
まず、サイコロを振って出た乱数プロットが、「綺麗にまばら」になる確立と、「ムラができる、まばら」になる確率といったような「全体の集合に対して、もう1度、確立をかける行為」をすると、実は!「数理論理学」上では、「パラドックス」が起こるので、やってはいけないのですが、どういう事か?というと、すでに、結果として、「サイコロの乱数分布図」ができているのに、集合全体が、「綺麗にまばら」になる確立と、「ムラができる、まばら」になる確率自体も、やっぱり「2分の1」とかのある数値になる事がわかっていますが、そうすると!元あった方の「サイコロの乱数分布図」といった全体集合部分で出した確立の数値が、さらに全体集合確立を取った事で「ずれてしまいます!」
こういった、「パラドックス」が起こる事は、論理学では、やってはいけない!わけですが、「乱数」というのを、もっと深く考えてみる為に、あえてやってみるわけです!(「学者」は、逆に、問題が生じた場合の方の検証こそが大事と考えるので、こういった事をやりたがります。)
「ムラができる、まばら」という特徴のある「乱数」も、ある1つの乱数なわけですが、こういった個性のある「乱数」の関数を、たくさん作って、これを使えば、例えば、「弾幕の射出速度の濃度が、濃くなったり、薄くなったりする」とか、現実のスプレーを吹く時に、独特のクセのあるムラができる。とか、2DCG絵描きの時の「特殊なムラのあるスプレー」とかになったりします。(2DCGの場合には、「半透明のアルファ」とか「色域の計算」とかも扱うので、「色」について、さらに、複雑な事ができます!「MMEエフェクト」の、半透明のアルファの色重ね合わせ計算も同様です。)
「乱数」や「関数」などは、このような感じで、できた物は、「何にでも、アナログでも、デジタルでも扱えてしまう!」という分野なわけです。
このような感じで、「ムラができる、まばら」状態になっているのが、実は、「宇宙空間の、かなり広い分布図」が、このような構造になっていて、「ボイド構造(泡構造)」とか言われています。(「ボイド」というのは、「超空洞」という意味で、よく宇宙論の説明の時に、この「超空洞」状態は、石鹸の「泡」の内側のような物だと、例えられるので、そう言います。)(星の密度分布の濃い部分と、薄い部分に分かれる。何となく、昔は、宇宙空間の星の分布は、「綺麗に、均一にまばら」になっているはずだとか思っていたわけですが、実際に観測してみると、そのようにはなっていなくて、「ムラができる、まばら」に散っています!)
(「乱数」と「波」や「ゆらぎ」)
いろいろなタイプのクセのある「乱数」を作ってみよう!という事で、先程の「綺麗に、スパッと6分の1」状態のサイコロの確率状態に、「波」や「ゆらぎ」を加えたりしながら、いろいろな「乱数」を作っていきます!
・乱数に「波」の「ゆらぎ」を加える。
ここで、知っておいてほしい事は、「波」という物には、いくつかの種類や、概念構造が大きく変わる現象がある!という事です!
・波は、「さざ波」「普通の波」「うねり」などという感じで大きくなっていきます。
まず、海などへ行くと、波がありますが、「小さい波は、”さざ波”」です!
海の普通の波、自体の表面にも、「さらに小さな波」が重なってできています!
こんな感じで、「波は、多層構造を持った大小の波の重なり」である事がわかりますが、それぞれのサイズの波で起こってくる「物理現象」や、含まれてくる計算の概念などが、かなり変わってしまう!のです!
それで!人間が海に行って目に見えるサイズの「波」よりも、さらに!巨大な規模の波の構造に「うねり」という物があります!
例えば、海に行って、「たぽんたぽん」している感じの「波」が見えますが、「波は、多層構造を持った大小の波の重なり」という事で、例えば、日本から、オーストラリアまで規模位が1つの振幅数であるような「何km」規模の振幅の、とても大きな「揺れ」も、実は、重なっているのです!
こういう規模の大きな波を、「うねり」と言って、物理学で、算術計算をしたりする場合には、かなり違う概念なので、別の処理が必要になってくるわけです!
まず1つは!「うねり」は「威力がデカい!」という事で、「津波」などの防災計算に使ったりするわけです!(通常の「うねり」と、「津波」と、満潮、干潮などの月によって引きおこされる「地球規模の波の揺れ」とは、全部、概念や、計算方法が、かなり違ってきます!)
さらに!大きな規模の波になると「綾波レイ」になる!という事で、大きな「うねり」を持った社会現象を引き起こすわけです!(ウソ)
ここまでで、わかってくる事は、「乱数」に、「波」や「ゆらぎ」や「リズム」パターンを組み合わせるにしても、使う波の構造によって、概念が、だいぶ変わるなぁとか、「波は、多層構造を持った大小の波の重なり」を実現するのは、やっかいそうだなぁという部分です!
(「波」の性質)(「光のお話」とかいう感じの物理学の本とかに、詳しく書いてあるので、読んでみると、細かい性質や、計算の際の把握がしやすいです。)
さらに!「波の性質」という、お話があって、これは前にも書いたわけですが、
「波」は、
・共鳴する(複数の波が重なり合って、巨大な波が引きおこされる事)
・回折(かいせつ)する(光などの波が、物質の裏側にまで回りこんでしまう現象の事。カメラで写真に撮ると、「光源」から、図学的に、直線を引いたラインに影ができるはずだが、実際には、物質の輪郭が、「ボワ〜」っとした感じで、少し明るくなったりする事。他には、「津波」の防災計画でよく出る算術計算です。防波堤を建てても、波は、裏側にまで回りこんでしまう事を、回折と言います。)
・反射する(一般の反射と、「全反射」という現象がある。)
・屈折する
といったような「波」独特の概念が含まれるので、単純に「乱数」に加算するにしても、いろいろなクセや計算結果が付きます。
この中で、「反射」と「屈折」は、学問的には、同じ現象で、「波は、違う物質間の境目で、その進む方向を変える」というのが、正確な所です。
「物質に当った時に、こちら側に跳ね返ってくる場合が、”反射”」で、
「物質に当った時に、物質の内側方向の角度に曲がっていくのが、”屈折”」です!
この「反射」と「屈折」現象は、「波の波長や、スペクトルによって、変わる角度の方向が変わります!」(これが、”虹”です!)
ここら辺の「スペクトル」「色分布」「波長」なんかが出てくると、「MMEエフェクト」とか、「CG」での色計算に影響してくるわけです!
(「フラクタル」)
「波は、多層構造を持った大小の波の重なり」と書きましたが、こういうような「同じような物の繰り返しからなる、複雑なパターン」の事を、
・こういった事を「フラクタル」と言います。
「波」を扱う際には、「フラクタル」まで考えなければいけなくなってくるわけですが、「フラクタル」というのは、面白い分野で、「MMEエフェクト」での、「頂点数を無視して、さらに表示できるモブ表現」のエフェクトができるので、「フラクタル」の考え方で、「MMEエフェクト」を作れば、例えば、「Y」のような形で、「フラクタル的繰り返しモブ」の「MMEモブフラクタルエフェクト」というのが作れれば、「桜の木」などを簡単に作れます!
さらに!今までは、頂点数の影響で作りづらかった「桜並木」なんかも作れるわけです。
「葉っぱ」や「桜の花」など、一般に、生物系の物は、実は、「フラクタル」的繰り返しで作れるので、今までのように、「テクスチャ」を貼るタイプの「木」「桜」「森林表現」などよりも、もっと本格的で、厚みなどもある3DCG表現が可能になるはずです!
(たぶん、Nintendo3DSなんかでは、こういったたぐいの、3DCG技術の「少量モデルデータ」から、「高繊細モデルデータ」変換技術が搭載される予定なので、「フラクタル」的な、3DCGモデル圧縮技術も出てくるはずです!)
「フラクタル」というのは、けっこう「情報圧縮技術」などに応用されています。
「フラクタル」というのは、「まったく同じ物」を繰り返すだけで、全然、違う概念の物を発生させる事ができる可能性を持っているわけですが、実際の所、「まったく同じ物の繰り返しなので、独特のクセが残ってしまいます!」
なので、「3DCG」や、科学計算で使う場合には、このクセが発生している事をふまえながら、扱っていく必要があります。
このような感じで、「乱数」や、「特徴を持った、個性のある乱数」を作ったりしていくわけですが、もっと、いろいろな方法もあるので、調べてみたり、独自に、手法を編み出してみて下さい。
MikuMikuDanceで、この「乱数の初期値」の数字になっている「乱数の種」的な関数や、数字の変更ができれば、かなり、望んだイメージになるような「物理演算」結果の映像出力をする際に、楽になってきます。
これと、似た感じの事は、「重力設定」の所にある「ノイズ付加」をONにしても、「物理演算固定」ができるようなので、「物理演算」の出力結果が、思ったイメージにならなかった場合には、それでやってみましょう!
評価:
かんなP,ラジP,極北P,ポンポコP 翔泳社 ¥ 2,079 (2010-05-11) |
評価:
かこみき ビー・エヌ・エヌ新社 ¥ 2,730 (2010-08-26) |
評価:
Niθ ホビージャパン ¥ 1,500 (2007-11-30) |
評価:
--- アルファオメガ ¥ 24,800 () |
評価:
--- 海洋堂 ¥ 2,438 (2010-09-01) |
評価:
かんなP,ラジP,極北P,ポンポコP 翔泳社 ¥ 2,079 (2010-05-11) |
評価:
かこみき ビー・エヌ・エヌ新社 ¥ 2,730 (2010-08-26) |
評価:
かんなP,ラジP,極北P,ポンポコP 翔泳社 ¥ 2,079 (2010-05-11) |
評価:
かこみき ビー・エヌ・エヌ新社 ¥ 2,730 (2010-08-26) |