@babylonjs/viewer
Version:
The Babylon Viewer aims to simplify a specific but common Babylon.js use case: loading, viewing, and interacting with a 3D model.
3 lines (2 loc) • 8.13 kB
JavaScript
import{j as t,F as e}from"./KHR_interactivity-BMn2G2LI.esm.min.js";import{R as r,d as o,h as a,f as s,a as n,i as l,g as c,p as i}from"./declarationMapper-sl3auZpG.esm.min.js";import{F as u}from"./flowGraphBinaryOperationBlock-DVhosVT4.esm.min.js";import{F as p}from"./flowGraphUnaryOperationBlock-DAnp-QWU.esm.min.js";import{F as h}from"./flowGraphTernaryOperationBlock-CnLiXmGO.esm.min.js";import{F as m}from"./flowGraphCachedOperationBlock-YPEvoRCv.esm.min.js";import{V as x,aD as w,b3 as y,M as d,j as F,bc as f,u as g}from"./index-OM-TXt9s.esm.min.js";import"./objectModelMapping-DA3c5cv8.esm.min.js";import"./spotLight.pure-guqQj5Iw.esm.min.js";function V(t,e){return t.x*e.x+t.y*e.y+t.z*e.z}const z=1e-6;function B(t){const e=Math.abs(t.x),r=Math.abs(t.y),o=Math.abs(t.z);let a;return a=e<=r&&e<=o?x.RightReadOnly:r<=o?x.UpReadOnly:x.LeftHandedForwardReadOnly,x.Cross(t,a).normalize()}function k(t,e){const r=new w;return function(t,e,r){const o=V(t,e);if(Number.isFinite(o)&&o>.999999)return r.copyFromFloats(0,0,0,1),r;if(Number.isFinite(o)&&o<-.999999){const e=B(t);return r.copyFromFloats(e.x,e.y,e.z,0),r}const a=x.Cross(t,e).normalize(),s=Math.sqrt(.5-.5*o);r.copyFromFloats(a.x*s,a.y*s,a.z*s,Math.sqrt(.5+.5*o))}(t,e,r),r}const G=["xyz","xzy","yxz","yzx","zxy","zyx"];const R="cachedOperationAxis",A="cachedOperationAngle",C="cachedExecutionId";class M extends p{constructor(t){super(r,o,t=>this._polymorphicLength(t),"FlowGraphLengthBlock",t)}_polymorphicLength(e){switch(t(e)){case"Vector2":case"Vector3":case"Vector4":case"Quaternion":return e.length();default:throw new Error(`Cannot compute length of value ${e}`)}}}class O extends m{constructor(t){super(r,t),this.a=this.registerDataInput("a",r)}_doOperation(t){return this._polymorphicNormalize(this.a.getValue(t))}_getInvalidOutputValue(e){const r=this.a.getValue(e);switch(t(r)){case"Vector2":return new y(0,0);case"Vector4":return new f(0,0,0,0);case"Quaternion":return new w(0,0,0,0);default:return new x(0,0,0)}}_polymorphicNormalize(e){switch(t(e)){case"Vector2":case"Vector3":case"Vector4":case"Quaternion":{const t=e.length();if(0===t||!Number.isFinite(t)){if(this.config?.nanOnZeroLength){const t=e.normalizeToNew();return t.setAll(NaN),t}return}return e.normalizeToNew()}default:throw new Error(`Cannot normalize value ${e}`)}}getClassName(){return"FlowGraphNormalizeBlock"}}class _ extends u{constructor(t){super(r,r,o,(t,e)=>this._polymorphicDot(t,e),"FlowGraphDotBlock",t)}_polymorphicDot(e,r){switch(t(e)){case"Vector2":case"Vector3":case"Vector4":case"Quaternion":return e.dot(r);default:throw new Error(`Cannot get dot product of ${e} and ${r}`)}}}class I extends u{constructor(t){super(s,s,s,(t,e)=>x.Cross(t,e),"FlowGraphCrossBlock",t)}}class D extends u{constructor(t){super(i,o,i,(t,e)=>t.rotate(e),"FlowGraphRotate2DBlock",t)}}class Q extends u{constructor(t){super(s,a,s,(t,e)=>t.applyRotationQuaternion(e),"FlowGraphRotate3DBlock",t)}}function b(e,r){switch(t(e)){case"Vector2":case"Vector3":return r.transformVector(e);case"Vector4":return new f(e.x*r.m[0]+e.y*r.m[4]+e.z*r.m[8]+e.w*r.m[12],e.x*r.m[1]+e.y*r.m[5]+e.z*r.m[9]+e.w*r.m[13],e.x*r.m[2]+e.y*r.m[6]+e.z*r.m[10]+e.w*r.m[14],e.x*r.m[3]+e.y*r.m[7]+e.z*r.m[11]+e.w*r.m[15]);default:throw new Error(`Cannot transform value ${e}`)}}class j extends u{constructor(t){const e=t?.vectorType||"Vector3",r="Vector2"===e?"Matrix2D":"Vector3"===e?"Matrix3D":"Matrix";super(c(e),c(r),c(e),b,"FlowGraphTransformVectorBlock",t)}}class P extends u{constructor(t){super(s,l,s,(t,e)=>x.TransformCoordinates(t,e),"FlowGraphTransformCoordinatesBlock",t)}}class N extends p{constructor(t){super(a,a,t=>t.conjugate(),"FlowGraphConjugateBlock",t)}}class E extends u{constructor(t){super(a,a,o,(t,e)=>function(t,e){return 2*Math.acos(F((o=e,(r=t).x*o.x+r.y*o.y+r.z*o.z+r.w*o.w),-1,1));var r,o}(t,e),"FlowGraphAngleBetweenBlock",t)}}class T extends u{constructor(t){super(s,o,a,(t,e)=>w.RotationAxis(t,e),"FlowGraphQuaternionFromAxisAngleBlock",t)}}class v extends e{constructor(t){super(t),this.a=this.registerDataInput("a",a),this.axis=this.registerDataOutput("axis",s),this.angle=this.registerDataOutput("angle",o),this.isValid=this.registerDataOutput("isValid",n)}_updateOutputs(t){const e=t._getExecutionVariable(this,C,-1),r=t._getExecutionVariable(this,R,null),o=t._getExecutionVariable(this,A,null);if(null!=r&&null!=o&&e===t.executionId)this.axis.setValue(r,t),this.angle.setValue(o,t);else try{const{axis:e,angle:r}=this.a.getValue(t).toAxisAngle();t._setExecutionVariable(this,R,e),t._setExecutionVariable(this,A,r),t._setExecutionVariable(this,C,t.executionId),this.axis.setValue(e,t),this.angle.setValue(r,t),this.isValid.setValue(!0,t)}catch(e){this.isValid.setValue(!1,t)}}getClassName(){return"FlowGraphAxisAngleFromQuaternionBlock"}}class L extends u{constructor(t){super(s,s,a,(t,e)=>k(t,e),"FlowGraphQuaternionFromDirectionsBlock",t)}}class S extends u{constructor(t){super(s,s,a,(t,e)=>function(t,e){const r=new x(e.x,e.y,e.z);let o=x.Cross(t,r);o.lengthSquared()<1e-12?o=B(r):o.normalize();const a=x.Cross(r,o),s=d.FromValues(o.x,o.y,o.z,0,a.x,a.y,a.z,0,r.x,r.y,r.z,0,0,0,0,1);return w.FromRotationMatrix(s)}(t,e),"FlowGraphQuaternionFromUpForwardBlock",t)}}class U extends h{constructor(t){super(r,r,o,r,(t,e,r)=>this._polymorphicSlerp(t,e,r),"FlowGraphVectorSlerpBlock",t)}_polymorphicSlerp(e,r,o){switch(t(e)){case"Vector2":return function(t,e,r){const o=Math.sqrt(t.x*t.x+t.y*t.y),a=Math.sqrt(e.x*e.x+e.y*e.y);if(o<z||a<z)return new y((1-r)*t.x+r*e.x,(1-r)*t.y+r*e.y);const s=t.x/o,n=t.y/o,l=e.x/a,c=e.y/a;let i=Math.acos(F(s*l+n*c,-1,1));s*c-n*l<0&&(i=-i);const u=(1-r)*o+r*a,p=Math.cos(r*i),h=Math.sin(r*i);return new y((s*p-n*h)*u,(s*h+n*p)*u)}(e,r,o);case"Vector3":return function(t,e,r){const o=t.length(),a=e.length(),s=()=>new x((1-r)*t.x+r*e.x,(1-r)*t.y+r*e.y,(1-r)*t.z+r*e.z);if(o<z||a<z)return s();const n=new x(t.x/o,t.y/o,t.z/o),l=new x(e.x/a,e.y/a,e.z/a),c=V(n,l);if(c>.999999)return s();let i;i=c<-.999999?B(n):x.Cross(n,l).normalize();const u=r*Math.acos(F(c,-1,1)),p=w.RotationAxis(i,u),h=(1-r)*o+r*a;return n.applyRotationQuaternion(p).scaleInPlace(h)}(e,r,o);default:throw new Error(`Cannot slerp value ${e}`)}}}class $ extends h{constructor(t){super(o,o,o,a,(t,e,r)=>function(t,e,r,o){const a=w.RotationAxis(x.RightReadOnly,e),s=w.RotationAxis(x.UpReadOnly,r),n=w.RotationAxis(x.LeftHandedForwardReadOnly,o);switch(t){case"xyz":return a.multiplyInPlace(s).multiplyInPlace(n);case"xzy":return a.multiplyInPlace(n).multiplyInPlace(s);case"yzx":return s.multiplyInPlace(n).multiplyInPlace(a);case"zxy":return n.multiplyInPlace(a).multiplyInPlace(s);case"zyx":return n.multiplyInPlace(s).multiplyInPlace(a);default:return s.multiplyInPlace(a).multiplyInPlace(n)}}(this._order,t,e,r),"FlowGraphQuaternionFromAnglesBlock",t);const e=t?.order;this._order="string"==typeof e&&-1!==G.indexOf(e)?e:"yxz"}}let q=!1;function H(){q||(q=!0,g("FlowGraphLengthBlock",M),g("FlowGraphNormalizeBlock",O),g("FlowGraphDotBlock",_),g("FlowGraphCrossBlock",I),g("FlowGraphRotate2DBlock",D),g("FlowGraphRotate3DBlock",Q),g("FlowGraphTransformVectorBlock",j),g("FlowGraphTransformCoordinatesBlock",P),g("FlowGraphConjugateBlock",N),g("FlowGraphAngleBetweenBlock",E),g("FlowGraphQuaternionFromAxisAngleBlock",T),g("FlowGraphAxisAngleFromQuaternionBlock",v),g("FlowGraphQuaternionFromDirectionsBlock",L),g("FlowGraphQuaternionFromUpForwardBlock",S),g("FlowGraphQuaternionFromAnglesBlock",$),g("FlowGraphVectorSlerpBlock",U))}H();export{E as FlowGraphAngleBetweenBlock,v as FlowGraphAxisAngleFromQuaternionBlock,N as FlowGraphConjugateBlock,I as FlowGraphCrossBlock,_ as FlowGraphDotBlock,M as FlowGraphLengthBlock,O as FlowGraphNormalizeBlock,$ as FlowGraphQuaternionFromAnglesBlock,T as FlowGraphQuaternionFromAxisAngleBlock,L as FlowGraphQuaternionFromDirectionsBlock,S as FlowGraphQuaternionFromUpForwardBlock,D as FlowGraphRotate2DBlock,Q as FlowGraphRotate3DBlock,j as FlowGraphTransformBlock,P as FlowGraphTransformCoordinatesBlock,U as FlowGraphVectorSlerpBlock,H as RegisterFlowGraphVectorMathBlocks};
//# sourceMappingURL=flowGraphVectorMathBlocks-B74i8mHY.esm.min.js.map