2015-07-20 44 views
0

我有一種算法,可讓用戶輸入數據或函數,然後繪製函數。本質上,它的表面圖just like here。圖表工作正常。但是,我想添加一個映射來添加點對點的黑線,就像示例中一樣。但是,我一直得到以下標準錯誤:GL_INVALID_OPERATION:glDrawElements:嘗試訪問屬性2中的範圍頂點。我知道這個錯誤意味着我想要繪製超出緩衝區範圍的東西,但是我看不到我在做什麼。我已經證實,用於映射的x和y長度的變量實際上是x和y指數的數量。例如,我將重複設置爲76和76,這個網格包含76個條目和76個條目,因此包含5776個點。材料圖錯誤:glDrawElements:嘗試訪問屬性2中的範圍頂點

在這個例子中,他們使用參數幾何,我必須使用標準的THREE.Geometry,因爲我有時需要數據而不是函數。除此之外,我已經遵循了這個例子,但仍然有錯誤。我可能會對紋理重複所需的映射數量感到困惑。我相信他們應該代表X和Y點的數量,也許它應該是別的東西。

這裏就是我把我的網格的方法:

Surface.prototype.setMeshes =function(DataID, callback) 
{ var graphMesh={}; 
    var PlotID=this.Format_id; 
    if (PlotID['Chart_dataobj'][DataID]['type']=="Surface") 
    { if (PlotID['Chart_dataobj'][DataID]['sWireFrame']=="Solid") 
     {  
      var wireTexture = new THREE.ImageUtils.loadTexture('http://www.cadwolf.com/Images/square.png'); 
      wireTexture.wrapS = wireTexture.wrapT = THREE.RepeatWrapping; 
      wireTexture.repeat.set(parseInt(PlotID['Chart_dataobj'][DataID].xLength), parseInt(PlotID['Chart_dataobj'][DataID].yLength)); 
      wireMaterial = new THREE.MeshBasicMaterial({ map: wireTexture, vertexColors: THREE.VertexColors, side:THREE.DoubleSide }); 
      wireMaterial.map.repeat.set(parseInt(PlotID['Chart_dataobj'][DataID].xLength), parseInt(PlotID['Chart_dataobj'][DataID].yLength)); 
      graphMesh = new THREE.Mesh(window[PlotID]['Chart_dataobj'][DataID].surfaceGeometry, wireMaterial);    
      graphMesh.doubleSided = true;              
     } 
    } 
    graphMesh.id = DataID; 
    graphMesh.name = DataID; 
    window[PlotID].Scene.add(graphMesh); 
    if (typeof(callback)=="function") { callback(); } 
} 

我知道這一切都是與表面幾何形狀正確,還有就是與元素我都匹配號碼爲重複次數的錯誤。另外,如果有人知道屬性2是什麼,那會很有幫助。

謝謝

+0

請問您有幾何圖形的UV? – WestLangley

+0

是的,它有頂點和麪,以及所有適當的東西。只要我不嘗試將圖像映射到它,它就可以正常工作。這就是你所說的紫外線? –

+0

適當的東西?那是什麼? – WestLangley

回答

0

檢查你的幾何圖形,看看你是否有UV定義。如果不是,那麼缺乏UV可能是您錯誤信息的原因。

如果網格的幾何體缺少UV,則網格不能應用紋理。

對於THREE.Geometry,在屬性faceVertexUVs中指定了UV。

對於THREE.BufferGeometry,將UV指定爲幾何屬性。

three.js所r.71

+0

你我的好人是紳士和學者。還有一個函數可以從頂點計算UVs http://w3facility.org/question/three-js-generate-uv-coordinate/。謝謝你的時間 –

相關問題