เคยไหมเวลาอยากเข้าใจว่าเครื่องยนต์ V8 นาฬิกาจักรกล หรือกลไกพับล้อเครื่องบินทำงานอย่างไร พอไปอ่านบทความเจอแต่ข้อความยาวๆ ก็นึกภาพตามไม่ออก พอไปดูวิดีโอ 3D ก็กดหยุดหมุนดูมุมที่สงสัยเองไม่ได้
elvarofficial/teardown เข้ามาแก้ปัญหานี้ด้วยการเป็น Claude Code Skill ที่เปลี่ยนคำถามสั้นๆ อย่าง "สิ่งนี้ทำงานอย่างไร?" ให้กลายเป็น 3D Simulator แบบโต้ตอบได้ในไฟล์ HTML เพียงไฟล์เดียว ที่เปิดดูแบบออฟไลน์ได้ทันที หรือจะสั่งเรนเดอร์ออกเป็นวิดีโอ 60 fps พร้อมเสียงประกอบก็ทำได้ในตัว
ตัวอย่างหน้าจอ Mellis HB-7 Robotic Bee Simulator ที่แยกชิ้นส่วน (Exploded View) พร้อมแสดงค่าความถี่การกระพริบปีกและพลังงานแบบเรียลไทม์
แนวคิดหลักของ Teardown คือ "One Machine, One Page" (หนึ่งเครื่องจักร อยู่ในหน้าเดียว) เมื่อเราสั่งให้ Claude สร้างโมเดลจำลอง ผลลัพธ์ที่ได้ไม่ใช่แค่ภาพ 3D หมุนไปมา แต่เป็นห้องทดลองขนาดย่อมที่มีครบ 4 ส่วน:
โมเดล 3D ที่ขยับตามฟิสิกส์จริง — เครื่องจักรทำงานอยู่กลางหน้าจอ หมุนซูมดูได้รอบทิศทาง
โหมดผ่าดูภายใน (Cutaway & Isolate) — มีปุ่มกดเพื่อเปิดฝาครอบ ทำชิ้นส่วนให้โปร่งใสแบบกระจก (Glass/X-ray) หรือแยกดูเฉพาะกลไกส่วนที่กำลังออกแรงทำงาน
หน้าปัดและกราฟข้อมูลสด (Live Telemetry) — แผงข้อมูลรอบหน้าจอแสดงตัวเลขและกราฟที่คำนวณจากสมการเดียวกับตัวโมเดล 3D ค่าที่เห็นจึงตรงกับจังหวะการขยับของชิ้นส่วนเสมอ
ระบบนำชมอัตโนมัติ (Auto-Tour) — ถ้าเปิดหน้าเว็บทิ้งไว้เฉยๆ จะมีเคอร์เซอร์จำลองพาคลิกปุ่มเปลี่ยนมุมกล้องและผ่าดูชิ้นส่วนสำคัญให้เอง แต่ทันทีที่เราขยับเมาส์หรือกดปุ่ม ระบบจะส่งการควบคุมให้เราเล่นต่อทันที (และกลับเข้าโหมดนำชมเมื่อหยุดนิ่งครบ 25 วินาที)
โหมด Isolate ใน Telson SC-8 ที่เจาะดูชุดเฟืองและแรงบีบของก้ามหนีบ (Claw Grip) พร้อมกราฟแรงดันสด
ปัญหาคลาสสิกของการให้ AI เขียนโค้ด 3D คือชิ้นส่วนมักจะลอยทะลุกัน หรือกราฟกับตัวโมเดลขยับไม่ตรงจังหวะกัน Teardown จึงวางสถาปัตยกรรมและกฎเหล็กไว้ใน SKILL.md เพื่อบังคับให้ AI ทำงานเหมือนวิศวกรจริงๆ
โครงสร้างไฟล์ของเครื่องจักรแต่ละชิ้นจะถูกแบ่งหน้าที่ชัดเจน:
kin.js / gear.js (สมองกลไก): เก็บขนาดจริงตามสเปกวิศวกรรม (เช่น ระยะชักเป็นมิลลิเมตร จำนวนซี่เฟือง ความยาวก้านต่อ) แล้วคำนวณตำแหน่งทุกจุดจาก ตัวแปรต้นเพียงตัวเดียว (เช่น มุมข้อเหวี่ยง หรือแรงลม) ไฟล์นี้ห้ามมีโค้ด Three.js ปนอยู่เลย
engine.js + stage.js (ตัวหุ่นและฉาก): นำค่าที่ได้จากสมการมาสร้างและขยับรูปทรง 3D จัดไฟ เงา และเอฟเฟกต์
console.js (แผงหน้าปัด): นำค่าชุดเดียวกันมาวาดกราฟ ตัวเลข และเส้นชี้บอกชื่อชิ้นส่วน (Callout leaders)
พอทุกส่วนอ่านค่าจากสมการต้นทางเดียวกัน โมเดล 3D กราฟหน้าจอ และเสียงประกอบจึงไม่มีวันเพี้ยนออกจากกัน
ในโหมดอัดวิดีโอ (film.js ) การวาดภาพแต่ละเฟรมถูกเขียนเป็น Pure Function ที่ขึ้นอยู่กับเวลา t เท่านั้น ห้ามสุ่มค่าสดๆ ด้วย Math.random() และห้ามเก็บสถานะค้างข้ามเฟรม ทำให้ระบบสามารถกระโดดไปเรนเดอร์ภาพที่วินาทีใดก็ได้โดยได้ภาพเดิมเป๊ะทุกครั้ง
เพราะโมเดลภาษาไม่ได้นั่งดูวิดีโอเหมือนมนุษย์ Teardown จึงสร้างสคริปต์ให้ AI แคปภาพทุกจังหวะสำคัญออกมาเรียงต่อกันเป็นแผ่นภาพ (Contact Sheet) แล้วให้ AI ตรวจเช็กรายการต่อไปนี้ด้วยตัวเองก่อนส่งงาน:
กลไก: ชิ้นส่วนที่ต้องสัมผัสกันแตะกันจริงไหม? มีชิ้นไหนทะลุกันหรือเปล่า?
การจัดวาง: ป้ายชื่อทับชิ้นส่วนไหม? มีข้อความตกขอบจอหรือเปล่า?
แสงและวัสดุ: แสงสะท้อน (Bloom) จ้าจนกลืนรายละเอียดไหม? สีชิ้นส่วนกลืนกับพื้นหลังหรือเปล่า?
หากตรวจเจอจุดผิดพลาด AI จะกลับไปแก้ตัวเลขในโค้ด แล้วเรนเดอร์แผ่นภาพออกมาตรวจซ้ำจนกว่าจะผ่านครบทุกข้อ
Pelagos OC-8 เมื่อกดเปิดฝาครอบ (Mantle Open) เพื่อดูระบบปั๊มแรงดันน้ำด้านใน
แทนที่จะใช้ไฟล์เพลงสำเร็จรูปมาตัดแปะ Teardown ใช้ Python สังเคราะห์เสียงประกอบ (Procedural Sound) โดยอ่านจังหวะเวลาจากไฟล์ timeline.json เดียวกับตัววิดีโอ เสียงจังหวะลูกสูบระเบิด เสียงมอเตอร์หมุน หรือเสียงคลิกเปลี่ยนโหมดจึงตรงกับภาพระดับมิลลิวินาที พร้อมปรับความดังมาตรฐาน (-14 LUFS ) ให้โดยอัตโนมัติ
ในโปรเจกต์มีตัวอย่างสำเร็จรูป 3 ชิ้นที่แสดงศักยภาพของระบบไว้อย่างชัดเจน:
v8-* (เครื่องยนต์ Cross-plane V8): กระบอกสูบทำจากแก้วใสให้เห็นจังหวะจุดระเบิดตามลำดับ 1-8-4-3-6-5-7-2 วาล์วเปิด-ปิดตามเพลาลูกเบี้ยว พร้อมกราฟแรงดันในห้องเผาไหม้ที่วิ่งตามองศาข้อเหวี่ยงจริง
cessna-* (ชุดล้อเครื่องบิน Cessna 337): จำลองกลไกพับเก็บล้อเข้าลำตัวเครื่องบินด้วยเฟืองสะพาน (Rack & Pinion) ระยะชัก 201 มม. ขับเฟือง 32 ซี่ให้หมุนพับล้อ 180 องศาพอดี
strandbeest-* (สัตว์เดินชายหาดของ Theo Jansen): กลไกขาเดิน 20 ข้างบนเพลาข้อเหวี่ยงเดียว ขับเคลื่อนด้วยแรงลม คำนวณจุดหมุนด้วยวิธีตัดวงกลมจากความยาวก้านทั้ง 11 ชิ้นตามสูตรต้นฉบับของ Jansen
สิ่งที่ต้องมีในเครื่องคือ Node.js 20+ (และหากต้องการเรนเดอร์วิดีโอพร้อมเสียง ต้องมี ffmpeg กับ Python 3 เพิ่มเติม)
1. ติดตั้ง Skill เข้าสู่ Claude Code:
bash copy npx skills add elvarofficial/teardown -g -a claude-code
2. ติดตั้งแพ็กเกจและ Chromium (ทำครั้งเดียวในโฟลเดอร์ของสกิล):
bash copy npm install && npx playwright install chromium
3. ลองสั่งงาน Claude Code ด้วยประโยคธรรมดา:
text copy Build me a simulator of a 4-stroke motorcycle engine I can take apart.
หรือ
text copy Make a teardown of a hydraulic excavator arm and record a 20-second video of it.
หากอยากลองเปิดดูตัวอย่างที่มีอยู่แล้ว สามารถรันคำสั่ง build เพื่อสร้างไฟล์ HTML เดี่ยวๆ (ขนาดประมาณ 800 KB ที่รวม Three.js และฟอนต์ไว้ข้างในเรียบร้อย) ได้ทันที:
bash copy node sims/build.mjs v8-live
node sims/build.mjs cessna-live
node sims/build.mjs strandbeest-live
ไฟล์ที่ได้จะถูกเก็บไว้ที่ teardown-out/dist/ ซึ่งเราสามารถดับเบิลคลิกเปิดในเบราว์เซอร์ หรือส่งต่อให้คนอื่นเปิดดูได้โดยไม่ต้องพึ่งอินเทอร์เน็ตหรือรันเซิร์ฟเวอร์ใดๆ
Teardown ไม่ได้เป็นแค่เทมเพลตทำภาพ 3D แต่เป็นตัวอย่างของการออกแบบ Agent Skill ที่ครบวงจร ตั้งแต่วิธีคิดเชิงวิศวกรรม การแยกโครงสร้างโค้ด ระบบเรนเดอร์ภาพและเสียง ไปจนถึงขั้นตอนให้ AI ตรวจคุณภาพงานตัวเอง ใครที่ต้องทำสื่อการสอน อธิบายระบบวิศวกรรม หรืออยากเห็นว่า Claude Code สร้างชิ้นงาน Interactive ระดับโปรดักชันได้อย่างไร Repo นี้คือหนึ่งในตัวอย่างที่ควรลองเปิดศึกษาดูสักครั้ง