前回は「Gazebo/MoveIt のための 3D モデリング(7)滑らかなサーフェス – 作成編(その2)」としてサーフェスのプロファイル曲線の制御点や次数を少し意識した滑らかなサーフェスの作成例を紹介しました.
今回は NURBS サーフェスの制御点や次数を編集する作成・調整方法について紹介しつつ,前回の記事中では暫定的にオープンエッジのままとしていた箇所,左の図で赤く示した辺りのサーフェスを作成します.
編集対象となる「サーフェスを抽出(ExtractSrf)」してから洗濯機のソリッドモデルを非表示にしておきます.
前面の上下を接続する大きめのフィレットサーフェスに合わせて新しいサーフェスを作成したいので,既存のフィレットサーフェスを「分割(Split)」して不要部分を削除します.
この際,コマンド内設定で「切断に用いるオブジェクトを選択」に「アイソカーブ(I)」を指定し,洗濯機前面の上下を接続する大きめのフィレットサーフェスの端点にアイソカーブを合わせて分割します.
アイソカーブ(Isocurve)
「アイソカーブ」はサーフェスの UV 各方向に沿った曲線で,サーフェス上の1点における各方向の制御点配置と次数がそのまま反映されます.アイソカーブではないサーフェス上の曲線や分割線は Rhinoceros では 多点3次 の曲線として扱われるため,3次 よりも大きな次数の NURBS サーフェスの場合はそのアイソカーブに比べてアイソカーブではないサーフェス上の曲線は滑らかではない可能性が高いです.よって,サーフェスを分割する場合は可能であればアイソカーブで分割すると,その分割部に接続するサーフェスを作成する際に滑らかなサーフェスを作成しやすくなります.
フィレットサーフェスに隣接する角部の大きい方のサーフェスも同様にアイソカーブで「分割(Split)」します.
新規に作成するサーフェスを既存の洗濯機前面上下間サーフェスに合うものにしたいのでその既存のプロファイル曲線の制御点をサーフェスの1辺の曲線を作成するための参考点とします.
洗濯機前面上下間サーフェスの中心の「アイソカーブを抽出(ExtractIsocurve)」し,抽出したアイソカーブに対して「点を抽出(ExtractPt)」を行い,扱いやすいように「グループ化(Group)」します.
抽出した制御点のグループをブレンド曲線の参考点とするために「配置 > 2点指定(Orient)」で「コピー」を「はい」,「スケール」を「3D」に設定することで作成するサーフェスのレール曲線を作成する部分の各両端にスケールコピーします.
「曲線ブレンド(調整)(BlendCrv)」で各制御点をコピーした点群にスナップすることで曲線を作成します.曲線を作成できたら点群は非表示にするか削除しておきます.
洗濯機側面の平面も暫定的なトリムラインになっているので「境界曲線を複製(DupBorder)」してから「すべてトリム解除(UntrimAll)」を一度して,境界曲線の一部を作成したレール曲線に置き換えて再度「トリム(Trim)」します.
ここの新しいサーフェスは周辺の面構成から判断するに「レールに沿って回転(RailRevolve)」で作成するのが良さそうです.
「レールに沿って回転(RailRevolve)」でのサーフェス作成に必要なデータは「プロファイル曲線」「レール曲線」「回転軸」で,前者2つは既にあり,「回転軸」の方向は Y軸と平行 にするので回転軸の「中心点」1つを準備します.
準備として下の図のように,解析ツールの「半径(Radius)」のコマンド内オプションで「半径カーブを作成(M)=はい」にすると曲率半径に対応した円を作成してくれるのでそれを利用します.そして作成した円の中心点と作成するサーフェスの端点を結んだ線を2つ描画してその交点を「レールに沿って回転(RailRevolve)」の回転軸の1つの「中心点」として軸方向はその中心点から Y方向の1点 を [ Shift ] キーで指定することにします.
準備が整いましたので「レールに沿って回転(RailRevolve)」でサーフェスを作成します.
「輪郭曲線」(プロファイル曲線)と「レール曲線」回転軸の「始点」(交点)と「終点」(交点からY軸と並行方向の1点)を指定します.
「レールに沿って回転」で作成したサーフェスは周辺のサーフェスとの接続および接続条件が確約されたものではないので,作成したサーフェスのエッジで接続先サーフェスがある3辺について接続条件のマッチングを行います.
サーフェスの「マッチング(MatchSrf)」を実行し,コマンド内オプション「複数マッチング(M)」として「m」を設定してから3辺それぞれにおいて「接続させたいエッジ」とその「接続先のサーフェスエッジ」の選択を行います.
( 都合 6回 選択クリック = 3辺 ✕( 接続させるエッジ + 接続先のサーフェスエッジ ) )
サーフェスのマッチングを行ったら他のサーフェスと「結合(Join)」して,まずは「エッジを表示(ShowEdges)」で隙間が無い(=位置連続)ことを確認します.
「マッチング(MatchSrf)」では「曲率連続」までしか合わせないので「曲率変化率連続」については各種「解析」ツールを利用して目視でチェックします.
「ゼブラマッピング(Zebra)」は作成したサーフェスと上下のサーフェスや洗濯機側面の平面ともに縞模様が滑らかにつながっていますので曲率連続から曲率変化率連続ぐらいの連続性であろうと思われます.
ポリサーフェスを「分解(Explode)」して作成したサーフェスだけ「曲率表示オン(CurvatureGraph)」させたのが右の図です.
洗濯機側面の平面(曲率ゼロ)に対して V方向 の曲率が変化率も含めて連続しているように見えます.
右の図は作成したサーフェスに対して「制御点表示オン(PointsOn)」をして洗濯機前方(Rhinoceros での Right ビュー)から見た図です.
洗濯機側面の平面からつながる制御点各4点が洗濯機側面平面と同一平面内にあるので,制御点の配置からも曲率ゼロの平面に曲率変化率連続で接続しているであろうことが見て取れます.
ゼブラマッピングを見ていて今回作成したサーフェスとは別のサーフェスの接続連続性があまり良くない箇所を見つけました.
ゼブラのずれは単に「解析メッシュが粗いことで生じてしまう見かけ上のずれ」の場合もあります. その確認は「ゼブラオプション」内の [ メッシュを調整… ] ボタンから「最大エッジ長さ」を短くしてメッシュを細かくしてゆくことで解消されるような場合は「見かけ上のずれ」と考えられます.
ただ,今回はメッシュを細かくしてもゼブラのずれは解消されませんでした.
筆者の経験では「円弧(Arc)」を分割すると,サーフェスの作成経緯からはゼブラはずれないであろう箇所でゼブラのずれが生じることが多く起きるように感じています.
このフィレットサーフェスはこの後作成するフィレットサーフェスにも影響するのでこの時点で修正しておきます.フィレットサーフェスの U方向 である 3点2次 の円弧を必要な部分だけを 8点7次 の NURBS データに変換してからサーフェスの「マッチング(MatchSrf)」することで曲率変化率接続のサーフェスに修正します.
「マッチング(MatchSrf)」で接続する先のサーフェスの端点からのアイソカーブで「分割(Split)」して必要な部分を残します.
「分割(Split)」を行っただけでは基となるサーフェスの一部となっているだけですので,基となるサーフェスをトリム境界線近くまで縮小するために「トリムサーフェスをシュリンク(ShrinkTrimmedSrf)」を実行します.
そして「次数を変更(ChangeDegree)」で縮小したサーフェスの U方向 の次数を 7 に変更し, V方向 についても指示を問われますがこちらも基と同じ 7 として実行します.これにより U方向 の制御点が次数に合わせて 8 (=次数+1)に変わります.
次数の変更を行ったサーフェスに対して「マッチング(MatchSrf)」を実行して2辺を接続先のサーフェスと曲率連続にします.
「制御点表示オン(PointsOn)」と「曲率表示オン(CurvatureGraph)」により曲率連続にしたサーフェスの曲率接続状況を確認します.
曲率変化率連続は「マッチング(MatchSrf)」では調整されないので,目視確認して修正が必要であれば接続端から4番目の制御点を手動で調整します.
今回は元々のサーフェスが曲率変化率連続接続で作成して変更も主に次数のみの小さなものだったので第4の制御点の調整は必要ありませんでした.
このサーフェスの U方向 の制御点は 8点 なので曲率変化率連続の場合は 4番目の制御点 も 1辺あたり8個 で 両辺で16個 ありますのでざっと各16点について確認します.
このように制御点が多くなると調整作業も多くなってしまうのでサーフェスを作成・修正変更する場合に必要十分な少ない制御点のサーフェスとなるようにすると良いです.
修正前と後のゼブラマッピングをアニメーションで比較してみると改善されているようです.
修正したフィレットサーフェスが良さそうなので Z=350mm でミラーリングして下部のフィレットサーフェスも置き換えておきます.
分析メッシュの消去
Rhinoceros 7 の Mac 版ではあまり気にしたことなかったのですが Windows 版の場合に解析で作成されたメッシュが全て保存されるようになっており 3MB ほどのデータが 6GB ほどのファイルとして保存されて上書き保存も難しい状況に陥ってしまいました.この対策として時々「分析メッシュを消去(ClearAnalysisMeshes)」を行うと再度分析するときには時間がかかりますがファイルサイズを小さくすることができます.
洗濯機前面と側面間に穴として残っているフィレットサーフェスも「レールに沿って回転(RailRevolve)」で作成して「マッチング(MatchSrf)」で修正を行います.
今回の記事はここまでです.
本シリーズ次回の記事は
「Gazebo/MoveIt のための 3D モデリング(9)滑らかなサーフェス – 作成編(その4)」
として,暫定的に隙間を開けてしまっている部分の残り,洗濯機前面・上面・側面が合わさるコーナー部を塞ぐサーフェスの作成例を紹介する予定です.
コメントを投稿するにはログインしてください。
著者について