2016-08-03 26 views
0

我的材料有一個envMap。我打電話Material.toJSON()將它保存到localStorage如何使用envMap屬性保存材質?

有報錯,說

Texture.js:124 Uncaught TypeError: Failed to execute 'drawImage' on 'CanvasRenderingContext2D': The provided value is not of type '(HTMLImageElement or HTMLVideoElement or HTMLCanvasElement or ImageBitmap)'. 

我調試了一下,發現該圖像是一個數組這是不正確的類型。

這是我的問題,如何正確保存我的材料與envMap屬性?

回答

0

[更新]:我已經發布了這個問題,你可以參考here

我剛剛遇到了這個問題。我通過修改THREE.js源代碼來修復它,如下所示。

在toJSON的getDataURL函數中,有一個部分爲您的envMap的數據URL分配meta.images [img]路徑。

這裏是我的修復[開始於行22134,轉速79]:

if (meta.images[ image.uuid ] === undefined) { 

    /* ADD THIS PART */ 
    if (image instanceof Array && image.length > 1) { 

     meta.images[ image.uuid ] = { 
      uuid: image.uuid, 
      url: image.map((val) => { getDataURL(val) }) 
     }; 

    } else { 

     meta.images[ image.uuid ] = { 
      uuid: image.uuid, 
      url: getDataURL(image) 
     }; 

    } 

} 
+0

我面臨同樣的問題,但是當我嘗試加載導出的模型,它會嘗試加載名爲」圖像, ,,,'所以這個黑客可能不是這個問題的正確解決方案 –

相關問題