diff --git a/src/lib/extrude-svg.ts b/src/lib/extrude-svg.ts deleted file mode 100644 index 48b097c..0000000 --- a/src/lib/extrude-svg.ts +++ /dev/null @@ -1,45 +0,0 @@ -import type * as THREE from 'three'; -import { SVGLoader } from 'three/examples/jsm/loaders/SVGLoader'; -import type { SVGResult, SVGResultPaths } from 'three/examples/jsm/loaders/SVGLoader'; - -import { Mesh } from 'three/src/objects/Mesh'; -import { Group } from 'three/src/objects/Group'; -import { MeshNormalMaterial } from 'three/src/materials/MeshNormalMaterial'; -import { ExtrudeGeometry } from 'three/src/geometries/ExtrudeGeometry'; - -/** - * Parses the provided SVG markup and extrudes it into a 3D model using THREE.js. - * @param svgMarkup - SVG markup to extrude. - * @return Group containing all of the extruded SVG paths. - * @throws Error If the SVG markup is empty. - */ -export function extrudeSvg(svgMarkup: string): Group { - if (!svgMarkup) { - throw new Error('SVG markup is empty'); - } - - const svgData: SVGResult = new SVGLoader().parse(svgMarkup); - const material: MeshNormalMaterial = new MeshNormalMaterial(); - - const svgGroup: Mesh[][] = svgData.paths.map(createShapeFromPath); - - const group = new Group(); - svgGroup.flat().forEach(mesh => group.add(mesh)); - - return group; - - function createShapeFromPath(path: SVGResultPaths): Mesh[] { - const shapes: THREE.Shape[] = path.toShapes(true); - - return shapes.map(shape => extrudeShape(shape, material)); - } - - function extrudeShape(shape: THREE.Shape, material: MeshNormalMaterial): Mesh { - const geometry = new ExtrudeGeometry(shape, { - depth: 20, - bevelEnabled: false - }); - - return new Mesh(geometry, material); - } -} diff --git a/src/routes/tools/+page.svelte b/src/routes/tools/+page.svelte index 21076dd..953d9be 100644 --- a/src/routes/tools/+page.svelte +++ b/src/routes/tools/+page.svelte @@ -1,7 +1,11 @@ @@ -12,6 +16,40 @@

Tools

- + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/lib/components/gltf/Github3d.svelte b/src/routes/tools/Github.svelte similarity index 85% rename from src/lib/components/gltf/Github3d.svelte rename to src/routes/tools/Github.svelte index f0e1d97..1c1a718 100644 --- a/src/lib/components/gltf/Github3d.svelte +++ b/src/routes/tools/Github.svelte @@ -1,5 +1,3 @@ - - + + + + + {#await gltf} + + {:then gltf} + + + {:catch error} + + {/await} + + + diff --git a/src/routes/tools/Scene.svelte b/src/routes/tools/Scene.svelte deleted file mode 100644 index 1fd418d..0000000 --- a/src/routes/tools/Scene.svelte +++ /dev/null @@ -1,48 +0,0 @@ - - - - { - ref.lookAt(0, 1, 0); - }} -/> - - - - scale.set(1.5)} - on:pointerleave={() => scale.set(1)} - on:click={() => scale.set(3)} -> - - - - - - scale.set(1.5)} - on:pointerleave={() => scale.set(1)} - on:click={() => scale.set(3)} -> - - diff --git a/src/routes/tools/TerraformFlat.svelte b/src/routes/tools/TerraformFlat.svelte new file mode 100644 index 0000000..a7a3ec9 --- /dev/null +++ b/src/routes/tools/TerraformFlat.svelte @@ -0,0 +1,31 @@ + + + + + + {#await gltf} + + {:then gltf} + + + + + {:catch error} + + {/await} + + + diff --git a/static/github.glb b/static/github.glb new file mode 100644 index 0000000..e297dce Binary files /dev/null and b/static/github.glb differ diff --git a/static/github-transformed.glb b/static/models/github-transformed.glb similarity index 100% rename from static/github-transformed.glb rename to static/models/github-transformed.glb diff --git a/static/models/kubernetes-transformed.glb b/static/models/kubernetes-transformed.glb new file mode 100644 index 0000000..16fe95e Binary files /dev/null and b/static/models/kubernetes-transformed.glb differ diff --git a/static/models/kubernetes.glb b/static/models/kubernetes.glb new file mode 100644 index 0000000..3f9d5f7 Binary files /dev/null and b/static/models/kubernetes.glb differ diff --git a/static/models/terraform-flat-transformed.glb b/static/models/terraform-flat-transformed.glb new file mode 100644 index 0000000..80b1352 Binary files /dev/null and b/static/models/terraform-flat-transformed.glb differ diff --git a/static/models/terraform-flat.glb b/static/models/terraform-flat.glb new file mode 100644 index 0000000..4305e83 Binary files /dev/null and b/static/models/terraform-flat.glb differ