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: | + + + + +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. +--- + + +
+ +
+Hey look, threeJS! +
+
+ + \ 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: | + + + + + ---
+ + +
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 );