- 3D print
- 3D printing
- ambient occlusion
- blender cycles
- Frenet Frame
- hot picks
- impicit representation
- implicit curve
- lava lamp
- linux format
- MIT licence
- network visualisation
- object oriented
- open source
- parametric curve
- parametric curvec
- parametric surface
- Raspberry Pi
- resolution independent
- Tony Ralano
- user interface
- version 0.1
- version 0.2
- version 0.21
- version 0.22
- vertex shader
Posts tagged with 'Functy'
Following on from my previous post, I thought it’d be interesting to make an animated render of the Lissajous figure. If you have an APNG-capable browser (e.g. Firefox) you can see the result on DeviantArt.
While it’s neat to be able to print static versions of these Lissajous figures, in the future I’m sure it’ll be possible to make the fully moving version as well. Now that would be really something!
Sines and Cosines have been responsible for some of the most elegant mathematical constructs. Lissajous curves are a particularly simple, yet elegant example. Put simply, a Lissajous is a parametric curve where each axis follows a sinusoidal path. By tweaking the amplitude and cycle length for each axis, a myriad of different patterns can be generated, from circles to intricately woven lattices.
The parametric curves in Functy are particularly suitable for generating nice Lissajous curves, and as usual, they can be output for 3D printing. The results of pumping them through a 3D printer, courtesy of Shapeways, can be seen in the photos below, along with a Blender Cycles render of one of the curves.
If you fancy getting really up-close-and-personal with them, you can order your own copies as unusual desk ornaments, from the Shapeways site.
I finally managed to get the video to record properly, so here’s a video version of the shader-based depth-of-field focus-blur.
P.S. This post was actually made using Ubuntu phone. The browser’s still a bit “experimental” so it’s been a bit tricky, but it does seem to work!
As part of an experimental game project I’ve been trying to use the Functy rendering routines to visualise network structures. At the moment it’s at a very early stage, but has - I think - already generated some interesting results.
The screenshot below shows a network of 60 nodes, each one rendered as a spherical co-ordinate function, joined together using links rendered as curves. I just plucked some simple functions out of the air to see what the results would be like but am hoping to extend it with more interesting shapes as things progress.
The various parts of the network are a little hard to discern with a static image, but when I tried to capture a video the result was a mess of fuzzy artefacts (I think there must be something going wrong with my screen capture software), so I gave up on that.
The next step, after neatening up the code, is to arrange better animation of the nodes and links, with dynamic movement based on things like the forces between the nodes. I’m hoping this will produce some really nice effects, and if anything comes of it I’ll put a bit more effort into getting a successful video capture.
A parcel arrived from Shapeways recently containing some of the 3D printed ring prototypes I generated using Functy. The models were exported directly from Functy and converted into STY format before being directly uploaded to Shapeways for printing. All based on sine/cosine curves, there’s a flat version, a slightly bulging version and an irregular version. Since Shapeways did such a brilliant job printing the prototypes, the next step is to get them to print them in silver. Click on the links if you fancy having your own printed!
The Functy function files for all of these rings are up in the repository and will be included as example files in the next full release.
After prompting by Tony’s superb gallery of images, I’ve spent a bit of time playing around using Blender to render models created using Functy.
This has also prompted a bit of extra functionality, and I’m hoping it will soon be able to export out multiple models from Functy to support animated functions. Using the current experimental code (there’s no front-end yet, but it’s in the pipeline) I managed to generate a kind of animated mercury whirlpool. It’s up on deviantart, and if you’re happy to wait for the download, please do take a look at the full animated version.
I’m very pleased to announce the release of Functy version 0.24, which can now be obtained from the downloads page.
The main changes from the previous version are the following.
- Addition of the new curve function type. This complements the existing Cartesian and spherical functions by allowing parametric curves to be defined with cross-sections based on cylindrical co-ordinates.
- All function types can now be rendered either using the CPU (as before) or entirely using the GPU.
- GPU rendering provides per-pixel lighting calculated using the derived normal function (rather than using interpolated normals as used by most per-pixel algorithms).
- Available for Windows and Linux, and also as a new ARM Debian version for use with the Raspberry Pi.
Functy is still very much a work-in-progress, and won’t be entirely bug-free, so if you stumble across a problem or have any difficulty with it please let me know.
The latest version of Functy in the repository now has a (roughly) working version of the curve rendering code. This allows a cylindrical coordinate cross section to be extruded along the length of a parametrically defined curve. In other words, something like a tube.
The code is fairly incomplete. Trying to define functional colours will cause a crash, and vertices are all positioned on the CPU, so that animation isn’t particularly efficient. Both of these should be fixed soon, including GPU rendering of the entire curve.
Here’s a brief video demo of this early code to give a flavour of how it can be used.
Having spent far too much of my weekend playing around with a Raspberry Pi, I’m pleased to say that this has at least resulted in a nice new ARM Debian package of Functy to run on the tiny credit-card-sized computer.
Even though the 3D graphics are a bit slow right now, I’m thoroughly impressed that the Raspberry Pi was happy to build and run Functy with practically no modification. I wasn’t expecting that!
There are more updates to Functy in the pipeline, but in the meantime, the new Raspberry Pi build (which even contains functionality not yet found in the other versions) can be downloaded from the downloads page.
This morning I received a brand new Raspberry Pi through the post, and this evening it took only minutes to get it up and running. It’s quite a brilliant piece of kit for a phenomenal price. I’m quite happily typing this text on it without problem.
What’s more, to my pleasant surprise, I managed to get Functy working with only minor tweaks. I thought the fact it’s the ARM version of Debian might mean there would be problems with the OpenGL libraries, but it seems like it’s worked fine. Even the shaders are compiling and running, although it runs more smoothly when it’s just VBOs.
So the 3D rendering isn’t fast, but to be honest, I’m pretty much flabbergasted that it’s running at all, and it’s doing it at 1920×1080. Not bad for £25 worth of hardware. Correction: absolutely amazing!