- 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 'Symbolic'
Version 0.35 of Functy is now available for download. Variants are available for Windows, Linux and as source code. There’s also now a Launchpad PPA for installing nightly builds on Ubuntu.
The main improvement to this new version is the ability to export models as OpenVDB voxel clouds. OpenVDB is the award-winning 3D sparse volumetric data library developed by Ken Museth at DreamWorks Animation, and used in a bundle of movies including Puss in Boots, Madagascar 3, How to Train Your Dragon and Turbo (I’m really gunning for success by association here, in case you hadn’t noticed!).
Grab the latest version of Functy from the downloads page.
The Curves library is currently being integrated into Functy in order to provide parametric tubes to be added to function scenes. To give an idea about the sort of results this might allow, here are a few screenshots taken from the development version.
In all of these images the tubes follow a path constructed from cubic Bezier curves:
((((1 - a)3) × P1) + (3 × ((1 - a)2) × a × D1) + (3 × (1 - a) × (a2) × D2) + ((a3) × P2))
where a is the parametric variable, P1, P2, D1 and D2 are the control points. It’s a bit crazy using Bezier curves for this since the library could handle a spiral far more easily, but it was just a product of the way the demo developed. For the first image the function used for the radius was the following.
((2 - cos((((s × a) + o) × 6 × π)) + (sin ((12 × p)) / 5)) / 2).
Here a and p are the parametric variables for the position along the curve and angle around the radius respectively. The values s and o are offsets and scaling factors that are changed for each quarter-circle segment of the spring.
The intention is to allow these functions to be entered directly into Functy to generate curves such as these. There’s still quite a bit of work to be done. Although the Curves library is coming along, this still needs to be integrated with Functy, and the shader code for these parametric tubes also needs to be implemented (it’s certainly possible, but I’m anticipating problems!).
Oops. After releasing version 0.2 I immediately found a couple of bugs! So version 0.21 is now available as a minor bug-fix release over 0.2.
You can get it from the download page: https://sourceforge.net/project/platformdownload.php?group_id=259651
Release notes are also available: https://sourceforge.net/project/shownotes.php?group_id=259651&release_id=690043
Functy is a 3D graph drawing package. The emphasis for the application is to allow Cartesian and spherical functions to be plotted and altered quickly and easily. This immediacy and the vivid results are intended to promote fun exploration of 3D functions. Functy can be built for GNU/Linux or Windows.
This 0.2 release is still beta, but has a number of improvements over 0.1 including:
- An improved user interface.
- New functions that can be used, such as cosh, atan, sec, exp, abs etc.
- Spherical coordinate plotting of functions.
- Various smaller bug fixes and changes.
To find out more or download the latest version, please visit one of the following pages.
Project web site: http://functy.sourceforge.net
Sourceforge project site: https://sourceforge.net/projects/functy/
If you’d like to help improve Functy there are loads of ways you can, be it by coding, designing, translating, scripting or just generally being creative. Take a look at the Contribute page that’s just been added if you want to find out how, or wander over to the Contributors page to see who already has.
Functy is now using Trac as its project management solution. Having had it recommended by a friend and used it internally for some time, it offers some really good functionality and works well. The intention is to use it for all sorts of things like bug reports, documentation and general planning stuff. I’ve added a few appropriate links to the sidebar to make it easier to find all of these.
It’s great that Trac is one of SourceForge’s managed applications. Creating a Trac installation for the project was just a matter of clicking on a tick-box. Literally!
So far Functy has led a largely insular life, not venturing outside of the SourceForge community. And there’s been good reason for this. Functy is only young, and not yet very stable. And let’s face it: SourceForge provides pretty much everything a growing project like this could need. It’s important not to be too inward looking though, and eventually it’s going to have to venture further. So, to this end, there’s now also a Functy project area on Canonical’s Launchpad project development site. If this kind of thing interests you (and you want to help the project find its feet) then I suggest you check it out.
Google recently announced the release of their O3D plugin and web API for creating 3D web graphics. As various commentators have pointed out this isn’t the first or only attempt to create a 3D web standard. I remember many years ago being excited by VRML and the prospect of adding 3D content to the Web. I was especially excited when at the time a colleague brought in a fantastic VRML rendition of the inside of Tutankhamun’s Tomb that he’d created, all running inside a browser. The Web could be so much more with 3D, and while I’ve not looked at the detail to say whether Google’s attempt is better than the others, it’s probably true that Google is more likely to push it hard enough to make it work. It’ll be a shame though if it lives only as a plugin, a kind of purgatory of integration inside the browser but removed from the rest of the page.
Along with the plugin Google also released some nice looking demos, and one in particular cought my eye: this vertex shader example. Here they apparently use a vertex shader to set the normal vertices of an animated 3D sine wave. It would be great to do something similar with Functy. At present the normals in Functy are generated using the Symbolic library in C, which can require quite some computing power for a complicated function using many vertices. If this could be handed over to the graphics card it could result in a real speedup and the possibility for much more accurate function plotting.
Unfortunately I don’t know enough about vertex shaders. But the nice thing about O3D is that all of the code is there in the Web page, so I’m hoping a bit of playing around with the examples, and some reading up about OpenGL could be a step in the right direction.
Many many moons ago, when I was still at school, one of the things that bugged me was the +/- button on my calculator. It just seemed redundant given that there was already a - button. Clearly I needed to get out more, but I digress. It wasn’t until I properly learned about groups, unary and binary operations, inverses and the like that the distinction became clearer, although the extra button still seemed unnecessary.
So, it’s a little ironic that I’ve spent this afternoon adding an extra ‘negative’ unary operation into the Symbolic library, even though there’s already a binary ’subtraction’ operator in there already. I bet I grow to regret this as things get more complicated, but it makes things easier for now.
The main benefit of this change is that previously when you wanted to use a negative number or expression you’d have to write something like “0-5″ or “0-cos(x)”. Now you just need to do “-5″ or “-cos(x)”. Much more civil. I did think about adding in the zero implicitly, so that “-a” got silently converted internally to “0-a“, but this just seemed ugly and was going to make things complex when it was converted back into a text string.
So, the good news is that now functions with negatives that look like they ought to work, but would previously have resulted in a confusing empty function, now actually work as they should. Hooray for unary negation!
I’ve just added a bundle of new functions to the Symbolic library. These include exp, tan (which needed why weren’t they there already?!), the inverse and hyperbolic trigonometric functions, along with cosec, sec and cot.
The nice thing is that these will automatically get added in to Functy on the next build. Having used the existing functions a fair bit it’s good to have something new to play around with. I’ll try to post some screenshots of my efforts soon.
The updates aren’t in any of the releases yet, so if you want them you’ll need to check out the source from svn.