import { MeshBasicMaterial, Color, Vector3, DoubleSide } from "three"; import { Text } from "troika-three-text"; import { assignParams } from "@/lib/MeshUtils"; class TextObject { constructor(engine, obj) { return new Promise((resolve, reject)=>{ const txt = new Text(); // Set properties to configure: txt.text = obj.text; txt.fontSize = 0.033; txt.lineHeight = 1.1; //txt.maxWidth = obj.width; txt.textAlign = 'center'; txt.font = obj.fontPath || '/static/fonts/Montserrat-Regular.ttf'; txt.anchorX = 'center'; txt.anchorY = 'bottom'; txt.curveRadius = 0; txt.outlineColor = 0xffffff; txt.outlineWidth = '15%'; txt.depthOffset = 0.1; //txt.outlineBlur = '50%'; txt.color = new Color(0x0); assignParams(txt, obj) let m = new MeshBasicMaterial({ // roughness: .73, // metalness: .37, side: DoubleSide }); txt.material = m; txt.sync(()=>{ txt.material[1].opacity = 1; resolve(this); }); this.txt = txt; this.object = txt; }) } } export {TextObject}