Decimify: Plugin Giảm Polygon & Giảm Lưới SketchUp Miễn Phí

Tải Decimify cho SketchUp (.rbz miễn phí) →

Decimify là plugin giảm polygon SketchUp miễn phí: nó dựng lại lưới bên trong một Group hoặc Component với ít tam giác hơn, ngay tại chỗ, trong model của bạn. SketchUp không có sẵn thao tác đó. Soften/Smooth và Hide chỉ đổi cách vẽ cạnh — tài liệu SketchUp nói rõ rằng soften biến các mặt bị cạnh đó giới hạn thành “a surface entity”, còn cạnh bị hide thì “remains in your model but disappears from view”. Một chiếc sofa trông mượt có đúng bằng số tam giác của chiếc sofa vỡ facet, và làm viewport nặng y như nhau. SketchUp có import và export .glb sẵn (File > Import, và File > Export > 3D Model → GLTF Binary File), nhưng hộp thoại import chỉ có một tuỳ chọn là Preserve Drawing Origin: không có bước nào giảm lưới của file bạn đang nạp vào.

Decimify giảm polygon mô hình ghế ngay trong SketchUp

Video

Model nặng có bốn nguyên nhân khác nhau — chỉ một là do số polygon

Dùng sai công cụ là lý do việc “tối ưu file SketchUp” thường chẳng thay đổi gì. Xác định nguyên nhân trước:

  • Quá nhiều tam giác trong geometry bạn nhìn thấy — nội thất tải từ 3D Warehouse, model scan, file GLB của nhà cung cấp, cây cối chi tiết. Đây là vấn đề số polygon, và là nguyên nhân duy nhất trong bốn cái mà Decimify xử lý.
  • Định nghĩa không dùng bị import kéo theo — component, vật liệu, style không ai đặt vào scene. Màn hình không đổi, file thì phình. Purge Unused dọn những định nghĩa không còn ai tham chiếu.
  • Cạnh rác, face trùng, mảnh đồng phẳng vụn — đây là việc làm sạch, không phải việc giảm lưới. CleanUp³ xoá và gộp đống rác đó.
  • Texture quá lớn — giảm kích thước ảnh. Không công cụ geometry nào chạm tới phần này.

Giảm tam giác không cứu được một file mà phần nặng là 900 định nghĩa component chưa từng được đặt vào scene. Nói thẳng điều đó mới làm phần còn lại của trang này đáng tin.

Cơ chế giảm lưới thực sự diễn ra thế nào

Engine là một crate Rust biên dịch sang WebAssembly; phần JavaScript quanh nó chỉ chuyển byte và vẽ kết quả. Nó chạy edge collapse lặp theo Quadric Error Metrics (QEM — Garland & Heckbert, SIGGRAPH 1997) trên biểu diễn progressive mesh của Hoppe (SIGGRAPH 1996), cộng thêm cấu trúc wedge để UV seam sống sót qua mỗi lần collapse. Bộ phân loại vertex là bản port bảng collapse của meshoptimizer.

Hai hệ quả bạn cảm nhận được ngay:

  • Việc tính toán chỉ làm một lần, và làm tới đáy. Khi selection nạp vào, Decimify collapse nó xuống còn khoảng bốn face và ghi lại từng bước collapse dưới dạng một split có thể đảo ngược. Ngay khi thanh tiến trình chạy xong, mọi mức giảm đã tồn tại sẵn.
  • Slider không tính lại simplification. Kéo slider chỉ là đi tiến hoặc đi lùi trên chuỗi đã ghi — đơn điệu theo cả hai chiều, chi phí là dựng lại buffer chứ không phải giải lại bài toán. Mức 0 là trường hợp riêng: nó phục hồi thẳng geometry gốc chứ không tua lại chuỗi.

Simplification chạy trong một pool Web Worker (hardwareConcurrency - 1, tối thiểu một), mỗi worker giữ sẵn bộ simplifier riêng cho từng sub-mesh, nên selection nhiều đối tượng được dựng song song.

Lưới của bạn không bao giờ rời khỏi máy. Toàn bộ traffic đi ra chỉ gồm kiểm tra đăng nhập, gọi hạn mức ngày, một beacon GIF 1×1 và các file tĩnh của chính tool — không có geometry, không có byte texture, không có file nào được upload. Nhưng đây không phải tool offline: trang dialog được phục vụ từ decimify.3dshouse.com, nên mở nó vẫn cần mạng.

Con số phần trăm nghĩa là gì

