論文読み: Make It Stand: Balancing Shapes for 3D Fabrication (SIGGRAPH '13)

今年の SIGGRAPH は7月の末にアナハイムであるのですが、そこで発表される論文がチラホラ著者らによって公開され始めています.まずは気になった論文を一つ、ざっと読んでみました.

読んだ論文について

読んだのは以下の論文です。

Romain Prévost, Emily Whiting, Sylvain Lefebvre, Olga Sorkine-Hornung
Make It Stand: Balancing Shapes for 3D Fabrication
SIGGRAPH '13
project page

研究の目標

この論文は 3D Fabrication,平たく言うと最近流行りの 3D プリンタに関する論文です.一言で言えば,3D プリントで出来たオブジェクトが机の上でちゃんと立つ(倒れない)ように最適化をかけるという話です.

例えば,変なポーズで片足で立っているようなフィギュアを出力したとしても,普通は接着剤などを使わずに片足で立つような絶妙なバランスのフィギュアは作れないと思います.これを作ってしまうというのがこの研究の目標となります.

関連研究

3D プリンタに対する入力は三次元のジオメトリですが,従来三次元のジオメトリはコンピュータ上で表示して見るためのデータ構造だったわけです.しかし,これを 3D プリンタで実世界に持って来ようとすると,物理法則との兼ね合いが問題になります.

最近の SIGGRAPH でも 3D プリントする前に物理法則を考慮して最適化するような研究がいくつか見受けられるような気がします.例えば以下は Adobe による研究で,3D プリントした結果に応力が集中してしまう部分があると折れてしまったりするので,それを自動で解析して修正してくれるというものです.

Radomír Měch, Nathan Carr, Ondrej Stava, Bedrich Benes, Jural Vanek
Stress Relief: Improving Structural Strength of 3D Printable Objects
SIGGRPAH '12
project page

もちろん物理法則を考慮するのは建築や機械の分野などでは当たり前のことだと思うのですが,近年のデジタルファブリケーションの流行りもあって,俄にコンピュータグラフィクスのコミュニティでも流行り始めているといったところでしょうか?

なぜ倒れるのか?

これは物理を少しかじったことがある人なら当たり前かもしれませんが,物体が倒れる理由は,物体にモーメントが発生するからです.モーメントが発生するのは,接地面からの垂直抗力が,物体にかかる重力を打ち消せない場合です.これは物体の重心位置(を地面に対して投影した点)が接地面に含まれていない場合に起きてしまいます.

そこで,物体が倒れないようにするには,重心位置を接地面に含まれるように移動させるか,重心位置を含むように接地面を拡大するかの 2 つの方針があります.

この論文では,接地面は変えず,重心位置のみを最適化することによって物体が倒れない状態を実現しています.

最適化手法

最適化計算の手法としては,あるエネルギーを定義し,それを最小化するような解(ジオメトリ)を探すという手順をとります.

エネルギーの定義には 2 つの項を考えており,1 つ目は変形によって重心位置を調節する項,2 つ目は内部を空洞にすることによって重心位置を調節する項です.

変形による重心位置の調節

詳細は省略しますが,モデル上に制御点をいくつか設定し,単純な Linear Blend Skinning (LBS) を行うことで変形を実現しているようです.

三角形メッシュの各頂点を自由に動かして変形させる方法も勿論あると思いますが,最適化計算に必要な変数の数が極端に大きくなってしまうため,このように少ない制御点で変形をパラメタライズしているのだと思います.

また,変形しすぎて元のジオメトリとほど遠いものが出来上がっても困るので,Laplacian editing による変形のエネルギーも考慮して,これが大きくなりすぎないようにするようです.

Laplacian editing については以下の論文で提案されています.

Olga Sorkine-Hornung, Daniel Cohen-Or, Yaron Lipman, Marc Alexa, Christian Roessl, Hans-Peter Seidel
Laplacian Surface Editing
SGP '04
project page

内部を空洞にすることによる重心位置の調節

ここでも詳細は省略しますが,内部を適切に空洞化することで重心の位置を調節しているようです.

従って,最適化計算の出力結果は 1 つのジオメトリではなく,外側の境界を表すジオメトリと,内側の境界を表すジオメトリの 2 つになります.

結果

結果が素晴らしいので,是非論文や動画をご覧下さい.