Wed, Nov 27, 8:20 PM CST

Renderosity Forums / Poser - OFFICIAL



Welcome to the Poser - OFFICIAL Forum

Forum Coordinators: RedPhantom

Poser - OFFICIAL F.A.Q (Last Updated: 2024 Nov 27 5:12 pm)



Subject: attn bagginsbill - procedural bruising?


  • 1
  • 2
PapaBlueMarlin ( ) posted Fri, 18 August 2006 at 5:55 PM · edited Wed, 27 November 2024 at 8:16 PM

Is there a way to use the materials room to make a figure appear bruised or beaten?



jonthecelt ( ) posted Fri, 18 August 2006 at 6:48 PM

Ok, so I'm not bagginsbill, but thought I'd offer an opinion here.

To my mind, bruising is something better left to a texture map, rather than procedural node-work. Why? Well, because (haveing recently injured myself in a bike accident and got the evidence to back it up) bruising tends to happen in specific places, at the points of contact. For example, I've had a bruise on my left knee for a week and a half now wwith an unharmed area in the centre, based on something (I don't know what, exactly) which protected that section. Bruising can also take the shape of the specific object which left the mark - the assailant's fist, for example. Thse specific shapes and locations for the damage would, I think, prove beyond the capabilities of a node-based solution.

Of course, I now look forward to bagginsbill to come along and tell me I'm wrong... : :)

jonthecelt


Dead_Reckoning ( ) posted Fri, 18 August 2006 at 7:02 PM

Quote - Ok, so I'm not bagginsbill, but thought I'd offer an opinion here.

To my mind, bruising is something better left to a texture map, rather than procedural node-work. Why? Well, because (haveing recently injured myself in a bike accident and got the evidence to back it up) bruising tends to happen in specific places, at the points of contact. For example, I've had a bruise on my left knee for a week and a half now wwith an unharmed area in the centre, based on something (I don't know what, exactly) which protected that section. Bruising can also take the shape of the specific object which left the mark - the assailant's fist, for example. Thse specific shapes and locations for the damage would, I think, prove beyond the capabilities of a node-based solution.

Of course, I now look forward to bagginsbill to come along and tell me I'm wrong... : :)

jonthecelt

 

This is a section from Bagginsbill's wonderful Jessi Eye Makeup Parmatic file at rdna Forum.

I'm no expert, but it looks like you can map the location in the script. It was setup for the eye, but I'm guessing some of the wizards here could rework it for various other parts.

Cheers

DR

 

This function applies eye makeup to an existing Jessi surface.

Pass in the surface you already have.

Parameters mclr1 and mclr2 define the gradient colors.

Parameter opacity defines the opacity of the makeup.

It will modify the surface attribute Alternate_Diffuse.

Returns the surface.

def JessiEyeMakeup(surface, opacity = .3, mclr1 = Color(.5, 0, 1), mclr2 = Color(.7, .5, 1)):
 # I'm taking advantage of the perfect symmetry of the texture mapping
 # so I can let x be the distance from the center of the image map.
 x = Abs(U - .5)
 # These two x values define the limits of the eye part of the map
 # in the x (U) dimension.
 x0 = .026
 x1 = .095
 # Now I'm scaling that range to be from 0 to 1. So x=0 is
 # at the beginning of the lacrimal, and x=1 is at the outermost
 # edge of the eyebrow.
 x = Scale(x, x0, x1)
 # For y (V), the limits of the region of interest are given by
 # y0 and y1.
 y = V
 y0 = .485
 y1 = .55
 # Scaling y to those limits, y = 0 is at the lacrimal, and
 # y = 1 is just under the peak of the eyebrow.
 y = Scale(y, y0, y1)
 # Now I compute two curves, y0 traces the upper eyelid
 # and y1 traces the bottom of the eyebrow.
 y0 = Interpolate(x, ['ibias', .6, 0, .37, .43, .45, .38, .2, .18])
 y1 = Interpolate(x, ['ibias', .6, .2, .65, .8, .9, 1, .9, .5])
 # Scaling between eyelid and eyebrow gives me a y factor that
 # varies from 0 to 1. When yf=0, I'm at the eyelid, when yf=1,
 # I'm at the eyebrow.
 yf = Scale(y, y0, y1)
 # This calculation of blendf gives me a varying strength of the
 # eye makeup. I'm making it start strong near the eyelashes,
 # then fading to 0 as we approach the eyebrow.
 blendf = Interpolate(yf, [0,.9, 1, .8, .4, 0])
 # Retrieve the base color - I'm assuming it's in the Alternate_Diffuse
 # attribute, as used in demoSkin1 below.
 baseclr = surface.Alternate_Diffuse
 # Calculate the diffuse reflection from the makeup, blending the
 # colors passed in to this function using the gradient from eyelid
 # to eyebrow which is in yf.
 blendclr = Diffuse(HSV(Blend(mclr1, mclr2, yf)).labelled('PM:EyeMakeup:*'))
 # Now just combine the base with the makeup, using the
 # specified opacity and the blendfactor computed above.
 f = blendf * InRange(x, 0, 1)
 f = (opacity * f)
 surface.Alternate_Diffuse = Blend(baseclr, blendclr, f).labelled('PM:EyeMakeup:Blending')
 # Return the now modified surface.
 return surface

It can then be controlled with the Parnatic Dials.

 

 

 

"That government is best which governs the least, because its people discipline themselves."
Thomas Jefferson


bagginsbill ( ) posted Sat, 19 August 2006 at 7:56 AM

Attached Link: My gallery posting of Jessi with makeup algorithm

Mariner is spot on.

If you want bruises everywhere, I think it would be pretty easy to do - very similar to the freckles algorithm. But this is usually not what you want, right?

Most people don't don't think in terms of 150 shader nodes, so it's easy to conclude you can't make precisely positioned shapes with shader nodes. But you can, and that is why I wrote Matmatic. 50 nodes, 100 nodes, no big deal, it's still two or three lines of code.

If you want precisely positioned bruises (or makeup, or scars) these can be done using a mathematically defined region, bounded by two interpolations. This is what I did to put Jessi's eye makeup exactly where I want it.

Here's the technique I used. I put Jessi's texture on the one-sided square. That's right, the OSS. Why? Because the geometry has nothing to do with the algorithm. It only cares about UV coordinates. The OSS let's me clearly see where on the texture map I'm making an effect. Also, the OSS renders really fast.

So develop the coordinates for your region of interest on the OSS, iteratively changing the values and rendering to see where the region ends up.

When you're done, apply the material to your figure instead.

Do you guys think this is long enough for Beta on Matmatic? Most people seem to think its working right, but I haven't seen anybody else post an original Matmatic material. So as far as I know, everybody is just using my demos. Which concerns me because I tend not to use certain nodes, and they could be buggy. Opinions?

 


