@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.
- package/docs/assets/navigation.js +1 -1
- package/docs/assets/search.js +1 -1
- package/docs/classes/five.Camera.html +6 -5
- package/docs/classes/five.CustomShader.html +1 -1
- package/docs/classes/five.Draco.html +13 -0
- package/docs/classes/five.Five.html +60 -59
- package/docs/classes/five.KTX2.html +10 -0
- package/docs/classes/five.Model.html +24 -24
- package/docs/classes/five.ModelViewLayer.html +6 -6
- package/docs/classes/five.PBMMesh.html +1 -1
- package/docs/classes/five.PBMMeshMaterial.html +52 -37
- package/docs/classes/five.PBMPointCloudMaterial.html +40 -34
- package/docs/classes/five.PBMSkinnedMesh.html +5 -0
- package/docs/classes/five.TextureLoader.html +2 -2
- package/docs/classes/five.Tile.html +3 -2
- package/docs/classes/five.Tile3DModel.html +11 -4
- package/docs/classes/five.TileCubeTextureTarget.html +4 -3
- package/docs/classes/five.TileNode.html +1 -1
- package/docs/classes/five.Tileset.html +10 -3
- package/docs/classes/five.Trajectory.html +2 -2
- package/docs/classes/five.Work.html +15 -13
- package/docs/functions/five.defaultImageURLTransform.html +1 -1
- package/docs/functions/five.imageSupport.html +1 -1
- package/docs/functions/five.loadAt3d.html +1 -1
- package/docs/functions/five.loadB3dm.html +1 -1
- package/docs/functions/five.loadDome.html +1 -1
- package/docs/functions/five.loadDomez.html +1 -1
- package/docs/functions/five.loadFbx.html +1 -1
- package/docs/functions/five.loadGltf.html +1 -0
- package/docs/functions/five.loadPbm.html +1 -1
- package/docs/functions/five.loadPly.html +1 -1
- package/docs/functions/five.loadPnts.html +1 -1
- package/docs/functions/five.loadX3p.html +1 -1
- package/docs/functions/five.parseWork.html +1 -1
- package/docs/interfaces/five.CustomShaderInitArgs.html +2 -2
- package/docs/interfaces/five.FiveInitArgs.html +5 -3
- package/docs/interfaces/five.FiveLoadOptions.html +10 -24
- package/docs/interfaces/five.FloorplanControllerCustomInitArgs.html +3 -7
- package/docs/interfaces/five.ImageOptions.html +2 -2
- package/docs/interfaces/five.ImageURLMappings.html +1 -1
- package/docs/interfaces/five.ImageURLOptions.html +8 -8
- package/docs/interfaces/five.LoosePanoWork.html +9 -0
- package/docs/interfaces/five.MapviewControllerCustomInitArgs.html +11 -13
- package/docs/interfaces/five.PBMParameters.html +12 -6
- package/docs/interfaces/five.PanoramaControllerCustomInitArgs.html +6 -4
- package/docs/interfaces/five.TextureOptions.html +2 -2
- package/docs/interfaces/five.Tile3DModelLoaderOptions.html +3 -2
- package/docs/interfaces/five.Tile3dLayerOptions.html +14 -10
- package/docs/interfaces/five.TopviewControllerCustomInitArgs.html +3 -7
- package/docs/interfaces/five.VRPanoramaControllerCustomInitArgs.html +6 -4
- package/docs/interfaces/five.WorkCubeImage.html +8 -8
- package/docs/interfaces/five.WorkImage.html +10 -10
- package/docs/interfaces/five.WorkInitial.html +8 -8
- package/docs/interfaces/five.WorkModel.html +6 -6
- package/docs/interfaces/five.WorkModelLayer.html +2 -2
- package/docs/interfaces/five.WorkObserver.html +20 -20
- package/docs/interfaces/five.WorkResolvedObserver.html +20 -20
- package/docs/interfaces/five.WorkTile.html +2 -2
- package/docs/interfaces/five.WorkVideo.html +4 -4
- package/docs/interfaces/five.XRPanoramaControllerCustomInitArgs.html +6 -4
- package/docs/modules/five.html +8 -1
- package/docs/types/five.ControllerCustomInitTypes.html +1 -1
- package/docs/types/five.LooseWorkPanorama.html +1 -1
- package/docs/types/five.Mirror.html +1 -1
- package/docs/types/five.ModelMaterialValues.html +1 -1
- package/docs/types/five.Models.html +5 -5
- package/docs/types/five.ParseWorkOptions.html +1 -1
- package/docs/types/five.ParsedResultType.html +1 -1
- package/docs/types/five.Tile3dOptions.html +1 -1
- package/docs/types/five.TileContentData.html +1 -1
- package/docs/types/five.TilesetFrameState.html +1 -1
- package/docs/types/five.TrajectoryContentData.html +1 -1
- package/docs/types/five.Works.html +1 -1
- package/docs/variables/five.controllersDefaultInitArgs.html +1 -0
- package/docs/variables/five.defaultPbmParameters.html +1 -1
- package/docs/variables/five.draco-1.html +1 -0
- package/docs/variables/five.ktx2-1.html +1 -0
- package/five/index.d.ts +191 -61
- package/five/index.js +110 -110
- package/five/index.mjs +13922 -12425
- package/gltf-loader/index.js +4 -4
- package/gltf-loader/index.mjs +147 -147
- package/line/index.js +3 -3
- package/line/index.mjs +10 -10
- package/package.json +9 -2
- package/plugins/index.js +2 -2
- package/plugins/index.mjs +2 -2
- package/react/index.js +2 -2
- package/react/index.mjs +2 -2
- package/shader-lib/index.d.ts +38 -0
- package/shader-lib/index.js +111 -17
- package/shader-lib/index.mjs +350 -82
- package/sticker/index.js +3 -3
- package/sticker/index.mjs +7 -7
- package/umd/five-gltf-loader.js +5 -5
- package/umd/five-line.js +3 -3
- package/umd/five-plugins.js +2 -2
- package/umd/five-react.js +2 -2
- package/umd/five-shader-lib.js +111 -17
- package/umd/five-sticker.js +3 -3
- package/umd/five-vfx.js +2 -2
- package/umd/five-vue.js +2 -2
- package/umd/five.js +52 -52
- package/vfx/index.js +2 -2
- package/vfx/index.mjs +2 -2
- package/vue/index.js +2 -2
- package/vue/index.mjs +2 -2
- package/work-downloader/index.d.ts +32 -0
- package/work-downloader/index.js +255 -0
- package/work-downloader/index.mjs +786 -0
- 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:
|
|
5
|
-
* Version: 6.4.0
|
|
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
|
|
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:
|
|
5
|
-
* Version: 6.4.0
|
|
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
|
|
639
|
-
return t.setAttribute("instanceDistanceStart", new i.InterleavedBufferAttribute(
|
|
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,
|
|
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
|
|
647
|
-
l.fromBufferAttribute(
|
|
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(
|
|
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:
|
|
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
|
|
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
|
|
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
|
-
"
|
|
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
package/plugins/index.mjs
CHANGED
package/react/index.js
CHANGED
package/react/index.mjs
CHANGED
package/shader-lib/index.d.ts
CHANGED
|
@@ -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();
|
package/shader-lib/index.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @license
|
|
3
3
|
* @realsee/five
|
|
4
|
-
* Generated:
|
|
5
|
-
* Version: 6.4.0
|
|
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
|
|
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
|
-
`,
|
|
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
|
-
`,
|
|
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
|
-
`,
|
|
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
|
|
301
|
-
vec3
|
|
302
|
-
vec3 boxCenter = 0.5 * (
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
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=""
|
|
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
|
-
`,
|
|
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
|
-
`,
|
|
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;
|