忍者ブログ
サブタイトル:「mer2のマイノリティ・レポート(笑)」 --- 最近忍者ブログの仕様が変わったようで、一部の画像が見えなくなってますが、画像のURLコピペで見られます。(どうしよう困ったな) --- ご用件など、ございましたらtwitterまでどうぞ。
[1203] [1202] [1201] [1200] [1199] [1198] [1197] [1196] [1195] [1194] [1193]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。



Eshell scriptって何よ?
EmacsのEshell上で使えるいわゆるshellスクリプトです。
普通のshellスクリプト中にEmacs Lispが使えるというヘンタイスクリプトです。

ここにちょっと解説が (っていうかここしか解説してるところが無い)

一時期「Windows PowerShell」なんかも試してみたりしたんだけど、ちょこちょことキモチワルイところがあるので、やめました。
Eshell scriptならEmacsだけが入ってればOSを問いませんので良いのではないかと。
時代はクロスプラットフォーム!(私はLinuxに行きたい!)



ファイル名の命名規則を決めておきましょう:
ベースファイル名+フレームナンバー(5桁)+_視点数ナンバー.png
というかんじで。
「視点数ナンバー」っていうのは多視点を前提にしてるせいで、今回の場合はステレオ2視点なので
basename_00001_0.png - フレーム1の右目画像
basename_00001_1.png - フレーム1の左目画像
となってます。


今回、別のマシンでカットを分けてレンダリングしたものを使用しています。
マシン名をPC1、PC2、PC3として、それぞれに"render"という共有フォルダを作ってあるとすると、
//PC1/render
//PC1/render
//PC1/render
でアクセスできる。
(パスの区切りは"\\PC1\render"でもオッケー)


windowsの場合、マシン名は大文字小文字の区別は無いようだ。
"//pc1/"でもアクセスできる。
マシン名だけ打てば、共有フォルダ名は補完が効く。
"//pc1/r"だけ打てば補完できる。


左右の画像から平行法なステレオ画像を作るにはImageMagicを使う。
> convert +append L.png R.png LR.png
てなかんじ。当然ImageMagicのインストールが必要です。

ちなみに、トップアンドボトムな配置の場合は
> convert -append L.png R.png LR.png
になります。


とりあえず1カット分だけでテスト。

---- edit_test01.esh
#このへんは適宜変更
setq cut01_base "//PC1/render/test_"    #ファイルパス + ベースファイル名
setq cut01_start "1"                 #編集開始のフレームナンバー
setq cut01_fnum "10"               #編集するフレーム数(フレームナンバーではない)

setq dest_base "z:/dest_"        #編集結果のファイルパス + ベースファイル名
setq start_frame "0"                 #編集結果の連番開始ナンバー
#適宜変更おわり


setq dest_page (string-to-number start_frame)


setq src_count (string-to-number cut01_start)
setq src_limit (+ (string-to-number cut01_fnum) src_count)
setq src_base $cut01_base

while (< src_count src_limit) {
  setq LEFT (concat src_base (format "%05d" src_count) "_1.png" )
  setq RIGHT (concat src_base (format "%05d" src_count) "_0.png" )
  setq dest (concat dest_base (format "%05d" dest_page) ".png" )

  setq commandline (concat "convert +append " LEFT " " RIGHT " " dest )

  #デバッグ用
  echo $commandline
  #本番用
  #alias command $commandline
  #command

  (incf src_count)
  (incf dest_page)
}

----

いろいろ無理矢理ですが、なにしろよくわかってないので。動いたもん勝ちです。

・setq で変数に数値を入れたときの結果が、1桁だと数値、2桁以上だと文字列になってしまうらしい(?)。
ややこしくなるので、最初から文字列で代入して、使うときに数値にしてます。
・"$commandline"だけで文字列を実行してくれると思ってたんだけど、何故かそれだと"command not found"になってしまうので、苦肉の策でaliasにしてます。


実行方法:
「適宜変更」のところを各自の環境に合わせて修正してください。
Emacs上で'M-x eshell'して、Eshell起動。
Eshellで
$ . edit_test01.esh (ピリオド スペース ファイル名です)
でスクリプト実行。
ずらずらと流れるコマンドラインに間違いがないようならば、本番用のとこの
  #alias command $commandline
  #command
のコメントを外して実行。
どっか間違えてたら、convertコマンドがエラー出します。
途中で止めるには、C-gかESC連打かC-x kでEshelバッファ消しちゃうか。(ごめんなさい、まだよくわかってないの)


うまくいってるようなので、PC3台分をまとめられるようにします。
もうちょっと綺麗にまとまりそうだけど、効率優先でメインループは連続コピペです。てへぺろ