Renderosity forum reply notifications are wonky. If I read a follow-up in a thread, but I don't myself reply, then notifications no longer happen AT ALL on that thread. So if I seem to be ignoring a question, that's why. (Updated September 23, 2019)


Dead_Reckoning ( ) posted Sat, 19 August 2006 at 9:16 AM

Quote - Do you guys think this is long enough for Beta on Matmatic? Most people seem to think its working right, but I haven't seen anybody else post an original Matmatic material. So as far as I know, everybody is just using my demos. Which concerns me because I tend not to use certain nodes, and they could be buggy. Opinions? 

I would love to be able to write one of my own Bagginsbill. I am just not up on what the P6 Nodes would look like in Text Code strings as in your examples.

I could also use a Parmatic mm1.txt like your Jessi Eye Makeup one, but without the eye makeup for James ???????

Could you show and example of James with  bruise on the Cheek? or some other location? I can wrap my head around the co-ordinates, not necessarily the OSS Technique.

Cheers

DR

Here is a Parmatic Jessi Render.

http://excalibur.renderosity.com/mod/gallery/index.php?image_id=1274079&member

 

"That government is best which governs the least, because its people discipline themselves."
Thomas Jefferson


Tyger_purr ( ) posted Sat, 19 August 2006 at 10:29 AM

Quote - Do you guys think this is long enough for Beta on Matmatic? Most people seem to think its working right, but I haven't seen anybody else post an original Matmatic material. So as far as I know, everybody is just using my demos. Which concerns me because I tend not to use certain nodes, and they could be buggy. Opinions?

I tried matmatic once, but never got it to work but i think it was me.... I'll need to go back and try again when i have more time.

 

My Homepage - Free stuff and Galleries


bagginsbill ( ) posted Sat, 19 August 2006 at 2:11 PM

file_351487.jpg

OK I just went through the process of making a cheek bruise for James. Here's the final render. Now I'll show you how I got there.

In the next six postings, I'll show you the Matmatic script and what it produced.

In each iteration, I changed some things, but I'm presenting the whole script, so you can work through the steps yourself if you like.

I defined no functions, loops, or ifs, so indentation is not a problem. Cut and paste should work.

I started with the premise that a round bruise would not work, but in the end it looks fine to me. If you can't do an interpolation and want me to explicitly reshape the bruise for you, I can. Make a copy of the final image here, and draw an outline of roughly where you want the bruise, then I'll do the interpolation function.


Renderosity forum reply notifications are wonky. If I read a follow-up in a thread, but I don't myself reply, then notifications no longer happen AT ALL on that thread. So if I seem to be ignoring a question, that's why. (Updated September 23, 2019)


bagginsbill ( ) posted Sat, 19 August 2006 at 2:12 PM

file_351488.jpg

# STEP 1 # load Jame's face image here clr = ImageMap(":Runtime:Textures:Poser 6 Textures:James_Face_Color.jpg") # apply to diffuse color of surface, also set soft specular s = Surface(clr, 1, 1, .2, .5)


Renderosity forum reply notifications are wonky. If I read a follow-up in a thread, but I don't myself reply, then notifications no longer happen AT ALL on that thread. So if I seem to be ignoring a question, that's why. (Updated September 23, 2019)


bagginsbill ( ) posted Sat, 19 August 2006 at 2:12 PM

file_351489.jpg

# STEP 2 # Add some code for a bruise.

load Jame's face image here

clr = ImageMap(":Runtime:Textures:Poser 6 Textures:James_Face_Color.jpg")

apply to diffuse color of surface, also set soft specular

s = Surface(clr, 1, 1, .2, .5)

Try out a bruise color

bruiseclr = Color(.5, .2, .7)

This is roughly where I want the bruised centered.

cx = .4
cy = .45

Going to use a simple circular pattern to blend in the bruise.

x = U - cx
y = V - cy

In r, I'm putting the distance from the cx cy position.

r = sqrt(x * x + y * y)

We'll put the range of the bruise in this variable, br.

br = .1

Now I'll create the blender input using the Scale function.

A certain distance (br) from the center, the bruise is completely gone - this distance

goes in the second argument so that Scale produces 0 when r = br.

We'll make the bruise come full on at half the br distance, so br/2 goes in the third

argument - this tells the Scale when to produce a 1.

bruiseblender = Scale(r, br, br / 2)

#Finally I simpley blend the original Diffuse_Color (from above) with the bruise color
#using the bruiseblender I just calculated.

s.Diffuse_Color = Blend(s.Diffuse_Color, bruiseclr, bruiseblender)


Renderosity forum reply notifications are wonky. If I read a follow-up in a thread, but I don't myself reply, then notifications no longer happen AT ALL on that thread. So if I seem to be ignoring a question, that's why. (Updated September 23, 2019)


bagginsbill ( ) posted Sat, 19 August 2006 at 2:13 PM

file_351490.jpg

# Look for triple sharp ### comments - this is what I changed since the last step.

STEP 3

That was a good start. But, it's too blue, too low, and too big. Let's adjust.

clr = ImageMap(":Runtime:Textures:Poser 6 Textures:James_Face_Color.jpg")

apply to diffuse color of surface, also set soft specular

s = Surface(clr, 1, 1, .2, .5)

Less blue, more green, here.

bruiseclr = Color(.5, .3, .6)

Move cy up a bit

cx = .4
cy = .5

Going to use a simple circular pattern to blend in the bruise.

x = U - cx
y = V - cy

In r, I'm putting the distance from the cx cy position.

r = sqrt(x * x + y * y)

We'll put the range of the bruise in this variable, br.

.1 was too big

br = .06

Now I'll create the blender input using the Scale function.

A certain distance (br) from the center, the bruise is completely gone - this distance

goes in the second argument so that Scale produces 0 when r = br.

We'll make the bruise come full on at half the br distance, so br/2 goes in the third

argument - this tells the Scale when to produce a 1.

bruiseblender = Scale(r, br, br / 2)

#Finally I simpley blend the original Diffuse_Color (from above) with the bruise color
#using the bruiseblender I just calculated.

s.Diffuse_Color = Blend(s.Diffuse_Color, bruiseclr, bruiseblender)


Renderosity forum reply notifications are wonky. If I read a follow-up in a thread, but I don't myself reply, then notifications no longer happen AT ALL on that thread. So if I seem to be ignoring a question, that's why. (Updated September 23, 2019)


bagginsbill ( ) posted Sat, 19 August 2006 at 2:13 PM · edited Sat, 19 August 2006 at 2:13 PM

file_351491.jpg

# Look for triple sharp ### comments - this is what I changed since the last step.

STEP 4

It's too strong - need to weaken the effect. Also, still a tad low.

clr = ImageMap(":Runtime:Textures:Poser 6 Textures:James_Face_Color.jpg")

apply to diffuse color of surface, also set soft specular

s = Surface(clr, 1, 1, .2, .5)

Bruise color

bruiseclr = Color(.5, .3, .6)

