Skip to content
Johannes B. Steffens edited this page Jun 22, 2024 · 83 revisions

Images created with Actinon

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.

Click on an image to get full resolution.


Wine Glass

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.





Diamond

Script files: diamond.acn diamond_video.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". This rendering demonstrates many features of the ray-tracer: Fresnel reflection, Fresnel refraction, chromatic reflection, diffuse reflection, diffuse shadow, caustics etc.

'Chromatic dispersion' is a feature that Actinon cannot handle (yet). It means correctly simulating wavelength-dependent optical properties. E.g. the refractive index of a real diamond spans the range 2.40 ... 2.47 within the visible spectrum; enough to produce the famous glitter of colors. So, getting dispersion right is probably the next development stage for the software.


For My Wife: Ruby Heart

Script file: ruby_heart.acn

If ruby gemstones can be polished to a perfect sphere, this is how they might look like.







Pyramid

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.





Caustic of Caustic

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 compute it correctly.

This picture demonstrates the effect: Light is emitted into the scene from the upper left area. The left marble produces a caustic right under the left wall. The left wall is slightly lifted to let light from that 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 correlates with recursion depth, the effort grows exponentially. We keep it in reasonable bounds by controlling the number of recursions, limiting the path-length and modulating the amount of path samples with ray-attenuation.


Primitives

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.





Many Objects

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).





Paraffin Lamp

Script file: paraffin_lamp.acn, paraffin_lamp_on_ledge.acn

Here is a more complex object. No mesh is used. Lamp and ledge are solely composed from primitive shapes.












Hanging Lamp

Script file: hanging_lamp.acn

A hanging-lamp modeled after the fashion of antique ceiling lamps.

The code of this object is distributed across multiple files. There are three major parts: shade, stand and the inner oil-lamp. Each part was designed separately. If you look closely, you can see that the oil-lamp is a modified version of the paraffin-lamp above.