ポートレート3D映像の作り方

2023現在、Fijifilm 3Dで撮影した映像を利用してOculusで視聴できる画像で今のところ満足できる作成法は以下の通り。

ターゲットのモデルはPoserで作成し、Octane renderでParallel & SBS、視差は60mm程度で作成する。特にカメラの焦点距離を40mm程度にする。pngで出力する。サイズは960 x 1280の横つながりなので1920 x 1280とする。Parallelで作成するとボディが前面に浮き出た感じになる。

一方3Dカメラの画像は左右とも3584 x 2016である。ステレオフォトメーカProを使ってこれをリサイズ &トリミングする。もしもポートレートから後ろに遠ざけたいのであれば、画面を目いっぱい切り抜けばよいので、まず縦横比を維持しつつ高さを1280として縮小し、その後に960 x 1280でトリミングすればよい。逆にポートレートに近づけたい場合には高さを1280から2016の範囲で適当にセットし、縦横比を維持して縮小し、その後に960 x 1280でトリミングすればよい。これをjpgでステレオ出力(S=SBS)する。2560 x 1280の画像が出力される。

Photoshopを用いて、3Dカメラの背景画像を読み込み、合わせてレイヤを用いてモデルのpng出力を重ねる。Tipsとしてこのpngの右上/左下に小さな四角画像を入れておくと、コピペして背景画像と重ねる際にうまくゆく。後でこれは消す。

重ねの常で、モデルのレイヤでレイヤのフリンジ除去を行った後、背景とのバランスで、明るさやコントラストを調整してゆく。背景をぼかしたり、他のエフェクトをつけることも可能だ。

出来上がった3D SBSファイルは、jpgで保存する。オプションとして、再度ステレオフォトメーカProを使ってロゴやテキストを入れることもできる。Parallelを使ってボディを前面に出す場合には文字の深さは+40ピクセル程度、ロゴも30ピクセル程度にした方がよい。

これでOculusでも他のVRででも素敵な立体画像視聴が可能となる。


StereoPhotoMakerで深度調整

SBSを読み込ませたのち、調整->簡単位置調整を選択する。

水平選択でとして、
左 ++ 右 — => 画像が前面に押し出される
左– 右++ => 画像が後方に引っ込む

Octaneで立体SBSができたら、これで調整し、PNGで書き出したのち、3D写真と

合成するとよい

追記:一発調整を行うと、例えばParallelで前面に画像を出そうとしても真ん中あたりに平均化されてしまうようだ。使わないほうが無難なようだ


3D octane(続き)

Fuji fine-pixで撮影した3D映像に、octaneで作成した3D SBSを重ねている。
もしfine-pixでの立体よりも前面にモデルを出したいときは平行法(Parallel)を用いるとよい。
一方もしfine-pixの立体よりもモデルを後ろに回したいときは、モデルを下がらせて
その分focusを上げるという手もあるが、さっさと交差法でレンダしたほうがうまくゆくことが多い。

またfocusは35mmでは立体感が強調されすぎるし、100-150mmではべたっとなる。60mmぐらいが適切かと思うがそれは場合場合で調節すると良いと思う

補足:少々upで近傍の3Dを表現するには40mmでもまだ立体感が強調されている。55mmにしたら割とよかった


Fuji Film 3D camera & Poser

名残惜しいFuji Film finePix read 3D(以降 F3Dといいます)、これを使ってMPOファイルから左右別々の画像を抽出する。FR.jpg, FL.JPGとしよう。このサイズはそれぞれ3441×2016である。さてこの画像とPoser & Octaneで生成される3D画像を重ねてVRで3Dに見せられる画像を作ってみたい。

1)まずこの現画像2つを圧縮し、1280 x 750 2枚にする。

2)Poserにて作られた画像をOctaneで3D化する。このとき、Octaneで作成する画像のサイズも1280 x 750の左右2枚とする。Off-Axisで生成する。視差は0.065ぐらいでいいだろう。PoserのFocalはまだ調整が必要だが、35mm-25mmの間ぐらいがよさそう。
->いろいろ試したが、35mmと50mmの間、42.5mmぐらいが妥当そうだ。

3) 1), 2)をPhotoshop上で合成してpngもしくはjpgで出力する。サイズが同じなので問題なくできるはず

4) Stereo Photo Makerでこの2枚を順に読み込み、MPOにする。

5)Oculesで視聴する VR Photo Player はMPOが見られる