Move cy up a bit

cx = .4
cy = .55

Going to use a simple circular pattern to blend in the bruise.

x = U - cx
y = V - cy

In r, I'm putting the distance from the cx cy position.

r = sqrt(x * x + y * y)

We'll put the range of the bruise in this variable, br.

br = .06

Now I'll create the blender input using the Scale function.

A certain distance (br) from the center, the bruise is completely gone - this distance

goes in the second argument so that Scale produces 0 when r = br.

We'll make the bruise come full on at half the br distance, so br/2 goes in the third

argument - this tells the Scale when to produce a 1.

Reduce max value of blender by just multiplying something less than 1.

maxblend = .7
bruiseblender = maxblend * Scale(r, br, br / 2)

#Finally I simpley blend the original Diffuse_Color (from above) with the bruise color
#using the bruiseblender I just calculated.

s.Diffuse_Color = Blend(s.Diffuse_Color, bruiseclr, bruiseblender)


Renderosity forum reply notifications are wonky. If I read a follow-up in a thread, but I don't myself reply, then notifications no longer happen AT ALL on that thread. So if I seem to be ignoring a question, that's why. (Updated September 23, 2019)


bagginsbill ( ) posted Sat, 19 August 2006 at 2:14 PM · edited Sat, 19 August 2006 at 2:14 PM

file_351492.jpg

# Look for triple sharp ### comments - this is what I changed since the last step.

STEP 5

Now was too high. Going to split the difference on cy.

Blend still too strong, going to reduce maxblend.

Want it slightly bigger. Going to raise br.

clr = ImageMap(":Runtime:Textures:Poser 6 Textures:James_Face_Color.jpg")

apply to diffuse color of surface, also set soft specular

s = Surface(clr, 1, 1, .2, .5)

Bruise color

bruiseclr = Color(.5, .3, .6)

Move cy down a bit

cx = .4
cy = .525

Going to use a simple circular pattern to blend in the bruise.

x = U - cx
y = V - cy

In r, I'm putting the distance from the cx cy position.

r = sqrt(x * x + y * y)

We'll put the range of the bruise in this variable, br.

Raise br

br = .07

Now I'll create the blender input using the Scale function.

A certain distance (br) from the center, the bruise is completely gone - this distance

goes in the second argument so that Scale produces 0 when r = br.

We'll make the bruise come full on at half the br distance, so br/2 goes in the third

argument - this tells the Scale when to produce a 1.

Reduce max value of blender by just multiplying something less than 1.

maxblend = .4
bruiseblender = maxblend * Scale(r, br, br / 2)

#Finally I simply blend the original Diffuse_Color (from above) with the bruise color
#using the bruiseblender I just calculated.

s.Diffuse_Color = Blend(s.Diffuse_Color, bruiseclr, bruiseblender)


Renderosity forum reply notifications are wonky. If I read a follow-up in a thread, but I don't myself reply, then notifications no longer happen AT ALL on that thread. So if I seem to be ignoring a question, that's why. (Updated September 23, 2019)


bagginsbill ( ) posted Sat, 19 August 2006 at 2:14 PM

file_351493.jpg

# Look for triple sharp ### comments - this is what I changed since the last step.

STEP 6

I'm happy with the position and size. Blend is still too strong. Bruises are multicolored.

Going to put a color ramp on the radius from center of bruise.

clr = ImageMap(":Runtime:Textures:Poser 6 Textures:James_Face_Color.jpg")

apply to diffuse color of surface, also set soft specular

s = Surface(clr, 1, 1, .2, .5)

Move cy down a bit

cx = .4
cy = .525

Going to use a simple circular pattern to blend in the bruise.

x = U - cx
y = V - cy

In r, I'm putting the distance from the cx cy position.

r = sqrt(x * x + y * y)

We'll put the range of the bruise in this variable, br.

br = .07

Bruise color based on r, distance from center.

I started using the color picker here, so because I'm reading colors off

in integers, I switch to using the IColor function. I actually loaded this

mat in, then adjusted the colors in the mat room, not here. Then copied

the values back. This took about ten iterations.

bruiseclr = ColorRamp(
 IColor(90, 44, 112),
 IColor(90, 56, 113),
 IColor(90,70, 153),
 IColor(90, 41, 154),
 Scale(r, 0, br)
)

 

Now I'll create the blender input using the Scale function.

A certain distance (br) from the center, the bruise is completely gone - this distance

goes in the second argument so that Scale produces 0 when r = br.

We'll make the bruise come full on at half the br distance, so br/2 goes in the third

argument - this tells the Scale when to produce a 1.

Reduce max value of blender by just multiplying something less than 1.

maxblend = .3
bruiseblender = maxblend * Scale(r, br, br / 2)

#Finally I simply blend the original Diffuse_Color (from above) with the bruise color
#using the bruiseblender I just calculated.

s.Diffuse_Color = Blend(s.Diffuse_Color, bruiseclr, bruiseblender)


Renderosity forum reply notifications are wonky. If I read a follow-up in a thread, but I don't myself reply, then notifications no longer happen AT ALL on that thread. So if I seem to be ignoring a question, that's why. (Updated September 23, 2019)


bagginsbill ( ) posted Sat, 19 August 2006 at 2:22 PM

In the end it's only 12 nodes.

One pretty easy way to adjust the shape of the bruise is to make multiple bruise blenders. Use other cy, cy, br values. Then you'd combine two bruises to make a new poly-bruise by combining their blender functions. One for the color, one for the final blend.

I'd combine them using the Min function. In otherwords, your "r' value would be the minimum "r" with respect to all your cx, cy, br coordinates.

If that's not clear, I can post an example.

 


Renderosity forum reply notifications are wonky. If I read a follow-up in a thread, but I don't myself reply, then notifications no longer happen AT ALL on that thread. So if I seem to be ignoring a question, that's why. (Updated September 23, 2019)


bagginsbill ( ) posted Sat, 19 August 2006 at 2:29 PM

file_351495.jpg

You can stretch the bruise too. Where we take the delta from cx and cy, if you divide by a number, it will scale the bruise by that number.

For example, here I made the bruise 2 times wider than before. I did it by making the following change in the script

x = (U - cx) / 2

To make it 3 times wider do:

x = (U - cx) / 3

To make it 12 times taller do:

y = (V - cy) / 12

 


Renderosity forum reply notifications are wonky. If I read a follow-up in a thread, but I don't myself reply, then notifications no longer happen AT ALL on that thread. So if I seem to be ignoring a question, that's why. (Updated September 23, 2019)


tekn0m0nk ( ) posted Sat, 19 August 2006 at 3:29 PM

Wouldnt it be easier to just paint it in PS ? Or you could just paint a bruise image and layer it onto the skin map using nodes. Would look more real too i bet...


bagginsbill ( ) posted Sat, 19 August 2006 at 4:42 PM

