XRT is a raytracing based programmable rendering system for photo-realistic image synthesis built around a plug-in architecture design.


Motion blur again

Posted: 15 Sep 2009 21:26
Tags: blur motion transformation

I am finally done with a first implementation of transformation motion blur (for some examples, go here). As expected, extensive changes to transformation and intersection routines were needed. However, this is not the end of it. Let me explain why in a few words.

Motion blurred transformations are created by giving a sequence of transformations at different times and can be concatenated and nested hierarchically. The number of time samples may be different for each transformation. When a ray is fired, it is given a random time. When a primitive is tested for intersection by a ray, this time is used to retreive the corresponding motion segment and to interpolate the current transformation between the two ends of the segment.

Right now, I am using linear interpolation between transformations. This works well for scales, translations and small rotations but is obviously wrong for large rotations. It's just an faster path to get a feel on motion blur. I know there is a much better solution: quaternions and spherical interpolation. This will be the next step.

Comments: 0, Rating: 0

Gelato gallery updated

Posted: 13 Sep 2009 16:08
Tags: gallery gelato

I have added new examples and updated some others because they really benefited from the last features I have implemented: improved sampling and blurred shadows. I have also completely changed the gallery layout to display full resolution pictures. It's less straightforward than to use Wikidot builtin gallery but one cannot see anything worthwhile on a confetti. Have a look here.

Comments: 0, Rating: 0

Improved sampling

Posted: 08 Sep 2009 22:26
Tags: pbrt sampler stratified

If you are serious about raytracing, give yourself a favor and buy Physically Based Rendering from Matt Pharr & Malcolm Humphreys. It's huge, it's thick, it weighs a ton and will not fit in your pocket but this is definitely the reference book on the subject. Because I felt bad sampling was possibly responsible for my noisy motion blur images (see my previous post), I have opened it once again and reread chapter 7 which deals with sampling and reconstruction (by the way, this chapter is available for downloading here). This led me to conclude it was time to ditch the current "uniform" sampler and to add a brand new sampler plugin: the "stratified jittered" sampler. It was quite straightforward to adapt PBRT implementation to XRT.

The result is worth the try.

Camera motion blur
Image Unavailable
rendered with uniform sampling

Camera motion blur
Image Unavailable
rendered with stratified sampling

This is still not as good as the 3Delight reference image but a lot closer to it. The PBRT book describes other samplers:"low discrepancy" and "best candidate" which should give even better results.

Comments: 0, Rating: 0

Motion blur: first steps

Posted: 01 Sep 2009 22:20
Tags: 3delight blur motion

I am currently adding motion blur support to XRT.

Actually, motion blur designates four different features:

  • camera motion blur, where blur occurs when the camera moves
  • transformation motion blur, where blur occurs when the transformation attached to a scene object changes
  • deformation blur, where the actual object geometry changes
  • attributes blur, where the surface properties of objects changes over time

Camera motion blur is the easiest to implement because it affects only the camera world transformation and therefore does not require extensive changes. Here is a first rendering. The camera turns from right to left while aiming a green matte sphere. I am not completely happy with the result because it is way too noisy. The same scene rendered with 3Delight is a lot smoother.

Camera motion blur
Image Unavailable
rendered with XRT

Camera motion blur
Image Unavailable
rendered with 3Delight

A possible explanation for this noise is that XRT sampling strategy is a bit crude: a regular grid is used with no jitter. I'll try smarter schemes in the future.

Comments: 0, Rating: 0