# u3d **Repository Path**: liul3/u3d ## Basic Information - **Project Name**: u3d - **Description**: 一个基于 Unity 引擎的 3D 可视化控制系统,支持通过 Web 界面远程控制 3D 场景中的物体旋转和移动,并可传输点云数据和相机图像。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-01-08 - **Last Updated**: 2026-01-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Unity 3D 远程控制系统 一个基于 Unity 引擎的 3D 可视化控制系统,支持通过 Web 界面远程控制 3D 场景中的物体旋转和移动,并可传输点云数据和相机图像。 ## 功能特性 - **3D 物体控制**:支持对立方体进行旋转和移动控制 - **多轴控制**:可选择 X、Y、Z 轴进行操作 - **Web 控制界面**:提供直观的 Web 界面进行远程控制 - **数据传输**: - TCP 通信:用于接收控制指令 - UDP 通信:用于传输点云数据和相机图像 - **多平台支持**:支持桌面端和 WebGL 部署 ## 项目结构 ``` u3d/ ├── Scripts/ # Unity C# 脚本 │ ├── CubeRotator.cs # 立方体旋转和移动控制器 │ ├── TCPClient.cs # TCP 客户端通信 │ ├── UDPSender.cs # UDP 数据发送(点云/相机) │ └── WebGLController.cs # WebGL 平台控制器 ├── Scenes/ # Unity 场景 │ └── SampleScene.unity # 示例场景 ├── WebControl/ # Web 控制后端 │ ├── web_bridge.py # WebSocket 桥接服务器 │ ├── webgl_server.py # WebGL HTTP 服务器 │ ├── config.json # 配置文件 │ ├── requirements.txt # Python 依赖 │ ├── start.bat # Windows 启动脚本 │ ├── start_web.bat # Web 启动脚本 │ ├── static/ # 静态资源 │ │ ├── index.html # 控制界面 │ │ ├── app.js # 前端逻辑 │ │ ├── style.css # 样式表 │ │ └── Build/ # Unity WebGL 构建文件 │ └── TemplateData/ # Unity 模板资源 └── .cursor/ # Cursor IDE 配置 ``` ## 依赖要求 - Unity 2020.3 或更高版本 - Python 3.7+ - WebGL 模块支持 ### Python 依赖 ``` websockets ``` ## 快速开始 ### 1. Unity 项目设置 1. 使用 Unity Hub 打开项目目录 2. 确保已安装 WebGL 构建支持模块 3. 打开 `Scenes/SampleScene.unity` 场景 4. 将 `Scripts/CubeRotator.cs` 挂载到场景中的立方体对象上 5. 配置 TCPClient 和 UDPSender 组件的参数 ### 2. 启动 Web 控制服务 **Windows:** ```bash # 方式一:使用启动脚本 cd WebControl start.bat # 方式二:手动启动 python web_bridge.py python webgl_server.py ``` **Linux/macOS:** ```bash cd WebControl pip install -r requirements.txt python web_bridge.py & python webgl_server.py ``` ### 3. 访问控制界面 启动服务后,在浏览器中访问: ``` http://localhost:8000 ``` ## 控制指令格式 ### 旋转指令 ```json { "type": "rotate", "axis": "x", "speed": 1.0, "multiplier": 1.0, "targetAngle": 90.0, "useTarget": false } ``` ### 移动指令 ```json { "type": "move", "axis": "y", "speed": 1.0, "multiplier": 1.0 } ``` ### 停止/恢复指令 ```json { "type": "stop" } { "type": "resume" } ``` ## 配置说明 ### WebControl/config.json ```json { "server": { "host": "127.0.0.1", "port": 8888 }, "websocket": { "port": 8765 } } ``` ### Unity 组件配置 #### CubeRotator - `baseRotateSpeed`: 基础旋转速度 - `rotateSpeedMultiplier`: 旋转速度倍率 - `rotateAxis`: 旋转轴向 - `targetAngle`: 目标角度 - `useTargetAngle`: 是否使用目标角度 - `baseMoveSpeed`: 基础移动速度 - `moveSpeedMultiplier`: 移动速度倍率 - `moveAxis`: 移动轴向 - `isMoving`: 是否正在移动 #### TCPClient - `serverIP`: 服务器 IP 地址 - `serverPort`: 服务器端口 - `autoReconnect`: 自动重连 - `reconnectInterval`: 重连间隔(秒) #### UDPSender - `serverIP`: 服务器 IP - `pointCloudPort`: 点云数据端口 - `cameraPort`: 相机图像端口 - `sendFrequency`: 发送频率 - `targetCamera`: 目标相机 - `enablePointCloud`: 启用点云传输 - `enableCamera`: 启用相机图像传输 ## 通信协议 ### TCP 控制指令 Unity 客户端连接 TCP 服务器后,可接收以下格式的控制指令: ```json { "action": "rotate|move|stop|resume", "axis": "x|y|z", "speed": 0.0-10.0, "multiplier": 1.0-5.0, "targetAngle": -180至180, "useTarget": true|false } ``` ### UDP 数据传输 - **点云数据**:以二进制格式发送,模拟点云数据 - **相机图像**:JPEG 格式压缩的图像数据 ## Web 界面功能 - **状态指示**:显示与 Unity 的连接状态 - **轴向选择**:选择 X、Y、Z 轴进行控制 - **速度调节**:通过滑块调节旋转和移动速度 - **方向控制**:方向键控制物体移动 - **日志面板**:实时显示操作日志 ## 常见问题 1. **无法连接 TCP 服务器**:检查服务器 IP 和端口配置是否正确 2. **Web 界面无响应**:确认 WebSocket 服务器已启动 3. **点云数据不显示**:检查 UDP 端口配置和网络连接 ## 许可证 本项目遵循开源协议,请查看项目根目录下的 LICENSE 文件获取详细信息。