我有两个多边形,并希望使用java3d将它们变成三角形网格。 但无论我尝试在某种错误的结果。我错过了什么?如何将多边形数组转换为java3d中的IndexedTriangelArray
下面是一些代码,我已经试过:
final int n = points.length;
final int m = opoints.length;
final GeometryInfo gi = new GeometryInfo(GeometryInfo.POLYGON_ARRAY);
final Point3d[] npoints = Arrays.copyOf(points, n + m);
System.arraycopy(opoints, 0, npoints, n, m);
gi.setCoordinates(npoints);
gi.setStripCounts(new int[] { n, m });
gi.convertToIndexedTriangles();
final IndexedTriangleArray it = (IndexedTriangleArray) gi.getIndexedGeometryArray();
final Point3d[] newPoints = new Point3d[it.getVertexCount()];
it.getCoordinates(0, newPoints);
// Exception in thread "main" java.lang.NullPointerException
// at javax.media.j3d.GeometryArrayRetained.getCoordinates(GeometryArrayRetained.java:5425)
// at javax.media.j3d.GeometryArray.getCoordinates(GeometryArray.java:3699)
final int[] nidxs = new int[it.getValidIndexCount()];
it.getCoordinateIndices(0, nidxs);
当然,我可以(如果有必要的话)转向愤怒的偏执狂开发者模式并调试每一步。但我希望有人能指点我一个实例。它看起来像java3d是一个孤儿项目和用户被扼杀。 – 2014-11-05 22:16:04
使用调试模式与偏执无关,查看源代码也是如此,即使API更易于使用,更好的文档记录和更好的设计,也不会有必要。 Java 3D不是一个孤儿项目,我花了几个星期的时间写了一篇关于它的教程,我开始将它的端口发布到JOGL 2,而Harvey仍然维护它。我们无法提供绝对所有用例的示例。我们不会放弃Java 3D用户,但即使我每天在这里回答有关它的问题,SO并不是寻求Java 3D帮助的最佳地点,而是去官方的JogAmp论坛。 – gouessej 2014-11-06 10:22:17
此外,请记住,Java 3D是一个社区项目,我们尽我们所能(空闲时间)和阅读“用户被扼杀”之类的东西,而我每天花几个小时在StackOverflow,JogAmp论坛上回答问题JavaGaming.org自2006年以来相当令人沮丧。我们不能“喂养婴儿”,我努力给你足够的指示,让你自己学习,走得更远。你还期望什么?我不会为你写整个代码。调用gi.getCoordinateIndices()和gi.getCoordinates()并不困难。我不想苛刻,对不起。 – gouessej 2014-11-06 10:26:26