1 |
- {"ast":null,"code":"import { Vector3 } from \"../../Maths/math.vector.js\";\n\n/**\n * Helper class useful to convert panorama picture to their cubemap representation in 6 faces.\n */\nexport class PanoramaToCubeMapTools {\n /**\n * Converts a panorama stored in RGB right to left up to down format into a cubemap (6 faces).\n *\n * @param float32Array The source data.\n * @param inputWidth The width of the input panorama.\n * @param inputHeight The height of the input panorama.\n * @param size The willing size of the generated cubemap (each faces will be size * size pixels)\n * @param supersample enable supersampling the cubemap\n * @returns The cubemap data\n */\n static ConvertPanoramaToCubemap(float32Array, inputWidth, inputHeight, size, supersample = false) {\n if (!float32Array) {\n // eslint-disable-next-line no-throw-literal\n throw \"ConvertPanoramaToCubemap: input cannot be null\";\n }\n if (float32Array.length != inputWidth * inputHeight * 3) {\n // eslint-disable-next-line no-throw-literal\n throw \"ConvertPanoramaToCubemap: input size is wrong\";\n }\n const textureFront = this.CreateCubemapTexture(size, this.FACE_FRONT, float32Array, inputWidth, inputHeight, supersample);\n const textureBack = this.CreateCubemapTexture(size, this.FACE_BACK, float32Array, inputWidth, inputHeight, supersample);\n const textureLeft = this.CreateCubemapTexture(size, this.FACE_LEFT, float32Array, inputWidth, inputHeight, supersample);\n const textureRight = this.CreateCubemapTexture(size, this.FACE_RIGHT, float32Array, inputWidth, inputHeight, supersample);\n const textureUp = this.CreateCubemapTexture(size, this.FACE_UP, float32Array, inputWidth, inputHeight, supersample);\n const textureDown = this.CreateCubemapTexture(size, this.FACE_DOWN, float32Array, inputWidth, inputHeight, supersample);\n return {\n front: textureFront,\n back: textureBack,\n left: textureLeft,\n right: textureRight,\n up: textureUp,\n down: textureDown,\n size: size,\n type: 1,\n format: 4,\n gammaSpace: false\n };\n }\n static CreateCubemapTexture(texSize, faceData, float32Array, inputWidth, inputHeight, supersample = false) {\n const buffer = new ArrayBuffer(texSize * texSize * 4 * 3);\n const textureArray = new Float32Array(buffer);\n // If supersampling, determine number of samples needed when source texture width is divided for 4 cube faces\n const samples = supersample ? Math.max(1, Math.round(inputWidth / 4 / texSize)) : 1;\n const sampleFactor = 1 / samples;\n const sampleFactorSqr = sampleFactor * sampleFactor;\n const rotDX1 = faceData[1].subtract(faceData[0]).scale(sampleFactor / texSize);\n const rotDX2 = faceData[3].subtract(faceData[2]).scale(sampleFactor / texSize);\n const dy = 1 / texSize;\n let fy = 0;\n for (let y = 0; y < texSize; y++) {\n for (let sy = 0; sy < samples; sy++) {\n let xv1 = faceData[0];\n let xv2 = faceData[2];\n for (let x = 0; x < texSize; x++) {\n for (let sx = 0; sx < samples; sx++) {\n const v = xv2.subtract(xv1).scale(fy).add(xv1);\n v.normalize();\n const color = this.CalcProjectionSpherical(v, float32Array, inputWidth, inputHeight);\n // 3 channels per pixels\n textureArray[y * texSize * 3 + x * 3 + 0] += color.r * sampleFactorSqr;\n textureArray[y * texSize * 3 + x * 3 + 1] += color.g * sampleFactorSqr;\n textureArray[y * texSize * 3 + x * 3 + 2] += color.b * sampleFactorSqr;\n xv1 = xv1.add(rotDX1);\n xv2 = xv2.add(rotDX2);\n }\n }\n fy += dy * sampleFactor;\n }\n }\n return textureArray;\n }\n static CalcProjectionSpherical(vDir, float32Array, inputWidth, inputHeight) {\n let theta = Math.atan2(vDir.z, vDir.x);\n const phi = Math.acos(vDir.y);\n while (theta < -Math.PI) {\n theta += 2 * Math.PI;\n }\n while (theta > Math.PI) {\n theta -= 2 * Math.PI;\n }\n let dx = theta / Math.PI;\n const dy = phi / Math.PI;\n // recenter.\n dx = dx * 0.5 + 0.5;\n let px = Math.round(dx * inputWidth);\n if (px < 0) {\n px = 0;\n } else if (px >= inputWidth) {\n px = inputWidth - 1;\n }\n let py = Math.round(dy * inputHeight);\n if (py < 0) {\n py = 0;\n } else if (py >= inputHeight) {\n py = inputHeight - 1;\n }\n const inputY = inputHeight - py - 1;\n const r = float32Array[inputY * inputWidth * 3 + px * 3 + 0];\n const g = float32Array[inputY * inputWidth * 3 + px * 3 + 1];\n const b = float32Array[inputY * inputWidth * 3 + px * 3 + 2];\n return {\n r: r,\n g: g,\n b: b\n };\n }\n}\nPanoramaToCubeMapTools.FACE_LEFT = [new Vector3(-1.0, -1.0, -1.0), new Vector3(1.0, -1.0, -1.0), new Vector3(-1.0, 1.0, -1.0), new Vector3(1.0, 1.0, -1.0)];\nPanoramaToCubeMapTools.FACE_RIGHT = [new Vector3(1.0, -1.0, 1.0), new Vector3(-1.0, -1.0, 1.0), new Vector3(1.0, 1.0, 1.0), new Vector3(-1.0, 1.0, 1.0)];\nPanoramaToCubeMapTools.FACE_FRONT = [new Vector3(1.0, -1.0, -1.0), new Vector3(1.0, -1.0, 1.0), new Vector3(1.0, 1.0, -1.0), new Vector3(1.0, 1.0, 1.0)];\nPanoramaToCubeMapTools.FACE_BACK = [new Vector3(-1.0, -1.0, 1.0), new Vector3(-1.0, -1.0, -1.0), new Vector3(-1.0, 1.0, 1.0), new Vector3(-1.0, 1.0, -1.0)];\nPanoramaToCubeMapTools.FACE_DOWN = [new Vector3(1.0, 1.0, -1.0), new Vector3(1.0, 1.0, 1.0), new Vector3(-1.0, 1.0, -1.0), new Vector3(-1.0, 1.0, 1.0)];\nPanoramaToCubeMapTools.FACE_UP = [new Vector3(-1.0, -1.0, -1.0), new Vector3(-1.0, -1.0, 1.0), new Vector3(1.0, -1.0, -1.0), new Vector3(1.0, -1.0, 1.0)];","map":{"version":3,"names":["Vector3","PanoramaToCubeMapTools","ConvertPanoramaToCubemap","float32Array","inputWidth","inputHeight","size","supersample","length","textureFront","CreateCubemapTexture","FACE_FRONT","textureBack","FACE_BACK","textureLeft","FACE_LEFT","textureRight","FACE_RIGHT","textureUp","FACE_UP","textureDown","FACE_DOWN","front","back","left","right","up","down","type","format","gammaSpace","texSize","faceData","buffer","ArrayBuffer","textureArray","Float32Array","samples","Math","max","round","sampleFactor","sampleFactorSqr","rotDX1","subtract","scale","rotDX2","dy","fy","y","sy","xv1","xv2","x","sx","v","add","normalize","color","CalcProjectionSpherical","r","g","b","vDir","theta","atan2","z","phi","acos","PI","dx","px","py","inputY"],"sources":["F:/workspace/202226701027/huinongbao-app/node_modules/@babylonjs/core/Misc/HighDynamicRange/panoramaToCubemap.js"],"sourcesContent":["import { Vector3 } from \"../../Maths/math.vector.js\";\n\n/**\n * Helper class useful to convert panorama picture to their cubemap representation in 6 faces.\n */\nexport class PanoramaToCubeMapTools {\n /**\n * Converts a panorama stored in RGB right to left up to down format into a cubemap (6 faces).\n *\n * @param float32Array The source data.\n * @param inputWidth The width of the input panorama.\n * @param inputHeight The height of the input panorama.\n * @param size The willing size of the generated cubemap (each faces will be size * size pixels)\n * @param supersample enable supersampling the cubemap\n * @returns The cubemap data\n */\n static ConvertPanoramaToCubemap(float32Array, inputWidth, inputHeight, size, supersample = false) {\n if (!float32Array) {\n // eslint-disable-next-line no-throw-literal\n throw \"ConvertPanoramaToCubemap: input cannot be null\";\n }\n if (float32Array.length != inputWidth * inputHeight * 3) {\n // eslint-disable-next-line no-throw-literal\n throw \"ConvertPanoramaToCubemap: input size is wrong\";\n }\n const textureFront = this.CreateCubemapTexture(size, this.FACE_FRONT, float32Array, inputWidth, inputHeight, supersample);\n const textureBack = this.CreateCubemapTexture(size, this.FACE_BACK, float32Array, inputWidth, inputHeight, supersample);\n const textureLeft = this.CreateCubemapTexture(size, this.FACE_LEFT, float32Array, inputWidth, inputHeight, supersample);\n const textureRight = this.CreateCubemapTexture(size, this.FACE_RIGHT, float32Array, inputWidth, inputHeight, supersample);\n const textureUp = this.CreateCubemapTexture(size, this.FACE_UP, float32Array, inputWidth, inputHeight, supersample);\n const textureDown = this.CreateCubemapTexture(size, this.FACE_DOWN, float32Array, inputWidth, inputHeight, supersample);\n return {\n front: textureFront,\n back: textureBack,\n left: textureLeft,\n right: textureRight,\n up: textureUp,\n down: textureDown,\n size: size,\n type: 1,\n format: 4,\n gammaSpace: false,\n };\n }\n static CreateCubemapTexture(texSize, faceData, float32Array, inputWidth, inputHeight, supersample = false) {\n const buffer = new ArrayBuffer(texSize * texSize * 4 * 3);\n const textureArray = new Float32Array(buffer);\n // If supersampling, determine number of samples needed when source texture width is divided for 4 cube faces\n const samples = supersample ? Math.max(1, Math.round(inputWidth / 4 / texSize)) : 1;\n const sampleFactor = 1 / samples;\n const sampleFactorSqr = sampleFactor * sampleFactor;\n const rotDX1 = faceData[1].subtract(faceData[0]).scale(sampleFactor / texSize);\n const rotDX2 = faceData[3].subtract(faceData[2]).scale(sampleFactor / texSize);\n const dy = 1 / texSize;\n let fy = 0;\n for (let y = 0; y < texSize; y++) {\n for (let sy = 0; sy < samples; sy++) {\n let xv1 = faceData[0];\n let xv2 = faceData[2];\n for (let x = 0; x < texSize; x++) {\n for (let sx = 0; sx < samples; sx++) {\n const v = xv2.subtract(xv1).scale(fy).add(xv1);\n v.normalize();\n const color = this.CalcProjectionSpherical(v, float32Array, inputWidth, inputHeight);\n // 3 channels per pixels\n textureArray[y * texSize * 3 + x * 3 + 0] += color.r * sampleFactorSqr;\n textureArray[y * texSize * 3 + x * 3 + 1] += color.g * sampleFactorSqr;\n textureArray[y * texSize * 3 + x * 3 + 2] += color.b * sampleFactorSqr;\n xv1 = xv1.add(rotDX1);\n xv2 = xv2.add(rotDX2);\n }\n }\n fy += dy * sampleFactor;\n }\n }\n return textureArray;\n }\n static CalcProjectionSpherical(vDir, float32Array, inputWidth, inputHeight) {\n let theta = Math.atan2(vDir.z, vDir.x);\n const phi = Math.acos(vDir.y);\n while (theta < -Math.PI) {\n theta += 2 * Math.PI;\n }\n while (theta > Math.PI) {\n theta -= 2 * Math.PI;\n }\n let dx = theta / Math.PI;\n const dy = phi / Math.PI;\n // recenter.\n dx = dx * 0.5 + 0.5;\n let px = Math.round(dx * inputWidth);\n if (px < 0) {\n px = 0;\n }\n else if (px >= inputWidth) {\n px = inputWidth - 1;\n }\n let py = Math.round(dy * inputHeight);\n if (py < 0) {\n py = 0;\n }\n else if (py >= inputHeight) {\n py = inputHeight - 1;\n }\n const inputY = inputHeight - py - 1;\n const r = float32Array[inputY * inputWidth * 3 + px * 3 + 0];\n const g = float32Array[inputY * inputWidth * 3 + px * 3 + 1];\n const b = float32Array[inputY * inputWidth * 3 + px * 3 + 2];\n return {\n r: r,\n g: g,\n b: b,\n };\n }\n}\nPanoramaToCubeMapTools.FACE_LEFT = [new Vector3(-1.0, -1.0, -1.0), new Vector3(1.0, -1.0, -1.0), new Vector3(-1.0, 1.0, -1.0), new Vector3(1.0, 1.0, -1.0)];\nPanoramaToCubeMapTools.FACE_RIGHT = [new Vector3(1.0, -1.0, 1.0), new Vector3(-1.0, -1.0, 1.0), new Vector3(1.0, 1.0, 1.0), new Vector3(-1.0, 1.0, 1.0)];\nPanoramaToCubeMapTools.FACE_FRONT = [new Vector3(1.0, -1.0, -1.0), new Vector3(1.0, -1.0, 1.0), new Vector3(1.0, 1.0, -1.0), new Vector3(1.0, 1.0, 1.0)];\nPanoramaToCubeMapTools.FACE_BACK = [new Vector3(-1.0, -1.0, 1.0), new Vector3(-1.0, -1.0, -1.0), new Vector3(-1.0, 1.0, 1.0), new Vector3(-1.0, 1.0, -1.0)];\nPanoramaToCubeMapTools.FACE_DOWN = [new Vector3(1.0, 1.0, -1.0), new Vector3(1.0, 1.0, 1.0), new Vector3(-1.0, 1.0, -1.0), new Vector3(-1.0, 1.0, 1.0)];\nPanoramaToCubeMapTools.FACE_UP = [new Vector3(-1.0, -1.0, -1.0), new Vector3(-1.0, -1.0, 1.0), new Vector3(1.0, -1.0, -1.0), new Vector3(1.0, -1.0, 1.0)];\n"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
|