Define "easier". I did the whole 6 step tutorial, including writing all the comments, saving multiple versions of the script, and generating and saving a bunch of test renders, in exactly 30 minutes.

If I wasn't making a step-by-step tutorial, it would have taken no more than 5 minutes.

Now how quick can you paint a bruise then test it in a render? Then change your mind about the colors, size, position, several times. I can't do it in 5 minutes.

Another thing is, if you want a bruise on one of the seams, like the back, you're in for a treat trying to paint that. You actually have to paint two separate bruises and get them to line up.

Painting a bruise separately, then blending with nodes, that seems more reasonable. But I still couldn't do it faster than I did.

The thing you have to remember, is that the algorithms are reusable. You really can't judge the effort of creating the algorithm versus painting one bruise. Instead, imagine you are doing a movie. The director tells you to produce 30 different bruises on 5 characters, The story spans enough time that the bruises have to evolve, changing colors and fading as five movie "days" go by. That's 150 different bruise images. But if you have an algorithmic way to make them, then you just call it with new parameters.

I agree that I didn't make it look realistic, but I was only trying to demonstrate the possibilities, as requested. Given enough time, a very realistic reusable bruise generator is totally possible.

Finding the algorithms can be tricky, but once they are defined, using them is really easier than painting ANYTHING. For example, I recently was asked how to make reptile and goldfish scales. I spent two hours on the algorithm. Now people can have scales of any size, any color, any shape, any orientation, in seconds.

Check out these images by me and others using the scales. With a painted image they'd all be the same. With the procedural approach, no two are alike.

http://www.renderosity.com/mod/gallery/index.php?image_id=1274107

http://www.renderosity.com/mod/gallery/index.php?image_id=1266453

http://www.renderosity.com/mod/gallery/index.php?image_id=1254884

http://excalibur.renderosity.com/mod/gallery/index.php?image_id=1264358

http://www.poserclub.jp/ph_view2.htm?ph_no=2010&phid=1154574595

http://www.runtimedna.com/mod/forum/messages.php?forum_id=43&ShowMessage=233907There's lots more, all using the same one-page script, but you get the point.

My point is, I think algorithmic shaders give so much more variety and are much more useful than image based shaders. Sure, there are times when the image based shader is the only way to go, but not always. So I always encourage their use.

I think maybe the "hobbyist" market, which seems to be mostly what Poser caters to, doesn't care that much about saving a lot of time. Maybe I should be peddling my "medicine" to the pros? :) LOL

 


Renderosity forum reply notifications are wonky. If I read a follow-up in a thread, but I don't myself reply, then notifications no longer happen AT ALL on that thread. So if I seem to be ignoring a question, that's why. (Updated September 23, 2019)


Fazzel ( ) posted Sat, 19 August 2006 at 5:43 PM · edited Sat, 19 August 2006 at 5:44 PM

Plus with procedurals you don't clutter up your hard drive with a bunch of jpeg files.
Now big drives are getting cheaper, but you still have to wade through that mess
to find the one you are looking for, and if it's been a few weeks since you used
it last it's even harder to remember where you put it.



Dead_Reckoning ( ) posted Sat, 19 August 2006 at 6:02 PM

As always, Thank you very much for all of your expertise and sacricing your time to explain this all to us. As a mariner, I am fairly certain that i know how to interpolate and comprehend coordinates.

I agree with you 100%. I like the idea of scripting to do the bulk of it for me. As you mention, it really is quick and easy to change values for a new look. I tend to enjoy what the program can do on it's own, without doing Post Work. I rarely ever do any Post Work. I would rather go back into poser and see what i can do to improve the final render. For me Matmatic and parmatic make that sooo much easier now.

 

Cheers

DR

 

 

Quote - Define "easier". I did the whole 6 step tutorial, including writing all the comments, saving multiple versions of the script, and generating and saving a bunch of test renders, in exactly 30 minutes.

If I wasn't making a step-by-step tutorial, it would have taken no more than 5 minutes.

Now how quick can you paint a bruise then test it in a render? Then change your mind about the colors, size, position, several times. I can't do it in 5 minutes.

Another thing is, if you want a bruise on one of the seams, like the back, you're in for a treat trying to paint that. You actually have to paint two separate bruises and get them to line up.

Painting a bruise separately, then blending with nodes, that seems more reasonable. But I still couldn't do it faster than I did.

The thing you have to remember, is that the algorithms are reusable. You really can't judge the effort of creating the algorithm versus painting one bruise. Instead, imagine you are doing a movie. The director tells you to produce 30 different bruises on 5 characters, The story spans enough time that the bruises have to evolve, changing colors and fading as five movie "days" go by. That's 150 different bruise images. But if you have an algorithmic way to make them, then you just call it with new parameters.

I agree that I didn't make it look realistic, but I was only trying to demonstrate the possibilities, as requested. Given enough time, a very realistic reusable bruise generator is totally possible.

Finding the algorithms can be tricky, but once they are defined, using them is really easier than painting ANYTHING. For example, I recently was asked how to make reptile and goldfish scales. I spent two hours on the algorithm. Now people can have scales of any size, any color, any shape, any orientation, in seconds.

Check out these images by me and others using the scales. With a painted image they'd all be the same. With the procedural approach, no two are alike.

http://www.renderosity.com/mod/gallery/index.php?image_id=1274107

http://www.renderosity.com/mod/gallery/index.php?image_id=1266453

http://www.renderosity.com/mod/gallery/index.php?image_id=1254884

http://excalibur.renderosity.com/mod/gallery/index.php?image_id=1264358

http://www.poserclub.jp/ph_view2.htm?ph_no=2010&phid=1154574595

http://www.runtimedna.com/mod/forum/messages.php?forum_id=43&ShowMessage=233907There's lots more, all using the same one-page script, but you get the point.

My point is, I think algorithmic shaders give so much more variety and are much more useful than image based shaders. Sure, there are times when the image based shader is the only way to go, but not always. So I always encourage their use.

I think maybe the "hobbyist" market, which seems to be mostly what Poser caters to, doesn't care that much about saving a lot of time. Maybe I should be peddling my "medicine" to the pros? :) LOL

 

"That government is best which governs the least, because its people discipline themselves."
Thomas Jefferson


Dead_Reckoning ( ) posted Sat, 19 August 2006 at 7:15 PM

Could post the Full JamesBruise.mm1.txt Parmatic Script please?

I know I will muck it up somewhere with the Cut and Paste.

This has been very helpful in understanding what you have done here.

Thanks again.

DR

 

Quote - OK I just went through the process of making a cheek bruise for James. Here's the final render. Now I'll show you how I got there.

In the next six postings, I'll show you the Matmatic script and what it produced.

In each iteration, I changed some things, but I'm presenting the whole script, so you can work through the steps yourself if you like.

I defined no functions, loops, or ifs, so indentation is not a problem. Cut and paste should work.

