3Dデータを扱っていると、避けて通れないのがOBJファイルですよね。3Dプリンタ界隈ではSTLが主流ですが、テクスチャや色情報を含めたいときにはOBJ形式の出番です。最近はAIによる3D生成サービスが増えてきて、3DCGを扱わない人でもOB J形式のファイルに触れる機会が増えてきました。
ところで、「OBJ」にも種類があるのはご存知でしょうか?

3D生成サービスで色付きの3Dモデルを生成できたゾ。
よし、これを3Dプリンタのスライサーに入れてマルチカラー印刷だ!!
と思って、スライサソフトでOBJ形式にファイルを開いたら、色が消えて単色のモデルになっちゃった・・・・

なんて経験はないでしょうか。実はこれ、「標準OBJ」と「頂点カラーOBJ」の仕様の違いが原因だったりするのです。本記事では、OBJファイルと頂点カラーOBJの違いを整理した上で、Google Colab + Pythonで標準OBJを頂点カラーOBJに簡単に変換する方法を解説します。誰でも数クリックで変換できる「変換スクリプト」も公開していますので、ぜひ試してみてください。
では、さっそくいきましょう!!
そもそもOBJファイルって何だ?
OBJファイルは、3Dモデルの情報を保存するためのファイル形式のひとつです。3DプリントでおなじみのSTLファイルの仲間みたいなものですね。ただし、STLが「形だけ」を記録するのに対して、OBJは色やテクスチャの情報も扱えるという特徴があります。
ここで大事なポイントがあります。OBJファイルの色の持ち方は、少しクセがあるのです。
身近なものに例えて説明しましょう。OBJファイルは「塗り絵の下書き」のようなものです。下書き(OBJファイル)には形の情報だけが描かれていて、色の情報は入っていません。色を塗るには、別途「色の指示書(MTLファイル)」と「絵の具セット(テクスチャ画像)」が必要なのです。

つまり、標準的なOBJファイルは「形」と「色」が別々のファイルに分かれているということです。OBJ本体、MTLファイル、テクスチャ画像——この3点セットが揃って初めてカラーの3Dモデルとして完成します。これが意外と厄介なんですよね。ファイルを誰かに渡すときにMTLやテクスチャ画像を入れ忘れたり、フォルダ構造が変わってファイルの参照が切れたりすると、色が消えてしまいます
頂点カラーOBJとは?
さて、ここからが本題です。もう一つのOBJの種類、頂点カラーOJBについて。頂点カラーOBJは、先ほどの「塗り絵方式」とはまったく違うアプローチで色を持つOBJファイルです。
先ほどの例えでは標準OBJが「下書き+色の指示書+絵の具セット」の3点セットだったのに対して、頂点カラーOBJは「最初から色が塗られた完成品」です。3Dモデルの各頂点(点)に直接「この点は赤」「この点は青」などという色情報が書き込まれています。

ファイル1つで色付きモデルが完結する——これが頂点カラーOBJの最大のメリットですね。MTLファイルもテクスチャ画像も不要です。ファイルの受け渡しで「色が消えた!!」というトラブルが起きにくいです。ただし、デメリットもあります。
標準OBJはテクスチャ画像を「壁紙」のように貼り付けるので、画像の解像度次第でいくらでも細かい色表現ができます。一方、頂点カラーOBJは点ごとに色を持つため、メッシュが粗いと色もぼやけてしまうのです。イメージとしては、テクスチャが「フルカラー印刷」だとすれば、頂点カラーは「色鉛筆で塗った塗絵」に近いですね。点が多ければ滑らかになりますが、点が少ないとどうしても大まかになります。
標準OBJとの比較
両者の違いを表にまとめてみましょう。

| 項目 | 標準OBJ | 頂点カラーOBJ |
|---|---|---|
| 色情報の管理方法 | 別ファイル(MTL+テクスチャ画像) | OBJファイルに直接埋め込み |
| ファイル構成 | 3つのファイルが必要 | 1ファイルで完結 |
| 色のきめ細かさ | テクスチャで高精細に表現可能 | メッシュの細かさに依存 |
| ソフトの互換性 | ほぼ全ソフトで対応 | 対応ソフトが限られる |
| 仕様上の位置づけ | 公式仕様 | 非公式の拡張 |
どんな場面で使われる? — マルチカラー3Dプリントとの相性が抜群!!
頂点カラーOBJが特に威力を発揮するのが、マルチカラー3Dプリントの場面です。

最近は複数色のフィラメントを自動で切り替えてカラフルな造形ができる3Dプリンタが安く手に入るようになってきました。こうしたマルチカラー対応のスライサソフト(Bambu StudioやPrusaSlicerなど)は、頂点カラーOBJをそのまま読み込んで、色ごとにフィラメントを自動割り当てしてくれます。
ここが大きなポイントです。標準OBJの場合、テクスチャ画像からの色情報をスライサーソフトが正しく読み込まない(読み込む機能がまだない)場合があります。OBJ、MTL、テクスチャ画像の3点セットを揃えても、スライサ側が「テクスチャを読み込んで色分けする」機能に対応していなければ、結局モノクロで出力されてしまいます。一方、頂点カラーOBJならファイルを1つ読み込むだけで色情報がスライサに伝わるので、すぐにマルチカラー印刷の設定に入れます。
つまり、「3Dモデルをカラフルにプリントしたい」という目的においては、頂点カラーOBJが最もスムーズなワークフローを実現してくれるというわけですね。

