kitchen-simulator 1.1.1-test.49 → 1.1.1-test.50
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/es/@history.js +2 -0
- package/es/AppContext.js +3 -0
- package/es/KitchenConfigurator.js +645 -0
- package/es/KitchenConfiguratorApp.js +480 -0
- package/es/actions/area-actions.js +14 -0
- package/es/actions/export.js +23 -0
- package/es/actions/groups-actions.js +89 -0
- package/es/actions/holes-actions.js +119 -0
- package/es/actions/items-actions.js +313 -0
- package/es/actions/lines-actions.js +81 -0
- package/es/actions/project-actions.js +281 -0
- package/es/actions/scene-actions.js +33 -0
- package/es/actions/vertices-actions.js +27 -0
- package/es/actions/viewer2d-actions.js +58 -0
- package/es/actions/viewer3d-actions.js +23 -0
- package/es/catalog/areas/area/planner-element.js +40 -0
- package/es/catalog/areas/area/textures/ceramic-tile.jpg +0 -0
- package/es/catalog/areas/area/textures/grass.jpg +0 -0
- package/es/catalog/areas/area/textures/parquet.jpg +0 -0
- package/es/catalog/areas/area/textures/strand-porcelain.jpg +0 -0
- package/es/catalog/areas/area/textures/tile1.jpg +0 -0
- package/es/catalog/catalog.js +277 -0
- package/es/catalog/envMap/nx.hdr +0 -0
- package/es/catalog/envMap/ny.hdr +0 -0
- package/es/catalog/envMap/nz.hdr +0 -0
- package/es/catalog/envMap/px.hdr +0 -0
- package/es/catalog/envMap/py.hdr +0 -0
- package/es/catalog/envMap/pz.hdr +0 -0
- package/es/catalog/factories/area-factory-3d.js +181 -0
- package/es/catalog/factories/area-factory.js +81 -0
- package/es/catalog/factories/export.js +7 -0
- package/es/catalog/factories/wall-factory-3d.js +202 -0
- package/es/catalog/factories/wall-factory.js +268 -0
- package/es/catalog/holes/door-closet/planner-element.js +222 -0
- package/es/catalog/holes/door-double/door_double.png +0 -0
- package/es/catalog/holes/door-double/planner-element.js +315 -0
- package/es/catalog/holes/door-exterior/planner-element.js +215 -0
- package/es/catalog/holes/door-interior/planner-element.js +227 -0
- package/es/catalog/holes/door-panic/panicDoor.png +0 -0
- package/es/catalog/holes/door-panic/planner-element.js +503 -0
- package/es/catalog/holes/door-panic-double/panicDoorDouble.png +0 -0
- package/es/catalog/holes/door-panic-double/planner-element.js +463 -0
- package/es/catalog/holes/door-sliding/planner-element.js +225 -0
- package/es/catalog/holes/doorway-framed/planner-element.js +145 -0
- package/es/catalog/holes/doorway-frameless/planner-element.js +104 -0
- package/es/catalog/holes/export.js +13 -0
- package/es/catalog/holes/gate/gate.jpg +0 -0
- package/es/catalog/holes/window-clear/planner-element.js +166 -0
- package/es/catalog/holes/window-clear/texture.png +0 -0
- package/es/catalog/holes/window-cross/planner-element.js +165 -0
- package/es/catalog/holes/window-cross/texture.png +0 -0
- package/es/catalog/holes/window-double-hung/planner-element.js +303 -0
- package/es/catalog/holes/window-double-hung/texture.png +0 -0
- package/es/catalog/holes/window-vertical/planner-element.js +276 -0
- package/es/catalog/holes/window-vertical/texture.png +0 -0
- package/es/catalog/lines/wall/planner-element.js +70 -0
- package/es/catalog/lines/wall/textures/bricks-normal.jpg +0 -0
- package/es/catalog/lines/wall/textures/bricks-normal2.jpg +0 -0
- package/es/catalog/lines/wall/textures/bricks.jpg +0 -0
- package/es/catalog/lines/wall/textures/bricks2.jpg +0 -0
- package/es/catalog/lines/wall/textures/bricks3.jpg +0 -0
- package/es/catalog/lines/wall/textures/morden-normal.jpg +0 -0
- package/es/catalog/lines/wall/textures/morden.jpg +0 -0
- package/es/catalog/lines/wall/textures/painted-normal.jpg +0 -0
- package/es/catalog/lines/wall/textures/painted.jpg +0 -0
- package/es/catalog/lines/wall/textures/plaster-normal.jpg +0 -0
- package/es/catalog/lines/wall/textures/plaster.jpg +0 -0
- package/es/catalog/lines/wall/wall.png +0 -0
- package/es/catalog/molding/molding-dcm/planner-element.js +28 -0
- package/es/catalog/molding/molding-dcm/texture.png +0 -0
- package/es/catalog/molding/molding-fbm/planner-element.js +28 -0
- package/es/catalog/molding/molding-fbm/texture.png +0 -0
- package/es/catalog/molding/molding-lrm/planner-element.js +28 -0
- package/es/catalog/molding/molding-lrm/texture.png +0 -0
- package/es/catalog/properties/export.js +21 -0
- package/es/catalog/properties/property-checkbox.js +116 -0
- package/es/catalog/properties/property-color.js +39 -0
- package/es/catalog/properties/property-enum.js +97 -0
- package/es/catalog/properties/property-hidden.js +19 -0
- package/es/catalog/properties/property-lenght-measure.js +101 -0
- package/es/catalog/properties/property-length-measure.js +134 -0
- package/es/catalog/properties/property-length-measure_hole.js +101 -0
- package/es/catalog/properties/property-number.js +48 -0
- package/es/catalog/properties/property-read-only.js +26 -0
- package/es/catalog/properties/property-string.js +48 -0
- package/es/catalog/properties/property-toggle.js +39 -0
- package/es/catalog/properties/shared-property-style.js +14 -0
- package/es/catalog/utils/FuseUtils.js +82 -0
- package/es/catalog/utils/exporter.js +148 -0
- package/es/catalog/utils/geom-utils.js +189 -0
- package/es/catalog/utils/item-loader.js +1521 -0
- package/es/catalog/utils/load-obj.js +91 -0
- package/es/catalog/utils/mtl-loader.js +358 -0
- package/es/catalog/utils/obj-loader.js +477 -0
- package/es/class/FuseUtils.js +82 -0
- package/es/class/area.js +145 -0
- package/es/class/export.js +24 -0
- package/es/class/group.js +440 -0
- package/es/class/guide.js +62 -0
- package/es/class/hole.js +929 -0
- package/es/class/item.js +1883 -0
- package/es/class/layer.js +667 -0
- package/es/class/line.js +1180 -0
- package/es/class/project.js +793 -0
- package/es/class/vertex.js +202 -0
- package/es/components/content.js +107 -0
- package/es/components/disclaimer/disclaimer.js +97 -0
- package/es/components/export.js +9 -0
- package/es/components/style/button.js +113 -0
- package/es/components/style/cancel-button.js +22 -0
- package/es/components/style/content-container.js +33 -0
- package/es/components/style/content-title.js +29 -0
- package/es/components/style/delete-button.js +25 -0
- package/es/components/style/export.js +31 -0
- package/es/components/style/form-block.js +24 -0
- package/es/components/style/form-color-input.js +27 -0
- package/es/components/style/form-label.js +26 -0
- package/es/components/style/form-number-input.js +213 -0
- package/es/components/style/form-number-input_2.js +206 -0
- package/es/components/style/form-select.js +68 -0
- package/es/components/style/form-slider.js +61 -0
- package/es/components/style/form-submit-button.js +26 -0
- package/es/components/style/form-text-input.js +95 -0
- package/es/components/viewer2d/area.js +81 -0
- package/es/components/viewer2d/export.js +31 -0
- package/es/components/viewer2d/grids/grid-horizontal-streak.js +37 -0
- package/es/components/viewer2d/grids/grid-streak.js +37 -0
- package/es/components/viewer2d/grids/grid-vertical-streak.js +37 -0
- package/es/components/viewer2d/grids/grids.js +35 -0
- package/es/components/viewer2d/group.js +53 -0
- package/es/components/viewer2d/item.js +513 -0
- package/es/components/viewer2d/layer.js +164 -0
- package/es/components/viewer2d/line.js +882 -0
- package/es/components/viewer2d/ruler.js +100 -0
- package/es/components/viewer2d/rulerDist.js +146 -0
- package/es/components/viewer2d/rulerX.js +151 -0
- package/es/components/viewer2d/rulerY.js +153 -0
- package/es/components/viewer2d/scene.js +140 -0
- package/es/components/viewer2d/snap.js +74 -0
- package/es/components/viewer2d/state.js +78 -0
- package/es/components/viewer2d/utils.js +198 -0
- package/es/components/viewer2d/vertex.js +65 -0
- package/es/components/viewer2d/viewer2d.js +1398 -0
- package/es/components/viewer3d/camera-controls-module/camera-controls.module.js +2592 -0
- package/es/components/viewer3d/dcm.js +401 -0
- package/es/components/viewer3d/fbm.js +414 -0
- package/es/components/viewer3d/front3D.js +66 -0
- package/es/components/viewer3d/grid-creator.js +25 -0
- package/es/components/viewer3d/grids/grid-horizontal-streak.js +36 -0
- package/es/components/viewer3d/grids/grid-streak.js +27 -0
- package/es/components/viewer3d/grids/grid-vertical-streak.js +36 -0
- package/es/components/viewer3d/libs/first-person-controls.js +67 -0
- package/es/components/viewer3d/libs/helvetiker_regular.typeface.js +1281 -0
- package/es/components/viewer3d/libs/mtl-loader.js +357 -0
- package/es/components/viewer3d/libs/obj-loader.js +462 -0
- package/es/components/viewer3d/libs/orbit-controls.js +699 -0
- package/es/components/viewer3d/libs/pointer-lock-controls.js +46 -0
- package/es/components/viewer3d/lrm.js +305 -0
- package/es/components/viewer3d/model.js +708 -0
- package/es/components/viewer3d/pointer-lock-navigation.js +115 -0
- package/es/components/viewer3d/ruler-utils/itemRect.js +61 -0
- package/es/components/viewer3d/ruler-utils/layer3D.js +495 -0
- package/es/components/viewer3d/ruler-utils/ruler3D.js +227 -0
- package/es/components/viewer3d/ruler-utils/scene3D.js +60 -0
- package/es/components/viewer3d/ruler-utils/state3D.js +18 -0
- package/es/components/viewer3d/scene-creator.js +3608 -0
- package/es/components/viewer3d/three-memory-cleaner.js +51 -0
- package/es/components/viewer3d/viewer3d-first-person.js +315 -0
- package/es/components/viewer3d/viewer3d.js +2527 -0
- package/es/constants.js +636 -0
- package/es/index.js +16 -0
- package/es/models.js +510 -0
- package/es/plugins/SVGLoader.js +1412 -0
- package/es/plugins/autosave.js +33 -0
- package/es/plugins/console-debugger.js +37 -0
- package/es/plugins/export.js +9 -0
- package/es/plugins/keyboard.js +101 -0
- package/es/reducers/areas-reducer.js +12 -0
- package/es/reducers/export.js +25 -0
- package/es/reducers/groups-reducer.js +38 -0
- package/es/reducers/holes-reducer.js +62 -0
- package/es/reducers/items-reducer.js +140 -0
- package/es/reducers/lines-reducer.js +45 -0
- package/es/reducers/project-reducer.js +129 -0
- package/es/reducers/reducer.js +19 -0
- package/es/reducers/scene-reducer.js +28 -0
- package/es/reducers/user-reducer.js +40 -0
- package/es/reducers/vertices-reducer.js +19 -0
- package/es/reducers/viewer2d-reducer.js +75 -0
- package/es/reducers/viewer3d-reducer.js +56 -0
- package/es/shared-style.js +66 -0
- package/es/styles/export.js +5 -0
- package/es/styles/tabs.css +40 -0
- package/es/translator/en.js +104 -0
- package/es/translator/it.js +79 -0
- package/es/translator/ru.js +79 -0
- package/es/translator/translator.js +84 -0
- package/es/utils/browser.js +33 -0
- package/es/utils/email-validator.js +4 -0
- package/es/utils/export.js +25 -0
- package/es/utils/geometry.js +2420 -0
- package/es/utils/get-edges-of-subgraphs.js +27 -0
- package/es/utils/graph-cycles.js +237 -0
- package/es/utils/graph-inner-cycles.js +46 -0
- package/es/utils/graph.js +150 -0
- package/es/utils/helper.js +268 -0
- package/es/utils/history.js +29 -0
- package/es/utils/id-broker.js +19 -0
- package/es/utils/logger.js +8 -0
- package/es/utils/math.js +50 -0
- package/es/utils/molding.js +871 -0
- package/es/utils/name-generator.js +18 -0
- package/es/utils/objects-utils.js +50 -0
- package/es/utils/phone-validator.js +4 -0
- package/es/utils/process-black-list.js +18 -0
- package/es/utils/react-if.js +18 -0
- package/es/utils/snap-scene.js +99 -0
- package/es/utils/snap.js +237 -0
- package/es/utils/summarizeCart.js +24 -0
- package/es/utils/threeCSG.es6.js +498 -0
- package/es/version.js +2 -0
- package/lib/catalog/properties/property-string.js +55 -0
- package/lib/catalog/properties/property-toggle.js +46 -0
- package/lib/catalog/properties/shared-property-style.js +20 -0
- package/lib/catalog/utils/FuseUtils.js +88 -0
- package/lib/catalog/utils/exporter.js +155 -0
- package/lib/catalog/utils/geom-utils.js +205 -0
- package/lib/catalog/utils/item-loader.js +1533 -0
- package/lib/catalog/utils/load-obj.js +99 -0
- package/lib/catalog/utils/mtl-loader.js +363 -0
- package/lib/catalog/utils/obj-loader.js +482 -0
- package/lib/class/FuseUtils.js +88 -0
- package/lib/class/area.js +150 -0
- package/lib/class/export.js +96 -0
- package/lib/class/group.js +445 -0
- package/lib/class/guide.js +67 -0
- package/lib/class/hole.js +934 -0
- package/lib/class/item.js +1889 -0
- package/lib/class/layer.js +672 -0
- package/lib/class/line.js +1186 -0
- package/lib/class/project.js +799 -0
- package/lib/class/vertex.js +207 -0
- package/lib/components/content.js +116 -0
- package/lib/components/disclaimer/disclaimer.js +105 -0
- package/lib/components/export.js +33 -0
- package/lib/components/style/button.js +120 -0
- package/lib/components/style/cancel-button.js +29 -0
- package/lib/components/style/content-container.js +40 -0
- package/lib/components/style/content-title.js +37 -0
- package/lib/components/style/delete-button.js +34 -0
- package/lib/components/style/export.js +121 -0
- package/lib/components/style/form-block.js +31 -0
- package/lib/components/style/form-color-input.js +34 -0
- package/lib/components/style/form-label.js +33 -0
- package/lib/components/style/form-number-input.js +220 -0
- package/lib/components/style/form-number-input_2.js +213 -0
- package/lib/components/style/form-select.js +75 -0
- package/lib/components/style/form-slider.js +68 -0
- package/lib/components/style/form-submit-button.js +35 -0
- package/lib/components/style/form-text-input.js +101 -0
- package/lib/components/viewer2d/area.js +88 -0
- package/lib/components/viewer2d/export.js +121 -0
- package/lib/components/viewer2d/grids/grid-horizontal-streak.js +44 -0
- package/lib/components/viewer2d/grids/grid-streak.js +44 -0
- package/lib/components/viewer2d/grids/grid-vertical-streak.js +44 -0
- package/lib/components/viewer2d/grids/grids.js +44 -0
- package/lib/components/viewer2d/group.js +62 -0
- package/lib/components/viewer2d/item.js +521 -0
- package/lib/components/viewer2d/layer.js +171 -0
- package/lib/components/viewer2d/line.js +892 -0
- package/lib/components/viewer2d/ruler.js +107 -0
- package/lib/components/viewer2d/rulerDist.js +153 -0
- package/lib/components/viewer2d/rulerX.js +158 -0
- package/lib/components/viewer2d/rulerY.js +160 -0
- package/lib/components/viewer2d/scene.js +147 -0
- package/lib/components/viewer2d/snap.js +83 -0
- package/lib/components/viewer2d/state.js +87 -0
- package/lib/components/viewer2d/utils.js +210 -0
- package/lib/components/viewer2d/vertex.js +74 -0
- package/lib/components/viewer2d/viewer2d.js +1405 -0
- package/lib/components/viewer3d/camera-controls-module/camera-controls.module.js +2597 -0
- package/lib/components/viewer3d/dcm.js +407 -0
- package/lib/components/viewer3d/fbm.js +420 -0
- package/lib/components/viewer3d/front3D.js +75 -0
- package/lib/components/viewer3d/grid-creator.js +34 -0
- package/lib/components/viewer3d/grids/grid-horizontal-streak.js +44 -0
- package/lib/components/viewer3d/grids/grid-streak.js +35 -0
- package/lib/components/viewer3d/grids/grid-vertical-streak.js +44 -0
- package/lib/components/viewer3d/libs/first-person-controls.js +74 -0
- package/lib/components/viewer3d/libs/helvetiker_regular.typeface.js +1287 -0
- package/lib/components/viewer3d/libs/mtl-loader.js +363 -0
- package/lib/components/viewer3d/libs/obj-loader.js +468 -0
- package/lib/components/viewer3d/libs/orbit-controls.js +705 -0
- package/lib/components/viewer3d/libs/pointer-lock-controls.js +52 -0
- package/lib/components/viewer3d/lrm.js +311 -0
- package/lib/components/viewer3d/model.js +714 -0
- package/lib/components/viewer3d/pointer-lock-navigation.js +122 -0
- package/lib/components/viewer3d/ruler-utils/itemRect.js +68 -0
- package/lib/components/viewer3d/ruler-utils/layer3D.js +502 -0
- package/lib/components/viewer3d/ruler-utils/ruler3D.js +234 -0
- package/lib/components/viewer3d/ruler-utils/scene3D.js +68 -0
- package/lib/components/viewer3d/ruler-utils/state3D.js +25 -0
- package/lib/components/viewer3d/scene-creator.js +3642 -0
- package/lib/components/viewer3d/three-memory-cleaner.js +60 -0
- package/lib/components/viewer3d/viewer3d-first-person.js +320 -0
- package/lib/components/viewer3d/viewer3d.js +2532 -0
- package/lib/constants.js +645 -0
- package/lib/index.js +96 -0
- package/lib/models.js +517 -0
- package/lib/plugins/SVGLoader.js +1417 -0
- package/lib/plugins/autosave.js +39 -0
- package/lib/plugins/console-debugger.js +44 -0
- package/lib/plugins/export.js +33 -0
- package/lib/plugins/keyboard.js +107 -0
- package/lib/reducers/areas-reducer.js +18 -0
- package/lib/reducers/export.js +97 -0
- package/lib/reducers/groups-reducer.js +44 -0
- package/lib/reducers/holes-reducer.js +68 -0
- package/lib/reducers/items-reducer.js +146 -0
- package/lib/reducers/lines-reducer.js +51 -0
- package/lib/reducers/project-reducer.js +135 -0
- package/lib/reducers/reducer.js +26 -0
- package/lib/reducers/scene-reducer.js +34 -0
- package/lib/reducers/user-reducer.js +46 -0
- package/lib/reducers/vertices-reducer.js +25 -0
- package/lib/reducers/viewer2d-reducer.js +82 -0
- package/lib/reducers/viewer3d-reducer.js +63 -0
- package/lib/shared-style.js +72 -0
- package/lib/styles/export.js +13 -0
- package/lib/translator/en.js +110 -0
- package/lib/translator/it.js +85 -0
- package/lib/translator/ru.js +85 -0
- package/lib/translator/translator.js +90 -0
- package/lib/utils/browser.js +40 -0
- package/lib/utils/email-validator.js +10 -0
- package/lib/utils/export.js +56 -0
- package/lib/utils/geometry.js +2516 -0
- package/lib/utils/get-edges-of-subgraphs.js +34 -0
- package/lib/utils/graph-cycles.js +240 -0
- package/lib/utils/graph-inner-cycles.js +54 -0
- package/lib/utils/graph.js +157 -0
- package/lib/utils/helper.js +291 -0
- package/lib/utils/history.js +36 -0
- package/lib/utils/id-broker.js +25 -0
- package/lib/utils/logger.js +14 -0
- package/lib/utils/math.js +57 -0
- package/lib/utils/molding.js +895 -0
- package/lib/utils/name-generator.js +23 -0
- package/lib/utils/objects-utils.js +60 -0
- package/lib/utils/phone-validator.js +10 -0
- package/lib/utils/process-black-list.js +24 -0
- package/lib/utils/react-if.js +24 -0
- package/lib/utils/snap-scene.js +105 -0
- package/lib/utils/snap.js +249 -0
- package/lib/utils/summarizeCart.js +30 -0
- package/lib/utils/threeCSG.es6.js +503 -0
- package/lib/version.js +8 -0
- package/package.json +3 -3
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.loadGLTF = loadGLTF;
|
|
7
|
+
exports.loadObjWithMaterial = loadObjWithMaterial;
|
|
8
|
+
exports.scaleObject = scaleObject;
|
|
9
|
+
var _three = require("three");
|
|
10
|
+
var _MTLLoader = require("three/examples/jsm/loaders/MTLLoader.js");
|
|
11
|
+
var _OBJLoader = require("three/examples/jsm/loaders/OBJLoader.js");
|
|
12
|
+
var _GLTFLoader = require("three/examples/jsm/loaders/GLTFLoader.js");
|
|
13
|
+
var _DRACOLoader = require("three/examples/jsm/loaders/DRACOLoader.js");
|
|
14
|
+
var _constants = require("../../constants");
|
|
15
|
+
function loadObjWithMaterial(mtlFile, objFile, imgPath) {
|
|
16
|
+
var manager = new _three.LoadingManager();
|
|
17
|
+
var mtlLoader = new _MTLLoader.MTLLoader(manager);
|
|
18
|
+
// mtlLoader.setPath(imgPath);
|
|
19
|
+
var url = mtlFile;
|
|
20
|
+
return new Promise(function (resolve, reject) {
|
|
21
|
+
mtlLoader.load(url, function (materials) {
|
|
22
|
+
materials.preload();
|
|
23
|
+
var objLoader = new _OBJLoader.OBJLoader();
|
|
24
|
+
objLoader.setMaterials(materials);
|
|
25
|
+
objLoader.load(objFile, function (object) {
|
|
26
|
+
return resolve(object);
|
|
27
|
+
});
|
|
28
|
+
});
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
function loadGLTF(url) {
|
|
32
|
+
if (url == undefined) {
|
|
33
|
+
return Promise.reject('No url is passed');
|
|
34
|
+
}
|
|
35
|
+
var baseURL = _three.LoaderUtils.extractUrlBase(url);
|
|
36
|
+
var manager = new _three.LoadingManager();
|
|
37
|
+
|
|
38
|
+
// Intercept and override relative URLs.
|
|
39
|
+
manager.setURLModifier(function (url, path) {
|
|
40
|
+
// URIs in a glTF file may be escaped, or not. Assume that assetMap is
|
|
41
|
+
// from an un-escaped source, and decode all URIs before lookups.
|
|
42
|
+
// See: https://github.com/donmccurdy/three-gltf-viewer/issues/146
|
|
43
|
+
var normalizedURL = decodeURI(url).replace(baseURL, '').replace(/^(\.?\/)/, '');
|
|
44
|
+
|
|
45
|
+
// if (assetMap.has(normalizedURL)) {
|
|
46
|
+
// const blob = assetMap.get(normalizedURL);
|
|
47
|
+
// const blobURL = URL.createObjectURL(blob);
|
|
48
|
+
// blobURLs.push(blobURL);
|
|
49
|
+
// return blobURL;
|
|
50
|
+
// }
|
|
51
|
+
return (path || '') + url;
|
|
52
|
+
});
|
|
53
|
+
var loader = new _GLTFLoader.GLTFLoader(manager);
|
|
54
|
+
loader.setCrossOrigin('anonymous');
|
|
55
|
+
var dracoLoader = new _DRACOLoader.DRACOLoader();
|
|
56
|
+
dracoLoader.setDecoderPath('/assets/draco/');
|
|
57
|
+
loader.setDRACOLoader(dracoLoader);
|
|
58
|
+
return new Promise(function (resolve, reject) {
|
|
59
|
+
loader.load(url, function (gltf) {
|
|
60
|
+
resolve(gltf.scene);
|
|
61
|
+
}, function (xhr) {
|
|
62
|
+
// console.log("xhr", xhr);
|
|
63
|
+
// called while loading is progressing
|
|
64
|
+
// console.log( `${( xhr.loaded / xhr.total * 100 )}% loaded` );
|
|
65
|
+
}, function (error) {
|
|
66
|
+
// console.log("error", error);
|
|
67
|
+
// called when loading has errors
|
|
68
|
+
// console.error( '2= An error happened', error );
|
|
69
|
+
reject(error);
|
|
70
|
+
});
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
function scaleObject(object, defaultSizeArray, scaleSizeArray) {
|
|
74
|
+
var boundingBox = new _three.Box3().setFromObject(object);
|
|
75
|
+
var initialSizeArray = boundingBox.getSize(new _three.Vector3()).toArray();
|
|
76
|
+
for (var i = 0; i < 3; i++) {
|
|
77
|
+
scaleSizeArray[i] -= defaultSizeArray[i];
|
|
78
|
+
defaultSizeArray[i] /= initialSizeArray[i];
|
|
79
|
+
}
|
|
80
|
+
object.children.forEach(function (child) {
|
|
81
|
+
if (child.type == _constants.OBJTYPE_MESH && child.geometry instanceof _three.BufferGeometry) {
|
|
82
|
+
var position = child.geometry.attributes.position;
|
|
83
|
+
var new_pos = position.array.map(function (v, i, a) {
|
|
84
|
+
var j = i % 3;
|
|
85
|
+
var absv = Math.abs(v);
|
|
86
|
+
v = v * defaultSizeArray[j];
|
|
87
|
+
if (absv > initialSizeArray[j] / 6) {
|
|
88
|
+
v += (v > 0 ? 1 : -1) * scaleSizeArray[j] / 2;
|
|
89
|
+
}
|
|
90
|
+
return v;
|
|
91
|
+
});
|
|
92
|
+
var new_geom = child.geometry.clone().setAttribute('position', new _three.BufferAttribute(new_pos, 3));
|
|
93
|
+
new_geom.computeBoundingBox();
|
|
94
|
+
new_geom.computeBoundingSphere();
|
|
95
|
+
child.geometry.dispose();
|
|
96
|
+
child.geometry = new_geom;
|
|
97
|
+
}
|
|
98
|
+
});
|
|
99
|
+
}
|
|
@@ -0,0 +1,363 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports["default"] = exports.MTLLoader = void 0;
|
|
7
|
+
/**
|
|
8
|
+
* Loads a Wavefront .mtl file specifying materials
|
|
9
|
+
*
|
|
10
|
+
* @author angelxuanchang
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
var THREE = window.THREE;
|
|
14
|
+
var MTLLoader;
|
|
15
|
+
exports.MTLLoader = MTLLoader = function MTLLoader(manager) {
|
|
16
|
+
this.manager = manager !== undefined ? manager : THREE.DefaultLoadingManager;
|
|
17
|
+
};
|
|
18
|
+
Object.assign(MTLLoader.prototype, THREE.EventDispatcher.prototype, {
|
|
19
|
+
/**
|
|
20
|
+
* Loads and parses a MTL asset from a URL.
|
|
21
|
+
*
|
|
22
|
+
* @param {String} url - URL to the MTL file.
|
|
23
|
+
* @param {Function} [onLoad] - Callback invoked with the loaded object.
|
|
24
|
+
* @param {Function} [onProgress] - Callback for download progress.
|
|
25
|
+
* @param {Function} [onError] - Callback for download errors.
|
|
26
|
+
*
|
|
27
|
+
* @see setPath setTexturePath
|
|
28
|
+
*
|
|
29
|
+
* @note In order for relative texture references to resolve correctly
|
|
30
|
+
* you must call setPath and/or setTexturePath explicitly prior to load.
|
|
31
|
+
*/
|
|
32
|
+
load: function load(url, onLoad, onProgress, onError) {
|
|
33
|
+
var scope = this;
|
|
34
|
+
var loader = new THREE.FileLoader(this.manager);
|
|
35
|
+
loader.setPath(this.path);
|
|
36
|
+
loader.load(url, function (text) {
|
|
37
|
+
onLoad(scope.parse(text));
|
|
38
|
+
}, onProgress, onError);
|
|
39
|
+
},
|
|
40
|
+
/**
|
|
41
|
+
* Set base path for resolving references.
|
|
42
|
+
* If set this path will be prepended to each loaded and found reference.
|
|
43
|
+
*
|
|
44
|
+
* @see setTexturePath
|
|
45
|
+
* @param {String} path
|
|
46
|
+
*
|
|
47
|
+
* @example
|
|
48
|
+
* mtlLoader.setPath( '/assets/obj/' );
|
|
49
|
+
* mtlLoader.load( 'my.mtl', ... );
|
|
50
|
+
*/
|
|
51
|
+
setPath: function setPath(path) {
|
|
52
|
+
this.path = path;
|
|
53
|
+
},
|
|
54
|
+
/**
|
|
55
|
+
* Set base path for resolving texture references.
|
|
56
|
+
* If set this path will be prepended found texture reference.
|
|
57
|
+
* If not set and setPath is, it will be used as texture base path.
|
|
58
|
+
*
|
|
59
|
+
* @see setPath
|
|
60
|
+
* @param {String} path
|
|
61
|
+
*
|
|
62
|
+
* @example
|
|
63
|
+
* mtlLoader.setPath( '/assets/obj/' );
|
|
64
|
+
* mtlLoader.setTexturePath( '/assets/textures/' );
|
|
65
|
+
* mtlLoader.load( 'my.mtl', ... );
|
|
66
|
+
*/
|
|
67
|
+
setTexturePath: function setTexturePath(path) {
|
|
68
|
+
this.texturePath = path;
|
|
69
|
+
},
|
|
70
|
+
setBaseUrl: function setBaseUrl(path) {
|
|
71
|
+
console.warn('THREE.MTLLoader: .setBaseUrl() is deprecated. Use .setTexturePath( path ) for texture path or .setPath( path ) for general base path instead.');
|
|
72
|
+
this.setTexturePath(path);
|
|
73
|
+
},
|
|
74
|
+
setCrossOrigin: function setCrossOrigin(value) {
|
|
75
|
+
this.crossOrigin = value;
|
|
76
|
+
},
|
|
77
|
+
setMaterialOptions: function setMaterialOptions(value) {
|
|
78
|
+
this.materialOptions = value;
|
|
79
|
+
},
|
|
80
|
+
/**
|
|
81
|
+
* Parses a MTL file.
|
|
82
|
+
*
|
|
83
|
+
* @param {String} text - Content of MTL file
|
|
84
|
+
* @return {THREE.MTLLoader.MaterialCreator}
|
|
85
|
+
*
|
|
86
|
+
* @see setPath setTexturePath
|
|
87
|
+
*
|
|
88
|
+
* @note In order for relative texture references to resolve correctly
|
|
89
|
+
* you must call setPath and/or setTexturePath explicitly prior to parse.
|
|
90
|
+
*/
|
|
91
|
+
parse: function parse(text) {
|
|
92
|
+
var lines = text.split('\n');
|
|
93
|
+
var info = {};
|
|
94
|
+
var delimiter_pattern = /\s+/;
|
|
95
|
+
var materialsInfo = {};
|
|
96
|
+
for (var i = 0; i < lines.length; i++) {
|
|
97
|
+
var line = lines[i];
|
|
98
|
+
line = line.trim();
|
|
99
|
+
if (line.length === 0 || line.charAt(0) === '#') {
|
|
100
|
+
// Blank line or comment ignore
|
|
101
|
+
continue;
|
|
102
|
+
}
|
|
103
|
+
var pos = line.indexOf(' ');
|
|
104
|
+
var key = pos >= 0 ? line.substring(0, pos) : line;
|
|
105
|
+
key = key.toLowerCase();
|
|
106
|
+
var value = pos >= 0 ? line.substring(pos + 1) : '';
|
|
107
|
+
value = value.trim();
|
|
108
|
+
if (key === 'newmtl') {
|
|
109
|
+
// New material
|
|
110
|
+
|
|
111
|
+
info = {
|
|
112
|
+
name: value
|
|
113
|
+
};
|
|
114
|
+
materialsInfo[value] = info;
|
|
115
|
+
} else if (info) {
|
|
116
|
+
if (key === 'ka' || key === 'kd' || key === 'ks') {
|
|
117
|
+
var ss = value.split(delimiter_pattern, 3);
|
|
118
|
+
info[key] = [parseFloat(ss[0]), parseFloat(ss[1]), parseFloat(ss[2])];
|
|
119
|
+
} else {
|
|
120
|
+
info[key] = value;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
var materialCreator = new MTLLoader.MaterialCreator(this.texturePath || this.path, this.materialOptions);
|
|
125
|
+
materialCreator.setCrossOrigin(this.crossOrigin);
|
|
126
|
+
materialCreator.setManager(this.manager);
|
|
127
|
+
materialCreator.setMaterials(materialsInfo);
|
|
128
|
+
return materialCreator;
|
|
129
|
+
}
|
|
130
|
+
});
|
|
131
|
+
|
|
132
|
+
/**
|
|
133
|
+
* Create a new THREE-MTLLoader.MaterialCreator
|
|
134
|
+
* @param baseUrl - Url relative to which textures are loaded
|
|
135
|
+
* @param options - Set of options on how to construct the materials
|
|
136
|
+
* side: Which side to apply the material
|
|
137
|
+
* THREE.FrontSide (default), THREE.BackSide, THREE.DoubleSide
|
|
138
|
+
* wrap: What type of wrapping to apply for textures
|
|
139
|
+
* THREE.RepeatWrapping (default), THREE.ClampToEdgeWrapping, THREE.MirroredRepeatWrapping
|
|
140
|
+
* normalizeRGB: RGBs need to be normalized to 0-1 from 0-255
|
|
141
|
+
* Default: false, assumed to be already normalized
|
|
142
|
+
* ignoreZeroRGBs: Ignore values of RGBs (Ka,Kd,Ks) that are all 0's
|
|
143
|
+
* Default: false
|
|
144
|
+
* @constructor
|
|
145
|
+
*/
|
|
146
|
+
|
|
147
|
+
MTLLoader.MaterialCreator = function (baseUrl, options) {
|
|
148
|
+
this.baseUrl = baseUrl || '';
|
|
149
|
+
this.options = options;
|
|
150
|
+
this.materialsInfo = {};
|
|
151
|
+
this.materials = {};
|
|
152
|
+
this.materialsArray = [];
|
|
153
|
+
this.nameLookup = {};
|
|
154
|
+
this.side = this.options && this.options.side ? this.options.side : THREE.FrontSide;
|
|
155
|
+
this.wrap = this.options && this.options.wrap ? this.options.wrap : THREE.RepeatWrapping;
|
|
156
|
+
};
|
|
157
|
+
MTLLoader.MaterialCreator.prototype = {
|
|
158
|
+
constructor: MTLLoader.MaterialCreator,
|
|
159
|
+
setCrossOrigin: function setCrossOrigin(value) {
|
|
160
|
+
this.crossOrigin = value;
|
|
161
|
+
},
|
|
162
|
+
setManager: function setManager(value) {
|
|
163
|
+
this.manager = value;
|
|
164
|
+
},
|
|
165
|
+
setMaterials: function setMaterials(materialsInfo) {
|
|
166
|
+
this.materialsInfo = this.convert(materialsInfo);
|
|
167
|
+
this.materials = {};
|
|
168
|
+
this.materialsArray = [];
|
|
169
|
+
this.nameLookup = {};
|
|
170
|
+
},
|
|
171
|
+
convert: function convert(materialsInfo) {
|
|
172
|
+
if (!this.options) return materialsInfo;
|
|
173
|
+
var converted = {};
|
|
174
|
+
for (var mn in materialsInfo) {
|
|
175
|
+
// Convert materials info into normalized form based on options
|
|
176
|
+
|
|
177
|
+
var mat = materialsInfo[mn];
|
|
178
|
+
var covmat = {};
|
|
179
|
+
converted[mn] = covmat;
|
|
180
|
+
for (var prop in mat) {
|
|
181
|
+
var save = true;
|
|
182
|
+
var value = mat[prop];
|
|
183
|
+
var lprop = prop.toLowerCase();
|
|
184
|
+
switch (lprop) {
|
|
185
|
+
case 'kd':
|
|
186
|
+
case 'ka':
|
|
187
|
+
case 'ks':
|
|
188
|
+
// Diffuse color (color under white light) using RGB values
|
|
189
|
+
|
|
190
|
+
if (this.options && this.options.normalizeRGB) {
|
|
191
|
+
value = [value[0] / 255, value[1] / 255, value[2] / 255];
|
|
192
|
+
}
|
|
193
|
+
if (this.options && this.options.ignoreZeroRGBs) {
|
|
194
|
+
if (value[0] === 0 && value[1] === 0 && value[2] === 0) {
|
|
195
|
+
// ignore
|
|
196
|
+
|
|
197
|
+
save = false;
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
break;
|
|
201
|
+
default:
|
|
202
|
+
break;
|
|
203
|
+
}
|
|
204
|
+
if (save) {
|
|
205
|
+
covmat[lprop] = value;
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
return converted;
|
|
210
|
+
},
|
|
211
|
+
preload: function preload() {
|
|
212
|
+
for (var mn in this.materialsInfo) {
|
|
213
|
+
this.create(mn);
|
|
214
|
+
}
|
|
215
|
+
},
|
|
216
|
+
getIndex: function getIndex(materialName) {
|
|
217
|
+
return this.nameLookup[materialName];
|
|
218
|
+
},
|
|
219
|
+
getAsArray: function getAsArray() {
|
|
220
|
+
var index = 0;
|
|
221
|
+
for (var mn in this.materialsInfo) {
|
|
222
|
+
this.materialsArray[index] = this.create(mn);
|
|
223
|
+
this.nameLookup[mn] = index;
|
|
224
|
+
index++;
|
|
225
|
+
}
|
|
226
|
+
return this.materialsArray;
|
|
227
|
+
},
|
|
228
|
+
create: function create(materialName) {
|
|
229
|
+
if (this.materials[materialName] === undefined) {
|
|
230
|
+
this.createMaterial_(materialName);
|
|
231
|
+
}
|
|
232
|
+
return this.materials[materialName];
|
|
233
|
+
},
|
|
234
|
+
createMaterial_: function createMaterial_(materialName) {
|
|
235
|
+
// Create material
|
|
236
|
+
|
|
237
|
+
var mat = this.materialsInfo[materialName];
|
|
238
|
+
var params = {
|
|
239
|
+
name: materialName,
|
|
240
|
+
side: this.side
|
|
241
|
+
};
|
|
242
|
+
var resolveURL = function resolveURL(baseUrl, url) {
|
|
243
|
+
if (typeof url !== 'string' || url === '') return '';
|
|
244
|
+
|
|
245
|
+
// Absolute URL
|
|
246
|
+
if (/^https?:\/\//i.test(url)) {
|
|
247
|
+
return url;
|
|
248
|
+
}
|
|
249
|
+
return baseUrl + url;
|
|
250
|
+
};
|
|
251
|
+
for (var prop in mat) {
|
|
252
|
+
var value = mat[prop];
|
|
253
|
+
if (value === '') continue;
|
|
254
|
+
switch (prop.toLowerCase()) {
|
|
255
|
+
// Ns is material specular exponent
|
|
256
|
+
|
|
257
|
+
case 'kd':
|
|
258
|
+
// Diffuse color (color under white light) using RGB values
|
|
259
|
+
|
|
260
|
+
params.color = new THREE.Color().fromArray(value);
|
|
261
|
+
break;
|
|
262
|
+
case 'ks':
|
|
263
|
+
// Specular color (color when light is reflected from shiny surface) using RGB values
|
|
264
|
+
params.specular = new THREE.Color().fromArray(value);
|
|
265
|
+
break;
|
|
266
|
+
case 'map_kd':
|
|
267
|
+
// Diffuse texture map
|
|
268
|
+
|
|
269
|
+
if (params.map) break; // Keep the first encountered texture
|
|
270
|
+
|
|
271
|
+
var texParams = this.getTextureParams(value, params);
|
|
272
|
+
params.map = this.loadTexture(resolveURL(this.baseUrl, texParams.url));
|
|
273
|
+
params.map.repeat.copy(texParams.scale);
|
|
274
|
+
params.map.offset.copy(texParams.offset);
|
|
275
|
+
params.map.wrapS = this.wrap;
|
|
276
|
+
params.map.wrapT = this.wrap;
|
|
277
|
+
break;
|
|
278
|
+
case 'map_ks':
|
|
279
|
+
// Specular map
|
|
280
|
+
|
|
281
|
+
if (params.specularMap) break; // Keep the first encountered texture
|
|
282
|
+
|
|
283
|
+
params.specularMap = this.loadTexture(resolveURL(this.baseUrl, value));
|
|
284
|
+
params.specularMap.wrapS = this.wrap;
|
|
285
|
+
params.specularMap.wrapT = this.wrap;
|
|
286
|
+
break;
|
|
287
|
+
case 'ns':
|
|
288
|
+
// The specular exponent (defines the focus of the specular highlight)
|
|
289
|
+
// A high exponent results in a tight, concentrated highlight. Ns values normally range from 0 to 1000.
|
|
290
|
+
|
|
291
|
+
params.shininess = parseFloat(value);
|
|
292
|
+
break;
|
|
293
|
+
case 'd':
|
|
294
|
+
if (value < 1) {
|
|
295
|
+
params.opacity = value;
|
|
296
|
+
params.transparent = true;
|
|
297
|
+
}
|
|
298
|
+
break;
|
|
299
|
+
case 'Tr':
|
|
300
|
+
if (value > 0) {
|
|
301
|
+
params.opacity = 1 - value;
|
|
302
|
+
params.transparent = true;
|
|
303
|
+
}
|
|
304
|
+
break;
|
|
305
|
+
case 'map_bump':
|
|
306
|
+
case 'bump':
|
|
307
|
+
// Bump texture map
|
|
308
|
+
|
|
309
|
+
if (params.bumpMap) break; // Keep the first encountered texture
|
|
310
|
+
|
|
311
|
+
var texParams = this.getTextureParams(value, params);
|
|
312
|
+
params.bumpMap = this.loadTexture(resolveURL(this.baseUrl, texParams.url));
|
|
313
|
+
params.bumpMap.repeat.copy(texParams.scale);
|
|
314
|
+
params.bumpMap.offset.copy(texParams.offset);
|
|
315
|
+
params.bumpMap.wrapS = this.wrap;
|
|
316
|
+
params.bumpMap.wrapT = this.wrap;
|
|
317
|
+
break;
|
|
318
|
+
default:
|
|
319
|
+
break;
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
this.materials[materialName] = new THREE.MeshPhongMaterial(params);
|
|
323
|
+
return this.materials[materialName];
|
|
324
|
+
},
|
|
325
|
+
getTextureParams: function getTextureParams(value, matParams) {
|
|
326
|
+
var texParams = {
|
|
327
|
+
scale: new THREE.Vector2(1, 1),
|
|
328
|
+
offset: new THREE.Vector2(0, 0)
|
|
329
|
+
};
|
|
330
|
+
var items = value.split(/\s+/);
|
|
331
|
+
var pos;
|
|
332
|
+
pos = items.indexOf('-bm');
|
|
333
|
+
if (pos >= 0) {
|
|
334
|
+
matParams.bumpScale = parseFloat(items[pos + 1]);
|
|
335
|
+
items.splice(pos, 2);
|
|
336
|
+
}
|
|
337
|
+
pos = items.indexOf('-s');
|
|
338
|
+
if (pos >= 0) {
|
|
339
|
+
texParams.scale.set(parseFloat(items[pos + 1]), parseFloat(items[pos + 2]));
|
|
340
|
+
items.splice(pos, 4); // we expect 3 parameters here!
|
|
341
|
+
}
|
|
342
|
+
pos = items.indexOf('-o');
|
|
343
|
+
if (pos >= 0) {
|
|
344
|
+
texParams.offset.set(parseFloat(items[pos + 1]), parseFloat(items[pos + 2]));
|
|
345
|
+
items.splice(pos, 4); // we expect 3 parameters here!
|
|
346
|
+
}
|
|
347
|
+
texParams.url = items.join(' ').trim();
|
|
348
|
+
return texParams;
|
|
349
|
+
},
|
|
350
|
+
loadTexture: function loadTexture(url, mapping, onLoad, onProgress, onError) {
|
|
351
|
+
var texture;
|
|
352
|
+
var loader = THREE.Loader.Handlers.get(url);
|
|
353
|
+
var manager = this.manager !== undefined ? this.manager : THREE.DefaultLoadingManager;
|
|
354
|
+
if (loader === null) {
|
|
355
|
+
loader = new THREE.TextureLoader(manager);
|
|
356
|
+
}
|
|
357
|
+
if (loader.setCrossOrigin) loader.setCrossOrigin(this.crossOrigin);
|
|
358
|
+
texture = loader.load(url, onLoad, onProgress, onError);
|
|
359
|
+
if (mapping !== undefined) texture.mapping = mapping;
|
|
360
|
+
return texture;
|
|
361
|
+
}
|
|
362
|
+
};
|
|
363
|
+
var _default = exports["default"] = MTLLoader;
|