x_ite 15.1.1 → 15.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -5
- package/dist/LICENSE.md +0 -2
- package/dist/X3DUOM.xml +99 -23
- package/dist/assets/components/AnnotationComponent.js +1 -1
- package/dist/assets/components/AnnotationComponent.min.js +1 -1
- package/dist/assets/components/CADGeometryComponent.js +1 -1
- package/dist/assets/components/CADGeometryComponent.min.js +1 -1
- package/dist/assets/components/CubeMapTexturingComponent.js +71 -40
- package/dist/assets/components/CubeMapTexturingComponent.min.js +2 -2
- package/dist/assets/components/DISComponent.js +1 -1
- package/dist/assets/components/DISComponent.min.js +1 -1
- package/dist/assets/components/EventUtilitiesComponent.js +1 -1
- package/dist/assets/components/EventUtilitiesComponent.min.js +1 -1
- package/dist/assets/components/Geometry2DComponent.js +1 -1
- package/dist/assets/components/Geometry2DComponent.min.js +1 -1
- package/dist/assets/components/Geometry3DComponent.js +1 -1
- package/dist/assets/components/Geometry3DComponent.min.js +1 -1
- package/dist/assets/components/GeospatialComponent.js +1 -1
- package/dist/assets/components/GeospatialComponent.min.js +1 -1
- package/dist/assets/components/HAnimComponent.js +2 -2
- package/dist/assets/components/HAnimComponent.min.js +2 -2
- package/dist/assets/components/KeyDeviceSensorComponent.js +1 -1
- package/dist/assets/components/KeyDeviceSensorComponent.min.js +1 -1
- package/dist/assets/components/LayoutComponent.js +1 -1
- package/dist/assets/components/LayoutComponent.min.js +1 -1
- package/dist/assets/components/NURBSComponent.js +2 -2
- package/dist/assets/components/NURBSComponent.min.js +2 -2
- package/dist/assets/components/ParticleSystemsComponent.js +15 -12
- package/dist/assets/components/ParticleSystemsComponent.min.js +2 -2
- package/dist/assets/components/PickingComponent.js +3 -3
- package/dist/assets/components/PickingComponent.min.js +1 -1
- package/dist/assets/components/RigidBodyPhysicsComponent.js +2 -2
- package/dist/assets/components/RigidBodyPhysicsComponent.min.js +2 -2
- package/dist/assets/components/ScriptingComponent.js +1 -1
- package/dist/assets/components/ScriptingComponent.min.js +1 -1
- package/dist/assets/components/TextComponent.js +37 -28
- package/dist/assets/components/TextComponent.min.js +2 -2
- package/dist/assets/components/TextureProjectionComponent.js +3 -3
- package/dist/assets/components/TextureProjectionComponent.min.js +2 -2
- package/dist/assets/components/Texturing3DComponent.js +57 -34
- package/dist/assets/components/Texturing3DComponent.min.js +2 -2
- package/dist/assets/components/VolumeRenderingComponent.js +17 -59
- package/dist/assets/components/VolumeRenderingComponent.min.js +2 -2
- package/dist/assets/components/WebXRComponent.js +2 -2
- package/dist/assets/components/WebXRComponent.min.js +2 -2
- package/dist/assets/components/X_ITEComponent.js +368 -254
- package/dist/assets/components/X_ITEComponent.min.js +2 -2
- package/dist/assets/lib/README.md +5 -1
- package/dist/assets/lib/mkkellogg-sort.worker.js +1 -1
- package/dist/example.html +1 -1
- package/dist/x_ite.css +1 -1
- package/dist/x_ite.d.ts +119 -17
- package/dist/x_ite.js +872 -3914
- package/dist/x_ite.min.js +2 -2
- package/dist/x_ite.min.mjs +2 -2
- package/dist/x_ite.mjs +871 -3913
- package/dist/x_ite.zip +0 -0
- package/package.json +5 -3
package/README.md
CHANGED
|
@@ -24,6 +24,7 @@ X_ITE needs your support. If you become a [Patreon](https://patreon.com/X_ITE),
|
|
|
24
24
|
* [DOM Integration](https://create3000.github.io/x_ite/dom-integration)
|
|
25
25
|
* [Custom Shaders](https://create3000.github.io/x_ite/custom-shaders)
|
|
26
26
|
* [glTF Sample Viewer](https://create3000.github.io/x_ite/laboratory/gltf-sample-viewer/)
|
|
27
|
+
* [X_ITE VRML Viewer](https://create3000.github.io/x_ite/features/#vrml-viewer)
|
|
27
28
|
|
|
28
29
|
## Using X_ITE with a CDN
|
|
29
30
|
|
|
@@ -36,10 +37,10 @@ If you are going to use X_ITE in a production environment, you should use a fixe
|
|
|
36
37
|
jsDelivr is an open-source content delivery network (CDN) renowned for its no-cost access, swift performance, and reliable service.
|
|
37
38
|
|
|
38
39
|
```html
|
|
39
|
-
<script defer src="https://cdn.jsdelivr.net/npm/x_ite@15.1.
|
|
40
|
+
<script defer src="https://cdn.jsdelivr.net/npm/x_ite@15.1.3/dist/x_ite.min.js"></script>
|
|
40
41
|
<!-- or as ES module for use in scripts -->
|
|
41
42
|
<script type="module">
|
|
42
|
-
import X3D from "https://cdn.jsdelivr.net/npm/x_ite@15.1.
|
|
43
|
+
import X3D from "https://cdn.jsdelivr.net/npm/x_ite@15.1.3/dist/x_ite.min.mjs";
|
|
43
44
|
</script>
|
|
44
45
|
```
|
|
45
46
|
|
|
@@ -70,7 +71,7 @@ This script initializes an X3D canvas within an HTML page, configuring it to con
|
|
|
70
71
|
You can include an external file:
|
|
71
72
|
|
|
72
73
|
```html
|
|
73
|
-
<script defer src="https://cdn.jsdelivr.net/npm/x_ite@15.1.
|
|
74
|
+
<script defer src="https://cdn.jsdelivr.net/npm/x_ite@15.1.3/dist/x_ite.min.js"></script>
|
|
74
75
|
<x3d-canvas
|
|
75
76
|
src="box.x3d"
|
|
76
77
|
contentScale="auto"
|
|
@@ -82,7 +83,7 @@ You can include an external file:
|
|
|
82
83
|
However, you can also include and manipulate the XML directly:
|
|
83
84
|
|
|
84
85
|
```html
|
|
85
|
-
<script defer src="https://cdn.jsdelivr.net/npm/x_ite@15.1.
|
|
86
|
+
<script defer src="https://cdn.jsdelivr.net/npm/x_ite@15.1.3/dist/x_ite.min.js"></script>
|
|
86
87
|
<x3d-canvas contentScale="auto" update="auto">
|
|
87
88
|
<X3D profile='Interchange' version='4.1'>
|
|
88
89
|
<head>
|
|
@@ -121,7 +122,7 @@ The same scene can also be created using pure JavaScript:
|
|
|
121
122
|
|
|
122
123
|
```html
|
|
123
124
|
<script type="module">
|
|
124
|
-
import X3D from "https://cdn.jsdelivr.net/npm/x_ite@15.1.
|
|
125
|
+
import X3D from "https://cdn.jsdelivr.net/npm/x_ite@15.1.3/dist/x_ite.min.mjs";
|
|
125
126
|
|
|
126
127
|
const
|
|
127
128
|
canvas = document .createElement ("x3d-canvas"), // Or get an already inserted <x3d-canvas> element.
|
package/dist/LICENSE.md
CHANGED
package/dist/X3DUOM.xml
CHANGED
|
@@ -778,35 +778,93 @@
|
|
|
778
778
|
<field name="positions"
|
|
779
779
|
type="MFVec3f"
|
|
780
780
|
accessType="inputOutput"
|
|
781
|
-
description="
|
|
781
|
+
description="The mean vector for the Gaussian splat is provided by the positions of the mesh primitive. This defines the center of the Gaussian splat ellipsoid in local space. The effective global mean vector for the Gaussian splat is derived from the positions field value and the global transformation matrix of the X3D node that instantiates the mesh containing the splat primitive as defined in the glTF specification."/>
|
|
782
782
|
<field name="orientations"
|
|
783
783
|
type="MFVec4f"
|
|
784
784
|
accessType="inputOutput"
|
|
785
|
-
description="
|
|
785
|
+
description="The orientations field values correspond to the orientation of those axes in local space. Orientation values are stored as unit quaternions in the usual glTF order."/>
|
|
786
786
|
<field name="scales"
|
|
787
787
|
type="MFVec3f"
|
|
788
788
|
accessType="inputOutput"
|
|
789
|
-
description="
|
|
789
|
+
description="The scales field values correspond to the spread of the Gaussian along its local principal axes. Scale values are linear and MUST NOT be negative."/>
|
|
790
790
|
<field name="opacities"
|
|
791
791
|
type="MFFloat"
|
|
792
792
|
accessType="inputOutput"
|
|
793
|
-
description="
|
|
794
|
-
<field name="
|
|
793
|
+
description="The opacity of a Gaussian splat is defined by the opacities field. It stores a normalized linear value between 0.0 (transparent) and 1.0 (opaque). Out-of-range values are invalid."/>
|
|
794
|
+
<field name="sphericalHarmonicsDegree0Coef0"
|
|
795
|
+
type="MFVec3f"
|
|
796
|
+
accessType="inputOutput"
|
|
797
|
+
description="The sphericalHarmonicsDegree0Coef0 field semantic provides the diffuse component coefficients for the spherical harmonics. The zeroth-order spherical harmonic coefficients are always required."/>
|
|
798
|
+
<field name="sphericalHarmonicsDegree1Coef0"
|
|
799
|
+
type="MFVec3f"
|
|
800
|
+
accessType="inputOutput"
|
|
801
|
+
description="The sphericalHarmonicsDegreeDCoefC fields where D is greater than zero hold the higher degrees of spherical harmonics data. To use higher degrees of spherical harmonics the lower degrees MUST be defined"/>
|
|
802
|
+
<field name="sphericalHarmonicsDegree1Coef1"
|
|
803
|
+
type="MFVec3f"
|
|
804
|
+
accessType="inputOutput"
|
|
805
|
+
description="The sphericalHarmonicsDegreeDCoefC fields where D is greater than zero hold the higher degrees of spherical harmonics data. To use higher degrees of spherical harmonics the lower degrees MUST be defined"/>
|
|
806
|
+
<field name="sphericalHarmonicsDegree1Coef2"
|
|
807
|
+
type="MFVec3f"
|
|
808
|
+
accessType="inputOutput"
|
|
809
|
+
description="The sphericalHarmonicsDegreeDCoefC fields where D is greater than zero hold the higher degrees of spherical harmonics data. To use higher degrees of spherical harmonics the lower degrees MUST be defined"/>
|
|
810
|
+
<field name="sphericalHarmonicsDegree2Coef0"
|
|
811
|
+
type="MFVec3f"
|
|
812
|
+
accessType="inputOutput"
|
|
813
|
+
description="The sphericalHarmonicsDegreeDCoefC fields where D is greater than zero hold the higher degrees of spherical harmonics data. To use higher degrees of spherical harmonics the lower degrees MUST be defined"/>
|
|
814
|
+
<field name="sphericalHarmonicsDegree2Coef1"
|
|
815
|
+
type="MFVec3f"
|
|
816
|
+
accessType="inputOutput"
|
|
817
|
+
description="The sphericalHarmonicsDegreeDCoefC fields where D is greater than zero hold the higher degrees of spherical harmonics data. To use higher degrees of spherical harmonics the lower degrees MUST be defined"/>
|
|
818
|
+
<field name="sphericalHarmonicsDegree2Coef2"
|
|
819
|
+
type="MFVec3f"
|
|
820
|
+
accessType="inputOutput"
|
|
821
|
+
description="The sphericalHarmonicsDegreeDCoefC fields where D is greater than zero hold the higher degrees of spherical harmonics data. To use higher degrees of spherical harmonics the lower degrees MUST be defined"/>
|
|
822
|
+
<field name="sphericalHarmonicsDegree2Coef3"
|
|
795
823
|
type="MFVec3f"
|
|
796
824
|
accessType="inputOutput"
|
|
797
|
-
description="
|
|
798
|
-
<field name="
|
|
825
|
+
description="The sphericalHarmonicsDegreeDCoefC fields where D is greater than zero hold the higher degrees of spherical harmonics data. To use higher degrees of spherical harmonics the lower degrees MUST be defined"/>
|
|
826
|
+
<field name="sphericalHarmonicsDegree2Coef4"
|
|
799
827
|
type="MFVec3f"
|
|
800
828
|
accessType="inputOutput"
|
|
801
|
-
description="
|
|
802
|
-
<field name="
|
|
829
|
+
description="The sphericalHarmonicsDegreeDCoefC fields where D is greater than zero hold the higher degrees of spherical harmonics data. To use higher degrees of spherical harmonics the lower degrees MUST be defined"/>
|
|
830
|
+
<field name="sphericalHarmonicsDegree3Coef0"
|
|
803
831
|
type="MFVec3f"
|
|
804
832
|
accessType="inputOutput"
|
|
805
|
-
description="
|
|
806
|
-
<field name="
|
|
833
|
+
description="The sphericalHarmonicsDegreeDCoefC fields where D is greater than zero hold the higher degrees of spherical harmonics data. To use higher degrees of spherical harmonics the lower degrees MUST be defined"/>
|
|
834
|
+
<field name="sphericalHarmonicsDegree3Coef1"
|
|
807
835
|
type="MFVec3f"
|
|
808
836
|
accessType="inputOutput"
|
|
809
|
-
description="
|
|
837
|
+
description="The sphericalHarmonicsDegreeDCoefC fields where D is greater than zero hold the higher degrees of spherical harmonics data. To use higher degrees of spherical harmonics the lower degrees MUST be defined"/>
|
|
838
|
+
<field name="sphericalHarmonicsDegree3Coef2"
|
|
839
|
+
type="MFVec3f"
|
|
840
|
+
accessType="inputOutput"
|
|
841
|
+
description="The sphericalHarmonicsDegreeDCoefC fields where D is greater than zero hold the higher degrees of spherical harmonics data. To use higher degrees of spherical harmonics the lower degrees MUST be defined"/>
|
|
842
|
+
<field name="sphericalHarmonicsDegree3Coef3"
|
|
843
|
+
type="MFVec3f"
|
|
844
|
+
accessType="inputOutput"
|
|
845
|
+
description="The sphericalHarmonicsDegreeDCoefC fields where D is greater than zero hold the higher degrees of spherical harmonics data. To use higher degrees of spherical harmonics the lower degrees MUST be defined"/>
|
|
846
|
+
<field name="sphericalHarmonicsDegree3Coef4"
|
|
847
|
+
type="MFVec3f"
|
|
848
|
+
accessType="inputOutput"
|
|
849
|
+
description="The sphericalHarmonicsDegreeDCoefC fields where D is greater than zero hold the higher degrees of spherical harmonics data. To use higher degrees of spherical harmonics the lower degrees MUST be defined"/>
|
|
850
|
+
<field name="sphericalHarmonicsDegree3Coef5"
|
|
851
|
+
type="MFVec3f"
|
|
852
|
+
accessType="inputOutput"
|
|
853
|
+
description="The sphericalHarmonicsDegreeDCoefC fields where D is greater than zero hold the higher degrees of spherical harmonics data. To use higher degrees of spherical harmonics the lower degrees MUST be defined"/>
|
|
854
|
+
<field name="sphericalHarmonicsDegree3Coef6"
|
|
855
|
+
type="MFVec3f"
|
|
856
|
+
accessType="inputOutput"
|
|
857
|
+
description="The sphericalHarmonicsDegreeDCoefC fields where D is greater than zero hold the higher degrees of spherical harmonics data. To use higher degrees of spherical harmonics the lower degrees MUST be defined"/>
|
|
858
|
+
<field name="pointerEvents"
|
|
859
|
+
type="SFBool"
|
|
860
|
+
accessType="inputOutput"
|
|
861
|
+
default="TRUE"
|
|
862
|
+
description="The pointerEvents field defines whether this GaussianSplats becomes target for pointer events."/>
|
|
863
|
+
<field name="castShadow"
|
|
864
|
+
type="SFBool"
|
|
865
|
+
accessType="inputOutput"
|
|
866
|
+
default="TRUE"
|
|
867
|
+
description="Input/Output field castShadow."/>
|
|
810
868
|
<field name="visible"
|
|
811
869
|
type="SFBool"
|
|
812
870
|
accessType="inputOutput"
|
|
@@ -837,7 +895,7 @@
|
|
|
837
895
|
type="SFBool"
|
|
838
896
|
accessType="inputOutput"
|
|
839
897
|
default="TRUE"
|
|
840
|
-
description="The pointerEvents field defines whether this Layer becomes target for pointer events."/>
|
|
898
|
+
description="The pointerEvents field defines whether this Layer node becomes target for pointer events."/>
|
|
841
899
|
</InterfaceDefinition>
|
|
842
900
|
</ConcreteNode>
|
|
843
901
|
|
|
@@ -847,7 +905,7 @@
|
|
|
847
905
|
type="SFBool"
|
|
848
906
|
accessType="inputOutput"
|
|
849
907
|
default="TRUE"
|
|
850
|
-
description="The pointerEvents field defines whether this LayoutLayer becomes target for pointer events."/>
|
|
908
|
+
description="The pointerEvents field defines whether this LayoutLayer node becomes target for pointer events."/>
|
|
851
909
|
</InterfaceDefinition>
|
|
852
910
|
</ConcreteNode>
|
|
853
911
|
|
|
@@ -1239,13 +1297,38 @@
|
|
|
1239
1297
|
default="NULL"
|
|
1240
1298
|
acceptableNodeTypes="X3DMetadataObject"
|
|
1241
1299
|
description="Information about this node can be contained in a MetadataBoolean, MetadataDouble, MetadataFloat, MetadataInteger, MetadataString or MetadataSet node."/>
|
|
1300
|
+
<field name="scatterAnisotropy"
|
|
1301
|
+
type="SFFloat"
|
|
1302
|
+
accessType="inputOutput"
|
|
1303
|
+
default="0"
|
|
1304
|
+
minInclusive="-1"
|
|
1305
|
+
maxInclusive="1"
|
|
1306
|
+
description="The anisotropy of scatter events. Range is [-1, 1]. Positive values represent forward scattering; negative values represent backward scattering."/>
|
|
1307
|
+
<field name="scatterStrength"
|
|
1308
|
+
type="SFFloat"
|
|
1309
|
+
accessType="inputOutput"
|
|
1310
|
+
default="0"
|
|
1311
|
+
minInclusive="0"
|
|
1312
|
+
maxInclusive="1"
|
|
1313
|
+
description="The strength of the scattering effect. Range is [0, 1]. At 0, scattering is disabled; at 1, scattering is fully applied."/>
|
|
1314
|
+
<field name="scatterStrengthTextureMapping"
|
|
1315
|
+
type="SFString"
|
|
1316
|
+
accessType="inputOutput"
|
|
1317
|
+
default=""
|
|
1318
|
+
description="Input/Output field multiscatterColorTextureMapping."/>
|
|
1319
|
+
<field name="scatterStrengthTexture"
|
|
1320
|
+
type="SFNode"
|
|
1321
|
+
accessType="inputOutput"
|
|
1322
|
+
default="NULL"
|
|
1323
|
+
acceptableNodeTypes="X3DSingleTextureNode"
|
|
1324
|
+
description="A texture that defines the per-texel scatter strength, stored in the alpha (A) channel. Will be multiplied by scatterStrength."/>
|
|
1242
1325
|
<field name="multiscatterColor"
|
|
1243
1326
|
type="SFColor"
|
|
1244
1327
|
accessType="inputOutput"
|
|
1245
1328
|
default="0 0 0"
|
|
1246
1329
|
minInclusive="0"
|
|
1247
1330
|
maxInclusive="1"
|
|
1248
|
-
description="The multi-scatter albedo."/>
|
|
1331
|
+
description="The multi-scatter color. In volumetric mode, this is the multi-scatter albedo. In thin-walled mode, this is a surface tint applied to transmitted light.."/>
|
|
1249
1332
|
<field name="multiscatterColorTextureMapping"
|
|
1250
1333
|
type="SFString"
|
|
1251
1334
|
accessType="inputOutput"
|
|
@@ -1256,14 +1339,7 @@
|
|
|
1256
1339
|
accessType="inputOutput"
|
|
1257
1340
|
default="NULL"
|
|
1258
1341
|
acceptableNodeTypes="X3DSingleTextureNode"
|
|
1259
|
-
description="A
|
|
1260
|
-
<field name="scatterAnisotropy"
|
|
1261
|
-
type="SFFloat"
|
|
1262
|
-
accessType="inputOutput"
|
|
1263
|
-
default="0"
|
|
1264
|
-
minInclusive="-1"
|
|
1265
|
-
maxInclusive="1"
|
|
1266
|
-
description="The anisotropy of scatter events. Range is [-1, 1]."/>
|
|
1342
|
+
description="A texture that defines the multi-scatter color, stored in the RGB channels and encoded in sRGB. This will be multiplied by the multiscatterColor."/>
|
|
1267
1343
|
<containerField default="extensions" type="xs:NMTOKEN" />
|
|
1268
1344
|
</InterfaceDefinition>
|
|
1269
1345
|
</ConcreteNode>
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
/* X_ITE v15.1.
|
|
1
|
+
/* X_ITE v15.1.3 */
|
|
2
2
|
const t=window[Symbol.for("X_ITE.X3D")];(()=>{var n={n:t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return n.d(e,{a:e}),e},d:(t,e)=>{for(var i in e)n.o(e,i)&&!n.o(t,i)&&Object.defineProperty(t,i,{enumerable:!0,get:e[i]})},o:(t,n)=>Object.prototype.hasOwnProperty.call(t,n)};const e=t.Components;var i=n.n(e);const o=t.Fields;var a=n.n(o);const p=t.X3DFieldDefinition;var r=n.n(p);const u=t.FieldDefinitionArray;var l=n.n(u);const s=t.X3DNode;var d=n.n(s);const c=t.X3DLayerNode;var w=n.n(c);const y=t.Viewpoint;var O=n.n(y);const S=t.Group;var b=n.n(S);const f=t.X3DConstants;var h=n.n(f);const F=t.Namespace;var g=n.n(F);function A(t){w().call(this,t,new(O())(t),new(b())(t)),this.addType(h().AnnotationLayer)}Object.assign(Object.setPrototypeOf(A.prototype,w().prototype),{initialize(){w().prototype.initialize.call(this)}}),Object.defineProperties(A,{...d().getStaticProperties("AnnotationLayer","Annotation",1,"layers","4.0"),fieldDefinitions:{value:new(l())([new(r())(h().inputOutput,"metadata",new(a().SFNode)),new(r())(h().inputOutput,"isPickable",new(a().SFBool)(!0)),new(r())(h().inputOutput,"layoutPolicy",new(a().MFString)),new(r())(h().inputOutput,"shownGroupID",new(a().MFString)),new(r())(h().inputOutput,"viewport",new(a().SFNode))]),enumerable:!0}});const P=A,N=g().add("AnnotationLayer",P),m=t.X3DChildNode;var v=n.n(m);function D(t){v().call(this,t),this.addType(h().AnnotationTarget)}Object.assign(Object.setPrototypeOf(D.prototype,v().prototype),{initialize(){v().prototype.initialize.call(this)}}),Object.defineProperties(D,{...d().getStaticProperties("AnnotationTarget","Annotation",1,"children","4.0"),fieldDefinitions:{value:new(l())([new(r())(h().inputOutput,"metadata",new(a().SFNode)),new(r())(h().inputOutput,"referencePoint",new(a().SFVec3f)),new(r())(h().inputOutput,"leadLineStyle",new(a().SFNode)),new(r())(h().inputOutput,"marker",new(a().SFNode)),new(r())(h().inputOutput,"annotations",new(a().MFNode))]),enumerable:!0}});const j=D,z=g().add("AnnotationTarget",j),T=t.X3DGroupingNode;var X=n.n(T);function G(t){v().call(this,t),this.addType(h().X3DAnnotationNode)}Object.assign(Object.setPrototypeOf(G.prototype,v().prototype),{initialize(){v().prototype.initialize.call(this)}}),Object.defineProperties(G,d().getStaticProperties("X3DAnnotationNode","Annotation",1));const I=G,L=g().add("X3DAnnotationNode",I);function E(t){X().call(this,t),L.call(this,t),this.addType(h().GroupAnnotation)}Object.assign(Object.setPrototypeOf(E.prototype,X().prototype),L.prototype,{initialize(){X().prototype.initialize.call(this),L.prototype.initialize.call(this)},dispose(){L.prototype.dispose.call(this),X().prototype.dispose.call(this)}}),Object.defineProperties(E,{...d().getStaticProperties("GroupAnnotation","Annotation",1,"children","4.0"),fieldDefinitions:{value:new(l())([new(r())(h().inputOutput,"metadata",new(a().SFNode)),new(r())(h().inputOutput,"enabled",new(a().SFBool)(!0)),new(r())(h().inputOutput,"annotationGroupID",new(a().SFString)),new(r())(h().inputOutput,"displayPolicy",new(a().SFString)("NEVER")),new(r())(h().inputOutput,"visible",new(a().SFBool)(!0)),new(r())(h().inputOutput,"bboxDisplay",new(a().SFBool)),new(r())(h().initializeOnly,"bboxSize",new(a().SFVec3f)(-1,-1,-1)),new(r())(h().initializeOnly,"bboxCenter",new(a().SFVec3f)),new(r())(h().inputOnly,"addChildren",new(a().MFNode)),new(r())(h().inputOnly,"removeChildren",new(a().MFNode)),new(r())(h().inputOutput,"children",new(a().MFNode))]),enumerable:!0}});const M=E,R=g().add("GroupAnnotation",M),x=t.X3DUrlObject;var V=n.n(x);function B(t){L.call(this,t),V().call(this,t),this.addType(h().IconAnnotation)}Object.assign(Object.setPrototypeOf(B.prototype,L.prototype),V().prototype,{initialize(){L.prototype.initialize.call(this),V().prototype.initialize.call(this)},async requestImmediateLoad(t=!0){},dispose(){V().prototype.dispose.call(this),L.prototype.dispose.call(this)}}),Object.defineProperties(B,{...d().getStaticProperties("IconAnnotation","Annotation",1,"children","4.0"),fieldDefinitions:{value:new(l())([new(r())(h().inputOutput,"metadata",new(a().SFNode)),new(r())(h().inputOutput,"enabled",new(a().SFBool)(!0)),new(r())(h().inputOutput,"annotationGroupID",new(a().SFString)),new(r())(h().inputOutput,"displayPolicy",new(a().SFString)("NEVER")),new(r())(h().inputOutput,"url",new(a().MFString)),new(r())(h().inputOutput,"autoRefresh",new(a().SFTime)(0)),new(r())(h().inputOutput,"autoRefreshTimeLimit",new(a().SFTime)(3600))]),enumerable:!0}});const C=B,U=g().add("IconAnnotation",C);function _(t){L.call(this,t),this.addType(h().TextAnnotation)}Object.assign(Object.setPrototypeOf(_.prototype,L.prototype),{initialize(){L.prototype.initialize.call(this)}}),Object.defineProperties(_,{...d().getStaticProperties("TextAnnotation","Annotation",1,"children","4.0"),fieldDefinitions:{value:new(l())([new(r())(h().inputOutput,"metadata",new(a().SFNode)),new(r())(h().inputOutput,"enabled",new(a().SFBool)(!0)),new(r())(h().inputOutput,"annotationGroupID",new(a().SFString)),new(r())(h().inputOutput,"displayPolicy",new(a().SFString)("NEVER")),new(r())(h().inputOutput,"contentType",new(a().SFString)("text/plain")),new(r())(h().inputOutput,"text",new(a().SFString))]),enumerable:!0}});const k=_,q=g().add("TextAnnotation",k);function H(t){L.call(this,t),this.addType(h().URLAnnotation)}Object.assign(Object.setPrototypeOf(H.prototype,L.prototype),{initialize(){L.prototype.initialize.call(this)}}),Object.defineProperties(H,{...d().getStaticProperties("URLAnnotation","Annotation",1,"children","4.0"),fieldDefinitions:{value:new(l())([new(r())(h().inputOutput,"metadata",new(a().SFNode)),new(r())(h().inputOutput,"enabled",new(a().SFBool)(!0)),new(r())(h().inputOutput,"annotationGroupID",new(a().SFString)),new(r())(h().inputOutput,"displayPolicy",new(a().SFString)("NEVER")),new(r())(h().inputOutput,"url",new(a().MFString))]),enumerable:!0}});const J=H,K=g().add("URLAnnotation",J);i().add({name:"Annotation",concreteNodes:[N,z,R,U,q,K],abstractNodes:[L]});g().add("AnnotationComponent",void 0)})();
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
/* X_ITE v15.1.
|
|
1
|
+
/* X_ITE v15.1.3 */
|
|
2
2
|
const e=window[Symbol.for("X_ITE.X3D")];(()=>{var t={n:e=>{var i=e&&e.__esModule?()=>e.default:()=>e;return t.d(i,{a:i}),i},d:(e,i)=>{for(var n in i)t.o(i,n)&&!t.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:i[n]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)};const i=e.Components;var n=t.n(i);const s=e.Fields;var o=t.n(s);const r=e.X3DFieldDefinition;var l=t.n(r);const d=e.FieldDefinitionArray;var u=t.n(d);const a=e.X3DNode;var c=t.n(a);const b=e.X3DGroupingNode;var p=t.n(b);const O=e.X3DChildNode;var h=t.n(O);const w=e.X3DConstants;var j=t.n(w);const y=e.Namespace;var S=t.n(y);function _(e){h().call(this,e),this.addType(j().X3DProductStructureChildNode)}Object.setPrototypeOf(_.prototype,h().prototype),Object.defineProperties(_,c().getStaticProperties("X3DProductStructureChildNode","CADGeometry",2));const m=_,F=S().add("X3DProductStructureChildNode",m);function f(e){p().call(this,e),F.call(this,e),this.addType(j().CADAssembly)}Object.setPrototypeOf(f.prototype,p().prototype),Object.defineProperties(f,{...c().getStaticProperties("CADAssembly","CADGeometry",2,"children","3.1"),fieldDefinitions:{value:new(u())([new(l())(j().inputOutput,"metadata",new(o().SFNode)),new(l())(j().inputOutput,"name",new(o().SFString)),new(l())(j().inputOutput,"visible",new(o().SFBool)(!0)),new(l())(j().inputOutput,"bboxDisplay",new(o().SFBool)),new(l())(j().initializeOnly,"bboxSize",new(o().SFVec3f)(-1,-1,-1)),new(l())(j().initializeOnly,"bboxCenter",new(o().SFVec3f)),new(l())(j().inputOnly,"addChildren",new(o().MFNode)),new(l())(j().inputOnly,"removeChildren",new(o().MFNode)),new(l())(j().inputOutput,"children",new(o().MFNode))]),enumerable:!0}});const g=f,v=S().add("CADAssembly",g),C=e.X3DBoundedObject;var D=t.n(C);const N=e.TraverseType;var P=t.n(N);const x=e.X3DCast;var B=t.n(x);function I(e){F.call(this,e),D().call(this,e),this.addType(j().CADFace),this.addChildObjects(j().outputOnly,"rebuild",new(o().SFTime)),this.setBoundedObject(!0),this.setPointingObject(!0),this.setCollisionObject(!0),this.setShadowObject(!0),this.setVisibleObject(!0),this.visibleObjects=[]}Object.assign(Object.setPrototypeOf(I.prototype,F.prototype),D().prototype,{initialize(){F.prototype.initialize.call(this),D().prototype.initialize.call(this),this._rebuild.addInterest("set_children__",this),this._bboxSize.addInterest("set_boundedObjects__",this),this._shape.addInterest("requestRebuild",this),this.set_children__()},getBBox(e,t){return this.isDefaultBBoxSize()?this.boundedObject?.getBBox(e,t)??e.set():e.set(this._bboxSize.getValue(),this._bboxCenter.getValue())},getShapes(e,t){for(const i of this.visibleObjects)i.getShapes(e,t);return e},requestRebuild(){this._rebuild.addEvent()},set_children__(){this.setChild(B()(j().X3DChildNode,this._shape))},setChild(e){if(this.childNode){const e=this.childNode;e._isBoundedObject.removeInterest("requestRebuild",this),e._isPointingObject.removeInterest("requestRebuild",this),e._isCameraObject.removeInterest("requestRebuild",this),e._isPickableObject.removeInterest("requestRebuild",this),e._isCollisionObject.removeInterest("requestRebuild",this),e._isShadowObject.removeInterest("requestRebuild",this),e._isVisibleObject.removeInterest("requestRebuild",this),B()(j().X3DBoundedObject,e)&&(e._display.removeInterest("requestRebuild",this),e._bboxDisplay.removeInterest("requestRebuild",this))}if(this.childNode=null,this.boundedObject=null,this.pointingObject=null,this.cameraObject=null,this.pickableObject=null,this.collisionObject=null,this.shadowObject=null,this.visibleObjects.length=0,e){const t=e.getType();for(let i=t.length-1;i>=0;--i){switch(t[i]){case j().LOD:case j().Transform:case j().X3DShapeNode:e._isBoundedObject.addInterest("requestRebuild",this),e._isPointingObject.addInterest("requestRebuild",this),e._isCameraObject.addInterest("requestRebuild",this),e._isPickableObject.addInterest("requestRebuild",this),e._isCollisionObject.addInterest("requestRebuild",this),e._isShadowObject.addInterest("requestRebuild",this),e._isVisibleObject.addInterest("requestRebuild",this),this.childNode=e,e.isVisible()&&(e.isBoundedObject()&&(this.boundedObject=e),e.isPointingObject()&&(this.pointingObject=e),e.isCameraObject()&&(this.cameraObject=e),e.isPickableObject()&&(this.pickableObject=e),e.isCollisionObject()&&(this.collisionObject=e),e.isShadowObject()&&(this.shadowObject=e),e.isVisibleObject()&&this.visibleObjects.push(e)),B()(j().X3DBoundedObject,e)&&(e._display.addInterest("requestRebuild",this),e._bboxDisplay.addInterest("requestRebuild",this),e.isBBoxVisible()&&this.visibleObjects.push(e.getBBoxNode()));break;default:continue}break}}this.set_pointingObjects__(),this.set_cameraObjects__(),this.set_pickableObjects__(),this.set_collisionObjects__(),this.set_shadowObjects__(),this.set_visibleObjects__(),this.set_boundedObjects__()},set_boundedObjects__(){this.setBoundedObject(this.boundedObject||!this.isDefaultBBoxSize())},set_pointingObjects__(){this.setPointingObject(this.pointingObject)},set_cameraObjects__(){this.setCameraObject(this.cameraObject)},set_pickableObjects__(){this.setPickableObject(this.getTransformSensors().size||this.pickableObject)},set_collisionObjects__(){this.setCollisionObject(this.collisionObject)},set_shadowObjects__(){this.setShadowObject(this.shadowObject)},set_visibleObjects__(){this.setVisibleObject(this.visibleObjects.length)},traverse(e,t){switch(e){case P().POINTER:return void this.pointingObject?.traverse(e,t);case P().CAMERA:return void this.cameraObject?.traverse(e,t);case P().PICKING:if(this.getBrowser().getPickable().at(-1))for(const i of this.visibleObjects)i.traverse(e,t);else this.pickableObject?.traverse(e,t);return;case P().COLLISION:return void this.collisionObject?.traverse(e,t);case P().DEPTH:case P().SHADOW:return void this.shadowObject?.traverse(e,t);case P().DISPLAY:for(const i of this.visibleObjects)i.traverse(e,t);return}},dispose(){D().prototype.dispose.call(this),F.prototype.dispose.call(this)}}),Object.defineProperties(I,{...c().getStaticProperties("CADFace","CADGeometry",2,"children","3.1"),fieldDefinitions:{value:new(u())([new(l())(j().inputOutput,"metadata",new(o().SFNode)),new(l())(j().inputOutput,"name",new(o().SFString)),new(l())(j().inputOutput,"visible",new(o().SFBool)(!0)),new(l())(j().inputOutput,"bboxDisplay",new(o().SFBool)),new(l())(j().initializeOnly,"bboxSize",new(o().SFVec3f)(-1,-1,-1)),new(l())(j().initializeOnly,"bboxCenter",new(o().SFVec3f)),new(l())(j().inputOutput,"shape",new(o().SFNode))]),enumerable:!0}});const z=I,V=S().add("CADFace",z);function A(e){p().call(this,e),this.addType(j().CADLayer)}Object.setPrototypeOf(A.prototype,p().prototype),Object.defineProperties(A,{...c().getStaticProperties("CADLayer","CADGeometry",2,"children","3.1"),fieldDefinitions:{value:new(u())([new(l())(j().inputOutput,"metadata",new(o().SFNode)),new(l())(j().inputOutput,"name",new(o().SFString)),new(l())(j().inputOutput,"visible",new(o().SFBool)(!0)),new(l())(j().inputOutput,"bboxDisplay",new(o().SFBool)),new(l())(j().initializeOnly,"bboxSize",new(o().SFVec3f)(-1,-1,-1)),new(l())(j().initializeOnly,"bboxCenter",new(o().SFVec3f)),new(l())(j().inputOnly,"addChildren",new(o().MFNode)),new(l())(j().inputOnly,"removeChildren",new(o().MFNode)),new(l())(j().inputOutput,"children",new(o().MFNode))]),enumerable:!0}});const R=A,q=S().add("CADLayer",R),T=e.X3DTransformNode;var X=t.n(T);function k(e){X().call(this,e),F.call(this,e),this.addType(j().CADPart)}Object.setPrototypeOf(k.prototype,X().prototype),Object.defineProperties(k,{...c().getStaticProperties("CADPart","CADGeometry",2,"children","3.1"),fieldDefinitions:{value:new(u())([new(l())(j().inputOutput,"metadata",new(o().SFNode)),new(l())(j().inputOutput,"name",new(o().SFString)),new(l())(j().inputOutput,"translation",new(o().SFVec3f)),new(l())(j().inputOutput,"rotation",new(o().SFRotation)),new(l())(j().inputOutput,"scale",new(o().SFVec3f)(1,1,1)),new(l())(j().inputOutput,"scaleOrientation",new(o().SFRotation)),new(l())(j().inputOutput,"center",new(o().SFVec3f)),new(l())(j().inputOutput,"visible",new(o().SFBool)(!0)),new(l())(j().inputOutput,"bboxDisplay",new(o().SFBool)),new(l())(j().initializeOnly,"bboxSize",new(o().SFVec3f)(-1,-1,-1)),new(l())(j().initializeOnly,"bboxCenter",new(o().SFVec3f)),new(l())(j().inputOnly,"addChildren",new(o().MFNode)),new(l())(j().inputOnly,"removeChildren",new(o().MFNode)),new(l())(j().inputOutput,"children",new(o().MFNode))]),enumerable:!0}});const M=k,G=S().add("CADPart",M),L=e.X3DComposedGeometryNode;var Q=t.n(L);function E(e){Q().call(this,e),this.addType(j().IndexedQuadSet)}Object.assign(Object.setPrototypeOf(E.prototype,Q().prototype),{initialize(){Q().prototype.initialize.call(this),this._set_index.addFieldInterest(this._index)},getTriangleIndex:(()=>{const e=[0,1,2,0,2,3];return function(t){const i=t%6;return(t-i)/6*4+e[i]}})(),getPolygonIndex(e){return this._index[e]},getVerticesPerPolygon:()=>4,getNumVertices(){return this.checkVertexCount(this._index.length,4)},build(){const e=this.getNumVertices();Q().prototype.build.call(this,4,e,6,e/4*6)}}),Object.defineProperties(E,{...c().getStaticProperties("IndexedQuadSet","CADGeometry",1,"geometry","3.1"),fieldDefinitions:{value:new(u())([new(l())(j().inputOutput,"metadata",new(o().SFNode)),new(l())(j().inputOnly,"set_index",new(o().MFInt32)),new(l())(j().initializeOnly,"solid",new(o().SFBool)(!0)),new(l())(j().initializeOnly,"ccw",new(o().SFBool)(!0)),new(l())(j().initializeOnly,"colorPerVertex",new(o().SFBool)(!0)),new(l())(j().initializeOnly,"normalPerVertex",new(o().SFBool)(!0)),new(l())(j().initializeOnly,"index",new(o().MFInt32)),new(l())(j().inputOutput,"attrib",new(o().MFNode)),new(l())(j().inputOutput,"fogCoord",new(o().SFNode)),new(l())(j().inputOutput,"color",new(o().SFNode)),new(l())(j().inputOutput,"texCoord",new(o().SFNode)),new(l())(j().inputOutput,"tangent",new(o().SFNode)),new(l())(j().inputOutput,"normal",new(o().SFNode)),new(l())(j().inputOutput,"coord",new(o().SFNode))]),enumerable:!0}});const H=E,K=S().add("IndexedQuadSet",H);function W(e){Q().call(this,e),this.addType(j().QuadSet)}Object.assign(Object.setPrototypeOf(W.prototype,Q().prototype),{getTriangleIndex:(()=>{const e=[0,1,2,0,2,3];return function(t){const i=t%6;return(t-i)/6*4+e[i]}})(),getVerticesPerPolygon:()=>4,getNumVertices(){return this.checkVertexCount(this.getCoord()?.getSize()??0,4)},build(){const e=this.getNumVertices();Q().prototype.build.call(this,4,e,6,e/4*6)},createNormals(e,t,i){return this.createFaceNormals(e,t,i)}}),Object.defineProperties(W,{...c().getStaticProperties("QuadSet","CADGeometry",1,"geometry","3.1"),fieldDefinitions:{value:new(u())([new(l())(j().inputOutput,"metadata",new(o().SFNode)),new(l())(j().initializeOnly,"solid",new(o().SFBool)(!0)),new(l())(j().initializeOnly,"ccw",new(o().SFBool)(!0)),new(l())(j().initializeOnly,"colorPerVertex",new(o().SFBool)(!0)),new(l())(j().initializeOnly,"normalPerVertex",new(o().SFBool)(!0)),new(l())(j().inputOutput,"attrib",new(o().MFNode)),new(l())(j().inputOutput,"fogCoord",new(o().SFNode)),new(l())(j().inputOutput,"color",new(o().SFNode)),new(l())(j().inputOutput,"texCoord",new(o().SFNode)),new(l())(j().inputOutput,"tangent",new(o().SFNode)),new(l())(j().inputOutput,"normal",new(o().SFNode)),new(l())(j().inputOutput,"coord",new(o().SFNode))]),enumerable:!0}});const Y=W,J=S().add("QuadSet",Y);n().add({name:"CADGeometry",concreteNodes:[v,V,q,G,K,J],abstractNodes:[F]});S().add("CADGeometryComponent",void 0)})();
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/* X_ITE v15.1.
|
|
1
|
+
/* X_ITE v15.1.3 */
|
|
2
2
|
const __X_ITE_X3D__ = window [Symbol .for ("X_ITE.X3D")];
|
|
3
3
|
/******/ (() => { // webpackBootstrap
|
|
4
4
|
/******/ "use strict";
|
|
@@ -409,6 +409,11 @@ Object .assign (Object .setPrototypeOf (ComposedCubeMapTexture .prototype, CubeM
|
|
|
409
409
|
this .addNodeEvent ();
|
|
410
410
|
}
|
|
411
411
|
},
|
|
412
|
+
getRenderedTextures (renderedTextures)
|
|
413
|
+
{
|
|
414
|
+
for (const textureNode of this .textureNodes)
|
|
415
|
+
textureNode ?.getRenderedTextures (renderedTextures);
|
|
416
|
+
},
|
|
412
417
|
});
|
|
413
418
|
|
|
414
419
|
Object .defineProperties (ComposedCubeMapTexture,
|
|
@@ -517,6 +522,10 @@ Object .assign (Object .setPrototypeOf (GeneratedCubeMapTexture .prototype, Cube
|
|
|
517
522
|
{
|
|
518
523
|
return true;
|
|
519
524
|
},
|
|
525
|
+
getRenderedTextures (renderedTextures)
|
|
526
|
+
{
|
|
527
|
+
renderedTextures .add (this);
|
|
528
|
+
},
|
|
520
529
|
addUpdateCallback (key, callback)
|
|
521
530
|
{
|
|
522
531
|
this .updateCallbacks .set (key, callback);
|
|
@@ -585,12 +594,12 @@ Object .assign (Object .setPrototypeOf (GeneratedCubeMapTexture .prototype, Cube
|
|
|
585
594
|
// Rotations to negated normals of the texture cube.
|
|
586
595
|
|
|
587
596
|
const rotations = [
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
597
|
+
external_X_ITE_X3D_Rotation4_default().fromVectors ((external_X_ITE_X3D_Vector3_default()).Z_AXIS, (external_X_ITE_X3D_Vector3_default()).NEGATIVE_Z_AXIS), // front
|
|
598
|
+
external_X_ITE_X3D_Rotation4_default().fromVectors ((external_X_ITE_X3D_Vector3_default()).Z_AXIS, (external_X_ITE_X3D_Vector3_default()).Z_AXIS), // back
|
|
599
|
+
external_X_ITE_X3D_Rotation4_default().fromVectors ((external_X_ITE_X3D_Vector3_default()).Z_AXIS, (external_X_ITE_X3D_Vector3_default()).X_AXIS), // left
|
|
600
|
+
external_X_ITE_X3D_Rotation4_default().fromVectors ((external_X_ITE_X3D_Vector3_default()).Z_AXIS, (external_X_ITE_X3D_Vector3_default()).NEGATIVE_X_AXIS), // right
|
|
601
|
+
external_X_ITE_X3D_Rotation4_default().fromVectors ((external_X_ITE_X3D_Vector3_default()).Z_AXIS, (external_X_ITE_X3D_Vector3_default()).NEGATIVE_Y_AXIS), // top
|
|
602
|
+
external_X_ITE_X3D_Rotation4_default().fromVectors ((external_X_ITE_X3D_Vector3_default()).Z_AXIS, (external_X_ITE_X3D_Vector3_default()).Y_AXIS), // bottom
|
|
594
603
|
];
|
|
595
604
|
|
|
596
605
|
// Negated scales of the texture cube.
|
|
@@ -622,8 +631,9 @@ Object .assign (Object .setPrototypeOf (GeneratedCubeMapTexture .prototype, Cube
|
|
|
622
631
|
const
|
|
623
632
|
dependentRenderer = this .dependentRenderers .get (renderObject),
|
|
624
633
|
browser = this .getBrowser (),
|
|
625
|
-
layer = renderObject .getLayer (),
|
|
626
634
|
gl = browser .getContext (),
|
|
635
|
+
layer = renderObject .getLayer (),
|
|
636
|
+
viewport = this .viewport,
|
|
627
637
|
background = dependentRenderer .getBackground (),
|
|
628
638
|
navigationInfoNode = dependentRenderer .getNavigationInfo (),
|
|
629
639
|
viewpointNode = dependentRenderer .getViewpoint (),
|
|
@@ -638,7 +648,7 @@ Object .assign (Object .setPrototypeOf (GeneratedCubeMapTexture .prototype, Cube
|
|
|
638
648
|
this .setTransparent (background .isTransparent ());
|
|
639
649
|
|
|
640
650
|
dependentRenderer .setFramebuffer (this .frameBuffer);
|
|
641
|
-
dependentRenderer .getViewVolumes () .push (viewVolume .set (projectionMatrix,
|
|
651
|
+
dependentRenderer .getViewVolumes () .push (viewVolume .set (projectionMatrix, viewport, viewport));
|
|
642
652
|
dependentRenderer .getProjectionMatrix () .push (projectionMatrix);
|
|
643
653
|
|
|
644
654
|
gl .bindTexture (this .getTarget (), this .getTexture ());
|
|
@@ -647,8 +657,8 @@ Object .assign (Object .setPrototypeOf (GeneratedCubeMapTexture .prototype, Cube
|
|
|
647
657
|
|
|
648
658
|
for (let i = 0; i < 6; ++ i)
|
|
649
659
|
{
|
|
650
|
-
gl .viewport (...
|
|
651
|
-
gl .scissor (...
|
|
660
|
+
gl .viewport (... viewport);
|
|
661
|
+
gl .scissor (... viewport);
|
|
652
662
|
gl .clearColor (0, 0, 0, 0);
|
|
653
663
|
gl .clear (gl .COLOR_BUFFER_BIT); // Always clear, X3DBackground could be transparent!
|
|
654
664
|
|
|
@@ -708,8 +718,11 @@ Object .assign (Object .setPrototypeOf (GeneratedCubeMapTexture .prototype, Cube
|
|
|
708
718
|
{
|
|
709
719
|
CubeMapTexturing_X3DEnvironmentTextureNode .prototype .setShaderUniforms .call (this, gl, channel);
|
|
710
720
|
|
|
711
|
-
if (this .textureRenderingPass)
|
|
712
|
-
|
|
721
|
+
if (!this .textureRenderingPass)
|
|
722
|
+
return;
|
|
723
|
+
|
|
724
|
+
// Hide object by making scissor zero size.
|
|
725
|
+
gl .scissor (0, 0, 0, 0);
|
|
713
726
|
},
|
|
714
727
|
});
|
|
715
728
|
|
|
@@ -736,6 +749,9 @@ const GeneratedCubeMapTexture_default_ = GeneratedCubeMapTexture;
|
|
|
736
749
|
;// external "__X_ITE_X3D__ .X3DUrlObject"
|
|
737
750
|
const external_X_ITE_X3D_X3DUrlObject_namespaceObject = __X_ITE_X3D__ .X3DUrlObject;
|
|
738
751
|
var external_X_ITE_X3D_X3DUrlObject_default = /*#__PURE__*/__webpack_require__.n(external_X_ITE_X3D_X3DUrlObject_namespaceObject);
|
|
752
|
+
;// external "__X_ITE_X3D__ .FileLoader"
|
|
753
|
+
const external_X_ITE_X3D_FileLoader_namespaceObject = __X_ITE_X3D__ .FileLoader;
|
|
754
|
+
var external_X_ITE_X3D_FileLoader_default = /*#__PURE__*/__webpack_require__.n(external_X_ITE_X3D_FileLoader_namespaceObject);
|
|
739
755
|
;// external "__X_ITE_X3D__ .Vector2"
|
|
740
756
|
const external_X_ITE_X3D_Vector2_namespaceObject = __X_ITE_X3D__ .Vector2;
|
|
741
757
|
var external_X_ITE_X3D_Vector2_default = /*#__PURE__*/__webpack_require__.n(external_X_ITE_X3D_Vector2_namespaceObject);
|
|
@@ -754,6 +770,7 @@ var external_X_ITE_X3D_DEVELOPMENT_default = /*#__PURE__*/__webpack_require__.n(
|
|
|
754
770
|
|
|
755
771
|
|
|
756
772
|
|
|
773
|
+
|
|
757
774
|
function ImageCubeMapTexture (executionContext)
|
|
758
775
|
{
|
|
759
776
|
CubeMapTexturing_X3DEnvironmentTextureNode .call (this, executionContext);
|
|
@@ -805,38 +822,48 @@ Object .assign (Object .setPrototypeOf (ImageCubeMapTexture .prototype, CubeMapT
|
|
|
805
822
|
return;
|
|
806
823
|
}
|
|
807
824
|
|
|
808
|
-
|
|
825
|
+
new (external_X_ITE_X3D_FileLoader_default()) (this, { dataAsString: false }) .loadDocument ([this .urlStack .shift ()], (data, fileURL) =>
|
|
826
|
+
{
|
|
827
|
+
if (data === null)
|
|
828
|
+
{
|
|
829
|
+
this .loadNext ();
|
|
830
|
+
}
|
|
831
|
+
else if (data instanceof ArrayBuffer)
|
|
832
|
+
{
|
|
833
|
+
this .fileURL = new URL (fileURL);
|
|
809
834
|
|
|
810
|
-
|
|
835
|
+
if (this .fileURL .pathname .match (/\.ktx2?(?:\.gz)?$/) || this .fileURL .href .match (/^\s*data:image\/ktx2[;,]/s))
|
|
836
|
+
{
|
|
837
|
+
this .setLinear (true);
|
|
838
|
+
this .setMipMaps (false);
|
|
811
839
|
|
|
812
|
-
|
|
813
|
-
|
|
814
|
-
|
|
815
|
-
|
|
840
|
+
this .getBrowser () .getKTXDecoder ()
|
|
841
|
+
.then (decoder => decoder .loadKTXFromBuffer (data))
|
|
842
|
+
.then (texture => this .setKTXTexture (texture))
|
|
843
|
+
.catch (error => this .setError ({ type: error .message }));
|
|
844
|
+
}
|
|
845
|
+
else
|
|
846
|
+
{
|
|
847
|
+
this .setLinear (false);
|
|
848
|
+
this .setMipMaps (true);
|
|
816
849
|
|
|
817
|
-
|
|
818
|
-
.then (decoder => decoder .loadKTXFromURL (this .URL, this .getCache ()))
|
|
819
|
-
.then (texture => this .setKTXTexture (texture))
|
|
820
|
-
.catch (error => this .setError ({ type: error .message }));
|
|
821
|
-
}
|
|
822
|
-
else
|
|
823
|
-
{
|
|
824
|
-
this .setLinear (false);
|
|
825
|
-
this .setMipMaps (true);
|
|
850
|
+
this .objectURL = URL .createObjectURL (new Blob ([data]));
|
|
826
851
|
|
|
827
|
-
|
|
852
|
+
this .image .attr ("src", this .objectURL);
|
|
853
|
+
}
|
|
854
|
+
}
|
|
855
|
+
else
|
|
828
856
|
{
|
|
829
|
-
|
|
830
|
-
this .URL .searchParams .set ("_", Date .now ());
|
|
857
|
+
throw new Error ("ImageTexture: no suitable file type handler found.");
|
|
831
858
|
}
|
|
832
|
-
|
|
833
|
-
this .image .attr ("src", this .URL);
|
|
834
|
-
}
|
|
859
|
+
});
|
|
835
860
|
},
|
|
836
861
|
setError (event)
|
|
837
862
|
{
|
|
838
|
-
if (this .
|
|
839
|
-
console .warn (`Error loading image '${decodeURI (this .
|
|
863
|
+
if (this .fileURL .protocol !== "data:")
|
|
864
|
+
console .warn (`Error loading image '${decodeURI (this .fileURL)}':`, event .type);
|
|
865
|
+
|
|
866
|
+
URL .revokeObjectURL (this .objectURL);
|
|
840
867
|
|
|
841
868
|
this .loadNext ();
|
|
842
869
|
},
|
|
@@ -847,8 +874,8 @@ Object .assign (Object .setPrototypeOf (ImageCubeMapTexture .prototype, CubeMapT
|
|
|
847
874
|
|
|
848
875
|
if ((external_X_ITE_X3D_DEVELOPMENT_default()))
|
|
849
876
|
{
|
|
850
|
-
if (this .
|
|
851
|
-
console .info (`Done loading image cube map texture '${decodeURI (this .
|
|
877
|
+
if (this .fileURL .protocol !== "data:")
|
|
878
|
+
console .info (`Done loading image cube map texture '${decodeURI (this .fileURL)}'.`);
|
|
852
879
|
}
|
|
853
880
|
|
|
854
881
|
try
|
|
@@ -871,8 +898,8 @@ Object .assign (Object .setPrototypeOf (ImageCubeMapTexture .prototype, CubeMapT
|
|
|
871
898
|
{
|
|
872
899
|
if ((external_X_ITE_X3D_DEVELOPMENT_default()))
|
|
873
900
|
{
|
|
874
|
-
if (this .
|
|
875
|
-
console .info (`Done loading image cube map texture '${decodeURI (this .
|
|
901
|
+
if (this .fileURL .protocol !== "data:")
|
|
902
|
+
console .info (`Done loading image cube map texture '${decodeURI (this .fileURL)}'.`);
|
|
876
903
|
}
|
|
877
904
|
|
|
878
905
|
try
|
|
@@ -902,6 +929,10 @@ Object .assign (Object .setPrototypeOf (ImageCubeMapTexture .prototype, CubeMapT
|
|
|
902
929
|
// Catch security error from cross origin requests.
|
|
903
930
|
this .setError ({ type: error .message });
|
|
904
931
|
}
|
|
932
|
+
finally
|
|
933
|
+
{
|
|
934
|
+
URL .revokeObjectURL (this .objectURL);
|
|
935
|
+
}
|
|
905
936
|
},
|
|
906
937
|
imageToCubeMap (texture, width, height)
|
|
907
938
|
{
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
/* X_ITE v15.1.
|
|
2
|
-
const e=window[Symbol.for("X_ITE.X3D")];(()=>{var t={254(t){t.exports=e.jquery}},r={};function i(e){var s=r[e];if(void 0!==s)return s.exports;var a=r[e]={exports:{}};return t[e](a,a.exports,i),a.exports}i.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return i.d(t,{a:t}),t},i.d=(e,t)=>{for(var r in t)i.o(t,r)&&!i.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);const s=e.Components;var a=i.n(s);const n=e.Namespace;var o=i.n(n);const u=o().add("Panorama2.fs","#version 300 es\nprecision highp float;precision highp int;precision highp sampler2D;const float M_PI=3.1415926535897932384626433832795;in vec2 texCoord;out vec4 x3d_FragColor;uniform sampler2D x3d_PanoramaTextureEXT;uniform int x3d_CurrentFaceEXT;vec3 uvToXYZ(const in int face,const in vec2 uv){switch(face){case 0:return vec3(1.,uv.y,uv.x);case 1:return vec3(-1.,uv.y,-uv.x);case 2:return vec3(uv.x,uv.y,-1.);case 3:return vec3(-uv.x,uv.y,1.);case 4:return vec3(uv.y,-1.,uv.x);default:return vec3(-uv.y,1.,uv.x);}}vec2 dirToUV(const in vec3 dir){return vec2(.5+.5*atan(dir.z,dir.x)/M_PI,1.-acos(dir.y)/M_PI);}vec3 panoramaToCubeMap(const in int face,const in vec2 texCoord){vec3 scan=uvToXYZ(face,texCoord);vec3 direction=normalize(scan);vec2 src=dirToUV(direction);return texture(x3d_PanoramaTextureEXT,src).rgb;}void main(){x3d_FragColor=vec4(panoramaToCubeMap(x3d_CurrentFaceEXT,texCoord),1.);}"),h=Symbol();function T(){}Object.assign(T.prototype,{getPanoramaShader(){return this[h]??=this.createShader({name:"Panorama",vertexShader:"FullScreen",fragmentShader:`data:x-shader/x-fragment,${u}`,uniforms:["x3d_PanoramaTextureEXT","x3d_CurrentFaceEXT"]})}});const d=T,p=o().add("X3DCubeMapTexturingContext",d),x=e.Fields;var c=i.n(x);const g=e.X3DFieldDefinition;var l=i.n(g);const _=e.FieldDefinitionArray;var E=i.n(_);const m=e.X3DNode;var f=i.n(m);const w=e.X3DSingleTextureNode;var R=i.n(w);const b=e.X3DConstants;var S=i.n(b);function v(e){R().call(this,e),this.addType(S().X3DEnvironmentTextureNode);const t=this.getBrowser().getContext();this.target=t.TEXTURE_CUBE_MAP,this.targets=[t.TEXTURE_CUBE_MAP_POSITIVE_Z,t.TEXTURE_CUBE_MAP_NEGATIVE_Z,t.TEXTURE_CUBE_MAP_NEGATIVE_X,t.TEXTURE_CUBE_MAP_POSITIVE_X,t.TEXTURE_CUBE_MAP_POSITIVE_Y,t.TEXTURE_CUBE_MAP_NEGATIVE_Y],this.size=1,this.levels=0}Object.assign(Object.setPrototypeOf(v.prototype,R().prototype),{getTarget(){return this.target},getTextureType:()=>4,getTargets(){return this.targets},getSize(){return this.size},setSize(e){this.size=e,this.levels=Math.floor(Math.log2(Math.max(e,1)))},getLevels(){return this.levels},clearTexture:(()=>{const e=new Uint8Array([255,255,255,255]);return function(){const t=this.getBrowser().getContext();t.bindTexture(this.getTarget(),this.getTexture());for(const r of this.getTargets())t.texImage2D(r,0,t.RGBA,1,1,0,t.RGBA,t.UNSIGNED_BYTE,e);this.setSize(1),this.setTransparent(!1),this.updateTextureParameters()}})(),updateTextureParameters(){R().prototype.updateTextureParameters.call(this,this.target,this._textureProperties.getValue(),this.texturePropertiesNode,this.size,this.size,!1,!1,!1)},setShaderUniforms(e,t){const r=this.getBrowser().popTextureUnit();e.activeTexture(e.TEXTURE0+r),e.bindTexture(e.TEXTURE_CUBE_MAP,this.getTexture()),e.uniform1i(t.textureCube,r)}}),Object.defineProperties(v,f().getStaticProperties("X3DEnvironmentTextureNode","CubeMapTexturing",1));const M=v,C=o().add("X3DEnvironmentTextureNode",M),U=e.X3DCast;var A=i.n(U);const I=e.BitSet;var P=i.n(I);function X(e){C.call(this,e),this.addType(S().ComposedCubeMapTexture),this.addChildObjects(S().outputOnly,"update",new(c().SFTime)),e.getSpecificationVersion()<=3.3&&(this.addAlias("front",this._frontTexture),this.addAlias("back",this._backTexture),this.addAlias("left",this._leftTexture),this.addAlias("right",this._rightTexture),this.addAlias("top",this._topTexture),this.addAlias("bottom",this._bottomTexture)),this.textureNodes=[null,null,null,null,null,null],this.textureBits=new(P())}Object.assign(Object.setPrototypeOf(X.prototype,C.prototype),{initialize(){C.prototype.initialize.call(this);const e=this.getBrowser().getContext();this.frameBuffer=e.createFramebuffer(),this.clearTexture(),this._frontTexture.addInterest("set_texture__",this,0),this._backTexture.addInterest("set_texture__",this,1),this._leftTexture.addInterest("set_texture__",this,2),this._rightTexture.addInterest("set_texture__",this,3),this._topTexture.addInterest("set_texture__",this,5),this._bottomTexture.addInterest("set_texture__",this,4),this._update.addInterest("update",this),this.set_texture__(0,this._frontTexture),this.set_texture__(1,this._backTexture),this.set_texture__(2,this._leftTexture),this.set_texture__(3,this._rightTexture),this.set_texture__(4,this._topTexture),this.set_texture__(5,this._bottomTexture)},set_texture__(e,t){let r=this.textureNodes[e];r?.removeInterest("set_loadState__",this),r=this.textureNodes[e]=A()(S().X3DTexture2DNode,t),r?.addInterest("set_loadState__",this,e,r),this.set_loadState__(e,r)},set_loadState__(e,t){this.setTextureBit(e,t?.checkLoadState()),this._update.addEvent()},setTextureBit(e,t){this.textureBits.set(e,t===S().COMPLETE_STATE)},isComplete(){if(63!==+this.textureBits)return!1;const e=this.textureNodes,t=e[0].getWidth();for(const r of e){if(r.getWidth()!==t)return!1;if(r.getHeight()!==t)return!1}return!0},update(){if(this.isComplete()){const e=this.getBrowser().getContext(),t=this.textureNodes,r=t[0].getWidth();if(r!==this.getSize()){const t=new Uint8Array(r*r*4);e.bindTexture(this.getTarget(),this.getTexture());for(let i=0;i<6;++i)e.texImage2D(this.getTargets()[i],0,e.RGBA,r,r,0,e.RGBA,e.UNSIGNED_BYTE,t);this.setSize(r),this.updateTextureParameters()}e.bindFramebuffer(e.FRAMEBUFFER,this.frameBuffer);for(let i=0;i<6;++i){const s=t[i];if(e.bindTexture(e.TEXTURE_2D,s.getTexture()),e.framebufferTexture2D(e.FRAMEBUFFER,e.COLOR_ATTACHMENT0,e.TEXTURE_2D,s.getTexture(),0),e.bindTexture(this.getTarget(),this.getTexture()),1===s.getTextureType())e.copyTexSubImage2D(this.getTargets()[i],0,0,0,0,0,r,r);else for(let t=0;t<r;++t)e.copyTexSubImage2D(this.getTargets()[i],0,0,r-t-1,0,t,r,1)}this.setTransparent(t.some(e=>e.isTransparent())),this.setLinear(t.some(e=>e.isLinear())),this.setMipMaps(t.every(e=>e.canMipMaps())),this.updateTextureParameters(),this.addNodeEvent()}else this.clearTexture(),this.addNodeEvent()}}),Object.defineProperties(X,{...f().getStaticProperties("ComposedCubeMapTexture","CubeMapTexturing",1,"texture","3.1"),fieldDefinitions:{value:new(E())([new(l())(S().inputOutput,"metadata",new(c().SFNode)),new(l())(S().inputOutput,"description",new(c().SFString)),new(l())(S().inputOutput,"frontTexture",new(c().SFNode)),new(l())(S().inputOutput,"backTexture",new(c().SFNode)),new(l())(S().inputOutput,"leftTexture",new(c().SFNode)),new(l())(S().inputOutput,"rightTexture",new(c().SFNode)),new(l())(S().inputOutput,"topTexture",new(c().SFNode)),new(l())(S().inputOutput,"bottomTexture",new(c().SFNode)),new(l())(S().initializeOnly,"textureProperties",new(c().SFNode))]),enumerable:!0}});const N=X,F=o().add("ComposedCubeMapTexture",N),y=e.DependentRenderer;var D=i.n(y);const B=e.TextureBuffer;var O=i.n(B);const L=e.TraverseType;var V=i.n(L);const G=e.Camera;var z=i.n(G);const j=e.ViewVolume;var k=i.n(j);const Y=e.Rotation4;var Z=i.n(Y);const W=e.Vector3;var H=i.n(W);const K=e.Vector4;var $=i.n(K);const q=e.Matrix4;var J=i.n(q);const Q=e.Algorithm;var ee=i.n(Q);function te(e){C.call(this,e),this.addType(S().GeneratedCubeMapTexture),this.dependentRenderers=new WeakMap,this.projectionMatrix=new(J()),this.modelMatrix=new(J()),this.updateCallbacks=new Map}Object.assign(Object.setPrototypeOf(te.prototype,C.prototype),{initialize(){C.prototype.initialize.call(this),this.clearTexture(),this._size.addInterest("set_size__",this),this.set_size__()},isRenderedTexture:()=>!0,addUpdateCallback(e,t){this.updateCallbacks.set(e,t)},removeUpdateCallback(e){this.updateCallbacks.delete(e)},set_size__(){const e=this.getBrowser(),t=e.getContext(),r=this._size.getValue();if(r>0){const i=new Uint8Array(r*r*4);t.bindTexture(this.getTarget(),this.getTexture());for(const e of this.getTargets())t.texImage2D(e,0,t.RGBA,r,r,0,t.RGBA,t.UNSIGNED_BYTE,i);this.updateTextureParameters(),this.viewport=new($())(0,0,r,r),this.frameBuffer=new(O())({browser:e,width:r,height:r}),this.setSize(r)}else this.frameBuffer=null,this.setSize(0)},traverse(e,t){t.isIndependent()&&this.frameBuffer&&"NONE"!==this._update.getValue()&&(t.getRenderedTextures().add(this),this.modelMatrix.assign(t.getModelViewMatrix().get()).multRight(t.getCameraSpaceMatrix().get()))},renderTexture:(()=>{const e=[new(Z())(H().Z_AXIS,H().NEGATIVE_Z_AXIS),new(Z())(H().Z_AXIS,H().Z_AXIS),new(Z())(H().Z_AXIS,H().X_AXIS),new(Z())(H().Z_AXIS,H().NEGATIVE_X_AXIS),new(Z())(H().Z_AXIS,H().NEGATIVE_Y_AXIS),new(Z())(H().Z_AXIS,H().Y_AXIS)],t=[new(H())(-1,-1,1),new(H())(-1,-1,1),new(H())(-1,-1,1),new(H())(-1,-1,1),new(H())(1,1,1),new(H())(1,1,1)],r=new(J()),i=new(k());return function(s){this.textureRenderingPass=!0,this.dependentRenderers.has(s)||this.dependentRenderers.set(s,new(D())(this.getExecutionContext(),s));const a=this.dependentRenderers.get(s),n=this.getBrowser(),o=s.getLayer(),u=n.getContext(),h=a.getBackground(),T=a.getNavigationInfo(),d=a.getViewpoint(),p=n.getHeadlight(),x=T._headlight.getValue(),c=d.getNearDistance(T),g=d.getFarDistance(T),l=z().perspective(ee().radians(90),c,g,1,1,this.projectionMatrix),_=this.frameBuffer.getWidth(),E=this.frameBuffer.getHeight();this.setTransparent(h.isTransparent()),a.setFramebuffer(this.frameBuffer),a.getViewVolumes().push(i.set(l,this.viewport,this.viewport)),a.getProjectionMatrix().push(l),u.bindTexture(this.getTarget(),this.getTexture()),this.frameBuffer.bind();for(let i=0;i<6;++i)u.viewport(...this.viewport),u.scissor(...this.viewport),u.clearColor(0,0,0,0),u.clear(u.COLOR_BUFFER_BIT),a.getCameraSpaceMatrix().push(this.modelMatrix),a.getCameraSpaceMatrix().rotate(e[i]),a.getCameraSpaceMatrix().scale(t[i]),r.assign(a.getCameraSpaceMatrix().get()).inverse(),a.getViewMatrix().push(r),a.getModelViewMatrix().push(r),x&&(p.modelViewMatrix.push(r),p.modelViewMatrix.multLeft(d.getCameraSpaceMatrix())),o.traverse(V().DISPLAY,a),x&&p.modelViewMatrix.pop(),a.getModelViewMatrix().pop(),a.getCameraSpaceMatrix().pop(),a.getViewMatrix().pop(),u.bindTexture(this.getTarget(),this.getTexture()),u.copyTexSubImage2D(this.getTargets()[i],0,0,0,0,0,_,E);this.updateTextureParameters(),a.getProjectionMatrix().pop(),a.getViewVolumes().pop(),this._update.equals("NEXT_FRAME_ONLY")&&(this._update="NONE");for(const e of this.updateCallbacks.values())e();this.textureRenderingPass=!1}})(),setShaderUniforms(e,t){C.prototype.setShaderUniforms.call(this,e,t),this.textureRenderingPass&&e.viewport(0,0,0,0)}}),Object.defineProperties(te,{...f().getStaticProperties("GeneratedCubeMapTexture","CubeMapTexturing",3,"texture","3.0"),fieldDefinitions:{value:new(E())([new(l())(S().inputOutput,"metadata",new(c().SFNode)),new(l())(S().inputOutput,"description",new(c().SFString)),new(l())(S().inputOutput,"update",new(c().SFString)("NONE")),new(l())(S().initializeOnly,"size",new(c().SFInt32)(128)),new(l())(S().initializeOnly,"textureProperties",new(c().SFNode))]),enumerable:!0}});const re=te,ie=o().add("GeneratedCubeMapTexture",re),se=e.X3DUrlObject;var ae=i.n(se);const ne=e.Vector2;var oe=i.n(ne);const ue=e.DEVELOPMENT;var he=i.n(ue),Te=i(254);function de(e){C.call(this,e),ae().call(this,e),this.addType(S().ImageCubeMapTexture),this.image=Te("<img></img>"),this.urlStack=new(c().MFString)}Object.assign(Object.setPrototypeOf(de.prototype,C.prototype),ae().prototype,{initialize(){C.prototype.initialize.call(this),ae().prototype.initialize.call(this),this.clearTexture(),this.image.on("load",this.setImage.bind(this)).on("abort error",this.setError.bind(this)).attr("crossorigin","anonymous"),this.requestImmediateLoad().catch(Function.prototype)},unloadData(){this.clearTexture()},loadData(){this.urlStack.setValue(this._url),this.loadNext()},loadNext(){if(0===this.urlStack.length)return this.clearTexture(),this.setLoadState(S().FAILED_STATE),void this.addNodeEvent();this.URL=new URL(this.urlStack.shift(),this.getExecutionContext().getBaseURL()),this.URL.pathname.match(/\.ktx2?(?:\.gz)?$/)||this.URL.href.match(/^data:image\/ktx2[;,]/)?(this.setLinear(!0),this.setMipMaps(!1),this.getBrowser().getKTXDecoder().then(e=>e.loadKTXFromURL(this.URL,this.getCache())).then(e=>this.setKTXTexture(e)).catch(e=>this.setError({type:e.message}))):(this.setLinear(!1),this.setMipMaps(!0),"data:"!==this.URL.protocol&&(this.getCache()||this.URL.searchParams.set("_",Date.now())),this.image.attr("src",this.URL))},setError(e){"data:"!==this.URL.protocol&&console.warn(`Error loading image '${decodeURI(this.URL)}':`,e.type),this.loadNext()},setKTXTexture(e){if(e.target!==this.getTarget())return this.setError({type:"Invalid KTX texture target, must be 'TEXTURE_CUBE_MAP'."});he()&&"data:"!==this.URL.protocol&&console.info(`Done loading image cube map texture '${decodeURI(this.URL)}'.`);try{this.setTexture(e),this.setTransparent(!1),this.setSize(e.baseWidth),this.updateTextureParameters(),this.setLoadState(S().COMPLETE_STATE),this.addNodeEvent()}catch(e){this.setError({type:e.message})}},setImage(){he()&&"data:"!==this.URL.protocol&&console.info(`Done loading image cube map texture '${decodeURI(this.URL)}'.`);try{const e=this.getBrowser().getContext(),t=e.createTexture();e.bindTexture(e.TEXTURE_2D,t),e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,this.image[0]),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE),this.imageToCubeMap(t,this.image.prop("width"),this.image.prop("height"),!1),this.setLoadState(S().COMPLETE_STATE),this.addNodeEvent()}catch(e){this.setError({type:e.message})}},imageToCubeMap(e,t,r){const i=t/r;Math.abs(i-4/3)<.01&&this.skyBoxToCubeMap(e,t,r),Math.abs(i-2)<.01&&this.panoramaToCubeMap(e,t,r),this.updateTextureParameters()},skyBoxToCubeMap:(()=>{const e=[new(oe())(1,1),new(oe())(3,1),new(oe())(0,1),new(oe())(2,1),new(oe())(1,0),new(oe())(1,2)];return function(t,r,i){const s=this.getBrowser().getContext(),a=s.createFramebuffer(),n=Math.floor(r/4),o=Math.floor(i/3),u=new Uint8Array(n*o*4);s.bindTexture(this.getTarget(),this.getTexture());for(let e=0;e<6;++e)s.texImage2D(this.getTargets()[e],0,s.RGBA,n,o,0,s.RGBA,s.UNSIGNED_BYTE,null);s.bindFramebuffer(s.FRAMEBUFFER,a),s.framebufferTexture2D(s.FRAMEBUFFER,s.COLOR_ATTACHMENT0,s.TEXTURE_2D,t,0);let h=!1;s.bindTexture(this.getTarget(),this.getTexture());for(let t=0;t<6;++t)s.copyTexSubImage2D(this.getTargets()[t],0,0,0,e[t].x*n,e[t].y*o,n,o),h||(s.readPixels(e[t].x*n,e[t].y*o,n,o,s.RGBA,s.UNSIGNED_BYTE,u),h=this.isImageTransparent(u));s.deleteFramebuffer(a),s.deleteTexture(t),this.setTransparent(h),this.setSize(n)}})(),panoramaToCubeMap(e,t,r){const i=this.getBrowser(),s=i.getContext(),a=i.getPanoramaShader(),n=s.createFramebuffer(),o=Math.floor(r/2),u=new Uint8Array(o*o*4);s.bindTexture(s.TEXTURE_2D,e),s.texParameteri(s.TEXTURE_2D,s.TEXTURE_WRAP_S,s.MIRRORED_REPEAT),s.texParameteri(s.TEXTURE_2D,s.TEXTURE_WRAP_T,s.MIRRORED_REPEAT),s.texParameteri(s.TEXTURE_2D,s.TEXTURE_MIN_FILTER,s.LINEAR),s.texParameteri(s.TEXTURE_2D,s.TEXTURE_MAG_FILTER,s.LINEAR),s.bindTexture(this.getTarget(),this.getTexture());for(let e=0;e<6;++e)s.texImage2D(this.getTargets()[e],0,s.RGBA,o,o,0,s.RGBA,s.UNSIGNED_BYTE,null);s.useProgram(a.getProgram()),s.activeTexture(s.TEXTURE0),s.bindTexture(s.TEXTURE_2D,e),s.uniform1i(a.x3d_PanoramaTextureEXT,0),s.bindFramebuffer(s.FRAMEBUFFER,n),s.viewport(0,0,o,o),s.scissor(0,0,o,o),s.disable(s.DEPTH_TEST),s.enable(s.CULL_FACE),s.frontFace(s.CCW),s.clearColor(0,0,0,0),s.bindVertexArray(i.getFullscreenVertexArrayObject());let h=!1;for(let e=0;e<6;++e)s.framebufferTexture2D(s.FRAMEBUFFER,s.COLOR_ATTACHMENT0,this.getTargets()[e],this.getTexture(),0),s.clear(s.COLOR_BUFFER_BIT),s.uniform1i(a.x3d_CurrentFaceEXT,e),s.drawArrays(s.TRIANGLES,0,6),h||(s.readPixels(0,0,o,o,s.RGBA,s.UNSIGNED_BYTE,u),h=this.isImageTransparent(u));s.enable(s.DEPTH_TEST),s.deleteFramebuffer(n),s.deleteTexture(e),this.setTransparent(h),this.setSize(o)},dispose(){ae().prototype.dispose.call(this),C.prototype.dispose.call(this)}}),Object.defineProperties(de,{...f().getStaticProperties("ImageCubeMapTexture","CubeMapTexturing",2,"texture","3.0"),fieldDefinitions:{value:new(E())([new(l())(S().inputOutput,"metadata",new(c().SFNode)),new(l())(S().inputOutput,"description",new(c().SFString)),new(l())(S().inputOutput,"load",new(c().SFBool)(!0)),new(l())(S().inputOutput,"url",new(c().MFString)),new(l())(S().inputOutput,"autoRefresh",new(c().SFTime)(0)),new(l())(S().inputOutput,"autoRefreshTimeLimit",new(c().SFTime)(3600)),new(l())(S().initializeOnly,"textureProperties",new(c().SFNode))]),enumerable:!0}});const pe=de,xe=o().add("ImageCubeMapTexture",pe);a().add({name:"CubeMapTexturing",concreteNodes:[F,ie,xe],abstractNodes:[C],browserContext:p});o().add("CubeMapTexturingComponent",void 0)})();
|
|
1
|
+
/* X_ITE v15.1.3 */
|
|
2
|
+
const e=window[Symbol.for("X_ITE.X3D")];(()=>{var t={254(t){t.exports=e.jquery}},r={};function i(e){var s=r[e];if(void 0!==s)return s.exports;var a=r[e]={exports:{}};return t[e](a,a.exports,i),a.exports}i.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return i.d(t,{a:t}),t},i.d=(e,t)=>{for(var r in t)i.o(t,r)&&!i.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);const s=e.Components;var a=i.n(s);const n=e.Namespace;var o=i.n(n);const u=o().add("Panorama2.fs","#version 300 es\nprecision highp float;precision highp int;precision highp sampler2D;const float M_PI=3.1415926535897932384626433832795;in vec2 texCoord;out vec4 x3d_FragColor;uniform sampler2D x3d_PanoramaTextureEXT;uniform int x3d_CurrentFaceEXT;vec3 uvToXYZ(const in int face,const in vec2 uv){switch(face){case 0:return vec3(1.,uv.y,uv.x);case 1:return vec3(-1.,uv.y,-uv.x);case 2:return vec3(uv.x,uv.y,-1.);case 3:return vec3(-uv.x,uv.y,1.);case 4:return vec3(uv.y,-1.,uv.x);default:return vec3(-uv.y,1.,uv.x);}}vec2 dirToUV(const in vec3 dir){return vec2(.5+.5*atan(dir.z,dir.x)/M_PI,1.-acos(dir.y)/M_PI);}vec3 panoramaToCubeMap(const in int face,const in vec2 texCoord){vec3 scan=uvToXYZ(face,texCoord);vec3 direction=normalize(scan);vec2 src=dirToUV(direction);return texture(x3d_PanoramaTextureEXT,src).rgb;}void main(){x3d_FragColor=vec4(panoramaToCubeMap(x3d_CurrentFaceEXT,texCoord),1.);}"),h=Symbol();function d(){}Object.assign(d.prototype,{getPanoramaShader(){return this[h]??=this.createShader({name:"Panorama",vertexShader:"FullScreen",fragmentShader:`data:x-shader/x-fragment,${u}`,uniforms:["x3d_PanoramaTextureEXT","x3d_CurrentFaceEXT"]})}});const T=d,p=o().add("X3DCubeMapTexturingContext",T),c=e.Fields;var x=i.n(c);const l=e.X3DFieldDefinition;var g=i.n(l);const _=e.FieldDefinitionArray;var E=i.n(_);const f=e.X3DNode;var m=i.n(f);const R=e.X3DSingleTextureNode;var b=i.n(R);const w=e.X3DConstants;var S=i.n(w);function M(e){b().call(this,e),this.addType(S().X3DEnvironmentTextureNode);const t=this.getBrowser().getContext();this.target=t.TEXTURE_CUBE_MAP,this.targets=[t.TEXTURE_CUBE_MAP_POSITIVE_Z,t.TEXTURE_CUBE_MAP_NEGATIVE_Z,t.TEXTURE_CUBE_MAP_NEGATIVE_X,t.TEXTURE_CUBE_MAP_POSITIVE_X,t.TEXTURE_CUBE_MAP_POSITIVE_Y,t.TEXTURE_CUBE_MAP_NEGATIVE_Y],this.size=1,this.levels=0}Object.assign(Object.setPrototypeOf(M.prototype,b().prototype),{getTarget(){return this.target},getTextureType:()=>4,getTargets(){return this.targets},getSize(){return this.size},setSize(e){this.size=e,this.levels=Math.floor(Math.log2(Math.max(e,1)))},getLevels(){return this.levels},clearTexture:(()=>{const e=new Uint8Array([255,255,255,255]);return function(){const t=this.getBrowser().getContext();t.bindTexture(this.getTarget(),this.getTexture());for(const r of this.getTargets())t.texImage2D(r,0,t.RGBA,1,1,0,t.RGBA,t.UNSIGNED_BYTE,e);this.setSize(1),this.setTransparent(!1),this.updateTextureParameters()}})(),updateTextureParameters(){b().prototype.updateTextureParameters.call(this,this.target,this._textureProperties.getValue(),this.texturePropertiesNode,this.size,this.size,!1,!1,!1)},setShaderUniforms(e,t){const r=this.getBrowser().popTextureUnit();e.activeTexture(e.TEXTURE0+r),e.bindTexture(e.TEXTURE_CUBE_MAP,this.getTexture()),e.uniform1i(t.textureCube,r)}}),Object.defineProperties(M,m().getStaticProperties("X3DEnvironmentTextureNode","CubeMapTexturing",1));const v=M,C=o().add("X3DEnvironmentTextureNode",v),U=e.X3DCast;var A=i.n(U);const I=e.BitSet;var P=i.n(I);function N(e){C.call(this,e),this.addType(S().ComposedCubeMapTexture),this.addChildObjects(S().outputOnly,"update",new(x().SFTime)),e.getSpecificationVersion()<=3.3&&(this.addAlias("front",this._frontTexture),this.addAlias("back",this._backTexture),this.addAlias("left",this._leftTexture),this.addAlias("right",this._rightTexture),this.addAlias("top",this._topTexture),this.addAlias("bottom",this._bottomTexture)),this.textureNodes=[null,null,null,null,null,null],this.textureBits=new(P())}Object.assign(Object.setPrototypeOf(N.prototype,C.prototype),{initialize(){C.prototype.initialize.call(this);const e=this.getBrowser().getContext();this.frameBuffer=e.createFramebuffer(),this.clearTexture(),this._frontTexture.addInterest("set_texture__",this,0),this._backTexture.addInterest("set_texture__",this,1),this._leftTexture.addInterest("set_texture__",this,2),this._rightTexture.addInterest("set_texture__",this,3),this._topTexture.addInterest("set_texture__",this,5),this._bottomTexture.addInterest("set_texture__",this,4),this._update.addInterest("update",this),this.set_texture__(0,this._frontTexture),this.set_texture__(1,this._backTexture),this.set_texture__(2,this._leftTexture),this.set_texture__(3,this._rightTexture),this.set_texture__(4,this._topTexture),this.set_texture__(5,this._bottomTexture)},set_texture__(e,t){let r=this.textureNodes[e];r?.removeInterest("set_loadState__",this),r=this.textureNodes[e]=A()(S().X3DTexture2DNode,t),r?.addInterest("set_loadState__",this,e,r),this.set_loadState__(e,r)},set_loadState__(e,t){this.setTextureBit(e,t?.checkLoadState()),this._update.addEvent()},setTextureBit(e,t){this.textureBits.set(e,t===S().COMPLETE_STATE)},isComplete(){if(63!==+this.textureBits)return!1;const e=this.textureNodes,t=e[0].getWidth();for(const r of e){if(r.getWidth()!==t)return!1;if(r.getHeight()!==t)return!1}return!0},update(){if(this.isComplete()){const e=this.getBrowser().getContext(),t=this.textureNodes,r=t[0].getWidth();if(r!==this.getSize()){const t=new Uint8Array(r*r*4);e.bindTexture(this.getTarget(),this.getTexture());for(let i=0;i<6;++i)e.texImage2D(this.getTargets()[i],0,e.RGBA,r,r,0,e.RGBA,e.UNSIGNED_BYTE,t);this.setSize(r),this.updateTextureParameters()}e.bindFramebuffer(e.FRAMEBUFFER,this.frameBuffer);for(let i=0;i<6;++i){const s=t[i];if(e.bindTexture(e.TEXTURE_2D,s.getTexture()),e.framebufferTexture2D(e.FRAMEBUFFER,e.COLOR_ATTACHMENT0,e.TEXTURE_2D,s.getTexture(),0),e.bindTexture(this.getTarget(),this.getTexture()),1===s.getTextureType())e.copyTexSubImage2D(this.getTargets()[i],0,0,0,0,0,r,r);else for(let t=0;t<r;++t)e.copyTexSubImage2D(this.getTargets()[i],0,0,r-t-1,0,t,r,1)}this.setTransparent(t.some(e=>e.isTransparent())),this.setLinear(t.some(e=>e.isLinear())),this.setMipMaps(t.every(e=>e.canMipMaps())),this.updateTextureParameters(),this.addNodeEvent()}else this.clearTexture(),this.addNodeEvent()},getRenderedTextures(e){for(const t of this.textureNodes)t?.getRenderedTextures(e)}}),Object.defineProperties(N,{...m().getStaticProperties("ComposedCubeMapTexture","CubeMapTexturing",1,"texture","3.1"),fieldDefinitions:{value:new(E())([new(g())(S().inputOutput,"metadata",new(x().SFNode)),new(g())(S().inputOutput,"description",new(x().SFString)),new(g())(S().inputOutput,"frontTexture",new(x().SFNode)),new(g())(S().inputOutput,"backTexture",new(x().SFNode)),new(g())(S().inputOutput,"leftTexture",new(x().SFNode)),new(g())(S().inputOutput,"rightTexture",new(x().SFNode)),new(g())(S().inputOutput,"topTexture",new(x().SFNode)),new(g())(S().inputOutput,"bottomTexture",new(x().SFNode)),new(g())(S().initializeOnly,"textureProperties",new(x().SFNode))]),enumerable:!0}});const X=N,y=o().add("ComposedCubeMapTexture",X),F=e.DependentRenderer;var B=i.n(F);const D=e.TextureBuffer;var O=i.n(D);const L=e.TraverseType;var V=i.n(L);const G=e.Camera;var z=i.n(G);const j=e.ViewVolume;var k=i.n(j);const Y=e.Rotation4;var Z=i.n(Y);const W=e.Vector3;var H=i.n(W);const K=e.Vector4;var $=i.n(K);const q=e.Matrix4;var J=i.n(q);const Q=e.Algorithm;var ee=i.n(Q);function te(e){C.call(this,e),this.addType(S().GeneratedCubeMapTexture),this.dependentRenderers=new WeakMap,this.projectionMatrix=new(J()),this.modelMatrix=new(J()),this.updateCallbacks=new Map}Object.assign(Object.setPrototypeOf(te.prototype,C.prototype),{initialize(){C.prototype.initialize.call(this),this.clearTexture(),this._size.addInterest("set_size__",this),this.set_size__()},isRenderedTexture:()=>!0,getRenderedTextures(e){e.add(this)},addUpdateCallback(e,t){this.updateCallbacks.set(e,t)},removeUpdateCallback(e){this.updateCallbacks.delete(e)},set_size__(){const e=this.getBrowser(),t=e.getContext(),r=this._size.getValue();if(r>0){const i=new Uint8Array(r*r*4);t.bindTexture(this.getTarget(),this.getTexture());for(const e of this.getTargets())t.texImage2D(e,0,t.RGBA,r,r,0,t.RGBA,t.UNSIGNED_BYTE,i);this.updateTextureParameters(),this.viewport=new($())(0,0,r,r),this.frameBuffer=new(O())({browser:e,width:r,height:r}),this.setSize(r)}else this.frameBuffer=null,this.setSize(0)},traverse(e,t){t.isIndependent()&&this.frameBuffer&&"NONE"!==this._update.getValue()&&(t.getRenderedTextures().add(this),this.modelMatrix.assign(t.getModelViewMatrix().get()).multRight(t.getCameraSpaceMatrix().get()))},renderTexture:(()=>{const e=[Z().fromVectors(H().Z_AXIS,H().NEGATIVE_Z_AXIS),Z().fromVectors(H().Z_AXIS,H().Z_AXIS),Z().fromVectors(H().Z_AXIS,H().X_AXIS),Z().fromVectors(H().Z_AXIS,H().NEGATIVE_X_AXIS),Z().fromVectors(H().Z_AXIS,H().NEGATIVE_Y_AXIS),Z().fromVectors(H().Z_AXIS,H().Y_AXIS)],t=[new(H())(-1,-1,1),new(H())(-1,-1,1),new(H())(-1,-1,1),new(H())(-1,-1,1),new(H())(1,1,1),new(H())(1,1,1)],r=new(J()),i=new(k());return function(s){this.textureRenderingPass=!0,this.dependentRenderers.has(s)||this.dependentRenderers.set(s,new(B())(this.getExecutionContext(),s));const a=this.dependentRenderers.get(s),n=this.getBrowser(),o=n.getContext(),u=s.getLayer(),h=this.viewport,d=a.getBackground(),T=a.getNavigationInfo(),p=a.getViewpoint(),c=n.getHeadlight(),x=T._headlight.getValue(),l=p.getNearDistance(T),g=p.getFarDistance(T),_=z().perspective(ee().radians(90),l,g,1,1,this.projectionMatrix),E=this.frameBuffer.getWidth(),f=this.frameBuffer.getHeight();this.setTransparent(d.isTransparent()),a.setFramebuffer(this.frameBuffer),a.getViewVolumes().push(i.set(_,h,h)),a.getProjectionMatrix().push(_),o.bindTexture(this.getTarget(),this.getTexture()),this.frameBuffer.bind();for(let i=0;i<6;++i)o.viewport(...h),o.scissor(...h),o.clearColor(0,0,0,0),o.clear(o.COLOR_BUFFER_BIT),a.getCameraSpaceMatrix().push(this.modelMatrix),a.getCameraSpaceMatrix().rotate(e[i]),a.getCameraSpaceMatrix().scale(t[i]),r.assign(a.getCameraSpaceMatrix().get()).inverse(),a.getViewMatrix().push(r),a.getModelViewMatrix().push(r),x&&(c.modelViewMatrix.push(r),c.modelViewMatrix.multLeft(p.getCameraSpaceMatrix())),u.traverse(V().DISPLAY,a),x&&c.modelViewMatrix.pop(),a.getModelViewMatrix().pop(),a.getCameraSpaceMatrix().pop(),a.getViewMatrix().pop(),o.bindTexture(this.getTarget(),this.getTexture()),o.copyTexSubImage2D(this.getTargets()[i],0,0,0,0,0,E,f);this.updateTextureParameters(),a.getProjectionMatrix().pop(),a.getViewVolumes().pop(),this._update.equals("NEXT_FRAME_ONLY")&&(this._update="NONE");for(const e of this.updateCallbacks.values())e();this.textureRenderingPass=!1}})(),setShaderUniforms(e,t){C.prototype.setShaderUniforms.call(this,e,t),this.textureRenderingPass&&e.scissor(0,0,0,0)}}),Object.defineProperties(te,{...m().getStaticProperties("GeneratedCubeMapTexture","CubeMapTexturing",3,"texture","3.0"),fieldDefinitions:{value:new(E())([new(g())(S().inputOutput,"metadata",new(x().SFNode)),new(g())(S().inputOutput,"description",new(x().SFString)),new(g())(S().inputOutput,"update",new(x().SFString)("NONE")),new(g())(S().initializeOnly,"size",new(x().SFInt32)(128)),new(g())(S().initializeOnly,"textureProperties",new(x().SFNode))]),enumerable:!0}});const re=te,ie=o().add("GeneratedCubeMapTexture",re),se=e.X3DUrlObject;var ae=i.n(se);const ne=e.FileLoader;var oe=i.n(ne);const ue=e.Vector2;var he=i.n(ue);const de=e.DEVELOPMENT;var Te=i.n(de),pe=i(254);function ce(e){C.call(this,e),ae().call(this,e),this.addType(S().ImageCubeMapTexture),this.image=pe("<img></img>"),this.urlStack=new(x().MFString)}Object.assign(Object.setPrototypeOf(ce.prototype,C.prototype),ae().prototype,{initialize(){C.prototype.initialize.call(this),ae().prototype.initialize.call(this),this.clearTexture(),this.image.on("load",this.setImage.bind(this)).on("abort error",this.setError.bind(this)).attr("crossorigin","anonymous"),this.requestImmediateLoad().catch(Function.prototype)},unloadData(){this.clearTexture()},loadData(){this.urlStack.setValue(this._url),this.loadNext()},loadNext(){if(0===this.urlStack.length)return this.clearTexture(),this.setLoadState(S().FAILED_STATE),void this.addNodeEvent();new(oe())(this,{dataAsString:!1}).loadDocument([this.urlStack.shift()],(e,t)=>{if(null===e)this.loadNext();else{if(!(e instanceof ArrayBuffer))throw new Error("ImageTexture: no suitable file type handler found.");this.fileURL=new URL(t),this.fileURL.pathname.match(/\.ktx2?(?:\.gz)?$/)||this.fileURL.href.match(/^\s*data:image\/ktx2[;,]/s)?(this.setLinear(!0),this.setMipMaps(!1),this.getBrowser().getKTXDecoder().then(t=>t.loadKTXFromBuffer(e)).then(e=>this.setKTXTexture(e)).catch(e=>this.setError({type:e.message}))):(this.setLinear(!1),this.setMipMaps(!0),this.objectURL=URL.createObjectURL(new Blob([e])),this.image.attr("src",this.objectURL))}})},setError(e){"data:"!==this.fileURL.protocol&&console.warn(`Error loading image '${decodeURI(this.fileURL)}':`,e.type),URL.revokeObjectURL(this.objectURL),this.loadNext()},setKTXTexture(e){if(e.target!==this.getTarget())return this.setError({type:"Invalid KTX texture target, must be 'TEXTURE_CUBE_MAP'."});Te()&&"data:"!==this.fileURL.protocol&&console.info(`Done loading image cube map texture '${decodeURI(this.fileURL)}'.`);try{this.setTexture(e),this.setTransparent(!1),this.setSize(e.baseWidth),this.updateTextureParameters(),this.setLoadState(S().COMPLETE_STATE),this.addNodeEvent()}catch(e){this.setError({type:e.message})}},setImage(){Te()&&"data:"!==this.fileURL.protocol&&console.info(`Done loading image cube map texture '${decodeURI(this.fileURL)}'.`);try{const e=this.getBrowser().getContext(),t=e.createTexture();e.bindTexture(e.TEXTURE_2D,t),e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,this.image[0]),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE),this.imageToCubeMap(t,this.image.prop("width"),this.image.prop("height"),!1),this.setLoadState(S().COMPLETE_STATE),this.addNodeEvent()}catch(e){this.setError({type:e.message})}finally{URL.revokeObjectURL(this.objectURL)}},imageToCubeMap(e,t,r){const i=t/r;Math.abs(i-4/3)<.01&&this.skyBoxToCubeMap(e,t,r),Math.abs(i-2)<.01&&this.panoramaToCubeMap(e,t,r),this.updateTextureParameters()},skyBoxToCubeMap:(()=>{const e=[new(he())(1,1),new(he())(3,1),new(he())(0,1),new(he())(2,1),new(he())(1,0),new(he())(1,2)];return function(t,r,i){const s=this.getBrowser().getContext(),a=s.createFramebuffer(),n=Math.floor(r/4),o=Math.floor(i/3),u=new Uint8Array(n*o*4);s.bindTexture(this.getTarget(),this.getTexture());for(let e=0;e<6;++e)s.texImage2D(this.getTargets()[e],0,s.RGBA,n,o,0,s.RGBA,s.UNSIGNED_BYTE,null);s.bindFramebuffer(s.FRAMEBUFFER,a),s.framebufferTexture2D(s.FRAMEBUFFER,s.COLOR_ATTACHMENT0,s.TEXTURE_2D,t,0);let h=!1;s.bindTexture(this.getTarget(),this.getTexture());for(let t=0;t<6;++t)s.copyTexSubImage2D(this.getTargets()[t],0,0,0,e[t].x*n,e[t].y*o,n,o),h||(s.readPixels(e[t].x*n,e[t].y*o,n,o,s.RGBA,s.UNSIGNED_BYTE,u),h=this.isImageTransparent(u));s.deleteFramebuffer(a),s.deleteTexture(t),this.setTransparent(h),this.setSize(n)}})(),panoramaToCubeMap(e,t,r){const i=this.getBrowser(),s=i.getContext(),a=i.getPanoramaShader(),n=s.createFramebuffer(),o=Math.floor(r/2),u=new Uint8Array(o*o*4);s.bindTexture(s.TEXTURE_2D,e),s.texParameteri(s.TEXTURE_2D,s.TEXTURE_WRAP_S,s.MIRRORED_REPEAT),s.texParameteri(s.TEXTURE_2D,s.TEXTURE_WRAP_T,s.MIRRORED_REPEAT),s.texParameteri(s.TEXTURE_2D,s.TEXTURE_MIN_FILTER,s.LINEAR),s.texParameteri(s.TEXTURE_2D,s.TEXTURE_MAG_FILTER,s.LINEAR),s.bindTexture(this.getTarget(),this.getTexture());for(let e=0;e<6;++e)s.texImage2D(this.getTargets()[e],0,s.RGBA,o,o,0,s.RGBA,s.UNSIGNED_BYTE,null);s.useProgram(a.getProgram()),s.activeTexture(s.TEXTURE0),s.bindTexture(s.TEXTURE_2D,e),s.uniform1i(a.x3d_PanoramaTextureEXT,0),s.bindFramebuffer(s.FRAMEBUFFER,n),s.viewport(0,0,o,o),s.scissor(0,0,o,o),s.disable(s.DEPTH_TEST),s.enable(s.CULL_FACE),s.frontFace(s.CCW),s.clearColor(0,0,0,0),s.bindVertexArray(i.getFullscreenVertexArrayObject());let h=!1;for(let e=0;e<6;++e)s.framebufferTexture2D(s.FRAMEBUFFER,s.COLOR_ATTACHMENT0,this.getTargets()[e],this.getTexture(),0),s.clear(s.COLOR_BUFFER_BIT),s.uniform1i(a.x3d_CurrentFaceEXT,e),s.drawArrays(s.TRIANGLES,0,6),h||(s.readPixels(0,0,o,o,s.RGBA,s.UNSIGNED_BYTE,u),h=this.isImageTransparent(u));s.enable(s.DEPTH_TEST),s.deleteFramebuffer(n),s.deleteTexture(e),this.setTransparent(h),this.setSize(o)},dispose(){ae().prototype.dispose.call(this),C.prototype.dispose.call(this)}}),Object.defineProperties(ce,{...m().getStaticProperties("ImageCubeMapTexture","CubeMapTexturing",2,"texture","3.0"),fieldDefinitions:{value:new(E())([new(g())(S().inputOutput,"metadata",new(x().SFNode)),new(g())(S().inputOutput,"description",new(x().SFString)),new(g())(S().inputOutput,"load",new(x().SFBool)(!0)),new(g())(S().inputOutput,"url",new(x().MFString)),new(g())(S().inputOutput,"autoRefresh",new(x().SFTime)(0)),new(g())(S().inputOutput,"autoRefreshTimeLimit",new(x().SFTime)(3600)),new(g())(S().initializeOnly,"textureProperties",new(x().SFNode))]),enumerable:!0}});const xe=ce,le=o().add("ImageCubeMapTexture",xe);a().add({name:"CubeMapTexturing",concreteNodes:[y,ie,le],abstractNodes:[C],browserContext:p});o().add("CubeMapTexturingComponent",void 0)})();
|