UNPKG

cione-comp-lib

Version:

`$ yarn add cione-comp-lib` 或者 `$ npm i cione-comp-lib -S`

2 lines (1 loc) 5.75 kB
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});var e=require("./core/vendor.js"),t=require("./glmatrix/vec3.js"),r=require("./glmatrix/mat4.js"),a=require("./math/BoundingBox.js"),i=require("./GeometryBase.js"),n=t.default.create,u=t.default.add,o=t.default.set,l=i.default.Attribute,s=i.default.extend((function(){return{attributes:{position:new l("position","float",3,"POSITION"),texcoord0:new l("texcoord0","float",2,"TEXCOORD_0"),texcoord1:new l("texcoord1","float",2,"TEXCOORD_1"),normal:new l("normal","float",3,"NORMAL"),tangent:new l("tangent","float",4,"TANGENT"),color:new l("color","float",4,"COLOR"),weight:new l("weight","float",3,"WEIGHT"),joint:new l("joint","float",4,"JOINT"),barycentric:new l("barycentric","float",3,null)},boundingBox:null}}),{mainAttribute:"position",updateBoundingBox:function(){var e=this.boundingBox;e||(e=this.boundingBox=new a.default);var r=this.attributes.position.value;if(r&&r.length){var i=e.min,n=e.max,u=i.array,o=n.array;t.default.set(u,r[0],r[1],r[2]),t.default.set(o,r[0],r[1],r[2]);for(var l=3;l<r.length;){var s=r[l++],f=r[l++],d=r[l++];s<u[0]&&(u[0]=s),f<u[1]&&(u[1]=f),d<u[2]&&(u[2]=d),s>o[0]&&(o[0]=s),f>o[1]&&(o[1]=f),d>o[2]&&(o[2]=d)}i._dirty=!0,n._dirty=!0}},generateVertexNormals:function(){if(this.vertexCount){var r=this.indices,a=this.attributes,i=a.position.value,u=a.normal.value;if(u&&u.length===i.length)for(var l=0;l<u.length;l++)u[l]=0;else u=a.normal.value=new e.default.Float32Array(i.length);for(var s,f,d,h=n(),v=n(),c=n(),g=n(),x=n(),b=n(),_=r?r.length:this.vertexCount,A=0;A<_;){r?(s=r[A++],f=r[A++],d=r[A++]):(s=A++,f=A++,d=A++),o(h,i[3*s],i[3*s+1],i[3*s+2]),o(v,i[3*f],i[3*f+1],i[3*f+2]),o(c,i[3*d],i[3*d+1],i[3*d+2]),t.default.sub(g,h,v),t.default.sub(x,v,c),t.default.cross(b,g,x);for(l=0;l<3;l++)u[3*s+l]=u[3*s+l]+b[l],u[3*f+l]=u[3*f+l]+b[l],u[3*d+l]=u[3*d+l]+b[l]}for(l=0;l<u.length;)o(b,u[l],u[l+1],u[l+2]),t.default.normalize(b,b),u[l++]=b[0],u[l++]=b[1],u[l++]=b[2];this.dirty()}},generateFaceNormals:function(){if(this.vertexCount){this.isUniqueVertex()||this.generateUniqueVertex();var e=this.indices,r=this.attributes,a=r.position.value,i=r.normal.value,u=n(),l=n(),s=n(),f=n(),d=n(),h=n();i||(i=r.normal.value=new Float32Array(a.length));for(var v,c,g,x=e?e.length:this.vertexCount,b=0;b<x;){e?(v=e[b++],c=e[b++],g=e[b++]):(v=b++,c=b++,g=b++),o(u,a[3*v],a[3*v+1],a[3*v+2]),o(l,a[3*c],a[3*c+1],a[3*c+2]),o(s,a[3*g],a[3*g+1],a[3*g+2]),t.default.sub(f,u,l),t.default.sub(d,l,s),t.default.cross(h,f,d),t.default.normalize(h,h);for(var _=0;_<3;_++)i[3*v+_]=h[_],i[3*c+_]=h[_],i[3*g+_]=h[_]}this.dirty()}},generateTangents:function(){if(this.vertexCount){var e=this.vertexCount,r=this.attributes;r.tangent.value||(r.tangent.value=new Float32Array(4*e));var a=r.texcoord0.value,i=r.position.value,o=r.tangent.value,l=r.normal.value;if(a){for(var s=[],f=[],d=0;d<e;d++)s[d]=[0,0,0],f[d]=[0,0,0];var h,v,c,g=[0,0,0],x=[0,0,0],b=this.indices,_=b?b.length:this.vertexCount;for(d=0;d<_;){b?(h=b[d++],v=b[d++],c=b[d++]):(h=d++,v=d++,c=d++);var A=a[2*h],y=a[2*v],m=a[2*c],C=a[2*h+1],B=a[2*v+1],p=a[2*c+1],w=i[3*h],T=i[3*v],O=i[3*c],R=i[3*h+1],q=i[3*v+1],E=i[3*c+1],I=i[3*h+2],D=T-w,j=O-w,N=q-R,S=E-R,M=i[3*v+2]-I,U=i[3*c+2]-I,V=y-A,W=m-A,F=B-C,z=p-C,G=1/(V*z-F*W);g[0]=(z*D-F*j)*G,g[1]=(z*N-F*S)*G,g[2]=(z*M-F*U)*G,x[0]=(V*j-W*D)*G,x[1]=(V*S-W*N)*G,x[2]=(V*U-W*M)*G,u(s[h],s[h],g),u(s[v],s[v],g),u(s[c],s[c],g),u(f[h],f[h],x),u(f[v],f[v],x),u(f[c],f[c],x)}var L=n(),P=n(),X=n();for(d=0;d<e;d++){X[0]=l[3*d],X[1]=l[3*d+1],X[2]=l[3*d+2];var Y=s[d];t.default.scale(L,X,t.default.dot(X,Y)),t.default.sub(L,Y,L),t.default.normalize(L,L),t.default.cross(P,X,Y),o[4*d]=L[0],o[4*d+1]=L[1],o[4*d+2]=L[2],o[4*d+3]=t.default.dot(P,f[d])<0?-1:1}this.dirty()}}},isUniqueVertex:function(){return!this.isUseIndices()||this.vertexCount===this.indices.length},generateUniqueVertex:function(){if(this.vertexCount&&this.indices){this.indices.length>65535&&(this.indices=new e.default.Uint32Array(this.indices));for(var t=this.attributes,r=this.indices,a=this.getEnabledAttributes(),i={},n=0;n<a.length;n++){i[s=a[n]]=t[s].value,t[s].init(this.indices.length)}for(var u=0,o=0;o<r.length;o++){var l=r[o];for(n=0;n<a.length;n++)for(var s,f=t[s=a[n]].value,d=t[s].size,h=0;h<d;h++)f[u*d+h]=i[s][l*d+h];r[o]=u,u++}this.dirty()}},generateBarycentric:function(){if(this.vertexCount){this.isUniqueVertex()||this.generateUniqueVertex();var e=this.attributes,t=e.barycentric.value,r=this.indices;if(!t||t.length!==3*r.length){t=e.barycentric.value=new Float32Array(3*r.length);for(var a=0;a<(r?r.length:this.vertexCount/3);)for(var i=0;i<3;i++){t[3*(r?r[a++]:3*a+i)+i]=1}this.dirty()}}},applyTransform:function(e){var a=this.attributes,i=a.position.value,n=a.normal.value,u=a.tangent.value;e=e.array;var o=r.default.create();r.default.invert(o,e),r.default.transpose(o,o);var l=t.default.transformMat4,s=t.default.forEach;s(i,3,0,null,l,e),n&&s(n,3,0,null,l,o),u&&s(u,4,0,null,l,o),this.boundingBox&&this.updateBoundingBox()},dispose:function(e){var t=this._cache;t.use(e.__uid__);var r=t.get("chunks");if(r)for(var a=0;a<r.length;a++){for(var i=r[a],n=0;n<i.attributeBuffers.length;n++){var u=i.attributeBuffers[n];e.gl.deleteBuffer(u.buffer)}i.indicesBuffer&&e.gl.deleteBuffer(i.indicesBuffer.buffer)}if(this.__vaoCache){var o=e.getGLExtension("OES_vertex_array_object");for(var l in this.__vaoCache){var s=this.__vaoCache[l].vao;s&&o.deleteVertexArrayOES(s)}}this.__vaoCache={},t.deleteContext(e.__uid__)}});s.STATIC_DRAW=i.default.STATIC_DRAW,s.DYNAMIC_DRAW=i.default.DYNAMIC_DRAW,s.STREAM_DRAW=i.default.STREAM_DRAW,s.AttributeBuffer=i.default.AttributeBuffer,s.IndicesBuffer=i.default.IndicesBuffer,s.Attribute=l;var f=s;exports.default=f;