Hình ảnh SVG cong cho bề mặt 3D trong OpenSCAD
Cuối cùng, một phương pháp để ánh xạ hình ảnh SVG (đen trắng) lên các bề mặt cong bằng OpenSCAD, với một số ví dụ.
Mô tả
Tôi sản xuất rất nhiều sản phẩm tùy chỉnh với hình ảnh và văn bản nhúng từ các tệp SVG và PNG bằng cách sử dụng OpenSCAD, nhưng tôi đã cảm thấy thất vọng vì việc này không dễ dàng với bề mặt cong.
Các ví dụ tôi đã tìm thấy trong quá khứ tập trung vào hình ảnh PNG và áp dụng một phép trừ hình học trực tiếp, nhưng tôi muốn có khả năng chọn lựa giữa việc thêm, trừ hoặc chỉ tạo ra một đối tượng cong độc lập. Hình ảnh PNG có thể tạo ra một số hiện tượng khối rất xấu trừ khi sử dụng hình ảnh có độ phân giải cao, điều này thực sự ảnh hưởng đến việc kết xuất và thường gặp giới hạn phần cứng.
Cuối cùng, tôi đã bị thúc ép đủ để thử lại và đã tạo ra một đoạn mã OpenSCAD hoạt động với hình ảnh SVG. Tôi đã làm cho nó hoạt động đến một mức độ với hình ảnh PNG nhưng không cho nhiều tông màu xám với độ sâu khác nhau, như tôi đã làm với các mặt phẳng phẳng. Tôi nghĩ rằng điều này sẽ cần thêm một số công việc nữa nên tôi đã loại bỏ chức năng PNG tạm thời. Hình ảnh SVG kết xuất nhanh hơn và không gặp phải các vấn đề về tỷ lệ mà hình ảnh PNG gặp phải.
Nhiều công lao thuộc về Justin Lin vì đã cung cấp một số lý thuyết và mã ví dụ đã giúp tôi hiểu được cách tiếp cận tại đây.
Đoạn mã này, không cần thêm plugin, có thể nhận, dưới dạng danh sách, một số hình ảnh và quấn chúng quanh một bề mặt cong, về cơ bản là bề mặt hình trụ. Hình ảnh có thể được điều chỉnh tỷ lệ, xoay, lật và định vị độc lập quanh một bán kính tại một vị trí góc và chiều cao. Các hình cầu và các bề mặt không đều khác sẽ cần nhiều nỗ lực hơn nhưng đây là một bước đi đúng hướng cho hiện tại.
Kích thước của các hình ảnh cần được biết (tìm chúng bằng cách sử dụng Inkscape hoặc ứng dụng tương tự) vì chúng là cần thiết cho các phép tính. Có một vài hình ảnh được bao gồm mà tôi không có nguồn gốc. Xem những điều này như không có giấy phép thương mại và được sử dụng hoàn toàn để minh họa mã. Đừng sử dụng chúng trong các dự án mà không kiểm tra nguồn gốc của chúng. Nếu bạn là chủ sở hữu bản quyền trí tuệ của những hình ảnh này thì xin hãy cho tôi biết và tôi sẽ xóa chúng.
Một hình ảnh của một con rồng.
Nhiều hình ảnh của một trái tim ở các vị trí góc độ, độ cao và xoay khác nhau. Dòng trên cùng cũng đã bị lật.
Mã có 2 ví dụ về việc tạo nổi và ‘lún’ (không phải là một từ thực) một hình trụ bằng cách sử dụng OpenSCAD, nhưng stl của các hình ảnh tự nó có thể được sử dụng trực tiếp trong một slicer như một phần bổ sung hoặc cắt bớt.
Một ví dụ về hình trụ "lún".
Một ví dụ về hình trụ nổi.
Lưu ý: Nên sử dụng phiên bản nightly build của OpenSCAD và sử dụng tính năng Manifold để tăng tốc độ xử lý theo cấp số nhân. Tăng số lượng đoạn đường cong sẽ có ảnh hưởng đáng kể đến thời gian kết xuất, đặc biệt với nhiều hình ảnh.
Tôi đã chuyển nguồn đến Github để theo dõi bất kỳ thay đổi nào tại đây.