I started with the premise that a round bruise would not work, but in the end it looks fine to me. If you can't do an interpolation and want me to explicitly reshape the bruise for you, I can. Make a copy of the final image here, and draw an outline of roughly where you want the bruise, then I'll do the interpolation function.

"That government is best which governs the least, because its people discipline themselves."
Thomas Jefferson


bagginsbill ( ) posted Sat, 19 August 2006 at 9:19 PM · edited Sat, 19 August 2006 at 9:20 PM

Unfortunately - renderosity will not let me post a text file.

Why the f**k this is not allowed - I have no idea.

The programmers here are really strange.

I say this with authority, as I am a professional programmer..


Renderosity forum reply notifications are wonky. If I read a follow-up in a thread, but I don't myself reply, then notifications no longer happen AT ALL on that thread. So if I seem to be ignoring a question, that's why. (Updated September 23, 2019)


bagginsbill ( ) posted Sat, 19 August 2006 at 9:21 PM

Just cut and paste - there are no tabs in this one.


Renderosity forum reply notifications are wonky. If I read a follow-up in a thread, but I don't myself reply, then notifications no longer happen AT ALL on that thread. So if I seem to be ignoring a question, that's why. (Updated September 23, 2019)


nruddock ( ) posted Sun, 20 August 2006 at 5:28 AM

Change the extension to DOC and then attach.

(Maybe add a comment to this thread -> http://www.renderosity.com/mod/forumpro/showthread.php?thread_id=2661596)


Dead_Reckoning ( ) posted Sun, 20 August 2006 at 6:25 AM

file_351565.jpg

> Quote - Just cut and paste - there are no tabs in this one.

Couldn't have been Easier. Thanks again Bagginsbill.

Could you maybe post  a Parmatic Version at RDNA?

Please, If you  would , I would like to see a Parmatic one for James such as the JessiEyeMakeUp.mm1.txt that has SSS and uses this Bruise instead of her eye makeup.

I haven't figured out How to hack that one for James.

Also, it looks like I now have to get the body texture to match the Bruise Head texture.

 

Cheers

DR

 

"That government is best which governs the least, because its people discipline themselves."
Thomas Jefferson


Dead_Reckoning ( ) posted Sun, 20 August 2006 at 6:27 AM

file_351566.jpg

> Quote - Just cut and paste - there are no tabs in this one.

 

Did I make any mistakes, or is this the way it should run?

 

Thanks

DR

 

"That government is best which governs the least, because its people discipline themselves."
Thomas Jefferson


Dead_Reckoning ( ) posted Sun, 20 August 2006 at 6:56 AM

file_351567.jpg

> Quote - Just cut and paste - there are no tabs in this one.

I really like this one Bagginsbill.

I used Blender and added a Granite Node. Left the color dark just to display better.

Cheers

DR

 

"That government is best which governs the least, because its people discipline themselves."
Thomas Jefferson


bagginsbill ( ) posted Sun, 20 August 2006 at 7:09 AM

Dude you're cracking me up. ;-) Did you have coffee yet this morning? LOL

It says:

Processing script ....JamesBruise.mm1.txt->material
    -> node count 12

So that was fine - worked perfectly. There is nothing wrong with your bruise script.

Then it says:

Processing script ....SeaWaterMAT.mm1.txt->material
MATMATIC Script Error: expected an indented block (line 21)

So, I'm just guessing here, but I'd have to say that your sea water file is bad and an indented block is expected on line 21, and it is not indented because it got lost in a cut and paste.

 


Next time you want to post the Matmatic output for me, just cut and paste the text - no screen shot image needed.

 

 

 


Renderosity forum reply notifications are wonky. If I read a follow-up in a thread, but I don't myself reply, then notifications no longer happen AT ALL on that thread. So if I seem to be ignoring a question, that's why. (Updated September 23, 2019)


bagginsbill ( ) posted Sun, 20 August 2006 at 7:12 AM

Yeah that's a great looking bruise DR.

You've got the idea - once the basic algorithm is in place, then you vamp on the colors to your hearts content.

Post your script code for the bruise pattern - get used to sharing like that. Also, I can spot things for you and point out other ways to say/do it. You don't need to post the whole script. just show me the part you are experimenting with.

 


Renderosity forum reply notifications are wonky. If I read a follow-up in a thread, but I don't myself reply, then notifications no longer happen AT ALL on that thread. So if I seem to be ignoring a question, that's why. (Updated September 23, 2019)


bagginsbill ( ) posted Sun, 20 August 2006 at 7:28 AM

file_351569.jpg

Check this out: Change the blender a little bit - use a marble with it like this:

maxblend = .5
bruiseblender = maxblend * Scale(r, br, br / 2)
bruiseblender = bruiseblender * Marble3(.5, 1, scale=.5)


Renderosity forum reply notifications are wonky. If I read a follow-up in a thread, but I don't myself reply, then notifications no longer happen AT ALL on that thread. So if I seem to be ignoring a question, that's why. (Updated September 23, 2019)


Dead_Reckoning ( ) posted Sun, 20 August 2006 at 8:36 AM

Quote - Dude you're cracking me up. ;-) Did you have coffee yet this morning? LOL

Next time you want to post the Matmatic output for me, just cut and paste the text - no screen shot image needed.

 

ROFL - Noooo, I am certain that i haven't had enough Caffeine today.

Thanks, I keep forgetting to use the Keystrokes for cut & paste on that. The mouse doesn't work.

Cheers

DR

 

"That government is best which governs the least, because its people discipline themselves."
Thomas Jefferson


Dead_Reckoning ( ) posted Sun, 20 August 2006 at 8:46 AM

file_351573.jpg

Quote - "

Post your script code for the bruise pattern - get used to sharing like that. Also, I can spot things for you and point out other ways to say/do it. You don't need to post the whole script. just show me the part you are experimenting with.

[ /quote]

I would love to share the script BB, what I did was add the Blender in the Mat Room.

Could you do a short section on "adding the second Blender and then how to combine in the final output please???? Thanks

Ps: My Forte is sailing large merchant ships around the world. Poser is my addiction when I am home on vacation.

DR

"That government is best which governs the least, because its people discipline themselves."
Thomas Jefferson


Dead_Reckoning ( ) posted Sun, 20 August 2006 at 9:10 AM

file_351578.jpg

RE:Check this out: Change the blender a little bit - use a marble with it like this:

maxblend = .5
bruiseblender = maxblend * Scale(r, br, br / 2)
bruiseblender = bruiseblender * Marble3(.5, 1, scale=.5)

Post your script code for the bruise pattern - get used to sharing like that. Also, I can spot things for you and point out other ways to say/do it. You don't need to post the whole script. just show me the part you are experimenting with.

===========================================

I would love to BB, still not cetain How to write that part?
Would it be something like your latest example:

maxblend = .5
bruiseblender = maxblend * Scale(r, br, br / 2)
bruiseblender = bruiseblender * Granite3(.5, 1, scale=.5)

This looks fantasic, I could see this done on the nose as a Heavy Drinker with years of consumption.
Maybe on the hand, leg, ankles etc as vericose veins.

 

I will have to go back and find the Seawater script and save as, Tks

Cheers
DR

"That government is best which governs the least, because its people discipline themselves."
Thomas Jefferson


Dead_Reckoning ( ) posted Sun, 20 August 2006 at 10:22 AM

In reading through the Matmatic Extras, I see that you explain How you did the Marble and Wood.

Would it be possinlt to put together the Statements to use the 3D Nodes please?

I think if I new How to insert the Various Nodes Statements that i could certainly experiment away after that.

I tried substituting Granit, but got and err because I hadn't defined Granit

Cheers

DR

 

"That government is best which governs the least, because its people discipline themselves."
Thomas Jefferson


tekn0m0nk ( ) posted Sun, 20 August 2006 at 11:20 AM

Quote - Now how quick can you paint a bruise then test it in a render? Then change your mind about the colors, size, position, several times. I can't do it in 5 minutes.
Another thing is, if you want a bruise on one of the seams, like the back, you're in for a treat trying to paint that. You actually have to paint two separate bruises and get them to line up.

I think you are kinda underestimating just how powerful texture painting tools are these days.

Quote - I think maybe the "hobbyist" market, which seems to be mostly what Poser caters to, doesn't care that much about saving a lot of time. Maybe I should be peddling my "medicine" to the pros? :) LOL

Well im not exactly sure how using procedurals makes anyone more of a 'pro'. Just because Poser didnt get a material system till recently doesnt make the technology cutting edge or anything. Quite the opposite in fact... most other apps have had them for so long that their use has become a cliche. Heck back when you didnt have texture mapping the only thing people used were procedurals. What you are doing here is exactly what they did in the 80s and early 90s (which might be fine for a retro look of course.) Try looking at some of the old CG shorts by Pixar and others and you will see what i mean.


bagginsbill ( ) posted Sun, 20 August 2006 at 11:43 AM

Tekn0m0nk:

I'm not underestimating texture painting tools - I know there are some that make painting across seams trivial and so on, like ZBrush, Modo, and others. Most Poser users don't have those - they're expensive tools. Even if you have them, I've actually tried painting with ZBrush and I can't do it. The results are always horrible. I can't paint.

Quote: Well im not exactly sure how using procedurals makes anyone more of a 'pro'.

I'm glad you're not sure of that becuase 1) it's wrong and 2) I never said that. I didn't offer a definition of professional, I simply used the word "pros". And by that, I meant people who do computer generated imagery for a living, not a hobby. For those people, time is money, and saving time means making more money. That's all I meant, it was an offhand comment that hobbyists aren't generally going to need time saving techniques because the purpose of a hobby is to spend your time doing something you like doing. When a CG pro paints a texture, it isn't because he/she enjoys it, it's because it is the best way to get results in the time available. If a procedural method is faster and just as good, then they use it.

