STL ファイルに Blender でテクスチャを適用して COLLADA を作成
[最終更新] (2019/06/03 00:23:41)
最近の投稿
注目の記事

概要

ROS による開発で必要となる 3D モデルは STL や COLLADA データとして作成できます。FreeCAD と Blender を用いて直方体のデータを作成してみます。いずれの場合も、ROS 等で扱うために単位はメートルで出力します。

FreeCAD による直方体 STL の作成

STL はフェイスに三角形を利用した 3D モデルを表現するためのファイルフォーマットの一つです。多くのソフトでサポートされています。FreeCAD も STL をサポートしており、Debian9 の場合は apt でインストールできます。

sudo apt install freecad

File → New で初期状態にしてから View → Workbench → Part Design を選択します。

Uploaded Image

Create sketch をクリックします。

Uploaded Image

XY-Plane を選択して OK を押します。

Uploaded Image

Part Design → Sketcher geometries → Create rectangle を選択します。

Uploaded Image

2D 矩形を作成して Close を押します。

Uploaded Image

Pad をクリックします。

Uploaded Image

押し出す高さを入力して OK を押します。

Uploaded Image

Ctrl を押しながら右ドラッグでオブジェクトを平行移動できます。Shift を押しながら右ドラッグでオブジェクトを回転できます。

Uploaded Image

80mm x 80mm x 50mm の直方体が作成できました。STL ファイルとして出力します。

Uploaded Image

STL ファイルを作成するにあたって補足

STEP ファイルから変換して STL を作成する方法

市販されている部品の CAD データの STEP ファイルから STL に変換する場合も FreeCAD を利用できます。

STL の原点座標を変更したい場合

meshlab を利用すると、STL ファイル内のオブジェクトの AABB の中心が原点座標と一致するように平行移動できます。「Render → Show Axis」で XYZ 軸を表示します。

Uploaded Image

「Filters → Normals, Curvatures and Orientation → Transform: Move, Translate, Center」でポップアップされるウィンドウ内で「translate center of bbox to the origin」と「Preview」をクリックします。Apply で確定させます。

Uploaded Image

STL のフェイス数を少なくしたい場合 (Decimation)

meshlab でメッシュを開いて「Filters → Remeshing, Simplification and Reconstruction → Quadric Edge Collapse Decimation」をクリックします。Quality threshold を 0.9 などに設定して Apply をクリックすると Faces が少なくなってメッシュが荒くなったことが確認できます。Apply を複数回数適用したい場合は、meshlab の不具合で、Export して meshlab を一旦終了してから再度同じ処理を行う必要があります。

Uploaded Image

STL から COLLADA を作成

STL はテクスチャ情報等を格納できませんが、COLLADA ではその他に摩擦係数など様々な情報を格納できます。例えば Blender を利用すると STL にテクスチャ情報を付与して COLLADA として出力できます。テクスチャを付与しない場合でも OpenRAVE を利用する場合は STL を読み込めないため変換が必要になります。

インストールおよび STL ファイルの読み込み

Debian9 の場合は apt で COLLADA 対応のバージョンがインストールできます。

sudo apt install blender

Blender を起動したら初期状態で表示されている立方体を Delete キーで削除します。

Uploaded Image

File → Import → STL で作成したファイルを読み込みます。

Uploaded Image

以下のようなショートカットが利用できます。例えば n でオブジェクトのサイズを確認すると確かに 80mm x 80mm x 50mm の直方体であることが分かります。

Uploaded Image

  • n オブジェクトの情報を表示
  • g マウスで平行移動
  • r マウスで回転
  • s マウスで拡大縮小
  • a 全選択
  • 右クリックでオブジェクトや辺を選択

ROS 等で扱うために単位をメートルに変更します。

Uploaded Image

テクスチャの読み込み

COLLADA への変換だけであれば不要なステップです。

UV 展開

テクスチャを適用するためにはまず 3D オブジェクトを UV 展開する必要があります。UV Editing のウィンドウ構成に切り換えます。

Uploaded Image

Edit Mode に切り換えます。

Uploaded Image

3D オブジェクトを展開するために切断する辺となるシームを選択します。Edge select ボタンを押します。

Uploaded Image

a で全選択状態を解除してから Shift キーを押しながら右クリックで必要な辺を選択します。Shading/UVs → UVs → Mark Seam で切れ目として確定します。

Uploaded Image

a で全選択状態にしてから Unwrap → Unwrap とクリックすると左側のウィンドウに展開されます。

Uploaded Image

テクスチャの位置を調整

Image → Open Image で適当に用意した画像を読み込みます。実際には UV 展開図をエクスポートして画像編集ソフトでテクスチャを作成して用意します。

Uploaded Image

マウスで UV 展開結果と画像の位置関係を調整します。3D オブジェクトの操作時と同じようなショートカットが利用できます。

  • a 全選択
  • g マウスで平行移動

Uploaded Image

調整が終わったら Default ウィンドウ構成に戻します。

Uploaded Image

Object Mode で Texture 表示にすると、調整したテクスチャが確認できます。

Uploaded Image

オブジェクトが大きすぎて既定で環境に設置されている光源がうまく利用できない場合は Create → Lamp → Sun 等を追加します。光源を含むオブジェクトを選択するためには右クリックを利用します。

Uploaded Image

テクスチャの適用

この続きが気になる方は

STL ファイルに Blender でテクスチャを適用して COLLADA を作成

残り文字数は全体の約 19 %
tybot
100 円
関連ページ
    概要 立方体を二つ配置して回転させてみます。ライブラリを用いずに OpenGL API を直接利用します。描画部分のみを IPython で検証するためのソースコードはこちらです。 wget https://gist.githubusercontent.com/harubot/df886254396a449038ee542ed317f7b3/raw/92216e02d0210b9d8177056
    概要 ロボットシミュレータ Gazebo を ROS 開発で利用するための簡単な手順を記載します。ここでは Debian9 を利用します。個別にインストールすることもできますが、ROS を ros-melodic-desktop-full でインストールすれば gazebo もインストールされます。 URDF モデルの作成
    概要 こちらのページでインストールした Open Dynamics Engine (ODE) について、ボディ操作に関する API のサンプルコードを記載します。 位置姿勢の設定 位置 odepy.dBodySetPosition(body, 0.0, 0.0, 0.0) 姿勢 (回転行列) R = odepy.dMatrix3() odepy.dRSetIdentity(R) odepy