Shadow Editor Pro 3D 资源接口

2026-01-04 超腾开源 45 次阅读 0 次点赞
本文档详细介绍了3D内容管理系统的核心功能模块及其API接口。系统提供对3D场景的完整生命周期管理,包括创建、编辑、保存、加载、发布和导出等功能。同时,文档还涵盖了模型、材质、动画、音频、视频、贴图、字体、截图、缩略图和分类等各类资源的管理。每个模块均定义了标准的数据结构,并提供了对应的增删改查及上传API接口,例如获取列表、添加、更新、删除等操作。分类管理用于组织所有资源,摘要统计接口则提供全局资源概览。整体构成了一个功能全面、结构清晰的3D资源管理后端服务方案。

场景管理

场景管理提供3D场景的完整生命周期管理,包括创建、编辑、保存、加载、发布等功能。

数据类型

Scene

interface Scene {
  // 场景ID
  id?: string
  // 场景名称
  name?: string
  // 类别ID
  categoryId?: string
  // 类别名称
  categoryName?: string
  // 场景数据(JSON)
  data?: string
  // 缩略图
  thumbnail?: string
  // 创建时间
  createTime?: string
  // 更新时间
  updateTime?: string
}

API 接口

1. 获取场景列表

接口: GET /api/scene/list

描述: 获取所有场景列表

请求参数:

参数 类型 必填 说明
categoryId string 按类别筛选

响应示例:

{
  "success": true,
  "data": [
    {
      "id": "1",
      "name": "示例场景",
      "categoryId": "1",
      "categoryName": "默认分类",
      "thumbnail": "/thumbnails/scene_1.jpg",
      "createTime": "2024-10-19 10:00:00",
      "updateTime": "2024-10-19 10:00:00"
    }
  ]
}

2. 添加场景

接口: POST /api/scene/add

描述: 创建新场景

请求参数:

参数 类型 必填 说明
name string 场景名称
categoryId string 类别ID
data string 场景数据(JSON字符串)
thumbnail string 缩略图Base64数据

响应示例:

{
  "success": true,
  "message": "场景创建成功"
}

3. 更新场景

接口: POST /api/scene/update

描述: 更新场景信息

请求参数:

参数 类型 必填 说明
id string 场景ID
name string 场景名称
categoryId string 类别ID
data string 场景数据
thumbnail string 缩略图

响应示例:

{
  "success": true,
  "message": "场景更新成功"
}

4. 删除场景

接口: POST /api/scene/remove

描述: 删除场景

请求参数:

参数 类型 必填 说明
id string 场景ID

响应示例:

{
  "success": true,
  "message": "场景删除成功"
}

5. 获取场景历史版本

接口: GET /api/scene/history

描述: 获取场景的历史版本列表

请求参数:

参数 类型 必填 说明
id string 场景ID

响应示例:

{
  "success": true,
  "data": [
    {
      "version": "v1",
      "createTime": "2024-10-19 10:00:00",
      "description": "初始版本"
    },
    {
      "version": "v2",
      "createTime": "2024-10-19 10:30:00",
      "description": "添加模型"
    }
  ]
}

6. 加载场景

接口: GET /api/scene/load

描述: 加载指定场景

请求参数:

参数 类型 必填 说明
id string 场景ID
version string 版本号(不指定则加载最新版本)

响应示例:

{
  "success": true,
  "data": {
    "scene": {
      "type": "Scene",
      "uuid": "scene-uuid",
      "background": null,
      "fog": null,
      "children": []
    },
    "metadata": {
      "version": "0.0.1",
      "type": "Object",
      "generator": "ShadowEditorPro"
    }
  }
}

7. 发布场景

接口: POST /api/scene/publish

描述: 发布场景为独立HTML应用

请求参数:

参数 类型 必填 说明
id string 场景ID
options string 发布选项(JSON字符串)

发布选项示例:

{
  "includeResources": true,
  "minify": true,
  "offline": false
}

