2017年2月28日

地形モデリング

等高線から地形をモデリングするお仕事をいただきました。
何回やっても苦労する仕事ですね...。
formZにはTerrainツールがあるので一見簡単そうですが、それがなかなかうまく行かないんです...。



[等高線]
    クライアントから等高線データが提供される場合でも必ずしも安心できないです。
    データに様々な問題があり、'使えない'場合が多々あります。
    そもそも、CADデータを貰えない場合も多いものです。
    その場合は地図の画像をトレースして等高線データを作ることになります。


[formZ]

Terrainツールが使えない場合も多々あります。

    - 等高線が途切れている
    - 等高線の自己交差
    - 等高線が敷地範囲をしっかり跨いでいない
    - 短い線分などのゴミが混じっている
    - 等高線が多すぎる

    幸いなことにformZにはTerrainツールの実行前にこれらの問題を事前にチェックする
    Contour Dr.ツールがあり、
    チェック時に'修正を試みる'というオプションもあります。
    ただしあんまり使えなくて、結局手動で修正することになります。
    修正すべきものの数が少なければ手動でもよいのですが、何百もあったらもう無理...。




等高線に問題があっても面を張る方法はないのか?

今回、高さ情報を持った等高線データを貰えましたが、
上記のようなデータの問題で結局Terrainツールは諦めました。
ではどうしたらよいのか?




[Rhinoceros]
    Patchコマンドを使うと複数のカーブ上に面を張ることができます。
    しかも早い!サーフェースの次数を調整すればグリッド状の面も張れます。
    ただし、サーフェースの分割数に制限があるので、
    あまり細かいメッシュにはできません...。
    IGES経由でMayaに互換した後、NurbsSurface to Polygonを使うと
    グリッド状のポリゴンメッシュにできます。ただし、元がNurbsサーフェースなので、
    凸凹部分が跳ね上がったり沈み込んだりします。





もう少しディテールのあるメッシュに出来ないか?

たとえばカシミール3Dみたいな地形作成ソフトだと最小5mとか10mメッシュくらいのデータを扱います。
5mというと自動車くらいの大きさですが、細い道路なんかは潰れてしまいます。
これでも地形モデリングソフトの世界では非常に細かいものです。
でも実際はもう少し細かく表現出来たらいいのになという場合が多々あります。




[Maya nCloth]
    MayaにはnClothという '布' をシミュレートする機能があります。
    Gravity(重力)を設定すればテーブルクロスを敷くようにメッシュを物体の上に
    被せることができます。
    今回は等高線を縦方向にExtrudeしてポリゴンメッシュにし、
    それをRigidに変換してテストしてみましたが重くて動きませんでした...。
    大きすぎて無理だと諦めました。





他の方法

コンターラインの頂点を'点群'と見立てれば、点群処理用のソフトが使えるのではないかと思い、試してみました。
今回は約240万点になります。





[ReCap]
    http://www.autodesk.com/products/recap-360/overview
    どうもProバージョンが無いとメッシュの生成と書き出しができないようです...。


[MeshLab]
    http://www.meshlab.net/
    Point Cloudを扱うオープンソースソフトウェアです。
    通常はレーザースキャンで生成される点群データを扱いますが、
    点データならとりあえず取り込めます。
    今回はMayaに取り込んだ等高線カーブからCVの座標情報を
    全部書きだしてデータとしました。
    3列の座標値の羅列のテキストデータです。
 
   データを取り込んだらダウンサンプリングした後、
    平均ノーマルを計算、
    Surface Reconstruction Ball Pivoting で面を生成できます。
 
    やってみましたが、これもあまりうまく行きませんでした...。
    等高線の性格上、均等にバラ撒かれた点群にはならないので、
    ディテールを潰さないように細かい設定にすると、
    穴だらけになってしまいます。逆に穴を埋められるように
    パラメータを調整するとディテールが無くなってしまいます...。
    まあ、レーザースキャン出来れば早いんですけどね。





