2014-11-05 2 views
1

두 개의 다각형을 가지고 있으며이를 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); 

답변

0

정확히 어떻게 convertToIndexedTriangles의 호출 후 GeometryInfo 변이 : 여기

내가 해봤 일부 코드입니다. 자바 3D 1.6.0 오픈 소스이기 때문에

, 소스 코드를 볼 : https://github.com/hharrison/java3d-utils/blob/master/src/classes/share/com/sun/j3d/utils/geometry/GeometryInfo.java#L507 https://github.com/hharrison/java3d-utils/blob/master/src/classes/share/com/sun/j3d/utils/geometry/Triangulator.java#L625

당신은 내가 아는 한 직접 GeometryInfo 객체에 getCoordinateIndices()와 getCoordinates()를 호출 할 수 있습니다.

내 제안이 Java 3D의 구식 버전에서 작동한다고 보장 할 수 없습니다.

+0

물론 필자는 화난 - 편집 성 - 개발자 모드로 전환하고 모든 단계를 디버그 할 수 있습니다. 그러나 나는 누군가가 나를 실용적인 예로 가르치 길 희망했다. java3d는 고아 프로젝트와 비슷한 것으로 보이며 사용자는 marooned입니다. –

+0

디버그 모드를 사용하는 것은 편집증과는 아무런 관련이 없습니다. API가 더 사용하기 쉽고, 문서화가 잘되고, 디자인이 잘되어있다면 소스 코드를 살펴 보는 것도 마찬가지입니다. Java 3D는 고아 프로젝트가 아닙니다. 몇 주 동안 튜토리얼을 작성하면서 JOGL 2로 포트를 시작했으며 Harvey는 여전히 그것을 유지합니다. 절대적으로 모든 사용 사례에 대한 예제를 제공 할 수는 없습니다. 우리는 Java 3D 사용자를 포기하지 않지만, 여기에서 매일 질문에 대한 답변을 제공하지만 Java 3D에 대한 도움을 요청하는 가장 좋은 곳은 아니며 공식 JogAmp 포럼을 방문하십시오. – gouessej

+0

또한 Java 3D는 커뮤니티 프로젝트이며, 우리는 여유 시간에 최선을 다해 "Stacked Stack", JogAmp 포럼 및 on에 관한 질문에 매일 몇 시간을 소비하는 반면 "사용자는 marooned"와 같은 것을 읽습니다. JavaGaming.org는 2006 년 이후로 매우 낙담합니다. 우리는 "아기에게 먹이를 줄"수 없으며, 스스로 배우고 더 멀리 나아갈 수 있도록 충분한 적응증을주기 위해 노력했습니다. 너는 무엇을 더 기대 하느냐? 나는 전체 코드를 쓰지 않을 것이다. gi.getCoordinateIndices() 및 gi.getCoordinates()를 호출하는 것은 어렵지 않습니다. 나는 가혹하게되고 싶지 않다. 미안하다. – gouessej

관련 문제