-
Notifications
You must be signed in to change notification settings - Fork 0
Images
Below are some images with corresponding script files and a few comments. Most images were rendered using 10 threads on a Quad-Core-HT-Platform.
- Location of images: https://github.com/johsteffens/actinon/tree/master/image
- Location of scripts: https://github.com/johsteffens/actinon/tree/master/src_acn
Click on an image to get full resolution.
Script file: wine_glass.acn
This image was testbed for solving/implementing object composition, refraction, media transition (here water<->glass) and physically correct light absorption in transparent media. It also demonstrates caustics. The script file is highly commented, serving as mini-tutorial into the Actinon scripting language.
Script file: pyramid.acn
This happens to light traversing many objects with frequent reflections and refractions. The picture shows 35 slightly colored glass marbles. 30 are stacked to form a pyramid. The scene has little ambient light and one strong light source located outside the field of view but visible in specular reflections on the marbles.
Script file: ruby_heart.acn
If ruby gemstones can be polished to a perfect sphere, this is how they might look like.
Script file: diamond.acn
The physical properties of a diamond are approximated by choosing uncolored transparency with refractive index of 2.42. An inside-composition with 57 planes and one sphere was used in this picture to get the shape of the "Old European Cut".
Somewhat tricky was finding a proper pose and light to make it glitter. I eventually gave up on that and composed a golden stand instead. This picture demonstrates many features of the ray-tracer: Fresnel reflection, Fresnel refraction, chromatic reflection, diffuse reflection, diffuse shadow, caustics etc.
Script file: caustic_of_caustic.acn
Caustics induced by other caustics is a condition which cannot be trivially solved by photon-mapping. (Recursive) path tracing, on the other hand, can in principle compute it correctly.
This picture demonstrates the effect: The left wall is slightly lifted to let light from the left caustic pass underneath. The right marble is in the shadow and thus produces no direct caustic of the light-source. However, the bright area on the right wall is a (second-order) caustic of the first one.
Rendering higher order caustics via path-tracing is computationally expensive. Since the order is given by recursion depth, the effort grows exponentially. We keep it in reasonable bounds by limiting the number of recursions, limiting the path-length and modulating the amount of path samples with ray-attenuation.
Script file: primitives.acn
A collection of primitives: Sphere, Ellipsoid(s), Torus, Hyperboloid, Cone, Cylinder and Plane (as floor). The latter four have infinite expansion. Finite objects are constructed by inside-composition, which is a set of objects, where each surface area is only valid inside all other objects of the set. Its complement is the outside-composition. Together with object-inversion (swapping inside <-> outside), many complex shapes can be easily constructed from such primitives.
Script file: many_spheres.acn
This image shows 8^5 (=32768) spheres. Ideally, the computational effort grows only logarithmically with the number of objects. This efficiency can be achieved in actinon with a little extra work: Individual objects can be grouped into so-called compounds and a (spherical) envelope can be associated with a compound or object, which defines an area where all objects are guaranteed to be inside. It is also possible to have actinon estimate the envelope, which (due to generous error margins) comes with a slight speed disadvantage and no guarantee of success in case the shape is a too complex composite or (near-)degenerate (e.g. ultra-thin or infinite in size).
Script file: paraffin_lamp.acn
Here is a more complex object. No mesh is used. The lamp is solely composed from primitive shapes.
Script file: hanging_lamp.acn
A hanging-lamp modeled after antique ceiling lamps.