- โปรเจกต์โอเพนซอร์สที่คอมไพล์ OpenCascade เป็น WebAssembly และเชื่อมต่อกับ Three.js เพื่อให้สามารถสร้างแบบ แก้ไข และเรนเดอร์ 3D CAD บนเบราว์เซอร์ได้ในระดับที่ใกล้เคียงเนทีฟ
- รองรับความสามารถด้านการทำโมเดล CAD ที่หลากหลาย เช่น การสร้างรูปทรง 3D อย่างกล่อง ทรงกระบอก และรูปทรงหมุน, การสเก็ตช์ 2D, การทำ Boolean, extrude, loft, sweep และ offset
- มีฟีเจอร์ช่วยออกแบบและแก้ไขอย่างแม่นยำ เช่น object/workplane snap, การติดตามแกน, การตรวจจับจุดลักษณะเด่นอัตโนมัติ และไกด์ติดตามแบบภาพ
- มีเครื่องมือแก้ไขขั้นสูงในตัว เช่น chamfer/fillet/trim/split, การย้าย/หมุน/mirror, การวัดความยาว·พื้นที่·ปริมาตร, การจัดการเอกสาร และการนำเข้า/ส่งออกฟอร์แมตมาตรฐานอุตสาหกรรม (STEP, IGES, BREP)
- มอบประสบการณ์ผู้ใช้ที่เน้นงานจริงด้วย UI สไตล์ออฟฟิศ, การจัดการ assembly แบบลำดับชั้น, อินเทอร์เฟซหลายภาษา (i18n, รองรับจีนและอังกฤษ) และการควบคุม 3D viewport/กล้อง
ภาพรวม
- Chili3D เป็นแอปพลิเคชัน 3D CAD แบบโอเพนซอร์สบนเบราว์เซอร์ที่พัฒนาด้วย TypeScript
- แปลง OpenCascade (OCCT) เป็น WebAssembly และผสานกับ Three.js ทำให้สามารถสร้างแบบ/แก้ไข/เรนเดอร์ 3D ประสิทธิภาพสูงบนเว็บได้โดยตรงโดยไม่ต้องติดตั้ง
ฟีเจอร์หลัก
-
เครื่องมือโมเดลลิง
- รูปทรง 3D พื้นฐาน: สร้างกล่อง ทรงกระบอก ทรงกรวย ทรงกลม พีระมิด เป็นต้น
- สเก็ตช์ 2D: เส้น อาร์ก วงกลม วงรี สี่เหลี่ยม รูปหลายเหลี่ยม เส้นโค้งเบเซียร์
- การทำงานขั้นสูง: Boolean (union, difference, intersection), extrude, revolve, sweep, loft, offset, การสร้างหน้าตัด
-
การ snap และ tracking ที่แม่นยำ
- Object snap: snap ไปยังจุดลักษณะทางเรขาคณิต เช่น จุด ขอบ และพื้นผิวได้อย่างแม่นยำ
- ทำการจัดแนว 3D ที่ซับซ้อนได้ง่ายด้วยการติดตาม workplane/แกน, การตรวจจับจุดลักษณะเด่นอัตโนมัติ และไกด์แบบภาพ
-
เครื่องมือแก้ไข
- การลบมุมโค้ง (fillet), chamfer, trim, split, move, rotate, mirror เป็นต้น สำหรับการแก้ไขทั้ง 3D/2D ที่หลากหลาย
- การลบฟีเจอร์, การจัดการ subshape, การแยก compound object เป็นต้น สำหรับงานแก้ไขขั้นสูง
-
การวัดและการจัดทำเอกสาร
- การวัดมุมและความยาว, การคำนวณความยาวรวม/พื้นที่/ปริมาตร
- การสร้าง/บันทึก/โหลดเอกสาร, Undo/Redo แบบสมบูรณ์, การนำเข้า/ส่งออก STEP/IGES/BREP
-
ส่วนติดต่อผู้ใช้
- รองรับการจัดวางคำสั่งสไตล์ออฟฟิศ, การจัดการ assembly แบบลำดับชั้น, workplane แบบไดนามิก, การบันทึกตำแหน่ง 3D viewport/กล้อง เป็นต้น
- อินเทอร์เฟซหลายภาษา (จีน·อังกฤษ) และมีโครงสร้าง i18n ที่เปิดให้มีส่วนร่วมเพิ่มภาษาอื่นได้
เทคโนโลยีสแต็ก
- ฟรอนต์เอนด์: TypeScript, Three.js
- เอนจิน 3D: OpenCascade (WebAssembly)
- บิลด์: Rspack, ทดสอบ: Jest
สถานะการพัฒนาโอเพนซอร์ส
- อยู่ในขั้นAlpha โดย API/ฟีเจอร์/เอกสารยังคงได้รับการปรับปรุงอย่างต่อเนื่อง
- ยังมี breaking changes, เอกสารที่ยังไม่สมบูรณ์ และฟีเจอร์จำเป็นบางส่วนที่ยังไม่ได้พัฒนา
การมีส่วนร่วม·ไลเซนส์
- ยินดีรับการมีส่วนร่วมโอเพนซอร์สทั้งโค้ด บั๊ก และฟีดแบ็ก
- ไลเซนส์ AGPL-3.0 (สามารถติดต่อแยกต่างหากสำหรับการใช้งานเชิงพาณิชย์)
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
ตอนแรกอ่านคำอธิบายแล้วนึกว่าเป็นแค่โปรเจกต์ของเล่น 3D ธรรมดา ๆ แต่พอลองใช้จริงกลับน่าทึ่งมาก เร็วมากและ UI ก็ให้ความรู้สึกค่อนข้างใช้งานตรงไปตรงมาแม้สำหรับคนที่ย้ายมาจากเครื่องมืออื่น เสียดายมาตลอดที่ใช้ Fusion 360 บน OpenSUSE Tumbleweed ไม่ได้ แต่ดูเหมือนเครื่องมือนี้จะมาเติมช่องว่างนั้นได้ รู้สึกขอบคุณมาก
พอเห็นส่วนที่บอกว่า "คอมไพล์ OpenCascade(OCCT) เป็น WebAssembly แล้วนำมาใช้" ก็สงสัยทันทีว่าเลือก geometry kernel ตัวไหน ไลบรารีหลักสำหรับ solid modeling ที่เป็นแกนสำคัญจริง ๆ แล้วแทบมีแต่ของที่ใช้งานกันมาตั้งแต่หลายสิบปีก่อนเท่านั้นเอง (Parasolid ก็เกือบ 40 ปีแล้ว) เลยยิ่งรู้สึกว่าการสร้างของใหม่ขึ้นมานั้นยากมากจริง ๆ
ผมทำงานกับ BREP สำหรับงาน GIS อยู่ ซึ่งแม้แต่เส้นตรงธรรมดา ๆ ใน 2D ก็ยังกลายเป็นปัญหาที่ซับซ้อนมากได้ เป็นพื้นที่ที่มีกรณียกเว้นเกิดขึ้นเยอะมาก ระบบ type ช่วยได้มาก ดังนั้นถ้ามีโอเพนซอร์สที่ทำบน Rust ก็ดูน่ามีความหวังมาก อนึ่ง ผมลองย้ายจาก Fusion 360 ไป Freecad 1.0 แล้ว แม้ Freecad จะยังแทบไม่มีโปรเจกต์ แต่ประสบการณ์คือมันเร็วขึ้นอย่างท่วมท้น
โครงสร้างทางคณิตศาสตร์พื้นฐานของเรขาคณิต 3D แทบไม่ได้เปลี่ยนไปมากตลอดเวลายาวนาน หากค่าไลเซนส์ของเคอร์เนลอย่าง Parasolid หรือ ASICs ไม่ได้สูงมาก ก็แทบไม่มีความจำเป็นต้องสร้างโซลูชันใหม่ขึ้นมาเองเลย ช่วงหลังตลาดก็กำลังรวมศูนย์ผ่านการซื้อกิจการต่อเนื่องของบริษัทซอฟต์แวร์ CAD/CAM อย่าง Autodesk และ Hexagon ส่วน OpenCASCADE เองเดิมก็เป็นซอฟต์แวร์เชิงพาณิชย์ แต่เป็นกรณีที่หาลูกค้าได้ไม่มากพอจึงเปลี่ยนมาเป็นโอเพนซอร์ส
geometry kernel แบบโอเพนซอร์สแทบไม่มีอยู่จริง ที่พอมองเห็นเด่น ๆ ก็มีแค่ OpenCascade กับ CGAL เลยสงสัยว่ามีตัวอื่นอีกไหม
อยากหาอ่านเพิ่มเติมเกี่ยวกับวิธีจัดการปัญหาเรขาคณิตแบบนี้ให้ดี
ระดับนี้น่าทึ่งมาก แต่ยังมองไม่ค่อยออกว่าเขาจะทำฟีเจอร์อย่าง constraints หรือ sketches อย่างไร และการออกมาเป็นเว็บแอปก็มีส่วนที่น่าเสียดายนิดหน่อย แต่ก็กำลังยอมรับว่านี่คือทิศทางของการเปลี่ยนแปลง
ในฐานะคนที่ใช้ Chromebook ในโรงเรียน การมีเว็บแอปแบบนี้ถือว่ายอดเยี่ยมมาก ถ้านักเรียนสามารถพิมพ์ออก 3D printer ได้ด้วย ก็จะเปิดทางเลือกด้านเครื่องมือได้กว้างขึ้นมาก แต่ในฐานะครูและผู้ปกครองก็ยังเป็นห่วงว่าเด็กที่โตมากับ Chromebook อย่างเดียวอาจไม่รู้จัก local app, file system ฯลฯ เวลาลูกทำโปสเตอร์ เขามักค้นหารูปแล้วคัดลอก-วางไปมาระหว่างเครื่องมือบนเว็บหลายตัว แต่พอเราบอกว่าบนแอปเดสก์ท็อปอย่าง Affinity หรือ Photoshop ทำทั้งหมดได้ในที่เดียว เด็กกลับไม่ค่อยรู้สึกว่าเป็นเรื่องสำคัญ ซึ่งให้ความรู้สึกแปลก ๆ
เวอร์ชันปัจจุบันยังไม่มีฟีเจอร์นั้น แต่มีแผนจะเพิ่มเข้ามาในอนาคตในรูปแบบ parametric components
มากกว่าประเด็นว่าเป็นเว็บแอป ควรให้ความสำคัญกับเรื่อง parametric design อย่าง constraints และ sketches ว่าสำคัญแค่ไหน สำหรับผม นี่คือองค์ประกอบหลักที่ทำให้โปรแกรม CAD จะถูกมองว่าเอาจริงเอาจังได้หรือไม่
นี่เป็นตัวอย่างที่แสดงให้เห็นว่าเบราว์เซอร์ก็ทรงพลังได้ไม่แพ้ native app เมื่อเป็นแบบ browser-based ก็หมดปัญหาการผูกติดกับ OS และยังมีข้อดีอย่างการเปิดหรือแชร์ไฟล์ให้วิศวกรหรือนักเรียนทั่วโลกทำได้ง่ายขึ้น บนโน้ตบุ๊กใหม่ ๆ ประสบการณ์กลับเร็วกว่า native app เสียอีก สามารถเริ่มวาดได้ภายใน 30 วินาทีโดยไม่ต้องสมัครสมาชิก ไม่ต้องใช้อีเมล ไม่ต้องมี 2FA ที่ซับซ้อน และเมื่อเทียบกับเครื่องมือส่วนใหญ่อื่น ๆ ก็มีข้อได้เปรียบหลายด้านรวมถึงเรื่องค่าใช้จ่าย ช่วงนี้ผมใช้ SketchUp, AutoCAD, Revit อยู่ แล้วมาเจอเครื่องมือนี้ เลยรู้สึกตื่นเต้นกับอนาคตมาก
ชื่อไอคอนเครื่องมือบางอันค่อนข้างแปลกและไม่คุ้นเคย เช่น "Bessel", "pour corner", "From the cross section" น่าจะต้องเปลี่ยนเป็นคำอังกฤษที่ใช้กันทั่วไปใน CAD มากกว่า ระหว่างใช้งานภาษาดันสลับไปเป็นภาษาจีนกะทันหัน และก็ไม่มีวิธีง่าย ๆ ที่จะสลับกลับมาเป็นอังกฤษ เลยใช้งานลำบากอยู่เหมือนกัน
คิดว่าเป็นงานที่ยอดเยี่ยม โดยเฉพาะเวลาได้เห็นโปรเจกต์โอเพนซอร์สในพื้นที่ที่ถูกผู้เล่นไม่กี่รายอย่าง Dassault, Autodesk ฯลฯ ครองอยู่ก็ยิ่งน่ายินดี ช่วงนี้ก็ยังคาดหวังกับการเกิดขึ้นของสาย CAD ที่รับรู้บริบทโดยใช้ LLM และ AI ด้วย
ยอดเยี่ยมจริง ๆ ผมหาผลิตภัณฑ์ที่คล้าย OnShape แบบนี้มานานแล้ว ถ้าเป็นเครื่องมือแบบนี้ ต่อให้ต้องจ่ายหลายร้อยดอลลาร์ก็ยินดีมาก ตอนนี้รู้สึกว่าใบอนุญาต OnShape แพงเกินไป และการต้องจ่ายเกิน 1,000 ดอลลาร์เป็นภาระพอสมควร
ในฐานะพนักงานของ OnShape ผมคิดว่าถ้าใช้งานจริงเพื่อวัตถุประสงค์ที่ไม่ใช่เชิงพาณิชย์ และไม่ติดว่าต้องเปิดเอกสารเป็นสาธารณะ รุ่นฟรีของ OnShape ก็เพียงพอมากแล้ว ทุกวันนี้เทคโนโลยีสแตกที่ OnShape ใช้เพื่อคงไว้ซึ่งการบำรุงรักษา การขยายระบบ และประสิทธิภาพนั้นซับซ้อนมาก และมีต้นทุนการดำเนินงานสูงพอสมควร
ส่วนตัวรู้สึกว่าแพ็กเกจฟรีของ OnShape ก็ให้มาค่อนข้างใจกว้างมาก
ชอบอินเทอร์เฟซมาก อยากให้ FreeCAD มีอะไรในลักษณะนี้บ้าง โดยส่วนตัวผมเป็นสายสร้างโมเดลพาราเมตริกผ่าน Python interface แต่โปรเจกต์นี้ก็ดูเท่มาก สงสัยว่า CAD kernel ของโปรเจกต์ Truck มีแผนจะถูกนำไปใช้ทำโอเพนซอร์ส CAD หรือไม่ Truck เป็นโปรเจกต์ปัจจุบันที่ดูมีอนาคตมาก
CADmium ใช้ Truck kernel เป็นฐาน แต่ CADmium เองก็แทบไม่มีความเคลื่อนไหวตั้งแต่เดือนมิถุนายน 2024 แล้ว และนี่คือลิงก์ CADmium อีกทั้งยังมี Fornjot kernel ด้วย
อยากรู้แบบเจาะจงว่ามีอะไรในอินเทอร์เฟซของ FreeCAD ที่คุณไม่ชอบ
คิดว่าเป็นโปรเจกต์ที่ทำออกมาได้ดีมาก หวังว่าจะพัฒนาต่อไปเรื่อย ๆ โดยเฉพาะอยากเห็นการจับมือกับ 3D printer หรือผู้ผลิต เหมือนที่ EasyEDA ทำงานร่วมกับผู้ผลิตเพื่อการผลิต PCB เพื่อให้ผู้ใช้ทั่วไปสามารถผลิตงานจากดีไซน์ของตัวเองได้ง่าย ๆ ภายในไม่กี่คลิก
หาได้ยากมากที่จะมีโปรเจกต์ที่ได้ทั้งประสิทธิภาพและ UI ในระดับนี้ เลยรู้สึกตื่นเต้นมาก โปรแกรม 3D ที่ใช้งานง่ายและดูดีอย่างชัดเจนจริง ๆ มีน้อยกว่าที่คิดมาก เลยดีใจมากที่ได้เห็นแบบนี้ หวังว่าโปรเจกต์ลักษณะนี้จะมีออกมาอีกเยอะในอนาคต
UI ทำให้นึกถึงผลิตภัณฑ์ของ Microsoft ซึ่งกลับให้ความรู้สึกเชิงบวกพอสมควร อยากรู้ว่าคุณคิดว่ามันต่างจากเครื่องมือ 3D CAD ทั่วไปอย่างไร และอะไรคือแรงจูงใจที่ทำให้สร้างเครื่องมือนี้ขึ้นมา