Hello,
I have a simple scene here that illustrates the flickering issue with the aiToon contour lines.
In our studio we call this issue the Chicken Pox issue.
Originally, we though this issue happened only on deformed objects that were cached far from origin (precision issue with deformers that caused jitter in the geo) but we found a model that has the same chicken pox issue but this model is NOT being deformed in any way. This issue is happening near origin so it doesn't seem like a precision issue the geometry.
The issue seems to be with the aiToon shader itself.
Lowering the iterations in the arnold sub-division settings does improve the chicken pox but the geometry doesn't look smooth anymore -- this is not a viable solution for us. Increasing the iterations makes the problem worse.
We've tried pretty much every Arnold setting to try to fix the issue (including adaptive sampling) but seems like this is a low-level shader or filter issue.
If you have any insight on how to fix this issue, please let me know as we are out of ideas on this one.
--Felipe
I had a quick play with your scene. I tried exporting the geo into a new scene with a new shader and I see some odd pixels. Not sure what could be causing it tbh. I thought it might be to do with the geo, camera or even UVs but I was still seeing it on other geo.
Scene here.
Hi Felipe
Thanks for the scene, got it and am looking at it.
I don't see any previous tickets logged for something like this, so this is a new one to me...
I logged ticket ARNOLD-11745 for this.
Only changing subdivision (eg adaptive error or iterations) seems to make it go away sometimes.
I would use adaptive subdivision.
The mesh is heavily subdivided (5 levels, uniform) so the triangles are quite small which could be causing numerical precision errors.
It looks like increasing the adaptive subdivision error gets rid of the artifacts, as it will lower the polygon density in the affected areas
Thanks for looking into it.
Yeah, we figured that for that example the suggestion would be to subdivide the asset less. However, we can't always do so because the beauty will start to look jagged. Furthermore, we do have another example that has the same issue even when we set the iterations to 1 (even 0) where adaptive subdivision error doesn't do anything either.
The Geometry subdivision is very sparse in this case.
Freezing transformations helps the issue in this particular scene but we can't always do so because these geometries are driven by rigs. Everything points to a precision error in the aiToon shader itself.
Sometimes we can get proper results by moving the entire rig near origin, caching the animation and then rendering. However, this doesn't work 100% of the time, and it's a very time-consuming process to do on all shots.
Attached is this scene.
Cheers,
--Felipe
Thanks for the new scene file