<div dir="auto"><div dir="auto">X3D allows for negative scaling factors which result in reflections. A reflection will result in a reversal of the winding order of polygons and triangles.</div><div dir="auto"><br></div>The CCW field <a href="http://www.web3d.org/documents/specifications/19775-1/V3.3/Part01/components/rendering.html#Geometricproperties">http://www.web3d.org/documents/specifications/19775-1/V3.3/Part01/components/rendering.html#Geometricproperties</a> defines the orientation of automatic normals relativ to the winding order.<div dir="auto"><br></div><div dir="auto">What is the orientation of automatic normals in a CCW=true geometry after a negative scale transformation ?</div><div dir="auto"><br></div><div dir="auto">The normals are constructed before the transformation. They are then scaled. A reflection say about the the YZ plane by a negative x scaling factor will not flip the normal but reverse the winding order.</div><div dir="auto"><br></div><div dir="auto">So the resulting winding order is now inconsistent with the orientation of the normals.</div><div dir="auto"><br></div><div dir="auto">However, in most cases this is what is intended by the scene author since a reflection should not result in suddenly showing the backfaces of triangles.</div><div dir="auto"><br></div><div dir="auto">I looked into this after discovering that three.js does not support negative scaling for probably good reasons:</div><div dir="auto"><br></div><div dir="auto"><a href="https://github.com/mrdoob/three.js/issues/4904">https://github.com/mrdoob/three.js/issues/4904</a><br></div><div dir="auto"><br></div><div dir="auto">What is the correct interpretation of CCW in a reflection ?</div><div dir="auto"><br></div><div dir="auto">Andreas</div><div dir="auto"><div dir="auto"><div dir="auto"><br></div><div dir="auto"><br></div></div></div></div>