响应示例:

{
  "success": true,
  "data": {
    "url": "/published/scene_1.html",
    "size": 2048576
  }
}

8. 导出场景为模型

接口: POST /api/scene/export

描述: 将场景导出为3D模型文件

请求参数:

参数 类型 必填 说明
id string 场景ID
format string 导出格式(gltf/glb/obj/ply/stl/dae)

响应示例:

{
  "success": true,
  "data": {
    "url": "/exports/scene_1.glb",
    "size": 1048576
  }
}

模型管理

模型管理提供3D模型文件的完整管理功能,支持多种模型格式。

数据类型

Mesh

interface Mesh {
  // 模型ID
  id?: string
  // 模型名称
  name?: string
  // 类别ID
  categoryId?: string
  // 类别名称
  categoryName?: string
  // 模型类型
  type?: MeshType
  // 文件名
  filename?: string
  // 文件大小
  size?: number
  // 下载地址
  url?: string
  // 缩略图
  thumbnail?: string
  // 创建时间
  createTime?: string
  // 更新时间
  updateTime?: string
}

MeshType

type MeshType =
  | 'unknown'
  | '3ds'
  | '3mf'
  | 'amf'
  | 'assimp'
  | 'awd'
  | 'babylon'
  | 'babylonmeshdata'
  | 'bvh'
  | 'ctm'
  | 'dae'
  | 'drc'
  | 'fbx'
  | 'gcode'
  | 'glb'
  | 'gltf'
  | 'js'
  | 'json'
  | 'kmz'
  | 'md2'
  | 'nrrd'
  | 'obj'
  | 'pcd'
  | 'pdb'
  | 'playcanvas'
  | 'ply'
  | 'pmd'
  | 'pmx'
  | 'prwm'
  | 'sea3d'
  | 'stl'
  | 'vrm'
  | 'vrml'
  | 'vtk'
  | 'wrl'
  | 'x'

API 接口

1. 获取模型列表

接口: GET /api/mesh/list

描述: 获取所有模型列表

请求参数:

参数 类型 必填 说明
categoryId string 按类别筛选
type MeshType 按类型筛选

响应示例:

{
  "success": true,
  "data": [
    {
      "id": "1",
      "name": "立方体",
      "type": "gltf",
      "filename": "cube.gltf",
      "size": 1024,
      "categoryId": "1",
      "categoryName": "几何体",
      "url": "/meshes/cube.gltf",
      "thumbnail": "/thumbnails/mesh_1.jpg",
      "createTime": "2024-10-19 10:00:00"
    }
  ]
}

2. 上传模型

接口: POST /api/mesh/add

描述: 上传模型文件

请求参数:

  • Content-Type: multipart/form-data
参数 类型 必填 说明
file File 模型文件(支持多文件上传)
name string 模型名称
categoryId string 类别ID

响应示例:

{
  "success": true,
  "message": "模型上传成功",
  "data": {
    "id": "1",
    "url": "/meshes/new_model.glb"
  }
}

3. 更新模型

接口: POST /api/mesh/update

描述: 更新模型信息

请求参数:

参数 类型 必填 说明
id string 模型ID
name string 模型名称
categoryId string 类别ID
thumbnail string 缩略图Base64数据

响应示例:

{
  "success": true,
  "message": "模型更新成功"
}

4. 删除模型

接口: POST /api/mesh/remove

描述: 删除模型

请求参数:

参数 类型 必填 说明
id string 模型ID

响应示例:

{
  "success": true,
  "message": "模型删除成功"
}

材质管理

材质管理提供材质资源的保存和加载功能。

数据类型

Material

interface Material {
  // 材质ID
  id?: string
  // 材质名称
  name?: string
  // 类别ID
  categoryId?: string
  // 类别名称
  categoryName?: string
  // 材质数据(JSON字符串)
  data?: string
  // 缩略图
  thumbnail?: string
  // 创建时间
  createTime?: string
  // 更新时间
  updateTime?: string
}

