2012-05-27 4 views
0

Windows의 Eclipse Indigo에서 Java3d로 작업하고 있습니다. 마지막으로 StlLoader 예제와 ObjLoad 클래스를 수정하여 내 STL 파일을로드 한 후 아래에 보이는 결과를 얻습니다. (다른 질문에서 보면 분명히 잘못된 벡터 법선입니다.) 아무도 왜 내가이 문제를 겪고 있는지 알 수 있습니까? SolidWorks를 사용하여 STL을 ASCII 파일로 저장하고 java3d.org에 제공된 STL 파일을로드하기위한 코드 수정을 사용합니다. 외관 속성과 고정 된 깨진 수입 등을 변경했을 뿐이지 만, 아래의 "normList"에 지정된면의 법선이 파일의 법선과 확실히 일치 함을 확인했습니다. 결과의Java3d - GeometryInfo를 사용한 나쁜 법문

예 :

enter image description here

StlFile.java의 코드 조각 http://www.java3d.org에서 :

private SceneBase makeScene() 
{ 
// Create Scene to pass back 
SceneBase scene = new SceneBase(); 
BranchGroup group = new BranchGroup(); 
scene.setSceneGroup(group); 

// Store the scene info on a GeometryInfo 
GeometryInfo gi = new GeometryInfo(GeometryInfo.TRIANGLE_STRIP_ARRAY); 

// Convert ArrayLists to arrays: only needed if file was not binary 
if(this.Ascii) 
{ 
    coordArray = objectToPoint3Array(coordList); 
    normArray = objectToVectorArray(normList); 
} 

gi.setCoordinates(coordArray); 
gi.setNormals(normArray); 
gi.setStripCounts(stripCounts); 

// Setting the Material Appearance 
Appearance app = new Appearance(); 

// Coloring Attributes 
ColoringAttributes catt = new ColoringAttributes(); 
catt.setShadeModel(ColoringAttributes.NICEST); 
app.setColoringAttributes(catt); 

Material mat = new Material(new Color3f(0.6f, 0.6f, 0.6f),  // ambient 
          new Color3f(0, 0, 0),    // emissive 
          new Color3f(0.6f, 0.6f, 0.6f),  // diffuse 
          new Color3f(0.6f, 0.6f, 0.6f),  // specular 
          10);        // shininess 
app.setMaterial(mat); 

// Put geometry into Shape3d 
Shape3D shape = new Shape3D(gi.getGeometryArray(), app); 

group.addChild(shape); 
scene.addNamedObject(objectName, shape); 

return scene; 
} // end of makeScene 
+0

큐브 또는 구형과 같은 간단한 것을 시도해보십시오. 이것이 모델 파일이나 코드에 문제가 있는지 추측하려합니다. – Tim

+0

구의 결과는 거의 같습니다. 파일의 법선은 다소 합리적입니다. 누구나 쉽게 색상이나 화살표/선으로 법선을 그릴 수있는 방법을 알고 있습니까? 구체 그림 [here] (http://i.imgur.com/j02Ng.png) –

+0

누군가이 주제에 도움이되는 것을 발견 했습니까? –

답변

0

표면에 일부 지역은 (0x000000에서)이, 나는 몇 가지를 추측 할 정말 검은 경우 법선은 실제로 외부보다는 모델을 안쪽으로 향하고 있습니다.

모든 삼각형에 대한 꼭짓점 v1, v2, v3이 오른쪽 순서로 정의되었는지 (det (v1, v2, v3)> 0인지 테스트하고 그에 따라 순서를 조정할 수 있는지) 확인할 수 있습니다. 또는 "반대편"법선을 찾아 -1로 곱하십시오.