December 28th, 2011 .
I made another piece of jewelry for Kat‘s birthday last week – I thought I’d experiment with making a necklace rather than a ring like last time. It’s 3D printed and cast in sterling silver, and sits in three parts. Originally the idea was to have the arrangement customisable so they could be re-positioned along the chain, but in the end only a few combinations hang well in practice. Doing it this way, as opposed to a pendant, is much more complicated than I imagined and will require a bit more experimentation and prototyping if I attempt it again in the future.
The design is inspired by an islamic tile pattern that we saw recently while travelling in Turkey. I modelled it in Houdini by first procedurally re-creating the tiling pattern, then randomly breaking it up and distorting the pieces with some final detailing and bevelling. The final form was chosen by spending a while experimenting with different random seeds and noise offsets to find something that worked aesthetically. I then brought it into Blender for final tweaks, cleaned up the geometry to be watertight, added sprues for ease of casting, and exported the STL file for the print service.
September 15th, 2011 .
After fixing some cross-platform issues that people were having with the last few versions, here’s a new release of 3Delight/Blender. As well as the fixes, I’ve included some new stuff that’s been on the backburner for a while – a new point cloud global illumination method. When enabled, the addon will automatically generate a point cloud, and then use it in the render for indirect lighting and environment lighting.
It’s just doing one bounce of indirect lighting, in the future it should be reasonably easy to add more bounces via photon mapping in the point cloud generation stage. Eventually I’d like to make this a bit more advanced, with a more modern design for the lighting/shading pipeline and more control over baking pre-passes, but for now (especially since I’m quite short on time ) I’d rather get it out and working in a simple, automatic way so people can use it.
I’ve tested this on my mac, and in both Linux and Windows XP VMs, but as always, if you have any problems on your system please let me know. Download the new addon here: render_3delight_0.7.0.zip
August 9th, 2011 .
Everyone else releases software at siggraph, so why not join in the fun. In ever-diminishing free time, I’ve made some small updates to 3Delight/blender.
There’s a few bug fixes since the last version (thanks Janne Heikkinen for reporting) and using some new features in Blender 2.58’s python API (thanks Campbell Barton), it’s now been possible to improve the shader UI significantly, removing the necessity to click ‘Initialise Shader Parameters’ each time, and now dynamically presenting all shaders in your shader path in a list to select from. Scanning the shaders is done in a background thread and cached – it’s only regenerated when a folder in the shader path is modified, and no more frequently than every 2 seconds.
Download the new addon here: render_3delight_0.6.2.zip
July 5th, 2011 .
After continuous small incremental improvements, it’s time to release a new version of the 3Delight/Blender render engine exporter. This version now requires blender 2.58 and adds a few new features, continuing to round out support for getting geometry data out of Blender. The main additions include:
- Exporting geometry to RIB archives, either manually (File → Export → RIB Archive) or at render time, automatically. Animated RIB archive file sequences can be exported to disk too, and rendered appropriately.
- Rendering blender objects as procedural geometry (Object Properties → Renderman Geometry panel). There’s basic support for DynamicLoad DSOs, RunProgram procedurals, Archives and DelayedReadArchives.
- Instancing blender objects on particles – full deformation and transformation motion blur is supported
- Exporting primitive variables from custom mesh data (such as vertex groups, vertex colors, and uv sets), with some convenient options for default UV sets and colors. Particles can also have primitive variables too, exporting per-point data such as particle age, velocity, lifetime, etc.
- Exporting blender fluid with motion blur
- Exporting blender curve objects as either renderman curve primitives (no animation supported yet due to limitations in the blender API), or as tessellated polygon mesh or subdivision mesh objects (animation supported).
Download the new addon here: render_3delight_0.6.0.zip
As always, feedback and questions are welcome in the comments here.
May 5th, 2011 .
I’ve now updated the 3Delight/Blender exporter to be compatible with Blender 2.57. Hopefully now there’s a ‘stable’ release, the Python API will fluctuate less and I can spend whatever spare time I have on developing this further, rather than fixing it to make it work!
The bpy API has changed recently to be stricter about where and when it will allow modifying scene data. This has had the effect of preventing some things happening as automatically as I would like, and I’ve had to make some things a bit more manual. Now, before using shaders for the first time, you need to click a button ‘Initialise Shader Parameters’ will will read the data from the shader file on disk and generate the UI inside Blender for it. This only needs to be done once on blender startup, and once when you use a new shader. It will automatically initialise all shaders correctly at render time, so it should still work rendering from the command line. I’d like this to happen all automatically behind the scenes but until there are new features added to Blender to support this, it’ll have to do.
As well as fixes, there are couple of new features. It now supports motion blurred dynamic hair (strands), deep shadow maps, and motion blurred shadows/ray tracing via the samplemotion attribute. The last two were contributed by Magnus Loefgren – thanks!
Get the new package here: render_3delight_0.5.4b.zip
edit 10/05/2011: Released a 0.5.4b version, with path handling fixes for Windows – download above
April 15th, 2011 .
Added some different bsdfs to my fun little houdini vopsop pathtracer, trying to see how far I can push things. Now supports perfect specular mirror and fresnel dielectrics – more info on the vimeo page.
March 25th, 2011 .
So I ended up taking my previous silly Houdini VOPs experiment another step further, and upgraded it to a pathtracer supporting indirect diffuse illumination. More info and hip file are at the vimeo page.
March 6th, 2011 .
Fooling around in Houdini with the intersect VOP today, made a little raytracer inside SOPs. I’m sure its not the first time somebody’s done this, but it was a bit of fun while passing time.
It’s tracing rays from each grid point, doing (soft) shadowed diffuse lighting from a point light, with an optional specular reflection layer with fake fresnel blending.
March 3rd, 2011 .
I’ve been very short on time lately and haven’t had much of a chance to look into fixing the 3Delight/Blender addon to work with recent Blender Python API changes. Jeff Doyle (nfz) however, has generously gone through the code and updated it to work with a current Blender SVN version (as of today, r35311). I haven’t been able to spend a huge amount of time testing it, but on a brief inspection it seems to be working well.
Since you’ve been waiting for a new working version, I’ll release Jeff’s changes now, and hopefully spend a bit more time soon with some other fixes.
Get the new package here: render_3delight_0.5.2.zip
February 22nd, 2011 .
Hi, many people have been having trouble getting the 3Delight exporter to work in some Blender versions recently – unfortunately it’s a case of bad timing. There have been several changes lately in Blender’s Python API, each of which have broken existing scripts. I released the addon soon after one of these changes, (happened around rev. 34500 or so?), and that was fine for about a week, but then there were more API changes in Blender around rev. 34850 which have broken the addon again. I’ve just been away having a week off, so I haven’t had time to investigate what’s needed to update the addon to work again with current SVN builds.
So, until I can find the time to fix it, this addon is only working in a small range of SVN revisions,between about rev. 34500 – 34850.
* If your error looks like this: unable to get srna from class ‘atmosphereShaders’ then your build of blender is too new
* If your error looks like this: AttributeError: ‘mathutils.Matrix’ object has no attribute ‘to_translation’then your build of blender is too old.
If anyone would like to help updating the script, that would be very much appreciated, otherwise you’ll just have to bear with me for a little while until I can fix what’s been broken. Thanks!
PS: I’ve disabled comments on the main 3Delight/Blender page – it was getting a bit messy and difficult to track which comment belongs to which version. I’ve moved all the existing comments to the posts for the different exporter version releases, so if you have questions or comments for any of those releases, please post them in there.
February 9th, 2011 .
I’ve posted an update to the 3Delight/Blender exporter, hopefully fixing some problems that people have run into after trying the first released version. I’d only been developing this on my own system, so I guess it’s expected that for people on different platforms, with different configurations, it may not behave the same way that I assume it will! Thanks to everyone for the feedback letting me know about this.
I’ve fixed two main issues, one was with the way it interpreted and exported file paths on Windows. Many thanks to @vitos1k for spending several hours helping to debug this with me. Another issue is that on Mac OS X, the 3Delight installation only sets up the environment variables it needs, for use in the Terminal. This meant that launching Blender from an icon in the dock wouldn’t detect the correct 3Delight paths.
To fix this, there are two additional options – one method allows you to define the path to the 3Delight installation folder from within Blender (Render Properties -> Search Paths panel -> 3Delight Path), or alternatively you can force it to always use a specified folder by specifying the 3delight_env.txt file in the addon folder. However if you have environment variables properly set up, they will still take precedence. This is explained in more detail in the installation.txt file inside the addon package.
You can download the new package here: render_3delight_0.5.1.zip
February 7th, 2011 .
I’ve released a first version of the external render engine exporter I’ve been working on, connecting Blender to 3Delight. It’s still not as complete as I’d like it to be, but I might be quite busy soon, so might as well get the code out there. It’s been several months now slowly massaging it into place, including some practical projects done with it in the meantime. Over the next few days I hope to continue putting up some videos explaining how it currently works. There’s still plenty more things that I’d like to implement and improve, but will probably just take a bit of time.
If you’e going to be testing or using this, I’d recommend familiarising yourself with renderman and the reyes pipeline, to understand more about what’s going on. I’d like to hear feedback and bugs, though I may not have a lot of time to work on them or provide support.
More info and download on its page here: http://mke3.net/3delightblender/
February 7th, 2011 .
February 7th, 2011 .
January 19th, 2011 .
I’ve been doing some work lately on ocean simulation tools for Blender. It’s based on Drew Whitehouse’s open source Houdini Ocean Toolkit, and on a previous patch that was made for blender. A few years ago at ProMotion when we were working on a short film ‘Lighthouse’, we hired Hamed Zaghaghi to make a patch for blender 2.4x, converting the HOT code from C++ to C, and using it to drive a texture in blender, which could provide displacement and foam outputs. In the state we left it in, it was a big improvement over previously available methods such as animated noise, though it was a bit rough around the edges, and since then the code was mostly neglected due to lack of time and interest.
I was asked by Todd McIntosh of Resonance Media if I was interested in restoring what could be salvaged of the old code and re-integrating it as a new patch for Blender 2.5, as a freelance coding project. Todd was able to get a good deal of additional crowd-funding, which really enabled me to spend the required amount of time on this. I was able to reuse some of the old patch ( mostly the C conversion of the main engine) however there was a lot of extra work and re-work that needed to be done. A fair bit of time was spent on making the simulation/evaluation thread-safe, since Blender 2.5 is much more multithreaded than previously, and just dropping in the old code was very unstable. Now the simulator sits as a separate ‘library’ inside blender that can be accessed from other parts of the software, and from a user perspective, there is now a new Ocean modifier, that can either generate an ocean mesh from scratch, or displace an existing mesh. The modifier adds correct UVs and if required, vertex colours to represent foam, for visualisation in the 3d view. I’ve also brought in multithreading to the main simulation engine, using OpenMP after seeing some example code here. I’ve written up some documentation online in the blender wiki.
Among the new features there’s also functionality to bake the simulation results (displacement/normal/foam data) out to a sequence of OpenEXR files. One of the reasons for this is to allow integration with external renderers. The sequence above was rendered in 3Delight with my blender->3Delight render exporter, using such baked files, with custom shaders (more info on the vimeo page). I’m currently just finishing off some final tweaks and bug fixes, and hopefully the tools should be released freely quite soon.