OSL physical camera

A forum where development builds are posted for testing by the community.
Forum rules
NOTE: The software in this forum is not %100 reliable, they are development builds and are meant for testing by experienced octane users. If you are a new octane user, we recommend to use the current stable release from the 'Commercial Product News & Releases' forum.
Post Reply
calus
Licensed Customer
Posts: 1308
Joined: Sat May 22, 2010 9:31 am
Location: Paris

Hi Octane team,

about implmenting in Octane physical camera lens (rather than perfect thin lens) based on this paper :
https://cg.ivd.kit.edu/publications/201 ... optics.pdf

and this open-source Arnold implementation as a C++ camera shader :
https://github.com/zpelgrims/pota
http://zenopelgrims.com/polynomial-optics-arnold/

I'm wondering :
Do you think the Octane OSL camera node is well suited to try to implement this ?
In your opinion, does it worth the hassle for technical user to give it a try or do you already have something similar on Octane roadmap ?
Pascal ANDRE
User avatar
KeeWe
Licensed Customer
Posts: 297
Joined: Wed Nov 27, 2013 11:32 am

Since the Paper is rather technical: could you, in short, sum up the benefits?
6850k // 32 GB // 1080, 1080 Ti, 2080 Ti // Win 10 // C4D 19.068
calus
Licensed Customer
Posts: 1308
Joined: Sat May 22, 2010 9:31 am
Location: Paris

KeeWe wrote:Since the Paper is rather technical: could you, in short, sum up the benefits?
I have linked this paper because it is implemented for Arnold ( third link ).
Image
Image


This is to get more realistic renders based on real camera lens system, opposed to the unrealistic Thin Lens camera we have now,
for more physical distortion, bokeh, vignetting, spectral aberration and even physically based lens flare.


But more generally this is about "polynomial optics", for example here :
http://www.cs.ubc.ca/nest/imager/tr/201 ... ialOptics/
Image
Last edited by calus on Thu Aug 23, 2018 8:33 am, edited 3 times in total.
Pascal ANDRE
SergKlyosov
Licensed Customer
Posts: 126
Joined: Wed Mar 01, 2017 9:33 am

These gif images seem pretty awesome
Would be great if someone can implement this camera in octane
Win 10 64 | RTX 3090 | i9 9980XE | 64GB RAM
itsallgoode9
Licensed Customer
Posts: 896
Joined: Thu Apr 03, 2014 9:04 am
Location: New York City
Contact:

yeah this would definitely be useful. alot of my work involved matching my renders to high resolution photography taken with hassleblads etc and I have to do alot of "dumbing down" my renders in post to make sure they match the non perfect nature of an actual camera/lens. Having a much more accurate to real life camera model would be much better than approximating it in post.
User avatar
Jolbertoquini
Licensed Customer
Posts: 1067
Joined: Sun Aug 31, 2014 7:08 am
Location: London
Contact:

+1000
Octane Render for Maya.
https://vimeo.com/jocg/videos
https://www.linkedin.com/in/jocgtd
http://www.hmxmedia.com/
--------------------
Join MAYA OCTANE USERS Skype discussion here :
https://join.skype.com/LXEQaqqfN15w
rafg
Licensed Customer
Posts: 62
Joined: Fri Sep 05, 2014 11:15 pm

+1
baltort
Licensed Customer
Posts: 72
Joined: Mon Jul 07, 2014 4:00 pm

I looked at this a while ago but didn't get very far. The first problem is that OSL cameras in Octane basically only tell the renderer where to start tracing a ray from and which direction to send it in; The OSL camera never gets a sniff of what colour that ray actually is, so it can't do different things for different wavelengths of light. This is a big limitation for making physical cameras, because you'll never get any chromatic aberration or related effects.

You can, however, do cool stuff with simulating other aspects of lenses in OSL and Octane. Check out my fish-eye lens ( viewtopic.php?f=36&t=68487 ) and my tilt lens ( viewtopic.php?f=36&t=68668 ) in the Lightwave forum.

If anyone has any requests for any particular optical traits then I'd be happy to take a look at doing it in OSL.

Cheers,

James.
User avatar
Jolbertoquini
Licensed Customer
Posts: 1067
Joined: Sun Aug 31, 2014 7:08 am
Location: London
Contact:

baltort wrote:I looked at this a while ago but didn't get very far. The first problem is that OSL cameras in Octane basically only tell the renderer where to start tracing a ray from and which direction to send it in; The OSL camera never gets a sniff of what colour that ray actually is, so it can't do different things for different wavelengths of light. This is a big limitation for making physical cameras, because you'll never get any chromatic aberration or related effects.

You can, however, do cool stuff with simulating other aspects of lenses in OSL and Octane. Check out my fish-eye lens ( viewtopic.php?f=36&t=68487 ) and my tilt lens ( viewtopic.php?f=36&t=68668 ) in the Lightwave forum.

If anyone has any requests for any particular optical traits then I'd be happy to take a look at doing it in OSL.

Cheers,

James.
Good to know thanks James, is that a possibility to have custom bokeh with OSL cameras? I always wondering then use the rack with a plane mesh with a hole in, but more something to plug a texture to modify the bokeh.
https://digital-photography-school.com/ ... eh-shapes/ is working doing the same thing on Octane today I saw some people at C4D do it a lot.

Cheers,
JO
Octane Render for Maya.
https://vimeo.com/jocg/videos
https://www.linkedin.com/in/jocgtd
http://www.hmxmedia.com/
--------------------
Join MAYA OCTANE USERS Skype discussion here :
https://join.skype.com/LXEQaqqfN15w
User avatar
roeland
OctaneRender Team
Posts: 1823
Joined: Wed Mar 09, 2011 10:09 pm

You can implement a custom bokeh in an OSL camera, this is however not an easy problem for arbitrary shapes.

Use getAttribute("camera:dofrandom", dof_uv) to get random numbers you can use to sample a point on your lens, and then transform this point to the desired shape.

This is a basic example to sample a point on a disk:

Code: Select all

    float dof_uv[2];
    getattribute("camera:dofrandom", dof_uv);
    // convert to point on circle:
    float dofsn, dofcs;
    sincos(dof_uv[1] * M_2PI, dofsn, dofcs);
    float dofR = Aperture * sqrt(dof_uv[0]);
    // assign pos
    point pos = point(dofcs*dofR, dofsn*dofR, 0);
Post Reply

Return to “Development Build Releases”