サイエンス

ネコやドラゴンなどどんな形でも公平なサイコロを作る技術が登場


サイコロのように転がしても変形しない剛体が転がった後にどんな向きで安定して止まるのかを、コンピューターの中で物理法則を一つ一つ計算する「物理シミュレーション」という大変な方法を使わずに、物体の「形」そのものに着目して予測し、さらに思い通りの確率で止まるような形をデザインする方法を研究する論文を、カーネギーメロン大学やNVIDIA、Adobeの共同研究チームが発表しました。

Putting Rigid Bodies to Rest
(PDFファイル)https://hbaktash.github.io/files/rolling_dragons_paper.pdf

サイコロを振ったとき、どの面が上を向いて止まるかを計算するには、従来はコンピューター上で物体の転がりを何度もシミュレーションし、統計を取っていました。しかし、これには膨大な計算時間と手間がかかり、特に複雑な形の物体では正確な予測が難しいという問題がありました。


そこで研究チームは、物理シミュレーションを一切行わず、物体の「形」そのものが持つ幾何学的な性質だけを手がかりに、どの面で静止するかの確率を計算する手法に注目しました。

この手法の根底にあるのは、「物体は転がる際に勢いを失い、最終的には重心の位置が最も低くなる、つまり最も安定する状態で静止する」というシンプルな物理法則です。研究チームは、物体が様々な向きになったときの重心の高さを考え、この高さが物体の向きによってどう変わるかを数学的に分析します。

まず、物体の外側をすっぽりと覆う最小の凸な形を考えます。次に、この凸な形の各面や辺、頂点が地面に接したときの物体の向きを、「ガウス写像」という特別な方法で、球の表面上の点や線として整理します。これにより、物体のあらゆる向きを、この球の上の位置として捉えることができるようになります。


そして、物体が特定の向きにあるときの重心の高さを、この球の上の「地図」のように表現します。物体は、この「重心の高さの地図」の上で、最も急な下り坂を転がり落ちるように向きを変えていくと考えます。この「転がる道筋」を追いかけることで、最終的にどの安定なくぼ地、すなわち静止する面にたどり着くかを予測できるというわけです。

この道筋をたどる際には、物体が頂点で接しているか、辺で接しているか、面で接しているかで、向きの変わり方のルールが異なります。例えば、辺で接している場合、その辺が「車輪」のように次の頂点へ転がるか、あるいは隣の面にパタンと倒れるか、といった具体的な動きを分類し、計算します。

最終的にこの「重心の高さ地図」全体を分析し、どの安定な静止面に、どれだけの範囲の最初の向きから流れ着くのか、その「勢力範囲の広さ」を計算します。この広さの割合が、そのままその面で静止する確率となります。この分析には「モース・スメイル複体」という、地形のくぼ地や尾根、峠を数学的に表現する手法が使われています。


一連の計算は非常に高速で、例えば豚の形をしたおもちゃのサイコロの6つの静止する向きとその確率を、わずか3ミリ秒で計算できるとのこと。


この「転がり予測」の計算方法が優れているのは、単に速いだけでなく、「微分可能」であるという数学的な性質を持っている点です。これは、「物体の形を少し変えたら、静止する確率がどう変わるか」を計算で予測できることを意味します。この性質を利用することで、研究チームは剛体の「逆設計」が可能になったと論じています。

逆設計とは、例えば「各面が1/3ずつの確率で出る、公平な3面サイコロを、猫の形で作ってみたい」や、「2つの普通のサイコロを振ったときの目の合計が出る確率を持つ、特別な11面サイコロを作りたい」といった目標を設定すると、コンピューターが自動的にその目標の確率分布を持つように物体の形をデザインしてくれるというもの。

この設計プロセスでは、まず大まかな初期形状からスタートします。そして、「現在の各面の静止確率」と「目標とする確率」との間のずれを数値化した「エネルギー関数」というものを定義します。コンピューターは、この「ズレ」が最も小さくなるように、エネルギー関数の値が下がる方向を計算し、それに従って物体の頂点の位置などを少しずつ修正していきます。この修正を繰り返すことで、目標とする確率分布を持つ形へと自動的に近づけていきます。


設計は単に確率を合わせるだけでなく、「安定して止まる面はできるだけ平らで広い方が良い」「複数の面がほぼ同じ向きで安定するのは避ける」といった見た目や物理的な安定性に関する要望も考慮に入れることができるとのこと。これにより、より実用的で美しいデザインを生み出すことが可能になります。

研究チームは、ネコやアルマジロの見た目をした特殊なサイコロを3Dプリンターで製作し、実際に数百回から千回以上転がして統計を取りました。その結果、多くのケースで、計算による予測確率と、実際に転がして得られた実験結果とがよく一致することが確認されました。これは、運動量を無視するという単純化された仮定に基づいているにも関わらず、この幾何学的なアプローチが現実の現象を非常によく捉えていることを示しています。


実際に研究チームが3Dプリンターで出力したサイコロを転がすところを、以下のムービーでみることができます。

Tired of boring old dice? Roll some dragons and armadillos! - YouTube


もちろん、非常に勢いよく転がした場合や、物体が何度も跳ねるような状況では、運動量の影響が大きくなり、予測と実際の出目がずれることがあります。また、どのような初期の向きで転がし始めるかという条件の仮定や、3Dプリンターで非常に細かく複雑な形状を正確に作る際の製造上の限界なども、今後の課題として残されています。

しかし、将来的にはゲームで使うサイコロだけでなく、工業製品の自動組み立てラインで部品を正しい向きに置いたり、あるいはロボットが物を掴む際の安定性を評価したりと、様々な分野への応用が期待できると研究チームは述べました。

この記事のタイトルとURLをコピーする

・関連記事
2人以上集まることで架空のサイコロを生み出し乱数を発生させることが可能になる「ゆびダイス」 - GIGAZINE

サイコロの出目を選ぶだけで「人間の行動の複雑さ」を測定することはできるのか? - GIGAZINE

「真の乱数」を生成するためにCloudflareが波マシンを設置 - GIGAZINE

コンピューターはどうやって乱数を生み出しているのか? - GIGAZINE

コインやダイスとカップを使って暗号的に安全な乱数を作れる - GIGAZINE

in サイエンス,   動画,   ゲーム, Posted by log1i_yk

You can read the machine translated English article New technology emerges to make fair dice….