Hyper3DHyper3D Docs
API 规范

骨骼绑定

使用骨架模板、自定义层级与可选动画,为 Rodin 资产或上传的模型绑定骨骼。

POST
/api/v2/rigging

Authorization

bearer
headerAuthorizationBearer <token>

Request Body

multipart/form-data
  1. body
bone_template?string
Default"auto"
Value in"human""quadruped""human_UE""human_Unity""human_ActorCore""bird""dragon""kaiju""custom""auto"
rigging_mode?string
Default"generate"
Value in"generate""modify"
asset_id?string
Formatuuid
model?file
Formatbinary
image?file
Formatbinary
skinning_method?string
Default"shell"
Value in"shell""core"
hierarchy?array<>
Items1 <= items <= 256
skeleton_description?string
Match\S
animation_preset?array<>
Itemsitems <= 10
animation_files?array<>
Itemsitems <= 10
material?string
Value in"PBR""Shaded""All""Hybrid""None"
geometry_file_format?string

可选。绑定后模型的文件格式。选择一种格式。

Default"glb"
Value in"glb""fbx""usdz"

Response Body

application/json
  1. response
error?string
Value in"NO_SUCH_TASK""ASSET_NOT_AVAILABLE""IMAGE_LABEL_LENGTH_TOO_LONG""INVALID_REQUEST""API_NO_ACTIVE_SUBSCRIPTION""API_SUBSCRIPTION_PLAN_TOO_LOW""API_PARALLELISM_LIMIT_REACHED""API_INSUFFICIENT_FUNDS""API_OBJECT_NOT_FOUND_ON_IMAGE""IMAGE_CONTENT_VIOLATION""PERMISSION_DENIED""API_UNKNOWN"
message?string

成功消息或详细错误信息。

uuid?string
Formatuuid
submit_time?string

提交任务的服务器时间。

Formatdate-time
jobs?
consumed?number

提交时预扣的 credits。打包成功时扣除;失败或取消时释放。

Example Request
curl -X POST 'https://api.hyper3d.com/api/v2/rigging'
Example Response
{  "error": "NO_SUCH_TASK",  "message": "Submitted.",  "uuid": "123e4567-e89b-12d3-a456-426614174000",  "submit_time": "2019-08-24T14:15:22Z",  "jobs": {    "uuids": [      "52faea01-729e-4195-85e8-6050a65315e3"    ],    "subscription_key": "string"  },  "consumed": 0}

Rigging 只接受以下两种输入方式之一。同时提交 asset_id 和 model,或两者都不提交,都会被拒绝。

使用预设骨架生成

将 bone_template 设为预设之一——human、quadruped、human_UE、human_Unity 或 human_Actorcore——不要提供 hierarchy 或 skeleton_description。预设模板支持以下两种输入方式。

Rodin asset 输入

把已完成的 Rodin 生成响应中的顶层 uuid 作为 asset_id。该资产必须在 ModelRefine、TextureGenerate 或 TextureRefine 中已确认模型;不支持 rodin_texture_only 创建的资产。已确认的几何与贴图会被复用且不修改源资产,源输入图像在可用时会自动复用。

  • 必填:asset_id、bone_template。
  • 互斥:必须省略 model 和 image。
curl --fail-with-body --request POST 'https://api.hyper3d.com/api/v2/rigging' \
  --header "Authorization: Bearer ${RODIN_API_KEY}" \
  --form 'asset_id=123e4567-e89b-12d3-a456-426614174000' \
  --form 'bone_template=human' \
  --form 'animation_preset=human/Walking' \
  --form 'geometry_file_format=fbx'

自定义模型输入

上传一个模型。除非 material 为 None,否则参考 image 为必填,因为贴图生成需要从中采样;该图像还会帮助理解身体结构。

  • 必填:model、bone_template;除非 material=None,否则还需要 image。
  • 互斥:必须省略 asset_id。
  • 支持的模型格式:obj、glb、stl、fbx、usd、usda、usdz 和 usdc。内嵌的材质与贴图不会被保留。
curl --fail-with-body --request POST 'https://api.hyper3d.com/api/v2/rigging' \
  --header "Authorization: Bearer ${RODIN_API_KEY}" \
  --form 'model=@./model.glb' \
  --form 'image=@./reference.png' \
  --form 'bone_template=human' \
  --form 'material=PBR' \
  --form 'animation_preset=human/Walking' \
  --form 'geometry_file_format=glb'

效果展示

使用预设模板的完整绑定流程:从单个上传模型到带动画的绑定输出。

API 请求 — 将人形网格发送到预设 human 骨骼模板,接收带动画的绑定资产。

