目次

技術ノート「Roblox公式のBlenderアドオンの使い方」

1. Roblox公式 Blenderアドオンとは

通常、Blenderで作成したメッシュをRobloxスタジオで使用するには、FBXファイルのエクスポート、インポートが必要です。そのため、Blenderでメッシュの修正を行ったときや、テクスチャのパスの問題など、何かと手間がかかります。

これらの問題はRoblox公式のBlenderアドオンで軽減することが可能です。本チュートリアルではこのアドオンを解説していきます。

操作の流れはこのビデオのようになります。

2. Blenderアドオンのインストール

1.ダウンロードとインストール

    1. まずはアドオンを下記ページからダウンロードします。
      GitHub – Roblox/roblox-blender-plugin: A Blender plugin to upload selected assets in Blender to Roblox using Roblox’s Open Cloud API.

  1.  
    1. Blenderにアドオンをインストールします。編集>プレファレンスからアドオンタブを選択してインストールします。チェックボックスをクリックして有効化したら、プレファレンスを閉じます。

    1. Robloxサイドパネルを開き、「Install Dependencies」をクリックして依存ファイルをインストールします。依存ファイルのインストールには少し時間がかかります。(もし依存ファイルのインストールが終わらなくても次のステップに進んで大丈夫です。)

    1. インストールが終わったらBlenderを終了し、また起動します。

    1. Robloxサイドパネルに「Log in」ボタンが表示されたらアドオンのインストールは完了です。

2. アドオンからRobloxアカウントにログインする

    1. Robloxサイドパネルを開き、「Log in」ボタンをクリックします。自動的にWebブラウザが起動します。

    2. アップロードするアカウントを指定して、アドオンからのアクセスを認証します。白い画面が表示されたら認証完了ですので、Webブラウザを閉じます。

  1. Robloxサイドパネルに指定したアカウント名が表示されたらログインは完了です。
  1.  

これですべての準備ができました。

3. アップロードする

Blenderでメッシュまたはコレクションを選択して、Robloxサイドパネルの「Upload」をクリックすることでRobloxスタジオにアップロードできます。

アップロードされたメッシュは、RobloxスタジオのToolbox>Inventory(タブ)>My Packages(ドロップダウン)にパッケージとして保存されています。

アップロードするとすぐにRobloxスタジオに反映されますが、まれに数分かかることがあります。

 

パッケージとは

パッケージは制作を効率化し、アセットの管理を容易にするための仕組みです。パッケージを使用することで、以下のような利点があります。

    1. エクスペリエンス内で同じオブジェクトが複数箇所にある場合、オブジェクトをパッケージにして配置することで一貫性を保つことができます。このとき、配置されたものはパッケージの分身であり、これをインスタンスと呼びます。

    1. アセットの更新が容易になります。インスタンスに変更を加えると、すべてのインスタンスに変更が反映されます。

パッケージに関して詳しくは公式ドキュメントをご参照ください。

4. BlenderのメッシュとRobloxスタジオでのメッシュの関係

 

マテリアル

Blederでメッシュにテクスチャを適用しているときは、そのテクスチャもメッシュと共にアップロードされます。

テクスチャにカラーマップのみを使用しているときは、RobloxスタジオではMeshPartのTextureIDにテクスチャ画像が読み込まれます。

一方、テクスチャにPBRテクスチャ(カラー、メタルネス、ラフネス、ノーマル)を使用しているときは、RobloxスタジオではMeshPartの子のSurfaceAppearenceにそれぞれのテクスチャ画像が読み込まれます。

また、Blenderでメッシュに頂点ペイントすると、Robloxスタジオでも色が反映されます。

アーマチュア

アーマチュア(ボーン)は、メッシュと共にアップロードされます。

アニメション

アニメーションのデータはまだ未対応のようです。

パッケージの名前

Blenderでのメッシュ名、コレクション名がそのままRobloxスタジオでのパッケージ名になります。同じ名前のメッシュ、コレクションをアップロードするとRobloxスタジオで区別しにくくなるため、ユニークな名前をつけてからアップロードすることをおすすめします。

メッシュの大きさ

Blender上で1メートルの長さは、Robloxスタジオでは1スタッドの長さになります。(Blenderのシーンの単位にかかわらず。)

