project for creating 3D TRANSITIONS which can work EXTERNAL

As I posted previously:

viewtopic.php?f=14&t=287&p=1232#p1232

this is more than an idea, we started a project wich will involve blender users to create templates, ans a script which can make blender replace video-texturemaps on 3D objects, from an external file, any video app can write that file and have our package as a growing feature.

we are still in our firsts stages, but we would love to hear your opinions (Open Movie Editor´s programmer has confirmed this will be included as a feature).

This is our blog:

http://gvfx.blogspot.com/

this is a transition created with blender 3D:

http://youtube.com/watch?v=ewrbU-_Y9go

Marquitux.

our transitions banck is growing, here is a new release:
gvfx.blogspot.com

Screenshot:

VIDEO EXPLAINING, WHAT IS GVFX?

http://youtube.com/watch?v=Y2Gbu1HRN2Q

Marquitux

Hi.

Had a look at your blog, but I couldn't find a description of the text file the video editor is supposed to create. Do you have specs for that ? I also downloaded the latest GVFX zip file, but didn't find any instructions on how to call blender to create the transition, so a simple howto would be welcome.

regards

everything depends in the ALEX´S SCRIPT, which wasn´t released oficially yet, because still need some work, but soon we will release it.
here is the script as it was BEFORE gvfx started (the blendfile was very different then)

--------------------------- ALEX.py -----------------------------
from Blender import *
from Blender import Texture,Image,Material,sys,Window,Scene
from Blender.Scene import Render
##from Blender.Scene.Render import *

class GLOBALES:
pass

glob=GLOBALES()

glob.VIDEO='video_path'
glob.Num_Frames=30
glob.Init_Frame=12
glob.FPS=25
glob.size_X=800
glob.size_Y=600

def textura(tex_name):

try:
glob.tex = Texture.Get(tex_name)
except NameError:
glob.tex = Texture.New(tex_name) # creating texture named 'tex'

glob.tex.setType('Image') # make text be an image texture
img = Image.Load(glob.VIDEO) # load a movie
img.setSpeed(glob.FPS)
glob.tex.image = img # link the image to the texture
glob.tex.animFrames=glob.Num_Frames
glob.tex.animOffset=glob.Init_Frame #set initial frame

#-----
def materiales(mtl_name):

try:
mtl=Material.Get(mtl_name) #get material clipB
except NameError:
mtl=Material.New(mtl_name)

mtl.setTexture(0,glob.tex) #place texture in clipB

def proceso(file_p):

glob.VIDEO=file_p
textura('TexturaV')
materiales('clipC')

def readfile( file_name ):
"Abre un archivo, lee y regresa un arreglo."
f = open( file_name )
renglones = f.readlines()
arreglo = map( lambda x: x.split(','), renglones )
# print arreglo
return arreglo

### matrix 0:path_video 1:Frame_init 2:Frame_end
### 3er r 0:FPS 1:size_X 2:size_Y

def material_set():
scn = Scene.GetCurrent()
context = scn.getRenderingContext()

matriz = readfile('datos.txt')

print matriz

context.fps = int(matriz[2][0])
context.imageSizeX(int(matriz[2][1]))
context.imageSizeY(int(matriz[2][2]))
##context.setImageType(matriz[2][3])
##context.imageType=Render.PNG

if matriz[2][3] == 'AVIRAW':
context.setImageType(Render.AVIRAW)

elif matriz[2][3] == 'AVIJPEG':
context.setImageType(Render.AVIJPEG)

elif matriz[2][3] == 'AVICODEC':
context.setImageType(Render.AVICODEC)

#------

#context.sizePreset(Render.PAL)
#if matriz[2][3] == 'AVIRAW':
#context.sizePreset()

#elif matriz[2][3] == 'AVIJPEG':
#context.setImageType(Render.AVIJPEG)

#elif matriz[2][3] == 'AVICODEC':
#context.setImageType(Render.AVICODEC)

#for renglon in matriz:
# glob.VIDEO=matriz[celda][0]

glob.VIDEO=matriz[0][0]
glob.Init_Frame=int(matriz[0][1])
glob.Num_Frames=int(matriz[0][2])
##glob.FPS=int(matriz[0][3])
##glob.size_X=int(matriz[0][4])
##glob.size_Y=int(matriz[0][5])

textura('TexturaV1')
materiales('clipA')

glob.VIDEO=matriz[1][0]
glob.Init_Frame=int(matriz[1][1])
glob.Num_Frames=int(matriz[1][2])
##glob.FPS=int(matriz[1][3])
##glob.size_X=int(matriz[1][4])
##glob.size_Y=int(matriz[1][5])

