Tripo: 3D Generation
Tripo 依書面物件需求建立 3D 模型成品。開發商較廣的流程區分幾何形體、紋理及後續模型處理;應從多個視角檢查完成網格,並保留實際檔案供目標場景或編輯器使用。
關於模型
此說明介紹模型的能力。Ailoot 可用的輸入、輸出與選項,依所選方法列於下方。
Tripo 依描述或視覺參考建立 3D 模型成品。其流程將物件生成與後續紋理製作、骨架綁定及轉換等步驟分開。先指出預定成品與產生它的操作:場景用靜態網格、渲染用帶紋理物件,或之後會在 3D 編輯器中進一步準備的模型。
文字轉模型的需求中,描述物件形狀與重要部分。小燈籠可以透過本體、提把、開口及比例指定;生物可以透過輪廓、肢體與姿勢描述。材質或視覺處理對結果重要時,應明確說明。讓描述聚焦物件本身,才能依清楚設計評估生成的幾何形體。
開發商以參考素材為基礎的流程中,準備能顯示主體輪廓與獨特特徵的圖片。多個視角應描述同一物件,並維持一致比例與配件。生成後檢閱參考中隱藏的部分,因為令人信服的正面視角,不代表背面、底部或元件連接符合預定設計。
將所選模型版本與請求一併保留。Tripo 生成介面將操作與模型版本設定分開識別,文件記載的文字轉模型範例也選用明確版本。比較成品時,保留確切版本與控制項,避免把物件描述變更與生成設定變更混淆。
幾何形體與表面外觀是不同製作決策。開發商基礎流程區分無紋理模型,以及附紋理與以物理為基礎的渲染材質的輸出。選擇下一步所需的成品形式,再檢查網格及附帶的材質檔案。預覽圖有助了解外觀,而實際模型才是場景組裝與後續編輯所需成品。
從多個角度檢查完成物件。觀察輪廓、各部分的分隔、細薄特徵、開口及元件交會的表面。風格化道具應將比例與設計需求對照。類產品物件應檢查哪些細節由幾何形體表現,哪些只存在於表面處理。變更提示詞或參考前,先指出需要修正的特徵。
生成以非同步任務執行。狀態檢查過程中保留原始任務身分,並將完成模型、預覽及其他所有回傳檔案保存在一起。文件記載的結果包含模型相關輸出欄位與渲染圖片。為下一個製作步驟保存檔案本身,不要只依賴暫時結果連結,或將預覽視為完整 3D 交付成果。
將模型匯入預定編輯器或檢視環境,檢查方向、比例尺、材質及幾何形體。場景道具、特寫渲染及可用於動畫的角色,有不同後製需求。保留可編輯工作副本,並將生成的來源成品與需求及參考一併保留。需要其他操作,例如紋理處理或骨架綁定時,應有意識地選擇該操作,並將結果成品作為獨立階段檢閱。
Ailoot Ultra · 3D POST /v1/3d/generations tripo3d
tripo3d入門
Tripo 依書面物件需求建立 3D 模型成品。開發商較廣的流程區分幾何形體、紋理及後續模型處理;應從多個視角檢查完成網格,並保留實際檔案供目標場景或編輯器使用。
- 接受的輸入
- 文字
- 結果
- model_3d · 圖片
Ailoot 可用 · 輸入與方法
Ailoot Ultra · 3D POST /v1/3d/generations
- 輸入
text- 輸出
model_3d,image
| 欄位 | 類型 | 要求 | 值與限制 | 預設值 |
|---|---|---|---|---|
欄位model | 類型string | 要求必填 | 值與限制 tripo3d 條件: 請使用 Ailoot 模型選擇器。 | 預設值— |
欄位type | 類型string | 要求必填 | 值與限制 text_to_model, image_to_model, multiview_to_model, texture_model, animate_prerigcheck, animate_rig, animate_retarget, stylize_model, convert_model 條件: 完整範例使用 text_to_model;其他工作類型須提供文件記載的該類型專屬輸入。 | 預設值— |
欄位model_version | 類型string | 要求必填 | 值與限制 v2.0-20240919, v1.4-20240625, v2.5-20250123, v3.0-20250812, Turbo-v1.0-20250506 條件: 請選擇文件明確記載的版本;此範例使用 v3.0-20250812。 | 預設值— |
欄位prompt | 類型string | 要求必填 | 值與限制 條件: 請描述要建立的物件。 | 預設值— |
方法參數與生命週期
| 參數 | 規格 |
|---|---|
參數content_type | 規格application/json |
參數required | 規格model, type, model_version, prompt |
參數optional | 規格 |
參數material_types | 規格text |
參數conditions | 規格請使用 Ailoot 模型選擇器。, 完整範例使用 text_to_model;其他工作類型須提供文件記載的該類型專屬輸入。, 請選擇文件明確記載的版本;此範例使用 v3.0-20250812。, 請描述要建立的物件。 |
生命週期: submit_once_poll_original
GET /v1/3d/generations/{request_id}
GET /v1/media/assets
GET /v1/media/assets/{asset_id}
方案
最終費用的計算方式
顯示的費率用於在生成前估算費用。最終費用依原始生成作業記錄的成本計算。實測的輸出時間長度與預估數量並非最終計費數量。
費率資訊不會增加請求選項。支援的參數列於所選方法中。
- 快速模式
- 未指定 選取快速模式時
- flex 模式
- 未指定 選取 flex 模式時
- 最高推理強度
- 未指定 最高推理強度採用 default 調整值時
供比較的預估費率
各設定的價格
請逐一核對各項費用與所列條件。每組互為替代選項的設定只套用一種費率。
| 設定 | 費率表 | 預估數量 | 費用 |
|---|---|---|---|
| 設定基礎 token 費率 | 費率表基本費率 | 預估數量— | 費用 輸入 · 輸入 Token · 僅供比較的估算 — / 1K Token 輸出 · 輸出 Token · 僅供比較的估算 — / 1K Token 輸入 · 讀取快取 · 僅供比較的估算 — / 1K Token 輸入 · 寫入快取 · 僅供比較的估算 — / 1K Token 輸入 · 寫入快取,1 小時 · 僅供比較的估算 — / 1K Token |
| 設定預估生成費用 | 費率表— | 預估數量單次生成估算值 | 費用 輸出 · 預估生成費用 · 僅供比較的估算 $1.35 生成前估算 此估算並非額外費用,也不是本次生成完成後的固定費率。 |
Ailoot 會在請求前預留估算金額。取得結果後,依實測用量結算最終費用。串流結算採用最終用量紀錄。預留金額與結算的運作方式 →
請求範例
Ailoot Ultra · 3D
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
cat > request.json <<'JSON'
{
"model": "tripo3d",
"type": "text_to_model",
"prompt": "a cute pig",
"model_version": "v3.0-20250812"
}
JSON
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/3d/generations \
-H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
--data-binary @request.json -D response-headers.txt -o result.json
# Create once; retain id, polling_url, original task identifiers and every header.
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
export AILOOT_API_KEY
python3 - <<'PY_STATUS'
import json,os,subprocess
from pathlib import Path
from urllib.parse import urljoin,urlsplit
r=json.loads(Path("result.json").read_text())
u=urljoin("https://api.ailoot.ai",r["polling_url"])
p=urlsplit(u)
if p.scheme!="https" or p.netloc!="api.ailoot.ai" or p.username or p.password:
raise SystemExit("Unexpected returned polling URL; preserve the response")
subprocess.run(["curl","--fail-with-body","--silent","--show-error",u,"-H","Authorization: Bearer "+os.environ["AILOOT_API_KEY"],"-D","status-headers.txt","-o","status.json"],check=True)
# Read this same original polling_url again while pending.
# Preserve unknown/result_pending_check; do not repeat creation.
PY_STATUS
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
export AILOOT_API_KEY
python3 - <<'PY_ASSETS'
import json,os,subprocess
from pathlib import Path
from urllib.parse import urljoin,urlsplit
r=json.loads(Path("status.json").read_text())
roles={}
def visit(v,path=""):
if isinstance(v,dict):
for k,x in v.items(): visit(x,path+"/"+k)
elif isinstance(v,list):
for i,x in enumerate(v): visit(x,path+"/"+str(i))
elif isinstance(v,str):
u=urljoin("https://api.ailoot.ai",v); p=urlsplit(u)
if p.scheme=="https" and p.netloc=="api.ailoot.ai" and not p.username and not p.password and p.path.startswith("/v1/media/assets/") and p.path.endswith("/content"):
roles.setdefault(u,[]).append(path)
visit(r)
if not roles: raise SystemExit("No completed owned assets; retain the original status")
manifest=[]
for i,(u,paths) in enumerate(roles.items()):
target=Path(f"asset-{i}.bin")
subprocess.run(["curl","--fail-with-body","--silent","--show-error",u,"-H","Authorization: Bearer "+os.environ["AILOOT_API_KEY"],"-o",str(target)],check=True)
raw=target.read_bytes()
if not raw: raise SystemExit("Empty asset; retain original status and metadata")
ext="glb" if raw[:4]==b"glTF" else "png" if raw[:8]==b"\x89PNG\r\n\x1a\n" else "jpg" if raw[:3]==b"\xff\xd8\xff" else "webp" if raw[:4]==b"RIFF" and raw[8:12]==b"WEBP" else "mp4" if raw[4:8]==b"ftyp" else "bin"
name=f"asset-{i}.{ext}"
if target.name!=name: target.rename(name)
manifest.append({"file":name,"response_paths":paths,"bytes":len(raw)})
Path("asset-manifest.json").write_text(json.dumps(manifest,indent=2))
print("Saved",len(manifest),"unique owned assets; every response role retained")
PY_ASSETS
接收並儲存結果
Ailoot Ultra · 3D
下載每張傳回的圖片,或儲存其 Base64 內容
GET /v1/3d/generations/{request_id}GET /v1/media/assetsGET /v1/media/assets/{asset_id}
保留所有已完成的結果
請保留所有完整傳回的回應、檔案與內容區塊。
請保留完整回應與標頭、原始識別碼、每個實際輸出,以及所有用量/帳務欄位。請儲存每個不重複的自有資產,並保留指向該資產的每個角色。
需要檢查原始回應時
請保留回傳的公開工作或操作 id,以及所有標頭。僅讀取原始工作;unknown 或 result_pending_check 均不代表可以再次建立。
回應欄位
| 欄位 | 類型 |
|---|---|
欄位id | 類型string |
欄位polling_url | 類型string |
欄位provider_task_id | 類型string |
欄位code | 類型integer |
欄位data.task_id | 類型string |
欄位data.status | 類型string |
欄位data.progress | 類型integer |
欄位data.output.* | 類型string |
欄位data.result.*.url | 類型string |
欄位data.result.*.type | 類型string |
欄位data.thumbnail | 類型string |
別名
模型別名
Ailoot Ultra tripo3d
方法路徑別名
請使用上方列出的 API 方法路徑。
相關呼叫用 ID
FAQ · Tripo: 3D Generation
- 可以使用哪些輸入與結果?
POST /v1/3d/generations·tripo3d:text→model_3d,image- 請求使用哪些欄位?
POST /v1/3d/generations·tripo3d:model,type,model_version,prompt