Cập nhật 13 tháng 9, 2026
Chuyển 3D giữ gì và tốn bao nhiêu
Chuyển đổi một lưới không phải là miễn phí và cũng không phải là một thao tác không mất mát. GLB và glTF giữ nguyên mọi thứ. OBJ giữ các đối tượng riêng biệt và tên vật liệu của chúng, nhưng bỏ màu theo đỉnh. STL chỉ giữ các tam giác. PLY giữ màu theo đỉnh, nhưng làm phẳng cảnh thành một lưới duy nhất. USDZ giữ cả hai đối tượng và UV, mất màu theo đỉnh và tên vật liệu khi đọc lại, và ghi một file zip của USDA. Các con số dưới đây được đo, không phải ước lượng.
Mỗi con số trên trang này xuất phát từ việc chạy cùng bộ chuyển đổi mà trang này sử dụng, với các tập tin thực tế, và đọc trực tiếp các thuộc tính từ các byte mà nó ghi ra. Được đo với 13 tháng 9, 2026 three.js r179. Phương pháp nằm ở cuối trang và script có trong kho lưu trữ.

Cái gì được giữ lại trong mỗi định dạng?#
Một cảnh tham khảo với hai khối lập phương có tên khác nhau, mỗi khối có vật liệu kim loại riêng với tên, màu theo đỉnh, tọa độ UV và pháp tuyến, được chuyển sang sáu định dạng đích. GLB và glTF vẫn nguyên vẹn. Tất cả các định dạng khác mất đi một số thông tin, và mỗi định dạng mất thông tin khác nhau.
| Đích | Hai đối tượng | Tọa độ UV | Màu theo đỉnh | Tên vật liệu | Số lượng đỉnh |
|---|---|---|---|---|---|
| GLB | Các thuộc tính được giữ lại 2 | Được giữ lại | Được giữ lại | Được giữ lại | 48 đỉnh |
| glTF | Các thuộc tính được giữ lại 2 | Được giữ lại | Được giữ lại | Được giữ lại | 48 đỉnh |
| OBJ | Các thuộc tính được giữ lại 2 | Được giữ lại | Bị mất | Được giữ lại | 72 đỉnh |
| STL | Hợp nhất thành 1 | Bị mất | Bị mất | Bị mất | 72 đỉnh |
| PLY | Hợp nhất thành 1 | Được giữ lại | Được giữ lại | Bị mất | 48 đỉnh |
| USDZ | Các thuộc tính được giữ lại 2 | Được giữ lại | Bị mất | Bị mất | 72 đỉnh |
Tại sao STL và PLY gộp cảnh thành một lưới duy nhất?#
Cả hai định dạng đều không có đồ thị cảnh. GLB, glTF và OBJ có thể mô tả nhiều đối tượng có tên trong cùng một tệp; STL mô tả một thể rắn duy nhất và PLY mô tả một danh sách các phần tử duy nhất, vì vậy hai khối đến như một lưới duy nhất và không có cách nào để tách chúng ra.
Đó là mất mát gây bất ngờ nhất, vì nó không nhìn thấy được. Mô hình đã chuyển đổi trông giống hệt trong một trình xem. Chỉ khi bạn cố gắng chọn, thay đổi vật liệu hoặc hoạt hình một phần của nó bạn mới phát hiện ra rằng các phần đó không còn tồn tại nữa.
Nếu mô hình vẫn phải tách rời, đích đến phải là GLB, glTF hoặc OBJ. Nếu đi đến máy ép lớp hoặc in một vật liệu duy nhất, việc hợp nhất không tốn gì.
Kích thước tệp tăng bao nhiêu?#
Nhiều hơn so với hầu hết mọi người mong đợi. Trong một lưới thực tế được tạo, OBJ chiếm 5,6 lần so với GLB gốc, và PLY 1,4 lần. Cả hai đều có cùng hình học.
| Chuyển đổi | Nguồn | Kết quả | Tỷ lệ | Đỉnh đã ghi |
|---|---|---|---|---|
| mug.glb a GLB | 880 KB | 1.173 KB | 1,3x | 25.000 |
| mug.glb a glTF | 880 KB | 1.564 KB | 1,8x | 25.000 |
| mug.glb a OBJ | 880 KB | 4.928 KB | 5,6x | 150.000 |
| mug.glb a STL | 880 KB | 2.441 KB | 2,8x | 150.000 |
| mug.glb a PLY | 880 KB | 1.221 KB | 1,4x | 25.000 |
| mug.glb a USDZ | 880 KB | 2.927 KB | 3,3x | 150.000 |
| lion.glb a GLB | 8.768 KB | 11.690 KB | 1,3x | 249.369 |
| lion.glb a glTF | 8.768 KB | 15.587 KB | 1,8x | 249.369 |
| lion.glb a OBJ | 8.768 KB | 51.880 KB | 5,9x | 1.496.202 |
| lion.glb a STL | 8.768 KB | 24.352 KB | 2,8x | 1.496.202 |
| lion.glb a PLY | 8.768 KB | 12.176 KB | 1,4x | 249.369 |
| lion.glb a USDZ | 8.768 KB | 30.487 KB | 3,5x | 1.496.202 |
Tại sao OBJ và STL nhân số lượng đỉnh?#
Bởi vì không cái nào trong hai chia sẻ các đỉnh giữa các tam giác. Một lưới được đánh chỉ mục tốt sẽ lưu mỗi góc một lần duy nhất và tham chiếu từ tất cả các tam giác chạm vào nó; OBJ và STL, như được viết ở đây, lưu riêng từng ba góc của mỗi tam giác. Trong thử nghiệm với lion.glb, điều đó đã biến 249.369 đỉnh thành 1.496.202, khoảng 6 lần nhiều hơn.
Hình học không thay đổi. Cùng một bề mặt, cùng một số tam giác, cùng một đường viền; chỉ là việc tính toán tốn kém hơn, và tệp lớn hơn hoặc nhỏ hơn theo tỷ lệ tương tự.
PLY là ví dụ phản chứng hữu ích. Nó giữ nguyên chỉ số, vì vậy cùng một lưới được ghi lại với kích thước gần với bản gốc và vẫn giữ màu tại các đỉnh. Đối với một lưới lớn mà chỉ cần giữ hình học, PLY là đích đến trung thực rẻ nhất trong danh sách này.
Văn bản so với nhị phân làm vấn đề trầm trọng hơn. glTF là JSON với các bộ đệm được mã hóa base64, điều này tốn khoảng một 33 phần trăm nhiều hơn so với GLB cùng loại, vì base64 chuyển mỗi ba byte thành bốn.
Tại sao tệp lại lớn hơn ngay cả khi chuyển từ GLB sang GLB?#
Bởi vì bộ chuyển đổi tính toán các vectơ pháp tuyến đỉnh của bất kỳ lưới nào đến mà không có chúng và sau đó ghi chúng lại. Một lưới được tạo ra thường không có bất kỳ thuộc tính pháp tuyến nào, vì vậy chuyến đi khứ hồi sẽ thêm một vectơ đầy đủ nữa cho mỗi đỉnh.
Thử nghiệm với mug.glb là một ví dụ rõ ràng: vào 880 KB và ra 1.173 KB, mà không có sự thay đổi nào về hình học. Các pháp tuyến được thêm vào là sự khác biệt.
Đó là một quyết định cố ý, không phải là lỗi. Một lưới không có pháp tuyến trông sẽ có đổ bóng phẳng và nhiều mặt ở hầu hết các trình xem, vì vậy bộ chuyển đổi tính toán chúng một lần khi tải thay vì để cho từng công cụ sau phải đoán chúng.
Việc chuyển đổi có làm thay đổi hình dạng không?#
Không. Mỗi điểm đến đã được chuyển đổi và sau đó được đọc lại, và bề mặt xuất hiện giống hệt: cùng số lượng tam giác và cùng diện tích bề mặt tổng cộng, đến giới hạn của phép đo, trong một lưới 498.734 tam giác. Hình học là phần của một tệp 3D tồn tại nguyên vẹn sau khi chuyển đổi.
| Đích | Tam giác sau | Lỗi diện tích bề mặt | Cách lưu tọa độ |
|---|---|---|---|
| GLB | không thay đổi | 0% | float32 nhị phân |
| glTF | không thay đổi | 0% | đệm base64 |
| OBJ | không thay đổi | 0% | văn bản với 17 số thập phân |
| STL | không thay đổi | 0% | float32 nhị phân |
| PLY | không thay đổi | 0% | float32 nhị phân |
| USDZ | không thay đổi | 0% | zip của USDA |
Vậy, việc chuyển đổi 3D có bị mất mát không?#
Cả hai điều, và sự phân biệt này là hữu ích. Hình học không mất gì cả: hình dạng vào là hình dạng ra. Tất cả những gì bao quanh hình học thì bị mất, và những phần bạn mất phụ thuộc hoàn toàn vào đích đến mà bạn đã chọn.
Ở đây không có gì làm gián đoạn các tọa độ. GLB, STL và PLY ghi floats nhị phân 32 bit. glTF nhúng cùng bộ đệm nhị phân dưới dạng base64 bên trong JSON của nó. USDZ ghi một file zip của USDA. OBJ là cái duy nhất ghi các vị trí dưới dạng văn bản thập phân, và nó ghi chúng với độ chính xác đầy đủ thay vì làm tròn, đó là một phần lý do tại sao các tệp của nó lớn hơn nhiều.
Điều đó có nghĩa là mối quan tâm thông thường, rằng mỗi lần chuyển đổi làm suy giảm mô hình một chút, như lưu lại một JPEG lần nữa, không áp dụng. Chuyển từ GLB sang OBJ rồi quay lại không làm mịn lưới.
Những gì nó thực sự làm là loại bỏ những gì xuất hiện ở phía trên trang này: đồ thị cảnh trong STL và PLY, màu theo đỉnh trong OBJ, STL và USDZ, tên vật liệu trong STL, PLY và USDZ, và UV trong STL. Những mất mát đó là vĩnh viễn, theo nghĩa là chuyển đổi lại không thể tạo lại chúng.
Bạn nên chọn đích đến nào?#
Chọn đích đến dựa trên những gì cần được giữ lại, không dựa trên phần mở rộng mà công cụ nhận đặt đầu tiên trong danh sách của nó. Đây là những lựa chọn hợp lý dựa trên những gì đã được đo ở trên.
| Nếu bạn cần | Chọn | Tại sao |
|---|---|---|
| Mọi thứ được giữ lại, trong một tệp duy nhất | GLB | Điểm đến duy nhất giữ nguyên cùng nhau đồ thị cảnh, tên vật liệu, UV và màu theo một đỉnh, với kích thước nhỏ nhất trong các định dạng đầy đủ. |
| Mọi thứ được giữ nguyên, có thể đọc bởi con người | glTF | Nội dung giống như GLB, khoảng một 33 phần trăm lớn hơn vì các bộ đệm nằm ở dạng base64 bên trong JSON. |
| Các đối tượng được tách riêng có tên trong một chương trình trên máy tính để bàn | OBJ | Đã giữ cả hai đối tượng và hai tên vật liệu. Loại bỏ màu theo đỉnh và ghi tệp lớn nhất trong số sáu tệp. |
| In 3D | STL | Chỉ các tam giác, không có gì khác, đó là tất cả những gì một bộ cắt lát đọc được. Điểm đến nhỏ nhất không phải glTF trong một lưới thực. |
| Hình học và màu theo đỉnh, với trọng lượng nhẹ | PLY | Điểm đến duy nhất không phải glTF mà giữ màu theo đỉnh và giữ chỉ số, vì vậy nó gần với kích thước gốc. |
| Quick Look của Apple / AR trên iPhone | USDZ | Đã giữ cả hai đối tượng và UV trong cảnh tham chiếu. Mất màu theo đỉnh và tên vật liệu khi đọc lại. Một file zip của USDA mà một chiếc điện thoại có thể mở. |
Điều gì xác định các định dạng này#
Các phép đo trên là của chúng tôi; những gì mỗi định dạng có thể chứa không do chúng tôi quyết định. Đây là các thông số kỹ thuật và tài liệu tham khảo định dạng quyết định điều đó, để những gì trang này nói có thể được kiểm chứng từ nguồn thay vì chỉ tin mà thôi.
- Thông số kỹ thuật glTF 2.0Nhóm Khronos
Định nghĩa đồ thị cảnh, các vật liệu và phụ kiện mà GLB và glTF mang theo, và giải thích tại sao chúng là những điểm đến duy nhất còn nguyên vẹn ở đây.
- Loại phương tiện model/gltf-binaryIANA
Loại đăng ký cho GLB, tệp nhị phân đã được đo ở trên.
- Loại phương tiện model/stlIANA
STL như đã đăng ký: các tam giác và vector pháp tuyến mặt, không có bất kỳ trường nào cho màu sắc, UV, vật liệu hay tên đối tượng.
- Định dạng tệp Wavefront OBJPaul Bourke
Tham chiếu thường xuyên cho OBJ, không có trường riêng cho màu theo đỉnh, điều này phù hợp với những gì đã bị loại bỏ trong quá trình chuyển đổi.
- Định dạng tệp đa giác PLYPaul Bourke
Ghi lại các thuộc tính theo đỉnh, bao gồm cả màu sắc, làm cho PLY trở thành điểm đến duy nhất không phải glTF mà vẫn giữ nó ở đây.
- Đặc tả định dạng tệp USDZPixar / OpenUSD
USDZ là một tệp zip mà mục nhập đầu tiên là cảnh USDA. Đó là gói mà trình chuyển đổi này ghi và đọc.
Cách đo lường#
Việc đo lường thực hiện sản phẩm, chứ không phải mô tả nó. Script nhập cùng các bộ nạp và xuất mà trình chuyển đổi trình duyệt sử dụng, với cùng các tùy chọn, và nó có trong kho để các số liệu có thể được tái tạo hoặc thảo luận.
- Xây dựng một cảnh tham chiếu với hai khối lập phương có tên, mỗi khối có một vật liệu kim loại được đặt tên, màu theo đỉnh, tọa độ UV và vector pháp tuyến.
- Tải các lưới được tạo ra thực sự theo cùng một cách mà bộ chuyển đổi tải tệp bạn cung cấp, bao gồm cả bước tính toán các pháp tuyến đỉnh khi một lưới đến mà không có chúng.
- Xuất sang GLB, glTF, OBJ, STL, PLY và USDZ với cùng các trình xuất mà bộ chuyển đổi gọi và cùng các cài đặt nhị phân.
- Ghi lại kích thước bằng byte của mỗi kết quả.
- Đọc các thuộc tính trực tiếp từ các byte đã ghi mà không từ một cảnh được tải lại, vì một trình tải tự tạo ra những gì tệp không chứa: một OBJ không có dòng vn vẫn được tải lại với một thuộc tính pháp tuyến tổng hợp.
- Đăng bảng trực tiếp từ kết quả đó. Đo lường 13 tháng 9, 2026 three.js r179.
Các câu hỏi
- Việc chuyển đổi một tệp 3D có làm mất chất lượng không?
- Hình dạng không. Mỗi điểm đến được chuyển đổi và đọc lại, và số lượng tam giác cùng tổng diện tích bề mặt ra kết quả giống hệt trên một lưới 498.734 tam giác, không cắt bớt tọa độ ở bất kỳ định dạng nào. Những gì bị mất là tất cả những gì xung quanh hình học, và điều này phụ thuộc vào điểm đến: STL loại bỏ UV, màu sắc, vật liệu và đồ thị cảnh; OBJ loại bỏ màu theo đỉnh; PLY loại bỏ tên vật liệu và hợp nhất cảnh; USDZ loại bỏ màu theo đỉnh và tên vật liệu khi đọc lại; GLB và glTF giữ tất cả mọi thứ.
- Định dạng 3D nào chiếm ít dung lượng nhất?
- GLB, trên một lưới thực. Trong các bài kiểm tra này GLB đã viết 1.173 KB ở nơi OBJ đã viết 4.928 KB cho cùng một mô hình, bởi vì GLB là nhị phân và giữ một chỉ số đỉnh chung, trong khi OBJ tạo ra là văn bản và lưu riêng từng góc của mỗi tam giác.
- Tại sao OBJ của tôi chiếm nhiều dung lượng hơn GLB mà nó xuất ra?
- Vì hai lý do, cả hai đều liên quan đến kích thước: OBJ là văn bản chứ không phải nhị phân, và OBJ được viết ở đây không chia sẻ đỉnh giữa các tam giác, nên số đỉnh bị nhân lên một lần 6 trên một lưới được lập chỉ mục tốt. Bề mặt thì giống hệt; kế toán thì không.
- STL có giữ màu không?
- Không. Một STL nhị phân lưu một vector pháp tuyến của mặt và ba góc cho mỗi tam giác, và không có trường nào cho màu, UV, vật liệu hay tên đối tượng. Điều này đúng cho tất cả các STL đã được viết trong các thử nghiệm này.
- Tôi có thể giữ màu theo từng đỉnh mà không dùng GLB không?
- Có, với PLY. Trong các thử nghiệm này, nó là điểm đến duy nhất không phải glTF khai báo một thuộc tính màu trong đầu file. Tuy nhiên, nó sẽ hợp nhất một cảnh gồm nhiều vật thể thành một lưới duy nhất, vì vậy bạn giữ được màu nhưng mất các phần.
- Việc chuyển đổi mô hình 3D đi đi lại lại có làm giảm chất lượng không?
- Không. Khác với việc lưu lại một JPEG, một lần chuyển đổi 3D không tích lũy lỗi: các tọa độ được sao chép dưới dạng float nhị phân hoặc, trong trường hợp OBJ, được ghi dưới dạng số thập phân với độ chính xác đầy đủ. Việc đi đi lại lại qua bất kỳ định dạng nào trong số này trả về bề mặt giống hệt. Điều không quay lại là thông tin về vật liệu và cảnh mà điểm đến không thể mang từ đầu.
- Tôi có thể tái tạo các số liệu này không?
- Vâng. Script đo lường nằm trong kho lưu trữ, ở scripts/measure-conversions.mjs, và nó tạo ra JSON mà trang này đọc. Nó được chạy lần cuối vào 13 tháng 9, 2026 three.js r179.