FinePix3D 写真&Octane render結果を統合してVRで見る

これまで3Dのフォトフレームで見るためのTipsを書いてきた。

これからOculusを使うのを前提としてFinePix3Dで撮影した3D写真とOctane renderで作成した3Dコンテンツを合成して、VRを用いて3Dで見るための若干のTIpsを書いてみる

・Octane renderでもpicture sizeは最大限にする
解像度を確保するため、縮小はせず、FinePixの最大サイズをベースとする。3648 x 2736 したがってOctaneでの作成サイズも同じとする。

・Octaneは平行法(Parallel)で3D映像を作成する。左右別々に2枚作成しておく。Eye distanceは0.075(m)ぐらいに設定すると自然に見えるようだ

・FinePixで先に作成したMPOファイルは、ステレオフォトメーカで先に読み込み、一発自動修正をかけた後、左右別々のファイルにセーブしておく。

・Octaneで撮影した左右画像はステレオフォトメーカで基本修正をかけないとしていたが、背景に比べ、位置が近くなりがちで不自然となりがちであった。そこで、
— カメラの位置をターゲットから離し気味(最低数m-10m)とし、その分カメラのFocusで調整する。Focusはしばしば100mmを超えることもある。
— ステレオフォトメーカで一発調整する。ただし、これをsaveするとpng->jpgとなり背景が透明から真っ黒になってしまう。このため、最初に作成した左右のpngをこのjpgファイルにPhotoshop上で重ねて、所望のオフセットを施したpngファイルを左右別々に作成する。

・Photoshopで合成後、左右別々のファイルでjpgとして保存する。このときOctaneで作成した人物の方はPhotoshop上で自動スマート補正でかなり明るめに設定しておいた方がVR上では自然に見えるようだ。

・ステレオフォトメーカでこの2枚のファイルを読み込み、mpoファイルとして書き出す。


PoserでOctane animationをする際の留意

首記で留意したほうがいい点があったのでメモ

・どうもCamera Motion Blurをチェック入れないとエラーで止まってしまう。

・ほかのUse Poser material Ambient Value, Refresh Geometry each frame, Refresh Scene each frame, Reconvert Materials each frame, は全部オフにしておいた方がよい。というのはOctane側でマテリアルを修正しているとき、これをチェックいれるとコマが変わったとき、Poserからconvertしてしまい、テクスチャが2枚目以降変わってしまうから。


3Dプリンタで篆刻を作る

まだ未完成だが、実現のためのステップ。

参考としたのは、「手書きのイラストからハンコ制作。3Dプリンターで出力する」<http://indielabo.php.xdomain.jp/?p=1071>

  1. Inkscapeでスキャンした篆刻のビットマップ(bmp)をトレースし、.dxfファイルとして出力する。
    ・ファイル->インポートで、bmpファイルを読み込む。jpgは不可。
    ・パス->ビットマップをトレースで、イラストをCAD形式に変換。パラメータはいじらなくてOK. もしスキャン画像の色のため、トレースがうまくゆかない場合はphotoshopなどであらかじめ2値化しておくとよい
    ・名前を付けて保存. 保存形式は、AutoCAD DXF R14(*.dxf). チェックボックスは全て外し、単位はmm、文字エンコーディングはUTF-8に変更して保存。
  2. このdxfファイルをBlenderで可読化する目的で、一旦AutoCADを介して読み込み/保存する。
    ・AutoCAD2022を起動
    ・スタート->開く、で先ほど保存したdxfファイルを読み込む
    ・読み込めたら、一番上の名前をつけて保存シンボルをクリックして保存。形式はAutoCAD 2018 DXF(*.dxf), 出力->書き出しは選択しないこと。
  3. Blenderでインポート
    ・Blenderを立ち上げる(執筆時バージョンは2.91)
    ・先のファイルをインポート。ファイル形式はAutoCAD dxf
    ・XY平面上にスキャンした画像が黒の線分で現れる。適宜オブジェクトモード->移動で原点付近に移動させる。
  4. Blender上でエディティング
    ・オブジェクトモード:オブジェクトを右クリックで選択後、オブジェクト->変換->メッシュ を選択し変換する。
    ・編集モード:黒い丸点がつながった画像がでてくる。キーボードA押下=全選択、メッシュ->クリーンアップ->大きさ0を溶解 & 限定的溶解。これで点の数が少なくなる。
    ・編集モード:同じく メッシュ->クリーンアップ->距離でマージ、を選択。左下に結合距離があるので適当に設定すると近い点をクリーンアップしてくれる。非選択部もクリックを入れておくと良いだろう。
  5. Blender上でエディティング2
    ・4.で無事にうまくセレクトできると、あとは
    オブジェクトモード:全選択したのち、Alt-F(面作成)を行えば、面が作成できる。
    押し出し:
    編集モード:E、exclude region(押し出し、領域)で+軸に作用させれば選択エリアが押し出される。
    あとは適当なcubeを作り、押し出されたモデルをその上に載せれば、篆刻が出来上がる。
  6. 4.5でうまくゆかない場合
    実際にはAlt-Fを行っても領域が全部囲われず、Failするケースが多々ある。”面がフィルされていません”というメッセージが出てくる。そんな場合には丁寧に点と点が接続されているかをチェックする。点が密接している場合発見しにくいので4.の距離でマージをうまく使おう。距離を適宜調整すると良い。
