41 lines
1.3 KiB
JavaScript
41 lines
1.3 KiB
JavaScript
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} |