ツール・サービス 約7分で読めます

無料の3Dモデルをゲームに入れる手順|ライセンスの確認と、Blenderで軽くする方法

Blenderの公式ロゴと「無料の3Dモデルをゲームに入れる」の文字。背景に、ディシメートを適用したひげのドワーフのBlenderの画面が暗く映っている

無料で配られている3Dモデルは、そのままゲームに入れると重すぎることがあります。この記事では、公開データセットのGLBを実際に取って、Blenderで10分の1の三角形に減らし、Three.jsで描画した時間を測りました。5.1MBのファイルは0.6MBになり、20体を描く時間は、約3.5倍速くなりました。

Blender 5.2.3 LTSの日本語表示で、取得から書き出しまでを実際に通した内容です。Blenderでものを動かす基本は、立方体を動かす方法で説明しています。

この記事で分かること

  • 無料の3Dモデルの取得先と、使うときの条件(ライセンス・ログイン)
  • GLBの中身(三角形・メッシュ)の確かめ方
  • Blenderで10%に減らす手順と、見た目が崩れ始める境目
  • 書き出しで入れ忘れやすい設定
  • Three.jsで測った、描画時間の変化と、測れていない範囲
この記事の目次
  1. 01作業の流れ
  2. 02取得先と、使うときの条件
  3. 03GLBの中身を数える
  4. 04Blenderで読み込む
  5. 051つにまとめて、デシメートで減らす
    1. どこまで減らせるか
  6. 06書き出し|「モディファイアーを適用」を入れる
  7. 07Three.jsで描画した時間を測る
    1. この数字が言えないこと
  8. 08うまくいかないとき
  9. 09よくある疑問
  10. 10次はこの記事
  11. 11ほかにも読みたい記事

作業の流れ

作業の流れを5つの手順で示した図。1はライセンスを確かめる。2はGLBを1つだけ取る。3はBlenderで読み込んで1つにまとめる。4はデシメートで10パーセントに減らす。5はモディファイアーを適用を入れて書き出す
ライセンスの確認から、書き出しまでの5手順

取得先と、使うときの条件

調べたのは、Hugging Faceで公開されている2つのデータセットです。どちらも、ログインなしで取得できました。

取得先を2つ並べた図。Scenario 3D Collectionは、ライセンスがCC BY 4.0、クレジットはScenario、GLBが1,271個ほど、ログイン不要で、ゲーム向きのGLBがある。Nvidia simready-assetsは、確認した1つのライセンスがCC BY 4.0、形式はUSDが中心、GLBは上位の形式に出ず、ログイン不要で、変換が必要になる
2つの取得先を比べました
項目 Scenario 3D Collection Nvidia simready-assets
ライセンス CC BY 4.0(説明ファイルに記載) CC BY 4.0(確認した1つのフォルダのライセンスファイル)
クレジット 「Scenario」と書く この記事では確かめていません
主な形式 GLB 1,271個、Blender 137個、FBX 7個ほか USDが中心
ログイン 不要(GLBのダウンロードに接続できた) 不要(ライセンスファイルを読めた)

ブラウザゲームで使うなら、GLBがそのまま入るScenarioの方が手間がかかりません。以降は、Scenarioのモデルを使います。同じ作者の別のセットは、ログインと利用条件への同意が必要で、ライセンスも別です。混ぜないようにします。

CC BY 4.0は、クレジットを書けば、商用でも使える条件です。ただし、AIで生成されたモデルだと書かれています。ゲームを公開する先で、AI生成物の扱いに決まりがないかは、公開先の規約で確かめてください。

GLBの中身を数える

ファイルの大きさだけでは、ゲームで重いかどうかが分かりません。三角形の数と、メッシュ(部品)の数を数えます。3つのモデルのGLBを取って、ファイルを直接読んで数えました。

調べた3つのモデルのプレビュー画像。左は噴水と鳥の置物、中央はひげのドワーフ、右はオフィスの室内
取得先のプレビュー画像
GLBの中身を数えた表。噴水と鳥は7.7MBで三角形が約24万、頂点が約17.6万、メッシュが607。ドワーフは5.1MBで三角形が約24万、頂点が約12.8万、メッシュが33。オフィスは6.8MBで三角形が約14万、頂点が約18万、メッシュが1,163
3つのモデルの中身

