It’s a busy month for SkyControl. Today (25 January) I released version 0.9.11 of SkyControl. This version removes all dependencies on Bullet Physics, as requested.
If I’m not mistaken, the filter changes the entire scene is thickened all ends of the objects, stops are thickened.
The stops of the sky are naturally thickened too.
Without certainty, I will see by modifying the setQueuBucket of DomeMesh. I have the impression that by setting a node to Translucent, the stops are not modified.
I had another idea this morning. Perhaps you’re seeing edges of the star cube. Setting the starMotion parameter of the SkyControl constructor to false (if it isn’t already) should eliminate the star cube. Perhaps that will solve your issue.
I modified the QueuBucket in Translucent on the Geometry Dome in the getBottomDome and getTopDome methods of the SKyControleCore class.
With this, the edges of the dome are no longer affected by the filter but the problem is that the objects in the scene are no longer visible.
I thought the cartoon filter was a post-processing filter… which means it can’t be doing anything strange with edges and it would have to be based on depth and/or some normal pass.
…I wouldn’t think that either of those would affect sky boxes as they should generally be rendered without depth or at a constant depth. Are they in the sky bucket? (That bucket forces a constant depth.)
In the image you posted, I see two types of edges highlighted by the cartoon-edge filter. I see the horizon, and I see three edges of the star cube. I haven’t figured out how to prevent the filter from highlighting the horizon. However, I’ve confirmed that setting starMotionFlag to false eliminates the star cube and prevents the filter from highlighting the star cube’s edges.
In case you wish to combine star motion with the cartoon-edge filter, I’ve developed a solution for that case. My solution involves adding a new constructor for SkyControl. Once I’ve finished testing the changes, they’ll appear in version 0.9.12 of SkyControl.
If you’re using an edge filter, I recommend using the new constructor with the TwoDomes option, like so:
import jme3utilities.sky.SkyControl;
import jme3utilities.sky.StarsOption;
new SkyControl(assetManager, cam, cloudFlattening, StarsOption.TwoDomes, bottomDome);
The new option emulates my old (pre-March 2017) approach of using a pair of domes to render moving stars. This approach uses more triangles than a star cube. But with domes, there are no sudden changes in normal/depth to trigger a filter’s edge-detection algorithm.
I’ll deprecate the old constructor eventually, so now might be a good time to become familiar with the new one:
Wherever you used false for the 4th (starMotionFlag) parameter, now you use StarsOption.TopDome.
Wherever you used true for the 4th (starMotionFlag) parameter, now you use StarsOption.Cubes.
The serialization format changed, but with backward compatibility: old J3O assets should still load with the new library.
…which I think may deserve some deeper investigation because the cartoon edge filter works on normals. If a fragment’s normal is sufficiently different than the surrounding normals: draw a dark line.