Black bands in eyes in cycles when moved on x axis

Issue #770 resolved
Lamruil created an issue

I have an issue when i move a character the eyes become more and more black in cycles (eevee works well)

I tried in blender 2.93 and blender 3.0 beta.

i tried with different characters and eye textures

no issue at X = 0 for the rig

issue at X = 20 for the rig

even more at X = 30 for the rig

different character (Landon 8 ) same issue

no issue if in eevee (same loc for the rig)

i tried isolating the material causing the issue but was unable.

I tried most default possible import (no easy import, deleting all other meshes, no merge geograft or join lashes, blank blender file…).

Am i the only one to experience this issue? i use Diffeomorphic 1.6 stable

Comments (14)

  1. Thomas Larsson repo owner

    Perhaps the textures were made for a different UV set. Have you checked in the UV editor that the texture and UV layout match?

  2. Alessandro Padovani

    This is a precision issue. The daz figures are notorious for this kind of artifacts. The daz forum is plagued with black eyes because this happens in daz studio too, though the last version of iray gets more precision so it requires larger distances to trig it. Unfortunately both DAZ and the PAs don’t seem to care about this since daz figures are mostly used for still pictures so they are usually posed around the center of the scene.

    The issue is that the eyemoisture geometry is too close to the sclera. To fix it you go in edit mode and scale the eyemoisture 101%. It would be much easier if DAZ would fix this themselves in the daz figures. But it seems this is not going to happen.

    There is no way to increase the cycles precision that I know of. This doesn’t happen in eevee because eevee does not make complex refraction computations.

    Below an example with Victoria 8 before and after the fix.

    edit. Thomas, I don’t know if you can scale the eyemoisture on import to fix the issue. If this is possible beware to scale the two eyes independently, I mean first the left eyemoisture then the right eyemoisture for example. Otherwise if you scale them together the scale will be centered in the middle and that’s not good because the geometry is shifted.

    edit. This can also be good information to add to the docs, since most people may not be aware of this.

  3. Thomas Larsson repo owner

    Implemented in last commit, although I have never seen the rings myself.

    There is an global setting that decides whether to scale the eye moisture vertices. The selections are the intersections of the eye moisture material (eye reflection for G2) and the lEye/rEye vertex groups. Scaling also works for multires HD meshes, but not for pure HD meshes since the vertex groups are missing.

    The setting is located in the Mesh section. Not sure if it belongs to the Materials section instead.

  4. Alessandro Padovani

    Thomas it is odd that you can’t see it, I get it both in blender 2.9 and 3.0 and I tried with various cycles settings both on gpu and cpu. I provide a test scene eye-precision.duf it’s G8F shifted 20 meters on x. Please let me know if you see the issue just load and render. Otherwise I wonder if there’s some blender settings that may fix it.

    I’m not sure what do you mean by “selection intersection“, I just enter edit mode and select the material. But may be via script it is different.

    As for the global settings I believe it is in the right place since this is a geometry issue. We may add a default 1.01 value that the user can change, so to eventually cover larger scenes may the issue turn out. Though I believe 1.01 should be enough.

    Commit bcf68e8 works fine here anyway, if Lamruil has nothing to add we may mark as resolved.

  5. Alessandro Padovani

    UPDATE. SOLUTION.

    I got what’s causing the issue in the blender settings. It’s the max subdivision value. I use simplify to optimize the scene, with max subdivision = 1 for rendering. If I set max subdivision = 2 then everything works fine. The issue is always the same though that the eyemoisture is too close to the sclera. We may also add a note in the docs about this.

    The geometry fix may turn helpful anyway to work in animation with max subdivision = 1.

  6. Thomas Larsson repo owner

    I first select all verts with the eyemoisture material, and then split the selection into left and right depending on which vertex group lEye/rEye the vertex belongs to. One cannot rely on the world coordinates since the character may be posed.

  7. Thomas Larsson repo owner

    OK, now I see it too. Strangely enough the renders are fine with 0 or 2 max subdivs, but not with 1.

  8. Log in to comment