Motion Blur / Emulate 24fps film?
Hello, I'm looking to emulate 24fps from a 60fps camera input. I'm assuming I would need to skip x frames on playback and add a motion blur? Any starting point would be greatly appreciated!
Thx
B
Copy and paste this Patcher :)
This was my logic:
1.) Use VZ.Grabbr to take a UVC capture from a live camera source
2.) Then I duplicate the video and send one part through the VZ.freezr tool with a 24FPS metronome banging it.
3.) I combine the two video outputs using VZ.4mixr. you can adjust the blending of the original footage and the frozen 24 fps frames. they get blended over eachother creating an intra-frame kind of effect.
4.) For output jit.matirx and jit.window for video output because it is frame-size independent and won't re-scale your video output.
{
"boxes" : [ {
"box" : {
"maxclass" : "message",
"text" : "100",
"outlettype" : [ "" ],
"patching_rect" : [ 301.0, 324.999999821186066, 29.5, 22.0 ],
"numinlets" : 2,
"numoutlets" : 1,
"id" : "obj-7"
}
}
, {
"box" : {
"maxclass" : "toggle",
"outlettype" : [ "int" ],
"patching_rect" : [ 249.0, 265.0, 24.0, 24.0 ],
"numinlets" : 1,
"numoutlets" : 1,
"id" : "obj-4",
"parameter_enable" : 0
}
}
, {
"box" : {
"maxclass" : "bpatcher",
"varname" : "vz.freezr[1]",
"prototypename" : "pixl",
"viewvisibility" : 1,
"offset" : [ 0.0, 0.0 ],
"lockeddragscroll" : 0,
"clickthrough" : 0,
"enablehscroll" : 0,
"enablevscroll" : 0,
"lockedsize" : 0,
"bgmode" : 1,
"border" : 0,
"outlettype" : [ "jit_gl_texture" ],
"patching_rect" : [ 89.257140747138436, 216.999999821186066, 138.0, 130.0 ],
"numinlets" : 3,
"name" : "vz.freezr.maxpat",
"numoutlets" : 1,
"id" : "obj-29"
}
}
, {
"box" : {
"maxclass" : "newobj",
"text" : "jit.window",
"outlettype" : [ "bang", "" ],
"patching_rect" : [ 59.399997889995575, 551.000002837181114, 61.0, 22.0 ],
"numinlets" : 1,
"numoutlets" : 2,
"id" : "obj-17"
}
}
, {
"box" : {
"maxclass" : "newobj",
"text" : "jit.matrix",
"outlettype" : [ "jit_matrix", "" ],
"patching_rect" : [ 59.399997889995575, 522.400002956390381, 53.0, 22.0 ],
"numinlets" : 1,
"numoutlets" : 2,
"id" : "obj-16"
}
}
, {
"box" : {
"maxclass" : "bpatcher",
"annotation" : "## Four-input video mixer ##",
"varname" : "vz.4mixr[1]",
"prototypename" : "pixl",
"viewvisibility" : 1,
"offset" : [ 0.0, 0.0 ],
"lockeddragscroll" : 0,
"clickthrough" : 0,
"enablehscroll" : 0,
"enablevscroll" : 0,
"lockedsize" : 0,
"bgmode" : 1,
"border" : 0,
"outlettype" : [ "jit_gl_texture" ],
"patching_rect" : [ 59.399997889995575, 360.899998128414154, 228.0, 130.0 ],
"numinlets" : 8,
"name" : "vz.4mixr.maxpat",
"numoutlets" : 1,
"id" : "obj-35"
}
}
, {
"box" : {
"maxclass" : "toggle",
"outlettype" : [ "int" ],
"patching_rect" : [ 249.0, 184.0, 24.0, 24.0 ],
"numinlets" : 1,
"numoutlets" : 1,
"id" : "obj-9",
"parameter_enable" : 0
}
}
, {
"box" : {
"maxclass" : "newobj",
"text" : "loadbang",
"outlettype" : [ "bang" ],
"patching_rect" : [ 301.0, 198.0, 58.0, 22.0 ],
"numinlets" : 1,
"numoutlets" : 1,
"id" : "obj-3"
}
}
, {
"box" : {
"maxclass" : "newobj",
"text" : "metro 24",
"outlettype" : [ "bang" ],
"patching_rect" : [ 249.0, 227.0, 56.0, 22.0 ],
"numinlets" : 2,
"numoutlets" : 1,
"id" : "obj-1"
}
}
, {
"box" : {
"maxclass" : "bpatcher",
"varname" : "vz.grabbr[1]",
"prototypename" : "pixl",
"viewvisibility" : 1,
"offset" : [ 0.0, 0.0 ],
"lockeddragscroll" : 0,
"clickthrough" : 0,
"enablehscroll" : 0,
"enablevscroll" : 0,
"lockedsize" : 0,
"bgmode" : 1,
"border" : 0,
"presentation_rect" : [ 26.615440184374165, 166.935179638738589, 316.387905836105233, 138.0 ],
"outlettype" : [ "jit_gl_texture" ],
"presentation" : 1,
"patching_rect" : [ 59.399997889995575, 17.0, 346.0, 158.0 ],
"numinlets" : 2,
"name" : "vz.grabbr.maxpat",
"numoutlets" : 1,
"id" : "obj-223"
}
}
],
"lines" : [ {
"patchline" : {
"source" : [ "obj-9", 0 ],
"destination" : [ "obj-1", 0 ]
}
}
, {
"patchline" : {
"source" : [ "obj-7", 0 ],
"destination" : [ "obj-35", 4 ],
"order" : 1
}
}
, {
"patchline" : {
"source" : [ "obj-7", 0 ],
"destination" : [ "obj-35", 5 ],
"order" : 0
}
}
, {
"patchline" : {
"source" : [ "obj-4", 0 ],
"destination" : [ "obj-29", 1 ]
}
}
, {
"patchline" : {
"source" : [ "obj-35", 0 ],
"destination" : [ "obj-16", 0 ]
}
}
, {
"patchline" : {
"source" : [ "obj-3", 0 ],
"destination" : [ "obj-7", 0 ],
"order" : 0
}
}
, {
"patchline" : {
"source" : [ "obj-3", 0 ],
"destination" : [ "obj-1", 0 ],
"order" : 1
}
}
, {
"patchline" : {
"source" : [ "obj-29", 0 ],
"destination" : [ "obj-35", 1 ]
}
}
, {
"patchline" : {
"source" : [ "obj-223", 0 ],
"destination" : [ "obj-35", 0 ],
"order" : 0
}
}
, {
"patchline" : {
"source" : [ "obj-223", 0 ],
"destination" : [ "obj-29", 0 ],
"order" : 1
}
}
, {
"patchline" : {
"source" : [ "obj-16", 0 ],
"destination" : [ "obj-17", 0 ]
}
}
, {
"patchline" : {
"source" : [ "obj-1", 0 ],
"destination" : [ "obj-4", 0 ]
}
}
],
"appversion" : {
"major" : 8,
"minor" : 5,
"revision" : 6,
"architecture" : "x64",
"modernui" : 1
}
,
"classnamespace" : "box"
}
Here's a simplified example of what I would use for 3D rendering.
Not the same thing as you need, since you're using video, but you might find it useful, particularly the accumulation, although I should note that having only 60 fps to do 24 fps is not ideal.