どれも、ブラウザゲームの部品としては重い数字です。この記事では、キャラクターとして使いやすいドワーフを、軽くしていきます。

Blenderで読み込む

取ったGLBは、新しい作業用のフォルダに保存しました。Blenderでは、「ファイル → インポート → glTF 2.0」を選びます。画面の中で、ファイルの名前を選んで、読み込みのボタンを押します。

左はファイルの選択画面で、dwarf.glbが選ばれ、右下にglTF 2.0をインポートのボタンがある。右は読み込んだあとの画面で、ひげのドワーフが表示されている
GLBを読み込みます

読み込む前に、最初にある立方体などは消しておきます。消し方は、最初の立方体を消す方法で説明しています。

1つにまとめて、デシメートで減らす

画面左上の「統計」を出すと、読み込んだ直後のオブジェクトは33個、三角形は244,326個でした。統計の出し方は、頂点・辺・面とはに書いています。

  1. 全部を選んで、Ctrl+Jでまとめる読み込んだ直後は、全部のオブジェクトが選ばれています。3Dビューポートの上でCtrl+Jを押してください。33個のオブジェクトが、1個になります。描画の指示が減り、Three.jsで速くなる理由の1つでした。
  2. モディファイアーのタブで、デシメートを追加する右下のプロパティで、レンチのアイコンを開きます。「モディファイアーを追加 → 生成 → デシメート」を選びます。
  3. 「比率」を0.1にする入力欄をダブルクリックして、0.1と打ち、Enterで確定します。
左はモディファイアーを追加のメニューで、生成の中のデシメートを選ぶ画面。右はデシメートのパネルで、比率が0.1、面数が24,431になっている
比率を0.1にすると、面数が約10分の1になります
画面左上の統計を3つ並べた図。読み込んだ直後はオブジェクト33、頂点128,029、三角形244,326。Ctrl+Jでまとめるとオブジェクト1、頂点128,029。比率0.1にすると頂点13,907、辺38,115、面24,431、三角形24,431
統計で、減ったことを確かめます

画面で見ても、ドワーフの見た目は変わらないように見えました。

どこまで減らせるか

比率を、10%、3%、1%に変えて、見た目を比べました。この比較は、Blenderを画面なしで動かして、33個のオブジェクトにそれぞれ同じ比率をかけて描いたものです。

4体のドワーフを並べた図。元は約24万三角形、10パーセントは約2.4万三角形でほぼ同じ見た目、3パーセントは約7.6千三角形でベルトのバックルが三角形になり服の縁がギザギザ、1パーセントは約3千三角形で顔や服が崩れている
10%まではほぼ同じ、3%から崩れ始めます

10%までは、元とほぼ同じに見えました。3%になると、ベルトのバックルが三角形になりました。1%では、顔や服が大きく崩れました。このモデルでは、10%が、見た目を保てる目安でした。ほかのモデルの限界は、試していません。

書き出し|「モディファイアーを適用」を入れる

「ファイル → エクスポート → glTF 2.0」を選びます。右の設定で、「データ → メッシュ」の中にある「モディファイアーを適用」に、チェックを入れます。

書き出しの設定のメッシュの項目。左は初期状態で、モディファイアーを適用がチェックなし。右はチェックを入れた状態。チェックなしで書き出すと5,595,948バイトで三角形は244,326のまま。チェックありで書き出すと621,780バイトで三角形は24,431
チェックを入れないと、軽くなりません

初期状態では、このチェックが外れていました。チェックを入れないで書き出すと、ファイルは5,595,948バイト(約5.3MB)で、三角形も244,326個のままでした。デシメートの設定が、書き出しに反映されなかったためです。チェックを入れて書き出すと、621,780バイト(約0.6MB)で、三角形は24,431個でした。