API 接口

1. 获取材质列表

接口: GET /api/material/list

描述: 获取所有材质列表

请求参数:

参数 类型 必填 说明
id string 材质ID(指定则返回单个材质)
categoryId string 按类别筛选

响应示例:

{
  "success": true,
  "data": [
    {
      "id": "1",
      "name": "红色材质",
      "categoryId": "1",
      "categoryName": "默认分类",
      "data": "{\"type\":\"MeshStandardMaterial\",\"color\":16711680}",
      "thumbnail": "/thumbnails/material_1.jpg",
      "createTime": "2024-10-19 10:00:00"
    }
  ]
}

2. 保存材质

接口: POST /api/material/add

描述: 保存材质到材质库

请求参数:

参数 类型 必填 说明
name string 材质名称
data string 材质数据(JSON字符串)
categoryId string 类别ID
thumbnail string 缩略图

响应示例:

{
  "success": true,
  "message": "材质保存成功"
}

3. 更新材质

接口: POST /api/material/update

描述: 更新材质信息

请求参数:

参数 类型 必填 说明
id string 材质ID
name string 材质名称
categoryId string 类别ID
thumbnail string 缩略图

响应示例:

{
  "success": true,
  "message": "材质更新成功"
}

4. 删除材质

接口: POST /api/material/remove

描述: 删除材质

请求参数:

参数 类型 必填 说明
id string 材质ID

响应示例:

{
  "success": true,
  "message": "材质删除成功"
}

动画管理

动画管理提供MikuMikuDance动画文件的管理功能。

数据类型

Animation

interface Animation {
  // 动画ID
  id?: string
  // 动画名称
  name?: string
  // 类别ID
  categoryId?: string
  // 类别名称
  categoryName?: string
  // 动画类型
  type?: AnimationType
  // 文件名
  filename?: string
  // 文件大小
  size?: number
  // 下载地址
  url?: string
  // 缩略图
  thumbnail?: string
  // 创建时间
  createTime?: string
  // 更新时间
  updateTime?: string
}

AnimationType

type AnimationType = 'unknown' | 'vmd' | 'vpd'

API 接口

1. 获取动画列表

接口: GET /api/animation/list

描述: 获取所有动画列表

请求参数:

参数 类型 必填 说明
categoryId string 按类别筛选
type AnimationType 按类型筛选

响应示例:

{
  "success": true,
  "data": [
    {
      "id": "1",
      "name": "舞蹈动画",
      "type": "vmd",
      "filename": "dance.vmd",
      "size": 204800,
      "categoryId": "1",
      "categoryName": "默认分类",
      "url": "/animations/dance.vmd",
      "thumbnail": "/thumbnails/animation_1.jpg",
      "createTime": "2024-10-19 10:00:00"
    }
  ]
}

2. 上传动画

接口: POST /api/animation/add

描述: 上传动画文件

请求参数:

  • Content-Type: multipart/form-data
参数 类型 必填 说明
file File 动画文件
name string 动画名称
categoryId string 类别ID

响应示例:

{
  "success": true,
  "message": "动画上传成功"
}

3. 更新动画

接口: POST /api/animation/update

描述: 更新动画信息

请求参数:

参数 类型 必填 说明
id string 动画ID
name string 动画名称
categoryId string 类别ID
thumbnail string 缩略图

响应示例:

{
  "success": true,
  "message": "动画更新成功"
}

4. 删除动画

接口: POST /api/animation/remove

描述: 删除动画

请求参数:

参数 类型 必填 说明
id string 动画ID

响应示例:

{
  "success": true,
  "message": "动画删除成功"
}

音频管理

音频管理提供音频资源的管理功能,支持为场景添加背景音乐。

数据类型

Audio

