The Joy of creation

Hi all 🙂

Wow! every time I start a new project I get some comments of concern from the blender community about myself spreading my code time across them :). I have started many projects since I got involved in Blender development:
Volumetrics, a smoke simulator, GI pathtracing (unbiased), GI photonmapping (biased), Bloxel (Blender voxel system), a small patch for using object groups as a larger manager and now SPH particles, among them currently only Volumetrics have gotten into trunk because Matt Ebb got involved, rewrote everything and put his skills on it (thanks to him). Luckily Daniel Genrich has also integrated the smoke simulator of Niels Thuerey independently.

I have stated many times that my main approach to Blender is as a CATALYST: Due to my internet issues (low bandwith/speed: believe me I don’t know what web videos are 😦 , working near isolated, no access to IRC chats , live talks, etc. ), I could not directly commit to the blender sources or have my own branches. Instead, I have to rely on core Blender devs (Like Matt has kindly done with volumetrics) to review and commit my code. Sadly one of the hardest stuffs for a programmer is reviewing other’s code; that’s perhaps why in the Open source world there’re so many redundant applications (millions of sound players,text editors,3d apps, etc, etc) many of them of low quality/unfinished simply because it’s often easier to write everything from scratch than to dive into existing projects (you have to learn its arcanes) and focus development on them (like blender have succesfully done attracting 3d devs). What is the best way of learning a foreign language? it’s not to pay a teacher or watch lots of courses, no, the best way is to get thrown in that country where that language is native and you must learn it or die : I bet in a matter of months you will speak very fluently that language ;). The best way for me to master Blender is to tackle projects in many fields of Blender that will force me to go to different areas of its source code. This will allow me to build a global idea of Blender inner working, that’s something you simply won’t get reading the whole source code even if you have the lifetime for that, I could focus on one project at a time but if I had done that I’m sure I would have quitted blender dev long time ago: is simply boring. I’m not a coding machine, in order to move on I need to feel JOY about what I’m doing. And what motivates me the most? Encouraging comments, positive reviews/feedback, someone using/needing what I’m doing, support , resources and a place to render my creativity :).

With every new project I tackle I learn new skills that are very difficult to get when working alone. I try as hard as I can to deliver a good PROTOTYPE in order to attract the attention of a core dev; I can not say: -“!Hey, integrate this please for tomorrow!”.

My projects are unfinished prototypes? non standard? delivererd too early? I’m not hiding that, actually I’m proud of that, for me they have lasted an eternity due to the large amount of new knowledge I had to gather for doing them (more than in college), but I’m still a newbie in Blender development! and in graphics technologies and in open source! I started blender programming two years ago (April 2008): for some peoples it can be slow, but this is my rate of learning skills nearly alone, and also in order to make the life or the reviewer easier the code should remain like that, a functional prototype. In order to master one field of knowledge a person have to spend an average of 10 years, I WISH to became a Blender pro and if life allows me I’m willing to pay that price in time, because many things that a blender user/artist forgot is that a developer DOES pay a price for it (as well as an artist do, of course).

I don’t have another blender dev in miles surrounding me, sadly, so I can not walk to someone else place and say: -“Hey! how do you add this button? How do I access this data from that?”, and lots of other minimal questions. Sure, there’s the bf-commiter list, but I can not flood it and bother a BUSY blender dev with them (my only way of communication), I simply have to do my homework and learn it the hard way: try and error, and this takes time.

I hope to have some days power over the Blender sources, creating my own branches, reviewing others patches and adding new functionalities without constant assistance of other core devs, in other words becoming myself a core dev, but I simply will have to EARN that, I will be the first one to forbid myself to apply for that until I consider myself skilled enough to tackle TO THE END whatever project I choose.

But I’m not worried, I trust in myself and know that I simply need time and plenty of MOTIVATION and JOY about what I’m doing. Not long ago, before I started the photon mapping stuff (which happen at the same time as Matt and who has allowed me to reuse part of his code) I was enjoying deep creativity but right after a motivational crisis that I have only shared with my closest friends. Indeed, while Matt was polishing Volumetrics, I saw in the horizon its completion with less and less for me to contribute in. That was good for Blender but bad for me because I have a DEEP CREATIVITY NECESSITY that I need to keep constantly fed otherwise I risk emotional collapse. (go ahead, call a doctor, I’m crazy 😉 )

So you know now my secret, I really NEED to create stuffs, as soon as what’s left for finishing a project is the “plumber job” of integrating it into Blender I start to get demotivated: not saying I will not finish it, it’s just that I need to jump elsewhere in order to gather new strengths and skills that will allow me to comeback and ease that pain later. One of the best things that have happen in my life was using blender as a dev, because it will keep my demon busy for the comming years ;). Since my childhood I have never gotten enough by watching TV, reading, playing. I
used to write books, draw, paint (on canvas), sculpt, make chemical experiments, animate with the corner of my books (sorry, no computer back then), and many, many small things that I sometimes miss 🙂