設定の説明には、「(アーマチュア以外の)モディファイアーをメッシュオブジェクトに適用します。注:シェイプキーのエクスポートを妨げます」と出ます。表情の変形などを持つモデル(シェイプキー付き)は、この方法で書き出せない場合があります。今回のモデルは、シェイプキーも、骨(スキン)も持っていませんでした。

書き出したGLBを、もう一度ファイルから数え直しました。メッシュは1個、材質は34個、三角形は24,431個で、アニメーションはありません。

Three.jsで描画した時間を測る

元のGLBと、書き出したGLBを、Three.jsで描画して、時間を測りました。同じモデルを1体、5体、20体並べて、それぞれ120回描画した平均です。

Three.jsの描画時間の表。元のまま33個のままは、1体で0.22ミリ秒、5体で0.61、20体で2.42、描画の指示は1,880回。まとめて10パーセントにしたものは、1体で0.07、5体で0.22、20体で0.70、描画の指示は680回
20体で約3.5倍速くなりました

20体を描く時間は、2.42ミリ秒から0.70ミリ秒になりました。三角形は、20体で約490万から約49万に減っています。ただし、時間が縮んだ主な理由は、描画の指示の数です。1,880回から680回に減りました。実際に、三角形だけを減らして、33個のオブジェクトのまま測ったときは、20体で約2ミリ秒のままでした。

この結果から、軽くするときは、三角形を減らすだけでなく、オブジェクトをまとめることも効きます。

この数字が言えないこと

  • 測ったのは、NVIDIA GeForce RTX 4060を積んだパソコンの、1つのブラウザだけです
  • スマートフォンや、内蔵GPUのパソコンでの数字ではありません
  • 元のままでも、このパソコンでは、20体を2.42ミリ秒で描けました。重すぎるとは言えない結果でした
  • ゲームの中で、キャラクターを動かしたり、影をつけたりしたときの数字は、測っていません

ファイルサイズが5.1MBから0.6MBに減った点は、環境に左右されません。ブラウザゲームでは、読み込みの時間に効きます。

うまくいかないとき

症状 確認すること
書き出したのに、軽くならない 書き出しの「モディファイアーを適用」にチェックが入っているか
デシメートの比率を変えても、数が変わらない モディファイアーを付けたオブジェクトが、選ばれているか。パネルの「面数」を見る
ファイルの選択画面で、読み込みができない ファイル名の欄に名前が入っているか。入っていないと、「Please select a file」と出ました
形が崩れた 比率を上げます。このモデルでは、3%で崩れ始めました

関連記事Blenderで低ポリ(ローポリ)の木を作る方法|円柱と円錐だけで作る手順

よくある疑問

Nvidiaのモデルは使えませんか

この記事では、Nvidiaのモデルを試していません。公開されているファイルの多くはUSDで、GLBに変換する必要があります。必要になったときに、別の記事で扱う予定です。

クレジットは、どこに書きますか

取得先の説明では、「Scenario」とクレジットするよう指示されています。書く場所や書き方の細かい決まりは、確かめていません。例えば、ゲームのクレジット画面に「3D model: Scenario (CC BY 4.0)」と書く形が考えられます。

色や材質は、ゲームでそのまま出ますか

ドワーフは、画像のテクスチャを持たず、材質の色だけでできていました。Three.jsでも、色が付いた状態で表示されました。ほかのモデルの見た目は、確かめていません。

次はこの記事

次に読む1本|Blenderからglbに書き出す方法(準備中)

自分で作ったモデルを、ゲームで読める形で書き出す方法を説明します。公開しだい、ここから案内します。

ほかにも読みたい記事

連載とは別に、目的が違う場合に役立つ記事です。

3Dをゲームに使う全体像を知りたい

AIで3Dモデルを作る方法と、ゲームに入れる流れをまとめています。
AIで3Dモデルを作ってゲームに使う方法

Blenderで何が作れるか知りたい

作例の画像つきで、Blenderで作れるものを紹介しています。
Blenderとは?

ゲーム素材の全体像を知りたい

立ち絵、ドット絵、BGM、3Dなど、ゲーム素材を作る道具をまとめています。
ゲーム素材をAIで作る方法