Gazebo/MoveIt のための 3D モデリング(7)滑らかなサーフェス – 作成編(その2)

著者:yamamoto.yosuke

Gazebo/MoveIt のための 3D モデリング(7)滑らかなサーフェス – 作成編(その2)

前回は「Gazebo/MoveIt のための 3D モデリング(6)滑らかなサーフェス – 作成編(その1)」として Rhinoceros のコマンドを利用した滑らかなサーフェスの作成例を紹介しました.

今回は NURBS の次数と制御点を少し意識したサーフェスの作成方法について説明します.

洗濯機両サイドの角部周辺サーフェス

まず,洗濯機両サイドの角部周辺のサーフェスを作成します.

側面視(Rhinoceros の Back ビュー)に線があるのでこれをサーフェスの1辺とします.このサーフェスの1辺に相当する線を「直線(Line)」で描画します.

また洗濯機側面後部の辺を「エッジを複製(DupEdge)」で複製します.

そして「洗濯機側面後部の辺を複製した曲線」の「サーフェスの1辺に相当する線」よりも高い部分を「トリム(Trim)」します.

ブレンド曲線を「曲線ブレンド(調整) (BlendCrv)」で描画します.

  1. 1つ目の接続先に先程トリムした曲線を選択
    • 接続条件: G3(曲率変化率連続)
  2. 2つ目の接続先を BlendCrv コマンド内の設定で「エッジ(E)」に設定してから洗濯機上面後端のエッジを選択
    • エッジ接続の場合は接続条件は「位置連続」になる
    • 描画時にそのエッジ上で制御点を調整可能

ブレンド曲線の描画中にビューを洗濯機正面(Rhinoceros の Right ビュー)に移動して図面上の洗濯機上部角部形状に沿うように制御点の調整をしてからブレンド曲線の描画の確定をします.

結果, 5点4次 の NURBS 曲線になります.

「曲線を押し出し(ExtrudeCrv)」でサーフェスを作成します.

洗濯機上面と側面間のサーフェス作成で使ったプロファイル曲線をコピー移動して洗濯機前面と側面間のサーフェスも作成します.

洗濯機前面は球面サーフェスですので平断面でトリムすると円になりますのでその円の中心を通る Y軸 と平行な軸回りにプロファイル曲線を「回転(Revolve)」します.

洗濯機前面サーフェスをこれまで作成してきた洗濯機ソリッドモデルから「サーフェスを抽出(ExtractSrf)」して新規サーフェスの作成作業を失敗しても元ソリッドに影響がないようにしておき,また洗濯機ソリッドモデルは「非表示」か「ロック」状態にしておきます.

洗濯機前面サーフェスのトリムをします.洗濯機上面と側面間のサーフェスの上端のエッジを「複製(DupEdge)」した曲線で上面視(Top ビュー)でトリムします.

前述のようにここでトリムされた前面サーフェスのエッジは円弧ですので,洗濯機側面視(Rhinoceros の Back ビュー)で Osnap の「中心点」をチェックして「円(Circle)」を描画します.この円弧エッジをクリックすることで中心点を選択してこの円弧の端点をクリックして半径を決定します.

円を描画したら「回転(Revolve)」でサーフェスを作成するプロファイル曲線の配置が容易なのと洗濯機前面付近のみサーフェスを作成したいので,円の中心から水平に直線を描画して円の下半分をトリムします.

円の前端部にサーフェスのプロファイル曲線を配置します.「コピー(Copy)」して「回転(Rotate)」しても良いですし,前回の記事で利用した「3点指定配置(Orient3Pt)」でコピー配置しても良いです.

「回転(Revolve)」を使ってプロファイル曲線を円の中心を通る Y軸 に並行な軸回りに 0° から洗濯機上面より高い位置までサーフェスが作成するよう角度を指定してサーフェスを作成します.

洗濯機前面下部のサーフェスが上部サーフェスを Z=350mm の面で「ミラー(Mirror)」したものであるのと同様に洗濯機前面と側面間のサーフェスもミラー反転するとともに Z=350mm でトリムして「結合(Join)」します.

