File OBJ là một trong những định dạng 3D gặp nhiều nhất khi bạn tải mô hình trên mạng, nhận file từ máy quét 3D hay xuất từ phần mềm đồ họa như Blender, 3ds Max, ZBrush. Nó cũng là định dạng gây nhiều câu hỏi nhất khi đem đi in: mở ra thì mất màu, nằm nghiêng 90 độ, hoặc to bằng cả cái nhà. Bài này giải thích file OBJ thực chất chứa gì, đọc nó thế nào, và làm sao để biến một file OBJ thành bản in 3D đúng hình, đúng kích thước.

File OBJ là gì
OBJ là định dạng lưu mô hình 3D dạng lưới đa giác, do hãng Wavefront Technologies phát triển cho phần mềm hoạt hình Advanced Visualizer từ cuối thập niên 1980. Hãng này sau đó sáp nhập vào Alias, rồi Alias thuộc về Autodesk, nhưng định dạng OBJ thì sống lâu hơn tất cả các phần mềm ban đầu. Lý do rất đơn giản: nó là file văn bản thuần, cấu trúc dễ hiểu, phần mềm nào cũng đọc và ghi được.
Khác với STL vốn chỉ lưu tam giác, OBJ lưu được:
- Tọa độ các đỉnh (vertex).
- Các mặt đa giác: tam giác, tứ giác, hoặc đa giác nhiều cạnh hơn.
- Tọa độ texture (UV), cho biết mỗi điểm trên bề mặt lấy màu từ chỗ nào trên tấm ảnh texture.
- Pháp tuyến (normal) cho từng đỉnh, giúp bề mặt được tô bóng mượt khi hiển thị.
- Nhóm (group) và đối tượng (object), để tách mô hình thành nhiều phần có tên.
- Tham chiếu tới file vật liệu .mtl.
Vì vậy OBJ là định dạng quen thuộc trong đồ họa, game, quét 3D và in 3D nhiều màu.
Bên trong một file OBJ có gì
Mở một file OBJ bằng Notepad, bạn sẽ thấy các dòng văn bản, mỗi dòng bắt đầu bằng một ký hiệu ngắn. Hiểu được mấy ký hiệu này giúp bạn tự chẩn đoán nhiều lỗi mà không cần phần mềm chuyên dụng.
| Ký hiệu | Ý nghĩa | Ví dụ |
|---|---|---|
| v | Đỉnh, gồm tọa độ X Y Z | v 12.5 0.0 -3.2 |
| vt | Tọa độ texture U V (từ 0 đến 1) | vt 0.25 0.75 |
| vn | Vector pháp tuyến | vn 0.0 1.0 0.0 |
| f | Mặt, liệt kê chỉ số các đỉnh | f 1/1/1 2/2/1 3/3/1 |
| o, g | Tên đối tượng, tên nhóm | o NapHop |
| mtllib | Tên file vật liệu đi kèm | mtllib tuong.mtl |
| usemtl | Dùng vật liệu nào cho các mặt phía sau | usemtl Da |
| # | Dòng chú thích | # Exported from Blender |
Dòng mặt f 1/1/1 2/2/1 3/3/1 đọc là: mặt này nối đỉnh số 1, 2, 3; mỗi đỉnh dùng tọa độ texture số 1, 2, 3 và pháp tuyến số 1. Chỉ số trong OBJ bắt đầu từ 1, không phải từ 0. Một mặt có bốn cặp số là tứ giác, năm cặp là ngũ giác.
Dòng chú thích đầu file thường cho biết phần mềm đã xuất file. Thông tin này hữu ích khi đoán đơn vị và hướng trục, như phần dưới sẽ nói.