本来、Blender上の1メートルはRobloxスタジオでの100スタッドに相当しますが、アドオンの設定でExport Scaleが0.01になっているため、1メートルが1スタッドになります。

メッシュの座標系

Blenderの座標系は手前が-Y、上がZですが、Robloxスタジオの座標系は手前が-Z、上がYです。座標系の変換はアドオンによって自動的に行われますので、特に意識する必要はありません。

5. パッケージを使用する

RobloxスタジオでパッケージをWorkspaceに配置するには、Toolbox>Inventory(タブ)>My Package(ドロップダウン)の中から目的のパッケージを見つけてクリックします。

My Package内でのパッケージの並び順に規則性はありません。そのため、数が多いときはパッケージの名前で検索して見つけます。

6. パッケージを更新する

Blenderでアップロードしたメッシュ、コレクションを再度アップロードすることで、Robloxスタジオのパッケージを更新できます。手順は次のようになります。

    1. Blenderで、すでにアップロードしたメッシュやコレクションを選択して「Upload」をクリックします。

    1. Robloxスタジオでは、該当するパッケージの名前の後ろに緑色のアイコンが表示されます。このアイコンはパッケージが更新可能であることを示しています。

    1. パッケージの名前を右クリックし、「Get Latest Package」します。

    1. パッケージ内のメッシュがBlenderでアップロードしたメッシュに置き換えられます。

毎回「Get Latest Package」するのではなく、アップロード後すぐ反映させることもできます。

    1. パッケージを展開します。中にメッシュとPackageLinkがあります。

    1. PackageLinkをクリックします。

    1. Properties>Link>AutoUpdateを有効にします。

これですぐに反映されるようになります。手間が省けるのでおすすめの設定です。

7. パッケージに修正を加える

Robloxスタジオでパッケージ自体の移動やサイズ変更などは支障なく可能です。しかし、パッケージに含まれるメッシュに修正を加えるときは注意が必要です。再度Blenderからアップロードしたときに、Robloxスタジオでの修正とバッティングするためです。

パッケージに含まれるメッシュを修正したとき

例えば移動や回転、色の変更などメッシュのプロパティを変更する操作をすると警告の画面が表示されます。

「OK」すると修正がメッシュに反映されますが、Blenderからの更新が一時的に止まります。このときパッケージ名の前に!アイコンが表示されます。パッケージ名を右クリックし、「Undo Changes to Package」すると更新を再開するできますが、メッシュへの修正はすべて取り消されてデフォルトの状態に戻ります。

「Revert Changes」すると、メッシュへの修正は取り消され、デフォルトの状態に戻ります。

つまりほとんどの場合、パッケージ内のメッシュには変更を加えない運用がよさそうです。

8. パッケージをアンカーするには

パッケージを選択してアンカーしたときも、上記の警告画面が表示されます。そのため、アンカーするか、Blenderからの更新を一時的に止めるか、どちらかを選ばなければなりません。しかし建造物などはアンカーしておきたいため、実行時にパッケージをアンカーするスクリプトを作成して私は対応しています。

-- スクリプトの親(モデル)を取得
local model = script.Parent
-- モデル内のすべてのパーツをループ処理
for _, part in ipairs(model:GetDescendants()) do
    if part:IsA("BasePart") then -- パーツがBasePartクラスのインスタンスであるか確認
        part.Anchored = true -- アンカーをオンに設定
    end
end

9. まとめ

質問やご意見がありましたら、ぜひDMをお願いします。
最後までご覧いただきありがとうございました。

・・・・・・・・・・

この技術ノートはRoblox開発者フォーラムに投稿したものに加筆、修正を加えたものです。また、同フォーラムで開催された「Knowledge Challlenge with DEVLOX」で1位を受賞いたしました。

more news

Contact

お気軽にお問い合わせください

たんじ

X(Twitter): たんじ / たんたん (@keita0x12)
Discord: tanji_tantan
Roblox: tan_tan (@keita0x12)

シンジ esk.

X(Twitter): シンジ esk. (@snj_esk)
Discord: snjesk
Roblox: Shinji_esk (@Shinji_esk)