skinview3d/js/dist/skinview3d.min.js

3 lines
24 KiB
JavaScript
Raw Normal View History

2020-01-27 12:11:19 +01:00
/* @preserve skinview3d / MIT License / https://github.com/bs-community/skinview3d */
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("three")):"function"==typeof define&&define.amd?define(["exports","three"],e):e((t=t||self).skinview3d={},t.THREE)}(this,(function(t,e){"use strict";function s(t,s,i,a,n,h){return[new e.Vector2(t/n,1-a/h),new e.Vector2(i/n,1-a/h),new e.Vector2(i/n,1-s/h),new e.Vector2(t/n,1-s/h)]}function i(t,e,i,a){return s(t,e,i,a,64,64)}function a(t,e,i,a){return s(t,e,i,a,64,32)}function n(t,e,s,i,a,n,h){t.faceVertexUvs[0]=[],t.faceVertexUvs[0][0]=[n[3],n[0],n[2]],t.faceVertexUvs[0][1]=[n[0],n[1],n[2]],t.faceVertexUvs[0][2]=[i[3],i[0],i[2]],t.faceVertexUvs[0][3]=[i[0],i[1],i[2]],t.faceVertexUvs[0][4]=[e[3],e[0],e[2]],t.faceVertexUvs[0][5]=[e[0],e[1],e[2]],t.faceVertexUvs[0][6]=[s[0],s[3],s[1]],t.faceVertexUvs[0][7]=[s[3],s[2],s[1]],t.faceVertexUvs[0][8]=[a[3],a[0],a[2]],t.faceVertexUvs[0][9]=[a[0],a[1],a[2]],t.faceVertexUvs[0][10]=[h[3],h[0],h[2]],t.faceVertexUvs[0][11]=[h[0],h[1],h[2]]}const h=.002;class o extends e.Group{constructor(t,e){super(),this.innerLayer=t,this.outerLayer=e,t.name="inner",e.name="outer"}}class r extends e.Group{constructor(t){super(),this.modelListeners=[],this._slim=!1;const s=new e.MeshBasicMaterial({map:t,side:e.FrontSide}),a=new e.MeshBasicMaterial({map:t,transparent:!0,opacity:1,side:e.DoubleSide,alphaTest:.5}),r=new e.BoxGeometry(8,8,8,0,0,0);n(r,i(8,0,16,8),i(16,0,24,8),i(0,8,8,16),i(8,8,16,16),i(16,8,24,16),i(24,8,32,16));const d=new e.Mesh(r,s),c=new e.BoxGeometry(9,9,9,0,0,0);n(c,i(40,0,48,8),i(48,0,56,8),i(32,8,40,16),i(40,8,48,16),i(48,8,56,16),i(56,8,64,16));const l=new e.Mesh(c,a);l.renderOrder=-1,this.head=new o(d,l),this.head.name="head",this.head.add(d,l),this.add(this.head);const p=new e.BoxGeometry(8,12,4,0,0,0);n(p,i(20,16,28,20),i(28,16,36,20),i(16,20,20,32),i(20,20,28,32),i(28,20,32,32),i(32,20,40,32));const m=new e.Mesh(p,s),u=new e.BoxGeometry(9,13.5,4.5,0,0,0);n(u,i(20,32,28,36),i(28,32,36,36),i(16,36,20,48),i(20,36,28,48),i(28,36,32,48),i(32,36,40,48));const g=new e.Mesh(u,a);this.body=new o(m,g),this.body.name="body",this.body.add(m,g),this.body.position.y=-10,this.add(this.body);const f=new e.BoxGeometry(1,1,1,0,0,0),w=new e.Mesh(f,s);this.modelListeners.push(()=>{w.scale.x=(this.slim?3:4)-h,w.scale.y=11.998,w.scale.z=3.998,this.slim?n(f,i(44,16,47,20),i(47,16,50,20),i(40,20,44,32),i(44,20,47,32),i(47,20,51,32),i(51,20,54,32)):n(f,i(44,16,48,20),i(48,16,52,20),i(40,20,44,32),i(44,20,48,32),i(48,20,52,32),i(52,20,56,32)),f.uvsNeedUpdate=!0,f.elementsNeedUpdate=!0});const y=new e.BoxGeometry(1,1,1,0,0,0),b=new e.Mesh(y,a);b.renderOrder=1,this.modelListeners.push(()=>{b.scale.x=(this.slim?3.375:4.5)-h,b.scale.y=13.498,b.scale.z=4.498,this.slim?n(y,i(44,32,47,36),i(47,32,50,36),i(40,36,44,48),i(44,36,47,48),i(47,36,51,48),i(51,36,54,48)):n(y,i(44,32,48,36),i(48,32,52,36),i(40,36,44,48),i(44,36,48,48),i(48,36,52,48),i(52,36,56,48)),y.uvsNeedUpdate=!0,y.elementsNeedUpdate=!0});const v=new e.Group;v.add(w,b),v.position.y=-6,this.rightArm=new o(w,b),this.rightArm.name="rightArm",this.rightArm.add(v),this.rightArm.position.y=-4,this.modelListeners.push(()=>{this.rightArm.position.x=this.slim?-5.5:-6}),this.add(this.rightArm);const M=new e.BoxGeometry(1,1,1,0,0,0),x=new e.Mesh(M,s);this.modelListeners.push(()=>{x.scale.x=(this.slim?3:4)-h,x.scale.y=11.998,x.scale.z=3.998,this.slim?n(M,i(36,48,39,52),i(39,48,42,52),i(32,52,36,64),i(36,52,39,64),i(39,52,43,64),i(43,52,46,64)):n(M,i(36,48,40,52),i(40,48,44,52),i(32,52,36,64),i(36,52,40,64),i(40,52,44,64),i(44,52,48,64)),M.uvsNeedUpdate=!0,M.elementsNeedUpdate=!0});const E=new e.BoxGeometry(1,1,1,0,0,0),L=new e.Mesh(E,a);L.renderOrder=1,this.modelListeners.push(()=>{L.scale.x=(this.slim?3.375:4.5)-h,L.scale.y=13.498,L.scale.z=4.498,this.slim?n(E,i(52,48,55,52),i(55,48,58,52),i(48,52,52,64),i(52,52,55,64),i(55,52,59,64),i(59,52,62,64)):n(E,i(52,48,56,52),i(56,48,60,52),i(48,52,52,64),i(52,52,56,64),i(56,52,60,64),i(60,52,64,64)),E.uvsNeedUpdate=!0,E.elementsNeedUpdate=!0});const k=new e.Group;k.add(x,L),k.position.y=-6,this.leftArm=new o(x,L),this.leftArm.name