Latexluv opened this issue on Jun 04, 2010 · 182 posts
Latexluv posted Fri, 04 June 2010 at 11:17 PM
I have a shader that BB made that is for stockings, but this presupposes you are using it over V4's legs. I am just looking for a sheer nylon material that I could apply to other clothing items, say like a jacket or blouse.
"A lonely climber walks a tightrope to where dreams are born and never die!" - Billy Thorpe, song: Edge of Madness, album: East of Eden's Gate
Weapons of choice:
Poser Pro 2012, SR2, Paintshop Pro 8
RobynsVeil posted Fri, 04 June 2010 at 11:32 PM
Just playing with the idea: apply the shader on whatever material you want to make nylon, replacing the skin colourMap with the ColourMap of the obj material. If it is already a smooth material, it should work. If not, just use a colour instead of the colourMap (SimpleColor() node).
Monterey/Mint21.x/Win10 - Blender3.x - PP11.3(cm) - Musescore3.6.2
Wir sind gewohnt, daß die Menschen verhöhnen was sie nicht verstehen
[it is clear that humans have contempt for that which they do not understand]
Latexluv posted Fri, 04 June 2010 at 11:37 PM
I tried plugging the Tile set up that BB showed us on a mesh/net shader. I did not like the result. I'm afraid I must rely on experts like you to come along and figure it out. Or show me a screen shot of a shader I can build. Or, ask someone to separate a shader. BB gave away a shader that was water puddles on cement. I love the shader and would like to have just the cement/pavement part of it. I do not know how to separate out the puddles from that shader. Maybe you have an idea of what to do or can show me?
"A lonely climber walks a tightrope to where dreams are born and never die!" - Billy Thorpe, song: Edge of Madness, album: East of Eden's Gate
Weapons of choice:
Poser Pro 2012, SR2, Paintshop Pro 8
RobynsVeil posted Sat, 05 June 2010 at 12:16 AM
Actually, I've been playing with that Nylons shader of Bill's and have made it GC... I think. I'm just clearing my Poser drive of old stuff (going on to my external) so give me a few minutes and I'll see what I can come up with.
Expert? Not by a long shot... but thank you for the compliment. I base my stuff on a Sherlock Holmes quote - used to be obsessed with Holmes, ideal man, I thought - which went:
"What one can invent, another can discover."
Generally holds true for just about everything except matmatic-generated shaders, since matmatic is very efficient and creates shortcuts / alternative node sets to what you would think.
Monterey/Mint21.x/Win10 - Blender3.x - PP11.3(cm) - Musescore3.6.2
Wir sind gewohnt, daß die Menschen verhöhnen was sie nicht verstehen
[it is clear that humans have contempt for that which they do not understand]
Latexluv posted Sat, 05 June 2010 at 12:20 AM
I'll see what you come up with! I haven't had any luck with anything in my Materials folder, BB's shaders or otherwise (and I have a huge Materials folder).
"A lonely climber walks a tightrope to where dreams are born and never die!" - Billy Thorpe, song: Edge of Madness, album: East of Eden's Gate
Weapons of choice:
Poser Pro 2012, SR2, Paintshop Pro 8
Latexluv posted Sat, 05 June 2010 at 12:45 AM
"A lonely climber walks a tightrope to where dreams are born and never die!" - Billy Thorpe, song: Edge of Madness, album: East of Eden's Gate
Weapons of choice:
Poser Pro 2012, SR2, Paintshop Pro 8
RobynsVeil posted Sat, 05 June 2010 at 12:52 AM
So, what you're after is the same material with thickness of like what stockings are made of? Moving-Of-Files is done, so I'll have a go now...
Monterey/Mint21.x/Win10 - Blender3.x - PP11.3(cm) - Musescore3.6.2
Wir sind gewohnt, daß die Menschen verhöhnen was sie nicht verstehen
[it is clear that humans have contempt for that which they do not understand]
Latexluv posted Sat, 05 June 2010 at 12:55 AM
Yes, very much so. I have at least 3 shirts like of this type of material in my real closet here at home that I use as over shirts when I go out in the summer.
"A lonely climber walks a tightrope to where dreams are born and never die!" - Billy Thorpe, song: Edge of Madness, album: East of Eden's Gate
Weapons of choice:
Poser Pro 2012, SR2, Paintshop Pro 8
RobynsVeil posted Sat, 05 June 2010 at 4:40 AM
Hmmmm, interesting.
Right. Had some issues with the mesh that needed sorting out. I can't really divulge whose mesh this is, but I had to add a edge-loop to the part right under the bust (bra bit) to get rid of some artefact, apparently caused by Poser's smoothing thingie. So, I took the mesh into Blender, added the loop, exported back out to obj and imported into Poser and turned it back into a figure with Obj2Cr2. One incredibly brilliant tool!
So, loaded the tweaked shader on the slip-portion of the nightie... the rest has been GCed but nothing else was done to the rest of the garment:
So, is this nylon?? It kind-of looks like it, but would you be happy with it? Or is this image the result of applying a material node set designed for another type of mesh? Well, legs... you know.
Anyway, the tweak is up for grabs, if you want to have a good laugh. Oh, and the mesh probably needs a bit more detailing where it bends: you can see artefact (those vertical lines) developing there.
Monterey/Mint21.x/Win10 - Blender3.x - PP11.3(cm) - Musescore3.6.2
Wir sind gewohnt, daß die Menschen verhöhnen was sie nicht verstehen
[it is clear that humans have contempt for that which they do not understand]
Latexluv posted Sat, 05 June 2010 at 4:57 AM
Sorry to hear you had so much mesh trouble! The shirt I'm using for my image has a problem with a bit of poke through at one elbow. Oh well. What I see in your image is close. Needs to be more transparent though. But it could be better than the simple thing I'm using at the moment. I'd like to try it out. In the meantime, I was working on my lighting for the scene I'm planning. Thank you so much for your efforts!
"A lonely climber walks a tightrope to where dreams are born and never die!" - Billy Thorpe, song: Edge of Madness, album: East of Eden's Gate
Weapons of choice:
Poser Pro 2012, SR2, Paintshop Pro 8
bagginsbill posted Sat, 05 June 2010 at 7:33 AM
I'll help, but not today. Big family gathering this weekend at my house.
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)
Latexluv posted Sat, 05 June 2010 at 4:30 PM
Hope you have a great time with the family, BB!
"A lonely climber walks a tightrope to where dreams are born and never die!" - Billy Thorpe, song: Edge of Madness, album: East of Eden's Gate
Weapons of choice:
Poser Pro 2012, SR2, Paintshop Pro 8
bagginsbill posted Wed, 09 June 2010 at 2:43 PM
Hey so I'm back and have time to do Poser stuff.
What are we trying to make here - a standalone homogenous sheer fabric, 100% procedural? Or does it need to use textures? Areas with variable transparency, such as a combination shader that does opaque lacy in some areas and sheer in others? Or is it like the leg/nylon shader I posted a long time ago where there is one mesh but the appearance of two surfaces near each other?
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)
Latexluv posted Wed, 09 June 2010 at 3:41 PM
Well, what I originally wanted was a sheer, nylon like material to apply to a shirt or jacket. I actually own two or three shirts like this that I wear as an over shirt in the summer. But others may like the idea of being able to add lacy trancparencies to the shader for items like frilly underwear.
"A lonely climber walks a tightrope to where dreams are born and never die!" - Billy Thorpe, song: Edge of Madness, album: East of Eden's Gate
Weapons of choice:
Poser Pro 2012, SR2, Paintshop Pro 8
bagginsbill posted Wed, 09 June 2010 at 6:44 PM
This is very interesting. Long ago, when I built the nylon/leg shader, I did it by eye, the way everybody does. It took a lot of guesswork and never quite met my expectations for realism.
This time, as I always do now, I approached it from the physics first.
I made a simplifying assumption that the fibers are simply tiny cylindrical tubes, arranged in a criss-cross pattern. I also assumed (without too much loss of generality) that the orientation of the fibers is strictly horizontal and vertical. That isn't quite true, because rotating the cloth produces variety in the angles formed between the cloth surface and the viewer. This behavior is called anisotropy and I could deal with it if I could write shaders in software, instead of using the nodes, which limit the sorts of math I can do. But I think that I'm getting 95% correct results regardless.
Do you want to see the physics or no? It's very simple trigonometry, but I don't want to spoil the fun with too much "gobbledygook", as some people are offended by my brain, apparently.
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 Wed, 09 June 2010 at 6:45 PM
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 Wed, 09 June 2010 at 6:47 PM
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 Wed, 09 June 2010 at 6:51 PM
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 Wed, 09 June 2010 at 6:53 PM
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 Wed, 09 June 2010 at 6:56 PM
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)
richardson posted Wed, 09 June 2010 at 7:13 PM
I'd like to see the math.. and it's not like the forums are suffering from too many topics lately.
Latexluv posted Wed, 09 June 2010 at 7:50 PM
Sorry, I was out to the store. I'm liking what I see so far BB!
"A lonely climber walks a tightrope to where dreams are born and never die!" - Billy Thorpe, song: Edge of Madness, album: East of Eden's Gate
Weapons of choice:
Poser Pro 2012, SR2, Paintshop Pro 8
Sentinelle posted Wed, 09 June 2010 at 8:58 PM
Quote -
Do you want to see the physics or no? It's very simple trigonometry, but I don't want to spoil the fun with too much "gobbledygook", as some people are offended by my brain, apparently.
Yes please. I'd like to see the physics.
bagginsbill posted Wed, 09 June 2010 at 9:22 PM
Ready?
Let's consider cloth fibers that are 100% opaque. Let's also consider only the vertical fibers arranged in a cloth that is straight vertically, but curved horizontally. We can model these using a bunch of tubes arranged in a semi-circle, like this.
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 Wed, 09 June 2010 at 9:25 PM
The gaps are largest when the "surface" faces the camera. As the surface curves away, the tubes appear closer together, decreasing the gaps.
On the far left and right, the tubes actually overlap and there are no gaps in those areas.
Now when seen from a normal distance, the fibers in a cloth are so tiny we can't even see them individually, the way we see these tubes. But the same thing is happening. The gaps between the fibers let us see what is behind. The size of the gaps, relative to the size of the tubes, changes as the surface angles away, until the point at which there are no gaps at all, and the cloth becomes opaque.
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 Wed, 09 June 2010 at 9:27 PM
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 Wed, 09 June 2010 at 9:28 PM
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 Wed, 09 June 2010 at 9:29 PM
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 Wed, 09 June 2010 at 9:35 PM
So what is the math of these gaps?
It's pretty simple. I'll just say what it is, but if somebody asks, I can make a trigonometry diagram to show how I derived this formula.
Let's let D represent the "density" of the tubes, expressed as a fraction. For example, suppose the tubes are 1 millimeter in diameter, and spaced so there is a tube ever 3 millimeters. Then the density is 1/3. Suppose the diameter is 2 milimeters and there is a tube every 4 millimeters. Then the density is 2/4 or .5.
Now we also need to consider the angle between the normal of the "surface" comprising these tiny tubes and the observer. Let's call that angle alpha.
Ready?
The opacity of the surface is
D / cos(alpha)
That's pretty f'ing simple, right?
Except what is opacity? Opacity is the complement of transparency. And since we're dealing with Poser, you may think we need to convert this to transparency. Well, strangely, when you plug a node into the Poser Surface Transparency channel, the data is actually interpreted as opacity, where 0 is completely not opaque and 1 is completely opaque. That's why transparency maps are 1 (white) for opaque, and black (0) for transparent. They are not transparency maps at all. They are opacity maps. But I won't bother trying to make everybody start using the right word for those.
Anyway, the shader to produce this effect is unbelievably simple.
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 Wed, 09 June 2010 at 9:38 PM
In Poser, the Edge_Blend node internally calculates and uses the cosine of the angle of incidence. If you set the parameters to white, black, and 1, then the cos(alpha) is actually what it generates as its output. How nice!
So then I use a Math:Div node to divide the desired density by the cos(alpha). In this case, I used a density of .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 Wed, 09 June 2010 at 9:39 PM
If you go back to the tubes you can see that this sure does look like the same thing, only with microscopic tubes.
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 Wed, 09 June 2010 at 9:41 PM
It's going to take me a little while to make the next demo. If anybody has questions, go ahead and ask.
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)
richardson posted Wed, 09 June 2010 at 10:05 PM
I'm kind of amazed. I know patterning will up the complexity. Fresnel, specular... Especially if you set the fibers at a severe angle to each other...
Winterclaw posted Wed, 09 June 2010 at 10:10 PM
I don't know if it's what you are looking for but I came up with a stockingish material here (see the last version) and I can share the mat with you if you like.
WARK!
Thus Spoketh Winterclaw: a blog about a Winterclaw who speaks from time to time.
(using Poser Pro 2014 SR3, on 64 bit Win 7, poser units are inches.)
bagginsbill posted Wed, 09 June 2010 at 10:27 PM
The gaps are always the same, no matter where the curve is. The opacity is exactly what the "density" of the fibers is. If they are 30%, then 30% of view through the cloth is blocked, and 70% is open.
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 Wed, 09 June 2010 at 10:27 PM
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 Wed, 09 June 2010 at 10:27 PM
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 Wed, 09 June 2010 at 10:29 PM
So - what to do about both sets of fibers.
Observe how the horizontal ones interrupt the gaps from the vertical ones.
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 Wed, 09 June 2010 at 10:30 PM
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 Wed, 09 June 2010 at 10:41 PM
Consider one "cell" of the pattern of tubes. The horizontal tube covers part of that cell. The area it covers is exactly the density value, i.e. if the tube is 30% density, then 30% of the cell is covered by the tube. The remaining 70% (1 - .3) is covered by the vertical tube. Of that, the coverage is based on the opacity given in the first part.
D / cos(alpha)
So the combined effect is:
D + (1 - D) * D / cos(alpha)
Consider a 50% density, where D = .5. When the surface faces the camera, cos(alpha) is 1, so the opacity is:
.5 + (1 - .5) * .5 / 1
which reduces to
.75
This makes sense, right? If each tube is half of the cell spacing size, then the little window left over is exactly half of half, or .25. The transparency is the complement of opacity. Since the window is 1/4 the area, and the tubes cover 3/4 the area, the opacity is .75.
What if the density is .3? Then the central (lowest) opacity is:
.3 + (1 - .3) * .3
= .3 + .21
= .51
Now whenever we have formula in this shape:
k * a + (1-k) * b
we should recognize that this is a weighted sum of a and b, with the relative weights given by k.
Any time we need a weighted sum, we can use a Blender node. The Blender node implements the formula:
(1 - Blending) * Input_1 + Blending * Input_2
In this case, we want Blending = D, Input_2 = 1 (or white), and Input_1 = the original formula from part 1.
This arrangement is shown in the attached screen shot.
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 Wed, 09 June 2010 at 10:43 PM
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 Wed, 09 June 2010 at 10:45 PM
It's still missing specular effects, and can only deal with opaque fibers, but it's pretty good just as it is.
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)
richardson posted Wed, 09 June 2010 at 10:58 PM
I did not know Poser could handle this kind of micro scale. I want to see how IDL can handle it.
Can Parmatic produce an "opaque" border or something with a pattern to frame this shader?
Nice work,
gotta get up in 5 hours
RobynsVeil posted Wed, 09 June 2010 at 11:03 PM
This is what I see as genius: the genius of simplification.
Simple, you say? Well, yeah, sure, but who would have thunk it up? You took 24 hand-placed shader nodes and turned it into it into 4... with maths.
Another tick for maths. This is incredible stuff, Bill... THANK you!
Oh, and I'm pretty sure I got it... that Add() node Value_1 drives the whole thing, right? .5 density is like 75% opacity, .3 density is like 51% opacity, which is 49% transparency? etc...
You could make that a PM: Opacity node - forcing people to think in terms of those transparency channels as opacity channels.
Monterey/Mint21.x/Win10 - Blender3.x - PP11.3(cm) - Musescore3.6.2
Wir sind gewohnt, daß die Menschen verhöhnen was sie nicht verstehen
[it is clear that humans have contempt for that which they do not understand]
bagginsbill posted Wed, 09 June 2010 at 11:04 PM
Strangely, while Poser should have but does not have an anisotropic opacity node, it does have an anisotropic specular node. It is aptly named Anisotropic and found in the Specular branch of nodes.
I add one like this.
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 Wed, 09 June 2010 at 11:05 PM
I have a rim light coming in from the left and the anisotropic node goes a little wonky. I suspect the formula it implements isn't quite right. I have a partial solution, but I must continue to experiment to tone that down.
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 Wed, 09 June 2010 at 11:09 PM
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 Wed, 09 June 2010 at 11:09 PM
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 Wed, 09 June 2010 at 11:13 PM
Quote - I did not know Poser could handle this kind of micro scale. I want to see how IDL can handle it.
Can Parmatic produce an "opaque" border or something with a pattern to frame this shader?
Nice work,
gotta get up in 5 hours
No parmatic doesn't do any shader effects. Did you mean matmatic? Then yes. I'll be getting to that in part 5.
I have to get to bed myself, so I'll be pausing for now. But just so you know what is coming, so far I've only dealt with opaque fibers. But what if the fibers themselves are partially transparent? Nylon fibers are not opaque. This won't look like nylon until we deal with that. Part 3 will be translucent horizontal fibers. Part 4 will be translucent vertical fibers.
We'll be up to around 20 nodes by then.
Then part 5 will be how to introduce borders and lace into the equation.
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)
RobynsVeil posted Wed, 09 June 2010 at 11:14 PM
Quote - So far all I did was black cloth. To support colors, turn on the Diffuse_Value and hook it up to the Anisotropic node with a subtract node, to maintain the principle of Conservation of Energy.
Dumb question:
Anisotropic out -> Subtract(1,1) -> Diffuse_Color is CoE, right?
[Q] Why Math_Function Subtract() and not Color_Math Subtract? Is Specular info numeric only?
Monterey/Mint21.x/Win10 - Blender3.x - PP11.3(cm) - Musescore3.6.2
Wir sind gewohnt, daß die Menschen verhöhnen was sie nicht verstehen
[it is clear that humans have contempt for that which they do not understand]
bagginsbill posted Wed, 09 June 2010 at 11:15 PM
Quote - This is what I see as genius: the genius of simplification.
Simple, you say? Well, yeah, sure, but who would have thunk it up? You took 24 hand-placed shader nodes and turned it into it into 4... with maths.
Another tick for maths. This is incredible stuff, Bill... THANK you!
You're welcome. I knew you'd like this one.
Quote - Oh, and I'm pretty sure I got it... that Add() node Value_1 drives the whole thing, right? .5 density is like 75% opacity, .3 density is like 51% opacity, which is 49% transparency? etc...
Correct. I forgot to explain that since I needed the density in two places, I pulled it out into its own node, so you'd only have to set the value once.
Quote -
You could make that a PM: Opacity node - forcing people to think in terms of those transparency channels as opacity channels.
Yep - did so already. I only built part 1 and 2 by hand. Then I went to matmatic for the next parts, and of course there are PM: nodes.
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 Wed, 09 June 2010 at 11:18 PM
Quote - > Quote - So far all I did was black cloth. To support colors, turn on the Diffuse_Value and hook it up to the Anisotropic node with a subtract node, to maintain the principle of Conservation of Energy.
Dumb question:
Anisotropic out -> Subtract(1,1) -> Diffuse_Color is CoE, right?
[Q] Why Math_Function Subtract() and not Color_Math Subtract? Is Specular info numeric only?
You've found one of my cheats.
I really am not interested in the specular color - just its luminance. And truthfully, this is not a perfect implementation of CoE. What I really need is the raw specular reflectance calculated inside that node, not its final color that comes out. But there's no node that will do that. So I make the best of a bad situation.
As has been brought up many times before, if I could get at the Poser source code, I could fix the material system quite a bit.
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)
RobynsVeil posted Wed, 09 June 2010 at 11:20 PM
Thank you, Bill... have a good sleep.
Monterey/Mint21.x/Win10 - Blender3.x - PP11.3(cm) - Musescore3.6.2
Wir sind gewohnt, daß die Menschen verhöhnen was sie nicht verstehen
[it is clear that humans have contempt for that which they do not understand]
EnglishBob posted Thu, 10 June 2010 at 6:17 AM
More rockin' Billstuff. Watching with interest.
Quote - As has been brought up many times before, if I could get at the Poser source code, I could fix the material system quite a bit.
Next time Smith Micro issue one of their questionnaires, I must remember to make that suggestion. If we all do it, maybe it will happen...
ice-boy posted Thu, 10 June 2010 at 7:27 AM
fantastic BB.
but the question is to the poster who opened the thread. are you sure you want to render IDL,raytraced shadows with transparency?
if we would have rendermans deep shadows this wouldnt be such a problem. but here? uhhhhhh this will get interesting ;)
Sentinelle posted Thu, 10 June 2010 at 8:28 PM
Quote - So what is the math of these gaps?
It's pretty simple. I'll just say what it is, but if somebody asks, I can make a trigonometry diagram to show how I derived this formula.
Let's let D represent the "density" of the tubes, expressed as a fraction...
Now we also need to consider the angle between the normal of the "surface" comprising these tiny tubes and the observer. Let's call that angle alpha.
Ready?
The opacity of the surface is
D / cos(alpha)
...
BB, I would like to see the trigonometry diagram showing how you derived the formula.
Sentinelle posted Thu, 10 June 2010 at 8:37 PM
Quote - ...
In Poser, the Edge_Blend node internally calculates and uses the cosine of the angle of incidence. If you set the parameters to white, black, and 1, then the cos(alpha) is actually what it generates as its output. How nice!
...
BB, I'm a little lost. How do white, black, and 1 end up generating the cosine of alpha in the Edge_Blend node?
bagginsbill posted Thu, 10 June 2010 at 10:04 PM
Quote - > Quote - ...
In Poser, the Edge_Blend node internally calculates and uses the cosine of the angle of incidence. If you set the parameters to white, black, and 1, then the cos(alpha) is actually what it generates as its output. How nice!
...
BB, I'm a little lost. How do white, black, and 1 end up generating the cosine of alpha in the Edge_Blend node?
I'll need a little time to produce the diagram, but meanwhile I'll answer this question.
The answer is I formed several hypotheses about how Edge_Blend works, designed some tests to distinguish between the possibilities, and thereby discovered exactly what it does.
We know from the start that the EB node interpolates between two colors; Inner_Color and Outer_Color. Interpolation (or Blending) can be done a number of ways, but the most obvious is linear interpolation. In fact, this is what the Blender node does.
Blender(a, b, f) is:
(1-f) * a + f * b
As I said in a previous post, this is also called a weighted sum. The weight given to "a" versus "b" is determined by f. When f is 0, all you get is "a". When f is 1, all you get is "b". When f is .5, we expect the result to be an average of a and b. This is easily verified by examining the formula for those cases.
f = 0: (1-0) * a + 0 * b = 1 * a + 0 = a
f = 1: (1-1) * a + 1 * b = 0 + b = b
f = .5: (1 - .5) * a + .5 * b = .5 * a + .5 * b = .5 * (a + b) = (a + b) / 2
An interesting special case of the Blender node, one we'll get to at the end, is when a = 0 and b = 1.
If a = 0 and b = 1, then we get:
(1-f) * a + f * b
= (1-f) * 0 + f * 1
= f
The relevance of this is about to be revealed, because I'm going to show how, hidden inside, the value of f is cos(alpha).
Now the Edge_Blend node is actually a Blender node with the factor, f, generated internally. The question is, how is it generated?
There are only two reasonable guesses. The angle of incidence, alpha, could be used, or the cosine of the angle, cos(alpha).
The angle itself is the obvious one, and we could assume that if the angle is expressed from 0 to 90, that f is simply alpha/90. Thus when alpha is 0, f = 0. When alpha is 90, f = 1. This would be a reasonable way to go, except that Poser doesn't actually know the angle, at least not easily.
Far easier for Poser is to calculate the cosine of the angle. I don't know if you are familiar with vector math, but it turns out that given two vectors, P and Q, the cosine of the angle between them is trivially given by computing the dot product of P and Q, as long as the vectors are unit length. In math notation, you actually write a dot between them, but I don't know how to type such a thing, so I'll just say P dot Q.
So - why is P dot Q so cheap? Because it is simply:
P.x * Q.x + P.y * Q.y + P.z * Q.z
That's three multiplies and two adds - pretty much free in the world of 3D math.
Given the surface normal, N, which is needed to do any kind of lighting, and the normalized vector towards the camera or viewer, V, the cosine of the angle of incidence, alpha, is just N dot V!! Since N and V are already needed for lots of other things, they don't cost anything when an Edge_Blend node is used. .They're already there. And they're normalized, too, because dot products and cosines of angles are used in lots of lighting calculations.
So Poser has a super trivial way to compute cos(alpha) without doing any transcendental math at all. And this very neatly gives a value of 1 when the surface points straight at the camera, and 0 when it points away to the side. Values in between decrease monotonically from 1 to 0.
So I guessed that Poser was somehow using N dot V, or cos(alpha) to blend Inner_Color and Outer_Color.
There is a third parameter, however, called Attenuation. What is this for?
Since I knew something about how angles are used in shaders, particularly in RSL shaders, I knew that many effects are commonly controlled with respect to a cone of influence by taking the cos(alpha) and raise it to some power, i.e.
cos(alpha) ** P
This has the effect of making any modulation based on cos(alpha) become more weighted towards or away from the center, depending on whether P is more or less than 1.
I then hypothesized, tested for, and verified that the full equation of Edge_Blend is:
Blender(Outer_Color, Inner_Color, cos(alpha) ** Attenuation)
Expanding that out we get this for Edge_Blend:
(1 - cos(alpha) ** Attenuation) * Outer_Color + (cos(alpha) ** Attenuation) * Inner_Color
Now: plug in the values I said: Inner_Color =1 (white), Outer_Color = 0 (black) and Attenuation = 1.
(1 - cos(alpha) ** 1) * 0 + (cos(alpha) ** 1) * 1
Reduce all that, and you're left with:
cos(alpha)
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 Thu, 10 June 2010 at 10:22 PM
So let's consider the case when the tubes or fibers are not opaque, but partially transparent.
The attached diagram shows how light has to pass through the cloth at various angles.
When the angle of incidence is 0, the distance that the light must travel is shortest. In fact, it is precisely the thickness of the cloth. This is the first case.
When the angle increases, the distance increases. You can see that in the second case, where the angle is 45 degrees, the distance that the light must pass through is 1.414 (sqrt of 2) times the original distance.
In the third case, at 60 degrees, the distance is twice the original distance.
Now the question is, what effect does this have?
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 Thu, 10 June 2010 at 10:30 PM
Each plane removes some of the light passing through. Let's let T represent the transparency, or the fraction of light that can pass through.
The luminance through one layer is T times the object behind the layer, my checkerboard.
The second does the same, taking what comes in and letting T of that through. So the 2nd layer passes T * T of the light.
The third layer passes T * T * T.
It should be apparent that the Nth layer passes T ** N of the light through.
Now when we model a volume of translucent material with sheets like this, we're letting each sheet represent a slice of the volume. The more of these we use to model the volume, the more transparent each sheet needs to be. Using calculus, if we take the limit as the number of sheets approaches infinity, and the thickness of each slice approaches 0, it exactly models a volume. And in that limit, the effective transparency is T ** D, where D is the distance that the light has to pass through.
If the distance is infinitely long then the amount of light passing through is T to the infinite power, which is 0. But for any distance that is not infinite, then the transparency is greater than 0. So this is interesting. A translucent material of finite thickness cannot block all the light. There is always some non-zero amount that can get through.
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 Thu, 10 June 2010 at 10:35 PM
We're building shaders around opacity, but the distance-based transparency attenuation I explained in the previous post needs transparency, T, not opacity, O.
Remember that I said opacity and transparency are complements of each other.
So: O = 1 - T and T = 1 - O
Remember that the transparency is T ** D, where D is the distance.
T ** D
= (1 - O) ** D
This gives the effective transparency. We need to convert that to opacity to plug into the Poser Surface.
1 - (1 - O) ** D
This is the heart of the shader above. But what is D?
Guess what ... it is 1 / cos(alpha) again.
In the shader, the bottom right node is the desired cloth opacity, O. The rest is the equation:
1 - (1 - O) ** (1 / cos(alpha))
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 Thu, 10 June 2010 at 10:36 PM
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 Thu, 10 June 2010 at 10:44 PM
Now, that shader works fine for the horizontal transparent fibers. As they bend around the curve, we look through more of each fiber, so that the distance we're looking through increases, just as the math above describes.
But what about the vertical fibers?
Now begins part 4.
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 Thu, 10 June 2010 at 10:50 PM
In the center we see through only one layer, and there are gaps.
As we approach the edge, the gaps are eliminated, and they start to overlap. We didn't care about this when they were opaque. But now we have to care.
At first, they only overlap a little, but getting closer to the edge, they overlap more. At some point, we start to have double overlap, where there are places we're looking through three or four tubes. Then four or five, and so on. Eventually, at the very edge, we're looking through many tubes, and they get very dark again, almost opaque. But not quite opaque.
The math for this is ... intense. So I won't show it. The interesting thing about it is that in the statistical sense of a lot of fibers, there are some simplifications we can make. I have made these simplifications in my shader and I'll just demonstrate what it looks like.
I still have a few more tweaks to do to it. When it's ready, I'll publish it.
Now I'll make some demo renders.
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 Thu, 10 June 2010 at 10:56 PM
(Note: There's a little more to this - I have a weave set up as a bump to give it some texture.)
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 Thu, 10 June 2010 at 10:58 PM
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 Thu, 10 June 2010 at 11:00 PM
I really don't know how nylon actually is woven and what the real density is, but it sure looks more like nylon this way. So I'm guessing that nylon is pretty tightly woven and the fibers are far from opaque.
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)
RobynsVeil posted Thu, 10 June 2010 at 11:02 PM
:woot: This is beyond exciting!!! :woot: Oh, the materials that I'm going to play with! :tt1: I just love this, Bill! Thank-you thank-you THANK-YOU!!!
Monterey/Mint21.x/Win10 - Blender3.x - PP11.3(cm) - Musescore3.6.2
Wir sind gewohnt, daß die Menschen verhöhnen was sie nicht verstehen
[it is clear that humans have contempt for that which they do not understand]
bagginsbill posted Thu, 10 June 2010 at 11:02 PM
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 Thu, 10 June 2010 at 11:05 PM
grin
Here's a light brown - the typical color of ordinary hosiery.
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 Thu, 10 June 2010 at 11:06 PM
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 Thu, 10 June 2010 at 11:07 PM
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 Thu, 10 June 2010 at 11:09 PM
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)
GeneralNutt posted Thu, 10 June 2010 at 11:10 PM
In the above examples (excluding the white) there seems to be a seam and tint change under the left arm to the hip. What causes that, is it supposed to be there?
bagginsbill posted Thu, 10 June 2010 at 11:11 PM
This is part 5. Lace.
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)
RobynsVeil posted Thu, 10 June 2010 at 11:11 PM
Quote - In the above examples (excluding the white) there seems to be a seam and tint change under the left arm to the hip. What causes that, is it supposed to be there?
Isn't that in the mesh itself?
Monterey/Mint21.x/Win10 - Blender3.x - PP11.3(cm) - Musescore3.6.2
Wir sind gewohnt, daß die Menschen verhöhnen was sie nicht verstehen
[it is clear that humans have contempt for that which they do not understand]
bagginsbill posted Thu, 10 June 2010 at 11:12 PM
Quote - In the above examples (excluding the white) there seems to be a seam and tint change under the left arm to the hip. What causes that, is it supposed to be there?
Yes the blouse has a seam there, literally it's modeled in. And there are cuffs, 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)
RobynsVeil posted Thu, 10 June 2010 at 11:12 PM
Quote - I have to get to bed soon, but I'll leave you with the teaser.
This is part 5. Lace.
I'll be back for the lace - definitely! You should charge admission, Bill :lol: This is incredible...
Monterey/Mint21.x/Win10 - Blender3.x - PP11.3(cm) - Musescore3.6.2
Wir sind gewohnt, daß die Menschen verhöhnen was sie nicht verstehen
[it is clear that humans have contempt for that which they do not understand]
GeneralNutt posted Thu, 10 June 2010 at 11:13 PM
bagginsbill posted Thu, 10 June 2010 at 11:14 PM
White lace.
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 Thu, 10 June 2010 at 11:16 PM
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)
RobynsVeil posted Thu, 10 June 2010 at 11:21 PM
With each image the imagination spins into overdrive. This is going to be one FANTASTIC weekend. I hope it's as rewarding for you, Bill...
Monterey/Mint21.x/Win10 - Blender3.x - PP11.3(cm) - Musescore3.6.2
Wir sind gewohnt, daß die Menschen verhöhnen was sie nicht verstehen
[it is clear that humans have contempt for that which they do not understand]
Latexluv posted Thu, 10 June 2010 at 11:49 PM
These examples are what I was looking for!
"A lonely climber walks a tightrope to where dreams are born and never die!" - Billy Thorpe, song: Edge of Madness, album: East of Eden's Gate
Weapons of choice:
Poser Pro 2012, SR2, Paintshop Pro 8
RobynsVeil posted Fri, 11 June 2010 at 12:28 AM
You can see why I held off, Latex... when BB is on it, one learns to shut up and wait for it... it's going to exceed the wildest expectations.
This is phenomenally unique... you're not going to find materials designed with the same profound understanding of what the nodes do in the rest of the community.
This isn't just about nylon: it's about how EdgeBlend and Blender and the Opacity channel (misnamed Transparency) work.
That's where the real gold lies. I'm incredibly grateful to BB for sharing this information!
Not to minimise the material shader itself... it's mind-blowing in its simplicity and incredible versatility. The imagination positively reels...
Monterey/Mint21.x/Win10 - Blender3.x - PP11.3(cm) - Musescore3.6.2
Wir sind gewohnt, daß die Menschen verhöhnen was sie nicht verstehen
[it is clear that humans have contempt for that which they do not understand]
EnglishBob posted Fri, 11 June 2010 at 4:00 AM
Quote - I'll leave you with the teaser. This is part 5. Lace.
:jawdrop:
kobaltkween posted Fri, 11 June 2010 at 4:29 AM
pardon, but why would lace be hard once the general shader is in place? if you have an opacity setting, that means you can make the opacity anything you want, right? 0.7, image node, fractal cloud, whatever? or am i missing a complexity?
EnglishBob posted Fri, 11 June 2010 at 5:02 AM
Maybe I'm missing a simplicity. Do please post your own procedural lace shader if you have one.
kobaltkween posted Fri, 11 June 2010 at 5:55 AM
oh, i think we're at cross purposes. so, someone, i can't remember who now, posted that they wanted to know how this might work with an image of lace. but it was after discussing the notion of opacity or transparency as a variable (but before the full explanation). so my point was that once bagginsbill said opacity was a variable, to me there was no need to show it as lace at all. if you give me an equation with O opacity, i'm perfectly content with understanding that O can be anything you want to put there.
that said, maybe there's an aspect to opacity i'm missing, and you'd need to do something more than just define O. maybe you'd want density to vary too, or some other aspect i'm not seeing.
personally, i'm not that into procedural lace, or most generated geometric patterns. i've seen way, way, way too much of it over the years to really appreciate it. there's even tons of it in the marketplace. not built with Poser, but the effect is the same. for me, it's up there with lens flare, heavy drop shadows and other common 2d stuff. it just didn't occur me that's what you meant.
EnglishBob posted Fri, 11 June 2010 at 6:08 AM
Sorry, yes, we probably are at cross purposes. My jaw was dropping at the procedural lace - I assume that it is procedural, knowing BB - and I also assume that was what everyone else was raving about. If it's commonplace stuff then I'm only slightly deflated.
The way that opacity varies with angle should be more complex with lace, because of its construction. I expect the "thick bits" to interact with lighting in a different way to the "thin bits" (don't know the proper lace terminology, I' m sure there is one), and I'm anticipating that BB will have addressed that aspect too.
We'll just have to wait and see. I'm sure the wait will be worthwhile.
richardson posted Fri, 11 June 2010 at 8:02 AM
Excellent. I was hoping for this... lots of questions but,,, I'll wait.
bagginsbill posted Fri, 11 June 2010 at 9:06 AM
Whoops - I may have inadvertantly misled. The lace pattern is not procedural. I'm using a lace transparency map, as Latexluv suggested:
Quote - But others may like the idea of being able to add lacy trancparencies to the shader for items like frilly underwear.
I think I could come up with some sort of procedural lace, but it wouldn't be easy and it wouldn't be as good as real lace. In fact, the lace map I'm using looks to have been made with a procedure and could be improved upon. I'm just doing a demo and I don't have much in the way of lace maps to work with, as I'm not about to buy some just to show how to use it and I can't draw to save my life.
Still - how to connect the lace map to the nylon shader isn't obvious, at least to most people. So part 5 is about how to do that sort of thing.
KK is not missing anything, really. The basic idea is to modulate the density and opacity and shine and bump with the lace map. But how to modulate it, how to make one map work for bump and all those other things, which actually require a slightly different map but can be done with one map and some math, is what part 5 will be about.
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 Fri, 11 June 2010 at 9:18 AM
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 Fri, 11 June 2010 at 9:19 AM
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 Fri, 11 June 2010 at 9:20 AM
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)
LAJ1 posted Fri, 11 June 2010 at 9:49 AM
Amazing stuff, jumping on board this thread..
bagginsbill posted Fri, 11 June 2010 at 10:38 AM
But I want you guys to have something to play with in case I don't get to finishing this shortly.
So here is a prelim version of my BBNylon material file. Save it as BBNylon.mt5 somewhere in your materials folder. It is 68 nodes. Don't be scared. Just use the ones on the left for controlling it.
There are many parameters. We've talked about density and opacity, so that should be clear enough.
To use a lace map, load it into the Lace Map node, and set Enable Lace to 1.
To use a different color on the lace, set Enable Lace Color to 1.
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)
EnglishBob posted Fri, 11 June 2010 at 10:42 AM
Quote - Whoops - I may have inadvertantly misled. The lace pattern is not procedural. I'm using a lace transparency map, as Latexluv suggested
That's cool - there's more than enough here already. It's just that we tend to have high expectations of your appearances on the forum. :)
Thanks for the material. It's nearly time to go home, then I can play...
bagginsbill posted Fri, 11 June 2010 at 10:49 AM
Here it is on some stockings at the default settings.
Sorry about no shadows - I'm in a hurry.
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 Fri, 11 June 2010 at 10:49 AM
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)
Latexluv posted Fri, 11 June 2010 at 3:12 PM
BB thank you so very much! I will gladly play with the preliminary version of this shader!
"A lonely climber walks a tightrope to where dreams are born and never die!" - Billy Thorpe, song: Edge of Madness, album: East of Eden's Gate
Weapons of choice:
Poser Pro 2012, SR2, Paintshop Pro 8
hborre posted Fri, 11 June 2010 at 3:16 PM
Endless possibilities. Thank you.
RobynsVeil posted Fri, 11 June 2010 at 4:25 PM
When you get a change, BB, what I'm much more curious to see is the .mm1, if you're willing to share that. Or did you do all this sans scripting?
Monterey/Mint21.x/Win10 - Blender3.x - PP11.3(cm) - Musescore3.6.2
Wir sind gewohnt, daß die Menschen verhöhnen was sie nicht verstehen
[it is clear that humans have contempt for that which they do not understand]
Latexluv posted Fri, 11 June 2010 at 5:48 PM
I would be interested in the .mm1 also, if you made a matmatic file for this excersize. I have completed the render I that started me on this thread. I'll post it in a moment.
"A lonely climber walks a tightrope to where dreams are born and never die!" - Billy Thorpe, song: Edge of Madness, album: East of Eden's Gate
Weapons of choice:
Poser Pro 2012, SR2, Paintshop Pro 8
Latexluv posted Fri, 11 June 2010 at 5:53 PM
"A lonely climber walks a tightrope to where dreams are born and never die!" - Billy Thorpe, song: Edge of Madness, album: East of Eden's Gate
Weapons of choice:
Poser Pro 2012, SR2, Paintshop Pro 8
Winterclaw posted Fri, 11 June 2010 at 5:58 PM
Is nylon supposed to be that shiny?
Otherwise looks nice.
WARK!
Thus Spoketh Winterclaw: a blog about a Winterclaw who speaks from time to time.
(using Poser Pro 2014 SR3, on 64 bit Win 7, poser units are inches.)
kobaltkween posted Sat, 12 June 2010 at 1:05 AM
mmm.
ok, then i think i'll be more explicit about my comment. as much as i wanted to verify (and i'm thankful to bagginsbill for doing so), i was also hoping to point something out. a lot of the time i see all sorts of questions about how to vary bagginsbill's work when he's already posted either a material or equation. and there seems to be a basic principle people are missing.
whenever a function is defined by a variable, or a node has certain input, you can always fill it with whatever you want. just the same way you can make diffuse color any mixture of nodes you want, you can make any input any mixture of nodes you want. if someone says to use an equation f(x), x can be anything. just because the examples provided use numbers, that doesn't mean that's all you can use. you can make it a number, a color, an image map, etc.
the only issue is if the new input makes the equation go crazy (become undefined, produce output that makes other parts of the material become undefined, etc.). for instance, the nylon equations are designed to work with values from 0 to 1 for opacity and density. so you don't want to offset your displacement map to indent (be negative), and then use the same output for density and opacity. you want to apply the map to the opacity and density, then adjust it for displacement.
don't get me wrong; i know lots of effects are difficult. but if you want to apply a known control to parameters that have already been defined, it's easy: just use Matmatic to give the parameters the definitions you want or take the nodes you want and plug them into the appropriate inputs set to values of 1 or white. also, it's easier to focus on the general behavior of the function than to think about what it does given specific input. it's generally better to think about the whole set of valid input rather than the infinite possibilities that make up the set. and 9 times out of 10, bagginsbill normalizes his parameters to work from 0 to 1.
LAJ1 posted Sat, 12 June 2010 at 1:02 PM
dumb question, what parameters should I change to adjust the color ?
thx.
bagginsbill posted Sat, 12 June 2010 at 1:45 PM
The color is the product (multiplication) of Diffuse Color and Diffuse Value. If either is 0 (or black) you'll get black.
To get non-black, you need a non-black (non-zero) value in both.
The point of having both is so that you can pick a color in the color picker, and then easily make it brighter or darker by adjusting the diffuse value, without having to resort to the color picker again.
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)
LAJ1 posted Sat, 12 June 2010 at 7:52 PM
many thanks BB.. I was changing PMC Diffuse Color and kept getting black, perfect results now.
Sentinelle posted Sun, 13 June 2010 at 12:08 PM
Quote - ... Far easier for Poser is to calculate the cosine of the angle. I don't know if you are familiar with vector math, but it turns out that given two vectors, P and Q, the cosine of the angle between them is trivially given by computing the dot product of P and Q, as long as the vectors are unit length. In math notation, you actually write a dot between them, but I don't know how to type such a thing, so I'll just say P dot Q.
So - why is P dot Q so cheap? Because it is simply:
P.x * Q.x + P.y * Q.y + P.z * Q.z
...
So Poser has a super trivial way to compute cos(alpha) without doing any transcendental math at all. And this very neatly gives a value of 1 when the surface points straight at the camera, and 0 when it points away to the side. Values in between decrease monotonically from 1 to 0.
...
Bagginsbill, thanks so much for taking the time to explain how the Edge_Blend node works mathematically. I remember having seen the dot product in my distant past while in college. I've always been fascinated by linear algebra and calculus although I'm not very good with math. I'm pleasantly surprised to learn that linear algebra and calculus are used extensively in computer graphics. For those of us who constantly struggle with math, we really need someone like you, BB, to simplify the math involved in CG and to help us understand the beauty of math as it is absolutely essential to digital art.
How does Poser avoid division by zero in D/cos(alpha) when alpha = 90 degrees? Does alpha ever reach 90 in Poser?
Sentinelle posted Sun, 13 June 2010 at 1:00 PM
Quote - ... Now when we model a volume of translucent material with sheets like this, we're letting each sheet represent a slice of the volume. The more of these we use to model the volume, the more transparent each sheet needs to be. Using calculus, if we take the limit as the number of sheets approaches infinity, and the thickness of each slice approaches 0, it exactly models a volume. And in that limit, the effective transparency is T ** D, where D is the distance that the light has to pass through.
If the distance is infinitely long then the amount of light passing through is T to the infinite power, which is 0. But for any distance that is not infinite, then the transparency is greater than 0. So this is interesting. A translucent material of finite thickness cannot block all the light. There is always some non-zero amount that can get through.
BB, would you post your calculus equations? Unfortunately mathematical notations are not part of our standard keyboard although they really should be. Please use whatever notations you wish to indicate their corresponding math symbols, e.g., sum for summation, S for integration (the elongated S), {lim x->0} for limit as x approaches zero, etc.
odf posted Sun, 13 June 2010 at 9:23 PM
Quote -
Far easier for Poser is to calculate the cosine of the angle. I don't know if you are familiar with vector math, but it turns out that given two vectors, P and Q, the cosine of the angle between them is trivially given by computing the dot product of P and Q, as long as the vectors are unit length. In math notation, you actually write a dot between them, but I don't know how to type such a thing, so I'll just say P dot Q.
Just a quick remark: another common notation for the dot product (a.k.a. scalar product) is <P,Q>.
-- I'm not mad at you, just Westphalian.
bagginsbill posted Mon, 14 June 2010 at 2:18 PM
Last week I promised to show how the effective transparency of opaque vertical tubes was calculated.
Here's the first of two diagrams.
The circles marked A and B are two adjacent fibers or tubes, viewed in cross section. Since the cloth repeats this over and over, we need only consider the effective opacity between the center points A and B.
Imagine the camera is at the bottom, looking up.
The fibers are separated by some distance, which we'll call S. In this case, I made S = 1, but it really doesn't matter what it is because everything involved is going to be a ratio.
Now recall that I defined the "density" (D) of the fibers as a fraction of the spacing (S).
In this case, I'm using a Density of .4 or 40% of the spacing. Which means the radius of each fiber is half that, or .2. But between A and B we have an obstruction from both fibers, resulting in a total obstruction of D.
The red bar, marked T, is the area of transmittance - the gap we see between the fibers.
So the ratio of obstruction (which is the defintiion of opacity here) is precisely D, The shaded blue bars show us the area of obstruction in the space between A and B.
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 Mon, 14 June 2010 at 2:27 PM
The yellow slice is tha angle of incidence, alpha. Keeping our point of view of the A tube as before, the B tube has moved along the dotted black arc.
The width of the obstruction is still D. But the width of the gap or transmittance section, T, has been reduced.
The effective spacing because of the viewing angle is marked by the black bar E. It is smaller than the original, true spacing, S. How much smaller is it?
Well, trig tells us that:
cos(alpha) = E / S
Therefore, E = S cos(alpha). But since I made S = 1, that's just cos(alpha).
Now the opacity is the width of the obstructions divided by the width of the effective spacing.
So: opacity = D / E
Voila - effective opacity = D / cos(alpha)
If you're not convinced that the scale doesn't matter, then let's be more explicit.
Letting r represent the actual radius of a fiber, given the chosen density, the radius must be:
r = DS / 2
The actual obstruction is twice the radius, because it's from A and B, so the obstructed area is SD.
And the true effective spacing is S cos(alpha)
The ratio of obstruction to effective spacing is then:
SD / (S cos(alpha))
The S in numerator and denominator cancel, leaving
D / cos(alpha)
This means S doesn't matter.
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 Mon, 14 June 2010 at 2:39 PM
Quote - When you get a change, BB, what I'm much more curious to see is the .mm1, if you're willing to share that. Or did you do all this sans scripting?
I have to publish the new version of matmatic before you can use the script.
Also, I'm still not convinced I've taken everything into account yet. I'm making some simplifying math assumptions that I have yet to justify, except for the fact that the shader looks pretty convincing.
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 Mon, 14 June 2010 at 2:44 PM
Quote - How does Poser avoid division by zero in D/cos(alpha) when alpha = 90 degrees? Does alpha ever reach 90 in Poser?
That's a great question. I took it into account, but first let's see if we can figure out if alpha can ever reach 90.
So - for alpha to be 90, it means that the polygon we're looking at (or micro-polygon - doesn't matter) has to be exactly parallel to the viewing vector. Which means the viewing vector cannot intersect the polygon. Which means the shader will never be called in this case, because by definition the perspective view of such a polygon has zero width, effectively making it invisible. Poser doesn't render invisible things.
However, in practice, due to round-off error, I allow for the possibility that the angle could get so close to 90 that cos(alpha) becomes effectively 0. And if it is 0, then we have a problem, because we can't divide by 0 - the value is undefined.
So in my shader, (not what I showed earlier) I don't actually use 1/cos(alpha). Instead, I add a slight bias, and use 1 / (.00001 + cos(alpha)). This means the denominator never goes to 0, no matter what.
It could go to 0 if cos(alpha) becomes negative, but that would mean the surface is pointing away from the camera - we'd be looking at the back of the polygon.
The truth, though, is that Poser doesn't use cos(alpha), but instead uses the absolute value of the cos(alpha), which means it is never negative, even when we are looking at a back-facing polygon.
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 Mon, 14 June 2010 at 5:02 PM
Quote - BB, would you post your calculus equations? Unfortunately mathematical notations are not part of our standard keyboard although they really should be. Please use whatever notations you wish to indicate their corresponding math symbols, e.g., sum for summation, S for integration (the elongated S), {lim x->0} for limit as x approaches zero, etc.
There are actually two ways to approach this, one with calculus, the other as an example of compound interest.
The compound interest approach:
We are trying to find a formula for a scenario in which a volume is modeled with n slices each with thickness x, and there is an infinite number of them, and each has continuous opacity k. Each slice takes away some light via opacity, and the rest goes to the next slice.
Transmittance (or transparency) is 1 - opacity.
So if we let the unknown continuous opacity be represented by k, we are asking for:
lim as n->infinity of (1 - k/n)^nx
The answer is e^(-kx)
This is exponential decay.
We can get the same answer via differential equations. Starting with the premise that the change in the amount of light transmitted is a decrease that is directly proportional to the amount passing reaching each slice:
dy/dx = -ky
The answer is again y = e^-kx.
Since k is some arbitrary constant, the negation can be absorbed without loss of generality, so the function is e^kx.
Now the question becomes how to figure out what value to use for k.
This is pretty easy.
Assuming you measured the ratio of light entering and leaving a sample of known thickness, X, and you find the effective transparency is T, then
e^kX = T
Take the log of both sides:
kX = ln(T)
Then divide by X
k = ln(T) / X
An example. Suppose you are simulating a material that is 90% transparent at 2 mm.
k = ln(.9)/2
Now the interesting thing about e^kx is it is the same as (e^k)^x.
Which means that e^(ln(.9)/2) can be used as a new base, T (note I'm changing what I mean by "T" now), and you can just use T^x.
In this case, T is .948683298.
If you calculate T^2, i.e. the transmittance for 2 mm, you should get .9, and you do. Furthermore, T^4 (double thickness) will give you .81 (,9 * .9) which makes sense.
You can more directly get to the base T by simply taking the measured transparency and raise it to the power 1/D, where D is the depth of the sample.
.9 ^ (1/2) gives the same answer directly.
Another example:
Suppose you want 15% transparency at 3 inches of thickness.
.15 ^ (1/3) gives T = .793700526
What is the transparency of one inch then?
.793700526 ^ 1 = .793700526
Oh! The base T is the unit transparency. How about 2 inches?
.793700526 ^ 2 = .62996
The final opacity is just the complement of the transmittance, so 1 - T^x is the formula.
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 Mon, 14 June 2010 at 5:18 PM
Note:
This article:
http://en.wikipedia.org/wiki/Exponential_decay
Says:
Quote - The intensity of electromagnetic radiation such as light or X-rays or gamma rays in an absorbent medium, follows an exponential decrease with distance into the absorbing medium.
I was glad to see that. I had calculated from first principles that light had to work this way, but I wasn't sure. But if Wiki says that's how it works, I'm going to assume I did it right.
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)
Sentinelle posted Sun, 20 June 2010 at 1:52 PM
Quote - Well, trig tells us that:
cos(alpha) = E / S
Therefore, E = S cos(alpha). But since I made S = 1, that's just cos(alpha).
Now the opacity is the width of the obstructions divided by the width of the effective spacing.
So: opacity = D / E
Voila - effective opacity = D / cos(alpha)
BB, thanks for drawing the trigonometry diagrams and explaining how you came up with D / cos(alpha) as the effective opacity. Your step by step explanation helped me understand the trig formulas involved, although on my own I would not have been able to derive from them the effective opacity. You are simply brilliant BB.
Sentinelle posted Sun, 20 June 2010 at 2:01 PM
Quote - > Quote - When you get a change, BB, what I'm much more curious to see is the .mm1, if you're willing to share that. Or did you do all this sans scripting?
I have to publish the new version of matmatic before you can use the script.
Also, I'm still not convinced I've taken everything into account yet. I'm making some simplifying math assumptions that I have yet to justify, except for the fact that the shader looks pretty convincing.
I'll be interested in the matmatic script also. I have downloaded matmatic and am now learning how to use it, one tiny step at a time. Through your matmatic, I'm beginning to "see" the beauty of math as it is applied to art. So when is the new version of matmatic going to be published?
Sentinelle posted Sun, 20 June 2010 at 2:17 PM
Quote -
So - for alpha to be 90, it means that the polygon we're looking at (or micro-polygon - doesn't matter) has to be exactly parallel to the viewing vector. Which means the viewing vector cannot intersect the polygon. Which means the shader will never be called in this case, because by definition the perspective view of such a polygon has zero width, effectively making it invisible. Poser doesn't render invisible things.However, in practice, due to round-off error, I allow for the possibility that the angle could get so close to 90 that cos(alpha) becomes effectively 0. And if it is 0, then we have a problem, because we can't divide by 0 - the value is undefined.
So in my shader, (not what I showed earlier) I don't actually use 1/cos(alpha). Instead, I add a slight bias, and use 1 / (.00001 + cos(alpha)). This means the denominator never goes to 0, no matter what.
It could go to 0 if cos(alpha) becomes negative, but that would mean the surface is pointing away from the camera - we'd be looking at the back of the polygon.
The truth, though, is that Poser doesn't use cos(alpha), but instead uses the absolute value of the cos(alpha), which means it is never negative, even when we are looking at a back-facing polygon.
BB, thanks for explaining how Poser internally computes and utilizes cos(alpha). Will the updated shader be posted at your website site? I downloaded your BBNylon.mt5.txt from this thread and started rendering with it. It looks great on Hongyu's outfits. Thanks again BB.
Sentinelle posted Sun, 20 June 2010 at 2:50 PM
Quote - ...
The compound interest approach:We are trying to find a formula for a scenario in which a volume is modeled with n slices each with thickness x, and there is an infinite number of them, and each has continuous opacity k. Each slice takes away some light via opacity, and the rest goes to the next slice.
Transmittance (or transparency) is 1 - opacity.
So if we let the unknown continuous opacity be represented by k, we are asking for:
lim as n->infinity of (1 - k/n)^nx
The answer is e^(-kx)
This is exponential decay.
We can get the same answer via differential equations. Starting with the premise that the change in the amount of light transmitted is a decrease that is directly proportional to the amount passing reaching each slice:
dy/dx = -ky
The answer is again y = e^-kx.
Since k is some arbitrary constant, the negation can be absorbed without loss of generality, so the function is e^kx.
Now the question becomes how to figure out what value to use for k.
This is pretty easy.
Assuming you measured the ratio of light entering and leaving a sample of known thickness, X, and you find the effective transparency is T, then
e^kX = T
Take the log of both sides:
kX = ln(T)
Then divide by X
k = ln(T) / X
An example. Suppose you are simulating a material that is 90% transparent at 2 mm.
k = ln(.9)/2
...
Now the interesting thing about e^kx is it is the same as (e^k)^x.Which means that e^(ln(.9)/2) can be used as a new base, T (note I'm changing what I mean by "T" now), and you can just use T^x.
You can more directly get to the base T by simply taking the measured transparency and raise it to the power 1/D, where D is the depth of the sample.
.9 ^ (1/2) gives the same answer directly.
...
The final opacity is just the complement of the transmittance, so 1 - T^x is the formula.
It's pretty easy to figure out the value of k you say? I beg to differ. Thanks BB for the detailed explanation on how you derived the final opacity via calculus. I actually had to reference my good old pre-calculus and calculus books to understand all the math involved. Your examples surely helped (thank you). This is sheer brilliance BB. I was able to follow your logic but again, on my own I would not have been able to come up with the final opacity.
bagginsbill posted Sun, 20 June 2010 at 9:12 PM
I have more. Remember I said I believe I have not taken everything into account. There is refraction!
How does this affect things? Hmm? Can anyone guess? It has to do with the attenuation calculation, using the 1 / cos(alpha). This is actually not the correct angle, i.e. the angle of incidence is not the angle of transmission, therefore the distance of transmission is different, therefore attenuation is different, therefore opacity is different.
Fascinating stuff this. Both my nylon shader and my glass shader are becoming very much more than any I've posted before.
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)
Winterclaw posted Mon, 21 June 2010 at 12:32 AM
Would it be 1/{cos(alpha) + Angle of Refraction}, or 1/{cos(refraction)} or something like that? I'm thinking that the angle would be equal to attenuation plus the angle of the refraction. When you are looking head on, both of them should be rather small but as you look at higher angles, the light is bouncing through a different thickness of material thus its refraction should change/increase. Part of me is also thinking you'll have to add an edge blend as well because of this. All this will also change opacity it is going to be taking a different angle to the viewer.
So how would refraction work once you get closer to the sides and you start having parts of several fibers refracting the light? Too complex for what you are doing?
Sorry for making such vague generalizations, it's been years since I've done any real math or physics.
I also have a silly question. Since nylon is stretchy, shouldn't the fiber density be greater in areas where the material is stretching less (leg parts with lower diameter) and lower in areas it is stretching more?
WARK!
Thus Spoketh Winterclaw: a blog about a Winterclaw who speaks from time to time.
(using Poser Pro 2014 SR3, on 64 bit Win 7, poser units are inches.)
Latexluv posted Mon, 21 June 2010 at 4:42 PM
I am waiting with baited breath, BB, for you to publish to us either shader!
"A lonely climber walks a tightrope to where dreams are born and never die!" - Billy Thorpe, song: Edge of Madness, album: East of Eden's Gate
Weapons of choice:
Poser Pro 2012, SR2, Paintshop Pro 8
Winterclaw posted Mon, 21 June 2010 at 5:51 PM
Without any answers, I'm starting to wonder if it is 1/cos(alpha+refraction).
WARK!
Thus Spoketh Winterclaw: a blog about a Winterclaw who speaks from time to time.
(using Poser Pro 2014 SR3, on 64 bit Win 7, poser units are inches.)
bagginsbill posted Mon, 21 June 2010 at 6:43 PM
Quote - Without any answers, I'm starting to wonder if it is 1/cos(alpha+refraction).
Sort of, yes.
The angle of transmission is not equal to the angle of incidence on the outside. The angle of transmission is modified, causing the ray to pass more directly through the cloth, thus traversing a smaller distance than the angle of incidence would indicate.
Let's call the angle of transmittance beta.
So our attenuation factor due to angle was 1/cos(alpha) and it needs to be 1/cos(beta).
The relationship of the angle of transmittence, beta, to alpha is given by Snell's law:
IOR * sin(beta) = sin(alpha)
Which means:
sin(beta) = sin(alpha) / IOR
In other words, increasing the IOR from 1 decreases the sin of the angle beta.
Now the difficulty we have is that we're dealing with cosines, not sines. How to get cos(beta)?
Well, we use the following identity:
sin(x) ^ 2 + cos(x) ^ 2 = 1
Rearranging, we have:
sin(x) ^ 2 = 1 - cos(x) ^ 2
Cool. Start with Snell's law, but square both sides:
sin(beta) ^ 2 = (sin(alpha) ^ 2 ) / (IOR ^ 2)
Now use the previous identity to replace sin with cos.
1 - cos(beta)^2 = (1 - cos(alpha) ^ 2) / (IOR ^ 2)
Rearrange a bit:
cos(beta)^2 = 1 - (1 - cos(alpha)^2) / (IOR^2)
And taking square root, gives us cos(beta) in terms of cos(alpha).
cos(beta) = Sqrt(1 - (1 - cos(alpha)^2) / (IOR^2))
Since we have cos(alpha) [ from the Edge_Blend node ] we now have the correct attenuation factor taking IOR into account.
If you graph this it shows that the IOR makes a huge difference. The edge attenuation is much less when the material has even slightly higher IOR than air. According to a couple sources I Googled, the IOR of nylon is very high - 1.53.
I don't really know what to make of this, but I'll put it in the shader and see what happens.
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)
AnAardvark posted Wed, 23 June 2010 at 10:02 AM
Bagginsbill -- you just have to get a product into the marketplace so that we can credit you in the galleries :)
bagginsbill posted Thu, 24 June 2010 at 1:25 PM
Did some more research and I'm close to finished with the BBNylon2.
I found this micrograph of how nylon is woven in things like stockings.
Looking at this, I estimate the linear density of the fibers when viewed flat appears to be around .17 - there are lots of openings where we can see through between the fibers.
Looking at the geometry, we can see this is much more complicated than a simple weave. When this rotates, it doesn't do what a flat sheet of nylon would do. I have no hope of generating a completely accurate transmission function for this. However, I made a few assumptions and did some experimental observation (ahem) and concluded that I'm very close to done.
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 Thu, 24 June 2010 at 1:26 PM
(Click for full size as the reduced version is distorted.)
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 Thu, 24 June 2010 at 1:29 PM
For the curious, this is the part of my matmatic script that calculates the value to plug into transparency.
cosA = EdgeBlend(1, 0, 1).asNumber() + .00001
fx = cosA ** 2
gx = 1 - (1 - fx) / (IOR ** 2)
b = opacity
a = density
factor = 1 / Sqrt((1 - b) * gx + b * fx)
y3 = 2 * a - a * a
transValue = 1 - (1 - y3 * b) ** factor
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 Thu, 24 June 2010 at 1:45 PM
Quote - I also have a silly question. Since nylon is stretchy, shouldn't the fiber density be greater in areas where the material is stretching less (leg parts with lower diameter) and lower in areas it is stretching more?
Indeed, but trying to figure that out in a shader is difficult at best, and close to not possible in Poser nodes.
If you really want to get to that level of accuracy, I'd probably just use a gray-scale map, drawing where the fibers are stretched or compressed, and use that to modulate the density value.
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 Thu, 24 June 2010 at 1:48 PM
Remember to remove the ".txt" from the material file name when you save it.
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)
Latexluv posted Thu, 24 June 2010 at 3:46 PM
Wow! Impressive! I have great hopes for the new Glass shader you mention in another thread! Thank you so much!
"A lonely climber walks a tightrope to where dreams are born and never die!" - Billy Thorpe, song: Edge of Madness, album: East of Eden's Gate
Weapons of choice:
Poser Pro 2012, SR2, Paintshop Pro 8
parkdalegardener posted Thu, 24 June 2010 at 5:19 PM
Six years of post secondary education and none of it involved math or physics. I'm beginning to wish it did. Thanks a lot BB for explaining this in such detail. Now back to re-reading this thread till it clues in completely.
pdg
Sentinelle posted Fri, 25 June 2010 at 8:20 PM
Quote - ...
The relationship of the angle of transmittence, beta, to alpha is given by Snell's law:
IOR * sin(beta) = sin(alpha)
Which means:
sin(beta) = sin(alpha) / IOR
In other words, increasing the IOR from 1 decreases the sin of the angle beta.
Now the difficulty we have is that we're dealing with cosines, not sines. How to get cos(beta)?
Well, we use the following identity:
sin(x) ^ 2 + cos(x) ^ 2 = 1
Rearranging, we have:
sin(x) ^ 2 = 1 - cos(x) ^ 2
Cool. Start with Snell's law, but square both sides:
sin(beta) ^ 2 = (sin(alpha) ^ 2 ) / (IOR ^ 2)
Now use the previous identity to replace sin with cos.
1 - cos(beta)^2 = (1 - cos(alpha) ^ 2) / (IOR ^ 2)
Rearrange a bit:
cos(beta)^2 = 1 - (1 - cos(alpha)^2) / (IOR^2)
And taking square root, gives us cos(beta) in terms of cos(alpha).
cos(beta) = Sqrt(1 - (1 - cos(alpha)^2) / (IOR^2))
Since we have cos(alpha) [ from the Edge_Blend node ] we now have the correct attenuation factor taking IOR into account.
...
You're a genious BB. Surprisingly I was able to follow your logic after looking up Google for Snell's law. Your step by step explanation really helps. Thanks BB for including all the necessary steps to show us how you derived the final equation. Usually when I look up a math equation on the web, the author who explains it states a beginning equation then quickly jumps to his final conclusion in just a few steps, skipping perhaps 10 crucial steps that would help someone like me understand what he's talking about.
Sentinelle posted Fri, 25 June 2010 at 8:35 PM
Quote - For the curious, this is the part of my matmatic script that calculates the value to plug into transparency.
cosA = EdgeBlend(1, 0, 1).asNumber() + .00001
fx = cosA ** 2
gx = 1 - (1 - fx) / (IOR ** 2)
b = opacity
a = density
factor = 1 / Sqrt((1 - b) * gx + b * fx)y3 = 2 * a - a * a
transValue = 1 - (1 - y3 * b) ** factor
Cool. Thanks for showing us the matmatic formulas. I have downloaded your second material set. Now if I could just figure out which among the 68 nodes plus belong to above matmatic formulas...
RobynsVeil posted Fri, 25 June 2010 at 8:47 PM
Quote - Cool. Thanks for showing us the matmatic formulas. I have downloaded your second material set. Now if I could just figure out which among the 68 nodes plus belong to above matmatic formulas...
Short answer: you probably won't. Matmatic is an incredible tool in that it optimises Poser node creation based on the formulas... IOW, it's not a one-to-one relationship, i.e., "this function generates that node".
I did try that once, and was set straight. Unequivocally. :biggrin:
The best thing to do is try to understand the logic behind the math - which is what you're doing - and not worry about what nodes are created: it's going to be node soup, anyway.
On a side note, Matmatic provides about the very best shader copyright protection out there, since without the script no one can reverse-engineer the nodes to recreate the formulas that generated them. Well, I say no-one, but I'm sure someone from the planet Brainiac might be able to nut out something, but believe me, as Bagginsbill's scripts go, you'd have to have pretty much his intellectual horsepower to even get close to sorting out what made what.
Monterey/Mint21.x/Win10 - Blender3.x - PP11.3(cm) - Musescore3.6.2
Wir sind gewohnt, daß die Menschen verhöhnen was sie nicht verstehen
[it is clear that humans have contempt for that which they do not understand]
bagginsbill posted Fri, 25 June 2010 at 9:19 PM
LOL. Actually I can't even decode my own materials. The material room's visual "language" just doesn't work for complex concepts, IMO. I know that math takes practice, but the language of mathematics is incredibly concise, whereas the language of nodes is not. For me, conciseness is a big deal. As well, the nodes are not arranged at all, except in order of first use in the shader tree, which makes it a mess to sort out what feeds what.
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 Fri, 25 June 2010 at 9:24 PM
Also, we mustn't forget the power of encapsulation, one of the basic tenets of modern software development. Encapsulation used to be called "data hiding", but it's much more than that now. It means to exclude the details, so much so that they are actually cannot be viewed anymore.
For example, you understand this:
ior = PM(1.54, "IOR")
s.Reflection_Value = Fresnel(ior)
will generate a bunch of nodes. (15 if I recall correctly). Were you to look at those nodes (the details) you'd have quite a time of understanding that it was a Fresnel reflection effect.
But the script fragment is utterly clear.
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 Fri, 25 June 2010 at 11:12 PM
I meant to type TrueFresnel in the last post. Oh well. Fresnel, of course, is a node - a crappy one I never use anymore.
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)
Sentinelle posted Sat, 03 July 2010 at 4:42 PM
Quote - > Quote - Cool. Thanks for showing us the matmatic formulas. I have downloaded your second material set. Now if I could just figure out which among the 68 nodes plus belong to above matmatic formulas...
Short answer: you probably won't. Matmatic is an incredible tool in that it optimises Poser node creation based on the formulas... IOW, it's not a one-to-one relationship, i.e., "this function generates that node".
...
You're right Robynsveil. My brains were fried after two hours of staring at BB's nodes...
Sentinelle posted Sat, 03 July 2010 at 4:57 PM
Quote -
Also, we mustn't forget the power of encapsulation, one of the basic tenets of modern software development. Encapsulation used to be called "data hiding", but it's much more than that now. It means to exclude the details, so much so that they are actually cannot be viewed anymore. For example, you understand this:ior = PM(1.54, "IOR")
s.Reflection_Value = Fresnel(ior)will generate a bunch of nodes. (15 if I recall correctly). Were you to look at those nodes (the details) you'd have quite a time of understanding that it was a Fresnel reflection effect.
But the script fragment is utterly clear.
Quote - I meant to type TrueFresnel in the last post. Oh well. Fresnel, of course, is a node - a crappy one I never use anymore.
I haven't given up yet although my brains are pretty much fried as a result of staring at your VSS skin shader nodes and your nylon material nodes...I need a break, but I'll be back.
RobynsVeil posted Sat, 03 July 2010 at 11:03 PM
"I haven't given up yet although my brains are pretty much fried as a result of staring at ..."
I know the feeling, Hawarren. I realised eventually that all I was looking at was node soup, and that no amount of staring was going to produce a texture recipe.
In another thread Acadia asks HOW to know to use this node or that node to produce the desired effect. This was a burning question in my mind as well. Whilst there IS some documentation on the Anisotropic node or EdgeBlend node, and we know much more NOW than we did about that incredibly magical Blender node (thanks to Bagginsbill), effectively using them in a sentence is still a grey area for me. I can reasonably predict what will happen with certain nodes... but combining their action? grey area. How grey? Charcoal.
We were looking at procedural hair texture for a while... and I sort-of got caught up in a testing spree of Anisotropic and fractalSum and some other stuff but I didn't take this as far as BB would have because when I reach that impasse, I sort-of gave it up, whereas he would have presevered.
Monterey/Mint21.x/Win10 - Blender3.x - PP11.3(cm) - Musescore3.6.2
Wir sind gewohnt, daß die Menschen verhöhnen was sie nicht verstehen
[it is clear that humans have contempt for that which they do not understand]
bagginsbill posted Wed, 14 July 2010 at 8:23 AM
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)
Sentinelle posted Sat, 24 July 2010 at 12:46 PM
Quote - Hello again. Now that I have published matmatic 1.1.0, I can share the nylon shader script I used. Sorry it isn't commented - the tricky math bits probably need some explanation. Feel free to ask for clarification or advice on how to do something different.
I can't believe I missed this post last week. Thanks so much BB. Will download the mm1 file and try it out.
Sentinelle posted Sat, 24 July 2010 at 1:00 PM
Quote - "I haven't given up yet although my brains are pretty much fried as a result of staring at ..."
I know the feeling, Hawarren. I realised eventually that all I was looking at was node soup, and that no amount of staring was going to produce a texture recipe.
In another thread Acadia asks HOW to know to use this node or that node to produce the desired effect. This was a burning question in my mind as well. Whilst there IS some documentation on the Anisotropic node or EdgeBlend node, and we know much more NOW than we did about that incredibly magical Blender node (thanks to Bagginsbill), effectively using them in a sentence is still a grey area for me. I can reasonably predict what will happen with certain nodes... but combining their action? grey area. How grey? Charcoal.
We were looking at procedural hair texture for a while... and I sort-of got caught up in a testing spree of Anisotropic and fractalSum and some other stuff but I didn't take this as far as BB would have because when I reach that impasse, I sort-of gave it up, whereas he would have presevered.
Thanks for the links Robynsveil. BB made it look so easy. He's a rare genius who has mastered the "art" of applying math and physics to art.
Anthanasius posted Sun, 10 October 2010 at 12:03 PM
Génération mobiles Le Forum / Le Site
Anthanasius posted Sun, 10 October 2010 at 12:03 PM
Anthanasius posted Sun, 10 October 2010 at 12:06 PM
Rename it by removing the ".txt" and put it in your material library.
You just have to select a skin map and play with the options.
Glitter is not really ready and need more work.
Génération mobiles Le Forum / Le Site
Latexluv posted Sun, 10 October 2010 at 4:33 PM
Looks fantastic!
"A lonely climber walks a tightrope to where dreams are born and never die!" - Billy Thorpe, song: Edge of Madness, album: East of Eden's Gate
Weapons of choice:
Poser Pro 2012, SR2, Paintshop Pro 8
Anthanasius posted Sun, 26 June 2011 at 2:35 AM
I'm falling on a probleme ( is it correct ? :D )
The shader n°2 work great with black and white trransparency, but with level of tranparency ( grey level ) all is opaque, an idea ?
Here is the defaut shader ( not really pretty ! )
Génération mobiles Le Forum / Le Site
Anthanasius posted Sun, 26 June 2011 at 2:35 AM
Anthanasius posted Sun, 26 June 2011 at 2:35 AM
Anthanasius posted Sun, 26 June 2011 at 2:36 AM
Génération mobiles Le Forum / Le Site
nruddock posted Sun, 26 June 2011 at 10:38 AM
Quote - The shader n°2 work great with black and white trransparency, but with level of tranparency ( grey level ) all is opaque, an idea ?
If you're using one of the Pro versions of Poser, be sure to turn off gamma correction on the transparency map. If that's not the problem, the best way to provide information is to post a screenshot of the material setup.
Anthanasius posted Sun, 26 June 2011 at 11:21 AM
Lol thx, but it's not a GC problem, it's the shader ;)
It transform all grey in b/w and i dont know where ins the shader.
Génération mobiles Le Forum / Le Site
Afrodite-Ohki posted Sun, 26 June 2011 at 2:48 PM
Booooookmark.
- - - - - -
Feel free to call me Ohki!
Poser Pro 11, Poser 12 and Poser 13, Windows 10, Superfly junkie. My units are milimeters.
Persephone (the computer): AMD Ryzen 9 5900x, RTX 3070 GPU, 96gb ram.
nruddock posted Sun, 26 June 2011 at 4:42 PM
Quote - Lol thx, but it's not a GC problem, it's the shader ;) It transform all grey in b/w and i dont know where ins the shader.
And we can't help you find it without a screenshot of the shader details.
bagginsbill posted Sun, 26 June 2011 at 6:57 PM
I expect that Anthanasius is using the Lace Map built into the shader.
I did not code it as a transparency map. I coded it to be a lace map, indicating how thick the lace was, which is sewn into or on top of the nylon substrate.
This means that the gray-to-white levels do not control opacity of the lace. They control the height of the lace! If you were to use a lace map and think of it as a bump map, not a transparency map, then all will be revealed and understandable.
The transparency of lace is not a concept built into this shader - lace is opaque, always. It's not made of nylon - it's made of cotton or other opaque fibers.
If you wish to simulate a variation in the density of the nylon fiber weave, well then you should be modulating the PM:Density node. You want to plug your map that you are thinking of as transparency into the Density. Why not into Opacity? Well you could do that, but it would have no corresponding basis in reality. Nylon clothing is not made from nylon threads with various opacity. Instead, variable opacity is accomplished from a single type of nylon, but by weaving it tighter or looser in different places.
So - if you wish to create a situation where the map you use is a density map, then you must simply decide what the black level minimum density represents, and the white level maximum density.
Then you would hook it up to one of the PM:Density values, such as Value_2.
In Value_1, you place the minimum density - this is the low value - what to use when the map equals 0.
In Value_2, you place how much the map increases the density - the high value minus the low value.
For example, if you want to indicate that black map (0) is .25 (25%) density, and that white is .7 (70%) density, then
place .25 in PM:Density Value_1.
connect your map to PM:Density Value_2 and set that to .45 (.7 - .25)
Thus, when the map is 0 (black), density will be .25 + .45 * 0 = .25
When the map is 1 (white), density will be .25 + .45 * 1 = .7
When the map is gray, the density will be somewhere between .25 and .7
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, 26 June 2011 at 7:21 PM
Hmm - after studying the math I used, I see another approach. The amplification factor used to trigger evaluation of the lace is in the PM:Enable Lace node - which label says you should set=1.
Well, if you set it to .1, then the entire lace map range [0 to 1] will be re-mapped to a tenth of that [0 to .1] - and this part of the map range is used only for opacity!!
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, 26 June 2011 at 7:27 PM
So - to use the Lace Map as a bump map and a mask, set it to 1.
To use it only as an opacity map, set it to .1.
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, 26 June 2011 at 7:29 PM
Note - you cannot get the lace color to work in this unintended mode. The idea that the material is a partial mix of nylon and lace was not something I anticipated. It doesn't quite work as a color mixer.
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)
Anthanasius posted Sun, 26 June 2011 at 11:02 PM
Nugget_3 posted Sun, 13 April 2014 at 9:31 AM
Where can I find the Bagginbills Nylon Shader?I've googled and all I see are real nylon shader brushes.
raven posted Sun, 13 April 2014 at 9:44 AM
Attached Link: http://www.renderosity.com/mod/forumpro/showthread.php?message_id=3662872&ebot_calc_page#message_3662872
On page 5 of this thread :)The link should take you to the post that the shader is in.
Nugget_3 posted Sun, 13 April 2014 at 9:54 AM
Thanks Raven.
tchadensis posted Mon, 14 April 2014 at 6:02 AM
What an excellent thread, interesting and challenging. I've been wondering about simulating organza for formal clothing and this discussion gave me a whole new way of looking at how the nodes work. Even the math was fun to follow. Thanks BB for taking the time to pursue this.
Boni posted Wed, 18 March 2015 at 9:03 AM
Was going through this ... the link from Raven takes me to the main forums page and not to a specific thread. Can anyone help me with that? I would like to get this shader. Thank you.
Boni
"Be Hero to Yourself" -- Peter Tork
bagginsbill posted Wed, 18 March 2015 at 11:23 AM
New forum software has removed the file name of the uploaded Poser shader. It used to be bbnylon2.mt5.txt - now it's file_454868.txt which is why nobody can find it by its name.
Thanks Rendo - brilliant.
The post containing the shader attachment is here: http://www.renderosity.com/mod/forumpro/?thread_id=2803439&page_number=5#msg3662872
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 Wed, 18 March 2015 at 11:24 AM
By the way - the new forum software does not permit uploading non-image Poser files anymore even if I try to fake it out with calling it something.jpg.
So - no more free shaders from me at Rendo.
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)
Kaleb242 posted Wed, 18 March 2015 at 11:38 AM
Thanks for everything you've shared with us, bagginsbill... loved seeing the math behind your shaders. I hope Renderosity sorts out the forum problem.
@Boni: Here is a direct link to the text file: http://www.renderosity.com/mod/forumpro/media/folder_10/file_454868.txt
Just save it as a text file, and rename to bbnylon2.mt5
WandW posted Wed, 18 March 2015 at 1:03 PM
By the way - the new forum software does not permit uploading non-image Poser files anymore even if I try to fake it out with calling it something.jpg.
So - no more free shaders from me at Rendo.
Doesn't even seem to be a Code tag... :/
----------------------------------------------------------------------------------------
The Wisdom of bagginsbill:
"Oh - the manual says that? I have never read the manual - this must be why."Boni posted Wed, 18 March 2015 at 4:30 PM
Have the shader loaded ... I'll ask about the file issue. Now to play.
Boni
"Be Hero to Yourself" -- Peter Tork
Boni posted Wed, 18 March 2015 at 4:30 PM
Have the shader loaded ... I'll ask about the file issue. Now to play.
Boni
"Be Hero to Yourself" -- Peter Tork
Boni posted Wed, 18 March 2015 at 5:04 PM
I have collected some lace patterns and now I can use them.
Boni
"Be Hero to Yourself" -- Peter Tork
kljpmsd posted Wed, 18 March 2015 at 5:15 PM
Ooooh what fun! I love this sort of thing and wanna thank BB for taking the time to show the math and figure this stuff out. I've grabbed this entire thread and will go over it in detail at work tomorrow while my computer renders more boring technical video. My personal project at home involves creating sheer organza-like materials for designing bridal apparel. Some of the new real world materials being used by a couple of designers in eastern Europe have some interesting sheens.
...and thanks for dragging me over here Boni. I'd've never found it on my own. BG is correct in saying that the forum's search engine is horrific.
Boni posted Wed, 18 March 2015 at 5:36 PM
You are welcome ... but remember that's "BB" not BG. :)
Boni
"Be Hero to Yourself" -- Peter Tork
boffel987 posted Fri, 20 November 2015 at 5:24 AM
Kaleb242 posted at 5:22AM Fri, 20 November 2015 - #4195496
@Boni: Here is a direct link to the text file: http://www.renderosity.com/mod/forumpro/media/folder_10/file_454868.txt
If I try saving this file I just get a txt file full of HTML code; it looks like Rendo broke something in the meantime. Does anybody happen to have a copy of the shader they'd want to share, or know where to find it (I tried Google already and most links refer back to this page).
Thanks ;-)
Boni posted Fri, 20 November 2015 at 6:03 AM
Let's help boffel987 out and get a new link?
Boni
"Be Hero to Yourself" -- Peter Tork
bagginsbill posted Sat, 09 January 2016 at 4:44 PM
Ping. Boni - I still get people asking about this material and here we are a year later the original attachments are still gone. I just sent someone here again.
Speak to Rendo - seriously they just don't understand how terrible and pointless this is. The attachments should be restored - there NEVER was a reason to remove them.
I'm fed up with the smarmy attitude of the staff. They fucked up and this needs to be fixed, as well as 50 other things.
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)
Boni posted Sat, 09 January 2016 at 6:51 PM
Hello bagginsbill, as I said in you other thread, I will remind the admins that this is a major issue ... and needs attention now. It is the best I can do and I will keep you informed. I understand and share your concern.
Boni
"Be Hero to Yourself" -- Peter Tork