@polygonjs/polygonjs
Version:
node-based WebGL 3D engine https://polygonjs.com
37 lines (36 loc) • 1.15 kB
JavaScript
;
import { CoreLoaderFont } from "../../loader/font/CoreFontLoader";
import { mergeGeometries } from "three/examples/jsm/utils/BufferGeometryUtils";
export async function createGeometriesFromTypeStroke(params) {
var _a;
const loader = await CoreLoaderFont.loadSVGLoader();
if (!loader) {
return;
}
return (_a = params.shapes) == null ? void 0 : _a.map(
(shape) => createGeometryFromTypeStroke({
loader,
shapes: shape,
strokeWidth: params.strokeWidth
})
);
}
function createGeometryFromTypeStroke(params) {
if (!params.shapes) {
return;
}
var style = params.loader.getStrokeStyle(params.strokeWidth, "white", "miter", "butt", 4);
const geometries = [];
for (let i = 0; i < params.shapes.length; i++) {
const shape = params.shapes[i];
const points = shape.getPoints();
const arcDivisions = 12;
const minDistance = 1e-3;
const geometry = params.loader.pointsToStroke(points, style, arcDivisions, minDistance);
geometries.push(geometry);
}
if (geometries.length > 0) {
const mergedGeometry = mergeGeometries(geometries);
return mergedGeometry;
}
}