結局、Rhinoで作ったラフなメッシュに手動でディテールを付けることになりました。
ローポリモデリングです。ディテールを端折って形状特徴をひろっていくという地道な作業です。
手間がかかりますが、無駄なポリゴンが増えず軽くて扱いやすいデータにできます。

今のところこれがベターなのかなと思っています。









2017年2月10日

formZ デフォルトマテリアル

初期設定のマテリアルパレットがイマイチ使いづらいので修正しています。
自分の場合、formZでレンダリングすることはほとんどないのでランダムにしておいて、
レイヤーマテリアルに使うことが多いですね。

テキトーにランダムで見分けやすくて美しいカラーパレットを探していますが、
今はとりあえずGoogle Colorを使っています。

2017年2月5日

formZ v8.5 メリット / デメリット


実は今回v6.6.2からv8.5.6へのバージョンアップです。
ただし、"乗り換え"ではなく、"両方使う"という選択です。
まだまだ自分にとって不十分な部分があって、完全乗り換えができません。
本来、自分は新し物好きなので常に最新アップデートを使いたいのですが、仕事に関わるのでそうも言ってられず...。

ご存知のようにformZはv6系からv7系へ変わるとき、大きくUIとツールが変わりました。
この変革が大きすぎてバージョンアップできずにいたのですが、ようやく使えるようになってきたので導入に踏み切りました。(※特に安定性の面で)

[OpenGL]
以前より安定したので非常によくなりました。
画面操作が非常に軽くなったし、Ambient Occlusionを使えるなど
画面が見やすくなっています。

[インタラクティブなモデル生成]
モデルを作図するとき、作図直後にサイズの調整をドラッグ&ドロップでできるよう になりました。
これもかなり便利な機能です。

[データ互換]
新しいバージョンのDWGを開けるようになりました。
v6.6.2は2007形式まででした。
FBXを書き出せるようになったり。
ACISの取り込み・書き出しもよくなっているような気がします。

[プッシュプルツール]
SketchUp風のプッシュプルができようになったのは便利ですね。

[サブディビジョンツール]
オーガニック形状を簡単に作れます。
ただし、作りこむのがなかなか面倒で...というか、ほとんど無理。
使うとすればほかのポリゴンモデラ―でローポリを作って
formZでサブディビジョン化してNurbsに変換というのがいいところかも
しれませんね。
Nurbsサーフェースにできれば3Dプリンティングに使いやすいと思います。

[ジェネレイティブツール]
アルゴリズムデザインでよく見かけるボロノイ分割とか簡単にできるように
なりました。
うまく使えば、Rhino+Grasshopperとかじゃないと難しかったモデリングが
formZ上でもできます。
将来formZ9が出れば、UIライブでスライダーを使ってリアルタイムに分割を
コントロールしたりできるようになると思います。



[Facetオプションの削除]
自分的にはこれが最大の問題で、
いくつかのツールで意図したエッジフローのFacetモデルを作るのが難しく
なっています。
スムーズモデルしか作れなくなっているものもあります。

ウチは最終的にmayaでレンダリングするので理想的には
"美しいポリゴンモデル"を作るのが望ましいのです。
エッジフローが整っていればmayaやmaxに互換する際のエラーも回避できるし、
その後のメッシュの修正やUV展開も容易になります。
スムースシェーディングもきれいになるし、レンダリング時のエラーも出にくく
なります。

[Select by criteriaのスクリプトタブが無くなった]
これも自分としては結構痛い...。
取り込んだCADデータがレイヤ分けされていないときなど大変重宝していたので。

[DWG]
DWGやDXFを取り込むとき、テキストがうまく変換出来ないです...。

[テキストのコピペ]
レイヤ名など単純なコピペがうまくいかないときがあります。

[下絵]
扱いが若干変わって戸惑います。
サイズや位置の調整に使っていた自作スクリプトが動かなくなっています。


細かいこと言うとほかにもいろいろあるのですが、それはおいおい。