3Dモデルを使ったシミュレーターやカスタマイザーを制作していると、画面上では簡単そうに見える変更でも、3Dデータの内部では思いがけない問題に遭遇することがあります。
今回は、その中でも特に苦労した「メッシュ」について書いてみたいと思います。
以前の記事では、3Dシミュレーター上で色や素材を切り替える仕組みについて触れましたが、実際には「この部分の色を変えれば終わり」というほど単純ではありません。
見えている形と、3Dデータ内部の構造が一致していないことがあるためです。
「面」に見えても、同じ面ではない
3Dモデルを画面上で見ると、一つの部品、一つの面に見えることがあります。
ところが、実際にメッシュを確認してみると、
・複数のメッシュに分かれている
・逆に別々に見える部分が一つのメッシュになっている
・同じ部品のように見えて、異なるマテリアルが設定されている
といったことがあります。
3Dモデルでは、私たちが画面上で「一つの部品」と認識しているものと、データ上の構造が必ずしも一致しているわけではありません。
そのため、
「この部分だけ同じ色にしたい」
という一見単純な作業でも、まず内部構造を調べるところから始まります。
同じテクスチャを適用したいのに、UVに存在しない
さらに難しかったのがUVです。
3Dモデルでは、画像をモデルの表面に貼り付けるために「UV」という情報を利用します。
簡単に言えば、立体の表面を平面上に展開し、
「画像のこの場所を、3Dモデルのこの面に表示する」
という対応関係を作る仕組みです。
ところが今回扱ったデータでは、同じテクスチャを反映させたい部分を調べても、UV上に該当する面が見つからないことがありました。
見た目では確実に存在している。
しかしUVを確認しても見当たらない。
こうなると、
「どのメッシュなのか」
「別のマテリアルなのか」
「別オブジェクトとして存在しているのか」
と、一つずつ確認する必要があります。
単に画像を差し替えるだけでは解決できません。
パーツとパーツの間に、さらに別のパーツがある
外観だけでは分かりにくかった問題もありました。
二つの部品が接しているように見える場所を詳しく調べていくと、その間に非常に細かな別パーツが存在していました。
しかも、そのパーツにも個別のマテリアルやメッシュが設定されています。
大きな部品だけを見て色や素材を変更すると、その細かな部分だけ以前の色が残ってしまいます。
例えば、
金属部分をすべて同じ色に変更したはずなのに、境界部分に細い線のように元の色が残る。
こうした現象が起きます。
画面では数ピクセル程度にしか見えない部分でも、3Dモデルとしては独立した部品になっていることがあります。
原因を見つけるまでが、実はかなり大変です。
本来分かれてほしい部品が結合されている
逆の問題もありました。
本来は別々に扱いたい複数のパーツが、一つのオブジェクトとして結合されているケースです。
この状態では、
「こちらだけ色を変更する」
「こちらだけ材質を変更する」
といった処理が難しくなります。
そこで3D編集ソフト上で構造を確認し、必要な部分を選択して分割しました。
見た目を変えずに内部構造だけ整理する作業です。
ただし、無理に分割すると形状が崩れたり、法線やマテリアル、UVなどに影響が出たりする可能性があります。
そのため、
「どこまで分割してよいのか」
を確認しながら慎重に作業する必要があります。
くり抜かれた文字が本体と一体化していた
特に難しかったものの一つが、レーザー加工されたような文字部分でした。
製品では文字が切り抜かれているように見えるのですが、3Dデータを確認すると、その文字部分が本体側のメッシュと一体化していました。
つまり、単純なテクスチャとして文字が描かれているわけではなく、形状そのものとして作られていました。
そのため、
「文字部分だけ処理する」
ということが簡単にはできません。
細かな頂点や面を確認しながら、本体の形を壊さないように処理する必要があります。
こういった部分は、完成した3Dモデルを見るだけでは、まず分からないところです。
実物の画像と3Dモデルの形が違うこともある
さらに、提供された3Dモデルと実際の製品写真を比較すると、形状そのものが異なっている箇所もありました。
Web上で製品を再現する場合、元の3Dモデルがあるからといって、それをそのまま使用できるとは限りません。
実物の画像に近づけるために、形状を調整する必要があります。
今回のケースでは、ある装飾部分について、元データだけでは実物の形を十分に再現できませんでした。
そこで既存の形状や画像から必要な情報をベイク(焼き付け)する方法などを利用しながら、追加のメッシュを作成し、実物に近い外観になるよう調整しました。
ゼロから3Dモデルを作る作業とは少し違います。
「既存データを残しながら、足りない部分だけ補う」
という作業です。
既存モデルとの境界が不自然にならないようにする必要があるため、これも意外と難易度の高い作業でした。
3D制作は「見えない部分」を調べる時間が長い
こうした作業をしていると、
「3Dモデルがあるなら簡単なのでは?」
と思われることがあります。
しかし、既存の3DモデルをWebシミュレーターなどで利用できる状態にする場合は、
・メッシュ構造
・オブジェクトの分割状態
・マテリアル
・テクスチャ
・UV
・法線
・実物との形状差
などを確認する必要があります。
特に既存データを引き継ぐ案件では、「なぜこのような構造になっているのか」が分からないところから調査することも少なくありません。
画面上では同じ色に見えていても、中では全く別の仕組みで作られている場合があります。
見た目を変えずに、中身を作り直す
今回のような3Dシミュレーターの仕事では、新しくモデルを作るだけでなく、
「すでにあるモデルを壊さず、Web上で扱いやすい構造に修正する」
という作業も重要になります。
分割した方がよいものを分割する。
一つに見せたい部分には同じ素材を適用する。
不足している形状は追加する。
それでも、元の製品の見た目は変えない。
こうした調整を積み重ねることで、ようやくユーザーが画面上で自然に色や素材を切り替えられる3Dシミュレーターになります。
完成した画面だけを見ると、ボタンを押して色が変わるだけのシンプルな機能に見えるかもしれません。
しかしその裏側では、3Dモデルの細かなメッシュを一つずつ確認しながら、必要に応じて分割・修正・追加を行っています。
3Dを扱う仕事のおもしろさは、こうした「見た目からは分からない問題を探して解決していくところ」にもあると感じています。