demo reel

portfolio

resume

links

contact

 

 

Gumball Seed Displacement Shader

 

In Progress

Goal: Achieve a natural looking gumball seed.
Methods: Use Maya along with renderman shaders to displace a pattern and add texture to a sphere.
To Do: Make more realistic with variation, tapering and texture... - see below continuation with class start.

Test #1
  



Step 1:
Create a basic repeating pattern from which to work from.

Shader Code:
float ss = mod(s * s_repeats,1);
float tt = mod(t * t_repeats,1);

float d = sqrt((ss - scenter) * (ss - scenter) +
(tt - tcenter) * (tt - tcenter));

Step 2:
Add a line through the pattern to create the pod-like enclosure.  Still need to add smoothing to hump2 (see below).

Shader Code:
float ss = mod(s * s_repeats,1);
float tt = mod(t * t_repeats,1);

float d = sqrt((ss - scenter) * (ss - scenter) +
(tt - tcenter) * (tt - tcenter));

hump1 = smoothstep(rad - blend, rad + blend, d);

if(tt > lineTop && tt < lineBottom) {
hump2 = 1;
}

hump = hump1 * Km1 + hump2 * Km2;

Detailed Gumball Displacement Shader

This still needs considerable work. Ineed to make the spikes longer and the turbulence of the in between noise a lot more shallow.

/* Gumball Shader */
displacement
tgumball(float	Km = 0.1, /
* [0 3] displacement magnitude */ maxcut = .1, /
*[0 1] width of cut through spike*/ sc = 0.5, /
* [0 1] center in the s direction*/ tc = 0.5, /
*center in the s direction*/ rad = .3, /
* [-1 1] radius of conical bump*/ srepeats = 8, /
* [0 10] the number of times to repeat bump in s*/ trepeats = 7, /
* [0 10]the number of times to repeat bump in t*/ noiseSeed01 = .2, /
* [0 10]the noise for general bumpiness on the seed*/ noiseSeed02 = 30) /
* [50 100]the noise for the seed bumpiness*/ { float hump = 0; normal n; n = normalize(N); float ss = mod(s * srepeats, 1); float tt = mod(t * trepeats, 1); /*If the t value is even, then shift to the right if (mod(t/2, 1) < 0.5) { tt = mod(t * trepeats, 1); } else { tt = ((mod(t * trepeats, 1)) + (
(mod(t * trepeats, 1)/ 2)) ); } */ /* Layer 1: Conical bump */ float d = sqrt((ss - sc) * (ss - sc)
+ (tt - tc) * (tt - tc)); float dd = noise(ss * noiseSeed01,
tt * noiseSeed01); float ddd = noise(ss * noiseSeed02,
tt * noiseSeed02); float conebump01 = 0; if ( d < rad ) { conebump01 = 1 - smoothstep(0, rad,
(d * dd)); } else { conebump01 = (1 - smoothstep(0, (
rad + .01) , (d * ddd))); } /* Layer 2: Subtraction from Conical bump */ d = abs(ss - .5); float cut = smoothstep(0, maxcut, d); hump = conebump01 * cut; P = P - n * hump * Km; N = calculatenormal(P); }





 

 

 

Portfolio


rendering
& shading


projects     

programming     

fine art    

model concepts     

studies     


                             

 

                                   © 2004-2008 by Carrie Jones. All Rights Reserved.