Slitscanning in 3D!

   4128   7   3
User Avatar
Member
3 posts
Joined: March 2015
Offline
Hello all!

I'm currently looking in to creating a 3D version of the classic slit scan effect, which typically is achieved via Processing/After Effects. An outline of the kind of output (and the theory behind it) is outlined here:

2D slitscanning ref! [nofilmschool.com]


The basic theory is to do the following to build up the effect:

1. Create a thin slice of an animated figure
2. Duplicate this thin slice - while offsetting the position of the slice, and offsetting the animated figures animation cache by an increasing amount per frame
3. Repeat

For the initial slicing - I tried scattering points upon the surface, and using a removepoint to cull points where they weren't wanted. I unfortunately found it far too expensive when scattered upon a higher res mesh, though.

So - in the scene below I've got a simple boolean, which hacks out a nice slice and is relatively quick. (But is providing random errors, which you can see in the playblast below.) Curious to know if anyone has any more efficient/stable recommendations, though!

The scene is crudely working - but unfortunately is extremely brute force and manual in its setup. I'm simply copy and pasting individual slices, and manually adjusting the timeshift/transform nodes for each. I've made some rudimentary explorations in to instances, and the copy node - but can't quite seem to put all the pieces together when it comes to getting the timeshift/transform values to propagate as expected!

Any advice, hacking to pieces of my scene would be greatly appreciated! I'm sure it's a relatively simple solution - I'm just brand new to Houdini unfortunately, ahah.

Thanks, and looking forward to hearing from you!

Alembic file for scene [drive.google.com]
Playblast [drive.google.com]

Max

Attachments:
slitscan_v001.hipnc (729.5 KB)

User Avatar
Member
7836 posts
Joined: Sept. 2011
Offline
ILM did an effect like this for Doctor Strange a few years ago. They gave a very interesting talk at SIGGRAPH 2017 about their technique and development process.

I forget the specifics, but I think they has a few ways that were interesting. I think in the end they did use some sort of geometric slicing, but with volumes. They also showed a more low level render-time option that worked more like a real slitscan.
User Avatar
Member
1747 posts
Joined: May 2006
Online
Yeah, you could write a lens shader to sweep the camera position along a path. When I was playing with creating stereo pano cameras I mention this, and the gamedev imposter generator would have code to look at as well.

My notes:

http://www.tokeru.com/cgwiki/index.php?title=HoudiniOculusWip [www.tokeru.com]
http://www.tokeru.com/cgwiki [www.tokeru.com]
https://www.patreon.com/mattestela [www.patreon.com]
User Avatar
Member
3 posts
Joined: March 2015
Offline
jsmack
ILM did an effect like this for Doctor Strange a few years ago. They gave a very interesting talk at SIGGRAPH 2017 about their technique and development process.

I forget the specifics, but I think they has a few ways that were interesting. I think in the end they did use some sort of geometric slicing, but with volumes. They also showed a more low level render-time option that worked more like a real slitscan.

Interesting - I'll try and hunt that down, and see if I can find any hints as to their workflow. I just realized that the point scatter option might in the long run be far more friendly, culling the point volumes - my initial test had the scatter re-evaluating per frame, whereas obviously it'd speed up a ton if I initially cached out a single hi res pass, and used that instead. Meshing those points would likely provide a smoother silhouette, too. I'll take a look at this this evening!

mestela
Yeah, you could write a lens shader to sweep the camera position along a path. When I was playing with creating stereo pano cameras I mention this, and the gamedev imposter generator would have code to look at as well.

My notes:

http://www.tokeru.com/cgwiki/index.php?title=HoudiniOculusWip [www.tokeru.com]

Thanks for this! Coincidentally, the end goal I had in mind was actually a spherical render output for VR - after wanting to orbit around the 2D slitscans that I'd otherwise been creating. Might have to dive in to this a little later down the track, would be curious to see what kind of render times you could get.

But yes, within the initial scene - fundamentally I think I'm still a little lost as to how to elegantly copy each slice, with the slicer/time offset adjusting exponentially. Definitely down to a lack of node knowledge on my part, so will have to keep digging!
User Avatar
Member
1747 posts
Joined: May 2006
Online
Max Telfer
would be curious to see what kind of render times you could get.

Long ones.
http://www.tokeru.com/cgwiki [www.tokeru.com]
https://www.patreon.com/mattestela [www.patreon.com]
User Avatar
Member
8619 posts
Joined: July 2007
Offline
principle should be the same in 3d as is in 2d
if you have your object as 3d colored volume then you can sample it as you please into a new 3d volume
the same if you have sequence of 3d volumes written to disk, you can use volumesample() or volumesamplev() to reach to any of those files per sample to interpolate values from certain space and time to build your new volume using grid of spacetime lookups per voxel
Edited by tamte - Sept. 24, 2019 00:39:54
Tomas Slancik
FX Supervisor
Method Studios, NY
User Avatar
Member
8619 posts
Joined: July 2007
Offline
maybe not the most efficient since files are not pre cached to ram, but a proof of concept
Edited by tamte - Sept. 24, 2019 01:35:45

Attachments:
slitscan.jpg (37.5 KB)
slitscan_v001_ts.hipnc (192.2 KB)

Tomas Slancik
FX Supervisor
Method Studios, NY
User Avatar
Member
3 posts
Joined: March 2015
Offline
Amazing - thank you so much for such a comprehensive scene, tamte!

Lots of learning/experimenting to be done from here, this is invaluable
  • Quick Links