- โปรเจ็กต์ที่ผสาน การพิมพ์ 3 มิติและการสร้างเชิงกระบวนการ เพื่อสร้างผลงานศิลปะโครงสร้างซับซ้อน
- ประกอบด้วยอัลกอริทึมสร้างเส้นทางที่เชื่อมจุดที่วางแบบสุ่มด้วยสปลายน์ พร้อม ควบคุมความชันและรัศมีการหมุน
- เพื่อแก้ปัญหา การควบคุมความเร็วและแรงเสียดทาน จึงกำหนดรัศมีการหมุนขั้นต่ำและใช้การเอียงโค้งมากเป็นพิเศษ เพื่อให้แทร็กมีเสถียรภาพ
- ส่วนค้ำยันถูกสร้างด้วย ระบบอนุภาคเป็นพื้นฐาน โดยคำนึงทั้งรูปทรงเชิงสุนทรียะและเสถียรภาพของโครงสร้าง
- โปรเจ็กต์นี้ก้าวข้ามข้อจำกัดของ OpenSCAD และมีแผน เขียนใหม่บนพื้นฐาน SDF และปรับปรุงการจำลองความเร็ว ในอนาคต
ภาพรวมโปรเจ็กต์
- Marble Fountain คือประติมากรรมโครงสร้างศิลปะซับซ้อนที่พิมพ์ด้วยเครื่องพิมพ์ 3 มิติ โดยใช้เทคนิคการสร้างเชิงกระบวนการ
- หลังเข้าทำงานที่ Formlabs ผู้เขียนได้ใช้เครื่องพิมพ์ประสิทธิภาพสูง จึงลองสร้างโครงสร้างอัลกอริทึมขนาดใหญ่
- โครงสร้างนี้ถูกออกแบบโดยมีเป้าหมายให้เป็น “งานศิลปะที่ซับซ้อนที่สุด”
- ในการพิมพ์ 3 มิติ ความซับซ้อนไม่ได้ส่งผลต่อต้นทุน และข้อจำกัดของการออกแบบถูกกำหนดโดยเวลาที่ใช้ทำงานบน CAD
แทร็ก (Tracks)
- ระบบเริ่มต้นประกอบด้วยขั้นตอน วางจุดแบบสุ่ม → เชื่อมด้วยสปลายน์ → กำหนดความชันคงที่
- เวอร์ชันแรกเป็นเพียงการเจาะท่อออกจากโครงสร้างทึบ แต่เพื่อขยายความสามารถจึงเพิ่ม อัลกอริทึมแก้เส้นทาง (path solver)
- ตัวแก้เส้นทางเริ่มจาก ชุดของเส้นตรงแบบสุ่ม ที่เชื่อมด้านบนกับด้านล่าง
- เงื่อนไขเริ่มต้นมีผลอย่างมากต่อรูปร่างของโครงสร้าง และมีการทดลองดัดแปลงอัลกอริทึมหลายแบบ
- จุดต่าง ๆ บนเส้นทางปฏิบัติตามกฎดังนี้
- อยู่ภายในกรอบขอบเขต
- รักษาระยะห่างสม่ำเสมอ
- ถูกดึงให้คงระดับความสูงตามที่กำหนดเพื่อ รักษาความชันคงที่
- จำกัดรัศมีการหมุนต่ำสุดและสูงสุด
- ผลักกันและกัน กับแทร็กอื่นรวมถึงช่วงที่อยู่ไกลของแทร็กตัวเอง
- ทำให้การเปลี่ยนความชันนุ่มนวลขึ้นและ ป้องกันไม่ให้ความชันเพิ่มขึ้น
- ปัญหาการควบคุมความเร็ว ซับซ้อนกว่าที่คาด
- ลูกแก้วไม่ได้เคลื่อนที่เหมือนมวลจุด และการเปลี่ยนการเอียงของแทร็กส่งผลต่อโมเมนต์ความเฉื่อยการหมุนและแรงเสียดทาน
- บนช่วงทางตรง ความเร็วจะเพิ่มขึ้นมากเกินไป ส่วนในโค้งแคบมีความเสี่ยงที่จะชะลอจนหยุด
- วิธีแก้คือการ กำหนดรัศมีการหมุนขั้นต่ำ และ ใช้การเอียงโค้งมากเป็นพิเศษ เพื่อให้เกิดการสูญเสียความเร็ว
- โครงสร้างลิฟต์ทำงานคล้าย บอลสกรู (ball screw)
- ลูกแก้วช่วยจำกัดแกนสกรูจากทุกทิศทาง จึงหมุนได้โดยไม่ต้องมีแบริ่งด้านบน
- หากมีลูกแก้วอยู่เพียงด้านเดียว จะเกิดการสั่นรุนแรงจนลูกแก้วทั้งหมดหลุดออกจากแทร็ก ซึ่งเป็นโหมดความล้มเหลวแบบหนึ่ง
ส่วนค้ำยัน (Supports)
- การสร้างส่วนค้ำยันทำด้วยกระบวนการวนซ้ำแบบ จากบนลงล่างที่อิงระบบอนุภาค
- ใช้เวลากับการปรับรูปร่างเชิงสุนทรียะมากกว่าการหลีกเลี่ยงการชนกันของโครงสร้าง
- ใช้ประโยชน์จากขีดจำกัดการพิมพ์ส่วนยื่นของเครื่องพิมพ์อย่างเต็มที่
- กฎการทำงานของค้ำยันแต่ละชิ้น
- ดึงดูด ค้ำยันอื่นตามระยะทางและความคล้ายของขนาด
- ผลักออกจากกัน กับค้ำยันอื่น
- อยู่ภายในกรอบขอบเขต
- รักษารัศมีที่กำหนดจากศูนย์กลางของโครงสร้าง
- ค้ำยันมี ความเฉื่อย (inertia) ทำให้เกิด โครงสร้างเส้นโค้งแบบซุ้ม
แผนต่อไป (Looking forward)
- เวลา ส่งออกโมเดลสุดท้ายใช้ 5–20 นาที
- ยังมีโอกาสปรับปรุงประสิทธิภาพได้เพราะข้อจำกัดของ OpenSCAD
- มีการพิจารณา เขียนใหม่โดยใช้ไลบรารีที่อิง SDF ในอนาคต
- ระบบปัจจุบัน ยังไม่มีฟังก์ชันประเมินความเร็ว และพึ่งพา heuristic แบบง่าย
- การวัดความเร็วด้วยกล้องเพื่อ สร้างแบบจำลองความเร่ง อาจช่วยประหยัดเวลาได้
- การรักษาความชันคงที่ไม่เอื้อต่อการหลีกเลี่ยงการชนกัน แต่จำเป็นต่อการควบคุมความเร็ว
- มีแผนสำรวจ จุดวิกฤตที่พื้นผิวเริ่มลื่น (response curve)
มองย้อนกลับไป (Looking back)
- เป็น โปรเจ็กต์ส่วนตัวที่ใหญ่ที่สุด ใช้เวลาประมาณ 7 เดือน ตั้งแต่กุมภาพันธ์ถึงกันยายน 2024
- มีการเร่งทำงานช่วงท้ายเพื่อเตรียมส่งแสดงที่นิทรรศการ (New Alliance Gallery, Somerville)
- ระหว่างจัดแสดง ลูกแก้วหายไป 2–3 ลูกต่อชั่วโมง และมอเตอร์ร้อนเกินจนใช้งานได้ครั้งละเพียงไม่กี่ชั่วโมง
- โปรเจ็กต์ถูกพักไปเพราะทำงานหนักเกินไป และเผยแพร่อีกครั้งหลังจากผ่านไป 1 ปี
- มีการกล่าวขอบคุณ Alex เพื่อนร่วมงาน สำหรับคำแนะนำ ฟีดแบ็ก และการทดลองกับลูกแก้วนับไม่ถ้วน
สรุปทางเทคนิค
- เทคโนโลยีที่ใช้: Procedural Generation, 3D Printing, Python, OpenSCAD
- ลักษณะเชิงโครงสร้าง: อัลกอริทึมแก้เส้นทาง + ระบบค้ำยันแบบอนุภาค
- เป้าหมายทางศิลปะ: การผสานความซับซ้อนเชิงกลไกเข้ากับเส้นโค้งเชิงสุนทรียะ
- ไม่มีข้อมูลเพิ่มเติมในต้นฉบับ
1 ความคิดเห็น
ความเห็นจาก Hacker News
วิธีการใช้การจำลองอนุภาคเพื่อสร้าง โครงสร้างรองรับรูปทรงต้นไม้ ที่ดูเป็นธรรมชาตินั้นสร้างสรรค์มาก
เท่าที่ฉันเข้าใจคือ เขาน่าจะกำหนดกฎทางฟิสิกส์แล้วแมปแกน 'เวลา' ไปเป็นแกน z เพื่อรันการจำลอง
เลยสงสัยว่านี่เป็นวิธีที่มีอยู่แล้ว หรือเป็นสิ่งที่คิดขึ้นเองกันแน่ ไม่ว่าอย่างไร ผลลัพธ์ด้านความงามก็ยอดเยี่ยมมากจนอยากลองทำเอง
นักออกแบบ marble run มักเจอ ปัญหาลูกแก้วตกราง หากไม่ได้ใช้คอมพิวเตอร์
ต้องคอยสังเกตว่าลูกแก้วเด้งออกจากรางหรือติดขัดตรงไหน แล้วเดาสาเหตุพร้อมปรับด้วยมือ
แต่งานชิ้นนี้น่าประทับใจตรงที่ลูกแก้วไม่ตกรางเลยเป็นเวลาหลายชั่วโมง
รางนี้ประกอบด้วยรางคู่สองเส้น ทำให้ลูกแก้วสัมผัสอยู่สองจุดตลอดเวลา
หัวใจสำคัญน่าจะเป็นการรักษา banking (ความเอียงของโค้ง) ให้สมบูรณ์แบบ เพื่อให้แรงโน้มถ่วงกับแรงหนีศูนย์กลางสมดุลกัน
รางเอียงอย่างมากเพื่อไม่ให้ลูกแก้วเร็วเกินไปหรือเด้งออก
ดังนั้นลูกแก้วทุกลูกจึงไหลลงมาอย่างนุ่มนวลด้วยความเร็วแทบเท่ากัน
อย่างไรก็ตาม ทุก ๆ 30 นาทีจะยังมีตกรางประมาณหนึ่งลูก ฉันเลยอัดวิดีโอเพื่อหาช่วงที่มีปัญหา แล้วปรับปรุงด้วยการ แก้ generator code แล้วพิมพ์ใหม่ แทนการปรับด้วยมือ
กำลังคิดจะทำ feedback loop จากกล้องอยู่เหมือนกัน แต่คงจะกลายเป็นอีกโปรเจกต์หนึ่ง
งานชิ้นนี้สวยมาก ถ้าสามารถใช้รางเพื่อ เข้ารหัส/ถอดรหัสเสียง ได้ก็คงเท่มาก
เช่น ทำให้การเคลื่อนที่ของลูกแก้วสร้างความถี่ที่แตกต่างกัน
ถ้าใช้วัสดุที่ยืดหยุ่นกว่านี้หรือใช้ลูกปืนที่ใหญ่ขึ้นอาจจะพอเป็นไปได้ แต่ตอนนี้ขอโฟกัสกับการทำเวอร์ชันปกติให้เสร็จก่อน
ลิงก์ YouTube
คิดว่านี่เป็นตัวอย่างที่แสดงให้เห็น กรณีใช้งานในอุดมคติ ของเครื่องพิมพ์ 3D
ถ้าจะทำรางลูกแก้วที่เคลื่อนไหวลื่นไหลแบบนี้กับรูปทรงออร์แกนิกด้วยวิธีอื่น คงต้องใช้ความพยายามมหาศาล
วิดีโอทำออกมาได้ดีมาก ทั้ง เสียงบรรยายกับจังหวะดนตรีที่ซิงก์กัน และตัวผลงานเองก็อธิบายทุกอย่างได้หมด ยอดเยี่ยม
ฉันชอบงานชิ้นนี้มาก มันเต็มไปด้วยองค์ประกอบแบบ 'น่าพึงพอใจอย่างประหลาด'
ฉันเองก็กำลังใช้รางลูกแก้วอธิบายเรื่องความน่าจะเป็นให้เด็ก ๆ อยู่ พอมาเห็นสิ่งนี้บน HN ก็เหมือนมีคนอ่านใจฉันออก
ความเรียบง่ายแต่ การเคลื่อนไหวที่ชวนสะกดจิตและสวยงาม นั้นน่าประทับใจมาก
เปลวไฟ คลื่น การไหลของแม่น้ำ หน้าจอโทรทัศน์ ล้วนทำให้เราจ้องมองได้นานด้วยเหตุผลเดียวกัน
รางลูกแก้วนี้จริง ๆ แล้วเป็นระบบที่คาดเดาได้ แต่กลับยังดูเพลินอย่างน่าประหลาด
อยากเห็นเวอร์ชันที่ใส่ LED ในวัสดุสีขาวหรือโปร่งใส ด้วย น่าจะเหมือนถนนสายรุ้งเลย
ฉันก็กำลังทำโปรเจกต์คล้าย ๆ กันอยู่
ใช้ Python, Build123D และเครื่องพิมพ์ 3D เพื่อสร้าง รางลูกแก้วแบบ procedural generation
สงสัยว่าถ้าเทคนิคนี้ขยายต่อไป จะเปิดโอกาสให้เกิด ความคิดสร้างสรรค์ในระดับไหน ได้บ้าง
เช่น อาคารที่ประกอบกันเป็นบล็อก ๆ หรือโลกจริงแบบ Minecraft
และในภาพยนตร์ Fracture ก็มีเครื่องกลลูกแก้วเจ๋ง ๆ ปรากฏอยู่ด้วย
ลิงก์ YouTube