Bài viết Kỹ thuật By Kỹ Thuật Công Nghiệp Ánh Dương

Bài viết Kỹ thuật By Kỹ Thuật Công Nghiệp Ánh Dương

Rhino: Khắc Phục Lỗi Boolean Thất Bại (Có Bài Tập)

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.

Boolean thất bại thường do khối hở, mặt trùng hoặc dung sai không hợp.
Boolean thất bại thường do khối hở, mặt trùng hoặc dung sai không hợp.

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.

SelClosedPolysrf và ShowEdges tìm khối hở cần vá trước khi Boolean.
SelClosedPolysrf và ShowEdges tìm khối hở cần vá trước khi Boolean.

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.

Dịch khối cho xuyên qua rõ ràng, tránh mặt trùng khít gây lỗi.
Dịch khối cho xuyên qua rõ ràng, tránh mặt trùng khít gây lỗi.

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.

SelBadObjects và Check tìm lỗi khối; RebuildEdges sửa trước khi Boolean.
SelBadObjects và Check tìm lỗi khối; RebuildEdges sửa trước khi Boolean.

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.

Đặt dung sai file khớp kích thước mô hình để Boolean ổn định.
Đặt dung sai file khớp kích thước mô hình để Boolean ổn đị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.

Khi Boolean lỗi, Intersect-Split-Join thủ công luôn thực hiện được.
Khi Boolean lỗi, Intersect-Split-Join thủ công luôn thực hiện được.

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.

Sau Boolean thành công, dọn khối bằng MergeAllFaces và Purge.
Sau Boolean thành công, dọn khối bằng MergeAllFaces và Purge.

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.

Dựng khối kín, xuyên rõ và dung sai hợp lý giúp Boolean ít lỗi.
Dựng khối kín, xuyên rõ và dung sai hợp lý giúp Boolean ít lỗi.

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 1: đặt trụ chạm khít mặt hộp để Boolean thất bại.
Bài tập bước 1: đặt trụ chạm khít mặt hộp để Boolean thất bại.

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.

Bài tập bước 2: cho trụ xuyên rõ rồi BooleanUnion thành công, dọn khối.
Bài tập bước 2: cho trụ xuyên rõ rồi BooleanUnion thành công, dọn khối.

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.

Năm mẹo giúp Boolean chạy trơn và cách xử lý khi vẫn thất bại.
Năm mẹo giúp Boolean chạy trơn và cách xử lý khi vẫn thất bại.