モーダルを閉じる工作HardwareHub ロゴ画像

工作HardwareHubは、ロボット工作や電子工作に関する情報やモノが行き交うコミュニティサイトです。さらに詳しく

利用規約プライバシーポリシー に同意したうえでログインしてください。

目次目次を開く/閉じる

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

モーダルを閉じる

ステッカーを選択してください

お支払い手続きへ
モーダルを閉じる

お支払い内容をご確認ください

購入商品
」ステッカーの表示権
メッセージ
料金
(税込)
決済方法
GooglePayマーク
決済プラットフォーム
確認事項

利用規約をご確認のうえお支払いください

※カード情報はGoogleアカウント内に保存されます。本サイトやStripeには保存されません

※記事の執筆者は購入者のユーザー名を知ることができます

※購入後のキャンセルはできません

作成日作成日
2019/03/20
最終更新最終更新
2024/12/27
記事区分記事区分
一般公開

目次

    3Dモデリングとゲームエンジンに興味があります。Blenderも活用!

    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 を選択します。

    Create sketch をクリックします。

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

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

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

    Pad をクリックします。

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

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

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

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

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

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

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

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

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

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

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

    STL から COLLADA を作成

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

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

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

    sudo apt install blender
    

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

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

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

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

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

    テクスチャの読み込み

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

    UV 展開

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

    Edit Mode に切り換えます。

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

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

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

    テクスチャの位置を調整

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

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

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

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

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

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

    テクスチャの適用

    COLLADA への変換だけであれば不要なステップです。マテリアルを作成しておきます。Intensity と Emit を適当に変更します。

    テクスチャアイコンをクリックします。

    New をクリックしてから先程利用したテクスチャ画像を選択します。

    Mapping の Coordinates が UV になっていることを確認します。更に Map を UVMap に変更します。

    Rendered 表示で結果を確認できます。

    以下のようになっていれば成功です。

    COLLADA データとしてエクスポート

    File → Export から COLLADA 出力します。

    その際、テクスチャの出力オプションを適宜選択します。

    meshlab 等で COLLADA ファイルの内容を確認すると以下のようになります。

    sudo apt install meshlab
    

    COLLADA はイメージ情報を内包していないことに注意します。テクスチャ画像を参照しています。

    $ grep 'hoge\.png' sample.dae 
          <init_from>hoge.png</init_from>
    
    Likeボタン(off)0
    詳細設定を開く/閉じる
    アカウント プロフィール画像

    3Dモデリングとゲームエンジンに興味があります。Blenderも活用!

    記事の執筆者にステッカーを贈る

    有益な情報に対するお礼として、またはコメント欄における質問への返答に対するお礼として、 記事の読者は、執筆者に有料のステッカーを贈ることができます。

    >>さらに詳しくステッカーを贈る
    ステッカーを贈る コンセプト画像

    Feedbacks

    Feedbacks コンセプト画像

      ログインするとコメントを投稿できます。

      ログインする

      関連記事

      • ROS 環境構築および簡単な使い方 (Debian9)
        サムネイル画像-cca07ee896
        ロボットシステム開発のためのフレームワーク Robot Operating System (ROS) の環境構築および簡単な使い方について記載します。ここでは Debian9 を利用することにします。ROS は現行バージョン1 の Melodic Morenia ディストリビューションを扱います。 ROS 対応のロボット [TurtleBot3](http://emanual.robotis.co...
        ロボラボロボラボ12/27/2024に更新
        いいねアイコン画像0
      • ROS/tf による座標変換
        ロボットを制御する際に複数の座標系を扱う必要があります。これら複数の座標系間の変換等を行うためのライブラリに tf2 (transform2) があります。C++ と Python がサポートされていますが、ここでは Python を用いて簡単な使い方を把握します。 tf2 チュートリアルと同様に動作検証のためのパッケージを用意します。ROS ノードのスクリプトを格納
        そよかぜそよかぜ12/27/2024に更新
        いいねアイコン画像0
      • ロボットシミュレータ Gazebo の簡単な使い方 (ROS)
        サムネイル画像-82838933fc
        ロボットシミュレータ Gazebo を ROS開発で利用するための簡単な手順を記載します。ここでは Debian9 を利用します。個別にインストールすることもできますが、ROS を ros-melodic-desktop-full でインストールすれば gazebo もインストールされます。 [URDF モデルの作成](http://wiki.ro
        てんとうむしてんとうむし12/27/2024に更新
        いいねアイコン画像0
      • 輪郭に関連した画像処理 (OpenCV3 C++)
        サムネイル画像-2798a45608
        cv::Canny などで検出したエッジをもとに cv::findContours で輪郭を計算できます。輪郭に関連した処理の例を記載します。 輪郭の描画 #include <opencv2/opencv.hpp> #in
        あきらあきら7/22/2024に更新
        いいねアイコン画像0
      • Qt for Python (PySide2) の基本的な使い方
        サムネイル画像-3eccbf937d
        QT を Python から利用するためのライブラリには PyQt や PySide 等が存在します。PySide は元々 QT4 向けのライブラリでしたが、QT5 に対応するために新たに PySide2 が開発されました。PySide2 は Qt for Python ともよばれています。 Q: PySide? Qt for Python? what is the name?A: The nam...
        AWS NinjaAWS Ninja11/17/2023に更新
        いいねアイコン画像0