2

塗りつぶし領域として描画したいポイントのリストがあります。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インデックスを追加し、それらを再度マージすることはできません(これは機能しません)。考えられる解決策は、すべての顔を別々に描くことですが、それは非常に非効率的だと思います。

誰かがこの問題で私を助けることができますか?

4

0 に答える 0