UNPKG

x_ite

Version:

X_ITE X3D Browser and VRML Viewer — View and Manipulate X3D, VRML, glTF and Other 3D Sources in HTML

2 lines 12.3 kB
/* X_ITE v15.1.12 */ const t=window[Symbol.for("X_ITE.X3D")];(()=>{const e={n:t=>{const i=t&&t.__esModule?()=>t.default:()=>t;return e.d(i,{a:i}),i},d:(t,i)=>{if(Array.isArray(i))for(var r=0;r<i.length;){var n=i[r++],a=i[r++];e.o(t,n)?0===a&&r++:0===a?Object.defineProperty(t,n,{enumerable:!0,value:i[r++]}):Object.defineProperty(t,n,{enumerable:!0,get:a})}else for(var n in i)e.o(i,n)&&!e.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:i[n]})},o:(t,e)=>Object.prototype.hasOwnProperty.call(t,e)},i=t.Components;var r=e.n(i);const n=t.Fields;var a=e.n(n);const s=t.X3DFieldDefinition;var o=e.n(s);const u=t.FieldDefinitionArray;var h=e.n(u);const l=t.X3DNode;var c=e.n(l);const p=t.X3DLightNode;var g=e.n(p);const w=t.X3DConstants;var d=e.n(w);const x=t.X3DCast;var m=e.n(x);const f=t.TraverseType;var _=e.n(f);const S=t.Matrix4;var O=e.n(S);const M=t.Namespace;var T=e.n(M);function F(t){g().call(this,t),this.addType(d().X3DTextureProjectorNode),this._location.setUnit("length"),this._nearDistance.setUnit("length"),this._farDistance.setUnit("length"),this._location.setUnit("length")}Object.assign(Object.setPrototypeOf(F.prototype,g().prototype),{initialize(){g().prototype.initialize.call(this),this._nearDistance.addInterest("set_nearDistance__",this),this._farDistance.addInterest("set_farDistance__",this),this._texture.addInterest("set_texture__",this),this.set_nearDistance__(),this.set_farDistance__(),this.set_texture__()},getLightKey(){return this.lightKey},getGlobal(){return this._global.getValue()},getLocation(){return this._location.getValue()},getDirection(){return this._direction.getValue()},getNearDistance(){return this.nearDistance},getNearParameter(){return this.nearParameter},getFarDistance(){return this.farDistance},getFarParameter(){return this.farParameter},getTexture(){return this.textureNode},getBiasMatrix:(()=>{const t=new(O())(.5,0,0,0,0,.5,0,0,0,0,.5,0,.5,.5,.5,1);return function(){return t}})(),straightenHorizon(t){return t.straighten(this._upVector.getValue())},set_nearDistance__(){const t=this._nearDistance.getValue();this.nearDistance=t<0?.125:t,this.nearParameter=t<0?0:-1},set_farDistance__(){const t=this._farDistance.getValue();this.farDistance=t<0?1e5:t,this.farParameter=t<0?1:2},set_texture__(){this.textureNode?.removeInterest("set_textureNode__",this),this.textureNode=m()(d().X3DTexture2DNode,this._texture),this.textureNode?.addInterest("set_textureNode__",this),this.setEnabled(!!this.textureNode),this.set_textureNode__(),this.set_on__()},set_textureNode__(){this.lightKey=`[3.${this.textureNode?.isLinear()?1:0}]`,this.textureNode?this._aspectRatio=this.textureNode.getWidth()/this.textureNode.getHeight():this._aspectRatio=1},push(t,e){g().prototype.push.call(this,t,e),this.textureNode?.traverse(_().DISPLAY,t)}}),Object.defineProperties(F,c().getStaticProperties("X3DTextureProjectorNode","TextureProjection",4));const y=F,V=T().add("X3DTextureProjectorNode",y),b=t.Camera;var P=e.n(b);const v=t.Vector3;var D=e.n(v);const j=t.Rotation4;var N=e.n(j);const X=t.MatrixStack;var I=e.n(X);const R=t.ObjectCache;var A=e.n(R);const z=A()(U);function U(){this.projectionMatrix=new(O()),this.modelViewMatrix=new(I())(O()),this.modelMatrix=new(O()),this.invTextureSpaceMatrix=new(O()),this.invTextureSpaceProjectionMatrix=new(O()),this.location=new(D()),this.locationArray=new Float32Array(3),this.direction=new(D()),this.rotation=new(N()),this.matrix=new(O()),this.matrixArray=new Float32Array(16),this.textureMatrix=new(O())}function Y(t){V.call(this,t),this.addType(d().TextureProjector),this._fieldOfView.setUnit("angle"),t.getSpecificationVersion()<=4&&(this._upVector=new(D())(0,0,1))}Object.assign(U.prototype,{set(t,e,i){this.browser=t.getBrowser(),this.lightNode=t,this.global=t.getGlobal(),this.shadowMapRendered=!1,this.modelViewMatrix.push(i),this.textureMatrix.assign(t.getTexture().getMatrix())},renderShadowMap(t){if(this.shadowMapRendered)return;this.shadowMapRendered=!0;const e=this.lightNode,i=t.getCameraSpaceMatrix().get(),r=this.modelMatrix.assign(this.modelViewMatrix.get()).multRight(i),n=this.invTextureSpaceMatrix.assign(this.global?r:O().IDENTITY);this.rotation.setVectors(D().Z_AXIS,this.direction.assign(e.getDirection()).negate()),e.straightenHorizon(this.rotation),n.translate(e.getLocation()),n.rotate(this.rotation),n.inverse();const a=e.getTexture().getWidth(),s=e.getTexture().getHeight(),o=e.getNearDistance(),u=e.getFarDistance(),h=e.getFieldOfView();P().perspective(h,o,u,a,s,this.projectionMatrix),this.global||n.multLeft(r.inverse()),this.invTextureSpaceProjectionMatrix.assign(n).multRight(this.projectionMatrix).multRight(e.getBiasMatrix()).multRight(this.textureMatrix),this.modelViewMatrix.get().multVecMatrix(this.location.assign(e._location.getValue())),this.locationArray.set(this.location)},setGlobalVariables(t){this.matrix.assign(t.getView()?.inverse??O().IDENTITY).multRight(t.getCameraSpaceMatrixArray()).multRight(this.invTextureSpaceProjectionMatrix),this.matrixArray.set(this.matrix)},setShaderUniforms(t,e,i){const r=e.numTextureProjectors++,n=e.x3d_TextureProjector[r];if(!n)return;const a=this.lightNode,s=a.getTexture(),o=this.global?this.textureUnit??=this.browser.popGlobalTextureUnit():this.browser.popTextureUnit();if(t.activeTexture(t.TEXTURE0+o),t.bindTexture(t.TEXTURE_2D,s.getTexture()),t.uniform1i(n.texture,o),e.hasTextureProjector(r,this))return;const u=a.getNearParameter(),h=a.getFarParameter();t.uniform3f(n.color,...a.getColor()),t.uniform1f(n.intensity,a.getIntensity()),t.uniform3fv(n.location,this.locationArray),t.uniform2f(n.params,u,h),t.uniformMatrix4fv(n.matrix,!1,this.matrixArray)},dispose(){this.global&&(this.textureUnit=void 0),this.modelViewMatrix.clear(),z.push(this)}}),Object.assign(Object.setPrototypeOf(Y.prototype,V.prototype),{initialize(){V.prototype.initialize.call(this)},getFieldOfView(){const t=this._fieldOfView.getValue();return t>0&&t<Math.PI?t:Math.PI/4},getLights:()=>z}),Object.defineProperties(Y,{...c().getStaticProperties("TextureProjector","TextureProjection",2,"children","4.0"),fieldDefinitions:{value:new(h())([new(o())(d().inputOutput,"metadata",new(a().SFNode)),new(o())(d().inputOutput,"description",new(a().SFString)),new(o())(d().inputOutput,"global",new(a().SFBool)(!0)),new(o())(d().inputOutput,"on",new(a().SFBool)(!0)),new(o())(d().inputOutput,"color",new(a().SFColor)(1,1,1)),new(o())(d().inputOutput,"intensity",new(a().SFFloat)(1)),new(o())(d().inputOutput,"ambientIntensity",new(a().SFFloat)),new(o())(d().inputOutput,"location",new(a().SFVec3f)),new(o())(d().inputOutput,"direction",new(a().SFVec3f)(0,0,1)),new(o())(d().inputOutput,"upVector",new(a().SFVec3f)(0,1,0)),new(o())(d().inputOutput,"fieldOfView",new(a().SFFloat)(.785398)),new(o())(d().inputOutput,"nearDistance",new(a().SFFloat)(-1)),new(o())(d().inputOutput,"farDistance",new(a().SFFloat)(-1)),new(o())(d().outputOnly,"aspectRatio",new(a().SFFloat)),new(o())(d().inputOutput,"texture",new(a().SFNode)),new(o())(d().inputOutput,"shadows",new(a().SFBool)),new(o())(d().inputOutput,"shadowColor",new(a().SFColor)),new(o())(d().inputOutput,"shadowIntensity",new(a().SFFloat)(1)),new(o())(d().inputOutput,"shadowBias",new(a().SFFloat)(.005)),new(o())(d().initializeOnly,"shadowMapSize",new(a().SFInt32)(1024))]),enumerable:!0}});const C=Y,E=T().add("TextureProjector",C),B=A()(L);function L(){this.projectionMatrix=new(O()),this.modelViewMatrix=new(I())(O()),this.modelMatrix=new(O()),this.invTextureSpaceMatrix=new(O()),this.location=new(D()),this.locationArray=new Float32Array(3),this.invTextureSpaceProjectionMatrix=new(O()),this.direction=new(D()),this.rotation=new(N()),this.matrix=new(O()),this.matrixArray=new Float32Array(16),this.textureMatrix=new(O())}function G(t){V.call(this,t),this.addType(d().TextureProjectorParallel),this._fieldOfView.setUnit("length"),t.getSpecificationVersion()<=4&&(this._upVector=new(D())(0,0,1))}Object.assign(L.prototype,{set(t,e,i){this.browser=t.getBrowser(),this.lightNode=t,this.global=t.getGlobal(),this.shadowMapRendered=!1,this.modelViewMatrix.push(i),this.textureMatrix.assign(t.getTexture().getMatrix())},renderShadowMap(t){if(this.shadowMapRendered)return;this.shadowMapRendered=!0;const e=this.lightNode,i=t.getCameraSpaceMatrix().get(),r=this.modelMatrix.assign(this.modelViewMatrix.get()).multRight(i),n=this.invTextureSpaceMatrix.assign(this.global?r:O().IDENTITY);this.rotation.setVectors(D().Z_AXIS,this.direction.assign(e.getDirection()).negate()),e.straightenHorizon(this.rotation),n.translate(e.getLocation()),n.rotate(this.rotation),n.inverse();const a=e.getTexture().getWidth()/e.getTexture().getHeight(),s=e.getMinimumX(),o=e.getMaximumX(),u=e.getMinimumY(),h=e.getMaximumY(),l=e.getSizeX(),c=e.getSizeY(),p=e.getNearDistance(),g=e.getFarDistance();if(a>l/c){const t=(s+o)/2,e=c*a/2;P().ortho(t-e,t+e,u,h,p,g,this.projectionMatrix)}else{const t=(u+h)/2,e=l/a/2;P().ortho(s,o,t-e,t+e,p,g,this.projectionMatrix)}this.global||n.multLeft(r.inverse()),this.invTextureSpaceProjectionMatrix.assign(n).multRight(this.projectionMatrix).multRight(e.getBiasMatrix()).multRight(this.textureMatrix),this.modelViewMatrix.get().multVecMatrix(this.location.assign(e._location.getValue())),this.locationArray.set(this.location)},setGlobalVariables(t){this.matrix.assign(t.getView()?.inverse??O().IDENTITY).multRight(t.getCameraSpaceMatrixArray()).multRight(this.invTextureSpaceProjectionMatrix),this.matrixArray.set(this.matrix)},setShaderUniforms(t,e,i){const r=e.numTextureProjectors++,n=e.x3d_TextureProjector[r];if(!n)return;const a=this.lightNode,s=a.getTexture(),o=this.global?this.textureUnit??=this.browser.popGlobalTextureUnit():this.browser.popTextureUnit();if(t.activeTexture(t.TEXTURE0+o),t.bindTexture(t.TEXTURE_2D,s.getTexture()),t.uniform1i(n.texture,o),e.hasTextureProjector(r,this))return;const u=a.getNearParameter(),h=a.getFarParameter();t.uniform3f(n.color,...a.getColor()),t.uniform1f(n.intensity,a.getIntensity()),t.uniform3fv(n.location,this.locationArray),t.uniform2f(n.params,u,h),t.uniformMatrix4fv(n.matrix,!1,this.matrixArray)},dispose(){this.global&&(this.textureUnit=void 0),this.modelViewMatrix.clear(),B.push(this)}}),Object.assign(Object.setPrototypeOf(G.prototype,V.prototype),{initialize(){V.prototype.initialize.call(this),this._fieldOfView.addInterest("set_fieldOfView___",this),this.set_fieldOfView___()},set_fieldOfView___(){this.minimumX=this._fieldOfView[0],this.minimumY=this._fieldOfView[1],this.maximumX=this._fieldOfView[2],this.maximumY=this._fieldOfView[3],this.sizeX=this.maximumX-this.minimumX,this.sizeY=this.maximumY-this.minimumY},getMinimumX(){return this.minimumX},getMinimumY(){return this.minimumY},getMaximumX(){return this.maximumX},getMaximumY(){return this.maximumY},getSizeX(){return this.sizeX},getSizeY(){return this.sizeY},getLights:()=>B}),Object.defineProperties(G,{...c().getStaticProperties("TextureProjectorParallel","TextureProjection",2,"children","4.0"),fieldDefinitions:{value:new(h())([new(o())(d().inputOutput,"metadata",new(a().SFNode)),new(o())(d().inputOutput,"description",new(a().SFString)),new(o())(d().inputOutput,"global",new(a().SFBool)(!0)),new(o())(d().inputOutput,"on",new(a().SFBool)(!0)),new(o())(d().inputOutput,"color",new(a().SFColor)(1,1,1)),new(o())(d().inputOutput,"intensity",new(a().SFFloat)(1)),new(o())(d().inputOutput,"ambientIntensity",new(a().SFFloat)),new(o())(d().inputOutput,"location",new(a().SFVec3f)),new(o())(d().inputOutput,"direction",new(a().SFVec3f)(0,0,1)),new(o())(d().inputOutput,"upVector",new(a().SFVec3f)(0,1,0)),new(o())(d().inputOutput,"fieldOfView",new(a().SFVec4f)(-1,-1,1,1)),new(o())(d().inputOutput,"nearDistance",new(a().SFFloat)(-1)),new(o())(d().inputOutput,"farDistance",new(a().SFFloat)(-1)),new(o())(d().outputOnly,"aspectRatio",new(a().SFFloat)),new(o())(d().inputOutput,"texture",new(a().SFNode)),new(o())(d().inputOutput,"shadows",new(a().SFBool)),new(o())(d().inputOutput,"shadowColor",new(a().SFColor)),new(o())(d().inputOutput,"shadowIntensity",new(a().SFFloat)(1)),new(o())(d().inputOutput,"shadowBias",new(a().SFFloat)(.005)),new(o())(d().initializeOnly,"shadowMapSize",new(a().SFInt32)(1024))]),enumerable:!0}});const H=G,K=T().add("TextureProjectorParallel",H);r().add({name:"TextureProjection",concreteNodes:[E,K],abstractNodes:[V]});T().add("TextureProjectionComponent",void 0)})();