Caffeine Abuse - The Blog

## Procedural Raspberries

Early test of procedurally generated raspberries.

## Ink in water

I’m slowly migrating from Softimage to Houdini and as a learning experience I decided to recreate some of the shots and effects I worked on last year. One of the projects involved a drop dissolving in water, and while this doesn’t look like the commercial at all I just wanted to try how I could approach it in Houdini…

## Caffaineabuse – new and improved

Welcome to the new home of the Caffaineabuse blog. After running the caffeineabuse.blogspot.com for 8 years I finally decided to create a proper page for ranting about 3D, VFX and the delicious brew called coffee. The site is very much in progress but put on a fresh pot and update your bookmark as I’ll be adding material in a not too distant future.

Please feel free to get in touch if you have any questions, comments or just want to chat about coffee.

## Build your own Shockwave deformer using ICE

The wave function
The shockwave will be constructed by two sets of waves – a somewhat smaller, condensed part followed by the larger more intense pulse. Even though a shockwave is an ideal candidate for simulation, it has a slight drawback – namely that it is simulated. Whenever you want to change a value or reposition the shockwave, you have to rewind and run the simulation again. An alternative approach is to do a bit of high school math.

## Future of the blog and completely unrelated cloud R&D

I haven’t been very active on the blog lately, which some of you may have noticed. I’ve got a just-about-finished tutorial describing how to create a ripple deformer in ICE with a “simple” equation. So, no simulation a fancy stuff like that. Just a couple of well-placed nodes. I also have a half-finished piece about creating a weightmap brush, with dispersion, decay etc, which I might finish if anyone asks for it.  In the meantime I’ll post some wip from a few projects I’ve been working on lately.

## Automatic weightmaps for the left and right side of a head using ICE

Before you can assign any weights use ICE you need an actual weightmap to assign them to. Select the Head object and from the Get &gt; Property menu choose Weight Map. In the PPG, click the Rename button and rename it to Weight_Map_Left. Create a second WeightMap and rename it Weight_Map_Right. With the head still selected, press [Alt] + 9 to open an ICE Tree and from the Create menu choose ICE Tree. Get a Get Data node and enter self.PointPosition as the reference. To assign the proper weights to the weightmap you need to find where along the x-axis each of the points is located. If it’s higher a certain value (zero in this case) it’s part of the left side of the head, and if it’s lower (a negative number in this case) it’s part of the right side.

## Creating HDR environment maps from a 3D scene

Generating a HDR environment from your 3d scene is in fact not that much different from how you would go about in real life. The two most common options are to either shoot a chrome ball or to use multiple images to construct a spherical panorama. While there are 3rd party plugin which enables you to render the scene trough a spherical lens, you can just as easily create a virtual chrome ball to serve your needs.

## Creating strands between two different objects

Once completed the following steps you’ve effectively generated strands between the objects, though they won’t show up in a rendered image as you haven’t  defined any size or shape yet. To do this simply get a Set Data node, right click on the Value Port of the node and choose Add Port After two times so you have three values. Open the PPG, enter self.Size as Reference and set the size to 0.1 or so. Enter self.Shape as Reference1 and choose Cylinder. To loft the shape along the strand rather than using individual shapes you’ll need to add one last attribute. Enter self.StrandDeform as Reference2, press enter and check the self.StrandDeform checkbox. Finally connect the Execute output of the Set Data node to the Port2 of the ICETree node.

## Using an animated map to define particle goals in Softimage

There’s a slight difference depending on what map you’re using. A texture map is essentially an image file connected to an object, and as such you need to tell ICE what to do with this information before you can make use of it. First you need to convert the RGB color of the image to a scalar value and store this information as a custom attribute. Weightmaps on the other hand are already stored as scalar values, and as such you can skip the first step and use its Weights attribute directly in step 2. Start by opening the scene Goal_using_TextureMap.scn.