2011-02-26 13 views
1

こんにちは私はVRML上でIndexed 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を両側から見えるので、それらは時計回りまたは反時計回りに定義されたかどうかは問題ではありません。これは簡単なハックですが、ビューアが内部的にレンダリングするポリゴンの数は2倍になります。

#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

ありがとうございました! –

関連する問題