Flat RopeNode: Breaks and Overlaps

I’m using the RopeNode class to model a flat, fluidly-sinuating object, and for the most part it works pretty well for this, I feel! However, when it turns at all acutely–even if not hugely so–I find that it produces little breaks and overlaps along its length–i.e. places where gaps show, or where its transparent rendering is more-opaque than intended due (presumably) to the geometry overlapping itself.

A few excerpts are attached–the effect is fairly slight when seen statically like this, but it’s more apparent in motion, I find.
ropeNodeIssue

My initialisation of the RopeNode looks something like this:

self.ropeNode = RopeNode("fox rope")
        self.curve = NurbsCurveEvaluator()
        self.ropeNode.setCurve(self.curve)
        self.ropeNode.setNormalMode(RopeNode.NM_none)
        self.ropeNode.setRenderMode(RopeNode.RM_tape)
        self.ropeNode.setThickness(3)
        self.ropeNode.setTubeUp(Vec3(0, 0, 1))
        self.ropeNode.setUvDirection(True)
        self.ropeNode.setUvMode(RopeNode.UV_distance)
        self.ropeNode.setUvScale(1/7)
        self.curve.reset(7)
        self.ropeNP = NodePath(self.ropeNode)
        self.ropeNP.setZ(2)
        self.ropeNP.reparentTo(render)
        self.ropeNode.setBounds(OmniBoundingVolume())
        self.ropeNode.setFinal(True)

Then, in an update-method that should be called once per frame, I maintain a “position-list”, adding and removing points based on the object’s distance from the last point.

And finally, in that same update-method, I set the zeroth curve-vertex to have current position of the object, and then iterate over the position-list and set the subsequent vertices of the curve to have the stored positions. (This via calls to “setVertex”.)

Is there anything that might be done about this? Or perhaps a better approach to modelling the object in question?

Can you reduce this to a simple sample and post it on GitHub?

Sure! You should find that in the issue below: