Motion Blur / Emulate 24fps film?

billyanok's icon

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

james myers's icon

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"
}

Pedro Santos's icon

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.

Max Patch
Copy patch and select New From Clipboard in Max.