THREE.RGBELoader: unsupported type : 1009
在参考下面代码使用RGBELoader的时候报这个错误:THREE.RGBELoader: unsupported type : 1009,记录一下.
// import { RGBELoader } from 'three/examples/jsm/loaders/RGBELoader';
const pmremGenerator = new PMREMGenerator(this.renderer); // 使用hdr作为背景色
pmremGenerator.compileEquirectangularShader();
const scene = this.scene;
new RGBELoader()
.setDataType(UnsignedByteType)
.load('/env/railway_bridge_02_1k.hdr', function (texture) {
const envMap = pmremGenerator.fromEquirectangular(texture).texture;
// envMap.isPmremTexture = true;
pmremGenerator.dispose();
scene.environment = envMap; // 给场景添加环境光效果
scene.background = envMap; // 给场景添加背景图
});
百度跟谷歌一下的资料都很少.然后看了一下RGBELodaer源代码,看报错那一段
没有发现UnsignedByteType,猜想应该是由于版本的关系,这个type去掉了
switch ( this.type ) {
case FloatType:
numElements = image_rgba_data.length / 4;
const floatArray = new Float32Array( numElements * 4 );
for ( let j = 0; j < numElements; j ++ ) {
RGBEByteToRGBFloat( image_rgba_data, j * 4, floatArray, j * 4 );
}
data = floatArray;
type = FloatType;
break;
case HalfFloatType:
numElements = image_rgba_data.length / 4;
const halfArray = new Uint16Array( numElements * 4 );
for ( let j = 0; j < numElements; j ++ ) {
RGBEByteToRGBHalf( image_rgba_data, j * 4, halfArray, j * 4 );
}
data = halfArray;
type = HalfFloatType;
break;
default:
console.error( 'THREE.RGBELoader: unsupported type: ', this.type );
break;
}
