三维数字化开发管理中心

news2024/11/20 11:42:29

img


目录

    • 一、前言
    • 二、项目依赖
      • 2.1 后端
      • 2.2 前端
    • 三、快速运行
      • 3.1 启动后台服务
      • 3.2 启动前台页面
    • 四、使用手册
      • 4.1 登录
      • 4.2 首页
      • 4.3 资源中心
      • 4.4 在线预览
      • 4.5 三维开发
      • 4.6 信息管理
        • 4.6.1 用户信息
        • 4.6.2 模型信息
      • 4.7 个人中心
    • 五、数据库
      • 5.1 数据需求
      • 5.2 数据流图
      • 5.3 数据字典
        • 1)用户 user_info
        • 2)资源 model_info
        • 3)中转信息 transfer_info
      • 5.4 异步连接
    • 六、后台
    • 七、前台
    • 八、总结


一、前言

随着元宇宙的爆红,3维数字化技术的市场空间也越来越大。因此,本系统实现一个三维数字化开发管理中心,主要实现对于模型的开发与管理。

对于管理系统而言,数据库的设计必不可少,数据库系统主要分为三个表,模型资源管理、用户管理、中转信息管理。后台数据库建立好了之后,我先对后台服务器进行设计,这里选择更加适配mysql和自由度更高的koa框架搭建。数据库连接部分,采用异步请求数据,实时反馈给前台渲染。接口设计部分,因为要考虑到前后端的交互问题,所以对于接口部分,主要分为模型获取接口、资源上传接口、用户管理接口,对于所有的资源单独放在一个文件夹显示,数据库只存储路径而并非模型资源。

对于前台的数据展示采取vue+element-ui的技术选型,一开始确定的是后台管理系统,所以采取左侧菜单,右侧内容这样的格式进行布局。菜单主要分为首页展示、资源中心、三维开发、模型信息管理、用户信息管理、个人中心。

项目开源地址:三维数字化开发管理中心

二、项目依赖

2.1 后端

 "dependencies": {
    "@koa/cors": "^4.0.0",
    "@koa/multer": "^3.0.0",
    "@koa/router": "^12.0.0",
    "fs": "^0.0.1-security",
    "koa": "^2.13.4",
    "koa-bodyparser": "^4.3.0",
    "koa-static": "^5.0.0",
    "mysql": "^2.18.1",
    "path": "^0.12.7"
  }

2.2 前端

  "dependencies": {
    "@element-plus/icons-vue": "^2.0.10",
    "axios": "^1.2.0",
    "dat.gui": "^0.7.9",
    "default-passive-events": "^2.0.0",
    "echarts": "^5.4.0",
    "element-plus": "^2.2.25",
    "nanoid": "^4.0.0",
    "nprogress": "^0.2.0",
    "path": "^0.12.7",
    "pinia": "^2.0.27",
    "pinia-plugin-persist": "^1.0.0",
    "three": "^0.147.0",
    "vue": "^3.2.41",
    "vue-router": "^4.1.6",
    "vuex": "^4.1.0",
    "zdog": "^1.1.3"
  },
  "devDependencies": {
    "@vitejs/plugin-vue": "^3.2.0",
    "less": "^4.1.3",
    "sass": "^1.56.1",
    "unplugin-auto-import": "^0.12.0",
    "unplugin-vue-components": "^0.22.11",
    "vite": "^3.2.3"
  }

在这里插入图片描述

  • node_modules 文件夹用来存放所有已安装到项目中的包。require() 导入第三方包时,就是从这个目录中查找并加载包。
  • package-lock.json 配置文件用来记录 node_modules 目录下的每一个包的下载信息,例如包的名字、版本号、下载地址等。
  • package.json项目的名称、版本号、描述等、用到了哪些包、开发期间使用的包、部署使用的包
    • devDependencies :开发依赖
    • dependencies :核心依赖
  • 注意:程序员不要手动修改 node_modules 或 package-lock.json 文件中的任何代码,npm 包管理工具会自动维护它们,今后在项目开发中,一定要把 node_modules 文件夹,添加到 .gitignore 忽略文件中

三、快速运行

3.1 启动后台服务

2

电脑部署node.js环境,back文件夹终端运行nodemon .\server.js

3.2 启动前台页面

3

安装依赖
npm i
运行项目
npm run dev
打包项目
npm run build

