Continue Reading »
[Greg] implemented a simple ray tracer for Arduino as a fun exercise and a way to benchmark the processor. He started out with the Moller-Trumbore algorithm, a common ray-tracing algorithm that calculates the intersection of a ray with a triangular plane without doing any pre-calculation of the planes. His code supports one static light and one static camera, which is enough to render a simple scene.
[Greg] started out with a small scene composed of a few polygons, but just finished up a scene with 505 vertices, 901 faces, and reflective surfaces (shown above). He made the above render on his PC emulator, but estimates that it would take just over 4 days to render on the Arduino. [Greg]’s project supports multiple bounces of light, which differentiates his ray tracer from some we’ve covered before (and which explains why it takes so long to render).
The ray tracer is implemented entirely with double-precision floats. This translates to a ton of software float emulation instructions, since the Arduino doesn’t have a floating-point unit. While this ray tracer can’t render anything near real-time graphics due to the slowness of the microcontroller, it’s still a great proof of concept.
The title image for this post was rendered on a modern PC, taking 263 seconds to complete. The same scene, at 64×64 resolution, was rendered on the Arduino, taking 4008 seconds to complete. That render is below.
When you become a happy owner of a Materia 101 3d printer, the first days are really important to start experimenting with the right attitude. Understanding quickly how to get what you want from it means becoming aware of the potential applications of the 3d printing technology in your environment.
Last week we published the tutorial on “Getting started with Materia 101″ created by Kristoffer and kicking off a series of step-by-step guides to explore different topics, softwares and settings for your 3d printer.
Take a look at the second tutorial focused on fixing things at home: “Making something useful” tutorial shows you how to start from a need, to design and print a solution. It feels great to be able to fix what’s broken!
Interested in getting in touch and showing your experiments? Join Kristoffer on the Arduino forum and give us your feedback.
Next week we are going to post a tutorial on how to create 3d-printed cases for Arduino boards. Stay tuned.