2011-02-26 3 views
1

안녕하세요, VRML에서 색인 FaceSet을 사용하여 솔리드를 만들려고합니다. 문제는 2 명의 얼굴이 나타나지 않아서 나는 왜 그런지 모르겠다.VRML Indexed FaceSet

코드는 다음과 같습니다 나타나지 않는

Shape { 
        geometry IndexedFaceSet { 
         coord Coordinate { 
          point [0 0 0,  #0 
           0.3 0 0,  #1 
           0 1.2 0,  #2 
           0.3 1.2 0, #3 
           0 0 -1,  #4 
           0.3 0 -1,  #5 
           0 1.2 -1,  #6 
           0.3 1.2 -1, #7 
           0.6 1.2 -0.3, #8 
           0.6 1.2 -0.7] #9 
          } 
          coordIndex [6 7 9 8 3 2 -1, 
           0 1 5 4 -1, 
           1 5 9 8 -1, 
           0 1 3 2 -1, 
           4 5 7 6 -1, 
           0 4 6 2 -1, 
           3 1 8 -1, 
           7 5 9 -1 
          ] 

         } 

        appearance Appearance { material Material { diffuseColor 0 0 0.8 }} 
       } 

2 개 개의 양측은 지난 것들입니다. 이견있는 사람?

답변

2

solid FALSE을 사용하지 않는 한 IndexedFaceSet 개체가 일방적이기 때문에 각면을 시계 반대 방향 순서로 정의해야합니다. 모델의 일부 얼굴이 보이지 않는 것처럼 보이는 이유는 다음과 같습니다. 실제로 다른 쪽에서 볼 수 있습니다.


용액 1 :

얼굴 고체 FALSE 양쪽에서 볼 수 있으며, 그래서이 시계 방향 또는 반 시계 방향으로 정의 된 경우에 중요하지 않다. 이는 쉽게 해킹 할 수 있지만 뷰어가 내부적으로 렌더링하는 다각형의 수는 두 배가됩니다.

#VRML V2.0 utf8 

Shape { 
    appearance Appearance { 
     material Material { 
      diffuseColor 0 0 0.8 
     } 
    } 
    geometry IndexedFaceSet { 
     solid FALSE 
     coord Coordinate { 
      point [0 0 0, 0.3 0 0, 0 1.2 0, 0.3 1.2 0, 0 0 -1 0.3 0 -1, 0 1.2 -1, 0.3 1.2 -1, 0.6 1.2 -0.3, 0.6 1.2 -0.7] 
     } 
     coordIndex [ 
      6 7 9 8 3 2 -1, 
      0 1 5 4 -1, 
      1 5 9 8 -1, 
      0 1 3 2 -1, 
      4 5 7 6 -1, 
      0 4 6 2 -1, 
      3 1 8 -1, 
      7 5 9 -1 
     ] 
    } 
} 

용액 2 : 대칭되어야하는 특정면에 대한 정점의 역순

결함 얼굴

플립.

#VRML V2.0 utf8 

Shape { 
    appearance Appearance { 
     material Material { 
      diffuseColor 0 0 0.8 
     } 
    } 
    geometry IndexedFaceSet { 
     coord Coordinate { 
      point [0 0 0, 0.3 0 0, 0 1.2 0, 0.3 1.2 0, 0 0 -1 0.3 0 -1, 0 1.2 -1, 0.3 1.2 -1, 0.6 1.2 -0.3, 0.6 1.2 -0.7] 
     } 
     coordIndex [ 
      2 3 8 9 7 6 -1, # flipped 
      4 5 1 0 -1,  # flipped 
      1 5 9 8 -1, 
      0 1 3 2 -1, 
      6 7 5 4 -1,  # flipped 
      2 6 4 0 -1,  # flipped 
      3 1 8 -1, 
      9 5 7 -1  # flipped 
     ] 
    } 
} 
+0

많은 덕을 보았습니다. –