2011-02-26 63 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

首先,每一邊都必須按逆時針順序定義才能看到,因爲IndexedFaceSet物體是單面的,除非您使用solid FALSE,這就是爲什麼模型中的某些面看起來像是缺少的,但它們是實際上從另一側可見。


解決方案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

非常感謝! – 2011-02-27 16:45:06