ロボットアームのポージングとレンダリング

  • ロボットアームのポージング
  • PBRマテリアルを割り当て
  • 配線のモデリング
  • ライティングとレンダリング
  • 干渉を確認


前回はロボットアームを一通りNURBSでモデリングしました。
今回はポージングを行い、最終的なレンダリングまで進めていきます。

ブラウザで階層を整理

複数のNURBSサーフェスで構成されるため、改めてブラウザでパートに入れて階層を整理していきます。

土台から順番に階層構造になるようにしました。
分かりやすいようにワイヤーフレームの色を変えています。

以下のように分けています。

  • 土台
  • ジョイント1
  • ジョイント2
  • ジョイント3
  • アーム先端_右
  • アーム先端_左

これらのそれぞれに対して回転ジョイントを配置して、可動できるようにします。
以降の作業は3DCGモードに切り替えて行います。

回転ジョイントを入れる

ポージングのため、回転ジョイントを入れることにしました。
回転ジョイントについてはチュートリアルの「歯車を回転させる」で解説していますので、こちらもご参照くださいませ。

「土台」はY軸中心に回転します。
「ジョイント1」はX軸中心に回転します。

ツールボックスの「パート」-「ジョイント」-「回転」を選択し、正面図でX軸を中心とした回転ジョイントを作成しました。

ブラウザで回転ジョイントの名前を「土台」に変更し、下位のNURBSサーフェスやパートを格納します。
元の「土台」パートは削除しました。

以降の回転ジョイントの割り当ても同様におこなっていきます。

「ジョイント2」はX軸中心に回転します。

「ジョイント3」はX軸中心に回転します。
「アーム先端_左」「アーム先端_右」はZ軸中心に回転します。

ブラウザでは以下のように回転ジョイントを配置しました。

ポージング

回転ジョイントを使ってロボットアームを動かしていきます。
なお、ver.21.1/ver.21.2段階ではNURBSサーフェスとジョイントを使っている場合、
ジョイントを動かすと反映されるまで数秒待たされるようでした。
そのため、ジョイントモードに切り替えて図形ウィンドウ上でドラッグして行うポージング操作は使用せず、
形状情報ウィンドウで回転ジョイントの角度を変更することにします。

今回はアニメーションを行わないため、シーケンスモードをオフにして使用します。
コントロールバーでカメラのアイコンが選択されている(「静止画」が選択されている)のを確認します。

ブラウザで回転ジョイントを選択し、形状情報ウィンドウの「回転」の値を変更します。
この場合、「土台」を90度回転させました。

同様に他の回転ジョイントの回転値も変更していきます。

以下のようにポージングしました。

PBRマテリアルを割り当て

マテリアルは「PBRマテリアル」をマスターマテリアルとして指定しました。
なお、マッピングは使用せず基本設定だけを行います。

以下のマテリアルを用意しました。

  • body (全体のマテリアル)
  • metal (ジョイントの軸などの金属)
  • cap (ジョイントの軸のキャップ)
  • rubber (ハンドのつかむ部分のゴム)
  • wiring (配線)

「wiring」については、配線のモデリングができてからマテリアルを割り当てます。

body

全体を格納しているパートを「ロボットアーム」と名前を付け、ここにすべての形状を格納しています。
このパートに対して、マスターマテリアルとして「body」の名前のマテリアルを与えました。

ベースカラー RGB(196,196,196)、メタリック 0.0、ラフネス 0.1、屈折率 1.5、透明度 0.0、発光 0.0を指定しました。

metal

ジョイントの軸は金属風にしました。
マスターマテリアル名を「metal」としています。

ベースカラー RGB(160,160,160)、メタリック 1.0、ラフネス 0.1、屈折率 1.5、透明度 0.0、発光 0.0を指定しました。
以下の黒い箇所がmetalのマスターマテリアルを与えた部分です。

cap

ジョイントの軸の両端のキャップ部は、灰色のプラスチックのようにしました。
マスターマテリアル名を「cap」としています。

ベースカラー RGB(160,160,160)、メタリック 0.0、ラフネス 0.0、屈折率 1.5、透明度 0.0、発光 0.0を指定しました。

rubber

ハンドのつかむ部分はゴムのマテリアルを指定します。
マスターマテリアル名を「rubber」としています。

ベースカラー RGB(60,60,60)、メタリック 0.0、ラフネス 0.6、屈折率 1.5、透明度 0.0、発光 0.0を指定しました。

レンダリングして確認

いったん背景や光源を指定してレンダリングします。

背景を指定

ShadeExplorerより「背景」-「Conference_room_1」を選択しました。
背景ウィンドウに選択した背景が適用されていることを確認します。

無限遠光源の明るさの調整

無限遠光源ウィンドウで「明るさ」を0.5としました。
「環境光」が0になっているのを確認します。

無限遠光源の向きは、これはレンダリングをしながらの確認となりますが、
好みに合わせて変更するようにします。

