@realsee/five 6.4.0-alpha.9 → 6.4.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.
Files changed (111) hide show
  1. package/docs/assets/navigation.js +1 -1
  2. package/docs/assets/search.js +1 -1
  3. package/docs/classes/five.Camera.html +6 -5
  4. package/docs/classes/five.CustomShader.html +1 -1
  5. package/docs/classes/five.Draco.html +13 -0
  6. package/docs/classes/five.Five.html +60 -59
  7. package/docs/classes/five.KTX2.html +10 -0
  8. package/docs/classes/five.Model.html +24 -24
  9. package/docs/classes/five.ModelViewLayer.html +6 -6
  10. package/docs/classes/five.PBMMesh.html +1 -1
  11. package/docs/classes/five.PBMMeshMaterial.html +52 -37
  12. package/docs/classes/five.PBMPointCloudMaterial.html +40 -34
  13. package/docs/classes/five.PBMSkinnedMesh.html +5 -0
  14. package/docs/classes/five.TextureLoader.html +2 -2
  15. package/docs/classes/five.Tile.html +3 -2
  16. package/docs/classes/five.Tile3DModel.html +11 -4
  17. package/docs/classes/five.TileCubeTextureTarget.html +4 -3
  18. package/docs/classes/five.TileNode.html +1 -1
  19. package/docs/classes/five.Tileset.html +10 -3
  20. package/docs/classes/five.Trajectory.html +2 -2
  21. package/docs/classes/five.Work.html +15 -13
  22. package/docs/functions/five.defaultImageURLTransform.html +1 -1
  23. package/docs/functions/five.imageSupport.html +1 -1
  24. package/docs/functions/five.loadAt3d.html +1 -1
  25. package/docs/functions/five.loadB3dm.html +1 -1
  26. package/docs/functions/five.loadDome.html +1 -1
  27. package/docs/functions/five.loadDomez.html +1 -1
  28. package/docs/functions/five.loadFbx.html +1 -1
  29. package/docs/functions/five.loadGltf.html +1 -0
  30. package/docs/functions/five.loadPbm.html +1 -1
  31. package/docs/functions/five.loadPly.html +1 -1
  32. package/docs/functions/five.loadPnts.html +1 -1
  33. package/docs/functions/five.loadX3p.html +1 -1
  34. package/docs/functions/five.parseWork.html +1 -1
  35. package/docs/interfaces/five.CustomShaderInitArgs.html +2 -2
  36. package/docs/interfaces/five.FiveInitArgs.html +5 -3
  37. package/docs/interfaces/five.FiveLoadOptions.html +10 -24
  38. package/docs/interfaces/five.FloorplanControllerCustomInitArgs.html +3 -7
  39. package/docs/interfaces/five.ImageOptions.html +2 -2
  40. package/docs/interfaces/five.ImageURLMappings.html +1 -1
  41. package/docs/interfaces/five.ImageURLOptions.html +8 -8
  42. package/docs/interfaces/five.LoosePanoWork.html +9 -0
  43. package/docs/interfaces/five.MapviewControllerCustomInitArgs.html +11 -13
  44. package/docs/interfaces/five.PBMParameters.html +12 -6
  45. package/docs/interfaces/five.PanoramaControllerCustomInitArgs.html +6 -4
  46. package/docs/interfaces/five.TextureOptions.html +2 -2
  47. package/docs/interfaces/five.Tile3DModelLoaderOptions.html +3 -2
  48. package/docs/interfaces/five.Tile3dLayerOptions.html +14 -10
  49. package/docs/interfaces/five.TopviewControllerCustomInitArgs.html +3 -7
  50. package/docs/interfaces/five.VRPanoramaControllerCustomInitArgs.html +6 -4
  51. package/docs/interfaces/five.WorkCubeImage.html +8 -8
  52. package/docs/interfaces/five.WorkImage.html +10 -10
  53. package/docs/interfaces/five.WorkInitial.html +8 -8
  54. package/docs/interfaces/five.WorkModel.html +6 -6
  55. package/docs/interfaces/five.WorkModelLayer.html +2 -2
  56. package/docs/interfaces/five.WorkObserver.html +20 -20
  57. package/docs/interfaces/five.WorkResolvedObserver.html +20 -20
  58. package/docs/interfaces/five.WorkTile.html +2 -2
  59. package/docs/interfaces/five.WorkVideo.html +4 -4
  60. package/docs/interfaces/five.XRPanoramaControllerCustomInitArgs.html +6 -4
  61. package/docs/modules/five.html +8 -1
  62. package/docs/types/five.ControllerCustomInitTypes.html +1 -1
  63. package/docs/types/five.LooseWorkPanorama.html +1 -1
  64. package/docs/types/five.Mirror.html +1 -1
  65. package/docs/types/five.ModelMaterialValues.html +1 -1
  66. package/docs/types/five.Models.html +5 -5
  67. package/docs/types/five.ParseWorkOptions.html +1 -1
  68. package/docs/types/five.ParsedResultType.html +1 -1
  69. package/docs/types/five.Tile3dOptions.html +1 -1
  70. package/docs/types/five.TileContentData.html +1 -1
  71. package/docs/types/five.TilesetFrameState.html +1 -1
  72. package/docs/types/five.TrajectoryContentData.html +1 -1
  73. package/docs/types/five.Works.html +1 -1
  74. package/docs/variables/five.controllersDefaultInitArgs.html +1 -0
  75. package/docs/variables/five.defaultPbmParameters.html +1 -1
  76. package/docs/variables/five.draco-1.html +1 -0
  77. package/docs/variables/five.ktx2-1.html +1 -0
  78. package/five/index.d.ts +191 -61
  79. package/five/index.js +110 -110
  80. package/five/index.mjs +13922 -12425
  81. package/gltf-loader/index.js +4 -4
  82. package/gltf-loader/index.mjs +147 -147
  83. package/line/index.js +3 -3
  84. package/line/index.mjs +10 -10
  85. package/package.json +9 -2
  86. package/plugins/index.js +2 -2
  87. package/plugins/index.mjs +2 -2
  88. package/react/index.js +2 -2
  89. package/react/index.mjs +2 -2
  90. package/shader-lib/index.d.ts +38 -0
  91. package/shader-lib/index.js +111 -17
  92. package/shader-lib/index.mjs +350 -82
  93. package/sticker/index.js +3 -3
  94. package/sticker/index.mjs +7 -7
  95. package/umd/five-gltf-loader.js +5 -5
  96. package/umd/five-line.js +3 -3
  97. package/umd/five-plugins.js +2 -2
  98. package/umd/five-react.js +2 -2
  99. package/umd/five-shader-lib.js +111 -17
  100. package/umd/five-sticker.js +3 -3
  101. package/umd/five-vfx.js +2 -2
  102. package/umd/five-vue.js +2 -2
  103. package/umd/five.js +52 -52
  104. package/vfx/index.js +2 -2
  105. package/vfx/index.mjs +2 -2
  106. package/vue/index.js +2 -2
  107. package/vue/index.mjs +2 -2
  108. package/work-downloader/index.d.ts +32 -0
  109. package/work-downloader/index.js +255 -0
  110. package/work-downloader/index.mjs +786 -0
  111. package/docs/functions/five.loadGlb.html +0 -1
