Powered by Google Translate
日本語
English
简体中文
繁體中文
한국어
Français
Deutsch
Español
Italiano
Português
Русский
Bahasa Indonesia
ไทย
Tiếng Việt
Bahasa Melayu
العربية
हिन्दी
Türkçe
Nederlands
Polski
Українська
Powered by Google Translate

Mayaスクリプト(4):壁作成ツール "GenerateWallsFromCurves"

 壁作成スクリプト: "generateWallsFromCurves"

こんにちは、Steemです。
今回は壁を作成するツールを紹介します。まずは動画で機能をご覧ください。


(動画内でカーブが赤く表示されていますが、これは個人設定によるもので通常のNURBSカーブです。)

それでは、こちらのスクリプトについて説明していこうと思います。

機能説明

こちらは、選択したカーブを元にして壁を作成するスクリプトです。

  • 作成の方式
  • 設定項目
  • その他オプション
の順番で説明していきます。

作成の方式

それぞれに特性のある4つの方式を実装しています。おもに、スイープ作成とExtrudeを組み合わせたものです。

  1. 水平方向のスイープ面( _ )を高さ方向(↑)に押し出し
  2. 垂直方向のスイープ面(|)を厚さ方向(↔)に押し出し
  3. 断面形状からスイープを作成
  4. 別の垂直なカーブを作成し高さ方向に押し出し→厚み方向に押し出し

これらにはそれぞれ、UI上で指定した

  • 幅 (壁厚)
  • 高さ

の数値が適用されます。

 

各方式の特長についてですが、作成される形状だけでなく、作成後に調節可能な項目に違いがあります。 

 

例えば高さの変化する壁を作成したい場合は、「方式2」を用いると、スイープノードのテーパーを調整するだけで高さを編集できます。(他の方式であると、コンポーネントを直接編集する必要が出てきます。) 

 

また、壁のジオメトリは、どれもヒストリが残っていれば作成後にもカーブの形状に追随して変形します。

作成時の設定項目

以下の項目が設定できます。
  • 壁の高さ基準(下合わせ/上合わせ)
  • 壁の厚み基準(右合わせ/中央/左合わせ)
  • 高さ方向の押し出しの方向(ワールド方向/法線方向)

これらの項目についても作成の方式によって設定可能なもの・可能でないものがあり、場面に応じて使い分ける必要があります。 

 

例えば、方式2:「垂直方向のスイープ面(|)を厚み方向(↔)に押し出し」では、「右合わせ / 中央 / 左合わせ」の項目について「中央」のオプションを使えません。(垂直な面に対して左右どちらかに押し出しをする仕様のため) 

 

(なお、この方式を使った際は、アトリビュートエディタでスイープノードのAlignの項目を編集することで中央合わせに修正できます。) 

 

また、方式1では「高さ方向の押し出しの方向」でワールドY方向/法線方向の選択ができます。こちらはカーブが上下に変化のあるカーブであるときに効果が見られます。

複数カーブを選択して作成

 複数カーブを選択した状態でスイープを用いる方式を実行すると、スイープ設定のノードを共有した複数の壁を作成します。例えば複数の壁の厚さを一度に変更することも可能です。

エッジを元にして作成

 また、ポリゴンエッジを選択した状態からも作成可能です。その際「ポリゴンエッジからカーブを作成」という段階を踏むので新しくカーブも作成されます。
 このとき、カーブ形状にヒストリが残っていれば形状は元のポリゴンに追随するので、ポリゴンエッジを動かすと同時に壁も追随します。

追加説明

お気づきの方もいるかもしれませんが、全然壁でなくても作れます。幅・高さの値を数センチにすれば、手すりなんかにも。


長くなりましたが、機能に関する説明は以上です。

おわりに

現状、個人的にそこまで使っていないというのが実情で内容はそこまで発展していません。(作成後の修正等にはそこまで強くありません。)

なにせ4つのパターンがあり、方式によっては使えないオプションも存在し、ヒストリノードの名前やアトリビュート名も異なり、途中で法線を反転したり、しなかったり…分岐を作るだけで骨が折れそうだという見通しがあってのことでもあります。

用途: 壁の作成・その他高さ/幅/断面形状を指定したい簡単なスイープ形状の作成に。



=================

こちらですが、配布・販売については調整中です。

続報をお待ちください。

Steem 

=================