File MTL và ảnh texture
Bản thân file OBJ không chứa màu. Màu nằm ở hai chỗ khác:
- File .mtl (Material Template Library): file văn bản mô tả từng vật liệu. Dòng Kd 0.8 0.1 0.1 là màu khuếch tán đỏ. Dòng map_Kd da_nguoi.jpg nghĩa là vật liệu này lấy màu từ ảnh da_nguoi.jpg.
- Ảnh texture (.jpg, .png): tấm ảnh phẳng được “dán” lên bề mặt mô hình theo tọa độ UV.
Một mô hình OBJ có màu đầy đủ vì thế thường là một bộ ba: tuong.obj, tuong.mtl và một hoặc vài file ảnh. Đường dẫn tới ảnh ghi trong file MTL, nên nếu bạn đổi tên ảnh, chuyển ảnh sang thư mục khác hoặc chỉ gửi mỗi file OBJ, phần mềm mở ra sẽ thấy mô hình xám trơn.
Lời khuyên: khi gửi file OBJ có màu, nén cả thư mục thành một file ZIP. Đừng gửi lẻ từng file qua tin nhắn, vì một số ứng dụng chat tự đổi tên hoặc nén ảnh.
Mở file OBJ bằng phần mềm gì
Gần như phần mềm 3D nào cũng mở được OBJ. Vài lựa chọn tùy mục đích:
- Chỉ xem nhanh: Windows có sẵn trình xem 3D trên nhiều phiên bản, macOS mở trực tiếp bằng Preview hoặc Quick Look. Cũng có nhiều trình xem OBJ chạy trên trình duyệt.
- Chỉnh sửa lưới, sửa lỗi, đổi hướng, đổi tỷ lệ: Blender (miễn phí), MeshLab (miễn phí, mạnh về xử lý dữ liệu quét), Meshmixer.
- Chuẩn bị in: các slicer như Cura, PrusaSlicer, Bambu Studio, OrcaSlicer, Chitubox, Lychee đều nhập được OBJ. Slicer chỉ lấy phần hình học và bỏ qua texture, trừ một số slicer cho máy nhiều màu có hỗ trợ tô màu theo texture.
- Phần mềm CAD: SolidWorks, Fusion 360, FreeCAD mở được OBJ nhưng dưới dạng lưới. Bạn không sửa kích thước kiểu CAD được như với file STEP.