interface Audio {
  // 音频ID
  id?: string
  // 音频名称
  name?: string
  // 类别ID
  categoryId?: string
  // 类别名称
  categoryName?: string
  // 文件名
  filename?: string
  // 文件大小
  size?: number
  // 下载地址
  url?: string
  // 缩略图
  thumbnail?: string
  // 创建时间
  createTime?: string
  // 更新时间
  updateTime?: string
}

API 接口

1. 获取音频列表

接口: GET /api/audio/list

描述: 获取所有音频列表

请求参数:

参数 类型 必填 说明
categoryId string 按类别筛选

响应示例:

{
  "success": true,
  "data": [
    {
      "id": "1",
      "name": "背景音乐",
      "filename": "bgm.mp3",
      "size": 5242880,
      "categoryId": "1",
      "categoryName": "默认分类",
      "url": "/audios/bgm.mp3",
      "thumbnail": "/thumbnails/audio_1.jpg",
      "createTime": "2024-10-19 10:00:00"
    }
  ]
}

2. 上传音频

接口: POST /api/audio/add

描述: 上传音频文件

请求参数:

  • Content-Type: multipart/form-data
参数 类型 必填 说明
file File 音频文件(mp3/wav/ogg)
name string 音频名称
categoryId string 类别ID

响应示例:

{
  "success": true,
  "message": "音频上传成功"
}

3. 更新音频

接口: POST /api/audio/update

描述: 更新音频信息

请求参数:

参数 类型 必填 说明
id string 音频ID
name string 音频名称
categoryId string 类别ID
thumbnail string 缩略图

响应示例:

{
  "success": true,
  "message": "音频更新成功"
}

4. 删除音频

接口: POST /api/audio/remove

描述: 删除音频

请求参数:

参数 类型 必填 说明
id string 音频ID

响应示例:

{
  "success": true,
  "message": "音频删除成功"
}

视频管理

视频管理提供视频贴图资源的管理功能。

数据类型

Video

interface Video {
  // 视频ID
  id?: string
  // 视频名称
  name?: string
  // 类别ID
  categoryId?: string
  // 类别名称
  categoryName?: string
  // 文件名
  filename?: string
  // 文件大小
  size?: number
  // 下载地址
  url?: string
  // 缩略图
  thumbnail?: string
  // 创建时间
  createTime?: string
  // 更新时间
  updateTime?: string
}

API 接口

1. 获取视频列表

接口: GET /api/video/list

描述: 获取所有视频列表

请求参数:

参数 类型 必填 说明
categoryId string 按类别筛选

响应示例:

{
  "success": true,
  "data": [
    {
      "id": "1",
      "name": "天空视频",
      "filename": "sky.mp4",
      "size": 10485760,
      "categoryId": "1",
      "categoryName": "默认分类",
      "url": "/videos/sky.mp4",
      "thumbnail": "/thumbnails/video_1.jpg",
      "createTime": "2024-10-19 10:00:00"
    }
  ]
}

2. 上传视频

接口: POST /api/video/add

描述: 上传视频文件

请求参数:

  • Content-Type: multipart/form-data
参数 类型 必填 说明
file File 视频文件(mp4/webm)
name string 视频名称
categoryId string 类别ID

响应示例:

{
  "success": true,
  "message": "视频上传成功"
}

3. 更新视频

接口: POST /api/video/update

描述: 更新视频信息

请求参数:

参数 类型 必填 说明
id string 视频ID
name string 视频名称
categoryId string 类别ID
thumbnail string 缩略图

响应示例:

{
  "success": true,
  "message": "视频更新成功"
}

4. 删除视频

接口: POST /api/video/remove

描述: 删除视频

请求参数:

参数 类型 必填 说明
id string 视频ID

响应示例:

{
  "success": true,
  "message": "视频删除成功"
}

贴图管理

贴图管理提供贴图、天空盒、HDR等资源的管理功能。

数据类型

Map

interface Map {
  // 贴图ID
  id?: string
  // 贴图名称
  name?: string
  // 类别ID
  categoryId?: string
  // 类别名称
  categoryName?: string
  // 文件名
  filename?: string
  // 文件大小
  size?: number
  // 下载地址
  url?: string
  // 缩略图
  thumbnail?: string
  // 创建时间
  createTime?: string
  // 更新时间
  updateTime?: string
}