四、使用手册

img

4.1 登录

img

图 4-1-1 登陆界面

img

图 4-1-2 登录失败

首先,进入到我们的登录界面。登录模块会先在前台对登录数据进行一次预检查,预检查通过之后,向数据库发送等待验证的账号密码。后台会返回给我们是否验证成果的结果,失败会重新登录,成功进入系统首页。

4.2 首页

img

图 4-2-4 首页

来到我们的系统首页,右侧是菜单导航栏,左上方一行是用后信息显示和一些全局设置。中间这部分空出来作为我们的展示页面。首页主要是对系统的特点进行概述,四个系统特点:智能化、资源化、标签化、开源化,中间空出来一部分作为展示区,底部是系统资源、人口信息、访问信息等等的一些图表展示。

4.3 资源中心

img

图4-3-1 资源中心

img

图 4-3-2 资源分类

img

图 4-3-3 资源搜索

进入到我们的资源中心,其中是系统一开始上传的内置资源。每一个卡片代表一个三维模型资源,卡片包括资源的名称、标签、上传者,我们可以对任意一个资源进行分类查找、搜索、查看和下载。

4.4 在线预览

img

图 4-4-1 在线预览

点击资源中心的模型查看,跳转到新页面,可以对相关的模型进行平移、缩放、旋转等操作。

4.5 三维开发

img

图 4-5-1 三维开发

进入三维开发界面,我们可以真正实现对于模型的开发。此开发平台,主要借助three.js的editor实现,可以对模型进行精细化操作。

4.6 信息管理

4.6.1 用户信息

在这里插入图片描述

图 4-6-1 用户信息

img

图 4-6-2 查看/修改用户

img

图 4-6-3 添加用户

img

图 4-6-4 删除用户

img

图 4-6-5 用户搜索

信息管理功能模块做了等级限制,只有用户等级大于0(不是普通用户),才可以进入这个页面进行操作。用户管理模块实现了用户的增删改查,对于等级用户也进行了相应的限制。

4.6.2 模型信息

img

图 4-6-5 模型资源

img

图 4-6-6 删除模型

img

图 4-6-7 添加模型

img

图 4-6-8 模型搜索

模型信息管理功能模块,主要对系统内部的模型资源进行管理。模型管理界面主要可以对前台展示的数据进行管理,如模型查看、上传、删除、搜索,此功能模块只对管理员开放。

4.7 个人中心

img

图 4-7-1 个人中心

个人中心主要对与已经登录的用户进行用户信息管理,同时该界面还支持对用户的虚拟形象进行创建,打造个人主页。

五、数据库

5.1 数据需求

  • 用户:唯一id标识、账号、密码、用户等级
  • 模型:唯一id标识、名称、一级分类、二级分类(备用)、tag标签、模型预览图片、模型、拥有者
  • 中转信息:模型id标识、下载次数、收藏次数、上传时间、下载时间

5.2 数据流图

img

顶层数据流图分别为用户、管理员提供两种不同的服务。其中,普通用户提供账号密码数据之后可以对管理中心的开发服务进行二次开发。管理员验证完成身份之后,对用户、资源进行管理。

在这里插入图片描述

进行登录验证之后的用户,可以导入提供模型资源,开发展台对模型进行数据处理,处理完成返回结果。

5.3 数据字典

在这里插入图片描述

1)用户 user_info

数据项数据项含义类型长度约束
id唯一标识、主键VARCHAR30主键
username用户名VARCHAR45非空
password密码VARCHAR45非空
level等级 0 1 2INT非空

2)资源 model_info

数据项数据项含义类型长度约束
id唯一标识、主键VARCHAR30主键
name模型名称VARCHAR30非空
first_category一级分类VARCHAR45非空
second_category二级分类VARCHAR45
tag标签VARCHAR45限制5个tag标签
photo_url图片地址VARCHAR45非空,格式正确
model_url模型地址VARCHAR45非空,格式正确
owner模型拥有者、外键VARCHAR30外键

3)中转信息 transfer_info

数据项数据项含义类型长度约束
id模型唯一标识VARCHAR30外键
downloads下载次数INT
collections收藏次数INT
upload_date上传时间DATETIME非空
download_date下载时间DATETIME

5.4 异步连接

//异步实现数据库连接
const mysql = require('mysql')