Đem file OBJ đi in 3D: năm lỗi hay gặp
OBJ sinh ra cho đồ họa, nơi mô hình chỉ cần “trông đúng” trên màn hình. In 3D thì cần mô hình đúng về hình học. Khoảng cách giữa hai yêu cầu đó tạo ra các lỗi dưới đây.
1. Sai tỷ lệ
OBJ không có trường nào khai báo đơn vị. Con số trong file là “đơn vị” chung chung, phần mềm mở file tự hiểu theo ý mình. Blender mặc định làm việc theo mét. Nhiều phần mềm game dùng centimét. Slicer thì hiểu là milimét. Kết quả: một bức tượng cao 0,2 trong Blender (tức 20 cm) mở trên slicer chỉ còn 0,2 mm, gần như vô hình. Ngược lại, một mô hình từ phần mềm dùng centimét có thể to gấp 10 lần.
Cách xử lý: trước khi xuất, kiểm tra kích thước thật trong phần mềm gốc. Khi mở trên slicer, xem kích thước bao (bounding box) rồi chỉnh tỷ lệ. Các hệ số hay gặp là 10, 100, 1.000 và 25,4.
2. Sai hướng trục (Y-up và Z-up)
Đây là lỗi riêng của OBJ mà người mới hay bối rối. Trong nhiều phần mềm đồ họa và game, trục Y hướng lên trên. Trong hầu hết phần mềm CAD và mọi slicer, trục Z mới là trục hướng lên. Mô hình xuất từ phần mềm Y-up mở trên slicer sẽ nằm ngửa hoặc úp mặt xuống bàn in.
Cách xử lý: khi xuất OBJ từ Blender, mục Forward Axis và Up Axis cho phép chọn hướng. Nếu file đã xuất sai, chỉ cần xoay 90° quanh trục X trên slicer. Thao tác này không làm hỏng mô hình.
3. Lưới không kín
Mô hình cho game và phim thường được dựng bằng nhiều mảnh rời đặt chồng lên nhau: mắt là quả cầu riêng, tóc là các tấm phẳng mỏng không có độ dày, quần áo là một lớp vỏ hở. Trên màn hình nhìn rất ổn. Nhưng với máy in, một tấm phẳng không có độ dày là thứ không thể in, và các mảnh chồng lên nhau làm slicer không biết đâu là trong, đâu là ngoài.
Cách xử lý: dùng chức năng kiểm tra lỗi của slicer hoặc tiện ích 3D Print Toolbox trong Blender. Các tấm mỏng cần được thêm độ dày (Solidify trong Blender). Các mảnh chồng nhau nên được gộp lại (Boolean Union) hoặc để slicer tự hợp nhất nếu nó hỗ trợ. Với mô hình phức tạp, việc này cần người có kinh nghiệm dựng hình, vì sửa tự động thường cho kết quả xấu ở những chỗ chi tiết.
4. Chi tiết quá mỏng hoặc quá nhỏ
Một sợi râu, một ngón tay, một thanh kiếm trên mô hình game có thể mỏng 0,2 mm khi thu về kích thước in. Máy FDM với đầu phun 0,4 mm không in được, máy resin in được nhưng gãy ngay khi gỡ support. Hãy kiểm tra độ dày tối thiểu sau khi đã đặt đúng tỷ lệ: khoảng 0,8–1 mm cho FDM, 0,5–0,6 mm cho resin nếu chỉ để trưng bày.
5. Lưới quá nặng
File OBJ từ máy quét hoặc từ phần mềm điêu khắc như ZBrush có thể chứa hàng chục triệu đa giác, nặng vài trăm MB tới vài GB. Slicer sẽ chạy rất chậm hoặc treo. Độ chi tiết này cũng thừa so với khả năng của máy in: máy resin phổ thông có điểm ảnh XY cỡ vài chục micromet, máy FDM thì thô hơn nhiều.
Cách xử lý: giảm số đa giác (decimate) xuống mức hợp lý, thường từ 500.000 đến 2 triệu tam giác là đủ cho figure cỡ 15–20 cm. MeshLab và Blender đều làm được việc này mà vẫn giữ các chi tiết quan trọng.
In màu từ file OBJ
Nếu bạn muốn bản in giữ đúng màu của mô hình, có ba hướng, mỗi hướng hợp với một nhu cầu.
In một màu rồi sơn tay
Đây là cách phổ biến nhất cho figure và mô hình trưng bày. In resin xám hoặc trắng, sơn lót, rồi sơn tay hoặc phun sơn theo ảnh mẫu. Texture trong file OBJ lúc này chỉ dùng làm tham chiếu cho người sơn. Chất lượng phụ thuộc tay nghề, nhưng có thể đạt mức rất đẹp.
In nhiều màu bằng máy FDM đổi sợi
Các máy FDM có bộ đổi sợi tự động in được 4 đến 16 màu trong một bản in. Slicer của chúng cho phép tô màu từng vùng, và một số có công cụ chuyển màu từ texture sang vùng màu. Màu sẽ theo từng mảng rõ ràng, không chuyển sắc mượt như ảnh. Cách này hợp với mô hình hoạt hình, đồ chơi, logo, bản đồ địa hình.
In màu toàn phần
Công nghệ in phun màu trên bột thạch cao, hoặc in phun vật liệu (material jetting) như PolyJet, tái tạo được texture gần như ảnh chụp, kể cả chuyển sắc. Đây là công nghệ đắt và ít nơi có máy, thường dùng cho mô hình y khoa, tượng chân dung từ dữ liệu quét, sa bàn có ảnh vệ tinh. Định dạng đầu vào thường là OBJ kèm texture, hoặc 3MF, VRML.


OBJ, STL hay 3MF: chọn định dạng nào khi gửi in
| Tiêu chí | OBJ | STL | 3MF |
|---|---|---|---|
| Lưu màu | Có, qua MTL và texture | Không | Có, ngay trong file |
| Lưu đơn vị | Không | Không | Có |
| Số file cần gửi | 1 đến nhiều file | 1 file | 1 file |
| Đa giác nhiều cạnh | Có | Chỉ tam giác | Chỉ tam giác |
| Nhiều đối tượng có tên | Có | Không | Có |
| Phổ biến ở xưởng in | Cao | Rất cao | Đang tăng |
Nguyên tắc đơn giản: in một màu thì gửi STL hoặc OBJ đều được. In nhiều màu theo vùng thì 3MF tiện hơn vì gói gọn trong một file. In màu toàn phần theo texture thì OBJ kèm MTL và ảnh là lựa chọn quen thuộc. Với chi tiết kỹ thuật cần độ chính xác, OBJ không phải lựa chọn tốt. Hãy gửi STEP kèm STL. Bài File 3D đuôi gì so sánh đầy đủ các định dạng khác.
Chuyển OBJ sang STL
Nếu xưởng in hoặc phần mềm của bạn chỉ nhận STL, việc chuyển đổi khá đơn giản:
- Mở file OBJ bằng Blender, MeshLab hoặc slicer bất kỳ.
- Kiểm tra kích thước và hướng trục, chỉnh lại nếu cần.
- Kiểm tra lưới kín và sửa lỗi.
- Xuất ra STL dạng nhị phân (binary).
Khi chuyển, các mặt tứ giác và đa giác sẽ được chia thành tam giác, texture và màu bị bỏ. Hình học không thay đổi. Nếu cần giữ màu, chuyển sang 3MF thay vì STL.


