2024/09/15

Nubia Pad 3Dで撮影した動画をPCサイド・バイ・サイドに変換する方法(Windows)

 Nubia Pad 3D、たまーに引っ張り出して遊んでます。90過ぎてだいぶ外出もおっくうになった祖母に山で撮影した風景や植物の写真を見せたら、ほんとに行って見てきたみたいだー、と楽しんでくれていた様子。

まぁそれはともかく、タイトルの件。

撮影した動画はmp4形式なのだけれど、サイド・バイ・サイドではなく、片側ぶんの映像がメタデータとして埋め込まれた変則的なフォーマットになっている。Nubia Pad 3Dで再生すると3D動画として再生されるが、PCなどにコピーして再生すると普通の2D動画として扱われる。(開発元のLeia社は「LVF」フォーマットと呼んでいるらしい。)

で、やりたいのは、Nubia Pad 3Dで撮影した3D動画をPCに持っていって、そこからMeta Quest 3で3D動画として再生、試聴すること。

そのためには、どうにかしてこの特殊なLVFフォーマットの動画を3D動画として扱いやすいサイドバイサイド形式に変換したい。で、調べてみると、こんなのが出てきた。

Leia.inc, Convert from LVF to SBS
https://forums.leialoft.com/t/convert-from-lvf-to-sbs/2825

FFMPEGというコマンドラインの動画編集ツールと、ここに掲載されているFFMPEGを使ったシェルスクリプトで、LVFフォーマットの動画をSBS(サイド・バイ・サイド)形式や、左右単独の動画ファイルに変換できるらしい。

で、このシェルスクリプトはMac(とLinux)用に書かれているので、Windowsで実行できるようにちょっとだけ手を加えて試してみたところ、上手くいくようだ。せっかくなので、それをここに掲載しておきます。

FFMPEGのインストール方法とかは割愛。環境変数にパスを通すのを忘れずに。

サイド・バイ・サイド変換用スクリプト

下記の1行だけのスクリプトをテキストエディタ(メモ帳でOK)にコピペして、lvf2sbs.bat みたいな名前で保存します。(ページ幅の都合で行が折り返されているかも。)

ffmpeg -i "%1" -filter_complex "[0:v:m:language:abl]fps=30[l];[0:v:m:language:abr]fps=30[r];[l][r]hstack" -c:a copy "%~n1_2x1.mp4"

左右の独立した動画に分離して書き出すスクリプト

下記の3行のスクリプト。おなじくテキストエディタにコピペして lvf2lr.bat みたいな名前で保存します。

ffmpeg -y -i "%1" -map 0:v:m:language:abl -c copy left.mp4
ffmpeg -y -i "%1" -map 0:v:m:language:abr -c copy right.mp4
ffmpeg -y -i "%1" -c copy audio.aac

スクリプトの使い方

コマンドラインで、ファイルを出力したいフォルダへ移動してから、下記のように上記のスクリプト(バッチファイル)を実行します。

C:\> /folderOfScript/lvf2sbs.bat /folderOfVideo/nameOfVideo.mp4

例えば、上記のように C:\ 直下で実行したら、そこにサイド・バイ・サイド形式に変換された.mp4形式の動画ファイルが出力されるはず。

2024/06/01

Nubia Pad 3D / How to convert LeiaCam 3D photos to SideBySide (SBS) format / LeiaCamで撮影した3D写真をサイド・バイ・サイド形式に変換する

 前回の記事で、Nubia Pad 3Dで撮影した画像が独自のフォーマット(アプリ内では"LIF"形式と呼称していた)なので扱いにくい、と書いたのだけれど、アプリをいじっていたら、サイド・バイ・サイド(SBS)形式に変換する方法が用意されているのを見つけた。

(英語でもこのやり方の記事を見つけられなかったので、
ちょっとだけ英語でも書いておく。)

まず、LeiaPlayerアプリを起動して、Nubia Pad 3Dの3Dカメラで撮影した画像を表示させたら、画面右上の共有ボタンをタップする。

Launch the LeiaPlayer application, and show the photo  taken  by the Nubia Pad 3D's camera, tap the Share button in the upper right corner of the screen.

すると、画像のフォーマットと共有先の選択が出てくるので、SBS(サイド・バイ・サイド)を選ぶ。「印刷先」(翻訳ミスだろうけど、共有先)は「・・・」を選ぶ。

You will be asked to choose the format of the photo and the destination to share it with, so choose SBS (side-by-side). For destination to share, choose “...”.