Slider là tỷ lệ tam giác mục tiêu, áp riêng cho từng sub-mesh: 60% tức là yêu cầu mỗi sub-mesh giữ lại 40% số tam giác của chính nó. Đó không phải số vertex và không phải hạn mức cho cả scene — mười đối tượng ở mức 50% thì mỗi cái giảm 50%, không chia chung. Panel báo kết quả đạt được riêng (“Faces: current / original” và “Ratio”), và hai con số có thể lệch nhau: sub-mesh dưới bốn face không bao giờ vào simplifier, còn mesh bị ghim UV từng mặt có thể từ chối collapse hoàn toàn. Hãy đọc tỷ lệ đạt được, đừng đọc vị trí thanh kéo.

Giảm một Group hoặc Component, từng bước

  1. Chọn đúng một Group hoặc ComponentInstance. Decimify từ chối mọi trường hợp khác bằng câu rõ ràng: “Select one group or component to simplify”, “Select exactly one group or component”, “Selection must be a group or component”, “Selection has no faces”. Geometry rời phải group lại trước. Group và component lồng bên trong selection được đọc đệ quy, nên cả một cụm lắp ghép vẫn tính đủ.
  2. Mở Extensions > Decimify — hoặc toolbar Decimify — rồi bấm Import Selection. Face được đọc dưới dạng polygon kèm lỗ, không bị SketchUp tam giác hoá trước, và vật liệu mặt trước / mặt sau được mang theo riêng.
  3. Kéo slider và đánh giá kết quả trong dialog. Model của bạn chưa thay đổi gì.
  4. Bấm nút ghi kết quả; nhãn của nó cho biết chính xác nó sẽ làm gì. Update to Selection nạp lại đúng định nghĩa bạn vừa import, tại chỗ. Load to Origin tạo một định nghĩa mới ở gốc toạ độ cho model nạp từ file. Update in Model nạp lại định nghĩa mới đó ở những lần bấm sau.

