@roomle/web-sdk 2.44.0-alpha.1 → 2.44.0-alpha.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.releaserc.json +55 -58
- package/README.md +3 -0
- package/lib/{banana-for-scale-c9b91436.nomodule.js → banana-for-scale-97a65f2f.nomodule.js} +2 -2
- package/lib/{banana-for-scale-c9b91436.nomodule.js.map → banana-for-scale-97a65f2f.nomodule.js.map} +1 -1
- package/lib/{banana-for-scale-1f350acc.js → banana-for-scale-e8876cf0.js} +2 -2
- package/lib/{banana-for-scale-1f350acc.js.map → banana-for-scale-e8876cf0.js.map} +1 -1
- package/lib/{budgeteer-measure-1e85a5b9.js → budgeteer-measure-23a42ba1.js} +2 -2
- package/lib/budgeteer-measure-23a42ba1.js.map +1 -0
- package/lib/budgeteer-measure.nomodule.js +1 -1
- package/lib/budgeteer-measure.nomodule.js.map +1 -1
- package/lib/{component-dimensioning-8b90144f.js → component-dimensioning-c495efe5.js} +2 -2
- package/lib/component-dimensioning-c495efe5.js.map +1 -0
- package/lib/{component-dimensioning-11e334e6.nomodule.js → component-dimensioning-c9877d28.nomodule.js} +2 -2
- package/lib/component-dimensioning-c9877d28.nomodule.js.map +1 -0
- package/lib/{component-raycast-helper-d34cf336.js → component-raycast-helper-23393bb6.js} +2 -2
- package/lib/component-raycast-helper-23393bb6.js.map +1 -0
- package/lib/{component-raycast-helper-917c5fce.nomodule.js → component-raycast-helper-3ec360cf.nomodule.js} +2 -2
- package/lib/component-raycast-helper-3ec360cf.nomodule.js.map +1 -0
- package/lib/{configurator-74c366d0.nomodule.js → configurator-6e17bbb4.nomodule.js} +2 -2
- package/lib/configurator-6e17bbb4.nomodule.js.map +1 -0
- package/lib/{configurator-fb2e05ef.js → configurator-a0113de7.js} +2 -2
- package/lib/configurator-a0113de7.js.map +1 -0
- package/lib/configurator-dummy-app.js.map +1 -1
- package/lib/configurator-dummy.html +167 -79
- package/lib/configurator-main-10fa7f9b.js +2 -0
- package/lib/configurator-main-10fa7f9b.js.map +1 -0
- package/lib/configurator-main.nomodule.js +1 -1
- package/lib/{default-light-setting-43be6138.js → default-light-setting-408ac1bd.js} +2 -2
- package/lib/default-light-setting-408ac1bd.js.map +1 -0
- package/lib/{default-light-setting-e2fe40ee.nomodule.js → default-light-setting-f72c0eb6.nomodule.js} +2 -2
- package/lib/default-light-setting-f72c0eb6.nomodule.js.map +1 -0
- package/lib/definitions/common-core/src/lightsetting/dynamic-light-setting-loader.d.ts +1 -1
- package/lib/definitions/common-core/src/main.d.ts +3 -4
- package/lib/definitions/common-core/src/utils/shims.d.ts +2 -2
- package/lib/definitions/configurator-core/src/roomle-configurator.d.ts +70 -70
- package/lib/definitions/configurator-core/src/services/configurator-ui-callback.d.ts +5 -5
- package/lib/definitions/glb-viewer-core/src/roomle-glb-viewer.d.ts +2 -2
- package/lib/definitions/material-viewer/src/roomle-material-viewer.d.ts +2 -2
- package/lib/definitions/planner-core/src/roomle-planner-ui-callback.d.ts +1 -0
- package/lib/{dimensioning-helper-439a1eab.js → dimensioning-helper-be971abb.js} +2 -2
- package/lib/{dimensioning-helper-439a1eab.js.map → dimensioning-helper-be971abb.js.map} +1 -1
- package/lib/{dimensioning-helper-5d68f7b8.nomodule.js → dimensioning-helper-d1ca3c93.nomodule.js} +2 -2
- package/lib/dimensioning-helper-d1ca3c93.nomodule.js.map +1 -0
- package/lib/embedding-dummy.html +122 -94
- package/lib/{glb-viewer-d2d45ce4.js → glb-viewer-1c3b5760.js} +2 -2
- package/lib/{glb-viewer-d2d45ce4.js.map → glb-viewer-1c3b5760.js.map} +1 -1
- package/lib/{glb-viewer-185f0c5b.nomodule.js → glb-viewer-21871044.nomodule.js} +2 -2
- package/lib/{glb-viewer-185f0c5b.nomodule.js.map → glb-viewer-21871044.nomodule.js.map} +1 -1
- package/lib/glb-viewer-dummy-app.js.map +1 -1
- package/lib/glb-viewer-dummy.html +44 -30
- package/lib/glb-viewer-main-76258bd6.js +2 -0
- package/lib/glb-viewer-main-76258bd6.js.map +1 -0
- package/lib/glb-viewer-main.nomodule.js +1 -1
- package/lib/legacy/{banana-for-scale-35cca9b6.legacy.js → banana-for-scale-5bbe2474.legacy.js} +2 -2
- package/lib/legacy/{banana-for-scale-35cca9b6.legacy.js.map → banana-for-scale-5bbe2474.legacy.js.map} +1 -1
- package/lib/legacy/budgeteer-measure.legacy.js +1 -1
- package/lib/legacy/budgeteer-measure.legacy.js.map +1 -1
- package/lib/legacy/{component-dimensioning-9aeb85f3.legacy.js → component-dimensioning-19219632.legacy.js} +2 -2
- package/lib/legacy/component-dimensioning-19219632.legacy.js.map +1 -0
- package/lib/legacy/{component-raycast-helper-c9e6fa8a.legacy.js → component-raycast-helper-8f7251fb.legacy.js} +2 -2
- package/lib/legacy/component-raycast-helper-8f7251fb.legacy.js.map +1 -0
- package/lib/legacy/{configurator-0dc9d32c.legacy.js → configurator-25fd6957.legacy.js} +2 -2
- package/lib/legacy/configurator-25fd6957.legacy.js.map +1 -0
- package/lib/legacy/configurator-main.legacy.js +1 -1
- package/lib/legacy/{default-light-setting-bb797007.legacy.js → default-light-setting-fc14e161.legacy.js} +2 -2
- package/lib/legacy/default-light-setting-fc14e161.legacy.js.map +1 -0
- package/lib/legacy/{dimensioning-helper-9d5a7b3c.legacy.js → dimensioning-helper-3703ce6f.legacy.js} +2 -2
- package/lib/legacy/dimensioning-helper-3703ce6f.legacy.js.map +1 -0
- package/lib/legacy/{glb-viewer-069756aa.legacy.js → glb-viewer-750198d1.legacy.js} +2 -2
- package/lib/legacy/{glb-viewer-069756aa.legacy.js.map → glb-viewer-750198d1.legacy.js.map} +1 -1
- package/lib/legacy/glb-viewer-main.legacy.js +1 -1
- package/lib/legacy/{main-thread-to-worker-f535fe2c.legacy.js → main-thread-to-worker-cc24f989.legacy.js} +1 -1
- package/lib/legacy/main-thread-to-worker-cc24f989.legacy.js.map +1 -0
- package/lib/legacy/{material-viewer-a96582f6.legacy.js → material-viewer-85314524.legacy.js} +2 -2
- package/lib/legacy/material-viewer-85314524.legacy.js.map +1 -0
- package/lib/legacy/material-viewer-main.legacy.js +1 -1
- package/lib/legacy/{pixotron-4d1c8db2.legacy.js → pixotron-fe363849.legacy.js} +2 -2
- package/lib/legacy/{pixotron-4d1c8db2.legacy.js.map → pixotron-fe363849.legacy.js.map} +1 -1
- package/lib/legacy/planner-a422d4e7.legacy.js +2 -0
- package/lib/legacy/{planner-3334d9c4.legacy.js.map → planner-a422d4e7.legacy.js.map} +1 -1
- package/lib/legacy/planner-main.legacy.js +1 -1
- package/lib/legacy/{roomle-configurator-cd107a29.legacy.js → roomle-configurator-4ac0dbee.legacy.js} +2 -2
- package/lib/legacy/{roomle-configurator-cd107a29.legacy.js.map → roomle-configurator-4ac0dbee.legacy.js.map} +1 -1
- package/lib/legacy/roomle-dependency-injection-c859bb7b.legacy.js +16 -0
- package/lib/legacy/{roomle-dependency-injection-aa414f84.legacy.js.map → roomle-dependency-injection-c859bb7b.legacy.js.map} +1 -1
- package/lib/legacy/roomle-sdk.legacy.js +1 -1
- package/lib/legacy/{script-loader-37d724e7.legacy.js → script-loader-e0a57fb9.legacy.js} +2 -2
- package/lib/legacy/script-loader-e0a57fb9.legacy.js.map +1 -0
- package/lib/legacy/static/DepthShadowGenerator-a3a9d85ff2c3d24c.js +266 -0
- package/lib/legacy/static/Tween-5ebfb82307807fdc.js +767 -0
- package/lib/legacy/static/{asset-loader.worker-7fdd71efd75f50d4.js → asset-loader.worker-caa87aba0f76ce49.js} +1 -1
- package/lib/legacy/static/{budgeteer.sw-6e3fb7e14289ed96.js → budgeteer.sw-0a8d4e36e18346a5.js} +1 -1
- package/lib/legacy/static/camera-05824b47cdb951e4.json +39 -0
- package/lib/legacy/static/dat.gui.min-24a0d861d5534d62.js +2447 -0
- package/lib/legacy/static/rubik_regular-bc008a7de2daee79.json +3535 -0
- package/lib/legacy/static/rubik_regular_sub-2dd2d5cca49018c5.json +168 -0
- package/lib/{static/shaders-af852933f81878aa.json → legacy/static/shaders-219b62c099a8555a.json} +1 -1
- package/lib/legacy/{stats-helper-358f1fcc.legacy.js → stats-helper-301dc461.legacy.js} +2 -2
- package/lib/legacy/{stats-helper-358f1fcc.legacy.js.map → stats-helper-301dc461.legacy.js.map} +1 -1
- package/lib/legacy/{tools-core-f3b4d22c.legacy.js → tools-core-762555af.legacy.js} +2 -2
- package/lib/legacy/tools-core-762555af.legacy.js.map +1 -0
- package/lib/{main-thread-to-worker-31ec8d3a.nomodule.js → main-thread-to-worker-6a4eb1ee.nomodule.js} +1 -1
- package/lib/main-thread-to-worker-6a4eb1ee.nomodule.js.map +1 -0
- package/lib/{main-thread-to-worker-e9986fa8.js → main-thread-to-worker-88f74244.js} +1 -1
- package/lib/main-thread-to-worker-88f74244.js.map +1 -0
- package/lib/{material-viewer-e7514f95.js → material-viewer-4c7564b3.js} +2 -2
- package/lib/material-viewer-4c7564b3.js.map +1 -0
- package/lib/{material-viewer-2db93afe.nomodule.js → material-viewer-5591d60a.nomodule.js} +2 -2
- package/lib/material-viewer-5591d60a.nomodule.js.map +1 -0
- package/lib/material-viewer-dummy-app.js.map +1 -1
- package/lib/material-viewer-dummy.html +39 -22
- package/lib/material-viewer-main-16e395e9.js +2 -0
- package/lib/material-viewer-main-16e395e9.js.map +1 -0
- package/lib/material-viewer-main.nomodule.js +1 -1
- package/lib/measure.html +27 -34
- package/lib/{pixotron-e1f44e21.js → pixotron-5905d47b.js} +2 -2
- package/lib/{pixotron-e1f44e21.js.map → pixotron-5905d47b.js.map} +1 -1
- package/lib/{pixotron-11d8ecf1.nomodule.js → pixotron-9fe87cf0.nomodule.js} +2 -2
- package/lib/{pixotron-11d8ecf1.nomodule.js.map → pixotron-9fe87cf0.nomodule.js.map} +1 -1
- package/lib/planner-85bd03e6.nomodule.js +2 -0
- package/lib/{planner-2fb083b9.nomodule.js.map → planner-85bd03e6.nomodule.js.map} +1 -1
- package/lib/planner-dummy-app.js.map +1 -1
- package/lib/planner-dummy.html +64 -43
- package/lib/planner-e72d2ec5.js +2 -0
- package/lib/{planner-b9697b33.js.map → planner-e72d2ec5.js.map} +1 -1
- package/lib/planner-main-0d79120f.js +2 -0
- package/lib/planner-main-0d79120f.js.map +1 -0
- package/lib/planner-main.nomodule.js +1 -1
- package/lib/{roomle-configurator-3bc0f646.js → roomle-configurator-43aab7fd.js} +2 -2
- package/lib/{roomle-configurator-3bc0f646.js.map → roomle-configurator-43aab7fd.js.map} +1 -1
- package/lib/{roomle-configurator-e2cafe97.nomodule.js → roomle-configurator-e72d373d.nomodule.js} +2 -2
- package/lib/{roomle-configurator-e2cafe97.nomodule.js.map → roomle-configurator-e72d373d.nomodule.js.map} +1 -1
- package/lib/roomle-dependency-injection-0464676f.js +16 -0
- package/lib/{roomle-dependency-injection-244ed68c.js.map → roomle-dependency-injection-0464676f.js.map} +1 -1
- package/lib/roomle-dependency-injection-07615f35.nomodule.js +16 -0
- package/lib/{roomle-dependency-injection-4c51790a.nomodule.js.map → roomle-dependency-injection-07615f35.nomodule.js.map} +1 -1
- package/lib/{roomle-sdk-9cc773d7.js → roomle-sdk-dd5cc592.js} +2 -2
- package/lib/roomle-sdk-dd5cc592.js.map +1 -0
- package/lib/roomle-sdk.nomodule.js +1 -1
- package/lib/{script-loader-584a0480.js → script-loader-394f7657.js} +2 -2
- package/lib/script-loader-394f7657.js.map +1 -0
- package/lib/{script-loader-ff5cfb68.nomodule.js → script-loader-8efb6055.nomodule.js} +2 -2
- package/lib/script-loader-8efb6055.nomodule.js.map +1 -0
- package/lib/static/{DepthShadowGenerator-4c4b06f0801c4034.js → DepthShadowGenerator-a3a9d85ff2c3d24c.js} +0 -0
- package/lib/static/DepthShadowGenerator-a3a9d85ff2c3d24c.js.map +1 -0
- package/lib/static/{Tween-d024b02fe34f25ab.js → Tween-5ebfb82307807fdc.js} +0 -0
- package/lib/static/Tween-5ebfb82307807fdc.js.map +1 -0
- package/lib/static/{asset-loader.worker-7fdd71efd75f50d4.js → asset-loader.worker-caa87aba0f76ce49.js} +1 -1
- package/lib/static/{asset-loader.worker-7fdd71efd75f50d4.js.map → asset-loader.worker-caa87aba0f76ce49.js.map} +0 -0
- package/lib/static/asset-loader.worker.js +1 -1
- package/lib/static/{budgeteer.sw-6e3fb7e14289ed96.js → budgeteer.sw-0a8d4e36e18346a5.js} +1 -1
- package/lib/static/{budgeteer.sw-6e3fb7e14289ed96.js.map → budgeteer.sw-0a8d4e36e18346a5.js.map} +0 -0
- package/lib/static/budgeteer.sw.js +1 -1
- package/lib/static/camera-05824b47cdb951e4.json +39 -0
- package/lib/static/{dat.gui.min-b5cbb61e5c62f0bf.js → dat.gui.min-24a0d861d5534d62.js} +0 -0
- package/lib/static/dat.gui.min-24a0d861d5534d62.js.map +1 -0
- package/lib/static/rubik_regular-bc008a7de2daee79.json +3535 -0
- package/lib/static/rubik_regular_sub-2dd2d5cca49018c5.json +168 -0
- package/lib/{legacy/static/shaders-af852933f81878aa.json → static/shaders-219b62c099a8555a.json} +1 -1
- package/lib/static/worker-to-main-thread-3ad1cee7.js +1 -0
- package/lib/static/worker-to-main-thread-3ad1cee7.js.map +1 -0
- package/lib/{stats-helper-bd19ced2.nomodule.js → stats-helper-13e6116f.nomodule.js} +2 -2
- package/lib/{stats-helper-bd19ced2.nomodule.js.map → stats-helper-13e6116f.nomodule.js.map} +1 -1
- package/lib/{stats-helper-a6263360.js → stats-helper-ab16facc.js} +2 -2
- package/lib/{stats-helper-a6263360.js.map → stats-helper-ab16facc.js.map} +1 -1
- package/lib/{tools-core-4f0c9377.js → tools-core-bef60f9d.js} +2 -2
- package/lib/tools-core-bef60f9d.js.map +1 -0
- package/lib/{tools-core-f609446a.nomodule.js → tools-core-c6126068.nomodule.js} +2 -2
- package/lib/tools-core-c6126068.nomodule.js.map +1 -0
- package/package.json +2 -2
- package/scripts/copy-assets-sdk.js +66 -54
- package/lib/budgeteer-measure-1e85a5b9.js.map +0 -1
- package/lib/component-dimensioning-11e334e6.nomodule.js.map +0 -1
- package/lib/component-dimensioning-8b90144f.js.map +0 -1
- package/lib/component-raycast-helper-917c5fce.nomodule.js.map +0 -1
- package/lib/component-raycast-helper-d34cf336.js.map +0 -1
- package/lib/configurator-74c366d0.nomodule.js.map +0 -1
- package/lib/configurator-fb2e05ef.js.map +0 -1
- package/lib/configurator-main-082f03f0.js +0 -2
- package/lib/configurator-main-082f03f0.js.map +0 -1
- package/lib/default-light-setting-43be6138.js.map +0 -1
- package/lib/default-light-setting-e2fe40ee.nomodule.js.map +0 -1
- package/lib/dimensioning-helper-5d68f7b8.nomodule.js.map +0 -1
- package/lib/glb-viewer-main-e2508ced.js +0 -2
- package/lib/glb-viewer-main-e2508ced.js.map +0 -1
- package/lib/legacy/component-dimensioning-9aeb85f3.legacy.js.map +0 -1
- package/lib/legacy/component-raycast-helper-c9e6fa8a.legacy.js.map +0 -1
- package/lib/legacy/configurator-0dc9d32c.legacy.js.map +0 -1
- package/lib/legacy/default-light-setting-bb797007.legacy.js.map +0 -1
- package/lib/legacy/dimensioning-helper-9d5a7b3c.legacy.js.map +0 -1
- package/lib/legacy/main-thread-to-worker-f535fe2c.legacy.js.map +0 -1
- package/lib/legacy/material-viewer-a96582f6.legacy.js.map +0 -1
- package/lib/legacy/planner-3334d9c4.legacy.js +0 -2
- package/lib/legacy/roomle-dependency-injection-aa414f84.legacy.js +0 -16
- package/lib/legacy/script-loader-37d724e7.legacy.js.map +0 -1
- package/lib/legacy/static/DepthShadowGenerator-4c4b06f0801c4034.js +0 -262
- package/lib/legacy/static/Tween-d024b02fe34f25ab.js +0 -913
- package/lib/legacy/static/camera-f4cef679615485dc.json +0 -39
- package/lib/legacy/static/dat.gui.min-b5cbb61e5c62f0bf.js +0 -13
- package/lib/legacy/static/rubik_regular-75bd7bb699e9e39d.json +0 -1
- package/lib/legacy/static/rubik_regular_sub-eb3f3b61078695cc.json +0 -1
- package/lib/legacy/tools-core-f3b4d22c.legacy.js.map +0 -1
- package/lib/main-thread-to-worker-31ec8d3a.nomodule.js.map +0 -1
- package/lib/main-thread-to-worker-e9986fa8.js.map +0 -1
- package/lib/material-viewer-2db93afe.nomodule.js.map +0 -1
- package/lib/material-viewer-e7514f95.js.map +0 -1
- package/lib/material-viewer-main-50c85f10.js +0 -2
- package/lib/material-viewer-main-50c85f10.js.map +0 -1
- package/lib/planner-2fb083b9.nomodule.js +0 -2
- package/lib/planner-b9697b33.js +0 -2
- package/lib/planner-main-ac348208.js +0 -2
- package/lib/planner-main-ac348208.js.map +0 -1
- package/lib/roomle-dependency-injection-244ed68c.js +0 -16
- package/lib/roomle-dependency-injection-4c51790a.nomodule.js +0 -16
- package/lib/roomle-sdk-9cc773d7.js.map +0 -1
- package/lib/script-loader-584a0480.js.map +0 -1
- package/lib/script-loader-ff5cfb68.nomodule.js.map +0 -1
- package/lib/static/DepthShadowGenerator-4c4b06f0801c4034.js.map +0 -1
- package/lib/static/Tween-d024b02fe34f25ab.js.map +0 -1
- package/lib/static/camera-f4cef679615485dc.json +0 -39
- package/lib/static/dat.gui.min-b5cbb61e5c62f0bf.js.map +0 -1
- package/lib/static/rubik_regular-75bd7bb699e9e39d.json +0 -1
- package/lib/static/rubik_regular_sub-eb3f3b61078695cc.json +0 -1
- package/lib/tools-core-4f0c9377.js.map +0 -1
- package/lib/tools-core-f609446a.nomodule.js.map +0 -1
|
@@ -0,0 +1,266 @@
|
|
|
1
|
+
THREE.DepthShadowGenerator = {
|
|
2
|
+
clamp01: function (num) {
|
|
3
|
+
return num <= 0 ? 0 : num >= 1 ? 1 : num;
|
|
4
|
+
},
|
|
5
|
+
|
|
6
|
+
idealPowerOfTwoSize: function (num) {
|
|
7
|
+
// 2,4,8,16,32,64,128,256,512,1024
|
|
8
|
+
if (num > 800) {
|
|
9
|
+
return 1024;
|
|
10
|
+
} else if (num > 400) {
|
|
11
|
+
return 512;
|
|
12
|
+
} else if (num > 200) {
|
|
13
|
+
return 256;
|
|
14
|
+
} else if (num > 100) {
|
|
15
|
+
return 128;
|
|
16
|
+
} else if (num > 50) {
|
|
17
|
+
return 64;
|
|
18
|
+
} else if (num > 25) {
|
|
19
|
+
return 32;
|
|
20
|
+
} else {
|
|
21
|
+
return 16;
|
|
22
|
+
}
|
|
23
|
+
},
|
|
24
|
+
|
|
25
|
+
blurTexture: function (
|
|
26
|
+
data,
|
|
27
|
+
textureFormat,
|
|
28
|
+
shadowRenderRes,
|
|
29
|
+
blurRadiusRelative
|
|
30
|
+
) {
|
|
31
|
+
var pixelSize = textureFormat === THREE.RGBFormat ? 3 : 4;
|
|
32
|
+
|
|
33
|
+
var shadowRes = blurRadiusRelative
|
|
34
|
+
.clone()
|
|
35
|
+
.multiplyScalar(2)
|
|
36
|
+
.addScalar(1)
|
|
37
|
+
.multiply(shadowRenderRes)
|
|
38
|
+
.multiply(blurRadiusRelative)
|
|
39
|
+
.multiplyScalar(2);
|
|
40
|
+
shadowRes.x = this.idealPowerOfTwoSize(shadowRes.x);
|
|
41
|
+
shadowRes.y = this.idealPowerOfTwoSize(shadowRes.y);
|
|
42
|
+
|
|
43
|
+
var shadowDataLength = shadowRes.x * shadowRes.y;
|
|
44
|
+
var shadowData = new Uint8Array(shadowDataLength);
|
|
45
|
+
|
|
46
|
+
for (var sx = 0; sx < shadowRes.x; sx++) {
|
|
47
|
+
var x = sx / (shadowRes.x - 1);
|
|
48
|
+
|
|
49
|
+
// xr is negative and above 1.0 when outside of objecgt bounding-box
|
|
50
|
+
var xr = (x - 0.5) * (1 + 2 * blurRadiusRelative.x) + 0.5;
|
|
51
|
+
|
|
52
|
+
var srcPosXmin = Math.round(
|
|
53
|
+
(xr - blurRadiusRelative.x) * shadowRenderRes.x
|
|
54
|
+
);
|
|
55
|
+
var srcPosXmax = Math.round(
|
|
56
|
+
(xr + blurRadiusRelative.x) * shadowRenderRes.x
|
|
57
|
+
);
|
|
58
|
+
|
|
59
|
+
for (var sy = 0; sy < shadowRes.y; sy++) {
|
|
60
|
+
var i = sy * shadowRes.x;
|
|
61
|
+
|
|
62
|
+
var y = sy / (shadowRes.y - 1);
|
|
63
|
+
|
|
64
|
+
// xr is negative and above 1.0 when outside of objecgt bounding-box
|
|
65
|
+
var yr = (y - 0.5) * (1 + 2 * blurRadiusRelative.y) + 0.5;
|
|
66
|
+
|
|
67
|
+
var srcPosYmin = Math.round(
|
|
68
|
+
(yr - blurRadiusRelative.y) * shadowRenderRes.y
|
|
69
|
+
);
|
|
70
|
+
var srcPosYmax = Math.round(
|
|
71
|
+
(yr + blurRadiusRelative.y) * shadowRenderRes.y
|
|
72
|
+
);
|
|
73
|
+
|
|
74
|
+
var value = 0;
|
|
75
|
+
var count = 0;
|
|
76
|
+
|
|
77
|
+
var xHalfRange = (srcPosXmax - srcPosXmin) / 2.0;
|
|
78
|
+
if (xHalfRange == 0) {
|
|
79
|
+
xHalfRange = 1;
|
|
80
|
+
}
|
|
81
|
+
var xCenter = (srcPosXmax + srcPosXmin) / 2.0;
|
|
82
|
+
|
|
83
|
+
var yHalfRange = (srcPosYmax - srcPosYmin) / 2.0;
|
|
84
|
+
if (yHalfRange == 0) {
|
|
85
|
+
yHalfRange = 1;
|
|
86
|
+
}
|
|
87
|
+
var yCenter = (srcPosYmax + srcPosYmin) / 2.0;
|
|
88
|
+
|
|
89
|
+
for (var dx = srcPosXmin; dx <= srcPosXmax; dx++) {
|
|
90
|
+
var xWeight = Math.abs(dx - xCenter) / xHalfRange;
|
|
91
|
+
|
|
92
|
+
for (var dy = srcPosYmin; dy <= srcPosYmax; dy++) {
|
|
93
|
+
var yWeight = Math.abs(dy - yCenter) / yHalfRange;
|
|
94
|
+
|
|
95
|
+
// weight = normalized distance to center (radius) inverted
|
|
96
|
+
var weight = 1 - Math.sqrt(xWeight * xWeight + yWeight * yWeight);
|
|
97
|
+
|
|
98
|
+
if (weight < 0.01) {
|
|
99
|
+
continue;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
var newValue = 0;
|
|
103
|
+
if (
|
|
104
|
+
dx < 0 ||
|
|
105
|
+
dx >= shadowRenderRes.x ||
|
|
106
|
+
dy < 0 ||
|
|
107
|
+
dy >= shadowRenderRes.y
|
|
108
|
+
) {
|
|
109
|
+
newValue = 1;
|
|
110
|
+
} else {
|
|
111
|
+
var srcPos = dx + dy * shadowRenderRes.x;
|
|
112
|
+
// sample red color value from source texture (is monochrome anyways)
|
|
113
|
+
newValue = data[srcPos * pixelSize] / 255.0;
|
|
114
|
+
}
|
|
115
|
+
value += 1 - (1 - newValue) * weight;
|
|
116
|
+
count++;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
value = value / count;
|
|
121
|
+
value = Math.pow(value, 0.5);
|
|
122
|
+
value = 255 * value;
|
|
123
|
+
|
|
124
|
+
// sample original value for visual debug purpose
|
|
125
|
+
/*
|
|
126
|
+
var original = 255;
|
|
127
|
+
if(xr>=0 && xr<=1 && yr>=0 && yr<=1 ) {
|
|
128
|
+
var srcPos = Math.floor( xr * shadowRenderRes.x ) + Math.floor( yr * shadowRenderRes.y ) * shadowRenderRes.x;
|
|
129
|
+
original = data[srcPos*pixelSize];
|
|
130
|
+
}
|
|
131
|
+
//*/
|
|
132
|
+
var destIndex = i + sx;
|
|
133
|
+
shadowData[destIndex] = value;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
rampTex = new THREE.DataTexture(
|
|
138
|
+
shadowData,
|
|
139
|
+
shadowRes.x,
|
|
140
|
+
shadowRes.y,
|
|
141
|
+
THREE.LuminanceFormat,
|
|
142
|
+
THREE.UnsignedByteType,
|
|
143
|
+
THREE.UVMapping,
|
|
144
|
+
THREE.ClampToEdgeWrapping,
|
|
145
|
+
THREE.ClampToEdgeWrapping,
|
|
146
|
+
THREE.LinearFilter,
|
|
147
|
+
THREE.LinearMipMapLinearFilter
|
|
148
|
+
);
|
|
149
|
+
|
|
150
|
+
return rampTex;
|
|
151
|
+
},
|
|
152
|
+
|
|
153
|
+
createShadowPlane: function (renderer, scene, objectSize3d, layers) {
|
|
154
|
+
var renderppm = 200; // pixel per meter render resolution
|
|
155
|
+
var blurRadius = 0.1; // meter
|
|
156
|
+
// blurRadius = 0;
|
|
157
|
+
var ppm = renderppm * 0.5; // pixel per meter final resolution
|
|
158
|
+
|
|
159
|
+
var objectSize = new THREE.Vector2(objectSize3d.x, objectSize3d.z);
|
|
160
|
+
|
|
161
|
+
var shadowRenderRes = objectSize.clone().multiplyScalar(renderppm);
|
|
162
|
+
|
|
163
|
+
shadowRenderRes.x = this.idealPowerOfTwoSize(shadowRenderRes.x);
|
|
164
|
+
shadowRenderRes.y = this.idealPowerOfTwoSize(shadowRenderRes.y);
|
|
165
|
+
|
|
166
|
+
var textureFormat = THREE.RGBAFormat;
|
|
167
|
+
|
|
168
|
+
// Create the texture that will store our result
|
|
169
|
+
var bufferTexture = new THREE.WebGLRenderTarget(
|
|
170
|
+
shadowRenderRes.x,
|
|
171
|
+
shadowRenderRes.y,
|
|
172
|
+
{
|
|
173
|
+
format: textureFormat,
|
|
174
|
+
minFilter: THREE.LinearFilter,
|
|
175
|
+
magFilter: THREE.NearestFilter,
|
|
176
|
+
}
|
|
177
|
+
);
|
|
178
|
+
|
|
179
|
+
var depthMaterial = new THREE.MeshDepthMaterial();
|
|
180
|
+
// var depthMaterial = new THREE.MeshBasicMaterial();
|
|
181
|
+
// depthMaterial.color = new THREE.Color(0,1,0);
|
|
182
|
+
|
|
183
|
+
var shadowCamera = new THREE.OrthographicCamera(
|
|
184
|
+
objectSize.x / -2,
|
|
185
|
+
objectSize.x / 2,
|
|
186
|
+
objectSize.y / -2,
|
|
187
|
+
objectSize.y / 2,
|
|
188
|
+
0.01,
|
|
189
|
+
1
|
|
190
|
+
);
|
|
191
|
+
|
|
192
|
+
shadowCamera.layers.set(layers);
|
|
193
|
+
shadowCamera.position.y = -0.011;
|
|
194
|
+
shadowCamera.rotation.x = Math.PI / 2;
|
|
195
|
+
|
|
196
|
+
var planeMaterial = new THREE.MeshBasicMaterial({
|
|
197
|
+
map: bufferTexture,
|
|
198
|
+
transparent: true,
|
|
199
|
+
blending: THREE.MultiplyBlending,
|
|
200
|
+
});
|
|
201
|
+
|
|
202
|
+
var planeSize = objectSize.clone().addScalar(blurRadius * 2);
|
|
203
|
+
|
|
204
|
+
var planeGeometry = new THREE.PlaneGeometry(planeSize.x, planeSize.y, 1);
|
|
205
|
+
var shadowPlaneObject = new THREE.Mesh(planeGeometry, planeMaterial);
|
|
206
|
+
shadowPlaneObject.rotation.x = -Math.PI / 2;
|
|
207
|
+
shadowPlaneObject.name = 'ShadowPlane';
|
|
208
|
+
|
|
209
|
+
renderer.setClearColor(new THREE.Color(1, 1, 1), 1);
|
|
210
|
+
|
|
211
|
+
scene.overrideMaterial = depthMaterial;
|
|
212
|
+
|
|
213
|
+
renderer.clearTarget(bufferTexture, true, true, true);
|
|
214
|
+
|
|
215
|
+
renderer.render(scene, shadowCamera, bufferTexture);
|
|
216
|
+
|
|
217
|
+
var dataLength = shadowRenderRes.x * shadowRenderRes.y;
|
|
218
|
+
var pixelSize = textureFormat === THREE.RGBFormat ? 3 : 4;
|
|
219
|
+
var data = new Uint8Array(dataLength * pixelSize);
|
|
220
|
+
renderer.readRenderTargetPixels(
|
|
221
|
+
bufferTexture,
|
|
222
|
+
0,
|
|
223
|
+
0,
|
|
224
|
+
shadowRenderRes.x,
|
|
225
|
+
shadowRenderRes.y,
|
|
226
|
+
data
|
|
227
|
+
);
|
|
228
|
+
|
|
229
|
+
var blurRadiusRelative = new THREE.Vector2(
|
|
230
|
+
blurRadius / objectSize.x,
|
|
231
|
+
blurRadius / objectSize.y
|
|
232
|
+
);
|
|
233
|
+
|
|
234
|
+
var rampTex = this.blurTexture(
|
|
235
|
+
data,
|
|
236
|
+
textureFormat,
|
|
237
|
+
shadowRenderRes,
|
|
238
|
+
blurRadiusRelative
|
|
239
|
+
);
|
|
240
|
+
|
|
241
|
+
// show original render target texture
|
|
242
|
+
/*
|
|
243
|
+
rampTex = new THREE.DataTexture(
|
|
244
|
+
data,
|
|
245
|
+
shadowRenderRes.x,
|
|
246
|
+
shadowRenderRes.y,
|
|
247
|
+
textureFormat,
|
|
248
|
+
THREE.UnsignedByteType,
|
|
249
|
+
THREE.UVMapping,
|
|
250
|
+
THREE.ClampToEdgeWrapping,
|
|
251
|
+
THREE.ClampToEdgeWrapping,
|
|
252
|
+
THREE.LinearFilter,
|
|
253
|
+
THREE.LinearMipMapLinearFilter
|
|
254
|
+
);
|
|
255
|
+
//*/
|
|
256
|
+
|
|
257
|
+
rampTex.generateMipmaps = true;
|
|
258
|
+
rampTex.needsUpdate = true;
|
|
259
|
+
|
|
260
|
+
planeMaterial.map = rampTex;
|
|
261
|
+
|
|
262
|
+
scene.overrideMaterial = null;
|
|
263
|
+
|
|
264
|
+
return shadowPlaneObject;
|
|
265
|
+
},
|
|
266
|
+
};
|