ねこでじ(Nekodigi)

Nekodigi’s diary

学習中の気づきをまとめています。応援よろしくお願いします

クリスタルのような美しい3Dボロノイ図が体験できるアプリ【無料】

www.youtube.com

このアプリについて

コンピューターグラフィックスやシミュレーションの現場で使われるボロノイ図とドロネー図を2D、3D、球状の全てで体験することができます。また、生成した図形に様々なアルゴリズムを適用すると、変形させたり、穴をあけたり、ツタのような模様を作ったりすることもできるのです。
f:id:Nekodigi:20210527212320p:plain
Get it on Google Play

使い方

1. スタートボタンを押す。

f:id:Nekodigi:20210527211032p:plain

2. 次元を選択する。

f:id:Nekodigi:20210527211103p:plain
これが次元を選択するためのドロップダウンです。
f:id:Nekodigi:20210527211226p:plain
2D、3D、球状を選択することが出来ます。

3. 図の種類を選択する。

f:id:Nekodigi:20210527211328p:plain
これが図の種類を選択するためのドロップダウンです。
f:id:Nekodigi:20210527211411p:plain
ドロネー図、ボロノイ図のどちらかを選ぶことが出来ます。

4. 適応するアルゴリズムを選ぶ。

f:id:Nekodigi:20210527211550p:plain
ラジオボタンから適応するアルゴリズムを選ぶことが出来ます。

オプション1. 頂点の数を設定する

f:id:Nekodigi:20210527211624p:plain
このスライダーで頂点の数を変更することが出来ます。数が大きいほど細かくなりますが、重たくなります。

オプション2. 図を再生成する。

f:id:Nekodigi:20210527211912p:plain
このボタンを押すことで図を再生成することが出来ます。

オプション3. 図をばらばらにする。

f:id:Nekodigi:20210527211951p:plain
いくつかの2Dの図を表示しているときに画面をタップすると、タッブしたところの周りの多角形がバラバラになって消えます。

体験できる三つの図形

ボロノイ図とは

美しい破片を生成することができるため、破壊シミュレーションの場面でよく使われる図形です。実は、自然界でも泡や微生物の骨格にこのような模様が現れています。
幾何学的には任意の点群の中で、最も近い点を元に領域分けしたものになっています。このアプリでは、ドロネー図の外心をつなぐ方法で生成する方法を採用しました。
f:id:Nekodigi:20210527212411p:plain

ドロネー図とは

正三角形に近くなるように三角形分割したものがドロネー図です。計算に適した三角形なのでコンピューターグラフィックスの分野でよく使われます。アプリ内ではでは一つ上の次元の凸包を平らに押し潰すようにして生成する方法を採用しています。
f:id:Nekodigi:20210527212439p:plain

凸包

母点群を凹みなく綺麗に包み込んだ形です。計算に適した形なので物理エンジンなどでよく使われます。ドロネー図のもとになる形で、意外に思うしれませんが、3Dの凸包は球状ドロネー図と同じなのです!様々な方法で計算することが出来ますが、このアプリでは4Dの凸包が必要となるため、高次元にも対応できるQuickhullアルゴリズムというものを使っています。
f:id:Nekodigi:20210527212452p:plain

適用できる5つのアルゴリズム

均等に広げる → ボロノイ図の緩和

生成されたボロノイ図の重心に母点を移動させると、なんと!たったこれだけで点を均一に広げることができるのです。この方法はVoronoi Relaxation(ボロノイ図の緩和)と呼ばれています。
f:id:Nekodigi:20210527212526p:plain

ツタのような模様を作る → A*アルゴリズム

地図アプリなどで使われるA*アルゴリズムを使い、任意の二つの点の最短経路を求め続けていくと、不思議なことに、ツタのような模様が出来上がっていきます!今回は曲線で描くことでさらに自然な仕上がりにしました。
f:id:Nekodigi:20210527212543p:plain

穴の開いた複雑な形を作る → 制約付きドロネー三角形分割

ドロネー図は決められた点を通るように変形することができ、これをConstrained Delaunay Triangulation(制約付きドロネー三角形分割)と呼びます。このアルゴリズムを使うと、星形やドーナツ型などあらゆる形のドロネー図を作ることができるのです!
f:id:Nekodigi:20210527212601p:plain

バラバラにしながら小さくする → 多角形のオフセット

タップしたところの周りの多角形をPolygon Offset(多角形のオフセット)という方法で小さくすると、ばらばらに小さくなりながら消えてゆくアニメーションができます。このアルゴリズムは、多角形のオフセットは輪郭を描いたりする場面でも使われています。
f:id:Nekodigi:20210527212630p:plain

破壊シミュレーション → ブーリアン演算

3Dモデリングの分野でよく使われるブーリアン演算を使うと、3Dボロノイ図と任意の立体が重なっている部分を計算することができます。そうすることで、任意の立体から美しい破片を作ることができます。
※非常に残念ですがスマホ上ではうまく動かず、アプリから取り除きました。
f:id:Nekodigi:20210527212650p:plain

Google Play

3Dのボロノイ図が体験できるのはこのアプリだけです!めったに見られない美しい技術をぜひ体験してみてください。
Get it on Google Play