追記:VR Photo Playerで見るとかなり画面が大きい。Poserで作成したフィギュアは比較的画面の下に収め、かつ背景の上部は大きく空があるほうがよさそうである。


Oculus riftで.mpoファイル閲覧

Oculus riftで.mpo閲覧したいと思ったが、なかなか見つからなかった。LiveViewRiftで見れるとあったが、どうもステレオ画面になってくれない。他の候補をあたってみるにSteam上のVR Photo Viewerがあった。これは動作が鈍いので、選択に時間がかかるが、コントローラで右のBボタンを押せばファイル選択ならびにSBS, MPOなどの設定が出る。これで何とか.MPOファイルが見れるようになった。ただしデフォルトが横に延伸したビューなので、そうでない普通のビューがデフォルトになってほしい。


Poser & Octane2.0で3Dムービー

先にOctane2.0で3D(立体)Poser静止画作成を書いたが、今回は3D movie作成について述べる。最後の出力は、裸眼で立体視が可能なFujifilm Finepix real 3Dディスプレイを想定している。

  • まずPoserでアニメーションを作成する。これは通常通り。但し最後の出力を考え、フレームのサイズは1280×720にしておく。
  • 続いてOctaneRenderを3D設定する。stereoModeは静止画と同じく交差法(Off-Axis)で他はdefaultでよい。resolutionを先ほどと同じく1280×720にしておく。stereoOutputをRight/Leftに指定し、それぞれ1回ずつレンダリングすることになる。
  • OctaneRenderでAnimationを開く。Start FrameとEnd Frameを指定する。ここではMaximum Render Time per Frameを指定できるので、1コマあたりレンダリングに最大何秒掛けてよいかを見積もって入力する。たとえば30コマのレンダリングを1時間で終わらせたければ左右30分ずつなので、1コマあたりのレンダリングは60秒となる。他はほぼデフォルトで良い。Render Animationを押すとレンダリングが開始される。
  • 終了したら、Left/Rightを入れ替えて再度作成する。このときOutput Folderの中の結果を退避させておかないと上書きされるので注意。
  • 出来上がった左右のpng静止画群から左右別々のムービーを作成する。今回はAdobe Premiere10を使って作成したのでこれに沿って説明する。新しいプロジェクトを作成し、左の静止画を全部読み込む。続いてこれらを全選択し、ビデオ1のタイムラインにドラッグする。時間を調整するために、先頭画像を右クリックでタイムストレッチを選び、適切な値に設定する。一つ変えると全部の画像のタイムストレッチが変化する。
  • Premiereで書き出し-コンピュータ-MPEGを選択。プリセットはとりあえずHD720p 25にした(25はPALなので30 NTSCにすべきだったのかも知れない)。xxxL.mpgのような左MPEG動画を作成する。同様に右の静止画も新たに全部読み込んでxxxR.mpgを作成する
  • ステレオムービーメーカーをダウンロードする。これでファイル-左右ムービーを開く、で先ほどのxxxL.mpg, xxxR.mpgを読み込ませる。AVIの種類によってはこの段階で読めないケースも多く、そのため先ほどのPremiereでHD720pを選択している。ここで他の動画も読めるようなら、Premiereでなく、他のフリーソフトでの動画作成も大丈夫だろう。
  • ステレオムービーメーカーで、位置調整-左右位置自動調整を選択し、位置を調整する。このあと再生(G)-再生(同期確認)などで、うまく再生できていることを確認する。
  • ファイル-3D-AVI形式で保存、を選択しターゲットファイル名を入力して3D-AVI形式の動画を作成する。パラメータとしてFinepix real 3Dの1280×720を選択。ただしこの作成段階でプログラムが異常終了することがある。何度か試すしかない。
  • 出来上がったファイルをUSBメモリに移し、Fujifilm Finepix real 3Dディスプレイに装着して動画を選択すると、リアルな3D(立体)動画が現れる。以上出来上がると、なかなか感動モノだ。

  • Octane Render2.0で3D CG

    Octane Render2.0になってPoser の出力を3Dの独立の画面として出力することができるようになった。こうして出力される2枚の画像をステレオフォトメーカーなどでステレオ化すれば、3Dテレビなどで3D画像を映すことが可能になる。

    ここでは、3D画像を裸眼で手軽に見られるディスプレイとしてFujifilm Finepix Real3D Displayを利用することとし、さらにFujifilm Finepix Real3D W3Sの立体カメラで写した画像との重ね合わせを行うためのパラメータチューニングをしてみた。

    まず基本は、本Displayに表示させるときにはOctane RenderをOff Axisモードにする。そして視差間隔を0.06(デフォルト0.02)程度にする。間隔を広げるとRender出力の立体感が増すがあまり広げると目が疲れる。

    スペックによるとW3Sは標準で撮影して35mmカメラ相当からズームを行うと105mm相当の範囲でFocalが変化するようだ。35mmの標準で撮影した写真を背景にすると、Poser側もほぼ35mmのスペックでよさそうに見える。しかしよりリアリティを出すには、若干Poserで設定する距離を長めに、そしてFocalを大きめにしたほうがよさそうだ。10数回カット&トライを行ってみたが、Poserにおいてカメラから本当なら1.8mを想定しているときには、約倍の3.6mぐらいにオブジェクトとの距離を置き、代わりにfocalを35mmから60mm程度に広げ、オブジェクトを拡大させたほうが、よりリアルに映った。

    今後さらにチューニングを進めたい。


    3D写真にPOSERの3D出力をマージ

    3DカメラVS70-3Dを買ってみた。これをつかってリアル画像とPOSER画像を合成して3D画像を作ってみる。

    ただしVS70Dからの出力のままでは、まだPCでの処理に適していないのでimagemagickを使って仕事することにした。imagemagicはcygwin上にインストールした。

    1.もとの3D画像は1256X942で2枚がくっついている。またSide by Side方式のために横方向が50%に縮小されているようである。
    – 横方向を200%伸張: convert -geometry 200%x100% input.jpg output.jpg
    こうすると、2560×960の画面になります
    – ファイルを2枚に分割: convert -crop 1280×960 input.jpg output.jpg
    こうすると、1256X942のjpg画像が2枚できます

    2. Poser側の処理
    ・Render sizeを1256×942で作成
    ・例としてdefaultのandyでサンプルを作る
    ・背景を全部透明にさせるため、(1)背景は設定しない、(2)GROUNDはVISIBLEをOffにする。
    ・Main cameraについて位置をDollyZ=500cm, DollyY=100cm, Zのオフセットを視差として
    6.5cm与え、2枚レンダリングし、PNGで保存する。
    ・このようなアドバイスもあった<http://zack.dtiblog.com/blog-entry-53.html>
    “PoserではカメラのY軸を1度ほどずらして撮影するほうが立体感がでるように感じました。
    また、焦点距離を標準の55mmから35mmくらいに変更すると遠近感が増します。”
    ただ自分がやった限りでは、Y軸はずらさないほうが良いようだ。
    3.Calibration
    ・コーンを置く。直径20cm,高さ1mの三角錐を作成。幅2m, 奥行きを、
    0m(青)、3m(黄)、5m(緑)、10m(赤)、20m(紫)の10個作成する
    これで背景画を読み込み、丁度良い程度にfocalを調整する。自分でやったところ43mm程度が無難に見えた。

    4.被写界深度の調整
    ・レンダリングオプションで被写界深度(Depth of Field)をONにしてレンダリングすると
    特に奥行きがうまくぼけて、リアル感が増します。

    5.絵の合成
    ・背景にpng画像を重ねて出力する:convert bkgnd.jpg figure.png -composite out.jpg (or png)
    ・Photoshopなどで合成する。ただ構図をしっかり定めるためにははじめからそれぞれの背景画像を読み込んでレンダリングしたほうが良い結果を得られそうだ。

    5.2枚できた絵を結合: convert +append right.jpg left.jpg out.jpg

    6.最後にSide by Side方式で観れるよう、横を50%に縮小: convert -geometry 50%x100% input.jpg output.jpg

    まずまずの結果となった。これは2枚の絵を5.のプロセスで結合したもの

    POSERと3D画像の合成結果
     

    7. 参考までにimagemagicを使ったサンプルシェル

    #!/bin/bash

    for num in 001 002

    do
    convert -geometry 200%x100% PH3D0${num}.JPG PH3D0${num}_out.jpg
    convert PH3D0${num}_out.jpg lr.png -composite PH3D0${num}_out.jpg
    convert -crop 1280×960 PH3D0${num}_out.jpg PH3D0${num}_cut.jpg
    convert +append PH3D0${num}_cut-1.jpg PH3D0${num}_cut-0.jpg PH3D0${num}_rev.jpg
    done