textura('TexturaV2')
materiales('clipB')

def main():

# Window.FileSelector (proceso, "Open Video File")

## textura('TexturaV')
## materiales('clipB')

material_set()

main()

# written by:
# alejandro Omar Chocano Vazquez
# web: alevvaqp.googleages.com
# e-mail:

mailto:alexv@gmail.com

# TexturaV2 > clip A
# TexturaV1 > clip B

//////////////////// EOF ///////////////////

here is the BRIDGE TEXTFILE: datos.txt just has 3 lines (this may be a xml file in the future)

-----------------------datos.txt-----------------------
/pepe/pedrito/video1.mov,23,123,
/home/video.avi,100,200,
25,720,576,AVIJPEG,
---------------------------------------------------------

we are talking about make the datos.txt file a XML kind, because the TXT structure was simple and good (to make a START) but if 5 transitions are used you´ll need 5 files, and so... that´s why we will change the stucture a litle bit, but thoose are the fields:

CLIP-A with full path "/pepe/pedrito/video1.mov"
CLIP-A starting frame 23
CLIP-A end FRAME 123
CLIP-B with full path "/home/video.avi"
CLIP-B starting frame 100
CLIP-B end FRAME 200
FPS 25
Frame size 720 X 576
Render format AVIJPEG

Mar del Plata - Argentina

oh! and the blender call I guess should be:

/usr/bin/blender -b gvfx.blend -P alex.py -a

but if you include this internal command, give some kind of preferences, for the blender command because /usr/bin/blender is the default option, but mayube i want to download an optimized version or a different binary, and have the option to route the blender path to some other /blenderbuild/20070101/blender or even /tmp/blender/blender.


(rigth click and >save image as to see it complete)

marquitux

he have the script so GVFX is on ITS way.
visit our blog to know more about this and how this works, if you want to implement it in kdenlive, please send a mail and we will help you in any way we can.

http://gvfx.blogspot.com

cheers
marquitux

Nice solution!
I will wait the result of conjunction your afforts and Kdenlive development team.

hi KDENLIVE people :) I´ve been toying with GVFX, and we will fix some stuff, and improve the script to make more things.
actually, you can use the script with THIS FILE:
http://www.4shared.com/file/37099004/6da752fa/gfvxfiltersblend.html

some EXAMPLES:







and with the same process, use our preseted blender 3D-node-editor-FX, the EXTERNAL NLE (could be KDENLIVe) fills the data in data.txt file, and calls commandline render, and gets a video with the effect.
this method may be a little slow, but editors could EXPAND its functionality using blender.

I hope KDENLIVE decides to embrace it.
gvfx.blogspot.com

Marquitux

hi people,

I am thinking about the project and make a proper website for it, will the kdenlive users like this kind of effects? I don´t see much interest on it rigth now, but i will create more effects. I would love to know your opinion.

cheers

 

Marcos Caballero  ( http://www.anubis4d.com.ar )

 

Why don't you join Kdenlive developer team?

Would you like to provide transition plug-ins for Kdenlive and/or MLT?

If this is the case, please get in contact with Dan or J.B.

I can´t join the developer´s team because I´m just a video editor and 3d animator (just an user), that wants to see cool tools to work with in *nix, I don´t  understand C or any other programming language (I quitted programing in the 90´s) I can simply say:

    YOU SEE THIS IDEA? well we pull this thing which is good fot the user to learn and use, just like hollywoodFX or SoftXplode, but in this case, our method will be more flecible because all the scenes are blender3D (blend) files, it´s simple to upgrade and add more transitions (don´t need me for that, the editor can do it), and by using a script we can accelerate the rendering, indicate a HD/SD render and many other things (if we find a way to dump blender gameengine result, we could have these transitions close to realtime, if not, the realtime itself, that´s simply options in a python script) that may be changed anytime by changing the blendfile or the script, but we need the editing tool that connects to the script, and how, or why (if developers decide not to support it) this can/chould be implemented in some library or certain editing tool, that´s far away from my knowledge, and that´s something the comunity must decide not me.

that´s why I talk to USERs not to DEVELOPERS, if developers wants the best for the tool so the comunity may benefit from it, and the users WANTS THIS, well i will do my best to help, but these are political issues I guess :)

developers will know what´s best for the tool and the users. but USERS must tell if this is useful for them, and if they want this.

Marquitux   

http://gvfx.blogspot.com/