Anyway if you have those tools, which I don't, and can paint well, which I can't, and you like making things one at a time, go ahead and paint.

My hobby is not painting. It's not even rendering. I'm not an artist. I enjoy solving puzzles, especially puzzle solutions that others find useful. So when someone asks (for me, by name) how to do a tricky thing procedurally, I work on that. I may not succeed, or I may produce inferior results, but I will at least answer the question.

Remember the original question?

Is there a way to use the materials room to make a figure appear bruised or beaten?

The correct answer is "yes". The incorrect (or at least not helpful) answer is "no - I'd paint it so you should too"

 


Renderosity forum reply notifications are wonky. If I read a follow-up in a thread, but I don't myself reply, then notifications no longer happen AT ALL on that thread. So if I seem to be ignoring a question, that's why. (Updated September 23, 2019)


bagginsbill ( ) posted Sun, 20 August 2006 at 11:51 AM

Tekn0monk:

I just looked at your gallery. Those are really good renders. So you're working on a procedural skin shader, are you.

 

HEHEH

Shame on you, picking on procedurals.


Renderosity forum reply notifications are wonky. If I read a follow-up in a thread, but I don't myself reply, then notifications no longer happen AT ALL on that thread. So if I seem to be ignoring a question, that's why. (Updated September 23, 2019)


Dead_Reckoning ( ) posted Sun, 20 August 2006 at 11:52 AM

Quote - Remember the original question?

Is there a way to use the materials room to make a figure appear bruised or beaten?

The correct answer is "yes". The incorrect (or at least not helpful) answer is "no - I'd paint it so you should too"

 

Many Thanks Bagginsbill.

That's what I wanted to learn How to Do. I'm not at all into Post Work . My aim to to learn more about using Poser, not painting.

Cheers

DR

 

"That government is best which governs the least, because its people discipline themselves."
Thomas Jefferson


bagginsbill ( ) posted Sun, 20 August 2006 at 3:56 PM

To be fair, DR, tekn0m0nk wasn't talking about post work painting, but rather making the bruise as a texture file, which you apply in the material room as a shader tree, instead of the algorithmic shader tree I supplied. This is still pre-render and would not have to be done over and over again like post work.


Renderosity forum reply notifications are wonky. If I read a follow-up in a thread, but I don't myself reply, then notifications no longer happen AT ALL on that thread. So if I seem to be ignoring a question, that's why. (Updated September 23, 2019)


bagginsbill ( ) posted Sun, 20 August 2006 at 4:21 PM · edited Sun, 20 August 2006 at 4:22 PM

file_351621.doc

DR Here ya go. Attached is JamesDemo.mm1.txt.

IT IS NOT A DOC FILE - I HAD TO RENAME IT TO MAKE RENDO LOAD IT.

PLEASE REMOVE .doc FROM THE NAME>

It is a trivial conversion of the Jessi demo to use the James texture files. I also added the bruise code above as you requested. The skin features and bruise features all have Parmatic dials, so you can adjust him to your liking.

Will post an image next.


Renderosity forum reply notifications are wonky. If I read a follow-up in a thread, but I don't myself reply, then notifications no longer happen AT ALL on that thread. So if I seem to be ignoring a question, that's why. (Updated September 23, 2019)


Dead_Reckoning ( ) posted Sun, 20 August 2006 at 4:22 PM

Quote - To be fair, DR, tekn0m0nk wasn't talking about post work painting, but rather making the bruise as a texture file, which you apply in the material room as a shader tree, instead of the algorithmic shader tree I supplied. This is still pre-render and would not have to be done over and over again like post work.

Thanks for the Clarification Bagginsbill.

What would happen with sizing that way? and How would you align it?

Could you please show me the text to define the Granite Node ?

Many Thanks

DR

 

"That government is best which governs the least, because its people discipline themselves."
Thomas Jefferson


bagginsbill ( ) posted Sun, 20 August 2006 at 4:25 PM

