Boolean thất bại là lỗi phổ biến trong Rhino; hiểu nguyên nhân và cách sửa giúp bạn ghép khối trơn tru. Trong bài này bạn sẽ tìm hiểu:
- Vì sao Boolean thất bại
- Khối phải kín, không mặt trùng
- Xử lý mặt trùng và tự giao
- Chỉnh dung sai và làm sạch khối
- Bài tập chẩn đoán và ghép thành công
Và còn nhiều hơn thế nữa…
Boolean là công cụ ghép khối mạnh, nhưng cũng hay báo lỗi “Boolean failed”. Đa số nguyên nhân là khối hở, mặt trùng nhau hoặc dung sai. Bài viết chỉ ra các nguyên nhân và cách sửa, kèm bài tập ghép khối thành công.
Vì sao Boolean thất bại
Phép phép Boolean khối cần tính đường giao chính xác giữa các khối. Khi có vấn đề về hình học, Rhino không tính được đường giao liền mạch và báo lỗi. Ba nguyên nhân chính là: khối không kín, mặt của hai khối trùng nhau, và sai lệch do dung sai.
Hiểu đúng nguyên nhân là bước đầu để sửa nhanh.
Kiểm tra khối có kín không
Nguyên nhân số một là khối hở. Boolean cần các khối kín. Chọn các khối, chạy SelClosedPolysrf: nếu khối không được chọn, nó đang hở. Dùng ShowEdges tìm cạnh hở rồi Cap hoặc vá trước khi Boolean lại.
Xử lý mặt trùng nhau
Nếu hai khối có mặt trùng khít (nằm đúng cùng mặt phẳng), Boolean không biết cắt ở đâu và thất bại. Cách sửa: dịch một khối lệch đi một chút để mặt xuyên qua nhau rõ ràng, thay vì chạm khít. Chồng lấn nhẹ luôn tốt hơn chạm mép.
Kiểm tra đối tượng lỗi
Khối có thể chứa đối tượng lỗi (bad object) khiến Boolean thất bại. Chạy SelBadObjects để tìm; nếu có, dùng Check xem loại lỗi rồi sửa bằng RebuildEdges, ShrinkTrimmedSrf. Khối sạch lỗi mới Boolean ổn định.
Chỉnh dung sai file
Dung sai tuyệt đối (absolute tolerance) trong Options ảnh hưởng Boolean. Với mô hình nhỏ (mm), dung sai 0.001-0.01 hợp lý. Dung sai quá lớn làm đường giao thô; quá nhỏ làm Rhino không nối được. Đặt dung sai phù hợp với kích thước mô hình.
Dùng cách thay thế khi Boolean vẫn lỗi
Nếu Boolean vẫn thất bại, có cách thủ công: Intersect hai khối lấy đường giao, Split từng khối bằng đường đó, xóa các mảnh thừa, rồi Join các mảnh còn lại. Cách này chậm hơn nhưng luôn làm được khi Boolean tự động bó tay.
Làm sạch sau khi ghép
Sau khi Boolean thành công, dùng MergeAllFaces gộp mặt bị chia, SelClosedPolysrf xác nhận kín, và Purge dọn dữ liệu thừa. Khối sạch giúp các bước bo cạnh, xuất file về sau không gặp lỗi.
Phòng lỗi ngay từ đầu
Phòng hơn chữa: luôn dựng khối kín, cho các khối xuyên qua nhau rõ ràng (không chạm mép), giữ dung sai hợp lý, và kiểm tra SelBadObjects định kỳ. Thói quen này giúp phần lớn Boolean chạy trơn ngay lần đầu.
Bài tập bước 1: tạo tình huống lỗi
Bây giờ hãy tự làm. Dựng một hộp 60x60x30 và một trụ R20, đặt trụ sao cho mặt đáy trụ trùng khít mặt trên hộp (không xuyên vào). Thử BooleanUnion: nhiều khả năng thất bại vì mặt trùng.
Bài tập bước 2: sửa và ghép thành công
Dịch trụ lún vào hộp 2mm để xuyên qua rõ ràng. Chạy SelClosedPolysrf xác nhận cả hai kín. BooleanUnion lại: lần này thành công. MergeAllFaces dọn mặt và SelClosedPolysrf kiểm tra. Bạn vừa chẩn đoán và sửa một lỗi Boolean.
Mẹo tránh lỗi Boolean
Để Boolean luôn trơn tru, hãy ghi nhớ các nguyên tắc dưới đây, đặc biệt là dựng khối kín và cho xuyên qua rõ ràng.