Geometry 'slicing' artifact

While rendering some fairly basic primitives, I’m getting a strange artifact that looks like there’s something slicing through the geometries.

With terrain on, a similar thing happens, but it’s more obvious as the terrain appears to cut through the 2D geometry too.

It appears as a line whose width and angle are dependent on the position of the camera. The width of the line seems to increase as the gets higher (or as I middle-click pan up and tilt down), it’s always perpendicular to the direction of the camera across the plane of the ellipsoid, and as I zoom in it gets further away.

Do you know what this might be? Have we set something up incorrectly?

We’re creating the geometries like:

  var poly = new Cesium.GeometryInstance({

    geometry: new Cesium.PolygonGeometry({

      polygonHierarchy: { positions: vertices },

      height: height

    }),

    id: args.id,

    attributes: {

      color: Cesium.ColorGeometryInstanceAttribute.fromColor(DEFAULT_COLOR)

    }

  });

Then wrap that in a primitive:

    new Primitive({

      geometryInstances: poly,

      appearance: new Cesium.EllipsoidSurfaceAppearance()

    });

    scene.getPrimitives().add(primitive);

I’ve done some work cleaning up our primitive creation, but the problem remains. We now create geometry with:

new GeometryInstance({

    id: parseInt(args.id),

    geometry: new Cesium.PolygonGeometry({

      polygonHierarchy: {positions: vertices},

      height: minTerrainHeight + altitude,

      extrudedHeight: minTerrainHeight + altitude + extrusionHeight

    })

  });

And primitives with:

    if (!is3d) {

      appearance = new Cesium.EllipsoidSurfaceAppearance();

    } else {

      appearance = new Cesium.MaterialAppearance({closed: true, flat: true});

    }

    appearance.material.uniforms.color = color;

The artifact doesn’t appear to affect the 2D geometries with the EllipsoidSurfaceAppearance.

Hi Oliver,

Your code is OK. This is a known-issue with translucent objects due to how we eliminate z-fighting for massive view distances. Opaque objects do not have this artifact. If you are curious about the details, see these slides (Slides 29 and 30 in particular):

http://cesium.agi.com/massiveworlds/index.html#UsingMultipleFrustumsforMassiveWorlds

We can minimize the artifact a bit more by reducing frustum overlap, but fully eliminating it in the general case is hard. Recently, I almost solved it with stenciling, but it didn’t turn out as expected. I hope to think about it again, but it will be a few months out.

As for the screenshot with terrain, Kevin may have more to add.

Patrick