OBJ từ máy quét 3D: lưu ý riêng
Máy quét 3D cầm tay và các ứng dụng quét bằng điện thoại thường xuất OBJ có texture. Trước khi in, dữ liệu quét thường cần thêm vài bước:
- Cắt bỏ phần thừa: mặt bàn, giá đỡ, tay người cầm vật lọt vào vùng quét.
- Lấp lỗ: những chỗ máy quét không nhìn tới như đáy vật, khe sâu, mặt đen bóng hoặc trong suốt.
- Làm mịn có chọn lọc: dữ liệu quét có nhiễu dạng gợn nhỏ. Làm mịn quá tay sẽ mất chi tiết sắc.
- Đặt mặt phẳng đáy: cắt phẳng phần đáy để bản in đứng vững và bám tốt trên bàn.
- Làm rỗng: với tượng cỡ lớn in resin, làm rỗng và đục lỗ thoát để giảm lượng nhựa và tránh nứt.
Nếu mục đích là tạo lại một chi tiết kỹ thuật như vỏ máy hay bánh răng, đừng in thẳng từ lưới quét. Hãy dùng lưới quét làm tham chiếu để dựng lại mô hình CAD với kích thước chính xác. Quy trình này gọi là thiết kế ngược.
Gửi file OBJ cho Tạo Mẫu Nhanh
Chúng tôi nhận file OBJ, STL, 3MF, STEP và kiểm tra tỷ lệ, hướng trục, lưới kín, độ dày tối thiểu trước khi báo giá. Nếu file cần sửa, bạn sẽ được báo rõ chỗ nào và chi phí bao nhiêu trước khi in. Gửi file nén ZIP kèm kích thước mong muốn của bản in tới contact@ct3dgroup.com, hoặc gọi hotline/Zalo 0975 008 728 (Mr. Thái) hoặc 0985 936 728 (Mr. Đăng) để được tư vấn.
Tham khảo thêm: Xem chi tiết dịch vụ in 3D của CT3D Group, hoặc tìm hiểu thêm dịch vụ tạo mẫu nhanh trên in3d.edu.vn.
Liên hệ Tạo Mẫu Nhanh
Email: contact@ct3dgroup.com – in3d.edu.vn@gmail.com
Hotline / Zalo: 0975 008 728 (Mr. Thái) – 0985 936 728 (Mr. Đăng)
Câu hỏi thường gặp
File OBJ có in 3D được không?
Được. Mọi slicer phổ biến đều nhập được OBJ. Cần kiểm tra tỷ lệ, hướng trục và lưới kín trước khi in, vì OBJ không lưu đơn vị và thường xuất từ phần mềm đồ họa dùng trục Y hướng lên.
Vì sao mở file OBJ không thấy màu?
Màu nằm trong file .mtl và các ảnh texture đi kèm, không nằm trong file OBJ. Nếu thiếu một trong hai, hoặc đường dẫn ảnh trong file MTL bị sai, mô hình sẽ hiện màu xám.
OBJ và STL cái nào tốt hơn?
Không có cái nào tốt hơn tuyệt đối. STL đơn giản, chỉ một file, xưởng nào cũng nhận, hợp để in một màu. OBJ lưu được màu, texture và nhiều đối tượng có tên, hợp với mô hình đồ họa và dữ liệu quét.
File OBJ nặng quá, slicer bị treo thì làm sao?
Giảm số đa giác bằng chức năng Decimate trong Blender hoặc Simplification trong MeshLab. Với figure cỡ 15–20 cm, khoảng 500.000 đến 2 triệu tam giác là đủ chi tiết cho cả máy resin.
