tango constructorから出力したモデルをちょこっと綺麗にする

44
Tango Constructor #30

Upload: katsuyaendoh

Post on 22-Jan-2018

172 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Tango Constructorから出力したモデルをちょこっと綺麗にする

Tango Constructorから出力したモデルをちょこっと綺麗にする

社内勉強会#30スタジオアルカナ

遠藤勝也

Page 2: Tango Constructorから出力したモデルをちょこっと綺麗にする

綺麗にするモデル

https://sketchfab.com/models/4461c2d0da1a44588b499691f38aece4

https://sketchfab.com/models/9b2c4d3eb4ee4d8d9166ee07f6e23dc9

Page 3: Tango Constructorから出力したモデルをちょこっと綺麗にする
Page 4: Tango Constructorから出力したモデルをちょこっと綺麗にする

やってみよう

Page 5: Tango Constructorから出力したモデルをちょこっと綺麗にする

できれば3DモデリングソフトとかのAPIを叩いたりしたい

自分で頂点のいじったら

テクスチャの頂点とかもずれそうで怖い

候補

Blender

Mesh Lab

Page 6: Tango Constructorから出力したモデルをちょこっと綺麗にする

3Dモデルの編集に特化しているMesh Labで実験

Page 7: Tango Constructorから出力したモデルをちょこっと綺麗にする

ノイズを消すならおそらく

平滑化とかだろう!

Page 8: Tango Constructorから出力したモデルをちょこっと綺麗にする

だけどどんな平滑化手法が

いいんだろう�

Page 9: Tango Constructorから出力したモデルをちょこっと綺麗にする

http://cg.xyamu.net/Blender/entry276.html

Laplacian Smooth微細なポリゴンで構成されたオブジェクト表面の

荒れを軽減したり、シンプルな形状のオブジェクトを元に新しい形状にしたりできます。

Page 10: Tango Constructorから出力したモデルをちょこっと綺麗にする

Mesh LabでLaplacian Smoothを

試してみる

Page 11: Tango Constructorから出力したモデルをちょこっと綺麗にする

綺麗になったけど床に穴が空いてる

Page 12: Tango Constructorから出力したモデルをちょこっと綺麗にする

しかもStepを増やすと大きくなる

Page 13: Tango Constructorから出力したモデルをちょこっと綺麗にする

壁にも規則正しく

Page 14: Tango Constructorから出力したモデルをちょこっと綺麗にする

面選択すると綺麗に選択できちゃう

Page 15: Tango Constructorから出力したモデルをちょこっと綺麗にする

面選択すると綺麗に選択できちゃう

Page 16: Tango Constructorから出力したモデルをちょこっと綺麗にする

おそらくTango ConstructorではSLAMの際にこんな感じで平面を分割している

Page 17: Tango Constructorから出力したモデルをちょこっと綺麗にする

原因

おそらくTangoから出力されたモデルは1つの平面を複数の平面に分割している

解決策

重複する頂点をマージしてから平滑化してみる

Page 18: Tango Constructorから出力したモデルをちょこっと綺麗にする

マージして……

Page 19: Tango Constructorから出力したモデルをちょこっと綺麗にする

平滑化!!

Page 20: Tango Constructorから出力したモデルをちょこっと綺麗にする

できた!

Page 21: Tango Constructorから出力したモデルをちょこっと綺麗にする

一通りの手順

Page 22: Tango Constructorから出力したモデルをちょこっと綺麗にする

Mesh Labを立ち上げた画面

Page 23: Tango Constructorから出力したモデルをちょこっと綺麗にする

.objを読み込み

Page 24: Tango Constructorから出力したモデルをちょこっと綺麗にする

.objを読み込み

Page 25: Tango Constructorから出力したモデルをちょこっと綺麗にする

.objを読み込み

Page 26: Tango Constructorから出力したモデルをちょこっと綺麗にする