Phần ghi về model mới là nơi có những chi tiết đáng giá:

  • Nạp lại tại chỗ là lý do các instance vẫn liên kết. Decimify xoá và nạp lại chính ComponentDefinition, nên mọi lần đặt component đó cập nhật cùng lúc — giảm một cái ghế thì cả bốn mươi cái nhẹ theo.
  • Cả lần ghi về là một lần Edit > Undo duy nhất, dù nó chia thành bao nhiêu đợt.
  • Nó được chia đợt khoảng 5.000 tam giác mỗi lần một cách có chủ ý, mỗi đợt đủ nhỏ để xong trong khoảng 100–300 ms, và instance gốc được đặt vào trước khi vòng lặp nạp bắt đầu — SketchUp chỉ vẽ lại ở ranh giới operation, nên bạn thấy geometry hiện dần thay vì ngồi nhìn cửa sổ đứng máy.
  • Model nạp từ file nằm dưới một định nghĩa gốc tổng hợp tên GLTF_Root (SketchUp tự thêm #1, #2…), với một ComponentDefinition cho mỗi node của cây phân cấp nguồn.

Từng tuỳ chọn, và khi nào nên đổi

Decimify SketchUp settings panel
Panel có tiêu đề Simplification; các nhãn dưới đây là nhãn đúng trong bản đang chạy, không phải tên cũ bạn có thể thấy ở nơi khác.

Tuỳ chọn Mặc định Tác dụng thật, và khi nào nên đổi
Lock boundaries Bật Mọi vertex nằm trên cạnh hở bị đóng băng, và trạng thái khoá lan quanh các góc dùng chung. Tắt khi muốn giảm sâu hơn trên mesh kín hoàn toàn; giữ bật khi đường biên của vật thể phải chính xác.
Preserve creases Bật Cạnh sắc được gán thêm một mặt phẳng lỗi, và mọi collapse tạo ra nếp gấp 90° hoặc sắc hơn đều bị từ chối thẳng. Chỉ tắt khi bạn thật sự muốn một khối mượt — góc vuông sẽ bị tròn đi.
Maintain UV Bật Đây là công tắc quyết định model có texture có giảm được hay không. Xem phần dưới.
Smooth angle (°) 90 Chỉ có ở bản SketchUp, áp dụng lúc ghi về model. Cạnh trong mà hai face mở góc bằng hoặc rộng hơn giá trị này sẽ được đặt soft và smooth; nếp gấp sắc hơn thì để cứng. Hạ giá trị xuống thì càng nhiều cạnh được làm mềm. Cạnh biên được cố ý để lộ làm đường viền.

Cả bốn tuỳ chọn được ghi nhớ giữa các lần dùng. Lưu ý: trạng thái soft/smooth của model gốc không được đọc làm dữ liệu vào — nó được dựng lại hoàn toàn từ giá trị Smooth angle khi geometry ghi về, nên chính giá trị đó quyết định bề mặt cong sau khi giảm sẽ shading thế nào.

Maintain UV: công tắc đứng sau chuyện “kéo slider mà không thấy gì”

Đây là tuỳ chọn quan trọng nhất, và lỗi nó gây ra trông y như tool bị hỏng. Khi một face có UV được ghim theo từng góc — thường gặp nhất là đồ bọc nệm dựng trong SketchUp, hoặc asset có texture tải từ 3D Warehouse — mỗi tam giác mang một ô UV riêng tại từng vertex dùng chung. Với Maintain UV bật, simplifier thấy UV gián đoạn ở mọi vertex và từ chối collapse. Slider chạy; số face gần như không đổi.

App sẽ nói cho bạn biết khi đây là nguyên nhân: khi mức giảm trên slider vượt mức giảm đạt được hơn 20 điểm, nó hiện dòng “Maintain UV is limiting reduction — try disabling it in Settings.”

Đánh đổi, nói đúng bản chất:

  • Bật — kết quả giữ texture giống hệt bản gốc, nhưng slider có thể bị kẹt.
  • Tắt — giảm được thoải mái, và UV được dựng lại lúc render: vị trí hiện tại của mỗi góc còn sống được giải theo toạ độ barycentric trong tam giác gốc của nó, nên hoa văn từng mặt được giữ mà không cần chiếu lại texture trong SketchUp. Vì các face kề nhau được giải độc lập — đúng theo cách SketchUp chiếu texture từng mặt — nên có thể xuất hiện đường seam mảnh ở chỗ các góc lệch nhau.

Trong dialog bạn chỉ cần bật/tắt: session tự dựng lại, không phải import lại. Nếu một model cần vừa giảm sâu vừa giữ texture sạch, cách xử lý thật nằm ở thượng nguồn — re-UV nó trong Blender, Maya hay RizomUV để các face kề nhau dùng chung ô UV, rồi đưa lại vào.

Giới hạn thật, nói thẳng

  • Kết quả là tam giác — một SketchUp Face cho mỗi tam giác. Không có bước gộp mặt đồng phẳng và không có cạnh nào bị ẩn: Decimify chỉ đặt soft + smooth cho cạnh trong theo quy tắc Smooth angle, đó là thứ làm bề mặt cong shading đúng, nhưng vùng phẳng vẫn bị chia thành tam giác. Hãy tính đến điều đó nếu sau này bạn phải sửa mặt hoặc cần quad topology ở bước tiếp theo. Mọi trang nói Decimify “tự ẩn và làm mềm cạnh đồng phẳng” là sai, kể cả phiên bản cũ của trang này.
  • Vật thể nhỏ về mặt kích thước mất face vì SketchUp, không vì thuật toán. SketchUp hàn vertex trong khoảng 1/1024 inch (≈0,001″), nên tam giác có cả ba góc rơi vào trong dung sai đó bị từ chối lúc tạo face. Ren vít, trang sức, lưới mắt nhỏ: scale vật thể to lên, giảm, rồi scale lại. Biến số ở đây là kích thước, không phải mức giảm.
  • Topology non-manifold được phân loại, không được sửa. Vertex biên chỉ collapse vào vertex biên hoặc vertex bị khoá, seam chỉ vào seam, còn vertex bị khoá thì không collapse vào đâu cả. Mesh bẩn đơn giản là giảm được ít hơn.
  • Mesh ghim UV từng mặt có thể kẹt dù slider còn dư đường. Bộ phân loại được để bảo thủ có chủ ý, khớp với meshoptimizer gốc; chính code gọi đây là một defect còn tồn cho đúng trường hợp đồ bọc nệm nặng.
  • Vertex color không được mang theo. UV là thuộc tính duy nhất simplifier theo dõi.
  • Không có giới hạn dung lượng file hay số tam giác nào trong code; trần thực tế là bộ nhớ của cửa sổ trình duyệt nhúng. Giao diện dialog chỉ có tiếng Anh.

Cài plugin Decimify cho SketchUp

⬇ Tải xuống

  1. Trong SketchUp: Extensions > Extension Manager > Install Extension, chọn file decimify.rbz.
  2. Khởi động lại SketchUp. Bạn sẽ có mục Extensions > Decimify và một toolbar Decimify.
  3. Đăng nhập tài khoản 3dshouse miễn phí ở lần mở dialog đầu tiên — nó đẩy việc đăng nhập sang trình duyệt thường của bạn rồi quay lại với đúng tài khoản đó.

Hai điều đáng biết về cập nhật. File .rbz chỉ chứa Ruby: giao diện được nạp từ decimify.3dshouse.com khi mở dialog, nên cải tiến đến tay bạn mà không phải cài lại gì, và chỉ cần .rbz mới khi phần Ruby thay đổi. Và extension không bao giờ tự cài gì — nó so sánh phiên bản, hiện thông báo, còn nút Download thì mở file .rbz trong trình duyệt.

Yêu cầu

  • SketchUp 2022 trở lên. Phiên bản cũ hơn sẽ nhận một message box chỉ sang bản chạy trên trình duyệt. Hai lý do cứng của mốc này: bundle dialog nhắm engine Chromium 88 mà SketchUp 2022 nhúng sẵn, và việc tạo face hàng loạt dùng Sketchup::EntitiesBuilder.
  • Kết nối internet, và một tài khoản 3dshouse miễn phí.

Plugin hay bản web — bạn cần cái nào?

Cả hai bản render cùng một giao diện, từ cùng một code. Chọn theo chỗ model đang nằm:

  • Plugin SketchUp khi geometry nặng đã nằm trong model, hoặc kết quả phải ghi trở lại model. Import Selection, ghi về model, đơn vị của chính model và tuỳ chọn Smooth angle chỉ có ở đây.
  • Bản web khi bạn có file GLB hoặc STL và không cần mở SketchUp — giảm lưới ngay trên tab trình duyệt với đúng slider đó, rồi tải kết quả về.

Cả hai bản đều import GLB và STL. Xuất ra GLB nhị phân (kèm vật liệu và texture) hoặc STL nhị phân (chỉ geometry); không có xuất USDZ. Một lần mua Pro dùng được cho cả hai bản.

Miễn phí vs Pro

Miễn phí nghĩa là đủ mọi tính năng ở mọi mức giảm — không chặn chất lượng, không chặn mức giảm. Thứ bị đếm là lượt lấy kết quả ra: 3 lượt mỗi ngày UTC cho mỗi tài khoản, trong đó một lượt là một lần ghi về SketchUp hoặc một lần xuất file. Xem trước, kéo slider và dựng lại đều không tính lượt. Decimify Pro bỏ giới hạn đó; ngoài ra hai bản không khác gì nhau.

Miễn phí Pro
Lượt ghi về / xuất mỗi ngày 5 (reset lúc nửa đêm UTC) Không giới hạn
Mức giảm Mọi mức Mọi mức
Tính năng, tuỳ chọn, định dạng Đủ Đủ
Định dạng xuất GLB, STL GLB, STL
Giá Miễn phí với tài khoản 3dshouse $40 mua một lần

Pro gắn với tài khoản của bạn, không phải license key và không phải số ghế, nên nó mở khoá ngay trong dialog đang mở — không cần khởi động lại, không phải dán mã nào.

⬆ Nâng cấp lên Pro

Mua một lần dùng được cả hai — plugin SketchUp và bản web. Không thuê theo năm, không giới hạn số ghế.

Câu hỏi thường gặp

Cách giảm lưới trong SketchUp như thế nào?

Nhóm geometry lại, chọn đúng một Group hoặc Component, mở Extensions > Decimify, bấm Import Selection, kéo slider mức giảm và nhìn dòng Faces / Ratio báo kết quả thật, rồi bấm nút ghi kết quả về model. Soften/Smooth và Hide của SketchUp không xoá face nào nên không giải quyết được việc này.

Có plugin giảm lưới trong SketchUp miễn phí không?

Decimify miễn phí với tài khoản 3dshouse: đủ mọi tính năng, mọi mức giảm, giới hạn 3 lượt ghi về model hoặc xuất file mỗi ngày UTC. Xem trước và kéo slider không tính lượt. Pro bỏ giới hạn ngày, $40 mua một lần.

Giảm polygon có làm file SketchUp nhẹ đi không?

Phần geometry nhẹ đi vì còn ít face và edge hơn. Nhưng phần lớn file .skp phình to vì lý do khác: component, vật liệu và style không ai dùng vẫn nằm trong file. Chạy Purge Unused trước; nếu nó lấy lại được phần lớn dung lượng thì vấn đề chưa bao giờ là số polygon.

Giảm polygon online mà không cần cài plugin được không?

Được. Bản chạy trên trình duyệt dùng đúng giao diện và đúng engine đó cho file GLB hoặc STL, không cần cài gì, không cần mở SketchUp, xuất ra GLB hoặc STL nhị phân.

Thêm công cụ SketchUp của 3dshouse
  • BevelUp — bo tròn hoặc vát cạnh thành hình học thật, chỉ một cú nhấp
  • Tracepen — chuyển ảnh thành mặt SketchUp
  • TileUp — biến một mặt thành gạch 3D thật, kèm bảng bóc tách
Nguyen Huu Khanh

Architect turned developer