curl --fail-with-body --request POST 'https://api.hyper3d.com/api/v2/rigging' \
  --header "Authorization: Bearer ${RODIN_API_KEY}" \
  --form 'model=@./model.fbx' \
  --form 'bone_template=human' \
  --form 'skinning_method=core' \
  --form 'material=None' \
  --form 'animation_preset=human/Flair' \
  --form 'geometry_file_format=fbx'

动画输出 — 绑定后的网格正在驱动动画。可使用查看器下方的播放/暂停/重置控件,或下载 FBX 到你的 DCC 中检查骨架与动画。

API 请求 — 将四足网格发送到预设 quadruped 骨骼模板,接收带动画的绑定资产。

curl --fail-with-body --request POST 'https://api.hyper3d.com/api/v2/rigging' \
  --header "Authorization: Bearer ${RODIN_API_KEY}" \
  --form 'model=@./model.fbx' \
  --form 'bone_template=quadruped' \
  --form 'skinning_method=shell' \
  --form 'material=None' \
  --form 'animation_preset=canine/Default_Canine_Run_Anim' \
  --form 'geometry_file_format=fbx'

动画输出 — 绑定后的网格正在驱动动画。可使用查看器下方的播放/暂停/重置控件,或下载 FBX 到你的 DCC 中检查骨架与动画。

使用自定义骨架生成

设置 bone_template=custom,并且必须且只能提供 hierarchy 或 skeleton_description 之一。两种输入方式(asset_id 或 model)均可;以下示例使用上传模型。

hierarchy

hierarchy 以 JSON 数组字符串编码的扁平节点列表描述骨架。每个节点包含 name、parent(父节点索引)以及可选的 transform 和 length。

请求中以 JSON 数组字符串形式发送:

curl --fail-with-body --request POST 'https://api.hyper3d.com/api/v2/rigging' \
  --header "Authorization: Bearer ${RODIN_API_KEY}" \
  --form 'model=@./model.glb' \
  --form 'image=@./reference.png' \
  --form 'bone_template=custom' \
  --form 'hierarchy=[{"name":"root","parent":-1},{"name":"spine","parent":0},{"name":"head","parent":1}]' \
  --form 'material=PBR' \
  --form 'geometry_file_format=glb'

skeleton_description

skeleton_description 是对身体结构与四肢的非空自然语言描述。有可用图像时——上传的 image 或源资产的输入图像——会随描述一起发送;没有图像时保持纯文本处理。

curl --fail-with-body --request POST 'https://api.hyper3d.com/api/v2/rigging' \
  --header "Authorization: Bearer ${RODIN_API_KEY}" \
  --form 'model=@./model.glb' \
  --form 'image=@./reference.png' \
  --form 'bone_template=custom' \
  --form 'skeleton_description=A quadruped with four legs, a long neck, and a tail.' \
  --form 'material=PBR' \
  --form 'geometry_file_format=glb'

效果展示

完整的自定义绑定流程:从单个上传模型、自定义骨架层级和动画文件,最终得到带动画的绑定输出。

API 请求 — 将自定义网格、自定义骨架层级与动画文件发送到 custom 骨骼模板,接收带动画的绑定资产。

curl --fail-with-body --request POST 'https://api.hyper3d.com/api/v2/rigging' \
  --header "Authorization: Bearer ${RODIN_API_KEY}" \
  --form 'model=@./model.fbx' \
  --form 'bone_template=custom' \
  --form 'skinning_method=shell' \
  --form 'material=None' \
  --form 'animation_files=@./animation.fbx' \
  --form 'geometry_file_format=fbx' \
  --form 'hierarchy=@./hierarchy.json' 

动画输出 — 绑定后的网格正在驱动一个动画。可使用查看器下方的播放/暂停/重置控件,或下载 FBX 到你的 DCC 中检查骨架与动画。

修改已有骨架

设置 rigging_mode=modify,提供包含完整基准骨架与修改要求的 skeleton_description,并省略 hierarchy。骨架将从描述中解析,而不是加载所选模板。

动画

动画为可选。animation_preset(内置动画 ID)或 animation_files(上传的 FBX 片段,每个不超过 25 MiB,且每个文件恰好一个片段),最多 10 个输入。两个字段都省略时导出不带动画。

计费

基础绑定生成:0.5 credits

响应与错误

{
  "message": "Submitted.",
  "uuid": "123e4567-e89b-12d3-a456-426614174000",
  "jobs": {
    "uuids": ["223e4567-e89b-12d3-a456-426614174000"],
    "subscription_key": "subscription-key-from-generation-response"
  },
  "consumed": 0.5
}

Rigging 使用与其他生成 endpoint 相同的应用错误码。HTTP 201 仅表示 endpoint 已处理请求;只有在 error 缺失或为空且顶层 uuid 非空时,任务才算已受理。HTTP 400 表示字段无效、文件不受支持或输入方式冲突;401 表示鉴权无效;429 表示触发限流。状态查询和下载遵循与其他生成接口相同的标识规则。