// 更改全局数据库连接
const pool = mysql.createPool({
    url: '101.132.190.14',
    user: 'bosom',
    password: '123456',
    database:'3d_resources'
})

let query = async (sql,values) => {
    return new Promise((resolve, reject) => {
        pool.getConnection((err, connection) => {
            if (err) {
                reject('数据库连接出错',err)
            } else {
                connection.query(sql, values, (err, results) => {
                    if (err) {
                        reject('sql语句错误',err)
                    } else {
                        resolve(results)
                    }
                    connection.release()
                })
            }
        })
    })
}
module.exports=query

六、后台

后端:node+koa+mysql

到时候有时间细分讲一讲

七、前台

前端:html+js+scss+vue

到时候有时间细分讲一讲

八、总结

通过本次设计完成了一个简易的数字化开发管理中心,但是总体看下来还是有许多的不足之处。比如,对于模型上传部分,没有办法对于所有的模型格式进行解析,并渲染到网页里面去。目前v1.0.0版本只支持gltf格式的模型数据,上传别的模型数据比如obj、fbx会出现解析出错的情况。此外,上传的模型会包含许多的依赖项,如果只上传单个模型,缺少依赖也会报错。模型的贴图部分,还不能够对于模型进行完美适配,一些大型的场景还有缺陷。

虽然本项目存在一些不足,但对于自己来说也收获了很多。自己独立一个人完成前后台交互的项目,融合了3d技术开发。对于数据库的概念设计、E-R图、数据表的映射、关系规范化理论、数据表等知识点有了一次复习与提高,对于mysql数据库语句的熟练性也有了很大的提高。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/110509.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

马斯克辞任CEO,产品经理如何用项目协作软件武装自己?

自马斯克接管推特以来,已经发起了多轮裁员潮,仅第一波就裁掉了50%的员工。11月14日,马斯克开启第二波裁员。而IT之家12 月 21 日消息,埃隆・马斯克在推特发文对网友的投票结果做出回应,称会尽快找到一个足够傻的人来接…

蓝桥杯备赛Day3——基础数据结构(一维数组)

目录 数据结构 什么是数据结构? 《数据结构》教材一般包含 基础数据结构 最简单的数据结构——一维数组 一维数组的定义 一维变长数组 一维正向遍历 一维反向遍历 一维数组区间操作(实际上就是切片操作) 一维数组从a[1]开始赋值 一维数组的读…

热门项目披露:四川超声印制板有限公司100%股权转让

热门项目披露:四川超声印制板有限公司100%股权转让 项目推荐指数:;该项目由 北京产权交易所 发布,于2022年12月11日被塔米狗平台收录。 项目方 四川超声印制板有限公司, 成立于 1998年7月5日 , 注册资金 2…

Unity 3D Hierarchy 视图 || Unity 3D Project 视图

Unity 3D 的 Hierarchy 视图包含了每一个当前场景的所有游戏对象( GameObject ),如下图所示。 其中一些是资源文件的实例,如 3D 模型和其他预制物体( Prefab )的实例,可以在 Hierarchy 视图中选…

Mac 截图工具 iShot Pro - 软件介绍、下载安装详细教程

Mac 截图工具 iShot Pro -软件介绍、下载安装详细教程 iShot -优秀,功能齐全的区域截图,窗口截图,多窗口截图,长屏幕截图,shell截图,时间间隔截图,快速注释,纹理,颜色匹配…

虚拟专用网VPN(计算机网络-网络层)

目录 专用网络与专用地址 RFC 1918指明的专用地址 互连两个地点的专用网络 虚拟专用网VPN (Virtual Private Network) IP 隧道技术 VPN 的要点 专用网络与专用地址 世界上有很多机构有自己独立的网络,这些网络并不与因特网 互连,为该机构所专有&…

【LeetCode】有效的数独 [M](模拟)

36. 有效的数独 - 力扣(LeetCode) 一、题目 请你判断一个 9 x 9 的数独是否有效。只需要 根据以下规则 ,验证已经填入的数字是否有效即可。 数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗实线分隔…

国产CAE的涅槃-岩土行业高性能离散元软件MatDEM

作者 | 刘春博士 一、导读 2019年9月11日,ANSYS公司公开宣称:“收购LSTC公司,一举获得其旗下拥有LS-DYNA(结构&流体&电磁的多物理场求解器)、LS-PrePost(前后处理器)、LS-OPT/LS-TASC…