API 接口

1. 获取贴图列表

接口: GET /api/map/list

描述: 获取所有贴图列表

请求参数:

参数 类型 必填 说明
categoryId string 按类别筛选

响应示例:

{
  "success": true,
  "data": [
    {
      "id": "1",
      "name": "木纹贴图",
      "filename": "wood.jpg",
      "size": 262144,
      "categoryId": "1",
      "categoryName": "默认分类",
      "url": "/maps/wood.jpg",
      "thumbnail": "/thumbnails/map_1.jpg",
      "createTime": "2024-10-19 10:00:00"
    }
  ]
}

2. 上传贴图

接口: POST /api/map/add

描述: 上传贴图文件

请求参数:

  • Content-Type: multipart/form-data
参数 类型 必填 说明
file File 贴图文件(支持多文件上传)
name string 贴图名称
categoryId string 类别ID
type string 类型(image/skybox/skybox_sphere/hdr/video)

响应示例:

{
  "success": true,
  "message": "贴图上传成功"
}

3. 更新贴图

接口: POST /api/map/update

描述: 更新贴图信息

请求参数:

参数 类型 必填 说明
id string 贴图ID
name string 贴图名称
categoryId string 类别ID
thumbnail string 缩略图

响应示例:

{
  "success": true,
  "message": "贴图更新成功"
}

4. 删除贴图

接口: POST /api/map/remove

描述: 删除贴图

请求参数:

参数 类型 必填 说明
id string 贴图ID

响应示例:

{
  "success": true,
  "message": "贴图删除成功"
}

字体管理

字体管理提供字体文件的管理功能,用于创建3D文字。

数据类型

Typeface

interface Typeface {
  // 字体ID
  id?: string
  // 字体名称
  name?: string
  // 类别ID
  categoryId?: string
  // 类别名称
  categoryName?: string
  // 文件名
  filename?: string
  // 文件大小
  size?: number
  // 下载地址
  url?: string
  // 缩略图
  thumbnail?: string
  // 创建时间
  createTime?: string
  // 更新时间
  updateTime?: string
}

API 接口

1. 获取字体列表

接口: GET /api/typeface/list

描述: 获取所有字体列表

请求参数:

参数 类型 必填 说明
categoryId string 按类别筛选

响应示例:

{
  "success": true,
  "data": [
    {
      "id": "1",
      "name": "黑体",
      "filename": "helvetiker_regular.typeface.json",
      "size": 1048576,
      "categoryId": "1",
      "categoryName": "默认分类",
      "url": "/typefaces/helvetiker_regular.typeface.json",
      "createTime": "2024-10-19 10:00:00"
    }
  ]
}

2. 上传字体

接口: POST /api/typeface/add

描述: 上传字体文件

请求参数:

  • Content-Type: multipart/form-data
参数 类型 必填 说明
file File 字体文件(ttf/otf/json)
name string 字体名称
categoryId string 类别ID

响应示例:

{
  "success": true,
  "message": "字体上传成功"
}

3. 更新字体

接口: POST /api/typeface/update

描述: 更新字体信息

请求参数:

参数 类型 必填 说明
id string 字体ID
name string 字体名称
categoryId string 类别ID

响应示例:

{
  "success": true,
  "message": "字体更新成功"
}

4. 删除字体

接口: POST /api/typeface/remove

描述: 删除字体

请求参数:

参数 类型 必填 说明
id string 字体ID

响应示例:

{
  "success": true,
  "message": "字体删除成功"
}

截图管理

截图管理提供场景截图的保存和管理功能。

数据类型

Screenshot

interface Screenshot {
  // 截图ID
  id?: string
  // 截图名称
  name?: string
  // 文件名
  filename?: string
  // 文件大小
  size?: number
  // 下载地址
  url?: string
  // 缩略图
  thumbnail?: string
  // 创建时间
  createTime?: string
}

