Newer
Older
{"config":{"indexing":"full","lang":["en"],"min_search_length":3,"prebuild_index":false,"separator":"[\\s\\-]+"},"docs":[{"location":"","text":"Welcome to Sosuke Kanegae Fab Academy site! My name is Sosuke and this is my Fab Academy documentation website. Final Project Weekly assignments week 1. Principles and Practices / Project Management week 2. Computer Aided design week 3. Computer controlled cutting week 4. Embedded programming week 5. 3D Scanning and printing week 6. Electronics design week 7. Computer controlled machining week 8. Electronics production week 9. Molding and casting week 10. Output devices week 11. Mechanical design & machine design week 12. Input devices week 13. Networking and communications week 14. Interface and application programming week 15. Wildcard week week 16. Applications and implications week 17. Invention, intellectual property and income week 18. Project development","title":"Home"},{"location":"#welcome-to-sosuke-kanegae-fab-academy-site","text":"My name is Sosuke and this is my Fab Academy documentation website.","title":"Welcome to Sosuke Kanegae Fab Academy site!"},{"location":"#final-project","text":"","title":"Final Project"},{"location":"#weekly-assignments","text":"week 1. Principles and Practices / Project Management week 2. Computer Aided design week 3. Computer controlled cutting week 4. Embedded programming week 5. 3D Scanning and printing week 6. Electronics design week 7. Computer controlled machining week 8. Electronics production week 9. Molding and casting week 10. Output devices week 11. Mechanical design & machine design week 12. Input devices week 13. Networking and communications week 14. Interface and application programming week 15. Wildcard week week 16. Applications and implications week 17. Invention, intellectual property and income week 18. Project development","title":"Weekly assignments"},{"location":"about/","text":"Hi! I am Sosuke Kanegae. I am a PhD student in Osaka University, Japan. I was born Shiga, Japan but when I was one and a half year old, my parents went to work in Michigan, USA. We lived there until I was 10 and came back to Shiga, Japan. I am now studying about mechanical metamaterial at Osaka university.","title":"About"},{"location":"about/#hi-i-am-sosuke-kanegae","text":"","title":"Hi! I am Sosuke Kanegae."},{"location":"about/#i-am-a-phd-student-in-osaka-university-japan","text":"I was born Shiga, Japan but when I was one and a half year old, my parents went to work in Michigan, USA. We lived there until I was 10 and came back to Shiga, Japan. I am now studying about mechanical metamaterial at Osaka university.","title":"I am a PhD student in Osaka University, Japan."},{"location":"agreements/","text":"Fab Academy Student Agreement The Fab Academy is responsible for: Teaching principles and practices of digital fabrication Arranging lectures, recitations, meetings, and events for the class Evaluating and providing feedback on student work Offering clear standards for completing assignments Certifying and archiving student progress Supervising class preparation Reviewing prospective students, instructors, and labs Providing central staff and infrastructure for students, instructors, and labs Fund-raising for costs not covered by student tuition Managing and reporting on the program's finances, results, and impacts Publicizing the program Promoting a respectful environment free of harassment and discrimination Encourage a diverse, accessible, and equitable community I am a Fab Academy student, responsible for: Attending class lectures and participating in reviews Developing and documenting projects assigned to introduce and demonstrate skills Allowing the Fab Academy to share my work (with attribution) in the class for purposes compatible with its mission Honestly reporting on my work, and appropriately attributing the work of others (both human and machine) Working safely Leaving workspaces in the same (or better) condition than I found them Participating in the upkeep of my lab Ensuring that my tuition for local and central class costs is covered Following locally applicable health and safety guidance Promoting a respectful environment free of harassment and discrimination Signed by committing this file in my repository, Sosuke Kanegae","title":"Agreements"},{"location":"agreements/#fab-academy-student-agreement","text":"The Fab Academy is responsible for: Teaching principles and practices of digital fabrication Arranging lectures, recitations, meetings, and events for the class Evaluating and providing feedback on student work Offering clear standards for completing assignments Certifying and archiving student progress Supervising class preparation Reviewing prospective students, instructors, and labs Providing central staff and infrastructure for students, instructors, and labs Fund-raising for costs not covered by student tuition Managing and reporting on the program's finances, results, and impacts Publicizing the program Promoting a respectful environment free of harassment and discrimination Encourage a diverse, accessible, and equitable community I am a Fab Academy student, responsible for: Attending class lectures and participating in reviews Developing and documenting projects assigned to introduce and demonstrate skills Allowing the Fab Academy to share my work (with attribution) in the class for purposes compatible with its mission Honestly reporting on my work, and appropriately attributing the work of others (both human and machine) Working safely Leaving workspaces in the same (or better) condition than I found them Participating in the upkeep of my lab Ensuring that my tuition for local and central class costs is covered Following locally applicable health and safety guidance Promoting a respectful environment free of harassment and discrimination Signed by committing this file in my repository, Sosuke Kanegae","title":"Fab Academy Student Agreement"},{"location":"final-project/","text":"Final Project Plans and Sketches of my final project Here I describe my final project idea. For my final project I would like to make a lamp that creates several different mood depending on the situation. Just putting a lamp in a room changes the atmosphere of the room. Every lighting equipment has its own mood. In the daytime, my favorite lighting equipment is a projector with streaming devices. Streaming devices like AppleTV and Chromecast show pictues and landscape movies when they are at screensaver mode. I love the way pictures and landscape moving slowly on my wall. So, I want to make a lamp with silhouettes moving around the lamp shade . I love watching candles before bedtime. It makes me relax and feel calm. But, fire is dangerous. especially if you fell asleep with your candels on. I want to make a bedroom lamp that glows and flicker like a candle . These two are the concept of the lamp I want to make. It's not just I want to make both type of lamps, but I want to make a lamp that switches between the two . The lamp will change mode like: Turns ON with sunlight silhouettes (birds, butterflies and flowers) moving around the lampshade. (Senses enviormantal light) Changes to candle mode at bedtime. (Senses enviormantal light going low) Turns OFF when everybody is asleep. (Timer or acoustic sensor) A lamp that changes mood depending on sunlight Daytime: projecting silhouettes on the lamp shade Nighttime: glows and flickers like a candle","title":"Final Project"},{"location":"final-project/#final-project","text":"","title":"Final Project"},{"location":"final-project/#plans-and-sketches-of-my-final-project","text":"Here I describe my final project idea. For my final project I would like to make a lamp that creates several different mood depending on the situation. Just putting a lamp in a room changes the atmosphere of the room. Every lighting equipment has its own mood. In the daytime, my favorite lighting equipment is a projector with streaming devices. Streaming devices like AppleTV and Chromecast show pictues and landscape movies when they are at screensaver mode. I love the way pictures and landscape moving slowly on my wall. So, I want to make a lamp with silhouettes moving around the lamp shade . I love watching candles before bedtime. It makes me relax and feel calm. But, fire is dangerous. especially if you fell asleep with your candels on. I want to make a bedroom lamp that glows and flicker like a candle . These two are the concept of the lamp I want to make. It's not just I want to make both type of lamps, but I want to make a lamp that switches between the two . The lamp will change mode like: Turns ON with sunlight silhouettes (birds, butterflies and flowers) moving around the lampshade. (Senses enviormantal light) Changes to candle mode at bedtime. (Senses enviormantal light going low) Turns OFF when everybody is asleep. (Timer or acoustic sensor)","title":"Plans and Sketches of my final project"},{"location":"final-project/#a-lamp-that-changes-mood-depending-on-sunlight","text":"Daytime: projecting silhouettes on the lamp shade Nighttime: glows and flickers like a candle","title":"A lamp that changes mood depending on sunlight"},{"location":"assignments/week01/","text":"Week 01. Principles and Practices / Project Management Assignments for this week plan and sketch a potential final project work through a git tutorial build a personal site in the class archive describing you and your final project What I've done this week Setting up PC enviroments Visual Studio Code (VScode) Git MkDocs Create a website Choose a style Customize website Plan a final project I want to make somethng to do with lights! Making images of my lamp How it would look like 1. Setting up PC enviroments The First thing I did this week was Setting up my PC enviroment . Here are the version of tools I use. MacBook Air (M1, 2020) macOS Monterey 12.3.1 VSCode 1.74.3 zsh 5.8 (x86_64-apple-darwin21.0) Homebrew 3.6.20 python 3.10.8 / pip 22.3.1 git 2.39.1 mkdocs 1.4.2 I changed my mac screenshot setting from the default(PNG) to JPG with the following command. defaults write com.apple.screencapture type jpg Choose Text Editor Tex Editors are software where you write your codes in. I chose VScode for my text editor. VScode has wide range of extensions that help you code, debug and visualise your work. Here are the extensions I installed for Fab Academy: Git History HTML CSS Support Markdown All in One Getting started with Git I followed this tutorial of Git. Step 1. Download Git brew install git Step 2. Identify user git config --global user.name \"sosuke\" git config --global user.email \"sosuke.kanegae@mat.eng.osaka-u.ac.jp\" Step 3. Check if there is any SSH-Key existing (check) cat ~/.ssh/id_rsa.pub If not generate SSH-Key. (generate) ssh-keygen -t rsa -C \"sosuke.kaneage@mat.eng.osaka-u.ac.jp\" Step 4. Check the public key you just created cat ~/.ssh/id_rsa.pub Clone my repository from GitLab to a local workspace Now so that I got Git ready, I prepaired a new directory to store everything I do with Fab Academy. cd ~/FabAcademy/ mkdir workspace In new workspace, I first cloned my repo on GitLab git clone https://gitlab.fabcloud.org/academany/fabacademy/2023/labs/kitakagaya/students/sosuke-kanegae.git Now, I have a newly cloned directory \"sosuke-kaneage\" in my workspace. And, I am ready to edit my website. Setting up MkDocs Using MkDocs, you can easily create documentatoin websites. You will have to code in HTML, CSS and JavaScript to create a website. However, in MkDocs all you have to edit is Markdowns, which is easy to use. Step 1. Install MkDocs pip install mkdocs Step 2. Create new Mkdocs project in workspace cd ~/FabAcademy/workspace mkdocs new fabacademy-docs Step 3. Launch test server mkdocs serve Now, I have a MkDocs project with the default settings in ~/FabAcademy/workspace/fabacademy-docs. And, I can check how the website will look in my browser( http://127.0.0.1:8000/ ). Build, Commit and Push After editing MkDocs project, I have to convert the markdowns to HTML files. cd ~/FabAcademy/workspace/fabacademy-docs mkdocs build The build commmand creates HTML files in ~/FabAcademy/workspace/fabacademy-docs/site/ To build directly into the git directory, add the following line to ~/FabAcademy/workspace/fabacademy-docs/mkdocs.yml % mkdocs.yml site_dir: ../sosuke-kanegae/public/ Finaly commit changes in local git repo and push to remote GitLab repo. git commit -a -m 'Comments about changes' git push Instead of commit and push in the command line, you can also commit and push from the Git tab in VScode. You can find the Git tab in the left column of the window. Click the tab and you will see a blue \"Commit\" button. Underneath the button, you can check the changes you made from last time. If you're good with the changes you can just simply press the \"Commit\" button. Or, you can select \"Commit & Push\" in the option of the \"Commit\" button. When everything is up to date in your local repo, the blue button will turn into a sync button. The number written on the button indicates how many times you commit since you last push git. To push you can simply press the sync button. Finally, when you have pushed and everything is up to date, the blue button will return into \"Commit\" and will be deativated 2. Create my website Choose a style There are several optional styles available for MkDocs. third party themes I chose Bootswatch Theme , because the menu interface was very useful. You can access to every page on my website easily. There is a content on every page, so you can jump to any h2 tag. Customize website I customize my website by editting: ~/FabAcademy/workspace/fabacademy-docs/mkdocs.yml I add Copyrights by adding the following line. copyright: Copyright 2023 Sosuke Kanegae - Creative Commons Attribution Non Commercial I made a link to the source code in GitLab by adding: repo_url: https://gitlab.fabcloud.org/academany/fabacademy/2023/labs/kitakagaya/students/sosuke-kanegae 3. Plan a final project I want to make something to do with lights! I'd like to make a lamp that changes its appearance depending on the situation for my final project. Just putting a lamp in a room changes the atmosphere of the room. Every lighting equipment has its own mood. Among lighting equipments used n the daytime, my favorite is a projector with streaming devices. Streaming devices like AppleTV and Chromecast show pictues and landscape movies when they are at screensaver mode. I love the way pictures and landscape moving slowly on my wall. So, I want to make a lamp with silhouettes moving around the lamp shade . I love watching candles before bedtime. It makes me relax and feel calm. But, fire is dangerous. especially if you fell asleep with your candels on. I want to make a bedroom lamp that glows and flicker like a candle . These two are the concept of the lamp I want to make. It's not just I want to make both type of lamps, but I want to make a lamp that switches between the two . The lamp will change mode like: Turns ON with sunlight silhouettes (birds, butterflies and flowers) moving around the lampshade. (Senses enviormantal light) Changes to candle mode at bedtime. (Senses enviormantal light going low) Turns OFF when everybody is asleep. (Timer or acoustic sensor) Making images of my lamp I visualized the concept above using 3D CAD, graphic editor and AI art generator. 3D CAD: Fusion360 graphic editor: Affinity Designer AI art generator: wonder Step 1. Modeling the outline of my lamp The first thing I made is a 3D model of the outline of my lamp. I modeled a lamp that is shaped like a large snowdome. I inserted a lightbulb in the lamp. Then I changed the appearance of each part as follewed: lampshade: Fabric(White) base: Oak lightbulb: A Type Bulb - Frosted - 1500lm Step 2. Render materials for the concept image Rendered several materials with several light conditions. Rendered images as PNG files with transparent background. material1: Whole lamp with lightbulb off material2: lamp without lampshade (lightbulb on) material3: lampshade with enviroment light from front material4: lampshade with enviroment light from back material5: base only material6: lampshade with bird silhouettes Step 3. Generate background with AI I used an iPhone app, wonder , to generate backgraound image. In this app, you can select the style of image. And, I selected \"3D Render\" Set the aspect ratio to 3:2. Set the keyword as \"coworking space\" This is what I got: I used this table as the background: Step 4. Edit images If you put the lamp on a table it will look like this: the lamp in each situation would look like this: Daytime : projecting silhouettes on the lamp shade Nighttime : glows and flickers like a candle","title":"Week01. Principles and Practices / Project Management"},{"location":"assignments/week01/#week-01-principles-and-practices-project-management","text":"","title":"Week 01. Principles and Practices / Project Management"},{"location":"assignments/week01/#assignments-for-this-week","text":"plan and sketch a potential final project work through a git tutorial build a personal site in the class archive describing you and your final project","title":"Assignments for this week"},{"location":"assignments/week01/#what-ive-done-this-week","text":"Setting up PC enviroments Visual Studio Code (VScode) Git MkDocs Create a website Choose a style Customize website Plan a final project I want to make somethng to do with lights! Making images of my lamp How it would look like","title":"What I've done this week"},{"location":"assignments/week01/#1-setting-up-pc-enviroments","text":"The First thing I did this week was Setting up my PC enviroment . Here are the version of tools I use. MacBook Air (M1, 2020) macOS Monterey 12.3.1 VSCode 1.74.3 zsh 5.8 (x86_64-apple-darwin21.0) Homebrew 3.6.20 python 3.10.8 / pip 22.3.1 git 2.39.1 mkdocs 1.4.2 I changed my mac screenshot setting from the default(PNG) to JPG with the following command. defaults write com.apple.screencapture type jpg","title":"1. Setting up PC enviroments"},{"location":"assignments/week01/#choose-text-editor","text":"Tex Editors are software where you write your codes in. I chose VScode for my text editor. VScode has wide range of extensions that help you code, debug and visualise your work. Here are the extensions I installed for Fab Academy: Git History HTML CSS Support Markdown All in One","title":"Choose Text Editor"},{"location":"assignments/week01/#getting-started-with-git","text":"I followed this tutorial of Git. Step 1. Download Git brew install git Step 2. Identify user git config --global user.name \"sosuke\" git config --global user.email \"sosuke.kanegae@mat.eng.osaka-u.ac.jp\" Step 3. Check if there is any SSH-Key existing (check) cat ~/.ssh/id_rsa.pub If not generate SSH-Key. (generate) ssh-keygen -t rsa -C \"sosuke.kaneage@mat.eng.osaka-u.ac.jp\" Step 4. Check the public key you just created cat ~/.ssh/id_rsa.pub","title":"Getting started with Git"},{"location":"assignments/week01/#clone-my-repository-from-gitlab-to-a-local-workspace","text":"Now so that I got Git ready, I prepaired a new directory to store everything I do with Fab Academy. cd ~/FabAcademy/ mkdir workspace In new workspace, I first cloned my repo on GitLab git clone https://gitlab.fabcloud.org/academany/fabacademy/2023/labs/kitakagaya/students/sosuke-kanegae.git Now, I have a newly cloned directory \"sosuke-kaneage\" in my workspace. And, I am ready to edit my website.","title":"Clone my repository from GitLab to a local workspace"},{"location":"assignments/week01/#setting-up-mkdocs","text":"Using MkDocs, you can easily create documentatoin websites. You will have to code in HTML, CSS and JavaScript to create a website. However, in MkDocs all you have to edit is Markdowns, which is easy to use. Step 1. Install MkDocs pip install mkdocs Step 2. Create new Mkdocs project in workspace cd ~/FabAcademy/workspace mkdocs new fabacademy-docs Step 3. Launch test server mkdocs serve Now, I have a MkDocs project with the default settings in ~/FabAcademy/workspace/fabacademy-docs. And, I can check how the website will look in my browser( http://127.0.0.1:8000/ ).","title":"Setting up MkDocs"},{"location":"assignments/week01/#build-commit-and-push","text":"After editing MkDocs project, I have to convert the markdowns to HTML files. cd ~/FabAcademy/workspace/fabacademy-docs mkdocs build The build commmand creates HTML files in ~/FabAcademy/workspace/fabacademy-docs/site/ To build directly into the git directory, add the following line to ~/FabAcademy/workspace/fabacademy-docs/mkdocs.yml % mkdocs.yml site_dir: ../sosuke-kanegae/public/ Finaly commit changes in local git repo and push to remote GitLab repo. git commit -a -m 'Comments about changes' git push Instead of commit and push in the command line, you can also commit and push from the Git tab in VScode. You can find the Git tab in the left column of the window. Click the tab and you will see a blue \"Commit\" button. Underneath the button, you can check the changes you made from last time. If you're good with the changes you can just simply press the \"Commit\" button. Or, you can select \"Commit & Push\" in the option of the \"Commit\" button. When everything is up to date in your local repo, the blue button will turn into a sync button. The number written on the button indicates how many times you commit since you last push git. To push you can simply press the sync button. Finally, when you have pushed and everything is up to date, the blue button will return into \"Commit\" and will be deativated","title":"Build, Commit and Push"},{"location":"assignments/week01/#2-create-my-website","text":"","title":"2. Create my website"},{"location":"assignments/week01/#choose-a-style","text":"There are several optional styles available for MkDocs. third party themes I chose Bootswatch Theme , because the menu interface was very useful. You can access to every page on my website easily. There is a content on every page, so you can jump to any h2 tag.","title":"Choose a style"},{"location":"assignments/week01/#customize-website","text":"I customize my website by editting: ~/FabAcademy/workspace/fabacademy-docs/mkdocs.yml I add Copyrights by adding the following line. copyright: Copyright 2023 Sosuke Kanegae - Creative Commons Attribution Non Commercial I made a link to the source code in GitLab by adding: repo_url: https://gitlab.fabcloud.org/academany/fabacademy/2023/labs/kitakagaya/students/sosuke-kanegae","title":"Customize website"},{"location":"assignments/week01/#3-plan-a-final-project","text":"","title":"3. Plan a final project"},{"location":"assignments/week01/#i-want-to-make-something-to-do-with-lights","text":"I'd like to make a lamp that changes its appearance depending on the situation for my final project. Just putting a lamp in a room changes the atmosphere of the room. Every lighting equipment has its own mood. Among lighting equipments used n the daytime, my favorite is a projector with streaming devices. Streaming devices like AppleTV and Chromecast show pictues and landscape movies when they are at screensaver mode. I love the way pictures and landscape moving slowly on my wall. So, I want to make a lamp with silhouettes moving around the lamp shade . I love watching candles before bedtime. It makes me relax and feel calm. But, fire is dangerous. especially if you fell asleep with your candels on. I want to make a bedroom lamp that glows and flicker like a candle . These two are the concept of the lamp I want to make. It's not just I want to make both type of lamps, but I want to make a lamp that switches between the two . The lamp will change mode like: Turns ON with sunlight silhouettes (birds, butterflies and flowers) moving around the lampshade. (Senses enviormantal light) Changes to candle mode at bedtime. (Senses enviormantal light going low) Turns OFF when everybody is asleep. (Timer or acoustic sensor)","title":"I want to make something to do with lights!"},{"location":"assignments/week01/#making-images-of-my-lamp","text":"I visualized the concept above using 3D CAD, graphic editor and AI art generator. 3D CAD: Fusion360 graphic editor: Affinity Designer AI art generator: wonder","title":"Making images of my lamp"},{"location":"assignments/week01/#step-1-modeling-the-outline-of-my-lamp","text":"The first thing I made is a 3D model of the outline of my lamp. I modeled a lamp that is shaped like a large snowdome. I inserted a lightbulb in the lamp. Then I changed the appearance of each part as follewed: lampshade: Fabric(White) base: Oak lightbulb: A Type Bulb - Frosted - 1500lm","title":"Step 1. Modeling the outline of my lamp"},{"location":"assignments/week01/#step-2-render-materials-for-the-concept-image","text":"Rendered several materials with several light conditions. Rendered images as PNG files with transparent background. material1: Whole lamp with lightbulb off material2: lamp without lampshade (lightbulb on) material3: lampshade with enviroment light from front material4: lampshade with enviroment light from back material5: base only material6: lampshade with bird silhouettes","title":"Step 2. Render materials for the concept image"},{"location":"assignments/week01/#step-3-generate-background-with-ai","text":"I used an iPhone app, wonder , to generate backgraound image. In this app, you can select the style of image. And, I selected \"3D Render\" Set the aspect ratio to 3:2. Set the keyword as \"coworking space\" This is what I got: I used this table as the background:","title":"Step 3. Generate background with AI"},{"location":"assignments/week01/#step-4-edit-images","text":"If you put the lamp on a table it will look like this:","title":"Step 4. Edit images"},{"location":"assignments/week01/#the-lamp-in-each-situation-would-look-like-this","text":"Daytime : projecting silhouettes on the lamp shade Nighttime : glows and flickers like a candle","title":"the lamp in each situation would look like this:"},{"location":"assignments/week02/","text":"Week 02. Computer Aided Design Assignments for this week model a possible final project compress my images and videos post a description with your design files on my class pages What I've done this week Draw a 2D model of the silhouettes generator an image of a bird with AI make a silhouette of a bird Model a structure to express the glowing and flickering of candles overlapping lattices overlapping lattice shell structures animation of the moving shells 1. Draw a 2D model of the silhouettes The first thing I did this week is to Draw the 2D model for silhouettes on my lamp generator an image of a bird with AI First, I used some AI art genorators to make some references of flying birds. wonder First, I used the same iPhone app as last week, wonder , to generate images of birds. This time I didn't select any style. Set the aspect ratio to 3:2. Set the keyword as \"bird flying\" This is what I got: Stable Diffusion The next AI art generator I tried was Stable Diffusion I entered each options as followed: option value prompt bird flying negative_prompt - width 768 height 512 num_outputs 4 The outputs were PNG files. I converted the images to JPG file. I made a bash file to convert every PNG file in a designated directory to JPG. png2jpg.sh for f in $1 /*.png ; do g = $( basename ${ f %.* } ) if [ ! -e $g .jpg ] ; then convert $f $g .jpg fi done To use this bash file, run the following command in cammoand line. bash png2jpg.sh pngs #directory with PNG files This is what I got: make a silhouette of a bird I chose this picture as an example. I imported the picture into Affinity Designer Then I traced the outline of the bird. Filled the line with black. Edited the silhouetted to change the angle of the bird. Tracing bitmaps Since, there is no functions to trace bitmaps in Affinity designer, I used Inkscape. It took me few steps to get the silhouette of the bird I used \"Path>Trace bitmap\" in the tool bar to get the silhouette of the bird. The bird was white, black, gray and blue. First I traced the white part by cutting off the dark part, and traced the black part by cutting off the bright part. Adding these paths together, I got a part of the silhouette of the bird. There were two difficult things I wasn't able to do: Get the silhouette of the head of the bird. Because, the head is overlapped with the left wing. Get the silhouette of the whole right wing Because, the gray part of the right wing was almost the same color with the shadows on the corners of the image. I tried with a different image: did the same process above and got: The gradient of brightness and the angle of the bird is an important factor in the term of selecting the image to use. 2. Model a structure to express the glowing and flickering of candles Last week, I modeled the outline of the lamp I plan to make for my final project. This week, I will model structure inside the lampshade. The structures will move and create shadow on the shade. the shadow will be a pattern that decorates the lamp. For the candle mode, I will use lattice shells to express the glowing and flickering of candels. overlapping lattices I will first draw an 2D example of lattices expressing candles flickering. To draw the lattices, I use python. Here are the python libraries I used. library version matplotlib 3.6.3 numpy 1.23.4 opencv 4.6.0.66 These were installed by followings: pip install matplotlib pip install numpy pip instell opencv-python Caution I failed to successfully create a mp4 files with opencv. A file was exported, but I could not open it. Insted of using opencv, I used ffmpeg. Step 1. Import libraries import cv2 import matplotlib.pyplot as plt import numpy as np import os import shutil import sys % matplotlib inline Step 2. Set the area to plot curves fig = plt . figure () ax = fig . add_subplot ( 111 , polar = True ) ax . grid ( False ) ax . set_yticklabels ([]) ax . set_xticklabels ([]) Step 3. Draw a curve in polar coordinates ax = plt . subplot ( 111 , polar = True ) ax . grid ( False ) ax . set_yticklabels ([]) ax . set_xticklabels ([]) x = np . linspace ( 0 , np . pi / 3 ) y = x / np . pi ax . plot ( x , y , c = 'k' ) Step 4. Multipy curves in a circular pattern def multipy ( ax , num , B , color ): for i in range ( num ): a = i * 2 * np . pi / num x0 = B * x + a y0 = x / np . pi ax . plot ( x0 , y0 , c = color ) fig = plt . figure () ax = fig . add_subplot ( 111 , polar = True ) ax . grid ( False ) ax . set_yticklabels ([]) ax . set_xticklabels ([]) x = np . linspace ( 0 , np . pi / 3 ) multipy ( ax , 8 , 1 , 'k' ) Step 5. Create curves bent in the oppsite direction fig = plt . figure () ax = fig . add_subplot ( 111 , polar = True ) ax . grid ( False ) ax . set_yticklabels ([]) ax . set_xticklabels ([]) x = np . linspace ( 0 , np . pi / 2 ) multipy ( ax , 12 , 1 , 'k' ) multipy ( ax , 10 , - 1 / 2 , 'k' ) Step 6. Make frame of two lattices rotating def rotate ( ax , num , B , d , color ): for i in range ( num ): a = i * 2 * np . pi / num x0 = B * x + a + d y0 = x / np . pi ax . plot ( x0 , y0 , c = color ) if os . path . exists ( 'frames' ): shutil . rmtree ( 'frames' ) os . mkdir ( 'frames' ) frame = 200 for j in range ( frame ): fig = plt . figure () ax = fig . add_subplot ( 111 , polar = True ) ax . grid ( False ) ax . set_yticklabels ([]) ax . set_xticklabels ([]) x = np . linspace ( 0 , np . pi / 2 ) multipy ( ax , 12 , 1 , 'k' ) multipy ( ax , 10 , - 1 / 2 , 'k' ) d = j * 2 * np . pi / frame rotate ( ax , 12 , 1 , d , 'k' ) rotate ( ax , 10 , - 1 / 2 , d , 'k' ) fig . savefig ( f './frames/pic_ { j : 02 } .jpg' ) plt . clf () plt . close () Step 7. Make video file First I tried opencv fourcc = cv2 . VideoWriter_fourcc ( * 'mp4v' ) video = cv2 . VideoWriter ( 'lattice_rotate.mp4' , fourcc , 20.0 , ( 100 , 100 )) if not video . isOpened (): print ( \"can't be opened\" ) sys . exit () for i in range ( frame ): img = cv2 . imread ( f './frames/pic_ { j : 02 } .jpg' ) if img is None : print ( \"can't read\" ) break video . write ( img ) video . release () print ( 'written' ) 'lattice_rotate.mp4' was exported. However, I couldn't open it in my PC. So, I tried ffmpeg, and got this: ffmpeg -r 20 -i ./frames/pic_%02d.jpg rotate.mp4 overlapping lattice shell structures Next, I modeled a 3D structure that make shadow like the video above. Step 1. Design the curve on lampshade Draw two curves (in purple) that corespond to Step 3 in the 2D lattice. Black lines are support line from the lightsource to points on the curves. Step 2. Loft the black lines to two curved surfaces Step 3. Thicken the surfaces Step 4. Create the base shell model of the lattice shell Step 5. Intersect the base shell and curved surface Step 6. Multiply the intersections by cilrcular pattern and Union all to get a llattice shell Step 7. Make an inner lattice shell Step 8. Make a movie of lattice shells rotating Shadow on shade will look like this: The next problem will be how to fix the lattice shells on the base, and how to make the lattice shells to rotate. Downloads Here are the files I created this week. Bird silhouette in Affinity designer (.afdesign) Bird silhouette in Inkscape (.svg) 2nd bird silhouette in Inkscape (.svg) Lamp in Fusion360 (.f3d)","title":"Week02. Computer Aided design"},{"location":"assignments/week02/#week-02-computer-aided-design","text":"","title":"Week 02. Computer Aided Design"},{"location":"assignments/week02/#assignments-for-this-week","text":"model a possible final project compress my images and videos post a description with your design files on my class pages","title":"Assignments for this week"},{"location":"assignments/week02/#what-ive-done-this-week","text":"Draw a 2D model of the silhouettes generator an image of a bird with AI make a silhouette of a bird Model a structure to express the glowing and flickering of candles overlapping lattices overlapping lattice shell structures animation of the moving shells","title":"What I've done this week"},{"location":"assignments/week02/#1-draw-a-2d-model-of-the-silhouettes","text":"The first thing I did this week is to Draw the 2D model for silhouettes on my lamp","title":"1. Draw a 2D model of the silhouettes"},{"location":"assignments/week02/#generator-an-image-of-a-bird-with-ai","text":"First, I used some AI art genorators to make some references of flying birds.","title":"generator an image of a bird with AI"},{"location":"assignments/week02/#wonder","text":"First, I used the same iPhone app as last week, wonder , to generate images of birds. This time I didn't select any style. Set the aspect ratio to 3:2. Set the keyword as \"bird flying\" This is what I got:","title":"wonder"},{"location":"assignments/week02/#stable-diffusion","text":"The next AI art generator I tried was Stable Diffusion I entered each options as followed: option value prompt bird flying negative_prompt - width 768 height 512 num_outputs 4 The outputs were PNG files. I converted the images to JPG file. I made a bash file to convert every PNG file in a designated directory to JPG. png2jpg.sh for f in $1 /*.png ; do g = $( basename ${ f %.* } ) if [ ! -e $g .jpg ] ; then convert $f $g .jpg fi done To use this bash file, run the following command in cammoand line. bash png2jpg.sh pngs #directory with PNG files This is what I got:","title":"Stable Diffusion"},{"location":"assignments/week02/#make-a-silhouette-of-a-bird","text":"I chose this picture as an example. I imported the picture into Affinity Designer Then I traced the outline of the bird. Filled the line with black. Edited the silhouetted to change the angle of the bird.","title":"make a silhouette of a bird"},{"location":"assignments/week02/#tracing-bitmaps","text":"Since, there is no functions to trace bitmaps in Affinity designer, I used Inkscape. It took me few steps to get the silhouette of the bird I used \"Path>Trace bitmap\" in the tool bar to get the silhouette of the bird. The bird was white, black, gray and blue. First I traced the white part by cutting off the dark part, and traced the black part by cutting off the bright part. Adding these paths together, I got a part of the silhouette of the bird. There were two difficult things I wasn't able to do: Get the silhouette of the head of the bird. Because, the head is overlapped with the left wing. Get the silhouette of the whole right wing Because, the gray part of the right wing was almost the same color with the shadows on the corners of the image. I tried with a different image: did the same process above and got: The gradient of brightness and the angle of the bird is an important factor in the term of selecting the image to use.","title":"Tracing bitmaps"},{"location":"assignments/week02/#2-model-a-structure-to-express-the-glowing-and-flickering-of-candles","text":"Last week, I modeled the outline of the lamp I plan to make for my final project. This week, I will model structure inside the lampshade. The structures will move and create shadow on the shade. the shadow will be a pattern that decorates the lamp. For the candle mode, I will use lattice shells to express the glowing and flickering of candels.","title":"2. Model a structure to express the glowing and flickering of candles"},{"location":"assignments/week02/#overlapping-lattices","text":"I will first draw an 2D example of lattices expressing candles flickering. To draw the lattices, I use python. Here are the python libraries I used. library version matplotlib 3.6.3 numpy 1.23.4 opencv 4.6.0.66 These were installed by followings: pip install matplotlib pip install numpy pip instell opencv-python Caution I failed to successfully create a mp4 files with opencv. A file was exported, but I could not open it. Insted of using opencv, I used ffmpeg.","title":"overlapping lattices"},{"location":"assignments/week02/#step-1-import-libraries","text":"import cv2 import matplotlib.pyplot as plt import numpy as np import os import shutil import sys % matplotlib inline","title":"Step 1. Import libraries"},{"location":"assignments/week02/#step-2-set-the-area-to-plot-curves","text":"fig = plt . figure () ax = fig . add_subplot ( 111 , polar = True ) ax . grid ( False ) ax . set_yticklabels ([]) ax . set_xticklabels ([])","title":"Step 2. Set the area to plot curves"},{"location":"assignments/week02/#step-3-draw-a-curve-in-polar-coordinates","text":"ax = plt . subplot ( 111 , polar = True ) ax . grid ( False ) ax . set_yticklabels ([]) ax . set_xticklabels ([]) x = np . linspace ( 0 , np . pi / 3 ) y = x / np . pi ax . plot ( x , y , c = 'k' )","title":"Step 3. Draw a curve in polar coordinates"},{"location":"assignments/week02/#step-4-multipy-curves-in-a-circular-pattern","text":"def multipy ( ax , num , B , color ): for i in range ( num ): a = i * 2 * np . pi / num x0 = B * x + a y0 = x / np . pi ax . plot ( x0 , y0 , c = color ) fig = plt . figure () ax = fig . add_subplot ( 111 , polar = True ) ax . grid ( False ) ax . set_yticklabels ([]) ax . set_xticklabels ([]) x = np . linspace ( 0 , np . pi / 3 ) multipy ( ax , 8 , 1 , 'k' )","title":"Step 4. Multipy curves in a circular pattern"},{"location":"assignments/week02/#step-5-create-curves-bent-in-the-oppsite-direction","text":"fig = plt . figure () ax = fig . add_subplot ( 111 , polar = True ) ax . grid ( False ) ax . set_yticklabels ([]) ax . set_xticklabels ([]) x = np . linspace ( 0 , np . pi / 2 ) multipy ( ax , 12 , 1 , 'k' ) multipy ( ax , 10 , - 1 / 2 , 'k' )","title":"Step 5. Create curves bent in the oppsite direction"},{"location":"assignments/week02/#step-6-make-frame-of-two-lattices-rotating","text":"def rotate ( ax , num , B , d , color ): for i in range ( num ): a = i * 2 * np . pi / num x0 = B * x + a + d y0 = x / np . pi ax . plot ( x0 , y0 , c = color ) if os . path . exists ( 'frames' ): shutil . rmtree ( 'frames' ) os . mkdir ( 'frames' ) frame = 200 for j in range ( frame ): fig = plt . figure () ax = fig . add_subplot ( 111 , polar = True ) ax . grid ( False ) ax . set_yticklabels ([]) ax . set_xticklabels ([]) x = np . linspace ( 0 , np . pi / 2 ) multipy ( ax , 12 , 1 , 'k' ) multipy ( ax , 10 , - 1 / 2 , 'k' ) d = j * 2 * np . pi / frame rotate ( ax , 12 , 1 , d , 'k' ) rotate ( ax , 10 , - 1 / 2 , d , 'k' ) fig . savefig ( f './frames/pic_ { j : 02 } .jpg' ) plt . clf () plt . close ()","title":"Step 6. Make frame of two lattices rotating"},{"location":"assignments/week02/#step-7-make-video-file","text":"First I tried opencv fourcc = cv2 . VideoWriter_fourcc ( * 'mp4v' ) video = cv2 . VideoWriter ( 'lattice_rotate.mp4' , fourcc , 20.0 , ( 100 , 100 )) if not video . isOpened (): print ( \"can't be opened\" ) sys . exit () for i in range ( frame ): img = cv2 . imread ( f './frames/pic_ { j : 02 } .jpg' ) if img is None : print ( \"can't read\" ) break video . write ( img ) video . release () print ( 'written' ) 'lattice_rotate.mp4' was exported. However, I couldn't open it in my PC. So, I tried ffmpeg, and got this: ffmpeg -r 20 -i ./frames/pic_%02d.jpg rotate.mp4","title":"Step 7. Make video file"},{"location":"assignments/week02/#overlapping-lattice-shell-structures","text":"Next, I modeled a 3D structure that make shadow like the video above.","title":"overlapping lattice shell structures"},{"location":"assignments/week02/#step-1-design-the-curve-on-lampshade","text":"Draw two curves (in purple) that corespond to Step 3 in the 2D lattice. Black lines are support line from the lightsource to points on the curves.","title":"Step 1. Design the curve on lampshade"},{"location":"assignments/week02/#step-2-loft-the-black-lines-to-two-curved-surfaces","text":"","title":"Step 2. Loft the black lines to two curved surfaces"},{"location":"assignments/week02/#step-3-thicken-the-surfaces","text":"","title":"Step 3. Thicken the surfaces"},{"location":"assignments/week02/#step-4-create-the-base-shell-model-of-the-lattice-shell","text":"","title":"Step 4. Create the base shell model of the lattice shell"},{"location":"assignments/week02/#step-5-intersect-the-base-shell-and-curved-surface","text":"","title":"Step 5. Intersect the base shell and curved surface"},{"location":"assignments/week02/#step-6-multiply-the-intersections-by-cilrcular-pattern-and-union-all-to-get-a-llattice-shell","text":"","title":"Step 6. Multiply the intersections by cilrcular pattern and Union all to get a llattice shell"},{"location":"assignments/week02/#step-7-make-an-inner-lattice-shell","text":"","title":"Step 7. Make an inner lattice shell"},{"location":"assignments/week02/#step-8-make-a-movie-of-lattice-shells-rotating","text":"Shadow on shade will look like this: The next problem will be how to fix the lattice shells on the base, and how to make the lattice shells to rotate.","title":"Step 8. Make a movie of lattice shells rotating"},{"location":"assignments/week02/#downloads","text":"Here are the files I created this week. Bird silhouette in Affinity designer (.afdesign) Bird silhouette in Inkscape (.svg) 2nd bird silhouette in Inkscape (.svg) Lamp in Fusion360 (.f3d)","title":"Downloads"},{"location":"assignments/week03/","text":"Week 03. Computer-Controlled Cutting Assignments for this week Group assignment characterize your lasercutter's focus, power, speed, rate, kerf, joint clearance and types Individual assignment cut something on the vinylcutter design, lasercut, and document a parametric construction kit account for the lasercutter kerf the kit must be able to be assembled in multiple ways (for extra credit) include elements that aren't flat What I've done this week Characterize my lasercutter's parameters About my lasercutter How to characterize Results of tests Parameters I recomand Cut a logo sticker on vinylcutter Design a logo Cut with Vinylcutter Make a parametric construction kit with lasercutter Design a construction kit Parameterize the constructoin kit Lasercut the construction kit Play with the constructionkit 1. Characterize my lasercutter's parameters Trotec Speedy 100 Technical data of Trotec Speedy 100 Working area 608 x 303 mm Max. height of workspace 170 mm Laser type CO2 Laser class 2 Focus length 2inches (approx. 5 cm) Max. processing speed 2.8 m/s Max. acceleration 40 m/s\u00b2 How to characterize In Jobcontrol for trotec you set the scanning speed, laser power, pulse rate and scanning iteration. I made a design to test the scanning speed and laser power for both cutting and engraving. You can define 16 different laser conditions at a time.the 16 laser conditions are identified by colors on the following table: No Color R G B 1 Black 0 0 0 2 Red 255 0 0 3 Blue 0 0 255 4 Desert 51 102 153 5 Cyan 0 255 255 6 Green 0 255 0 7 Grass 0 153 51 8 Forest 0 102 51 9 Olive 153 153 51 10 Brown 153 102 51 11 Walnut 102 51 0 12 Plum 102 0 102 13 Purple 153 0 204 14 Magen 255 0 255 15 Orange 255 102 0 16 Yellow 255 255 0 I designed the test model as the following images. I made this vector model in a SVG file, and ran the laser cutter row by row changing the the scanning speed every time. Results of tests Results from the Engraving test - Acrylic 2 mm: Results from the Cutting test - Acrylic 2 mm: From the cutting test, little conditions came out to completely cut. So, I tried scanning twice with the same conditions. Parameters I recomand From the results, the following laser parameters: Engrave Cut Power 100% 100% Speed 50% 1% Iteration 1 time 2 times Check kerf I used Kerf Check Parts Generator to make a model to check kerfs. The joints fit best in kerf of 0.05 mm. 2. Cut a logo sticker on vinylcutter Design a logo For the vinylcutter assignment I decided to make a logo stick. I planend the logo to be a homage of my final project. I'm planning my final project to be a lamp with lattice shells. So, I designed my logo as a perspective view of a lattice shell. Prepare a model to vinylcut Step1. Make a 3D model of lattice shell. Step 2. Cut the shell with a plane. Step 3. Project to the plane. Step 4. Move the projection to the base plane. Step 5. Fill the part Step 6. Turn the figure into binary image First I turn the boundary into binary image. In the next step I turn trace bitmap to turn the raster image into vector image. However, if the boundary was binary, the boundaries become double lines and the vinyl cutter will cut the lines twice. So, when you make the binary image you must fill the model with either black or white. Step 7. Make vector image. Trace bitmap in inkscape and save it as an EPS file. Caution I could not export EPS files in inkscape for Mac. So, I did it in Windows. Now I am ready to vinylcut! Cut logo with vinylcutter The vinylcutter I used was Graphtec Craft Robo Pro. Insert vinyl in to the cutter from the back. Set the blade Here are the settings of the cutter: Set thr cutter to the initial position. Load SVG EPS file to Graphtec Studio. View cutting ploter Send data to the cutter Cut with vinylcutter Remove vinyl from the cutter Cut off area with the logo Remove the parts you don't need Transfer the logo to a transfer sheet Finish! Stick the logo to my PC. 3. Make a parametric construction kit with lasercutter Design a parametric construction kit I designed a parameteric construction kit that could be constructed in 2 ways: press-fit with chamfer insert sticks in holes The main part of the kit is a right polygon with a groove for press-fit on the center of each edges and a hole on each corner. After, designing an edge I used circular pattern to make it a polygon. I also designed a support part to insert in holes. Here are the parameters for the kit. Lasercut the construction kit I made a SVG file for laser cutting. Laser cutted the kit This is how my kit looks like: Play with the construction kit Constructing the kit only with press-fit: Constructing the kit with press-fit & inserting: Files","title":"Week03. Computer controlled cutting"},{"location":"assignments/week03/#week-03-computer-controlled-cutting","text":"","title":"Week 03. Computer-Controlled Cutting"},{"location":"assignments/week03/#assignments-for-this-week","text":"Group assignment characterize your lasercutter's focus, power, speed, rate, kerf, joint clearance and types Individual assignment cut something on the vinylcutter design, lasercut, and document a parametric construction kit account for the lasercutter kerf the kit must be able to be assembled in multiple ways (for extra credit) include elements that aren't flat","title":"Assignments for this week"},{"location":"assignments/week03/#what-ive-done-this-week","text":"Characterize my lasercutter's parameters About my lasercutter How to characterize Results of tests Parameters I recomand Cut a logo sticker on vinylcutter Design a logo Cut with Vinylcutter Make a parametric construction kit with lasercutter Design a construction kit Parameterize the constructoin kit Lasercut the construction kit Play with the constructionkit","title":"What I've done this week"},{"location":"assignments/week03/#1-characterize-my-lasercutters-parameters","text":"","title":"1. Characterize my lasercutter's parameters"},{"location":"assignments/week03/#trotec-speedy-100","text":"Technical data of Trotec Speedy 100 Working area 608 x 303 mm Max. height of workspace 170 mm Laser type CO2 Laser class 2 Focus length 2inches (approx. 5 cm) Max. processing speed 2.8 m/s Max. acceleration 40 m/s\u00b2","title":"Trotec Speedy 100"},{"location":"assignments/week03/#how-to-characterize","text":"In Jobcontrol for trotec you set the scanning speed, laser power, pulse rate and scanning iteration. I made a design to test the scanning speed and laser power for both cutting and engraving. You can define 16 different laser conditions at a time.the 16 laser conditions are identified by colors on the following table: No Color R G B 1 Black 0 0 0 2 Red 255 0 0 3 Blue 0 0 255 4 Desert 51 102 153 5 Cyan 0 255 255 6 Green 0 255 0 7 Grass 0 153 51 8 Forest 0 102 51 9 Olive 153 153 51 10 Brown 153 102 51 11 Walnut 102 51 0 12 Plum 102 0 102 13 Purple 153 0 204 14 Magen 255 0 255 15 Orange 255 102 0 16 Yellow 255 255 0 I designed the test model as the following images. I made this vector model in a SVG file, and ran the laser cutter row by row changing the the scanning speed every time.","title":"How to characterize"},{"location":"assignments/week03/#results-of-tests","text":"Results from the Engraving test - Acrylic 2 mm: Results from the Cutting test - Acrylic 2 mm: From the cutting test, little conditions came out to completely cut. So, I tried scanning twice with the same conditions.","title":"Results of tests"},{"location":"assignments/week03/#parameters-i-recomand","text":"From the results, the following laser parameters: Engrave Cut Power 100% 100% Speed 50% 1% Iteration 1 time 2 times","title":"Parameters I recomand"},{"location":"assignments/week03/#check-kerf","text":"I used Kerf Check Parts Generator to make a model to check kerfs. The joints fit best in kerf of 0.05 mm.","title":"Check kerf"},{"location":"assignments/week03/#2-cut-a-logo-sticker-on-vinylcutter","text":"","title":"2. Cut a logo sticker on vinylcutter"},{"location":"assignments/week03/#design-a-logo","text":"For the vinylcutter assignment I decided to make a logo stick. I planend the logo to be a homage of my final project. I'm planning my final project to be a lamp with lattice shells. So, I designed my logo as a perspective view of a lattice shell.","title":"Design a logo"},{"location":"assignments/week03/#prepare-a-model-to-vinylcut","text":"Step1. Make a 3D model of lattice shell. Step 2. Cut the shell with a plane. Step 3. Project to the plane. Step 4. Move the projection to the base plane. Step 5. Fill the part Step 6. Turn the figure into binary image First I turn the boundary into binary image. In the next step I turn trace bitmap to turn the raster image into vector image. However, if the boundary was binary, the boundaries become double lines and the vinyl cutter will cut the lines twice. So, when you make the binary image you must fill the model with either black or white. Step 7. Make vector image. Trace bitmap in inkscape and save it as an EPS file. Caution I could not export EPS files in inkscape for Mac. So, I did it in Windows. Now I am ready to vinylcut!","title":"Prepare a model to vinylcut"},{"location":"assignments/week03/#cut-logo-with-vinylcutter","text":"The vinylcutter I used was Graphtec Craft Robo Pro. Insert vinyl in to the cutter from the back. Set the blade Here are the settings of the cutter: Set thr cutter to the initial position. Load SVG EPS file to Graphtec Studio. View cutting ploter Send data to the cutter Cut with vinylcutter Remove vinyl from the cutter Cut off area with the logo Remove the parts you don't need Transfer the logo to a transfer sheet Finish! Stick the logo to my PC.","title":"Cut logo with vinylcutter"},{"location":"assignments/week03/#3-make-a-parametric-construction-kit-with-lasercutter","text":"","title":"3. Make a parametric construction kit with lasercutter"},{"location":"assignments/week03/#design-a-parametric-construction-kit","text":"I designed a parameteric construction kit that could be constructed in 2 ways: press-fit with chamfer insert sticks in holes The main part of the kit is a right polygon with a groove for press-fit on the center of each edges and a hole on each corner. After, designing an edge I used circular pattern to make it a polygon. I also designed a support part to insert in holes. Here are the parameters for the kit.","title":"Design a parametric construction kit"},{"location":"assignments/week03/#lasercut-the-construction-kit","text":"I made a SVG file for laser cutting. Laser cutted the kit This is how my kit looks like:","title":"Lasercut the construction kit"},{"location":"assignments/week03/#play-with-the-construction-kit","text":"Constructing the kit only with press-fit: Constructing the kit with press-fit & inserting:","title":"Play with the construction kit"},{"location":"assignments/week03/#files","text":"","title":"Files"}]}