package/line/index.js CHANGED
@@ -1,8 +1,8 @@
1
1
  /**
2
2
  * @license
3
3
  * @realsee/five
4
- * Generated: 1/8/2025
5
- * Version: 6.4.0-alpha.9
4
+ * Generated: 2025/6/17
5
+ * Version: 6.4.0
6
6
  * Terms:
7
7
  * Realsee SDK License Agreement
8
8
  * Update: July 28, 2021
@@ -451,4 +451,4 @@
451
451
  #include <premultiplied_alpha_fragment>
452
452
 
453
453
  }
454
- `},g=function(a){y(r,a);function r(t){var n=a.call(this,{uniforms:o.UniformsUtils.clone(B.uniforms),vertexShader:B.vertexShader,fragmentShader:B.fragmentShader,clipping:!0})||this;return n.type="LineMaterial",n.dashed=!1,Object.defineProperties(n,{color:{enumerable:!0,get:function(){return this.uniforms.diffuse.value},set:function(e){this.uniforms.diffuse.value=e}},linewidth:{enumerable:!0,get:function(){return this.uniforms.linewidth.value},set:function(e){this.uniforms.linewidth.value=e}},dashScale:{enumerable:!0,get:function(){return this.uniforms.dashScale.value},set:function(e){this.uniforms.dashScale.value=e}},dashSize:{enumerable:!0,get:function(){return this.uniforms.dashSize.value},set:function(e){this.uniforms.dashSize.value=e}},gapSize:{enumerable:!0,get:function(){return this.uniforms.gapSize.value},set:function(e){this.uniforms.gapSize.value=e}},opacity:{enumerable:!0,get:function(){return this.uniforms.opacity.value},set:function(e){this.uniforms.opacity.value=e}},resolution:{enumerable:!0,get:function(){return this.uniforms.resolution.value},set:function(e){this.uniforms.resolution.value.copy(e)}}}),n.setValues(t),n}return r}(o.ShaderMaterial);Object.assign(g.prototype,{isLineMaterial:!0});var M=function(a){y(r,a);function r(t,n){var e=a.call(this)||this;return e.type="LineSegments2",e.geometry=t!==void 0?t:new A,e.material=n!==void 0?n:new g({color:Math.random()*16777215}),e}return r.prototype.computeLineDistances=function(){for(var t=this.geometry,n=t.attributes.instanceStart,e=t.attributes.instanceEnd,i=new Float32Array(2*n.count),s=new o.Vector3,c=new o.Vector3,p=0,u=0,S=n.count;p<S;p++,u+=2)s.fromBufferAttribute(n,p),c.fromBufferAttribute(e,p),i[u]=u===0?0:i[u-1],i[u+1]=i[u]+s.distanceTo(c);var h=new o.InstancedInterleavedBuffer(i,2,1);return t.setAttribute("instanceDistanceStart",new o.InterleavedBufferAttribute(h,1,0)),t.setAttribute("instanceDistanceEnd",new o.InterleavedBufferAttribute(h,1,1)),this},r.prototype.raycast=function(t,n){t.camera===null&&console.error('LineSegments2: "Raycaster.camera" needs to be set in order to raycast against LineSegments2.');var e=t.ray,i=t.camera,s=i.projectionMatrix,c=this.geometry,p=this.material,u=p.resolution,S=p.linewidth,h=c.attributes.instanceStart,U=c.attributes.instanceEnd,l=new o.Vector4,f=new o.Vector4,v=new o.Vector4,b=new o.Vector3,w=new o.Matrix4,d=new o.Line3,z=new o.Vector3;e.at(1,v),v.w=1,v.applyMatrix4(i.matrixWorldInverse),v.applyMatrix4(s),v.multiplyScalar(1/v.w),v.x*=u.x/2,v.y*=u.y/2,v.z=0,b.copy(v);var x=this.matrixWorld;w.multiplyMatrices(i.matrixWorldInverse,x);for(var m=0,N=h.count;m<N;m++){l.fromBufferAttribute(h,m),f.fromBufferAttribute(U,m),l.w=1,f.w=1,l.applyMatrix4(w),f.applyMatrix4(w),l.applyMatrix4(s),f.applyMatrix4(s),l.multiplyScalar(1/l.w),f.multiplyScalar(1/f.w);var j=l.z<-1&&f.z<-1,G=l.z>1&&f.z>1;if(!(j||G)){l.x*=u.x/2,l.y*=u.y/2,f.x*=u.x/2,f.y*=u.y/2,d.start.copy(l),d.start.z=0,d.end.copy(f),d.end.z=0;var D=d.closestPointToPointParameter(b,!0);d.at(D,z);var O=o.MathUtils.lerp(l.z,f.z,D),W=O>=-1&&O<=1,T=b.distanceTo(z)<S*.5;if(W&&T){d.start.fromBufferAttribute(h,m),d.end.fromBufferAttribute(U,m),d.start.applyMatrix4(x),d.end.applyMatrix4(x);var V=new o.Vector3,E=new o.Vector3;e.distanceSqToSegment(d.start,d.end,E,V),n.push({point:E,pointOnLine:V,distance:e.origin.distanceTo(E),object:this,faceIndex:m})}}}},r}(o.Mesh);Object.assign(M.prototype,{isLineSegments2:!0});var C=function(a){y(r,a);function r(t,n){var e=a.call(this,t,n)||this;return e.type="Line2",e}return r}(M);Object.assign(C.prototype,{isLine2:!0});var P=function(a){y(r,a);function r(){var t=a.call(this)||this;return t.type="LineGeometry",t}return r.prototype.setPositions=function(t){for(var n=t.length-3,e=new Float32Array(2*n),i=0;i<n;i+=3)e[2*i]=t[i],e[2*i+1]=t[i+1],e[2*i+2]=t[i+2],e[2*i+3]=t[i+3],e[2*i+4]=t[i+4],e[2*i+5]=t[i+5];return a.prototype.setPositions.call(this,e),this},r.prototype.setColors=function(t){for(var n=t.length-3,e=new Float32Array(2*n),i=0;i<n;i+=3)e[2*i]=t[i],e[2*i+1]=t[i+1],e[2*i+2]=t[i+2],e[2*i+3]=t[i+3],e[2*i+4]=t[i+4],e[2*i+5]=t[i+5];return a.prototype.setColors.call(this,e),this},r.prototype.fromLine=function(t){var n=t.geometry;if(n instanceof o.Geometry){var e=new o.BufferGeometry().fromGeometry(n);this.setPositions(e.attributes.position.array)}else n instanceof o.BufferGeometry&&this.setPositions(n.attributes.position.array);return this},r.prototype.copy=function(){return this},r}(A);Object.assign(P.prototype,{isLineGeometry:!0});var k="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==",F=14467195,Q=8,Z=2,X=20,I=null,_=function(a){y(r,a);function r(t,n){t===void 0&&(t=new o.Vector3),n===void 0&&(n=new o.Vector3);var e=a.call(this)||this;e.type="FiveLine",e.needsRender=!0;var i=new P,s=new g({color:F,linewidth:Z,dashScale:X,dashed:!1});e.line=new C(i,s);var c=new o.BufferGeometry,p=new o.PointsMaterial({color:F,size:Q,map:I||(I=new o.TextureLoader().load(k)),sizeAttenuation:!1,transparent:!0});return e.points=new o.Points(c,p),e.points.renderOrder=11,e.points.frustumCulled=!1,e.setPoints(t,n),e.add(e.line,e.points),e}return Object.defineProperty(r,"version",{get:function(){return"6.4.0-alpha.9"},enumerable:!1,configurable:!0}),r.prototype.setPoints=function(t,n){var e=[].concat(t.toArray(),n.toArray());this.points.geometry.setAttribute("position",new o.BufferAttribute(new Float32Array(e),3)),this.line.geometry.setPositions(e),this.line.computeLineDistances(),this.needsRender=!0},r.prototype.getPoints=function(){var t=this.points.geometry.attributes.position.array;return[new o.Vector3(t[0],t[1],t[2]),new o.Vector3(t[3],t[4],t[5])]},r.prototype.setMaterial=function(t){var n=this.line.material;for(var e in t)if(t.hasOwnProperty(e)){var i=t[e];e==="dashed"?(n.dashed=i,i?n.defines.USE_DASH="":delete n.defines.USE_DASH,n.needsUpdate=!0):n[e]=t[e]}this.needsRender=!0},r.prototype.setResolution=function(t,n){var e=this.line.material.resolution;(e.x!==t||e.y!==n)&&(e.set(t,n),this.needsRender=!0)},r}(o.Object3D);Object.assign(_.prototype,{isFiveLine:!0});exports.Line=_;exports.LineGeometry=P;exports.LineMaterial=g;exports.LineSegmentsGeometry=A;exports.THREE_Line2=C;exports.THREE_LineSegments2=M;
454
+ `},g=function(a){y(r,a);function r(t){var n=a.call(this,{uniforms:o.UniformsUtils.clone(B.uniforms),vertexShader:B.vertexShader,fragmentShader:B.fragmentShader,clipping:!0})||this;return n.type="LineMaterial",n.dashed=!1,Object.defineProperties(n,{color:{enumerable:!0,get:function(){return this.uniforms.diffuse.value},set:function(e){this.uniforms.diffuse.value=e}},linewidth:{enumerable:!0,get:function(){return this.uniforms.linewidth.value},set:function(e){this.uniforms.linewidth.value=e}},dashScale:{enumerable:!0,get:function(){return this.uniforms.dashScale.value},set:function(e){this.uniforms.dashScale.value=e}},dashSize:{enumerable:!0,get:function(){return this.uniforms.dashSize.value},set:function(e){this.uniforms.dashSize.value=e}},gapSize:{enumerable:!0,get:function(){return this.uniforms.gapSize.value},set:function(e){this.uniforms.gapSize.value=e}},opacity:{enumerable:!0,get:function(){return this.uniforms.opacity.value},set:function(e){this.uniforms.opacity.value=e}},resolution:{enumerable:!0,get:function(){return this.uniforms.resolution.value},set:function(e){this.uniforms.resolution.value.copy(e)}}}),n.setValues(t),n}return r}(o.ShaderMaterial);Object.assign(g.prototype,{isLineMaterial:!0});var M=function(a){y(r,a);function r(t,n){var e=a.call(this)||this;return e.type="LineSegments2",e.geometry=t!==void 0?t:new A,e.material=n!==void 0?n:new g({color:Math.random()*16777215}),e}return r.prototype.computeLineDistances=function(){for(var t=this.geometry,n=t.attributes.instanceStart,e=t.attributes.instanceEnd,i=new Float32Array(2*n.count),s=new o.Vector3,c=new o.Vector3,p=0,u=0,S=n.count;p<S;p++,u+=2)s.fromBufferAttribute(n,p),c.fromBufferAttribute(e,p),i[u]=u===0?0:i[u-1],i[u+1]=i[u]+s.distanceTo(c);var h=new o.InstancedInterleavedBuffer(i,2,1);return t.setAttribute("instanceDistanceStart",new o.InterleavedBufferAttribute(h,1,0)),t.setAttribute("instanceDistanceEnd",new o.InterleavedBufferAttribute(h,1,1)),this},r.prototype.raycast=function(t,n){t.camera===null&&console.error('LineSegments2: "Raycaster.camera" needs to be set in order to raycast against LineSegments2.');var e=t.ray,i=t.camera,s=i.projectionMatrix,c=this.geometry,p=this.material,u=p.resolution,S=p.linewidth,h=c.attributes.instanceStart,U=c.attributes.instanceEnd,l=new o.Vector4,f=new o.Vector4,v=new o.Vector4,b=new o.Vector3,w=new o.Matrix4,d=new o.Line3,z=new o.Vector3;e.at(1,v),v.w=1,v.applyMatrix4(i.matrixWorldInverse),v.applyMatrix4(s),v.multiplyScalar(1/v.w),v.x*=u.x/2,v.y*=u.y/2,v.z=0,b.copy(v);var x=this.matrixWorld;w.multiplyMatrices(i.matrixWorldInverse,x);for(var m=0,N=h.count;m<N;m++){l.fromBufferAttribute(h,m),f.fromBufferAttribute(U,m),l.w=1,f.w=1,l.applyMatrix4(w),f.applyMatrix4(w),l.applyMatrix4(s),f.applyMatrix4(s),l.multiplyScalar(1/l.w),f.multiplyScalar(1/f.w);var j=l.z<-1&&f.z<-1,G=l.z>1&&f.z>1;if(!(j||G)){l.x*=u.x/2,l.y*=u.y/2,f.x*=u.x/2,f.y*=u.y/2,d.start.copy(l),d.start.z=0,d.end.copy(f),d.end.z=0;var D=d.closestPointToPointParameter(b,!0);d.at(D,z);var O=o.MathUtils.lerp(l.z,f.z,D),W=O>=-1&&O<=1,T=b.distanceTo(z)<S*.5;if(W&&T){d.start.fromBufferAttribute(h,m),d.end.fromBufferAttribute(U,m),d.start.applyMatrix4(x),d.end.applyMatrix4(x);var V=new o.Vector3,E=new o.Vector3;e.distanceSqToSegment(d.start,d.end,E,V),n.push({point:E,pointOnLine:V,distance:e.origin.distanceTo(E),object:this,faceIndex:m})}}}},r}(o.Mesh);Object.assign(M.prototype,{isLineSegments2:!0});var C=function(a){y(r,a);function r(t,n){var e=a.call(this,t,n)||this;return e.type="Line2",e}return r}(M);Object.assign(C.prototype,{isLine2:!0});var P=function(a){y(r,a);function r(){var t=a.call(this)||this;return t.type="LineGeometry",t}return r.prototype.setPositions=function(t){for(var n=t.length-3,e=new Float32Array(2*n),i=0;i<n;i+=3)e[2*i]=t[i],e[2*i+1]=t[i+1],e[2*i+2]=t[i+2],e[2*i+3]=t[i+3],e[2*i+4]=t[i+4],e[2*i+5]=t[i+5];return a.prototype.setPositions.call(this,e),this},r.prototype.setColors=function(t){for(var n=t.length-3,e=new Float32Array(2*n),i=0;i<n;i+=3)e[2*i]=t[i],e[2*i+1]=t[i+1],e[2*i+2]=t[i+2],e[2*i+3]=t[i+3],e[2*i+4]=t[i+4],e[2*i+5]=t[i+5];return a.prototype.setColors.call(this,e),this},r.prototype.fromLine=function(t){var n=t.geometry;if(n instanceof o.Geometry){var e=new o.BufferGeometry().fromGeometry(n);this.setPositions(e.attributes.position.array)}else n instanceof o.BufferGeometry&&this.setPositions(n.attributes.position.array);return this},r.prototype.copy=function(){return this},r}(A);Object.assign(P.prototype,{isLineGeometry:!0});var k="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==",F=14467195,Q=8,Z=2,X=20,I=null,_=function(a){y(r,a);function r(t,n){t===void 0&&(t=new o.Vector3),n===void 0&&(n=new o.Vector3);var e=a.call(this)||this;e.type="FiveLine",e.needsRender=!0;var i=new P,s=new g({color:F,linewidth:Z,dashScale:X,dashed:!1});e.line=new C(i,s);var c=new o.BufferGeometry,p=new o.PointsMaterial({color:F,size:Q,map:I||(I=new o.TextureLoader().load(k)),sizeAttenuation:!1,transparent:!0});return e.points=new o.Points(c,p),e.points.renderOrder=11,e.points.frustumCulled=!1,e.setPoints(t,n),e.add(e.line,e.points),e}return Object.defineProperty(r,"version",{get:function(){return"6.4.0"},enumerable:!1,configurable:!0}),r.prototype.setPoints=function(t,n){var e=[].concat(t.toArray(),n.toArray());this.points.geometry.setAttribute("position",new o.BufferAttribute(new Float32Array(e),3)),this.line.geometry.setPositions(e),this.line.computeLineDistances(),this.needsRender=!0},r.prototype.getPoints=function(){var t=this.points.geometry.attributes.position.array;return[new o.Vector3(t[0],t[1],t[2]),new o.Vector3(t[3],t[4],t[5])]},r.prototype.setMaterial=function(t){var n=this.line.material;for(var e in t)if(t.hasOwnProperty(e)){var i=t[e];e==="dashed"?(n.dashed=i,i?n.defines.USE_DASH="":delete n.defines.USE_DASH,n.needsUpdate=!0):n[e]=t[e]}this.needsRender=!0},r.prototype.setResolution=function(t,n){var e=this.line.material.resolution;(e.x!==t||e.y!==n)&&(e.set(t,n),this.needsRender=!0)},r}(o.Object3D);Object.assign(_.prototype,{isFiveLine:!0});exports.Line=_;exports.LineGeometry=P;exports.LineMaterial=g;exports.LineSegmentsGeometry=A;exports.THREE_Line2=C;exports.THREE_LineSegments2=M;
package/line/index.mjs CHANGED
@@ -1,8 +1,8 @@
1
1
  /**
2
2
  * @license
3
3
  * @realsee/five
4
- * Generated: 1/8/2025
5
- * Version: 6.4.0-alpha.9
4
+ * Generated: 2025/6/17
5
+ * Version: 6.4.0
6
6
  * Terms:
7
7
  * Realsee SDK License Agreement
8
8
  * Update: July 28, 2021
@@ -635,16 +635,16 @@ var F = (
635
635
  return o.prototype.computeLineDistances = function() {
636
636
  for (var t = this.geometry, n = t.attributes.instanceStart, e = t.attributes.instanceEnd, r = new Float32Array(2 * n.count), s = new i.Vector3(), c = new i.Vector3(), p = 0, u = 0, y = n.count; p < y; p++, u += 2)
637
637
  s.fromBufferAttribute(n, p), c.fromBufferAttribute(e, p), r[u] = u === 0 ? 0 : r[u - 1], r[u + 1] = r[u] + s.distanceTo(c);
638
- var m = new i.InstancedInterleavedBuffer(r, 2, 1);
639
- return t.setAttribute("instanceDistanceStart", new i.InterleavedBufferAttribute(m, 1, 0)), t.setAttribute("instanceDistanceEnd", new i.InterleavedBufferAttribute(m, 1, 1)), this;
638
+ var h = new i.InstancedInterleavedBuffer(r, 2, 1);
639
+ return t.setAttribute("instanceDistanceStart", new i.InterleavedBufferAttribute(h, 1, 0)), t.setAttribute("instanceDistanceEnd", new i.InterleavedBufferAttribute(h, 1, 1)), this;
640
640
  }, o.prototype.raycast = function(t, n) {
641
641
  t.camera === null && console.error('LineSegments2: "Raycaster.camera" needs to be set in order to raycast against LineSegments2.');
642
- var e = t.ray, r = t.camera, s = r.projectionMatrix, c = this.geometry, p = this.material, u = p.resolution, y = p.linewidth, m = c.attributes.instanceStart, M = c.attributes.instanceEnd, l = new i.Vector4(), f = new i.Vector4(), v = new i.Vector4(), g = new i.Vector3(), S = new i.Matrix4(), d = new i.Line3(), C = new i.Vector3();
642
+ var e = t.ray, r = t.camera, s = r.projectionMatrix, c = this.geometry, p = this.material, u = p.resolution, y = p.linewidth, h = c.attributes.instanceStart, M = c.attributes.instanceEnd, l = new i.Vector4(), f = new i.Vector4(), v = new i.Vector4(), g = new i.Vector3(), S = new i.Matrix4(), d = new i.Line3(), C = new i.Vector3();
643
643
  e.at(1, v), v.w = 1, v.applyMatrix4(r.matrixWorldInverse), v.applyMatrix4(s), v.multiplyScalar(1 / v.w), v.x *= u.x / 2, v.y *= u.y / 2, v.z = 0, g.copy(v);
644
644
  var w = this.matrixWorld;
645
645
  S.multiplyMatrices(r.matrixWorldInverse, w);
646
- for (var h = 0, N = m.count; h < N; h++) {
647
- l.fromBufferAttribute(m, h), f.fromBufferAttribute(M, h), l.w = 1, f.w = 1, l.applyMatrix4(S), f.applyMatrix4(S), l.applyMatrix4(s), f.applyMatrix4(s), l.multiplyScalar(1 / l.w), f.multiplyScalar(1 / f.w);
646
+ for (var m = 0, N = h.count; m < N; m++) {
647
+ l.fromBufferAttribute(h, m), f.fromBufferAttribute(M, m), l.w = 1, f.w = 1, l.applyMatrix4(S), f.applyMatrix4(S), l.applyMatrix4(s), f.applyMatrix4(s), l.multiplyScalar(1 / l.w), f.multiplyScalar(1 / f.w);
648
648
  var _ = l.z < -1 && f.z < -1, G = l.z > 1 && f.z > 1;
649
649
  if (!(_ || G)) {
650
650
  l.x *= u.x / 2, l.y *= u.y / 2, f.x *= u.x / 2, f.y *= u.y / 2, d.start.copy(l), d.start.z = 0, d.end.copy(f), d.end.z = 0;
@@ -652,14 +652,14 @@ var F = (
652
652
  d.at(U, C);
653
653
  var z = i.MathUtils.lerp(l.z, f.z, U), W = z >= -1 && z <= 1, j = g.distanceTo(C) < y * 0.5;
654
654
  if (W && j) {
655
- d.start.fromBufferAttribute(m, h), d.end.fromBufferAttribute(M, h), d.start.applyMatrix4(w), d.end.applyMatrix4(w);
655
+ d.start.fromBufferAttribute(h, m), d.end.fromBufferAttribute(M, m), d.start.applyMatrix4(w), d.end.applyMatrix4(w);
656
656
  var P = new i.Vector3(), b = new i.Vector3();
657
657
  e.distanceSqToSegment(d.start, d.end, b, P), n.push({
658
658
  point: b,
659
659
  pointOnLine: P,
660
660
  distance: e.origin.distanceTo(b),
661
661
  object: this,
662
- faceIndex: h
662
+ faceIndex: m
663
663
  });
664
664
  }
665
665
  }
@@ -735,7 +735,7 @@ var T = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAA
735
735
  }
736
736
  return Object.defineProperty(o, "version", {
737
737
  get: function() {
738
- return "6.4.0-alpha.9";
738
+ return "6.4.0";
739
739
  },
740
740
  enumerable: !1,
741
741
  configurable: !0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@realsee/five",
3
- "version": "6.4.0-alpha.9",
3
+ "version": "6.4.0",
4
4
  "description": "Realsee Renderer SDK",
5
5
  "bin": {
6
6
  "five-staticify": "./scripts/five-staticify.js"
@@ -27,7 +27,9 @@
27
27
  "archiver": "^6.0.1",
28
28
  "commander": "^11.1.0",
29
29
  "ejs": "^3.1.6",
30
- "protobufjs": "^7.4.0"
30
+ "ml-matrix": "^6.12.0",
31
+ "protobufjs": "^7.4.0",
32
+ "sharp": "^0.34.2"
31
33
  },
32
34
  "main": "five/index.js",
33
35
  "types": "five/index.d.ts",
@@ -76,6 +78,11 @@
76
78
  "import": "./shader-lib/index.mjs",
77
79
  "require": "./shader-lib/index.js",
78
80
  "types": "./shader-lib/index.d.ts"
81
+ },
82
+ "./work-downloader": {
83
+ "import": "./work-downloader/index.mjs",
84
+ "require": "./work-downloader/index.js",
85
+ "types": "./work-downloader/index.d.ts"
79
86
  }
80
87
  }
81
88
  }
package/plugins/index.js CHANGED
@@ -1,8 +1,8 @@
1
1
  /**
2
2
  * @license
3
3
  * @realsee/five
4
- * Generated: 1/8/2025
5
- * Version: 6.4.0-alpha.9
4
+ * Generated: 2025/6/17
5
+ * Version: 6.4.0
6
6
  * Terms:
7
7
  * Realsee SDK License Agreement
8
8
  * Update: July 28, 2021
package/plugins/index.mjs CHANGED
@@ -1,8 +1,8 @@
1
1
  /**
2
2
  * @license
3
3
  * @realsee/five
4
- * Generated: 1/8/2025
5
- * Version: 6.4.0-alpha.9
4
+ * Generated: 2025/6/17
5
+ * Version: 6.4.0
6
6
  * Terms:
7
7
  * Realsee SDK License Agreement
8
8
  * Update: July 28, 2021
package/react/index.js CHANGED
@@ -1,8 +1,8 @@
1
1
  /**
2
2
  * @license
3
3
  * @realsee/five
4
- * Generated: 1/8/2025
5
- * Version: 6.4.0-alpha.9
4
+ * Generated: 2025/6/17
5
+ * Version: 6.4.0
6
6
  * Terms:
7
7
  * Realsee SDK License Agreement
8
8
  * Update: July 28, 2021
package/react/index.mjs CHANGED
@@ -1,8 +1,8 @@
1
1
  /**
2
2
  * @license
3
3
  * @realsee/five
4
- * Generated: 1/8/2025
5
- * Version: 6.4.0-alpha.9
4
+ * Generated: 2025/6/17
5
+ * Version: 6.4.0
6
6
  * Terms:
7
7
  * Realsee SDK License Agreement
8
8
  * Update: July 28, 2021
@@ -16,6 +16,44 @@ export declare class PointCloudExpandShader extends CustomShader {
16
16
  set progress(value: number);
17
17
  }
18
18
 
19
+ export declare interface PolygonClipper {
20
+ polygon: number[][];
21
+ polygonTransform: THREE_2.Matrix4;
22
+ polygonHeight: number;
23
+ cutOutSide: boolean;
24
+ }
25
+
26
+ export declare class PolygonCuterShader extends CustomShader {
27
+ private _polygonClippers;
28
+ private _radio;
29
+ constructor();
30
+ get polygonClippers(): PolygonClipper[];
31
+ set polygonClippers(value: PolygonClipper[]);
32
+ onBeforeCompile(shader: THREE_2.Shader, renderer: THREE_2.WebGLRenderer): void;
33
+ }
34
+
35
+ /**
36
+ * @class PolygonCuterShader
37
+ * @description 用于多边形切割的shader,请注意,在定义的polygon的底面时,一定是定义在xz平面上,如果在y方向时有位移,请体现在polygonCuterTransform上
38
+ */
39
+ export declare class PolygonGenerater {
40
+ canvas: HTMLCanvasElement;
41
+ polygonTexture: THREE_2.CanvasTexture;
42
+ polygonCount: number;
43
+ canvasCache: Map<string, HTMLCanvasElement>;
44
+ constructor();
45
+ setSize(size: number): void;
46
+ generatePolygonCanvas(polygon: number[][]): HTMLCanvasElement;
47
+ static generatePolygonGeometry(polygon: number[][], height: number): THREE_2.BufferGeometry;
48
+ generatePolygonTexture(canvases: HTMLCanvasElement[]): THREE_2.CanvasTexture;
49
+ }
50
+
51
+ export declare class ShineModelShader extends CustomShader {
52
+ shineBoxes: THREE_2.Box3[];
53
+ constructor();
54
+ onBeforeCompile(shader: THREE_2.Shader, renderer: THREE_2.WebGLRenderer): void;
55
+ }
56
+
19
57
  export declare class SweepModelShader extends CustomShader {
20
58
  sweepBoxs: THREE_2.Box3[];
21
59
  constructor();
@@ -1,8 +1,8 @@
1
1
  /**
2
2
  * @license
3
3
  * @realsee/five
4
- * Generated: 1/8/2025
5
- * Version: 6.4.0-alpha.9
4
+ * Generated: 2025/6/17
5
+ * Version: 6.4.0
6
6
  * Terms:
7
7
  * Realsee SDK License Agreement
8
8
  * Update: July 28, 2021
@@ -252,7 +252,7 @@
252
252
  * No amendment to or modification of this Agreement will be binding unless in
253
253
  * writing and signed by Realsee. You and Realsee hereto confirm that this
254
254
  * Agreement and all related documents shall be drafted in English.
255
- */"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const m=require("@realsee/five"),U=require("three");function j(o){const e=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(o){for(const n in o)if(n!=="default"){const a=Object.getOwnPropertyDescriptor(o,n);Object.defineProperty(e,n,a.get?a:{enumerable:!0,get:()=>o[n]})}}return e.default=o,Object.freeze(e)}const t=j(U);var f=function(o,e){return f=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,a){n.__proto__=a}||function(n,a){for(var r in a)Object.prototype.hasOwnProperty.call(a,r)&&(n[r]=a[r])},f(o,e)};function E(o,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");f(o,e);function n(){this.constructor=o}o.prototype=e===null?Object.create(e):(n.prototype=e.prototype,new n)}var D=`
255
+ */"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const C=require("@realsee/five"),J=require("three");function A(r){const e=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(r){for(const n in r)if(n!=="default"){const t=Object.getOwnPropertyDescriptor(r,n);Object.defineProperty(e,n,t.get?t:{enumerable:!0,get:()=>r[n]})}}return e.default=r,Object.freeze(e)}const a=A(J);var B=function(r,e){return B=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,t){n.__proto__=t}||function(n,t){for(var o in t)Object.prototype.hasOwnProperty.call(t,o)&&(n[o]=t[o])},B(r,e)};function S(r,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");B(r,e);function n(){this.constructor=r}r.prototype=e===null?Object.create(e):(n.prototype=e.prototype,new n)}function I(r,e,n){if(n||arguments.length===2)for(var t=0,o=e.length,l;t<o;t++)(l||!(t in e))&&(l||(l=Array.prototype.slice.call(e,0,t)),l[t]=e[t]);return r.concat(l||Array.prototype.slice.call(e))}var H=`
256
256
  #if defined(USE_PLANE_DISTANCE)
