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

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



という訳で、ちょっくら
Blenderに多視点カメラを追加する
スクリプト
を作ってみました。

私以外にこんなの必要としてる人が居るのか謎ですが、せっかくBlenderなので公開してみます。

カメラがこんなふうになります。



こんな絵が作れます。


よいところ:
 既存のBlenderのシーン上で実行すれば、そのまんま多視点化(?)。
 横方向の多視点だけじゃなくて、縦横方向の多視点もいけるよ。
 カメラ2つにすれば、普通のステレオだっておっけー。
 動画レンダリングもできますわよ。
 なんと、仕事に使ってます!業務用仕様です!

いくないところ:
 とりあえず「俺が使えればいいや」の精神で作ってます。とりあえずの「使えたよ」版です。
 なんと、コンソールベースです!(Pythonコンソール楽しいよ)
 いまのとこ、多視点カメラの配置は回転移動のみ。(平行移動はあとでやる)
 レンダリングを開始したら、中断不可能!(ぎゃあ)
 当然ですが、無保証です。自己責任で御使用ください
 こないだ仕事で使ったときはちゃんと動いたのですが、その後の手直しでエンバグしてる可能性があります。

スクリプトはこちらから
(リンクは拡張子pngだけどテキストです)

以下は"blender-2.67b-windows64.zip"にて検証。
いちおう以下の順番にやれば動くと思うんですけど、真面目に使うにはやはりそれなりのBlender知識が必要です。

PR


最近いろいろあってBlenderに夢中です。
Blender楽しいよBlender。

いきなりBlenderのカメラの単位ベクトルってやつが必要になりまして、そんなことよくわかんないんだけどよくわかんないながらもなんかないかなと探してみたら、こんなの見つけました。
"You could use the cameras transformation matrix to work it out.
camera_view = (Vector(0,0,-1) * ob.matrixWorld).toEuler()"

おおお、これが答かっ!と思ったのですが、かなり昔の記事で、このままだと今のBlenderでは動きません。
今のBlender(blender-2.67b-windows64.zip)だとVector()はこういう書きかたになるようで。
>>> pos = Vector((0,0,-1)) * bpy.data.objects['Camera'].matrix_world
おお、値が出た。
Vector((0,0,-1))
っていうのは、たぶんカメラの初期状態が下向きになってるからですね(たぶんね)

こいつをCameraのlocationに移動してやれば、Cameraと向きが合うはず、とBlenderの画面上で検証してみたのだけど、なんだか上手くいってないみたい。
#--- bad
import bpy
import mathutils

loc = bpy.data.objects['Camera'].location
vec = mathutils.Vector((0,0,-1)) * bpy.data.objects['Camera'].matrix_world
print(vec)
pos = vec + loc

bpy.ops.object.add(type='EMPTY',location=pos,rotation=(0, 0, 0))
#---
なんで?

matrix_worldっていうのが気になるので、見てみると、
>>> bpy.data.objects['Camera'].matrix_world
Matrix(((0.6858805418014526, -0.31737011671066284, 0.6548618674278259, 7.481131553649902),
        (0.7276337742805481, 0.31246861815452576, -0.6106656193733215, -6.5076398849487305),
        (-0.010816780850291252, 0.8953432440757751, 0.4452453553676605, 5.34366512298584),
        (0.0, 0.0, 0.0, 1.0)))

むむ、これは回転行列ってやつですね。めんどくさいな。

このへん見てみると、

rotate()っていうのがなんかいけそうな予感。引数にMatirxそのままぶちこめそうだし。

こんなんなりました。
#--- good
import bpy
import mathutils

loc = bpy.data.objects['Camera'].location

vec = mathutils.Vector((0,0,-1))
vec.rotate(bpy.data.objects['Camera'].matrix_world)
print(vec)
pos = vec + loc

bpy.ops.object.add(type='EMPTY',location=pos,rotation=(0, 0, 0))
#---

カメラの向きを変えてもぴったりセンターに来てます。


あら、いけてるみたい、やっほう。

計算結果を即画面で確認できるのって便利ですね。Blenderすばらしい。








ついったやろうぜ
ブログ内検索
検索エンジンから来た人、思った結果が出なかったら再検索してちょ。
最新コメント
[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]
アクセス解析
カウンター
カレンダー
02 2024/03 04
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
31
プロフィール
HN:
mer2
性別:
男性
趣味:
野良猫の餌付け
Powered by ニンジャブログ  Designed by 穂高
Copyright © PCで立体視してみるぶろぐ All Rights Reserved
忍者ブログ / [PR]