基于Web的文件管理系统,支持Office、WPS预览/编辑、在线解压缩、文件分享、文件加密、远程存储、远程文件推送、秒传、断点

基于Web的文件管理系统,支持权限管理、历史版本管理、Office预览/编辑、WPS预览/编辑、在线解压缩、文件分享、文件加密、远程存储、远程文件推送、秒传、断点续传、智能搜索、文件备注、本地自动备份、异地自动备份、一键迁移、集群部署。 主要应用场景&#xff1…

14_视图

1. 常见的数据库对象 对象描述表(TABLE)表是存储数据的逻辑单元,以行和列的形式存在,列就是字段,行就是记录数据字典就是系统表,存放数据库相关信息的表。系统表的数据通常由数据库系统维护,程序员通常不应该修改&…

STM32正点原子图片——显示实验

目录 一、图片显示部分 GIF piclib.c介绍 图像显示实验main.c介绍 二、SD卡模块 1、SD卡基础知识 2、SD卡读操作 3、SD卡写操作 一、图片显示部分 GIF GIF(Graphics Interchange Format)的原义是“图像互换格式”,是CompuServe公司在1987年开发的图像文件格式。GI…

敏捷价值流管理

对团队或企业来说,敏捷能够通过快速迭代、改进来更好地为客户或终端用户交付价值。但有些团队在引入敏捷项目管理模式之后,团队管理层看了看埋头工作的团队,“唉?团队的效率好像并没有提升啊,这不和以前一样吗……”在…

怎样给黑白照片上色?2个技能教你如何给黑白照片上色

大家看过长辈的黑白照片吗?最近我的爷爷翻出了几十年前的老照片,给我细细道来每张照片背后的故事。可惜那个年代的技术水平有限,没办法拍出好看的彩色照片。如今照片修复技术层层递进,我想借助一些图片处理软件,将这些…

Qt QCustomPlot 添加多个坐标系区域

Qt QCustomPlot 添加多个坐标系区域 文章目录Qt QCustomPlot 添加多个坐标系区域摘要1 新建多个坐标系QCPAxisQCPAxisRectQCPLayoutGrid2 多个坐标轴如何更新数据添加数据3 遇到的问题最后关键字: Debian、 Linux、 QCustomPlot、 Qt、 QCPAxisRect内容背景&#xf…

vue3的中间值思维

在用vue框架的开发的时候,经常使用到的一种中间值思维,什么是中间值思维,就是通过一个间接的属性去改变需要渲染的值 我们在传值的时候,如果是用的mitt传值,那传过来的值就是在bus.on函数中,我们就得取出来…

消息中间件RocketMQ快速入门

目录前言消息中间件需要解决哪些问题?Publish/SubscribeMessage PriorityMessage FilterBroker端消息过滤Consumer端消息过滤Message Persistence消息可靠性低延迟消息回溯消费消息堆积定时消息消息重试RocketMQ 物理部署结构RocketMQ 逻辑部署结构RocketMQ 数据存储…

Scala 基础函数

1.前言 为什么要学习Scala 分布式高并发语言Go、R、Erlang等等为何选择Scala? Spark是大数据处理的核心方式,用scala语言编写! Kafka分布式发布订阅消息系统,由LinkedIn捐给Apache,以极高的吞吐量著称,是…

人工智能-seaborn单双多变量绘图、两案例:NBA球员数据分析、北京租房数据统

1、 seaborn 作用:更高效地绘图 #安装 pip3 install seaborn#导入 import seaborn as sns单变量:直方图或核密度曲线 双变量:散点图、二维直方图、 主要函数:distplot()与joinplot()函数 1.1 单变量绘图 API import seabor…

cookie, session,redis全解析

cookie session redis 一. 前言 最近在学习node的过程中对于cookie,session,redis有了和之前不一样的理解,记录一下之前不了解的知识点。二.cookie的重点概念 存储在客户端浏览器中的字符串,最大5kb跨域不共享,每一个…

限定城市|临床医生自费赴日本大阪公立大学医学院访学观摩

X医生拟自费访学,目标是日本大阪都市圈,包括大阪、京都、奈良、神户等,优先考虑大阪市及京都市。最终我们申请到大阪公立大学医学院,对方在一周内连续发来两封邀请函,以便于X医生办理护照及单位的审批手续。对于首次办…