如何使用envMap属性保存材质?

时间:2016-08-03 02:25:31

标签: three.js

我的素材有envMap。我致电Material.toJSON()将其保存到localStorage

报告错误,说

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属性保存我的资料?

1 个答案:

答案 0 :(得分:0)

[更新]:我已将此问题发布为您可以参考here的问题。

我也遇到了这个问题。我通过修改THREE.js源来修复它,如下所示。

在toJSON内部的getDataURL函数中,有一个部分将meta.images [img]路径分配给envMap的数据URL。

这是我的修复[从第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 )
        };

    }

}