257
257
  struct Plane {
258
258
  vec3 normal;
@@ -263,7 +263,7 @@
263
263
  uniform float evennessPlaneConstant;
264
264
  uniform float evennessPlaneDepth;
265
265
  #endif
266
- `,A=`
266
+ `,V=`
267
267
  #if defined(USE_PLANE_DISTANCE)
268
268
 
269
269
  bool inside = true;
@@ -283,33 +283,40 @@
283
283
  }
284
284
  }
285
285
  #endif
286
- `,F="",J={type:["pointcloud"],fragment:{mainBefore:D,mainStart:F,mainEnd:A},uniforms:{evennessPlaneNormal:new t.Uniform(new t.Vector3),evennessPlaneConstant:new t.Uniform(0),evennessPlanes:new t.Uniform([]),evennessPlaneDepth:new t.Uniform(0)},defines:{USE_PLANE_DISTANCE:!1}},I=function(o){E(e,o);function e(){var n=o.call(this,J)||this;return Object.defineProperties(n,{evennessPlane:{get:function(){return{depth:this.uniforms.evennessPlaneDepth.value,points:this.uniforms.evennessPoints.value}},set:function(a){var r=a.points,g=a.depth,_=!1;if(r.length!==0&&r.length%4===0){_=!0;var l=r[0],p=r[1],d=r[2],P=r[3],N=new t.Vector3().subVectors(p,l),M=new t.Vector3().subVectors(d,l),i=new t.Vector3().crossVectors(N,M).normalize(),O=-i.dot(l),s=g,c=l.clone().add(i.clone().negate().multiplyScalar(s)),u=l.clone().add(i.clone().multiplyScalar(s)),C=p.clone().add(i.clone().negate().multiplyScalar(s)),x=p.clone().add(i.clone().multiplyScalar(s)),T=d.clone().add(i.clone().negate().multiplyScalar(s)),v=d.clone().add(i.clone().multiplyScalar(s)),W=P.clone().add(i.clone().negate().multiplyScalar(s)),y=P.clone().add(i.clone().multiplyScalar(s)),S=new t.Plane().setFromCoplanarPoints(u,x,v),h=new t.Plane().setFromCoplanarPoints(T,C,c),w=new t.Plane().setFromCoplanarPoints(x,u,c),z=new t.Plane().setFromCoplanarPoints(W,y,v),B=new t.Plane().setFromCoplanarPoints(v,x,C),b=new t.Plane().setFromCoplanarPoints(c,u,y);this.uniforms.evennessPlanes.value=[{normal:S.normal,constant:S.constant},{normal:h.normal,constant:h.constant},{normal:w.normal,constant:w.constant},{normal:z.normal,constant:z.constant},{normal:B.normal,constant:B.constant},{normal:b.normal,constant:b.constant}],this.uniforms.evennessPlaneDepth.value=g,this.uniforms.evennessPlaneNormal.value=i,this.uniforms.evennessPlaneConstant.value=O}this.defines.USE_PLANE_DISTANCE=_}}}),n.evennessPlane={depth:0,points:[]},n}return e}(m.CustomShader),R=`
286
+ `,L="",j={type:["pointcloud"],fragment:{mainBefore:H,mainStart:L,mainEnd:V},uniforms:{evennessPlaneNormal:new a.Uniform(new a.Vector3),evennessPlaneConstant:new a.Uniform(0),evennessPlanes:new a.Uniform([]),evennessPlaneDepth:new a.Uniform(0)},defines:{USE_PLANE_DISTANCE:!1}},R=function(r){S(e,r);function e(){var n=r.call(this,j)||this;return Object.defineProperties(n,{evennessPlane:{get:function(){return{depth:this.uniforms.evennessPlaneDepth.value,points:this.uniforms.evennessPoints.value}},set:function(t){var o=t.points,l=t.depth,g=!1;if(o.length!==0&&o.length%4===0){g=!0;var v=o[0],p=o[1],u=o[2],i=o[3],m=new a.Vector3().subVectors(p,v),x=new a.Vector3().subVectors(u,v),c=new a.Vector3().crossVectors(m,x).normalize(),h=-c.dot(v),s=l,d=v.clone().add(c.clone().negate().multiplyScalar(s)),f=v.clone().add(c.clone().multiplyScalar(s)),y=p.clone().add(c.clone().negate().multiplyScalar(s)),E=p.clone().add(c.clone().multiplyScalar(s)),_=u.clone().add(c.clone().negate().multiplyScalar(s)),P=u.clone().add(c.clone().multiplyScalar(s)),w=i.clone().add(c.clone().negate().multiplyScalar(s)),z=i.clone().add(c.clone().multiplyScalar(s)),N=new a.Plane().setFromCoplanarPoints(f,E,P),M=new a.Plane().setFromCoplanarPoints(_,y,d),O=new a.Plane().setFromCoplanarPoints(E,f,d),T=new a.Plane().setFromCoplanarPoints(w,z,P),b=new a.Plane().setFromCoplanarPoints(P,E,y),F=new a.Plane().setFromCoplanarPoints(d,f,z);this.uniforms.evennessPlanes.value=[{normal:N.normal,constant:N.constant},{normal:M.normal,constant:M.constant},{normal:O.normal,constant:O.constant},{normal:T.normal,constant:T.constant},{normal:b.normal,constant:b.constant},{normal:F.normal,constant:F.constant}],this.uniforms.evennessPlaneDepth.value=l,this.uniforms.evennessPlaneNormal.value=c,this.uniforms.evennessPlaneConstant.value=h}this.defines.USE_PLANE_DISTANCE=g}}}),n.evennessPlane={depth:0,points:[]},n}return e}(C.CustomShader),W=`
287
287
  #if NUM_SWEEP_OBJECTS > 0
