zincjs 1.3.2 → 1.3.3-webpack5-beta.0
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/build/zinc.frontend.js +2 -6
- package/build/zinc.js +467 -279
- package/build/zinc.js.map +1 -1
- package/package.json +9 -9
- package/src/primitives/textureSlides.js +1 -1
- package/CHANGELOG.md +0 -252
package/build/zinc.js
CHANGED
|
@@ -7,115 +7,31 @@
|
|
|
7
7
|
exports["Zinc"] = factory();
|
|
8
8
|
else
|
|
9
9
|
root["Zinc"] = factory();
|
|
10
|
-
})(this,
|
|
11
|
-
return /******/ (
|
|
12
|
-
/******/
|
|
13
|
-
/******/ var installedModules = {};
|
|
14
|
-
/******/
|
|
15
|
-
/******/ // The require function
|
|
16
|
-
/******/ function __webpack_require__(moduleId) {
|
|
17
|
-
/******/
|
|
18
|
-
/******/ // Check if module is in cache
|
|
19
|
-
/******/ if(installedModules[moduleId]) {
|
|
20
|
-
/******/ return installedModules[moduleId].exports;
|
|
21
|
-
/******/ }
|
|
22
|
-
/******/ // Create a new module (and put it into the cache)
|
|
23
|
-
/******/ var module = installedModules[moduleId] = {
|
|
24
|
-
/******/ i: moduleId,
|
|
25
|
-
/******/ l: false,
|
|
26
|
-
/******/ exports: {}
|
|
27
|
-
/******/ };
|
|
28
|
-
/******/
|
|
29
|
-
/******/ // Execute the module function
|
|
30
|
-
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
|
|
31
|
-
/******/
|
|
32
|
-
/******/ // Flag the module as loaded
|
|
33
|
-
/******/ module.l = true;
|
|
34
|
-
/******/
|
|
35
|
-
/******/ // Return the exports of the module
|
|
36
|
-
/******/ return module.exports;
|
|
37
|
-
/******/ }
|
|
38
|
-
/******/
|
|
39
|
-
/******/
|
|
40
|
-
/******/ // expose the modules object (__webpack_modules__)
|
|
41
|
-
/******/ __webpack_require__.m = modules;
|
|
42
|
-
/******/
|
|
43
|
-
/******/ // expose the module cache
|
|
44
|
-
/******/ __webpack_require__.c = installedModules;
|
|
45
|
-
/******/
|
|
46
|
-
/******/ // define getter function for harmony exports
|
|
47
|
-
/******/ __webpack_require__.d = function(exports, name, getter) {
|
|
48
|
-
/******/ if(!__webpack_require__.o(exports, name)) {
|
|
49
|
-
/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
|
|
50
|
-
/******/ }
|
|
51
|
-
/******/ };
|
|
52
|
-
/******/
|
|
53
|
-
/******/ // define __esModule on exports
|
|
54
|
-
/******/ __webpack_require__.r = function(exports) {
|
|
55
|
-
/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
|
|
56
|
-
/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
57
|
-
/******/ }
|
|
58
|
-
/******/ Object.defineProperty(exports, '__esModule', { value: true });
|
|
59
|
-
/******/ };
|
|
60
|
-
/******/
|
|
61
|
-
/******/ // create a fake namespace object
|
|
62
|
-
/******/ // mode & 1: value is a module id, require it
|
|
63
|
-
/******/ // mode & 2: merge all properties of value into the ns
|
|
64
|
-
/******/ // mode & 4: return value when already ns object
|
|
65
|
-
/******/ // mode & 8|1: behave like require
|
|
66
|
-
/******/ __webpack_require__.t = function(value, mode) {
|
|
67
|
-
/******/ if(mode & 1) value = __webpack_require__(value);
|
|
68
|
-
/******/ if(mode & 8) return value;
|
|
69
|
-
/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
|
|
70
|
-
/******/ var ns = Object.create(null);
|
|
71
|
-
/******/ __webpack_require__.r(ns);
|
|
72
|
-
/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
|
|
73
|
-
/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
|
|
74
|
-
/******/ return ns;
|
|
75
|
-
/******/ };
|
|
76
|
-
/******/
|
|
77
|
-
/******/ // getDefaultExport function for compatibility with non-harmony modules
|
|
78
|
-
/******/ __webpack_require__.n = function(module) {
|
|
79
|
-
/******/ var getter = module && module.__esModule ?
|
|
80
|
-
/******/ function getDefault() { return module['default']; } :
|
|
81
|
-
/******/ function getModuleExports() { return module; };
|
|
82
|
-
/******/ __webpack_require__.d(getter, 'a', getter);
|
|
83
|
-
/******/ return getter;
|
|
84
|
-
/******/ };
|
|
85
|
-
/******/
|
|
86
|
-
/******/ // Object.prototype.hasOwnProperty.call
|
|
87
|
-
/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
|
|
88
|
-
/******/
|
|
89
|
-
/******/ // __webpack_public_path__
|
|
90
|
-
/******/ __webpack_require__.p = "";
|
|
91
|
-
/******/
|
|
92
|
-
/******/
|
|
93
|
-
/******/ // Load entry module and return exports
|
|
94
|
-
/******/ return __webpack_require__(__webpack_require__.s = 0);
|
|
95
|
-
/******/ })
|
|
96
|
-
/************************************************************************/
|
|
97
|
-
/******/ ([
|
|
10
|
+
})(this, () => {
|
|
11
|
+
return /******/ (() => { // webpackBootstrap
|
|
12
|
+
/******/ var __webpack_modules__ = ([
|
|
98
13
|
/* 0 */
|
|
99
|
-
/***/ (
|
|
14
|
+
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
|
100
15
|
|
|
101
16
|
__webpack_require__(1);/**
|
|
102
17
|
* Provides a global namespace for the Zinc javascript library and some default parameters for it.
|
|
103
18
|
*
|
|
104
19
|
* @namespace
|
|
105
20
|
* @author Alan Wu
|
|
106
|
-
*/var Zinc=function(){this.Revision="1.0.12",this.defaultMaterialColor=16777215,this.defaultOpacity=1,this.modelPrefix=void 0,this.Geometry=__webpack_require__(2).Geometry,this.Glyph=__webpack_require__(10).Glyph,this.Glyphset=__webpack_require__(13).Glyphset,this.Pointset=__webpack_require__(17).Pointset,this.Lines=__webpack_require__(20).Lines,this.TextureArray=__webpack_require__(23).TextureArray,this.TextureSlides=__webpack_require__(25).TextureSlides,this.Renderer=__webpack_require__(28).Renderer,this.Scene=__webpack_require__(30).Scene,this.GeometryCSG=__webpack_require__(42).GeometryCSG,this.GlyphsetCSG=__webpack_require__(48).GlyphsetCSG,this.Viewport=__webpack_require__(39).Viewport,this.CameraControls=__webpack_require__(39).CameraControls,this.SmoothCameraTransition=__webpack_require__(39).SmoothCameraTransition,this.RayCaster=__webpack_require__(39).RayCaster,this.CameraAutoTumble=__webpack_require__(39).CameraAutoTumble,this.StereoEffect=__webpack_require__(39).StereoEffect,this.loadExternalFile=__webpack_require__(4).loadExternalFile,this.loadExternalFiles=__webpack_require__(4).loadExternalFiles,this.THREE=__webpack_require__(3)};module.exports=new Zinc;
|
|
21
|
+
*/var Zinc=function(){this.Revision="1.0.12",this.defaultMaterialColor=16777215,this.defaultOpacity=1,this.modelPrefix=void 0,this.Geometry=(__webpack_require__(2).Geometry),this.Glyph=(__webpack_require__(10).Glyph),this.Glyphset=(__webpack_require__(13).Glyphset),this.Pointset=(__webpack_require__(17).Pointset),this.Lines=(__webpack_require__(20).Lines),this.TextureArray=(__webpack_require__(23).TextureArray),this.TextureSlides=(__webpack_require__(25).TextureSlides),this.Renderer=(__webpack_require__(28).Renderer),this.Scene=(__webpack_require__(30).Scene),this.GeometryCSG=(__webpack_require__(42).GeometryCSG),this.GlyphsetCSG=(__webpack_require__(48).GlyphsetCSG),this.Viewport=(__webpack_require__(39).Viewport),this.CameraControls=(__webpack_require__(39).CameraControls),this.SmoothCameraTransition=(__webpack_require__(39).SmoothCameraTransition),this.RayCaster=(__webpack_require__(39).RayCaster),this.CameraAutoTumble=(__webpack_require__(39).CameraAutoTumble),this.StereoEffect=(__webpack_require__(39).StereoEffect),this.loadExternalFile=(__webpack_require__(4).loadExternalFile),this.loadExternalFiles=(__webpack_require__(4).loadExternalFiles),this.THREE=__webpack_require__(3)};module.exports=new Zinc;
|
|
107
22
|
|
|
108
23
|
/***/ }),
|
|
109
24
|
/* 1 */
|
|
110
|
-
/***/ (
|
|
25
|
+
/***/ ((module) => {
|
|
111
26
|
|
|
27
|
+
"use strict";
|
|
112
28
|
module.exports = require("url-polyfill");
|
|
113
29
|
|
|
114
30
|
/***/ }),
|
|
115
31
|
/* 2 */
|
|
116
|
-
/***/ (
|
|
32
|
+
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
117
33
|
|
|
118
|
-
var THREE=__webpack_require__(3),toBufferGeometry=__webpack_require__(4).toBufferGeometry,Geometry=function(){// THREE.Geometry or THREE.BufferGeometry
|
|
34
|
+
var THREE=__webpack_require__(3),toBufferGeometry=(__webpack_require__(4).toBufferGeometry),Geometry=function(){// THREE.Geometry or THREE.BufferGeometry
|
|
119
35
|
/**
|
|
120
36
|
* Create the mesh for rendering
|
|
121
37
|
*
|
|
@@ -137,27 +53,39 @@ var THREE=__webpack_require__(3),toBufferGeometry=__webpack_require__(4).toBuffe
|
|
|
137
53
|
* Set wireframe display for this geometry.
|
|
138
54
|
*
|
|
139
55
|
* @param {Boolean} wireframe - Flag to turn on/off wireframe display.
|
|
140
|
-
*/__webpack_require__(6).ZincObject.call(this),this.videoHandler=void 0,this.isGeometry=!0,this.createMesh=(geometryIn,materialIn,options)=>{if(!(this.geometry&&this.morph&&null!=geometryIn)){// First copy the geometry
|
|
141
|
-
var geometry=toBufferGeometry(geometryIn,options),isTransparent=!1;1>options.opacity&&(isTransparent=!0);var material;if(void 0===geometry._video){var morphTargets=options.localTimeEnabled||options.localMorphColour;materialIn?(material=materialIn,material.morphTargets=morphTargets,material.morphNormals=options.localTimeEnabled):geometry instanceof THREE.BufferGeometry&&void 0===geometry.attributes.color?material=new THREE.MeshPhongMaterial({color:options.colour,morphTargets:morphTargets,morphNormals:options.localTimeEnabled,transparent:isTransparent,opacity:options.opacity,side:THREE.DoubleSide}):material=new THREE.MeshPhongMaterial({color:options.colour,morphTargets:morphTargets,morphNormals:options.localTimeEnabled,vertexColors:THREE.VertexColors,transparent:isTransparent,opacity:options.opacity,side:THREE.DoubleSide}),options.localMorphColour&&geometry.morphAttributes.color&&(material.onBeforeCompile=__webpack_require__(9).augmentMorphColor())}else{var videoTexture=geometry._video.createCanvasVideoTexture();material=new THREE.MeshBasicMaterial({morphTargets:options.localTimeEnabled,color:new THREE.Color(1,1,1),transparent:isTransparent,opacity:options.opacity,map:videoTexture,side:THREE.DoubleSide}),this.videoHandler=geometry._video}var mesh=new THREE.Mesh(geometry,material);this.setMesh(mesh,options.localTimeEnabled,options.localMorphColour)}},this.calculateUVs=()=>{this.geometry.computeBoundingBox();var max=this.geometry.boundingBox.max,min=this.geometry.boundingBox.min,offset=new THREE.Vector2(0-min.x,0-min.y),range=new THREE.Vector2(max.x-min.x,max.y-min.y);this.geometry.faceVertexUvs[0]=[];for(var i=0;i<this.geometry.faces.length;i++){var v1=this.geometry.vertices[this.geometry.faces[i].a],v2=this.geometry.vertices[this.geometry.faces[i].b],v3=this.geometry.vertices[this.geometry.faces[i].c];geometry.faceVertexUvs[0].push([new THREE.Vector2((v1.x+offset.x)/range.x,(v1.y+offset.y)/range.y),new THREE.Vector2((v2.x+offset.x)/range.x,(v2.y+offset.y)/range.y),new THREE.Vector2((v3.x+offset.x)/range.x,(v3.y+offset.y)/range.y)])}geometry.uvsNeedUpdate=!0},this.checkAndCreateTransparentMesh=function(){if(this.morph.material&&this.morph.material.transparent){if(!this.secondaryMesh){var secondaryMaterial=this.morph.material.clone();secondaryMaterial.side=THREE.FrontSide,this.secondaryMesh=new THREE.Mesh(this.morph.geometry,secondaryMaterial),this.secondaryMesh.renderOrder=this.morph.renderOrder+1,this.secondaryMesh.userData=this,this.secondaryMesh.name=this.groupName}this.morph.material.side=THREE.BackSide,this.morph.material.needsUpdate=!0,this.morph.add(this.secondaryMesh),this.animationGroup.add(this.secondaryMesh)}},this.checkAndRemoveTransparentMesh=function(){this.secondaryMesh&&(this.morph.remove(this.secondaryMesh),this.animationGroup.uncache(this.secondaryMesh),this.animationGroup.remove(this.secondaryMesh)),this.morph.material.side=THREE.DoubleSide},this.setWireframe=wireframe=>{this.morph.material.wireframe=wireframe}}
|
|
56
|
+
*/(__webpack_require__(6).ZincObject).call(this),this.videoHandler=void 0,this.isGeometry=!0,this.createMesh=(geometryIn,materialIn,options)=>{if(!(this.geometry&&this.morph&&null!=geometryIn)){// First copy the geometry
|
|
57
|
+
var geometry=toBufferGeometry(geometryIn,options),isTransparent=!1;1>options.opacity&&(isTransparent=!0);var material;if(void 0===geometry._video){var morphTargets=options.localTimeEnabled||options.localMorphColour;materialIn?(material=materialIn,material.morphTargets=morphTargets,material.morphNormals=options.localTimeEnabled):geometry instanceof THREE.BufferGeometry&&void 0===geometry.attributes.color?material=new THREE.MeshPhongMaterial({color:options.colour,morphTargets:morphTargets,morphNormals:options.localTimeEnabled,transparent:isTransparent,opacity:options.opacity,side:THREE.DoubleSide}):material=new THREE.MeshPhongMaterial({color:options.colour,morphTargets:morphTargets,morphNormals:options.localTimeEnabled,vertexColors:THREE.VertexColors,transparent:isTransparent,opacity:options.opacity,side:THREE.DoubleSide}),options.localMorphColour&&geometry.morphAttributes.color&&(material.onBeforeCompile=(__webpack_require__(9).augmentMorphColor)())}else{var videoTexture=geometry._video.createCanvasVideoTexture();material=new THREE.MeshBasicMaterial({morphTargets:options.localTimeEnabled,color:new THREE.Color(1,1,1),transparent:isTransparent,opacity:options.opacity,map:videoTexture,side:THREE.DoubleSide}),this.videoHandler=geometry._video}var mesh=new THREE.Mesh(geometry,material);this.setMesh(mesh,options.localTimeEnabled,options.localMorphColour)}},this.calculateUVs=()=>{this.geometry.computeBoundingBox();var max=this.geometry.boundingBox.max,min=this.geometry.boundingBox.min,offset=new THREE.Vector2(0-min.x,0-min.y),range=new THREE.Vector2(max.x-min.x,max.y-min.y);this.geometry.faceVertexUvs[0]=[];for(var i=0;i<this.geometry.faces.length;i++){var v1=this.geometry.vertices[this.geometry.faces[i].a],v2=this.geometry.vertices[this.geometry.faces[i].b],v3=this.geometry.vertices[this.geometry.faces[i].c];geometry.faceVertexUvs[0].push([new THREE.Vector2((v1.x+offset.x)/range.x,(v1.y+offset.y)/range.y),new THREE.Vector2((v2.x+offset.x)/range.x,(v2.y+offset.y)/range.y),new THREE.Vector2((v3.x+offset.x)/range.x,(v3.y+offset.y)/range.y)])}geometry.uvsNeedUpdate=!0},this.checkAndCreateTransparentMesh=function(){if(this.morph.material&&this.morph.material.transparent){if(!this.secondaryMesh){var secondaryMaterial=this.morph.material.clone();secondaryMaterial.side=THREE.FrontSide,this.secondaryMesh=new THREE.Mesh(this.morph.geometry,secondaryMaterial),this.secondaryMesh.renderOrder=this.morph.renderOrder+1,this.secondaryMesh.userData=this,this.secondaryMesh.name=this.groupName}this.morph.material.side=THREE.BackSide,this.morph.material.needsUpdate=!0,this.morph.add(this.secondaryMesh),this.animationGroup.add(this.secondaryMesh)}},this.checkAndRemoveTransparentMesh=function(){this.secondaryMesh&&(this.morph.remove(this.secondaryMesh),this.animationGroup.uncache(this.secondaryMesh),this.animationGroup.remove(this.secondaryMesh)),this.morph.material.side=THREE.DoubleSide},this.setWireframe=wireframe=>{this.morph.material.wireframe=wireframe}};/**
|
|
58
|
+
* Provides an object which stores geometry and provides method which controls its animations.
|
|
59
|
+
* This is created when a valid json file containging geometry is read into a {@link Zinc.Scene}
|
|
60
|
+
* object.
|
|
61
|
+
*
|
|
62
|
+
* @class
|
|
63
|
+
* @author Alan Wu
|
|
64
|
+
* @return {Geometry}
|
|
65
|
+
*/Geometry.prototype=Object.create((__webpack_require__(6).ZincObject).prototype),exports.Geometry=Geometry;
|
|
142
66
|
|
|
143
67
|
/***/ }),
|
|
144
68
|
/* 3 */
|
|
145
|
-
/***/ (
|
|
69
|
+
/***/ ((module) => {
|
|
146
70
|
|
|
71
|
+
"use strict";
|
|
147
72
|
module.exports = require("three");
|
|
148
73
|
|
|
149
74
|
/***/ }),
|
|
150
75
|
/* 4 */
|
|
151
|
-
/***/ (
|
|
76
|
+
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
152
77
|
|
|
153
|
-
function _readOnlyError(name){throw new
|
|
78
|
+
function _readOnlyError(name){throw new TypeError("\""+name+"\" is read-only")}var THREE=__webpack_require__(3),THREEGeometry=(__webpack_require__(5).Geometry);function resolveURL(url){var actualURL=url,prefix=(__webpack_require__(0).modelPrefix);if(prefix){"/"!=prefix[prefix.length-1]&&(prefix+"/",_readOnlyError("prefix"));/^(?:[a-z]+:)?\/\//i.test(url)||(actualURL=prefix+url)}return actualURL}//Convenient function
|
|
154
79
|
function loadExternalFile(url,data,callback,errorCallback){// Set up an asynchronous request
|
|
155
80
|
var request=new XMLHttpRequest;// Hook the event that gets called as the request progresses
|
|
156
81
|
request.open("GET",resolveURL(url),!0),request.onreadystatechange=()=>{4==request.readyState&&(200==request.status?callback(request.responseText,data):errorCallback(url))},request.send(null)}function loadExternalFiles(urls,callback,errorCallback){// Callback for a single file
|
|
157
82
|
function partialCallback(text,urlIndex){result[urlIndex]=text,numComplete++,numComplete==numUrls&&callback(result)}for(var numUrls=urls.length,numComplete=0,result=[],i=0;i<numUrls;i++)loadExternalFile(urls[i],i,partialCallback,errorCallback)}//Get the colours at index
|
|
158
|
-
exports.getColorsRGB=(colors,index)=>{var index_in_colors=Math.floor(index/3),remainder=index%3,hex_value=0;0==remainder?hex_value=colors[index_in_colors].r:1==remainder?hex_value=colors[index_in_colors].g:2==remainder&&(hex_value=colors[index_in_colors].b);var mycolor=new THREE.Color(hex_value);return[mycolor.r,mycolor.g,mycolor.b]},exports.updateMorphColorAttribute=function(targetGeometry,morph){if(morph&&targetGeometry&&targetGeometry.morphAttributes&&targetGeometry.morphAttributes.color){var morphColors=targetGeometry.morphAttributes.color,influences=morph.morphTargetInfluences,length=influences.length;targetGeometry.deleteAttribute("morphColor0"),targetGeometry.deleteAttribute("morphColor1");for(var bound=0,morphArray=[],i=0;1>bound||i<length;i++)0<influences[i]&&(bound++,morphArray.push([i,influences[i]]));2==morphArray.length?(targetGeometry.setAttribute("morphColor0",morphColors[morphArray[0][0]]),targetGeometry.setAttribute("morphColor1",morphColors[morphArray[1][0]])):1==morphArray.length&&(targetGeometry.setAttribute("morphColor0",morphColors[morphArray[0][0]]),targetGeometry.setAttribute("morphColor1",morphColors[morphArray[0][0]]))}},exports.toBufferGeometry=(geometryIn,options)=>{var geometry;return geometryIn instanceof THREEGeometry?(options.localTimeEnabled&&!geometryIn.morphNormalsReady&&(null==geometryIn.morphNormals||0==geometryIn.morphNormals.length)&&geometryIn.computeMorphNormals(),geometry=geometryIn.toIndexedBufferGeometry(),options.localMorphColour&©MorphColorsToIndexedBufferGeometry(geometryIn,geometry)):geometryIn instanceof THREE.BufferGeometry&&(geometry=geometryIn.clone()),geometry.colorsNeedUpdate=!0,geometry.computeBoundingBox(),geometry.computeBoundingSphere(),geometryIn._video&&(geometry._video=geometryIn._video),geometry},exports.copyMorphColorsToBufferGeometry=(geometry,bufferGeometry)=>{if(geometry&&geometry.morphColors&&0<geometry.morphColors.length){for(var array=[],morphColors=geometry.morphColors,getColorsRGB=__webpack_require__(4).getColorsRGB,i=0,l=morphColors.length;i<l;i++){for(var morphColor=morphColors[i],colorArray=[],j=0;j<geometry.faces.length;j++){var face=geometry.faces[j],color=getColorsRGB(morphColor.colors,face.a);colorArray.push(color[0],color[1],color[2]),color=getColorsRGB(morphColor.colors,face.b),colorArray.push(color[0],color[1],color[2]),color=getColorsRGB(morphColor.colors,face.c),colorArray.push(color[0],color[1],color[2])}var attribute=new THREE.Float32BufferAttribute(3*(3*geometry.faces.length),3);attribute.name=morphColor.name,array.push(attribute.copyArray(colorArray))}bufferGeometry.morphAttributes.color=array}};var copyMorphColorsToIndexedBufferGeometry=(geometry,bufferGeometry)=>{if(geometry&&geometry.morphColors&&0<geometry.morphColors.length){for(var array=[],morphColors=geometry.morphColors,getColorsRGB=__webpack_require__(4).getColorsRGB,i=0,l=morphColors.length;i<l;i++){for(var color,morphColor=morphColors[i],colorArray=[],j=0;j<3*morphColor.colors.length;j++)color=getColorsRGB(morphColor.colors,j),colorArray.push(color[0],color[1],color[2]);var attribute=new THREE.Float32BufferAttribute(colorArray,3);attribute.name=morphColor.name,array.push(attribute)}bufferGeometry.morphAttributes.color=array}};exports.mergeVertices=function(geometry){var tolerance=1<arguments.length&&void 0!==arguments[1]?arguments[1]:1e-4;tolerance=Math.max(tolerance,Number.EPSILON);//
|
|
83
|
+
exports.getColorsRGB=(colors,index)=>{var index_in_colors=Math.floor(index/3),remainder=index%3,hex_value=0;0==remainder?hex_value=colors[index_in_colors].r:1==remainder?hex_value=colors[index_in_colors].g:2==remainder&&(hex_value=colors[index_in_colors].b);var mycolor=new THREE.Color(hex_value);return[mycolor.r,mycolor.g,mycolor.b]},exports.updateMorphColorAttribute=function(targetGeometry,morph){if(morph&&targetGeometry&&targetGeometry.morphAttributes&&targetGeometry.morphAttributes.color){var morphColors=targetGeometry.morphAttributes.color,influences=morph.morphTargetInfluences,length=influences.length;targetGeometry.deleteAttribute("morphColor0"),targetGeometry.deleteAttribute("morphColor1");for(var bound=0,morphArray=[],i=0;1>bound||i<length;i++)0<influences[i]&&(bound++,morphArray.push([i,influences[i]]));2==morphArray.length?(targetGeometry.setAttribute("morphColor0",morphColors[morphArray[0][0]]),targetGeometry.setAttribute("morphColor1",morphColors[morphArray[1][0]])):1==morphArray.length&&(targetGeometry.setAttribute("morphColor0",morphColors[morphArray[0][0]]),targetGeometry.setAttribute("morphColor1",morphColors[morphArray[0][0]]))}},exports.toBufferGeometry=(geometryIn,options)=>{var geometry;return geometryIn instanceof THREEGeometry?(options.localTimeEnabled&&!geometryIn.morphNormalsReady&&(null==geometryIn.morphNormals||0==geometryIn.morphNormals.length)&&geometryIn.computeMorphNormals(),geometry=geometryIn.toIndexedBufferGeometry(),options.localMorphColour&©MorphColorsToIndexedBufferGeometry(geometryIn,geometry)):geometryIn instanceof THREE.BufferGeometry&&(geometry=geometryIn.clone()),geometry.colorsNeedUpdate=!0,geometry.computeBoundingBox(),geometry.computeBoundingSphere(),geometryIn._video&&(geometry._video=geometryIn._video),geometry},exports.copyMorphColorsToBufferGeometry=(geometry,bufferGeometry)=>{if(geometry&&geometry.morphColors&&0<geometry.morphColors.length){for(var array=[],morphColors=geometry.morphColors,getColorsRGB=(__webpack_require__(4).getColorsRGB),i=0,l=morphColors.length;i<l;i++){for(var morphColor=morphColors[i],colorArray=[],j=0;j<geometry.faces.length;j++){var face=geometry.faces[j],color=getColorsRGB(morphColor.colors,face.a);colorArray.push(color[0],color[1],color[2]),color=getColorsRGB(morphColor.colors,face.b),colorArray.push(color[0],color[1],color[2]),color=getColorsRGB(morphColor.colors,face.c),colorArray.push(color[0],color[1],color[2])}var attribute=new THREE.Float32BufferAttribute(3*(3*geometry.faces.length),3);attribute.name=morphColor.name,array.push(attribute.copyArray(colorArray))}bufferGeometry.morphAttributes.color=array}};var copyMorphColorsToIndexedBufferGeometry=(geometry,bufferGeometry)=>{if(geometry&&geometry.morphColors&&0<geometry.morphColors.length){for(var array=[],morphColors=geometry.morphColors,getColorsRGB=(__webpack_require__(4).getColorsRGB),i=0,l=morphColors.length;i<l;i++){for(var color,morphColor=morphColors[i],colorArray=[],j=0;j<3*morphColor.colors.length;j++)color=getColorsRGB(morphColor.colors,j),colorArray.push(color[0],color[1],color[2]);var attribute=new THREE.Float32BufferAttribute(colorArray,3);attribute.name=morphColor.name,array.push(attribute)}bufferGeometry.morphAttributes.color=array}};exports.mergeVertices=function(geometry){var tolerance=1<arguments.length&&void 0!==arguments[1]?arguments[1]:1e-4;tolerance=Math.max(tolerance,Number.EPSILON);// next value for triangle indices
|
|
84
|
+
// attributes and new attribute arrays
|
|
85
|
+
// initialize the arrays
|
|
159
86
|
for(var name,hashToIndex={},indices=geometry.getIndex(),positions=geometry.getAttribute("position"),vertexCount=indices?indices.count:positions.count,nextIndex=0,attributeNames=Object.keys(geometry.attributes),attrArrays={},morphAttrsArrays={},newIndices=[],getters=["getX","getY","getZ","getW"],i=0,l=attributeNames.length;i<l;i++){name=attributeNames[i],attrArrays[name]=[];var morphAttr=geometry.morphAttributes[name];morphAttr&&(morphAttrsArrays[name]=Array(morphAttr.length).fill().map(()=>[]))}// convert the error tolerance to an amount of decimal places to truncate to
|
|
160
|
-
for(var decimalShift=Math.log10(1/tolerance),shiftMultiplier=Math.pow(10,decimalShift),i=0;i<vertexCount;i++){
|
|
87
|
+
for(var decimalShift=Math.log10(1/tolerance),shiftMultiplier=Math.pow(10,decimalShift),i=0;i<vertexCount;i++){// Generate a hash for the vertex attributes at the current index 'i'
|
|
88
|
+
for(var index=indices?indices.getX(i):i,hash="",j=0,l=attributeNames.length;j<l;j++)for(var name=attributeNames[j],attribute=geometry.getAttribute(name),itemSize=attribute.itemSize,k=0;k<itemSize;k++)// double tilde truncates the decimal value
|
|
161
89
|
hash+="".concat(~~(attribute[getters[k]](index)*shiftMultiplier),",");// Add another reference to the vertex if it's already
|
|
162
90
|
// used by another index
|
|
163
91
|
if(hash in hashToIndex)newIndices.push(hashToIndex[hash]);else{// copy data to the new index in the attribute arrays
|
|
@@ -169,26 +97,28 @@ var cons=Uint8Array;newIndices.length>=Math.pow(2,8)&&(cons=Uint16Array),newIndi
|
|
|
169
97
|
|
|
170
98
|
/***/ }),
|
|
171
99
|
/* 5 */
|
|
172
|
-
/***/ (
|
|
100
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
173
101
|
|
|
174
102
|
"use strict";
|
|
175
103
|
__webpack_require__.r(__webpack_exports__);
|
|
176
|
-
/* harmony export
|
|
177
|
-
/* harmony export
|
|
104
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
105
|
+
/* harmony export */ Face3: () => (/* binding */ Face3),
|
|
106
|
+
/* harmony export */ Geometry: () => (/* binding */ Geometry)
|
|
107
|
+
/* harmony export */ });
|
|
178
108
|
/* harmony import */ var three__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(3);
|
|
179
109
|
/* harmony import */ var three__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(three__WEBPACK_IMPORTED_MODULE_0__);
|
|
180
|
-
var _m1=new three__WEBPACK_IMPORTED_MODULE_0__
|
|
181
|
-
this.uuid=three__WEBPACK_IMPORTED_MODULE_0__
|
|
110
|
+
var _m1=new three__WEBPACK_IMPORTED_MODULE_0__.Matrix4,_obj=new three__WEBPACK_IMPORTED_MODULE_0__.Object3D,_offset=new three__WEBPACK_IMPORTED_MODULE_0__.Vector3;function Geometry(){// update flags
|
|
111
|
+
this.uuid=three__WEBPACK_IMPORTED_MODULE_0__.MathUtils.generateUUID(),this.name="",this.type="Geometry",this.vertices=[],this.colors=[],this.faces=[],this.faceVertexUvs=[[]],this.normals=[],this.uvs=[],this.morphTargets=[],this.morphNormals=[],this.skinWeights=[],this.skinIndices=[],this.lineDistances=[],this.boundingBox=null,this.boundingSphere=null,this.elementsNeedUpdate=!1,this.verticesNeedUpdate=!1,this.uvsNeedUpdate=!1,this.normalsNeedUpdate=!1,this.colorsNeedUpdate=!1,this.lineDistancesNeedUpdate=!1,this.groupsNeedUpdate=!1,this.morphNormalsReady=!1}Geometry.prototype=Object.assign(Object.create(three__WEBPACK_IMPORTED_MODULE_0__.EventDispatcher.prototype),{constructor:Geometry,isGeometry:!0,applyMatrix4:function applyMatrix4(matrix){for(var vertex,normalMatrix=new three__WEBPACK_IMPORTED_MODULE_0__.Matrix3().getNormalMatrix(matrix),i=0,il=this.vertices.length;i<il;i++)vertex=this.vertices[i],vertex.applyMatrix4(matrix);for(var face,_i=0,_il=this.faces.length;_i<_il;_i++){face=this.faces[_i],face.normal.applyMatrix3(normalMatrix).normalize();for(var j=0,jl=face.vertexNormals.length;j<jl;j++)face.vertexNormals[j].applyMatrix3(normalMatrix).normalize()}return null!==this.boundingBox&&this.computeBoundingBox(),null!==this.boundingSphere&&this.computeBoundingSphere(),this.verticesNeedUpdate=!0,this.normalsNeedUpdate=!0,this},rotateX:function rotateX(angle){return _m1.makeRotationX(angle),this.applyMatrix4(_m1),this},rotateY:function rotateY(angle){return _m1.makeRotationY(angle),this.applyMatrix4(_m1),this},rotateZ:function rotateZ(angle){return _m1.makeRotationZ(angle),this.applyMatrix4(_m1),this},translate:function translate(x,y,z){return _m1.makeTranslation(x,y,z),this.applyMatrix4(_m1),this},scale:function scale(x,y,z){return _m1.makeScale(x,y,z),this.applyMatrix4(_m1),this},lookAt:function lookAt(vector){return _obj.lookAt(vector),_obj.updateMatrix(),this.applyMatrix4(_obj.matrix),this},fromBufferGeometry:function fromBufferGeometry(geometry){function addFace(a,b,c,materialIndex){var vertexColors=void 0===color?[]:[scope.colors[a].clone(),scope.colors[b].clone(),scope.colors[c].clone()],vertexNormals=void 0===normal?[]:[new three__WEBPACK_IMPORTED_MODULE_0__.Vector3().fromBufferAttribute(normal,a),new three__WEBPACK_IMPORTED_MODULE_0__.Vector3().fromBufferAttribute(normal,b),new three__WEBPACK_IMPORTED_MODULE_0__.Vector3().fromBufferAttribute(normal,c)],face=new Face3(a,b,c,vertexNormals,vertexColors,materialIndex);scope.faces.push(face),void 0!==uv&&scope.faceVertexUvs[0].push([new three__WEBPACK_IMPORTED_MODULE_0__.Vector2().fromBufferAttribute(uv,a),new three__WEBPACK_IMPORTED_MODULE_0__.Vector2().fromBufferAttribute(uv,b),new three__WEBPACK_IMPORTED_MODULE_0__.Vector2().fromBufferAttribute(uv,c)]),void 0!==uv2&&scope.faceVertexUvs[1].push([new three__WEBPACK_IMPORTED_MODULE_0__.Vector2().fromBufferAttribute(uv2,a),new three__WEBPACK_IMPORTED_MODULE_0__.Vector2().fromBufferAttribute(uv2,b),new three__WEBPACK_IMPORTED_MODULE_0__.Vector2().fromBufferAttribute(uv2,c)])}var scope=this,index=null===geometry.index?void 0:geometry.index,attributes=geometry.attributes;if(void 0===attributes.position)return console.error("THREE.Geometry.fromBufferGeometry(): Position attribute required for conversion."),this;var position=attributes.position,normal=attributes.normal,color=attributes.color,uv=attributes.uv,uv2=attributes.uv2;void 0!==uv2&&(this.faceVertexUvs[1]=[]);for(var i=0;i<position.count;i++)scope.vertices.push(new three__WEBPACK_IMPORTED_MODULE_0__.Vector3().fromBufferAttribute(position,i)),void 0!==color&&scope.colors.push(new three__WEBPACK_IMPORTED_MODULE_0__.Color().fromBufferAttribute(color,i));var groups=geometry.groups;if(0<groups.length)for(var _i2=0;_i2<groups.length;_i2++)for(var group=groups[_i2],start=group.start,count=group.count,j=start,jl=start+count;j<jl;j+=3)void 0===index?addFace(j,j+1,j+2,group.materialIndex):addFace(index.getX(j),index.getX(j+1),index.getX(j+2),group.materialIndex);else if(void 0!==index)for(var _i3=0;_i3<index.count;_i3+=3)addFace(index.getX(_i3),index.getX(_i3+1),index.getX(_i3+2));else for(var _i4=0;_i4<position.count;_i4+=3)addFace(_i4,_i4+1,_i4+2);return this.computeFaceNormals(),null!==geometry.boundingBox&&(this.boundingBox=geometry.boundingBox.clone()),null!==geometry.boundingSphere&&(this.boundingSphere=geometry.boundingSphere.clone()),this},center:function center(){return this.computeBoundingBox(),this.boundingBox.getCenter(_offset).negate(),this.translate(_offset.x,_offset.y,_offset.z),this},normalize:function normalize(){this.computeBoundingSphere();var center=this.boundingSphere.center,radius=this.boundingSphere.radius,s=0===radius?1:1/radius,matrix=new three__WEBPACK_IMPORTED_MODULE_0__.Matrix4;return matrix.set(s,0,0,-s*center.x,0,s,0,-s*center.y,0,0,s,-s*center.z,0,0,0,1),this.applyMatrix4(matrix),this},computeFaceNormals:function computeFaceNormals(){for(var cb=new three__WEBPACK_IMPORTED_MODULE_0__.Vector3,ab=new three__WEBPACK_IMPORTED_MODULE_0__.Vector3,f=0,fl=this.faces.length;f<fl;f++){var face=this.faces[f],vA=this.vertices[face.a],vB=this.vertices[face.b],vC=this.vertices[face.c];cb.subVectors(vC,vB),ab.subVectors(vA,vB),cb.cross(ab),cb.normalize(),face.normal.copy(cb)}},computeVertexNormals:function computeVertexNormals(){for(var areaWeighted=!(0<arguments.length&&void 0!==arguments[0])||arguments[0],vertices=Array(this.vertices.length),v=0,vl=this.vertices.length;v<vl;v++)vertices[v]=new three__WEBPACK_IMPORTED_MODULE_0__.Vector3;if(areaWeighted)// vertex normals weighted by triangle areas
|
|
182
112
|
// http://www.iquilezles.org/www/articles/normals/normals.htm
|
|
183
|
-
for(var cb=new three__WEBPACK_IMPORTED_MODULE_0__
|
|
113
|
+
for(var cb=new three__WEBPACK_IMPORTED_MODULE_0__.Vector3,ab=new three__WEBPACK_IMPORTED_MODULE_0__.Vector3,f=0,fl=this.faces.length;f<fl;f++){var face=this.faces[f],vA=this.vertices[face.a],vB=this.vertices[face.b],vC=this.vertices[face.c];cb.subVectors(vC,vB),ab.subVectors(vA,vB),cb.cross(ab),vertices[face.a].add(cb),vertices[face.b].add(cb),vertices[face.c].add(cb)}else{this.computeFaceNormals();for(var _face,_f=0,_fl=this.faces.length;_f<_fl;_f++)_face=this.faces[_f],vertices[_face.a].add(_face.normal),vertices[_face.b].add(_face.normal),vertices[_face.c].add(_face.normal)}for(var _v=0,_vl=this.vertices.length;_v<_vl;_v++)vertices[_v].normalize();for(var _f2=0,_fl2=this.faces.length;_f2<_fl2;_f2++){var _face2=this.faces[_f2],vertexNormals=_face2.vertexNormals;3===vertexNormals.length?(vertexNormals[0].copy(vertices[_face2.a]),vertexNormals[1].copy(vertices[_face2.b]),vertexNormals[2].copy(vertices[_face2.c])):(vertexNormals[0]=vertices[_face2.a].clone(),vertexNormals[1]=vertices[_face2.b].clone(),vertexNormals[2]=vertices[_face2.c].clone())}return 0<this.faces.length&&(this.normalsNeedUpdate=!0),vertices},computeFlatVertexNormals:function computeFlatVertexNormals(){this.computeFaceNormals();for(var f=0,fl=this.faces.length;f<fl;f++){var face=this.faces[f],vertexNormals=face.vertexNormals;3===vertexNormals.length?(vertexNormals[0].copy(face.normal),vertexNormals[1].copy(face.normal),vertexNormals[2].copy(face.normal)):(vertexNormals[0]=face.normal.clone(),vertexNormals[1]=face.normal.clone(),vertexNormals[2]=face.normal.clone())}0<this.faces.length&&(this.normalsNeedUpdate=!0)},computeMorphNormals:function computeMorphNormals(){// save original normals
|
|
184
114
|
// - create temp variables on first access
|
|
185
115
|
// otherwise just copy (for faster repeated calls)
|
|
186
116
|
for(var face,f=0,fl=this.faces.length;f<fl;f++){face=this.faces[f],face.__originalFaceNormal?face.__originalFaceNormal.copy(face.normal):face.__originalFaceNormal=face.normal.clone(),face.__originalVertexNormals||(face.__originalVertexNormals=[]);for(var i=0,il=face.vertexNormals.length;i<il;i++)face.__originalVertexNormals[i]?face.__originalVertexNormals[i].copy(face.vertexNormals[i]):face.__originalVertexNormals[i]=face.vertexNormals[i].clone()}// use temp geometry to compute face and vertex normals for each morph
|
|
187
117
|
var tmpGeo=new Geometry;tmpGeo.faces=this.faces;for(var _i5=0,_il2=this.morphTargets.length;_i5<_il2;_i5++){// create on first access
|
|
188
|
-
if(!this.morphNormals[_i5]){this.morphNormals[_i5]={},this.morphNormals[_i5].faceNormals=[],this.morphNormals[_i5].vertexNormals=[];for(var dstNormalsFace=this.morphNormals[_i5].faceNormals,dstNormalsVertex=this.morphNormals[_i5].vertexNormals,_f3=0,_fl3=this.faces.length;_f3<_fl3;_f3++){var faceNormal=new three__WEBPACK_IMPORTED_MODULE_0__
|
|
118
|
+
if(!this.morphNormals[_i5]){this.morphNormals[_i5]={},this.morphNormals[_i5].faceNormals=[],this.morphNormals[_i5].vertexNormals=[];for(var dstNormalsFace=this.morphNormals[_i5].faceNormals,dstNormalsVertex=this.morphNormals[_i5].vertexNormals,_f3=0,_fl3=this.faces.length;_f3<_fl3;_f3++){var faceNormal=new three__WEBPACK_IMPORTED_MODULE_0__.Vector3,_vertexNormals={a:new three__WEBPACK_IMPORTED_MODULE_0__.Vector3,b:new three__WEBPACK_IMPORTED_MODULE_0__.Vector3,c:new three__WEBPACK_IMPORTED_MODULE_0__.Vector3};dstNormalsFace.push(faceNormal),dstNormalsVertex.push(_vertexNormals)}}var morphNormals=this.morphNormals[_i5];// set vertices to morph target
|
|
189
119
|
tmpGeo.vertices=this.morphTargets[_i5].vertices,tmpGeo.computeFaceNormals();var vertexNormals=tmpGeo.computeVertexNormals();if(vertexNormals&&0<vertexNormals.length){this.morphTargets[_i5].normals=Array(this.vertices.length);for(var v=0;v<vertexNormals.length;v++)this.morphTargets[_i5].normals[v]=vertexNormals[v].clone()}// store morph normals
|
|
190
120
|
for(var _f4=0,_fl4=this.faces.length;_f4<_fl4;_f4++){var _face3=this.faces[_f4],_faceNormal=morphNormals.faceNormals[_f4],_vertexNormals2=morphNormals.vertexNormals[_f4];_faceNormal.copy(_face3.normal),_vertexNormals2.a.copy(_face3.vertexNormals[0]),_vertexNormals2.b.copy(_face3.vertexNormals[1]),_vertexNormals2.c.copy(_face3.vertexNormals[2])}}// restore original normals
|
|
191
|
-
for(var _face4,_f5=0,_fl5=this.faces.length;_f5<_fl5;_f5++)_face4=this.faces[_f5],_face4.normal=_face4.__originalFaceNormal,_face4.vertexNormals=_face4.__originalVertexNormals;this.morphNormalsReady=!0},computeBoundingBox:function computeBoundingBox(){null===this.boundingBox&&(this.boundingBox=new three__WEBPACK_IMPORTED_MODULE_0__
|
|
121
|
+
for(var _face4,_f5=0,_fl5=this.faces.length;_f5<_fl5;_f5++)_face4=this.faces[_f5],_face4.normal=_face4.__originalFaceNormal,_face4.vertexNormals=_face4.__originalVertexNormals;this.morphNormalsReady=!0},computeBoundingBox:function computeBoundingBox(){null===this.boundingBox&&(this.boundingBox=new three__WEBPACK_IMPORTED_MODULE_0__.Box3),this.boundingBox.setFromPoints(this.vertices)},computeBoundingSphere:function computeBoundingSphere(){null===this.boundingSphere&&(this.boundingSphere=new three__WEBPACK_IMPORTED_MODULE_0__.Sphere),this.boundingSphere.setFromPoints(this.vertices)},merge:function merge(geometry,matrix){var materialIndexOffset=2<arguments.length&&arguments[2]!==void 0?arguments[2]:0;if(!(geometry&&geometry.isGeometry))return void console.error("THREE.Geometry.merge(): geometry not an instance of THREE.Geometry.",geometry);var normalMatrix,vertexOffset=this.vertices.length,vertices1=this.vertices,vertices2=geometry.vertices,faces1=this.faces,faces2=geometry.faces,colors1=this.colors,colors2=geometry.colors;matrix!==void 0&&(normalMatrix=new three__WEBPACK_IMPORTED_MODULE_0__.Matrix3().getNormalMatrix(matrix));// vertices
|
|
192
122
|
for(var i=0,il=vertices2.length;i<il;i++){var vertex=vertices2[i],vertexCopy=vertex.clone();matrix!==void 0&&vertexCopy.applyMatrix4(matrix),vertices1.push(vertexCopy)}// colors
|
|
193
123
|
for(var _i6=0,_il3=colors2.length;_i6<_il3;_i6++)colors1.push(colors2[_i6].clone());// faces
|
|
194
124
|
for(var _i7=0,_il4=faces2.length;_i7<_il4;_i7++){var face=faces2[_i7],normal=void 0,color=void 0,faceVertexNormals=face.vertexNormals,faceVertexColors=face.vertexColors,faceCopy=new Face3(face.a+vertexOffset,face.b+vertexOffset,face.c+vertexOffset);faceCopy.normal.copy(face.normal),normalMatrix!==void 0&&faceCopy.normal.applyMatrix3(normalMatrix).normalize();for(var j=0,jl=faceVertexNormals.length;j<jl;j++)normal=faceVertexNormals[j].clone(),void 0!==normalMatrix&&normal.applyMatrix3(normalMatrix).normalize(),faceCopy.vertexNormals.push(normal);faceCopy.color.copy(face.color);for(var _j=0,_jl=faceVertexColors.length;_j<_jl;_j++)color=faceVertexColors[_j],faceCopy.vertexColors.push(color.clone());faceCopy.materialIndex=face.materialIndex+materialIndexOffset,faces1.push(faceCopy)}// uvs
|
|
@@ -196,16 +126,18 @@ for(var faceVertexUvs2,_i8=0,_il5=geometry.faceVertexUvs.length;_i8<_il5;_i8++){
|
|
|
196
126
|
* Checks for duplicate vertices with hashmap.
|
|
197
127
|
* Duplicated vertices are removed
|
|
198
128
|
* and faces' vertices are updated.
|
|
199
|
-
*/mergeVertices:function mergeVertices(){for
|
|
129
|
+
*/mergeVertices:function mergeVertices(){// Hashmap for looking up vertices by position coordinates (and making sure they are unique)
|
|
130
|
+
for(var precisionPoints=0<arguments.length&&void 0!==arguments[0]?arguments[0]:4,verticesMap={},unique=[],changes=[],precision=Math.pow(10,precisionPoints),i=0,il=this.vertices.length;i<il;i++){var v=this.vertices[i],key=Math.round(v.x*precision)+"_"+Math.round(v.y*precision)+"_"+Math.round(v.z*precision);void 0===verticesMap[key]?(verticesMap[key]=i,unique.push(this.vertices[i]),changes[i]=unique.length-1):changes[i]=changes[verticesMap[key]]}// if faces are completely degenerate after merging vertices, we
|
|
200
131
|
// have to remove them from the geometry.
|
|
201
132
|
for(var face,faceIndicesToRemove=[],_i9=0,_il6=this.faces.length;_i9<_il6;_i9++){face=this.faces[_i9],face.a=changes[face.a],face.b=changes[face.b],face.c=changes[face.c];// if any duplicate vertices are found in a Face3
|
|
202
133
|
// we have to remove the face as nothing can be saved
|
|
203
134
|
for(var indices=[face.a,face.b,face.c],n=0;3>n;n++)if(indices[n]===indices[(n+1)%3]){faceIndicesToRemove.push(_i9);break}}for(var idx,_i10=faceIndicesToRemove.length-1;0<=_i10;_i10--){idx=faceIndicesToRemove[_i10],this.faces.splice(idx,1);for(var j=0,jl=this.faceVertexUvs.length;j<jl;j++)this.faceVertexUvs[j].splice(idx,1)}// Use unique set of vertices
|
|
204
|
-
var diff=this.vertices.length-unique.length;return this.vertices=unique,diff},setFromPoints:function setFromPoints(points){this.vertices=[];for(var point,i=0,l=points.length;i<l;i++)point=points[i],this.vertices.push(new three__WEBPACK_IMPORTED_MODULE_0__
|
|
135
|
+
var diff=this.vertices.length-unique.length;return this.vertices=unique,diff},setFromPoints:function setFromPoints(points){this.vertices=[];for(var point,i=0,l=points.length;i<l;i++)point=points[i],this.vertices.push(new three__WEBPACK_IMPORTED_MODULE_0__.Vector3(point.x,point.y,point.z||0));return this},sortFacesByMaterialIndex:function sortFacesByMaterialIndex(){// sort faces
|
|
205
136
|
// tag faces
|
|
206
137
|
for(var faces=this.faces,length=faces.length,i=0;i<length;i++)faces[i]._id=i;faces.sort(function(a,b){return a.materialIndex-b.materialIndex});// sort uvs
|
|
207
138
|
var newUvs1,newUvs2,uvs1=this.faceVertexUvs[0],uvs2=this.faceVertexUvs[1];uvs1&&uvs1.length===length&&(newUvs1=[]),uvs2&&uvs2.length===length&&(newUvs2=[]);for(var id,_i11=0;_i11<length;_i11++)id=faces[_i11]._id,newUvs1&&newUvs1.push(uvs1[id]),newUvs2&&newUvs2.push(uvs2[id]);newUvs1&&(this.faceVertexUvs[0]=newUvs1),newUvs2&&(this.faceVertexUvs[1]=newUvs2)},toJSON:function toJSON(){function setBit(value,position,enabled){return enabled?value|1<<position:value&~(1<<position)}function getNormalIndex(normal){var hash=normal.x.toString()+normal.y.toString()+normal.z.toString();return void 0===normalsHash[hash]?(normalsHash[hash]=normals.length/3,normals.push(normal.x,normal.y,normal.z),normalsHash[hash]):normalsHash[hash]}function getColorIndex(color){var hash=color.r.toString()+color.g.toString()+color.b.toString();return void 0===colorsHash[hash]?(colorsHash[hash]=colors.length,colors.push(color.getHex()),colorsHash[hash]):colorsHash[hash]}function getUvIndex(uv){var hash=uv.x.toString()+uv.y.toString();return void 0===uvsHash[hash]?(uvsHash[hash]=uvs.length/2,uvs.push(uv.x,uv.y),uvsHash[hash]):uvsHash[hash]}var data={metadata:{version:4.5,type:"Geometry",generator:"Geometry.toJSON"}};// standard Geometry serialization
|
|
208
|
-
if(data.uuid=this.uuid,data.type=this.type,""!==this.name&&(data.name=this.name),void 0!==this.parameters){var parameters=this.parameters;for(var key in parameters)void 0!==parameters[key]&&(data[key]=parameters[key]);return data}for(var vertex,vertices=[],i=0;i<this.vertices.length;i++)vertex=this.vertices[i],vertices.push(vertex.x,vertex.y,vertex.z);for(var faces=[],normals=[],normalsHash={},colors=[],colorsHash={},uvs=[],uvsHash={},_i12=0;_i12<this.faces.length;_i12++){var face=this.faces[_i12],hasFaceVertexUv=void 0!==this.faceVertexUvs[0][_i12],hasFaceNormal=0<face.normal.length(),hasFaceVertexNormal=0<face.vertexNormals.length,hasFaceColor=1!==face.color.r||1!==face.color.g||1!==face.color.b,hasFaceVertexColor=0<face.vertexColors.length,faceType=0
|
|
139
|
+
if(data.uuid=this.uuid,data.type=this.type,""!==this.name&&(data.name=this.name),void 0!==this.parameters){var parameters=this.parameters;for(var key in parameters)void 0!==parameters[key]&&(data[key]=parameters[key]);return data}for(var vertex,vertices=[],i=0;i<this.vertices.length;i++)vertex=this.vertices[i],vertices.push(vertex.x,vertex.y,vertex.z);for(var faces=[],normals=[],normalsHash={},colors=[],colorsHash={},uvs=[],uvsHash={},_i12=0;_i12<this.faces.length;_i12++){var face=this.faces[_i12],hasMaterial=!0,hasFaceUv=!1,hasFaceVertexUv=void 0!==this.faceVertexUvs[0][_i12],hasFaceNormal=0<face.normal.length(),hasFaceVertexNormal=0<face.vertexNormals.length,hasFaceColor=1!==face.color.r||1!==face.color.g||1!==face.color.b,hasFaceVertexColor=0<face.vertexColors.length,faceType=0;// deprecated
|
|
140
|
+
if(faceType=setBit(faceType,0,0),faceType=setBit(faceType,1,hasMaterial),faceType=setBit(faceType,2,hasFaceUv),faceType=setBit(faceType,3,hasFaceVertexUv),faceType=setBit(faceType,4,hasFaceNormal),faceType=setBit(faceType,5,hasFaceVertexNormal),faceType=setBit(faceType,6,hasFaceColor),faceType=setBit(faceType,7,hasFaceVertexColor),faces.push(faceType),faces.push(face.a,face.b,face.c),faces.push(face.materialIndex),hasFaceVertexUv){var faceVertexUvs=this.faceVertexUvs[0][_i12];faces.push(getUvIndex(faceVertexUvs[0]),getUvIndex(faceVertexUvs[1]),getUvIndex(faceVertexUvs[2]))}if(hasFaceNormal&&faces.push(getNormalIndex(face.normal)),hasFaceVertexNormal){var vertexNormals=face.vertexNormals;faces.push(getNormalIndex(vertexNormals[0]),getNormalIndex(vertexNormals[1]),getNormalIndex(vertexNormals[2]))}if(hasFaceColor&&faces.push(getColorIndex(face.color)),hasFaceVertexColor){var vertexColors=face.vertexColors;faces.push(getColorIndex(vertexColors[0]),getColorIndex(vertexColors[1]),getColorIndex(vertexColors[2]))}}return data.data={},data.data.vertices=vertices,data.data.normals=normals,0<colors.length&&(data.data.colors=colors),0<uvs.length&&(data.data.uvs=[uvs]),data.data.faces=faces,data},clone:function clone(){/*
|
|
209
141
|
// Handle primitives
|
|
210
142
|
|
|
211
143
|
const parameters = this.parameters;
|
|
@@ -242,31 +174,32 @@ for(var skinIndices=source.skinIndices,_i19=0,_il13=skinIndices.length;_i19<_il1
|
|
|
242
174
|
for(var lineDistances=source.lineDistances,_i20=0,_il14=lineDistances.length;_i20<_il14;_i20++)this.lineDistances.push(lineDistances[_i20]);// bounding box
|
|
243
175
|
var boundingBox=source.boundingBox;null!==boundingBox&&(this.boundingBox=boundingBox.clone());// bounding sphere
|
|
244
176
|
var boundingSphere=source.boundingSphere;return null!==boundingSphere&&(this.boundingSphere=boundingSphere.clone()),this.elementsNeedUpdate=source.elementsNeedUpdate,this.verticesNeedUpdate=source.verticesNeedUpdate,this.uvsNeedUpdate=source.uvsNeedUpdate,this.normalsNeedUpdate=source.normalsNeedUpdate,this.colorsNeedUpdate=source.colorsNeedUpdate,this.lineDistancesNeedUpdate=source.lineDistancesNeedUpdate,this.groupsNeedUpdate=source.groupsNeedUpdate,this},computeGroups(){var group,i,groups=[],materialIndex=void 0,faces=this.faces;for(i=0;i<faces.length;i++){var face=faces[i];// materials
|
|
245
|
-
face.materialIndex!==materialIndex&&(materialIndex=face.materialIndex,void 0!==group&&(group.count=3*i-group.start,groups.push(group)),group={start:3*i,materialIndex:materialIndex})}return void 0!==group&&(group.count=3*i-group.start,groups.push(group)),groups},toBufferGeometry:function toBufferGeometry(){var geometry=new DirectGeometry().fromGeometry(this),buffergeometry=new three__WEBPACK_IMPORTED_MODULE_0__
|
|
177
|
+
face.materialIndex!==materialIndex&&(materialIndex=face.materialIndex,void 0!==group&&(group.count=3*i-group.start,groups.push(group)),group={start:3*i,materialIndex:materialIndex})}return void 0!==group&&(group.count=3*i-group.start,groups.push(group)),groups},toBufferGeometry:function toBufferGeometry(){var geometry=new DirectGeometry().fromGeometry(this),buffergeometry=new three__WEBPACK_IMPORTED_MODULE_0__.BufferGeometry,positions=new Float32Array(3*geometry.vertices.length);if(buffergeometry.setAttribute("position",new three__WEBPACK_IMPORTED_MODULE_0__.BufferAttribute(positions,3).copyVector3sArray(geometry.vertices)),0<geometry.normals.length){var normals=new Float32Array(3*geometry.normals.length);buffergeometry.setAttribute("normal",new three__WEBPACK_IMPORTED_MODULE_0__.BufferAttribute(normals,3).copyVector3sArray(geometry.normals))}if(0<geometry.colors.length){var colors=new Float32Array(3*geometry.colors.length);buffergeometry.setAttribute("color",new three__WEBPACK_IMPORTED_MODULE_0__.BufferAttribute(colors,3).copyColorsArray(geometry.colors))}if(0<geometry.uvs.length){var uvs=new Float32Array(2*geometry.uvs.length);buffergeometry.setAttribute("uv",new three__WEBPACK_IMPORTED_MODULE_0__.BufferAttribute(uvs,2).copyVector2sArray(geometry.uvs))}if(0<geometry.uvs2.length){var uvs2=new Float32Array(2*geometry.uvs2.length);buffergeometry.setAttribute("uv2",new three__WEBPACK_IMPORTED_MODULE_0__.BufferAttribute(uvs2,2).copyVector2sArray(geometry.uvs2))}// groups
|
|
246
178
|
// morphs
|
|
247
|
-
for(var name in buffergeometry.groups=geometry.groups,geometry.morphTargets){for(var array=[],morphTargets=geometry.morphTargets[name],i=0,l=morphTargets.length;i<l;i++){var morphTarget=morphTargets[i],attribute=new three__WEBPACK_IMPORTED_MODULE_0__
|
|
248
|
-
if(0<geometry.skinIndices.length){var skinIndices=new three__WEBPACK_IMPORTED_MODULE_0__
|
|
179
|
+
for(var name in buffergeometry.groups=geometry.groups,geometry.morphTargets){for(var array=[],morphTargets=geometry.morphTargets[name],i=0,l=morphTargets.length;i<l;i++){var morphTarget=morphTargets[i],attribute=new three__WEBPACK_IMPORTED_MODULE_0__.Float32BufferAttribute(3*morphTarget.data.length,3);attribute.name=morphTarget.name,array.push(attribute.copyVector3sArray(morphTarget.data))}buffergeometry.morphAttributes[name]=array}// skinning
|
|
180
|
+
if(0<geometry.skinIndices.length){var skinIndices=new three__WEBPACK_IMPORTED_MODULE_0__.Float32BufferAttribute(4*geometry.skinIndices.length,4);buffergeometry.setAttribute("skinIndex",skinIndices.copyVector4sArray(geometry.skinIndices))}if(0<geometry.skinWeights.length){var skinWeights=new three__WEBPACK_IMPORTED_MODULE_0__.Float32BufferAttribute(4*geometry.skinWeights.length,4);buffergeometry.setAttribute("skinWeight",skinWeights.copyVector4sArray(geometry.skinWeights))}//
|
|
249
181
|
return null!==geometry.boundingSphere&&(buffergeometry.boundingSphere=geometry.boundingSphere.clone()),null!==geometry.boundingBox&&(buffergeometry.boundingBox=geometry.boundingBox.clone()),buffergeometry},toIndexedBufferGeometry:function toIndexedBufferGeometry(){//const geometry = new DirectGeometry().fromGeometry( this );
|
|
250
|
-
var buffergeometry=new three__WEBPACK_IMPORTED_MODULE_0__
|
|
182
|
+
var buffergeometry=new three__WEBPACK_IMPORTED_MODULE_0__.BufferGeometry,positions=new Float32Array(3*this.vertices.length);if(buffergeometry.setAttribute("position",new three__WEBPACK_IMPORTED_MODULE_0__.BufferAttribute(positions,3).copyVector3sArray(this.vertices)),0<this.normals.length){var normals=new Float32Array(this.normals.length),buffer=new three__WEBPACK_IMPORTED_MODULE_0__.BufferAttribute(normals,3).copyArray(this.normals);buffergeometry.setAttribute("normal",buffer)}if(0<this.uvs.length&&0<this.uvs[0].length){var uvs=new Float32Array(2*this.uvs[0].length);buffergeometry.setAttribute("uv",new three__WEBPACK_IMPORTED_MODULE_0__.BufferAttribute(uvs,2).copyArray(this.uvs[0]))}if(1<this.uvs.length&&0<this.uvs[1].length){var uvs2=new Float32Array(2*this.uvs[1].length);buffergeometry.setAttribute("uv2",new three__WEBPACK_IMPORTED_MODULE_0__.BufferAttribute(uvs2,2).copyArray(this.uvs[1]))}if(0<this.colors.length){for(var colorArray=[],i=0;i<this.colors.length;i++)colorArray.push(new three__WEBPACK_IMPORTED_MODULE_0__.Color(this.colors[i]));var colors=new Float32Array(3*colorArray.length);buffergeometry.setAttribute("color",new three__WEBPACK_IMPORTED_MODULE_0__.BufferAttribute(colors,3).copyColorsArray(colorArray))}else{for(var colorsArray=new Float32Array(3*this.vertices.length),_i21=0;_i21<3*this.vertices.length;_i21++)colorsArray[_i21]=1;buffergeometry.setAttribute("color",new three__WEBPACK_IMPORTED_MODULE_0__.BufferAttribute(colorsArray,3))}if(0<this.faces.length){for(var _colors=[],indices=[],_i22=0;_i22<this.faces.length;_i22++){indices.push(this.faces[_i22].a,this.faces[_i22].b,this.faces[_i22].c);var vertexColors=this.faces[_i22].vertexColors;if(3===vertexColors.length)_colors.push(vertexColors[0],vertexColors[1],vertexColors[2]);else{var color=this.faces[_i22].color;_colors.push(color,color,color)}}// if ( colors.length > 0 ) {
|
|
251
183
|
// const colorsArray = new Float32Array( colors.length * 3 );
|
|
252
184
|
// buffergeometry.setAttribute( 'color', new BufferAttribute( colorsArray, 3 ).copyColorsArray( colors ) );
|
|
253
185
|
// }
|
|
254
186
|
buffergeometry.setIndex(indices),buffergeometry.groups=this.computeGroups()}// morphs
|
|
255
|
-
if(0<this.morphTargets.length){for(var array=[],normalsArray=[],_i23=0,l=this.morphTargets.length;_i23<l;_i23++){var morphTarget=this.morphTargets[_i23],attribute=new three__WEBPACK_IMPORTED_MODULE_0__
|
|
256
|
-
if(0<this.skinIndices.length){var skinIndices=new three__WEBPACK_IMPORTED_MODULE_0__
|
|
257
|
-
return null!==this.boundingSphere&&(buffergeometry.boundingSphere=this.boundingSphere.clone()),null!==this.boundingBox&&(buffergeometry.boundingBox=this.boundingBox.clone()),buffergeometry},computeTangents:function computeTangents(){console.error("THREE.Geometry: .computeTangents() has been removed.")},computeLineDistances:function computeLineDistances(){console.error("THREE.Geometry: .computeLineDistances() has been removed. Use THREE.Line.computeLineDistances() instead.")},applyMatrix:function applyMatrix(matrix){return console.warn("THREE.Geometry: .applyMatrix() has been renamed to .applyMatrix4()."),this.applyMatrix4(matrix)},dispose:function dispose(){this.dispatchEvent({type:"dispose"})}}),Geometry.createBufferGeometryFromObject=function(object){var buffergeometry=new three__WEBPACK_IMPORTED_MODULE_0__
|
|
187
|
+
if(0<this.morphTargets.length){for(var array=[],normalsArray=[],_i23=0,l=this.morphTargets.length;_i23<l;_i23++){var morphTarget=this.morphTargets[_i23],attribute=new three__WEBPACK_IMPORTED_MODULE_0__.Float32BufferAttribute(3*morphTarget.vertices.length,3);if(attribute.name=morphTarget.name,array.push(attribute.copyVector3sArray(morphTarget.vertices)),morphTarget.normals){var _attribute=new three__WEBPACK_IMPORTED_MODULE_0__.Float32BufferAttribute(3*morphTarget.normals.length,3);_attribute.name=morphTarget.name,normalsArray.push(_attribute.copyVector3sArray(morphTarget.normals))}}buffergeometry.morphAttributes.position=array,buffergeometry.morphAttributes.normal=normalsArray}// skinning
|
|
188
|
+
if(0<this.skinIndices.length){var skinIndices=new three__WEBPACK_IMPORTED_MODULE_0__.Float32BufferAttribute(4*this.skinIndices.length,4);buffergeometry.setAttribute("skinIndex",skinIndices.copyVector4sArray(this.skinIndices))}if(0<this.skinWeights.length){var skinWeights=new three__WEBPACK_IMPORTED_MODULE_0__.Float32BufferAttribute(4*this.skinWeights.length,4);buffergeometry.setAttribute("skinWeight",skinWeights.copyVector4sArray(this.skinWeights))}//
|
|
189
|
+
return null!==this.boundingSphere&&(buffergeometry.boundingSphere=this.boundingSphere.clone()),null!==this.boundingBox&&(buffergeometry.boundingBox=this.boundingBox.clone()),buffergeometry},computeTangents:function computeTangents(){console.error("THREE.Geometry: .computeTangents() has been removed.")},computeLineDistances:function computeLineDistances(){console.error("THREE.Geometry: .computeLineDistances() has been removed. Use THREE.Line.computeLineDistances() instead.")},applyMatrix:function applyMatrix(matrix){return console.warn("THREE.Geometry: .applyMatrix() has been renamed to .applyMatrix4()."),this.applyMatrix4(matrix)},dispose:function dispose(){this.dispatchEvent({type:"dispose"})}}),Geometry.createBufferGeometryFromObject=function(object){var buffergeometry=new three__WEBPACK_IMPORTED_MODULE_0__.BufferGeometry,geometry=object.geometry;if(object.isPoints||object.isLine){var positions=new three__WEBPACK_IMPORTED_MODULE_0__.Float32BufferAttribute(3*geometry.vertices.length,3),colors=new three__WEBPACK_IMPORTED_MODULE_0__.Float32BufferAttribute(3*geometry.colors.length,3);if(buffergeometry.setAttribute("position",positions.copyVector3sArray(geometry.vertices)),buffergeometry.setAttribute("color",colors.copyColorsArray(geometry.colors)),geometry.lineDistances&&geometry.lineDistances.length===geometry.vertices.length){var lineDistances=new three__WEBPACK_IMPORTED_MODULE_0__.Float32BufferAttribute(geometry.lineDistances.length,1);buffergeometry.setAttribute("lineDistance",lineDistances.copyArray(geometry.lineDistances))}null!==geometry.boundingSphere&&(buffergeometry.boundingSphere=geometry.boundingSphere.clone()),null!==geometry.boundingBox&&(buffergeometry.boundingBox=geometry.boundingBox.clone())}else object.isMesh&&(buffergeometry=geometry.toBufferGeometry());return buffergeometry};class DirectGeometry{constructor(){// this.lineDistances = [];
|
|
258
190
|
// update flags
|
|
259
191
|
this.vertices=[],this.normals=[],this.colors=[],this.uvs=[],this.uvs2=[],this.groups=[],this.morphTargets={},this.skinWeights=[],this.skinIndices=[],this.boundingBox=null,this.boundingSphere=null,this.verticesNeedUpdate=!1,this.normalsNeedUpdate=!1,this.colorsNeedUpdate=!1,this.uvsNeedUpdate=!1,this.groupsNeedUpdate=!1}computeGroups(geometry){var group,i,groups=[],materialIndex=void 0,faces=geometry.faces;for(i=0;i<faces.length;i++){var face=faces[i];// materials
|
|
260
|
-
face.materialIndex!==materialIndex&&(materialIndex=face.materialIndex,group!==void 0&&(group.count=3*i-group.start,groups.push(group)),group={start:3*i,materialIndex:materialIndex})}group!==void 0&&(group.count=3*i-group.start,groups.push(group)),this.groups=groups}fromGeometry(geometry){var morphTargetsPosition,faces=geometry.faces,vertices=geometry.vertices,faceVertexUvs=geometry.faceVertexUvs,hasFaceVertexUv=faceVertexUvs[0]&&0<faceVertexUvs[0].length,hasFaceVertexUv2=faceVertexUvs[1]&&0<faceVertexUvs[1].length,morphTargets=geometry.morphTargets,morphTargetsLength=morphTargets.length
|
|
261
|
-
|
|
192
|
+
face.materialIndex!==materialIndex&&(materialIndex=face.materialIndex,group!==void 0&&(group.count=3*i-group.start,groups.push(group)),group={start:3*i,materialIndex:materialIndex})}group!==void 0&&(group.count=3*i-group.start,groups.push(group)),this.groups=groups}fromGeometry(geometry){var morphTargetsPosition,faces=geometry.faces,vertices=geometry.vertices,faceVertexUvs=geometry.faceVertexUvs,hasFaceVertexUv=faceVertexUvs[0]&&0<faceVertexUvs[0].length,hasFaceVertexUv2=faceVertexUvs[1]&&0<faceVertexUvs[1].length,morphTargets=geometry.morphTargets,morphTargetsLength=morphTargets.length;// morphs
|
|
193
|
+
if(0<morphTargetsLength){morphTargetsPosition=[];for(var i=0;i<morphTargetsLength;i++)morphTargetsPosition[i]={name:morphTargets[i].name,data:[]};this.morphTargets.position=morphTargetsPosition}var morphTargetsNormal,morphNormals=geometry.morphNormals,morphNormalsLength=morphNormals.length;if(0<morphNormalsLength){morphTargetsNormal=[];for(var _i24=0;_i24<morphNormalsLength;_i24++)morphTargetsNormal[_i24]={name:morphNormals[_i24].name,data:[]};this.morphTargets.normal=morphTargetsNormal}// skins
|
|
194
|
+
var skinIndices=geometry.skinIndices,skinWeights=geometry.skinWeights,hasSkinIndices=skinIndices.length===vertices.length,hasSkinWeights=skinWeights.length===vertices.length;0<vertices.length&&0===faces.length&&console.error("THREE.DirectGeometry: Faceless geometries are not supported.");for(var face,_i25=0;_i25<faces.length;_i25++){face=faces[_i25],this.vertices.push(vertices[face.a],vertices[face.b],vertices[face.c]);var vertexNormals=face.vertexNormals;if(3===vertexNormals.length)this.normals.push(vertexNormals[0],vertexNormals[1],vertexNormals[2]);else{var normal=face.normal;this.normals.push(normal,normal,normal)}var vertexColors=face.vertexColors;if(3===vertexColors.length)this.colors.push(vertexColors[0],vertexColors[1],vertexColors[2]);else{var color=face.color;this.colors.push(color,color,color)}if(!0===hasFaceVertexUv){var vertexUvs=faceVertexUvs[0][_i25];void 0===vertexUvs?(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv ",_i25),this.uvs.push(new three__WEBPACK_IMPORTED_MODULE_0__.Vector2,new three__WEBPACK_IMPORTED_MODULE_0__.Vector2,new three__WEBPACK_IMPORTED_MODULE_0__.Vector2)):this.uvs.push(vertexUvs[0],vertexUvs[1],vertexUvs[2])}if(!0===hasFaceVertexUv2){var _vertexUvs=faceVertexUvs[1][_i25];void 0===_vertexUvs?(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv2 ",_i25),this.uvs2.push(new three__WEBPACK_IMPORTED_MODULE_0__.Vector2,new three__WEBPACK_IMPORTED_MODULE_0__.Vector2,new three__WEBPACK_IMPORTED_MODULE_0__.Vector2)):this.uvs2.push(_vertexUvs[0],_vertexUvs[1],_vertexUvs[2])}// morphs
|
|
262
195
|
for(var morphTarget,j=0;j<morphTargetsLength;j++)morphTarget=morphTargets[j].vertices,morphTargetsPosition[j].data.push(morphTarget[face.a],morphTarget[face.b],morphTarget[face.c]);for(var morphNormal,_j7=0;_j7<morphNormalsLength;_j7++)morphNormal=morphNormals[_j7].vertexNormals[_i25],morphTargetsNormal[_j7].data.push(morphNormal.a,morphNormal.b,morphNormal.c);// skins
|
|
263
|
-
hasSkinIndices&&this.skinIndices.push(skinIndices[face.a],skinIndices[face.b],skinIndices[face.c]),hasSkinWeights&&this.skinWeights.push(skinWeights[face.a],skinWeights[face.b],skinWeights[face.c])}return this.computeGroups(geometry),this.verticesNeedUpdate=geometry.verticesNeedUpdate,this.normalsNeedUpdate=geometry.normalsNeedUpdate,this.colorsNeedUpdate=geometry.colorsNeedUpdate,this.uvsNeedUpdate=geometry.uvsNeedUpdate,this.groupsNeedUpdate=geometry.groupsNeedUpdate,null!==geometry.boundingSphere&&(this.boundingSphere=geometry.boundingSphere.clone()),null!==geometry.boundingBox&&(this.boundingBox=geometry.boundingBox.clone()),this}}class Face3{constructor(a,b,c,normal,color){var materialIndex=5<arguments.length&&arguments[5]!==void 0?arguments[5]:0;this.a=a,this.b=b,this.c=c,this.normal=normal&&normal.isVector3?normal:new three__WEBPACK_IMPORTED_MODULE_0__
|
|
196
|
+
hasSkinIndices&&this.skinIndices.push(skinIndices[face.a],skinIndices[face.b],skinIndices[face.c]),hasSkinWeights&&this.skinWeights.push(skinWeights[face.a],skinWeights[face.b],skinWeights[face.c])}return this.computeGroups(geometry),this.verticesNeedUpdate=geometry.verticesNeedUpdate,this.normalsNeedUpdate=geometry.normalsNeedUpdate,this.colorsNeedUpdate=geometry.colorsNeedUpdate,this.uvsNeedUpdate=geometry.uvsNeedUpdate,this.groupsNeedUpdate=geometry.groupsNeedUpdate,null!==geometry.boundingSphere&&(this.boundingSphere=geometry.boundingSphere.clone()),null!==geometry.boundingBox&&(this.boundingBox=geometry.boundingBox.clone()),this}}class Face3{constructor(a,b,c,normal,color){var materialIndex=5<arguments.length&&arguments[5]!==void 0?arguments[5]:0;this.a=a,this.b=b,this.c=c,this.normal=normal&&normal.isVector3?normal:new three__WEBPACK_IMPORTED_MODULE_0__.Vector3,this.vertexNormals=Array.isArray(normal)?normal:[],this.color=color&&color.isColor?color:new three__WEBPACK_IMPORTED_MODULE_0__.Color,this.vertexColors=Array.isArray(color)?color:[],this.materialIndex=materialIndex}clone(){return new this.constructor().copy(this)}copy(source){this.a=source.a,this.b=source.b,this.c=source.c,this.normal.copy(source.normal),this.color.copy(source.color),this.materialIndex=source.materialIndex;for(var i=0,il=source.vertexNormals.length;i<il;i++)this.vertexNormals[i]=source.vertexNormals[i].clone();for(var _i26=0,_il15=source.vertexColors.length;_i26<_il15;_i26++)this.vertexColors[_i26]=source.vertexColors[_i26].clone();return this}}
|
|
264
197
|
|
|
265
198
|
/***/ }),
|
|
266
199
|
/* 6 */
|
|
267
|
-
/***/ (
|
|
200
|
+
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
268
201
|
|
|
269
|
-
var THREE=__webpack_require__(3),updateMorphColorAttribute=__webpack_require__(4).updateMorphColorAttribute,uniqueiId=0,getUniqueId=function(){return"pr"+uniqueiId++},ZincObject=function(){// THREE.Mesh
|
|
202
|
+
var THREE=__webpack_require__(3),updateMorphColorAttribute=(__webpack_require__(4).updateMorphColorAttribute),uniqueiId=0,getUniqueId=function(){return"pr"+uniqueiId++},ZincObject=function(){// THREE.Mesh
|
|
270
203
|
// THREE.Mesh - for utilities purpose such as rendering
|
|
271
204
|
// transparent surfaces - one for front face and one for back face.
|
|
272
205
|
/**
|
|
@@ -276,6 +209,13 @@ var THREE=__webpack_require__(3),updateMorphColorAttribute=__webpack_require__(4
|
|
|
276
209
|
* {@link Renderer#playRate} to produce the actual duration of the
|
|
277
210
|
* animation. Actual time in second = duration / playRate.
|
|
278
211
|
*/this.isZincObject=!0,this.geometry=void 0,this.morph=void 0,this.secondaryMesh=void 0,this.groupName=void 0,this.timeEnabled=!1,this.morphColour=!1,this.inbuildTime=0,this.mixer=void 0,this.animationGroup=void 0,this.duration=6e3,this.clipAction=void 0,this.userData={},this.videoHandler=void 0,this.marker=void 0,this.markerUpdateRequired=!0,this.closestVertexIndex=-1,this.boundingBoxUpdateRequired=!0,this.cachedBoundingBox=new THREE.Box3,this._vertex=new THREE.Vector3,this.anatomicalId=void 0,this.region=void 0,this.animationClip=void 0,this.markerMode="inherited",this.uuid=getUniqueId()};/**
|
|
212
|
+
* Provides the base object for other primitive types.
|
|
213
|
+
* This class contains multiple base methods.
|
|
214
|
+
*
|
|
215
|
+
* @class
|
|
216
|
+
* @author Alan Wu
|
|
217
|
+
* @return {ZincObject}
|
|
218
|
+
*/ /**
|
|
279
219
|
* Set the duration of the animation of this object.
|
|
280
220
|
*
|
|
281
221
|
* @param {Number} durationIn - Duration of the animation.
|
|
@@ -403,13 +343,13 @@ var THREE=__webpack_require__(3),updateMorphColorAttribute=__webpack_require__(4
|
|
|
403
343
|
*
|
|
404
344
|
* @return {Boolean}
|
|
405
345
|
*/ //Update the geometry and colours depending on the morph.
|
|
406
|
-
ZincObject.prototype.setDuration=function(durationIn){this.duration=durationIn,this.clipAction&&this.clipAction.setDuration(this.duration)},ZincObject.prototype.getDuration=function(){return this.duration},ZincObject.prototype.setRegion=function(region){this.region=region},ZincObject.prototype.getRegion=function(){return this.region},ZincObject.prototype.checkAndCreateTransparentMesh=function(){},ZincObject.prototype.checkAndRemoveTransparentMesh=function(){},ZincObject.prototype.setMesh=function(mesh,localTimeEnabled,localMorphColour){if(this.animationGroup=new THREE.AnimationObjectGroup(mesh),this.mixer=new THREE.AnimationMixer(this.animationGroup),this.geometry=mesh.geometry,this.clipAction=void 0,this.geometry&&this.geometry.morphAttributes){var morphAttribute=this.geometry.morphAttributes.position;morphAttribute||(morphAttribute=this.geometry.morphAttributes.color?this.geometry.morphAttributes.color:this.geometry.morphAttributes.normal),morphAttribute&&(this.animationClip=THREE.AnimationClip.CreateClipsFromMorphTargetSequences(morphAttribute,10,!0),this.animationClip&&null!=this.animationClip[0]&&(this.clipAction=this.mixer.clipAction(this.animationClip[0]).setDuration(this.duration),this.clipAction.loop=THREE.loopOnce,this.clipAction.clampWhenFinished=!0,this.clipAction.play()))}this.timeEnabled=localTimeEnabled,this.morphColour=localMorphColour,this.morph=mesh,this.morph.userData=this,this.morph.matrixAutoUpdate=!1,this.checkAndCreateTransparentMesh(),this.timeEnabled?this.setFrustumCulled(!1):this.morphColour&&(this.geometry.setAttribute("morphTarget0",this.geometry.getAttribute("position")),this.geometry.setAttribute("morphTarget1",this.geometry.getAttribute("position"))),this.boundingBoxUpdateRequired=!0},ZincObject.prototype.setName=function(groupNameIn){this.groupName=groupNameIn,this.morph&&(this.morph.name=this.groupName),this.secondaryMesh&&(this.secondaryMesh.name=this.groupName)},ZincObject.prototype.getCurrentTime=function(){if(this.clipAction){var ratio=this.clipAction.time/this.clipAction._clip.duration;return this.duration*ratio}return this.inbuildTime},ZincObject.prototype.setMorphTime=function(time){var timeChanged=!1;if(this.clipAction){var ratio=time/this.duration,actualDuration=this.clipAction._clip.duration,newTime=ratio*actualDuration;newTime!=this.clipAction.time&&(this.clipAction.time=newTime,timeChanged=!0),timeChanged&&this.isTimeVarying()&&this.mixer.update(0)}else{var _newTime=time;_newTime=time>this.duration?this.duration:0>time?0:time,_newTime!=this.inbuildTime&&(this.inbuildTime=_newTime,timeChanged=!0)}timeChanged&&(this.boundingBoxUpdateRequired=!0,updateMorphColorAttribute(this.geometry,this.morph),this.timeEnabled&&(this.markerUpdateRequired=!0))},ZincObject.prototype.isTimeVarying=function(){return!!(this.timeEnabled||this.morphColour)},ZincObject.prototype.getVisibility=function(){return!!this.morph&&this.morph.visible},ZincObject.prototype.setVisibility=function(visible){this.morph.visible!==visible&&(this.morph.visible=visible,this.region&&(this.region.pickableUpdateRequired=!0))},ZincObject.prototype.setAlpha=function(alpha){var material=this.morph.material,isTransparent=!1;1>alpha&&(isTransparent=!0);var transparentChanged=material.transparent!=isTransparent;material.opacity=alpha,material.transparent=isTransparent,transparentChanged&&(isTransparent?this.checkAndCreateTransparentMesh():this.checkAndRemoveTransparentMesh()),this.secondaryMesh&&this.secondaryMesh.material&&(this.secondaryMesh.material.opacity=alpha)},ZincObject.prototype.setFrustumCulled=function(flag){this.morph&&(this.morph.frustumCulled=flag)},ZincObject.prototype.setVertexColors=function(vertexColors){this.morph.material.vertexColors=vertexColors,this.geometry.colorsNeedUpdate=!0,this.secondaryMesh&&this.secondaryMesh.material&&(this.secondaryMesh.material.vertexColors=vertexColors)},ZincObject.prototype.getColour=function(){return this.morph&&this.morph.material?this.morph.material.color:void 0},ZincObject.prototype.setColour=function(colour){this.morph.material.color=colour,this.secondaryMesh&&this.secondaryMesh.material&&(this.secondaryMesh.material.color=colour),this.geometry.colorsNeedUpdate=!0},ZincObject.prototype.getColourHex=function(){return!this.morphColour&&this.morph&&this.morph.material&&this.morph.material.color?this.morph.material.color.getHexString():void 0},ZincObject.prototype.setColourHex=function(hex){this.morph.material.color.setHex(hex),this.secondaryMesh&&this.secondaryMesh.material&&this.secondaryMesh.material.color.setHex(hex)},ZincObject.prototype.setMaterial=function(material){this.morph.material=material,this.geometry.colorsNeedUpdate=!0,this.secondaryMesh&&this.secondaryMesh.material&&(this.secondaryMesh.material.dispose(),this.secondaryMesh.material=material.clone(),this.secondaryMesh.material.side=THREE.FrontSide)},ZincObject.prototype.getClosestVertexIndex=function(){var closestIndex=-1;if(this.morph){var position=this.morph.geometry.attributes.position,boundingBox=new THREE.Box3().setFromBufferAttribute(position),center=new THREE.Vector3;if(boundingBox.getCenter(center),position&&boundingBox)for(var distance=-1,currentDistance=0,current=new THREE.Vector3,i=0;i<position.count;i++)current.fromArray(position.array,3*i),currentDistance=current.distanceTo(center),-1==distance?distance=currentDistance:distance>currentDistance&&(distance=currentDistance,closestIndex=i)}return closestIndex},ZincObject.prototype.getClosestVertex=function(applyMatrixWorld){var position=new THREE.Vector3;if(-1==this.closestVertexIndex&&(this.closestVertexIndex=this.getClosestVertexIndex()),0<=this.closestVertexIndex){var influences=this.morph.morphTargetInfluences,attributes=this.morph.geometry.morphAttributes;if(influences&&attributes&&attributes.position){for(var found=!1,i=0;i<influences.length;i++)0<influences[i]&&(found=!0,this._vertex.fromArray(attributes.position[i].array,3*this.closestVertexIndex),position.add(this._vertex.multiplyScalar(influences[i])));if(found)return applyMatrixWorld?position.applyMatrix4(this.morph.matrixWorld):position}else return position.fromArray(this.morph.geometry.attributes.position.array,3*this.closestVertexIndex),applyMatrixWorld?position.applyMatrix4(this.morph.matrixWorld):position}return this.getBoundingBox().getCenter(position),applyMatrixWorld?position.applyMatrix4(this.morph.matrixWorld):position},ZincObject.prototype.getBoundingBox=function(){if(this.morph&&this.morph.visible){if(this.boundingBoxUpdateRequired){var influences=this.morph.morphTargetInfluences,attributes=void 0;this.morph.geometry&&(attributes=this.morph.geometry.morphAttributes);var found=!1;if(influences&&attributes&&attributes.position){for(var min=new THREE.Vector3,max=new THREE.Vector3,box=new THREE.Box3,i=0;i<influences.length;i++)0<influences[i]&&(found=!0,box.setFromArray(attributes.position[i].array),min.add(box.min.multiplyScalar(influences[i])),max.add(box.max.multiplyScalar(influences[i])));found&&this.cachedBoundingBox.set(min,max)}found||this.cachedBoundingBox.setFromBufferAttribute(this.morph.geometry.attributes.position),this.morph.updateWorldMatrix(),this.cachedBoundingBox.applyMatrix4(this.morph.matrixWorld),this.boundingBoxUpdateRequired=!1}return this.cachedBoundingBox}},ZincObject.prototype.dispose=function(){this.morph&&this.morph.geometry&&this.morph.geometry.dispose(),this.morph&&this.morph.material&&this.morph.material.dispose(),this.secondaryMesh&&this.secondaryMesh.material&&this.secondaryMesh.material.dispose(),this.geometry&&this.geometry.dispose(),this.animationGroup=void 0,this.mixer=void 0,this.morph=void 0,this.clipAction=void 0,this.groupName=void 0},ZincObject.prototype.markerIsEnabled=function(options){return!!("on"===this.markerMode||options&&options.displayMarkers&&"inherited"===this.markerMode)},ZincObject.prototype.updateMarker=function(playAnimation,options){if(!(!1==playAnimation&&this.markerIsEnabled(options)))this.marker&&this.marker.isEnabled()&&(this.marker.disable(),this.morph.remove(this.marker.morph)),this.markerUpdateRequired=!0;else if(this.groupName){if(this.marker||(this.marker=new(__webpack_require__(7).Marker)(this),this.markerUpdateRequired=!0),this.markerUpdateRequired){var position=this.getClosestVertex(!1);position&&(this.marker.setPosition(position.x,position.y,position.z),this.markerUpdateRequired=!1)}options&&options.camera&&options.markerDepths&&options.markerDepths.push(this.marker.updateNDC(options.camera.cameraObject)),this.marker.isEnabled()||(this.marker.enable(),this.morph.add(this.marker.morph))}},ZincObject.prototype.processMarkerVisual=function(min,max){this.marker&&this.marker.isEnabled()&&this.marker.updateVisual(min,max)},ZincObject.prototype.initiateMorphColor=function(){1==this.morphColour&&"undefined"!=typeof this.geometry&&(this.morph.material.vertexColors==THREE.VertexColors||!0==this.morph.material.vertexColors)&&updateMorphColorAttribute(this.geometry,this.morph)},ZincObject.prototype.setRenderOrder=function(renderOrder){this.morph&&renderOrder!==void 0&&(this.morph.renderOrder=renderOrder,this.secondaryMesh&&(this.secondaryMesh.renderOrder=this.morph.renderOrder+1))},ZincObject.prototype.getClosestVertexDOMElementCoords=function(scene){if(scene&&scene.camera){var inView=!0,position=this.getClosestVertex(!0);return position.project(scene.camera),position.z=Math.min(Math.max(position.z,0),1),(1<position.x||-1>position.x||1<position.y||-1>position.y)&&(inView=!1),scene.getZincCameraControls().getRelativeCoordsFromNDC(position.x,position.y,position),{position,inView}}},ZincObject.prototype.setMarkerMode=function(mode){mode!==this.markerMode&&(this.markerMode="on"===mode||"off"===mode?mode:"inherited",this.region&&(this.region.pickableUpdateRequired=!0))},ZincObject.prototype.render=function(delta,playAnimation,options){if(!0==playAnimation){if(this.clipAction&&this.isTimeVarying())this.mixer.update(delta);else{var targetTime=this.inbuildTime+delta;targetTime>this.duration&&(targetTime-=this.duration),this.inbuildTime=targetTime}0!=delta&&(this.boundingBoxUpdateRequired=!0,1==this.morphColour&&"undefined"!=typeof this.geometry&&(this.morph.material.vertexColors==THREE.VertexColors||!0==this.morph.material.vertexColors)&&updateMorphColorAttribute(this.geometry,this.morph))}this.updateMarker(playAnimation,options)},exports.ZincObject=ZincObject;
|
|
346
|
+
ZincObject.prototype.setDuration=function(durationIn){this.duration=durationIn,this.clipAction&&this.clipAction.setDuration(this.duration)},ZincObject.prototype.getDuration=function(){return this.duration},ZincObject.prototype.setRegion=function(region){this.region=region},ZincObject.prototype.getRegion=function(){return this.region},ZincObject.prototype.checkAndCreateTransparentMesh=function(){},ZincObject.prototype.checkAndRemoveTransparentMesh=function(){},ZincObject.prototype.setMesh=function(mesh,localTimeEnabled,localMorphColour){if(this.animationGroup=new THREE.AnimationObjectGroup(mesh),this.mixer=new THREE.AnimationMixer(this.animationGroup),this.geometry=mesh.geometry,this.clipAction=void 0,this.geometry&&this.geometry.morphAttributes){var morphAttribute=this.geometry.morphAttributes.position;morphAttribute||(morphAttribute=this.geometry.morphAttributes.color?this.geometry.morphAttributes.color:this.geometry.morphAttributes.normal),morphAttribute&&(this.animationClip=THREE.AnimationClip.CreateClipsFromMorphTargetSequences(morphAttribute,10,!0),this.animationClip&&null!=this.animationClip[0]&&(this.clipAction=this.mixer.clipAction(this.animationClip[0]).setDuration(this.duration),this.clipAction.loop=THREE.loopOnce,this.clipAction.clampWhenFinished=!0,this.clipAction.play()))}this.timeEnabled=localTimeEnabled,this.morphColour=localMorphColour,this.morph=mesh,this.morph.userData=this,this.morph.matrixAutoUpdate=!1,this.checkAndCreateTransparentMesh(),this.timeEnabled?this.setFrustumCulled(!1):this.morphColour&&(this.geometry.setAttribute("morphTarget0",this.geometry.getAttribute("position")),this.geometry.setAttribute("morphTarget1",this.geometry.getAttribute("position"))),this.boundingBoxUpdateRequired=!0},ZincObject.prototype.setName=function(groupNameIn){this.groupName=groupNameIn,this.morph&&(this.morph.name=this.groupName),this.secondaryMesh&&(this.secondaryMesh.name=this.groupName)},ZincObject.prototype.getCurrentTime=function(){if(this.clipAction){var ratio=this.clipAction.time/this.clipAction._clip.duration;return this.duration*ratio}return this.inbuildTime},ZincObject.prototype.setMorphTime=function(time){var timeChanged=!1;if(this.clipAction){var ratio=time/this.duration,actualDuration=this.clipAction._clip.duration,newTime=ratio*actualDuration;newTime!=this.clipAction.time&&(this.clipAction.time=newTime,timeChanged=!0),timeChanged&&this.isTimeVarying()&&this.mixer.update(0)}else{var _newTime=time;_newTime=time>this.duration?this.duration:0>time?0:time,_newTime!=this.inbuildTime&&(this.inbuildTime=_newTime,timeChanged=!0)}timeChanged&&(this.boundingBoxUpdateRequired=!0,updateMorphColorAttribute(this.geometry,this.morph),this.timeEnabled&&(this.markerUpdateRequired=!0))},ZincObject.prototype.isTimeVarying=function(){return!!(this.timeEnabled||this.morphColour)},ZincObject.prototype.getVisibility=function(){return!!this.morph&&this.morph.visible},ZincObject.prototype.setVisibility=function(visible){this.morph.visible!==visible&&(this.morph.visible=visible,this.region&&(this.region.pickableUpdateRequired=!0))},ZincObject.prototype.setAlpha=function(alpha){var material=this.morph.material,isTransparent=!1;1>alpha&&(isTransparent=!0);var transparentChanged=material.transparent!=isTransparent;material.opacity=alpha,material.transparent=isTransparent,transparentChanged&&(isTransparent?this.checkAndCreateTransparentMesh():this.checkAndRemoveTransparentMesh()),this.secondaryMesh&&this.secondaryMesh.material&&(this.secondaryMesh.material.opacity=alpha)},ZincObject.prototype.setFrustumCulled=function(flag){this.morph&&(this.morph.frustumCulled=flag)},ZincObject.prototype.setVertexColors=function(vertexColors){this.morph.material.vertexColors=vertexColors,this.geometry.colorsNeedUpdate=!0,this.secondaryMesh&&this.secondaryMesh.material&&(this.secondaryMesh.material.vertexColors=vertexColors)},ZincObject.prototype.getColour=function(){return this.morph&&this.morph.material?this.morph.material.color:void 0},ZincObject.prototype.setColour=function(colour){this.morph.material.color=colour,this.secondaryMesh&&this.secondaryMesh.material&&(this.secondaryMesh.material.color=colour),this.geometry.colorsNeedUpdate=!0},ZincObject.prototype.getColourHex=function(){return!this.morphColour&&this.morph&&this.morph.material&&this.morph.material.color?this.morph.material.color.getHexString():void 0},ZincObject.prototype.setColourHex=function(hex){this.morph.material.color.setHex(hex),this.secondaryMesh&&this.secondaryMesh.material&&this.secondaryMesh.material.color.setHex(hex)},ZincObject.prototype.setMaterial=function(material){this.morph.material=material,this.geometry.colorsNeedUpdate=!0,this.secondaryMesh&&this.secondaryMesh.material&&(this.secondaryMesh.material.dispose(),this.secondaryMesh.material=material.clone(),this.secondaryMesh.material.side=THREE.FrontSide)},ZincObject.prototype.getClosestVertexIndex=function(){var closestIndex=-1;if(this.morph){var position=this.morph.geometry.attributes.position,boundingBox=new THREE.Box3().setFromBufferAttribute(position),center=new THREE.Vector3;if(boundingBox.getCenter(center),position&&boundingBox)for(var distance=-1,currentDistance=0,current=new THREE.Vector3,i=0;i<position.count;i++)current.fromArray(position.array,3*i),currentDistance=current.distanceTo(center),-1==distance?distance=currentDistance:distance>currentDistance&&(distance=currentDistance,closestIndex=i)}return closestIndex},ZincObject.prototype.getClosestVertex=function(applyMatrixWorld){var position=new THREE.Vector3;if(-1==this.closestVertexIndex&&(this.closestVertexIndex=this.getClosestVertexIndex()),0<=this.closestVertexIndex){var influences=this.morph.morphTargetInfluences,attributes=this.morph.geometry.morphAttributes;if(influences&&attributes&&attributes.position){for(var found=!1,i=0;i<influences.length;i++)0<influences[i]&&(found=!0,this._vertex.fromArray(attributes.position[i].array,3*this.closestVertexIndex),position.add(this._vertex.multiplyScalar(influences[i])));if(found)return applyMatrixWorld?position.applyMatrix4(this.morph.matrixWorld):position}else return position.fromArray(this.morph.geometry.attributes.position.array,3*this.closestVertexIndex),applyMatrixWorld?position.applyMatrix4(this.morph.matrixWorld):position}return this.getBoundingBox().getCenter(position),applyMatrixWorld?position.applyMatrix4(this.morph.matrixWorld):position},ZincObject.prototype.getBoundingBox=function(){if(this.morph&&this.morph.visible){if(this.boundingBoxUpdateRequired){var influences=this.morph.morphTargetInfluences,attributes=void 0;this.morph.geometry&&(attributes=this.morph.geometry.morphAttributes);var found=!1;if(influences&&attributes&&attributes.position){for(var min=new THREE.Vector3,max=new THREE.Vector3,box=new THREE.Box3,i=0;i<influences.length;i++)0<influences[i]&&(found=!0,box.setFromArray(attributes.position[i].array),min.add(box.min.multiplyScalar(influences[i])),max.add(box.max.multiplyScalar(influences[i])));found&&this.cachedBoundingBox.set(min,max)}found||this.cachedBoundingBox.setFromBufferAttribute(this.morph.geometry.attributes.position),this.morph.updateWorldMatrix(),this.cachedBoundingBox.applyMatrix4(this.morph.matrixWorld),this.boundingBoxUpdateRequired=!1}return this.cachedBoundingBox}},ZincObject.prototype.dispose=function(){this.morph&&this.morph.geometry&&this.morph.geometry.dispose(),this.morph&&this.morph.material&&this.morph.material.dispose(),this.secondaryMesh&&this.secondaryMesh.material&&this.secondaryMesh.material.dispose(),this.geometry&&this.geometry.dispose(),this.animationGroup=void 0,this.mixer=void 0,this.morph=void 0,this.clipAction=void 0,this.groupName=void 0},ZincObject.prototype.markerIsEnabled=function(options){return!!("on"===this.markerMode||options&&options.displayMarkers&&"inherited"===this.markerMode)},ZincObject.prototype.updateMarker=function(playAnimation,options){if(!(!1==playAnimation&&this.markerIsEnabled(options)))this.marker&&this.marker.isEnabled()&&(this.marker.disable(),this.morph.remove(this.marker.morph)),this.markerUpdateRequired=!0;else if(this.groupName){if(this.marker||(this.marker=new((__webpack_require__(7).Marker))(this),this.markerUpdateRequired=!0),this.markerUpdateRequired){var position=this.getClosestVertex(!1);position&&(this.marker.setPosition(position.x,position.y,position.z),this.markerUpdateRequired=!1)}options&&options.camera&&options.markerDepths&&options.markerDepths.push(this.marker.updateNDC(options.camera.cameraObject)),this.marker.isEnabled()||(this.marker.enable(),this.morph.add(this.marker.morph))}},ZincObject.prototype.processMarkerVisual=function(min,max){this.marker&&this.marker.isEnabled()&&this.marker.updateVisual(min,max)},ZincObject.prototype.initiateMorphColor=function(){1==this.morphColour&&"undefined"!=typeof this.geometry&&(this.morph.material.vertexColors==THREE.VertexColors||!0==this.morph.material.vertexColors)&&updateMorphColorAttribute(this.geometry,this.morph)},ZincObject.prototype.setRenderOrder=function(renderOrder){this.morph&&renderOrder!==void 0&&(this.morph.renderOrder=renderOrder,this.secondaryMesh&&(this.secondaryMesh.renderOrder=this.morph.renderOrder+1))},ZincObject.prototype.getClosestVertexDOMElementCoords=function(scene){if(scene&&scene.camera){var inView=!0,position=this.getClosestVertex(!0);return position.project(scene.camera),position.z=Math.min(Math.max(position.z,0),1),(1<position.x||-1>position.x||1<position.y||-1>position.y)&&(inView=!1),scene.getZincCameraControls().getRelativeCoordsFromNDC(position.x,position.y,position),{position,inView}}},ZincObject.prototype.setMarkerMode=function(mode){mode!==this.markerMode&&(this.markerMode="on"===mode||"off"===mode?mode:"inherited",this.region&&(this.region.pickableUpdateRequired=!0))},ZincObject.prototype.render=function(delta,playAnimation,options){if(!0==playAnimation){if(this.clipAction&&this.isTimeVarying())this.mixer.update(delta);else{var targetTime=this.inbuildTime+delta;targetTime>this.duration&&(targetTime-=this.duration),this.inbuildTime=targetTime}0!=delta&&(this.boundingBoxUpdateRequired=!0,1==this.morphColour&&"undefined"!=typeof this.geometry&&(this.morph.material.vertexColors==THREE.VertexColors||!0==this.morph.material.vertexColors)&&updateMorphColorAttribute(this.geometry,this.morph))}this.updateMarker(playAnimation,options)},exports.ZincObject=ZincObject;
|
|
407
347
|
|
|
408
348
|
/***/ }),
|
|
409
349
|
/* 7 */
|
|
410
|
-
/***/ (
|
|
350
|
+
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
411
351
|
|
|
412
|
-
var THREE=__webpack_require__(3),markerImage=new Image(128,128);markerImage.src=__webpack_require__(8);var texture=new THREE.Texture;texture.image=markerImage,texture.needsUpdate=!0;var size=[.015,.02,1],Marker=function(zincObject){__webpack_require__(6).ZincObject.call(this),this.texture=texture;var spriteMaterial=void 0,sprite=void 0;this.morph=new THREE.Group,this.parent=zincObject,this.isMarker=!0;var enabled=!1,vector=new THREE.Vector3,initialise=()=>{spriteMaterial=new THREE.SpriteMaterial({map:texture,alphaTest:.5,transparent:!0,depthTest:!1,depthWrite:!1,sizeAttenuation:!1}),sprite=new THREE.Sprite(spriteMaterial),sprite.center.set(.5,0),this.morph.add(sprite),this.morph.position.set(0,0,0),this.morph.renderOrder=1e4,sprite.scale.set(size[0],size[1],size[2]),sprite.userData=this};/**
|
|
352
|
+
var THREE=__webpack_require__(3),markerImage=new Image(128,128);markerImage.src=__webpack_require__(8);var texture=new THREE.Texture;texture.image=markerImage,texture.needsUpdate=!0;var size=[.015,.02,1],Marker=function(zincObject){(__webpack_require__(6).ZincObject).call(this),this.texture=texture;var spriteMaterial=void 0,sprite=void 0;this.morph=new THREE.Group,this.parent=zincObject,this.isMarker=!0;var enabled=!1,vector=new THREE.Vector3,initialise=()=>{spriteMaterial=new THREE.SpriteMaterial({map:texture,alphaTest:.5,transparent:!0,depthTest:!1,depthWrite:!1,sizeAttenuation:!1}),sprite=new THREE.Sprite(spriteMaterial),sprite.center.set(.5,0),this.morph.add(sprite),this.morph.position.set(0,0,0),this.morph.renderOrder=1e4,sprite.scale.set(size[0],size[1],size[2]),sprite.userData=this};/**
|
|
413
353
|
* Set the position of the marker.
|
|
414
354
|
*
|
|
415
355
|
* @param {Number} x - x coordinate to be set.
|
|
@@ -434,17 +374,22 @@ this.updateVisual=(min,max)=>{var scale=1,opacity=1,porportion=0;min!==max&&(por
|
|
|
434
374
|
* @class
|
|
435
375
|
* @author Alan Wu
|
|
436
376
|
* @return {Marker}
|
|
437
|
-
*/Marker.prototype=Object.create(__webpack_require__(6).ZincObject.prototype),exports.Marker=Marker;
|
|
377
|
+
*/Marker.prototype=Object.create((__webpack_require__(6).ZincObject).prototype),exports.Marker=Marker;
|
|
438
378
|
|
|
439
379
|
/***/ }),
|
|
440
380
|
/* 8 */
|
|
441
|
-
/***/ (
|
|
381
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
442
382
|
|
|
443
|
-
|
|
383
|
+
"use strict";
|
|
384
|
+
__webpack_require__.r(__webpack_exports__);
|
|
385
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
386
|
+
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
387
|
+
/* harmony export */ });
|
|
388
|
+
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxOC4wLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+DQo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgMzY1IDU2MCIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgMzY1IDU2MCIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+DQo8Zz4NCgk8cGF0aCBmaWxsPSIjMDA1OTc0IiBkPSJNMTgyLjksNTUxLjdjMCwwLjEsMC4yLDAuMywwLjIsMC4zUzM1OC4zLDI4MywzNTguMywxOTQuNmMwLTEzMC4xLTg4LjgtMTg2LjctMTc1LjQtMTg2LjkNCgkJQzk2LjMsNy45LDcuNSw2NC41LDcuNSwxOTQuNmMwLDg4LjQsMTc1LjMsMzU3LjQsMTc1LjMsMzU3LjRTMTgyLjksNTUxLjcsMTgyLjksNTUxLjd6IE0xMjIuMiwxODcuMmMwLTMzLjYsMjcuMi02MC44LDYwLjgtNjAuOA0KCQljMzMuNiwwLDYwLjgsMjcuMiw2MC44LDYwLjhTMjE2LjUsMjQ4LDE4Mi45LDI0OEMxNDkuNCwyNDgsMTIyLjIsMjIwLjgsMTIyLjIsMTg3LjJ6Ii8+DQo8L2c+DQo8L3N2Zz4NCg==");
|
|
444
389
|
|
|
445
390
|
/***/ }),
|
|
446
391
|
/* 9 */
|
|
447
|
-
/***/ (
|
|
392
|
+
/***/ ((__unused_webpack_module, exports) => {
|
|
448
393
|
|
|
449
394
|
/**
|
|
450
395
|
* Provide additional shaders to render time dependent color.
|
|
@@ -452,9 +397,9 @@ module.exports = "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGlu
|
|
|
452
397
|
|
|
453
398
|
/***/ }),
|
|
454
399
|
/* 10 */
|
|
455
|
-
/***/ (
|
|
400
|
+
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
456
401
|
|
|
457
|
-
var THREE=__webpack_require__(3),Glyph=function(geometry,materialIn,idIn,glyphsetIn){__webpack_require__(6).ZincObject.call(this);var material;materialIn&&(material=materialIn.clone(),material.vertexColors=THREE.FaceColors);this.id=idIn;var label=void 0,labelString=void 0,group=new THREE.Group;/**
|
|
402
|
+
var THREE=__webpack_require__(3),Glyph=function(geometry,materialIn,idIn,glyphsetIn){(__webpack_require__(6).ZincObject).call(this);var material;materialIn&&(material=materialIn.clone(),material.vertexColors=THREE.FaceColors);this.id=idIn;var label=void 0,labelString=void 0,group=new THREE.Group;/**
|
|
458
403
|
* Create a glyph using mesh
|
|
459
404
|
* @param {THREE.Mesh} meshIn - Mesh to create the glyph from
|
|
460
405
|
*
|
|
@@ -495,7 +440,7 @@ var THREE=__webpack_require__(3),Glyph=function(geometry,materialIn,idIn,glyphse
|
|
|
495
440
|
* @param {THREE.Color} color - Colour to be set.
|
|
496
441
|
*/ /**
|
|
497
442
|
* Clear and free its memory.
|
|
498
|
-
*/this.isGlyph=!0,this.fromMesh=meshIn=>!!(meshIn&&meshIn.isMesh)&&(this.morph=meshIn.clone(),this.morph.userData=this,group.add(this.morph),!0),geometry&&material&&this.fromMesh(new THREE.Mesh(geometry,material)),this.getGlyphset=function(){return glyphsetIn},this.setLabel=text=>{text&&("string"==typeof text||text instanceof String)&&(labelString=text,this.morph&&(this.morph.name=text)),label&&this.showLabel()},this.showLabel=colour=>{if(label&&(position=label.getPosition(),group.remove(label.getSprite()),label.dispose(),label=void 0),labelString&&("string"==typeof labelString||labelString instanceof String)){var _position=[0,0,0];label=new(__webpack_require__(11).Label)(labelString,colour),label.setPosition(_position[0],_position[1],_position[2]),group.add(label.getSprite())}},this.getGroup=()=>group,this.getLabel=()=>labelString,this.getMesh=()=>this.morph,this.setTransformation=(position,axis1,axis2,axis3)=>{this.morph&&(this.morph.matrix.elements[0]=axis1[0],this.morph.matrix.elements[1]=axis1[1],this.morph.matrix.elements[2]=axis1[2],this.morph.matrix.elements[3]=0,this.morph.matrix.elements[4]=axis2[0],this.morph.matrix.elements[5]=axis2[1],this.morph.matrix.elements[6]=axis2[2],this.morph.matrix.elements[7]=0,this.morph.matrix.elements[8]=axis3[0],this.morph.matrix.elements[9]=axis3[1],this.morph.matrix.elements[10]=axis3[2],this.morph.matrix.elements[11]=0,this.morph.matrix.elements[12]=position[0],this.morph.matrix.elements[13]=position[1],this.morph.matrix.elements[14]=position[2],this.morph.matrix.elements[15]=1,this.morph.matrixAutoUpdate=!1),label&&label.setPosition(position[0],position[1],position[2])},this.setColour=color=>{label&&label.setColour(color),this.secondaryMesh&&this.secondaryMesh.material&&(this.secondaryMesh.material.color=colour),this.geometry.colorsNeedUpdate=!0},this.dispose=()=>{this.material&&this.material.dispose(),this.morph=void 0}};/**
|
|
443
|
+
*/this.isGlyph=!0,this.fromMesh=meshIn=>!!(meshIn&&meshIn.isMesh)&&(this.morph=meshIn.clone(),this.morph.userData=this,group.add(this.morph),!0),geometry&&material&&this.fromMesh(new THREE.Mesh(geometry,material)),this.getGlyphset=function(){return glyphsetIn},this.setLabel=text=>{text&&("string"==typeof text||text instanceof String)&&(labelString=text,this.morph&&(this.morph.name=text)),label&&this.showLabel()},this.showLabel=colour=>{if(label&&(position=label.getPosition(),group.remove(label.getSprite()),label.dispose(),label=void 0),labelString&&("string"==typeof labelString||labelString instanceof String)){var _position=[0,0,0];label=new((__webpack_require__(11).Label))(labelString,colour),label.setPosition(_position[0],_position[1],_position[2]),group.add(label.getSprite())}},this.getGroup=()=>group,this.getLabel=()=>labelString,this.getMesh=()=>this.morph,this.setTransformation=(position,axis1,axis2,axis3)=>{this.morph&&(this.morph.matrix.elements[0]=axis1[0],this.morph.matrix.elements[1]=axis1[1],this.morph.matrix.elements[2]=axis1[2],this.morph.matrix.elements[3]=0,this.morph.matrix.elements[4]=axis2[0],this.morph.matrix.elements[5]=axis2[1],this.morph.matrix.elements[6]=axis2[2],this.morph.matrix.elements[7]=0,this.morph.matrix.elements[8]=axis3[0],this.morph.matrix.elements[9]=axis3[1],this.morph.matrix.elements[10]=axis3[2],this.morph.matrix.elements[11]=0,this.morph.matrix.elements[12]=position[0],this.morph.matrix.elements[13]=position[1],this.morph.matrix.elements[14]=position[2],this.morph.matrix.elements[15]=1,this.morph.matrixAutoUpdate=!1),label&&label.setPosition(position[0],position[1],position[2])},this.setColour=color=>{label&&label.setColour(color),this.secondaryMesh&&this.secondaryMesh.material&&(this.secondaryMesh.material.color=colour),this.geometry.colorsNeedUpdate=!0},this.dispose=()=>{this.material&&this.material.dispose(),this.morph=void 0}};/**
|
|
499
444
|
* Zinc representation of glyph graphic, it contains the colours,
|
|
500
445
|
* geometry and transformation of the glyph.
|
|
501
446
|
*
|
|
@@ -506,13 +451,13 @@ var THREE=__webpack_require__(3),Glyph=function(geometry,materialIn,idIn,glyphse
|
|
|
506
451
|
* @class
|
|
507
452
|
* @author Alan Wu
|
|
508
453
|
* @return {Glyph}
|
|
509
|
-
*/Glyph.prototype=Object.create(__webpack_require__(6).ZincObject.prototype),exports.Glyph=Glyph;
|
|
454
|
+
*/Glyph.prototype=Object.create((__webpack_require__(6).ZincObject).prototype),exports.Glyph=Glyph;
|
|
510
455
|
|
|
511
456
|
/***/ }),
|
|
512
457
|
/* 11 */
|
|
513
|
-
/***/ (
|
|
458
|
+
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
514
459
|
|
|
515
|
-
var SpriteText=__webpack_require__(12)
|
|
460
|
+
var SpriteText=(__webpack_require__(12)["default"]);/**
|
|
516
461
|
* Bitmap labels, this is used with {@link Glyph} to
|
|
517
462
|
* provide labels.
|
|
518
463
|
*
|
|
@@ -555,15 +500,16 @@ var SpriteText=__webpack_require__(12).default;/**
|
|
|
555
500
|
|
|
556
501
|
/***/ }),
|
|
557
502
|
/* 12 */
|
|
558
|
-
/***/ (
|
|
503
|
+
/***/ ((module) => {
|
|
559
504
|
|
|
505
|
+
"use strict";
|
|
560
506
|
module.exports = require("three-spritetext");
|
|
561
507
|
|
|
562
508
|
/***/ }),
|
|
563
509
|
/* 13 */
|
|
564
|
-
/***/ (
|
|
510
|
+
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
565
511
|
|
|
566
|
-
function _readOnlyError(name){throw new
|
|
512
|
+
function _readOnlyError(name){throw new TypeError("\""+name+"\" is read-only")}var THREE=__webpack_require__(3),JSONLoader=(__webpack_require__(14).JSONLoader),Glyphset=function(){(__webpack_require__(6).ZincObject).call(this);var glyphList=[],axis1s=void 0,axis2s=void 0,axis3s=void 0,positions=void 0,scales=void 0,colors=void 0,labels=void 0,numberOfTimeSteps=0,numberOfVertices=0,baseSize=[0,0,0],offset=[0,0,0],scaleFactors=[0,0,0],repeat_mode="NONE";this.ready=!1;var morphColours=!1,morphVertices=!1;this.isGlyphset=!0;for(var _transformMatrix=new THREE.Matrix4,_bot_colour=new THREE.Color,_top_colour=new THREE.Color,_boundingBox1=new THREE.Box3,_boundingBox2=new THREE.Box3,_boundingBox3=new THREE.Box3,_points=[],_current_positions=[],_current_axis1s=[],_current_axis2s=[],_current_axis3s=[],_current_scales=[],_current_colors=[],_glyph_axis_array=[],i=0;8>i;i++)_points[i]=new THREE.Vector3;/**
|
|
567
513
|
* Get the {@link Three.Group} containing all of the glyphs' meshes.
|
|
568
514
|
* @returns {Three.Group}
|
|
569
515
|
*/this.getGroup=()=>this.morph,this.load=(glyphsetData,glyphURL,finishCallback,isInline,displayLabels)=>{axis1s=glyphsetData.axis1,axis2s=glyphsetData.axis2,axis3s=glyphsetData.axis3,positions=glyphsetData.positions,scales=glyphsetData.scale,colors=glyphsetData.colors,labels=glyphsetData.label,morphColours=glyphsetData.metadata.MorphColours,morphVertices=glyphsetData.metadata.MorphVertices,numberOfTimeSteps=glyphsetData.metadata.number_of_time_steps,repeat_mode=glyphsetData.metadata.repeat_mode,numberOfVertices=glyphsetData.metadata.number_of_vertices,"AXES_2D"==repeat_mode||"MIRROR"==repeat_mode?numberOfVertices*=2:"AXES_3D"==repeat_mode&&(numberOfVertices*=3),baseSize=glyphsetData.metadata.base_size,offset=glyphsetData.metadata.offset,scaleFactors=glyphsetData.metadata.scale_factors;var loader=new JSONLoader;if(this.geometry=new THREE.BufferGeometry,this.morph=new THREE.InstancedMesh(this.geometry,void 0,numberOfVertices),isInline){var object=loader.parse(glyphURL);meshloader(finishCallback,displayLabels)(object.geometry,object.materials),object.geometry.dispose()}else loader.crossOrigin="Anonymous",loader.load(glyphURL,meshloader(finishCallback,displayLabels))};/**
|
|
@@ -571,22 +517,30 @@ function _readOnlyError(name){throw new Error("\""+name+"\" is read-only")}var T
|
|
|
571
517
|
* to the transformation matrix.
|
|
572
518
|
*
|
|
573
519
|
* @returns {Array}
|
|
574
|
-
*/var resolve_glyph_axes=(point,axis1,axis2,axis3,scale,return_arrays)=>{if("NONE"==repeat_mode||"MIRROR"==repeat_mode){for(var sign,axis_scale=[0,0,0],final_axis1=[0,0,0],final_axis2=[0,0,0],final_axis3=[0,0,0],final_point=[0,0,0],mirrored_axis1=[0,0,0],mirrored_axis2=[0,0,0],mirrored_axis3=[0,0,0],mirrored_point=[0,0,0],j=0;3>j;j++)sign=0>scale[j]?-1:1,axis_scale[j]=sign*baseSize[j]+scale[j]*scaleFactors[j];for(var j=0;3>j;j++)final_axis1[j]=axis1[j]*axis_scale[0],final_axis2[j]=axis2[j]*axis_scale[1],final_axis3[j]=axis3[j]*axis_scale[2],final_point[j]=point[j]+offset[0]*final_axis1[j]+offset[1]*final_axis2[j]+offset[2]*final_axis3[j],"MIRROR"==repeat_mode&&(mirrored_axis1[j]=-final_axis1[j],mirrored_axis2[j]=-final_axis2[j],mirrored_axis3[j]=-final_axis3[j],mirrored_point[j]=final_point[j],0>scale[0]&&(final_point[j]-=final_axis1[j],mirrored_point[j]-=mirrored_axis1[j]));/* if required, reverse axis3 to maintain right-handed coordinate system */0>final_axis3[0]*(final_axis1[1]*final_axis2[2]-final_axis1[2]*final_axis2[1])+final_axis3[1]*(final_axis1[2]*final_axis2[0]-final_axis1[0]*final_axis2[2])+final_axis3[2]*(final_axis1[0]*final_axis2[1]-final_axis1[1]*final_axis2[0])&&(final_axis3[0]=-final_axis3[0],final_axis3[1]=-final_axis3[1],final_axis3[2]=-final_axis3[2]),return_arrays[0]=[final_point,final_axis1,final_axis2,final_axis3],"MIRROR"==repeat_mode&&(0>mirrored_axis3[0]*(mirrored_axis1[1]*mirrored_axis2[2]-mirrored_axis1[2]*mirrored_axis2[1])+mirrored_axis3[1]*(mirrored_axis1[2]*mirrored_axis2[0]-mirrored_axis1[0]*mirrored_axis2[2])+mirrored_axis3[2]*(mirrored_axis1[0]*mirrored_axis2[1]-mirrored_axis1[1]*mirrored_axis2[0])&&(mirrored_axis3[0]=-mirrored_axis3[0],mirrored_axis3[1]=-mirrored_axis3[1],mirrored_axis3[2]=-mirrored_axis3[2]),return_arrays[1]=[mirrored_point,mirrored_axis1,mirrored_axis2,mirrored_axis3])}else if("AXES_2D"==repeat_mode||"AXES_3D"==repeat_mode){for(var sign,_axis_scale=[0,0,0],_final_point=[0,0,0],j=0;3>j;j++)sign=0>scale[j]?-1:1,_axis_scale[j]=sign*baseSize[0]+scale[j]*scaleFactors[0];for(var j=0;3>j;j++)_final_point[j]=point[j]+offset[0]*_axis_scale[0]*axis1[j]+offset[1]*_axis_scale[1]*axis2[j]+offset[2]*_axis_scale[2]*axis3[j];for(var number_of_glyphs="AXES_2D"==glyph_repeat_mode?2:3,k=0;k<number_of_glyphs;k++){var use_axis1=void 0,use_axis2=void 0,use_scale=scale[k],_final_axis=[0,0,0],_final_axis2=[0,0,0],_final_axis3=[0,0,0];0==k?(use_axis1=axis1,use_axis2=axis2):1==k?(use_axis1=axis2,use_axis2="AXES_2D"==glyph_repeat_mode?axis1:axis3):(use_axis1=axis3,use_axis2=axis1);var final_scale1=baseSize[0]+use_scale*scaleFactors[0];_final_axis[0]=use_axis1[0]*final_scale1,_final_axis[1]=use_axis1[1]*final_scale1,_final_axis[2]=use_axis1[2]*final_scale1,_final_axis3[0]=_final_axis[1]*use_axis2[2]-use_axis2[1]*_final_axis[2],_final_axis3[1]=_final_axis[2]*use_axis2[0]-use_axis2[2]*_final_axis[0],_final_axis3[2]=_final_axis[0]*use_axis2[1]-_final_axis[1]*use_axis2[0];var magnitude=Math.sqrt(_final_axis3[0]*_final_axis3[0]+_final_axis3[1]*_final_axis3[1]+_final_axis3[2]*_final_axis3[2]);if(0<magnitude){var _scaling=(baseSize[2]+use_scale*scaleFactors[2])/magnitude;"AXES_2D"==repeat_mode&&0<k&&(_scaling*=-1),_final_axis3[0]*=_scaling,_final_axis3[1]*=_scaling,_final_axis3[2]*=_scaling}if(_final_axis2[0]=_final_axis3[1]*_final_axis[2]-_final_axis[1]*_final_axis3[2],_final_axis2[1]=_final_axis3[2]*_final_axis[0]-_final_axis[2]*_final_axis3[0],_final_axis2[2]=_final_axis3[0]*_final_axis[1]-_final_axis3[1]*_final_axis[0],magnitude=Math.sqrt(_final_axis2[0]*_final_axis2[0]+_final_axis2[1]*_final_axis2[1]+_final_axis2[2]*_final_axis2[2]),0<magnitude){var scaling=(baseSize[1]+use_scale*scaleFactors[1])/magnitude;_final_axis2[0]*=scaling,_final_axis2[1]*=scaling,_final_axis2[2]*=scaling}return_arrays[k]=[_final_point,_final_axis,_final_axis2,_final_axis3]}}return return_arrays},updateGlyphsetTransformation=(current_positions,current_axis1s,current_axis2s,current_axis3s,current_scales)=>{var numberOfGlyphs=1;"AXES_2D"==repeat_mode||"MIRROR"==repeat_mode?numberOfGlyphs=2:"AXES_3D"==repeat_mode&&(numberOfGlyphs=3);var numberOfPositions=current_positions.length/3,current_glyph_index=0;_glyph_axis_array.length=numberOfGlyphs;for(var _i=0;_i<numberOfPositions;_i++){var current_index=3*_i,current_position=[current_positions[current_index],current_positions[current_index+1],current_positions[current_index+2]],current_axis1=[current_axis1s[current_index],current_axis1s[current_index+1],current_axis1s[current_index+2]],current_axis2=[current_axis2s[current_index],current_axis2s[current_index+1],current_axis2s[current_index+2]],current_axis3=[current_axis3s[current_index],current_axis3s[current_index+1],current_axis3s[current_index+2]],current_scale=[current_scales[current_index],current_scales[current_index+1],current_scales[current_index+2]],arrays=resolve_glyph_axes(current_position,current_axis1,current_axis2,current_axis3,current_scale,_glyph_axis_array);if(arrays.length==numberOfGlyphs)for(var j=0;j<numberOfGlyphs;j++){_transformMatrix.elements[0]=arrays[j][1][0],_transformMatrix.elements[1]=arrays[j][1][1],_transformMatrix.elements[2]=arrays[j][1][2],_transformMatrix.elements[3]=0,_transformMatrix.elements[4]=arrays[j][2][0],_transformMatrix.elements[5]=arrays[j][2][1],_transformMatrix.elements[6]=arrays[j][2][2],_transformMatrix.elements[7]=0,_transformMatrix.elements[8]=arrays[j][3][0],_transformMatrix.elements[9]=arrays[j][3][1],_transformMatrix.elements[10]=arrays[j][3][2],_transformMatrix.elements[11]=0,_transformMatrix.elements[12]=arrays[j][0][0],_transformMatrix.elements[13]=arrays[j][0][1],_transformMatrix.elements[14]=arrays[j][0][2],_transformMatrix.elements[15]=1,this.morph.setMatrixAt(current_glyph_index,_transformMatrix);var glyph=glyphList[current_glyph_index];glyph&&glyph.setTransformation(arrays[j][0],arrays[j][1],arrays[j][2],arrays[j][3]),current_glyph_index++}}this.morph.instanceMatrix.needsUpdate=!0},updateGlyphsetHexColors=current_colors=>{var numberOfGlyphs=1;"AXES_2D"==repeat_mode||"MIRROR"==repeat_mode?numberOfGlyphs=2:"AXES_3D"==repeat_mode&&(numberOfGlyphs=3);for(var hex_values,numberOfColours=current_colors.length,current_glyph_index=0,_i2=0;_i2<numberOfColours;_i2++){hex_values=current_colors[_i2];for(var j=0;j<numberOfGlyphs;j++){_bot_colour.setHex(hex_values),this.morph.setColorAt(current_glyph_index,_bot_colour);var glyph=glyphList[current_glyph_index];glyph&&glyph.setColour(_bot_colour),current_glyph_index++}}this.morph.instanceColor.needsUpdate=!0},updateMorphGlyphsets=()=>{var current_positions=_current_positions,current_axis1s=_current_axis1s,current_axis2s=_current_axis2s,current_axis3s=_current_axis3s,current_scales=_current_scales,current_colors=_current_colors,current_time=this.inbuildTime/this.duration*(numberOfTimeSteps-1),bottom_frame=Math.floor(current_time),proportion=1-(current_time-bottom_frame),top_frame=Math.ceil(current_time);if(morphVertices){var bottom_positions=positions[bottom_frame.toString()],top_positions=positions[top_frame.toString()],bottom_axis1=axis1s[bottom_frame.toString()],top_axis1=axis1s[top_frame.toString()],bottom_axis2=axis2s[bottom_frame.toString()],top_axis2=axis2s[top_frame.toString()],bottom_axis3=axis3s[bottom_frame.toString()],top_axis3=axis3s[top_frame.toString()],bottom_scale=scales[bottom_frame.toString()],top_scale=scales[top_frame.toString()];_current_positions.length=bottom_positions.length,_current_axis1s.length=bottom_positions.length,_current_axis2s.length=bottom_positions.length,_current_axis3s.length=bottom_positions.length,_current_scales.length=bottom_positions.length;for(var _i3=0;_i3<bottom_positions.length;_i3++)current_positions[_i3]=proportion*bottom_positions[_i3]+(1-proportion)*top_positions[_i3],current_axis1s[_i3]=proportion*bottom_axis1[_i3]+(1-proportion)*top_axis1[_i3],current_axis2s[_i3]=proportion*bottom_axis2[_i3]+(1-proportion)*top_axis2[_i3],current_axis3s[_i3]=proportion*bottom_axis3[_i3]+(1-proportion)*top_axis3[_i3],current_scales[_i3]=proportion*bottom_scale[_i3]+(1-proportion)*top_scale[_i3]}else
|
|
520
|
+
*/var resolve_glyph_axes=(point,axis1,axis2,axis3,scale,return_arrays)=>{if("NONE"==repeat_mode||"MIRROR"==repeat_mode){for(var sign,axis_scale=[0,0,0],final_axis1=[0,0,0],final_axis2=[0,0,0],final_axis3=[0,0,0],final_point=[0,0,0],mirrored_axis1=[0,0,0],mirrored_axis2=[0,0,0],mirrored_axis3=[0,0,0],mirrored_point=[0,0,0],j=0;3>j;j++)sign=0>scale[j]?-1:1,axis_scale[j]=sign*baseSize[j]+scale[j]*scaleFactors[j];for(var j=0;3>j;j++)final_axis1[j]=axis1[j]*axis_scale[0],final_axis2[j]=axis2[j]*axis_scale[1],final_axis3[j]=axis3[j]*axis_scale[2],final_point[j]=point[j]+offset[0]*final_axis1[j]+offset[1]*final_axis2[j]+offset[2]*final_axis3[j],"MIRROR"==repeat_mode&&(mirrored_axis1[j]=-final_axis1[j],mirrored_axis2[j]=-final_axis2[j],mirrored_axis3[j]=-final_axis3[j],mirrored_point[j]=final_point[j],0>scale[0]&&(final_point[j]-=final_axis1[j],mirrored_point[j]-=mirrored_axis1[j]));/* if required, reverse axis3 to maintain right-handed coordinate system */0>final_axis3[0]*(final_axis1[1]*final_axis2[2]-final_axis1[2]*final_axis2[1])+final_axis3[1]*(final_axis1[2]*final_axis2[0]-final_axis1[0]*final_axis2[2])+final_axis3[2]*(final_axis1[0]*final_axis2[1]-final_axis1[1]*final_axis2[0])&&(final_axis3[0]=-final_axis3[0],final_axis3[1]=-final_axis3[1],final_axis3[2]=-final_axis3[2]),return_arrays[0]=[final_point,final_axis1,final_axis2,final_axis3],"MIRROR"==repeat_mode&&(0>mirrored_axis3[0]*(mirrored_axis1[1]*mirrored_axis2[2]-mirrored_axis1[2]*mirrored_axis2[1])+mirrored_axis3[1]*(mirrored_axis1[2]*mirrored_axis2[0]-mirrored_axis1[0]*mirrored_axis2[2])+mirrored_axis3[2]*(mirrored_axis1[0]*mirrored_axis2[1]-mirrored_axis1[1]*mirrored_axis2[0])&&(mirrored_axis3[0]=-mirrored_axis3[0],mirrored_axis3[1]=-mirrored_axis3[1],mirrored_axis3[2]=-mirrored_axis3[2]),return_arrays[1]=[mirrored_point,mirrored_axis1,mirrored_axis2,mirrored_axis3])}else if("AXES_2D"==repeat_mode||"AXES_3D"==repeat_mode){for(var sign,_axis_scale=[0,0,0],_final_point=[0,0,0],j=0;3>j;j++)sign=0>scale[j]?-1:1,_axis_scale[j]=sign*baseSize[0]+scale[j]*scaleFactors[0];for(var j=0;3>j;j++)_final_point[j]=point[j]+offset[0]*_axis_scale[0]*axis1[j]+offset[1]*_axis_scale[1]*axis2[j]+offset[2]*_axis_scale[2]*axis3[j];for(var number_of_glyphs="AXES_2D"==glyph_repeat_mode?2:3,k=0;k<number_of_glyphs;k++){var use_axis1=void 0,use_axis2=void 0,use_scale=scale[k],_final_axis=[0,0,0],_final_axis2=[0,0,0],_final_axis3=[0,0,0];0==k?(use_axis1=axis1,use_axis2=axis2):1==k?(use_axis1=axis2,use_axis2="AXES_2D"==glyph_repeat_mode?axis1:axis3):(use_axis1=axis3,use_axis2=axis1);var final_scale1=baseSize[0]+use_scale*scaleFactors[0];_final_axis[0]=use_axis1[0]*final_scale1,_final_axis[1]=use_axis1[1]*final_scale1,_final_axis[2]=use_axis1[2]*final_scale1,_final_axis3[0]=_final_axis[1]*use_axis2[2]-use_axis2[1]*_final_axis[2],_final_axis3[1]=_final_axis[2]*use_axis2[0]-use_axis2[2]*_final_axis[0],_final_axis3[2]=_final_axis[0]*use_axis2[1]-_final_axis[1]*use_axis2[0];var magnitude=Math.sqrt(_final_axis3[0]*_final_axis3[0]+_final_axis3[1]*_final_axis3[1]+_final_axis3[2]*_final_axis3[2]);if(0<magnitude){var _scaling=(baseSize[2]+use_scale*scaleFactors[2])/magnitude;"AXES_2D"==repeat_mode&&0<k&&(_scaling*=-1),_final_axis3[0]*=_scaling,_final_axis3[1]*=_scaling,_final_axis3[2]*=_scaling}if(_final_axis2[0]=_final_axis3[1]*_final_axis[2]-_final_axis[1]*_final_axis3[2],_final_axis2[1]=_final_axis3[2]*_final_axis[0]-_final_axis[2]*_final_axis3[0],_final_axis2[2]=_final_axis3[0]*_final_axis[1]-_final_axis3[1]*_final_axis[0],magnitude=Math.sqrt(_final_axis2[0]*_final_axis2[0]+_final_axis2[1]*_final_axis2[1]+_final_axis2[2]*_final_axis2[2]),0<magnitude){var scaling=(baseSize[1]+use_scale*scaleFactors[1])/magnitude;_final_axis2[0]*=scaling,_final_axis2[1]*=scaling,_final_axis2[2]*=scaling}return_arrays[k]=[_final_point,_final_axis,_final_axis2,_final_axis3]}}return return_arrays},updateGlyphsetTransformation=(current_positions,current_axis1s,current_axis2s,current_axis3s,current_scales)=>{var numberOfGlyphs=1;"AXES_2D"==repeat_mode||"MIRROR"==repeat_mode?numberOfGlyphs=2:"AXES_3D"==repeat_mode&&(numberOfGlyphs=3);var numberOfPositions=current_positions.length/3,current_glyph_index=0;_glyph_axis_array.length=numberOfGlyphs;for(var _i=0;_i<numberOfPositions;_i++){var current_index=3*_i,current_position=[current_positions[current_index],current_positions[current_index+1],current_positions[current_index+2]],current_axis1=[current_axis1s[current_index],current_axis1s[current_index+1],current_axis1s[current_index+2]],current_axis2=[current_axis2s[current_index],current_axis2s[current_index+1],current_axis2s[current_index+2]],current_axis3=[current_axis3s[current_index],current_axis3s[current_index+1],current_axis3s[current_index+2]],current_scale=[current_scales[current_index],current_scales[current_index+1],current_scales[current_index+2]],arrays=resolve_glyph_axes(current_position,current_axis1,current_axis2,current_axis3,current_scale,_glyph_axis_array);if(arrays.length==numberOfGlyphs)for(var j=0;j<numberOfGlyphs;j++){_transformMatrix.elements[0]=arrays[j][1][0],_transformMatrix.elements[1]=arrays[j][1][1],_transformMatrix.elements[2]=arrays[j][1][2],_transformMatrix.elements[3]=0,_transformMatrix.elements[4]=arrays[j][2][0],_transformMatrix.elements[5]=arrays[j][2][1],_transformMatrix.elements[6]=arrays[j][2][2],_transformMatrix.elements[7]=0,_transformMatrix.elements[8]=arrays[j][3][0],_transformMatrix.elements[9]=arrays[j][3][1],_transformMatrix.elements[10]=arrays[j][3][2],_transformMatrix.elements[11]=0,_transformMatrix.elements[12]=arrays[j][0][0],_transformMatrix.elements[13]=arrays[j][0][1],_transformMatrix.elements[14]=arrays[j][0][2],_transformMatrix.elements[15]=1,this.morph.setMatrixAt(current_glyph_index,_transformMatrix);var glyph=glyphList[current_glyph_index];glyph&&glyph.setTransformation(arrays[j][0],arrays[j][1],arrays[j][2],arrays[j][3]),current_glyph_index++}}this.morph.instanceMatrix.needsUpdate=!0},updateGlyphsetHexColors=current_colors=>{var numberOfGlyphs=1;"AXES_2D"==repeat_mode||"MIRROR"==repeat_mode?numberOfGlyphs=2:"AXES_3D"==repeat_mode&&(numberOfGlyphs=3);for(var hex_values,numberOfColours=current_colors.length,current_glyph_index=0,_i2=0;_i2<numberOfColours;_i2++){hex_values=current_colors[_i2];for(var j=0;j<numberOfGlyphs;j++){_bot_colour.setHex(hex_values),this.morph.setColorAt(current_glyph_index,_bot_colour);var glyph=glyphList[current_glyph_index];glyph&&glyph.setColour(_bot_colour),current_glyph_index++}}this.morph.instanceColor.needsUpdate=!0},updateMorphGlyphsets=()=>{var current_positions=_current_positions,current_axis1s=_current_axis1s,current_axis2s=_current_axis2s,current_axis3s=_current_axis3s,current_scales=_current_scales,current_colors=_current_colors,current_time=this.inbuildTime/this.duration*(numberOfTimeSteps-1),bottom_frame=Math.floor(current_time),proportion=1-(current_time-bottom_frame),top_frame=Math.ceil(current_time);if(morphVertices){var bottom_positions=positions[bottom_frame.toString()],top_positions=positions[top_frame.toString()],bottom_axis1=axis1s[bottom_frame.toString()],top_axis1=axis1s[top_frame.toString()],bottom_axis2=axis2s[bottom_frame.toString()],top_axis2=axis2s[top_frame.toString()],bottom_axis3=axis3s[bottom_frame.toString()],top_axis3=axis3s[top_frame.toString()],bottom_scale=scales[bottom_frame.toString()],top_scale=scales[top_frame.toString()];_current_positions.length=bottom_positions.length,_current_axis1s.length=bottom_positions.length,_current_axis2s.length=bottom_positions.length,_current_axis3s.length=bottom_positions.length,_current_scales.length=bottom_positions.length;for(var _i3=0;_i3<bottom_positions.length;_i3++)current_positions[_i3]=proportion*bottom_positions[_i3]+(1-proportion)*top_positions[_i3],current_axis1s[_i3]=proportion*bottom_axis1[_i3]+(1-proportion)*top_axis1[_i3],current_axis2s[_i3]=proportion*bottom_axis2[_i3]+(1-proportion)*top_axis2[_i3],current_axis3s[_i3]=proportion*bottom_axis3[_i3]+(1-proportion)*top_axis3[_i3],current_scales[_i3]=proportion*bottom_scale[_i3]+(1-proportion)*top_scale[_i3]}else positions[0],_readOnlyError("current_positions"),axis1s[0],_readOnlyError("current_axis1s"),axis2s[0],_readOnlyError("current_axis2s"),axis3s[0],_readOnlyError("current_axis3s"),scales[0],_readOnlyError("current_scales");if(updateGlyphsetTransformation(current_positions,current_axis1s,current_axis2s,current_axis3s,current_scales),this.boundingBoxUpdateRequired=!0,null!=colors){if(morphColours){var bottom_colors=colors[bottom_frame.toString()],top_colors=colors[top_frame.toString()];current_colors.length=bottom_colors.length;for(var _i4=0;_i4<bottom_colors.length;_i4++)_bot_colour.setHex(bottom_colors[_i4]),_top_colour.setHex(top_colors[_i4]),_bot_colour.setRGB(_bot_colour.r*proportion+_top_colour.r*(1-proportion),_bot_colour.g*proportion+_top_colour.g*(1-proportion),_bot_colour.b*proportion+_top_colour.b*(1-proportion)),current_colors[_i4]=_bot_colour.getHex();/*
|
|
575
521
|
for (var i = 0; i < bottom_colors.length; i++) {
|
|
576
522
|
current_colors.push(proportion * bottom_colors[i] + (1.0 - proportion) * top_colors[i]);
|
|
577
523
|
}
|
|
578
|
-
*/}else
|
|
524
|
+
*/}else colors[0],_readOnlyError("current_colors");updateGlyphsetHexColors(current_colors)}};/**
|
|
579
525
|
* Update transformation for each of the glyph in this glyphset.
|
|
526
|
+
*/ /**
|
|
527
|
+
* Update colour for each of the glyph in this glyphset.
|
|
528
|
+
*/ /**
|
|
529
|
+
* Update the current states of the glyphs in this glyphset, this includes transformation and
|
|
530
|
+
* colour for each of them. This is called when glyphset and glyphs are initialised and whenever
|
|
531
|
+
* the internal time has been updated.
|
|
532
|
+
*/ /**
|
|
533
|
+
* Display the label of the glyphs in the glyphset.
|
|
580
534
|
*/this.showLabel=()=>{for(var _i5=0;_i5<glyphList.length;_i5++)glyphList[_i5].showLabel(this.morph.material?this.morph.material.color:void 0)};/**
|
|
581
535
|
* Create the glyphs in the glyphset.
|
|
582
536
|
*
|
|
583
537
|
* @param {Boolean} displayLabels -Flag to determine either the labels should be display or not.
|
|
584
|
-
*/var createGlyphs=displayLabels=>{if(labels!=null&&displayLabels)for(var glyph,_i6=0;_i6<numberOfVertices;_i6++)glyph=new(__webpack_require__(10).Glyph)(void 0,void 0,_i6,this),null!=labels&&null!=labels[_i6]&&glyph.setLabel(labels[_i6]),0<numberOfTimeSteps&&glyph.setFrustumCulled(!1),glyphList[_i6]=glyph,this.morph.add(glyph.getGroup());//Update the transformation of the glyphs.
|
|
538
|
+
*/var createGlyphs=displayLabels=>{if(labels!=null&&displayLabels)for(var glyph,_i6=0;_i6<numberOfVertices;_i6++)glyph=new((__webpack_require__(10).Glyph))(void 0,void 0,_i6,this),null!=labels&&null!=labels[_i6]&&glyph.setLabel(labels[_i6]),0<numberOfTimeSteps&&glyph.setFrustumCulled(!1),glyphList[_i6]=glyph,this.morph.add(glyph.getGroup());//Update the transformation of the glyphs.
|
|
585
539
|
labels!=null&&displayLabels&&this.showLabel(this.morph.material?this.morph.material.color:void 0),updateGlyphsetTransformation(positions[0],axis1s[0],axis2s[0],axis3s[0],scales[0]),colors!=null&&updateGlyphsetHexColors(colors[0]),this.ready=!0,this.boundingBoxUpdateRequired=!0};/**
|
|
586
540
|
* Add a custom {@link Glyph} to this {@link Glyphset}.
|
|
587
541
|
*
|
|
588
542
|
* @param {Glyph} Glyph to be added.
|
|
589
|
-
*/this.addCustomGlyph=glyph=>{glyph.isGlyph&&glyphList.push(glyph),this.ready=!0,this.boundingBoxUpdateRequired=!0},this.addMeshAsGlyph=(mesh,id)=>{if(mesh.isMesh){var glyph=new(__webpack_require__(10).Glyph)(void 0,void 0,id,this);return glyph.fromMesh(mesh),glyphList.push(glyph),this.morph.add(glyph.getGroup()),this.ready=!0,this.boundingBoxUpdateRequired=!0,glyph}},this.forEachGlyph=callbackFunction=>{for(var _i7=0;_i7<glyphList.length;_i7++)callbackFunction(glyphList[_i7])};var meshloader=(finishCallback,displayLabels)=>(geometry,materials)=>{var tempGeometry=geometry.toBufferGeometry();this.geometry.copy(tempGeometry),this.geometry.computeBoundingSphere(),this.geometry.computeBoundingBox(),tempGeometry.dispose(),materials&&materials[0]&&(this.morph.material=materials[0]),createGlyphs(displayLabels),this.morph.name=this.groupName,this.morph.userData=this,geometry.dispose(),null!=finishCallback&&"function"==typeof finishCallback&&finishCallback(this)};/**
|
|
543
|
+
*/this.addCustomGlyph=glyph=>{glyph.isGlyph&&glyphList.push(glyph),this.ready=!0,this.boundingBoxUpdateRequired=!0},this.addMeshAsGlyph=(mesh,id)=>{if(mesh.isMesh){var glyph=new((__webpack_require__(10).Glyph))(void 0,void 0,id,this);return glyph.fromMesh(mesh),glyphList.push(glyph),this.morph.add(glyph.getGroup()),this.ready=!0,this.boundingBoxUpdateRequired=!0,glyph}},this.forEachGlyph=callbackFunction=>{for(var _i7=0;_i7<glyphList.length;_i7++)callbackFunction(glyphList[_i7])};var meshloader=(finishCallback,displayLabels)=>(geometry,materials)=>{var tempGeometry=geometry.toBufferGeometry();this.geometry.copy(tempGeometry),this.geometry.computeBoundingSphere(),this.geometry.computeBoundingBox(),tempGeometry.dispose(),materials&&materials[0]&&(this.morph.material=materials[0]),createGlyphs(displayLabels),this.morph.name=this.groupName,this.morph.userData=this,geometry.dispose(),null!=finishCallback&&"function"==typeof finishCallback&&finishCallback(this)};/**
|
|
590
544
|
* Get the index of the closest vertex to centroid.
|
|
591
545
|
*/ /**
|
|
592
546
|
* Get the closest vertex to centroid.
|
|
@@ -614,19 +568,31 @@ labels!=null&&displayLabels&&this.showLabel(this.morph.material?this.morph.mater
|
|
|
614
568
|
if (glyphList && glyphList[this.closestVertexIndex]) {
|
|
615
569
|
glyphList[this.closestVertexIndex].getBoundingBox().getCenter(position);
|
|
616
570
|
}
|
|
617
|
-
*/{var position=new THREE.Vector3;return this.morph.getMatrixAt(this.closestVertexIndex,_transformMatrix),position.setFromMatrixPosition(_transformMatrix),position}},this.getBoundingBox=()=>{if(this.morph&&this.ready&&this.morph.visible){if(this.boundingBoxUpdateRequired){_boundingBox1.setFromBufferAttribute(this.morph.geometry.attributes.position);for(var _i9=0;_i9<numberOfVertices;_i9++)this.morph.getMatrixAt(_i9,_transformMatrix),_boundingBox2.copy(_boundingBox1).applyMatrix4(_transformMatrix),0==_i9?_boundingBox3.copy(_boundingBox2):_boundingBox3.union(_boundingBox2);if(_boundingBox3)this.cachedBoundingBox.copy(_boundingBox3),this.morph.updateWorldMatrix(),this.cachedBoundingBox.applyMatrix4(this.morph.matrixWorld),this.boundingBoxUpdateRequired=!1;else return}return this.cachedBoundingBox}},this.setMorphTime=time=>{this.inbuildTime=time>this.duration?this.duration:0>time?0:time,(morphColours||morphVertices)&&(updateMorphGlyphsets(),morphVertices&&(this.markerUpdateRequired=!0))},this.isTimeVarying=()=>!!(0<numberOfTimeSteps&&(morphColours||morphVertices)),this.getCurrentTime=()=>this.inbuildTime,this.dispose=()=>{for(var _i10=glyphList.length-1;0<=_i10;_i10--)glyphList[_i10].dispose();this.geometry&&this.geometry.dispose(),this.morph&&this.morph.material.dispose(),axis1s=void 0,axis2s=void 0,axis3s=void 0,positions=void 0,scales=void 0,colors=void 0,this.ready=!1,this.groupName=void 0},this.render=(delta,playAnimation,options)=>{if(!0==playAnimation){var targetTime=this.inbuildTime+delta;targetTime>this.duration&&(targetTime-=this.duration),this.inbuildTime=targetTime,(morphColours||morphVertices)&&updateMorphGlyphsets()}this.updateMarker(playAnimation,options)}}
|
|
571
|
+
*/{var position=new THREE.Vector3;return this.morph.getMatrixAt(this.closestVertexIndex,_transformMatrix),position.setFromMatrixPosition(_transformMatrix),position}},this.getBoundingBox=()=>{if(this.morph&&this.ready&&this.morph.visible){if(this.boundingBoxUpdateRequired){_boundingBox1.setFromBufferAttribute(this.morph.geometry.attributes.position);for(var _i9=0;_i9<numberOfVertices;_i9++)this.morph.getMatrixAt(_i9,_transformMatrix),_boundingBox2.copy(_boundingBox1).applyMatrix4(_transformMatrix),0==_i9?_boundingBox3.copy(_boundingBox2):_boundingBox3.union(_boundingBox2);if(_boundingBox3)this.cachedBoundingBox.copy(_boundingBox3),this.morph.updateWorldMatrix(),this.cachedBoundingBox.applyMatrix4(this.morph.matrixWorld),this.boundingBoxUpdateRequired=!1;else return}return this.cachedBoundingBox}},this.setMorphTime=time=>{this.inbuildTime=time>this.duration?this.duration:0>time?0:time,(morphColours||morphVertices)&&(updateMorphGlyphsets(),morphVertices&&(this.markerUpdateRequired=!0))},this.isTimeVarying=()=>!!(0<numberOfTimeSteps&&(morphColours||morphVertices)),this.getCurrentTime=()=>this.inbuildTime,this.dispose=()=>{for(var _i10=glyphList.length-1;0<=_i10;_i10--)glyphList[_i10].dispose();this.geometry&&this.geometry.dispose(),this.morph&&this.morph.material.dispose(),axis1s=void 0,axis2s=void 0,axis3s=void 0,positions=void 0,scales=void 0,colors=void 0,this.ready=!1,this.groupName=void 0},this.render=(delta,playAnimation,options)=>{if(!0==playAnimation){var targetTime=this.inbuildTime+delta;targetTime>this.duration&&(targetTime-=this.duration),this.inbuildTime=targetTime,(morphColours||morphVertices)&&updateMorphGlyphsets()}this.updateMarker(playAnimation,options)}};/**
|
|
572
|
+
* This is a container of {@link Glyph} and their graphical properties
|
|
573
|
+
* including transformations, colors, number of time steps, duration of animations
|
|
574
|
+
* and group name. Please note that all glyphs in the glyphset share the same geometry
|
|
575
|
+
* however they may have different transformations.
|
|
576
|
+
*
|
|
577
|
+
* @class
|
|
578
|
+
* @author Alan Wu
|
|
579
|
+
* @return {Glyphset}
|
|
580
|
+
*/Glyphset.prototype=Object.create((__webpack_require__(6).ZincObject).prototype),exports.Glyphset=Glyphset;
|
|
618
581
|
|
|
619
582
|
/***/ }),
|
|
620
583
|
/* 14 */
|
|
621
|
-
/***/ (
|
|
584
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
622
585
|
|
|
623
586
|
"use strict";
|
|
624
587
|
__webpack_require__.r(__webpack_exports__);
|
|
625
|
-
/* harmony export
|
|
626
|
-
|
|
588
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
589
|
+
/* harmony export */ JSONLoader: () => (/* binding */ JSONLoader)
|
|
590
|
+
/* harmony export */ });
|
|
591
|
+
var THREE=__webpack_require__(3),Loader=(__webpack_require__(15).Loader),LoaderUtils=THREE.LoaderUtils,AnimationClip=THREE.AnimationClip,Vector3=THREE.Vector3,Vector4=THREE.Vector4,Color=THREE.Color,Vector2=THREE.Vector2,Face3=(__webpack_require__(5).Face3),Geometry=(__webpack_require__(5).Geometry),FileLoader=THREE.FileLoader,DefaultLoadingManager=THREE.DefaultLoadingManager,VideoHandler=(__webpack_require__(16).VideoHandler);/**
|
|
627
592
|
* @author mrdoob / http://mrdoob.com/
|
|
628
593
|
* @author alteredq / http://alteredqualia.com/
|
|
629
|
-
*/function JSONLoader(manager){"boolean"==typeof manager&&(console.warn("THREE.JSONLoader: showStatus parameter has been removed from constructor."),manager=void 0),this.manager=manager===void 0?DefaultLoadingManager:manager,this.withCredentials=!1,this.paramsString=""}Object.assign(JSONLoader.prototype,{load:function load(url,onLoad,onProgress,onError){var scope=this,texturePath=this.texturePath&&"string"==typeof this.texturePath?this.texturePath:LoaderUtils.extractUrlBase(url),loader=new FileLoader(this.manager),params=url.split("?")
|
|
594
|
+
*/function JSONLoader(manager){"boolean"==typeof manager&&(console.warn("THREE.JSONLoader: showStatus parameter has been removed from constructor."),manager=void 0),this.manager=manager===void 0?DefaultLoadingManager:manager,this.withCredentials=!1,this.paramsString=""}Object.assign(JSONLoader.prototype,{load:function load(url,onLoad,onProgress,onError){var scope=this,texturePath=this.texturePath&&"string"==typeof this.texturePath?this.texturePath:LoaderUtils.extractUrlBase(url),loader=new FileLoader(this.manager),params=url.split("?");//There are parameters, add them to the target
|
|
595
|
+
this.paramsString=2===url.length?paramsStrings[1]:"",loader.setWithCredentials(this.withCredentials),loader.load(url,function(text){var json=JSON.parse(text),metadata=json.metadata;if(metadata!==void 0){var type=metadata.type;if(type!==void 0&&"object"===type.toLowerCase())return void console.error("THREE.JSONLoader: "+url+" should be loaded with THREE.ObjectLoader instead.")}if(scope&&scope.parse){var object=scope.parse(json,texturePath);onLoad(object.geometry,object.materials)}},onProgress,onError)},setTexturePath:function setTexturePath(value){this.texturePath=value},parse:function(){function parseModel(json,geometry){function isBitSet(value,position){return value&1<<position}var i,j,fi,offset,zLength,colorIndex,normalIndex,uvIndex,materialIndex,type,isQuad,hasMaterial,hasFaceVertexUv,hasFaceNormal,hasFaceVertexNormal,hasFaceColor,hasFaceVertexColor,vertex,face,faceA,faceB,hex,normal,uvLayer,uv,u,v,faces=json.faces,vertices=json.vertices,normals=json.normals,colors=json.colors,scale=json.scale,nUvLayers=0;if(void 0!==json.uvs){// disregard empty arrays
|
|
630
596
|
for(i=0;i<json.uvs.length;i++)json.uvs[i].length&&nUvLayers++;for(i=0;i<nUvLayers;i++)geometry.faceVertexUvs[i]=[]}for(offset=0,zLength=vertices.length;offset<zLength;)vertex=new Vector3,vertex.x=vertices[offset++]*scale,vertex.y=vertices[offset++]*scale,vertex.z=vertices[offset++]*scale,geometry.vertices.push(vertex);if(offset=0,zLength=faces.length,json.uvs)for(i=0;i<json.uvs.length;i++){geometry.uvs[i]=[];for(var k=0;k<json.uvs[i].length;k++)geometry.uvs[i][k]=json.uvs[i][k]}if(normals)for(i=0;i<normals.length;i++)geometry.normals[i]=normals[i];if(colors)for(i=0;i<colors.length;i++)geometry.colors[i]=colors[i];for(;offset<zLength;)// console.log("type", type, "bits", isQuad, hasMaterial, hasFaceVertexUv, hasFaceNormal, hasFaceVertexNormal, hasFaceColor, hasFaceVertexColor);
|
|
631
597
|
if(type=faces[offset++],isQuad=isBitSet(type,0),hasMaterial=isBitSet(type,1),hasFaceVertexUv=isBitSet(type,3),hasFaceNormal=isBitSet(type,4),hasFaceVertexNormal=isBitSet(type,5),hasFaceColor=isBitSet(type,6),hasFaceVertexColor=isBitSet(type,7),isQuad){if(faceA=new Face3,faceA.a=faces[offset],faceA.b=faces[offset+1],faceA.c=faces[offset+3],faceB=new Face3,faceB.a=faces[offset+1],faceB.b=faces[offset+2],faceB.c=faces[offset+3],offset+=4,hasMaterial&&(materialIndex=faces[offset++],faceA.materialIndex=materialIndex,faceB.materialIndex=materialIndex),fi=geometry.faces.length,hasFaceVertexUv)for(i=0;i<nUvLayers;i++)for(uvLayer=json.uvs[i],geometry.faceVertexUvs[i][fi]=[],geometry.faceVertexUvs[i][fi+1]=[],j=0;4>j;j++)uvIndex=faces[offset++],u=uvLayer[2*uvIndex],v=uvLayer[2*uvIndex+1],uv=new Vector2(u,v),2!==j&&geometry.faceVertexUvs[i][fi].push(uv),0!==j&&geometry.faceVertexUvs[i][fi+1].push(uv);if(hasFaceNormal&&(normalIndex=3*faces[offset++],faceA.normal.set(normals[normalIndex++],normals[normalIndex++],normals[normalIndex]),faceB.normal.copy(faceA.normal)),hasFaceVertexNormal)for(i=0;4>i;i++)normalIndex=3*faces[offset++],normal=new Vector3(normals[normalIndex++],normals[normalIndex++],normals[normalIndex]),2!==i&&faceA.vertexNormals.push(normal),0!==i&&faceB.vertexNormals.push(normal);if(hasFaceColor&&(colorIndex=faces[offset++],hex=colors[colorIndex],faceA.color.setHex(hex),faceB.color.setHex(hex)),hasFaceVertexColor)for(i=0;4>i;i++)colorIndex=faces[offset++],hex=colors[colorIndex],2!==i&&faceA.vertexColors.push(new Color(hex)),0!==i&&faceB.vertexColors.push(new Color(hex));geometry.faces.push(faceA),geometry.faces.push(faceB)}else{if(face=new Face3,face.a=faces[offset++],face.b=faces[offset++],face.c=faces[offset++],hasMaterial&&(materialIndex=faces[offset++],face.materialIndex=materialIndex),fi=geometry.faces.length,hasFaceVertexUv)for(i=0;i<nUvLayers;i++)for(uvLayer=json.uvs[i],geometry.faceVertexUvs[i][fi]=[],j=0;3>j;j++)uvIndex=faces[offset++],u=uvLayer[2*uvIndex],v=uvLayer[2*uvIndex+1],uv=new Vector2(u,v),geometry.faceVertexUvs[i][fi].push(uv);if(hasFaceNormal&&(normalIndex=3*faces[offset++],face.normal.set(normals[normalIndex++],normals[normalIndex++],normals[normalIndex])),hasFaceVertexNormal)for(i=0;3>i;i++)normalIndex=3*faces[offset++],normal=new Vector3(normals[normalIndex++],normals[normalIndex++],normals[normalIndex]),face.vertexNormals.push(normal);if(hasFaceColor&&(colorIndex=faces[offset++],face.color.setHex(colors[colorIndex])),hasFaceVertexColor)for(i=0;3>i;i++)colorIndex=faces[offset++],face.vertexColors.push(new Color(colors[colorIndex]));geometry.faces.push(face)}}function parseSkin(json,geometry){var influencesPerVertex=json.influencesPerVertex===void 0?2:json.influencesPerVertex;if(json.skinWeights)for(var i=0,l=json.skinWeights.length;i<l;i+=influencesPerVertex){var x=json.skinWeights[i],y=1<influencesPerVertex?json.skinWeights[i+1]:0,z=2<influencesPerVertex?json.skinWeights[i+2]:0,w=3<influencesPerVertex?json.skinWeights[i+3]:0;geometry.skinWeights.push(new Vector4(x,y,z,w))}if(json.skinIndices)for(var i=0,l=json.skinIndices.length;i<l;i+=influencesPerVertex){var a=json.skinIndices[i],b=1<influencesPerVertex?json.skinIndices[i+1]:0,c=2<influencesPerVertex?json.skinIndices[i+2]:0,d=3<influencesPerVertex?json.skinIndices[i+3]:0;geometry.skinIndices.push(new Vector4(a,b,c,d))}geometry.bones=json.bones,geometry.bones&&0<geometry.bones.length&&(geometry.skinWeights.length!==geometry.skinIndices.length||geometry.skinIndices.length!==geometry.vertices.length)&&console.warn("When skinning, number of vertices ("+geometry.vertices.length+"), skinIndices ("+geometry.skinIndices.length+"), and skinWeights ("+geometry.skinWeights.length+") should match.")}function parseMorphing(json,geometry){var scale=json.scale;if(json.morphTargets!==void 0)for(var i=0,l=json.morphTargets.length;i<l;i++){geometry.morphTargets[i]={},geometry.morphTargets[i].name=json.morphTargets[i].name,geometry.morphTargets[i].vertices=[];for(var vertex,dstVertices=geometry.morphTargets[i].vertices,srcVertices=json.morphTargets[i].vertices,v=0,vl=srcVertices.length;v<vl;v+=3)vertex=new Vector3,vertex.x=srcVertices[v]*scale,vertex.y=srcVertices[v+1]*scale,vertex.z=srcVertices[v+2]*scale,dstVertices.push(vertex)}if(void 0!==json.morphNormals)for(var i=0,l=json.morphNormals.length;i<l;i++)if(geometry.morphTargets[i]){geometry.morphTargets[i].normals=[];for(var normals,dstNormals=geometry.morphTargets[i].normals,srcNormals=json.morphNormals[i].normals,v=0,vl=srcNormals.length;v<vl;v+=3)normals=new Vector3,normals.x=srcNormals[v],normals.y=srcNormals[v+1],normals.z=srcNormals[v+2],dstNormals.push(normals);geometry.morphNormalsReady=!0}if(void 0!==json.morphColors){var i,l,c,cl,dstColors,srcColors,color;for(i=0,l=json.morphColors.length;i<l;i++)for(geometry.morphColors[i]={},geometry.morphColors[i].name=json.morphColors[i].name,geometry.morphColors[i].colors=[],dstColors=geometry.morphColors[i].colors,srcColors=json.morphColors[i].colors,(c=0,cl=srcColors.length);c<cl;c+=3)color=new THREE.Color(16755200),color.setRGB(srcColors[c],srcColors[c+1],srcColors[c+2]),dstColors.push(color)}}function parseAnimations(json,geometry){var outputAnimations=[],animations=[];// parse old style Bone/Hierarchy animations
|
|
632
598
|
json.animation!==void 0&&animations.push(json.animation),json.animations!==void 0&&(json.animations.length?animations=animations.concat(json.animations):animations.push(json.animations));for(var clip,i=0;i<animations.length;i++)clip=AnimationClip.parseAnimation(animations[i],geometry.bones),clip&&outputAnimations.push(clip);// parse implicit morph animations
|
|
@@ -635,22 +601,24 @@ var morphAnimationClips=AnimationClip.CreateClipsFromMorphTargetSequences(geomet
|
|
|
635
601
|
|
|
636
602
|
/***/ }),
|
|
637
603
|
/* 15 */
|
|
638
|
-
/***/ (
|
|
604
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
639
605
|
|
|
640
606
|
"use strict";
|
|
641
607
|
__webpack_require__.r(__webpack_exports__);
|
|
642
|
-
/* harmony export
|
|
608
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
609
|
+
/* harmony export */ Loader: () => (/* binding */ Loader)
|
|
610
|
+
/* harmony export */ });
|
|
643
611
|
/* harmony import */ var three__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(3);
|
|
644
612
|
/* harmony import */ var three__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(three__WEBPACK_IMPORTED_MODULE_0__);
|
|
645
613
|
var THREE=__webpack_require__(3);/**
|
|
646
614
|
* @author alteredq / http://alteredqualia.com/
|
|
647
|
-
*/function Loader(){}Loader.Handlers={handlers:[],add:function add(regex,loader){this.handlers.push(regex,loader)},get:function get(file){for(var handlers=this.handlers,i=0,l=handlers.length;i<l;i+=2){var regex=handlers[i],loader=handlers[i+1];if(regex.test(file))return loader}return null}},Object.assign(Loader.prototype,{crossOrigin:"anonymous",onLoadStart:function onLoadStart(){},onLoadProgress:function onLoadProgress(){},onLoadComplete:function onLoadComplete(){},initMaterials:function initMaterials(materials,texturePath,crossOrigin){for(var array=[],i=0;i<materials.length;++i)array[i]=this.createMaterial(materials[i],texturePath,crossOrigin);return array},createMaterial:function(){var BlendingMode={NoBlending:three__WEBPACK_IMPORTED_MODULE_0__
|
|
615
|
+
*/function Loader(){}Loader.Handlers={handlers:[],add:function add(regex,loader){this.handlers.push(regex,loader)},get:function get(file){for(var handlers=this.handlers,i=0,l=handlers.length;i<l;i+=2){var regex=handlers[i],loader=handlers[i+1];if(regex.test(file))return loader}return null}},Object.assign(Loader.prototype,{crossOrigin:"anonymous",onLoadStart:function onLoadStart(){},onLoadProgress:function onLoadProgress(){},onLoadComplete:function onLoadComplete(){},initMaterials:function initMaterials(materials,texturePath,crossOrigin){for(var array=[],i=0;i<materials.length;++i)array[i]=this.createMaterial(materials[i],texturePath,crossOrigin);return array},createMaterial:function(){var BlendingMode={NoBlending:three__WEBPACK_IMPORTED_MODULE_0__.NoBlending,NormalBlending:three__WEBPACK_IMPORTED_MODULE_0__.NormalBlending,AdditiveBlending:three__WEBPACK_IMPORTED_MODULE_0__.AdditiveBlending,SubtractiveBlending:three__WEBPACK_IMPORTED_MODULE_0__.SubtractiveBlending,MultiplyBlending:three__WEBPACK_IMPORTED_MODULE_0__.MultiplyBlending,CustomBlending:three__WEBPACK_IMPORTED_MODULE_0__.CustomBlending},color=new three__WEBPACK_IMPORTED_MODULE_0__.Color,textureLoader=new three__WEBPACK_IMPORTED_MODULE_0__.TextureLoader,materialLoader=new three__WEBPACK_IMPORTED_MODULE_0__.MaterialLoader;return function(m,texturePath,crossOrigin){function loadTexture(path,repeat,offset,wrap,anisotropy){var texture,fullPath=texturePath+path,loader=Loader.Handlers.get(fullPath);null===loader?(textureLoader.setCrossOrigin(crossOrigin),texture=textureLoader.load(fullPath)):texture=loader.load(fullPath),void 0!==repeat&&(texture.repeat.fromArray(repeat),1!==repeat[0]&&(texture.wrapS=three__WEBPACK_IMPORTED_MODULE_0__.RepeatWrapping),1!==repeat[1]&&(texture.wrapT=three__WEBPACK_IMPORTED_MODULE_0__.RepeatWrapping)),void 0!==offset&&texture.offset.fromArray(offset),void 0!==wrap&&("repeat"===wrap[0]&&(texture.wrapS=three__WEBPACK_IMPORTED_MODULE_0__.RepeatWrapping),"mirror"===wrap[0]&&(texture.wrapS=three__WEBPACK_IMPORTED_MODULE_0__.MirroredRepeatWrapping),"repeat"===wrap[1]&&(texture.wrapT=three__WEBPACK_IMPORTED_MODULE_0__.RepeatWrapping),"mirror"===wrap[1]&&(texture.wrapT=three__WEBPACK_IMPORTED_MODULE_0__.MirroredRepeatWrapping)),void 0!==anisotropy&&(texture.anisotropy=anisotropy);var uuid=three__WEBPACK_IMPORTED_MODULE_0__.MathUtils.generateUUID();return textures[uuid]=texture,uuid}//
|
|
648
616
|
// convert from old material format
|
|
649
|
-
var textures={},json={uuid:three__WEBPACK_IMPORTED_MODULE_0__
|
|
617
|
+
var textures={},json={uuid:three__WEBPACK_IMPORTED_MODULE_0__.MathUtils.generateUUID(),type:"MeshLambertMaterial"};for(var name in m){var value=m[name];switch(name){case"DbgColor":case"DbgIndex":case"opticalDensity":case"illumination":break;case"DbgName":json.name=value;break;case"blending":json.blending=BlendingMode[value];break;case"colorAmbient":case"mapAmbient":console.warn("THREE.Loader.createMaterial:",name,"is no longer supported.");break;case"colorDiffuse":json.color=color.fromArray(value).getHex();break;case"colorSpecular":json.specular=color.fromArray(value).getHex();break;case"colorEmissive":json.emissive=color.fromArray(value).getHex();break;case"specularCoef":json.shininess=value;break;case"shading":"basic"===value.toLowerCase()&&(json.type="MeshBasicMaterial"),"phong"===value.toLowerCase()&&(json.type="MeshPhongMaterial"),"standard"===value.toLowerCase()&&(json.type="MeshStandardMaterial");break;case"mapDiffuse":json.map=loadTexture(value,m.mapDiffuseRepeat,m.mapDiffuseOffset,m.mapDiffuseWrap,m.mapDiffuseAnisotropy);break;case"mapDiffuseRepeat":case"mapDiffuseOffset":case"mapDiffuseWrap":case"mapDiffuseAnisotropy":break;case"mapEmissive":json.emissiveMap=loadTexture(value,m.mapEmissiveRepeat,m.mapEmissiveOffset,m.mapEmissiveWrap,m.mapEmissiveAnisotropy);break;case"mapEmissiveRepeat":case"mapEmissiveOffset":case"mapEmissiveWrap":case"mapEmissiveAnisotropy":break;case"mapLight":json.lightMap=loadTexture(value,m.mapLightRepeat,m.mapLightOffset,m.mapLightWrap,m.mapLightAnisotropy);break;case"mapLightRepeat":case"mapLightOffset":case"mapLightWrap":case"mapLightAnisotropy":break;case"mapAO":json.aoMap=loadTexture(value,m.mapAORepeat,m.mapAOOffset,m.mapAOWrap,m.mapAOAnisotropy);break;case"mapAORepeat":case"mapAOOffset":case"mapAOWrap":case"mapAOAnisotropy":break;case"mapBump":json.bumpMap=loadTexture(value,m.mapBumpRepeat,m.mapBumpOffset,m.mapBumpWrap,m.mapBumpAnisotropy);break;case"mapBumpScale":json.bumpScale=value;break;case"mapBumpRepeat":case"mapBumpOffset":case"mapBumpWrap":case"mapBumpAnisotropy":break;case"mapNormal":json.normalMap=loadTexture(value,m.mapNormalRepeat,m.mapNormalOffset,m.mapNormalWrap,m.mapNormalAnisotropy);break;case"mapNormalFactor":json.normalScale=value;break;case"mapNormalRepeat":case"mapNormalOffset":case"mapNormalWrap":case"mapNormalAnisotropy":break;case"mapSpecular":json.specularMap=loadTexture(value,m.mapSpecularRepeat,m.mapSpecularOffset,m.mapSpecularWrap,m.mapSpecularAnisotropy);break;case"mapSpecularRepeat":case"mapSpecularOffset":case"mapSpecularWrap":case"mapSpecularAnisotropy":break;case"mapMetalness":json.metalnessMap=loadTexture(value,m.mapMetalnessRepeat,m.mapMetalnessOffset,m.mapMetalnessWrap,m.mapMetalnessAnisotropy);break;case"mapMetalnessRepeat":case"mapMetalnessOffset":case"mapMetalnessWrap":case"mapMetalnessAnisotropy":break;case"mapRoughness":json.roughnessMap=loadTexture(value,m.mapRoughnessRepeat,m.mapRoughnessOffset,m.mapRoughnessWrap,m.mapRoughnessAnisotropy);break;case"mapRoughnessRepeat":case"mapRoughnessOffset":case"mapRoughnessWrap":case"mapRoughnessAnisotropy":break;case"mapAlpha":json.alphaMap=loadTexture(value,m.mapAlphaRepeat,m.mapAlphaOffset,m.mapAlphaWrap,m.mapAlphaAnisotropy);break;case"mapAlphaRepeat":case"mapAlphaOffset":case"mapAlphaWrap":case"mapAlphaAnisotropy":break;case"flipSided":json.side=three__WEBPACK_IMPORTED_MODULE_0__.BackSide;break;case"doubleSided":json.side=three__WEBPACK_IMPORTED_MODULE_0__.DoubleSide;break;case"transparency":console.warn("THREE.Loader.createMaterial: transparency has been renamed to opacity"),json.opacity=value;break;case"depthTest":case"depthWrite":case"colorWrite":case"opacity":case"reflectivity":case"transparent":case"visible":case"wireframe":json[name]=value;break;case"vertexColors":!0===value&&(json.vertexColors=three__WEBPACK_IMPORTED_MODULE_0__.VertexColors),"face"===value&&(json.vertexColors=three__WEBPACK_IMPORTED_MODULE_0__.FaceColors);break;default:console.error("THREE.Loader.createMaterial: Unsupported",name,value)}}return"MeshBasicMaterial"===json.type&&delete json.emissive,"MeshPhongMaterial"!==json.type&&delete json.specular,1>json.opacity&&(json.transparent=!0),materialLoader.setTextures(textures),materialLoader.parse(json)}}()});
|
|
650
618
|
|
|
651
619
|
/***/ }),
|
|
652
620
|
/* 16 */
|
|
653
|
-
/***/ (
|
|
621
|
+
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
654
622
|
|
|
655
623
|
var THREE=__webpack_require__(3);/**
|
|
656
624
|
* Provide basic functionality to display video as texture.
|
|
@@ -667,9 +635,9 @@ return!!(_this.video&&3<=_this.video.readyState)},function initialise(){document
|
|
|
667
635
|
|
|
668
636
|
/***/ }),
|
|
669
637
|
/* 17 */
|
|
670
|
-
/***/ (
|
|
638
|
+
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
671
639
|
|
|
672
|
-
var THREE=__webpack_require__(3),Points=__webpack_require__(18).Points,toBufferGeometry=__webpack_require__(4).toBufferGeometry,Pointset=function(){__webpack_require__(6).ZincObject.call(this),this.isPointset=!0;/** Shape of the points is created using the function below */var getCircularTexture=()=>{var image=new Image;image.src=__webpack_require__(19);var texture=new THREE.Texture;return texture.image=image,texture.needsUpdate=!0,texture};/**
|
|
640
|
+
var THREE=__webpack_require__(3),Points=(__webpack_require__(18).Points),toBufferGeometry=(__webpack_require__(4).toBufferGeometry),Pointset=function(){(__webpack_require__(6).ZincObject).call(this),this.isPointset=!0;/** Shape of the points is created using the function below */var getCircularTexture=()=>{var image=new Image;image.src=__webpack_require__(19);var texture=new THREE.Texture;return texture.image=image,texture.needsUpdate=!0,texture};/**
|
|
673
641
|
* Create the pointsets using geometry and material.
|
|
674
642
|
*
|
|
675
643
|
* @param {THREE.Geomtry} geometryIn - Geometry of points to be rendered.
|
|
@@ -688,31 +656,47 @@ var THREE=__webpack_require__(3),Points=__webpack_require__(18).Points,toBufferG
|
|
|
688
656
|
*
|
|
689
657
|
* @param {Boolean} flag - Determin either size attenuation
|
|
690
658
|
* should be on or off.
|
|
691
|
-
*/this.createMesh=(geometryIn,materialIn,options)=>{if(geometryIn&&materialIn){var geometry=toBufferGeometry(geometryIn,options),texture=getCircularTexture();materialIn.map=texture;var point=new Points(geometry,materialIn);this.setMesh(point,options.localTimeEnabled,options.localMorphColour)}},this.setSize=size=>{this.morph&&this.morph.material&&(this.morph.material.size=size,this.morph.material.needsUpdate=!0)},this.setSizeAttenuation=flag=>{this.morph&&this.morph.material&&(this.morph.material.sizeAttenuation=flag,this.morph.material.needsUpdate=!0)}}
|
|
659
|
+
*/this.createMesh=(geometryIn,materialIn,options)=>{if(geometryIn&&materialIn){var geometry=toBufferGeometry(geometryIn,options),texture=getCircularTexture();materialIn.map=texture;var point=new Points(geometry,materialIn);this.setMesh(point,options.localTimeEnabled,options.localMorphColour)}},this.setSize=size=>{this.morph&&this.morph.material&&(this.morph.material.size=size,this.morph.material.needsUpdate=!0)},this.setSizeAttenuation=flag=>{this.morph&&this.morph.material&&(this.morph.material.sizeAttenuation=flag,this.morph.material.needsUpdate=!0)}};/**
|
|
660
|
+
* Provides an object which stores points and provides method which controls its position.
|
|
661
|
+
* This is created when a valid json file containing point is read into a {@link Zinc.Scene}
|
|
662
|
+
* object.
|
|
663
|
+
*
|
|
664
|
+
* @class
|
|
665
|
+
* @author Alan Wu
|
|
666
|
+
* @return {Pointset}
|
|
667
|
+
*/Pointset.prototype=Object.create((__webpack_require__(6).ZincObject).prototype),exports.Pointset=Pointset;
|
|
692
668
|
|
|
693
669
|
/***/ }),
|
|
694
670
|
/* 18 */
|
|
695
|
-
/***/ (
|
|
671
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
696
672
|
|
|
697
673
|
"use strict";
|
|
698
674
|
__webpack_require__.r(__webpack_exports__);
|
|
699
|
-
/* harmony export
|
|
675
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
676
|
+
/* harmony export */ Points: () => (/* binding */ Points)
|
|
677
|
+
/* harmony export */ });
|
|
700
678
|
/* harmony import */ var three__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(3);
|
|
701
679
|
/* harmony import */ var three__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(three__WEBPACK_IMPORTED_MODULE_0__);
|
|
702
|
-
var _inverseMatrix=/*@__PURE__*/new three__WEBPACK_IMPORTED_MODULE_0__
|
|
703
|
-
|
|
680
|
+
var _inverseMatrix=/*@__PURE__*/new three__WEBPACK_IMPORTED_MODULE_0__.Matrix4,_ray=/*@__PURE__*/new three__WEBPACK_IMPORTED_MODULE_0__.Ray,_sphere=/*@__PURE__*/new three__WEBPACK_IMPORTED_MODULE_0__.Sphere,_position=/*@__PURE__*/new three__WEBPACK_IMPORTED_MODULE_0__.Vector3,_morphA=/*@__PURE__*/new three__WEBPACK_IMPORTED_MODULE_0__.Vector3,_tempA=/*@__PURE__*/new three__WEBPACK_IMPORTED_MODULE_0__.Vector3;class Points extends three__WEBPACK_IMPORTED_MODULE_0__.Object3D{constructor(){var geometry=0<arguments.length&&arguments[0]!==void 0?arguments[0]:new three__WEBPACK_IMPORTED_MODULE_0__.BufferGeometry,material=1<arguments.length&&arguments[1]!==void 0?arguments[1]:new three__WEBPACK_IMPORTED_MODULE_0__.PointsMaterial;super(),this.type="Points",this.geometry=geometry,this.material=material,this.updateMorphTargets()}copy(source){return super.copy(source),this.material=source.material,this.geometry=source.geometry,this}raycast(raycaster,intersects){var geometry=this.geometry,matrixWorld=this.matrixWorld,threshold=raycaster.params.Points.threshold,drawRange=geometry.drawRange;// Checking boundingSphere distance to ray
|
|
681
|
+
if(null===geometry.boundingSphere&&geometry.computeBoundingSphere(),_sphere.copy(geometry.boundingSphere),_sphere.applyMatrix4(matrixWorld),_sphere.radius+=threshold,!1!==raycaster.ray.intersectsSphere(_sphere)){_inverseMatrix.copy(matrixWorld).invert(),_ray.copy(raycaster.ray).applyMatrix4(_inverseMatrix);var localThreshold=threshold/((this.scale.x+this.scale.y+this.scale.z)/3),localThresholdSq=localThreshold*localThreshold;if(geometry.isBufferGeometry){var index=geometry.index,attributes=geometry.attributes,positionAttribute=attributes.position,morphPosition=geometry.morphAttributes.position;if(null!==index)for(var a,start=Math.max(0,drawRange.start),end=Math.min(index.count,drawRange.start+drawRange.count),i=start;i<end;i++)a=index.getX(i),calculatePosition(this,positionAttribute,morphPosition,a),testPoint(_position,a,localThresholdSq,matrixWorld,raycaster,intersects,this);else for(var _start=Math.max(0,drawRange.start),_end=Math.min(positionAttribute.count,drawRange.start+drawRange.count),_i=_start;_i<_end;_i++)calculatePosition(this,positionAttribute,morphPosition,_i),testPoint(_position,_i,localThresholdSq,matrixWorld,raycaster,intersects,this)}else console.error("THREE.Points.raycast() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.")}//
|
|
682
|
+
}updateMorphTargets(){var geometry=this.geometry;if(geometry.isBufferGeometry){var morphAttributes=geometry.morphAttributes,keys=Object.keys(morphAttributes);if(0<keys.length){var morphAttribute=morphAttributes[keys[0]];if(morphAttribute!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(var name,m=0,ml=morphAttribute.length;m<ml;m++)name=morphAttribute[m].name||m+"",this.morphTargetInfluences.push(0),this.morphTargetDictionary[name]=m}}}else{var morphTargets=geometry.morphTargets;morphTargets!==void 0&&0<morphTargets.length&&console.error("THREE.Points.updateMorphTargets() does not support THREE.Geometry. Use THREE.BufferGeometry instead.")}}}Points.prototype.isPoints=!0;function testPoint(point,index,localThresholdSq,matrixWorld,raycaster,intersects,object){var rayPointDistanceSq=_ray.distanceSqToPoint(point);if(rayPointDistanceSq<localThresholdSq){var intersectPoint=new three__WEBPACK_IMPORTED_MODULE_0__.Vector3;_ray.closestPointToPoint(point,intersectPoint),intersectPoint.applyMatrix4(matrixWorld);var distance=raycaster.ray.origin.distanceTo(intersectPoint);if(distance<raycaster.near||distance>raycaster.far)return;intersects.push({distance:distance,distanceToRay:Math.sqrt(rayPointDistanceSq),point:intersectPoint,index:index,face:null,object:object})}}function calculatePosition(object,position,morphPosition,a){_position.fromBufferAttribute(position,a);var morphInfluences=object.morphTargetInfluences;if(object.material.morphTargets&&morphPosition&&morphInfluences){_morphA.set(0,0,0);for(var i=0,il=morphPosition.length;i<il;i++){var influence=morphInfluences[i],morphAttribute=morphPosition[i];0!==influence&&(_tempA.fromBufferAttribute(morphAttribute,a),_morphA.addScaledVector(_tempA.sub(_position),influence))}_position.add(_morphA)}}
|
|
704
683
|
|
|
705
684
|
/***/ }),
|
|
706
685
|
/* 19 */
|
|
707
|
-
/***/ (
|
|
686
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
708
687
|
|
|
709
|
-
|
|
688
|
+
"use strict";
|
|
689
|
+
__webpack_require__.r(__webpack_exports__);
|
|
690
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
691
|
+
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
692
|
+
/* harmony export */ });
|
|
693
|
+
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAAZiS0dEAAAAAAAA+UO7fwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9sHDgwCEMBJZu0AAAAdaVRYdENvbW1lbnQAAAAAAENyZWF0ZWQgd2l0aCBHSU1QZC5lBwAABM5JREFUWMO1V0tPG2cUPZ4Hxh6DazIOrjFNqJs0FIMqWFgWQkatsmvVbtggKlSVRVf5AWz4AWz4AUSKEChll19QJYSXkECuhFxsHjEhxCYm+DWGMZ5HF72DJq4bAzFXurI0M/I5997v3u9cC65vTJVn2lX/xHINQOYSBLTLEuIuCWw4Z3IGAEvf6ASmVHjNzHCXBG4A0AjACsAOwEbO0nsFQBnAGYASAIl+ZRMR7SolMEdsByD09fV5R0ZGgg8ePPjW5/N1iqLYpuu6RZblciKR2I9Go69evnwZnZ+fjwI4IS8AKBIRzeQfJWCANwKwh0KhtrGxsYehUOin1tbW+zzP23ietzY2NnIAoGmaLsuyUiqVyvl8XtrY2NiamZn589mzZxsAUgCOAeQAnFI2tI+VxIjaAeDzoaGh7xYWFuZOTk6OZVk+12uYqqq6JEnn0Wg0OT4+/geAXwGEAdwDIFJQXC1wO4DWR48e/RCPxxclSSroVzRFUbSDg4P848ePFwH8DuAhkWih83TRQWxFOXgAwvDwcOfo6OhvXV1d39tsNtuVBwTDWBwOh1UUxVsMw1hXVlbSdCgNV43uYSvrHg6H24aHh38eHBz85TrgF9FYLHA4HLzH43FvbW2d7u/vG+dANp8FpqIlbd3d3V8Fg8EfBUFw4BONZVmL3+9vHhkZCQL4AoAHgJPK8G+yzC0XDofdoVAo5PP5vkadTBAEtr+/39ff3x8gAp/RPOEqx2qjx+NpvXv3bk9DQ0NDvQgwDIOWlhZrMBj8kgi0UJdxRgYMArzL5XJ7vd57qLPZ7Xamp6fnNgBXtQxcjFuHw+Hyer3t9SYgCAITCAScAJoBNNEY/08GOFVVrfVMv7kMNDntFD1vjIAPrlRN0xjckOm6biFQ3jwNPwDMZrOnqVTqfb3Bi8Wivru7W/VCYkwPlKOjo0IikXh7EwQikYgE4Nw0CfXKDCipVCoTj8df3QABbW1tLUc6oUgkFPMkVACUNjc337148eKvw8PDbJ2jP1taWkoCyNDVXDSECmNSK4qiKNLq6urW8+fPI/UicHx8rD59+jSVy+WOAKSJhKENwFItLtoxk8mwsixzHR0dHe3t7c5PAU+n09rs7OzJkydPYqVSaQfANoDXALIk31S2smU1TWMPDg7K5XKZ7+3t9TudTut1U7+wsFCcmJiIpdPpbQBxADsAknQWymYCOukBHYCuKApisdhpMpnURFEU79y503TVyKenpzOTk5M7e3t7MQKPV0Zv1gNm+awB0MvlshqLxfLb29uyJElWURSbXC4XXyvqxcXFs6mpqeTc3Nzu3t7e3wQcA7BPZ8Cov1pNlJplmQtAG8MwHV6v95tAINA5MDBwPxAIuLu6upr8fr/VAN3c3JQjkcjZ+vp6fnl5+d2bN29SuVzuNYAEpf01CdRChUL+X1VskHACuA3Ay3Fcu9vt7nA6nZ7m5uYWQRCaNE3jVVW15PP580KhIGUymWw2m00DOAJwSP4WwPtq4LX2Ao6USxNlQyS/RcQcdLGwlNIz6vEMAaZpNzCk2Pll94LK/cDYimxERiBwG10sxjgvEZBE0UpE6vxj+0Ct5bTaXthgEhRmja8QWNkkPGsuIpfdjpkK+cZUWTC0KredVmtD/gdlSl6EG4AMvQAAAABJRU5ErkJggg==");
|
|
710
694
|
|
|
711
695
|
/***/ }),
|
|
712
696
|
/* 20 */
|
|
713
|
-
/***/ (
|
|
697
|
+
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
714
698
|
|
|
715
|
-
var THREE=__webpack_require__(3),toBufferGeometry=__webpack_require__(4).toBufferGeometry,Lines=function(){/**
|
|
699
|
+
var THREE=__webpack_require__(3),toBufferGeometry=(__webpack_require__(4).toBufferGeometry),Lines=function(){/**
|
|
716
700
|
* Create the line segements using geometry and material.
|
|
717
701
|
*
|
|
718
702
|
* @param {THREE.Geomtry} geometryIn - Geometry of lines to be rendered.
|
|
@@ -726,43 +710,56 @@ var THREE=__webpack_require__(3),toBufferGeometry=__webpack_require__(4).toBuffe
|
|
|
726
710
|
* Set the width for the lines.
|
|
727
711
|
*
|
|
728
712
|
* @param {Number} width - Width of the lines.
|
|
729
|
-
*/__webpack_require__(6).ZincObject.call(this),this.isLines=!0,this.createLineSegment=(geometryIn,materialIn,options)=>{if(geometryIn&&materialIn){var geometry=toBufferGeometry(geometryIn,options);options.localMorphColour&&geometry.morphAttributes.color&&(materialIn.onBeforeCompile=__webpack_require__(9).augmentMorphColor());var line=new(__webpack_require__(21).LineSegments)(geometry,materialIn);this.setMesh(line,options.localTimeEnabled,options.localMorphColour)}},this.setWidth=width=>{this.morph&&this.morph.material&&(this.morph.material.linewidth=width,this.morph.material.needsUpdate=!0)}}
|
|
713
|
+
*/(__webpack_require__(6).ZincObject).call(this),this.isLines=!0,this.createLineSegment=(geometryIn,materialIn,options)=>{if(geometryIn&&materialIn){var geometry=toBufferGeometry(geometryIn,options);options.localMorphColour&&geometry.morphAttributes.color&&(materialIn.onBeforeCompile=(__webpack_require__(9).augmentMorphColor)());var line=new((__webpack_require__(21).LineSegments))(geometry,materialIn);this.setMesh(line,options.localTimeEnabled,options.localMorphColour)}},this.setWidth=width=>{this.morph&&this.morph.material&&(this.morph.material.linewidth=width,this.morph.material.needsUpdate=!0)}};/**
|
|
714
|
+
* Provides an object which stores lines.
|
|
715
|
+
* This is created when a valid json file containing lines is read into a {@link Zinc.Scene}
|
|
716
|
+
* object.
|
|
717
|
+
*
|
|
718
|
+
* @class
|
|
719
|
+
* @author Alan Wu
|
|
720
|
+
* @return {Lines}
|
|
721
|
+
*/Lines.prototype=Object.create((__webpack_require__(6).ZincObject).prototype),exports.Lines=Lines;
|
|
730
722
|
|
|
731
723
|
/***/ }),
|
|
732
724
|
/* 21 */
|
|
733
|
-
/***/ (
|
|
725
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
734
726
|
|
|
735
727
|
"use strict";
|
|
736
728
|
__webpack_require__.r(__webpack_exports__);
|
|
737
|
-
/* harmony export
|
|
729
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
730
|
+
/* harmony export */ LineSegments: () => (/* binding */ LineSegments)
|
|
731
|
+
/* harmony export */ });
|
|
738
732
|
/* harmony import */ var _Line_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(22);
|
|
739
733
|
/* harmony import */ var three__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(3);
|
|
740
734
|
/* harmony import */ var three__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(three__WEBPACK_IMPORTED_MODULE_1__);
|
|
741
|
-
var _start=/*@__PURE__*/new three__WEBPACK_IMPORTED_MODULE_1__
|
|
742
|
-
if(null===geometry.index){for(var positionAttribute=geometry.attributes.position,lineDistances=[],i=0,l=positionAttribute.count;i<l;i+=2)_start.fromBufferAttribute(positionAttribute,i),_end.fromBufferAttribute(positionAttribute,i+1),lineDistances[i]=0==i?0:lineDistances[i-1],lineDistances[i+1]=lineDistances[i]+_start.distanceTo(_end);geometry.setAttribute("lineDistance",new three__WEBPACK_IMPORTED_MODULE_1__
|
|
735
|
+
var _start=/*@__PURE__*/new three__WEBPACK_IMPORTED_MODULE_1__.Vector3,_end=/*@__PURE__*/new three__WEBPACK_IMPORTED_MODULE_1__.Vector3;class LineSegments extends _Line_js__WEBPACK_IMPORTED_MODULE_0__.Line{constructor(geometry,material){super(geometry,material),this.type="LineSegments"}computeLineDistances(){var geometry=this.geometry;if(!geometry.isBufferGeometry)geometry.isGeometry&&console.error("THREE.LineSegments.computeLineDistances() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.");else// we assume non-indexed geometry
|
|
736
|
+
if(null===geometry.index){for(var positionAttribute=geometry.attributes.position,lineDistances=[],i=0,l=positionAttribute.count;i<l;i+=2)_start.fromBufferAttribute(positionAttribute,i),_end.fromBufferAttribute(positionAttribute,i+1),lineDistances[i]=0==i?0:lineDistances[i-1],lineDistances[i+1]=lineDistances[i]+_start.distanceTo(_end);geometry.setAttribute("lineDistance",new three__WEBPACK_IMPORTED_MODULE_1__.Float32BufferAttribute(lineDistances,1))}else console.warn("THREE.LineSegments.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.");return this}}LineSegments.prototype.isLineSegments=!0;
|
|
743
737
|
|
|
744
738
|
/***/ }),
|
|
745
739
|
/* 22 */
|
|
746
|
-
/***/ (
|
|
740
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
747
741
|
|
|
748
742
|
"use strict";
|
|
749
743
|
__webpack_require__.r(__webpack_exports__);
|
|
750
|
-
/* harmony export
|
|
744
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
745
|
+
/* harmony export */ Line: () => (/* binding */ Line)
|
|
746
|
+
/* harmony export */ });
|
|
751
747
|
/* harmony import */ var three__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(3);
|
|
752
748
|
/* harmony import */ var three__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(three__WEBPACK_IMPORTED_MODULE_0__);
|
|
753
|
-
var _start=/*@__PURE__*/new three__WEBPACK_IMPORTED_MODULE_0__
|
|
754
|
-
if(null===geometry.index){for(var positionAttribute=geometry.attributes.position,lineDistances=[0],i=1,l=positionAttribute.count;i<l;i++)_start.fromBufferAttribute(positionAttribute,i-1),_end.fromBufferAttribute(positionAttribute,i),lineDistances[i]=lineDistances[i-1],lineDistances[i]+=_start.distanceTo(_end);geometry.setAttribute("lineDistance",new three__WEBPACK_IMPORTED_MODULE_0__
|
|
749
|
+
var _start=/*@__PURE__*/new three__WEBPACK_IMPORTED_MODULE_0__.Vector3,_end=/*@__PURE__*/new three__WEBPACK_IMPORTED_MODULE_0__.Vector3,_inverseMatrix=/*@__PURE__*/new three__WEBPACK_IMPORTED_MODULE_0__.Matrix4,_ray=/*@__PURE__*/new three__WEBPACK_IMPORTED_MODULE_0__.Ray,_sphere=/*@__PURE__*/new three__WEBPACK_IMPORTED_MODULE_0__.Sphere,_morphA=/*@__PURE__*/new three__WEBPACK_IMPORTED_MODULE_0__.Vector3,_morphB=/*@__PURE__*/new three__WEBPACK_IMPORTED_MODULE_0__.Vector3,_tempA=/*@__PURE__*/new three__WEBPACK_IMPORTED_MODULE_0__.Vector3,_tempB=/*@__PURE__*/new three__WEBPACK_IMPORTED_MODULE_0__.Vector3;class Line extends three__WEBPACK_IMPORTED_MODULE_0__.Object3D{constructor(){var geometry=0<arguments.length&&arguments[0]!==void 0?arguments[0]:new three__WEBPACK_IMPORTED_MODULE_0__.BufferGeometry,material=1<arguments.length&&arguments[1]!==void 0?arguments[1]:new three__WEBPACK_IMPORTED_MODULE_0__.LineBasicMaterial;super(),this.type="Line",this.geometry=geometry,this.material=material,this.updateMorphTargets()}copy(source){return super.copy(source),this.material=source.material,this.geometry=source.geometry,this}computeLineDistances(){var geometry=this.geometry;if(!geometry.isBufferGeometry)geometry.isGeometry&&console.error("THREE.Line.computeLineDistances() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.");else// we assume non-indexed geometry
|
|
750
|
+
if(null===geometry.index){for(var positionAttribute=geometry.attributes.position,lineDistances=[0],i=1,l=positionAttribute.count;i<l;i++)_start.fromBufferAttribute(positionAttribute,i-1),_end.fromBufferAttribute(positionAttribute,i),lineDistances[i]=lineDistances[i-1],lineDistances[i]+=_start.distanceTo(_end);geometry.setAttribute("lineDistance",new three__WEBPACK_IMPORTED_MODULE_0__.Float32BufferAttribute(lineDistances,1))}else console.warn("THREE.Line.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.");return this}raycast(raycaster,intersects){var geometry=this.geometry,matrixWorld=this.matrixWorld,threshold=raycaster.params.Line.threshold,drawRange=geometry.drawRange,morphPosition=geometry.morphAttributes.position;// Checking boundingSphere distance to ray
|
|
751
|
+
if(null===geometry.boundingSphere&&geometry.computeBoundingSphere(),_sphere.copy(geometry.boundingSphere),_sphere.applyMatrix4(matrixWorld),_sphere.radius+=threshold,!1!==raycaster.ray.intersectsSphere(_sphere)){_inverseMatrix.copy(matrixWorld).invert(),_ray.copy(raycaster.ray).applyMatrix4(_inverseMatrix);var localThreshold=threshold/((this.scale.x+this.scale.y+this.scale.z)/3),localThresholdSq=localThreshold*localThreshold,vStart=new three__WEBPACK_IMPORTED_MODULE_0__.Vector3,vEnd=new three__WEBPACK_IMPORTED_MODULE_0__.Vector3,interSegment=new three__WEBPACK_IMPORTED_MODULE_0__.Vector3,interRay=new three__WEBPACK_IMPORTED_MODULE_0__.Vector3,step=this.isLineSegments?2:1;if(geometry.isBufferGeometry){var index=geometry.index,attributes=geometry.attributes,positionAttribute=attributes.position;if(null!==index)for(var start=Math.max(0,drawRange.start),end=Math.min(index.count,drawRange.start+drawRange.count),i=start;i<end-1;i+=step){var a=index.getX(i),b=index.getX(i+1);calculatePosition(vStart,vEnd,this,positionAttribute,morphPosition,a,b);var distSq=_ray.distanceSqToSegment(vStart,vEnd,interRay,interSegment);if(!(distSq>localThresholdSq)){interRay.applyMatrix4(this.matrixWorld);//Move back to world space for distance calculation
|
|
755
752
|
var distance=raycaster.ray.origin.distanceTo(interRay);distance<raycaster.near||distance>raycaster.far||intersects.push({distance:distance,// What do we want? intersection point on the ray or on the segment??
|
|
756
753
|
// point: raycaster.ray.at( distance ),
|
|
757
754
|
point:interSegment.clone().applyMatrix4(this.matrixWorld),index:i,face:null,faceIndex:null,object:this})}}else for(var _start2=Math.max(0,drawRange.start),_end2=Math.min(positionAttribute.count,drawRange.start+drawRange.count),_i=_start2;_i<_end2-1;_i+=step){calculatePosition(vStart,vEnd,this,positionAttribute,morphPosition,_i,_i+1);var _distSq=_ray.distanceSqToSegment(vStart,vEnd,interRay,interSegment);if(!(_distSq>localThresholdSq)){interRay.applyMatrix4(this.matrixWorld);//Move back to world space for distance calculation
|
|
758
755
|
var _distance=raycaster.ray.origin.distanceTo(interRay);_distance<raycaster.near||_distance>raycaster.far||intersects.push({distance:_distance,// What do we want? intersection point on the ray or on the segment??
|
|
759
756
|
// point: raycaster.ray.at( distance ),
|
|
760
757
|
point:interSegment.clone().applyMatrix4(this.matrixWorld),index:_i,face:null,faceIndex:null,object:this})}}}else geometry.isGeometry&&console.error("THREE.Line.raycast() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.")}//
|
|
761
|
-
}updateMorphTargets(){var geometry=this.geometry;if(geometry.isBufferGeometry){var morphAttributes=geometry.morphAttributes,keys=Object.keys(morphAttributes);if(0<keys.length){var morphAttribute=morphAttributes[keys[0]];if(morphAttribute!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(var name,m=0,ml=morphAttribute.length;m<ml;m++)name=morphAttribute[m].name||m+"",this.morphTargetInfluences.push(0),this.morphTargetDictionary[name]=m}}}else{var morphTargets=geometry.morphTargets;morphTargets!==void 0&&0<morphTargets.length&&console.error("THREE.Line.updateMorphTargets() does not support THREE.Geometry. Use THREE.BufferGeometry instead.")}}}function calculatePosition(vStart,vEnd,object,position,morphPosition,a,b){vStart.fromBufferAttribute(position,a),vEnd.fromBufferAttribute(position,b);var morphInfluences=object.morphTargetInfluences;if(object.material.morphTargets&&morphPosition&&morphInfluences){_morphA.set(0,0,0),_morphB.set(0,0,0);for(var i=0,il=morphPosition.length;i<il;i++){var influence=morphInfluences[i],morphAttribute=morphPosition[i];0
|
|
758
|
+
}updateMorphTargets(){var geometry=this.geometry;if(geometry.isBufferGeometry){var morphAttributes=geometry.morphAttributes,keys=Object.keys(morphAttributes);if(0<keys.length){var morphAttribute=morphAttributes[keys[0]];if(morphAttribute!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(var name,m=0,ml=morphAttribute.length;m<ml;m++)name=morphAttribute[m].name||m+"",this.morphTargetInfluences.push(0),this.morphTargetDictionary[name]=m}}}else{var morphTargets=geometry.morphTargets;morphTargets!==void 0&&0<morphTargets.length&&console.error("THREE.Line.updateMorphTargets() does not support THREE.Geometry. Use THREE.BufferGeometry instead.")}}}function calculatePosition(vStart,vEnd,object,position,morphPosition,a,b){vStart.fromBufferAttribute(position,a),vEnd.fromBufferAttribute(position,b);var morphInfluences=object.morphTargetInfluences;if(object.material.morphTargets&&morphPosition&&morphInfluences){_morphA.set(0,0,0),_morphB.set(0,0,0);for(var i=0,il=morphPosition.length;i<il;i++){var influence=morphInfluences[i],morphAttribute=morphPosition[i];0!==influence&&(_tempA.fromBufferAttribute(morphAttribute,a),_tempB.fromBufferAttribute(morphAttribute,b),_morphA.addScaledVector(_tempA.sub(vStart),influence),_morphB.addScaledVector(_tempB.sub(vEnd),influence))}vStart.add(_morphA),vEnd.add(_morphB)}}Line.prototype.isLine=!0;
|
|
762
759
|
|
|
763
760
|
/***/ }),
|
|
764
761
|
/* 23 */
|
|
765
|
-
/***/ (
|
|
762
|
+
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
766
763
|
|
|
767
764
|
function asyncGeneratorStep(gen,resolve,reject,_next,_throw,key,arg){try{var info=gen[key](arg),value=info.value}catch(error){return void reject(error)}info.done?resolve(value):Promise.resolve(value).then(_next,_throw)}function _asyncToGenerator(fn){return function(){var self=this,args=arguments;return new Promise(function(resolve,reject){function _next(value){asyncGeneratorStep(gen,resolve,reject,_next,_throw,"next",value)}function _throw(err){asyncGeneratorStep(gen,resolve,reject,_next,_throw,"throw",err)}var gen=fn.apply(self,args);_next(void 0)})}}var THREE=__webpack_require__(3),TextureArray=function(){/**
|
|
768
765
|
* Read images from an array containg src locations.
|
|
@@ -782,18 +779,18 @@ function asyncGeneratorStep(gen,resolve,reject,_next,_throw,key,arg){try{var inf
|
|
|
782
779
|
* @param {Object} options.uniforms - Containing the data to be passed into the shaders.
|
|
783
780
|
* @param {String} options.glslVersion - Version of glsl used for compile this shader.
|
|
784
781
|
*
|
|
785
|
-
*/__webpack_require__(24).Texture.call(this),this.isTextureArray=!0,this.loadFromImages=/*#__PURE__*/function(){var _ref=_asyncToGenerator(function*(srcArrays){var w=1,h=1,d=0;if(srcArrays&&srcArrays.length){this.isLoading=!0;var image=new Image;image.crossOrigin="Anonymous";for(var data,canvas=document.createElement("canvas"),length=0,dataStacks=Array(srcArrays.length),i=0;i<srcArrays.length;i++)data=yield this.imageToUint8Array(image,srcArrays[i],canvas),data&&data.array&&(w=data.width,h=data.height,dataStacks[d]=data.array,length+=dataStacks[d].length,d++);var fullArray=new Uint8Array(length);length=0,dataStacks.forEach(data=>{fullArray.set(data,length),length+=data.length}),this.impl=new THREE.DataTexture2DArray(fullArray,w,h,d),this.size={width:w,height:h,depth:d},this.isLoading=!1}});return function(){return _ref.apply(this,arguments)}}(),this.getMaterial=function(options){if(this.impl){var material;if(!options)material=new THREE.MeshBasicMaterial({color:new THREE.Color(1,1,1),transparent:!1,opacity:1,map:this.impl,side:THREE.DoubleSide});else if(options.vs&&options.fs){var transparent=!0;options.transparent&&(transparent=options.transparent);var side=THREE.FrontSide;options.side&&(side=options.side),material=new THREE.ShaderMaterial({transparent,uniforms:options.uniforms,vertexShader:options.vs,fragmentShader:options.fs,side}),options.glslVersion&&(material.glslVersion=options.glslVersion)}if(material)return material.needsUpdate=!0,material}}};/**
|
|
782
|
+
*/(__webpack_require__(24).Texture).call(this),this.isTextureArray=!0,this.loadFromImages=/*#__PURE__*/function(){var _ref=_asyncToGenerator(function*(srcArrays){var w=1,h=1,d=0;if(srcArrays&&srcArrays.length){this.isLoading=!0;var image=new Image;image.crossOrigin="Anonymous";for(var data,canvas=document.createElement("canvas"),length=0,dataStacks=Array(srcArrays.length),i=0;i<srcArrays.length;i++)data=yield this.imageToUint8Array(image,srcArrays[i],canvas),data&&data.array&&(w=data.width,h=data.height,dataStacks[d]=data.array,length+=dataStacks[d].length,d++);var fullArray=new Uint8Array(length);length=0,dataStacks.forEach(data=>{fullArray.set(data,length),length+=data.length}),this.impl=new THREE.DataTexture2DArray(fullArray,w,h,d),this.size={width:w,height:h,depth:d},this.isLoading=!1}});return function(){return _ref.apply(this,arguments)}}(),this.getMaterial=function(options){if(this.impl){var material;if(!options)material=new THREE.MeshBasicMaterial({color:new THREE.Color(1,1,1),transparent:!1,opacity:1,map:this.impl,side:THREE.DoubleSide});else if(options.vs&&options.fs){var transparent=!0;options.transparent&&(transparent=options.transparent);var side=THREE.FrontSide;options.side&&(side=options.side),material=new THREE.ShaderMaterial({transparent,uniforms:options.uniforms,vertexShader:options.vs,fragmentShader:options.fs,side}),options.glslVersion&&(material.glslVersion=options.glslVersion)}if(material)return material.needsUpdate=!0,material}}};/**
|
|
786
783
|
* Texture array object for holding array of images into
|
|
787
784
|
* texures unit that can be used by other texture primitives.
|
|
788
785
|
*
|
|
789
786
|
* @class
|
|
790
787
|
* @author Alan Wu
|
|
791
788
|
* @return {TextureArray}
|
|
792
|
-
*/TextureArray.prototype=Object.create(__webpack_require__(24).Texture.prototype),exports.TextureArray=TextureArray;
|
|
789
|
+
*/TextureArray.prototype=Object.create((__webpack_require__(24).Texture).prototype),exports.TextureArray=TextureArray;
|
|
793
790
|
|
|
794
791
|
/***/ }),
|
|
795
792
|
/* 24 */
|
|
796
|
-
/***/ (
|
|
793
|
+
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
797
794
|
|
|
798
795
|
function asyncGeneratorStep(gen,resolve,reject,_next,_throw,key,arg){try{var info=gen[key](arg),value=info.value}catch(error){return void reject(error)}info.done?resolve(value):Promise.resolve(value).then(_next,_throw)}function _asyncToGenerator(fn){return function(){var self=this,args=arguments;return new Promise(function(resolve,reject){function _next(value){asyncGeneratorStep(gen,resolve,reject,_next,_throw,"next",value)}function _throw(err){asyncGeneratorStep(gen,resolve,reject,_next,_throw,"throw",err)}var gen=fn.apply(self,args);_next(void 0)})}}var THREE=__webpack_require__(3),Texture=function(){this.isTexture=!0,this.impl=void 0,this.isLoading=!1,this.size={width:1,height:1,depth:0}};/**
|
|
799
796
|
* Base texture object for importing images and turning them into
|
|
@@ -837,9 +834,9 @@ function asyncGeneratorStep(gen,resolve,reject,_next,_throw,key,arg){try{var inf
|
|
|
837
834
|
|
|
838
835
|
/***/ }),
|
|
839
836
|
/* 25 */
|
|
840
|
-
/***/ (
|
|
837
|
+
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
841
838
|
|
|
842
|
-
var THREE=__webpack_require__(3),shader=__webpack_require__(26),TextureSlides=function(textureIn){__webpack_require__(27).TexturePrimitive.call(this,textureIn),this.isTextureSlides=!0;var textureSettings=[],idTextureMap={};this.morph=new THREE.Group,this.morph.userData=this;/**
|
|
839
|
+
var THREE=__webpack_require__(3),shader=__webpack_require__(26),TextureSlides=function(textureIn){(__webpack_require__(27).TexturePrimitive).call(this,textureIn),this.isTextureSlides=!0;var textureSettings=[],idTextureMap={};this.morph=new THREE.Group,this.morph.userData=this;/**
|
|
843
840
|
@typedef SLIDE_SETTINGS
|
|
844
841
|
@type {Set}
|
|
845
842
|
@property {String} direction - the value must be x, y or z, specify the
|
|
@@ -853,13 +850,13 @@ var THREE=__webpack_require__(3),shader=__webpack_require__(26),TextureSlides=fu
|
|
|
853
850
|
* The slides themselves are {THREE.PlanGeometry} objects.
|
|
854
851
|
*
|
|
855
852
|
* @param {SLIDE_SETTINGS} slideSettings - An array to each slide settings.
|
|
856
|
-
*/
|
|
853
|
+
*/this.createSlides=slideSettings=>{slideSettings.forEach(slide=>this.createSlide(slide))};/**
|
|
857
854
|
* Set the value of the uniforms for a specific mesh in this
|
|
858
855
|
* texture slide object.
|
|
859
856
|
*
|
|
860
857
|
* @param {THREE.Mesh} mesh - Mesh to be modified
|
|
861
858
|
* @param {SLIDE_SETTINGS} slideSettings - Slide settings.
|
|
862
|
-
*/
|
|
859
|
+
*/var setUniformSlideSettingsOfMesh=(mesh,settings)=>{var material=mesh.material,uniforms=material.uniforms;switch(settings.direction){case"x":uniforms.direction.value=1,uniforms.slide.value.set(settings.value,0,0);break;case"y":uniforms.direction.value=2,uniforms.slide.value.set(0,settings.value,0);break;case"z":uniforms.direction.value=3,uniforms.slide.value.set(0,0,settings.value);break;default:}material.needsUpdate=!0,this.boundingBoxUpdateRequired=!0};/**
|
|
863
860
|
* Modify the mesh based on a setting
|
|
864
861
|
*
|
|
865
862
|
* @param {SLIDE_SETTINGS} settings - s.
|
|
@@ -894,29 +891,39 @@ var THREE=__webpack_require__(3),shader=__webpack_require__(26),TextureSlides=fu
|
|
|
894
891
|
* transformation to calculate the position of the box.
|
|
895
892
|
*
|
|
896
893
|
* @return {THREE.Box3}.
|
|
897
|
-
*/this.
|
|
894
|
+
*/this.modifySlideSettings=settings=>{settings&&settings.id&&settings.id in idTextureMap&&idTextureMap[settings.id]&&setUniformSlideSettingsOfMesh(idTextureMap[settings.id],settings)},this.createSlide=settings=>{if(this.texture&&this.texture.isTextureArray&&this.texture.isReady()&&settings&&settings.direction&&void 0!==settings.value){var geometry=new THREE.PlaneGeometry(1,1);geometry.translate(.5,.5,0);var uniforms=shader.getUniforms();uniforms.diffuse.value=this.texture.impl,uniforms.depth.value=this.texture.size.depth;var options={fs:shader.fs,vs:shader.vs,uniforms:uniforms,glslVersion:shader.glslVersion,side:THREE.DoubleSide,transparent:!1},material=this.texture.getMaterial(options);material.needsUpdate=!0;var mesh=new THREE.Mesh(geometry,material),slideSettings={value:settings.value,direction:settings.direction,id:mesh.id};return textureSettings.push(slideSettings),setUniformSlideSettingsOfMesh(mesh,slideSettings),idTextureMap[mesh.id]=mesh,this.morph.add(mesh),slideSettings}},this.getTextureSettings=()=>[...textureSettings],this.getSlides=()=>this.morph?[...this.morph.children]:[],this.removeSlide=slide=>{slide&&this.removeSlideWithId(slide.id)},this.removeSlideWithId=id=>{if(this.morph&&id in idTextureMap&&idTextureMap[id]){if(this.morph.getObjectById(id)){var slide=idTextureMap[id];this.morph.remove(slide),slide.clear(),slide.geometry&&slide.geometry.dispose(),slide.material&&slide.material.dispose(),this.boundingBoxUpdateRequired=!0}var index=textureSettings.findIndex(item=>item.id===id);-1<index&&textureSettings.splice(index)}},this.dispose=()=>{this.morph.children.forEach(slide=>{slide.geometry&&slide.geometry.dispose(),slide.material&&slide.material.dispose()}),(__webpack_require__(27).TexturePrimitive).prototype.dispose.call(this),this.boundingBoxUpdateRequired=!0},this.getBoundingBox=function(){return this.morph&&this.morph.children&&this.morph.visible&&this.boundingBoxUpdateRequired&&(this.cachedBoundingBox.makeEmpty(),this.morph.children.forEach(slide=>{var value=slide.material.uniforms.slide.value;this.cachedBoundingBox.expandByPoint(value)}),this.morph.updateWorldMatrix(),this.cachedBoundingBox.applyMatrix4(this.morph.matrixWorld),this.boundingBoxUpdateRequired=!1),this.cachedBoundingBox}};/**
|
|
895
|
+
* Provides a class which create a texture stacks in a block
|
|
896
|
+
* with shaders allowing slices of texture to be displayed.
|
|
897
|
+
*
|
|
898
|
+
* @param {TextureArray} textureIn - An object of texture array
|
|
899
|
+
* holding texture information.
|
|
900
|
+
*
|
|
901
|
+
* @class
|
|
902
|
+
* @author Alan Wu
|
|
903
|
+
* @return {TextureSlides}
|
|
904
|
+
*/TextureSlides.prototype=Object.create((__webpack_require__(27).TexturePrimitive).prototype),exports.TextureSlides=TextureSlides;
|
|
898
905
|
|
|
899
906
|
/***/ }),
|
|
900
907
|
/* 26 */
|
|
901
|
-
/***/ (
|
|
908
|
+
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
902
909
|
|
|
903
910
|
var THREE=__webpack_require__(3),glslVersion=THREE.GLSL3,fs="\nprecision highp float;\nprecision highp int;\nprecision highp sampler2DArray;\n\nuniform sampler2DArray diffuse;\nin vec3 vUw;\n\nout vec4 outColor;\n\nvoid main() {\n\n vec4 color = texture( diffuse, vUw );\n\n // lighten a bit\n outColor = vec4( color.rgb + .2, 1.0 );\n\n}\n",vs="\nout vec3 vUw;\nuniform float depth;\nuniform vec3 slide;\nuniform int direction;\n\nvoid main() {\n\n vec3 slidePos = position.xyz;\n\n if (direction == 1)\n slidePos = vec3(slide.x, position.x, position.y);\n if (direction == 2)\n slidePos = vec3(position.x, slide.y, position.y);\n if (direction == 3)\n slidePos = vec3(position.x, position.y, slide.z);\n\n gl_Position = projectionMatrix * modelViewMatrix * vec4( slidePos, 1.0 );\n\n vUw.xyz = vec3(slidePos.x, slidePos.y, slidePos.z * depth);\n\n}\n",getUniforms=function(){return{diffuse:{value:void 0},depth:{value:1},slide:{value:new THREE.Vector3(0,0,1)},direction:{value:1}}};exports.fs=fs,exports.vs=vs,exports.glslVersion=glslVersion,exports.getUniforms=getUniforms;
|
|
904
911
|
|
|
905
912
|
/***/ }),
|
|
906
913
|
/* 27 */
|
|
907
|
-
/***/ (
|
|
914
|
+
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
908
915
|
|
|
909
|
-
var THREE=__webpack_require__(3),TexturePrimitive=function(textureIn){__webpack_require__(6).ZincObject.call(this),this.isTexturePrimitive=!0,this.texture=textureIn};/**
|
|
916
|
+
var THREE=__webpack_require__(3),TexturePrimitive=function(textureIn){(__webpack_require__(6).ZincObject).call(this),this.isTexturePrimitive=!0,this.texture=textureIn};/**
|
|
910
917
|
* Provides a base class object which stores textures and rendering object.
|
|
911
918
|
*
|
|
912
919
|
* @class
|
|
913
920
|
* @author Alan Wu
|
|
914
921
|
* @return {TexturePrimitive}
|
|
915
|
-
*/TexturePrimitive.prototype=Object.create(__webpack_require__(6).ZincObject.prototype),exports.TexturePrimitive=TexturePrimitive;
|
|
922
|
+
*/TexturePrimitive.prototype=Object.create((__webpack_require__(6).ZincObject).prototype),exports.TexturePrimitive=TexturePrimitive;
|
|
916
923
|
|
|
917
924
|
/***/ }),
|
|
918
925
|
/* 28 */
|
|
919
|
-
/***/ (
|
|
926
|
+
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
920
927
|
|
|
921
928
|
var THREE=__webpack_require__(3),ResizeSensor=__webpack_require__(29);/**
|
|
922
929
|
* Create a Zinc 3D renderer in the container provided.
|
|
@@ -929,8 +936,16 @@ var THREE=__webpack_require__(3),ResizeSensor=__webpack_require__(29);/**
|
|
|
929
936
|
* @class
|
|
930
937
|
* @author Alan Wu
|
|
931
938
|
* @return {Renderer}
|
|
932
|
-
*/exports.Renderer=function(containerIn){var container=containerIn,renderer=void 0,currentScene=void 0,clock=new THREE.Clock(!1)
|
|
933
|
-
|
|
939
|
+
*/exports.Renderer=function(containerIn){var container=containerIn,renderer=void 0,currentScene=void 0,clock=new THREE.Clock(!1);//myGezincGeometriestains a tuple of the threejs mesh, timeEnabled, morphColour flag, unique id and morph
|
|
940
|
+
this.playAnimation=!0;/* default animation update rate, rate is 1000 and duration
|
|
941
|
+
is default to 6000, 6s to finish a full animation */var playRate=1e3,preRenderCallbackFunctions=[],preRenderCallbackFunctions_id=0,postRenderCallbackFunctions=[],postRenderCallbackFunctions_id=0,animated_id=void 0,cameraOrtho=void 0,sceneOrtho=void 0,logoSprite=void 0,sceneMap=[],additionalActiveScenes=[],scenesGroup=new THREE.Group,canvas=void 0,sensor=void 0,isRendering=!1,currentSize=[0,0],currentOffset=[0,0];this.getDrawingWidth=()=>{if(container)return container.clientWidth;return canvas?"undefined"==typeof canvas.clientWidth?Math.round(canvas.width):Math.round(canvas.clientWidth):0},this.getDrawingHeight=()=>{if(container)return container.clientHeight;return canvas?"undefined"==typeof canvas.clientHeight?Math.round(canvas.height):Math.round(canvas.clientHeight):0},this.onWindowResize=()=>{currentScene.onWindowResize();var width=this.getDrawingWidth(),height=this.getDrawingHeight();if(renderer!=null){var localRect;container?(localRect=container.getBoundingClientRect(),renderer.setSize(width,height)):canvas&&("undefined"==typeof canvas.getBoundingClientRect?renderer.setSize(width,height,!1):(localRect=canvas.getBoundingClientRect(),canvas.width=width,canvas.height=height,renderer.setSize(width,height,!1))),localRect&&(currentOffset[0]=localRect.left,currentOffset[1]=localRect.top);var target=new THREE.Vector2;renderer.getSize(target),currentSize[0]=target.x,currentSize[1]=target.y}},this.initialiseVisualisation=parameters=>{if(parameters=parameters||{},void 0===parameters.antialias){var onMobile=!1;try{/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)&&(onMobile=!0)}catch(err){onMobile=!1}parameters.antialias=!onMobile}parameters.canvas&&(container=void 0,canvas=parameters.canvas),renderer=new THREE.WebGLRenderer(parameters),void 0!==container&&container.appendChild(renderer.domElement),renderer.setClearColor(16777215,1),canvas&&canvas.style&&(canvas.style.height="100%",canvas.style.width="100%"),renderer.autoClear=!1;var scene=this.createScene("default");this.setCurrentScene(scene)},this.getCurrentScene=()=>currentScene,this.setCurrentScene=sceneIn=>{if(sceneIn){this.removeActiveScene(sceneIn);var oldScene=currentScene;currentScene=sceneIn,oldScene&&oldScene.setInteractiveControlEnable(!1),currentScene.setInteractiveControlEnable(!0),currentScene.setAdditionalScenesGroup(scenesGroup),this.onWindowResize()}},this.getSceneByName=name=>sceneMap[name],this.createScene=name=>{if(null==sceneMap[name]){var new_scene;return new_scene=canvas?new((__webpack_require__(30).Scene))(canvas,renderer):new((__webpack_require__(30).Scene))(container,renderer),sceneMap[name]=new_scene,new_scene.sceneName=name,new_scene}};/**
|
|
942
|
+
* Reset the viewport of the current scene to its original state.
|
|
943
|
+
*/this.resetView=()=>{currentScene.resetView()},this.viewAll=()=>{if(currentScene){var boundingBox=currentScene.getBoundingBox();if(boundingBox){for(var boundingBox2,i=0;i<additionalActiveScenes.length;i++)boundingBox2=additionalActiveScenes[i].getBoundingBox(),boundingBox2&&boundingBox.union(boundingBox2);currentScene.viewAllWithBoundingBox(boundingBox)}}},this.loadModelsURL=(urls,colours,opacities,timeEnabled,morphColour,finishCallback)=>{currentScene.loadModelsURL(urls,colours,opacities,timeEnabled,morphColour,finishCallback)};/**
|
|
944
|
+
* Load the viewport from an external location provided by the url. This should be
|
|
945
|
+
* called from {@link Zinc.Scene};
|
|
946
|
+
* @param {String} URL - address to the file containing viewport information.
|
|
947
|
+
* @deprecated
|
|
948
|
+
*/this.loadViewURL=url=>{currentScene.loadViewURL(url)},this.loadFromViewURL=(jsonFilePrefix,finishCallback)=>{currentScene.loadFromViewURL(jsonFilePrefix,finishCallback)},this.updateDirectionalLight=()=>{currentScene.updateDirectionalLight()};var runAnimation=()=>{isRendering?(animated_id=requestAnimationFrame(runAnimation),this.render()):(cancelAnimationFrame(animated_id),animated_id=void 0)};/**
|
|
934
949
|
* Stop the animation and renderer to get into the render loop.
|
|
935
950
|
*/this.stopAnimate=()=>{isRendering&&(clock.stop(),isRendering=!1)},this.animate=()=>{isRendering||(clock.start(),isRendering=!0,runAnimation())};Date.now();/**
|
|
936
951
|
* Add a callback function which will be called everytime before the renderer renders its scene.
|
|
@@ -969,15 +984,16 @@ var THREE=__webpack_require__(3),ResizeSensor=__webpack_require__(29);/**
|
|
|
969
984
|
|
|
970
985
|
/***/ }),
|
|
971
986
|
/* 29 */
|
|
972
|
-
/***/ (
|
|
987
|
+
/***/ ((module) => {
|
|
973
988
|
|
|
989
|
+
"use strict";
|
|
974
990
|
module.exports = require("css-element-queries/src/ResizeSensor");
|
|
975
991
|
|
|
976
992
|
/***/ }),
|
|
977
993
|
/* 30 */
|
|
978
|
-
/***/ (
|
|
994
|
+
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
979
995
|
|
|
980
|
-
var THREE=__webpack_require__(3),SceneLoader=__webpack_require__(31).SceneLoader,SceneExporter=__webpack_require__(37).SceneExporter,Viewport=__webpack_require__(39).Viewport,uniqueiId=0,getUniqueId=function(){return"sc"+uniqueiId++},defaultMetadata=function(){return{Duration:"6 secs",OriginalDuration:"-",TimeStamps:{}}},defaultDuration=6e3;/**
|
|
996
|
+
var THREE=__webpack_require__(3),SceneLoader=(__webpack_require__(31).SceneLoader),SceneExporter=(__webpack_require__(37).SceneExporter),Viewport=(__webpack_require__(39).Viewport),uniqueiId=0,getUniqueId=function(){return"sc"+uniqueiId++},defaultMetadata=function(){return{Duration:"6 secs",OriginalDuration:"-",TimeStamps:{}}},defaultDuration=6e3;/**
|
|
981
997
|
* A Scene contains {@link Region},and
|
|
982
998
|
* {@link CameraControls} which controls the viewport and additional features.
|
|
983
999
|
* It is the main object used for controlling what is and what is not displayed
|
|
@@ -987,10 +1003,18 @@ var THREE=__webpack_require__(3),SceneLoader=__webpack_require__(31).SceneLoader
|
|
|
987
1003
|
* @param {Object} containerIn - Container to create the renderer on.
|
|
988
1004
|
* @author Alan Wu
|
|
989
1005
|
* @return {Scene}
|
|
990
|
-
*/exports.Scene=function(containerIn,rendererIn){var container=containerIn,videoHandler=void 0,sceneLoader=new SceneLoader(this),minimap=void 0,scene=new THREE.Scene,rootRegion=new(__webpack_require__(40).Region);scene.add(rootRegion.getGroup()),this.directionalLight=void 0,this.ambient=void 0,this.camera=void 0;var duration=6e3,zincCameraControls=void 0;this.sceneName=void 0;var stereoEffectFlag=!1,stereoEffect=void 0;this.autoClearFlag=!0,this.displayMarkers=!1,this.displayMinimap=!1,this.minimapScissor={x_offset:16,y_offset:16,width:128,height:128,align:"top-left",updateRequired:!0};var scissor={x:0,y:0},metadata=defaultMetadata(),_markerTarget=new THREE.Vector2,pickableObjectsList=[];this.forcePickableObjectsUpdate=!1,this.uuid=getUniqueId();var getDrawingWidth=()=>container?"undefined"==typeof container.clientWidth?container.width:container.clientWidth:0,getDrawingHeight=()=>container?"undefined"==typeof container.clientHeight?container.height:container.clientHeight:0
|
|
991
|
-
|
|
1006
|
+
*/exports.Scene=function(containerIn,rendererIn){var container=containerIn,videoHandler=void 0,sceneLoader=new SceneLoader(this),minimap=void 0,scene=new THREE.Scene,rootRegion=new((__webpack_require__(40).Region));scene.add(rootRegion.getGroup()),this.directionalLight=void 0,this.ambient=void 0,this.camera=void 0;var duration=6e3,zincCameraControls=void 0;this.sceneName=void 0;var stereoEffectFlag=!1,stereoEffect=void 0;this.autoClearFlag=!0,this.displayMarkers=!1,this.displayMinimap=!1,this.minimapScissor={x_offset:16,y_offset:16,width:128,height:128,align:"top-left",updateRequired:!0};var scissor={x:0,y:0},metadata=defaultMetadata(),_markerTarget=new THREE.Vector2,pickableObjectsList=[];this.forcePickableObjectsUpdate=!1,this.uuid=getUniqueId();var getDrawingWidth=()=>container?"undefined"==typeof container.clientWidth?container.width:container.clientWidth:0,getDrawingHeight=()=>container?"undefined"==typeof container.clientHeight?container.height:container.clientHeight:0;/**
|
|
1007
|
+
* This function returns a three component array, which contains
|
|
1008
|
+
* [totalsize, totalLoaded and errorDownload] of all the downloads happening
|
|
1009
|
+
* in this scene.
|
|
1010
|
+
* @returns {Array}
|
|
1011
|
+
*/this.getDownloadProgress=()=>sceneLoader.getDownloadProgress(),this.onWindowResize=()=>{this.camera.aspect=getDrawingWidth()/getDrawingHeight(),this.camera.updateProjectionMatrix(),this.minimapScissor.updateRequired=!0,zincCameraControls.onResize()},this.resetView=()=>{this.onWindowResize(),zincCameraControls.resetView()},this.changeZoomByScrollRateUnit=unit=>{zincCameraControls.changeZoomByScrollRateUnit(unit)};//Setup the camera for this scene, it also initialise the lighting
|
|
1012
|
+
var setupCamera=()=>{this.camera=new THREE.PerspectiveCamera(40,getDrawingWidth()/getDrawingHeight(),0,10),this.ambient=new THREE.AmbientLight(16777215,.2),scene.add(this.ambient),this.directionalLight=new THREE.DirectionalLight(16777215,.8),scene.add(this.directionalLight),zincCameraControls=new((__webpack_require__(39).CameraControls))(this.camera,rendererIn.domElement,rendererIn,this),zincCameraControls.setDirectionalLight(this.directionalLight),zincCameraControls.resetView(),minimap=new((__webpack_require__(41).Minimap))(this)};setupCamera(),this.loadView=settings=>{var viewPort=new Viewport;return viewPort.setFromObject(settings),zincCameraControls.setCurrentCameraSettings(viewPort),!0},this.setupMultipleViews=(defaultView,entries)=>{for(var[name,settings]of Object.entries(entries)){var viewport=new Viewport;viewport.setFromObject(settings),zincCameraControls.addViewport(name,viewport)}zincCameraControls.setDefaultViewport(defaultView)},this.getBoundingBox=()=>rootRegion.getBoundingBox(!0),this.viewAllWithBoundingBox=boundingBox=>{if(boundingBox){// enlarge radius to keep image within edge of window
|
|
992
1013
|
var radius=boundingBox.min.distanceTo(boundingBox.max)/2,centreX=(boundingBox.min.x+boundingBox.max.x)/2,centreY=(boundingBox.min.y+boundingBox.max.y)/2,centreZ=(boundingBox.min.z+boundingBox.max.z)/2,viewport=zincCameraControls.getViewportFromCentreAndRadius(centreX,centreY,centreZ,radius,40,radius*4);zincCameraControls.setCurrentCameraSettings(viewport)}},this.viewAll=()=>{var boundingBox=this.getBoundingBox();this.viewAllWithBoundingBox(boundingBox)},this.forEachGeometry=callbackFunction=>{rootRegion.forEachGeometry(callbackFunction,!0)},this.forEachGlyphset=callbackFunction=>{rootRegion.forEachGlyphset(callbackFunction,!0)},this.forEachPointset=callbackFunction=>{rootRegion.forEachPointset(callbackFunction,!0)},this.forEachLine=callbackFunction=>{rootRegion.forEachLine(callbackFunction,!0)},this.findGeometriesWithGroupName=GroupName=>rootRegion.findGeometriesWithGroupName(GroupName,!0),this.findPointsetsWithGroupName=GroupName=>rootRegion.findPointsetsWithGroupName(GroupName,!0),this.findGlyphsetsWithGroupName=GroupName=>rootRegion.findGlyphsetsWithGroupName(GroupName,!0),this.findLinesWithGroupName=GroupName=>rootRegion.findLinesWithGroupName(GroupName,!0),this.findObjectsWithGroupName=GroupName=>rootRegion.findObjectsWithGroupName(GroupName,!0),this.findObjectsWithAnatomicalId=anatomicalId=>rootRegion.findObjectsWithAnatomicalId(anatomicalId,!0),this.getBoundingBoxOfZincObjects=objectsArray=>{for(var box,boundingBox=void 0,i=0;i<objectsArray.length;i++)box=objectsArray[i].getBoundingBox(),box&&(boundingBox?boundingBox.union(box):boundingBox=box);return boundingBox},this.vectorToScreenXY=point=>{point.project(this.camera);var width=getDrawingWidth(),height=getDrawingHeight(),widthHalf=width/2,heightHalf=height/2;return point.x=point.x*widthHalf+widthHalf,point.y=-(point.y*heightHalf)+heightHalf,point},this.getObjectsScreenXY=zincObjects=>{if(zincObjects&&0<zincObjects.length){var boundingBox=this.getBoundingBoxOfZincObjects(zincObjects),center=new THREE.Vector3;return boundingBox.getCenter(center),this.vectorToScreenXY(center)}},this.getNamedObjectsScreenXY=name=>{var zincObjects=this.findObjectsWithGroupName(name);return this.getObjectsScreenXY(zincObjects)},this.addZincObject=zincObject=>{zincObject&&(rootRegion.addZincObject(zincObject),zincCameraControls&&zincCameraControls.calculateMaxAllowedDistance(this))},this.loadGlyphsetURL=(metaurl,glyphurl,groupName,finishCallback)=>{sceneLoader.loadGlyphsetURL(rootRegion,metaurl,glyphurl,groupName,finishCallback)},this.loadPointsetURL=(url,timeEnabled,morphColour,groupName,finishCallback)=>{sceneLoader.loadPointsetURL(rootRegion,url,timeEnabled,morphColour,groupName,finishCallback)},this.loadLinesURL=(url,timeEnabled,morphColour,groupName,finishCallback)=>{sceneLoader.loadLinesURL(rootRegion,url,timeEnabled,morphColour,groupName,finishCallback)},this.loadSTL=(url,groupName,finishCallback)=>{sceneLoader.loadSTL(rootRegion,url,groupName,finishCallback)},this.loadOBJ=(url,groupName,finishCallback)=>{sceneLoader.loadOBJ(rootRegion,url,groupName,finishCallback)},this.loadMetadataURL=(url,finishCallback,allCompletedCallback)=>{sceneLoader.loadMetadataURL(rootRegion,url,finishCallback,allCompletedCallback)},this.loadModelsURL=(urls,colours,opacities,timeEnabled,morphColour,finishCallback)=>{sceneLoader.loadModelsURL(rootRegion.urls,colours,opacities,timeEnabled,morphColour,finishCallback)},this.loadViewURL=url=>{sceneLoader.loadViewURL(url)},this.loadFromViewURL=(jsonFilePrefix,finishCallback)=>{sceneLoader.loadFromViewURL(jsonFilePrefix,finishCallback)},this.loadGLTF=(url,finishCallback,options)=>{sceneLoader.loadGLTF(rootRegion,url,finishCallback,options)},this.updateDirectionalLight=()=>{zincCameraControls.updateDirectionalLight()},this.addObject=object=>{scene.add(object)},this.removeObject=object=>{scene.remove(object)},this.getCurrentTime=()=>{if(videoHandler!=null)return videoHandler.getCurrentTime(duration);var time=rootRegion.getCurrentTime();return-1===time?0:time},this.setMorphsTime=time=>{videoHandler!=null&&videoHandler.setMorphTime(time,duration),rootRegion.setMorphTime(time,!0)},this.isTimeVarying=()=>!!(videoHandler&&videoHandler.video&&!videoHandler.video.error)||rootRegion.isTimeVarying(),this.renderGeometries=(playRate,delta,playAnimation)=>{// Let video dictates the progress if one is present
|
|
993
|
-
var options={camera:zincCameraControls,displayMarkers:this.displayMarkers,markerDepths:[]};if(!videoHandler)0==sceneLoader.toBeDownloaded?(zincCameraControls.update(delta),rootRegion.renderGeometries(playRate,delta,playAnimation,options,!0)):zincCameraControls.update(0);else if(videoHandler.isReadyToPlay()){playAnimation?videoHandler.video.play():videoHandler.video.pause();var currentTime=videoHandler.video.currentTime/videoHandler.getVideoDuration()*duration;0==sceneLoader.toBeDownloaded?(zincCameraControls.setTime(currentTime),zincCameraControls.update(0),rootRegion.setMorphTime(currentTime,!0),rootRegion.renderGeometries(0,0,playAnimation,void 0,!0)):zincCameraControls.update(0)}else myPlayRate=0},this.getThreeJSScene=()=>scene,this.setVideoHandler=videoHandlerIn=>{videoHandler||(videoHandler=videoHandlerIn)},this.setAdditionalScenesGroup=scenesGroup=>{scene.add(scenesGroup)};var getWindowsPosition=(align,x_offset,y_offset,width,height,renderer_width,renderer_height)=>{var x=0,y=0;return y=align.includes("top")?renderer_height-height-y_offset:align.includes("bottom")?y_offset:Math.floor((renderer_height-height)/2),x=align.includes("left")?x_offset:align.includes("right")?renderer_width-x_offset-width:Math.floor((renderer_width-width)/2),{x:x,y:y}},renderMinimap=renderer=>{!0===this.displayMinimap&&(renderer.setScissorTest(!0),renderer.getSize(_markerTarget),this.minimapScissor.updateRequired&&(scissor=getWindowsPosition(this.minimapScissor.align,this.minimapScissor.x_offset,this.minimapScissor.y_offset,this.minimapScissor.width,this.minimapScissor.height,_markerTarget.x,_markerTarget.y),this.minimapScissor.updateRequired=!1),renderer.setScissor(scissor.x,scissor.y,this.minimapScissor.width,this.minimapScissor.height),renderer.setViewport(scissor.x,scissor.y,this.minimapScissor.width,this.minimapScissor.height),minimap.updateCamera(),scene.add(minimap.mask),renderer.render(scene,minimap.camera),scene.remove(minimap.mask),renderer.setScissorTest(!1),renderer.setViewport(0,0,_markerTarget.x,_markerTarget.y))}
|
|
1014
|
+
var options={camera:zincCameraControls,displayMarkers:this.displayMarkers,markerDepths:[]};if(!videoHandler)0==sceneLoader.toBeDownloaded?(zincCameraControls.update(delta),rootRegion.renderGeometries(playRate,delta,playAnimation,options,!0)):zincCameraControls.update(0);else if(videoHandler.isReadyToPlay()){playAnimation?videoHandler.video.play():videoHandler.video.pause();var currentTime=videoHandler.video.currentTime/videoHandler.getVideoDuration()*duration;0==sceneLoader.toBeDownloaded?(zincCameraControls.setTime(currentTime),zincCameraControls.update(0),rootRegion.setMorphTime(currentTime,!0),rootRegion.renderGeometries(0,0,playAnimation,void 0,!0)):zincCameraControls.update(0)}else myPlayRate=0},this.getThreeJSScene=()=>scene,this.setVideoHandler=videoHandlerIn=>{videoHandler||(videoHandler=videoHandlerIn)},this.setAdditionalScenesGroup=scenesGroup=>{scene.add(scenesGroup)};var getWindowsPosition=(align,x_offset,y_offset,width,height,renderer_width,renderer_height)=>{var x=0,y=0;return y=align.includes("top")?renderer_height-height-y_offset:align.includes("bottom")?y_offset:Math.floor((renderer_height-height)/2),x=align.includes("left")?x_offset:align.includes("right")?renderer_width-x_offset-width:Math.floor((renderer_width-width)/2),{x:x,y:y}},renderMinimap=renderer=>{!0===this.displayMinimap&&(renderer.setScissorTest(!0),renderer.getSize(_markerTarget),this.minimapScissor.updateRequired&&(scissor=getWindowsPosition(this.minimapScissor.align,this.minimapScissor.x_offset,this.minimapScissor.y_offset,this.minimapScissor.width,this.minimapScissor.height,_markerTarget.x,_markerTarget.y),this.minimapScissor.updateRequired=!1),renderer.setScissor(scissor.x,scissor.y,this.minimapScissor.width,this.minimapScissor.height),renderer.setViewport(scissor.x,scissor.y,this.minimapScissor.width,this.minimapScissor.height),minimap.updateCamera(),scene.add(minimap.mask),renderer.render(scene,minimap.camera),scene.remove(minimap.mask),renderer.setScissorTest(!1),renderer.setViewport(0,0,_markerTarget.x,_markerTarget.y))};/**
|
|
1015
|
+
* Render the scene.
|
|
1016
|
+
* @private
|
|
1017
|
+
*/this.render=renderer=>{this.autoClearFlag&&renderer.clear(),stereoEffectFlag&&stereoEffect?stereoEffect.render(scene,this.camera):(renderer.render(scene,this.camera),renderMinimap(renderer))},this.setInteractiveControlEnable=flag=>{!0==flag?zincCameraControls.enable():zincCameraControls.disable()},this.getZincCameraControls=()=>zincCameraControls,this.getThreeJSScene=()=>scene,this.setDuration=durationIn=>{rootRegion.setDuration(durationIn),duration=durationIn,zincCameraControls.setPathDuration(durationIn),sceneLoader.duration=durationIn},this.getDuration=()=>duration,this.setStereoEffectEnable=stereoFlag=>{!0!=stereoFlag||stereoEffect||(stereoEffect=new __webpack_require__(39).StereoEffect(rendererIn)),rendererIn.setSize(getDrawingWidth(),getDrawingHeight()),this.camera.updateProjectionMatrix(),stereoEffectFlag=stereoFlag},this.objectIsInScene=zincObject=>rootRegion.objectIsInRegion(zincObject,!0),this.alignBoundingBoxToCameraView=(boundingBox,transitionTime)=>{if(boundingBox){var center=new THREE.Vector3;boundingBox.getCenter(center);var viewport=this.getZincCameraControls().getCurrentViewport(),target=new THREE.Vector3(viewport.targetPosition[0],viewport.targetPosition[1],viewport.targetPosition[2]),eyePosition=new THREE.Vector3(viewport.eyePosition[0],viewport.eyePosition[1],viewport.eyePosition[2]),upVector=new THREE.Vector3(viewport.upVector[0],viewport.upVector[1],viewport.upVector[2]),newVec1=new THREE.Vector3,newVec2=new THREE.Vector3;newVec1.subVectors(target,eyePosition).normalize(),newVec2.subVectors(target,center).normalize();var newVec3=new THREE.Vector3;newVec3.crossVectors(newVec1,newVec2);var angle=newVec1.angleTo(newVec2);0<transitionTime?(this.getZincCameraControls().rotateCameraTransition(newVec3,angle,transitionTime),this.getZincCameraControls().enableCameraTransition()):this.getZincCameraControls().rotateAboutLookAtpoint(newVec3,angle)}},this.alignObjectToCameraView=(zincObject,transitionTime)=>{if(this.objectIsInScene(zincObject)){var boundingBox=zincObject.getBoundingBox();this.alignBoundingBoxToCameraView(boundingBox,transitionTime)}},this.setCameraTargetToObject=zincObject=>{if(this.objectIsInScene(zincObject)){var center=new THREE.Vector3,boundingBox=zincObject.getBoundingBox(),viewport=this.getZincCameraControls().getCurrentViewport();boundingBox.getCenter(center);var target=new THREE.Vector3(viewport.targetPosition[0],viewport.targetPosition[1],viewport.targetPosition[2]),eyePosition=new THREE.Vector3(viewport.eyePosition[0],viewport.eyePosition[1],viewport.eyePosition[2]),newVec1=new THREE.Vector3,newVec2=new THREE.Vector3;newVec1.subVectors(eyePosition,target),newVec2.addVectors(center,newVec1),viewport.eyePosition[0]=newVec2.x,viewport.eyePosition[1]=newVec2.y,viewport.eyePosition[2]=newVec2.z,viewport.targetPosition[0]=center.x,viewport.targetPosition[1]=center.y,viewport.targetPosition[2]=center.z,this.getZincCameraControls().setCurrentCameraSettings(viewport)}},this.isStereoEffectEnable=()=>stereoEffectFlag,this.removeZincObject=zincObject=>{rootRegion.removeZincObject(zincObject),zincCameraControls&&zincCameraControls.calculateMaxAllowedDistance(this)},this.updatePickableThreeJSObjects=()=>{pickableObjectsList.splice(0,pickableObjectsList.length),rootRegion.getPickableThreeJSObjects(pickableObjectsList,!0),this.forcePickableObjectsUpdate=!1},this.getPickableThreeJSObjects=()=>((this.forcePickableObjectsUpdate||rootRegion.checkPickableUpdateRequred(!0))&&this.updatePickableThreeJSObjects(),pickableObjectsList),this.getNormalisedMinimapCoordinates=(renderer,event)=>{if(this.displayMinimap){var target=new THREE.Vector2;renderer.getSize(target);var offsetY=target.y-event.clientY;if(scissor.x+this.minimapScissor.width>event.clientX&&event.clientX>scissor.x&&scissor.y+this.minimapScissor.height>offsetY&&offsetY>scissor.y){var x=2*((event.clientX-scissor.x)/this.minimapScissor.width)-1,y=2*((offsetY-scissor.y)/this.minimapScissor.height)-1;return{x:x,y:y}}}},this.getMinimapDiffFromNormalised=(x,y)=>minimap?minimap.getDiffFromNormalised(x,y):void 0,this.isWebGL2=()=>rendererIn.isWebGL2(),this.clearAll=()=>{rootRegion.clear(!0),sceneLoader.toBeDwonloaded=0,zincCameraControls&&zincCameraControls.calculateMaxAllowedDistance(this)},this.addMetadataTimeStamp=(key,time)=>{metadata.TimeStamps[key]=convertDurationObjectTomSec(time)},this.getMetadataTag=key=>metadata[key],this.getMetadata=()=>metadata,this.setMetadataTag=(key,value)=>{metadata[key]=value},this.removeMetadataTag=key=>{delete metadata[key]},this.resetMetadata=()=>{metadata=defaultMetadata()},this.resetDuration=()=>{this.setDuration(defaultDuration)};// Turn the object into a readable string {years: years,months: months,
|
|
994
1018
|
// weeks: weeks, days: days, hours: hours, mins: mins, secs: secs }
|
|
995
1019
|
var convertDurationObjectToString=duration=>[...(duration.years?["".concat(duration.years,"years")]:[]),...(duration.months?["".concat(duration.months,"months")]:[]),...(duration.weeks?["".concat(duration.weeks,"weeks")]:[]),...(duration.days?["".concat(duration.days,"days")]:[]),...(duration.hours?["".concat(duration.hours,"hours")]:[]),...(duration.mins?["".concat(duration.mins,"mins")]:[]),...(duration.secs?["".concat(duration.secs,"secs")]:[])].join(" "),convertDurationObjectTomSec=duration=>duration.years?31536e6*duration.years:0+duration.months?2592e6*duration.months:0+duration.weeks?6048e5*duration.weeks:0+duration.days?864e5*duration.days:0+duration.hours?36e5*duration.hours:0+duration.mins?6e4*duration.mins:0+duration.secs?1e3*duration.secs:0;// Turn the object into a number representing milliesecond {years: years,months: months,
|
|
996
1020
|
// weeks: weeks, days: days, hours: hours, mins: mins, secs: secs }
|
|
@@ -1016,9 +1040,9 @@ var convertDurationObjectToString=duration=>[...(duration.years?["".concat(durat
|
|
|
1016
1040
|
|
|
1017
1041
|
/***/ }),
|
|
1018
1042
|
/* 31 */
|
|
1019
|
-
/***/ (
|
|
1043
|
+
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
1020
1044
|
|
|
1021
|
-
var THREE=__webpack_require__(3),resolveURL=__webpack_require__(4).resolveURL,STLLoader=__webpack_require__(32).STLLoader,OBJLoader=__webpack_require__(33).OBJLoader,PrimitivesLoader=__webpack_require__(34).PrimitivesLoader,createNewURL=(target,reference)=>{var newURL=new URL(target,reference).href;//Make sure the target url does not contain parameters
|
|
1045
|
+
var THREE=__webpack_require__(3),resolveURL=(__webpack_require__(4).resolveURL),STLLoader=(__webpack_require__(32).STLLoader),OBJLoader=(__webpack_require__(33).OBJLoader),PrimitivesLoader=(__webpack_require__(34).PrimitivesLoader),createNewURL=(target,reference)=>{var newURL=new URL(target,reference).href;//Make sure the target url does not contain parameters
|
|
1022
1046
|
if(target&&2>target.split("?").length){var paramsStrings=reference.split("?");//There are parameters, add them to the target
|
|
1023
1047
|
2===paramsStrings.length&&(newURL=newURL+"?"+paramsStrings[1])}return newURL};/**
|
|
1024
1048
|
* A helper class to help with reading / importing primitives and
|
|
@@ -1028,12 +1052,17 @@ if(target&&2>target.split("?").length){var paramsStrings=reference.split("?");//
|
|
|
1028
1052
|
* @param {Object} containerIn - Container to create the renderer on.
|
|
1029
1053
|
* @author Alan Wu
|
|
1030
1054
|
* @return {SceneLoader}
|
|
1031
|
-
*/exports.SceneLoader=function(sceneIn){var scene=sceneIn;this.toBeDownloaded=0,this.progressMap={};var viewLoaded=!1,errorDownload=!1,primitivesLoader=new PrimitivesLoader
|
|
1032
|
-
|
|
1055
|
+
*/exports.SceneLoader=function(sceneIn){var scene=sceneIn;this.toBeDownloaded=0,this.progressMap={};var viewLoaded=!1,errorDownload=!1,primitivesLoader=new PrimitivesLoader;/**
|
|
1056
|
+
* This function returns a three component array, which contains
|
|
1057
|
+
* [totalsize, totalLoaded and errorDownload] of all the downloads happening
|
|
1058
|
+
* in this scene.
|
|
1059
|
+
* @returns {Array}
|
|
1060
|
+
*/this.getDownloadProgress=()=>{var totalSize=0,totalLoaded=0,unknownFound=!1;for(var key in this.progressMap){var progress=this.progressMap[key];totalSize+=progress[1],totalLoaded+=progress[0],0==progress[1]&&(unknownFound=!0)}return unknownFound&&(totalSize=0),[totalSize,totalLoaded,errorDownload]},this.onProgress=id=>xhr=>{this.progressMap[id]=[xhr.loaded,xhr.total]},this.onError=finishCallback=>()=>{--this.toBeDownloaded,errorDownload=!0,finishCallback&&finishCallback()};var loadMultipleViews=(referenceURL,views)=>{var defaultView=views.Default;if(views.Inline)scene.setupMultipleViews(defaultView,views.Entries);else{var promises=[],_loop=function _loop(key){referenceURL&&(newURL=createNewURL(value,referenceURL),promises.push(new Promise((resolve,reject)=>{// Add parameters if we are sent them
|
|
1061
|
+
fetch(newURL).then(response=>response.json()).then(data=>resolve({key:key,data:data})).catch(data=>reject(data))})))};for(var[key,value]of Object.entries(views.Entries))_loop(key);Promise.all(promises).then(values=>{var entries={};values.forEach(entry=>{entries[entry.key]=entry.data}),scene.setupMultipleViews(defaultView,entries);var zincCameraControls=scene.getZincCameraControls();zincCameraControls&&zincCameraControls.setCurrentViewport(defaultView),viewLoaded=!0})}};/**
|
|
1033
1062
|
* Load the viewport from an external location provided by the url.
|
|
1034
1063
|
* @param {String} URL - address to the file containing viewport information.
|
|
1035
|
-
*/this.loadViewURL=(url,finishCallback)=>{this.toBeDownloaded+=1;var xmlhttp=new XMLHttpRequest;xmlhttp.onreadystatechange=()=>{if(4==xmlhttp.readyState)if(200==xmlhttp.status){var viewData=JSON.parse(xmlhttp.responseText);scene.setupMultipleViews("default",{default:viewData}),scene.resetView(),viewLoaded=!0,--this.toBeDownloaded,null!=finishCallback&&"function"==typeof finishCallback&&finishCallback()}else this.onError()};var requestURL=resolveURL(url);xmlhttp.open("GET",requestURL,!0),xmlhttp.send()},this.loadModelsURL=(region,urls,colours,opacities,timeEnabled,morphColour,finishCallback)=>{var number=urls.length;this.toBeDownloaded+=number;for(var i=0;i<number;i++){var filename=urls[i],colour=__webpack_require__(0).defaultMaterialColor,opacity=__webpack_require__(0).defaultOpacity;colours!=null&&colours[i]!=null&&(colour=!!colours[i]),opacities!=null&&opacities[i]!=null&&(opacity=opacities[i]);var localTimeEnabled=0;timeEnabled!=null&&timeEnabled[i]!=null&&(localTimeEnabled=!!timeEnabled[i]);var localMorphColour=0;morphColour!=null&&morphColour[i]!=null&&(localMorphColour=!!morphColour[i]),primitivesLoader.load(resolveURL(filename),meshloader(region,colour,opacity,localTimeEnabled,localMorphColour,void 0,void 0,void 0,finishCallback),this.onProgress(filename),this.onError(finishCallback))}},this.loadFromViewURL=(targetRegion,jsonFilePrefix,finishCallback)=>{var xmlhttp=new XMLHttpRequest;xmlhttp.onreadystatechange=()=>{if(4==xmlhttp.readyState&&200==xmlhttp.status){var viewData=JSON.parse(xmlhttp.responseText);scene.loadView(viewData);for(var filename,urls=[],i=0;i<viewData.numberOfResources;i++)filename=
|
|
1036
|
-
var linesloader=(region,localTimeEnabled,localMorphColour,groupName,anatomicalId,renderOrder,finishCallback)=>(geometry,materials)=>{var newLines=new(__webpack_require__(20).Lines),material=void 0;materials&&materials[0]&&(material=new THREE.LineBasicMaterial({color:materials[0].color.clone()}),1>materials[0].opacity&&(material.transparent=!0),material.opacity=materials[0].opacity,material.morphTargets=localTimeEnabled,material.vertexColors=materials[0].vertexColors);var options={};options.localTimeEnabled=localTimeEnabled,options.localMorphColour=localMorphColour,newLines&&(newLines.createLineSegment(geometry,material,options),newLines.setName(groupName),newLines.anatomicalId=anatomicalId,newLines.setRenderOrder=renderOrder,region.addZincObject(newLines),newLines.setDuration(scene.getDuration())),--this.toBeDownloaded,geometry.dispose(),null!=finishCallback&&"function"==typeof finishCallback&&finishCallback(newLines)};/**
|
|
1064
|
+
*/this.loadViewURL=(url,finishCallback)=>{this.toBeDownloaded+=1;var xmlhttp=new XMLHttpRequest;xmlhttp.onreadystatechange=()=>{if(4==xmlhttp.readyState)if(200==xmlhttp.status){var viewData=JSON.parse(xmlhttp.responseText);scene.setupMultipleViews("default",{default:viewData}),scene.resetView(),viewLoaded=!0,--this.toBeDownloaded,null!=finishCallback&&"function"==typeof finishCallback&&finishCallback()}else this.onError()};var requestURL=resolveURL(url);xmlhttp.open("GET",requestURL,!0),xmlhttp.send()},this.loadModelsURL=(region,urls,colours,opacities,timeEnabled,morphColour,finishCallback)=>{var number=urls.length;this.toBeDownloaded+=number;for(var i=0;i<number;i++){var filename=urls[i],colour=(__webpack_require__(0).defaultMaterialColor),opacity=(__webpack_require__(0).defaultOpacity);colours!=null&&colours[i]!=null&&(colour=!!colours[i]),opacities!=null&&opacities[i]!=null&&(opacity=opacities[i]);var localTimeEnabled=0;timeEnabled!=null&&timeEnabled[i]!=null&&(localTimeEnabled=!!timeEnabled[i]);var localMorphColour=0;morphColour!=null&&morphColour[i]!=null&&(localMorphColour=!!morphColour[i]),primitivesLoader.load(resolveURL(filename),meshloader(region,colour,opacity,localTimeEnabled,localMorphColour,void 0,void 0,void 0,finishCallback),this.onProgress(filename),this.onError(finishCallback))}},this.loadFromViewURL=(targetRegion,jsonFilePrefix,finishCallback)=>{var xmlhttp=new XMLHttpRequest;xmlhttp.onreadystatechange=()=>{if(4==xmlhttp.readyState&&200==xmlhttp.status){var viewData=JSON.parse(xmlhttp.responseText);scene.loadView(viewData);for(var filename,urls=[],filename_prefix=jsonFilePrefix+"_",i=0;i<viewData.numberOfResources;i++)filename=filename_prefix+(i+1)+".json",urls.push(filename);this.loadModelsURL(targetRegion,urls,viewData.colour,viewData.opacity,viewData.timeEnabled,viewData.morphColour,finishCallback)}};var requestURL=resolveURL(jsonFilePrefix+"_view.json");xmlhttp.open("GET",requestURL,!0),xmlhttp.send()};//Internal loader for a regular zinc geometry.
|
|
1065
|
+
var linesloader=(region,localTimeEnabled,localMorphColour,groupName,anatomicalId,renderOrder,finishCallback)=>(geometry,materials)=>{var newLines=new((__webpack_require__(20).Lines)),material=void 0;materials&&materials[0]&&(material=new THREE.LineBasicMaterial({color:materials[0].color.clone()}),1>materials[0].opacity&&(material.transparent=!0),material.opacity=materials[0].opacity,material.morphTargets=localTimeEnabled,material.vertexColors=materials[0].vertexColors);var options={};options.localTimeEnabled=localTimeEnabled,options.localMorphColour=localMorphColour,newLines&&(newLines.createLineSegment(geometry,material,options),newLines.setName(groupName),newLines.anatomicalId=anatomicalId,newLines.setRenderOrder=renderOrder,region.addZincObject(newLines),newLines.setDuration(scene.getDuration())),--this.toBeDownloaded,geometry.dispose(),null!=finishCallback&&"function"==typeof finishCallback&&finishCallback(newLines)};/**
|
|
1037
1066
|
* Load lines into this scene object.
|
|
1038
1067
|
*
|
|
1039
1068
|
* @param {String} metaurl - Provide informations such as transformations, colours
|
|
@@ -1043,9 +1072,18 @@ var linesloader=(region,localTimeEnabled,localMorphColour,groupName,anatomicalId
|
|
|
1043
1072
|
* @param {STRING} groupName - name to assign the pointset's groupname to.
|
|
1044
1073
|
* @param {Function} finishCallback - Callback function which will be called
|
|
1045
1074
|
* once the glyphset is succssfully load in.
|
|
1046
|
-
*/this.loadLinesURL=(region,url,timeEnabled,morphColour,groupName,finishCallback,options)=>{var localTimeEnabled=0;this.toBeDownloaded+=1;var isInline=!!(options&&options.isInline)&&options.isInline,anatomicalId=options&&options.anatomicalId?options.anatomicalId:void 0,renderOrder=options&&options.renderOrder?options.renderOrder:void 0;null!=timeEnabled&&(localTimeEnabled=!!timeEnabled);var localMorphColour=0;if(null!=morphColour&&(localMorphColour=!!morphColour),isInline){var object=primitivesLoader.parse(url);linesloader(region,localTimeEnabled,localMorphColour,groupName,anatomicalId,renderOrder,finishCallback)(object.geometry,object.materials)}else primitivesLoader.load(url,linesloader(region,localTimeEnabled,localMorphColour,groupName,anatomicalId,renderOrder,finishCallback),this.onProgress(url),this.onError(finishCallback))};var loadGlyphset=(region,glyphsetData,glyphurl,groupName,finishCallback,options)=>{var isInline=options&&options.isInline?options.isInline:void 0,anatomicalId=options&&options.anatomicalId?options.anatomicalId:void 0,displayLabels=options&&options.displayLabels?options.displayLabels:void 0,renderOrder=options&&options.renderOrder?options.renderOrder:void 0,newGlyphset=new(__webpack_require__(13).Glyphset);newGlyphset.setDuration(scene.getDuration()),newGlyphset.groupName=groupName;var myCallback=()=>{--this.toBeDownloaded,finishCallback!=null&&"function"==typeof finishCallback&&finishCallback(newGlyphset)};++this.toBeDownloaded,isInline?newGlyphset.load(glyphsetData,glyphurl,myCallback,isInline,displayLabels):newGlyphset.load(glyphsetData,resolveURL(glyphurl),myCallback,isInline,displayLabels),newGlyphset.anatomicalId=anatomicalId,newGlyphset.setRenderOrder(renderOrder),region.addZincObject(newGlyphset)},onLoadGlyphsetReady=(region,xmlhttp,glyphurl,groupName,finishCallback,options)=>()=>{if(4==xmlhttp.readyState&&200==xmlhttp.status){var glyphsetData=JSON.parse(xmlhttp.responseText);loadGlyphset(region,glyphsetData,glyphurl,groupName,finishCallback,options)}},pointsetloader=(region,localTimeEnabled,localMorphColour,groupName,anatomicalId,renderOrder,finishCallback)=>(geometry,materials)=>{var newPointset=new(__webpack_require__(17).Pointset),material=new THREE.PointsMaterial({alphaTest:.5,size:10,sizeAttenuation:!1});materials&&materials[0]&&(1>materials[0].opacity&&(material.transparent=!0),material.opacity=materials[0].opacity,material.color=materials[0].color,material.morphTargets=localTimeEnabled,material.vertexColors=materials[0].vertexColors);var options={};options.localTimeEnabled=localTimeEnabled,options.localMorphColour=localMorphColour,newPointset&&(newPointset.createMesh(geometry,material,options),newPointset.setName(groupName),region.addZincObject(newPointset),newPointset.setDuration(scene.getDuration()),newPointset.setRenderOrder(renderOrder)),geometry.dispose(),--this.toBeDownloaded,null!=finishCallback&&"function"==typeof finishCallback&&finishCallback(newPointset)};//Load a glyphset into this scene.
|
|
1047
|
-
|
|
1048
|
-
|
|
1075
|
+
*/this.loadLinesURL=(region,url,timeEnabled,morphColour,groupName,finishCallback,options)=>{var localTimeEnabled=0;this.toBeDownloaded+=1;var isInline=!!(options&&options.isInline)&&options.isInline,anatomicalId=options&&options.anatomicalId?options.anatomicalId:void 0,renderOrder=options&&options.renderOrder?options.renderOrder:void 0;null!=timeEnabled&&(localTimeEnabled=!!timeEnabled);var localMorphColour=0;if(null!=morphColour&&(localMorphColour=!!morphColour),isInline){var object=primitivesLoader.parse(url);linesloader(region,localTimeEnabled,localMorphColour,groupName,anatomicalId,renderOrder,finishCallback)(object.geometry,object.materials)}else primitivesLoader.load(url,linesloader(region,localTimeEnabled,localMorphColour,groupName,anatomicalId,renderOrder,finishCallback),this.onProgress(url),this.onError(finishCallback))};var loadGlyphset=(region,glyphsetData,glyphurl,groupName,finishCallback,options)=>{var isInline=options&&options.isInline?options.isInline:void 0,anatomicalId=options&&options.anatomicalId?options.anatomicalId:void 0,displayLabels=options&&options.displayLabels?options.displayLabels:void 0,renderOrder=options&&options.renderOrder?options.renderOrder:void 0,newGlyphset=new((__webpack_require__(13).Glyphset));newGlyphset.setDuration(scene.getDuration()),newGlyphset.groupName=groupName;var myCallback=()=>{--this.toBeDownloaded,finishCallback!=null&&"function"==typeof finishCallback&&finishCallback(newGlyphset)};++this.toBeDownloaded,isInline?newGlyphset.load(glyphsetData,glyphurl,myCallback,isInline,displayLabels):newGlyphset.load(glyphsetData,resolveURL(glyphurl),myCallback,isInline,displayLabels),newGlyphset.anatomicalId=anatomicalId,newGlyphset.setRenderOrder(renderOrder),region.addZincObject(newGlyphset)},onLoadGlyphsetReady=(region,xmlhttp,glyphurl,groupName,finishCallback,options)=>()=>{if(4==xmlhttp.readyState&&200==xmlhttp.status){var glyphsetData=JSON.parse(xmlhttp.responseText);loadGlyphset(region,glyphsetData,glyphurl,groupName,finishCallback,options)}},pointsetloader=(region,localTimeEnabled,localMorphColour,groupName,anatomicalId,renderOrder,finishCallback)=>(geometry,materials)=>{var newPointset=new((__webpack_require__(17).Pointset)),material=new THREE.PointsMaterial({alphaTest:.5,size:10,sizeAttenuation:!1});materials&&materials[0]&&(1>materials[0].opacity&&(material.transparent=!0),material.opacity=materials[0].opacity,material.color=materials[0].color,material.morphTargets=localTimeEnabled,material.vertexColors=materials[0].vertexColors);var options={};options.localTimeEnabled=localTimeEnabled,options.localMorphColour=localMorphColour,newPointset&&(newPointset.createMesh(geometry,material,options),newPointset.setName(groupName),region.addZincObject(newPointset),newPointset.setDuration(scene.getDuration()),newPointset.setRenderOrder(renderOrder)),geometry.dispose(),--this.toBeDownloaded,null!=finishCallback&&"function"==typeof finishCallback&&finishCallback(newPointset)};//Load a glyphset into this scene.
|
|
1076
|
+
//Internal loader for a regular zinc geometry.
|
|
1077
|
+
/**
|
|
1078
|
+
* Read a STL file into this scene, the geometry will be presented as
|
|
1079
|
+
* {@link Zinc.Geometry}.
|
|
1080
|
+
*
|
|
1081
|
+
* @param {STRING} url - location to the STL file.
|
|
1082
|
+
* @param {STRING} groupName - name to assign the geometry's groupname to.
|
|
1083
|
+
* @param {Function} finishCallback - Callback function which will be called
|
|
1084
|
+
* once the STL geometry is succssfully loaded.
|
|
1085
|
+
*/this.loadSTL=(region,url,groupName,finishCallback)=>{this.toBeDownloaded+=1;var colour=(__webpack_require__(0).defaultMaterialColor),opacity=(__webpack_require__(0).defaultOpacity),loader=new STLLoader;loader.crossOrigin="Anonymous",loader.load(resolveURL(url),meshloader(region,colour,opacity,!1,!1,groupName,void 0,void 0,finishCallback))},this.loadOBJ=(region,url,groupName,finishCallback)=>{this.toBeDownloaded+=1;var colour=(__webpack_require__(0).defaultMaterialColor),opacity=(__webpack_require__(0).defaultOpacity),loader=new OBJLoader;loader.crossOrigin="Anonymous",loader.load(resolveURL(url),meshloader(region,colour,opacity,!1,!1,groupName,void 0,void 0,finishCallback))};//Loader for the OBJ format,
|
|
1086
|
+
var objloader=(region,colour,opacity,localTimeEnabled,localMorphColour,groupName,finishCallback)=>object=>{this.toBeDownloaded--,object.traverse(child=>{if(child instanceof THREE.Mesh){var zincGeometry=addMeshToZincGeometry(child,localTimeEnabled,localMorphColour);region.addZincObject(zincGeometry),zincGeometry.morph&&(zincGeometry.morph.name=groupName),zincGeometry.groupName=groupName,null!=finishCallback&&"function"==typeof finishCallback&&finishCallback(zincGeometry)}})},loadSurfaceURL=(region,url,timeEnabled,morphColour,groupName,finishCallback,options)=>{this.toBeDownloaded+=1;var colour=(__webpack_require__(0).defaultMaterialColor),opacity=(__webpack_require__(0).defaultOpacity),localTimeEnabled=0,isInline=!!(options&&options.isInline)&&options.isInline,fileFormat=options&&options.fileFormat?options.fileFormat:void 0,anatomicalId=options&&options.anatomicalId?options.anatomicalId:void 0,renderOrder=options&&options.renderOrder?options.renderOrder:void 0;timeEnabled!=null&&(localTimeEnabled=!!timeEnabled);var localMorphColour=0;morphColour!=null&&(localMorphColour=!!morphColour);var loader=primitivesLoader;if(fileFormat!==void 0)if("STL"==fileFormat)loader=new STLLoader;else if("OBJ"==fileFormat)return loader=new OBJLoader,loader.crossOrigin="Anonymous",void loader.load(url,objloader(region,colour,opacity,localTimeEnabled,localMorphColour,groupName,anatomicalId,finishCallback),this.onProgress(url),this.onError);if(isInline){var object=primitivesLoader.parse(url);meshloader(region,colour,opacity,localTimeEnabled,localMorphColour,groupName,anatomicalId,renderOrder,finishCallback)(object.geometry,object.materials)}else loader.crossOrigin="Anonymous",primitivesLoader.load(url,meshloader(region,colour,opacity,localTimeEnabled,localMorphColour,groupName,anatomicalId,renderOrder,finishCallback),this.onProgress(url),this.onError(finishCallback))},metaFinishCallback=function metaFinishCallback(numberOfDownloaded,finishCallback,allCompletedCallback){var downloadedItem=0;return zincObject=>{if(++downloadedItem,zincObject&&null!=finishCallback&&"function"==typeof finishCallback){finishCallback(zincObject);var zincCameraControls=scene.getZincCameraControls();zincCameraControls&&zincCameraControls.calculateMaxAllowedDistance(scene)}downloadedItem==numberOfDownloaded&&(!1==viewLoaded&&scene.viewAll(),null!=allCompletedCallback&&"function"==typeof allCompletedCallback&&allCompletedCallback())}};/**
|
|
1049
1087
|
* Load a geometry into this scene, this is a subsequent called from
|
|
1050
1088
|
* {@link Zinc.Scene#loadMetadataURL}, although it can be used to read
|
|
1051
1089
|
* in geometry into the scene externally.
|
|
@@ -1057,6 +1095,18 @@ var objloader=(region,colour,opacity,localTimeEnabled,localMorphColour,groupName
|
|
|
1057
1095
|
* @param {STRING} fileFormat - name supported formats are STL, OBJ and JSON.
|
|
1058
1096
|
* @param {Function} finishCallback - Callback function which will be called
|
|
1059
1097
|
* once the geometry is succssfully loaded in.
|
|
1098
|
+
*/ //Object to keep track of number of items downloaded and when all items are downloaded
|
|
1099
|
+
//allCompletedCallback is called
|
|
1100
|
+
/**
|
|
1101
|
+
* Load a pointset into this scene object.
|
|
1102
|
+
*
|
|
1103
|
+
* @param {String} metaurl - Provide informations such as transformations, colours
|
|
1104
|
+
* and others for each of the glyph in the glyphsset.
|
|
1105
|
+
* @param {Boolean} timeEnabled - Indicate if morphing is enabled.
|
|
1106
|
+
* @param {Boolean} morphColour - Indicate if color morphing is enabled.
|
|
1107
|
+
* @param {STRING} groupName - name to assign the pointset's groupname to.
|
|
1108
|
+
* @param {Function} finishCallback - Callback function which will be called
|
|
1109
|
+
* once the glyphset is succssfully load in.
|
|
1060
1110
|
*/this.loadPointsetURL=(region,url,timeEnabled,morphColour,groupName,finishCallback,options)=>{var localTimeEnabled=0;this.toBeDownloaded+=1,timeEnabled!=null&&(localTimeEnabled=!!timeEnabled);var localMorphColour=0;morphColour!=null&&(localMorphColour=!!morphColour);var isInline=!!(options&&options.isInline)&&options.isInline,anatomicalId=options&&options.anatomicalId?options.anatomicalId:void 0,renderOrder=options&&options.renderOrder?options.renderOrder:void 0;if(isInline){var object=primitivesLoader.parse(url);pointsetloader(region,localTimeEnabled,localMorphColour,groupName,anatomicalId,renderOrder,finishCallback)(object.geometry,object.materials)}else primitivesLoader.load(url,pointsetloader(region,localTimeEnabled,localMorphColour,groupName,anatomicalId,renderOrder,finishCallback),this.onProgress(url),this.onError(finishCallback))},this.loadGlyphsetURL=(region,metaurl,glyphurl,groupName,finishCallback,options)=>{var isInline=!!(options&&options.isInline)&&options.isInline;if(isInline)loadGlyphset(region,metaurl,glyphurl,groupName,finishCallback,options);else{var xmlhttp=new XMLHttpRequest;xmlhttp.onreadystatechange=onLoadGlyphsetReady(region,xmlhttp,glyphurl,groupName,finishCallback,options),xmlhttp.open("GET",resolveURL(metaurl),!0),xmlhttp.send()}};/**
|
|
1061
1111
|
* Add a user provided {THREE.Geometry} into the scene as zinc geometry.
|
|
1062
1112
|
*
|
|
@@ -1070,13 +1120,22 @@ var objloader=(region,colour,opacity,localTimeEnabled,localMorphColour,groupName
|
|
|
1070
1120
|
* @param {THREE.Material} materialIn - Material to be set for this geometry if it is present.
|
|
1071
1121
|
*
|
|
1072
1122
|
* @returns {Zinc.Geometry}
|
|
1073
|
-
*/var addZincGeometry=(region,geometryIn,colour,opacity,localTimeEnabled,localMorphColour,finishCallback,materialIn,groupName)=>{var newGeometry=new(__webpack_require__(2).Geometry);return newGeometry.createMesh(geometryIn,materialIn,
|
|
1123
|
+
*/var addZincGeometry=(region,geometryIn,colour,opacity,localTimeEnabled,localMorphColour,finishCallback,materialIn,groupName)=>{var options={colour:colour,opacity:opacity,localTimeEnabled:localTimeEnabled,localMorphColour:localMorphColour},newGeometry=new((__webpack_require__(2).Geometry));return newGeometry.createMesh(geometryIn,materialIn,options),newGeometry.morph?(newGeometry.setName(groupName),region&®ion.addZincObject(newGeometry),newGeometry.setDuration(scene.getDuration()),null!=finishCallback&&"function"==typeof finishCallback&&finishCallback(newGeometry),newGeometry.videoHandler&&scene.setVideoHandler(newGeometry.videoHandler),newGeometry):void 0},meshloader=(region,colour,opacity,localTimeEnabled,localMorphColour,groupName,anatomicalId,renderOrder,finishCallback)=>(geometry,materials)=>{var material;materials&&materials[0]&&(material=materials[0]);var zincGeometry=addZincGeometry(region,geometry,colour,opacity,localTimeEnabled,localMorphColour,void 0,material,groupName,renderOrder);zincGeometry.anatomicalId=anatomicalId,zincGeometry.setRenderOrder(renderOrder),--this.toBeDownloaded,geometry.dispose(),null!=finishCallback&&"function"==typeof finishCallback&&finishCallback(zincGeometry)},parseDuration=durationString=>{var regex=/P(?:(\d+)Y)?(?:(\d+)M)?(?:(\d+)W)?(?:(\d+)D)?(?:T(?:(\d+)H)?(?:(\d+)M)?(?:(\d+)S)?)?$/,[,years,months,weeks,days,hours,mins,secs]=durationString.match(regex);return{years:years,months:months,weeks:weeks,days:days,hours:hours,mins:mins,secs:secs}};//Internal loader for a regular zinc geometry.
|
|
1124
|
+
//Turn ISO 8601 duration string into an array.
|
|
1125
|
+
//Load settings from metadata item.
|
|
1074
1126
|
this.loadSettings=item=>{if(item){//duration uses the ISO 8601 standard - PnYnMnDTnHnMnS
|
|
1075
1127
|
if(item.Duration){var duration=parseDuration(item.Duration);scene.setDurationFromObject(duration)}if(item.OriginalDuration){var _duration=parseDuration(item.OriginalDuration);scene.setOriginalDurationFromObject(_duration)}if(item.TimeStamps)for(var key in item.TimeStamps){var time=parseDuration(item.TimeStamps[key]);scene.addMetadataTimeStamp(key,time)}}};//Function to process each of the graphical metadata item except for view and
|
|
1076
1128
|
//settings.
|
|
1077
1129
|
var readPrimitivesItem=(region,referenceURL,item,order,finishCallback)=>{if(item){var _newURL=void 0,isInline=!1;item.URL?(_newURL=item.URL,referenceURL&&(_newURL=createNewURL(item.URL,referenceURL))):item.Inline&&(_newURL=item.Inline.URL,isInline=!0);var groupName=item.GroupName;(groupName===void 0||""===groupName)&&(groupName="_Unnamed");var options={isInline:isInline,fileFormat:item.FileFormat,anatomicalId:item.AnatomicalId,compression:item.compression,renderOrder:order};switch(item.Type){case"Surfaces":loadSurfaceURL(region,_newURL,item.MorphVertices,item.MorphColours,groupName,finishCallback,options);break;case"Glyph":var newGeometryURL;isInline?newGeometryURL=item.Inline.GlyphGeometriesURL:(newGeometryURL=item.GlyphGeometriesURL,newGeometryURL=createNewURL(item.GlyphGeometriesURL,referenceURL)),item.DisplayLabels&&(options.displayLabels=!0),this.loadGlyphsetURL(region,_newURL,newGeometryURL,groupName,finishCallback,options);break;case"Points":this.loadPointsetURL(region,_newURL,item.MorphVertices,item.MorphColours,groupName,finishCallback,options);break;case"Lines":this.loadLinesURL(region,_newURL,item.MorphVertices,item.MorphColours,groupName,finishCallback,options);break;default:}}},readViewAndSettingsItem=(referenceURL,item,finishCallback)=>{if(item){var _newURL2=void 0,isInline=!1;switch(item.URL?(_newURL2=item.URL,referenceURL&&(_newURL2=createNewURL(item.URL,referenceURL))):item.Inline&&(_newURL2=item.Inline.URL,isInline=!0),item.Type){case"View":isInline?(scene.setupMultipleViews("default",{default:_newURL2}),viewLoaded=!0,null!=finishCallback&&"function"==typeof finishCallback&&finishCallback()):this.loadViewURL(_newURL2,finishCallback);break;case"Settings":this.loadSettings(item);break;default:}}};//Function to read the view item first
|
|
1078
|
-
|
|
1079
|
-
|
|
1130
|
+
/**
|
|
1131
|
+
* Load GLTF into this scene object.
|
|
1132
|
+
*
|
|
1133
|
+
* @param {String} url - URL to the GLTF file
|
|
1134
|
+
* @param {Function} finishCallback - Callback function which will be called
|
|
1135
|
+
* once the glyphset is succssfully load in.
|
|
1136
|
+
*/this.loadGLTF=(region,url,finishCallback,options)=>{var GLTFToZincJSLoader=new((__webpack_require__(35).GLTFToZincJSLoader));GLTFToZincJSLoader.load(scene,region,url,finishCallback,options)};var loadRegions=(currentRegion,referenceURL,regions,callback)=>{if(regions.Primitives&®ions.Primitives.forEach(primitive=>{var order=1;primitive.Order&&(order=primitive.Order),readPrimitivesItem(currentRegion,referenceURL,primitive,order,callback)}),regions.Transformation&¤tRegion.setTransformation(regions.Transformation),regions.Children)for(var[regionName,value]of Object.entries(regions.Children)){var childRegion=currentRegion.findOrCreateChildFromPath(regionName);childRegion&&loadRegions(childRegion,referenceURL,value,callback)}},getNumberOfDownloadsInArray=(array,includeViews)=>{if(Array.isArray(array)){for(var count=0,i=0;i<array.length;i++)array[i].Type&&(includeViews&&"View"===array[i].Type||"Surfaces"===array[i].Type||"Glyph"===array[i].Type||"Points"===array[i].Type||"Lines"===array[i].Type)&&count++;return count}return 0},getNumberOfObjectsInRegions=regionJson=>{var counts=regionJson.Primitives?getNumberOfDownloadsInArray(regionJson.Primitives,!1):0;return regionJson.Children&&Object.values(regionJson.Children).forEach(childRegion=>{counts+=getNumberOfObjectsInRegions(childRegion)}),counts},getNumberOfObjects=metadata=>{if(Array.isArray(metadata))return getNumberOfDownloadsInArray(metadata,!0);return"object"==typeof metadata&&null!==metadata&&"2.0"===metadata.Version?getNumberOfObjectsInRegions(metadata.Regions):void 0},readVersionOneRegionPath=(region,referenceURL,item,order,callback)=>{var targetRegion=region;//Render order is set to i * 2 to account for front and back rendering
|
|
1137
|
+
item.RegionPath&&""!==item.RegionPath&&(targetRegion=region.findOrCreateChildFromPath(item.RegionPath)),readPrimitivesItem(targetRegion,referenceURL,item,2*order,callback)},loadVersionOne=(targetRegion,metadata,referenceURL,finishCallback,allCompletedCallback)=>{// view file does not receive callback
|
|
1138
|
+
// Prioritise the view file and settings before loading anything else
|
|
1080
1139
|
for(var numberOfObjects=getNumberOfObjects(metadata),callback=new metaFinishCallback(numberOfObjects,finishCallback,allCompletedCallback),i=0;i<metadata.length;i++)readViewAndSettingsItem(referenceURL,metadata[i],callback);for(var _i=0;_i<metadata.length;_i++)readVersionOneRegionPath(targetRegion,referenceURL,metadata[_i],_i,callback)},loadVersionTwo=(targetRegion,metadata,referenceURL,finishCallback,allCompletedCallback)=>{var numberOfObjects=getNumberOfObjects(metadata),callback=new metaFinishCallback(numberOfObjects,finishCallback,allCompletedCallback);// view file does not receive callback
|
|
1081
1140
|
metadata.Settings&&this.loadSettings(metadata.Settings),metadata.Views&&loadMultipleViews(referenceURL,metadata.Views,referenceURL),metadata.Regions&&loadRegions(targetRegion,referenceURL,metadata.Regions,callback)};/**
|
|
1082
1141
|
* Load a metadata file from the provided URL into this scene. Once
|
|
@@ -1089,11 +1148,13 @@ metadata.Settings&&this.loadSettings(metadata.Settings),metadata.Views&&loadMult
|
|
|
1089
1148
|
|
|
1090
1149
|
/***/ }),
|
|
1091
1150
|
/* 32 */
|
|
1092
|
-
/***/ (
|
|
1151
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
1093
1152
|
|
|
1094
1153
|
"use strict";
|
|
1095
1154
|
__webpack_require__.r(__webpack_exports__);
|
|
1096
|
-
/* harmony export
|
|
1155
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
1156
|
+
/* harmony export */ STLLoader: () => (/* binding */ STLLoader)
|
|
1157
|
+
/* harmony export */ });
|
|
1097
1158
|
/* harmony import */ var three__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(3);
|
|
1098
1159
|
/* harmony import */ var three__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(three__WEBPACK_IMPORTED_MODULE_0__);
|
|
1099
1160
|
/**
|
|
@@ -1145,7 +1206,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
1145
1206
|
*
|
|
1146
1207
|
* materials.push(material);
|
|
1147
1208
|
* const mesh = new THREE.Mesh(geometry, materials);
|
|
1148
|
-
*/class STLLoader extends three__WEBPACK_IMPORTED_MODULE_0__
|
|
1209
|
+
*/class STLLoader extends three__WEBPACK_IMPORTED_MODULE_0__.Loader{constructor(manager){super(manager)}load(url,onLoad,onProgress,onError){var scope=this,loader=new three__WEBPACK_IMPORTED_MODULE_0__.FileLoader(this.manager);loader.setPath(this.path),loader.setResponseType("arraybuffer"),loader.setRequestHeader(this.requestHeader),loader.setWithCredentials(this.withCredentials),loader.load(url,function(text){try{onLoad(scope.parse(text))}catch(e){onError?onError(e):console.error(e),scope.manager.itemError(url)}},onProgress,onError)}parse(data){function matchDataViewAt(query,reader,offset){// Check if each byte in query matches the corresponding byte from the current offset
|
|
1149
1210
|
for(var i=0,il=query.length;i<il;i++)if(query[i]!==reader.getUint8(offset+i,!1))return!1;return!0}// start
|
|
1150
1211
|
var binData=function(buffer){if("string"==typeof buffer){for(var array_buffer=new Uint8Array(buffer.length),i=0;i<buffer.length;i++)array_buffer[i]=255&buffer.charCodeAt(i);// implicitly assumes little-endian
|
|
1151
1212
|
return array_buffer.buffer||array_buffer}return buffer}(data);return function(data){var reader=new DataView(data),n_faces=reader.getUint32(80,!0);if(80+32/8+n_faces*(3*(32/8)+3*(3*(32/8))+16/8)===reader.byteLength)return!0;// An ASCII STL data must begin with 'solid ' as the first six bytes.
|
|
@@ -1159,20 +1220,24 @@ for(var solid=[115,111,108,105,100],off=0;5>off;off++)// If "solid" text is matc
|
|
|
1159
1220
|
if(matchDataViewAt(solid,reader,off))return!1;// Couldn't find "solid" text at the beginning; it is binary STL.
|
|
1160
1221
|
return!0}(binData)?function(data){// process STL header
|
|
1161
1222
|
// check for default color in header ("COLOR=rgba" sequence).
|
|
1162
|
-
for(var r,g,b,colors,defaultR,defaultG,defaultB,alpha,reader=new DataView(data),faces=reader.getUint32(80,!0),hasColors=!1,index=0;index<80-10;index++)1129270351==reader.getUint32(index,!1)/*COLO*/&&82==reader.getUint8(index+4)/*'R'*/&&61==reader.getUint8(index+5)/*'='*/&&(hasColors=!0,colors=new Float32Array(3*(3*faces)),defaultR=reader.getUint8(index+6)/255,defaultG=reader.getUint8(index+7)/255,defaultB=reader.getUint8(index+8)/255,alpha=reader.getUint8(index+9)/255);for(var geometry=new three__WEBPACK_IMPORTED_MODULE_0__
|
|
1163
|
-
1!==normalCountPerFace&&console.error("THREE.STLLoader: Something isn't right with the normal of face number "+faceCounter),3
|
|
1223
|
+
for(var r,g,b,colors,defaultR,defaultG,defaultB,alpha,reader=new DataView(data),faces=reader.getUint32(80,!0),hasColors=!1,index=0;index<80-10;index++)1129270351==reader.getUint32(index,!1)/*COLO*/&&82==reader.getUint8(index+4)/*'R'*/&&61==reader.getUint8(index+5)/*'='*/&&(hasColors=!0,colors=new Float32Array(3*(3*faces)),defaultR=reader.getUint8(index+6)/255,defaultG=reader.getUint8(index+7)/255,defaultB=reader.getUint8(index+8)/255,alpha=reader.getUint8(index+9)/255);for(var geometry=new three__WEBPACK_IMPORTED_MODULE_0__.BufferGeometry,vertices=new Float32Array(3*(3*faces)),normals=new Float32Array(3*(3*faces)),face=0;face<faces;face++){var start=84+face*(12*4+2),normalX=reader.getFloat32(start,!0),normalY=reader.getFloat32(start+4,!0),normalZ=reader.getFloat32(start+8,!0);if(hasColors){var packedColor=reader.getUint16(start+48,!0);0==(32768&packedColor)?(r=(31&packedColor)/31,g=(31&packedColor>>5)/31,b=(31&packedColor>>10)/31):(r=defaultR,g=defaultG,b=defaultB)}for(var i=1;3>=i;i++){var vertexstart=start+12*i,componentIdx=3*(3*face)+3*(i-1);vertices[componentIdx]=reader.getFloat32(vertexstart,!0),vertices[componentIdx+1]=reader.getFloat32(vertexstart+4,!0),vertices[componentIdx+2]=reader.getFloat32(vertexstart+8,!0),normals[componentIdx]=normalX,normals[componentIdx+1]=normalY,normals[componentIdx+2]=normalZ,hasColors&&(colors[componentIdx]=r,colors[componentIdx+1]=g,colors[componentIdx+2]=b)}}return geometry.setAttribute("position",new three__WEBPACK_IMPORTED_MODULE_0__.BufferAttribute(vertices,3)),geometry.setAttribute("normal",new three__WEBPACK_IMPORTED_MODULE_0__.BufferAttribute(normals,3)),hasColors&&(geometry.setAttribute("color",new three__WEBPACK_IMPORTED_MODULE_0__.BufferAttribute(colors,3)),geometry.hasColors=!0,geometry.alpha=alpha),geometry}(binData):function(data){for(var result,geometry=new three__WEBPACK_IMPORTED_MODULE_0__.BufferGeometry,patternSolid=/solid([\s\S]*?)endsolid/g,patternFace=/facet([\s\S]*?)endfacet/g,faceCounter=0,patternFloat=/[\s]+([+-]?(?:\d*)(?:\.\d*)?(?:[eE][+-]?\d+)?)/.source,patternVertex=new RegExp("vertex"+patternFloat+patternFloat+patternFloat,"g"),patternNormal=new RegExp("normal"+patternFloat+patternFloat+patternFloat,"g"),vertices=[],normals=[],normal=new three__WEBPACK_IMPORTED_MODULE_0__.Vector3,groupCount=0,startVertex=0,endVertex=0;null!==(result=patternSolid.exec(data));){startVertex=endVertex;for(var solid=result[0];null!==(result=patternFace.exec(solid));){for(var vertexCountPerFace=0,normalCountPerFace=0,text=result[0];null!==(result=patternNormal.exec(text));)normal.x=parseFloat(result[1]),normal.y=parseFloat(result[2]),normal.z=parseFloat(result[3]),normalCountPerFace++;for(;null!==(result=patternVertex.exec(text));)vertices.push(parseFloat(result[1]),parseFloat(result[2]),parseFloat(result[3])),normals.push(normal.x,normal.y,normal.z),vertexCountPerFace++,endVertex++;// every face have to own ONE valid normal
|
|
1224
|
+
1!==normalCountPerFace&&console.error("THREE.STLLoader: Something isn't right with the normal of face number "+faceCounter),3!==vertexCountPerFace&&console.error("THREE.STLLoader: Something isn't right with the vertices of face number "+faceCounter),faceCounter++}var start=startVertex,count=endVertex-startVertex;geometry.addGroup(start,count,groupCount),groupCount++}return geometry.setAttribute("position",new three__WEBPACK_IMPORTED_MODULE_0__.Float32BufferAttribute(vertices,3)),geometry.setAttribute("normal",new three__WEBPACK_IMPORTED_MODULE_0__.Float32BufferAttribute(normals,3)),geometry}(function(buffer){return"string"==typeof buffer?buffer:three__WEBPACK_IMPORTED_MODULE_0__.LoaderUtils.decodeText(new Uint8Array(buffer))}(data))}}
|
|
1164
1225
|
|
|
1165
1226
|
/***/ }),
|
|
1166
1227
|
/* 33 */
|
|
1167
|
-
/***/ (
|
|
1228
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
1168
1229
|
|
|
1169
1230
|
"use strict";
|
|
1170
1231
|
__webpack_require__.r(__webpack_exports__);
|
|
1171
|
-
/* harmony export
|
|
1232
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
1233
|
+
/* harmony export */ OBJLoader: () => (/* binding */ OBJLoader)
|
|
1234
|
+
/* harmony export */ });
|
|
1172
1235
|
/* harmony import */ var three__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(3);
|
|
1173
1236
|
/* harmony import */ var three__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(three__WEBPACK_IMPORTED_MODULE_0__);
|
|
1174
1237
|
// o object_name | g group_name
|
|
1175
|
-
var _object_pattern=/^[og]\s*(.+)?/,_material_library_pattern=/^mtllib /,_material_use_pattern=/^usemtl /,_map_use_pattern=/^usemap /,_vA=new three__WEBPACK_IMPORTED_MODULE_0__
|
|
1238
|
+
var _object_pattern=/^[og]\s*(.+)?/,_material_library_pattern=/^mtllib /,_material_use_pattern=/^usemtl /,_map_use_pattern=/^usemap /,_vA=new three__WEBPACK_IMPORTED_MODULE_0__.Vector3,_vB=new three__WEBPACK_IMPORTED_MODULE_0__.Vector3,_vC=new three__WEBPACK_IMPORTED_MODULE_0__.Vector3,_ab=new three__WEBPACK_IMPORTED_MODULE_0__.Vector3,_cb=new three__WEBPACK_IMPORTED_MODULE_0__.Vector3;// mtllib file_reference
|
|
1239
|
+
// usemtl material_name
|
|
1240
|
+
// usemap map_name
|
|
1176
1241
|
function ParserState(){var state={objects:[],object:{},vertices:[],normals:[],colors:[],uvs:[],materials:{},materialLibraries:[],startObject:function startObject(name,fromDeclaration){// If the current object (initial from reset) is not from a g/o declaration in the parsed
|
|
1177
1242
|
// file. We need to use it for the first parsed g/o to keep things in sync.
|
|
1178
1243
|
if(this.object&&!1===this.object.fromDeclaration)return this.object.name=name,void(this.object.fromDeclaration=!1!==fromDeclaration);var previousMaterial=this.object&&"function"==typeof this.object.currentMaterial?this.object.currentMaterial():void 0;// Inherit previous objects material.
|
|
@@ -1188,8 +1253,9 @@ return end&&0===this.materials.length&&this.materials.push({name:"",smooth:this.
|
|
|
1188
1253
|
if(this.addVertex(ia,ib,ic),this.addColor(ia,ib,ic),void 0!==na&&""!==na){var nLen=this.normals.length;ia=this.parseNormalIndex(na,nLen),ib=this.parseNormalIndex(nb,nLen),ic=this.parseNormalIndex(nc,nLen),this.addNormal(ia,ib,ic)}else this.addFaceNormal(ia,ib,ic);// uvs
|
|
1189
1254
|
if(void 0!==ua&&""!==ua){var uvLen=this.uvs.length;ia=this.parseUVIndex(ua,uvLen),ib=this.parseUVIndex(ub,uvLen),ic=this.parseUVIndex(uc,uvLen),this.addUV(ia,ib,ic),this.object.geometry.hasUVIndices=!0}else// add placeholder values (for inconsistent face definitions)
|
|
1190
1255
|
this.addDefaultUV()},addPointGeometry:function addPointGeometry(vertices){this.object.geometry.type="Points";for(var index,vLen=this.vertices.length,vi=0,l=vertices.length;vi<l;vi++)index=this.parseVertexIndex(vertices[vi],vLen),this.addVertexPoint(index),this.addColor(index)},addLineGeometry:function addLineGeometry(vertices,uvs){this.object.geometry.type="Line";for(var vLen=this.vertices.length,uvLen=this.uvs.length,vi=0,l=vertices.length;vi<l;vi++)this.addVertexLine(this.parseVertexIndex(vertices[vi],vLen));for(var uvi=0,_l=uvs.length;uvi<_l;uvi++)this.addUVLine(this.parseUVIndex(uvs[uvi],uvLen))}};return state.startObject("",!1),state}//
|
|
1191
|
-
class OBJLoader extends three__WEBPACK_IMPORTED_MODULE_0__
|
|
1192
|
-
|
|
1256
|
+
class OBJLoader extends three__WEBPACK_IMPORTED_MODULE_0__.Loader{constructor(manager){super(manager),this.materials=null}load(url,onLoad,onProgress,onError){var scope=this,loader=new three__WEBPACK_IMPORTED_MODULE_0__.FileLoader(this.manager);loader.setPath(this.path),loader.setRequestHeader(this.requestHeader),loader.setWithCredentials(this.withCredentials),loader.load(url,function(text){try{onLoad(scope.parse(text))}catch(e){onError?onError(e):console.error(e),scope.manager.itemError(url)}},onProgress,onError)}setMaterials(materials){return this.materials=materials,this}parse(text){var state=new ParserState;-1!==text.indexOf("\r\n")&&(text=text.replace(/\r\n/g,"\n")),-1!==text.indexOf("\\\n")&&(text=text.replace(/\\\n/g,""));// Faster to just trim left side of the line. Use if available.
|
|
1257
|
+
for(var lines=text.split("\n"),line="",lineFirstChar="",lineLength=0,result=[],trimLeft="function"==typeof"".trimLeft,i=0,l=lines.length;i<l;i++)if(line=lines[i],line=trimLeft?line.trimLeft():line.trim(),(lineLength=line.length,0!==lineLength&&(lineFirstChar=line.charAt(0),"#"!==lineFirstChar)))// @todo invoke passed in handler if any
|
|
1258
|
+
if("v"===lineFirstChar){var data=line.split(/\s+/);switch(data[0]){case"v":state.vertices.push(parseFloat(data[1]),parseFloat(data[2]),parseFloat(data[3])),7<=data.length?state.colors.push(parseFloat(data[4]),parseFloat(data[5]),parseFloat(data[6])):state.colors.push(void 0,void 0,void 0);break;case"vn":state.normals.push(parseFloat(data[1]),parseFloat(data[2]),parseFloat(data[3]));break;case"vt":state.uvs.push(parseFloat(data[1]),parseFloat(data[2]))}}else if("f"===lineFirstChar){// Parse the face vertex data into an easy to work with format
|
|
1193
1259
|
for(var vertex,lineData=line.substr(1).trim(),vertexData=lineData.split(/\s+/),faceVertices=[],j=0,jl=vertexData.length;j<jl;j++)if(vertex=vertexData[j],0<vertex.length){var vertexParts=vertex.split("/");faceVertices.push(vertexParts)}// Draw an edge between the first vertex and all subsequent vertices to form an n-gon
|
|
1194
1260
|
for(var v1=faceVertices[0],_j=1,_jl=faceVertices.length-1;_j<_jl;_j++){var v2=faceVertices[_j],v3=faceVertices[_j+1];state.addFace(v1[0],v2[0],v3[0],v1[1],v2[1],v3[1],v1[2],v2[2],v3[2])}}else if("l"===lineFirstChar){var lineParts=line.substring(1).trim().split(" "),lineVertices=[],lineUVs=[];if(-1===line.indexOf("/"))lineVertices=lineParts;else for(var parts,li=0,llen=lineParts.length;li<llen;li++)parts=lineParts[li].split("/"),""!==parts[0]&&lineVertices.push(parts[0]),""!==parts[1]&&lineUVs.push(parts[1]);state.addLineGeometry(lineVertices,lineUVs)}else if("p"===lineFirstChar){var _lineData=line.substr(1).trim(),pointData=_lineData.split(" ");state.addPointGeometry(pointData)}else if(null!==(result=_object_pattern.exec(line))){// o object_name
|
|
1195
1261
|
// or
|
|
@@ -1219,41 +1285,43 @@ console.warn("THREE.OBJLoader: Rendering identifier \"usemap\" not supported. Te
|
|
|
1219
1285
|
* than 0."
|
|
1220
1286
|
*/if(result=line.split(" "),1<result.length){var value=result[1].trim().toLowerCase();state.object.smooth="0"!==value&&"off"!==value}else// ZBrush can produce "s" lines #11707
|
|
1221
1287
|
state.object.smooth=!0;var material=state.object.currentMaterial();material&&(material.smooth=state.object.smooth)}else{// Handle null terminated files without exception
|
|
1222
|
-
if("\0"===line)continue;console.warn("THREE.OBJLoader: Unexpected line: \""+line+"\"")}state.finalize();var container=new three__WEBPACK_IMPORTED_MODULE_0__
|
|
1223
|
-
if(0!==geometry.vertices.length){var buffergeometry=new three__WEBPACK_IMPORTED_MODULE_0__
|
|
1224
|
-
if(_material=this.materials.create(sourceMaterial.name),isLine&&_material&&!(_material instanceof three__WEBPACK_IMPORTED_MODULE_0__
|
|
1225
|
-
var mesh=void 0;if(1<createdMaterials.length){for(var _sourceMaterial,_mi=0,_miLen=materials.length;_mi<_miLen;_mi++)_sourceMaterial=materials[_mi],buffergeometry.addGroup(_sourceMaterial.groupStart,_sourceMaterial.groupCount,_mi);mesh=isLine?new three__WEBPACK_IMPORTED_MODULE_0__
|
|
1226
|
-
if
|
|
1288
|
+
if("\0"===line)continue;console.warn("THREE.OBJLoader: Unexpected line: \""+line+"\"")}state.finalize();var container=new three__WEBPACK_IMPORTED_MODULE_0__.Group;container.materialLibraries=[].concat(state.materialLibraries);var hasPrimitives=1!==state.objects.length||0!==state.objects[0].geometry.vertices.length;if(!0==hasPrimitives)for(var _i=0,_l2=state.objects.length;_i<_l2;_i++){var object=state.objects[_i],geometry=object.geometry,materials=object.materials,isLine="Line"===geometry.type,isPoints="Points"===geometry.type,hasVertexColors=!1;// Skip o/g line declarations that did not follow with any faces
|
|
1289
|
+
if(0!==geometry.vertices.length){var buffergeometry=new three__WEBPACK_IMPORTED_MODULE_0__.BufferGeometry;buffergeometry.setAttribute("position",new three__WEBPACK_IMPORTED_MODULE_0__.Float32BufferAttribute(geometry.vertices,3)),0<geometry.normals.length&&buffergeometry.setAttribute("normal",new three__WEBPACK_IMPORTED_MODULE_0__.Float32BufferAttribute(geometry.normals,3)),0<geometry.colors.length&&(hasVertexColors=!0,buffergeometry.setAttribute("color",new three__WEBPACK_IMPORTED_MODULE_0__.Float32BufferAttribute(geometry.colors,3))),!0===geometry.hasUVIndices&&buffergeometry.setAttribute("uv",new three__WEBPACK_IMPORTED_MODULE_0__.Float32BufferAttribute(geometry.uvs,2));for(var createdMaterials=[],mi=0,miLen=materials.length;mi<miLen;mi++){var sourceMaterial=materials[mi],materialHash=sourceMaterial.name+"_"+sourceMaterial.smooth+"_"+hasVertexColors,_material=state.materials[materialHash];if(null!==this.materials)// mtl etc. loaders probably can't create line materials correctly, copy properties to a line material.
|
|
1290
|
+
if(_material=this.materials.create(sourceMaterial.name),isLine&&_material&&!(_material instanceof three__WEBPACK_IMPORTED_MODULE_0__.LineBasicMaterial)){var materialLine=new three__WEBPACK_IMPORTED_MODULE_0__.LineBasicMaterial;three__WEBPACK_IMPORTED_MODULE_0__.Material.prototype.copy.call(materialLine,_material),materialLine.color.copy(_material.color),_material=materialLine}else if(isPoints&&_material&&!(_material instanceof three__WEBPACK_IMPORTED_MODULE_0__.PointsMaterial)){var materialPoints=new three__WEBPACK_IMPORTED_MODULE_0__.PointsMaterial({size:10,sizeAttenuation:!1});three__WEBPACK_IMPORTED_MODULE_0__.Material.prototype.copy.call(materialPoints,_material),materialPoints.color.copy(_material.color),materialPoints.map=_material.map,_material=materialPoints}void 0===_material&&(_material=isLine?new three__WEBPACK_IMPORTED_MODULE_0__.LineBasicMaterial:isPoints?new three__WEBPACK_IMPORTED_MODULE_0__.PointsMaterial({size:1,sizeAttenuation:!1}):new three__WEBPACK_IMPORTED_MODULE_0__.MeshPhongMaterial,_material.name=sourceMaterial.name,_material.flatShading=!sourceMaterial.smooth,_material.vertexColors=hasVertexColors,state.materials[materialHash]=_material),createdMaterials.push(_material)}// Create mesh
|
|
1291
|
+
var mesh=void 0;if(1<createdMaterials.length){for(var _sourceMaterial,_mi=0,_miLen=materials.length;_mi<_miLen;_mi++)_sourceMaterial=materials[_mi],buffergeometry.addGroup(_sourceMaterial.groupStart,_sourceMaterial.groupCount,_mi);mesh=isLine?new three__WEBPACK_IMPORTED_MODULE_0__.LineSegments(buffergeometry,createdMaterials):isPoints?new three__WEBPACK_IMPORTED_MODULE_0__.Points(buffergeometry,createdMaterials):new three__WEBPACK_IMPORTED_MODULE_0__.Mesh(buffergeometry,createdMaterials)}else mesh=isLine?new three__WEBPACK_IMPORTED_MODULE_0__.LineSegments(buffergeometry,createdMaterials[0]):isPoints?new three__WEBPACK_IMPORTED_MODULE_0__.Points(buffergeometry,createdMaterials[0]):new three__WEBPACK_IMPORTED_MODULE_0__.Mesh(buffergeometry,createdMaterials[0]);mesh.name=object.name,container.add(mesh)}// Create materials
|
|
1292
|
+
}else// if there is only the default parser state object with no geometry data, interpret data as point cloud
|
|
1293
|
+
if(0<state.vertices.length){var _material2=new three__WEBPACK_IMPORTED_MODULE_0__.PointsMaterial({size:1,sizeAttenuation:!1}),_buffergeometry=new three__WEBPACK_IMPORTED_MODULE_0__.BufferGeometry;_buffergeometry.setAttribute("position",new three__WEBPACK_IMPORTED_MODULE_0__.Float32BufferAttribute(state.vertices,3)),0<state.colors.length&&void 0!==state.colors[0]&&(_buffergeometry.setAttribute("color",new three__WEBPACK_IMPORTED_MODULE_0__.Float32BufferAttribute(state.colors,3)),_material2.vertexColors=!0);var points=new three__WEBPACK_IMPORTED_MODULE_0__.Points(_buffergeometry,_material2);container.add(points)}return container}}
|
|
1227
1294
|
|
|
1228
1295
|
/***/ }),
|
|
1229
1296
|
/* 34 */
|
|
1230
|
-
/***/ (
|
|
1297
|
+
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
1231
1298
|
|
|
1232
|
-
var JSONLoader=__webpack_require__(14).JSONLoader;exports.PrimitivesLoader=function(){var concurrentDownloads=0;this.crossOrigin="Anonymous";var loader=new JSONLoader,waitingList=[];this.load=(url,onLoad,onProgress,onError)=>{if(20>concurrentDownloads){++concurrentDownloads,loader.crossOrigin=this.crossOrigin;var onLoadCallback=new onFinally(onLoad,this),onErrorCallback=new onFinally(onError,this);loader.load(url,onLoadCallback,onProgress,onErrorCallback)}else waitingList.push({url,onLoad,onProgress,onError})},this.loadFromWaitingList=()=>{var item=waitingList.shift();item&&this.load(item.url,item.onLoad,item.onProgress,item.onError)};var onFinally=function(callback,loader){return function(){--concurrentDownloads,callback(...arguments),loader.loadFromWaitingList()}};this.parse=data=>loader.parse(data)};
|
|
1299
|
+
var JSONLoader=(__webpack_require__(14).JSONLoader);exports.PrimitivesLoader=function(){var concurrentDownloads=0;this.crossOrigin="Anonymous";var loader=new JSONLoader,waitingList=[];this.load=(url,onLoad,onProgress,onError)=>{if(20>concurrentDownloads){++concurrentDownloads,loader.crossOrigin=this.crossOrigin;var onLoadCallback=new onFinally(onLoad,this),onErrorCallback=new onFinally(onError,this);loader.load(url,onLoadCallback,onProgress,onErrorCallback)}else waitingList.push({url,onLoad,onProgress,onError})},this.loadFromWaitingList=()=>{var item=waitingList.shift();item&&this.load(item.url,item.onLoad,item.onProgress,item.onError)};var onFinally=function(callback,loader){return function(){--concurrentDownloads,callback(...arguments),loader.loadFromWaitingList()}};this.parse=data=>loader.parse(data)};
|
|
1233
1300
|
|
|
1234
1301
|
/***/ }),
|
|
1235
1302
|
/* 35 */
|
|
1236
|
-
/***/ (
|
|
1303
|
+
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
1237
1304
|
|
|
1238
|
-
var THREE=__webpack_require__(3),GLTFLoader=__webpack_require__(36).GLTFLoader,GLTFToZincJSLoader=function(){var _this=this;/**
|
|
1305
|
+
var THREE=__webpack_require__(3),GLTFLoader=(__webpack_require__(36).GLTFLoader),GLTFToZincJSLoader=function(){var _this=this;/**
|
|
1239
1306
|
* Load GLTF into this scene object.
|
|
1240
1307
|
*
|
|
1241
1308
|
* @param {String} url - URL to the GLTF file
|
|
1242
1309
|
* @param {Function} finishCallback - Callback function which will be called
|
|
1243
1310
|
* once the glyphset is succssfully load in.
|
|
1244
|
-
*/this.parseGLTFObjects=(object,region,depth,finishCallback)=>{var childRegion=region;if(0!==depth)if("Object3D"!==object.type){var zincGeometry;if("Mesh"===object.type?zincGeometry=new(__webpack_require__(2).Geometry):"LineSegments"===object.type?zincGeometry=new(__webpack_require__(20).Lines):"Points"===object.type&&(zincGeometry=new(__webpack_require__(17).Pointset)),zincGeometry){var localTimeEnabled=!1,localMorphColour=!1;object.geometry&&object.geometry.morphAttributes&&(localTimeEnabled=!!object.geometry.morphAttributes.position,localMorphColour=!!object.geometry.morphAttributes.color),zincGeometry.setMesh(object.clone(),localTimeEnabled,localMorphColour),region.addZincObject(zincGeometry),zincGeometry.groupName=zincGeometry.morph.name,zincGeometry.morph.matrixAutoUpdate=!0,null!=finishCallback&&"function"==typeof finishCallback&&finishCallback(zincGeometry)}}else if(""!==object.name&&(region&&(childRegion=region.findOrCreateChildFromPath(object.name)),childRegion)){var group=childRegion.getGroup();group.position.copy(object.position),group.rotation.copy(object.rotation),group.quaternion.copy(object.quaternion),group.matrixAutoUpdate=!0}depth++,object.children.forEach(child=>{_this.parseGLTFObjects(child,childRegion,depth,finishCallback)})},this.setCamera=scene=>{scene.viewAll();var cameraControls=scene.getZincCameraControls(),viewport=cameraControls.getCurrentViewport();cameraControls.addViewport("default",viewport),cameraControls.setDefaultViewport("default")},this.load=(scene,region,url,finishCallback,allCompletedCallback)=>{var path=url.substring(0,url.lastIndexOf("/")+1),filename=url.substring(url.lastIndexOf("/")+1,url.length),loader=new GLTFLoader().setPath(path);loader.load(filename,function(gltf){console.log(gltf),_this.parseGLTFObjects(gltf.scene,region,0,finishCallback),_this.setCamera(scene),allCompletedCallback!=null&&"function"==typeof allCompletedCallback&&allCompletedCallback()})}};exports.GLTFToZincJSLoader=GLTFToZincJSLoader;
|
|
1311
|
+
*/this.parseGLTFObjects=(object,region,depth,finishCallback)=>{var childRegion=region;if(0!==depth)if("Object3D"!==object.type){var zincGeometry;if("Mesh"===object.type?zincGeometry=new((__webpack_require__(2).Geometry)):"LineSegments"===object.type?zincGeometry=new((__webpack_require__(20).Lines)):"Points"===object.type&&(zincGeometry=new((__webpack_require__(17).Pointset))),zincGeometry){var localTimeEnabled=!1,localMorphColour=!1;object.geometry&&object.geometry.morphAttributes&&(localTimeEnabled=!!object.geometry.morphAttributes.position,localMorphColour=!!object.geometry.morphAttributes.color),zincGeometry.setMesh(object.clone(),localTimeEnabled,localMorphColour),region.addZincObject(zincGeometry),zincGeometry.groupName=zincGeometry.morph.name,zincGeometry.morph.matrixAutoUpdate=!0,null!=finishCallback&&"function"==typeof finishCallback&&finishCallback(zincGeometry)}}else if(""!==object.name&&(region&&(childRegion=region.findOrCreateChildFromPath(object.name)),childRegion)){var group=childRegion.getGroup();group.position.copy(object.position),group.rotation.copy(object.rotation),group.quaternion.copy(object.quaternion),group.matrixAutoUpdate=!0}depth++,object.children.forEach(child=>{_this.parseGLTFObjects(child,childRegion,depth,finishCallback)})},this.setCamera=scene=>{scene.viewAll();var cameraControls=scene.getZincCameraControls(),viewport=cameraControls.getCurrentViewport();cameraControls.addViewport("default",viewport),cameraControls.setDefaultViewport("default")},this.load=(scene,region,url,finishCallback,allCompletedCallback)=>{var path=url.substring(0,url.lastIndexOf("/")+1),filename=url.substring(url.lastIndexOf("/")+1,url.length),loader=new GLTFLoader().setPath(path);loader.load(filename,function(gltf){console.log(gltf),_this.parseGLTFObjects(gltf.scene,region,0,finishCallback),_this.setCamera(scene),allCompletedCallback!=null&&"function"==typeof allCompletedCallback&&allCompletedCallback()})}};exports.GLTFToZincJSLoader=GLTFToZincJSLoader;
|
|
1245
1312
|
|
|
1246
1313
|
/***/ }),
|
|
1247
1314
|
/* 36 */
|
|
1248
|
-
/***/ (
|
|
1315
|
+
/***/ ((module) => {
|
|
1249
1316
|
|
|
1317
|
+
"use strict";
|
|
1250
1318
|
module.exports = require("three/examples/jsm/loaders/GLTFLoader");
|
|
1251
1319
|
|
|
1252
1320
|
/***/ }),
|
|
1253
1321
|
/* 37 */
|
|
1254
|
-
/***/ (
|
|
1322
|
+
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
1255
1323
|
|
|
1256
|
-
var GLTFExporter=__webpack_require__(38).GLTFExporter,SceneExporter=function(sceneIn){var scene=sceneIn;this.exportGLTF=binary=>{var rootRegion=scene.getRootRegion(),zincObjects=rootRegion.getAllObjects(!0),animations=[];zincObjects.forEach(zincObject=>{zincObject.animationClip&&animations.push({clip:zincObject.animationClip[0],mesh:zincObject.morph})});var exporter=new GLTFExporter,options={binary,animations};return new Promise(resolve=>{exporter.parse(scene.getThreeJSScene(),function(gltf){resolve(gltf)},options)})}};/**
|
|
1324
|
+
var GLTFExporter=(__webpack_require__(38).GLTFExporter),SceneExporter=function(sceneIn){var scene=sceneIn;this.exportGLTF=binary=>{var rootRegion=scene.getRootRegion(),zincObjects=rootRegion.getAllObjects(!0),animations=[];zincObjects.forEach(zincObject=>{zincObject.animationClip&&animations.push({clip:zincObject.animationClip[0],mesh:zincObject.morph})});var exporter=new GLTFExporter,options={binary,animations};return new Promise(resolve=>{exporter.parse(scene.getThreeJSScene(),function(gltf){resolve(gltf)},options)})}};/**
|
|
1257
1325
|
* Provides an object which uses for exporting the scene
|
|
1258
1326
|
*
|
|
1259
1327
|
* @class
|
|
@@ -1263,11 +1331,13 @@ var GLTFExporter=__webpack_require__(38).GLTFExporter,SceneExporter=function(sce
|
|
|
1263
1331
|
|
|
1264
1332
|
/***/ }),
|
|
1265
1333
|
/* 38 */
|
|
1266
|
-
/***/ (
|
|
1334
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
1267
1335
|
|
|
1268
1336
|
"use strict";
|
|
1269
1337
|
__webpack_require__.r(__webpack_exports__);
|
|
1270
|
-
/* harmony export
|
|
1338
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
1339
|
+
/* harmony export */ GLTFExporter: () => (/* binding */ GLTFExporter)
|
|
1340
|
+
/* harmony export */ });
|
|
1271
1341
|
/* harmony import */ var three__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(3);
|
|
1272
1342
|
/* harmony import */ var three__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(three__WEBPACK_IMPORTED_MODULE_0__);
|
|
1273
1343
|
class GLTFExporter{constructor(){this.pluginCallbacks=[],this.register(function(writer){return new GLTFLightExtension(writer)}),this.register(function(writer){return new GLTFMaterialsUnlitExtension(writer)}),this.register(function(writer){return new GLTFMaterialsPBRSpecularGlossiness(writer)})}register(callback){return-1===this.pluginCallbacks.indexOf(callback)&&this.pluginCallbacks.push(callback),this}unregister(callback){return-1!==this.pluginCallbacks.indexOf(callback)&&this.pluginCallbacks.splice(this.pluginCallbacks.indexOf(callback),1),this}/**
|
|
@@ -1278,7 +1348,7 @@ class GLTFExporter{constructor(){this.pluginCallbacks=[],this.register(function(
|
|
|
1278
1348
|
*/parse(input,onDone,options){for(var writer=new GLTFWriter,plugins=[],i=0,il=this.pluginCallbacks.length;i<il;i++)plugins.push(this.pluginCallbacks[i](writer));writer.setPlugins(plugins),writer.write(input,onDone,options)}}//------------------------------------------------------------------------------
|
|
1279
1349
|
// Constants
|
|
1280
1350
|
//------------------------------------------------------------------------------
|
|
1281
|
-
var WEBGL_CONSTANTS={POINTS:0,LINES:1,LINE_LOOP:2,LINE_STRIP:3,TRIANGLES:4,TRIANGLE_STRIP:5,TRIANGLE_FAN:6,UNSIGNED_BYTE:5121,UNSIGNED_SHORT:5123,FLOAT:5126,UNSIGNED_INT:5125,ARRAY_BUFFER:34962,ELEMENT_ARRAY_BUFFER:34963,NEAREST:9728,LINEAR:9729,NEAREST_MIPMAP_NEAREST:9984,LINEAR_MIPMAP_NEAREST:9985,NEAREST_MIPMAP_LINEAR:9986,LINEAR_MIPMAP_LINEAR:9987,CLAMP_TO_EDGE:33071,MIRRORED_REPEAT:33648,REPEAT:10497},THREE_TO_WEBGL={};THREE_TO_WEBGL[three__WEBPACK_IMPORTED_MODULE_0__
|
|
1351
|
+
var WEBGL_CONSTANTS={POINTS:0,LINES:1,LINE_LOOP:2,LINE_STRIP:3,TRIANGLES:4,TRIANGLE_STRIP:5,TRIANGLE_FAN:6,UNSIGNED_BYTE:5121,UNSIGNED_SHORT:5123,FLOAT:5126,UNSIGNED_INT:5125,ARRAY_BUFFER:34962,ELEMENT_ARRAY_BUFFER:34963,NEAREST:9728,LINEAR:9729,NEAREST_MIPMAP_NEAREST:9984,LINEAR_MIPMAP_NEAREST:9985,NEAREST_MIPMAP_LINEAR:9986,LINEAR_MIPMAP_LINEAR:9987,CLAMP_TO_EDGE:33071,MIRRORED_REPEAT:33648,REPEAT:10497},THREE_TO_WEBGL={};THREE_TO_WEBGL[three__WEBPACK_IMPORTED_MODULE_0__.NearestFilter]=WEBGL_CONSTANTS.NEAREST,THREE_TO_WEBGL[three__WEBPACK_IMPORTED_MODULE_0__.NearestMipmapNearestFilter]=WEBGL_CONSTANTS.NEAREST_MIPMAP_NEAREST,THREE_TO_WEBGL[three__WEBPACK_IMPORTED_MODULE_0__.NearestMipmapLinearFilter]=WEBGL_CONSTANTS.NEAREST_MIPMAP_LINEAR,THREE_TO_WEBGL[three__WEBPACK_IMPORTED_MODULE_0__.LinearFilter]=WEBGL_CONSTANTS.LINEAR,THREE_TO_WEBGL[three__WEBPACK_IMPORTED_MODULE_0__.LinearMipmapNearestFilter]=WEBGL_CONSTANTS.LINEAR_MIPMAP_NEAREST,THREE_TO_WEBGL[three__WEBPACK_IMPORTED_MODULE_0__.LinearMipmapLinearFilter]=WEBGL_CONSTANTS.LINEAR_MIPMAP_LINEAR,THREE_TO_WEBGL[three__WEBPACK_IMPORTED_MODULE_0__.ClampToEdgeWrapping]=WEBGL_CONSTANTS.CLAMP_TO_EDGE,THREE_TO_WEBGL[three__WEBPACK_IMPORTED_MODULE_0__.RepeatWrapping]=WEBGL_CONSTANTS.REPEAT,THREE_TO_WEBGL[three__WEBPACK_IMPORTED_MODULE_0__.MirroredRepeatWrapping]=WEBGL_CONSTANTS.MIRRORED_REPEAT;var PATH_PROPERTIES={scale:"scale",position:"translation",quaternion:"rotation",morphTargetInfluences:"weights"},GLB_HEADER_BYTES=12,GLB_HEADER_MAGIC=1179937895,GLB_VERSION=2,GLB_CHUNK_PREFIX_BYTES=8,GLB_CHUNK_TYPE_JSON=1313821514,GLB_CHUNK_TYPE_BIN=5130562;// GLB constants
|
|
1282
1352
|
// https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#glb-file-format-specification
|
|
1283
1353
|
//------------------------------------------------------------------------------
|
|
1284
1354
|
// Utility functions
|
|
@@ -1325,7 +1395,9 @@ value=text.charCodeAt(i),array[i]=255<value?32:value;return array.buffer}/**
|
|
|
1325
1395
|
* @param {Function} onDone Callback on completed
|
|
1326
1396
|
* @param {Object} options options
|
|
1327
1397
|
*/write(input,onDone,options){this.options=Object.assign({},{// default options
|
|
1328
|
-
binary:!1,trs:!1,onlyVisible:!0,truncateDrawRange:!0,embedImages:!0,maxTextureSize:1/0,animations:[],includeCustomExtensions:!1},options),0<this.options.animations.length&&(this.options.trs=!0),this.processInput(input);var writer=this;Promise.all(this.pending).then(function(){var buffers=writer.buffers,json=writer.json,options=writer.options,extensionsUsed=writer.extensionsUsed,blob=new Blob(buffers,{type:"application/octet-stream"}),extensionsUsedList=Object.keys(extensionsUsed)
|
|
1398
|
+
binary:!1,trs:!1,onlyVisible:!0,truncateDrawRange:!0,embedImages:!0,maxTextureSize:1/0,animations:[],includeCustomExtensions:!1},options),0<this.options.animations.length&&(this.options.trs=!0),this.processInput(input);var writer=this;Promise.all(this.pending).then(function(){var buffers=writer.buffers,json=writer.json,options=writer.options,extensionsUsed=writer.extensionsUsed,blob=new Blob(buffers,{type:"application/octet-stream"}),extensionsUsedList=Object.keys(extensionsUsed);// Merge buffers.
|
|
1399
|
+
// Declare extensions.
|
|
1400
|
+
if(0<extensionsUsedList.length&&(json.extensionsUsed=extensionsUsedList),json.buffers&&0<json.buffers.length&&(json.buffers[0].byteLength=blob.size),!0===options.binary){// https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#glb-file-format-specification
|
|
1329
1401
|
var reader=new window.FileReader;reader.readAsArrayBuffer(blob),reader.onloadend=function(){// Binary chunk.
|
|
1330
1402
|
var binaryChunk=getPaddedArrayBuffer(reader.result),binaryChunkPrefix=new DataView(new ArrayBuffer(GLB_CHUNK_PREFIX_BYTES));binaryChunkPrefix.setUint32(0,binaryChunk.byteLength,!0),binaryChunkPrefix.setUint32(4,GLB_CHUNK_TYPE_BIN,!0);// JSON chunk.
|
|
1331
1403
|
var jsonChunk=getPaddedArrayBuffer(stringToArrayBuffer(JSON.stringify(json)),32),jsonChunkPrefix=new DataView(new ArrayBuffer(GLB_CHUNK_PREFIX_BYTES));jsonChunkPrefix.setUint32(0,jsonChunk.byteLength,!0),jsonChunkPrefix.setUint32(4,GLB_CHUNK_TYPE_JSON,!0);// GLB header.
|
|
@@ -1344,14 +1416,14 @@ var header=new ArrayBuffer(GLB_HEADER_BYTES),headerView=new DataView(header);hea
|
|
|
1344
1416
|
*
|
|
1345
1417
|
* @param {BufferAttribute} normal
|
|
1346
1418
|
* @returns {Boolean}
|
|
1347
|
-
*/isNormalizedNormalAttribute(normal){var cache=this.cache;if(cache.attributesNormalized.has(normal))return!1;for(var v=new three__WEBPACK_IMPORTED_MODULE_0__
|
|
1419
|
+
*/isNormalizedNormalAttribute(normal){var cache=this.cache;if(cache.attributesNormalized.has(normal))return!1;for(var v=new three__WEBPACK_IMPORTED_MODULE_0__.Vector3,i=0,il=normal.count;i<il;i++)// 0.0005 is from glTF-validator
|
|
1348
1420
|
if(5e-4<Math.abs(v.fromBufferAttribute(normal,i).length()-1))return!1;return!0}/**
|
|
1349
1421
|
* Creates normalized normal buffer attribute.
|
|
1350
1422
|
*
|
|
1351
1423
|
* @param {BufferAttribute} normal
|
|
1352
1424
|
* @returns {BufferAttribute}
|
|
1353
1425
|
*
|
|
1354
|
-
*/createNormalizedNormalAttribute(normal){var cache=this.cache;if(cache.attributesNormalized.has(normal))return cache.attributesNormalized.get(normal);for(var attribute=normal.clone(),v=new three__WEBPACK_IMPORTED_MODULE_0__
|
|
1426
|
+
*/createNormalizedNormalAttribute(normal){var cache=this.cache;if(cache.attributesNormalized.has(normal))return cache.attributesNormalized.get(normal);for(var attribute=normal.clone(),v=new three__WEBPACK_IMPORTED_MODULE_0__.Vector3,i=0,il=attribute.count;i<il;i++)v.fromBufferAttribute(attribute,i),0===v.x&&0===v.y&&0===v.z?v.setX(1):v.normalize(),attribute.setXYZ(i,v.x,v.y,v.z);return cache.attributesNormalized.set(normal,attribute),attribute}/**
|
|
1355
1427
|
* Applies a texture transform, if present, to the map definition. Requires
|
|
1356
1428
|
* the KHR_texture_transform extension.
|
|
1357
1429
|
*
|
|
@@ -1391,7 +1463,7 @@ if(0===count)return null;var bufferViewTarget,minMax=getMinMax(attribute,start,c
|
|
|
1391
1463
|
* @param {Integer} format of the image (e.g. RGBFormat, RGBAFormat etc)
|
|
1392
1464
|
* @param {Boolean} flipY before writing out the image
|
|
1393
1465
|
* @return {Integer} Index of the processed texture in the "images" array
|
|
1394
|
-
*/processImage(image,format,flipY){var writer=this,cache=writer.cache,json=writer.json,options=writer.options,pending=writer.pending;cache.images.has(image)||cache.images.set(image,{});var cachedImages=cache.images.get(image),mimeType=format===three__WEBPACK_IMPORTED_MODULE_0__
|
|
1466
|
+
*/processImage(image,format,flipY){var writer=this,cache=writer.cache,json=writer.json,options=writer.options,pending=writer.pending;cache.images.has(image)||cache.images.set(image,{});var cachedImages=cache.images.get(image),mimeType=format===three__WEBPACK_IMPORTED_MODULE_0__.RGBAFormat?"image/png":"image/jpeg",key=mimeType+":flipY/"+flipY.toString();if(void 0!==cachedImages[key])return cachedImages[key];json.images||(json.images=[]);var imageDef={mimeType:mimeType};if(options.embedImages){var canvas=cachedCanvas=cachedCanvas||document.createElement("canvas");canvas.width=Math.min(image.width,options.maxTextureSize),canvas.height=Math.min(image.height,options.maxTextureSize);var ctx=canvas.getContext("2d");if(!0===flipY&&(ctx.translate(0,canvas.height),ctx.scale(1,-1)),"undefined"!=typeof HTMLImageElement&&image instanceof HTMLImageElement||"undefined"!=typeof HTMLCanvasElement&&image instanceof HTMLCanvasElement||"undefined"!=typeof OffscreenCanvas&&image instanceof OffscreenCanvas||"undefined"!=typeof ImageBitmap&&image instanceof ImageBitmap)ctx.drawImage(image,0,0,canvas.width,canvas.height);else{format!==three__WEBPACK_IMPORTED_MODULE_0__.RGBAFormat&&format!==three__WEBPACK_IMPORTED_MODULE_0__.RGBFormat&&console.error("GLTFExporter: Only RGB and RGBA formats are supported."),(image.width>options.maxTextureSize||image.height>options.maxTextureSize)&&console.warn("GLTFExporter: Image size is bigger than maxTextureSize",image);var data=new Uint8ClampedArray(4*(image.height*image.width));if(format===three__WEBPACK_IMPORTED_MODULE_0__.RGBAFormat)for(var i=0;i<data.length;i+=4)data[i+0]=image.data[i+0],data[i+1]=image.data[i+1],data[i+2]=image.data[i+2],data[i+3]=image.data[i+3];else for(var _i=0,j=0;_i<data.length;_i+=4,j+=3)data[_i+0]=image.data[j+0],data[_i+1]=image.data[j+1],data[_i+2]=image.data[j+2],data[_i+3]=255;ctx.putImageData(new ImageData(data,image.width,image.height),0,0)}!0===options.binary?pending.push(new Promise(function(resolve){canvas.toBlob(function(blob){writer.processBufferViewImage(blob).then(function(bufferViewIndex){imageDef.bufferView=bufferViewIndex,resolve()})},mimeType)})):imageDef.uri=canvas.toDataURL(mimeType)}else imageDef.uri=image.src;var index=json.images.push(imageDef)-1;return cachedImages[key]=index,index}/**
|
|
1395
1467
|
* Process sampler
|
|
1396
1468
|
* @param {Texture} map Texture to process
|
|
1397
1469
|
* @return {Integer} Index of the processed texture in the "samplers" array
|
|
@@ -1412,17 +1484,19 @@ var emissive=material.emissive.clone().multiplyScalar(material.emissiveIntensity
|
|
|
1412
1484
|
if(1<maxEmissiveComponent&&(emissive.multiplyScalar(1/maxEmissiveComponent),console.warn("THREE.GLTFExporter: Some emissive components exceed 1; emissive has been limited")),0<maxEmissiveComponent&&(materialDef.emissiveFactor=emissive.toArray()),material.emissiveMap){var emissiveMapDef={index:this.processTexture(material.emissiveMap)};this.applyTextureTransform(emissiveMapDef,material.emissiveMap),materialDef.emissiveTexture=emissiveMapDef}}// normalTexture
|
|
1413
1485
|
if(material.normalMap){var normalMapDef={index:this.processTexture(material.normalMap)};material.normalScale&&-1!==material.normalScale.x&&(material.normalScale.x!==material.normalScale.y&&console.warn("THREE.GLTFExporter: Normal scale components are different, ignoring Y and exporting X."),normalMapDef.scale=material.normalScale.x),this.applyTextureTransform(normalMapDef,material.normalMap),materialDef.normalTexture=normalMapDef}// occlusionTexture
|
|
1414
1486
|
if(material.aoMap){var occlusionMapDef={index:this.processTexture(material.aoMap),texCoord:1};1!==material.aoMapIntensity&&(occlusionMapDef.strength=material.aoMapIntensity),this.applyTextureTransform(occlusionMapDef,material.aoMap),materialDef.occlusionTexture=occlusionMapDef}// alphaMode
|
|
1415
|
-
material.transparent?materialDef.alphaMode="BLEND":0<material.alphaTest&&(materialDef.alphaMode="MASK",materialDef.alphaCutoff=material.alphaTest),material.side===three__WEBPACK_IMPORTED_MODULE_0__
|
|
1487
|
+
material.transparent?materialDef.alphaMode="BLEND":0<material.alphaTest&&(materialDef.alphaMode="MASK",materialDef.alphaCutoff=material.alphaTest),material.side===three__WEBPACK_IMPORTED_MODULE_0__.DoubleSide&&(materialDef.doubleSided=!0),""!==material.name&&(materialDef.name=material.name),this.serializeUserData(material,materialDef),this._invokeAll(function(ext){ext.writeMaterial&&ext.writeMaterial(material,materialDef)});var index=json.materials.push(materialDef)-1;return cache.materials.set(material,index),index}/**
|
|
1416
1488
|
* Process mesh
|
|
1417
1489
|
* @param {THREE.Mesh} mesh Mesh to process
|
|
1418
1490
|
* @return {Integer|null} Index of the processed mesh in the "meshes" array
|
|
1419
|
-
*/processMesh(mesh){var cache=this.cache,json=this.json,meshCacheKeyParts=[mesh.geometry.uuid];if(Array.isArray(mesh.material))for(var i=0,l=mesh.material.length;i<l;i++)meshCacheKeyParts.push(mesh.material[i].uuid);else meshCacheKeyParts.push(mesh.material.uuid);var meshCacheKey=meshCacheKeyParts.join(":");if(cache.meshes.has(meshCacheKey))return cache.meshes.get(meshCacheKey);var mode,geometry=mesh.geometry
|
|
1491
|
+
*/processMesh(mesh){var cache=this.cache,json=this.json,meshCacheKeyParts=[mesh.geometry.uuid];if(Array.isArray(mesh.material))for(var i=0,l=mesh.material.length;i<l;i++)meshCacheKeyParts.push(mesh.material[i].uuid);else meshCacheKeyParts.push(mesh.material.uuid);var meshCacheKey=meshCacheKeyParts.join(":");if(cache.meshes.has(meshCacheKey))return cache.meshes.get(meshCacheKey);var mode,geometry=mesh.geometry;// Use the correct mode
|
|
1492
|
+
if(mode=mesh.isLineSegments?WEBGL_CONSTANTS.LINES:mesh.isLineLoop?WEBGL_CONSTANTS.LINE_LOOP:mesh.isLine?WEBGL_CONSTANTS.LINE_STRIP:mesh.isPoints?WEBGL_CONSTANTS.POINTS:mesh.material.wireframe?WEBGL_CONSTANTS.LINES:WEBGL_CONSTANTS.TRIANGLES,!0!==geometry.isBufferGeometry)throw new Error("THREE.GLTFExporter: Geometry is not of type THREE.BufferGeometry.");var meshDef={},attributes={},primitives=[],targets=[],nameConversion={uv:"TEXCOORD_0",uv2:"TEXCOORD_1",color:"COLOR_0",skinWeight:"WEIGHTS_0",skinIndex:"JOINTS_0"},originalNormal=geometry.getAttribute("normal");// Conversion between attributes names in threejs and gltf spec
|
|
1493
|
+
void 0===originalNormal||this.isNormalizedNormalAttribute(originalNormal)||(console.warn("THREE.GLTFExporter: Creating normalized normal attribute from the non-normalized one."),geometry.setAttribute("normal",this.createNormalizedNormalAttribute(originalNormal)));// @QUESTION Detect if .vertexColors = true?
|
|
1420
1494
|
// For every attribute create an accessor
|
|
1421
1495
|
var modifiedAttribute=null;for(var attributeName in geometry.attributes)// Ignore morph target attributes, which are exported later.
|
|
1422
1496
|
if("morph"!==attributeName.substr(0,5)){var attribute=geometry.attributes[attributeName];attributeName=nameConversion[attributeName]||attributeName.toUpperCase();// Prefix all geometry attributes except the ones specifically
|
|
1423
1497
|
// listed in the spec; non-spec attributes are considered custom.
|
|
1424
1498
|
var validVertexAttributes=/^(POSITION|NORMAL|TANGENT|TEXCOORD_\d+|COLOR_\d+|JOINTS_\d+|WEIGHTS_\d+)$/;if(validVertexAttributes.test(attributeName)||(attributeName="_"+attributeName),cache.attributes.has(this.getUID(attribute))){attributes[attributeName]=cache.attributes.get(this.getUID(attribute));continue}// JOINTS_0 must be UNSIGNED_BYTE or UNSIGNED_SHORT.
|
|
1425
|
-
modifiedAttribute=null;var array=attribute.array;"JOINTS_0"!==attributeName||array instanceof Uint16Array||array instanceof Uint8Array||(console.warn("GLTFExporter: Attribute \"skinIndex\" converted to type UNSIGNED_SHORT."),modifiedAttribute=new three__WEBPACK_IMPORTED_MODULE_0__
|
|
1499
|
+
modifiedAttribute=null;var array=attribute.array;"JOINTS_0"!==attributeName||array instanceof Uint16Array||array instanceof Uint8Array||(console.warn("GLTFExporter: Attribute \"skinIndex\" converted to type UNSIGNED_SHORT."),modifiedAttribute=new three__WEBPACK_IMPORTED_MODULE_0__.BufferAttribute(new Uint16Array(array),attribute.itemSize,attribute.normalized));var accessor=this.processAccessor(modifiedAttribute||attribute,geometry);null!==accessor&&(attributes[attributeName]=accessor,cache.attributes.set(this.getUID(attribute),accessor))}// Skip if no exportable attributes found
|
|
1426
1500
|
if(void 0!==originalNormal&&geometry.setAttribute("normal",originalNormal),0===Object.keys(attributes).length)return null;// Morph targets
|
|
1427
1501
|
if(void 0!==mesh.morphTargetInfluences&&0<mesh.morphTargetInfluences.length){var weights=[],targetNames=[],reverseDictionary={};if(void 0!==mesh.morphTargetDictionary)for(var key in mesh.morphTargetDictionary)reverseDictionary[mesh.morphTargetDictionary[key]]=key;for(var _i2=0;_i2<mesh.morphTargetInfluences.length;++_i2){var target={},warned=!1;for(var _attributeName in geometry.morphAttributes){// glTF 2.0 morph supports only POSITION/NORMAL/TANGENT.
|
|
1428
1502
|
// Three.js doesn't support TANGENT yet.
|
|
@@ -1435,7 +1509,7 @@ var relativeAttribute=baseAttribute.clone();if(!geometry.morphTargetsRelative)if
|
|
|
1435
1509
|
* Process camera
|
|
1436
1510
|
* @param {THREE.Camera} camera Camera to process
|
|
1437
1511
|
* @return {Integer} Index of the processed mesh in the "camera" array
|
|
1438
|
-
*/processCamera(camera){var json=this.json;json.cameras||(json.cameras=[]);var isOrtho=camera.isOrthographicCamera,cameraDef={type:isOrtho?"orthographic":"perspective"};return isOrtho?cameraDef.orthographic={xmag:2*camera.right,ymag:2*camera.top,zfar:0>=camera.far?.001:camera.far,znear:0>camera.near?0:camera.near}:cameraDef.perspective={aspectRatio:camera.aspect,yfov:three__WEBPACK_IMPORTED_MODULE_0__
|
|
1512
|
+
*/processCamera(camera){var json=this.json;json.cameras||(json.cameras=[]);var isOrtho=camera.isOrthographicCamera,cameraDef={type:isOrtho?"orthographic":"perspective"};return isOrtho?cameraDef.orthographic={xmag:2*camera.right,ymag:2*camera.top,zfar:0>=camera.far?.001:camera.far,znear:0>camera.near?0:camera.near}:cameraDef.perspective={aspectRatio:camera.aspect,yfov:three__WEBPACK_IMPORTED_MODULE_0__.MathUtils.degToRad(camera.fov),zfar:0>=camera.far?.001:camera.far,znear:0>camera.near?0:camera.near},""!==camera.name&&(cameraDef.name=camera.type),json.cameras.push(cameraDef)-1}/**
|
|
1439
1513
|
* Creates glTF animation entry from AnimationClip object.
|
|
1440
1514
|
*
|
|
1441
1515
|
* Status:
|
|
@@ -1444,14 +1518,14 @@ var relativeAttribute=baseAttribute.clone();if(!geometry.morphTargetsRelative)if
|
|
|
1444
1518
|
* @param {THREE.AnimationClip} clip
|
|
1445
1519
|
* @param {THREE.Object3D} root
|
|
1446
1520
|
* @return {number|null}
|
|
1447
|
-
*/processAnimation(clip,root){var json=this.json,nodeMap=this.nodeMap;json.animations||(json.animations=[]),clip=GLTFExporter.Utils.mergeMorphTargetTracks(clip.clone(),root);for(var tracks=clip.tracks,channels=[],samplers=[],i=0;i<tracks.length;++i){var track=tracks[i],trackBinding=three__WEBPACK_IMPORTED_MODULE_0__
|
|
1521
|
+
*/processAnimation(clip,root){var json=this.json,nodeMap=this.nodeMap;json.animations||(json.animations=[]),clip=GLTFExporter.Utils.mergeMorphTargetTracks(clip.clone(),root);for(var tracks=clip.tracks,channels=[],samplers=[],i=0;i<tracks.length;++i){var track=tracks[i],trackBinding=three__WEBPACK_IMPORTED_MODULE_0__.PropertyBinding.parseTrackName(track.name),trackNode=three__WEBPACK_IMPORTED_MODULE_0__.PropertyBinding.findNode(root,trackBinding.nodeName),trackProperty=PATH_PROPERTIES[trackBinding.propertyName];if("bones"===trackBinding.objectName&&(!0===trackNode.isSkinnedMesh?trackNode=trackNode.skeleton.getBoneByName(trackBinding.objectIndex):trackNode=void 0),!trackNode||!trackProperty)return console.warn("THREE.GLTFExporter: Could not export animation track \"%s\".",track.name),null;var inputItemSize=1,outputItemSize=track.values.length/track.times.length;trackProperty===PATH_PROPERTIES.morphTargetInfluences&&(outputItemSize/=trackNode.morphTargetInfluences.length);var interpolation=void 0;// @TODO export CubicInterpolant(InterpolateSmooth) as CUBICSPLINE
|
|
1448
1522
|
// Detecting glTF cubic spline interpolant by checking factory method's special property
|
|
1449
1523
|
// GLTFCubicSplineInterpolant is a custom interpolant and track doesn't return
|
|
1450
1524
|
// valid value from .getInterpolation().
|
|
1451
|
-
!0===track.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline?(interpolation="CUBICSPLINE",outputItemSize/=3):track.getInterpolation()===three__WEBPACK_IMPORTED_MODULE_0__
|
|
1525
|
+
!0===track.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline?(interpolation="CUBICSPLINE",outputItemSize/=3):track.getInterpolation()===three__WEBPACK_IMPORTED_MODULE_0__.InterpolateDiscrete?interpolation="STEP":interpolation="LINEAR",samplers.push({input:this.processAccessor(new three__WEBPACK_IMPORTED_MODULE_0__.BufferAttribute(track.times,inputItemSize)),output:this.processAccessor(new three__WEBPACK_IMPORTED_MODULE_0__.BufferAttribute(track.values,outputItemSize)),interpolation:interpolation}),channels.push({sampler:samplers.length-1,target:{node:nodeMap.get(trackNode),path:trackProperty}})}return json.animations.push({name:clip.name||"clip_"+json.animations.length,samplers:samplers,channels:channels}),json.animations.length-1}/**
|
|
1452
1526
|
* @param {THREE.Object3D} object
|
|
1453
1527
|
* @return {number|null}
|
|
1454
|
-
*/processSkin(object){var json=this.json,nodeMap=this.nodeMap,node=json.nodes[nodeMap.get(object)],skeleton=object.skeleton;if(skeleton===void 0)return null;var rootJoint=object.skeleton.bones[0];if(rootJoint===void 0)return null;for(var joints=[],inverseBindMatrices=new Float32Array(16*skeleton.bones.length),temporaryBoneInverse=new three__WEBPACK_IMPORTED_MODULE_0__
|
|
1528
|
+
*/processSkin(object){var json=this.json,nodeMap=this.nodeMap,node=json.nodes[nodeMap.get(object)],skeleton=object.skeleton;if(skeleton===void 0)return null;var rootJoint=object.skeleton.bones[0];if(rootJoint===void 0)return null;for(var joints=[],inverseBindMatrices=new Float32Array(16*skeleton.bones.length),temporaryBoneInverse=new three__WEBPACK_IMPORTED_MODULE_0__.Matrix4,i=0;i<skeleton.bones.length;++i)joints.push(nodeMap.get(skeleton.bones[i])),temporaryBoneInverse.copy(skeleton.boneInverses[i]),temporaryBoneInverse.multiply(object.bindMatrix).toArray(inverseBindMatrices,16*i);json.skins===void 0&&(json.skins=[]),json.skins.push({inverseBindMatrices:this.processAccessor(new three__WEBPACK_IMPORTED_MODULE_0__.BufferAttribute(inverseBindMatrices,16)),joints:joints,skeleton:nodeMap.get(rootJoint)});var skinIndex=node.skin=json.skins.length-1;return skinIndex}/**
|
|
1455
1529
|
* Process Object3D node
|
|
1456
1530
|
* @param {THREE.Object3D} node Object3D to processNode
|
|
1457
1531
|
* @return {Integer} Index of the node in the nodes list
|
|
@@ -1462,11 +1536,11 @@ if(""!==object.name&&(nodeDef.name=object.name+""),this.serializeUserData(object
|
|
|
1462
1536
|
*/processScene(scene){var json=this.json,options=this.options;json.scenes||(json.scenes=[],json.scene=0);var sceneDef={};""!==scene.name&&(sceneDef.name=scene.name),json.scenes.push(sceneDef);for(var child,nodes=[],i=0,l=scene.children.length;i<l;i++)if(child=scene.children[i],child.visible||!1===options.onlyVisible){var nodeIndex=this.processNode(child);null!==nodeIndex&&nodes.push(nodeIndex)}0<nodes.length&&(sceneDef.nodes=nodes),this.serializeUserData(scene,sceneDef)}/**
|
|
1463
1537
|
* Creates a Scene to hold a list of objects and parse it
|
|
1464
1538
|
* @param {Array} objects List of objects to process
|
|
1465
|
-
*/processObjects(objects){var scene=new three__WEBPACK_IMPORTED_MODULE_0__
|
|
1539
|
+
*/processObjects(objects){var scene=new three__WEBPACK_IMPORTED_MODULE_0__.Scene;scene.name="AuxScene";for(var i=0;i<objects.length;i++)// We push directly to children instead of calling `add` to prevent
|
|
1466
1540
|
// modify the .parent and break its original scene and hierarchy
|
|
1467
1541
|
scene.children.push(objects[i]);this.processScene(scene)}/**
|
|
1468
1542
|
* @param {THREE.Object3D|Array<THREE.Object3D>} input
|
|
1469
|
-
*/processInput(input){var options=this.options;input=input instanceof Array?input:[input],this._invokeAll(function(ext){ext.beforeParse&&ext.beforeParse(input)});for(var objectsWithoutScene=[],i=0;i<input.length;i++)input[i]instanceof three__WEBPACK_IMPORTED_MODULE_0__
|
|
1543
|
+
*/processInput(input){var options=this.options;input=input instanceof Array?input:[input],this._invokeAll(function(ext){ext.beforeParse&&ext.beforeParse(input)});for(var objectsWithoutScene=[],i=0;i<input.length;i++)input[i]instanceof three__WEBPACK_IMPORTED_MODULE_0__.Scene?this.processScene(input[i]):objectsWithoutScene.push(input[i]);0<objectsWithoutScene.length&&this.processObjects(objectsWithoutScene);for(var _i4=0;_i4<this.skins.length;++_i4)this.processSkin(this.skins[_i4]);for(var _i5=0;_i5<options.animations.length;++_i5)this.processAnimation(options.animations[_i5].clip,options.animations[_i5].mesh);this._invokeAll(function(ext){ext.afterParse&&ext.afterParse(input)})}_invokeAll(func){for(var i=0,il=this.plugins.length;i<il;i++)func(this.plugins[i])}}/**
|
|
1470
1544
|
* Punctual Lights Extension
|
|
1471
1545
|
*
|
|
1472
1546
|
* Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_lights_punctual
|
|
@@ -1481,9 +1555,9 @@ scene.children.push(objects[i]);this.processScene(scene)}/**
|
|
|
1481
1555
|
*/class GLTFMaterialsPBRSpecularGlossiness{constructor(writer){this.writer=writer,this.name="KHR_materials_pbrSpecularGlossiness"}writeMaterial(material,materialDef){if(material.isGLTFSpecularGlossinessMaterial){var writer=this.writer,extensionsUsed=writer.extensionsUsed,extensionDef={};materialDef.pbrMetallicRoughness.baseColorFactor&&(extensionDef.diffuseFactor=materialDef.pbrMetallicRoughness.baseColorFactor);var specularFactor=[1,1,1];if(material.specular.toArray(specularFactor,0),extensionDef.specularFactor=specularFactor,extensionDef.glossinessFactor=material.glossiness,materialDef.pbrMetallicRoughness.baseColorTexture&&(extensionDef.diffuseTexture=materialDef.pbrMetallicRoughness.baseColorTexture),material.specularMap){var specularMapDef={index:writer.processTexture(material.specularMap)};writer.applyTextureTransform(specularMapDef,material.specularMap),extensionDef.specularGlossinessTexture=specularMapDef}materialDef.extensions=materialDef.extensions||{},materialDef.extensions[this.name]=extensionDef,extensionsUsed[this.name]=!0}}}/**
|
|
1482
1556
|
* Static utility functions
|
|
1483
1557
|
*/GLTFExporter.Utils={insertKeyframe:function insertKeyframe(track,time){var index,tolerance=.001,valueSize=track.getValueSize(),times=new track.TimeBufferType(track.times.length+1),values=new track.ValueBufferType(track.values.length+valueSize),interpolant=track.createInterpolant(new track.ValueBufferType(valueSize));// 1ms
|
|
1484
|
-
if(0===track.times.length){times[0]=time;for(var i=0;i<valueSize;i++)values[i]=0;index=0}else if(time<track.times[0]){if(Math.abs(track.times[0]-time)<tolerance)return 0;times[0]=time,times.set(track.times,1),values.set(interpolant.evaluate(time),0),values.set(track.values,valueSize),index=0}else if(time>track.times[track.times.length-1]){if(Math.abs(track.times[track.times.length-1]-time)<tolerance)return track.times.length-1;times[times.length-1]=time,times.set(track.times,0),values.set(track.values,0),values.set(interpolant.evaluate(time),track.values.length),index=times.length-1}else for(var _i6=0;_i6<track.times.length;_i6++){if(Math.abs(track.times[_i6]-time)<tolerance)return _i6;if(track.times[_i6]<time&&track.times[_i6+1]>time){times.set(track.times.slice(0,_i6+1),0),times[_i6+1]=time,times.set(track.times.slice(_i6+1),_i6+2),values.set(track.values.slice(0,(_i6+1)*valueSize),0),values.set(interpolant.evaluate(time),(_i6+1)*valueSize),values.set(track.values.slice((_i6+1)*valueSize),(_i6+2)*valueSize),index=_i6+1;break}}return track.times=times,track.values=values,index},mergeMorphTargetTracks:function mergeMorphTargetTracks(clip,root){for(var tracks=[],mergedTracks={},sourceTracks=clip.tracks,i=0;i<sourceTracks.length;++i){var sourceTrack=sourceTracks[i],sourceTrackBinding=three__WEBPACK_IMPORTED_MODULE_0__
|
|
1558
|
+
if(0===track.times.length){times[0]=time;for(var i=0;i<valueSize;i++)values[i]=0;index=0}else if(time<track.times[0]){if(Math.abs(track.times[0]-time)<tolerance)return 0;times[0]=time,times.set(track.times,1),values.set(interpolant.evaluate(time),0),values.set(track.values,valueSize),index=0}else if(time>track.times[track.times.length-1]){if(Math.abs(track.times[track.times.length-1]-time)<tolerance)return track.times.length-1;times[times.length-1]=time,times.set(track.times,0),values.set(track.values,0),values.set(interpolant.evaluate(time),track.values.length),index=times.length-1}else for(var _i6=0;_i6<track.times.length;_i6++){if(Math.abs(track.times[_i6]-time)<tolerance)return _i6;if(track.times[_i6]<time&&track.times[_i6+1]>time){times.set(track.times.slice(0,_i6+1),0),times[_i6+1]=time,times.set(track.times.slice(_i6+1),_i6+2),values.set(track.values.slice(0,(_i6+1)*valueSize),0),values.set(interpolant.evaluate(time),(_i6+1)*valueSize),values.set(track.values.slice((_i6+1)*valueSize),(_i6+2)*valueSize),index=_i6+1;break}}return track.times=times,track.values=values,index},mergeMorphTargetTracks:function mergeMorphTargetTracks(clip,root){for(var tracks=[],mergedTracks={},sourceTracks=clip.tracks,i=0;i<sourceTracks.length;++i){var sourceTrack=sourceTracks[i],sourceTrackBinding=three__WEBPACK_IMPORTED_MODULE_0__.PropertyBinding.parseTrackName(sourceTrack.name),sourceTrackNode=three__WEBPACK_IMPORTED_MODULE_0__.PropertyBinding.findNode(root,sourceTrackBinding.nodeName);if("morphTargetInfluences"!==sourceTrackBinding.propertyName||void 0===sourceTrackBinding.propertyIndex){tracks.push(sourceTrack);continue}if(sourceTrack.createInterpolant!==sourceTrack.InterpolantFactoryMethodDiscrete&&sourceTrack.createInterpolant!==sourceTrack.InterpolantFactoryMethodLinear){if(sourceTrack.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline)// This should never happen, because glTF morph target animations
|
|
1485
1559
|
// affect all targets already.
|
|
1486
|
-
throw new Error("THREE.GLTFExporter: Cannot merge tracks with glTF CUBICSPLINE interpolation.");console.warn("THREE.GLTFExporter: Morph target interpolation mode not yet supported. Using LINEAR instead."),sourceTrack=sourceTrack.clone(),sourceTrack.setInterpolation(three__WEBPACK_IMPORTED_MODULE_0__
|
|
1560
|
+
throw new Error("THREE.GLTFExporter: Cannot merge tracks with glTF CUBICSPLINE interpolation.");console.warn("THREE.GLTFExporter: Morph target interpolation mode not yet supported. Using LINEAR instead."),sourceTrack=sourceTrack.clone(),sourceTrack.setInterpolation(three__WEBPACK_IMPORTED_MODULE_0__.InterpolateLinear)}var targetCount=sourceTrackNode.morphTargetInfluences.length,targetIndex=sourceTrackNode.morphTargetDictionary[sourceTrackBinding.propertyIndex];if(void 0===targetIndex)throw new Error("THREE.GLTFExporter: Morph target name not found: "+sourceTrackBinding.propertyIndex);var mergedTrack=void 0;// If this is the first time we've seen this object, create a new
|
|
1487
1561
|
// track to store merged keyframe data for each morph target.
|
|
1488
1562
|
if(void 0===mergedTracks[sourceTrackNode.uuid]){mergedTrack=sourceTrack.clone();for(var values=new mergedTrack.ValueBufferType(targetCount*mergedTrack.times.length),j=0;j<mergedTrack.times.length;j++)values[j*targetCount+targetIndex]=mergedTrack.values[j];// We need to take into consideration the intended target node
|
|
1489
1563
|
// of our original un-merged morphTarget animation.
|
|
@@ -1496,17 +1570,20 @@ for(var keyframeIndex,_j3=0;_j3<sourceTrack.times.length;_j3++)keyframeIndex=thi
|
|
|
1496
1570
|
|
|
1497
1571
|
/***/ }),
|
|
1498
1572
|
/* 39 */
|
|
1499
|
-
/***/ (
|
|
1573
|
+
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
1500
1574
|
|
|
1501
|
-
var THREE=__webpack_require__(3),resolveURL=__webpack_require__(4).resolveURL,Viewport=function(){this.nearPlane=.168248,this.farPlane=6.82906,this.eyePosition=[.5,-2.86496,.5],this.targetPosition=[.5,.5,.5],this.upVector=[0,0,1];var _this=this;this.setFromObject=
|
|
1575
|
+
var THREE=__webpack_require__(3),resolveURL=(__webpack_require__(4).resolveURL),Viewport=function(){this.nearPlane=.168248,this.farPlane=6.82906,this.eyePosition=[.5,-2.86496,.5],this.targetPosition=[.5,.5,.5],this.upVector=[0,0,1];var _this=this;this.setFromObject=_ref=>{var{nearPlane,farPlane,eyePosition,targetPosition,upVector}=_ref;_this.nearPlane=nearPlane,_this.farPlane=farPlane,_this.eyePosition=eyePosition,_this.targetPosition=targetPosition,_this.upVector=upVector}},CameraControls=function(object,domElement,renderer,scene){var MODE={NONE:-1,DEFAULT:0,PATH:1,SMOOTH_CAMERA_TRANSITION:2,AUTO_TUMBLE:3,ROTATE_TRANSITION:4,MINIMAP:5,SYNC_CONTROL:6},STATE={NONE:-1,ROTATE:0,ZOOM:1,PAN:2,TOUCH_ROTATE:3,TOUCH_ZOOM:4,TOUCH_PAN:5,SCROLL:6},ROTATE_DIRECTION={NONE:-1,FREE:1,HORIZONTAL:2,VERTICAL:3},CLICK_ACTION={};/**
|
|
1502
1576
|
* Actions states.
|
|
1503
1577
|
* Available states are NONE, ROTATE, ZOOM, PAN, TOUCH_ROTATE, TOUCH_ZOOM, TOUCH_PAN and SCROLL.
|
|
1504
1578
|
* @property {Object}
|
|
1505
|
-
*/
|
|
1579
|
+
*/ /**
|
|
1580
|
+
* Available click actions are MAIN, AUXILIARY and SECONARY.
|
|
1581
|
+
* @property {Object}
|
|
1582
|
+
*/CLICK_ACTION.MAIN=STATE.ROTATE,CLICK_ACTION.AUXILIARY=STATE.ZOOM,CLICK_ACTION.SECONDARY=STATE.PAN,this.cameraObject=object,this.domElement=domElement===void 0?document:domElement,this.renderer=renderer,this.scene=scene,this.tumble_rate=1.5,this.pointer_x=0,this.pointer_y=0,this.pointer_x_start=0,this.pointer_y_start=0,this.previous_pointer_x=0,this.previous_pointer_y=0,this.near_plane_fly_debt=0,this.touchZoomDistanceStart=0,this.touchZoomDistanceEnd=0,this.directionalLight=0,this.scrollRate=50;var duration=6e3,enabled=!0,inbuildTime=0,cameraPath=void 0,numberOfCameraPoint=void 0,updateLightWithPathFlag=!1,playRate=500,deviceOrientationControl=void 0,defaultViewport="default",currentMode=MODE.DEFAULT,smoothCameraTransitionObject=void 0,rotateCameraTransitionObject=void 0,cameraAutoTumbleObject=void 0,mouseScroll=0,rotateMode=ROTATE_DIRECTION.FREE;this._state=STATE.NONE;var zincRayCaster;this.targetTouchId=-1;var rect=void 0,_a=new THREE.Vector3,_b=new THREE.Vector3,_c=new THREE.Vector3,_new_b=new THREE.Vector3,_new_c=new THREE.Vector3,_axis=new THREE.Vector3,_v=new THREE.Vector3,_rel_eye=new THREE.Vector3,sceneSphere=new THREE.Sphere,_tempEye=new THREE.Vector3,ndcControl=void 0,maxDist=0,viewports={default:new Viewport};viewports.default.nearPlane=.1,viewports.default.farPlane=2e3,viewports.default.eyePosition=[0,0,0],viewports.default.targetPosition=[0,0,-1],viewports.default.upVector=[0,1,0],this.cameraObject.target===void 0&&(this.cameraObject.target=new THREE.Vector3(...viewports.default.targetPosition)),this.calculateMaxAllowedDistance=scene=>{var box=scene.getBoundingBox();if(box){box.getBoundingSphere(sceneSphere),maxDist=6*sceneSphere.radius;var currentDist=0;this.cameraObject&&(currentDist=this.cameraObject.position.distanceTo(sceneSphere.center)),maxDist=currentDist>maxDist?currentDist:maxDist}else maxDist=0},this.addViewport=(viewportName,viewport)=>{viewportName&&viewport&&(viewports[viewportName]=viewport)},this.setDefaultViewport=defaultName=>!!(defaultName&&defaultName in viewports)&&(defaultViewport=defaultName,!0),this.getDefaultViewport=()=>defaultViewport,this.getViewportOfName=name=>viewports[name],this.setCurrentViewport=name=>!!(name in viewports)&&(this.setCurrentCameraSettings(viewports[name]),!0),this.setRotationMode=mode=>{switch(mode){case"none":rotateMode=ROTATE_DIRECTION.NONE;break;case"horizontal":rotateMode=ROTATE_DIRECTION.HORIZONTAL;break;case"vertical":rotateMode=ROTATE_DIRECTION.VERTICAL;break;case"free":default:rotateMode=ROTATE_DIRECTION.FREE}},this.onResize=()=>{rect&&(rect=void 0),ndcControl&&ndcControl.setCurrentCameraSettings(this.cameraObject,viewports[defaultViewport])},this.getNDCFromDocumentCoords=(x,y,positionIn)=>{updateRect(!1);var position=positionIn?positionIn:new THREE.Vector2,out_x=2*((x-rect.left)/rect.width)-1,out_y=2*-((y-rect.top)/rect.height)+1;return position.set(out_x,out_y)},this.getRelativeCoordsFromNDC=(x,y,positionIn)=>{updateRect(!1);var position=positionIn?positionIn:new THREE.Vector2;return position.x=(x+1)*rect.width/2,position.y=(1-y)*rect.height/2,position},this.setMouseButtonAction=(buttonName,actionName)=>{CLICK_ACTION[buttonName]=STATE[actionName]};//Make sure the camera does not travel beyond limit
|
|
1506
1583
|
var checkTravelDistance=()=>{if(0<maxDist){var newDist=_tempEye.distanceTo(sceneSphere.center);return maxDist>newDist||this.cameraObject.position.distanceTo(sceneSphere.center)>newDist}return!0},translateViewport=translation=>{_tempEye.copy(this.cameraObject.position).add(translation),checkTravelDistance()&&(this.cameraObject.target.add(translation),this.cameraObject.position.add(translation),this.updateDirectionalLight())},onDocumentMouseDown=event=>{updateRect(!1);// Check if mouse event hapens inside the minimap
|
|
1507
|
-
var minimapCoordinates;if(currentMode===MODE.DEFAULT&&(minimapCoordinates=this.scene.getNormalisedMinimapCoordinates(this.renderer,event)),!minimapCoordinates)0==event.button?event.ctrlKey?this._state=CLICK_ACTION.AUXILIARY:event.shiftKey?this._state=CLICK_ACTION.SECONDARY:this._state=CLICK_ACTION.MAIN:1==event.button?(event.preventDefault(),this._state=CLICK_ACTION.AUXILIARY):2==event.button&&(this._state=CLICK_ACTION.SECONDARY),this.pointer_x=event.clientX-rect.left,this.pointer_y=event.clientY-rect.top,this.pointer_x_start=this.pointer_x,this.pointer_y_start=this.pointer_y,this.previous_pointer_x=this.pointer_x,this.previous_pointer_y=this.pointer_y;else{currentMode=MODE.MINIMAP;var translation=this.scene.getMinimapDiffFromNormalised(minimapCoordinates.x,minimapCoordinates.y);translateViewport(translation)}},onDocumentMouseMove=event=>{if(updateRect(!1),this.pointer_x=event.clientX-rect.left,this.pointer_y=event.clientY-rect.top,currentMode===MODE.MINIMAP){var minimapCoordinates=this.scene.getNormalisedMinimapCoordinates(this.renderer,event);if(minimapCoordinates){var translation=this.scene.getMinimapDiffFromNormalised(minimapCoordinates.x,minimapCoordinates.y);translateViewport(translation)}}else this._state===STATE.NONE&&void 0!==zincRayCaster&&zincRayCaster.move(this,event.clientX,event.clientY,this.renderer)},onDocumentMouseUp=event=>{this._state=STATE.NONE,currentMode==MODE.MINIMAP&&(currentMode=MODE.DEFAULT),zincRayCaster!==void 0&&this.pointer_x_start==event.clientX-rect.left&&this.pointer_y_start==event.clientY-rect.top&&zincRayCaster.pick(this,event.clientX,event.clientY,this.renderer)},onDocumentMouseLeave=
|
|
1508
|
-
if(forced||rect===void 0){var observer=new IntersectionObserver(entries=>{for(var entry of entries)rect=entry.boundingClientRect;observer.disconnect()});observer.observe(this.domElement)}},onDocumentWheelEvent=event=>{updateRect(!1),this._state=STATE.SCROLL;var changes=0;0<event.deltaY?changes=this.scrollRate:0>event.deltaY&&(changes=-1*this.scrollRate),mouseScroll+=changes,event.preventDefault(),event.stopImmediatePropagation()},translate=()=>{if("undefined"!=typeof this.cameraObject){var height=rect.height,distance=this.cameraObject.position.distanceTo(this.cameraObject.target),fact=0;this.cameraObject.far>this.cameraObject.near&&distance>=this.cameraObject.near&&distance<=this.cameraObject.far&&(fact=(distance-this.cameraObject.near)/(this.cameraObject.far-this.cameraObject.near)),_b.set(this.previous_pointer_x,height-this.previous_pointer_y,0),_c.set(this.previous_pointer_x,height-this.previous_pointer_y,1),_new_b.set(this.pointer_x,height-this.pointer_y,0),_new_c.set(this.pointer_x,height-this.pointer_y,1),_b.unproject(this.cameraObject),_c.unproject(this.cameraObject),_new_b.unproject(this.cameraObject),_new_c.unproject(this.cameraObject);_new_b.sub(_b).multiplyScalar(1-fact),_new_c.sub(_c).multiplyScalar(fact),_new_b.add(_new_c).multiplyScalar(
|
|
1509
|
-
if(rotateMode===ROTATE_DIRECTION.FREE){var _d=dx*(this.pointer_x-.5*(width-1))+dy*(.5*(height-1)-this.pointer_y);_d>radius?_d=radius:_d<-radius&&(_d=-radius)}var phi=Math.acos(
|
|
1584
|
+
var minimapCoordinates;if(currentMode===MODE.DEFAULT&&(minimapCoordinates=this.scene.getNormalisedMinimapCoordinates(this.renderer,event)),!minimapCoordinates)0==event.button?event.ctrlKey?this._state=CLICK_ACTION.AUXILIARY:event.shiftKey?this._state=CLICK_ACTION.SECONDARY:this._state=CLICK_ACTION.MAIN:1==event.button?(event.preventDefault(),this._state=CLICK_ACTION.AUXILIARY):2==event.button&&(this._state=CLICK_ACTION.SECONDARY),this.pointer_x=event.clientX-rect.left,this.pointer_y=event.clientY-rect.top,this.pointer_x_start=this.pointer_x,this.pointer_y_start=this.pointer_y,this.previous_pointer_x=this.pointer_x,this.previous_pointer_y=this.pointer_y;else{currentMode=MODE.MINIMAP;var translation=this.scene.getMinimapDiffFromNormalised(minimapCoordinates.x,minimapCoordinates.y);translateViewport(translation)}},onDocumentMouseMove=event=>{if(updateRect(!1),this.pointer_x=event.clientX-rect.left,this.pointer_y=event.clientY-rect.top,currentMode===MODE.MINIMAP){var minimapCoordinates=this.scene.getNormalisedMinimapCoordinates(this.renderer,event);if(minimapCoordinates){var translation=this.scene.getMinimapDiffFromNormalised(minimapCoordinates.x,minimapCoordinates.y);translateViewport(translation)}}else this._state===STATE.NONE&&void 0!==zincRayCaster&&zincRayCaster.move(this,event.clientX,event.clientY,this.renderer)},onDocumentMouseUp=event=>{this._state=STATE.NONE,currentMode==MODE.MINIMAP&&(currentMode=MODE.DEFAULT),zincRayCaster!==void 0&&this.pointer_x_start==event.clientX-rect.left&&this.pointer_y_start==event.clientY-rect.top&&zincRayCaster.pick(this,event.clientX,event.clientY,this.renderer)},onDocumentMouseLeave=event=>{this._state=STATE.NONE},onDocumentTouchStart=event=>{updateRect(!1);var len=event.touches.length;if(1==len)this._state=STATE.TOUCH_ROTATE,this.pointer_x=event.touches[0].clientX-rect.left,this.pointer_y=event.touches[0].clientY-rect.top,this.pointer_x_start=this.pointer_x,this.pointer_y_start=this.pointer_y,this.previous_pointer_x=this.pointer_x,this.previous_pointer_y=this.pointer_y;else if(2==len){this._state=STATE.TOUCH_ZOOM;var dx=event.touches[0].clientX-event.touches[1].clientX,dy=event.touches[0].clientY-event.touches[1].clientY;this.touchZoomDistanceEnd=this.touchZoomDistanceStart=Math.sqrt(dx*dx+dy*dy)}else 3==len&&(this._state=STATE.TOUCH_PAN,this.targetTouchId=event.touches[0].identifier,this.pointer_x=event.touches[0].clientX-rect.left,this.pointer_y=event.touches[0].clientY-rect.top,this.previous_pointer_x=this.pointer_x,this.previous_pointer_y=this.pointer_y)},onDocumentTouchMove=event=>{event.preventDefault(),event.stopPropagation();var len=event.touches.length;if(1==len)this.pointer_x=event.touches[0].clientX-rect.left,this.pointer_y=event.touches[0].clientY-rect.top;else if(2==len){if(this._state===STATE.TOUCH_ZOOM){var dx=event.touches[0].clientX-event.touches[1].clientX,dy=event.touches[0].clientY-event.touches[1].clientY;this.touchZoomDistanceEnd=Math.sqrt(dx*dx+dy*dy)}}else if(3==len&&this._state===STATE.TOUCH_PAN)for(var i=0;3>i;i++)event.touches[i].identifier==this.targetTouchId&&(this.pointer_x=event.touches[0].clientX-rect.left,this.pointer_y=event.touches[0].clientY-rect.top)},onDocumentTouchEnd=event=>{var len=event.touches.length;this.touchZoomDistanceStart=this.touchZoomDistanceEnd=0,this.targetTouchId=-1,this._state=STATE.NONE,1==len&&zincRayCaster!==void 0&&this.pointer_x_start==event.touches[0].clientX-rect.left&&this.pointer_y_start==event.touches[0].clientY-rect.top&&zincRayCaster.pick(this.cameraObject,event.touches[0].clientX,event.touches[0].clientY,this.renderer)},onDocumentEnter=()=>{updateRect(!0)},updateRect=forced=>{//Use intersectionObserver to reset the rect for ray tracing.
|
|
1585
|
+
if(forced||rect===void 0){var observer=new IntersectionObserver(entries=>{for(var entry of entries)rect=entry.boundingClientRect;observer.disconnect()});observer.observe(this.domElement)}},onDocumentWheelEvent=event=>{updateRect(!1),this._state=STATE.SCROLL;var changes=0;0<event.deltaY?changes=this.scrollRate:0>event.deltaY&&(changes=-1*this.scrollRate),mouseScroll+=changes,event.preventDefault(),event.stopImmediatePropagation()},translate=()=>{if("undefined"!=typeof this.cameraObject){var height=rect.height,distance=this.cameraObject.position.distanceTo(this.cameraObject.target),fact=0;this.cameraObject.far>this.cameraObject.near&&distance>=this.cameraObject.near&&distance<=this.cameraObject.far&&(fact=(distance-this.cameraObject.near)/(this.cameraObject.far-this.cameraObject.near)),_b.set(this.previous_pointer_x,height-this.previous_pointer_y,0),_c.set(this.previous_pointer_x,height-this.previous_pointer_y,1),_new_b.set(this.pointer_x,height-this.pointer_y,0),_new_c.set(this.pointer_x,height-this.pointer_y,1),_b.unproject(this.cameraObject),_c.unproject(this.cameraObject),_new_b.unproject(this.cameraObject),_new_c.unproject(this.cameraObject);var translate_rate=-.002;_new_b.sub(_b).multiplyScalar(1-fact),_new_c.sub(_c).multiplyScalar(fact),_new_b.add(_new_c).multiplyScalar(translate_rate),translateViewport(_new_b)}this.previous_pointer_x=this.pointer_x,this.previous_pointer_y=this.pointer_y};this.getVectorsFromRotateAboutLookAtPoints=(axis,angle)=>{axis.normalize(),_v.copy(this.cameraObject.position).sub(this.cameraObject.target),_rel_eye.copy(_v),_v.normalize(),.8<Math.abs(_v.dot(axis))&&_v.copy(this.cameraObject.up),_b.crossVectors(axis,_v).normalize(),_c.crossVectors(axis,_b);var rel_eyea=axis.dot(_rel_eye),rel_eyeb=_b.dot(_rel_eye),rel_eyec=_c.dot(_rel_eye),upa=axis.dot(this.cameraObject.up),upb=_b.dot(this.cameraObject.up),upc=_c.dot(this.cameraObject.up),cos_angle=Math.cos(angle),sin_angle=Math.sin(angle);return _new_b.set(cos_angle*_b.x+sin_angle*_c.x,cos_angle*_b.y+sin_angle*_c.y,cos_angle*_b.z+sin_angle*_c.z),_new_c.set(cos_angle*_c.x-sin_angle*_b.x,cos_angle*_c.y-sin_angle*_b.y,cos_angle*_c.z-sin_angle*_b.z),_v.copy(this.cameraObject.target),_v.x=_v.x+axis.x*rel_eyea+_new_b.x*rel_eyeb+_new_c.x*rel_eyec,_v.y=_v.y+axis.y*rel_eyea+_new_b.y*rel_eyeb+_new_c.y*rel_eyec,_v.z=_v.z+axis.z*rel_eyea+_new_b.z*rel_eyeb+_new_c.z*rel_eyec,_a.set(axis.x*upa+_new_b.x*upb+_new_c.x*upc,axis.y*upa+_new_b.y*upb+_new_c.y*upc,axis.z*upa+_new_b.z*upb+_new_c.z*upc),{position:_v,up:_a}},this.rotateAboutLookAtpoint=(axis,angle)=>{var returned_values=this.getVectorsFromRotateAboutLookAtPoints(axis,angle);this.cameraObject.position.copy(returned_values.position),this.updateDirectionalLight(),this.cameraObject.up.copy(returned_values.up)};var tumble=()=>{if("undefined"!=typeof this.cameraObject){var width=rect.width,height=rect.height;if(0<width&&0<height){var radius=.25*(width+height),delta_x=0,delta_y=0;(rotateMode===ROTATE_DIRECTION.FREE||rotateMode===ROTATE_DIRECTION.HORIZONTAL)&&(delta_x=this.pointer_x-this.previous_pointer_x),(rotateMode===ROTATE_DIRECTION.FREE||rotateMode===ROTATE_DIRECTION.VERTICAL)&&(delta_y=this.previous_pointer_y-this.pointer_y);var tangent_dist=Math.sqrt(delta_x*delta_x+delta_y*delta_y);if(0<tangent_dist){var dx=1*-delta_y/tangent_dist,dy=1*delta_x/tangent_dist,d=0;// Do not allow rotation on other direction around the origin if rotateMode is not free
|
|
1586
|
+
if(rotateMode===ROTATE_DIRECTION.FREE){var _d=dx*(this.pointer_x-.5*(width-1))+dy*(.5*(height-1)-this.pointer_y);_d>radius?_d=radius:_d<-radius&&(_d=-radius)}var phi=Math.acos(d/radius)-.5*Math.PI,angle=this.tumble_rate*tangent_dist/radius;_a.copy(this.cameraObject.position).sub(this.cameraObject.target).normalize(),_b.copy(this.cameraObject.up).normalize(),_c.copy(_b).cross(_a).normalize().multiplyScalar(dx),_b.multiplyScalar(dy),_axis.addVectors(_c,_b).multiplyScalar(Math.cos(phi)),_a.multiplyScalar(Math.sin(phi)),_axis.add(_a),this.rotateAboutLookAtpoint(_axis,-angle)}}}this.previous_pointer_x=this.pointer_x,this.previous_pointer_y=this.pointer_y},calculateZoomDelta=()=>{var delta=0;return this._state===STATE.ZOOM?delta=this.previous_pointer_y-this.pointer_y:this._state===STATE.SCROLL?delta=mouseScroll:(delta=-1*(this.touchZoomDistanceEnd-this.touchZoomDistanceStart),this.touchZoomDistanceStart=this.touchZoomDistanceEnd),delta};this.changeZoomByScrollRateUnit=unit=>{var delta_y=unit*this.scrollRate;this.changeZoomByValue(delta_y)},this.changeZoomByValue=delta_y=>{if("undefined"!=typeof this.cameraObject){var width=rect.width,height=rect.height,a=this.cameraObject.position.clone();a.sub(this.cameraObject.target);var dist=a.length(),dy=1.5*delta_y/height;if(.01<dist+dy*dist&&(a.normalize(),_tempEye.copy(this.cameraObject.position),_tempEye.x+=a.x*dy*dist,_tempEye.y+=a.y*dy*dist,_tempEye.z+=a.z*dy*dist,checkTravelDistance())){this.cameraObject.position.copy(_tempEye),this.updateDirectionalLight();var near_far_minimum_ratio=1e-5;if(near_far_minimum_ratio*this.cameraObject.far<this.cameraObject.near+dy*dist+this.near_plane_fly_debt)0!=this.near_plane_fly_debt&&(this.near_plane_fly_debt+=dy*dist,0<this.near_plane_fly_debt?(this.cameraObject.near+=this.near_plane_fly_debt,this.cameraObject.far+=this.near_plane_fly_debt,this.near_plane_fly_debt=0):(this.cameraObject.near+=dy*dist,this.cameraObject.far+=dy*dist));else{if(0==this.near_plane_fly_debt){var diff=this.cameraObject.near-near_far_minimum_ratio*this.cameraObject.far;this.cameraObject.near=near_far_minimum_ratio*this.cameraObject.far,this.cameraObject.far-=diff,this.near_plane_fly_debt-=near_far_minimum_ratio*this.cameraObject.far}this.near_plane_fly_debt+=dy*dist}}}};var flyZoom=()=>{var delta_y=calculateZoomDelta();this.changeZoomByValue(delta_y),this._state===STATE.ZOOM&&(this.previous_pointer_x=this.pointer_x,this.previous_pointer_y=this.pointer_y),this._state===STATE.SCROLL&&(mouseScroll=0,this._state=STATE.NONE)};this.setDirectionalLight=directionalLightIn=>{this.directionalLight=directionalLightIn},this.updateDirectionalLight=()=>{0!=this.directionalLight&&this.directionalLight.position.set(this.cameraObject.position.x,this.cameraObject.position.y,this.cameraObject.position.z)},this.enable=function(){enabled=!0,this.domElement&&this.domElement.addEventListener&&(this.domElement.addEventListener("mousedown",onDocumentMouseDown,!1),this.domElement.addEventListener("mousemove",onDocumentMouseMove,!1),this.domElement.addEventListener("mouseup",onDocumentMouseUp,!1),this.domElement.addEventListener("mouseleave",onDocumentMouseLeave,!1),this.domElement.addEventListener("touchstart",onDocumentTouchStart,!1),this.domElement.addEventListener("touchmove",onDocumentTouchMove,!1),this.domElement.addEventListener("touchend",onDocumentTouchEnd,!1),this.domElement.addEventListener("wheel",onDocumentWheelEvent,!1),this.domElement.addEventListener("contextmenu",event=>{event.preventDefault()},!1),this.domElement.addEventListener("mouseenter",onDocumentEnter,!1))},this.disable=function(){enabled=!1,this.domElement&&this.domElement.removeEventListener&&(this.domElement.removeEventListener("mousedown",onDocumentMouseDown,!1),this.domElement.removeEventListener("mousemove",onDocumentMouseMove,!1),this.domElement.removeEventListener("mouseup",onDocumentMouseUp,!1),this.domElement.removeEventListener("mouseleave",onDocumentMouseLeave,!1),this.domElement.removeEventListener("touchstart",onDocumentTouchStart,!1),this.domElement.removeEventListener("touchmove",onDocumentTouchMove,!1),this.domElement.removeEventListener("touchend",onDocumentTouchEnd,!1),this.domElement.removeEventListener("wheel",onDocumentWheelEvent,!1),this.domElement.removeEventListener("mouseenter",onDocumentEnter,!1),this.domElement.removeEventListener("contextmenu",event=>{event.preventDefault()},!1))},this.loadPath=pathData=>{cameraPath=pathData.CameraPath,numberOfCameraPoint=pathData.NumberOfPoints},this.loadPathURL=(path_url,finishCallback)=>{var xmlhttp=new XMLHttpRequest;xmlhttp.onreadystatechange=()=>{if(4==xmlhttp.readyState&&200==xmlhttp.status){var pathData=JSON.parse(xmlhttp.responseText);this.loadPath(pathData),finishCallback!=null&&"function"==typeof finishCallback&&finishCallback()}};var requestURL=resolveURL(path_url);xmlhttp.open("GET",requestURL,!0),xmlhttp.send()},this.setPathDuration=durationIn=>{duration=durationIn,smoothCameraTransitionObject&&smoothCameraTransitionObject.setDuration(duration),rotateCameraTransitionObject&&rotateCameraTransitionObject.setDuration(duration)},this.getPlayRate=()=>playRate,this.setPlayRate=playRateIn=>{playRate=playRateIn};/**
|
|
1510
1587
|
* Update the internal timer by the set amount, this can
|
|
1511
1588
|
* be used to force a time update by setting delta to zero.
|
|
1512
1589
|
*
|
|
@@ -1516,7 +1593,7 @@ if(rotateMode===ROTATE_DIRECTION.FREE){var _d=dx*(this.pointer_x-.5*(width-1))+d
|
|
|
1516
1593
|
* Get the current inbuild time,
|
|
1517
1594
|
*
|
|
1518
1595
|
* @return {Number}
|
|
1519
|
-
*/this.getTime=()=>inbuildTime,this.setTime=timeIn=>{inbuildTime=timeIn>duration?duration:0>timeIn?0:timeIn},this.getNumberOfTimeFrame=()=>numberOfCameraPoint,this.getCurrentTimeFrame=()=>{if(2<numberOfCameraPoint){var current_time=inbuildTime/duration*(numberOfCameraPoint-1),bottom_frame=Math.floor(current_time),top_frame=Math.ceil(current_time);return bottom_frame==top_frame?bottom_frame==numberOfCameraPoint-1?[bottom_frame-1,top_frame,0]:[bottom_frame,top_frame+1,1]:[bottom_frame,top_frame,
|
|
1596
|
+
*/this.getTime=()=>inbuildTime,this.setTime=timeIn=>{inbuildTime=timeIn>duration?duration:0>timeIn?0:timeIn},this.getNumberOfTimeFrame=()=>numberOfCameraPoint,this.getCurrentTimeFrame=()=>{if(2<numberOfCameraPoint){var current_time=inbuildTime/duration*(numberOfCameraPoint-1),bottom_frame=Math.floor(current_time),proportion=1-(current_time-bottom_frame),top_frame=Math.ceil(current_time);return bottom_frame==top_frame?bottom_frame==numberOfCameraPoint-1?[bottom_frame-1,top_frame,0]:[bottom_frame,top_frame+1,1]:[bottom_frame,top_frame,proportion]}return 1==numberOfCameraPoint?[0,0,0]:void 0},this.setCurrentTimeFrame=targetTimeFrame=>{2<numberOfCameraPoint&&(inbuildTime=duration*targetTimeFrame/(numberOfCameraPoint-1),0>inbuildTime&&(inbuildTime=0),inbuildTime>duration&&(inbuildTime=duration))};/**
|
|
1520
1597
|
* Update the progress on the path by the specified amount - delta.
|
|
1521
1598
|
*
|
|
1522
1599
|
* @param {Number} delta - The amount of time to increment
|
|
@@ -1637,9 +1714,23 @@ var handleSyncControl=()=>{this._state===STATE.ROTATE||this._state===STATE.TOUCH
|
|
|
1637
1714
|
* Enable syncControl.
|
|
1638
1715
|
*/ /**
|
|
1639
1716
|
* Disable syncControl.
|
|
1640
|
-
*/this.update=timeChanged=>{var delta=timeChanged*playRate,controlEnabled=enabled;currentMode===MODE.PATH?updatePath(delta):currentMode===MODE.SMOOTH_CAMERA_TRANSITION&&smoothCameraTransitionObject?(smoothCameraTransitionObject.update(delta),smoothCameraTransitionObject.isTransitionCompleted()&&(smoothCameraTransitionObject==null,currentMode=MODE.DEFAULT),controlEnabled=!1):currentMode===MODE.ROTATE_CAMERA_TRANSITION&&rotateCameraTransitionObject?(rotateCameraTransitionObject.update(delta),rotateCameraTransitionObject.isTransitionCompleted()&&(rotateCameraTransitionObject==null,currentMode=MODE.DEFAULT),controlEnabled=!1):currentMode===MODE.AUTO_TUMBLE&&cameraAutoTumbleObject?cameraAutoTumbleObject.update(delta):currentMode===MODE.SYNC_CONTROL&&ndcControl&&(handleSyncControl(),controlEnabled=!1),controlEnabled&&(this._state===STATE.ROTATE||this._state===STATE.TOUCH_ROTATE?tumble():this._state===STATE.PAN||this._state===STATE.TOUCH_PAN?translate():(this._state===STATE.ZOOM||this._state===STATE.TOUCH_ZOOM||this._state===STATE.SCROLL)&&flyZoom(),this._state!==STATE.NONE&¤tMode===MODE.AUTO_TUMBLE&&cameraAutoTumbleObject&&cameraAutoTumbleObject.stopOnCameraInput,this._state===STATE.SCROLL&&(this._state=STATE.NONE)),deviceOrientationControl?deviceOrientationControl.update():this.cameraObject.lookAt(this.cameraObject.target)},this.playPath=()=>{currentMode=MODE.PATH},this.stopPath=()=>{currentMode=MODE.DEFAULT},this.isPlayingPath=()=>currentMode===MODE.PATH,this.enableDirectionalLightUpdateWithPath=flag=>{updateLightWithPathFlag=flag},this.enableDeviceOrientation=()=>{deviceOrientationControl||(deviceOrientationControl=new ModifiedDeviceOrientationControls(this.cameraObject))},this.disableDeviceOrientation=()=>{deviceOrientationControl&&(deviceOrientationControl.dispose(),deviceOrientationControl=void 0)},this.isDeviceOrientationEnabled=()=>!!deviceOrientationControl,this.resetView=()=>{var viewport=viewports[defaultViewport];this.cameraObject.near=viewport.nearPlane,this.cameraObject.far=viewport.farPlane,this.cameraObject.position.set(viewport.eyePosition[0],viewport.eyePosition[1],viewport.eyePosition[2]),this.cameraObject.target.set(viewport.targetPosition[0],viewport.targetPosition[1],viewport.targetPosition[2]),this.cameraObject.up.set(viewport.upVector[0],viewport.upVector[1],viewport.upVector[2]),this.cameraObject.updateProjectionMatrix(),this.updateDirectionalLight()},this.setCurrentCameraSettings=newViewport=>{newViewport.nearPlane&&(this.cameraObject.near=newViewport.nearPlane),newViewport.farPlane&&(this.cameraObject.far=newViewport.farPlane),newViewport.eyePosition&&this.cameraObject.position.set(newViewport.eyePosition[0],newViewport.eyePosition[1],newViewport.eyePosition[2]),newViewport.targetPosition&&this.cameraObject.target.set(newViewport.targetPosition[0],newViewport.targetPosition[1],newViewport.targetPosition[2]),newViewport.upVector&&this.cameraObject.up.set(newViewport.upVector[0],newViewport.upVector[1],newViewport.upVector[2]),this.cameraObject.updateProjectionMatrix(),this.updateDirectionalLight()},this.getViewportFromCentreAndRadius=(centreX,centreY,centreZ,radius,view_angle,clip_distance)=>{var eyex=this.cameraObject.position.x-this.cameraObject.target.x,eyey=this.cameraObject.position.y-this.cameraObject.target.y,eyez=this.cameraObject.position.z-this.cameraObject.target.z,fact=1/Math.sqrt(eyex*eyex+eyey*eyey+eyez*eyez);eyex*=fact,eyey*=fact,eyez*=fact;/* look at the centre of the sphere */var eye_distance=radius/Math.tan(view_angle*Math.PI/360),localEyePosition=[centreX+eyex*eye_distance,centreY+eyey*eye_distance,centreZ+eyez*eye_distance],localNearPlane=0,nearClippingFactor=.95;/* shift the eye position to achieve the desired view_angle */localNearPlane=clip_distance>nearClippingFactor*eye_distance?(1-nearClippingFactor)*eye_distance:eye_distance-clip_distance;var newViewport=new Viewport;return newViewport.nearPlane=localNearPlane,newViewport.farPlane=eye_distance+clip_distance,newViewport.eyePosition=localEyePosition,newViewport.targetPosition=[centreX,centreY,centreZ],newViewport.upVector=[this.cameraObject.up.x,this.cameraObject.up.y,this.cameraObject.up.z],newViewport},this.getCurrentViewport=()=>{var currentViewport=new Viewport;return currentViewport.nearPlane=this.cameraObject.near,currentViewport.farPlane=this.cameraObject.far,currentViewport.eyePosition[0]=this.cameraObject.position.x,currentViewport.eyePosition[1]=this.cameraObject.position.y,currentViewport.eyePosition[2]=this.cameraObject.position.z,currentViewport.targetPosition[0]=this.cameraObject.target.x,currentViewport.targetPosition[1]=this.cameraObject.target.y,currentViewport.targetPosition[2]=this.cameraObject.target.z,currentViewport.upVector[0]=this.cameraObject.up.x,currentViewport.upVector[1]=this.cameraObject.up.y,currentViewport.upVector[2]=this.cameraObject.up.z,currentViewport},this.getDefaultEyePosition=()=>eyePosition,this.getDefaultTargetPosition=()=>targetPosition,this.cameraTransition=(startingViewport,endingViewport,durationIn)=>{rotateCameraTransitionObject==null&&(smoothCameraTransitionObject=new SmoothCameraTransition(startingViewport,endingViewport,this,durationIn))},this.rotateCameraTransition=(axis,angle,duration)=>{smoothCameraTransitionObject==null&&(rotateCameraTransitionObject=new RotateCameraTransition(axis,angle,this,duration))},this.enableCameraTransition=()=>{smoothCameraTransitionObject&&(currentMode=MODE.SMOOTH_CAMERA_TRANSITION),rotateCameraTransitionObject&&(currentMode=MODE.ROTATE_CAMERA_TRANSITION)},this.pauseCameraTransition=()=>{currentMode=MODE.DEFAULT},this.stopCameraTransition=()=>{currentMode=MODE.DEFAULT,smoothCameraTransitionObject=void 0,rotateCameraTransitionObject=void 0},this.isTransitioningCamera=()=>currentMode===MODE.SMOOTH_CAMERA_TRANSITION||currentMode===MODE.ROTATE_CAMERA_TRANSITION,this.autoTumble=(tumbleDirectionIn,tumbleRateIn,stopOnCameraInputIn)=>{cameraAutoTumbleObject=new CameraAutoTumble(tumbleDirectionIn,tumbleRateIn,stopOnCameraInputIn,this)},this.enableAutoTumble=()=>{currentMode=MODE.AUTO_TUMBLE},this.stopAutoTumble=()=>{currentMode=MODE.DEFAULT,cameraAutoTumbleObject=void 0},this.updateAutoTumble=()=>{cameraAutoTumbleObject&&(cameraAutoTumbleObject.requireUpdate=!0)},this.isAutoTumble=()=>currentMode===MODE.AUTO_TUMBLE,this.enableRaycaster=(sceneIn,callbackFunctionIn,hoverCallbackFunctionIn)=>{zincRayCaster==null&&(zincRayCaster=new RayCaster(sceneIn,this.scene,callbackFunctionIn,hoverCallbackFunctionIn,this.renderer))},this.disableRaycaster=()=>{zincRayCaster.disable(),zincRayCaster=void 0},this.isSyncControl=()=>currentMpde===MODE.SYNC_CONTROL,this.enableSyncControl=()=>(currentMode=MODE.SYNC_CONTROL,ndcControl||(ndcControl=new NDCCameraControl),ndcControl.setCurrentCameraSettings(this.cameraObject,viewports[defaultViewport]),ndcControl),this.disableSyncControl=()=>{currentMode=MODE.DEFAULT,this.cameraObject.zoom=1,this.cameraObject.updateProjectionMatrix()},this.enable()},SmoothCameraTransition=function(startingViewport,endingViewport,targetCameraIn,durationIn){var startingEyePosition=startingViewport.eyePosition,startingTargetPosition=startingViewport.targetPosition,startingUp=startingViewport.upVector,endingEyePosition=endingViewport.eyePosition,endingTargetPosition=endingViewport.targetPosition,endingUp=endingViewport.upVector,targetCamera=targetCameraIn,duration=durationIn,inbuildTime=0,completed=!1;targetCamera.near=Math.min(startingViewport.nearPlane,endingViewport.nearPlane),targetCamera.far=Math.max(startingViewport.farPlane,endingViewport.farPlane),targetCamera.cameraObject.up.set(endingViewport.upVector[0],endingViewport.upVector[1],endingViewport.upVector[2]),this.setDuration=newDuration=>{duration=newDuration};var updateTime=delta=>{var targetTime=inbuildTime+delta;targetTime>duration&&(targetTime=duration),inbuildTime=targetTime},updateCameraSettings=()=>{var ratio=inbuildTime/duration,eyePosition=[startingEyePosition[0]*(1-ratio)+endingEyePosition[0]*ratio,startingEyePosition[1]*(1-ratio)+endingEyePosition[1]*ratio,startingEyePosition[2]*(1-ratio)+endingEyePosition[2]*ratio],targetPosition=[startingTargetPosition[0]*(1-ratio)+endingTargetPosition[0]*ratio,startingTargetPosition[1]*(1-ratio)+endingTargetPosition[1]*ratio,startingTargetPosition[2]*(1-ratio)+endingTargetPosition[2]*ratio],upVector=[startingUp[0]*(1-ratio)+endingUp[0]*ratio,startingUp[1]*(1-ratio)+endingUp[1]*ratio,startingUp[2]*(1-ratio)+endingUp[2]*ratio];targetCamera.cameraObject.position.set(eyePosition[0],eyePosition[1],eyePosition[2]),targetCamera.cameraObject.target.set(targetPosition[0],targetPosition[1],targetPosition[2])};this.update=delta=>{!1===this.enabled||(updateTime(delta),updateCameraSettings(),inbuildTime==duration&&(completed=!0))},this.isTransitionCompleted=()=>completed},RotateCameraTransition=function(axisIn,angleIn,targetCameraIn,durationIn){var duration=durationIn,inbuildTime=0,completed=!1;this.setDuration=newDuration=>{duration=newDuration};var updateCameraSettings=delta=>{var previousTime=inbuildTime,targetTime=inbuildTime+delta;targetTime>duration&&(targetTime=duration),inbuildTime=targetTime;var actualDelta=inbuildTime-previousTime,ratio=actualDelta/duration;targetCameraIn.rotateAboutLookAtpoint(axisIn,ratio*angleIn)};this.update=delta=>{!1===this.enabled||(updateCameraSettings(delta),inbuildTime==duration&&(completed=!0))},this.isTransitionCompleted=()=>completed},RayCaster=function(sceneIn,hostSceneIn,callbackFunctionIn,hoverCallbackFunctionIn,rendererIn){var scene=sceneIn,renderer=rendererIn,callbackFunction=callbackFunctionIn,hoverCallbackFunction=hoverCallbackFunctionIn,enabled=!0,raycaster=new THREE.Raycaster;raycaster.params.Line.threshold=.1,raycaster.params.Points.threshold=.1;var mouse=new THREE.Vector2,awaiting=!1,lastHoveredDate=new Date,lastHoveredEmpty=!1,timeDiff=0,pickedObjects=[],lastPosition={zincCamera:void 0,x:-1,y:-1};this.enable=()=>{enable=!0},this.disable=()=>{enable=!1};var getIntersectsObject=(zincCamera,x,y)=>{if(zincCamera.getNDCFromDocumentCoords(x,y,mouse),hostSceneIn!==scene){var threejsScene=scene.getThreeJSScene();renderer.render(threejsScene,zincCamera.cameraObject)}raycaster.setFromCamera(mouse,zincCamera.cameraObject);var objects=scene.getPickableThreeJSObjects();//Reset pickedObjects array
|
|
1717
|
+
*/this.update=timeChanged=>{var delta=timeChanged*playRate,controlEnabled=enabled;currentMode===MODE.PATH?updatePath(delta):currentMode===MODE.SMOOTH_CAMERA_TRANSITION&&smoothCameraTransitionObject?(smoothCameraTransitionObject.update(delta),smoothCameraTransitionObject.isTransitionCompleted()&&(smoothCameraTransitionObject==null,currentMode=MODE.DEFAULT),controlEnabled=!1):currentMode===MODE.ROTATE_CAMERA_TRANSITION&&rotateCameraTransitionObject?(rotateCameraTransitionObject.update(delta),rotateCameraTransitionObject.isTransitionCompleted()&&(rotateCameraTransitionObject==null,currentMode=MODE.DEFAULT),controlEnabled=!1):currentMode===MODE.AUTO_TUMBLE&&cameraAutoTumbleObject?cameraAutoTumbleObject.update(delta):currentMode===MODE.SYNC_CONTROL&&ndcControl&&(handleSyncControl(),controlEnabled=!1),controlEnabled&&(this._state===STATE.ROTATE||this._state===STATE.TOUCH_ROTATE?tumble():this._state===STATE.PAN||this._state===STATE.TOUCH_PAN?translate():(this._state===STATE.ZOOM||this._state===STATE.TOUCH_ZOOM||this._state===STATE.SCROLL)&&flyZoom(),this._state!==STATE.NONE&¤tMode===MODE.AUTO_TUMBLE&&cameraAutoTumbleObject&&cameraAutoTumbleObject.stopOnCameraInput,this._state===STATE.SCROLL&&(this._state=STATE.NONE)),deviceOrientationControl?deviceOrientationControl.update():this.cameraObject.lookAt(this.cameraObject.target)},this.playPath=()=>{currentMode=MODE.PATH},this.stopPath=()=>{currentMode=MODE.DEFAULT},this.isPlayingPath=()=>currentMode===MODE.PATH,this.enableDirectionalLightUpdateWithPath=flag=>{updateLightWithPathFlag=flag},this.enableDeviceOrientation=()=>{deviceOrientationControl||(deviceOrientationControl=new ModifiedDeviceOrientationControls(this.cameraObject))},this.disableDeviceOrientation=()=>{deviceOrientationControl&&(deviceOrientationControl.dispose(),deviceOrientationControl=void 0)},this.isDeviceOrientationEnabled=()=>!!deviceOrientationControl,this.resetView=()=>{var viewport=viewports[defaultViewport];this.cameraObject.near=viewport.nearPlane,this.cameraObject.far=viewport.farPlane,this.cameraObject.position.set(viewport.eyePosition[0],viewport.eyePosition[1],viewport.eyePosition[2]),this.cameraObject.target.set(viewport.targetPosition[0],viewport.targetPosition[1],viewport.targetPosition[2]),this.cameraObject.up.set(viewport.upVector[0],viewport.upVector[1],viewport.upVector[2]),this.cameraObject.updateProjectionMatrix(),this.updateDirectionalLight()},this.setCurrentCameraSettings=newViewport=>{newViewport.nearPlane&&(this.cameraObject.near=newViewport.nearPlane),newViewport.farPlane&&(this.cameraObject.far=newViewport.farPlane),newViewport.eyePosition&&this.cameraObject.position.set(newViewport.eyePosition[0],newViewport.eyePosition[1],newViewport.eyePosition[2]),newViewport.targetPosition&&this.cameraObject.target.set(newViewport.targetPosition[0],newViewport.targetPosition[1],newViewport.targetPosition[2]),newViewport.upVector&&this.cameraObject.up.set(newViewport.upVector[0],newViewport.upVector[1],newViewport.upVector[2]),this.cameraObject.updateProjectionMatrix(),this.updateDirectionalLight()},this.getViewportFromCentreAndRadius=(centreX,centreY,centreZ,radius,view_angle,clip_distance)=>{var eyex=this.cameraObject.position.x-this.cameraObject.target.x,eyey=this.cameraObject.position.y-this.cameraObject.target.y,eyez=this.cameraObject.position.z-this.cameraObject.target.z,fact=1/Math.sqrt(eyex*eyex+eyey*eyey+eyez*eyez);eyex*=fact,eyey*=fact,eyez*=fact;/* look at the centre of the sphere */var localTargetPosition=[centreX,centreY,centreZ],eye_distance=radius/Math.tan(view_angle*Math.PI/360),localEyePosition=[centreX+eyex*eye_distance,centreY+eyey*eye_distance,centreZ+eyez*eye_distance],localFarPlane=eye_distance+clip_distance,localNearPlane=0,nearClippingFactor=.95;/* shift the eye position to achieve the desired view_angle */localNearPlane=clip_distance>nearClippingFactor*eye_distance?(1-nearClippingFactor)*eye_distance:eye_distance-clip_distance;var newViewport=new Viewport;return newViewport.nearPlane=localNearPlane,newViewport.farPlane=localFarPlane,newViewport.eyePosition=localEyePosition,newViewport.targetPosition=localTargetPosition,newViewport.upVector=[this.cameraObject.up.x,this.cameraObject.up.y,this.cameraObject.up.z],newViewport},this.getCurrentViewport=()=>{var currentViewport=new Viewport;return currentViewport.nearPlane=this.cameraObject.near,currentViewport.farPlane=this.cameraObject.far,currentViewport.eyePosition[0]=this.cameraObject.position.x,currentViewport.eyePosition[1]=this.cameraObject.position.y,currentViewport.eyePosition[2]=this.cameraObject.position.z,currentViewport.targetPosition[0]=this.cameraObject.target.x,currentViewport.targetPosition[1]=this.cameraObject.target.y,currentViewport.targetPosition[2]=this.cameraObject.target.z,currentViewport.upVector[0]=this.cameraObject.up.x,currentViewport.upVector[1]=this.cameraObject.up.y,currentViewport.upVector[2]=this.cameraObject.up.z,currentViewport},this.getDefaultEyePosition=()=>eyePosition,this.getDefaultTargetPosition=()=>targetPosition,this.cameraTransition=(startingViewport,endingViewport,durationIn)=>{rotateCameraTransitionObject==null&&(smoothCameraTransitionObject=new SmoothCameraTransition(startingViewport,endingViewport,this,durationIn))},this.rotateCameraTransition=(axis,angle,duration)=>{smoothCameraTransitionObject==null&&(rotateCameraTransitionObject=new RotateCameraTransition(axis,angle,this,duration))},this.enableCameraTransition=()=>{smoothCameraTransitionObject&&(currentMode=MODE.SMOOTH_CAMERA_TRANSITION),rotateCameraTransitionObject&&(currentMode=MODE.ROTATE_CAMERA_TRANSITION)},this.pauseCameraTransition=()=>{currentMode=MODE.DEFAULT},this.stopCameraTransition=()=>{currentMode=MODE.DEFAULT,smoothCameraTransitionObject=void 0,rotateCameraTransitionObject=void 0},this.isTransitioningCamera=()=>currentMode===MODE.SMOOTH_CAMERA_TRANSITION||currentMode===MODE.ROTATE_CAMERA_TRANSITION,this.autoTumble=(tumbleDirectionIn,tumbleRateIn,stopOnCameraInputIn)=>{cameraAutoTumbleObject=new CameraAutoTumble(tumbleDirectionIn,tumbleRateIn,stopOnCameraInputIn,this)},this.enableAutoTumble=()=>{currentMode=MODE.AUTO_TUMBLE},this.stopAutoTumble=()=>{currentMode=MODE.DEFAULT,cameraAutoTumbleObject=void 0},this.updateAutoTumble=()=>{cameraAutoTumbleObject&&(cameraAutoTumbleObject.requireUpdate=!0)},this.isAutoTumble=()=>currentMode===MODE.AUTO_TUMBLE,this.enableRaycaster=(sceneIn,callbackFunctionIn,hoverCallbackFunctionIn)=>{zincRayCaster==null&&(zincRayCaster=new RayCaster(sceneIn,this.scene,callbackFunctionIn,hoverCallbackFunctionIn,this.renderer))},this.disableRaycaster=()=>{zincRayCaster.disable(),zincRayCaster=void 0},this.isSyncControl=()=>currentMpde===MODE.SYNC_CONTROL,this.enableSyncControl=()=>(currentMode=MODE.SYNC_CONTROL,ndcControl||(ndcControl=new NDCCameraControl),ndcControl.setCurrentCameraSettings(this.cameraObject,viewports[defaultViewport]),ndcControl),this.disableSyncControl=()=>{currentMode=MODE.DEFAULT,this.cameraObject.zoom=1,this.cameraObject.updateProjectionMatrix()},this.enable()},SmoothCameraTransition=function SmoothCameraTransition(startingViewport,endingViewport,targetCameraIn,durationIn){var startingEyePosition=startingViewport.eyePosition,startingTargetPosition=startingViewport.targetPosition,startingUp=startingViewport.upVector,endingEyePosition=endingViewport.eyePosition,endingTargetPosition=endingViewport.targetPosition,endingUp=endingViewport.upVector,targetCamera=targetCameraIn,duration=durationIn,inbuildTime=0,enabled=!0,updateLightWithPathFlag=!0,completed=!1;targetCamera.near=Math.min(startingViewport.nearPlane,endingViewport.nearPlane),targetCamera.far=Math.max(startingViewport.farPlane,endingViewport.farPlane),targetCamera.cameraObject.up.set(endingViewport.upVector[0],endingViewport.upVector[1],endingViewport.upVector[2]),this.setDuration=newDuration=>{duration=newDuration};var updateTime=delta=>{var targetTime=inbuildTime+delta;targetTime>duration&&(targetTime=duration),inbuildTime=targetTime},updateCameraSettings=()=>{var ratio=inbuildTime/duration,eyePosition=[startingEyePosition[0]*(1-ratio)+endingEyePosition[0]*ratio,startingEyePosition[1]*(1-ratio)+endingEyePosition[1]*ratio,startingEyePosition[2]*(1-ratio)+endingEyePosition[2]*ratio],targetPosition=[startingTargetPosition[0]*(1-ratio)+endingTargetPosition[0]*ratio,startingTargetPosition[1]*(1-ratio)+endingTargetPosition[1]*ratio,startingTargetPosition[2]*(1-ratio)+endingTargetPosition[2]*ratio],upVector=[startingUp[0]*(1-ratio)+endingUp[0]*ratio,startingUp[1]*(1-ratio)+endingUp[1]*ratio,startingUp[2]*(1-ratio)+endingUp[2]*ratio];targetCamera.cameraObject.position.set(eyePosition[0],eyePosition[1],eyePosition[2]),targetCamera.cameraObject.target.set(targetPosition[0],targetPosition[1],targetPosition[2])};this.update=delta=>{!1===this.enabled||(updateTime(delta),updateCameraSettings(),inbuildTime==duration&&(completed=!0))},this.isTransitionCompleted=()=>completed},RotateCameraTransition=function RotateCameraTransition(axisIn,angleIn,targetCameraIn,durationIn){var axis=axisIn,angle=angleIn,targetCamera=targetCameraIn,duration=durationIn,inbuildTime=0,enabled=!0,ratio=inbuildTime/duration,completed=!1;this.setDuration=newDuration=>{duration=newDuration};var updateCameraSettings=delta=>{var previousTime=inbuildTime,targetTime=inbuildTime+delta;targetTime>duration&&(targetTime=duration),inbuildTime=targetTime;var actualDelta=inbuildTime-previousTime,ratio=actualDelta/duration,alpha=ratio*angle;targetCamera.rotateAboutLookAtpoint(axis,alpha)};this.update=delta=>{!1===this.enabled||(updateCameraSettings(delta),inbuildTime==duration&&(completed=!0))},this.isTransitionCompleted=()=>completed},RayCaster=function RayCaster(sceneIn,hostSceneIn,callbackFunctionIn,hoverCallbackFunctionIn,rendererIn){var scene=sceneIn,hostScene=hostSceneIn,renderer=rendererIn,callbackFunction=callbackFunctionIn,hoverCallbackFunction=hoverCallbackFunctionIn,enabled=!0,raycaster=new THREE.Raycaster;raycaster.params.Line.threshold=.1,raycaster.params.Points.threshold=.1;var mouse=new THREE.Vector2,awaiting=!1,lastHoveredDate=new Date,lastHoveredEmpty=!1,timeDiff=0,pickedObjects=[],lastPosition={zincCamera:void 0,x:-1,y:-1};this.enable=()=>{enable=!0},this.disable=()=>{enable=!1};var getIntersectsObject=(zincCamera,x,y)=>{if(zincCamera.getNDCFromDocumentCoords(x,y,mouse),hostScene!==scene){var threejsScene=scene.getThreeJSScene();renderer.render(threejsScene,zincCamera.cameraObject)}raycaster.setFromCamera(mouse,zincCamera.cameraObject);var objects=scene.getPickableThreeJSObjects();//Reset pickedObjects array
|
|
1641
1718
|
return pickedObjects.length=0,raycaster.intersectObjects(objects,!0,pickedObjects)};this.pick=(zincCamera,x,y)=>{enabled&&renderer&&scene&&zincCamera&&callbackFunction&&(getIntersectsObject(zincCamera,x,y),callbackFunction(pickedObjects,x,y))};var hovered=(zincCamera,x,y)=>{if(enabled&&renderer&&scene&&zincCamera&&hoverCallbackFunction){if(getIntersectsObject(zincCamera,x,y),lastHoveredDate.setTime(Date.now()),0===pickedObjects.length){//skip hovered callback if the previous one is empty
|
|
1642
|
-
if(lastHoveredEmpty)return;lastHoveredEmpty=!0}else lastHoveredEmpty=!1;hoverCallbackFunction(pickedObjects,x,y)}};this.move=(zincCamera,x,y)=>{enabled&&renderer&&scene&&zincCamera&&hoverCallbackFunction&&(scene.displayMarkers?hovered(zincCamera,x,y):(lastPosition.zincCamera=zincCamera,lastPosition.x=x,lastPosition.y=y,!awaiting&&(timeDiff=lastHoveredDate?Date.now()-lastHoveredDate.getTime():250,250<=timeDiff?hovered(zincCamera,x,y):(awaiting=!0,setTimeout(awaitMove(lastPosition),timeDiff)))))};var awaitMove=lastPosition=>function(){awaiting=!1,hovered(lastPosition.zincCamera,lastPosition.x,lastPosition.y)}},CameraAutoTumble=function(tumbleDirectionIn,tumbleRateIn,stopOnCameraInputIn,targetCameraIn){var tumbleAxis=new THREE.Vector3,targetCamera=targetCameraIn;this.stopOnCameraInput=stopOnCameraInputIn,this.requireUpdate=!0;var b=new THREE.Vector3,c=new THREE.Vector3,computeTumbleAxisAngle=tumbleDirection=>{var tangent_dist=Math.sqrt(tumbleDirection[0]*tumbleDirection[0]+tumbleDirection[1]*tumbleDirection[1]),width=4*Math.abs(tumbleDirection[0]),height=4*Math.abs(tumbleDirection[1]),radius=.25*(width+height),dx=-tumbleDirection[1]/tangent_dist,dy=tumbleDirection[0]/tangent_dist,d=dx*tumbleDirection[0]+dy*-tumbleDirection[1];d>radius?d=radius:d<-radius&&(d=-radius);var phi=Math.acos(d/radius)-.5*Math.PI;/* get axis to rotate about */tumbleAxis.copy(targetCamera.cameraObject.position).sub(targetCamera.cameraObject.target).normalize(),b.copy(targetCamera.cameraObject.up).normalize(),c.crossVectors(b,tumbleAxis).normalize().multiplyScalar(dx),b.multiplyScalar(dy),b.add(c).multiplyScalar(Math.cos(phi)),tumbleAxis.multiplyScalar(Math.sin(phi)).add(b)};this.update=delta=>{!1===this.enabled||(this.requireUpdate&&(computeTumbleAxisAngle(
|
|
1719
|
+
if(lastHoveredEmpty)return;lastHoveredEmpty=!0}else lastHoveredEmpty=!1;hoverCallbackFunction(pickedObjects,x,y)}};this.move=(zincCamera,x,y)=>{enabled&&renderer&&scene&&zincCamera&&hoverCallbackFunction&&(scene.displayMarkers?hovered(zincCamera,x,y):(lastPosition.zincCamera=zincCamera,lastPosition.x=x,lastPosition.y=y,!awaiting&&(timeDiff=lastHoveredDate?Date.now()-lastHoveredDate.getTime():250,250<=timeDiff?hovered(zincCamera,x,y):(awaiting=!0,setTimeout(awaitMove(lastPosition),timeDiff)))))};var awaitMove=lastPosition=>function(){awaiting=!1,hovered(lastPosition.zincCamera,lastPosition.x,lastPosition.y)}},CameraAutoTumble=function CameraAutoTumble(tumbleDirectionIn,tumbleRateIn,stopOnCameraInputIn,targetCameraIn){var tumbleAxis=new THREE.Vector3,angle=-tumbleRateIn,targetCamera=targetCameraIn,enabled=!0,updateLightWithPathFlag=!0,tumbleDirection=tumbleDirectionIn;this.stopOnCameraInput=stopOnCameraInputIn,this.requireUpdate=!0;var b=new THREE.Vector3,c=new THREE.Vector3,computeTumbleAxisAngle=tumbleDirection=>{var tangent_dist=Math.sqrt(tumbleDirection[0]*tumbleDirection[0]+tumbleDirection[1]*tumbleDirection[1]),width=4*Math.abs(tumbleDirection[0]),height=4*Math.abs(tumbleDirection[1]),radius=.25*(width+height),dx=-tumbleDirection[1]/tangent_dist,dy=tumbleDirection[0]/tangent_dist,d=dx*tumbleDirection[0]+dy*-tumbleDirection[1];d>radius?d=radius:d<-radius&&(d=-radius);var phi=Math.acos(d/radius)-.5*Math.PI;/* get axis to rotate about */tumbleAxis.copy(targetCamera.cameraObject.position).sub(targetCamera.cameraObject.target).normalize(),b.copy(targetCamera.cameraObject.up).normalize(),c.crossVectors(b,tumbleAxis).normalize().multiplyScalar(dx),b.multiplyScalar(dy),b.add(c).multiplyScalar(Math.cos(phi)),tumbleAxis.multiplyScalar(Math.sin(phi)).add(b)};this.update=delta=>{!1===this.enabled||(this.requireUpdate&&(computeTumbleAxisAngle(tumbleDirection),this.requireUpdate=!1),targetCamera.rotateAboutLookAtpoint(tumbleAxis,angle*delta/1e3))}},StereoCameraZoomFixed=function StereoCameraZoomFixed(){this.type="StereoCamera",this.aspect=1,this.cameraL=new THREE.PerspectiveCamera,this.cameraL.layers.enable(1),this.cameraL.matrixAutoUpdate=!1,this.cameraR=new THREE.PerspectiveCamera,this.cameraR.layers.enable(2),this.cameraR.matrixAutoUpdate=!1};/**
|
|
1720
|
+
* Object with containg viewport information used in ZincJS.
|
|
1721
|
+
*
|
|
1722
|
+
* @class
|
|
1723
|
+
* @author Alan Wu
|
|
1724
|
+
* @return {Viewport}
|
|
1725
|
+
*/ /**
|
|
1726
|
+
* Provides the basic controls for a scene.
|
|
1727
|
+
*
|
|
1728
|
+
* @class
|
|
1729
|
+
* @author Alan Wu
|
|
1730
|
+
* @return {CameraControls}
|
|
1731
|
+
*/ /**
|
|
1732
|
+
* @author mrdoob / http://mrdoob.com/
|
|
1733
|
+
*/Object.assign(StereoCameraZoomFixed.prototype,{update:(()=>{var focus,fov,aspect,near,far,zoom,eyeRight=new THREE.Matrix4,eyeLeft=new THREE.Matrix4;return function update(camera){var needsUpdate=focus!==camera.focus||fov!==camera.fov||aspect!==camera.aspect*this.aspect||near!==camera.near||far!==camera.far||zoom!==camera.zoom;if(needsUpdate){focus=camera.focus,fov=camera.fov,aspect=camera.aspect*this.aspect,near=camera.near,far=camera.far,zoom=camera.zoom;// Off-axis stereoscopic effect based on
|
|
1643
1734
|
// http://paulbourke.net/stereographics/stereorender/
|
|
1644
1735
|
var xmin,xmax,projectionMatrix=camera.projectionMatrix.clone(),eyeSep=.064/2,eyeSepOnProjection=eyeSep*near/focus,ymax=near*Math.tan(.5*(THREE.Math.DEG2RAD*fov))/camera.zoom;// translate xOffset
|
|
1645
1736
|
// for left eye
|
|
@@ -1649,14 +1740,18 @@ eyeLeft.elements[12]=-eyeSep,eyeRight.elements[12]=eyeSep,xmin=-ymax*aspect+eyeS
|
|
|
1649
1740
|
* @authod mrdoob / http://mrdoob.com/
|
|
1650
1741
|
* @authod arodic / http://aleksandarrodic.com/
|
|
1651
1742
|
* @authod fonserbc / http://fonserbc.github.io/
|
|
1652
|
-
*/var StereoEffect=function(renderer){var _stereo=new StereoCameraZoomFixed;_stereo.aspect=.5,this.setSize=(width,height)=>{renderer.setSize(width,height)},this.render=(scene,camera)=>{scene.updateMatrixWorld(),null===camera.parent&&camera.updateMatrixWorld(),_stereo.update(camera);var size=renderer.getSize();renderer.setScissorTest(!0),renderer.clear(),renderer.setScissor(0,0,size.width/2,size.height),renderer.setViewport(0,0,size.width/2,size.height),renderer.render(scene,_stereo.cameraL),renderer.setScissor(size.width/2,0,size.width/2,size.height),renderer.setViewport(size.width/2,0,size.width/2,size.height),renderer.render(scene,_stereo.cameraR),renderer.setScissorTest(!1)}},ModifiedDeviceOrientationControls=function(object){var scope=this;this.object=object,this.object.rotation.reorder("YXZ"),this.enabled=!0,this.deviceOrientation={},this.screenOrientation=0;var onDeviceOrientationChangeEvent=event=>{scope.deviceOrientation=event},onScreenOrientationChangeEvent=()=>{"undefined"!=typeof window&&(scope.screenOrientation=window.orientation||0)},setObjectQuaternion=(()=>{var zee=new THREE.Vector3(0,0,1),euler=new THREE.Euler,q0=new THREE.Quaternion,q1=new THREE.Quaternion(-Math.sqrt(.5),0,0,Math.sqrt(.5));// - PI/2 around the x-axis
|
|
1743
|
+
*/var StereoEffect=function StereoEffect(renderer){var _stereo=new StereoCameraZoomFixed;_stereo.aspect=.5,this.setSize=(width,height)=>{renderer.setSize(width,height)},this.render=(scene,camera)=>{scene.updateMatrixWorld(),null===camera.parent&&camera.updateMatrixWorld(),_stereo.update(camera);var size=renderer.getSize();renderer.setScissorTest(!0),renderer.clear(),renderer.setScissor(0,0,size.width/2,size.height),renderer.setViewport(0,0,size.width/2,size.height),renderer.render(scene,_stereo.cameraL),renderer.setScissor(size.width/2,0,size.width/2,size.height),renderer.setViewport(size.width/2,0,size.width/2,size.height),renderer.render(scene,_stereo.cameraR),renderer.setScissorTest(!1)}},ModifiedDeviceOrientationControls=function ModifiedDeviceOrientationControls(object){var scope=this;this.object=object,this.object.rotation.reorder("YXZ"),this.enabled=!0,this.deviceOrientation={},this.screenOrientation=0;var onDeviceOrientationChangeEvent=event=>{scope.deviceOrientation=event},onScreenOrientationChangeEvent=()=>{"undefined"!=typeof window&&(scope.screenOrientation=window.orientation||0)},setObjectQuaternion=(()=>{var zee=new THREE.Vector3(0,0,1),euler=new THREE.Euler,q0=new THREE.Quaternion,q1=new THREE.Quaternion(-Math.sqrt(.5),0,0,Math.sqrt(.5));// - PI/2 around the x-axis
|
|
1653
1744
|
return(cameraObject,alpha,beta,gamma,orient)=>{var vector=new THREE.Vector3(0,0,1);vector.subVectors(cameraObject.target,cameraObject.position),euler.set(beta,alpha,-gamma,"YXZ");// 'ZXY' for the device, but 'YXZ' for us
|
|
1654
1745
|
var quaternion=new THREE.Quaternion;// orient the device
|
|
1655
1746
|
// camera looks out the back of the device, not the top
|
|
1656
1747
|
// adjust for screen orientation
|
|
1657
|
-
quaternion.setFromEuler(euler),quaternion.multiply(q1),quaternion.multiply(q0.setFromAxisAngle(zee,-orient)),vector.applyQuaternion(quaternion),vector.addVectors(cameraObject.position,vector),cameraObject.lookAt(vector)}})()
|
|
1658
|
-
|
|
1659
|
-
|
|
1748
|
+
quaternion.setFromEuler(euler),quaternion.multiply(q1),quaternion.multiply(q0.setFromAxisAngle(zee,-orient)),vector.applyQuaternion(quaternion),vector.addVectors(cameraObject.position,vector),cameraObject.lookAt(vector)}})();// The angles alpha, beta and gamma form a set of intrinsic Tait-Bryan angles of type Z-X'-Y''
|
|
1749
|
+
this.connect=()=>{onScreenOrientationChangeEvent(),"undefined"!=typeof window&&(window.addEventListener("orientationchange",onScreenOrientationChangeEvent,!1),window.addEventListener("deviceorientation",onDeviceOrientationChangeEvent,!1)),scope.enabled=!0},this.disconnect=()=>{"undefined"!=typeof window&&(window.removeEventListener("orientationchange",onScreenOrientationChangeEvent,!1),window.removeEventListener("deviceorientation",onDeviceOrientationChangeEvent,!1)),scope.enabled=!1},this.update=()=>{if(!1!==scope.enabled){// Z
|
|
1750
|
+
// X'
|
|
1751
|
+
// Y''
|
|
1752
|
+
// O
|
|
1753
|
+
var alpha=scope.deviceOrientation.alpha?THREE.Math.degToRad(scope.deviceOrientation.alpha):0,beta=scope.deviceOrientation.beta?THREE.Math.degToRad(scope.deviceOrientation.beta):0,gamma=scope.deviceOrientation.gamma?THREE.Math.degToRad(scope.deviceOrientation.gamma):0,orient=scope.screenOrientation?THREE.Math.degToRad(scope.screenOrientation):0;setObjectQuaternion(scope.object,alpha,beta,gamma,orient)}},this.dispose=function(){this.disconnect()},this.connect()},NDCCameraControl=function NDCCameraControl(){var camera=void 0,targetCamera=void 0,defaultViewport=void 0,position=new THREE.Vector3,target=new THREE.Vector3,v1=new THREE.Vector3,v2=new THREE.Vector3,eventCallback=void 0;//return top left and size
|
|
1754
|
+
this.setCurrentCameraSettings=(cameraIn,defaultViewportIn)=>{camera=cameraIn.clone(),targetCamera=cameraIn,defaultViewport=defaultViewportIn,camera.near=defaultViewport.nearPlane,defaultViewport.farPlane&&(camera.far=defaultViewport.farPlane),defaultViewport.eyePosition&&camera.position.set(defaultViewport.eyePosition[0],defaultViewport.eyePosition[1],defaultViewport.eyePosition[2]),defaultViewport.upVector&&camera.up.set(defaultViewport.upVector[0],defaultViewport.upVector[1],defaultViewport.upVector[2]),defaultViewport.targetPosition&&(camera.target=new THREE.Vector3(defaultViewport.targetPosition[0],defaultViewport.targetPosition[1],defaultViewport.targetPosition[2]),camera.lookAt(camera.target)),camera.updateProjectionMatrix(),position.copy(camera.position).project(camera),target.copy(camera.target).project(camera)},this.getCurrentPosition=()=>(target.copy(targetCamera.target).project(camera),[target.x,target.y]),this.zoom=delta=>{var scaledDelta=.002*delta,zoom=Math.max(targetCamera.zoom-scaledDelta,1);targetCamera.zoom=zoom,targetCamera.updateProjectionMatrix()},this.zoomToBox=(box,zoom)=>{box.getCenter(v1),v1.project(camera),this.setCenterZoom([v1.x,v1.y],zoom)},this.getPanZoom=()=>({target:this.getCurrentPosition(),zoom:targetCamera.zoom}),this.setCenterZoom=(center,zoom)=>{v1.set(center[0],center[1],target.z).unproject(camera),v2.copy(v1).sub(targetCamera.target),targetCamera.target.copy(v1),targetCamera.lookAt(targetCamera.target),targetCamera.position.add(v2),targetCamera.zoom=zoom,targetCamera.updateProjectionMatrix()},this.setEventCallback=callback=>{(callback===void 0||"function"==typeof callback)&&(eventCallback=callback)},this.triggerCallback=()=>{eventCallback!==void 0&&"function"==typeof eventCallback&&eventCallback()}};/**
|
|
1660
1755
|
* @author richt / http://richt.me
|
|
1661
1756
|
* @author WestLangley / http://github.com/WestLangley
|
|
1662
1757
|
*
|
|
@@ -1665,7 +1760,7 @@ this.setCurrentCameraSettings=(cameraIn,defaultViewportIn)=>{camera=cameraIn.clo
|
|
|
1665
1760
|
|
|
1666
1761
|
/***/ }),
|
|
1667
1762
|
/* 40 */
|
|
1668
|
-
/***/ (
|
|
1763
|
+
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
1669
1764
|
|
|
1670
1765
|
var{Group,Matrix4}=__webpack_require__(3),uniqueiId=0,getUniqueId=function(){return"re"+uniqueiId++},Region=function(parentIn){var parent=parentIn,group=new Group;group.matrixAutoUpdate=!1,group.userData=this;var children=[],name="",zincObjects=[],tMatrix=new Matrix4,duration=3e3;/**
|
|
1671
1766
|
* Hide all primitives belong to this region.
|
|
@@ -1909,11 +2004,18 @@ var{Group,Matrix4}=__webpack_require__(3),uniqueiId=0,getUniqueId=function(){ret
|
|
|
1909
2004
|
* @private
|
|
1910
2005
|
*/tMatrix.set(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1),this.pickableUpdateRequired=!0,this.isRegion=!0,this.uuid=getUniqueId(),this.hideAllPrimitives=()=>{children.forEach(child=>child.hideAllPrimitives()),zincObjects.forEach(zincObject=>zincObject.setVisibility(!1))},this.showAllPrimitives=()=>{children.forEach(child=>child.showAllPrimitives()),zincObjects.forEach(zincObject=>zincObject.setVisibility(!0))},this.setVisibility=flag=>{group.visible=flag},this.getVisibility=()=>group.visible,this.getGroup=()=>group,this.setTransformation=transformation=>{tMatrix.set(...transformation),group.matrix.copy(tMatrix),group.updateMatrixWorld()},this.setName=nameIn=>{nameIn&&""!==nameIn&&(name=nameIn)},this.getName=()=>name,this.getParent=()=>parent,this.getFullSeparatedPath=()=>{var paths=[];if(""!==name){paths.push(name);for(var parentName,p=parent;p!==void 0;)parentName=p.getName(),""!==parentName&&paths.unshift(parentName),p=p.getParent()}return paths},this.getFullPath=()=>{var paths=this.getFullSeparatedPath();if(0<paths.length){var fullPath=paths.shift();return paths.forEach(path=>{fullPath=fullPath.concat("/",path)}),fullPath}return""},this.createChild=nameIn=>{var childRegion=new Region(this);return childRegion.setName(nameIn),children.push(childRegion),group.add(childRegion.getGroup()),childRegion},this.getChildWithName=childName=>{if(childName)for(var lowerChildName=childName.toLowerCase(),i=0;i<children.length;i++)if(children[i].getName().toLowerCase()===lowerChildName)return children[i]},this.findChildFromSeparatedPath=pathArray=>{if(pathArray&&0<pathArray.length&&""===pathArray[0]&&pathArray.shift(),pathArray&&0<pathArray.length){var childRegion=this.getChildWithName(pathArray[0]);return childRegion?(pathArray.shift(),childRegion.findChildFromSeparatedPath(pathArray)):void 0}return this},this.findChildFromPath=path=>{var pathArray=path.split("/");return this.findChildFromSeparatedPath(pathArray)},this.createChildFromSeparatedPath=pathArray=>{if(0<pathArray.length&&""===pathArray[0]&&pathArray.shift(),0<pathArray.length){var childRegion=this.getChildWithName(pathArray[0]);return childRegion||(childRegion=this.createChild(pathArray[0])),pathArray.shift(),childRegion.createChildFromSeparatedPath(pathArray)}return this},this.createChildFromPath=path=>{var pathArray=path.split("/");return this.createChildFromSeparatedPath(pathArray)},this.findOrCreateChildFromPath=path=>{var childRegion=this.findChildFromPath(path);return childRegion||(childRegion=this.createChildFromPath(path)),childRegion},this.addZincObject=zincObject=>{zincObject&&(zincObject.setRegion(this),group.add(zincObject.morph),zincObjects.push(zincObject),this.pickableUpdateRequired=!0)},this.removeZincObject=zincObject=>{for(var i=0;i<zincObjects.length;i++)if(zincObject===zincObjects[i])return group.remove(zincObject.morph),zincObjects.splice(i,1),void zincObject.dispose()},this.checkPickableUpdateRequred=transverse=>{if(this.pickableUpdateRequired)return!0;if(transverse)for(var flag=!1,i=0;i<children.length;i++)if(flag=children[i].checkPickableUpdateRequred(transverse),flag)return!0;return!1},this.getPickableThreeJSObjects=(objectsList,transverse)=>(zincObjects.forEach(zincObject=>{if(zincObject.morph&&zincObject.morph.visible){var marker=zincObject.marker;marker&&marker.isEnabled()&&objectsList.push(marker.morph),objectsList.push(zincObject.morph)}}),transverse&&children.forEach(childRegion=>{childRegion.getPickableThreeJSObjects(objectsList,transverse)}),this.pickableUpdateRequired=!1,objectsList),this.setDuration=durationIn=>{duration=durationIn,zincObjects.forEach(zincObject=>zincObject.setDuration(durationIn)),children.forEach(childRegion=>childRegion.setDuration(durationIn))},this.getDuration=()=>duration,this.getBoundingBox=transverse=>{var boundingBox1,boundingBox2;return zincObjects.forEach(zincObject=>{boundingBox2=zincObject.getBoundingBox(),boundingBox2&&(null==boundingBox1?boundingBox1=boundingBox2.clone():boundingBox1.union(boundingBox2))}),transverse&&children.forEach(childRegion=>{boundingBox2=childRegion.getBoundingBox(transverse),boundingBox2&&(null==boundingBox1?boundingBox1=boundingBox2.clone():boundingBox1.union(boundingBox2))}),boundingBox1},this.clear=transverse=>{transverse&&children.forEach(childRegion=>childRegion.clear(transverse)),zincObjects.forEach(zincObject=>{group.remove(zincObject.morph),zincObject.dispose()}),children=[],zincObjects=[]},this.objectIsInRegion=(zincObject,transverse)=>{for(var i=0;i<zincObjects.length;i++)if(zincObject===zincObjects[i])return!0;if(transverse)for(var _i=0;_i<children.length;_i++)if(children[_i].objectIsInRegion(zincObject,transverse))return!0;return!1},this.forEachGeometry=(callbackFunction,transverse)=>{zincObjects.forEach(zincObject=>{zincObject.isGeometry&&callbackFunction(zincObject)}),transverse&&children.forEach(childRegion=>childRegion.forEachGeometry(callbackFunction,transverse))},this.forEachGlyphset=(callbackFunction,transverse)=>{zincObjects.forEach(zincObject=>{zincObject.isGlyphset&&callbackFunction(zincObject)}),transverse&&children.forEach(childRegion=>childRegion.forEachGlyphset(callbackFunction,transverse))},this.forEachPointset=(callbackFunction,transverse)=>{zincObjects.forEach(zincObject=>{zincObject.isPointset&&callbackFunction(zincObject)}),transverse&&children.forEach(childRegion=>childRegion.forEachPointset(callbackFunction,transverse))},this.forEachLine=(callbackFunction,transverse)=>{zincObjects.forEach(zincObject=>{zincObject.isLines&&callbackFunction(zincObject)}),transverse&&children.forEach(childRegion=>childRegion.forEachLine(callbackFunction,transverse))},this.findObjectsWithAnatomicalId=(anatomicalId,transverse)=>(zincObjects.forEach(zincObject=>{zincObject.anatomicalId===anatomicalId&&objectsArray.push(zincObject)}),transverse&&children.forEach(childRegion=>{var childObjects=childRegion.findObjectsWithAnatomicalId(anatomicalId,transverse);objectsArray.push(...childObjects)}),objectsArray),this.findObjectsWithGroupName=(groupName,transverse)=>{var objectsArray=[];return zincObjects.forEach(zincObject=>{var lowerObjectName=zincObject.groupName?zincObject.groupName.toLowerCase():zincObject.groupName,lowerGroupName=groupName?groupName.toLowerCase():groupName;lowerObjectName===lowerGroupName&&objectsArray.push(zincObject)}),transverse&&children.forEach(childRegion=>{var childObjects=childRegion.findObjectsWithGroupName(groupName,transverse);objectsArray.push(...childObjects)}),objectsArray},this.findGeometriesWithGroupName=(groupName,transverse)=>{var primitivesArray=this.findObjectsWithGroupName(groupName,transverse),geometriesArray=primitivesArray.filter(primitive=>primitive.isGeometry);return geometriesArray},this.findPointsetsWithGroupName=(groupName,transverse)=>{var primitivesArray=this.findObjectsWithGroupName(groupName,transverse),pointsetsArray=primitivesArray.filter(primitive=>primitive.isPointset);return pointsetsArray},this.findGlyphsetsWithGroupName=(groupName,transverse)=>{var primitivesArray=this.findObjectsWithGroupName(groupName,transverse),glyphsetsArray=primitivesArray.filter(primitive=>primitive.isGlyphset);return glyphsetsArray},this.findLinesWithGroupName=(groupName,transverse)=>{var primitivesArray=this.findObjectsWithGroupName(groupName,transverse),linesArray=primitivesArray.filter(primitive=>primitive.isLines);return linesArray},this.getAllObjects=transverse=>{var objectsArray=[...zincObjects];return transverse&&children.forEach(childRegion=>{var childObjects=childRegion.getAllObjects(transverse);objectsArray.push(...childObjects)}),objectsArray},this.getChildRegions=transverse=>{var objectsArray=[...children];return transverse&&children.forEach(childRegion=>{var childObjects=childRegion.getChildRegions(transverse);objectsArray.push(...childObjects)}),objectsArray},this.getCurrentTime=()=>{if(zincObjects[0]!=null)return zincObjects[0].getCurrentTime();for(var time,i=0;i<children.length;i++)if(time=children[i].getCurrentTime(),-1!==time)return time;return-1},this.setMorphTime=(time,transverse)=>{zincObjects.forEach(zincObject=>{zincObject.setMorphTime(time)}),transverse&&children.forEach(childRegion=>{childRegion.setMorphTime(time)})},this.isTimeVarying=()=>{for(var i=0;i<zincObjects.length;i++)if(zincObjects[i].isTimeVarying())return!0;for(var _i2=0;_i2<children.length;_i2++)if(children[_i2].isTimeVarying())return!0;return!1},this.renderGeometries=(playRate,delta,playAnimation,options,transverse)=>{// Let video dictates the progress if one is present
|
|
1911
2006
|
var allObjects=this.getAllObjects(transverse);//process markers visibility and size
|
|
1912
|
-
if(allObjects.forEach(zincObject=>{zincObject.render(playRate*delta,playAnimation,options)}),options&&options.displayMarkers&&!1===playAnimation&&0<options.markerDepths.length){var min=Math.min(...options.markerDepths),max=Math.max(...options.markerDepths);allObjects.forEach(zincObject=>{zincObject.processMarkerVisual(min,max,options)})}}}
|
|
2007
|
+
if(allObjects.forEach(zincObject=>{zincObject.render(playRate*delta,playAnimation,options)}),options&&options.displayMarkers&&!1===playAnimation&&0<options.markerDepths.length){var min=Math.min(...options.markerDepths),max=Math.max(...options.markerDepths);allObjects.forEach(zincObject=>{zincObject.processMarkerVisual(min,max,options)})}}};/**
|
|
2008
|
+
* Provides a hierachical structure to objects, Each region
|
|
2009
|
+
* may contain multiple child regions and {@link ZincObject}.
|
|
2010
|
+
*
|
|
2011
|
+
* @class
|
|
2012
|
+
* @author Alan Wu
|
|
2013
|
+
* @return {Region}
|
|
2014
|
+
*/exports.Region=Region;
|
|
1913
2015
|
|
|
1914
2016
|
/***/ }),
|
|
1915
2017
|
/* 41 */
|
|
1916
|
-
/***/ (
|
|
2018
|
+
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
1917
2019
|
|
|
1918
2020
|
var THREE=__webpack_require__(3);/**
|
|
1919
2021
|
* This provide a full scale minimap. It will always
|
|
@@ -1927,52 +2029,138 @@ var diameter=boundingBox.min.distanceTo(boundingBox.max),radius=diameter/2,centr
|
|
|
1927
2029
|
|
|
1928
2030
|
/***/ }),
|
|
1929
2031
|
/* 42 */
|
|
1930
|
-
/***/ (
|
|
2032
|
+
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
1931
2033
|
|
|
1932
|
-
var THREE=__webpack_require__(3),ThreeBSP=__webpack_require__(43)(THREE),Geometry=__webpack_require__(2).Geometry,work=__webpack_require__(44),Promise=__webpack_require__(45)
|
|
1933
|
-
var host;hostIn&&hostIn.isGeometry&&(host=hostIn);var core=void 0,worker=void 0,onProgress=!1,myResolve=void 0,createGeometryFromJSON=json=>{var material=host.morph.material.clone();material.morphTargets=!1;var newGeometry=new Geometry,JSONParser=new JSONLoader,geometry=JSONParser.parse(json),mesh=new THREE.Mesh(geometry.geometry,material);return newGeometry.geometry=mesh.geometry,newGeometry.morph=mesh,newGeometry.morph.userData=newGeometry,newGeometry},workerEventHandler=ev=>{switch(ev.data.action){case"message":console.log(ev.data.message);break;case"result":var csg=new GeometryCSG(createGeometryFromJSON(ev.data.object));myResolve&&myResolve(csg),myResolve=void 0,onProgress=!1;break;default:throw"Cannot handle specified action."
|
|
2034
|
+
var THREE=__webpack_require__(3),ThreeBSP=__webpack_require__(43)(THREE),Geometry=(__webpack_require__(2).Geometry),work=__webpack_require__(44),Promise=(__webpack_require__(45)["default"]),JSONLoader=THREE.BufferGeometryLoader,GeometryCSG=function(hostIn){//ZincGeoemtry of the main geometry
|
|
2035
|
+
var host;hostIn&&hostIn.isGeometry&&(host=hostIn);var core=void 0,worker=void 0,onProgress=!1,myResolve=void 0,createGeometryFromJSON=json=>{var material=host.morph.material.clone();material.morphTargets=!1;var newGeometry=new Geometry,JSONParser=new JSONLoader,geometry=JSONParser.parse(json),mesh=new THREE.Mesh(geometry.geometry,material);return newGeometry.geometry=mesh.geometry,newGeometry.morph=mesh,newGeometry.morph.userData=newGeometry,newGeometry},workerEventHandler=ev=>{switch(ev.data.action){case"message":console.log(ev.data.message);break;case"result":var csg=new GeometryCSG(createGeometryFromJSON(ev.data.object));myResolve&&myResolve(csg),myResolve=void 0,onProgress=!1;break;default:throw"Cannot handle specified action."}},initialise=hostIn=>{if(void 0!==work&&(worker=work(/*require.resolve*/(46))),!worker)core=new((__webpack_require__(47).GeometryCSGInternal))(hostIn);else if(hostIn&&hostIn.isGeometry){var mesh=hostIn.morph,json=mesh.geometry.clone().applyMatrix(mesh.matrix).toJSON();worker.addEventListener("message",function(ev){workerEventHandler(ev)}),worker.postMessage({action:"initialise",object:json})}};this.getHostGeometry=()=>{var tempCSG=new ThreeBSP(host.morph);return new createZincGeometry(tempCSG)},this.getGeometry=()=>host;var createZincGeometry=csgMesh=>{var material=host.morph.material.clone();material.morphTargets=!1;var newMesh=csgMesh.toMesh(material),newGeometry=new Geometry;return newGeometry.geometry=newMesh.geometry,newGeometry.morph=newMesh,newGeometry.morph.userData=newGeometry,newGeometry};this.setCSG=CSG=>{core.setCSG(CSG)};var sendToWork=(guestGeometry,action,resolve,reject)=>{if(!onProgress){var mesh=guestGeometry.morph,json=mesh.geometry.clone().applyMatrix(mesh.matrix).toJSON();myResolve=resolve,onProgress=!0,worker.postMessage({action:action,object:json})}else reject("On progress")};this.intersect=guestGeometry=>new Promise((resolve,reject)=>{if(worker)sendToWork(guestGeometry,"intersect",resolve,reject);else{var result=core.intersect(guestGeometry),newCSG=new GeometryCSG(createZincGeometry(result));newCSG.setCSG(result),resolve(newCSG)}}),this.subtract=guestGeometry=>new Promise((resolve,reject)=>{if(worker)sendToWork(guestGeometry,"intersect",resolve,reject);else{var result=core.subtract(guestGeometry),newCSG=new GeometryCSG(createZincGeometry(result));newCSG.setCSG(result),resolve(newCSG)}}),this.union=guestGeometry=>new Promise((resolve,reject)=>{if(worker)sendToWork(guestGeometry,"intersect",resolve,reject);else{var result=core.union(guestGeometry),newCSG=new GeometryCSG(createZincGeometry(result));newCSG.setCSG(result),resolve(newCSG)}}),this.terminateWorker=()=>{worker&&worker.terminate()},initialise(hostIn)};//const work = undefined;
|
|
2036
|
+
exports.GeometryCSG=GeometryCSG;
|
|
1934
2037
|
|
|
1935
2038
|
/***/ }),
|
|
1936
2039
|
/* 43 */
|
|
1937
|
-
/***/ (
|
|
2040
|
+
/***/ ((module) => {
|
|
1938
2041
|
|
|
1939
2042
|
"use strict";
|
|
1940
2043
|
var ThreeBSP,EPSILON=1e-5,COPLANAR=0,FRONT=1,BACK=2,SPANNING=3;module.exports=function(THREE){var ThreeBSP=function(geometry){// Convert THREE.Geometry to ThreeBSP
|
|
1941
|
-
var i,_length_i,face,vertex,faceVertexUvs,uvs,polygon,polygons=[];if(geometry.isBufferGeometry&&(geometry=new THREE.Geometry().fromBufferGeometry(geometry)),geometry instanceof THREE.Geometry)this.matrix=new THREE.Matrix4;else if(geometry.isMesh)geometry.updateMatrix(),this.matrix=geometry.matrix.clone(),geometry=geometry.geometry,geometry.isBufferGeometry&&(geometry=new THREE.Geometry().fromBufferGeometry(geometry)),geometry.mergeVertices(),geometry.computeVertexNormals(!1);else{if(geometry instanceof ThreeBSP.Node)return this.tree=geometry,this.matrix=new THREE.Matrix4,this;throw"ThreeBSP: Given geometry is unsupported"}for(i=0,_length_i=geometry.faces.length;i<_length_i;i++){if(face=geometry.faces[i],faceVertexUvs=geometry.faceVertexUvs[0][i],polygon=new ThreeBSP.Polygon,face instanceof THREE.Face3)vertex=geometry.vertices[face.a],uvs=faceVertexUvs?new THREE.Vector2(faceVertexUvs[0].x,faceVertexUvs[0].y):null,vertex=new ThreeBSP.Vertex(vertex.x,vertex.y,vertex.z,face.vertexNormals[0],uvs),vertex.applyMatrix4(this.matrix),polygon.vertices.push(vertex),vertex=geometry.vertices[face.b],uvs=faceVertexUvs?new THREE.Vector2(faceVertexUvs[1].x,faceVertexUvs[1].y):null,vertex=new ThreeBSP.Vertex(vertex.x,vertex.y,vertex.z,face.vertexNormals[2],uvs),vertex.applyMatrix4(this.matrix),polygon.vertices.push(vertex),vertex=geometry.vertices[face.c],uvs=faceVertexUvs?new THREE.Vector2(faceVertexUvs[2].x,faceVertexUvs[2].y):null,vertex=new ThreeBSP.Vertex(vertex.x,vertex.y,vertex.z,face.vertexNormals[2],uvs),vertex.applyMatrix4(this.matrix),polygon.vertices.push(vertex);else if(typeof THREE.Face4)vertex=geometry.vertices[face.a],uvs=faceVertexUvs?new THREE.Vector2(faceVertexUvs[0].x,faceVertexUvs[0].y):null,vertex=new ThreeBSP.Vertex(vertex.x,vertex.y,vertex.z,face.vertexNormals[0],uvs),vertex.applyMatrix4(this.matrix),polygon.vertices.push(vertex),vertex=geometry.vertices[face.b],uvs=faceVertexUvs?new THREE.Vector2(faceVertexUvs[1].x,faceVertexUvs[1].y):null,vertex=new ThreeBSP.Vertex(vertex.x,vertex.y,vertex.z,face.vertexNormals[1],uvs),vertex.applyMatrix4(this.matrix),polygon.vertices.push(vertex),vertex=geometry.vertices[face.c],uvs=faceVertexUvs?new THREE.Vector2(faceVertexUvs[2].x,faceVertexUvs[2].y):null,vertex=new ThreeBSP.Vertex(vertex.x,vertex.y,vertex.z,face.vertexNormals[2],uvs),vertex.applyMatrix4(this.matrix),polygon.vertices.push(vertex),vertex=geometry.vertices[face.d],uvs=faceVertexUvs?new THREE.Vector2(faceVertexUvs[3].x,faceVertexUvs[3].y):null,vertex=new ThreeBSP.Vertex(vertex.x,vertex.y,vertex.z,face.vertexNormals[3],uvs),vertex.applyMatrix4(this.matrix),polygon.vertices.push(vertex);else throw"Invalid face type at index "+i;polygon.calculateProperties(),polygons.push(polygon)}this.tree=new ThreeBSP.Node(polygons)};return ThreeBSP.prototype.subtract=function(other_tree){var a=this.tree.clone(),b=other_tree.tree.clone();return a.invert(),a.clipTo(b),b.clipTo(a),b.invert(),b.clipTo(a),b.invert(),a.build(b.allPolygons()),a.invert(),a=new ThreeBSP(a),a.matrix=this.matrix,a},ThreeBSP.prototype.union=function(other_tree){var a=this.tree.clone(),b=other_tree.tree.clone();return a.clipTo(b),b.clipTo(a),b.invert(),b.clipTo(a),b.invert(),a.build(b.allPolygons()),a=new ThreeBSP(a),a.matrix=this.matrix,a},ThreeBSP.prototype.intersect=function(other_tree){var a=this.tree.clone(),b=other_tree.tree.clone();return a.invert(),b.clipTo(a),b.invert(),a.clipTo(b),b.clipTo(a),a.build(b.allPolygons()),a.invert(),a=new ThreeBSP(a),a.matrix=this.matrix,a},ThreeBSP.prototype.toGeometry=function(){var i,j,polygon,polygon_vertice_count,vertex_idx_a,vertex_idx_b,vertex_idx_c,vertex,face,verticeUvs,matrix=new THREE.Matrix4().getInverse(this.matrix),geometry=new THREE.Geometry,polygons=this.tree.allPolygons(),polygon_count=polygons.length,vertice_dict={};for(i=0;i<polygon_count;i++)for(polygon=polygons[i],polygon_vertice_count=polygon.vertices.length,j=2;j<polygon_vertice_count;j++)verticeUvs=[],vertex=polygon.vertices[0],verticeUvs.push(new THREE.Vector2(vertex.uv.x,vertex.uv.y)),vertex=new THREE.Vector3(vertex.x,vertex.y,vertex.z),vertex.applyMatrix4(matrix),"undefined"==typeof vertice_dict[vertex.x+","+vertex.y+","+vertex.z]?(geometry.vertices.push(vertex),vertex_idx_a=vertice_dict[vertex.x+","+vertex.y+","+vertex.z]=geometry.vertices.length-1):vertex_idx_a=vertice_dict[vertex.x+","+vertex.y+","+vertex.z],vertex=polygon.vertices[j-1],verticeUvs.push(new THREE.Vector2(vertex.uv.x,vertex.uv.y)),vertex=new THREE.Vector3(vertex.x,vertex.y,vertex.z),vertex.applyMatrix4(matrix),"undefined"==typeof vertice_dict[vertex.x+","+vertex.y+","+vertex.z]?(geometry.vertices.push(vertex),vertex_idx_b=vertice_dict[vertex.x+","+vertex.y+","+vertex.z]=geometry.vertices.length-1):vertex_idx_b=vertice_dict[vertex.x+","+vertex.y+","+vertex.z],vertex=polygon.vertices[j],verticeUvs.push(new THREE.Vector2(vertex.uv.x,vertex.uv.y)),vertex=new THREE.Vector3(vertex.x,vertex.y,vertex.z),vertex.applyMatrix4(matrix),"undefined"==typeof vertice_dict[vertex.x+","+vertex.y+","+vertex.z]?(geometry.vertices.push(vertex),vertex_idx_c=vertice_dict[vertex.x+","+vertex.y+","+vertex.z]=geometry.vertices.length-1):vertex_idx_c=vertice_dict[vertex.x+","+vertex.y+","+vertex.z],face=new THREE.Face3(vertex_idx_a,vertex_idx_b,vertex_idx_c,new THREE.Vector3(polygon.normal.x,polygon.normal.y,polygon.normal.z)),geometry.faces.push(face),geometry.faceVertexUvs[0].push(verticeUvs);return geometry},ThreeBSP.prototype.toBufferGeometry=function(){var geometry=this.toGeometry(),bufferGeometry=new THREE.BufferGeometry().fromGeometry(geometry);return bufferGeometry},ThreeBSP.prototype.toMesh=function(material){var geometry=this.toBufferGeometry(),mesh=new THREE.Mesh(geometry,material);return mesh.position.setFromMatrixPosition(this.matrix),mesh.rotation.setFromRotationMatrix(this.matrix),mesh},ThreeBSP.Polygon=function(vertices){vertices instanceof Array||(vertices=[]),this.vertices=vertices,0<vertices.length?this.calculateProperties():this.normal=this.w=void 0},ThreeBSP.Polygon.prototype.calculateProperties=function(){var a=this.vertices[0],b=this.vertices[1],c=this.vertices[2];return this.normal=b.clone().subtract(a).cross(c.clone().subtract(a)).normalize(),this.w=this.normal.clone().dot(a),this},ThreeBSP.Polygon.prototype.clone=function(){var i,vertice_count,polygon=new ThreeBSP.Polygon;for(i=0,vertice_count=this.vertices.length;i<vertice_count;i++)polygon.vertices.push(this.vertices[i].clone());return polygon.calculateProperties(),polygon},ThreeBSP.Polygon.prototype.flip=function(){var i,vertices=[];for(this.normal.multiplyScalar(-1),this.w*=-1,i=this.vertices.length-1;0<=i;i--)vertices.push(this.vertices[i]);return this.vertices=vertices,this},ThreeBSP.Polygon.prototype.classifyVertex=function(vertex){var side_value=this.normal.dot(vertex)-this.w;return side_value<-EPSILON?BACK:side_value>EPSILON?FRONT:COPLANAR},ThreeBSP.Polygon.prototype.classifySide=function(polygon){var i,vertex,classification,num_positive=0,num_negative=0,vertice_count=polygon.vertices.length;for(i=0;i<vertice_count;i++)vertex=polygon.vertices[i],classification=this.classifyVertex(vertex),classification===FRONT?num_positive++:classification===BACK&&num_negative++;return 0<num_positive&&0===num_negative?FRONT:0===num_positive&&0<num_negative?BACK:0===num_positive&&0===num_negative?COPLANAR:SPANNING},ThreeBSP.Polygon.prototype.splitPolygon=function(polygon,coplanar_front,coplanar_back,front,back){var classification=this.classifySide(polygon);if(classification===COPLANAR)(0<this.normal.dot(polygon.normal)?coplanar_front:coplanar_back).push(polygon);else if(classification===FRONT)front.push(polygon);else if(classification===BACK)back.push(polygon);else{var vertice_count,i,j,ti,tj,vi,vj,t,v,f=[],b=[];for(i=0,vertice_count=polygon.vertices.length;i<vertice_count;i++)j=(i+1)%vertice_count,vi=polygon.vertices[i],vj=polygon.vertices[j],ti=this.classifyVertex(vi),tj=this.classifyVertex(vj),ti!=BACK&&f.push(vi),ti!=FRONT&&b.push(vi),(ti|tj)
|
|
2044
|
+
var i,_length_i,face,vertex,faceVertexUvs,uvs,polygon,polygons=[];if(geometry.isBufferGeometry&&(geometry=new THREE.Geometry().fromBufferGeometry(geometry)),geometry instanceof THREE.Geometry)this.matrix=new THREE.Matrix4;else if(geometry.isMesh)geometry.updateMatrix(),this.matrix=geometry.matrix.clone(),geometry=geometry.geometry,geometry.isBufferGeometry&&(geometry=new THREE.Geometry().fromBufferGeometry(geometry)),geometry.mergeVertices(),geometry.computeVertexNormals(!1);else{if(geometry instanceof ThreeBSP.Node)return this.tree=geometry,this.matrix=new THREE.Matrix4,this;throw"ThreeBSP: Given geometry is unsupported"}for(i=0,_length_i=geometry.faces.length;i<_length_i;i++){if(face=geometry.faces[i],faceVertexUvs=geometry.faceVertexUvs[0][i],polygon=new ThreeBSP.Polygon,face instanceof THREE.Face3)vertex=geometry.vertices[face.a],uvs=faceVertexUvs?new THREE.Vector2(faceVertexUvs[0].x,faceVertexUvs[0].y):null,vertex=new ThreeBSP.Vertex(vertex.x,vertex.y,vertex.z,face.vertexNormals[0],uvs),vertex.applyMatrix4(this.matrix),polygon.vertices.push(vertex),vertex=geometry.vertices[face.b],uvs=faceVertexUvs?new THREE.Vector2(faceVertexUvs[1].x,faceVertexUvs[1].y):null,vertex=new ThreeBSP.Vertex(vertex.x,vertex.y,vertex.z,face.vertexNormals[2],uvs),vertex.applyMatrix4(this.matrix),polygon.vertices.push(vertex),vertex=geometry.vertices[face.c],uvs=faceVertexUvs?new THREE.Vector2(faceVertexUvs[2].x,faceVertexUvs[2].y):null,vertex=new ThreeBSP.Vertex(vertex.x,vertex.y,vertex.z,face.vertexNormals[2],uvs),vertex.applyMatrix4(this.matrix),polygon.vertices.push(vertex);else if(typeof THREE.Face4)vertex=geometry.vertices[face.a],uvs=faceVertexUvs?new THREE.Vector2(faceVertexUvs[0].x,faceVertexUvs[0].y):null,vertex=new ThreeBSP.Vertex(vertex.x,vertex.y,vertex.z,face.vertexNormals[0],uvs),vertex.applyMatrix4(this.matrix),polygon.vertices.push(vertex),vertex=geometry.vertices[face.b],uvs=faceVertexUvs?new THREE.Vector2(faceVertexUvs[1].x,faceVertexUvs[1].y):null,vertex=new ThreeBSP.Vertex(vertex.x,vertex.y,vertex.z,face.vertexNormals[1],uvs),vertex.applyMatrix4(this.matrix),polygon.vertices.push(vertex),vertex=geometry.vertices[face.c],uvs=faceVertexUvs?new THREE.Vector2(faceVertexUvs[2].x,faceVertexUvs[2].y):null,vertex=new ThreeBSP.Vertex(vertex.x,vertex.y,vertex.z,face.vertexNormals[2],uvs),vertex.applyMatrix4(this.matrix),polygon.vertices.push(vertex),vertex=geometry.vertices[face.d],uvs=faceVertexUvs?new THREE.Vector2(faceVertexUvs[3].x,faceVertexUvs[3].y):null,vertex=new ThreeBSP.Vertex(vertex.x,vertex.y,vertex.z,face.vertexNormals[3],uvs),vertex.applyMatrix4(this.matrix),polygon.vertices.push(vertex);else throw"Invalid face type at index "+i;polygon.calculateProperties(),polygons.push(polygon)}this.tree=new ThreeBSP.Node(polygons)};return ThreeBSP.prototype.subtract=function(other_tree){var a=this.tree.clone(),b=other_tree.tree.clone();return a.invert(),a.clipTo(b),b.clipTo(a),b.invert(),b.clipTo(a),b.invert(),a.build(b.allPolygons()),a.invert(),a=new ThreeBSP(a),a.matrix=this.matrix,a},ThreeBSP.prototype.union=function(other_tree){var a=this.tree.clone(),b=other_tree.tree.clone();return a.clipTo(b),b.clipTo(a),b.invert(),b.clipTo(a),b.invert(),a.build(b.allPolygons()),a=new ThreeBSP(a),a.matrix=this.matrix,a},ThreeBSP.prototype.intersect=function(other_tree){var a=this.tree.clone(),b=other_tree.tree.clone();return a.invert(),b.clipTo(a),b.invert(),a.clipTo(b),b.clipTo(a),a.build(b.allPolygons()),a.invert(),a=new ThreeBSP(a),a.matrix=this.matrix,a},ThreeBSP.prototype.toGeometry=function(){var i,j,polygon,polygon_vertice_count,vertex_idx_a,vertex_idx_b,vertex_idx_c,vertex,face,verticeUvs,matrix=new THREE.Matrix4().getInverse(this.matrix),geometry=new THREE.Geometry,polygons=this.tree.allPolygons(),polygon_count=polygons.length,vertice_dict={};for(i=0;i<polygon_count;i++)for(polygon=polygons[i],polygon_vertice_count=polygon.vertices.length,j=2;j<polygon_vertice_count;j++)verticeUvs=[],vertex=polygon.vertices[0],verticeUvs.push(new THREE.Vector2(vertex.uv.x,vertex.uv.y)),vertex=new THREE.Vector3(vertex.x,vertex.y,vertex.z),vertex.applyMatrix4(matrix),"undefined"==typeof vertice_dict[vertex.x+","+vertex.y+","+vertex.z]?(geometry.vertices.push(vertex),vertex_idx_a=vertice_dict[vertex.x+","+vertex.y+","+vertex.z]=geometry.vertices.length-1):vertex_idx_a=vertice_dict[vertex.x+","+vertex.y+","+vertex.z],vertex=polygon.vertices[j-1],verticeUvs.push(new THREE.Vector2(vertex.uv.x,vertex.uv.y)),vertex=new THREE.Vector3(vertex.x,vertex.y,vertex.z),vertex.applyMatrix4(matrix),"undefined"==typeof vertice_dict[vertex.x+","+vertex.y+","+vertex.z]?(geometry.vertices.push(vertex),vertex_idx_b=vertice_dict[vertex.x+","+vertex.y+","+vertex.z]=geometry.vertices.length-1):vertex_idx_b=vertice_dict[vertex.x+","+vertex.y+","+vertex.z],vertex=polygon.vertices[j],verticeUvs.push(new THREE.Vector2(vertex.uv.x,vertex.uv.y)),vertex=new THREE.Vector3(vertex.x,vertex.y,vertex.z),vertex.applyMatrix4(matrix),"undefined"==typeof vertice_dict[vertex.x+","+vertex.y+","+vertex.z]?(geometry.vertices.push(vertex),vertex_idx_c=vertice_dict[vertex.x+","+vertex.y+","+vertex.z]=geometry.vertices.length-1):vertex_idx_c=vertice_dict[vertex.x+","+vertex.y+","+vertex.z],face=new THREE.Face3(vertex_idx_a,vertex_idx_b,vertex_idx_c,new THREE.Vector3(polygon.normal.x,polygon.normal.y,polygon.normal.z)),geometry.faces.push(face),geometry.faceVertexUvs[0].push(verticeUvs);return geometry},ThreeBSP.prototype.toBufferGeometry=function(){var geometry=this.toGeometry(),bufferGeometry=new THREE.BufferGeometry().fromGeometry(geometry);return bufferGeometry},ThreeBSP.prototype.toMesh=function(material){var geometry=this.toBufferGeometry(),mesh=new THREE.Mesh(geometry,material);return mesh.position.setFromMatrixPosition(this.matrix),mesh.rotation.setFromRotationMatrix(this.matrix),mesh},ThreeBSP.Polygon=function(vertices){vertices instanceof Array||(vertices=[]),this.vertices=vertices,0<vertices.length?this.calculateProperties():this.normal=this.w=void 0},ThreeBSP.Polygon.prototype.calculateProperties=function(){var a=this.vertices[0],b=this.vertices[1],c=this.vertices[2];return this.normal=b.clone().subtract(a).cross(c.clone().subtract(a)).normalize(),this.w=this.normal.clone().dot(a),this},ThreeBSP.Polygon.prototype.clone=function(){var i,vertice_count,polygon=new ThreeBSP.Polygon;for(i=0,vertice_count=this.vertices.length;i<vertice_count;i++)polygon.vertices.push(this.vertices[i].clone());return polygon.calculateProperties(),polygon},ThreeBSP.Polygon.prototype.flip=function(){var i,vertices=[];for(this.normal.multiplyScalar(-1),this.w*=-1,i=this.vertices.length-1;0<=i;i--)vertices.push(this.vertices[i]);return this.vertices=vertices,this},ThreeBSP.Polygon.prototype.classifyVertex=function(vertex){var side_value=this.normal.dot(vertex)-this.w;return side_value<-EPSILON?BACK:side_value>EPSILON?FRONT:COPLANAR},ThreeBSP.Polygon.prototype.classifySide=function(polygon){var i,vertex,classification,num_positive=0,num_negative=0,vertice_count=polygon.vertices.length;for(i=0;i<vertice_count;i++)vertex=polygon.vertices[i],classification=this.classifyVertex(vertex),classification===FRONT?num_positive++:classification===BACK&&num_negative++;return 0<num_positive&&0===num_negative?FRONT:0===num_positive&&0<num_negative?BACK:0===num_positive&&0===num_negative?COPLANAR:SPANNING},ThreeBSP.Polygon.prototype.splitPolygon=function(polygon,coplanar_front,coplanar_back,front,back){var classification=this.classifySide(polygon);if(classification===COPLANAR)(0<this.normal.dot(polygon.normal)?coplanar_front:coplanar_back).push(polygon);else if(classification===FRONT)front.push(polygon);else if(classification===BACK)back.push(polygon);else{var vertice_count,i,j,ti,tj,vi,vj,t,v,f=[],b=[];for(i=0,vertice_count=polygon.vertices.length;i<vertice_count;i++)j=(i+1)%vertice_count,vi=polygon.vertices[i],vj=polygon.vertices[j],ti=this.classifyVertex(vi),tj=this.classifyVertex(vj),ti!=BACK&&f.push(vi),ti!=FRONT&&b.push(vi),(ti|tj)==SPANNING&&(t=(this.w-this.normal.dot(vi))/this.normal.dot(vj.clone().subtract(vi)),v=vi.interpolate(vj,t),f.push(v),b.push(v));3<=f.length&&front.push(new ThreeBSP.Polygon(f).calculateProperties()),3<=b.length&&back.push(new ThreeBSP.Polygon(b).calculateProperties())}},ThreeBSP.Vertex=function(x,y,z,normal,uv){this.x=x,this.y=y,this.z=z,this.normal=normal||new THREE.Vector3,this.uv=uv||new THREE.Vector2},ThreeBSP.Vertex.prototype.clone=function(){return new ThreeBSP.Vertex(this.x,this.y,this.z,this.normal.clone(),this.uv.clone())},ThreeBSP.Vertex.prototype.add=function(vertex){return this.x+=vertex.x,this.y+=vertex.y,this.z+=vertex.z,this},ThreeBSP.Vertex.prototype.subtract=function(vertex){return this.x-=vertex.x,this.y-=vertex.y,this.z-=vertex.z,this},ThreeBSP.Vertex.prototype.multiplyScalar=function(scalar){return this.x*=scalar,this.y*=scalar,this.z*=scalar,this},ThreeBSP.Vertex.prototype.cross=function(vertex){var x=this.x,y=this.y,z=this.z;return this.x=y*vertex.z-z*vertex.y,this.y=z*vertex.x-x*vertex.z,this.z=x*vertex.y-y*vertex.x,this},ThreeBSP.Vertex.prototype.normalize=function(){var length=Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z);return this.x/=length,this.y/=length,this.z/=length,this},ThreeBSP.Vertex.prototype.dot=function(vertex){return this.x*vertex.x+this.y*vertex.y+this.z*vertex.z},ThreeBSP.Vertex.prototype.lerp=function(a,t){return this.add(a.clone().subtract(this).multiplyScalar(t)),this.normal.add(a.normal.clone().sub(this.normal).multiplyScalar(t)),this.uv.add(a.uv.clone().sub(this.uv).multiplyScalar(t)),this},ThreeBSP.Vertex.prototype.interpolate=function(other,t){return this.clone().lerp(other,t)},ThreeBSP.Vertex.prototype.applyMatrix4=function(m){// input: THREE.Matrix4 affine matrix
|
|
1942
2045
|
var x=this.x,y=this.y,z=this.z,e=m.elements;return this.x=e[0]*x+e[4]*y+e[8]*z+e[12],this.y=e[1]*x+e[5]*y+e[9]*z+e[13],this.z=e[2]*x+e[6]*y+e[10]*z+e[14],this},ThreeBSP.Node=function(polygons){var i,polygon_count,front=[],back=[];if(this.polygons=[],this.front=this.back=void 0,polygons instanceof Array&&0!==polygons.length){for(this.divider=polygons[0].clone(),i=0,polygon_count=polygons.length;i<polygon_count;i++)this.divider.splitPolygon(polygons[i],this.polygons,this.polygons,front,back);0<front.length&&(this.front=new ThreeBSP.Node(front)),0<back.length&&(this.back=new ThreeBSP.Node(back))}},ThreeBSP.Node.isConvex=function(polygons){var i,j;for(i=0;i<polygons.length;i++)for(j=0;j<polygons.length;j++)if(i!==j&&polygons[i].classifySide(polygons[j])!==BACK)return!1;return!0},ThreeBSP.Node.prototype.build=function(polygons){var i,polygon_count,front=[],back=[];for(this.divider||(this.divider=polygons[0].clone()),i=0,polygon_count=polygons.length;i<polygon_count;i++)this.divider.splitPolygon(polygons[i],this.polygons,this.polygons,front,back);0<front.length&&(!this.front&&(this.front=new ThreeBSP.Node),this.front.build(front)),0<back.length&&(!this.back&&(this.back=new ThreeBSP.Node),this.back.build(back))},ThreeBSP.Node.prototype.allPolygons=function(){var polygons=this.polygons.slice();return this.front&&(polygons=polygons.concat(this.front.allPolygons())),this.back&&(polygons=polygons.concat(this.back.allPolygons())),polygons},ThreeBSP.Node.prototype.clone=function(){var node=new ThreeBSP.Node;return node.divider=this.divider.clone(),node.polygons=this.polygons.map(function(polygon){return polygon.clone()}),node.front=this.front&&this.front.clone(),node.back=this.back&&this.back.clone(),node},ThreeBSP.Node.prototype.invert=function(){var i,polygon_count,temp;for(i=0,polygon_count=this.polygons.length;i<polygon_count;i++)this.polygons[i].flip();return this.divider.flip(),this.front&&this.front.invert(),this.back&&this.back.invert(),temp=this.front,this.front=this.back,this.back=temp,this},ThreeBSP.Node.prototype.clipPolygons=function(polygons){var i,polygon_count,front,back;if(!this.divider)return polygons.slice();for(front=[],back=[],(i=0,polygon_count=polygons.length);i<polygon_count;i++)this.divider.splitPolygon(polygons[i],front,back,front,back);return this.front&&(front=this.front.clipPolygons(front)),back=this.back?this.back.clipPolygons(back):[],front.concat(back)},ThreeBSP.Node.prototype.clipTo=function(node){this.polygons=node.clipPolygons(this.polygons),this.front&&this.front.clipTo(node),this.back&&this.back.clipTo(node)},ThreeBSP};
|
|
1943
2046
|
|
|
1944
2047
|
/***/ }),
|
|
1945
2048
|
/* 44 */
|
|
1946
|
-
/***/ (
|
|
2049
|
+
/***/ ((module) => {
|
|
1947
2050
|
|
|
2051
|
+
"use strict";
|
|
1948
2052
|
module.exports = require("webworkify-webpack");
|
|
1949
2053
|
|
|
1950
2054
|
/***/ }),
|
|
1951
2055
|
/* 45 */
|
|
1952
|
-
/***/ (
|
|
2056
|
+
/***/ ((module) => {
|
|
1953
2057
|
|
|
2058
|
+
"use strict";
|
|
1954
2059
|
module.exports = require("promise-polyfill");
|
|
1955
2060
|
|
|
1956
2061
|
/***/ }),
|
|
1957
2062
|
/* 46 */
|
|
1958
|
-
/***/ (
|
|
2063
|
+
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
|
1959
2064
|
|
|
1960
|
-
var Geometry=__webpack_require__(2).Geometry,THREE=__webpack_require__(3),JSONLoader=THREE.BufferGeometryLoader;module.exports=function(self){var core=void 0,geometryFromJSON=function(object){var JSONParser=new JSONLoader,geometry=JSONParser.parse(object),material=new THREE.MeshPhongMaterial,mesh=new THREE.Mesh(geometry.geometry,material),host=new Geometry;return host.morph=mesh,host},initialise=function(object){var host=geometryFromJSON(object);core=new(__webpack_require__(47).GeometryCSGInternal)(host),self.postMessage({action:"message",message:"Initialised"})},intersect=function(object){if(core){var guest=geometryFromJSON(object),result=core.intersect(guest),json=result.toBufferGeometry().toJSON();self.postMessage({action:"result",object:json})}},subtract=function(object){if(core){var guest=geometryFromJSON(object),result=core.subtract(guest),json=result.toBufferGeometry().toJSON();self.postMessage({action:"result",object:json})}},union=function(object){if(core){var guest=geometryFromJSON(object),result=core.union(guest),json=result.toBufferGeometry().toJSON();self.postMessage({action:"result",object:json})}};self.addEventListener("message",function(ev){switch(ev.data.action){case"initialise":initialise(ev.data.object);break;case"intersect":intersect(ev.data.object);break;case"subtract":subtract(ev.data.object);break;case"union":union(ev.data.object);break;default:throw"Cannot handle specified action."
|
|
2065
|
+
var Geometry=(__webpack_require__(2).Geometry),THREE=__webpack_require__(3),JSONLoader=THREE.BufferGeometryLoader;module.exports=function(self){var core=void 0,geometryFromJSON=function geometryFromJSON(object){var JSONParser=new JSONLoader,geometry=JSONParser.parse(object),material=new THREE.MeshPhongMaterial,mesh=new THREE.Mesh(geometry.geometry,material),host=new Geometry;return host.morph=mesh,host},initialise=function initialise(object){var host=geometryFromJSON(object);core=new((__webpack_require__(47).GeometryCSGInternal))(host),self.postMessage({action:"message",message:"Initialised"})},intersect=function intersect(object){if(core){var guest=geometryFromJSON(object),result=core.intersect(guest),json=result.toBufferGeometry().toJSON();self.postMessage({action:"result",object:json})}},subtract=function subtract(object){if(core){var guest=geometryFromJSON(object),result=core.subtract(guest),json=result.toBufferGeometry().toJSON();self.postMessage({action:"result",object:json})}},union=function union(object){if(core){var guest=geometryFromJSON(object),result=core.union(guest),json=result.toBufferGeometry().toJSON();self.postMessage({action:"result",object:json})}};self.addEventListener("message",function(ev){switch(ev.data.action){case"initialise":initialise(ev.data.object);break;case"intersect":intersect(ev.data.object);break;case"subtract":subtract(ev.data.object);break;case"union":union(ev.data.object);break;default:throw"Cannot handle specified action."}})};
|
|
1961
2066
|
|
|
1962
2067
|
/***/ }),
|
|
1963
2068
|
/* 47 */
|
|
1964
|
-
/***/ (
|
|
2069
|
+
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
1965
2070
|
|
|
1966
|
-
var THREE=__webpack_require__(3),ThreeBSP=__webpack_require__(43)(THREE),Geometry=__webpack_require__(2).Geometry,GeometryCSG=__webpack_require__(42).GeometryCSG,GeometryCSGInternal=function(hostIn){//ZincGeoemtry of the main geometry
|
|
2071
|
+
var THREE=__webpack_require__(3),ThreeBSP=__webpack_require__(43)(THREE),Geometry=(__webpack_require__(2).Geometry),GeometryCSG=(__webpack_require__(42).GeometryCSG),GeometryCSGInternal=function(hostIn){//ZincGeoemtry of the main geometry
|
|
1967
2072
|
var host;hostIn&&hostIn.isGeometry&&(host=hostIn);var hostCSG;this.setGeometry=hostIn=>{hostIn&&hostIn.isGeometry&&(host=hostIn),hostCSG=void 0},this.setCSG=csg=>{hostCSG=csg};var prepareCSG=guestGeometry=>{if(host&&host.morph&&guestGeometry&&guestGeometry.morph){hostCSG===void 0&&(hostCSG=new ThreeBSP(host.morph));var guestCSG=new ThreeBSP(guestGeometry.morph);return guestCSG}};this.intersect=guestGeometry=>{var guestCSG=prepareCSG(guestGeometry);return hostCSG&&guestCSG?hostCSG.intersect(guestCSG):void 0},this.subtract=guestGeometry=>{var guestCSG=prepareCSG(guestGeometry);return hostCSG&&guestCSG?hostCSG.subtract(guestCSG):void 0},this.union=guestGeometry=>{var guestCSG=prepareCSG(guestGeometry);return hostCSG&&guestCSG?hostCSG.union(guestCSG):void 0}};exports.GeometryCSGInternal=GeometryCSGInternal;
|
|
1968
2073
|
|
|
1969
2074
|
/***/ }),
|
|
1970
2075
|
/* 48 */
|
|
1971
|
-
/***/ (
|
|
2076
|
+
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
1972
2077
|
|
|
1973
|
-
var THREE=__webpack_require__(3),ThreeBSP=__webpack_require__(43)(THREE),Glyphset=__webpack_require__(13).Glyphset,GlyphsetCSG=function(hostIn){var host;hostIn&&hostIn.isGlyphset&&(host=hostIn);var hostCSGs=[];this.setGlyphset=hostIn=>{hostIn&&hostIn.isGlyphset&&(host=hostIn),hostCSG=void 0},this.getGlyphset=()=>host;var prepareCSGForGlyphs=()=>glyph=>{var mesh=glyph.getMesh(),label=glyph.getLabel();if(mesh){var csg=new ThreeBSP(mesh.geometry.clone().applyMatrix(mesh.matrix)),store=[];store.csg=csg,store.label=label,mesh.material&&(store.material=mesh.material.clone()),hostCSGs.push(store)}},prepareCSG=guestGeometry=>{if(host&&guestGeometry&&guestGeometry.morph){0==hostCSGs.length&&host.forEachGlyph(prepareCSGForGlyphs());var guestCSG=new ThreeBSP(guestGeometry.morph);return guestCSG}};this.intersect=guestGeometry=>{var guestCSG=prepareCSG(guestGeometry);if(0<hostCSGs.length&&guestCSG){for(var glyphset=new(__webpack_require__(13).Glyphset),i=0;i<hostCSGs.length;i++){var _hostCSG=hostCSGs[i],intersect=_hostCSG.csg.intersect(guestCSG),mesh=intersect.toMesh();if(mesh&&mesh.geometry&&0<mesh.geometry.vertices.length){_hostCSG.material&&(mesh.material=_hostCSG.material,mesh.material.side=THREE.DoubleSide,mesh.material.clippingPlanes=null);var glyph=glyphset.addMeshAsGlyph(mesh,i+1);glyph.setLabel(_hostCSG.label)}}var newCSG=new GlyphsetCSG(glyphset);return newCSG}}}
|
|
2078
|
+
var THREE=__webpack_require__(3),ThreeBSP=__webpack_require__(43)(THREE),Glyphset=(__webpack_require__(13).Glyphset),GlyphsetCSG=function(hostIn){var host;hostIn&&hostIn.isGlyphset&&(host=hostIn);var hostCSGs=[];this.setGlyphset=hostIn=>{hostIn&&hostIn.isGlyphset&&(host=hostIn),hostCSG=void 0},this.getGlyphset=()=>host;var prepareCSGForGlyphs=()=>glyph=>{var mesh=glyph.getMesh(),label=glyph.getLabel();if(mesh){var csg=new ThreeBSP(mesh.geometry.clone().applyMatrix(mesh.matrix)),store=[];store.csg=csg,store.label=label,mesh.material&&(store.material=mesh.material.clone()),hostCSGs.push(store)}},prepareCSG=guestGeometry=>{if(host&&guestGeometry&&guestGeometry.morph){0==hostCSGs.length&&host.forEachGlyph(prepareCSGForGlyphs());var guestCSG=new ThreeBSP(guestGeometry.morph);return guestCSG}};this.intersect=guestGeometry=>{var guestCSG=prepareCSG(guestGeometry);if(0<hostCSGs.length&&guestCSG){for(var glyphset=new((__webpack_require__(13).Glyphset)),i=0;i<hostCSGs.length;i++){var _hostCSG=hostCSGs[i],intersect=_hostCSG.csg.intersect(guestCSG),mesh=intersect.toMesh();if(mesh&&mesh.geometry&&0<mesh.geometry.vertices.length){_hostCSG.material&&(mesh.material=_hostCSG.material,mesh.material.side=THREE.DoubleSide,mesh.material.clippingPlanes=null);var glyph=glyphset.addMeshAsGlyph(mesh,i+1);glyph.setLabel(_hostCSG.label)}}var newCSG=new GlyphsetCSG(glyphset);return newCSG}}};/**
|
|
2079
|
+
* Provides an object which takes in a glyphset, convert it into a CSG and further
|
|
2080
|
+
* action such as intersect with another geometry may be performed.
|
|
2081
|
+
*
|
|
2082
|
+
* @class
|
|
2083
|
+
* @author Alan Wu
|
|
2084
|
+
* @return {GlyphsetCSG}
|
|
2085
|
+
*/exports.GlyphsetCSG=GlyphsetCSG;
|
|
1974
2086
|
|
|
1975
2087
|
/***/ })
|
|
1976
|
-
/******/
|
|
2088
|
+
/******/ ]);
|
|
2089
|
+
/************************************************************************/
|
|
2090
|
+
/******/ // The module cache
|
|
2091
|
+
/******/ var __webpack_module_cache__ = {};
|
|
2092
|
+
/******/
|
|
2093
|
+
/******/ // The require function
|
|
2094
|
+
/******/ function __webpack_require__(moduleId) {
|
|
2095
|
+
/******/ // Check if module is in cache
|
|
2096
|
+
/******/ var cachedModule = __webpack_module_cache__[moduleId];
|
|
2097
|
+
/******/ if (cachedModule !== undefined) {
|
|
2098
|
+
/******/ return cachedModule.exports;
|
|
2099
|
+
/******/ }
|
|
2100
|
+
/******/ // Create a new module (and put it into the cache)
|
|
2101
|
+
/******/ var module = __webpack_module_cache__[moduleId] = {
|
|
2102
|
+
/******/ // no module.id needed
|
|
2103
|
+
/******/ // no module.loaded needed
|
|
2104
|
+
/******/ exports: {}
|
|
2105
|
+
/******/ };
|
|
2106
|
+
/******/
|
|
2107
|
+
/******/ // Execute the module function
|
|
2108
|
+
/******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__);
|
|
2109
|
+
/******/
|
|
2110
|
+
/******/ // Return the exports of the module
|
|
2111
|
+
/******/ return module.exports;
|
|
2112
|
+
/******/ }
|
|
2113
|
+
/******/
|
|
2114
|
+
/************************************************************************/
|
|
2115
|
+
/******/ /* webpack/runtime/compat get default export */
|
|
2116
|
+
/******/ (() => {
|
|
2117
|
+
/******/ // getDefaultExport function for compatibility with non-harmony modules
|
|
2118
|
+
/******/ __webpack_require__.n = (module) => {
|
|
2119
|
+
/******/ var getter = module && module.__esModule ?
|
|
2120
|
+
/******/ () => (module['default']) :
|
|
2121
|
+
/******/ () => (module);
|
|
2122
|
+
/******/ __webpack_require__.d(getter, { a: getter });
|
|
2123
|
+
/******/ return getter;
|
|
2124
|
+
/******/ };
|
|
2125
|
+
/******/ })();
|
|
2126
|
+
/******/
|
|
2127
|
+
/******/ /* webpack/runtime/define property getters */
|
|
2128
|
+
/******/ (() => {
|
|
2129
|
+
/******/ // define getter functions for harmony exports
|
|
2130
|
+
/******/ __webpack_require__.d = (exports, definition) => {
|
|
2131
|
+
/******/ for(var key in definition) {
|
|
2132
|
+
/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
|
|
2133
|
+
/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
|
|
2134
|
+
/******/ }
|
|
2135
|
+
/******/ }
|
|
2136
|
+
/******/ };
|
|
2137
|
+
/******/ })();
|
|
2138
|
+
/******/
|
|
2139
|
+
/******/ /* webpack/runtime/hasOwnProperty shorthand */
|
|
2140
|
+
/******/ (() => {
|
|
2141
|
+
/******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
|
|
2142
|
+
/******/ })();
|
|
2143
|
+
/******/
|
|
2144
|
+
/******/ /* webpack/runtime/make namespace object */
|
|
2145
|
+
/******/ (() => {
|
|
2146
|
+
/******/ // define __esModule on exports
|
|
2147
|
+
/******/ __webpack_require__.r = (exports) => {
|
|
2148
|
+
/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
|
|
2149
|
+
/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
2150
|
+
/******/ }
|
|
2151
|
+
/******/ Object.defineProperty(exports, '__esModule', { value: true });
|
|
2152
|
+
/******/ };
|
|
2153
|
+
/******/ })();
|
|
2154
|
+
/******/
|
|
2155
|
+
/************************************************************************/
|
|
2156
|
+
/******/
|
|
2157
|
+
/******/ // startup
|
|
2158
|
+
/******/ // Load entry module and return exports
|
|
2159
|
+
/******/ // This entry module is referenced by other modules so it can't be inlined
|
|
2160
|
+
/******/ var __webpack_exports__ = __webpack_require__(0);
|
|
2161
|
+
/******/
|
|
2162
|
+
/******/ return __webpack_exports__;
|
|
2163
|
+
/******/ })()
|
|
2164
|
+
;
|
|
1977
2165
|
});
|
|
1978
2166
|
//# sourceMappingURL=zinc.js.map
|