Blenderでオブジェクトを統合するとテクスチャが表示されなくなる問題

はじめに  

3Dデザイナーの武藤です。
Synamon Advent Calendar 2021 5日目の今回は私が業務で使用しているCGソフト、Blenderで起きたトラブルと原因について紹介させていただきます。

qiita.com


本題と解決方法

Blenderでオブジェクトを統合した際に片方のオブジェクトのテクスチャがおかしくなってしまったことはありませんか? f:id:porto942:20211203160707p:plain

いきなり結論ですがほとんどの場合、これはUVマップの名前に原因があります。プロパティタブ内にあるオブジェクトデータプロパティの項目を確認してください。

今回の例を見ると統合しようとしたオブジェクトのそれぞれのUVマップの名前が異なっていました。名前が異なるので統合した後はそれぞれ別のデータとして分けられてしまい、結果テクスチャの表示を意図しないものにしていました。*1

対処方法も単純で結合する前にそれぞれのオブジェクトのUVマップ名を合わせるだけです。

f:id:porto942:20211203161730p:plain
赤枠の部分を同じ名前に揃えてください

そうすればオブジェクトを統合したとき1つにまとめられます。


どうしてUVマップの名前が合わないのか

UVマップの項目にわざわざ手を加えて名前を変える人はあまり多くはないでしょう。今回のような状況はBlenderからデータを出し入れした際に発生することがほとんどです。よくある例として以下の2つのパターンを例としてご紹介します。

  1. 他のソフトで作られた3Dモデルを読み込んだ場合
  2. 設定の異なるBlender間でデータのやり取りをした場合


まず1の『他のソフトで作られた3Dモデルを読み込んだ場合』です。UVマップの名前は決められた共通のフォーマットがあるわけではありません。Blenderのデフォルトは『UVMap』ですがソフトによって『UV』だったり『UVmap』だったりオブジェクト名だったりします。

今回はケーキはフォトグラメトリーで、包丁はBlender内で作成したためUVマップの名前が一致しない状態になっていました。

初めてこの現象に遭遇したのもこのパターンでした。実は現在Synamonではデザイナーが全員がそれぞれ異なる3Dソフトを使っています*2。そのため各モデルのUVマップの名前が作った人物によって異なるのです。

ここまで極端な状態でなくても、購入してきた3Dモデルを使用する際にはおそらくこの問題に直面するでしょう。

f:id:porto942:20211203162119p:plain
今回だとケーキはUVマップが『UV』という名前で登録されています


次に2です。Blenderはデフォルトで『UVMap』という名前を付けると先ほど紹介しましたが、これは絶対ではありません。設定に手を加えている場合は他の名前がデフォルトで付けられる場合があります。

その設定の中には多くの方が変更しているであろう言語設定も含まれています。Blenderの表示を日本語に変更する際、チェックを入れられる項目は3ヵ所あります。

f:id:porto942:20211203171546p:plain
赤枠内

このうち一番下の『新規データ』が問題です。この項目にチェックを入れると新しく作成したデータの名前まで日本語で作られるようになります。そうすると『UVMap』ではなく『UVマップ』という名前が付けられるようになります。

f:id:porto942:20211203172348p:plain
左のキューブは『新規データ』にチェックを入れた状態で新規作成したのでUVマップ名やオブジェクト名が日本語になっている
ですので複数のBlenderでデータのやり取りをする際、この項目の設定にバラツキがあると、Blenderしか使用していないのにこの問題が発生する場合があります。


おわりに

はじめてこの問題に直面した当時は情報がとても少なく、名前を変えればいいだけなのに解決に時間がかかってしまいました。今回数年越しにそのことを思い出して記事を作成したのですが……

後から調べると日本語のページが増えてました。

……それはそれとしてBlenderの情報が増えているのはうれしいです。皆さんもBlenderやりましょう!日本語に限らずドキュメントやチュートリアルがここ数年で急増してます。以前つまずいてしまった方も今なら違う結果になるかもしれません。


日本語化の際の各チェック項目について(おまけ)

今回はUVマップについてのみ紹介しましたが日本語化の際『新規データ』の項目にチェックを入れると他にも問題を引き起こす可能性があります。その例を簡単にご紹介します。 - デフォルトの名前と異なる文字列が入るのでプラグインが機能しない - 例:プラグイン自身が自動生成した『Cube』を探すも『立方体』という名前で生成されてしまい見つけられない - 完成品データに意図せず日本語の名前のデータが混ざり問題を起こす - 例:エクスポートしたデータに日本語が含まれており外部ソフトで読み込めない

個人的には今のところメリットを見つけられていないので『新規データ』の項目のチェックは入れないことをお薦めします。 他の2つはUIの日本語化なのでチェックを入れてもデータには影響しません。

*1:この場合Blenderは統合先のオブジェクト=最後に選択したオブジェクトのUVマップを優先して表示します

*2:Blender、LightWave、MAYA、MODO…etc