16式機動戦闘車のマズルブレーキvsGrasshopper(後編)

 はい。前回はボディと9つの分割点まででしたがそれ以降をやります。

 前回作った鉛直の9段の座標をList itemという一つの値に対してリスト中のその行の値を抽出するコンポーネントと一つ一つの変数でそれぞれに分割していきます。

ウッ


 それを別に外周の円を7等分した点に合わせてz座標分移動させます。



中心軸の9つの点と円を7等分した点のz座標を一致させたょ

 こうなります。

  これらの点をそれぞれ円を56等分(n*π/28)した分だけ回転させていきます。Lineを引いた後にCircle、Extrude命令は座標の指定が面倒なのでPipe命令で処理していきます。


 Pipe処理する前の状態です。ねじった上でLineを引きました。


できました。Pipeはオプションでフラットなフタをしてソリッドにしています。(ブーリアンで処理するため)

 


 メインの円筒とは別に63個の円柱をブーリアンでぶっこ抜かないといけないのですが、データ形式としては「9つの穴を開ける7回の命令」を「63個の穴を開ける一つの命令」にするためにmerge(複数の変数を統合)し、Flatten tree(一つの数列の流れに統合)というコンポーネントにつないでまとめます。(まとまってないと未完成の円筒が7つできたりします)この辺は行列やテンソルがわからないとしんどいポイントです…

階層的なデータ構造が解体されてただの羅列になっています。


 先ほどの円柱を円筒にして、さらにブール演算をさせます。画像は間違えていて、BooleanDiffernceです。



できました。やったぜ。


あまり意味はないのですがパラメータが可変なのでいろいろ作ってみました。


 いろいろわかりにくいと思うので、全体の概観としてはこんな感じです。いやこれ伝わらないと思いますが、お疲れさまでした。


16式MCVのマズルブレーキvsバッタ(前編)

 はい。先日変な方向に思い切りがいいのでRhino6を買ってしまいました。だって急にボブから「お前のライセンスは消えないよ(大意)」ってメールが来たのでそりゃあ買ってしまいますよね。で、そのRhino6にはプラグインだったGrasshopperという機能が標準搭載されておりまして、10年ぐらい前のRhino4時代から気にはなっていたのでいっちょ勉強しよう!と勢いで入門書まで買ってしまいました。

 で、話は打って変わって全く関係ないんですがホビーショーでタミヤから16式機動戦闘車の先行販売があったらしいですね。いいなあ。欲しい(欲しい)

 実物を入手していないのでわからないんですが、どう考えても模型メーカー泣かせとしか思えない鬼のようなマズルブレーキの形状は再現を見送りデカールで表現ということで、こだわりたいハイレベルなモデラーおじさんは工作したりアフターパーツ(韓国のDEFModelから出てます)を買ったりされているみたいです。

 ここで話が繋がるのですがふと「キット実物を持ってないし寸法もわからないんだったらRhino/Grasshopper上でそれっぽい形状をこさえるのを目標にすれば勉強になるんじゃない?特に模型としての意味はないけど」という思いつきに到達します。
 なぜかというとRhinocerosは元来(3DCADとして捉えた場合)ヒストリ機能が弱かったんですが、その点を踏まえてかGrasshopperを使ったモデリングではそれを補完する力が非常に強力になっていて、これを試してみない手はない!という演習の意味もあるからです。

 目標しては「なるべく全パラメータ可変のソリッドをbake(GrasshopperからRhinoに出力)する」とします。前フリが長い。

 Rhinoを起動します。先日起動したままアップデートしてしまい「ライセンス認証に失敗しました。エラーコード-200」と出て焦りましたが再インストールで事なきを得ました。

白いあんちくしょうが眩しいぜ























 プラグイン時代はインストール後にコマンドラインから「Grasshopper」と入力して起動していたのですがRhino6では標準メニューにアイコンがあるのでワンクリックで起動できます。

おしゃれな起動画面(個人的にはタイムボカンのバタバッタンみたいなのがいい)



左上の黒いのをクリックするとアップデート時の新機能が出るっぽいです(詳細不明)



ウッ


うろたえるな。勝利は目前だ。(c)ながい閣下


















































 起動するとまっさらなのですが、男らしく原点に点を打ちます。3DCGソフトで最初にやるのはだいたい点を打つことですが、これがつまんなくて死にそうになるのを越えるのが3DCG全般の最初の壁な気がします。


 まずスライダーというコンポーネント(Grasshopperでは四角いのをこう呼びます)を置いていきます。変数を入力するためのもので、少数(と小数点以下の桁数)、整数、偶数、奇数、範囲を設定できますがやりかたは割愛します。全て0に設定して右の点を打つコンポーネントと繋ぎます。右の小さいのも座標を点にするやつですが今回つないでる意味は特にないです。(よくわかってなかったので)


 黄色い「パネル」というコンポーネントは「今入力されてるデータが何なのか」というのを表示するものです。イチから書いて入力するデータも作れますしコメントも書けます。
点が打てたょ(やったね)

 この段階ではあくまでGrasshopper内での処理で、うまくいってることを確認するためのものです。Rhino上で扱うためには先述のように「bake」する必要があります。

 マズルブレーキはたぶん真円でできてるんじゃないかな(未確認)と思うので円を描きます。バラバラでもよいのですが、厚みの分を引き算のコンポーネントで処理させることで外周と内周を連動させています。

円の中心座標をさっき打った点からもらっているょ


円が描けたょ(やったね)








































 描けた円をExtrudeという命令(Rhinoではよく使います)で鉛直に押し出します。Capという命令(同様によく使います)によりフタをして円柱にします。
現状重なっている(干渉している)二つの円柱をブール演算することでぶっこ抜くことにより円筒にします。(後でやります)


二つのソリッド(GHではなんでかBrepと呼びます)が重なった状態です。






























 メインとなるボディはできたことにして、空ける穴の方の準備をします。マージンをとった上で直線を引きます。マージン分移動した座標からマージンを引いた長さの線を引くので上下対称になりますよね。当初さらにマージン分引いた長さにしてしまっていたのでアホなのでうまくいかず悩みました。

正しくは「8等分させることで9個の点座標を得ている」ですね。アホですね。

上下等しいマージンをとってから等間隔で9個の点座標を得たょ


















 すいません。これ以降やや煩雑になるので後編に続きます。

C101告知

  お世話になっております。特に何もなければC101にサークル参加の予定です。 当日は対戦よろしくお願いいたします。plaxma_y