地面を作成

Y=0の位置に、大きな円形状を配置して地面としました。

マテリアルはPBRマテリアルとして灰色を指定してます。

レンダリング

レンダリングはリニアワークフローを考慮したフォトリアルとします。
ver.21の場合はレンダリング設定ウィンドウの「イメージ」タブ内で、
「ワーキングカラースペース」が「リニアsRGB(ガンマ1.0)」、「出力カラースペース」が「sRGB」となっているのを確認します。

「手法」を「パストレーシング」、「大域照明」タブ内で「大域照明」を「パストレーシング」にします。

大域照明タブ内のその他のパラメータはそのままで進めます。

レンダリングを行うと以下のようになりました。

これでも十分ロボットアームらしいのですが、配線を這わせてより機械らしくしていきます。

配線をモデリング

雰囲気だけではあるのですが、配線を配置していきます。
配線は「開いた線形状」を配置して、「掃引 円」でチューブ状にすることにします。
このモデリングはNURBSカーブを使うよりもベジェ曲線での線形状と自由曲面でモデリングするほうが効率がいいため、
自由曲面としてモデリングを進めていきます。

開いた線形状を配置

土台から地面に伸びる線形状を配置。

ジョイント1の端からジョイント2にかけて、線形状を2本配置。

重力でしなっているように線形状の形を調整しました。

ジョイント2からハンド部にかけて、下側に線形状を2本配置。

合計5本の「開いた線形状」を「配線」パート内に入れました。

「掃引 円」でチューブ状に変換

ブラウザで5つの「開いた線形状」を選択し、ツールボックスの「作成」-「プラグイン」-「掃引 円」を選択します。

「掃引 円」ダイアログボックスでOKボタン押し、次に表示されるダイアログボックスの「半径」で2を指定してOKボタンを押します。
これで、半径2(mm)のチューブ状の配線が作成されました。

ブラウザでは5つの自由曲面が生成されているため、整理して「配線」パート内にまとめておきます。

PBRマテリアルを割り当て

5つの自由曲面の親パートを選択し、「wiring」の名前でPBRマテリアルを割り当てました。

ベースカラー RGB(70,70,70)、メタリック 0.0、ラフネス 0.3、屈折率 1.5、透明度 0.0、発光 0.0を指定しました。

レンダリング

以上ですべてのモデリングが完了したため、レンダリングを行います。

配線が角ばっているのが見えるため、配線の自由曲面の親パートの名前で「<」を先頭に付けます。

再度レンダリングすると以下のようになりました。

配線は滑らかになりました。
角度を変えて複数レンダリングすると、以下のような結果になりました。


これでロボットアームのモデリングからレンダリングまで完了しました。

干渉を確認

形状を3Dプリントして実際に形状として出力したい場合には、ここからもう一歩進んで調査する必要が出てきます。
ここでは簡単ですが、「干渉」の確認手順について書いていきます。
「干渉」は、Shade3D Professional ver.18で追加された機能です。

対象となる形状をブラウザで選択します。

ここでは土台の2つのNURBSサーフェスを選択しました。
コントロールバーの「測定」より「干渉」を選択します。

2つのNURBSサーフェスは重なりがあるため、重なりが視覚化されました。

Enterキーを押すと干渉表示から抜けます。

この重なりを解決するには、ブール演算の「ブール演算:和」+「ブール演算を固定」を使って1つの形状にまとめます。

NURBSサーフェスをすべて選択して干渉チェックを行うと、以下のように重なりが確認できました。

NURBSサーフェスのみを選択する操作は、ブラウザでNURBSを含むパートをすべて選択して
「検索」ボタンを押します。
検索ウィンドウで「対象」の「形状」-「NURBS」を選択して「検索」ボタンを押します。

検索ウィンドウのリストボックスに対象の形状が列挙されるため「全て選択」ボタンを押します。
この操作により、ブラウザで選択された形状内で特定の形状のみを選択することができます。

「干渉」で重なりが検出されるため、重なりが消えるまでブール演算を使用して結合していくようにします。
全体ではなく、隣り合うNURBSサーフェスを選択して干渉がある場合はまとめていくのがよさそうです。

以上で、ロボットアームのモデリングからレンダリングまでの流れは完了です。
工業製品はNURBSを使ったほうがモデリングがしやすく、自由曲面よりも作業手順は少なくて済みます。
また、レンダリング時の曲面で面分割が足りずに荒くなるということもありません。
反面、今回の説明で行った配線のモデリングなどは苦手です。
またシーンの読み込みでポリゴンメッシュや自由曲面よりも時間がかかり、ジョイントと合わせた操作でも時間がかかることになります。
マッピングもUVマッピングは使えません。

用途に合わせて、ポリゴンメッシュ/自由曲面/NURBSを使い分けるのがいいかもしれません。
次回は別のテーマの解説を行っていきます。

カテゴリー: ロボットアームをNURBSで作る