アプリの一覧が出てくるので、「Files by Google ダウンロード」をタップすると、端末のストレージ内の「ダウンロード」フォルダにSBS形式に変換された画像が保存される。

A list of applications will be shown, so tap “Files by Google Download”. The photo will be converted to SBS format and saved in the “Downloads” folder in the storage of the device.

写真を一枚ずつ変換する必要があるので、SBSに変換したいファイルがたくさんあると面倒くさいのが欠点ではあるが、これがいちばん確実な方法だと思う。


2024/04/24

nubia pad 3D レビュー(いまさら

 「nubia pad 3D」という裸眼での3Dディスプレイ(仕組み的にはNintendo 3DSに搭載されているやつの大型版みたいなのっぽい)が搭載されたタブレット。

発売されたのは1年ぐらい前なのだけれど、定価で20万ぐらいしていて手が出せずにいたのだが、ふと思い出して探してみたところ、中古で良い状態のが出ているのを見つけて、とうとう買ってしまった。まぁ、ハイスペックなスマホとかタブレットならこのぐらいの価格だし・・・(という自分への説得)

改良された新型が最近発表されたようで、もしかしたら旧型の方の値下がりが始まっているのだろうか?というか、こんなマニアックなジャンルで新型が出るのも驚きではあるが。

余談だがこれ用のケースを探したのだが見つからなかった。Amazonで探すとそれっぽいのがいくつか出てくるが、掲載されてる写真に映ってるタブレットの形状がこれと微妙に違っていてなんか怪しい。国内の別なサイトで購入しようとしたら、まさかの検品で不良が見つかって在庫もないのでキャンセルさせてくれと連絡が来てしまった(いやちゃんと検品して不良品チェックしてくれるのはとてもありがたいのだけど)。

nubia pad 3D の外観
nubia pad 3D

3Dディスプレイ

裸眼の3Dディスプレイについては、なかなか出来が良い。12.4型の十分に大きなディスプレイでの3D表示は、はっきりと奥行きが感じられるし迫力もある。

専用のビューアーアプリ「LeiaPlayer」が入っており、搭載されているステレオカメラで撮影した画像や動画は当然のことながら、普通の2D画像をAIで3Dに変換したりも可能(オフラインでも機能するので、デバイス内で変換処理は完結しているっぽい)。

おもしろかったのが、「LeiaTube」という専用アプリを使うと、YouTubeなど動画投稿サイトに掲載されている3D動画や3DVR動画も3Dで表示させることができること。ついつい動画を漁ってしまう。

スピーカーが4基搭載されていてDolby Atmosに対応していて音も良いので、3Dに限らず普通に動画を見るのにも使える。

欠点としては、2Dから3D表示に切り替えたときに幾分か暗くなってしまうとか、明暗の大きい画像だと3D表示の時に多少の残像(例えば右目の映像に左目用の映像の残像が被って見える)が見えたりする。まぁじゅうぶん許容範囲内ではあるし仕方ないのかもしれないが、新型ではディスプレイが改良されるらしいので、このへんも改善していることに期待したい。あとは重量が約790gほどあるのでそこそこ重たい。

ステレオカメラ

背面のメインのステレオカメラ(上の写真にも写っている)と、ディスプレイ上部に内向きでサブのステレオカメラが搭載されている。

背面のカメラのベースライン長(2つのカメラの間の幅)は30mm。なので人間の目の間隔と比べると半分ぐらい。撮影した画像のサイズは3840x2400pxになる。

内向きのカメラはベースライン長15mmでメインカメラの半分。撮影した画像のサイズは3264x2040pxになる。

メインカメラはベースライン長が狭いので、これで撮影した写真は人間の目と比べて視差が小さくなり目で見た感覚と比べて立体感が弱くなるので、被写体が数m程度ならそこそこの立体感は出るけれど景色など遠景には向かないかも。

でけれど経験上こういうカメラだと、1m未満のような近距離での撮影に向いている(逆にベースラインが長いと視差が大きすぎて違和感が強くなる)ので、植物や動物に近づいて撮影したり、小物やフィギュアなどを撮影したりとか、これはこれで向いてる用途がある。

内向きのサブのステレオカメラは、3Dディスプレイでユーザーの顔を検出する用途も兼ねているらしいが、普通に自撮りにも使える程度の性能があるようだ。専用アプリを使うと、nubia pad 3Dユーザー同士で3Dのビデオチャットが出来るらしい(が、こんなマニアックなデバイスを持っているユーザーがそんなにいるわけもないので出番は・・・)。

撮影した画像のフォーマット

撮影した写真の画像ファイルを取り出してみると、一見して普通の2DのJPEG画像に見える。サイド・バイ・サイドというわけでもない。調べてみるとJPEGベースの特殊なフォーマットになっているらしく、もう一枚の画像が詰め込まれているらしい。

ここの動画で説明されているツールでなんとかそのもう一方の画像を取り出せた。
https://www.youtube.com/watch?v=tDpxqZ2evyA
が、なかなか面倒くさい。

カメラアプリで保存するフォーマットをサイド・バイ・サイドかMPO形式あたりを選択できるようにしてくれたらありがたいんだけどなぁ。

撮影した動画はMP4形式だが、こちらも写真の方と同じく、一見して普通の2Dの動画に見える。独自フォーマットで片側の映像チャンネルが埋め込まれているらしい。これもツールで分離しないと、nubia Pad 3D以外ではステレオで再生できないっぽい。

他のデバイス等で撮影したステレオ画像への対応

実はこれが一番お目当ての機能だった。現状だとステレオの動画や画像を見るには、VRヘッドセット(Questとか)とか、スマホでもそれようのゴーグル的なのを使えばいけるのだけれど、どっちにしても着脱が面倒くさかったり操作がめんどくさかったりする。(Quest3+アプリでステレオ画像や動画を見ると画質も良く迫力があって楽しいのだが。)裸眼で見れると、手軽だし、何より人に手渡しして見せることもできる。

で、いろいろ試してみた。

MPOファイル:○
FinePix Real 3D W3 で撮影した画像をnubia Pad 3Dにコピーしたら、内蔵のビューアーアプリ「LeiaPlayer」で何の手間もなく3D表示可能。

サイド・バイ・サイドJPEG : ○
QooCam EGO 3D で撮影した画像で試した。自動で3D画像と認識してくれるものと、そうで無いものとがあっていまいち安定しない。が、ファイル名の末尾に _2x1 と付けておくと(例 : hoge_2x1.jpg)サイド・バイ・サイドの3D画像だと認識してくれる仕様がある。・・・が画像の数が多いとファイルのリネームが面倒くさいのが欠点。

FinePix Real 3D W3 で撮影した動画(.avi形式):×
対応していないらしい。全く見れなかった。これは正直ちょっと残念だった。

サイド・バイ・サイドMP4動画:○
QooCam EGO 3Dで撮影した動画で試した。これはしっかりと3Dで再生された。こちらも、ファイル名の末尾に _2x1 と付けておくとサイド・バイ・サイドとして認識してくれる。

まとめ

価格がネックではあるが、貴重な3D表示デバイスとしては十分な性能を備えていると思う。少なくとも自分は過去にFinePix Real 3D W3で撮った写真をごっそりこのタブレットに入れて眺めながら結構な時間を潰すぐらいには使えた。

ステレオカメラも、ベースライン長が肉眼の半分程度しかないという弱点はあるが、中~近距離の範囲なら全然使えるレベルだと思う。むしろ近距離の撮影が得意だと思う。タブレット自体がそこそこ重たくてかさばるのでガンガン屋外に持ち出して撮影するというのはちょっとツライかもしれないが。

2023/12/24

Logicool MX ERGO をベアリング化してみた

 最近エレコムからベアリングでボールを支持するトラックボールが発売されるらしい、
とかいう記事を見かけたのだが、
発売日を過ぎても店頭でも見かけないし
Amazonも品切れでレビューの一件もないしでなんかヘンだなと思っていたら
どうやら発売延期になっているらしい。

で、そんなことをぐぐったりしながら調べていたら、
LogicoolのM570をベアリング支持に改造したとかいう記事を発見。

で。
自分もやってみたという話。

今回改造したのは、
だいぶ年期が入ってきてボールの回転が渋めになってきて気になっていた
Logicool MX ERGO。
ちょうど2年ぐらい前の記事で表面のゴムを張り替えたやつ。
(まだそのときの滑り止めシートが貼ってあるけど、
だいぶ劣化してきたのでそろそろ張り替えどきかな・・・)

先人の記事を参考に、
Amazonとかで材料を調達。
肝心なのはこの2つ。

その他、
・補強用のエポキシパテ(タミヤの板ガムみたいなのをコネて使うアレ)
・瞬間接着剤と先細ノズル
・瞬間接着剤の硬化スプレー
・穴開け用の1mm、3mm、5mmのドリル歯
・#400ぐらいの紙ヤスリ
・潤滑油スプレー(KURE 5-56)
... etc.

今回使用した道具類
今回使用した道具類(の一部)

GodHandのスピンブレードは、結構よく切れるので
小型の彫刻刀みたいな使い方で削ったり掘ったり便利なので
何かとよく使う。
今回は軸の1.5mmと同じ幅のブレードがあるのでそれを使う。

この硬化スプレーは比較的匂いがマシ。(とはいえ換気には気を付けること)
これがあると瞬間接着剤を盛ってしっかり固めるという使い方が出来るようになる。

まずは分解してボールを納める部分を取り出し、
センサーも外してから、
支持球を削り取り、ベアリングを納める穴と軸を固定する溝を掘る。

穴開け加工中の様子
穴開け加工中の様子

削る作業には、前述のスピンブレードでゴリゴリ削った。
で、支持球があった部分に1mmぐらいの穴を貫通させて、
3mm → 5mm と広げていく。
で、穴の両側にベアリングの軸を納める溝を掘る。
下側の支持球の裏側あたりにある突起は邪魔になるので切り取る。
本体側にも同位置に突起があるので切り取っておく必要がある。

プラスチックの厚みが1.5mm程度なので、
軸の溝を掘ると貫通するので裏にエポキシパテを盛って補強しておく。
パテを盛る前に軽くヤスリ掛けしておくと食いつきが良くなる。
パテは1~2mm程度の厚さにしておき、
本体に組み付けながら干渉しないように様子を見ながら盛っていく。
前方側のあたり、ちょうど「戻る」ボタンのあたりはスキマが少なく
あんまり盛れないので注意。
パテを盛ったら硬化のため1日待つ。

裏にパテを盛って補強
裏にパテを盛って補強。

ベアリングは、軸に真鍮線を通す。
ベアリングを納める穴の直径が5mmなので、軸の長さは9mm程度にしておく。
キツくてベアリングが通りにくい場合は真鍮線を軽くヤスリ掛けして調整。
ベアリングが軸上を動かないように瞬間接着剤をわずかに付けて固定。
硬化スプレーで固める。ベアリング内部に接着剤が入らないように注意すること。

軸を通したベアリングをいったん仮で組み付けてみて、
ボールを乗せてみたり本体に組み付けてみたりして様子を見ながら微調整。
大丈夫そうならベアリングの軸を瞬間接着剤と硬化スプレーで固定。

本体を組み立てる前に、
ベアリングに潤滑油(5-56とか)のを入れておくと回転が良くなる。

・・・

そんなこんなで出来上がったのが下の動画。
ボールを転がした様子を素のM575と比較してみた。

軽く転がしたときの様子が明らかに違う。
M575のほうはボールがすぐに止まるが、
今回改造したベアリング版のMX ERGOのほうが慣性でスルスルと回る。
感触としても、動き始めに全然抵抗がなくスルスルと回る。

あと音。
結構シャーシャーと音が鳴る。
ゆっくり動かしていればそれほどでもないけど、
勢いを付けると、それなりに大きい音が鳴る。
動画の音を聞いてみれば、M575の普通のトラックボールの音と比べても
明らかに大きい音が鳴っているのがわかる。
職場とかでシャーシャー鳴らしてたらうるせぇと言われるかも・・・。

今回はとりあえず年季の入ってきたMX ERGOのベアリング化改造が
上手くいったので満足。

2023/07/14

Azeron Cyborg用 Adjustable Magnetic Standを使ってみた

 久しぶりにAzeronの公式ストアをのぞいてみたら、
いつの間にやら、Cyborg用のアクセサリで面白そうなのが出ていた。
どうやらCyborg用の傾斜を付けるスタンドらしい。

Adjustable Magnetic Stand
https://store.azeron.eu/merch/product/magnetic-stand

たしかに、Cyborgを長時間使っていると
手首が少々ツライと感じることがあるので、
なかなかいいかもしれない。

ついでに、

BUTTON GRIP TAPES
https://store.azeron.eu/merch/product/button-grip-tapes

とか、予備パーツ(まだ壊れてないけど念のため)を
まとめて購入。
円安の影響で割高感は否めないけど・・・

配送は急がないのでPASTSを選んでみる。

・・・で、待つこと2週間ほどで到着。
6/30にラトビアから発送されて、7/13に到着。
国内の配送は日本郵便が請け負っているらしく、
郵便で配送されてきた。

Adjustable Magnetic Stand
Adjustable Magnetic Stand

スタンド本体と、付属のネジ締め用レンチ(?)。
オマケでAZERONキーホルダーが付いてた。

Button Grip Tapes
Button Grip Tapes

こちらはボタン用の滑り止めシール。
いくつか色や柄を選べるのだけど、
ちょっと派手なのを選んでみた。

スタンドのヒンジ部分
スタンドのヒンジ部分

スタンドのヒンジ部分がジグザグになっていて、
ネジを締めることで角度が固定される仕組み。

Cyborg本体とスタンドの接続
Cyborg本体とスタンドの接続

Cyborg本体とは↑こんな感じで組み合わせる。
(うちのCyborgはゴム足を追加したりネジにワッシャーを追加したりしてる)
スタンド側の黒い突起が、本体裏側の穴(奥にネジがある)に
ぴったりとはまり、3つの磁石でくっつく。
磁石は結構強いので、そう簡単には外れなさそう。

Cyborg + Adjustable Magnetic Stand
Cyborg + Adjustable Magnetic Stand

組み合わせるとこんな感じ。
パームレスト部分には適当な滑り止めシートが貼ってある。

先端部分がスタンドからはみ出してはいるが、
重心は手のひら側にあるので安定感に問題は無い。

ひとしきり使ってみたが、
角度が付くことでの違和感はほとんど無いし、
スタンドのおかげで手首が楽になった。

ボタンも素の状態だとけっこうツルツルしていて、
特に奥のほうのボタンはツメで押すことになるので滑りやすいのだけれど、
ツメが当たったときの感触が柔らかくなって滑らなくなり、
なかなか良い感触になった。

これでまた少しゲームが楽しくなりそうだ。

2022/09/11

IKVM (revived) の使い方

前回の記事でIKVMが復活しているというのを書いたけれど、その続き。
具体的な使い方について。

Visual Studio 2022のNuGetから「IKVM」で検索して
簡単にインストールできるまでは良いのだけれど、
そのあと、どうやって .jar (Javaのコンパイル済みファイル)を
.net用のdllに変換するのか、というあたり。

ikvm-revived のGitHubのリポジトリにある
README.md の「Usage」(使い方)にざっくり書いてあるのだけれど
いまいちわかりにくいので簡単に。

NuGetからIKVM(バージョン8.2.0以降、「最新の安定版」と表示されているあたりを選択するのが無難)をインストールしたあと、
VSのソリューションエクスプローラーで
プロジェクトファイルを右クリック > 「プロジェクトファイルの編集」を選択。


XML形式でプロジェクトの設定が記述されたファイルが開くので、
前述のGitHubにあるREADME.mdの「Example」に書いてあるように、

<ItemGroup>
  <IkvmReference Include="変換したいjarファイルのパス" />
</ItemGroup>

と追加する。
だいたいこんな感じになる。

(上の画像は、Apatche Tikaからダウンロードしてきたjarファイル。)

jarファイルの置き場所は多分どこでもいいけど、
プロジェクトのフォルダ内に置いとくのが無難かも。
パスは絶対パスか、もしくはプロジェクトファイル(*.csproj)からの相対パス。

この状態でビルドすると、
出力ディレクトリに、jarから変換されたDLLが生成されるはず。

(Tikaはサイズが58MBもあるので変換に少々時間がかかった・・・)


・・・というような感じで、
.jarファイルから.net用のDLLを生成できる。

上記の変換だけを行うプロジェクトを作っておいて、
そこで変換したDLLを、
実際に使いたいプロジェクトのほうにコピーして使うのがいいのかもしれない。
(そっちにもNuGetでIKVMをインストールする必要があるので忘れずに。)

2022/08/29

復活のIKVM

以前、JavaのライブラリをC#から利用可能にしてくれる
IKVM というのについて書いたけれど

C# (.NET)でMS Officeファイルを扱う - Apache POI & IKVM
https://glsharp.blogspot.com/2020/05/c-netms-office-apache-poi-ikvm.html

ちょっと用があって、
久しぶりにまたVSのNuGetからIKVMを取得しようとしたら・・・

おや、なんか見覚えのないバージョン?
しかも公開日が7月、プロジェクトURLが「ikvm-revived」・・・
もしかして復活した・・・?

ということで、
NuGetに掲載されているプロジェクトURLに行ってみると、
https://github.com/ikvm-revived/ikvm
ほんとに復活してるらしい。
現在開発が進行中で頻繁に更新されているっぽい。

プロジェクトのReadMeに
使い方が書いてあるっぽいのだけど
いまいちよくわからないので調査中。

一点だけ要注意。
Visual Studio 2019だと、
NuGetからのインストールに失敗する・・・どころか、
プロジェクトファイル(.csproj)自体が壊れるっぽい。

2022のほうだと大丈夫のようだ。
必ずVisual Studio 2022を使うこと。