うまくゆかない時の例。点と点が実線ではなくフェードして次の点とつながっている

こんな時には
編集モード:薄い点をクリックして選択->Shift押しながら辺の反対側の点をクリック-> 頂点/頂点から新規辺・面作成 すると2点は実線でつながる。これを根気よく繰り返す。
Tipsとして、点数が多い図形の場合には図形を分割して面を作ると良い。そのためには上と同じようにして図形の任意の2点をつなげば実質図形は分割できる。これでデバッグがやりやすくなる。
また下手すると予期していなかった面が選択されるケースもあり得る。その際には面を形成している点群を選択してDel, 何を消すのか求めてくるので面を選択すると面が消える。


改めてm4vコンテンツをiPhoneに

昔はビデオというアプリがiPhone/iPod Touchにはあって、ビデオコンテンツを入れてみることが可能だった。特に運動の練習などに上手な人のビデオを見るのはためになる。しかしいつの間にかコンテンツは引き継がれず、ビデオというアプリもなくなり、iPhoneを代えていったらもう見ることは出来なくなっていた。Photoが普通に見られるのだったらビデオだってもっと簡単に見れていいのに、著作権がらみだろうか?面倒な世の中になったものだ。

自分がとりあえずやったやり方はm4vのファイルを準備し、デバイスをPCに接続したのちiTunesでデバイスをとりあえず現れるようにはしておき、そこで左上のファイル->ファイルをライブラリに追加、で対象のファイルを選んだ。すると左ペインの概要/ムービの映画のところに対象のファイルが現れる、これで上のムービーを同期を選んで右下の同期ボタンを押すと、バックアップから始まってしばらく時間が立つと。デバイスと同期してくれた。自分のデバイス上のムービーにも対象のビデオが出ている。

これをデバイスで見るのも難儀だ。iPhoneのapple TVのライブラリ->ホームビデオまでゆかないと対象の動画が現れない。何という消極的な姿勢だろう。


WSL TecoGAN 次から

下記に従って、WSL上でTecoGANをインストールした。<https://supplepentan.com/programming/tecogan_01/>

次からのTecoGANの起動メモ

・Windows Powershell 起動

(・WSLは他のディストリビューションで駆動されるのを防ぐため、もう必要なければ消去しておくのが望ましい
wsl –unregister <Distro>(e.g., Ubuntu-20.04))

・WSL起動
wsl

・homeに移る
cd ~

・TecoGANディレクトリに移る
cd TecoGAN

1)Pythonバージョンのローカル設定
pyenv local 3.6.8

2)仮想環境作成とアクティベイト
python3 -m venv venv-wsl
source venv-wsl/bin/activate

・runGan.py 起動

1), 2)はShellにしておくとよいと思います(sourceはshではできないので手打ち)。

なおできたファイルをWindowsで見るには、エクスプローラを開き、パスに\\wsl$を入力すればよい

 


Raspberry Pi;cronで音を出す

cronを使ってaplayで音を鳴らそうとしていた。ところがコマンドで打つと問題なく再生されるサウンドが、cronでは全く鳴らない。なぜだろうと調べてみたら、cronは自分のユーザ環境で動作していないからだというのがわかってきた。ググると
crontab中に一行

XDG_RUNTIME_DIR=/run/user/user_id

を入れればよいことがわかった。user_idは下記のコマンドでわかる

id [user_name]

自分のアカウントpiのuser_idは1000だった。これで無事にcronから音が鳴った。

<https://coderedirect.com/questions/562029/audio-doesnt-play-with-crontab-on-raspberry-pi>


DAZ-3D Octane

まだDAZ-3DでOctane renderに慣れてない。Irayのほうが奇麗に見える。Octaneを起動しても全くマテリアルがついていない。どうもScene SurfacesからOctaneRender Materialsにマッピングは自動でされず、デフォルトは真っ白になるようだ。ここでMissingのところをクリックして、Automaticにマッピングするように選ぶと、それなりにレンダリングしてくれる


Blenderでローポリ化

Poserの衣服をデフォルメしようとして、obj化して再度読み込み、これをClothifyしようとしてもポリゴンが多く、うまく動かないことがある。このような時には一旦Blenderでこのobjを読みこみ、スパナマークのAdd modifierからGenerate>Decimateを選択し、デシメーションの割合を入力するとポリゴンの数をうまく削減してくれ、Clothifyがうまくゆく。これは良いTipsだ