2025年9月20日土曜日

丸3日かけて技術的トゲを抜く

 Spent three full days removing a technical thorn.


I'm currently working on creating and analyzing 3D distribution data for 60,000 artifacts excavated from a shell mound. Using Blender's geometry nodes is technically essential. However, I encountered a technical thorn: the textures on the 3D models generated using geometry nodes wouldn't stick in 3DF Zephyr Lite. It took me three full days to remove it.


貝塚出土6万遺物の3D分布データ作成分析に取組んでいます。Blenderのgeometry nodes活用が技術的に必須となっています。そんな中で、geometry nodes生成3Dモデルのテクスチャが3DF Zephyr Liteで貼り付かないという技術的トゲが刺さり、抜くのに丸3日かかりました。

1 geometry nodesによる3Dモデルの生成

Blenderにcsvファイル遺物点群(例では2500)をプロットし、geometry nodesで直径0.01mの球で表現し、赤色画像をマテリアルに貼りつけました。


遺物点群をオブジェクト(球)に変換して表示した様子(Blender画面)


geometry nodes

この赤色球2500モデルをWabefront(.obj)ファイルに書き出し、利用しだしました。Sketchfabに投稿もしました。


Sketchfab投稿画面

2 障害

作業は順調にすすんでいるようでした。しかし、そうは問屋が卸しませんでした。

このファイルを動画作成のために3DF Zephyr Liteに投入すると画像が貼り付かないで、真っ白の3Dモデルになってしまいます。MeshLabでも3Dモデルが真っ白になってしまいます。


3DF Zephyr Liteで3Dモデルが真っ白になった様子

3DF Zephyr Liteはフォトグラメトリソフトですが、自分は動画作成やカラーフィルター機能でも利用していて、Blenderといつも一緒に使っています。従って、3DF Zephyr Liteが使えない状況は必ず解決しなければならない問題です。体に刺さったトゲを放置することがないのと同じです。

3 ChatGPT相談

類似の障害は過去に経験したことがあるので、その時の障害要因を調べて対策を取りました。しかし、今回は直りません。

このような障害が発生して解決できない時はChatGPTに相談して、ほとんどの場合は解決します。そこで、今回も相談したところ、詳しい説明があり、要約すると次のようになります。

・Realize Instances + Set Material を明示的に使う

・画像テクスチャをエクスポートフォルダにコピー or Pack Resources

・マテリアル名を整理

・glTF (.glb) や FBX での書き出しを試す

しかし、それぞれ試したのですが、全てダメでした。

4 試行錯誤的検討により得られた解決策

この障害解決に試行錯誤的に丸3日取組み、結果としてgeometry nodesの書き方を変更して解決を得ることができました。


障害を解決することができたgeometry nodes

最初のgeometry nodesでは点群を球に変換し、さらにマテリアルを設定していたのですが、解決策はマテリアルを貼りつけた見本球を一つつくり、その見本球を「ポイントにインスタンス作成」につないだのです。つまり、geometry nodesの中でマテリアル設定をしなかったということです。


3DF Zephyr LiteにWabefront(.obj)ファイルを読み込んだ様子

なぜこのような障害が起き、何故この対策が障害を解決するのか、実務的に対処しているだけで、問題の意味が判っていないことは残念です。

5 感想

丸3日かけて技術的トゲを抜くことができ、よかったです。この3日間の時間消費は今後進捗するであろうgeometry nodes習熟の必要経費として喜んで支払うことにします。6万遺物の3D分析は軽い点群をgeometry nodesで実体(6万オブジェクト)に変換する操作が必須であり、geometry nodes習熟を急ぐことにします。


0 件のコメント:

コメントを投稿