btw, don't worry about clipping the distorted vertices to the screen bbox, the 
renderer only worries about clipping to the near-Z plane.  The only time you 
need to worry about the screen edges is if you're wrapping around like the 
spherical projection does.



On Jun 27, 2011, at 11:15 AM, Ivan Busquets wrote:

> Wow, thanks for the info, Jonathan. I looked at CameraOp::LensNFunc, but 
> didn't know what to make of it, or where to start, really. So that's exactly 
> the kind of info I was hoping for.
> 
> At DD there was a custom 'HypeCamera' that supported the 'Hype' distortion 
> file format so you could load a Hype file directly into the camera and it 
> applied the forward distortion via this method.  There was also a 
> 'HypeDistort' geometry modifier that warped a card with the reverse 
> distortion so you could do a undistort/redistort in a single render/filter 
> pass.
> 
> And that's exactly the kind of application I wanted it for. :)
> 
> Thanks,
> Ivan
> 
> 
> On Mon, Jun 27, 2011 at 11:03 AM, Jonathan Egstad <jegs...@earthlink.net> 
> wrote:
> So the current scanline renderer does handle general camera distortions - 
> with poly subdivision memory limitations.
> 
> The CameraOp class supports several built-in linear projection and non-linear 
> distortions using its LensFunc/LensNFunc methods that are passed back to the 
> renderer via the CameraOp::lens_function()/lensNfunction() virtual methods, 
> then on to the Primitives in the Scene structure for use during tessellation.
> 
> You can implement your own LensFunc routines and return them via the virtual 
> method.  The idea is that a primitive can subdivide itself using the output 
> of a LensFunc by passing in vertex info which gets modified.  The 'void *' 
> parameter at the end is a way to get add'l info from the Primitive into the 
> lens function.
> 
> 
> /*! Simple perspective projection lens function.  */
> static void perspLensFunc(Scene* scene, CameraOp* cam, MatrixArray* 
> transforms,
>                           const VArray& in, Vector4& out,
>                           void* data) {
>    out = transforms->matrix(LOCAL_TO_SCREEN).transform(in.PL(), 1.0f);
> }
> 
> /*! Simple UV projection lens function.  */
> static void perspLensFunc(Scene* scene, CameraOp* cam, MatrixArray* 
> transforms,
>                           const VArray& in, Vector4& out,
>                           void* data) {
>    out = transforms->matrix(CLIP_TO_SCREEN).transform(in.UV()*2.0f - 
> Vector4(1,1,1,1));
> }
> 
> The LensNFunc method does the same thing, but operates on arrays of vert info.
> 
> At DD there was a custom 'HypeCamera' that supported the 'Hype' distortion 
> file format so you could load a Hype file directly into the camera and it 
> applied the forward distortion via this method.  There was also a 
> 'HypeDistort' geometry modifier that warped a card with the reverse 
> distortion so you could do a undistort/redistort in a single render/filter 
> pass.
> 
> 
> Have fun,
> 
> -jonathan
> 
> 
> On Jun 26, 2011, at 2:12 PM, Ivan Busquets wrote:
> 
> > Hi,
> >
> > I've been looking at the lens_distortion parameters in CameraOp, and was 
> > wondering if there's any way to implement a different lens 
> > distortion/correction model within a CameraOp, or if one would need to 
> > write a specific renderer to handle that.
> >
> > Specifically, I'm looking for a way to handle off-center and asymmetric 
> > distortions. Assuming I can get a function that maps destination to source 
> > vectors(uvs), would this be possible within a CameraOp?
> >
> > Many thanks,
> > Ivan
> >
> >
> >
> >
> >
> > _______________________________________________
> > Nuke-dev mailing list
> > Nuke-dev@support.thefoundry.co.uk, http://forums.thefoundry.co.uk/
> > http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-dev
> 
> _______________________________________________
> Nuke-dev mailing list
> Nuke-dev@support.thefoundry.co.uk, http://forums.thefoundry.co.uk/
> http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-dev
> 
> _______________________________________________
> Nuke-dev mailing list
> Nuke-dev@support.thefoundry.co.uk, http://forums.thefoundry.co.uk/
> http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-dev

_______________________________________________
Nuke-dev mailing list
Nuke-dev@support.thefoundry.co.uk, http://forums.thefoundry.co.uk/
http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-dev

Reply via email to