Final Judgment: NOT an Alpha Channel issue
FractalDimensia
Posts: 0
I am experiencing a shader issue with the alpha channel, and hoping someone might be able to help me understand the problem.
I mapped a pic of a goldfish onto a 3D surface (Image 1). In the shader, I created an alpha map (Image 2). This works and the resulting goldfish looks fine when rendered without the bowl and water (Image 3) or with just the water (Image 4).
But something happens when the fish are rendered with the fishbowl, either with or without water (Image 5). It is like light operates differently when passing through the transparent regions of the map.
Anyone have an idea what is happening?
Thanks for your assistance!
Fishbowl_5.jpg
640 x 480 - 96K
Fishbowl_4.jpg
640 x 480 - 106K
Fishbowl_2.jpg
640 x 480 - 103K
Goldfish_alpha.jpg
1304 x 507 - 127K
Goldfish.jpg
736 x 462 - 63K
Post edited by FractalDimensia on
Comments
If you are using preset glass/water shaders, check your refraction.
Also carrara shader for glass and water don't work well on a single sided mesh, make sure your fish bowl has thickness.
Thanks, Stan for your thoughts. I finally had some time to pursue this. I was working on how to adjust the Alpha Channel to make it work, so I was definitely barking up the wrong tree! The problem is definitely related to the Refraction setting of the glass.
Attached are some further renders to help show the effects of the problem.
1) Fishbowl using "Crystal" refraction. Problem is there.
2) Fishbowl done in "Crown Crystal" refraction. Problem still there.
3) Fishbowl done in "Glass" refraction. Problem still there.
4) Fishbowl using "Crystal" refraction, with the inside of the bowl removed (so no thickness to the material). Problem is there.
5) Fishbowl using "Crystal" refraction and BACK side of the bowl removed (only behind the fish). Problem is there
6) Fishbowl using "Crystal" refraction and FRONT side of the bowl removed (glass only behind the fish). PROBLEM NOT THERE.
The problem seems to be related to:
1) How light travels through a refracted material and then passes through an object that has an Alpha channel setting. This seems to mess up the ray tracing path as it passes through the object.
2) Oddly enough, the Water inside the bowl is visible in all of these images, so it seems the refraction qualities of "Water" does not affect the light rays.
I tried varying "Other value" in refraction setting to values other than 1.00 without any change.
I tried removing values of all other channels (setting them to none), except for transparency and refraction without any change.
The problem does not occur when refraction is set to "none."
So is this a "bug" or am I possibly doing something noob-ish?
Image #6 (No problem when the bowl is behind the fish...)
Can you recreate the issue using some simple shapes (so you don't need to share your model) that can be submitted in a bug report to DAZ?
I think they have a 5MB file limit....
It seems that texture maps don't work properly but procedural noise does.
I can't help but to think that some issues with alpha channels are related to Carrara's lack of 16/32 bit per channel. I have heard from some, though not specifically from developers, that Carrara computes internally to more than 8 bits per channel. However, as soon as you add an alpha, you limit part of the computation to 8 bits because Carrara does not handle more than 8 bits (256 levels) in an alpha channel. I suppose the alpha could be interpolated internally to a greater bit depth, but I don't know if this would really work well with all alphas, though for some it might.
I would welcome some definitive comments from developers on this subject.
I would guess the issue is about render order.... Various layers of transparency and refraction being culled in a certain order and something going "wrong" with that order....
I also wonder if you used Transparency on the fins with the same index of refraction as the water, if that would work...
I haven't really read thru the thread to see what the issue is, but my first thought is maybe if you're dealing with refractions and transparencies there might be a render setting that isn't quite right. Maybe the Ray Depth or whatever it's called. Maybe try cranking that up a bit. Looks like you have multiple layers of transparent materials? Might be Ray Depth....
Yes, if the issue were strictly alpha channel related it would show regardless of the render order. So were are probably looking at multiple factors. I guess we can only speculate ...........
for what it is worth, I have experienced similar issues trying to add an alpha map to the ocean primitive with some shaders.
in a bid to make it round for liquid in a container.
Reflection and index of refraction seems to counter the alpha invisibility.
Been experimenting a bit.
The alpha rendering improved after I changed the Ray Depth from 4 to 8 In the transparency channel of the water material.
Just for kicks, try using your alpha map for the fish in the intensity channel of Transparency instead of alpha - and leave the alpha at none. (Drag the image from Alpha channel to Transparecy Intensity setting). If this helps, but doesn't reslove, try using both(?)
I think that, what's happening, is that the calculations of "What's transparent and what's not" is getting obscured when they are inside one another. Bah... My brain won't let me comunicate. Still sick - still dizzy... I can think - but just can't seem to speek! LOL
I hope you can piece together what I tried to say - just as an experiment to see if it works.
I really like your fish, water, and bowl, By the way. Very nicely done!
Yes, it will. Ray Depth is extremely important when rendering reflective or transparent/refractive surfaces. It tells the renderer how many bounces to calculate when it's ray tracing the transparencies, etc. And if you don't have enough bounces then transparent stuff might not look transparent.
It seems as though the OP is simulating a bowl with water inside, which means MANY transparent interface surfaces to calculate...air in front of the bowl, outside glass surface, inside glass surface, water surface, then the other inside glass, and the other outside glass then the air behind the bowl. That's a lot of bouncing around and reflecting and refracting, and if you tell the renderer not to calculate all that then stuff won't look right.
And don't forget, besides the Ray Depth with the materials, there's also a global render setting for Max Ray Depth. And also attenuation. It's real important to understand those settings because they are very often adjusted when rendering transparent/reflective stuff.
Thanks to everyone for the great suggestions! I have not had a chance yet to experiment with all of them, but will over the next day. I did try adjusting the ray depth settings and transparency channel with no/little effect. I'll study them more in depth and report the results. I also simplified the image and was able to reproduce the problem. (Below is done with a simple 4-sided polygon with the fish shader mapped onto it. You can clearly see the edges of the polygon.)
Maybe I can provide how to reproduce the problem and others can have a go at it if I can't make headway soon.
Again, THANKS!
FD
a few more things to try if you have not already:
Is the black in your alpha really "0" and not some low non-zero value that appears black?
Have you turned off "interpolate" to see what happens (it is "on" in your initial screenshot)?
Have you turned on "premultiplied alpha" (it is "off" in your initial screenshot)?
Changing Interpolate and premultiplied alpha settings might not make your alpha work the way you want, but it would be useful to know if it affects the way the black is creating the transparency.
One other thing to try:
Don't use an alpha, mask your color fish texture map on a WHITE (rgb 255,255,255) background AND turn "on" the "white is invisible" checkbox
I gotta disagree on the white is invisible suggestion. Carrara tends to create a bit of halo sometimes. Besides it's absolute. On or off and no in-between. The tail has some transparency judging by the previous images in the thread.
If you want transparency in the color channel without using the alpha channel, use a format that supports alphas such as Photoshop, png or tiff. Create your transparencies in your image editor of choice, and save it to one of the above formats. Load it into you shader's color channel and any transparencies or partial transparencies will be there.
Yes that's true, but it may be useful to know if not using the alpha channel results in correct transparency. Of course, it may cause other problems such as the fringe/halo effect.
Okay. I was able to spend some time on this and discovered that cranking up the crystal bowl's ray depth from 4 to 16 fixed the "problem." I also boosted the "Maximum Ray Depth" in the render window to 18. I tried many of the other suggestions offered, but none of those had any effect.
This was a great learning experience to understand refraction settings!
Thanks again for everyone's inputs and suggestions!
FD
Glad you got it to work! The render looks very good!
So, did it increase render time substantially turning up ray depth?
Nice job FD! :)
Glad you got it to work! The render looks very good!
So, did it increase render time substantially turning up ray depth?
I did not notice a big change. I am rendering using two i7 and an i5 computer in 64-bit mode, so the renders don't take very long. But the scene was fairly simple. I am guessing throwing more objects in the scene would likely change that.
Thanks, DB. Cranking up the crystal bowl's ray depth tripled the duration time....
Here is the final render...