Genesis 9 Black Sclera

I hadn't realised until doing a search that black sclera was such a common problem, and it seems to reach across pretty muich all generations: black sclera suddenly appearing on your figure.  I've tried different eye shaders, hiding lights to see what's causing it - nada.  Then I moved my character from its scene location to zero and the eyes were fine again.  Very odd.  

Comments

  • Richard HaseltineRichard Haseltine Posts: 100,942

    Yes, it's a precision issue - when the geometry is away from the world centre it eats significant digits, reducing the number available at the loer end. Sometime chnaging the Instance Optimisation setting ill help (remember to end up in Memory if you do have instances in the scene).

  • columbinecolumbine Posts: 455
    edited July 2023

    I haven't used enough G9s in scenes yet to see if this same solution works for them, but I deal with this all the time in G8s. It could be caused by distance from 0/0/0, it could be caused by certain lighting setups, a number of reasons. I have found a solution that always works (though not necessarily perfectly--you can sometimes still tell the sclera isn't all uniform color) and is quite simple.

    Go into the figure's surfaces and find Eye Moisture. I bet you a donut that Refraction Weight on this surface is set to 1.00. I have never yet encountered a figure (that I didn't set up myself) where this didn't load at 1.00.

    Set this to 0.9 or 0.8. Some circumstances have needed 0.7. Don't go lower than that unless you WANT the eyes to look eerily bright and rather strange.

    Before I found this solution I tried other tweaks, like messing with the sclera surface, but this gives the most consistent success.

     

     

    Post edited by columbine on
  • Richard Haseltine said:

    Yes, it's a precision issue - when the geometry is away from the world centre it eats significant digits, reducing the number available at the loer end. Sometime chnaging the Instance Optimisation setting ill help (remember to end up in Memory if you do have instances in the scene).

    Thank you man

  • So, exhuming this thread, because ...

    The story I just finished was the first time I had tried to give a G9 character a significant part instead of just being a "walk-on," and it was not satisfactory for a number of reasons, and one of them was the black-sclera issue.

    My never-fail, easy-to-apply black sclera fix for G8s (above) does not work on G9s. If you dial down the refraction weight on Eye Moisture on G9s, as soon as you take it below 1.00, the entire eye begins to look clouded over. If you get the value low enough to remove the black sclera rings, by that point the eyes look like the character has been dead for a week.

    I am interested in hearing about any other fixes for this people have successfully applied to their G9s.

    (No offense to Richard, but the old "it has to do with distance from 0/0/0" is not strictly true. That CAN cause it, but isn't the only cause. In this case the figure had black-sclera problems in some scenes even though she wasn't very far from zero at all. It's something about the lighting, and I've never figured out exactly what causes it so I can try to avoid it.)

    This is absolutely going to be a deal-breaker for my using G9s for anything significant if I can't find a way to fix it. There are already enough problems and minor annoyances with using them as compared to G8s and G3s that it doesn't take much to put me over the edge here.

  • columbine said:

    I am interested in hearing about any other fixes for this people have successfully applied to their G9s.

    Every single time I've had this, toggling instance optimization from Auto -> Memory (or vice versa) has resolved it. Is that a real solution? Nope, but it's worked so far.

  • xyer0xyer0 Posts: 5,934

    I'd attempted switching my leading lady from G8.1 to G9. I eventually had to use Figure Converter to get the body I wanted---I never got a face I was completely happy with, but the immovable object was darkened sclerae. I knew about the world centre fix, but I habitually keep my main figure at world centre; so, that wasn't it. I eventually gave up and went back to G8.1. G9 is relegated to extras. If they give problems, they're fired. I'll try the toggling Instance Optimization for G9 extras; thanks, @stelari.

  • columbinecolumbine Posts: 455
    edited November 2023

    Well, I put my G9 into a test situation where she had the black sclera and then I switched Instancing Optimization from Auto to Memory, and the problem went away.

    So there's that!

    I'm not sure why that should make a difference, especially since there was literally nothing in the test scene but her and a spotlight. No instances to optimize!

    Perhaps, since RH says it's about significant digits, changing the optimization mode to "conserve memory" changes the way it handles those long, long decimals ...

     

    EDIT: Huh. I didn't notice until posting the two images below that there are other things which have changed too. Nothing has changed between the images except the Instancing Optimization setting, and yet the left one is definitely pinker than the right one. I did a side-by-side check in my image editor to confirm it.

    So Instancing Optimization changes a number of things about light calculations, apparently. (And let's face it, the renderer is all light calculations when you come down to it.) This is definitely going to call for experiments ...

    molly1.png
    1000 x 1000 - 1M
    molly2.png
    1000 x 1000 - 1M
    Post edited by columbine on
  • It's a precision issue - Iray can't tell the difference between the two overlapping layers of the geometry when the leading part of the coordinate values is alrger because the model is away from the origin. Swapping the isntancing setting causes iray to redo the centre calculations, so there isn't such a large leading (integer) part of the position values and it can then discriminate between the layers.

  • outrider42outrider42 Posts: 3,679

    Instancing optimization is a very poorly worded option with no explanation in DS. That is why it makes no sense. What it actually does is switch the world 0,0,0 point to match where the camera is located for the render. After the render it switches back in the viewport. The two options, speed and memory, have slightly different ways of doing this, but both shift the world center for rendering.

    This quote is from the Nvidia Iray Programmer's Manual:

    3.6.2 Increasing computational precision and accuracy

    When instancing mode is set to “on”, “auto” or “user”, the scene is automatically shifted in space. This increases the precision and accuracy of rendering computations and reduces precision artifacts that originate from self-intersection. To disable this behavior, set bool instancing_shift_camera to “false”.

    There are situations where you can have the black sclera even at the center point, because you are NOT truly at the center point. Think about it, your character's eyes are probably above it, right? Your character's feet are closer to the absolute center point. Then you have where the lights are located, how far are the lights away? What direction are they? How strong are the lights? The rays of light must go into the eye moisture layer, intersect the sclera, leave with new information, go back through the eye moisture yet again, and find their way back to the camera. Your sclera material settings factor in, as SSS by its nature will absorb some light. This weakens the rays, and Iray must "locate them" somehow. That is where some of this precision is lost. Weak light has always been problematic for Iray.

    Now Genesis 9 has changed the actual shape of the eye. This is one of the biggest differences from previous Genesis models. This new shape likely plays a role in why you experience it more. The material settings may play a role, too, as when I switch back to a trusted material setting I use with G8, they look much better than the (few) G9's I have look.

    I have also talked about this before, but most people overlook it, this problem affects more than eyes. Take a look at your character's skin! In the first pic, it is much redder than the second. As you move away from the world center, you can start to see this happen with certain material settings. It doesn't happen every time, but more complicated surfaces like skin can do it. So that brings up my point, even if you fix the eyes by using a morph like my old "Eye Moisture Push Out" or tweak the material, if you see the eyes start to go dark, you are probably having other issues you might not even realize. The further your character gets from world center the redder they will become.

    Thus, the only solution here is to use instancing and hope for the best. But then consider this: what would you do if you have multiple people in a large area? Knowing this information, how do you deal with a character across a street from your main character?

  • Ooh, thank you! That was very helpful, and also explains the apparent skin-color change between the two test images.

  • xyer0xyer0 Posts: 5,934

    Thanks for the clarification, @outrider42.

  • franky85franky85 Posts: 133

    Sample pic for those looking at the thread not knowing what this is about.
    So far I've had that that happen a ton with "Auto" and "Memory" and not once with "Speed" for instancing optimization. YMMV?

  • PerttiAPerttiA Posts: 10,024

    franky85 said:

    Sample pic for those looking at the thread not knowing what this is about.
    So far I've had that that happen a ton with "Auto" and "Memory" and not once with "Speed" for instancing optimization. YMMV?

    It's not about which Instancing Optimisation one has selected, but about changing the Instancing Optimisation.
    When one changes the Instancing Optimisation, DS recalculates the scene again. 

  • Matt_CastleMatt_Castle Posts: 2,571

    outrider42 said:

    The rays of light must go into the eye moisture layer, intersect the sclera, leave with new information, go back through the eye moisture yet again, and find their way back to the camera.

    Although it doesn't massively matter for the explanation, this is the wrong way around.

    Iray, like many raytracing engines, "cheats" - it calculates the light paths starting from the camera and tries to see if those paths find a light. While this is technically backwards from a physics perspective, it's massively more efficient for most purposes - both because you have to fire fewer rays (only having one camera rather than usually many lights) but also because those rays are likely to reach a destination in many fewer bounces (having many lights it can potentially hit, rather than only one lens).

Sign In or Register to comment.