前回の記事までで作成した洗濯機ソリッドモデルのサーフェスをトリムしたものに置き換えるなどして今回新しく作成したサーフェスと「結合(Join)」したポリサーフェスが右の図です.

結合したポリサーフェスでは「エッジを表示(ShowEdges)」で洗濯機前面・側面・上面の交わる頂点付近に隙間が確認できますが,この箇所は後でフィレットサーフェスを作成して閉じるので,ここでは暫定的に各辺の交点を結んだ直線で洗濯機側面視で両サーフェスをトリムしています.

互いが同じサーフェスに接続する曲率変化率連続のサーフェス同士の場合,サーフェスの交差角度が浅すぎて交わる曲線を Rhinoceros が計算できないことがあります.サーフェスを細分しながら交線を計算させたり,計算できた範囲の交線と大体それらしい曲線を手動で描画したりして閉じたポリサーフェスにすることも可能ですが,今回は最終的には使わないトリムラインですので暫定的にオープンエッジにしています.

曲率変化率連続フィレットサーフェス

前回の記事の四角いボタンのモデリングでは「曲率連続フィレットサーフェス」を作成し,また丸いボタンの角部は「曲率変化率連続曲線」を「回転(Revolve)」して「曲率変化率連続のフィレットサーフェス」を作成しました.

ここでは前回の丸いボタンの方法の応用として「曲率変化率連続曲線」を「曲線を押し出し(ExtrudeCrv)」し,また「制御点を編集した曲率変化率連続曲線」を「回転(Revolve)」して「曲率変化率連続フィレットサーフェス」を作成します.

まずは洗濯機上面と側面コーナー部の間に「曲率変化率連続のフィレットサーフェス」を作成します.先述のコーナー部の大きめのサーフェスと同じように曲率変化率連続のプロファイル曲線を作成して「曲線を押し出し(ExtrudeCrv)」でサーフェスにします.

プロファイル曲線は洗濯機の上面図にフィレットの長辺の線が見られるのでそれを目安にして両端の接続条件「G3(曲率変化率連続)」にて 8点7次 の曲線を描画します.

プロファイル曲線を「曲線を押し出し(ExtrudeCrv)」してフィレットサーフェスを作成します.

次に洗濯機前面と側面コーナー部の間に「曲率変化率連続のフィレットサーフェス」を作成します.これもコーナー部の大きめのサーフェスと同じように曲率変化率連続のプロファイル曲線を作成して「回転(Revolve)」でサーフェスにします.

先程の “洗濯機上面と側面コーナー部の間に「曲率変化率連続のフィレットサーフェス」” のプロファイル曲線をコピー配置します.

洗濯機前面の球面サーフェスに曲率変化率連続で接続するので曲線の修正が必要で,次の図にあるような側面コーナー部形状と洗濯機前面の形状の両方に曲線変化率連続接続するプロファイル曲線にします.

また,修正したプロファイル曲線が元のプロファイル曲線と同じような制御点配置をしていると後の記事で取り上げる両フィレットサーフェス間をつなぐフィレットサーフェスを作成するときに便利なので制御点の Y方向位置 を揃えるようにします.

制御点の Y方向位置 を揃えるための補助線を描画しておきます.

  1. コピー配置したプロファイル曲線を選択後「点を抽出(ExtractPt)」にて制御点を描画
  2. 抽出した制御点群をまとめるために「グループ化(Group / Ctrl-G)」
  3. Y座標の補助線として洗濯機前面形状側から第2,3,4点目から「直線(Line)」を X軸方向 に描画
  4. 描画した3直線をまとめるために「グループ化(Group / Ctrl-G)」

プロファイル曲線の修正の方法は主に2つの方法「再構築的方法」と「修正+調整的方法」があるのではないかと考えています.