file_351622.jpg

Parmatic dial settings:

Bruise U: .57
Bruise V: .6
Bruise R: .07
Bruise Blend: .5
Skin Hue: 1
Skin Value: .7
SSS: 1
Specular_Value: .1
Freckles:Blending: .8
SKin:Saturation: 1.1
Blinn:Reflectivity: .5

 


Renderosity forum reply notifications are wonky. If I read a follow-up in a thread, but I don't myself reply, then notifications no longer happen AT ALL on that thread. So if I seem to be ignoring a question, that's why. (Updated September 23, 2019)


bagginsbill ( ) posted Sun, 20 August 2006 at 4:33 PM

Aligning a bruise texture file is pretty easy - you just plug in UV offsets into the ImageMap node.

To make any node in Parmatic, look up the node in the Node Reference. I listed them all. The parameters are documented. You usually want to set the parameters when you create the node, in the argument list. This is all covered in the manual.

So to make the nodes you showed me in your screen shot:

I'll do this step by step instead of one big statement

First the noise - since all the parms are default value, I need no arguments

myNoiseNode = Noise()
#The granite has the noise plugged into the first parameter and all the rest are default:
myGraniteNode = Granite(myNoiseNode)

#The granite was plugged into the blender second color (for the bruise):
s.Diffuse_Color = Blend(s.Diffuse_Color, bruiseclr * myGraniteNode, bruiseblend)

 

That's all I need to do to match what you modified in my shader.


Renderosity forum reply notifications are wonky. If I read a follow-up in a thread, but I don't myself reply, then notifications no longer happen AT ALL on that thread. So if I seem to be ignoring a question, that's why. (Updated September 23, 2019)


Dead_Reckoning ( ) posted Sun, 20 August 2006 at 4:43 PM

Quote - Aligning a bruise texture file is pretty easy - you just plug in UV offsets into the ImageMap node.

To make any node in Parmatic, look up the node in the Node Reference. I listed them all. The parameters are documented. You usually want to set the parameters when you create the node, in the argument list. This is all covered in the manual.

So to make the nodes you showed me in your screen shot:

I'll do this step by step instead of one big statement

First the noise - since all the parms are default value, I need no arguments

myNoiseNode = Noise()
#The granite has the noise plugged into the first parameter and all the rest are default:
myGraniteNode = Granite(myNoiseNode)

#The granite was plugged into the blender second color (for the bruise):
s.Diffuse_Color = Blend(s.Diffuse_Color, bruiseclr * myGraniteNode, bruiseblend)

 

That's all I need to do to match what you modified in my shader.

 

This was very Helpful BagginsBill.

I think this is what has been holding those of us who what to do a script back. We are to thickdense to understand How to add the P6 Materila Room Nodes as lines of text in the script. Your explainations make it much easier.

Definitely needs work here, size is off and coloring is wrong. But at least it shows what I am attempting to do with the Vericose Vein idea. Vericose Veins and SSS would certainly go along way to making and Older Persons' Skin.

I tried it on G2 James. The positioning was off, so I would say the Maps are different between P6James and G2 James.

Cheers

DR

 

 

"That government is best which governs the least, because its people discipline themselves."
Thomas Jefferson


Dead_Reckoning ( ) posted Sun, 20 August 2006 at 4:45 PM

file_351628.jpg

> Quote - Aligning a bruise texture file is pretty easy - you just plug in UV offsets into the ImageMap node. > > To make any node in Parmatic, look up the node in the Node Reference. I listed them all. The parameters are documented. You usually want to set the parameters when you create the node, in the argument list. This is all covered in the manual. > > So to make the nodes you showed me in your screen shot: > > # I'll do this step by step instead of one big statement > > # First the noise - since all the parms are default value, I need no arguments > myNoiseNode = Noise() > #The granite has the noise plugged into the first parameter and all the rest are default: > myGraniteNode = Granite(myNoiseNode) > > #The granite was plugged into the blender second color (for the bruise): > s.Diffuse_Color = Blend(s.Diffuse_Color, bruiseclr * myGraniteNode, bruiseblend) > >   > > That's all I need to do to match what you modified in my shader.

 

This was very Helpful BagginsBill.

I think this is what has been holding those of us who what to do a script back. We are to thickdense to understand How to add the P6 Materila Room Nodes as lines of text in the script. Your explainations make it much easier.

Definitely needs work here, size is off and coloring is wrong. But at least it shows what I am attempting to do with the Vericose Vein idea. Vericose Veins and SSS would certainly go along way to making and Older Persons' Skin.

I tried it on G2 James. The positioning was off, so I would say the Maps are different between P6James and G2 James.

Cheers

DR

 

 

"That government is best which governs the least, because its people discipline themselves."
Thomas Jefferson


Dead_Reckoning ( ) posted Sun, 20 August 2006 at 4:49 PM

Quote - Parmatic dial settings:

Bruise U: .57
Bruise V: .6
Bruise R: .07
Bruise Blend: .5
Skin Hue: 1
Skin Value: .7
SSS: 1
Specular_Value: .1
Freckles:Blending: .8
SKin:Saturation: 1.1
Blinn:Reflectivity: .5

 

Thanks

The script I have been working with was a Matmatic one. Can you show what i need to do to turn it into a Parmatic script with these values please?

Or

Can I cut and paste the JessiEyeMakeup Parmatic Script?

Thanks

DR

 

"That government is best which governs the least, because its people discipline themselves."
Thomas Jefferson


Dead_Reckoning ( ) posted Sun, 20 August 2006 at 5:04 PM

Quote - So to make the nodes you showed me in your screen shot:

I'll do this step by step instead of one big statement

First the noise - since all the parms are default value, I need no arguments

myNoiseNode = Noise()
#The granite has the noise plugged into the first parameter and all the rest are default:
myGraniteNode = Granite(myNoiseNode)

#The granite was plugged into the blender second color (for the bruise):
s.Diffuse_Color = Blend(s.Diffuse_Color, bruiseclr * myGraniteNode, bruiseblend)

 

That's all I need to do to match what you modified in my shader.

So, this shoiuld be the script then? I ran it and had no errors. 13 Nodes.

=========================

##Bagginsbill's Bruise Script

load Jame's face image here

clr = ImageMap(":Runtime:Textures:Poser 6 Textures:James_Face_Color.jpg")

apply to diffuse color of surface, also set soft specular

s = Surface(clr, 1, 1, .2, .5)

Try out a bruise color

bruiseclr = Color(.5, .2, .7)

This is roughly where I want the bruised centered.

cx = .4
cy = .45

Going to use a simple circular pattern to blend in the bruise.

x = U - cx
y = V - cy

In r, I'm putting the distance from the cx cy position.

r = sqrt(x * x + y * y)

We'll put the range of the bruise in this variable, br.

br = .1

Now I'll create the blender input using the Scale function.

