我有一个要绘制为实心区域的点列表。我可以将点绘制为 LineStripArray(见图)。但是当我尝试将点绘制为 IndexedTriangleArray / IndexedQuadArray 时,我得到了一个奇怪的形状。我也使用 GeometryInfo 和 Stripifier 进行了尝试,但没有成功。
带有 GeometryInfo 的代码:
GeometryInfo geometryInfo = new GeometryInfo(GeometryInfo.QUAD_ARRAY);
geometryInfo.setCoordinates(points3f);
NormalGenerator normalGenerator = new NormalGenerator();
normalGenerator.generateNormals(geometryInfo);
Stripifier st = new Stripifier();
st.stripify(geometryInfo);
Shape3D shape = new Shape3D();
shape.setAppearance(app);
shape.setGeometry(geometryInfo.getGeometryArray());
一个区域的解决方案(加上新问题):
Appearance app = new Appearance();
PolygonAttributes pa = new PolygonAttributes();
pa.setCullFace(PolygonAttributes.CULL_NONE);
pa.setPolygonMode(PolygonAttributes.POLYGON_FILL);
app.setPolygonAttributes(pa);
GeometryInfo geometryInfo = new GeometryInfo(GeometryInfo.POLYGON_ARRAY);
geometryInfo.setCoordinates(points3f);
int[] stripCountArray = { points3f.length };
int[] countourCountArray = {stripCountArray.length};
geometryInfo.setContourCounts( countourCountArray );
geometryInfo.setStripCounts( stripCountArray );
NormalGenerator normalGenerator = new NormalGenerator();
normalGenerator.generateNormals(geometryInfo);
Shape3D shape = new Shape3D();
shape.setAppearance(app);
shape.setGeometry(geometryInfo.getGeometryArray());
形状也有深度。但我不能只复制数组添加 Z-index 并再次合并它们(这不起作用)。一种可能的解决方案是分别绘制每张脸,但我认为这将非常低效。
有人可以帮我解决这个问题吗?