8点7次 の曲線のようなブレンド曲線(BlendCrv)の機能に備わっているのと同じ曲線の場合は「再構築的方法」を用いて,曲線の次数+1個よりも多い制御点を持つようなブレンド曲線(BlendCrv)の機能に備わっていない曲線の場合は「修正+調整的方法」を用いると比較的整った曲線ができるのではないかと思います.

  • 再構築的方法
    1. 「曲線ブレンド(調整)(BlendCrv)」で修正元の曲線と同じ接続条件を選択
      (今回は両端とも G3 接続)
    2. 「曲線ブレンド」で描画中に制御点を修正元の曲線の制御点(の抽出点)や
      補助線上に合わせたら描画確定
  • 修正+調整的方法
    1. 曲線を選択して「マッチング(Match)」コマンドを開始して接続先曲線の端点近くをピック
    2. 連続性を「曲率」に設定してマッチングを確定実行
      (Rhinoceros のマッチングの機能として「曲率連続」までしかない)
    3. 修正している曲線の制御点を表示(P-On)と曲率を表示(CurvatureGraph)にする
    4. 曲率変化率連続にしたい場合は曲率表示のグラフを見ながら接続先側から第4の点をガムボールで位置調整
    5. 第2,第3の点も補助線上に来るように調整した場合はそれぞれ接線連続性と曲率連続性も崩れるので本リストの 1. に戻って良好な曲線が得られるまで繰り返す

「修正+調整的方法」はサーフェスのマッチング修正でも同様のことを3次元的に行います.これは次回の記事で紹介する予定ですので,予習的に今回の2次元上での調整方法を体験しておくのも良いかもしれません.

プロファイル曲線ができてしまえば後は洗濯機の上面と側面のコーナー部サーフェスと同じ軸回りの「回転(Revolve)」と「ミラー(Mirror)」を実行して適切にトリム・結合するとフィレットサーフェス作成は終了です.

ここでも暫定的にオープンエッジを残しています.

一部のサーフェスを曲率分析(CurvatureAnalysis)したときのキャプチャ画像が次の図です.

洗濯機前面フィレットサーフェス

洗濯機の前面と上面の間の少し大きめのフィレットサーフェスと洗濯機前面の上下のミラー反転されているサーフェス間の大きめのフィレットサーフェスもこれまで紹介してきた方法と同様に曲率変化率連続のサーフェスとして作成しますので,大まかに紹介します.

フィレットを架けるサーフェスを洗濯機のポリサーフェスから抽出して編集します.

  • 洗濯機の前面と上面の間のサーフェス
    1. 上面図にあるフィレットのエッジと思われる曲線などから判断して,
      上面から 30mm 低い高さを洗濯機前面側のエッジとする
    2. 洗濯機中央(XZ平面)上にプロファイル曲線を側面図と照らし合わせながら
      曲率変化率(G3)連続で描画
    3. 「回転(Revolve)」でサーフェスを作成
  • 洗濯機前面の上下のミラー反転されているサーフェス間のサーフェス
    1. 上下ミラーした高さ Z=350mm から ±50mm の範囲の前面サーフェスをトリム
    2. 同様に洗濯機中央(XZ平面)上にプロファイル曲線を側面図と照らし合わせながら曲率変化率(G3)連続で描画
    3. 「回転(Revolve)」でサーフェスを作成

右の図は洗濯機両サイドのフィレットエッジの Y座標 で新規作成した2つのフィレットサーフェスをトリムして結合したものです.

洗濯機全体のポリサーフェスのうち洗濯機前面と上面のサーフェスをフィレットを追加したポリサーフェスで置き換えて結合して「エッジを表示(ShowEdges)」したのが右の図です.

まだ暫定的に隙間を開けたままにしています.

さらにレンダリング表示をしてキャプチャした画像が右の図です.

だいぶ洗濯機本体の細かいサーフェスも作成できてきたように思います.

今回の記事はここまでです.


本シリーズ次回の記事は

「Gazebo/MoveIt のための 3D モデリング(8)滑らかなサーフェス – 作成編(その3)」

として,今回は暫定的に隙間を開けてしまっている部分を塞ぐサーフェスの作成をする過程で

  • NURBS サーフェスの制御点や次数を直接的に編集するようなケース

について説明する予定です.

Gazebo/MoveIt のための 3D モデリング(6)滑らかなサーフェス - 作成編(その1)
Gazebo/MoveIt のための 3D モデリング(8)滑らかなサーフェス - 作成編(その3)

著者について

yamamoto.yosuke administrator

コメントを投稿するにはログインしてください。