I think my main contribution is not really these patches, but the HOPE they bring: I’m not just poking in a forum saying: -“I wish blender have implemented an integrated antivirus because it will be helpfull for….”
NO, I’m showing HOW blender will LOOK LIKE and BEHAVE with that feature, I’m saying : “look at this, this is very DOABLE and might be used as a REFERENCE or simply a HINT of where to start or don’t start ;)! “the first thing an open source dev does before start a project is to search for prevously existent attempts, and the more they find, the more probable he/she success will be (aside from his/her skills of course) so by now, when a dev will google for volumetrics, pathtracing, photonmapping, smoke and SPH in Blender,  Google will not answer only forums entries 😉 .
Sure, many of those projects can eventually be made without me as nobody is a God here, but I’m sure volumetrics would have been pushed further in the future if I had not started “True Volumetrics…”, and also my first smoke
simulations rendered in Blender have touched many peoples hearts and contributed a bit on making Daniel’s smoke to come true. GI has also shaken some minds about Render Internal development much more than years of asking for it in forums, the Pathtracer project contribute a bit to revive the interest in Luxrender, and what have happened with Luxrender for me? It’s an awesome project, but so complete at the point I planned to join it that it simply killed my motivation (Second deeper emotional crisis). For joining it I have to do only buggs correction jobs, that is OK and very preciated and needed but simply don’t take my creativity factor in that equation 😦  I will come back to it when I get enough skills to tackle a big project in addition to bugfixing.

And last but not least, something that many people haven’t realized: Every submodule of Blender is ALSO an open source project and is not only the full responsability of the main dev of that area but of every interested dev: the
more devs working on a module, the better it will get, and I have always been open in my projects: I welcome every dev who want to take it and improve it. Help me, show me, teach me and I will do my part 🙂
Don’t worry, I don’t have a deadline and while those projects take time before completion, I keep making the community dreaming but not an ethereal dream, a very real one that will eventually come true: I’m working hard to become a pro.

Cheers  Farsthary

The Joy of creation

Development surprise ;)

TADAAAAN! Smoothed Particle Hydrodynamics (SPH) for Blender particle system
(True Fluid Particles) 🙂 !

Hi everyone 🙂

Long time without posting huh? 😉 well , I have prepared a surprise , I have been making recently some research in the area of SPH simulators (don´t blame me, I found this while I was gathering resources for Bloxel and since its development is shorter than Bloxel I decided not keep the community waiting 😉 ) and came up with the first draft of SPH physiscs for the powerful Blender Particle System from Janne Karhu (aka Jahka).

For the ones who think that SPH means something related to the stars I have to tell that in some way you are right: SPH was firstly developed in 1977 for simulating astrophysical processes . The fundamentals of the SPH theory are the interpolation theory, the units in the SPH method represent a region in space and not a real particle, thus field variables (pressure,viscosity,velocity,color, etc) are found by averaging, or smoothing the field variables over a region of interest. SPH is often described as a rugged, robust technique that could easily be extended to N dimensions while Eulerian approaches (Grid based methods) suffer from the curse of dimensionality (computation grows exponentially with dimensions).

Pros:

• Arbitrary scene set ups , no need to define a domain.
• Intuitive and artist friendly.
• Possibility to handle arbitrary complex interactions like hetero-fluids simulations, and unexpected deformations.
• Robust, adaptable and extensible.
• Good results even with a low number of particles.
• Represents a natural extension to the current Blender particle system.
• Excellent for some crazy fluid like particle FX´s .
• Represents one of the most versatile and flexible fluid simulator type.
• Does not depend on boundary conditions.

Cons:

Achieving the same level of accuracy as a grid based simulator like El’beem requires a high number of particles.

Todo

• Improving its speed and stability (particle KD-tree?)
• Jahka’s review and possible integration in his system?

(reviewing requires time, so don’t forget to support him and to mention this patch if you want to motivate him 😉 )

This new method is not a replacement for the Blender El´beem fluid simulator, it’s just a complement and a natural extention to the current particle system, like many other packages have implemented (Softimage, Houdini, Realflow, etc.)

I plan to release the patch for next week for further development and review, also the GUI is not finished and some design considerations should be made, this patch is nearly ready to go and it will not require any traumatic change in Blender so will be safe to commit.

Hope you like it

Farsthary

Development surprise ;)

Volumetrics now support full shadowing

Hi all!

