日々適当

hibitekitou

VideoTextureで2つのムービーをテクスチャとして貼付けた

cg |2012-12-04
Blenderにて2つのムービーをテクスチャとしてはりつけ、ゲームモードにてムービーを再生する方法。
こちら [blenderartists.org] を参考に、やってみた。

2つのポリゴンで構成されたオブジェクトにそれぞれのポリゴンにUVを設定し、それぞれにマテリアルを設定し、それぞれにテクスチャを設定してます。



マテリアルは片方にはvideo、もう片方にはvideoBと名付けています。



この状態で、Logic Editorの内容をこんな感じに設定しています。
ActuatorsのSoundで指定しているファイルは、この後のスクリプトで設定しているムービーファイルの1つと同じファイルです。



ControllersでPythonを設定して、Modulの内容を video.init_worldやvideo.update としているのは video.pyというファイルにinit_world()やupdate()関数を用意しているからでして、Text Editor上でこんな感じにスクリプトを記述しました。



import GameLogic as G
import VideoTexture as VT

def init_world():
	ctrl = G.getCurrentController()
	obj = ctrl.owner
	
	if not hasattr(G, 'video0'):
		matID0 = VT.materialID(obj,"MAvideo")
		matID1 = VT.materialID(obj,"MAvideoB")
		G.video0 = VT.Texture(obj, matID0)
		G.video1 = VT.Texture(obj, matID1)
		
		S1 = G.expandPath("//byousoku.mov")
		S2 = G.expandPath("//byousokuB.mov")
		
		G.video0.source =  VT.VideoFFmpeg(S1)
		G.video0.source.repeat = -1
		G.video0.source.scale = True
		G.video0.source.flip = True
		
		G.video0.source.play()
		
		G.video1.source =  VT.VideoFFmpeg(S2)
		G.video1.source.repeat = -1
		G.video1.source.scale = True
		G.video1.source.flip = True
		
		G.video1.source.play()
		
		sound = ctrl.actuators["a_sound"]
		ctrl.activate(sound)
		G.sound = sound
	
 
def update():
	if hasattr(G, 'video0'):
		G.video0.refresh(True, G.sound.time)
		G.video1.refresh(True, G.sound.time)


こんな感じです。

Pキーを押して再生するとこんな感じで無事ムービーが流れました。
たぶん、音の時間で2つのムービーの時間は同期しているんだろうと思います。



とりあえず、メモでした。
なんでこんな事やってんだろw Blender、わけわかんねぇよ。

<追記>
うがっ、再生したらムービーが途中で止まる…。
コメント ( 0 )|Trackback ( )
 
コメント
 
コメントはありません。
コメントを投稿する
ブログ作成者から承認されるまでコメントは反映されません
 
名前
タイトル
URL
コメント
コメント利用規約に同意の上コメント投稿を行ってください。

数字4桁を入力し、投稿ボタンを押してください。