Jump to content

Growing crystals on geometry


jujoje

Recommended Posts

Hey all,

I've run into a bit of a problem, and was wondering if anyone could point in the right direction.

I'm trying to grow crystals on some moderately complex geometry (not entirely sure what at the moment). With the crystals I want to be able to animate where they are growing from over time relatively easily, and animate the growth of each crystal (i.e. scale), so that they start off tiny, grow to a reasonable size and stop growing. The two methods that I've come up thus far are:

(1) First method is an adaptation of a hip file I found when looking into ways of growing stuff on the sidefx forums. Basically it collides particles with the object and uses the hitid to control a timeshift so that the crystals grow from when the collision happens. The main problem with this is that it works for simple geometry, but having to 'paint' a surface with an emitter is a bit of a bind. And I'm getting some weird flickering when the copies are stamped.

(2) The second method was to use an l-system and an attribute transfer node to color the surface and then emit particles from the colored surface. This kind of worked, but once again lacks control and looks less than stellar.

After this I was vaguely thinking that there might be a way to do this using either a creep or a ray sop. Or perhaps using the particles age/life to control the growth. To be honest I'm not to sure about how to promote particle attributes such as life so that they can be used for copy stamping.

I've attached a hip file of what i've got so far, since it will probably make a lot more sense than my description.

Any suggestions to point me in the right direction would be much appreciated :-)

for_odforce1.hipnc

Link to comment
Share on other sites

with the particle approach, the reason why it is jumping about is because you are using $PT to drive your rotation and scale variables in the stamping of the copy sop. You should be using $ID. You also might want to try multiplying it with a float. I've seen Jeff Wagner do this on several occasions in his files as it seems to give better random values.

example:

roty -> rand($ID* 1.567)*360

$ID is a unique value for each particle. $PT will change as soon as a particle is born or dies.

Why do you need particles at all? Can you not simply scatter points over the surface (using a non deformed surface to calculate the area) and trigger your attributes based upon animated (procedural) textures.

If you have to scatter over multiple objects you might want to go with the painting emitter approach.

I haven't worked with L-systems that much, so can't really advise you on them.

Link to comment
Share on other sites

Here's your hip, adjusted the expressions for the particles and tried the scatter approach, used an animated ramp (you can play with it and see it interactively, it's pretty cool) and painted a bit of color on the geometry as a mask.

But yeah, you should look up the values with cops or chops. -there are expressions that allow you to look up cops or chops, you'll probably will want to have Uv's on your object to help look up the correct values. Otherwise distance based triggers can work (for instance still hit it with particles and grow crystals in radial patterns from where each particle hits - combine that with a mask and it will start to look quite interesting. )

In case you're curious about the radial patterns, I found some files I worked on a while back:

http://www.peterclaes.be/temp/houdini_stuf...egration_01.avi

and the hip:

http://www.peterclaes.be/temp/houdini_stuf..._spots_05.hipnc

good luck!

for_odforce2.hipnc

Link to comment
Share on other sites

Hi,

I'm really liking the idea of using a scatter node rather than particles; it's much more elegant than than the direction I was heading in. And to be honest it never occurred to me that you to reference a ramp to manipulate the pscale values. That it updates in real time is really rather cool. The radial patterns sound interesting, and could definitely produce some nice effects.

Thanks for the link to the chops movie MrGAG. I watched that video a while back when I first started learning Houdini, and it flew way over my head. Watching it again now has made me really want to start digging about in chops as then appear incredibly useful.

I've attached a quick flipbook of what I have at the moment, not too much different from pclaes's file, (unfortunately been somewhat busy today), but I used a vopsop instead of a paint node, to add a fractal pattern to the surface. I tried referencing a image in cops using the pic expression, but it seemed a little slow. Hopefully I'll have a bit more time tomorrow to start looking into cops and chops a bit more.

Thanks very much for you help :-)

test_002.mov

Link to comment
Share on other sites

  • 1 year later...

Hi Peter, I was just looking through this file, pulling it apart and stripping it down to the bear essentials just so I could understand how it works. Im interested to know how you got the scale_lookup to appear as a ramp in the attrib_create inside the geo scatter example. The basic question is where did the ramp come from that you have some how been able to reference in the attrib_create?

It looks very useful, so far ive just painted attributes onto my geo, being able to add more controls to the attrib_create looks great though, can you explain it for me?

Thanks

G

Link to comment
Share on other sites

I may not be peter, but I'll attempt to answer your question anyways :)

You can add a ramp (and a variety of other parameters) to any node via the cog menu. Select the node and then un the parameter pane, click the cog and select ‘edit parameter interface’. Then simply drag the parameter you want from the left pane onto the node in the right pane. "scale_lookup" is simply the label.

Another way of linking ramps to parameters is by using vopsops, which is particularly useful if you're setting up ramps controlling different parameters. I've attached an example which uses a ramp for both color and the pscale attribute.

Hope this somewhat convoluted explanation helps (sorry I'm not terribly good at explaining things). And of course thanks to Peter for the example files, from which I too learnt much :-)

vopsop_hip.hipnc

Link to comment
Share on other sites

heh, this brings back memories :).

It is cool to see I have an answering machine when I am on holiday ;).

And yes, Julian is right, it was simply an added parameter.

I believe that was around the time ramps first got introduced. Before that it was all through curves from chops (which still provide more accuracy if you need to have a really accurate "ramp").

Vopsops are probably my favourite way of working these days as they are really fast. You can wrap them up inside a subnet and convert them to digital assets. That tends to be a cleaner way of working as people do get confused sometimes if you add new parameters to Houdini's default nodes. Better to just make an asset.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...