API Remesh
API Remesh cho phép bạn remesh và xuất các mô hình 3D hiện có được tạo ra bởi các API Meshy khác (như Ảnh sang 3D hoặc Văn bản sang 3D) sang nhiều định dạng khác nhau. Phần này cung cấp chi tiết về cách sử dụng API Remesh.
Tạo một Nhiệm vụ Remesh
Endpoint này tạo một nhiệm vụ remesh mới.
Để chuyển đổi định dạng và đổi kích thước, sử dụng Convert API và Resize API chuyên dụng. Các tham số không dùng nữa dưới đây sẽ tiếp tục hoạt động, nhưng chúng tôi khuyến nghị sử dụng các endpoint mới cho các tích hợp mới.
Tham số
Chỉ một trong input_task_id hoặc model_url là bắt buộc. Nếu cả hai được cung cấp, input_task_id sẽ được ưu tiên.
- Name
- input_task_id
- Type
- string
- Bắt buộc
- Description
ID của nhiệm vụ Ảnh sang 3D hoặc Văn bản sang 3D đã hoàn thành mà bạn muốn remesh. Nhiệm vụ này phải là một trong các nhiệm vụ sau: Text to 3D Preview, Text to 3D Refine, Image to 3D hoặc Retexture. Ngoài ra, nó phải có trạng thái là
SUCCEEDED.
- Name
- model_url
- Type
- string
- Bắt buộc
- Description
Vui lòng cung cấp một mô hình 3D cho Meshy để remesh thông qua một URL công khai hoặc Data URI. Các định dạng được hỗ trợ:
.glb,.gltf,.obj,.fbx,.stl.Đối với Data URIs, sử dụng MIME type:
application/octet-stream.
- Name
- target_formats
- Type
- string[]
- mặc định ["glb"]
- Description
Danh sách các định dạng mục tiêu cho mô hình đã remesh. Khi không được chỉ định, chỉ GLB được tạo ra.
Các giá trị có sẵn:
glb,fbx,obj,usdz,blend,stl,3mf.
- Name
- topology
- Type
- string
- mặc định triangle
- Description
Chỉ định topology của mô hình được tạo ra.
Các giá trị có sẵn:
quad: Tạo một lưới chủ yếu là quad.triangle: Tạo một lưới tam giác đã giảm.
- Name
- target_polycount
- Type
- integer
- mặc định 30,000
- Description
Chỉ định số lượng đa giác mục tiêu trong mô hình được tạo ra. Số lượng đa giác thực tế có thể khác với mục tiêu tùy thuộc vào độ phức tạp của hình học.
Phạm vi giá trị hợp lệ thay đổi tùy thuộc vào cấp người dùng:
- 100 đến 300,000 (bao gồm)
- Name
- decimation_mode
- Type
- integer
- Description
Kích hoạt giảm thích ứng bằng cách đặt mức số đa giác. Khi được đặt,
target_polycountsẽ bị bỏ qua.Các giá trị có sẵn:
1: Thích ứng — số đa giác cực cao.2: Thích ứng — số đa giác cao.3: Thích ứng — số đa giác trung bình.4: Thích ứng — số đa giác thấp.
- Name
- resize_height
- Type
- number
- ⚠ không dùng nữa
- mặc định 0
- Description
Đổi kích thước mô hình đến một chiều cao nhất định đo bằng mét. Chúng tôi khuyến nghị sử dụng Resize API chuyên dụng thay thế.
auto_size,resize_height, vàresize_longest_sideloại trừ lẫn nhau.
- Name
- resize_longest_side
- Type
- number
- ⚠ không dùng nữa
- mặc định 0
- Description
Đổi kích thước mô hình sao cho kích thước dài nhất của hộp bao bằng với giá trị chỉ định tính bằng mét. Chúng tôi khuyến nghị sử dụng Resize API chuyên dụng thay thế.
auto_size,resize_height, vàresize_longest_sideloại trừ lẫn nhau.
- Name
- auto_size
- Type
- boolean
- ⚠ không dùng nữa
- mặc định false
- Description
Khi được đặt thành
true, dịch vụ sử dụng AI vision để tự động ước lượng chiều cao thực tế của đối tượng và đổi kích thước mô hình tương ứng. Chúng tôi khuyến nghị sử dụng Resize API chuyên dụng thay thế.auto_size,resize_height, vàresize_longest_sideloại trừ lẫn nhau.
auto_size = true- Name
- origin_at
- Type
- string
- ⚠ không dùng nữa
- mặc định bottom
- Description
Vị trí của gốc tọa độ. Chúng tôi khuyến nghị sử dụng Resize API chuyên dụng thay thế.
Các giá trị có sẵn:
bottom,center.
- Name
- convert_format_only
- Type
- boolean
- ⚠ không dùng nữa
- Description
Nếu
true, dịch vụ sẽ chỉ thay đổi định dạng của tệp mô hình đầu vào, bỏ qua các đầu vào khác nhưtopology,resize_height, vàtarget_polycount. Chúng tôi khuyến nghị sử dụng Convert API chuyên dụng thay thế.target_formatsphải được cung cấp nếuconvert_format_onlyđược đặt thànhtrue.
- Name
- alpha_thumbnail
- Type
- boolean
- mặc định false
- Description
Khi được đặt thành
true, nhiệm vụ sẽ thêm vào việc render một phiên bản nền trong suốt (RGBA) của bản xem trước và trả về nó dưới dạngalpha_thumbnail_urltrong phản hồi GET. Trườngthumbnail_urlhiện có không thay đổi.
Trả về
Thuộc tính result của phản hồi chứa id của nhiệm vụ remesh mới được tạo.
Các chế độ thất bại
- Name
400 - Bad Request- Description
Yêu cầu không chấp nhận được. Các nguyên nhân phổ biến:
- Thiếu tham số: Phải cung cấp
model_urlhoặcinput_task_id. - Nhiệm vụ đầu vào không hợp lệ:
input_task_idphải tham chiếu đến một nhiệm vụ thành công từ một mô hình được hỗ trợ. - Định dạng mô hình không hợp lệ:
model_urltrỏ đến một tệp có phần mở rộng không được hỗ trợ. - URL không thể truy cập:
model_urlkhông thể tải xuống. - Topology không hợp lệ: Tham số
topologykhông hợp lệ. - Các tham số loại trừ lẫn nhau:
auto_sizevàresize_heightkhông thể được đặt cùng nhau.
- Thiếu tham số: Phải cung cấp
- Name
401 - Unauthorized- Description
Xác thực thất bại. Vui lòng kiểm tra khóa API của bạn.
- Name
402 - Payment Required- Description
Không đủ tín dụng để thực hiện nhiệm vụ này.
- Name
429 - Too Many Requests- Description
Bạn đã vượt quá giới hạn tốc độ của mình.
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"
}
Truy xuất một tác vụ Remesh
Endpoint này truy xuất một tác vụ remesh theo ID của nó.
Tham số
- Name
- id
- Type
- path
- Description
ID của tác vụ remesh cần truy xuất.
Trả về
Đối tượng Tác vụ Remesh.
Yêu cầu
curl https://api.meshy.ai/openapi/v1/remesh/a43b5c6d-7e8f-901a-234b-567c890d1e2f \
-H "Authorization: Bearer ${YOUR_API_KEY}"
Phản hồi
{
"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,
}
Xóa một Nhiệm vụ Remesh
Endpoint này xóa vĩnh viễn một nhiệm vụ remesh, bao gồm tất cả các mô hình và dữ liệu liên quan. Hành động này không thể đảo ngược.
Tham số Đường dẫn
- Name
- id
- Type
- path
- Description
ID của nhiệm vụ remesh cần xóa.
Trả về
Trả về 200 OK khi thành công.
Yêu cầu
curl --request DELETE \
--url https://api.meshy.ai/openapi/v1/remesh/a43b5c6d-7e8f-901a-234b-567c890d1e2f \
-H "Authorization: Bearer ${YOUR_API_KEY}"
Phản hồi
// Returns 200 Ok on success.
Danh sách các tác vụ Remesh
Endpoint này cho phép bạn truy xuất danh sách các tác vụ Remesh.
Tham số
- Name
- page_num
- Type
- integer
- mặc định 1
- Description
Số trang cho phân trang.
- Name
- page_size
- Type
- integer
- mặc định 10
- Description
Giới hạn kích thước trang. Tối đa cho phép là
50mục.
- Name
- sort_by
- Type
- string
- Description
Trường để sắp xếp.
Các giá trị khả dụng:
+created_at: Sắp xếp theo thời gian tạo theo thứ tự tăng dần.-created_at: Sắp xếp theo thời gian tạo theo thứ tự giảm dần.
Trả về
Trả về danh sách phân trang của Các đối tượng tác vụ Remesh.
Yêu cầu
curl https://api.meshy.ai/openapi/v1/remesh?page_size=10 \
-H "Authorization: Bearer ${YOUR_API_KEY}"
Phản hồi
[
{
"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
}
]
Phát trực tuyến một Nhiệm vụ Remesh
Endpoint này phát trực tuyến các cập nhật thời gian thực cho một nhiệm vụ Remesh sử dụng Server-Sent Events (SSE).
Tham số
- Name
- id
- Type
- path
- Description
Định danh duy nhất cho nhiệm vụ Remesh để phát trực tuyến.
Trả về
Trả về một luồng của Các Đối tượng Nhiệm vụ Remesh dưới dạng Server-Sent Events.
Đối với các nhiệm vụ PENDING hoặc IN_PROGRESS, luồng phản hồi sẽ chỉ bao gồm các trường progress và status cần thiết.
Yêu cầu
curl -N https://api.meshy.ai/openapi/v1/remesh/a43b5c6d-7e8f-901a-234b-567c890d1e2f/stream \
-H "Authorization: Bearer ${YOUR_API_KEY}"
Luồng Phản hồi
// Error event example
event: error
data: {
"status_code": 404,
"message": "Task not found"
}
// Message event examples illustrate task progress.
// For PENDING or IN_PROGRESS tasks, the response stream will not include all fields.
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,
}
Đối tượng Nhiệm vụ Remesh
Đối tượng Nhiệm vụ Remesh đại diện cho một đơn vị công việc mà Meshy sử dụng để remesh và xuất một mô hình 3D hiện có sang nhiều định dạng khác nhau. Đối tượng có các thuộc tính sau:
Thuộc tính
- Name
- id
- Type
- string
- Description
Định danh duy nhất cho nhiệm vụ. Mặc dù chúng tôi sử dụng UUID có thể sắp xếp k cho id nhiệm vụ như là chi tiết triển khai, bạn không nên đưa ra bất kỳ giả định nào về định dạng của id.
- Name
- type
- Type
- string
- Description
Loại nhiệm vụ Remesh. Giá trị là
remesh.
- Name
- model_urls
- Type
- object
- Description
URL có thể tải xuống cho tệp mô hình 3D có dán texture được tạo bởi Meshy. Thuộc tính cho một định dạng sẽ bị bỏ qua nếu định dạng không được tạo thay vì trả về một chuỗi rỗng.
- Name
glb- Type
- string
- Description
URL có thể tải xuống cho tệp GLB.
- Name
fbx- Type
- string
- Description
URL có thể tải xuống cho tệp FBX.
- Name
obj- Type
- string
- Description
URL có thể tải xuống cho tệp OBJ.
- Name
usdz- Type
- string
- Description
URL có thể tải xuống cho tệp USDZ.
- Name
blend- Type
- string
- Description
URL có thể tải xuống cho tệp Blender.
- Name
stl- Type
- string
- Description
URL có thể tải xuống cho tệp STL.
- Name
3mf- Type
- string
- Description
URL có thể tải xuống cho tệp 3MF. Chỉ có khi
3mfđược yêu cầu thông quatarget_formats.
- Name
- thumbnail_url
- Type
- string
- Description
URL có thể tải xuống cho hình ảnh xem trước được render từ mô hình đã remesh.
- Name
- alpha_thumbnail_url
- Type
- string
- Description
URL có thể tải xuống cho phiên bản nền trong suốt (RGBA) của
thumbnail_url. Chỉ có khi nhiệm vụ được tạo vớialpha_thumbnail: truevà hình ảnh xem trước trong suốt đã được render thành công; nếu không, trường này sẽ bị bỏ qua.
- Name
- progress
- Type
- integer
- Description
Tiến độ của nhiệm vụ. Nếu nhiệm vụ chưa bắt đầu, thuộc tính này sẽ là
0. Khi nhiệm vụ đã thành công, giá trị này sẽ trở thành100.
- Name
- status
- Type
- string
- Description
Trạng thái của nhiệm vụ. Các giá trị có thể là một trong
PENDING,IN_PROGRESS,SUCCEEDED,FAILED.
- Name
- preceding_tasks
- Type
- integer
- Description
Số lượng nhiệm vụ trước đó.
Giá trị của trường này chỉ có ý nghĩa nếu trạng thái nhiệm vụ là
PENDING.
- Name
- created_at
- Type
- timestamp
- Description
Dấu thời gian khi nhiệm vụ được tạo, tính bằng mili giây.
- Name
- started_at
- Type
- timestamp
- Description
Dấu thời gian khi nhiệm vụ bắt đầu, tính bằng mili giây. Nếu nhiệm vụ chưa bắt đầu, thuộc tính này sẽ là
0.
- Name
- finished_at
- Type
- timestamp
- Description
Dấu thời gian khi nhiệm vụ hoàn thành, tính bằng mili giây. Nếu nhiệm vụ chưa hoàn thành, thuộc tính này sẽ là
0.
- Name
- task_error
- Type
- object
- Description
Chi tiết lỗi cho các nhiệm vụ thất bại. Xem Lỗi để tham khảo đầy đủ đối tượng
task_error.
- Name
- consumed_credits
- Type
- integer
- Description
Số lượng tín dụng đã tiêu thụ bởi nhiệm vụ này. Có khi trạng thái nhiệm vụ là
PENDING,IN_PROGRESS, hoặcSUCCEEDED. Trả về0cho các nhiệm vụFAILED(tín dụng được hoàn lại khi thất bại).
Đối tượng Nhiệm vụ Remesh Mẫu
{
"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
}