C++ の移植版 trellis.cpp で Pixal3D を Radeon に載せて技術検証したとき、入力の画像の画角は推定されませんでした。本家の Pixal3D は補助モデルの MoGe-2 で画角を推定しますが、trellis.cpp には MoGe-2 が移されておらず、--fov で渡さなければ 49.13° が使われます。私たちの入力は画像生成で作った正射影に近いキャラクターの絵で、写真のような遠近がありません。既定のままでよいのかを、画角を振って比べました。
結論
- 正射影に近い生成の絵では、
--fov 15が一番よく合いました。三面図の3面の IoU の平均は 0.948(既定の 49.13° では 0.917)、キャラの絵の正面は 0.932(同じく 0.883)です。 - 15° は、2つの入力・2つの seed のどれでも一番よく、seed による差も小さく出ました。
- 写真なら 40〜50° が合うと見ていますが、試していません。10° 以下も試していません。
- Pixal3D は、入力のカメラの向きのまま形を作ります。入力は真正面・目の高さで描かれた物がよさそうです。
試した環境
- Pixal3D を trellis.cpp v0.8.1(HIP でビルド)で動かしたもの。Radeon RX 7900 XT(VRAM 20 GB)、Ubuntu、ROCm 7.2.4
- 1024・色付き、seed は 42 と 7
- 後始末として、内側に残る見えない殻を消す処理を通しています
測り方
入力は2つです。
- キャラクターの絵1枚(正面)
- 自作の三面図の正面。横と背面の絵は、答え合わせにだけ使います
これを画角 15・25・35・49.13° の4通り、seed 2つで作り、全部で 2 × 4 × 2 = 16 本です。
物差しは「描画の IoU」です。できた GLB を Blender で描き、外接枠の高さをそろえて入力の切り抜きと重ねます。三面図のほうは、正面・側面・背面をそれぞれ描いて三面図の各面と重ねました。輪郭のずれの p95(高さに対する比)も取っています。これは診断のための値で、人の目による審査の代わりではありません。

結果
| fov | 三面図: 3面の IoU の平均(側面だけ) | 三面図の輪郭のずれ p95(3面の平均) | キャラの絵の正面 IoU |
|---|---|---|---|
| 15 | 0.948(0.929) | 1.3% | 0.932 |
| 25 | 0.920(0.845) | 2.2% | 0.921 |
| 35 | 0.924(0.867) | 2.1% | 0.911 |
| 49.13(既定) | 0.917(0.891) | 2.7% | 0.883 |
15° は、どちらの入力でも、どちらの seed でも一番よく出ました。seed による差も小さく、三面図の3面の平均は 0.947 と 0.949 です。三面図では、25〜35° にすると、既定の 49.13° より側面が落ちました(側面だけで 0.845・0.867。既定は 0.891)。キャラの絵の正面は、同じ 25〜35° で既定より高く出ています(0.921・0.911。既定は 0.883)。キャラの絵の横は測っていませんが、三面図の結果からすると、正面の数字だけを見て画角を決めると、見えない横を悪くしてしまうことがあります。
どちらの入力も、遠近の少ない正射影に近い絵でした。既定の 49.13° は、それより強い遠近を前提にした値です。私たちは画角の既定を 15° にしました。
入力のカメラの向きも、そのまま形に出る
画角とは別に、入力のカメラの向きも形に出ます。キャラのパーツ 7 本を画角 15° で作ったとき、斜め(3/4)から描かれていた靴とリュックは、物の軸も斜めに出ました。Pixal3D は、入力のカメラの向きのまま形を作るからです。
もう一つ、見えない背面は作り物になります。髪の背面にはこぶが、シャツの背中にはひれのような形が出ました。入力には、真正面・目の高さから描いた絵を選ぶのがよさそうです。
確かめていないこと
- 写真を入力にしたときの画角(40〜50° が合う見込みです)。
- 10° 以下と、試した4通りのあいだの値。
- 描画の IoU は診断のための物差しで、人の目による審査ではありません。
おわりに
生成した正射影に近い絵を Pixal3D に渡すなら、既定の 49.13° のままにせず、--fov 15 から試すとよいと思います。画角は正面だけでなく、横と背面の数字も見て決めるのがおすすめです。
※ Pixal3D と trellis.cpp の既定の画角や引数は執筆時点の情報で、いまは変わっている可能性があります。


