Remesh API
Xây dựng lại lưới của mô hình 3D với topology và số lượng mặt mới, đồng thời xuất ra các định dạng mà bạn chọn. Mô hình có thể đến từ một tác vụ khác của Meshy, chẳng hạn như Ảnh sang 3D hoặc Văn bản sang 3D, hoặc từ một tệp mô hình.
Tạo tác vụ Remesh
Tạo một tác vụ Remesh. Tác vụ chạy ngầm. Để biết thời gian xử lý thường mất bao lâu, xem Thời gian xử lý.
Để chuyển đổi định dạng của mô hình hoặc đổi kích thước mô hình, hãy dùng Convert API hoặc Resize API. Các tham số không dùng nữa trên trang này vẫn hoạt động, nhưng các tích hợp mới nên dùng các endpoint đó.
Request
# Basic remesh with custom formats and resize
curl https://api.meshy.ai/openapi/v1/remesh \
-X POST \
-H "Authorization: Bearer ${YOUR_API_KEY}" \
-H 'Content-Type: application/json' \
-d '{
"input_task_id": "018a210d-8ba4-705c-b111-1f1776f7f578",
"target_formats": ["glb", "fbx"],
"topology": "quad",
"target_polycount": 50000,
"resize_height": 1.0,
"origin_at": "bottom"
}'
# Quad remesh with auto-size
curl https://api.meshy.ai/openapi/v1/remesh \
-X POST \
-H "Authorization: Bearer ${YOUR_API_KEY}" \
-H 'Content-Type: application/json' \
-d '{
"input_task_id": "018a210d-8ba4-705c-b111-1f1776f7f578",
"target_formats": ["glb", "fbx"],
"topology": "quad",
"target_polycount": 50000,
"auto_size": true
}'
Response
{
"result": "0193bfc5-ee4f-73f8-8525-44b398884ce9"
}
Tham số
- Name
- input_task_id
- Type
- string
- Bắt buộc
- Description
Bắt buộc trừ khi bạn gửi
model_url. ID của tác vụ mà bạn muốn remesh mô hình của nó, ví dụ như tác vụ Văn bản sang 3D, Ảnh sang 3D, Tạo lại texture, hoặc Remesh. Tác vụ đó phải là tác vụ bạn đã tạo bằng API và có trạng tháiSUCCEEDED.
- Name
- model_url
- Type
- string
- Bắt buộc
- Description
Bắt buộc trừ khi bạn gửi
input_task_id. Mô hình cần remesh, dưới dạng URL công khai hoặc data URI. Nếu bạn gửi cả hai, Meshy sẽ dùnginput_task_id.Mô hình phải là tệp GLB, glTF, OBJ, FBX, hoặc STL có dung lượng tối đa 400 MB từ URL
httphoặchttps, hoặc 100 MB nếu là data URI. Đối với data URI, hãy dùng MIME typeapplication/octet-stream.Tệp lớn hơn 100 MB còn phải tuân theo các quy tắc sau:
- Tệp GLB, glTF, FBX, hoặc OBJ có thể có tối đa 10.000.000 mặt. Meshy tính mặt theo tam giác, vì vậy một mặt tứ giác được tính là 2, và một lưới được vẽ nhiều lần được tính một lần cho mỗi bản sao.
- Tệp FBX phải là FBX nhị phân 7.1 trở lên.
- Tệp GLB hoặc glTF không được dùng nén Draco.
- Name
- target_formats
- Type
- string[]
- mặc định ["glb"]
- Description
Các định dạng tệp cần tạo.
Các giá trị khả dụng:
glbfbxobjusdzblendstl3mf
- Name
- topology
- Type
- string
- mặc định triangle
- Description
Loại mặt của mô hình đã remesh.
Các giá trị khả dụng:
quad: lưới chủ yếu gồm mặt tứ giáctriangle: lưới tam giác đã giảm mặt
- Name
- target_polycount
- Type
- integer
- mặc định 30000
- Description
Số lượng mặt mục tiêu, từ
100đến300000. Kết quả có thể khác với mục tiêu, tùy thuộc vào hình học của mô hình. Giá trị ngoài phạm vi này sẽ trả về400.
- Name
- decimation_mode
- Type
- integer
- Description
Số lượng mặt thích ứng, theo cấp độ. Khi bạn đặt tham số này, Meshy sẽ bỏ qua
target_polycount.Các giá trị khả dụng:
1: siêu cao (ultra)2: cao (high)3: trung bình (medium)4: thấp (low)
- Name
- resize_height
- Type
- number
- ⚠ không dùng nữa
- mặc định 0
- Description
Hãy dùng Resize API thay thế. Chiều cao để đổi kích thước mô hình, tính bằng mét. Chỉ gửi tối đa một trong các tham số
resize_height,resize_longest_side, vàauto_size.
- Name
- resize_longest_side
- Type
- number
- ⚠ không dùng nữa
- mặc định 0
- Description
Hãy dùng Resize API thay thế. Độ dài để đổi kích thước cạnh dài nhất của hộp bao mô hình, tính bằng mét. Chỉ gửi tối đa một trong các tham số
resize_height,resize_longest_side, vàauto_size.
- Name
- auto_size
- Type
- boolean
- ⚠ không dùng nữa
- mặc định false
- Description
Hãy dùng Resize API thay thế. Có ước tính chiều cao thực tế của vật thể bằng AI thị giác và đổi kích thước mô hình theo đó hay không. Chỉ gửi tối đa một trong các tham số
resize_height,resize_longest_side, vàauto_size.
- Name
- origin_at
- Type
- string
- ⚠ không dùng nữa
- mặc định bottom
- Description
Hãy dùng Resize API thay thế. Vị trí đặt gốc tọa độ của mô hình,
bottomhoặccenter. Giá trị mặc định áp dụng khi bạn gửiresize_height,resize_longest_side, hoặcauto_size. Nếu không gửi một trong các tham số đó, Meshy chỉ di chuyển gốc tọa độ nếu bạn gửiorigin_at.
- Name
- convert_format_only
- Type
- boolean
- ⚠ không dùng nữa
- Description
Hãy dùng Convert API thay thế. Có chỉ chuyển đổi mô hình sang
target_formatshay không. Khi làtrue, Meshy bỏ quatopology,target_polycount,decimation_mode,resize_height,resize_longest_side, vàauto_size, nhưng vẫn kiểm tra giá trị của chúng, nên giá trị không hợp lệ sẽ trả về400. Vớiconvert_format_only: true,target_formatsrỗng hoặcnullsẽ trả về400.
- Name
- alpha_thumbnail
- Type
- boolean
- mặc định false
- Description
Có đồng thời render một bản xem trước với nền trong suốt (RGBA) hay không, được trả về trong
alpha_thumbnail_urlkhi bạn lấy tác vụ.thumbnail_urlkhông thay đổi.
Giá trị trả về
Trường result của phản hồi chứa ID của tác vụ Remesh mới.
Các trường hợp lỗi
- Name
400 - Bad Request- Description
Yêu cầu không thể chạy. Thông báo lỗi cho biết vấn đề mà hệ thống phát hiện. Ví dụ:
- Thiếu tham số: Không gửi
model_urlcũng không gửiinput_task_id. - Tác vụ đầu vào không hợp lệ:
input_task_idkhông phải là một tác vụ API thành công, hoặc mô hình AI của nó không hỗ trợ remesh. - Định dạng mô hình không hợp lệ: Tệp
model_urlcó phần mở rộng không được hỗ trợ. - URL không thể truy cập: Meshy không thể tải xuống tệp
model_url. - Tệp mô hình quá lớn: Tệp
model_urlvượt quá 400 MB từ URLhttphoặchttps, hoặc vượt quá 100 MB nếu là data URI. - Quá nhiều mặt: Tệp
model_urlvượt quá 100 MB và có nhiều hơn 10.000.000 mặt. Hãy giảm số lượng mặt, rồi gửi lại tệp. - ASCII FBX vượt quá 100 MB: Tệp
model_urllà ASCII FBX vượt quá 100 MB. Hãy gửi dưới dạng FBX nhị phân hoặc GLB. - Tệp mô hình không đọc được: Tệp
model_urlvượt quá 100 MB, và Meshy không thể đọc phần header của nó. Ví dụ, đó là GLB hoặc glTF đã nén Draco, hoặc FBX nhị phân cũ hơn 7.1. - Header mô hình quá phức tạp: Tệp
model_urlvượt quá 100 MB, và phần header của nó có quá nhiều lưới, node, hoặc bản ghi để kiểm tra. Hãy giảm số lượng đối tượng trong tệp, rồi gửi lại. - Topology không hợp lệ:
topologykhông phải làquadhoặctriangle. - Tham số loại trừ lẫn nhau: Yêu cầu có nhiều hơn một trong các tham số
auto_size,resize_height, vàresize_longest_side. Chỉ gửi một tham số.
Hãy sửa yêu cầu, rồi gửi lại. Xem Lỗi.
- Thiếu tham số: Không gửi
- Name
401 - Unauthorized- Description
Thiếu khóa API hoặc khóa API không hợp lệ. Hãy kiểm tra header
Authorization.
- Name
402 - Payment Required- Description
Ví dụ:
- Không đủ tín dụng: Tài khoản không có đủ tín dụng cho tác vụ này, hoặc tài khoản đã đạt giới hạn tín dụng. Hãy kiểm tra số dư tín dụng của bạn, rồi thử lại.
- Gói miễn phí: Tạo tác vụ yêu cầu gói trả phí. Hãy nâng cấp gói của bạn trong cài đặt đăng ký, rồi thử lại.
- Name
403 - Forbidden- Description
input_task_idlà mô hình chạm nổi (bas-relief), mà endpoint này không thể remesh. Thông báo làThis model type does not support this operation. Hãy gửi một mô hình khác.
- Name
404 - Not Found- Description
input_task_idkhông khớp với bất kỳ tác vụ nào của bạn. Hãy kiểm tra ID tác vụ, rồi gửi lại yêu cầu.
- Name
429 - Too Many Requests- Description
Bạn đã vượt quá giới hạn tốc độ. Hãy đợi, rồi thử lại. Xem Giới hạn tốc độ.
Lấy một tác vụ Remesh
Trả về một tác vụ Remesh theo ID của nó.
Request
curl https://api.meshy.ai/openapi/v1/remesh/a43b5c6d-7e8f-901a-234b-567c890d1e2f \
-H "Authorization: Bearer ${YOUR_API_KEY}"
Response
{
"id": "0193bfc5-ee4f-73f8-8525-44b398884ce9",
"type": "remesh",
"model_urls": {
"glb": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.glb?Expires=***",
"fbx": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.fbx?Expires=***",
"obj": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.obj?Expires=***",
"usdz": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.usdz?Expires=***",
"blend": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.blend?Expires=***",
"stl": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.stl?Expires=***"
},
"progress": 100,
"status": "SUCCEEDED",
"created_at": 1699999999000,
"started_at": 1700000000000,
"finished_at": 1700000001000,
"task_error": null
}
Tham số
- Name
- id
- Type
- path
- Description
ID của tác vụ từ phản hồi tạo.
Giá trị trả về
Xóa một tác vụ Remesh
Xóa vĩnh viễn một tác vụ Remesh, bao gồm cả các mô hình và dữ liệu của nó. Bạn không thể hoàn tác việc xóa.
Request
curl --request DELETE \
--url https://api.meshy.ai/openapi/v1/remesh/a43b5c6d-7e8f-901a-234b-567c890d1e2f \
-H "Authorization: Bearer ${YOUR_API_KEY}"
Response
// 200 OK on success, with an empty body.
//
// 409 Conflict when the task is IN_PROGRESS. The task keeps running:
{
"message": "Task is IN_PROGRESS and cannot be deleted. Credits for a task the worker has already started are not refundable; wait for it to reach SUCCEEDED, FAILED or CANCELED, then delete it."
}
Tham số đường dẫn
- Name
- id
- Type
- path
- Description
ID của tác vụ cần xóa.
Trạng thái tác vụ
Xóa một tác vụ PENDING sẽ hoàn lại số tín dụng đã sử dụng khi bạn tạo tác vụ đó.
Một tác vụ IN_PROGRESS không thể bị xóa. Yêu cầu sẽ trả về 409 Conflict,
và tác vụ vẫn tiếp tục chạy. Meshy không hoàn lại tín dụng cho một tác vụ đã bắt đầu,
vì vậy việc xóa nó sẽ khiến bạn mất cả tín dụng lẫn kết quả. Hãy đợi cho đến khi nó
đạt trạng thái SUCCEEDED, FAILED, hoặc CANCELED, sau đó mới xóa.
Xóa một tác vụ ở trạng thái cuối cùng (SUCCEEDED, FAILED, hoặc CANCELED)
sẽ không hoàn lại tín dụng.
Giá trị trả về
200 OK khi tác vụ được xóa, hoặc 409 Conflict khi tác vụ đang ở trạng thái
IN_PROGRESS.
Liệt kê các tác vụ Remesh
Trả về danh sách các tác vụ Remesh của bạn.
Request
curl https://api.meshy.ai/openapi/v1/remesh?page_size=10 \
-H "Authorization: Bearer ${YOUR_API_KEY}"
Response
[
{
"id": "0193bfc5-ee4f-73f8-8525-44b398884ce9",
"type": "remesh",
"model_urls": {
"glb": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.glb?Expires=***",
"fbx": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.fbx?Expires=***",
"obj": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.obj?Expires=***",
"usdz": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.usdz?Expires=***",
"blend": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.blend?Expires=***",
"stl": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.stl?Expires=***"
},
"progress": 100,
"status": "SUCCEEDED",
"created_at": 1699999999000,
"started_at": 1700000000000,
"finished_at": 1700000001000,
"task_error": null
}
]
Tham số
- Name
- page_num
- Type
- integer
- mặc định 1
- Description
Số trang cần trả về, tối đa
255. Giá trị lớn hơn sẽ trả về lỗi400.
- Name
- page_size
- Type
- integer
- mặc định 10
- Description
Số lượng tác vụ trên mỗi trang, tối đa
100.
- Name
- sort_by
- Type
- string
- Description
Thứ tự sắp xếp.
Các giá trị khả dụng:
+created_at: cũ nhất trước-created_at: mới nhất trước
Giá trị trả về
Danh sách phân trang của các đối tượng tác vụ Remesh.
Stream một tác vụ Remesh
Truyền trực tuyến các cập nhật của tác vụ Remesh dưới dạng Server-Sent Events (SSE).
Request
curl -N https://api.meshy.ai/openapi/v1/remesh/a43b5c6d-7e8f-901a-234b-567c890d1e2f/stream \
-H "Authorization: Bearer ${YOUR_API_KEY}"
Response Stream
// Error event example
event: error
data: {
"status_code": 404,
"message": "Task not found"
}
// Message event examples illustrate task progress.
// These examples are shortened. Each event holds the full task object.
event: message
data: {
"id": "0193bfc5-ee4f-73f8-8525-44b398884ce9",
"progress": 0,
"status": "PENDING"
}
event: message
data: {
"id": "0193bfc5-ee4f-73f8-8525-44b398884ce9",
"type": "remesh",
"model_urls": {
"glb": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.glb?Expires=***",
"fbx": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.fbx?Expires=***",
"obj": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.obj?Expires=***",
"usdz": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.usdz?Expires=***",
"blend": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.blend?Expires=***",
"stl": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.stl?Expires=***"
},
"progress": 100,
"status": "SUCCEEDED",
"created_at": 1699999999000,
"started_at": 1700000000000,
"finished_at": 1700000001000,
"task_error": null,
}
Tham số
- Name
- id
- Type
- path
- Description
ID tác vụ từ phản hồi tạo.
Giá trị trả về
Một luồng các đối tượng tác vụ Remesh dưới dạng Server-Sent Events.
Mỗi sự kiện chứa toàn bộ đối tượng tác vụ, theo cùng định dạng mà endpoint Get trả về. Trong khi tác vụ đang ở trạng thái PENDING hoặc IN_PROGRESS, các trường kết quả của nó chưa có giá trị.
Đối tượng tác vụ Remesh
Một đối tượng tác vụ Remesh mô tả một lần remesh của mô hình 3D. Nó lưu trữ trạng thái, progress, và các tệp mô hình khi tác vụ thành công.
Thuộc tính
Example Remesh Task Object
{
"id": "0193bfc5-ee4f-73f8-8525-44b398884ce9",
"type": "remesh",
"model_urls": {
"glb": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.glb?Expires=***",
"fbx": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.fbx?Expires=***",
"obj": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.obj?Expires=***",
"usdz": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.usdz?Expires=***",
"blend": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.blend?Expires=***",
"stl": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.stl?Expires=***"
},
"progress": 100,
"status": "SUCCEEDED",
"preceding_tasks": 0,
"created_at": 1699999999000,
"started_at": 1700000000000,
"finished_at": 1700000001000,
"task_error": {
"message": ""
},
"consumed_credits": 5
}
- Name
- id
- Type
- string
- Description
ID của tác vụ. Hãy coi nó như một chuỗi không minh bạch, và đừng phụ thuộc vào định dạng của nó.
- Name
- type
- Type
- string
- Description
Loại tác vụ, luôn là
remesh.
- Name
- model_urls
- Type
- object
- Description
URL tải xuống cho mô hình đã remesh, mỗi URL ứng với một định dạng tệp. Một định dạng mà tác vụ không tạo ra sẽ không có khóa tương ứng, thay vì là một chuỗi rỗng.
- Name
glb- Type
- string
- Description
Tệp GLB.
- Name
fbx- Type
- string
- Description
Tệp FBX.
- Name
obj- Type
- string
- Description
Tệp OBJ.
- Name
usdz- Type
- string
- Description
Tệp USDZ.
- Name
blend- Type
- string
- Description
Tệp Blender.
- Name
stl- Type
- string
- Description
Tệp STL.
- Name
3mf- Type
- string
- Description
Tệp 3MF. Chỉ xuất hiện khi
target_formatsbao gồm3mf.
- Name
- thumbnail_url
- Type
- string
- Description
URL tải xuống cho hình ảnh xem trước của mô hình đã remesh.
- Name
- alpha_thumbnail_url
- Type
- string
- Description
URL tải xuống cho một phiên bản của
thumbnail_urlvới nền trong suốt (RGBA). Chỉ xuất hiện khi bạn tạo tác vụ vớialpha_thumbnail: truevà Meshy đã render ảnh xem trước trong suốt.
- Name
- progress
- Type
- integer
- Description
Mức độ hoàn thành của tác vụ, tính theo phần trăm. Giá trị là
0cho đến khi tác vụ bắt đầu và100khi tác vụ thành công.
- Name
- status
- Type
- string
- Description
Trạng thái của tác vụ, là một trong các giá trị
PENDING,IN_PROGRESS,SUCCEEDED,FAILED, hoặcCANCELED.
- Name
- preceding_tasks
- Type
- integer
- Description
Số lượng tác vụ đứng trước tác vụ này trong hàng đợi. Giá trị này chỉ có ý nghĩa khi tác vụ đang ở trạng thái
PENDING.
- Name
- created_at
- Type
- timestamp
- Description
Thời điểm tác vụ được tạo, tính bằng mili giây Unix.
- Name
- started_at
- Type
- timestamp
- Description
Thời điểm tác vụ bắt đầu, tính bằng mili giây Unix. Giá trị là
0cho đến khi tác vụ bắt đầu.
- Name
- finished_at
- Type
- timestamp
- Description
Thời điểm tác vụ kết thúc, tính bằng mili giây Unix. Giá trị là
0cho đến khi tác vụ kết thúc.
- Name
- expires_at
- Type
- timestamp
- Description
Thời điểm các URL tải xuống của tác vụ hết hạn, tính bằng mili giây Unix. Giá trị là
0cho đến khi tác vụ kết thúc.
- Name
- texture_urls
- Type
- array
- Description
URL tải xuống cho các texture map của mô hình, khi tác vụ thành công: một mảng các đối tượng, mỗi đối tượng ứng với một bộ texture. Mỗi đối tượng có một URL
base_color, và cũng có thể có các URLmetallic,roughness,normal,emission, vàmetallic_roughness. Giá trị lànullcho đến khi tác vụ thành công, và là một mảng rỗng khi mô hình không có texture map nào.
- Name
- task_error
- Type
- object
- Description
Chi tiết lỗi khi tác vụ thất bại. Xem Lỗi.
- Name
- consumed_credits
- Type
- integer
- Description
Số tín dụng mà tác vụ đã sử dụng. Xuất hiện khi trạng thái là
PENDING,IN_PROGRESS, hoặcSUCCEEDED. Giá trị là0đối với tác vụFAILED, vì Meshy hoàn lại tín dụng khi một tác vụ thất bại.