ちなみに、頂点カラーOBJは公式仕様ではなく非公式の拡張という立ち位置です。そのため、すべてのソフトが対応しているわけではありません。ソフトによっては「色情報を無視して形だけ読み込む」という挙動になることもあります。ただし、マルチカラー対応を謳っているスライサソフトであれば、基本的には頂点カラーOBJをサポートしています。
変換方法の選択肢
ここまでで、標準OBJと頂点カラーOBJの違いは理解できたかと思います。では、標準OBJ(テクスチャ付き)から頂点カラーOBJに変換したい場合はどうすればいいのでしょうか。主な選択肢は3つあります。

MeshLab — 手軽さNo.1
MeshLabは、3Dメッシュデータの処理に特化したオープンソースのフリーソフトです。OBJとテクスチャを読み込んだ後、メニューから Filters → Texture → Transfer: Texture to Vertex Color を実行するだけで変換できます。GUIで数クリックという手軽さは魅力的ですね。PCへの負荷も軽く、少し前のノートPCでも十分動きます。ただし、MeshLabは単発の変換には向いていますが、大量のファイルをバッチ処理したい場合にはやや不向きです。
Blender — 多機能だが手順が多い
Blenderでも変換は可能ですが、テクスチャから頂点カラーへのベイク処理が必要で手順がやや複雑になります。既にBlenderのワークフローに慣れている方なら選択肢に入りますが、この変換のためだけに導入するのはオーバースペックかもしれません。
Python + Google Colab — 本記事のおすすめ!!
そして、今回メインで紹介するのがPython + Google Colabを使う方法です。なぜこれをおすすめするかというと、最も手軽だからです。Googleのアカウントさえ持っていれば、今すぐ変換が実行できます。
Google Colabとは、Googleが無料で提供しているクラウド上のPython実行環境です。通常、Pythonを使うにはパソコンにPythonをインストールして、ライブラリを入れて…と色々面倒な準備が必要ですが、Google Colabならそれが一切不要。ブラウザでアクセスするだけで、すぐにPythonのコードを書いて実行できます。
環境構築が不要で、ブラウザだけで動きます。コードを共有すれば誰でも同じ結果が得られるので再現性が高く手軽だからです。Pythonの環境構築で詰まるリスクがほぼゼロ。コードをそのまま公開すれば、読者はワンクリックで試せちゃう。これは非常に大きなメリットではないでしょうか。
Google Colab + Pythonで変換してみよう!!
では、実際の変換手順を紹介していきます。
Googoleアカウントにログインしてこちらをクリック👇
(Google Clabが起動します)
Google Colabでの使い方
手順はたったの3ステップです。
ステップ1: コードを実行する。
Google Colabを開いたら、ごちゃごちゃとプログラムが出てきますが恐るることなかれ!!
とりあえず、左上の再生ボタンみたいない奴を押しましょう!!

ステップ2: ファイルをアップロード
ファイルをアップロードを選択すると、ファイル選択用のボタンが出てきます。そこで対象のOBJファイルを選択してください。この時の注意点としてはZipファイルである必要があります。中身に標準OBJのファイルである「OBJ、MTL、PNG」が入っているZipファイルを解凍せずにそのまま選択してください。

ステップ3: 変換を実行
以下のコードを実行するだけです。
変換後は自動でダウンロードされます。
あとはお好きにスライサーソフトに突っ込んじゃってくださいYo!!
MeshLabじゃダメなの?
今回は、とりあえず何もソフトウェアを導入せずに簡単に変換する方法を紹介しました。極力何もしたくないというズボラさん向けの手法です。一方で、ちょっと3Dモデルの扱い方を学んでみたいという人は、MeshLabの導入をお勧めします。変換作業くらいならMeshLabの方でも相当に手軽です。GUIで数クリックで済みますし、インストールも軽量です。ぜひお試しあれ!!
もっと迸る情熱とやる気があるならBlenderでもいいと思うけどね。両方とも無料なので、とりあえず試してみるってのはアリだね!!
まとめ
本記事の内容を復習しましょう。
・標準OBJファイルは「塗り絵の下書き」のようなもの
・色を表現するにはMTLファイルとテクスチャ画像の3点セットが必要
・頂点カラーOBJは各頂点に直接色を埋め込んだ「色付き完成品」
・変換方法にはMeshLab、Blender、Pythonなどの選択肢がある
・Google Colab + Pythonなら環境構築不要
・マルチカラー対応スライサソフトは頂点カラーOBJをそのまま読み込めるため、カラフルな3Dプリントへの最短ルートになる
標準OBJと頂点カラーOBJの違いを理解しておけば、マルチカラー3Dプリントへのワークフローがぐっとスムーズになります。ぜひ、Google Colabでスクリプトを動かして、カラフルなプリントライフを楽しんでください!!
本記事の内容は、こちらの動画でも紹介してます!!
画像から3Dモデルの生成ができるHitem3Dに関してはこちらの記事をチェック
Hitem3Dはこちら



