From c248dcb77b1bd05a9c1ad79ade59199a4a9c2cb0 Mon Sep 17 00:00:00 2001
From: Tom <thomas.hodson@ecmwf.int>
Date: Thu, 9 Nov 2023 16:01:19 +0000
Subject: [PATCH] add drafts

---
 _drafts/outlines.md                 | 32 ++++++++++++++++
 _drafts/scans.md                    | 16 ++++++++
 _drafts/{vasegen.md => three_js.md} | 57 +++++++++++++++++++++++++----
 3 files changed, 98 insertions(+), 7 deletions(-)
 create mode 100644 _drafts/outlines.md
 rename _drafts/{vasegen.md => three_js.md} (60%)

diff --git a/_drafts/outlines.md b/_drafts/outlines.md
new file mode 100644
index 0000000..b04a40d
--- /dev/null
+++ b/_drafts/outlines.md
@@ -0,0 +1,32 @@
+---
+title: Outlines
+excerpt: |
+    
+
+head: |
+    <script async src="https://unpkg.com/es-module-shims@1.8.0/dist/es-module-shims.js"></script>
+
+    <script type="importmap">
+    {
+        "imports": {
+        "three": "https://unpkg.com/three@0.156.1/build/three.module.js",
+        "three/addons/": "https://unpkg.com/three@0.156.1/examples/jsm/"
+        }
+    }
+    </script>
+
+layout: post
+hide_image: true # Only use this image for static previews
+image: 
+alt: A render of a 3D printed shelf sitting above a shaver outlet, it spins slowly. 
+---
+
+
+<figure>
+<canvas id = "threejs" style="width:100%; height: 500px"></canvas>
+<figcaption>
+Hey look, threeJS!
+</figcaption>
+</figure>
+
+<script src="/assets/js/three/index.js" type="module"></script>
\ No newline at end of file
diff --git a/_drafts/scans.md b/_drafts/scans.md
index 67daf4f..7ddaf55 100644
--- a/_drafts/scans.md
+++ b/_drafts/scans.md
@@ -6,10 +6,26 @@ layout: post
 hide_image: true # Only use this image for static previews
 image: /assets/blog/toothbrush_shelf/spin.gif
 alt: A render of a 3D printed shelf sitting above a shaver outlet, it spins slowly. 
+
+head: |
+    <script async src="https://ga.jspm.io/npm:es-module-shims@1.7.1/dist/es-module-shims.js"></script>
+    <script type="importmap">
+    {
+    "imports": {
+        "three": "https://cdn.jsdelivr.net/npm/three@^0.157.0/build/three.module.min.js"
+    }
+    }
+    </script>
+    <script type="module" src="https://cdn.jsdelivr.net/npm/@google/model-viewer/dist/model-viewer-module.min.js"></script>
+    <script type="module" src="https://cdn.jsdelivr.net/npm/@google/model-viewer-effects/dist/model-viewer-effects.min.js"></script>
+
 ---
 
 <figure>
 <model-viewer style="width: 500px; height: 500px;" src="/assets/blog/scans/container/container.glb" ar ar-modes="scene-viewer webxr quick-look" camera-controls shadow-intensity="1" exposure="1.08" camera-orbit="30.45deg 63.68deg 27.8m" field-of-view="22.88deg" auto-rotate>
+  <effect-composer>
+    <pixelate-effect></pixelate-effect>
+  </effect-composer>
 </model-viewer>
 <figcaption>
 Done with the lidar scanner on an Ipad.
diff --git a/_drafts/vasegen.md b/_drafts/three_js.md
similarity index 60%
rename from _drafts/vasegen.md
rename to _drafts/three_js.md
index 209f071..b5907f2 100644
--- a/_drafts/vasegen.md
+++ b/_drafts/three_js.md
@@ -1,5 +1,5 @@
 ---
-title: Vase Generator
+title: THREE.js
 excerpt: |
     
 
@@ -42,6 +42,7 @@ want to port code from https://github.com/TomHodson/VaseExtruder
     const scene = new THREE.Scene();
     scene.background = new THREE.Color(background_color);
     const camera = new THREE.PerspectiveCamera( 75, window.innerWidth / window.innerHeight, 0.1, 1000 );
+    camera.position.z = 100;
 
     const canvas = document.getElementById("threejs");
     const renderer = new THREE.WebGLRenderer({canvas: canvas, antialias: true, powerPreference: "low-power"});
@@ -57,17 +58,61 @@ want to port code from https://github.com/TomHodson/VaseExtruder
     const dracoLoader = new DRACOLoader();
     dracoLoader.setDecoderPath( 'jsm/libs/draco/gltf/' );
 
+    const onWindowResize = () => {
+        camera.aspect = window.innerWidth / window.innerHeight;
+        camera.updateProjectionMatrix();
+        renderer.setSize(window.innerWidth, window.innerHeight);
+    }
+
     const loader = new GLTFLoader();
     loader.setDRACOLoader( dracoLoader );
-    loader.load( '/assets/blog/shelves/model/shelves.glb', function ( gltf ) {
-
+    loader.load( '/assets/projects/bike_lights/model/untitled.glb', function ( gltf ) {
         const model = gltf.scene;
+        console.log(model);
+
+        // traverse the scene and make modifications if necessary
+        model.traverse((o) => {
+            if (o.isMesh) {
+                const flat_material = new THREE.MeshBasicMaterial( {
+                    color: 0xffffff,
+                    polygonOffset: true,
+                    polygonOffsetFactor: 1, // positive value pushes polygon further away
+                    polygonOffsetUnits: 1
+                } );
+
+                o.material = flat_material;
+                scene.add(o);
+
+                // const flat_model = new THREE.LineSegments( o.geometry, flat_material);
+                // scene.add(flat_model);
+
+                const thresholdAngle = 10;
+                const wireframe_geometry = new THREE.EdgesGeometry(o.geometry, thresholdAngle);
+                
+                const line = new THREE.LineSegments(wireframe_geometry);
+                line.material.color.setHex(0x000000);
+                line.scale.set(10,10,10)
+                scene.add(line);
+
+                // const line_material = new THREE.LineBasicMaterial( { color: 0x000000 } );
+                // const wireframe_model = new THREE.LineSegments( wireframe_geometry, line_material);
+                // wireframe_model.scale.set(10,10,10);
+                // scene.add(wireframe_model);
+
+            }
+        });
+
+
+        
         // model.position.set( 1, 1, 0 );
-        model.scale.set( 1, 1, 1 );
-        scene.add( model );
+        // model.scale.set( 1, 1, 1 );
+        // scene.add( model );
 
         animate();
 
+        // Add listener for window resize.
+        window.addEventListener('resize', onWindowResize, false);
+
     }, undefined, function ( e ) {
 
         console.error( e );
@@ -79,8 +124,6 @@ want to port code from https://github.com/TomHodson/VaseExtruder
     // const cube = new THREE.Mesh( geometry, material );
     // scene.add( cube );
 
-    camera.position.z = 5;
-
     function animate() {
         requestAnimationFrame( animate );