API 接口

1. 获取截图列表

接口: GET /api/screenshot/list

描述: 获取所有截图列表

响应示例:

{
  "success": true,
  "data": [
    {
      "id": "1",
      "name": "场景截图",
      "filename": "screenshot_001.jpg",
      "size": 262144,
      "url": "/screenshots/screenshot_001.jpg",
      "thumbnail": "/thumbnails/screenshot_001.jpg",
      "createTime": "2024-10-19 10:00:00"
    }
  ]
}

2. 保存截图

接口: POST /api/screenshot/add

描述: 保存截图

请求参数:

  • Content-Type: multipart/form-data
参数 类型 必填 说明
file File 截图文件
name string 截图名称

响应示例:

{
  "success": true,
  "message": "截图保存成功"
}

3. 删除截图

接口: POST /api/screenshot/remove

描述: 删除截图

请求参数:

参数 类型 必填 说明
id string 截图ID

响应示例:

{
  "success": true,
  "message": "截图删除成功"
}

缩略图管理

缩略图管理提供缩略图生成和管理功能。

API 接口

1. 上传缩略图

接口: POST /api/thumbnail/add

描述: 上传缩略图或图片并生成缩略图

请求参数:

  • Content-Type: multipart/form-data
参数 类型 必填 说明
file File 图片文件

响应示例:

{
  "success": true,
  "data": [
    {
      "id": "1",
      "filename": "thumbnail.jpg",
      "url": "/thumbnails/thumbnail.jpg",
      "size": 16384
    }
  ]
}

分类管理

分类管理提供资源分类的管理功能,用于组织和管理各类资源。

数据类型

Category

interface Category {
  // 分类ID
  id?: string
  // 分类名称
  name?: string
  // 父分类ID
  parentId?: string
  // 创建时间
  createTime?: string
  // 更新时间
  updateTime?: string
}

API 接口

1. 获取分类列表

接口: GET /api/category/list

描述: 获取所有分类列表

请求参数:

参数 类型 必填 说明
type string 资源类型(scene/mesh/material等)
parentId string 父分类ID

响应示例:

{
  "success": true,
  "data": [
    {
      "id": "1",
      "name": "默认分类",
      "parentId": null,
      "createTime": "2024-10-19 10:00:00"
    },
    {
      "id": "2",
      "name": "几何体",
      "parentId": "1",
      "createTime": "2024-10-19 10:00:00"
    }
  ]
}

2. 添加分类

接口: POST /api/category/add

描述: 创建新分类

请求参数:

参数 类型 必填 说明
name string 分类名称
parentId string 父分类ID
type string 资源类型

响应示例:

{
  "success": true,
  "message": "分类创建成功"
}

3. 更新分类

接口: POST /api/category/update

描述: 更新分类信息

请求参数:

参数 类型 必填 说明
id string 分类ID
name string 分类名称
parentId string 父分类ID

响应示例:

{
  "success": true,
  "message": "分类更新成功"
}

4. 删除分类

接口: POST /api/category/remove

描述: 删除分类

请求参数:

参数 类型 必填 说明
id string 分类ID

响应示例:

{
  "success": true,
  "message": "分类删除成功"
}

摘要统计

API 接口

1. 获取资源摘要

接口: GET /api/summary/all

描述: 获取所有资源的统计摘要

响应示例:

{
  "success": true,
  "data": {
    "sceneCount": 10,
    "meshCount": 50,
    "materialCount": 20,
    "animationCount": 5,
    "audioCount": 8,
    "videoCount": 3,
    "mapCount": 30,
    "typefaceCount": 5,
    "screenshotCount": 15
  }
}
本文由人工编写,AI优化,转载请注明原文地址: Shadow Editor Pro 3D 资源接口

评论 (0)

发表评论

昵称:加载中...

暂无评论,快来发表第一条评论吧!