2022年4月3日日曜日

【Grasshopper_63】S社の某車種のフロントグリルを再現してみた


量産車の中では、かなり特徴的で、いかにも幾何学模様を意識したかのようなデザインですね。ブログで取り上げるネタも徐々に落ち着いてきたので、今後は自動車メーカー各社のデザイン再現も取り入れていきたいと思います。

S社の某車種のグリルパターンに関して、実際にどのような手段でモデリングしたのかはわかりませんが、たとえGrasshopperのようなアルゴリズムエディターを使うにしても、これだけで完結させるのは難しく、ディテールについては手作業で修正が必要になるかなと思います。

今回は、Grasshopperで作成可能な範囲で、その作り方をご紹介いたします。

Step.1 投影先のサーフェスを用意する

・まずは3Dサーフェスを用意します。お試しであれば平面サーフェスでも可。

Step.2 パターンを配置する範囲を決める

・今回は、XZ平面上にパターンを配置する範囲を求めます。

・Bounding Boxコンポーネントを使って大きさを割り出し、Scaleコンポーネントを使って拡大します。大きめに作って、必要な個所だけ抜き出すという考え方です。こうしておけば、造形変更によって形が少し大きめに変わっても対応可能です。大は小を兼ねるみたいな感じですね。

Step.3 六角形を作る

・作成した枠の中に六角形を敷き詰めます。

・六角形には向きが2つあり、真上が角の状態と平行線の状態です。それらはサーフェスのUV軸の向きで切り替わるので、Adjust UVコンポーネントを使って、真上が平行線の状態にします。

・六角形のうち、外周部にある欠けた状態のものは除外しますので、Explodeコンポーネントを使って辺を分解し、6本かどうかをEqualityコンポーネントを使って判別し、完全な六角形のみ取り出します。

Step.4 二つのノードに分ける

・Step.3で作った六角形を縦方向の列ごとで見ると位置が2通りあります。この後の工程を考えると、分けた方がやりやすいかなと判断しましたので、上の図のように、縦列ごとに交互になるよう分離します。それぞれ判別しやすいようにDiamond_A、Diamond_Bという名前にしておきます。

Step.5 実際に投影する六角形を取り出す

・実際に投影させる六角形を取り出します。

・Rhino上でポリラインカーブを使ってXZ平面上に閉曲線を作り、Grasshopperに取り込み後、Point in Curveコンポーネントを使って中心点の内外判定を行い、分離します。

・投影先の3Dサーフェスの縁よりも内側にある部分を指定するようにします。

Step.6 縦列の六角形の倍率を求める

・縦列ごとの、上下方向の倍率を求めます。数値としては最小、2番目、3番目、最大の4種類を使って、縦列ごとにパスが分かれるように数列を作ります。

・上の図で試しにスケールをかけた状態を表示しています。実際のスケール処理はさらに後工程で行います。

・Diamond_A、Diamond_Bそれぞれに設定を行います。

Step.7 パスをまとめる

・次に、左右方向のスケール値を求める工程に移りますが、Diamond_AとDiamond_Bに分かれた状態だとやりずらいので、一つのノードにまとめます。

・それぞれ交互になる状態を維持しながら一つのノードにまとめたいので、上の図のようにパスの記号を加工してからMergeコンポーネントを使います。

・Step.4で求めた六角形のデータと、Step.6で求めた倍率値の両方に行います。

Step.8 横方向の倍率を求める

・次に、左右方向の倍率を求めます。

・上の図で試しにスケールをかけた状態を表示しています。実際のスケール処理はさらに後工程で行います。

Step.9 スケール処理を行う

・これまでに求めた、縦列の六角形の倍率と横方向の倍率を比較して、小さい方を取り出す方法を考えます。

・Minimumコンポーネントを使うことで数値を比較して、小さい方を取り出すことができます。

・その数値を使って、実際にスケールダウンさせると上の図のようになります。

Step.10 フィレット作業を行う

・六角形の角をつぶして丸みをつける作業はフィレットで行います。

・フィレットの数値を、グリルの中心から外側に向かって徐々に大きくしていきたいので、全体を囲む閉曲線をRhino上で作ってからGrasshopperに取り込み、各六角形の中心点から取り込んだ曲線までの最短距離を求め、Remapコンポーネントを使って実際の角Rのレンジに変換してからフィレット化します。

Step.11 マッピング元のサーフェスを作る

・次に、これまでに作った六角形は縦横に整然と並んだ状態なので、これをマッピングを使ってゆがませる工程にうつります。

・まずは、Rhino画面に戻り、上の図のようにマッピング元のサーフェスをXZ平面上に作ります。

・これまでに作った六角形がぎりぎり入るぐらいの大きさでOKです。

・注意点としては、サーフェスは4辺確保する必要があります。上の図では、底辺はフィレットを2か所に付けて1本の曲線にしています。

Step.12 マッピング先のサーフェスを作る

・次に、マッピング先のサーフェスを同じくXZ平面上に作ります。後で制御点を移動させて調整するので、まずはざっくりとした形でOKです。

・こちらも注意点としては、サーフェスは4辺確保する必要があります。

Step.13 サーフェスのリビルドを行う

・Step.12で作成したマッピング先のサーフェスの制御点を移動させて修正させやすいように、サーフェスをリビルドして数を減らします。

Step.14 マッピングを行う

・Step.11とStep.13で作成したサーフェスをGrasshopperに取り込み、Map to Surfaceコンポーネントにつないでマッピングを行います。

・六角形の形を調整する場合、サーフェスを選択した状態でF10キーを押して制御点を表示させ、マウスで位置を動かします。移動はガムボールを使うことをお勧めします。

・左右対称に横方向に移動させるときは赤色の□を操作、上下に移動は緑矢印をクリックして操作します。

・上の図は制御点移動後のサーフェスを上にコピーした状態です。

Step.15 3D加工する

・Step.14で求めた、ゆがませた六角形を3Dサーフェスに投影します。

・今回は、穴の底面として、10mmオフセットさせた面を使用します。それぞれに六角形を投影し、Surf Splitコンポーネントを使って分割し、必要な個所を取り出します。

・穴の側面はLoftコンポーネントを使って面を張ります。面がねじれる場合は投影した六角形の曲線の向きが、投影によって部分的に反転してしまいますので、それを回避するために、Flip Curveコンポーネントを使って、投影後の曲線の向きを投影前の向きに合わせる必要があります。

Step.16 完成

・最後に、作成したデータを一つにまとめて色をつけたら完成です!

0 件のコメント:

コメントを投稿

【Grasshopper_105】三角形の中に円を敷き詰める方法

今年もいよいよ残すところあと1カ月を切りました。今年最後の投稿となりますが、三角形の枠の中に円を敷き詰めるサンプルの作り方を書いてみたいと思います。三角形が正三角形に近いほどドットの間隔が一定になります。面積がバラバラだと密度の濃淡が出てしまうので調整が難しいかもしれません。