ラベル Rhinoceros の投稿を表示しています。 すべての投稿を表示
ラベル Rhinoceros の投稿を表示しています。 すべての投稿を表示

2022年3月1日

Rhinoceros 7 SubD

 
今さらだけどRhinoceros7のサブディビジョンサーフェスモデリングを試してみました。


Mayaや3ds maxと何が違うの?

基本的にはCG系ポリゴンモデラーのそれと同じです。ただ、CG系のそれに慣れていると細かい部分で機能不足を感じます。

というか、CG系モデラーに慣れているとついつい作りすぎてしまうからそう感じるんですよね...。

そもそもRhinocerosの場合、あくまでコンセプトモデリングとか初期サーフェースを貼るとかの想定でしょうから、SubDモデルに過剰にディテールをつけなくていいはず。

用途が違うんですよね。



Organic Shape Modeling

SubDは簡単に自由曲面を作れるので、とにかくヌメッとした曲面が欲しいだけならとても便利です。ただし、慣れないとなかなか思い通りに作れませんけどね...。

とはいえ、有機的で彫刻的な造形をしたい場合は重宝すると思います。アクセサリーデザインとか彫刻的な家具とかオブジェとか?

なにより、Rhinocerosに慣れている人にとってはひとつのソフトで出来るというのが素晴らしいのではないでしょうか?









CG系ポリゴンモデラー → Rhinoceros

他のCGソフトで作ったメッシュを互換してRhinocerosでSubDにすることもできます。

面の再分割手法がCatmull–Clarkなら同じようなSubD形状になるはずです。ただし、Rhinoceros上ではできないことがあるので、あくまでシンプルに作っておく必要がありますけどね。たとえばEdgeのCreaseの重み付けを値で指定したりはできません。

もっとも、ビジュアライゼーションだけならCGソフトだけで完結するわけですが、いろんなソフトを使い分けるのって結構大変ですよね...。

Blenderでレンダリングしたもの




2017年8月10日

Rhinocerosでバッチ処理

複数のファイルを一括処理

先日、そういう案件があって、AutoCADのScriptと一緒だと思って、
やってみたら少しハマったのでメモ的に残しておきます。

RhinocerosではMacroと呼びます。
書き方自体はAutoCADと一緒です。
ダイアログが出ないようにハイフン付きのコマンドを使います。
http://docs.mcneel.com/rhino/5/help/ja-jp/information/rhino_scripting.htm

ファイルのパスは_SetWorkingDirectoryコマンドで作業フォルダを指定します。
あるいはフルパスで指定したほうがよいです。
実行はマクロエディタからが簡単です。

下のマクロは
テンプレートを開いてpdfをインポート、25%にスケールして、全体を起こして、dwgとして保存して、全体ズーム、3dm保存。スクリーンキャプチャを撮る(ログとして)













2017年6月23日

Weed Polylines (Simplify Polylines)



頂点が非常に多いポリラインをなんとか軽く出来ないか?
"無駄な頂点を削除しつつ、形状特徴を残す"

きれいな等高線が欲しい時にこういう機能が使いたいわけですが、簡単そうでなかなか難しいです。
なのでちょっと調べてみました。


AutoCAD

検索してみると標準のAutoCADにはこの作業に使えるコマンドが無く、
Map3DやCivil3Dに"Weed Polylines"(ポリラインを間引き)というコマンドがあります。
標準のAutoCADでやるにはAutolispなどでスクリプトを書くしか無いわけですが、書いている人いました。
https://superuser.com/questions/263669/how-to-simplify-a-polyline-in-autocad



formZ

formZv6.xのReduceMeshコマンドを使うと簡単に頂点を間引きできます。
ただし指定できるパラメーターは "角度" のみです。

formZv8.5ではPolgonizeコマンドで頂点の間引きができます。
指定できるパラメーターは "頂点数" といくつかのチェック項目のみです。
これだとベクトルライン(ポリライン)の元々の頂点数を考慮しないと適切な処理が出来ないので一括処理は難しいです...。

formZ場合、コマンドがあるだけマシなのですが、問題はデータが重いと非常に時間がかかるということです。
何十MBもあるCADデータだったりするとほとんどフリーズしてしまいます。




Rhinoceros

Rebuild Curveコマンドで行けるのですが、これも個々のCurveの頂点数を考慮しなければいけません。
一括処理するためにはスクリプトを書く必要があります。
検索してみると、forumに同じことを質問しているスレがあり、ユーザーがスクリプトをアップしていました。
https://discourse.mcneel.com/t/simplify-polyline/38560/14

こちらのスクリプトの場合3次のカーブになってしまいますが、それで良い場合は問題ないと思います。

RhinoScript.orgにもスクリプトありました。
http://www.rhinoscript.org/scripts/114
でも一括処理が出来ないようで...残念。



RhinoPython

自分もPythonで書いてみたのですが理想的な間引きをするのがなかなか難しくてまだ改良が必要です。

参考にしているのはAutoCADのWeed Polylinesコマンドです。
https://knowledge.autodesk.com/support/autocad-map-3d/learn-explore/caas/CloudHelp/cloudhelp/2016/ENU/MAP3D-Use/files/GUID-E04B543E-29E7-4545-A4FA-DDDF861E4960-htm.html
大変シンプルなアイデアなのですが、これだけでは自分の思ってる感じにならないようで...。今後の課題です。


2017年6月5日

Grasshopper : Ladybug Tools



てんとう虫、ミツバチ、蝶...いったいなんのこっちゃ?って感じですが、
これを使うとRhinoceros+Grasshopper上で様々な環境シミュレーションができます。
Ladybug Tools

ちょっとだけ試してみました。
ソーラーパネルに見立てた傾斜のあるBrep面にどのように太陽光が反射するかを見てみました。

時刻や何月というのをスライダーで変えられるのですが、重い!
ソーラーパネルのBrepの数が多いとほとんどフリーズしたようになってしまいます。
メガソーラーとかだと簡単にシミュレーションするのは難しいかもしれませんね。

2017年4月30日

Grasshopper : Elk

Elkを試してみました。
ElkはGrasshopper用のアドインで、OpenStreetMapから書き出した地図ファイル(.osm)を読み込んでRhino上に地図モデルを作ることができます。
Rhino以外全部無料なのはよいのですが、最も重要な地図データがショボい。特に日本のデータは...。
オープンソースなので仕方ないですけどね。

個々の建物データにheight情報があれば高さのある3Dの建物モデルを作ることができます。
地図好きな方はご近所の情報を追加してください。
アカウントを作ってログインすると誰でも自由に地図を編集できます。


ElkはFood4Rhinoから。


2017年4月2日

Grasshopper

アプリって、使わないと忘れてしまう...。

ほとんど放置だったGrasshopperもすっかり忘れてしまいました。
やっぱり自由自在に使えたら楽しいだろうなぁって思って、またゼロからやってみることにします。
Rhinoceros + Grasshopper

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

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