288
288
  uniform float sweepProgress;
289
289
  uniform float sweepRange;
290
+ uniform float interval; // 直接定义间隔距离
291
+ uniform float threshold; // 绝对线宽值
292
+
290
293
  struct SWEEP_OBJECT {
291
294
  vec3 min;
292
295
  vec3 max;
293
296
  };
294
297
  uniform SWEEP_OBJECT sweepBoxs[NUM_SWEEP_OBJECTS];
295
298
  #endif
296
- `,V=`
299
+ `,G=`
297
300
  #if NUM_SWEEP_OBJECTS > 0
298
301
  #pragma unroll_loop_start
299
302
  for ( int i = 0; i < NUM_SWEEP_OBJECTS; i ++ ) {
300
- vec3 min = sweepBoxs[ i ].min;
301
- vec3 max = sweepBoxs[ i ].max;
302
- vec3 boxCenter = 0.5 * (min + max);
303
- vec3 sweepMapVector = normalize(boxCenter.xyz - vWorldPosition.xyz);
304
- float currentHeightCenter = min.y + sweepProgress * (max.y - min.y);
305
- float sweepOpacity = clamp(1.0 - abs(vWorldPosition.y - currentHeightCenter) / sweepRange ,0.0,1.0);
306
- if(vWorldPosition.x > min.x && vWorldPosition.x < max.x && vWorldPosition.y > min.y && vWorldPosition.y < max.y && vWorldPosition.z > min.z && vWorldPosition.z < max.z) {
307
- gl_FragColor.rgb = mix(gl_FragColor.rgb, vec3(1.0,1.0,1.0), sweepOpacity);
303
+ vec3 minPos = sweepBoxs[ i ].min;
304
+ vec3 maxPos = sweepBoxs[ i ].max;
305
+ vec3 boxCenter = 0.5 * (minPos + maxPos);
306
+ if(vFinalPosition.x > minPos.x && vFinalPosition.x < maxPos.x && vFinalPosition.y > minPos.y && vFinalPosition.y < maxPos.y && vFinalPosition.z > minPos.z && vFinalPosition.z < maxPos.z) {
307
+ vec3 shineColor = vec3(1.0,1.0,1.0);
308
+ //将progress从0到1映射到0 0.5 0
309
+ float realProgress = sweepProgress;
310
+ if(sweepProgress > 0.5) {
311
+ realProgress = 1.0 - sweepProgress;
312
+ }
313
+ float mixProgress = realProgress * realProgress * realProgress * 2.0;
314
+ gl_FragColor.rgb += shineColor * mixProgress;
308
315
  }
309
316
  }
310
317
  #pragma unroll_loop_end
311
318
  #endif
312
- `,q="",H={type:["basic","phong"],fragment:{mainBefore:R,mainStart:q,mainEnd:V},uniforms:{sweepProgress:new t.Uniform(0),sweepRange:new t.Uniform(0),sweepBoxs:new t.Uniform([])},defines:{NUM_SWEEP_OBJECTS:0}},L=function(o){E(e,o);function e(){var n=o.call(this,H)||this;return Object.defineProperties(n,{sweepBoxs:{get:function(){return this.uniforms.sweepBoxs.value},set:function(a){var r=a.length;r>0&&(this.defines.NUM_SWEEP_OBJECTS=r,this.uniforms.sweepBoxs.value=a)}}}),n.sweepBoxs=[],n}return e.prototype.onBeforeCompile=function(n,a){var r=String(this.sweepBoxs.length);n.vertexShader=n.vertexShader.replace(/NUM_SWEEP_OBJECTS/g,r),n.fragmentShader=n.fragmentShader.replace(/NUM_SWEEP_OBJECTS/g,r)},e}(m.CustomShader),$=`
319
+ `,q="",$={type:["basic","phong"],fragment:{mainBefore:W,mainStart:q,mainEnd:G},uniforms:{sweepProgress:new a.Uniform(0),sweepRange:new a.Uniform(0),sweepBoxs:new a.Uniform([]),interval:new a.Uniform(.04),threshold:new a.Uniform(.002)},defines:{NUM_SWEEP_OBJECTS:0}},Y=function(r){S(e,r);function e(){var n=r.call(this,$)||this;return Object.defineProperties(n,{sweepBoxs:{get:function(){return this.uniforms.sweepBoxs.value},set:function(t){var o=t.length;o>0&&(this.defines.NUM_SWEEP_OBJECTS=o,this.uniforms.sweepBoxs.value=t)}}}),n.sweepBoxs=[],n}return e.prototype.onBeforeCompile=function(n,t){var o=String(this.sweepBoxs.length);n.vertexShader=n.vertexShader.replace(/NUM_SWEEP_OBJECTS/g,o),n.fragmentShader=n.fragmentShader.replace(/NUM_SWEEP_OBJECTS/g,o)},e}(C.CustomShader),K=`
313
320
  uniform float pointCloudExpand_progress;
314
321
 
315
322
  vec4 pointCloudExpand_permute(vec4 x) { return mod(((x * 34.0) + 1.0) * x, 289.0); }
@@ -382,7 +389,7 @@ float pointCloudExpand_gln_simplex(vec3 v) {
382
389
  m = m * m;
383
390
  return 42.0 * dot(m * m, vec4(dot(p0, x0), dot(p1, x1), dot(p2, x2), dot(p3, x3)));
384
391
  }
385
- `,k=`
392
+ `,Q=`
386
393
  float pointCloudExpand_sizeScale = 1.0;
387
394
  float pointCloudExpand_sizeBasis = 0.0;
388
395
  vec4 pointCloudExpand_basis = vec4((modelBoundingMax + modelBoundingMin) / 2.0, 1.0);
@@ -396,4 +403,91 @@ float pointCloudExpand_progress2 = step(pointCloudExpand_progress, 1.0 - pointCl
396
403
  pointCloudExpand_sizeBasis = mix(0.1 * step(abs(pointCloudExpand_noise), 0.5 / pointCloudExpand_boundingRadius), pointCloudExpand_sizeBasis, pointCloudExpand_progress2);
397
404
  gl_PointSize = gl_PointSize * pointCloudExpand_sizeScale + pointCloudExpand_sizeBasis;
398
405
  vPointSize = gl_PointSize;
399
- `,G=function(o){E(e,o);function e(){return o.call(this,{type:["pointcloud"],vertex:{mainBefore:$,mainEnd:k},uniforms:{pointCloudExpand_progress:new t.Uniform(0)}})||this}return Object.defineProperty(e.prototype,"progress",{get:function(){return this.uniforms.pointCloudExpand_progress.value},set:function(n){this.uniforms.pointCloudExpand_progress.value=n},enumerable:!1,configurable:!0}),e}(m.CustomShader);exports.EvenessPlaneShader=I;exports.PointCloudExpandShader=G;exports.SweepModelShader=L;
406
+ `,Z=function(r){S(e,r);function e(){return r.call(this,{type:["pointcloud"],vertex:{mainBefore:K,mainEnd:Q},uniforms:{pointCloudExpand_progress:new a.Uniform(0)}})||this}return Object.defineProperty(e.prototype,"progress",{get:function(){return this.uniforms.pointCloudExpand_progress.value},set:function(n){this.uniforms.pointCloudExpand_progress.value=n},enumerable:!1,configurable:!0}),e}(C.CustomShader),k=`
407
+ uniform sampler2D polygonTexture;
408
+
409
+ struct PolygonClipper {
410
+ mat4 polygonTransformInverse;
411
+ float polygonHeight;
412
+ vec2 minPos;
413
+ float polygonScale;
414
+ bool cutOutSide;
415
+ };
416
+
417
+ #if NUM_POLYGON_CLIPPER > 0
418
+ uniform PolygonClipper polygonClippers[NUM_POLYGON_CLIPPER];
419
+ #endif
420
+ `,X=`
421
+
422
+ for(int i = 0; i < NUM_POLYGON_CLIPPER; i++){
423
+ PolygonClipper polygonClipper = polygonClippers[i];
424
+ mat4 polygonTransformInverse = polygonClipper.polygonTransformInverse;
425
+ float polygonHeight = polygonClipper.polygonHeight;
426
+ vec2 minPos = polygonClipper.minPos;
427
+ float polygonScale = polygonClipper.polygonScale;
428
+ bool cutOutSide = polygonClipper.cutOutSide;
429
+
430
+ vec4 worldPosition = vFinalPosition;
431
+ vec4 positionInPolygonSpace = polygonTransformInverse * worldPosition;
432
+
433
+ vec2 normalizedPos = vec2(
434
+ (positionInPolygonSpace.x - minPos.x) / polygonScale,
435
+ (positionInPolygonSpace.z - minPos.y) / polygonScale
436
+ );
437
+
438
+ if(cutOutSide) {
439
+ if (normalizedPos.x < 0.0 || normalizedPos.x > 1.0 || normalizedPos.y < 0.0 || normalizedPos.y > 1.0 || positionInPolygonSpace.y < 0.0 || positionInPolygonSpace.y > polygonHeight) {
440
+ discard;
441
+ }else{
442
+ vec2 uv = vec2(normalizedPos.x, 1.0 - normalizedPos.y);
443
+ vec4 color = texture2D(polygonTexture, uv);
444
+ int channel = i / 8;
445
+ int bit = i % 8;
446
+ float channelValue = color[channel] * 255.0;
447
+ int intValue = int(channelValue + 0.5); // 四舍五入避免精度丢失
448
+ if ((intValue & (1 << bit)) == 0) {
449
+ //不属于该多边形
450
+ discard;
451
+ }
452
+ }
453
+ }else{
454
+ if (normalizedPos.x > 0.0 && normalizedPos.x < 1.0 && normalizedPos.y > 0.0 && normalizedPos.y < 1.0 && positionInPolygonSpace.y > 0.0 && positionInPolygonSpace.y < polygonHeight) {
455
+ vec2 uv = vec2(normalizedPos.x, 1.0 - normalizedPos.y);
456
+ vec4 color = texture2D(polygonTexture, uv);
457
+ int channel = i / 8;
458
+ int bit = i % 8;
459
+ float channelValue = color[channel] * 255.0;
460
+ int intValue = int(channelValue + 0.5);
461
+ if ((intValue & (1 << bit)) != 0) {
462
+ discard;
463
+ }
464
+ }
465
+ }
466
+ }
467
+
468
+ `,D=function(){function r(){this.canvasCache=new Map,this.canvas=document.createElement("canvas"),this.canvas.width=512,this.canvas.height=512,this.polygonTexture=new a.CanvasTexture(this.canvas),this.polygonCount=0}return r.prototype.setSize=function(e){this.canvas.width=e,this.canvas.height=e},r.prototype.generatePolygonCanvas=function(e){var n=JSON.stringify(e);if(this.canvasCache.has(n))return this.canvasCache.get(n);var t=document.createElement("canvas");t.width=this.canvas.width,t.height=this.canvas.height;var o=t.getContext("2d");if(!o)throw new Error("Failed to get canvas context");if(this.polygonCount>=24)throw new Error("polygon count exceed 24, please clear the canvas");o.clearRect(0,0,this.canvas.width,this.canvas.height),o.fillStyle="rgba(0,0,0,1.0)",o.beginPath();var l=e[0][0],g=e[0][0],v=e[0][1],p=e[0][1];e.forEach(function(s){var d=s[0],f=s[1];l=Math.min(l,d),g=Math.max(g,d),v=Math.min(v,f),p=Math.max(p,f)});var u=g-l,i=p-v,m=this.canvas.width,x=u>=i?m/u:m/i,c=e.map(function(s){var d=s[0]-l,f=s[1]-v;return[d,f]}),h=c.map(function(s){return[s[0]*x,s[1]*x]});return h.forEach(function(s,d){var f=s[0],y=s[1];d===0?o.moveTo(f,y):o.lineTo(f,y)}),o.closePath(),o.fill(),this.polygonCount++,this.canvasCache.set(n,t),t},r.generatePolygonGeometry=function(e,n){for(var t=new a.BufferGeometry,o=e.slice(0,-1),l=o.map(function(m){return[m[0],0,m[1]]}),g=o.map(function(m){return[m[0],n,m[1]]}),v=I(I([],l,!0),g,!0),p=o.length,u=[],i=1;i<p-1;i++)u.push(0,i,i+1);for(var i=1;i<p-1;i++)u.push(p,p+i,p+i+1);for(var i=0;i<p-1;i++)u.push(i,i+1,p+i),u.push(i+1,i+1+p,p+i);return t.setAttribute("position",new a.Float32BufferAttribute(v.flat(),3)),t.setIndex(u),t.computeVertexNormals(),t},r.prototype.generatePolygonTexture=function(e){var n=this.canvas.getContext("2d",{willReadFrequently:!0});if(!n)throw new Error("Failed to get canvas context");for(var t=n.createImageData(this.canvas.width,this.canvas.height),o=0;o<this.canvas.width;o++)for(var l=0;l<this.canvas.height;l++){for(var g=0,v=0,p=0,u=0;u<e.length;u++){var i=e[u].getContext("2d",{willReadFrequently:!0});if(!i)throw new Error("Failed to get canvas context");var m=i.getImageData(o,l,1,1).data;if(m[3]===255){var x=u%8,c=Math.floor(u/8);c===0?g=g|1<<x:c===1?v=v|1<<x:c===2&&(p=p|1<<x)}}var h=(o+l*this.canvas.width)*4;t.data[h]=g,t.data[h+1]=v,t.data[h+2]=p,t.data[h+3]=255}return n.putImageData(t,0,0),new a.CanvasTexture(this.canvas)},r}(),U=new D,nn=function(r){S(e,r);function e(){var n=r.call(this,{type:["basic","phong","pointcloud"],fragment:{mainBefore:k,mainEnd:X},uniforms:{polygonClippers:new a.Uniform([]),polygonTexture:new a.Uniform(null)}})||this;return n._polygonClippers=[],n._radio=512,n}return Object.defineProperty(e.prototype,"polygonClippers",{get:function(){return this._polygonClippers},set:function(n){this._polygonClippers=n;var t=this.uniforms;t.polygonClippers.value=n.map(function(u){var i=new a.Matrix4().getInverse(u.polygonTransform),m=u.polygonHeight,x=u.cutOutSide,c=u.polygon,h=c[0][0],s=c[0][0],d=c[0][1],f=c[0][1];c.forEach(function(_){var P=_[0],w=_[1];h=Math.min(h,P),s=Math.max(s,P),d=Math.min(d,w),f=Math.max(f,w)});var y=new a.Vector2(h,d),E=s-h>=f-d?s-h:f-d;return{polygonTransformInverse:i,polygonHeight:m,minPos:y,polygonScale:E,cutOutSide:x}});for(var o=[],l=0;l<n.length;l++){var g=n[l].polygon,v=U.generatePolygonCanvas(g);o.push(v)}var p=U.generatePolygonTexture(o);this.uniforms.polygonTexture.value=p},enumerable:!1,configurable:!0}),e.prototype.onBeforeCompile=function(n,t){var o=String(this.polygonClippers.length);n.vertexShader=n.vertexShader.replace(/NUM_POLYGON_CLIPPER/g,o),n.fragmentShader=n.fragmentShader.replace(/NUM_POLYGON_CLIPPER/g,o)},e}(C.CustomShader),en=`
469
+ #if NUM_SHINE_OBJECTS > 0
470
+ uniform float shineProgress;
471
+ struct SHINE_OBJECT {
472
+ vec3 min;
473
+ vec3 max;
474
+ };
475
+ uniform SHINE_OBJECT shineBoxes[NUM_SHINE_OBJECTS];
476
+ #endif
477
+ `,on=`
478
+ #if NUM_SHINE_OBJECTS > 0
479
+ #pragma unroll_loop_start
480
+ for ( int i = 0; i < NUM_SHINE_OBJECTS; i ++ ) {
481
+ vec3 min = shineBoxes[ i ].min;
482
+ vec3 max = shineBoxes[ i ].max;
483
+ vec3 boxCenter = 0.5 * (min + max);
484
+ if(vFinalPosition.x > min.x && vFinalPosition.x < max.x && vFinalPosition.y > min.y && vFinalPosition.y < max.y && vFinalPosition.z > min.z && vFinalPosition.z < max.z) {
485
+ //如果在盒子里,就整体按照progress进行透明度变化
486
+ vec3 shineColor = vec3(1.0,0.0,0.0);
487
+ float mixProgress = shineProgress * shineProgress * shineProgress * 0.4;
488
+ gl_FragColor.rgb = mix(gl_FragColor.rgb, shineColor, mixProgress);
489
+ }
490
+ }
491
+ #pragma unroll_loop_end
492
+ #endif
493
+ `,tn="",rn=function(r){S(e,r);function e(){var n=r.call(this,{type:["basic","phong","none"],fragment:{mainBefore:en,mainStart:tn,mainEnd:on},uniforms:{shineProgress:new a.Uniform(0),shineBoxes:new a.Uniform([])},defines:{NUM_SHINE_OBJECTS:0}})||this;return Object.defineProperties(n,{shineBoxes:{get:function(){return this.uniforms.shineBoxes.value},set:function(t){var o=t.length;o>0&&(this.defines.NUM_SHINE_OBJECTS=o,this.uniforms.shineBoxes.value=t)}}}),n.shineBoxes=[],n}return e.prototype.onBeforeCompile=function(n,t){var o=String(this.shineBoxes.length);n.vertexShader=n.vertexShader.replace(/NUM_SHINE_OBJECTS/g,o),n.fragmentShader=n.fragmentShader.replace(/NUM_SHINE_OBJECTS/g,o)},e}(C.CustomShader);exports.EvenessPlaneShader=R;exports.PointCloudExpandShader=Z;exports.PolygonCuterShader=nn;exports.PolygonGenerater=D;exports.ShineModelShader=rn;exports.SweepModelShader=Y;