"dest_base"に設定したフォルダにサイドバイサイドな連番動画ができあがるので、あとはffmpegなりなんなりで動画にしてやってください。




+ + + + + + + + + +

----edit_test02.esh
#このへんは適宜変更
setq cut01_base "//PC1/render/test_"    #ファイルパス + ベースファイル名
setq cut01_start "1"                    #編集開始のフレームナンバー
setq cut01_fnum "210"                   #編集するフレーム数

setq cut02_base "//PC2/render/test_"    #ファイルパス + ベースファイル名
setq cut02_start "1"                    #編集開始のフレームナンバー
setq cut02_fnum "150"                   #編集するフレーム数

setq cut03_base "//PC3/render/test_"    #ファイルパス + ベースファイル名
setq cut03_start "1"                    #編集開始のフレームナンバー
setq cut03_fnum "310"                   #編集するフレーム数

setq dest_base "z:/dest_"               #編集結果のファイルパス + ベースファイル名
setq start_frame "0"                    #編集結果の連番開始ナンバー
#適宜変更おわり


setq dest_page (string-to-number start_frame)

#以下、コピペの嵐

#//PC1
setq src_count (string-to-number cut01_start)
setq src_limit (+ (string-to-number cut01_fnum) src_count)
setq src_base $cut01_base
#以下は変更なし
while (< src_count src_limit) {
  setq LEFT (concat src_base (format "%05d" src_count) "_1.png" )
  setq RIGHT (concat src_base (format "%05d" src_count) "_0.png" )
  setq dest (concat dest_base (format "%05d" dest_page) ".png" )

  setq commandline (concat "convert +append " LEFT " " RIGHT " " dest )

  #デバッグ用
  #echo $commandline
  #本番用
  alias command $commandline
  command

  (incf src_count)
  (incf dest_page)
}

#//PC2
setq src_count (string-to-number cut02_start)
setq src_limit (+ (string-to-number cut02_fnum) src_count)
setq src_base $cut02_base
#以下は変更なし
while (< src_count src_limit) {
  setq LEFT (concat src_base (format "%05d" src_count) "_1.png" )
  setq RIGHT (concat src_base (format "%05d" src_count) "_0.png" )
  setq dest (concat dest_base (format "%05d" dest_page) ".png" )

  setq commandline (concat "convert +append " LEFT " " RIGHT " " dest )

  #デバッグ用
  #echo $commandline
  #本番用
  alias command $commandline
  command

  (incf src_count)
  (incf dest_page)
}

#//PC3
setq src_count (string-to-number cut03_start)
setq src_limit (+ (string-to-number cut03_fnum) src_count)
setq src_base $cut03_base
#以下は変更なし
while (< src_count src_limit) {
  setq LEFT (concat src_base (format "%05d" src_count) "_1.png" )
  setq RIGHT (concat src_base (format "%05d" src_count) "_0.png" )
  setq dest (concat dest_base (format "%05d" dest_page) ".png" )

  setq commandline (concat "convert +append " LEFT " " RIGHT " " dest )

  #デバッグ用
  #echo $commandline
  #本番用
  alias command $commandline
  command

  (incf src_count)
  (incf dest_page)
}




PR
この記事にコメントする
お名前
タイトル
文字色
URL
コメント
パスワード Vodafone絵文字 i-mode絵文字 Ezweb絵文字
ついったやろうぜ
ブログ内検索
検索エンジンから来た人、思った結果が出なかったら再検索してちょ。
最新コメント
[08/27 BernardSr]
[08/27 BernardSr]
[08/27 BernardSr]
[12/29 GroverIcow]
[12/26 gayenKinesl]
[12/25 gayenKincfv]
[12/25 geRoesonokp]
[12/24 geRoesonmxu]
[06/30 LindsayDom]
[06/24 Ayukupim]
[06/22 francinerj2]
[06/21 Karsewis]
[06/17 Porsulik]
[06/16 Porsulik]
[06/16 Porsulik]
[06/16 Amimior]
[06/15 WilfordMof]
[06/11 lakeishatb1]
[06/04 Mathewlomi]
[05/31 tiopomWarriorvrp]
[05/31 Lasdumor]
[05/29 Aredorer]
[05/27 IMPUCKICT]
[05/26 Asosans]
[05/24 RaymondZice]
アクセス解析
カウンター
カレンダー
03 2024/04 05
S M T W T F S
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
プロフィール
HN:
mer2
性別:
男性
趣味:
野良猫の餌付け
Powered by ニンジャブログ  Designed by 穂高
Copyright © PCで立体視してみるぶろぐ All Rights Reserved
忍者ブログ / [PR]