- 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 'Development'
If you’re an Ubuntu user, you can now get the latest Functy development build through my Launchpad PPA. As long as you’ve added the PPA, this means it can be installed real easy using the standard apt-get approach:
sudo apt-get install functy
All Ubuntu versions since 14.10 are supported (that’s Utopic, Vivid and Wily). Utopic’s the only one I’ve tested so far. Anything earlier is unfortunately a no-go due to an older version of libzip.
That’s it! When I get a bit more time I’ll post about the new OpenVDB export feature.
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!).
So far Functy has worked only using Cartesian co-ordinates, but I’m currently working on code for the next release to allow functions to be defined using spherical co-ordinates too.
Spherical function plotting is already working as you can see in the screenshot. It seems to produce some nice effects that are quite different from those you generally get using Cartesian functions.
The tricky part seems to be getting the code for both co-ordinate types integrated nicely together, and also sorting out a suitable user interface to allow them both to be added seamlessly.
The reason the code is turning out to be tricky is that I’m trying to develop using object oriented techniques, but using C rather than C++. I know it’s perfectly possible to do this (and do it well; although not necessarily by me!), and so far there hasn’t been much problem. However, I’m now in a situation where inheritance would seem to be the perfect technique to use. Most of the methods needed for the two co-ordinate systems are the same, so in C++ it would make sense to use some virtual interfaces to define them and inherit these from a generic function type. Unfortunately I’m not sure if this is going to work well in C.
It seems like a silly thing to get stuck on and it would be nice to get the spherical functionality into the next build. I’m hoping the best method will become clearer as things progress.
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.
I’m a bit new to the open source development process, so it was quite exciting to receive a patch submitted by Vadi to improve the Functy user interface. One of the big advantages of open source development is supposed to be that anyone is in a position to improve the software: bugs get fixed, features get added and improvements get committed at a faster pace.
To my mind this is a great example. Although Ubuntu/Gnome is an environment I use a fair bit, I’m not as familiar with its UI conventions as many other people are. Nonetheless, user interface consistency is the sort of thing that can make or break a program (or platform) and has a real impact on a user’s experience. So it’s great to get a patch that improves Functy in just this way.
Compare and contrast the old version of the Functy function list window with the new version shown below. For a start, it has nice icons that improve the appearance. More importantly, as Vadi points out in the forums, it also fits with the standard style better, as you can see by taking a look at the interface for the Gnome Network Manager applet shown below right.
The Functy interface is still a bit non-standard (maybe because I dislike menus?), but for me this is a nice improvement to the program in an area where it takes experience that I don’t have. So while I’m sure there are problems for me ahead as I get to grips with open source development, so far the experience is proving positive!