A certain distance (br) from the center, the bruise is completely gone - this distance

goes in the second argument so that Scale produces 0 when r = br.

We'll make the bruise come full on at half the br distance, so br/2 goes in the third

argument - this tells the Scale when to produce a 1.

bruiseblender = Scale(r, br, br / 2)

First the noise - since all the parms are default value, I need no arguments

myNoiseNode = Noise()
#The granite has the noise plugged into the first parameter and all the rest are default:
myGraniteNode = Granite(myNoiseNode)

#Finally I simpley blend the original Diffuse_Color (from above) with the bruise color
#using the bruiseblender I just calculated.
#The granite was plugged into the blender second color (for the bruise):
s.Diffuse_Color = Blend(s.Diffuse_Color, bruiseclr * myGraniteNode, bruiseblender)

====================================

Thanks Very much

DR

 

"That government is best which governs the least, because its people discipline themselves."
Thomas Jefferson


bagginsbill ( ) posted Sun, 20 August 2006 at 5:30 PM · edited Sun, 20 August 2006 at 5:41 PM

The script I have been working with was a Matmatic one. Can you show what i need to do to turn it into a Parmatic script with these values please?

Let's be clear: A Matmatic script is not a shader. It produces a shader. Parmatic is a script, but it doesn't read scripts. It looks at shaders and creates parameters for them, then keeps the shader in sync with the parameter settings. So your question is invalid - you do not make a Parmatic script - there is no such thing.

However, you do make your shader into a Parmatic one, by doing something very simple in Matmatic.

Rather than give you a full explanation of all the Parmatic trickery, let's just use a very simple scheme that works pretty well.

In your script, wherever you have a number, and you want to make that number be a Parmatic parameter, just wrap it in an adder and label it a special way.

For example, up above we have this statement:

cx = .4

This defines what we're using for the center x value of the bruise algorithm. We can Parmaticize it like this:

cx = Add(.4).labelled("PM:Bruise CX")

What I did there, was I made an Add node, with only one argument, .4. The second argument is 0, and since .4+0 is .4, it doesn't matter. Then I labelled it - that is the magic for Parmatic - the label. If the label begins with "P" "M" and a colon, then that node is important and gets a parameter. Simple isn't it?

Now suppose you wanted to make a granite node with a Parmatic adjustable scale, initially at .25.

First, this is how you'd create the node in Matmatic.

myGranite = Granite(Scale=.25)

Now we Parmaticize the .25

myGranite = Granite(Scale=Add(.25).labelled("PM:Granite Scale"))

Get it?

I don't have to do it in one line: I can do it in two steps for easier reading:

graniteScale = Add(.25).labelled("PM:Granite Scale")
myGranite = Granite(Scale = graniteScale)

Or yet another way:

graniteScale = Add(.25)
graniteScale.label = "PM:Granite Scale"
myGranite = Granite(Scale = graniteScale)

Lots of options - pick the style you like.

 


Renderosity forum reply notifications are wonky. If I read a follow-up in a thread, but I don't myself reply, then notifications no longer happen AT ALL on that thread. So if I seem to be ignoring a question, that's why. (Updated September 23, 2019)


bagginsbill ( ) posted Sun, 20 August 2006 at 5:37 PM

So, this shoiuld be the script then? I ran it and had no errors. 13 Nodes.

Yeah that looks right. Just load it and look at it.

In general, you will get really good at Matmatic shader writing if what you do is build up small and look at the resulting shader tree.

Try simple things like:

Surface(Granite())

Surface(GREEN * Granite())

Surface(Blend(GREEN * Granite(), .5 * Spots(RED, BLUE), .5))

Do fifty of these, getting progressively more complicated expressions. Type in every example I did in the manual and look at the resulting shader tree.

I spent 15 full days writing the manuals and all those examples. You should be able to go through them one by one, making a file of your own, reproduce my results, than modify each a little bit. It's like anything else, you need to build new connections in your brain, and that comes from practice, especially repetition.

After a while bells will ring, lights will come on, and you will wonder how you didn't see the connections right away as scripts.

 


Renderosity forum reply notifications are wonky. If I read a follow-up in a thread, but I don't myself reply, then notifications no longer happen AT ALL on that thread. So if I seem to be ignoring a question, that's why. (Updated September 23, 2019)


Dead_Reckoning ( ) posted Sun, 20 August 2006 at 5:56 PM

Quote - The script I have been working with was a Matmatic one. Can you show what i need to do to turn it into a Parmatic script with these values please?

Let's be clear: A Matmatic script is not a shader. It produces a shader. Parmatic is a script, but it doesn't read scripts. It looks at shaders and creates parameters for them, then keeps the shader in sync with the parameter settings. So your question is invalid - you do not make a Parmatic script - there is no such thing.

However, you do make your shader into a Parmatic one, by doing something very simple in Matmatic.

 

Thanks again. I never really understood what you were trying to teach us the first go around with Parmatic.

With these examples, I certainly understand it much better.

Cheers

DR

 

"That government is best which governs the least, because its people discipline themselves."
Thomas Jefferson


Dead_Reckoning ( ) posted Sun, 20 August 2006 at 6:00 PM

Quote - Do fifty of these, getting progressively more complicated expressions. Type in every example I did in the manual and look at the resulting shader tree.

I spent 15 full days writing the manuals and all those examples. You should be able to go through them one by one, making a file of your own, reproduce my results, than modify each a little bit. It's like anything else, you need to build new connections in your brain, and that comes from practice, especially repetition.

After a while bells will ring, lights will come on, and you will wonder how you didn't see the connections right away as scripts.

 

Understood. In the beginning I never really understood the now defunct Microsoft DirectX Direct Animation scripts either. After doing a 100 or more it sunk in so that many things became routine.

Thanks for all the help Bagginsbill.

DR

 

"That government is best which governs the least, because its people discipline themselves."
Thomas Jefferson


Dead_Reckoning ( ) posted Sun, 20 August 2006 at 9:36 PM

file_351648.jpg

Thank you very much .

I have something off a bit with the Bruising, but the rest is great.

DR

 

 

Quote - DR Here ya go. Attached is JamesDemo.mm1.txt.

IT IS NOT A DOC FILE - I HAD TO RENAME IT TO MAKE RENDO LOAD IT.

PLEASE REMOVE .doc FROM THE NAME>

It is a trivial conversion of the Jessi demo to use the James texture files. I also added the bruise code above as you requested. The skin features and bruise features all have Parmatic dials, so you can adjust him to your liking.

Will post an image next.

"That government is best which governs the least, because its people discipline themselves."
Thomas Jefferson


  • 1
  • 2

Privacy Notice

This site uses cookies to deliver the best experience. Our own cookies make user accounts and other features possible. Third-party cookies are used to display relevant ads and to analyze how Renderosity is used. By using our site, you acknowledge that you have read and understood our Terms of Service, including our Cookie Policy and our Privacy Policy.