Though are not quite news, I thougth it worth post for it.
Matt Ebb (that is now a full time Blender dev at BF) have recently added full shadow support for volumetrics, at my opinion that was the final milestone needed to make it production ready, so currently volumetrics are an entire suite for handling participating media for artist 🙂
Of course, with time it will evolve and get better and better.

Cheers to all Farsthary

Volumetrics now support full shadowing

Blender 2.5 – tutorials

Hi, this is a friend of Farsthary.

Although the volumetric renderer is now maintained/optimized only by the great Matt Ebb (aka Broken) with some assistance from Alfredo de Greef (aka Eeshlo), I thought it would be interesting for the supporters of the previous blog “True Volumetrics in Blender” to have some news from time to time, so…
* If you follow Matt’s blog, you will notice that he has implemented the interaction between external shadows and volumetrics. Hence, for any volumetric-related stuff, follow his blog by now instead of this one.

* Nick  (aka NRK) has kindly recorded and shared some volumetric tutorials with Blender 2.5 (development version, official beta version to come in one month, grab a build here)

Volumetric + Nodes

Point density

thanks to him!

P.S: If you follow Daniel’s Blog, you can only be amazed by his additions: smoke and fire (in the Blender 2.5 development build) can now interact with force fields! Well, he has done in a few months an incredible work, which will save a lot of time to the Durian’s devs for other cool features!

You can also notice another fund-raiser. Honestly, he is a modest guy, so even if the previous fundraiser for buying his new computer (except the graphic card: he currently uses the integrated and low-end one) went up to 200%, it was below 500$ (see “Hall of Fame”) so he did not buy very expensive hardware. So, this new fundraiser is for him to buy a powerful graphic card compliant with the opencl standard.

What does it mean? Well, opencl is a new programming language which allows to make algorithms run on various GPU (recent nvidia and ati graphic cards). For the smoke and fire simulator, this means that he could develop with a new graphic card a way quicker simulator thank to the new graphic card computing power. (new graphic cards can outperform CPU for heavily parallel calculations like those involved in the smoke/fire simulator –> realtime previzualisation?). So every blender user who has a recent graphic card and want a ultra-fast simulator has a potential answer…

By the way, Farsthary will also investigate opencl programming, I just sent him recent drivers + programming documentation.

Blender 2.5 – tutorials

Bloxel (Blender Voxel system) roadmap

Hi all 🙂

This is a first draft of a todo for the Bloxel project (Blender Voxel system as has being suggested in a joke by VIBrunazo , but is very cool 🙂
Note that this roadmap could and possibly will change over time according to priorities but is a rough sketch of what I will
aim at this project, quite ambitiuos! also I will need to leverage my skills in the road 🙂 and make pauses
for research/learning and continue development of others projects.

Iteration 1: Keep things simple ————————

.Add a new object type: VoxelObject (VO) into Blender
.Implement VoxelObject as an array of floats
.basic drawtype for testing/experimenting
.saving/loading into blends and/or external files (VO’s could be very very big)

.Implement a new ‘Voxel Sculpt’ mode for VO´s
.basic sculpting tools
.basic sculpt drawtype
.marching cubes for meshing/sculp drawtype

(First public release)

Iteration 2: Wellcome flexibility ———————————–

.Generalize the VoxelObject type to allow any data structure as VO’s
.Generalize all the previous defined methods and the new ones that will be added
.Replicate the previous funtionality
.basic meshing/triangulation/voxelization
.basic unification with voxeldata texture and smoke simulator.

.Implement a new ‘Voxel Paint’ mode for VO’s
.basic ‘Magic Paint’ feature, directly painting/editing VO’s (smoke,temperature,ligth cache,etc painting)

(Second public release)

Iteration 3: Warming engines ————————-

.Add more production ready data structures as VO’s
.Implement possibly Octree VO,BVH VO,KDtree VO, BTree VO
.Add more draw types
.for scalar VO’s
.iso-surfaces (solids)
.volumetrics (smoke like)
.for vectors VO’s
.flow lines/flow vectors/etc.

(Third public release) Candidate for new Branch

Iteration 4: Complication things——————————-

.Further refining the whole project
.improving memory management of VO’s
.Out of core VO’s management (VO’s larger than aviable RAM)
.Implement a complete set of sculpting tools
.Implement a complete set of painting tools
.refine all basic implementation into the advanced ones

Iteration 5: Retopo tools——————————–
.Implement basic retopology tools
.Implement advanced retopo tools

In this huge task I hope to rely on the help of the restless blender devs,
and the support of the community. I think both are the most important key
to the project since there’s no way I could accomplish that alone 🙂 ,
I hope also God and life give me strengh, knowledge and oportunities to carry that task.

Cheers to all Farsthary

Bloxel (Blender Voxel system) roadmap