éåèšèšè ãäœã£ããã©ãŠã¶åäœã®3Dã¢ãã«ãã¥ãŒã¢ãŒãVibe Codingã
éåèšèšè ãVibe codingã§STEPãã¡ã€ã«å¡ãåããã¥ãŒã¯ãŒãäœã£ã話
ã¯ããã«
ç§ã¯ãœãããŠã§ã¢ãšã³ãžãã¢ã§ã¯ãªããéåèšèšãçæ¥ã«ããŠããè ã§ããæ®æ®µã¯CADãœããã䜿ã£ãŠéåã®èšèšãããŠããŸãããããããªããŒã«ããã£ãã䟿å©ãªã®ã«ããšæãããšãæ¥åžžçã«ãããŸãã
ä»åäœã£ãã®ã¯ STEP Face Painter ãšããããã©ãŠã¶äžã§STEPãã¡ã€ã«ãéããŠFaceïŒé¢ïŒåäœã«è²ãå¡ãåããããWebã¢ããªã§ããããã°ã©ã ã®ç¥èã¯ä¹ããã§ãããè€æ°ã®AIããŒã«ã䜵çšããVibe codingã§å®æãããŸããã
éçºæéãšããŠã¯ä»äºã®åéãçž«ããªãããã¢ãã«ãã¡ãã·ã¥ãšããŠèªã¿èŸŒãã§è²ä»ãïŒJSON圢åŒã®ä¿åã»èªã¿åºããè¡ããšãããŸã§ã§2æ¥ïŒ5/22ïœ5/24ïŒã»ã©ã§ããã
è¿œå æ©èœãšããŠã3Dã¢ãã«ãB-REP圢åŒã§ã®èªã¿èŸŒã¿ããæž¬å®ããŒã«ãã¡ã¢æ©èœãªã©ã7æ¥ïŒ5/25ïœ5/31ïŒã»ã©ãåèšãšããŠçŽ10æ¥éã®äœæ¥ãšãªããŸããã
ã©ã€ã»ã³ã¹
æ¬ããŒã«ã¯ MITã©ã€ã»ã³ã¹ ã§å ¬éããŠããŸããåçšã»éåçšãåããèªç±ã«äœ¿çšã»æ¹å€ã»åé åžã§ããŸãã
䜿çšã©ã€ãã©ãªïŒ
- Three.js â MIT License
- opencascade.js â LGPL-2.1
å®éã®åäœ
ãªãäœã£ãã®ã
éåã補äœããããã§ãCADç°å¢ã®ç¡ãå å·¥éšéãå質管çéšéçãžè£œåã®æ³šæäºé ããéšåã®å å·¥æ¹æ³çãäŒããªããšãããªãããšãå€ããããŸãã
èšèšã¬ãã¥ãŒã®ãšãã«ããã®é¢ãšãã®é¢ã¯åãå·¥çšã§å å·¥ããããããã¯ããžç©Žã®ã·ãªãŒãºããšãã£ãæ
å ±ããå³é¢ãå£é ã§ã¯ãªã3Dã¢ãã«äžã§è²åãããŠäŒããããšåžžã
æããŠããŸããã
ãŸã補åéçºããŒã ãšè©±ãããããšãã«ããã¹ã¯ãªãŒã³ã·ã§ããããšã¯ã»ã«ã«åŒµãä»ããŠã¡ã¢æžããéããšãªããŠããšãå€ãã£ãã§ãã
æ¢åã®CADãã¥ãŒã¯ãŒã§ãè²åãã¯ã§ããŸãããé«äŸ¡ãªã©ã€ã»ã³ã¹ãå¿ èŠã ã£ãããç»é²ãå¿ èŠã»ã¢ãã«ã®ã¢ããããŒããå¿ èŠã ã£ããããŸãããã©ãŠã¶ã§éããŠãã䜿ããã·ã³ãã«ãªãã®ã欲ããã£ãããããåæ©ã§ãã
èŠä»¶ãšããŠæåããæ±ºããŠããããš
ããŒã«ã䜿ãçŸå Žã®ããšãèãããšã以äžã®3ç¹ã¯çµ¶å¯Ÿã«å€ããŸããã§ããã
ãã¡ã€ã«ããµãŒããŒã«ã¢ããããŒãããªã
éåã®åœ¢ç¶ããŒã¿ã¯äŒæ¥ã®æ©å¯æ
å ±ã§ããã¯ã©ãŠããµãŒãã¹ã«ããŒã¿ãéãããšãçŠããŠããäŒç€Ÿãå€ããã©ããªã«äŸ¿å©ã§ã䜿ããªãããŒã«ã«ãªã£ãŠããŸããŸãããã®ã¢ããªã¯ãã¹ãŠã®åŠçããã©ãŠã¶å
ã§å®çµãããŠãããããããŒã¿ãå€éšã«åºãããšã¯ãããŸããã
å®å
šãªãã©ã€ã³ã§åäœãã
å·¥å Žã®çŸå Žã§ã¯ã€ã³ã¿ãŒãããã䜿ããªãç°å¢ããããŸããããŒã«ã«ãµãŒããŒãç«ãŠãã°ãªãã©ã€ã³ã§ãåããUSBã¡ã¢ãªã«å
¥ããŠæã¡éã¶ããšããå¯èœã§ãã
ãŠãŒã¶ãŒç»é²ãäžèŠ
ã¢ã«ãŠã³ãäœæãå©çšç³è«ãå¿
èŠãªããŒã«ã¯ãçŸå Žãžã®å°å
¥ããŒãã«ãäžæ°ã«äžãããŸããURLãéãã ãã§äœ¿ãå§ããããããšãç®æããŸããã
ããŠã¹æäœäžèЧ
- å·Šã¯ãªãã¯ïŒæå®ã®è²ã§è²ä»ã
- å³ã¯ãªãã¯ïŒãã³ç§»å
- ããŠã¹ãã€ãŒã«ïŒæ¡å€§ã»çž®å°
- Shift + å·Šå³ã¯ãªãã¯ïŒã«ã¡ã©å転
äœã£ãŠãããã¡ã«é¢çœããªã£ãŠãã
æåã®ç®çã¯ãé¢ããšã«è²ãå¡ããããã ãã§ããã
ãã ãå®éã«åããã®ãã§ããŠãããšãã©ãããªã枬å®ããããããã¡ã¢ãæ®ããã䟿å©ããšãèšèšçŸå Žã§æããŠããããã£ããå¬ãããæ©èœã次ã ãšåœ¢ã«ãªã£ãŠãããŸããã
äžæ¹ã§ãæ©èœãå¢ããã»ã©æ°ãã€ããã®ãUIã®ã·ã³ãã«ãã§ããCADãœããã®çµéšããªã人ã§ãçŽæçã«äœ¿ããããšãéããç¬éã«äœãããã°ããããããããšãæ©èœã®å å®ãšããããããã®äž¡ç«ãåžžã«æèããªããäœãé²ããŸããã
ç¹ã«ãã ãã£ãã®ã粟å¯ãªåœ¢ç¶æž¬å®ã§ããèŠãç®ã®è·é¢æž¬å®ã§ã¯ãªããSTEPãã¡ã€ã«ã®B-RepïŒå¢ç衚çŸïŒã®ãžãªã¡ããªããŒã¿ãçŽæ¥åç §ããããšã§ãCADãœãããšåçã®ç²ŸåºŠã§ã®æž¬å®ãå®çŸããŠããŸããããªãŽã³ã¡ãã·ã¥ã«å€æããåŸã®è¿äŒŒå€ã§ã¯ãªããå ã®æ°åŠçãªåœ¢ç¶ããèšç®ããŠãããããæ²é¢ãæ²ç·äžã®ç¹ã§ãæ£ç¢ºãªå€ãåŸãããŸãã
3Däœçœ®ã¡ã¢ã¯ãã¢ãã«äžã®ä»»æã®é¢ã«ã¡ã¢ã貌ãä»ããŠCSVã§åºåã§ããæ©èœã§ããããã®ç©Žã¯ããããæž¬å®ããããšãããã®é¢ã¯åŸå·¥çšã§è¿œå å·¥ããããšãã£ã泚èšããå³é¢ãšã¯å¥ã«3Dã¢ãã«ã«çŽæ¥çŽä»ããŠæ®ããŸãã
æ°ã¥ãããåœåã®æ³å®ããæ©èœãããã¶ãå¢ããŠããŸããããã©ããèšèšçŸå Žã§å®éã«æ¬²ãããšæããŠãããã®ãªã®ã§ãäœã£ãŠããŠæ¥œããã£ãã§ãã
äœãã§ããã®ã
STEPãã¡ã€ã«ã®èªã¿èŸŒã¿ãšè¡šç€º
ããŒã«ã«ã®STEPãã¡ã€ã«ããã©ãŠã¶ã«ããããããã ãã§3D衚瀺ãããŸãããµãŒããŒãžã®ã¢ããããŒãã¯äžèŠã§ããã¹ãŠãã©ãŠã¶å ã§å®çµããŸãã
Faceåäœã®å¡ãåãïŒFaceIDã¢ãŒãïŒ
STEPãã¡ã€ã«ã¯B-RepïŒå¢ç衚çŸïŒãšãã圢åŒã§ãžãªã¡ããªãæã£ãŠãããé¢ïŒFaceïŒã²ãšã€ã²ãšã€ã«IDãæ¯ãããŠããŸãããã®FaceIDã䜿ã£ãŠãé¢ããšã«åå¥ã®è²ãèšå®ã§ããŸãã
- é¢ã¢ãŒãïŒã¯ãªãã¯ããé¢1æã«è²ãå¡ã
- ããŒãã¢ãŒãïŒãœãªããïŒéšåïŒåäœã§ãŸãšããŠå¡ã
éåèšèšã§ããã°å å·¥ã®é¢èããç åå å·¥æå®ããæŸé»å å·¥æå®ããé¡é¢ä»äžãé¢ããšãã£ãåºåããèŠèŠåããã®ã«äœ¿ããŸãã
è€æ°ããŒããå
¥ã£ããã¡ã€ã«ã ãšãã¢ãã«åäœã§è²åããè¡ããªã©ã§ããããã
ããŒãããªãŒã«ããè¡šç€ºåæ¿
ã¢ã»ã³ããªæ§é ã®STEPãã¡ã€ã«ã§ã¯ãããŒãããšã«è¡šç€ºã»é衚瀺ãåãæ¿ããããŸããè€éãªã¢ã»ã³ããªã§ãèŠããéšåã ãã確èªã§ããŸãã
ã«ã©ãŒããŒã¿ã®ä¿åãšèªã¿èŸŒã¿
å¡ãåããè²ã®æ å ±ã¯JSONãã¡ã€ã«ãšããŠä¿åã§ããæ¬¡åèªã¿èŸŒãã§åçŸã§ããŸããSTEPãã¡ã€ã«ãšã»ããã§ä¿ç®¡ããŠããã°ãã¬ãã¥ãŒã®ãã³ã«å¡ãçŽãå¿ èŠããããŸããã
ã¯ã€ãã¯ããŒã«
- 枬å®ã¢ãŒãïŒ2ç¹éã®è·é¢ãã¢ãã«ã®äœç©ã»è¡šé¢ç©ãèšæž¬
- æé¢ã«ããïŒã¢ãã«ãä»»æã®å¹³é¢ã§åæããŠæé¢ã確èª
- 3Dã¡ã¢ïŒã¢ãã«äžã®ä»»æã®äœçœ®ã«ã¡ã¢ã貌ãä»ããŠã¡ã¢ãªã¹ãã®ã¿ãCSVã§åºå
æè¡çãªæ§æ
ç§èªèº«ã¯ããã°ã©ã ãæžããªãã®ã§ãAIã«ããããããã®ãäœãããããšäŒããªããé²ããŸãããçµæãšããŠäœ¿ãããäž»ãªæè¡ã¯ä»¥äžã®ãšããã§ãïŒAIããæããŠããã£ãå 容ããŒã¹ã§ãïŒã
opencascade.js
STEPãã¡ã€ã«ã®èªã¿èŸŒã¿ãšããŒã¹ã«äœ¿ã£ãŠããã©ã€ãã©ãªã§ããããšããšã¯C++ã§æžãããCADã«ãŒãã«ãOpenCASCADE TechnologyïŒOCCTïŒããWebAssemblyã«å€æãããã®ã§ãã
ããã«ãã£ãŠããµãŒããŒãªãã§ãã©ãŠã¶ã ãã§STEPãã¡ã€ã«ãè§£æããFaceIDã®ååŸãB-Repâã¡ãã·ã¥ã®å€æãã§ããŠããŸãã
Three.js
3D衚瀺éšåã®ã©ã€ãã©ãªã§ããopencascade.jsã§å€æããã¡ãã·ã¥ããŒã¿ãThree.jsã§æç»ããŠããŸããèŠç¹æäœïŒè»éã³ã³ãããŒã«ïŒããšããžè¡šç€ºãæé¢ã«ããïŒClippingPlaneïŒãThree.jsã®æ©èœã掻çšããŠããŸãã
Cloudflare Pages
Cloudflare Pagesã§ãã¹ãã£ã³ã°ããŠããŸããGitHubãªããžããªãšé£æºããã ãã§èªåãããã€ãèšå®ã§ãããµãŒããŒè²»çšã¯ãŒãã§ããCDNã«ããé«éé ä¿¡ãç¡æã§äœ¿ããŸãã
Vibe codingã®é²ãæ¹
åºæ¬çãªæµãã¯ããã§ãã
- ãããããæ©èœã欲ããããæ¥æ¬èªã§AIã«äŒãã
- AIãã³ãŒããçæãã
- ãã©ãŠã¶ã§åãããŠç¢ºèªãã
- åããªãã£ãããæå³ãšéãåãããããããã®ç¶æ³ããã®ãŸãŸAIã«äŒãã
- 2ã«æ»ã
èšèšè ãšããŠããããããšãã«äœ¿ãããããããæ å ±ãèŠãããšå¬ããããšããçšéã®ã€ã¡ãŒãžã¯æç¢ºã«ããã®ã§ããã®éšåã¯AIããç§ã®ã»ãã詳ããã§ããéã«ã³ãŒãããªãåããªããã¯å šãããããŸããããAIãåæã«çŽããŠãããŸãã
è€æ°ã®AIããŒã«ã䜿ã£ãã®ã¯ãåŸæäžåŸæããã£ãããã§ããè©°ãŸã£ããšãã«å¥ã®AIã«æãããšè§£æ±ºããããšããããŸããã
èŠåŽããç¹
opencascade.jsã¯æ
å ±ãå°ãªããAIãæ£ç¢ºãªæ
å ±ãæã£ãŠããªãããšãå€ãã£ãã§ãããããæžãã°ã§ããã¯ãã§ãããšèšãããã³ãŒããåããªãããšãäœåºŠããããŸããããšã©ãŒã¡ãã»ãŒãžããã®ãŸãŸAIã«è²Œãä»ããŠããªãã§ããïŒããšç¹°ãè¿ããã¡ã«è§£æ±ºããŠããã®ã§ããããã®å·¥çšãäžçªæéãããããŸããã
console.logãèŠãŠé ããã°ããã®æã®åæ®ãéæã«ãããŸããã
ä»åŸã®äºå®
解決ããŠãªããæ®èª²é¡ã1ã€ãããŸãã
ããŒãã»ãã§ã€ã¹ã®è²å¡ãã«ãããŠãåæã¯ãã©ãã°æã«é£ç¶ããŠè²å¡ããã§ããŠããã®ã§ãããäœãã®æ©èœå®è£
æã«ã¯ãªãã¯ããç®æããçè²ã§ããªããªã£ãŠããŸãã
ããã¯ãªãã¹ãæ©ããã¡ã«çŽããããšã¯æã£ãŠããŸãã
远å ãšããŠæ¬²ããæ©èœãšããŠã¯ã以äžã®é ç®ã§ããããã
- ã¡ã¢ããŒã«äœ¿çšæãScreenShotã§ã¡ã¢ãä¿å
- ã¡ã¢ããŒã«ã®ãããŠã£ã³ãããã©ãã°ã§ç§»å
- ã€ã³ããŒã圢åŒã®æ¡åŒµ
ïŒIGESã¯æ¬²ãããSTLã»OBJã¯åºæ¥ãã°ãX_Tã»SABã»SATã¯å€åç¡çããïŒ - ã¯ã€ãã¯ããŒã«ã®æäœæåäžïŒãã€ã¡ãã¥ãŒåïŒïŒ
- ã¢ãã€ã«ç°å¢ã§ã®æäœæ§åäž
ãããã«
ããã°ã©ã ãæžããªãèšèšè ã§ãããäœãäœãããããããæç¢ºã§ããã°ãVibe codingã§å®çšçãªããŒã«ãäœããæä»£ã«ãªã£ããšå®æããŠããŸãã
ãã®ããŒã«ãåããããªèª²é¡ãæã€èšèšè ã®æ¹ã®åèã«ãªãã°å¹žãã§ãããã£ãŒãããã¯ãæ¹åææ¡ãããã°æè¿ããŸãã
ãœãŒã¹ã³ãŒãã¯GitHubã§å ¬éããŠããŸãã
Discussion