2019年5月19日日曜日

Meshmixerを使ったデータ編集

 
自作3Dプリンタ(大)が完成しましたので、当初からの計画通りミクさんのプリントに向けて準備をします。
出来合いのデータをそのままプリントするのもいいのですが、ここは一定のこだわりを持ってより高い完成度を目指したいと思います。

すなわち、

  • スケールは1/2とする
    初音ミクさんの身長は158cmです。よって1/2スケールは79cmの高さです。
    今回作った3DプリンタのZ軸MAXは約35cmなので、さすがに一発ではプリントできません。分割は必須となります。
  • 分割プリントし、サポート材が極小になるように分割位置を工夫する
    一発でプリントできない以上分割は必須ですが、どうせ分割するならできるだけサポート材が少なくなるような位置を探りたいと思います。
  • カラーフィラメントを使って塗装を少なくする
    例えば髪のように一色の部分はカラーフィラメントを使ってみたいと思います。
    レーシングミクさん2015Verの髪は青です。すでにamazonにて青フィラメントを手配済みです。
  • レーザ加工パーツなんかも組み合わせたい
  • やわらかい素材は使わない
    ボディだけプリントして、ドール用の衣装を着せてしまうとそれで終わってしまうので、ドールパーツを使うのは無しにしようと思います。
    その意味も込めて1/6でも1/3でもない1/2というスケールを選択しました。
    また、球体関節にもしません。この辺りは次回以降に取っておこうかと(笑
  • フィラメントはPLAのみを使う
    ABSを使うと成形物の切削性が上がりますが、プリントの難度がめっちゃ高くなるので使いません。ベッドも加熱できませんしね。
  • 最終的には瞳を入れたい
    元データの顔は微妙な凹凸があるものの、表情らしい造形はありません。ので、大きく出力するとのっぺらぼうになっていやーんな感じになる可能性があります。
    そこで、瞳を入れることを考えています。
    さらに、この瞳は既製ではなく自作してみたいと思っております。
といった感じかな。

ということで、Animu氏の元データを活用しつつ、大きく加工していくことになります。
Animu氏に感謝であります。


さて、問題は加工ソフトです。Animu氏が公開しているデータはSTLです。3Dプリント用ですから最も一般的なファイル形式です。このSTLを編集しないといけないのです。
みら太な日々で3Dを扱う場合の標準ソフトはfusion360、またはSketchUpですが、これらはSTLを扱うのが得意ではありません。STLで出力することはできますが、編集できることは極めて限られており、激重でもあります。

例えばfusion360でAnimu氏のデータを読み込んでみると、こんな感じです



ちゃんと読み込めて、このように領域の選択もできますが、この先にできることが極めて限られています。


STLデータの編集はメッシュモードで行うのですが、ここで使えるコマンドは限られていて、簡単に言えば、まっすぐ切る、繋ぐ、穴を開ける、穴をふさぐ、メッシュを減らす、くらいです。
fusion360は、ソリッドモデルやTスプラインフォームを編集する機能はそれこそてんこ盛りにありますが、メッシュとなるとまだまだです。パッチモードも使えません。
なんでこんなに面倒なのかというと、詳しい話はGoogle先生に聞いていただくとして、STLが三角形の集合体からなるサーフェスモデルであるということに起因しています。
fusion360はほかの有名3D CADソフトと同様に、ソリッドモデルを扱うのが最も得意なソフトウェアであります。ソリッドモデルというのは、中身が詰まった粘土や羊羹のような物体です。一方でサーフェスモデルは、紙風船のように中身が空っぽな物体です。ソリッドモデルもサーフェスモデルも共に表面を持っていますが、ソリッドモデルの表面に裏側が無いのに対し、サーフェスモデルの表面には裏側があります。
ソリッドモデルの表面を除去することはできません。表面を削ってもそこには中身の断面が表面として存在します。羊羹にかぶりついたら自分の歯形が切断面に残りますよね。それに対して、サーフェスモデルは紙風船ですから、表面の一部を除去すると、いわゆる破れた状態になり、できた穴から中をのぞくことができます。中の奥(?)の向こう側には反対側の表面の裏側が見えます。サーフェスモデルには表面に裏があるのです。
ここで「SketchUpはサーフェスモデラやんけ」という方がいらっしゃると思います。その通りです。スケッチアップで作った形状も一部を破って中をのぞくことができます。スケッチアップや、有名なライノセラスなんかはサーフェスモデラーです。であればSTLを扱えるか、というとこれまた別の問題でむつかしいのです。サーフェスモデルは、表面を三角形の集合体(三角メッシュ)で表現するものと、(主に)四角形の集合体(四角メッシュ)で表現するものがあり、いわゆるサーフェスモデラーのほとんどは四角メッシュを扱うのです。
私も3Dを扱い始めた当初はこのあたりが全く分かっておらず、何が何だかちんぷんかんぷんでしたが、ようやく「何がダメなのか」くらいはわかってきました。
おそらく三角メッシュは、元がソリッドだろうがサーフェスだろうが、健全な表面からなる立体の情報があれば、表面を近似的に覆いつくしてその立体を表現するのが簡単なのだろうと思います。
任意の三点で一つの面を定義できますが、この面が立体に近似的に沿うように配置することを考えると、とりあえず一つの三角形からスタートすれば、近傍の一点を決めるのは比較的簡単です。立体が曲面であれば、近傍の一点は近いほど近似の精度が上がります。そして、その一点を置けば元の三角形の一辺との間に新たな三角形が定義できます。そしてその次以降の近傍点も同じ考え方で定義し続ければ、いずれ三角形メッシュは一周回って自分自身に到達し、立体の全表面を覆いつくことになります。
このように三角メッシュは(立体が健全な限り)作るのが簡単なのでよく使われているのだろうと思っています。立体全体のことが分かっていなくても、精度だけを頼りに近傍点を探していけばファイルを作ることができます。自分が覆っている表面がどんな形をしているとか、どこに穴が開いているとか全く気にする必要がありません。精度は三角形の細かさ、すなわちメッシュの細かさです。よって、ファイルは三角形の頂点を表す座標点群と座標点群のどちら側が外なのかを表現する情報だけがあればよいということになります。
あんまりこの話を続けると本題に入れませんので、ここでやめます。わかってないわたしがネットにゴミ情報を流すのはやめておくべきだとも思います。
検索してここにたどり着いた方、すみません。この話に信頼性は無いです。

例によって迷走しています(笑
やりたいことは、STLファイルの編集であって、その内容は、出っ張りを引っ込ませたり、膨らませたり、削ったり盛ったりといったものです。これがfusion360では出来ず、SketchUpでも非常に面倒なのです。SketchUpに至っては、私の知っているバージョンではプラグインが必要でした。
ではどんなソフトであればSTLの編集ができるのかというと、私が知るフリーかつメジャーどころではMeshmixerとBlenderです。このほかにもSTLを修復するソフトウェアはたくさんありますが、引っ張ったり削ったりといった編集ができるものになると非常に限られているのです。
Blenderは過去二回挫折した(笑)経験があり、あんまり使いたくありません。選択が右クリックというところでまず「??」となり、左クリックでやって来るUFOみたいなの(笑)でさらに「????」となり、挫折、というよくあるコースです。
幸いにも、我が息子がBlenderで食っているので、最後の最後は教えを請えば先生になってくれるだろうと思っております(笑

ということで、長々長々前置きを置いてようやく本題です。
今回のミクさんデータ編集にあたって、Meshmixerをマスターします。Meshmixerはfusion360と同じAutodeskが公開しているソフトであり、信頼感が抜群であります。実際、現在fusion360に実装されているメッシュ編集機能は、Meshmixerをベースとしており、いずれMeshmixerとfusion360は統合されるという話もあります。
Meshmixerは非常に高機能なSTL編集ソフトなのですが、特に国内ではいまいち盛り上がりが無いように思えます。情報は断片的かつ基礎的なものばかりで、突っ込んだ編集方法などを調べると全部英語ページかYoutubeに飛ばされます。
まあ、このご時世に英語だからと敬遠していては情報を得られなくなりますが、やはり理解のスピードがいきなり1/10くらいに落ちるので大変であります。
が、今回覚悟を決めて、Helpやtutorialを読み、Youtubeを見て、なんとかやりたいことはできるようになりました。
自分の備忘録も兼ねて記録しておきたいと思います。

インスコとかそのあたりはいくらでも情報があるのでそこを見てください。ここではゾウさんとマグカップを合体するとかいう単純な話はしません(笑

まず読み込み。回したり拡大縮小が問題なくできることを確認。
拡大しておいて「c」を押すと画面の中央に回転中心がセットされます。こうすることでスカートの中に頭突っ込んだり、髪と背中の間に入ったりすることができるようになります。


まずやりたいことは、この部分。髪とスカートが重なっています。
この部分はスカートを逃がして髪を通す形に変更したいです。


ちょっと破ってみると、内部の空間が見えます。サーフェスモデルですから。
破るのは選択しておいて「x」。選択は見えるところを選択するアンラップと球選択があるのでやりやすいものを選ぶ。ドラッグすると投げ縄選択になって、奥のほうにあるものもまとめて選択される。思わぬところを選んでしまう可能性があるので注意して使用。


作業しやすいように髪を切ります。スカートの隙間に潜り込んで後ろに向かって投げ縄選択してx。体との連結が解かれた髪の先の部分のどこかを選択してeを押すと選択部分に接続する面全体が選択される。


ので、そこでxを押すと髪が削除される。


なんかキャラが違う(笑 が、これはこれでイイ


右も同じようにして切り落とします。


以下編集に邪魔になるところをバンバン切っていって、編集したい左髪とスカートの干渉部分の周りの面をざっと切り落とします。


この状態で、解析→検証すると「ここが破れてるよ」と教えてくれて、自動修復を選ぶと、


適当に面が貼られて閉じた立体になります。トポロジー的には球体と同じものになるということです。(厳密にはスカートのひだの重なり部分に数か所穴がありますのでトポロジー的にはトーラスです。)


髪を落とした部分もこのように修復されます。


が、修復面はささくれ立っており、貼られた面も膨らんでいます。
最終的にはこのへこみ部分に髪が入り込んできますので、組み立て精度を考えて一定量髪から逃げておく必要があります。


このあたりからが本題。日本語の情報があんまりありません。
ブラシを駆使して修正をしていきます。


こんな感じ。


ここで、私が今回把握したと思っているブラシの情報を書いておきます。ブラシの設定にはパラメータがたくさんありますので、間違いがある可能性がありますが、この辺りは日本語の情報が少ないので敢えて書き残します。これを参考にしていろいろやってみてください。

ブラシメニューはこのように展開されます。


ブラシ、プロパティ(ブラシの効き具合の調整)、リファイン、フィルタがあります。
プロパティは、強度、サイズ、奥行き、ゆるい(笑)、の調整と、シンメトリ、フロー、ボリューム、シンメトリスナップがあります。
奥行きはよくわからんです。ゆるいはブラシの径から周りへ滲み出す範囲の大きさ緩いほど広い。シンメトリは使っていませんが、顔の様に左右対称の立体の編集用です.
fusion360のTスプラインモデルの編集にも似たものがありますよね。そのほかは触っていません。
リファインはブラシの効果を施しながらメッシュをいじるかどうか、いじるならどんなふうにいじるかを決めるところ。これは触らないとわからないと思います。wを押してワイヤフレームを表示した状態で扱うと何が起きているかわかります。メッシュが荒いと押し引きした時に面がかくかくしますが、細かいと滑らかに変形します。今から変形させるところのメッシュが、やりたい変形に対して十分に細かいかどうかなんてわかりませんが、リファインをONにしておくと勝手にメッシュを細かくして調整してくれます。ブラシがちゃんと効果を出すかどうかはリファインの選択有無で大きく変わります。これだいじ。データ量に問題がないなら基本ONでいいような気がします。
但し、リファインしすぎると三角形の数がものすごく多くなってデータサイズが大きくなり、PCによっては重くなるかもです。が、メッシュを増減させるブラシ(下のピラミッドみたいなやつ)もありますので、あとからなんとかできるだろうとも思っています。
フィルタは触ってないので不明。


で、ブラシです。
ここで声を大にしておきたいのは「CTRLを押すと効果が逆になる」です。押し出しブラシはCTRL+で掘り込みブラシになります。


今回動作がなんとなくわかったものはこれら


アイコンを見るとなんとなく動作が分かるような気がしますが、これが一筋縄ではいかない(笑
水色の線と灰色の線がありますが、水色が「編集前の表面」灰色が「左クリックをするとこうなる」に近い(笑)線です。

さて、何度も言いますが、わかった範囲で、まずこれ。Tipsではドラッグと表示されるブラシ。以降、Tips表示でブラシ名とします。


比較的簡単です。リファイン必須。表面の一部をつまんで引っ張りまわすと考えてください。それが近いです。クリックしただけでは形状は何も変化がありません。wを押してワイヤーフレームを見ると、メッシュが細かくなっているのが分かりますが、それだけです。このブラシはドラッグで効果が出ます。動かすとすぐわかりますが、ドラッグする方向で引っ張り出したり穴を掘ったりが変化します。ドラッグを始めた点が乗っている面がどちらに傾いているかによってドラッグ方向と凹凸の関係が決まります。
このコマンドはドラッグを始めた点を最後まで放さない感じに近いかな。早すぎるとついてきませんが。
ドラッグする方向によって、こんなものができます。ドラッグを開始した点から角を出したりできます。


次この二つ。Tipsでは描画1,2と表示されます。1,2という表示の通り、二つの差は効果の強度の違いの様に思われます。
クリックするとその位置が盛り上がり、そのままホールドするとどんどん盛り上がりが高くなります。が、さっきの左上のブラシと違うのは、この状態でドラッグすると、せっかく引っ張り出した先っちょを捨てて、新たにカーソル下にある面を引っ張ろうとします。


よって、一定速度で動かすと下の左のかまぼこ型が、CTRL+で右の溝ができます。
このブラシでは、直線の角は作れますが、曲がった角は作れません。
強度とドラッグ速度、選択サイズで効果が異なります。ミクさん修正ではこのブラシを最も多用しました。


次、このよくわからんアイコン。Tipsはフラット化。


効果はアイロンがけ、あるいは左官コテ、といったところですか。
下の左が描画ブラシでかまぼこを作ったもの、右は同じかまぼこを作ってから、稜線にこのフラット化ブラシを適用したもの。


横から見るとよくわかります。まさにアイロン。


このブラシは単純に出っ張りを平たい板で押さえつけるだけの様に思えますが、実はもう少し複雑です。
もう一例。描画ブラシを平面上でCTRL+クリック&ホールドするとこんなくぼみができます。


これに、選択範囲を広げた(下の絵の上のほうの透明半球)この平坦化ブラシを穴の真上でクリック&ホールドするとこうなります。


斜めから見るとよくわかるかな。穴の底は上がって、穴を取り巻く平坦化ブラシの選択範囲は若干下がっています。
つまりこの平坦化ブラシは単なるアイロンではなく、選択範囲内の凸凹を平均化するブラシなのです。よって、穴がへこんでいる分、選択範囲内の元平面が引っ張り込まれて少し下がったということです。この状態でホールドし続けても変化はありません。目的が選択範囲の平均化ですので一旦平坦になったらそれ以上の変化はないという点で理にかなっています。内部では一生懸命計算をしているのかもしれませんが(笑
描画ブラシで作った稜線で同じサイズの平坦化ブラシを使うと、稜線の盛り上がりの山なりが平均化されて、結果平坦になったということです。便利に使えそうなブラシです。


ちなみに、この平坦化ブラシをCTRL+で使うと、今までの逆の考え方になるわけですから、こうなります。
何もなかった平坦面にわざわざ凹凸を作り出します。下の絵では穴が二つ開きましたが、どういうルールかは不明です。


お次、Tipsは膨張。


描画ブラシとの差が良くわからないブラシです。強いて言うならリファインのルールが違う感じですか。これもリファインの設定で同じにできそうな気もします。
下の絵で、左下は描画ブラシをクリック&ホールドしたもの、左上はドラッグしたもの。右は同じことをこの膨張ブラシでやったものです。外形は同じようなものですが、メッシュの密度が違いますね。


お次。Tipsはピンチ。ピンチはつまむという意味ですね。


何をつまむのかというとメッシュのようです。下の左はクリック&ホールド、右上はドラッグ、右下はCTRL+です。メッシュが寄っているのが分かります。
このピンチブラシは左クリックでは形状変化はありません。メッシュが寄るのみです。おそらくエッジを立たせる前にメッシュの密度を上げるような操作に使われるのではないかと想像します。fusion360のTスプライン処理でも鋭角な曲がりを作りたいときはメッシュを細かくしますよね。
CTRL+はよくわかりません。つまむの逆意って何ですかね。これが一つの回答です(笑
穴の中にメッシュが詰め込まれてよくわからないものができています。


ちなみに穴を開け(選択してx)て中を覗き込んでみると、左クリックピンチは裏面も平坦ですが、CTRL+はよくわからないものができています。なんに使えばいいのか想像がつかないです。


お次。スパイクブラシ。


クリック&ホールドでこの蛇花火みたいなものが(笑


ドラッグすると地獄絵図。


しかもメッシュが破れております。なんに使うのか。ランダムな効果のためだとは思いますが、高貴&エレガントなミクさんには不要なブラシであることは間違いないです。


CTRL+では裏面が地獄絵図になります。


お次、バブルスムージングブラシとシュリンクスムージングブラシ。対になっていますので一緒に説明します。


まず描画ブラシでかまぼこを二本作ります。


左のかまぼこの左側がバブルスムージングブラシの左クリック、右のかまぼこの右側がシュリンクスムージングブラシの左クリック。
わかりますかね。どちらもかまぼこの盛り上がりを緩やかにしようとする処理ですが、バブルは谷線の変曲点を凸側に持ち上げているのに対して、シュリンクは平坦までしか持ってきません。程度の差という感じですか。


それぞれのCTRL+。バブルのほうは盛大に彫り込みますが、シュリンクは基本的に同じ効果になるようです。


お次、安定スムージング。
これはシュリンクスムージングとの違いがいまいちわかりません。設定で同じことができそうな気がします。シュリンクブラシがあれば事足りるように思われます。
きっと私が理解してないだけと思いますが.....


最後はメッシュを増減させるだけのブラシです。
+は増やし、-は減らします。右の-も減らすんですが、元のメッシュの構造によって結果が変化します。Tipsはアダプティブ削除となっており、一定のルールがあるものと思われます。いずれのブラシも形状の変化はありません。メッシュの数と形が変化するだけです。


......疲れました。
ほかにも編集とか解析に書き残したいところがあるのですが、別途にしたいと思います。

さて、以上のようなブラシを駆使してミクさんの髪を取り除いた部分を加工していくわけです。ようやく本題に戻ってきました。
解析→検証によってふさいだ破れのエッジはシュリンクスムージングブラシで滑らかにし、やや膨らんだ修復面(下の色が違う部分)は髪と干渉しますので、描画ブラシの選択を大きくしてCTRL+でへこませます。もう何やっているかわかるでしょ?


同じことを右側の髪についてもやります。


ただ、右側についてはスカート以外に肩も髪と干渉しています。
衣装であれば髪から逃げてもいいと思いますが、肩が髪から逃げるのはおかしいので、ここについては髪のほうを肩から逃がします。


破れたところに面を貼って、


ブラシを使って修復します。肩の部分は左肩と見比べながら描画ブラシで盛り上げていきます。


これで髪と干渉している部分の処理は終わりました。
まだまだこの先には分割作業があり、先は長いのですが、投稿があまりに巨大になりますので、ここで一旦区切りをつけます。続きは来週投稿します。疲れました。

最後に、分割の最終形態をチラ見せ。
髪とスカートの干渉部分。ギリギリで逃げているのが分かりますかね。さらに、スカートと髪に色がついているのにご注目を。


Meshmixerでは立体に色を付けることができます。


色を付けた完全体のミクさんです。


Meshmixer楽しいです。皆様もぜひ。ソリッドとTスプラインと四角メッシュモデルはfusion360で、三角メッシュはMeshmixerで編集すればおおよそ3D図形で怖いものは亡くなると思いません?それはそれは素晴らしいことです。
では次回をお楽しみに。

急に3Dスキャナ作りたくなってきました。レーザ加工機の前に作るかな。
さらに発散するみら太な日々であります。