タグアーカイブ モデリング

著者:yamamoto.yosuke

Gazebo/MoveIt のための 3D モデリング(4)基本形状編 – その2

前回 「Gazebo/MoveIt のための 3D モデリング(3)基本形状編 – その1」 で Box 形状や球面で洗濯機の大きな面のモデリングを行いました.

今回はその続きで,洗濯機の背面や底部のモデリングを行います.

今回のゴールは左の図の状態です.

ボディ背部のモデリング

ボディ背面の突出形状部の最後部から 40mm の幅がありますので,洗濯機の主要形状部をその分トリムします.(前回 Box 形状の Scale1D を前後方向に行わずにガムボール移動などで World 座標系で X の正方向に 40mm 移動した場合はこの手順は不要)

洗濯機の側面視で最背部から垂直な直線を描画して,前方向に 40mm 移動させ,この直線を使ってボディをトリム(Trim)します.

Perspective ビューでトリムされたボディのエッジ分析(ShowEdges)をすると次の左の図のようになります.

このような開口部エッジが同一平面内にあって閉曲線になっている場合は平面で塞ぐ 「キャップ(Cap)」 を実行できます.

  • キャップ
    • メニュー: ソリッド(O) > キャップ(H)
    • コマンド: Cap

「キャップ」の実行結果

同一平面内にある閉エッジ

次は背部に突出している形状を作成します.

背部の台形状の輪郭を描画します.上面視(Top ビュー)で座標 (-320,0) から水平の直線(Line)を後部に向かって描画して,その直線からオフセット(Offset)で オプション Both(B) で両サイドへのオフセット線をオフセット量 260[mm] = 520mm/2 で描画します.メインボディ最後部のエッジと 260mm オフセットした両直線の交点を中心に回転(Rotate)で 45°,-45° を指定して回転させて上面図画像の輪郭に合うことを確認します.

  • 回転
    • メニュー: 変形(T) > 回転(R)
    • コマンド: Rotate

また直線(Line)を座標 (-360,0) から「両方向(B)」を指定して洗濯機の幅方向に描画します.

描画した3つの直線の台形での不要部分を互いにトリムします.

Perspective ビューに移って台形の開いている部分を直線で接続して結合(Join)して曲線を閉じます.閉じた曲線を洗濯機の高さ方向(Z方向)に +90mm ガムボールで移動させます.

背面部の基礎となる 3D 形状をソリッドの「垂直に押し出し」で作成します.とりあえず上面高さまで押し出しします.

  • 垂直に押し出し
    • メニュー: ソリッド(O) → 平面曲線を押し出し(X) → 直線(S)
    • コマンド: ExtrudeCrv

洗濯機の側面視(Back ビュー)にて洗濯機背部形状の上端に相当する斜めの直線を描画して先程「押し出し」したソリッドを トリム(Trim) して キャップ(Cap) で閉じます.

洗濯機背面部上面でトリムしたモデル(キャップの前の段階)

三面図から読み取れる形状としてはここまでなのですが,洗濯機背部は角部や隅部に 「R形状」 や 「フィレット」 と言われる形状がつけられていることが多いです.

今回は三面図から 「R形状」 の寸法は読み取れないので,それを想像して寸法を決めて 「ロフトサーフェス(Loft)」 で作成します.

ロフトサーフェスは曲線と曲線の間にサーフェスを作ります.ロフトサーフェスの基となる曲線を 「フィレット(Fillet)」 で描画します.

  • フィレット
    • メニュー: 曲線(C) → フィレット(F)
    • コマンド: Fillet

フィレットの半径は最後部の平面上の方に 40mm メインボディとつながる平面上の方に 80mm のフィレットをかけるとバランスの良さそうなロフトサーフェスになるかと思います.

  • ロフト
    • メニュー: サーフェス(S) > ロフト(L)
    • コマンド: Loft

洗濯機背部上方のコーナー部にロフトでフィレットサーフェスが作成できたら ミラー(Mirror) でX軸対称に反転コピーします.そしてミラーリングして左右2つになったフィレットで洗濯機背部のソリッドモデルを トリム(Trim) します.

2つのフィレットとそれらでトリムされた背部ポリサーフェスを 結合(Join) すると1つのソリッド(閉じたポリサーフェス)になります.

洗濯機のメインのボディと背部の2つのソリッドモデルは互いに接し合っているので2つのソリッドの 「和の演算(BooleanUnion)」 を行って1つのソリッドモデルにします.

  • 和の演算
    • メニュー: ソリッド(O) > 和(N)
    • コマンド: BooleanUnion

1つのソリッドになるので,くどいようですが ShowEdges で 「閉じたポリサーフェス(=ソリッド)」 であることを都度確認すると良いでしょう.

ボディ底部のモデリング

Gazebo や MoveIt のモデルとしては洗濯機底部はロボットとインタラクションすることはあまりないと思いますので大体の雰囲気をモデリングできれば十分です.

洗濯機の足部は三面図だけではなくカタログ画像からも少し形状が分かるので三面図と併せて参考にしてモデリングします.

カタログ画像や3面図から,足部はテーパのかかった円錐台形状であろうと思われます.

側面視や前面視からそれぞれの足の中心座標を推定し,下面と上面の直径はそれぞれ 50[mm] と 54[mm] ぐらいと当たりをつけて円を描画してロフトとキャップを組み合わせてソリッドモデルを作成します.

洗濯機底部の足以外のサーフェスのモデリングの大まかな様子は次の GIF アニメーションのような感じです.モデリングの履歴(ヒストリー)を使わないモデリングなので作成手順はやり易い順番で大丈夫です.またサーフェスの作成方法も1通りしかないのではなく,例えば 「ロフト (Loft)」 でフィレット形状を作成する代わりに 「サーフェス > フィレット(FilletSrf)」 や 「エッジをフィレット(FilletEdge)」 ,「回転(Revolve)」 を使ったりすることもできます.

これまで取り上げていない機能で利用したのは 「曲線を押し出し(ExtrudeCrv)」 と 「円柱(Cylinder)」 の機能です.

  • 曲線を押し出し
    • メニュー: サーフェス(S) > 曲線を押し出し(X) > 直線(S)
    • コマンド: ExtrudeCrv
  • 円柱
    • メニュー: ソリッド(O) > 円柱(Y)
    • コマンド: Cylinder

今回は洗濯機ボディの背部や底部のモデリング方法を紹介して,次のモデルとなり本記事のゴールに到着しました.

基本形状編はひとまず今回の記事までです.

本シリーズ次回の記事は 「Gazebo/MoveIt のための 3D モデリング(5) 滑らかなサーフェス – 知識編」 を予定しています.