右上のFindから"Remove Duplicate Vertices"を選択

Page 27: Tango Constructorから出力したモデルをちょこっと綺麗にする

見た目はわからないけどマージされた

Page 28: Tango Constructorから出力したモデルをちょこっと綺麗にする

次は"Laplacian Smooth"を選択

Page 29: Tango Constructorから出力したモデルをちょこっと綺麗にする

Smoothing stepsとか設定できるけどそのままPreviewにチェックをいれて確認

Page 30: Tango Constructorから出力したモデルをちょこっと綺麗にする

Smoothing stepsとか設定できるけどそのままPreviewにチェックをいれて確認

Page 31: Tango Constructorから出力したモデルをちょこっと綺麗にする

適応前

Page 32: Tango Constructorから出力したモデルをちょこっと綺麗にする

適応後

Page 33: Tango Constructorから出力したモデルをちょこっと綺麗にする

一応比較

Page 34: Tango Constructorから出力したモデルをちょこっと綺麗にする

MeshLabにはmeshlabserverというcliが用意されている

みたいなのでスクリプトにしておく

Page 35: Tango Constructorから出力したモデルをちょこっと綺麗にする

環境

MacOS X High Sierra

Mesh Lab v2016.12

Page 36: Tango Constructorから出力したモデルをちょこっと綺麗にする

まずはQtの依存関係を解決$ cd /Applications/meshlab.app/Contents/MacOS$ install_name_tool -add_rpath\> "@executable_path/../Frameworks" meshlabserver$ ./meshlabserver

Usage:meshlabserver [logargs] [args] where logargs can be: -d filename dump on a text file a list of all filtering functions -l filename log of the filters is ouput on a where args can be: -p filename meshlab project (.mlp) to be loaded -w filename [-x] output meshlab project (.mlp) to If -x flag is

Page 37: Tango Constructorから出力したモデルをちょこっと綺麗にする

平滑化までの一通りの処理を

スクリプトで保存

1. 一通りの処理を実行するマージ -> 平滑化

2. 終わったらFilters > Show current �lter script

3. 処理があっているか確認してSave Scriptで.mlxを書き出し

Page 38: Tango Constructorから出力したモデルをちょこっと綺麗にする
Page 39: Tango Constructorから出力したモデルをちょこっと綺麗にする

<!DOCTYPE FilterScript><FilterScript> <filter name="Remove Duplicate Vertices"/> <filter name="Laplacian Smooth"> <Param tooltip="The number of times that the whole algorithm (normal smoothing + vertex fitting) is iterated." <Param tooltip="If true the boundary edges are smoothed only by themselves (e.g. the polyline forming the boundary of the mesh is independently smoothed). Can reduce the shrinking on the border but can have strange effects on very small boundaries." <Param tooltip="If true the cotangente weighting scheme is computed for the averaging of the position. Otherwise (false) the simpler umbrella scheme (1 if the edge is present) is used." <Param tooltip="If checked the filter is performed only on the selected faces" </filter></FilterScript>

Page 40: Tango Constructorから出力したモデルをちょこっと綺麗にする

実行

$ /Applications/meshlab.app/Contents/MacOS/meshlabserver \-i 20170626154555/20170626154555.obj \-o 20170626154555/output.obj \-m wt \-s merge_smoothing.mlx

Page 41: Tango Constructorから出力したモデルをちょこっと綺麗にする
Page 42: Tango Constructorから出力したモデルをちょこっと綺麗にする

まとめ

ちょっとだけ綺麗にすることができた

平滑化はあくまでオリジナルの形を崩してしまう

ことを理解しておくことが必要

Page 43: Tango Constructorから出力したモデルをちょこっと綺麗にする

参考

http://cg.xyamu.net/Blender/entry276.html

https://jnphgs.blogspot.jp/2016/06/meshlab.html

Page 44: Tango Constructorから出力したモデルをちょこっと綺麗にする

ありがとうございました