@tomorrowevening/hermes
Version:
An extendable set of Web Tools controlled via a separate window for non-intereference with content.
2 lines (1 loc) • 2.26 kB
JavaScript
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("three");let n=0;const o=()=>{n=0},h=i=>{if(!i)return;let e=i.name.replaceAll(" ","").replaceAll("/",".");if(e.length===0&&(e=`obj_${n}`,n++),i.parent!==null&&i.parent.uuid.length>0&&(e=`${i.parent.uuid}.${e}`),i.uuid=e,i.isMesh!==void 0){const t=i;if(Array.isArray(t.material))t.material.forEach((r,s)=>{r.uuid=`${e}.material.${s}`});else{const r=t.material;r.uuid=`${e}.material`}}i.children.forEach(t=>h(t))};class d{static renderer;static canvas;static context=null;static scene=null;static camera=null;static material=null;static inited=!1;static width=100;static height=100;static init(){this.inited||(this.canvas=document.createElement("canvas"),this.canvas.width=this.width,this.canvas.height=this.height,this.context=this.canvas.getContext("2d"),this.inited=!0)}static renderToBlob(e){this.init();const t=e.repeat.clone(),r=e.offset.clone();if(e.repeat.set(1,1),e.offset.set(0,0),this.context!==null){this.context.clearRect(0,0,this.width,this.height);const s=e.image;if(s!=null&&s.width>0){this.canvas.title=e.sourceFile;const c=this.canvas.width/s.width,l=this.renderToCanvas(e);this.context.drawImage(l,0,0,s.width*c,s.height*c)}}return e.repeat.copy(t),e.offset.copy(r),this.canvas.toDataURL("image/png")}static renderToCanvas(e){if(this.material===null){this.camera=new a.OrthographicCamera(-.5,.5,.5,-.5,0,100),this.scene=new a.Scene,this.material=new a.MeshBasicMaterial;const t=new a.BufferGeometry;t.setAttribute("position",new a.Float32BufferAttribute([-.5,-.5,0,1.5,-.5,0,-.5,1.5,0],3)),t.setAttribute("normal",new a.Float32BufferAttribute([0,0,1,0,0,1],3)),t.setAttribute("uv",new a.Float32BufferAttribute([0,0,2,0,0,2],2));const r=new a.Mesh(t,this.material);this.scene.add(r)}if(e.isRenderTargetTexture)this.material.map=e,this.renderer.render(this.scene,this.camera);else{const t=this.renderer.outputColorSpace,r=e.colorSpace;this.renderer.outputColorSpace=a.LinearSRGBColorSpace,e.colorSpace=a.LinearSRGBColorSpace,this.material.map=e,this.renderer.render(this.scene,this.camera),this.renderer.outputColorSpace=t,e.colorSpace=r}return this.renderer.domElement}}exports.ExportTexture=d;exports.hierarchyUUID=h;exports.resetThreeObjects=o;