3716 lines
174 KiB
Markdown
3716 lines
174 KiB
Markdown
# 功能与源代码对应关系清单
|
||
|
||
## 2.1.1 core模块核心文件
|
||
|
||
### 1. `core/__init__.py`
|
||
- **功能**: Python包初始化文件,导出核心类
|
||
- **类**:
|
||
- `CoreWorld`: 核心世界类
|
||
- `SelectionSystem`: 选择系统类
|
||
- `EventHandler`: 事件处理器类
|
||
- `ToolManager`: 工具管理器类
|
||
- `ScriptManager`: 脚本管理器类
|
||
- `ScriptBase`: 脚本基类
|
||
- `ScriptComponent`: 脚本组件类
|
||
|
||
### 2. `core/world.py`
|
||
- **功能**: 核心世界功能类,负责基础的3D世界设置和核心功能
|
||
- **类**:
|
||
- `CoreWorld`: 核心世界类
|
||
- **方法**:
|
||
- `_setupResourcePaths()`: 设置资源路径
|
||
- `_setupCamera()`: 设置相机
|
||
- `_setupLighting()`: 设置光照
|
||
- `_setupGround()`: 设置地面网格
|
||
- `getChineseFont()`: 获取中文字体
|
||
- `setQtWidget()`: 设置Qt部件引用
|
||
- `getWindowSize()`: 获取准确的窗口尺寸
|
||
- `wheelForward()`: 处理滚轮向前滚动(前进)
|
||
- `wheelBackward()`: 处理滚轮向后滚动(后退)
|
||
- `moveCamera()`: 移动相机位置(垂直移动)
|
||
- `mousePressEventRight()`: 处理鼠标右键按下事件
|
||
- `mouseReleaseEventRight()`: 处理鼠标右键释放事件
|
||
- `mouseMoveEvent()`: 处理鼠标移动事件
|
||
- `getGroundNode()`: 获取地板节点
|
||
- `getAmbientLight()`: 获取环境光
|
||
- `getDirectionalLight()`: 获取定向光
|
||
- `start_day_night_cycle()`: 让天空盒在指定时间内过渡
|
||
- `_day_night_cycle_task()`: 天空盒过渡任务
|
||
- `set_daytime()`: 设置时间
|
||
- `get_render_pipeline()`: 获取 RenderPipeline 实例
|
||
- `_setupSkybox()`: 设置静态天空盒
|
||
- `createDirectionalLight()`: 创建平行光
|
||
- `check_material_editor_connection()`: 检查材质编辑器连接状态
|
||
- `create_material_editor_widget()`: 创建材质编辑器组件
|
||
- `_delayed_material_test()`: 延迟执行的材质编辑器连接测试
|
||
- `launch_day_time_editor()`: 启动光照编辑器
|
||
- `setup_material_editor_network()`: 设置材质编辑器网络通信
|
||
- `export_materials_to_file()`: 导出材质列表到文件
|
||
- `update_material_from_editor()`: 从编辑器更新材质
|
||
- `launch_material_editor()`: 启动材质编辑器
|
||
- `create_sample_materials()`: 创建一些示例材质供编辑器使用
|
||
- `load_test_models_with_materials()`: 加载一些测试模型以提供更多材质供编辑
|
||
- `launch_plugin_configurator()`: 启动插件配置器
|
||
|
||
### 3. `core/vr_manager.py`
|
||
- **功能**: VR管理器主文件,负责VR系统的初始化和管理
|
||
- **类**:
|
||
- `VRManager`: VR管理器类
|
||
- **方法**:
|
||
- `initialize_vr()`: 初始化VR系统
|
||
- `enable_vr()`: 启用VR模式
|
||
- `disable_vr()`: 禁用VR模式
|
||
- `update_vr()`: 更新VR状态
|
||
- `render_vr()`: VR渲染处理
|
||
- `set_vr_render_mode()`: 切换VR渲染模式
|
||
- `get_vr_render_mode()`: 获取当前VR渲染模式
|
||
- `cleanup()`: 清理VR资源
|
||
- `get_vr_status()`: 获取VR状态信息
|
||
- `submit_texture()`: 优化的VR纹理提交
|
||
- `_batch_submit_textures()`: 批量提交两眼纹理
|
||
- `_disable_main_cam()`: 禁用主相机
|
||
- `_enable_main_cam()`: 恢复主相机
|
||
- `_initialize_controllers()`: 初始化VR手柄控制器
|
||
- `_detect_controllers()`: 检测并连接VR控制器
|
||
- `_create_tracked_device_anchor()`: 为跟踪设备创建锚点节点
|
||
- `update_tracked_devices()`: 更新所有跟踪设备的姿态
|
||
- `get_controller_by_role()`: 根据角色获取控制器
|
||
- `are_controllers_connected()`: 检查是否有控制器连接
|
||
- `get_connected_controllers()`: 获取所有连接的控制器列表
|
||
- `trigger_controller_haptic()`: 触发控制器震动反馈
|
||
- `is_trigger_pressed()`: 检查扳机是否被按下
|
||
- `is_trigger_just_pressed()`: 检查扳机是否刚刚被按下
|
||
- `is_grip_pressed()`: 检查握把是否被按下
|
||
- `is_grip_just_pressed()`: 检查握把是否刚刚被按下
|
||
- `is_menu_pressed()`: 检查菜单按钮是否被按下
|
||
- `is_trackpad_touched()`: 检查触摸板是否被触摸
|
||
- `get_trackpad_position()`: 获取触摸板位置
|
||
- `get_selected_object()`: 获取指定手选中的对象
|
||
- `get_grabbed_object()`: 获取指定手抓取的对象
|
||
- `is_grabbing_object()`: 检查是否正在抓取对象
|
||
- `force_release_all_grabs()`: 强制释放所有抓取的对象
|
||
- `add_interactable_object()`: 将对象标记为可交互
|
||
- `enable_gc_control()`: 启用垃圾回收控制
|
||
- `disable_gc_control()`: 禁用垃圾回收控制
|
||
- `set_manual_gc_interval()`: 设置手动垃圾回收间隔
|
||
- `force_manual_gc()`: 强制执行一次垃圾回收
|
||
- `get_object_pool_status()`: 获取对象池状态
|
||
- `set_resolution_scale()`: 设置VR分辨率缩放系数
|
||
- `set_quality_preset()`: 设置VR质量预设
|
||
- `cycle_quality_preset()`: 循环切换质量预设
|
||
- `get_resolution_info()`: 获取分辨率相关信息
|
||
- `print_resolution_info()`: 输出分辨率信息
|
||
- `enable_performance_mode()`: 手动启用性能模式
|
||
- `disable_performance_mode()`: 禁用性能模式
|
||
- `set_performance_mode_trigger_frame()`: 设置性能模式自动触发的帧数
|
||
- `get_performance_mode_status()`: 获取性能模式状态
|
||
- 其他VR系统管理方法
|
||
|
||
### 4. `core/selection.py`
|
||
- **功能**: 选择系统模块,实现3D场景中对象的选择功能
|
||
- **类**:
|
||
- `SelectionSystem`: 选择系统类
|
||
- **方法**:
|
||
- `createSelectionBox()`: 创建选择框
|
||
- `updateSelectionBoxGeometry()`: 更新选择框的几何形状和位置
|
||
- `updateSelectionBoxTask()`: 选择框更新任务
|
||
- `clearSelectionBox()`: 清除选择框
|
||
- `createGizmo()`: 创建变换控制器
|
||
- `createGizmoGeometry()`: 创建坐标轴的几何体
|
||
- `updateGizmoTask()`: 更新变换控制器任务
|
||
- `clearGizmo()`: 清除坐标轴
|
||
- `setGizmoAxisColor()`: 设置坐标轴颜色
|
||
- `setGizmoRotAxisColor()`: 设置旋转坐标轴颜色
|
||
- `checkGizmoClick()`: 检查是否点击了坐标轴
|
||
- `updateGizmoHighlight()`: 更新坐标轴高亮状态
|
||
- `startGizmoDrag()`: 开始坐标轴拖拽
|
||
- `updateGizmoDrag()`: 更新坐标轴拖拽
|
||
- `stopGizmoDrag()`: 停止坐标轴拖拽
|
||
- `updateSelection()`: 更新选择状态
|
||
- `_setCursor()`: 设置光标
|
||
- `_resetCursor()`: 重置光标
|
||
- `_setupGizmoRendering()`: 设置坐标轴渲染属性
|
||
- `setupGizmoCollision()`: 设置坐标轴碰撞检测
|
||
- `detectGizmoAxisAtMouse()`: 统一的坐标轴检测方法
|
||
- `distanceToLine()`: 计算点到线段的距离
|
||
- `_safeUpdatePropertyPanel()`: 安全地更新属性面板
|
||
- 其他选择和变换相关方法
|
||
|
||
### 5. `core/tool_manager.py`
|
||
- **功能**: 工具管理器模块,管理各种编辑工具
|
||
- **类**:
|
||
- `ToolManager`: 工具管理器类
|
||
- **方法**:
|
||
- `setCurrentTool()`: 设置当前工具
|
||
- `getCurrentTool()`: 获取当前工具
|
||
- `isSelectionTool()`: 检查是否是选择工具
|
||
- `isMoveTool()`: 检查是否是移动工具
|
||
- `isRotateTool()`: 检查是否是旋转工具
|
||
- `isScaleTool()`: 检查是否是缩放工具
|
||
- `isDayTimeEditorTool()`: 检查是否是光照编辑工具
|
||
- `isPlugincongiguratorTool()`: 检查是否是图形编辑工具
|
||
- `launch_day_time_editor()`: 启动光照编辑器
|
||
- `openSunLightingTool()`: 打开太阳光照系统工具的便捷方法
|
||
- `launch_plugin_configurator()`: 启动插件配置器
|
||
|
||
### 6. `core/script_system.py`
|
||
- **功能**: 脚本系统模块,管理游戏对象的脚本挂载和执行
|
||
- **类**:
|
||
- `ScriptBase`: 脚本基类
|
||
- `ScriptComponent`: 脚本组件类
|
||
- `ScriptManager`: 脚本管理器类
|
||
- `ScriptEngine`: 脚本引擎类
|
||
- `ScriptLoader`: 脚本加载器类
|
||
- `ScriptAPI`: 脚本API类
|
||
- **方法**:
|
||
- `attach_script()`: 为对象挂载脚本
|
||
- `detach_script()`: 为对象卸载脚本
|
||
- `reload_script()`: 重载脚本
|
||
- `get_script_info()`: 获取脚本信息
|
||
- `start_system()`: 启动脚本系统
|
||
- `stop_system()`: 停止脚本系统
|
||
- `load_script_from_file()`: 从文件加载脚本
|
||
- `load_all_scripts_from_directory()`: 从目录加载所有脚本
|
||
- `add_script_to_object()`: 为对象添加脚本
|
||
- `remove_script_from_object()`: 从游戏对象移除脚本
|
||
- `get_scripts_on_object()`: 获取对象上的所有脚本
|
||
- `get_script_on_object()`: 获取对象上的特定脚本
|
||
- `get_available_scripts()`: 获取所有可用的脚本名称
|
||
- `list_all_scripts()`: 列出所有脚本信息
|
||
- `save_object_scripts()`: 保存对象脚本
|
||
- 其他脚本管理方法
|
||
|
||
### 7. `core/gui_manager.py`
|
||
- **功能**: GUI管理器模块,负责2D和3D GUI元素的创建和管理
|
||
- **类**:
|
||
- `GUIManager`: GUI管理器类
|
||
- **方法**:
|
||
- `createGUIButton()`: 创建GUI按钮
|
||
- `createGUILabel()`: 创建GUI标签
|
||
- `createGUIEntry()`: 创建GUI输入框
|
||
- `createGUI2DImage()`: 创建2D图像
|
||
- `createGUI3DText()`: 创建3D文本
|
||
- `createGUI3DImage()`: 创建3D图像
|
||
- `createVideoScreen()`: 创建视频屏幕
|
||
- `createGUI2DVideoScreen()`: 创建2D视频屏幕
|
||
- `createSphericalVideo()`: 创建球形视频
|
||
- `createGUIVirtualScreen()`: 创建虚拟屏幕
|
||
- `findClickedGUI()`: 查找被点击的GUI元素
|
||
- `selectGUIInTree()`: 在树形控件中选中GUI元素
|
||
- `createGUIAtPosition()`: 在指定位置创建GUI元素
|
||
- `editGUIElement()`: 编辑GUI元素属性
|
||
- `deleteGUIElement()`: 删除GUI元素
|
||
- `duplicateGUIElement()`: 复制GUI元素
|
||
- `editGUIElementDialog()`: 显示GUI元素编辑对话框
|
||
- `onGUIButtonClick()`: GUI按钮点击事件处理
|
||
- `onGUIEntrySubmit()`: GUI输入框提交事件处理
|
||
- `toggleGUIEditMode()`: 切换GUI编辑模式
|
||
- `enterGUIEditMode()`: 进入GUI编辑模式
|
||
- `exitGUIEditMode()`: 退出GUI编辑模式
|
||
- `createGUIEditPanel()`: 创建GUI编辑面板
|
||
- `openGUIPreviewWindow()`: 打开独立的GUI预览窗口
|
||
- `closeGUIPreviewWindow()`: 关闭GUI预览窗口
|
||
- `setGUICreateTool()`: 设置GUI创建工具
|
||
- `deleteSelectedGUI()`: 删除选中的GUI元素
|
||
- `copySelectedGUI()`: 复制选中的GUI元素
|
||
- `handleGUIEditClick()`: 处理GUI编辑模式下的点击
|
||
- `createGUIAtPosition()`: 在指定位置创建GUI元素
|
||
- `findClickedGUI()`: 查找被点击的GUI元素
|
||
- `selectGUIInTree()`: 在树形控件中选中GUI元素
|
||
- `updateGUISelection()`: 更新GUI元素选择状态
|
||
- `updateGUIPropertyPanel()`: 更新GUI元素属性面板
|
||
- `selectGUIColor()`: 选择GUI元素颜色
|
||
- `update3DImageTexture()`: 更新3D图像纹理
|
||
- `update2DImageTexture()`: 更新2D图片纹理
|
||
- `editGUI2DPosition()`: 编辑2D GUI元素位置
|
||
- `editGUI3DPosition()`: 编辑3D GUI元素位置
|
||
- `editGUIScale()`: 编辑GUI元素缩放
|
||
- `createCesiumView()`: 创建 Cesium 视图窗口
|
||
- `toggleCesiumView()`: 切换 Cesium 视图显示状态
|
||
- `refreshCesiumView()`: 刷新 Cesium 视图
|
||
- `updateCesiumURL()`: 更新 Cesium 视图的 URL
|
||
- `addModelToCesium()`: 向 Cesium 添加模型
|
||
- `addCesiumTilesetToScene()`: 在 Panda3D 场景中添加 Cesium 3D Tiles
|
||
- `removeModelFromCesium()`: 从 Cesium 移除模型
|
||
- `updateCesiumModelPosition()`: 更新 Cesium 中模型的位置
|
||
- `getAllCesiumModels()`: 获取 Cesium 中所有模型的列表
|
||
- `addLocalModelToCesium()`: 向 Cesium 添加本地模型文件
|
||
- `_create_screen_text()`: 为虚拟屏幕创建文本节点
|
||
- `_get_tree_widget()`: 安全获取树形控件
|
||
- `_resizeButtonToText()`: 根据文本内容调整按钮大小
|
||
- `constrain2DPosition()`: 限制2D GUI元素位置在屏幕范围内
|
||
- `_ensureVideoScreenMaterial()`: 确保视频屏幕有正确的材质设置
|
||
- `_debugVideoScreenTextures()`: 调试视频屏幕的纹理状态
|
||
- `playVideo()`: 播放视频
|
||
- `_getMovieTextureFromScreen()`: 从视频屏幕获取视频纹理
|
||
- `pauseVideo()`: 暂停视频
|
||
- `stopVideo()`: 停止视频
|
||
- `setVideoTime()`: 设置视频播放时间
|
||
- `loadVideoFile()`: 为视频屏幕加载新的视频文件
|
||
- `_loadMovieTexture()`: 加载视频纹理的兼容方法
|
||
- `_configureVideoTexture()`: 配置视频纹理属性
|
||
- `load2DVideoFile()`: 为2D视频屏幕加载新的视频文件
|
||
- `play2DVideo()`: 播放2D视频
|
||
- `pause2DVideo()`: 暂停2D视频
|
||
- `stop2DVideo()`: 停止2D视频
|
||
- `createSphericalVideo()`: 创建球形视频
|
||
- `_createSphereGeometry()`: 创建球形几何体
|
||
- `playSphericalVideo()`: 播放球形视频
|
||
- `pauseSphericalVideo()`: 暂停球形视频
|
||
- `setSphericalVideoTime()`: 设置球形视频时间
|
||
- 其他GUI元素创建和管理方法
|
||
|
||
### 8. `core/terrain_manager.py`
|
||
- **功能**: 地形管理器模块,处理3D地形的创建、编辑和渲染
|
||
- **类**:
|
||
- `TerrainManager`: 地形管理器类
|
||
- **方法**:
|
||
- `createTerrainFromHeightMap()`: 从高度图创建地形
|
||
- `createFlatTerrain()`: 创建平面地形
|
||
- `_applyTerrainMaterial()`: 为地形应用材质
|
||
- `updateTerrain()`: 更新所有地形的LOD
|
||
- `setTerrainLODThreshold()`: 设置地形LOD阈值
|
||
- `getTerrainHeight()`: 获取地形上指定点的高度
|
||
- `modifyTerrainHeight()`: 修改地形高度
|
||
- `deleteTerrain()`: 删除地形
|
||
- `getTerrainByName()`: 根据名称查找地形
|
||
- `getAllTerrainNames()`: 获取所有地形名称
|
||
- `setTerrainColor()`: 设置地形颜色
|
||
- `setTerrainTexture()`: 为地形设置纹理
|
||
- `saveTerrainData()`: 保存地形数据到文件
|
||
- `_recreateTerrain()`: 重新创建地形
|
||
- `_get_tree_widget()`: 安全获取树形控件
|
||
|
||
### 9. `core/collision_manager.py`
|
||
- **功能**: 碰撞管理器模块,管理场景中的碰撞检测和响应
|
||
- **类**:
|
||
- `CollisionManager`: 碰撞管理器类
|
||
- `CollisionPerformanceMonitor`: 碰撞检测性能监控器
|
||
- `OctreeNode`: 八叉树节点
|
||
- **方法**:
|
||
- `enableModelCollisionDetection()`: 启用/禁用模型间碰撞检测
|
||
- `detectModelCollisions()`: 检测模型间碰撞
|
||
- `_checkModelPairCollision()`: 检查两个模型是否碰撞
|
||
- `_findCollisionNode()`: 查找模型的碰撞节点
|
||
- `_logCollisionInfo()`: 输出碰撞信息日志
|
||
- `getCollisionHistory()`: 获取碰撞历史记录
|
||
- `clearCollisionHistory()`: 清除碰撞历史记录
|
||
- `getCollisionStatistics()`: 获取碰撞统计信息
|
||
- `createCollisionShape()`: 为模型创建指定类型的碰撞体
|
||
- `_determineOptimalShape()`: 根据模型特征自动确定最适合的碰撞体形状
|
||
- `_getTransformedModelInfo()`: 获取考虑变换后的模型信息
|
||
- `createMouseRay()`: 创建鼠标射线
|
||
- `performRaycast()`: 执行射线检测
|
||
- `getCollisionMask()`: 获取碰撞掩码
|
||
- `createCollisionGroup()`: 创建碰撞分组
|
||
- `addToCollisionGroup()`: 将模型添加到碰撞分组
|
||
- `enableCollisionGroup()`: 启用/禁用碰撞分组
|
||
- `registerCollisionCallback()`: 注册碰撞回调函数
|
||
- `_executeCollisionCallbacks()`: 执行碰撞回调
|
||
- `_getModelMaskType()`: 获取模型的掩码类型
|
||
- `enableSpatialPartitioning()`: 启用空间分割优化
|
||
- `_buildOctree()`: 构建八叉树
|
||
- `detectModelCollisionsOptimized()`: 使用空间分割优化的碰撞检测
|
||
- `cleanup()`: 清理碰撞管理器资源
|
||
- `setupAdvancedCollision()`: 高级碰撞设置方法
|
||
- `example_usage()`: 碰撞系统使用示例
|
||
- `recordDetection()`: 记录射线检测性能
|
||
- `recordModelCollisionDetection()`: 记录模型间碰撞检测性能
|
||
- `getAverageTime()`: 获取平均射线检测时间
|
||
- `getAverageModelCollisionTime()`: 获取平均模型间碰撞检测时间
|
||
- `getPerformanceReport()`: 获取完整性能报告
|
||
- `insert()`: 插入模型到八叉树
|
||
- `query()`: 查询可能与指定模型碰撞的模型列表
|
||
- `_contains()`: 检查模型是否在此节点范围内
|
||
- `_subdivide()`: 分割节点为8个子节点
|
||
|
||
### 10. `core/event_handler.py`
|
||
- **功能**: 事件处理器模块,处理用户输入事件和系统事件
|
||
- **类**:
|
||
- `EventHandler`: 事件处理器类
|
||
- **方法**:
|
||
- `showClickRay()`: 显示鼠标点击的射线
|
||
- `_addHitMarker()`: 在碰撞点添加标记
|
||
- `clearRay()`: 清除当前显示的射线
|
||
- `clearRayTask()`: 清除射线的任务回调
|
||
- `toggleRayDisplay()`: 切换射线显示状态
|
||
- `mousePressEventLeft()`: 鼠标左键按下事件
|
||
- `mousePressEventRight()`: 鼠标右键按下事件
|
||
- `_handleTerrainEdit()`: 处理地形编辑
|
||
- `_handleSelectionClick()`: 处理选择工具的点击事件
|
||
- `mouseReleaseEventLeft()`: 鼠标左键释放事件
|
||
- `wheelForward()`: 处理滚轮向前滚动(前进)
|
||
- `wheelBackward()`: 处理滚轮向后滚动(后退)
|
||
- `mousePressEventMiddle()`: 处理鼠标中键按下事件
|
||
- `mouseReleaseEventMiddle()`: 处理鼠标中键释放事件
|
||
- `mouseMoveEvent()`: 处理鼠标移动事件
|
||
|
||
### 11. `core/Command_System.py`
|
||
- **功能**: 命令系统模块,实现命令模式,支持撤销/重做功能
|
||
- **类**:
|
||
- `Command`: 命令基类
|
||
- `CommandManager`: 命令管理器类
|
||
- `MoveNodeCommand`: 节点移动命令类
|
||
- `DeleteNodeCommand`: 节点删除命令类
|
||
- `RotateNodeCommand`: 节点旋转命令类
|
||
- `ScaleNodeCommand`: 节点缩放命令类
|
||
- `CreateNodeCommand`: 节点创建命令类
|
||
- `ReparentNodeCommand`: 节点重新父化命令类
|
||
- `CompositeCommand`: 组合命令类
|
||
- `MoveLightCommand`: 灯光移动命令类
|
||
- **方法**:
|
||
- `execute()`: 执行命令
|
||
- `undo()`: 撤销命令
|
||
- `redo()`: 重做命令
|
||
- `execute_command()`: 执行命令
|
||
- `can_undo()`: 检查是否可以撤销
|
||
- `can_redo()`: 检查是否可以重做
|
||
- `clear_history()`: 清空所有历史记录
|
||
- `get_undo_count()`: 获取可撤销的命令数量
|
||
- `get_redo_count()`: 获取可重做的命令数量
|
||
|
||
### 12. `core/InfoPanelManager.py`
|
||
- **功能**: 信息面板管理器模块,管理场景中信息面板的显示和更新
|
||
- **类**:
|
||
- `InfoPanelManager`: 信息面板管理器类
|
||
- **方法**:
|
||
- `createInfoPanel()`: 创建信息面板
|
||
- `setPanelBackgroundImage()`: 为指定面板设置背景图片
|
||
- `_getPanelContent()`: 根据面板ID获取固定的标题和内容
|
||
- `updatePanelContent()`: 更新面板内容
|
||
- `registerDataSource()`: 注册数据源,定期更新面板内容
|
||
- `_updateDataThread()`: 数据更新线程
|
||
- `_is3DPanel()`: 判断面板是否为3D面板
|
||
- `_is2DPanel()`: 判断面板是否为2D面板
|
||
- `unregisterDataSource()`: 注销数据源
|
||
- `updatePanelProperties()`: 更新面板属性
|
||
- `showPanel()`: 显示指定面板
|
||
- `hidePanel()`: 隐藏指定面板
|
||
- `togglePanel()`: 切换面板显示/隐藏状态
|
||
- `getPanelNode()`: 获取面板的节点
|
||
- `removePanel()`: 移除指定面板
|
||
- `removeAllPanels()`: 移除所有面板
|
||
- `createHTTPInfoPanel()`: 创建HTTP信息面板
|
||
- `updateHTTPInfoPanel()`: 更新HTTP信息面板的请求参数
|
||
- `create3DInfoPanel()`: 创建简化版3D信息面板
|
||
- `update3DPanelContent()`: 更新3D面板内容
|
||
- `update3DPanelProperties()`: 更新3D面板属性
|
||
- `create3DHTTPInfoPanel()`: 创建3D HTTP信息面板
|
||
- `serializePanelData()`: 序列化面板数据用于保存
|
||
- `getAllPanelData()`: 获取所有面板的序列化数据
|
||
- `recreatePanelFromData()`: 从序列化数据重新创建面板
|
||
- `onCreateSampleInfoPanel()`: 创建示例天气信息面板
|
||
- `getRealWeatherData()`: 获取真实天气数据
|
||
- 其他信息面板管理方法
|
||
|
||
### 13. `core/patrol_system.py`
|
||
- **功能**: 巡检系统模块,实现自动化巡检路径和逻辑
|
||
- **类**:
|
||
- `PatrolSystem`: 巡检系统类
|
||
- **方法**:
|
||
- `add_patrol_point()`: 添加巡检点
|
||
- `add_auto_heading_patrol_point()`: 添加自动计算朝向的巡检点
|
||
- `add_patrol_point_looking_at()`: 添加朝向指定位置的巡检点
|
||
- `clear_patrol_points()`: 清空巡检点
|
||
- `set_patrol_speed()`: 设置巡检速度
|
||
- `start_patrol()`: 开始巡检
|
||
- `stop_patrol()`: 停止巡检
|
||
- `pause_patrol()`: 暂停巡检
|
||
- `resume_patrol()`: 恢复巡检
|
||
- `reset_to_original_position()`: 重置相机到原始位置
|
||
- `_patrol_task()`: 巡检主任务
|
||
- `_handle_moving_state()`: 处理移动状态
|
||
- `_handle_turning_to_target_state()`: 处理转向目标状态
|
||
- `_handle_waiting_state()`: 处理等待状态
|
||
- `_handle_turning_back_state()`: 处理转回原朝向状态
|
||
- `_normalize_angle()`: 规范化角度到-180到180度之间
|
||
- `_look_at_to_hpr()`: 将方向向量转换为HPR角度
|
||
- `get_patrol_status()`: 获取巡检状态信息
|
||
- `list_patrol_points()`: 列出所有巡检点
|
||
- `remove_patrol_point()`: 移除指定索引的巡检点
|
||
- `insert_patrol_point()`: 在指定位置插入巡检点
|
||
- `update_patrol_point()`: 更新指定巡检点的信息
|
||
- `goto_patrol_point()`: 直接跳转到指定巡检点
|
||
- `cleanup()`: 清理巡检系统资源
|
||
|
||
### 14. `core/assembly_interaction.py`
|
||
- **功能**: 装配交互模块,处理复杂装配体的交互逻辑
|
||
- **类**:
|
||
- `AssemblyInteractionManager`: 装配交互管理器类
|
||
- `StepGuideDialog`: 步骤指引对话框类
|
||
- **方法**:
|
||
- `init_exam_mode()`: 初始化考核模式
|
||
- `play_step_audio()`: 播放步骤音频
|
||
- `play_audio_with_pygame()`: 使用pygame播放音频
|
||
- `play_audio_fallback()`: 备用音频播放方法
|
||
- `set_operation_enabled()`: 设置操作是否启用
|
||
- `check_operation_permission()`: 检查操作权限
|
||
- `check_tool_match()`: 检查工具是否匹配
|
||
- `record_tool_error()`: 记录工具错误
|
||
- `start_interaction_mode()`: 启动交互模式
|
||
- `load_configuration()`: 加载配置文件
|
||
- `load_original_positions_from_config()`: 从配置文件中加载模型的原始位置信息
|
||
- `check_step_completeness()`: 检查配置文件的步骤完整性
|
||
- `setup_picking()`: 设置用于鼠标拾取的碰撞检测系统
|
||
- `show_step_dialog()`: 显示步骤指引对话框
|
||
- `start_current_step()`: 开始当前步骤
|
||
- `prepare_interaction()`: 准备交互
|
||
- `find_model_node()`: 在场景中查找指定名称的模型节点
|
||
- `list_scene_models()`: 列出场景中的所有模型
|
||
- `show_models_status()`: 显示所有模型的当前状态
|
||
- `record_current_positions()`: 将当前所有模型的位置记录为原始位置
|
||
- `normalize_step_type()`: 标准化步骤类型
|
||
- `normalize_operation_type()`: 标准化操作类型
|
||
- `analyze_final_state()`: 分析最终状态
|
||
- `qt_mouse_press_event()`: Qt鼠标按下事件处理
|
||
- `is_click_in_gui_area()`: 检查鼠标点击是否在GUI区域
|
||
- `handle_gui_button_click()`: 直接处理GUI按钮点击
|
||
- `qt_mouse_release_event()`: Qt鼠标释放事件处理
|
||
- `handle_qt_mouse_click()`: 处理Qt鼠标点击
|
||
- `perform_ray_cast()`: 执行射线检测
|
||
- `is_target_model_hit()`: 检查击中的节点是否是目标模型
|
||
- `on_mouse_down()`: 鼠标按下事件
|
||
- `start_dragging()`: 开始拖拽模型
|
||
- `drag_task()`: 拖拽任务
|
||
- `stop_dragging()`: 停止拖拽
|
||
- `on_mouse_up()`: 鼠标抬起事件
|
||
- `check_step_completion()`: 检查步骤是否完成
|
||
- `complete_current_step()`: 完成当前步骤
|
||
- `finish_interaction()`: 完成所有交互
|
||
- `stop_interaction()`: 用户主动停止交互
|
||
- `show_exam_results()`: 显示考核结果
|
||
- `save_exam_results()`: 保存考核结果到文件
|
||
- `stop_interaction_mode()`: 停止交互模式
|
||
- `trigger_drag_by_keyboard()`: 通过键盘触发拖拽
|
||
- `trigger_click_movement()`: 触发点击位移动画
|
||
- `perform_disassemble_click_movement()`: 执行拆卸点击位移
|
||
- `perform_assemble_click_movement()`: 执行安装点击位移
|
||
|
||
### 15. `core/CustomMouseController.py`
|
||
- **功能**: 自定义鼠标控制器模块,提供定制化的鼠标操作控制
|
||
- **类**:
|
||
- `CustomMouseController`: 自定义鼠标控制器类
|
||
- **方法**:
|
||
- `__init__()`: 初始化鼠标控制器
|
||
- `setUp()`: 设置控制器参数
|
||
- `setKey()`: 设置按键状态
|
||
- `move()`: 处理相机移动和旋转
|
||
|
||
### 16. `core/maintenance_gui.py`
|
||
- **功能**: 维护GUI模块,提供设备维护相关的GUI界面
|
||
- **类**:
|
||
- `MaintenanceGUI`: 维护GUI管理器类
|
||
- **方法**:
|
||
- `__init__()`: 初始化维护GUI
|
||
- `setup_gui()`: 设置GUI界面
|
||
- `start_mouse_monitor()`: 启动鼠标监控任务
|
||
- `test_mouse_monitor()`: 测试鼠标监控功能
|
||
- `monitor_mouse_clicks()`: 监控鼠标点击并手动检测按钮
|
||
- `check_button_click()`: 检查鼠标点击是否在按钮区域
|
||
- `handle_mouse_click()`: 直接处理鼠标点击
|
||
- `get_aspect2d_reference()`: 获取aspect2d引用
|
||
- `create_step_text()`: 创建步骤显示文本
|
||
- `create_tool_buttons()`: 创建工具选择按钮
|
||
- `create_current_tool_text()`: 创建当前工具显示文本
|
||
- `create_stop_button()`: 创建停止按钮
|
||
- `create_warning_text()`: 创建警告文本
|
||
- `button_press_handler()`: 按钮按下事件处理
|
||
- `button_release_handler()`: 按钮释放事件处理
|
||
- `on_tool_selected()`: 工具选择回调
|
||
- `on_stop_clicked()`: 停止按钮点击回调
|
||
- `update_tool_button_styles()`: 更新工具按钮样式
|
||
- `update_step_info()`: 更新步骤信息
|
||
- `show_warning()`: 显示警告信息
|
||
- `hide_warning()`: 隐藏警告信息
|
||
- `test_tool_selection()`: 测试工具选择功能
|
||
- `test_specific_button()`: 测试特定按钮
|
||
- `print_button_positions()`: 打印所有按钮的位置信息
|
||
- `show_exam_results()`: 显示考核结果
|
||
- `create_exam_result_gui()`: 创建考核结果GUI界面
|
||
- `close_exam_results()`: 关闭考核结果界面
|
||
- `start_countdown_timer()`: 启动10秒倒计时
|
||
- `update_countdown()`: 更新倒计时显示
|
||
- `get_current_tool()`: 获取当前选择的工具
|
||
- `set_mode()`: 设置模式
|
||
- `cleanup_gui()`: 清理GUI元素
|
||
- `show_gui()`: 显示GUI
|
||
- `hide_gui()`: 隐藏GUI
|
||
|
||
## 2.1.2 VR子模块
|
||
|
||
### 1. VR配置管理 (core/vr/config/)
|
||
|
||
**文件**: vr_config.py
|
||
- **功能**: VR基础配置管理,负责VR设置的保存、加载和管理
|
||
- **类**: VRConfigManager
|
||
- `__init__(self, config_dir=None)` - 初始化配置管理器
|
||
- `load_config(self)` - 加载VR配置
|
||
- `save_config(self, config)` - 保存VR配置
|
||
- `get_render_mode(self)` - 获取渲染模式配置
|
||
- `set_render_mode(self, mode)` - 设置渲染模式并保存
|
||
- `get_resolution_scale(self)` - 获取分辨率缩放配置
|
||
- `set_resolution_scale(self, scale)` - 设置分辨率缩放并保存
|
||
- `get_quality_preset(self)` - 获取质量预设
|
||
- `set_quality_preset(self, preset)` - 设置质量预设并保存
|
||
- `get_pipeline_config(self)` - 获取RenderPipeline VR配置
|
||
- `update_pipeline_config(self, pipeline_config)` - 更新RenderPipeline VR配置
|
||
- `reset_to_defaults(self)` - 重置为默认配置
|
||
- `apply_config_to_vr_manager(self, vr_manager)` - 将配置应用到VR管理器
|
||
- `save_from_vr_manager(self, vr_manager)` - 从VR管理器保存当前配置
|
||
|
||
**文件**: joystick_config.py
|
||
- **功能**: VR摇杆配置管理,提供摇杆交互的配置选项和预设
|
||
- **枚举**: TurnMode
|
||
- SMOOTH - 平滑转向
|
||
- SNAP - 分段转向
|
||
- **枚举**: JoystickProfile
|
||
- COMFORTABLE - 舒适模式
|
||
- STANDARD - 标准模式
|
||
- GAMING - 游戏模式
|
||
- ACCESSIBLE - 无障碍模式
|
||
- **类**: VRJoystickConfig
|
||
- `__init__(self)` - 初始化默认配置
|
||
- `apply_profile(self, profile)` - 应用预设配置
|
||
- `_apply_comfortable_profile(self)` - 舒适模式配置
|
||
- `_apply_standard_profile(self)` - 标准模式配置
|
||
- `_apply_gaming_profile(self)` - 游戏模式配置
|
||
- `_apply_accessible_profile(self)` - 无障碍模式配置
|
||
- `set_turn_mode(self, mode)` - 设置转向模式
|
||
- `set_turn_sensitivity(self, sensitivity)` - 设置转向灵敏度
|
||
- `set_deadzone(self, deadzone)` - 设置摇杆死区
|
||
- `set_teleport_range(self, range_meters)` - 设置传送范围
|
||
- `set_player_height(self, height_meters)` - 设置玩家站立高度偏移
|
||
- `enable_haptic_feedback(self, enabled)` - 启用或禁用震动反馈
|
||
- `get_config_dict(self)` - 获取配置字典
|
||
- `apply_to_joystick_manager(self, joystick_manager)` - 将配置应用到摇杆管理器
|
||
- **变量**: COMFORTABLE_CONFIG - 舒适模式预设配置实例
|
||
- **变量**: STANDARD_CONFIG - 标准模式预设配置实例
|
||
- **变量**: GAMING_CONFIG - 游戏模式预设配置实例
|
||
- **变量**: ACCESSIBLE_CONFIG - 无障碍模式预设配置实例
|
||
- **函数**: create_custom_config(**kwargs) - 创建自定义配置
|
||
- **函数**: print_usage_guide() - 打印使用指南
|
||
|
||
**文件**: shadow_stage.py
|
||
- **功能**: VR专用阴影Stage,为VR渲染管线提供阴影支持
|
||
- **类**: VRShadowStage
|
||
- `__init__(self, name, pipeline, use_shared_atlas=True)` - 初始化VR阴影Stage
|
||
- `create(self, width, height)` - 创建阴影Stage
|
||
- `_create_shared_shadow_atlas(self)` - 复用主Pipeline的ShadowAtlas
|
||
- `_create_independent_shadow_atlas(self, width, height)` - 为VR创建独立的ShadowAtlas
|
||
- `_make_pcf_state(self)` - 创建PCF采样器状态
|
||
- `get_shadow_atlas_tex(self)` - 获取阴影Atlas纹理
|
||
- `get_shadow_atlas_pcf(self)` - 获取带PCF的阴影Atlas
|
||
- `bind_to_stage(self, target_stage)` - 将阴影数据绑定到目标stage
|
||
- `cleanup(self)` - 清理资源
|
||
|
||
**文件**: __init__.py
|
||
- **功能**: VR配置子系统初始化文件
|
||
- **变量**: __all__ - 导出模块列表
|
||
|
||
### 2. VR交互系统 (core/vr/interaction/)
|
||
|
||
**文件**: actions.py
|
||
- **类**: VRActionManager
|
||
- `__init__(self, vr_manager)` - 初始化VR动作管理器
|
||
- `initialize(self)` - 初始化VR动作系统
|
||
- `_create_action_manifest(self)` - 创建VR动作清单文件
|
||
- `_create_default_bindings(self, manifest_dir)` - 创建默认的控制器绑定文件
|
||
- `_load_action_handles(self)` - 加载动作句柄
|
||
- `_setup_action_sets(self)` - 设置动作集
|
||
- `update_actions(self)` - 更新动作状态
|
||
- `is_digital_action_pressed(self, action_name, device_path=None)` - 检查数字动作是否被按下
|
||
- `is_digital_action_just_pressed(self, action_name, device_path=None)` - 检查数字动作是否刚刚被按下
|
||
- `is_digital_action_just_released(self, action_name, device_path=None)` - 检查数字动作是否刚刚被释放
|
||
- `get_analog_action_value(self, action_name, device_path=None)` - 获取模拟动作值
|
||
- `get_pose_action_data(self, action_name, device_path=None)` - 获取姿态动作数据
|
||
- `trigger_haptic_pulse(self, action_name, duration=0.001, frequency=1.0, amplitude=1.0, device_path=None)` - 触发震动反馈
|
||
- `cleanup(self)` - 清理资源
|
||
|
||
**文件**: grab.py
|
||
- **类**: VRInteractionManager
|
||
- `__init__(self, vr_manager)` - 初始化VR交互管理器
|
||
- `initialize(self)` - 初始化交互系统
|
||
- `_create_ray_casters(self)` - 创建射线投射节点
|
||
- `_create_controller_ray(self, controller_name, anchor_node)` - 为控制器创建射线投射节点
|
||
- `_setup_collision_detection(self)` - 设置碰撞检测系统
|
||
- `_setup_scene_collision_objects(self)` - 为场景对象设置碰撞体
|
||
- `_add_collision_to_object(self, node_path)` - 为对象添加碰撞体
|
||
- `update(self)` - 更新交互系统
|
||
- `_perform_collision_detection(self)` - 执行碰撞检测
|
||
- `_update_selections(self)` - 更新对象选择状态
|
||
- `_get_closest_hit_object(self, controller_name)` - 获取指定控制器射线最近的碰撞对象
|
||
- `_update_grabbing(self)` - 更新对象抓取状态
|
||
- `_start_grab(self, controller, obj)` - 开始抓取对象
|
||
- `_update_grabbed_object(self, controller)` - 更新被抓取对象的位置
|
||
- `_release_grab(self, controller)` - 释放抓取的对象
|
||
- `_highlight_object(self, obj, color)` - 高亮显示对象
|
||
- `_restore_object_color(self, obj)` - 恢复对象原始颜色
|
||
- `_clear_selection_highlights(self)` - 清除所有选择高亮
|
||
- `get_selected_object(self, controller_name)` - 获取指定控制器选中的对象
|
||
- `get_grabbed_object(self, controller_name)` - 获取指定控制器抓取的对象
|
||
- `is_grabbing(self, controller_name)` - 检查指定控制器是否正在抓取对象
|
||
- `force_release_all(self)` - 强制释放所有抓取的对象
|
||
- `cleanup(self)` - 清理资源
|
||
|
||
**文件**: joystick.py
|
||
- **类**: JoystickState
|
||
- `__init__(self)` - 初始化摇杆状态
|
||
- `update(self, new_input)` - 更新摇杆状态
|
||
- `is_input_changed(self, threshold=0.01)` - 检查输入是否发生变化
|
||
- **类**: VRJoystickManager
|
||
- `__init__(self, vr_manager)` - 初始化VR摇杆管理器
|
||
- `initialize(self, teleport_system)` - 初始化摇杆系统
|
||
- `update(self, dt)` - 更新摇杆系统
|
||
- `_update_controller_joystick(self, controller, joystick_state, hand, dt)` - 更新单个控制器的摇杆状态
|
||
- `_update_interaction_modes(self, dt)` - 更新互斥交互模式状态
|
||
- `_set_controller_mode(self, hand, mode)` - 设置控制器交互模式
|
||
- `_can_use_mode(self, hand, requested_mode)` - 检查是否可以使用指定的交互模式
|
||
- `_get_joystick_input(self, controller, hand)` - 获取摇杆输入
|
||
- `_apply_deadzone(self, input_vec)` - 应用摇杆死区
|
||
- `_handle_turning(self, input_vec, hand, dt)` - 处理摇杆转向
|
||
- `_apply_rotation(self, angle_degrees)` - 应用旋转到VR跟踪空间
|
||
- `_handle_teleport(self, controller, input_vec, joystick_state, hand)` - 处理摇杆传送
|
||
- `_calculate_teleport_direction(self, controller, input_vec)` - 计算传送方向向量
|
||
- `_execute_teleport(self, controller)` - 执行传送
|
||
- `set_turning_mode(self, smooth=True)` - 设置转向模式
|
||
- `set_turn_sensitivity(self, sensitivity)` - 设置转向灵敏度
|
||
- `apply_config(self, config)` - 应用配置
|
||
- `get_current_config(self)` - 获取当前配置
|
||
- `_print_debug_status(self)` - 打印调试状态信息
|
||
- `cleanup(self)` - 清理摇杆系统资源
|
||
|
||
**文件**: teleport.py
|
||
- **类**: VRTeleportSystem
|
||
- `__init__(self, vr_manager)` - 初始化VR传送系统
|
||
- `initialize(self)` - 初始化传送系统
|
||
- `_create_teleport_visuals(self)` - 创建传送可视化元素
|
||
- `_create_target_marker(self)` - 创建传送目标标记
|
||
- `_create_invalid_marker(self)` - 创建无效位置标记
|
||
- `_setup_ground_detection(self)` - 设置地面检测
|
||
- `start_teleport_preview(self, controller, direction)` - 开始传送预览
|
||
- `_calculate_teleport_trajectory(self, start_pos, direction)` - 计算传送抛物线轨迹
|
||
- `_calculate_ground_intersection(self, p1, p2)` - 计算与地面的精确交点
|
||
- `_create_arc_geometry(self, points)` - 创建抛物线几何体
|
||
- `_show_teleport_visuals(self)` - 显示传送可视化
|
||
- `stop_teleport_preview(self)` - 停止传送预览
|
||
- `execute_teleport(self)` - 执行传送
|
||
- `update_teleport_preview(self, controller, direction)` - 更新传送预览
|
||
- `cleanup(self)` - 清理传送系统资源
|
||
|
||
### 3. VR性能优化 (core/vr/performance/)
|
||
|
||
**文件**: monitoring.py
|
||
- **类**: VRPerformanceMonitor
|
||
- `__init__(self, vr_manager)` - 初始化性能监控系统
|
||
- `_init_performance_monitoring(self)` - 初始化性能监控库
|
||
- `_update_performance_metrics(self)` - 更新系统性能指标
|
||
- `_update_gpu_metrics(self)` - 更新GPU相关指标
|
||
- `_track_frame_time(self)` - 记录帧时间
|
||
- `_get_gpu_frame_timing(self, frames_ago=0)` - 获取GPU渲染时间统计
|
||
- `enable_gpu_timing_monitoring(self)` - 启用GPU时间监控
|
||
- `disable_gpu_timing_monitoring(self)` - 禁用GPU时间监控
|
||
- `_start_timing(self, operation_name)` - 开始计时操作
|
||
- `_end_timing(self, timing_data)` - 结束计时并记录结果
|
||
- `_get_pipeline_stats(self)` - 获取渲染管线统计信息
|
||
- `test_pipeline_monitoring(self)` - 测试管线监控功能
|
||
- `set_prediction_time(self, prediction_time_ms)` - 设置预测时间
|
||
- `_print_render_callback_diagnostics(self)` - 输出渲染回调诊断信息
|
||
- `_check_rendering_optimizations(self)` - 检查渲染优化状态
|
||
- `_diagnose_opengl_state(self)` - 诊断OpenGL渲染状态
|
||
- `enable_debug_output(self)` - 启用调试输出
|
||
- `disable_debug_output(self)` - 禁用调试输出
|
||
- `set_debug_mode(self, mode)` - 设置调试模式
|
||
- `toggle_debug_output(self)` - 切换调试输出状态
|
||
- `get_debug_status(self)` - 获取调试状态
|
||
- `set_performance_check_interval(self, interval)` - 设置性能检查间隔
|
||
- `set_frame_time_history_size(self, size)` - 设置帧时间历史记录大小
|
||
- `set_performance_report_interval(self, frames)` - 设置性能报告输出间隔
|
||
- `get_performance_stats(self)` - 获取详细的性能统计信息
|
||
- `get_current_performance_summary(self)` - 获取当前性能摘要
|
||
- `get_performance_monitoring_config(self)` - 获取当前性能监控配置
|
||
- `print_performance_monitoring_status(self)` - 输出性能监控状态
|
||
- `enable_performance_monitoring(self)` - 启用性能监控
|
||
- `disable_performance_monitoring(self)` - 禁用性能监控
|
||
- `force_performance_report(self)` - 强制输出一次性能报告
|
||
- `reset_performance_counters(self)` - 重置性能计数器
|
||
|
||
**文件**: optimization.py
|
||
- **类**: VROptimization
|
||
- `__init__(self, vr_manager)` - 初始化VR优化系统
|
||
- `_initialize_object_pools(self)` - 初始化对象池
|
||
- `_get_pooled_matrix(self)` - 从对象池获取Mat4对象
|
||
- `_return_pooled_matrix(self, matrix)` - 将Mat4对象返回对象池
|
||
- `_manual_gc_control(self)` - 手动垃圾回收控制
|
||
- `enable_gc_control(self)` - 启用垃圾回收控制
|
||
- `disable_gc_control(self)` - 禁用垃圾回收控制
|
||
- `set_manual_gc_interval(self, frames)` - 设置手动垃圾回收间隔
|
||
- `force_manual_gc(self)` - 强制执行一次垃圾回收
|
||
- `get_object_pool_status(self)` - 获取对象池状态
|
||
- `set_resolution_scale(self, scale)` - 设置VR分辨率缩放系数
|
||
- `set_quality_preset(self, preset_name)` - 设置VR质量预设
|
||
- `cycle_quality_preset(self)` - 循环切换质量预设
|
||
- `_apply_resolution_scale(self)` - 应用分辨率缩放,重新创建VR缓冲区
|
||
- `get_resolution_info(self)` - 获取分辨率相关信息
|
||
- `print_resolution_info(self)` - 输出分辨率信息
|
||
- `enable_performance_mode(self)` - 手动启用性能模式
|
||
- `disable_performance_mode(self)` - 禁用性能模式
|
||
- `set_performance_mode_trigger_frame(self, frame_count)` - 设置性能模式自动触发的帧数
|
||
- `get_performance_mode_status(self)` - 获取性能模式状态
|
||
|
||
### 4. VR渲染系统 (core/vr/rendering/)
|
||
|
||
**文件**: stages.py
|
||
- **函数**: _load_rp_shader(shader_name) - 加载RenderPipeline shader
|
||
- **类**: VRGBufferStage
|
||
- `__init__(self, name, pipeline)` - 初始化VR GBuffer Stage
|
||
- `create(self, width, height, vr_camera)` - 创建GBuffer渲染目标
|
||
- `get_gbuffer_textures(self)` - 获取GBuffer纹理字典
|
||
- `make_gbuffer_ubo(self)` - 创建GBuffer UBO
|
||
- `get_internal_buffer(self)` - 获取内部GraphicsOutput
|
||
- `cleanup(self)` - 清理资源
|
||
- **类**: VRLightingStage
|
||
- `__init__(self, name, pipeline)` - 初始化VR光照Stage
|
||
- `create(self, width, height, gbuffer_stage)` - 创建光照渲染目标
|
||
- `_bind_pipeline_inputs(self)` - 从主Pipeline获取光照相关shader inputs
|
||
- `_bind_pipeline_pipes(self)` - 从主Pipeline获取光照相关pipes
|
||
- `_set_vr_scene_data(self)` - 创建VR专用的MainSceneData UBO
|
||
- `get_shaded_texture(self)` - 获取光照计算后的纹理
|
||
- `cleanup(self)` - 清理资源
|
||
- **类**: VRAmbientStage
|
||
- `__init__(self, name, pipeline)` - 初始化VR环境光Stage
|
||
- `create(self, width, height, lighting_stage, gbuffer_stage)` - 创建环境光渲染目标
|
||
- `_bind_environment_inputs(self)` - 从主Pipeline获取环境相关shader inputs
|
||
- `_set_vr_scene_data(self)` - 创建VR专用的MainSceneData UBO
|
||
- `get_ambient_scene_texture(self)` - 获取带环境光的场景纹理
|
||
- `cleanup(self)` - 清理资源
|
||
- **类**: VRFinalStage
|
||
- `__init__(self, name, pipeline)` - 初始化VR最终合成Stage
|
||
- `create(self, width, height, ambient_stage)` - 创建最终合成目标
|
||
- `_set_vr_scene_data(self)` - 创建VR专用的MainSceneData UBO
|
||
- `get_final_texture(self)` - 获取最终输出纹理
|
||
- `get_internal_buffer(self)` - 获取内部GraphicsOutput
|
||
- `cleanup(self)` - 清理资源
|
||
- **类**: VRPipelineController
|
||
- `__init__(self, pipeline)` - 初始化VR Pipeline控制器
|
||
- `create_eye_pipeline(self, eye_name, width, height, vr_camera)` - 为单个眼睛创建完整的渲染管线
|
||
- `create_stereo_pipeline(self, width, height, left_camera, right_camera)` - 创建立体渲染管线
|
||
- `get_left_textures(self)` - 获取左眼的所有纹理
|
||
- `get_right_textures(self)` - 获取右眼的所有纹理
|
||
- `get_left_buffer(self)` - 获取左眼Final stage的内部buffer
|
||
- `get_right_buffer(self)` - 获取右眼Final stage的内部buffer
|
||
- `cleanup_left(self)` - 清理左眼资源
|
||
- `cleanup_right(self)` - 清理右眼资源
|
||
- `cleanup_all(self)` - 清理所有VR渲染资源
|
||
|
||
### 5. VR测试调试 (core/vr/testing/)
|
||
|
||
**文件**: test_mode.py
|
||
- **类**: VRTestMode
|
||
- `__init__(self, vr_manager)` - 初始化VR测试模式系统
|
||
- `enable_vr_test_mode(self, display_mode='stereo')` - 启用VR测试模式
|
||
- `disable_vr_test_mode(self)` - 禁用VR测试模式
|
||
- `switch_test_display_mode(self, display_mode)` - 切换测试显示模式
|
||
- `_ensure_test_mode_textures(self)` - 确保VR测试模式的纹理资源已正确初始化
|
||
- `_create_cached_ovr_textures(self)` - 创建缓存的OpenVR Texture对象
|
||
- `_initialize_test_display(self)` - 初始化测试显示系统
|
||
- `_update_test_display(self)` - 更新测试显示内容
|
||
- `_create_stereo_display(self)` - 创建左右眼并排显示
|
||
- `_cleanup_test_display(self)` - 清理测试显示
|
||
- `_initialize_test_performance_hud(self)` - 初始化性能HUD
|
||
- `_update_test_performance_hud(self)` - 更新性能HUD显示
|
||
- `_cleanup_test_performance_hud(self)` - 清理性能HUD
|
||
- `get_test_mode_status(self)` - 获取测试模式状态
|
||
- `get_test_mode_features(self)` - 获取当前测试模式功能设置
|
||
- `set_test_mode_features(self, submit_texture=None, wait_poses=None)` - 设置测试模式功能开关
|
||
- `run_vr_performance_test(self, duration_seconds=30, display_mode='stereo')` - 运行VR性能测试
|
||
|
||
### 6. VR跟踪系统 (core/vr/tracking/)
|
||
|
||
**文件**: controllers.py
|
||
- **类**: VRController
|
||
- `__init__(self, vr_manager, name, hand_path, device_index=None)` - 初始化VR手柄
|
||
- `_create_anchor(self)` - 创建手柄锚点节点
|
||
- `_create_visualizer(self)` - 创建手柄可视化器
|
||
- `set_device_index(self, device_index)` - 设置OpenVR设备索引
|
||
- `update_pose(self, pose_data)` - 更新手柄姿态
|
||
- `update_input_state(self, vr_system)` - 更新输入状态
|
||
- `is_button_pressed(self, button_id)` - 检查按钮是否被按下
|
||
- `is_button_just_pressed(self, button_id)` - 检查按钮是否刚刚被按下
|
||
- `is_button_just_released(self, button_id)` - 检查按钮是否刚刚被释放
|
||
- `is_trigger_pressed(self, threshold=0.1)` - 检查扳机是否被按下
|
||
- `is_grip_pressed(self, threshold=0.1)` - 检查握把是否被按下
|
||
- `show_ray(self, show=True)` - 显示或隐藏交互射线
|
||
- `set_ray_color(self, color)` - 设置射线颜色
|
||
- `trigger_haptic_feedback(self, duration=0.001, strength=1.0)` - 触发震动反馈
|
||
- `get_world_position(self)` - 获取手柄在世界坐标系中的位置
|
||
- `get_world_rotation(self)` - 获取手柄在世界坐标系中的旋转
|
||
- `get_forward_direction(self)` - 获取手柄指向的方向向量
|
||
- `is_joystick_touched(self)` - 检查摇杆是否被触摸
|
||
- `is_joystick_pressed(self)` - 检查摇杆是否被按下
|
||
- `get_joystick_position(self)` - 获取摇杆位置
|
||
- `get_joystick_delta(self)` - 获取摇杆位置变化
|
||
- `is_joystick_moved(self, threshold=0.01)` - 检查摇杆是否移动
|
||
- `_debug_axis_data(self, axis_data)` - 调试输出轴数据
|
||
- `recreate_visualizer(self)` - 重新创建visualizer
|
||
- `cleanup(self)` - 清理资源
|
||
- **类**: LeftController - 左手控制器
|
||
- **类**: RightController - 右手控制器
|
||
|
||
### 7. VR可视化系统 (core/vr/visualization/)
|
||
|
||
**文件**: controllers.py
|
||
- **类**: VRControllerVisualizer
|
||
- `__init__(self, controller, render_node)` - 初始化手柄可视化器
|
||
- `_create_visual_components(self)` - 创建可视化组件
|
||
- `_create_controller_model(self)` - 创建手柄3D模型
|
||
- `_load_steamvr_model(self)` - 加载SteamVR官方手柄模型
|
||
- `_fix_model_material(self, model)` - 修复模型材质
|
||
- `_apply_controller_identity_marker(self, model)` - 为控制器添加身份标记
|
||
- `_apply_steamvr_textures(self, model, base_path)` - 为SteamVR模型应用纹理
|
||
- `_load_combined_steamvr_model(self, base_path)` - 尝试组合加载多个SteamVR模型部件
|
||
- `_create_fallback_model(self)` - 创建改进的程序化手柄模型作为后备方案
|
||
- `_create_box_geometry(self, width, length, height)` - 创建立方体几何体
|
||
- `_create_disc_geometry(self, radius, thickness)` - 创建圆盘几何体
|
||
- `_create_interaction_ray(self)` - 创建交互射线
|
||
- `_create_sphere_geometry(self, radius)` - 创建球体几何体
|
||
- `_create_button_indicators(self)` - 创建按钮状态指示器
|
||
- `update(self)` - 更新可视化状态
|
||
- `_update_button_indicators(self)` - 更新按钮指示器状态
|
||
- `_update_ray_display(self)` - 更新射线显示
|
||
- `show(self)` - 显示手柄可视化
|
||
- `hide(self)` - 隐藏手柄可视化
|
||
- `show_ray(self)` - 显示交互射线
|
||
- `hide_ray(self)` - 隐藏交互射线
|
||
- `set_ray_color(self, color)` - 设置射线颜色
|
||
- `set_ray_length(self, length)` - 设置射线长度
|
||
- `_apply_render_mode_settings(self, model_node)` - 根据当前渲染模式应用渲染设置
|
||
- `_set_always_on_top(self, model_node)` - 设置手柄模型始终显示在上层
|
||
- `cleanup(self)` - 清理资源
|
||
|
||
**文件**: effects.py
|
||
- **类**: VREffectsManager
|
||
- `__init__(self, pipeline)` - 初始化VR Effects Manager
|
||
- `apply_effects_to_scene(self, scene_root)` - 为场景根节点下的所有模型应用effects
|
||
- `apply_effect_to_model(self, model_node, effect_config=None)` - 为单个模型节点应用RenderPipeline effect
|
||
- `apply_effect_to_model_simple(self, model_node)` - 为模型应用简化版effect
|
||
- `_should_apply_effect(self, node)` - 判断是否应该为节点应用effect
|
||
- `apply_effects_to_new_models(self, model_list)` - 为新添加的模型列表批量应用effects
|
||
- `update_effect_config(self, new_config)` - 更新默认effect配置
|
||
- `get_applied_models_count(self)` - 获取已应用effects的模型数量
|
||
- `clear_applied_models_cache(self)` - 清空已应用模型的缓存
|
||
- **函数**: setup_vr_model_effects(world, vr_root=None) - 便捷函数:为VR场景设置RenderPipeline Effects
|
||
|
||
### 8. VR主管理器 (core/vr_manager.py)
|
||
|
||
**枚举**: VRRenderMode
|
||
- NORMAL - 普通渲染模式
|
||
- RENDER_PIPELINE - RenderPipeline高级渲染模式
|
||
|
||
**类**: VRManager
|
||
- `__init__(self, world)` - 初始化VR管理器
|
||
- `convert_mat(self, mat)` - 将OpenVR矩阵转换为Panda3D矩阵
|
||
- `is_vr_available(self)` - 检查VR系统是否可用
|
||
- `initialize_vr(self)` - 初始化VR系统
|
||
- `_create_vr_buffers(self)` - 创建VR渲染缓冲区
|
||
- `_create_vr_texture(self, name)` - 创建VR纹理对象
|
||
- `_prepare_and_cache_textures(self)` - 准备纹理并缓存OpenGL ID
|
||
- `_create_vr_buffer(self, name, texture, width, height)` - 创建VR渲染缓冲区
|
||
- `_diagnose_buffer_performance(self, buffer, name, width, height)` - 诊断VR缓冲区性能特性
|
||
- `_create_vr_buffers_with_pipeline(self)` - 创建带RenderPipeline的VR渲染缓冲区
|
||
- `_apply_pipeline_vr_effects(self)` - 为VR场景应用RenderPipeline效果配置
|
||
- `_check_skybox_status(self)` - 检查并报告天空盒状态
|
||
- `_create_vr_skybox(self)` - 为VR创建天空盒
|
||
- `_setup_vr_cameras(self)` - 设置VR相机
|
||
- `_get_eye_offset(self, eye)` - 获取眼睛相对于头显的偏移
|
||
- `_optimize_vr_rendering(self)` - 优化VR模式下的渲染管线
|
||
- `_apply_lightweight_rendering(self, buffer, eye_name)` - 为VR缓冲区应用轻量级渲染设置
|
||
- `_disable_vr_buffer_extras(self)` - 禁用VR缓冲区的额外功能以提升性能
|
||
- `_start_vr_task(self)` - 启动VR更新任务
|
||
- `_update_vr(self, task)` - VR更新任务
|
||
- `_sync_gpu_if_needed(self)` - 可选的GPU同步
|
||
- `simple_left_cb(self, cbdata)` - 简化的左眼渲染回调
|
||
- `simple_right_cb(self, cbdata)` - 简化的右眼渲染回调
|
||
- `_wait_get_poses(self)` - 调用VRCompositor的waitGetPoses来获取焦点和姿态数据
|
||
- `_wait_get_poses_immediate(self)` - 立即获取VR姿态
|
||
- `_wait_get_poses_with_prediction(self)` - 使用预测时间获取VR姿态
|
||
- `_cache_poses_for_next_frame(self)` - 缓存当前姿态供下一帧渲染使用
|
||
- `_reset_waitgetposes_flag(self, task)` - 重置WaitGetPoses标记
|
||
- `_update_tracking_data(self)` - 更新VR追踪数据
|
||
- `_convert_openvr_matrix_to_panda(self, ovr_matrix)` - 将OpenVR矩阵转换为Panda3D矩阵
|
||
- `update_hmd(self, pose)` - 更新HMD锚点
|
||
- `_update_camera_poses(self)` - 更新相机姿态
|
||
- `_update_camera_poses_with_cache(self)` - 使用缓存姿态更新相机
|
||
- `enable_vr(self)` - 启用VR模式
|
||
- `disable_vr(self)` - 禁用VR模式
|
||
- `set_vr_render_mode(self, mode)` - 切换VR渲染模式
|
||
- `get_vr_render_mode(self)` - 获取当前VR渲染模式
|
||
- `_cleanup_vr_buffers(self)` - 清理VR渲染缓冲区
|
||
- `cleanup(self)` - 清理VR资源
|
||
- `get_vr_status(self)` - 获取VR状态信息
|
||
- `submit_texture(self, eye, texture)` - 优化的VR纹理提交
|
||
- `_smart_gpu_sync(self)` - 智能GPU同步策略
|
||
- `_disable_main_cam(self)` - 禁用主相机
|
||
- `_enable_main_cam(self)` - 恢复主相机
|
||
- `_initialize_controllers(self)` - 初始化VR手柄控制器
|
||
- `_detect_controllers(self)` - 检测并连接VR控制器
|
||
- `_create_tracked_device_anchor(self, device_index, name)` - 为跟踪设备创建锚点节点
|
||
- `update_tracked_devices(self)` - 更新所有跟踪设备的姿态
|
||
- `get_controller_by_role(self, role)` - 根据角色获取控制器
|
||
- `are_controllers_connected(self)` - 检查是否有控制器连接
|
||
- `get_connected_controllers(self)` - 获取所有连接的控制器列表
|
||
- `trigger_controller_haptic(self, role, duration=0.001, strength=1.0)` - 触发控制器震动反馈
|
||
- `is_trigger_pressed(self, hand='any')` - 检查扳机是否被按下
|
||
- `is_trigger_just_pressed(self, hand='any')` - 检查扳机是否刚刚被按下
|
||
- `is_grip_pressed(self, hand='any')` - 检查握把是否被按下
|
||
- `is_grip_just_pressed(self, hand='any')` - 检查握把是否刚刚被按下
|
||
- `is_menu_pressed(self, hand='any')` - 检查菜单按钮是否被按下
|
||
- `is_trackpad_touched(self, hand='any')` - 检查触摸板是否被触摸
|
||
- `get_trackpad_position(self, hand='any')` - 获取触摸板位置
|
||
- `get_selected_object(self, hand='any')` - 获取指定手选中的对象
|
||
- `get_grabbed_object(self, hand='any')` - 获取指定手抓取的对象
|
||
- `is_grabbing_object(self, hand='any')` - 检查是否正在抓取对象
|
||
- `force_release_all_grabs(self)` - 强制释放所有抓取的对象
|
||
- `add_interactable_object(self, object_node)` - 将对象标记为可交互
|
||
- `_disable_async_reprojection(self)` - 禁用异步重投影
|
||
- `enable_async_reprojection_disable(self)` - 启用异步重投影禁用选项
|
||
- `disable_async_reprojection_disable(self)` - 禁用异步重投影禁用选项
|
||
- `_batch_submit_textures(self)` - 批量提交两眼纹理
|
||
|
||
## 2.2 gui模块
|
||
|
||
### 1. `gui/__init__.py`
|
||
- **功能**: GUI模块初始化文件,导出GUI管理器类
|
||
- **类**:
|
||
- `GUIManager`: GUI管理器类
|
||
|
||
### 2. `gui/gui_manager.py`
|
||
- **功能**: GUI管理器模块,负责2D和3D GUI元素的创建和管理
|
||
- **类**:
|
||
- `GUIManager`: GUI管理器类
|
||
- **方法**:
|
||
- `__init__()`: 初始化GUI管理系统
|
||
- `createGUIButton()`: 创建2D GUI按钮
|
||
- `createGUILabel()`: 创建2D GUI标签
|
||
- `createGUIEntry()`: 创建2D GUI文本输入框
|
||
- `createGUI2DImage()`: 创建2D GUI图片
|
||
- `constrain2DPosition()`: 限制2dGUI元素位置在屏幕范围内
|
||
- `createGUI3DText()`: 创建3D空间文本
|
||
- `createGUI3DImage()`: 创建3D空间图片
|
||
- `createVideoScreen()`: 创建3D视频播放屏幕
|
||
- `_ensureVideoScreenMaterial()`: 确保视频屏幕有正确的材质设置
|
||
- `_debugVideoScreenTextures()`: 调试视频屏幕的纹理状态
|
||
- `playVideo()`: 播放视频
|
||
- `_getMovieTextureFromScreen()`: 从视频屏幕获取视频纹理
|
||
- `pauseVideo()`: 暂停视频
|
||
- `stopVideo()`: 停止视频
|
||
- `setVideoTime()`: 设置视频播放时间
|
||
- `loadVideoFile()`: 为视频屏幕加载新的视频文件
|
||
- `_loadMovieTexture()`: 加载视频纹理的兼容方法
|
||
- `_configureVideoTexture()`: 配置视频纹理属性
|
||
- `createGUI2DVideoScreen()`: 创建2D视频播放屏幕
|
||
- `load2DVideoFile()`: 为2D视频屏幕加载新的视频文件
|
||
- `play2DVideo()`: 播放2D视频
|
||
- `pause2DVideo()`: 暂停2D视频
|
||
- `stop2DVideo()`: 停止2D视频
|
||
- `createSphericalVideo()`: 创建球形视频(360度视频)
|
||
- `_createSphereGeometry()`: 创建球形几何体
|
||
- `playSphericalVideo()`: 播放球形视频
|
||
- `pauseSphericalVideo()`: 暂停球形视频
|
||
- `setSphericalVideoTime()`: 设置球形视频播放时间
|
||
- `createGUIVirtualScreen()`: 创建3D虚拟屏幕
|
||
- `_create_screen_text()`: 为虚拟屏幕创建文本节点
|
||
- `_get_tree_widget()`: 安全获取树形控件
|
||
- `createGUISlider()`: 创建2D GUI滑块
|
||
- `deleteGUIElement()`: 删除GUI元素
|
||
- `editGUIElement()`: 编辑GUI元素属性
|
||
- `_resizeButtonToText()`: 根据文本内容调整按钮大小
|
||
- `duplicateGUIElement()`: 复制GUI元素
|
||
- `editGUIElementDialog()`: 显示GUI元素编辑对话框
|
||
- `onGUIButtonClick()`: GUI按钮点击事件处理
|
||
- `onGUIEntrySubmit()`: GUI输入框提交事件处理
|
||
- `toggleGUIEditMode()`: 切换GUI编辑模式
|
||
- `enterGUIEditMode()`: 进入GUI编辑模式
|
||
- `exitGUIEditMode()`: 退出GUI编辑模式
|
||
- `createGUIEditPanel()`: 创建GUI编辑面板
|
||
- `openGUIPreviewWindow()`: 打开独立的GUI预览窗口
|
||
- `closeGUIPreviewWindow()`: 关闭GUI预览窗口
|
||
- `setGUICreateTool()`: 设置GUI创建工具
|
||
- `deleteSelectedGUI()`: 删除选中的GUI元素
|
||
- `copySelectedGUI()`: 复制选中的GUI元素
|
||
- `handleGUIEditClick()`: 处理GUI编辑模式下的点击
|
||
- `createGUIAtPosition()`: 在指定位置创建GUI元素
|
||
- `findClickedGUI()`: 查找被点击的GUI元素
|
||
- `selectGUIInTree()`: 在树形控件中选中GUI元素
|
||
- `updateGUISelection()`: 更新GUI元素选择状态
|
||
- `updateGUIPropertyPanel()`: 更新GUI元素属性面板
|
||
- `selectGUIColor()`: 选择GUI元素颜色
|
||
- `update3DImageTexture()`: 更新3D图像纹理
|
||
- `_preserveChildNodeTextures()`: 保护子节点的纹理不被父节点纹理影响
|
||
- `_is3DTextElement()`: 检查节点是否为3D文本元素
|
||
- `_isOtherSpecialElement()`: 检查节点是否为其他需要特殊处理的元素
|
||
- `_restore3DTextTexture()`: 恢复3D文本的纹理设置
|
||
- `update2DImageTexture()`: 更新2D图片纹理
|
||
- `editGUI2DPosition()`: 编辑2D GUI元素位置并应用边界约束
|
||
- `editGUI3DPosition()`: 编辑3D GUI元素位置
|
||
- `editGUIScale()`: 编辑GUI元素缩放
|
||
- `createCesiumView()`: 创建 Cesium 视图窗口(离线版本)
|
||
- `toggleCesiumView()`: 切换 Cesium 视图显示状态
|
||
- `refreshCesiumView()`: 刷新 Cesium 视图
|
||
- `updateCesiumURL()`: 更新 Cesium 视图的 URL
|
||
- `addModelToCesium()`: 向 Cesium 添加模型
|
||
- `addCesiumTilesetToScene()`: 在 Panda3D 场景中添加 Cesium 3D Tiles
|
||
- `removeModelFromCesium()`: 从 Cesium 移除模型
|
||
- `updateCesiumModelPosition()`: 更新 Cesium 中模型的位置
|
||
- `getAllCesiumModels()`: 获取 Cesium 中所有模型的列表
|
||
- `addLocalModelToCesium()`: 向 Cesium 添加本地模型文件
|
||
|
||
## 2.3 project模块
|
||
|
||
### 1. `project/__init__.py`
|
||
- **功能**: 项目管理模块初始化文件,导出项目管理器类和新建项目对话框
|
||
- **类**:
|
||
- `ProjectManager`: 项目管理器类
|
||
- `NewProjectDialog`: 新建项目对话框类
|
||
|
||
### 2. `project/project_manager.py`
|
||
- **功能**: 项目管理器模块,负责项目的生命周期管理,处理项目创建、打开、保存、打包等功能
|
||
- **类**:
|
||
- `ProjectManager`: 项目管理器类
|
||
- **方法**:
|
||
- `__init__()`: 初始化项目管理器
|
||
- `createNewProject()`: 创建新项目
|
||
- `openProject()`: 打开项目
|
||
- `openProjectForPath()`: 通过路径打开项目
|
||
- `saveProject()`: 保存项目
|
||
- `buildPackage()`: 打包项目为可执行文件
|
||
- `_createStandardBuildFiles()`: 创建标准的Panda3D打包文件
|
||
- `_copyScriptsToBuild()`: 复制脚本文件到构建目录的scripts文件夹
|
||
- `_copyScriptSystemToBuild()`: 复制脚本系统文件到构建目录
|
||
- `_saveGUIElementsToJSON()`: 保存GUI元素到JSON文件
|
||
- `_updateResourcePaths()`: 更新资源路径
|
||
- `_createRequirementsFile()`: 创建requirements.txt文件
|
||
- `copy_folder()`: 将一个文件夹从源路径复制到目标路径下的resources文件夹中
|
||
- `_copyResourcesToBuild()`: 复制GUI资源到构建目录的resources文件夹
|
||
- `_collectResourceFiles()`: 收集项目中GUI使用的资源文件
|
||
- `_extractResourcesFromScene()`: 从场景文件中提取资源引用
|
||
- `_isMediaFile()`: 判断是否为媒体文件(图片或视频)
|
||
- `_createAppFile()`: 创建应用程序主文件
|
||
- `_createStandardSetupFile()`: 创建优化的标准setup.py文件
|
||
- `_executeStandardBuild()`: 执行标准的Panda3D打包命令
|
||
- `_tryBuildAppsThreaded()`: 尝试使用 build_apps 命令(线程安全版本)
|
||
- `_tryBuildApps()`: 尝试使用 build_apps 命令
|
||
- `updateWindowTitle()`: 更新窗口标题
|
||
- `_clearCurrentScene()`: 清空当前场景
|
||
- `getCurrentProjectPath()`: 获取当前项目路径
|
||
- `getCurrentProjectConfig()`: 获取当前项目配置
|
||
- `isProjectOpen()`: 检查是否有项目打开
|
||
- `getProjectName()`: 获取当前项目名称
|
||
- `getProjectInfo()`: 获取项目信息
|
||
|
||
## 2.4 QPanda3D模块
|
||
|
||
### 1. `QPanda3D/__init__.py`
|
||
- **功能**: QPanda3D模块初始化文件,导出核心类
|
||
- **类**:
|
||
- 无
|
||
- **方法**:
|
||
- 无
|
||
- **导出项**:
|
||
- `QPanda3DWidget`: QPanda3D部件类
|
||
- `Panda3DWorld`: Panda3D世界类
|
||
- `QPanda3D_Keys_Translation`: 键盘事件翻译类
|
||
|
||
### 2. `QPanda3D/Panda3DWorld.py`
|
||
- **功能**: Panda3D世界类,处理Panda3D环境设置和渲染管理
|
||
- **类**:
|
||
- `Panda3DWorld`: Panda3D世界类,继承自ShowBase
|
||
- **方法**:
|
||
- `__init__(self, width=1380, height=750, is_fullscreen=False, size=1.0, clear_color=LVecBase4f(0, 0.5, 0, 1), name="qpanda3D")`: 初始化Panda3D世界
|
||
- `_handle_transform_error(self)`: 处理TransformState相关的错误
|
||
- `render_pipeline(self)`: 获取RenderPipeline实例
|
||
- `set_parent(self, parent: QWidget)`: 设置父部件
|
||
- `getAspectRatio(self, win = None)`: 获取宽高比
|
||
- `resize_buffer(self, width: int, height: int)`: 根据新窗口尺寸调整Panda3D渲染输出尺寸
|
||
|
||
### 3. `QPanda3D/QPanda3DWidget.py`
|
||
- **功能**: QPanda3D部件类,作为Panda3D内容在Qt应用程序中的容器
|
||
- **类**:
|
||
- `QPanda3DSynchronizer`: Panda3D同步器类,继承自QTimer
|
||
- `QPanda3DWidget`: QPanda3D部件类,继承自QWidget
|
||
- **方法**:
|
||
- `QPanda3DSynchronizer.__init__(self, qPanda3DWidget, FPS=60)`: 初始化同步器
|
||
- `QPanda3DSynchronizer.tick(self)`: 同步器定时更新方法
|
||
- `get_panda_key_modifiers(evt)`: 获取Panda3D按键修饰符
|
||
- `get_panda_key_modifiers_prefix(evt)`: 获取Panda3D按键修饰符前缀
|
||
- `QPanda3DWidget.__init__(self, panda3DWorld, parent=None, FPS=60, debug=False)`: 初始化QPanda3D部件
|
||
- `QPanda3DWidget.mousePressEvent(self, evt)`: 鼠标按下事件处理
|
||
- `QPanda3DWidget.mouseMoveEvent(self, evt:QtGui.QMouseEvent)`: 鼠标移动事件处理
|
||
- `QPanda3DWidget.mouseReleaseEvent(self, evt)`: 鼠标释放事件处理
|
||
- `QPanda3DWidget.wheelEvent(self, evt)`: 鼠标滚轮事件处理
|
||
- `QPanda3DWidget.keyPressEvent(self, evt)`: 键盘按下事件处理
|
||
- `QPanda3DWidget.keyReleaseEvent(self, evt)`: 键盘释放事件处理
|
||
- `QPanda3DWidget.resizeEvent(self, evt)`: 窗口大小调整事件处理
|
||
- `QPanda3DWidget.minimumSizeHint(self)`: 最小尺寸提示
|
||
- `QPanda3DWidget.paintEvent(self, event)`: 绘制事件处理
|
||
- `QPanda3DWidget.sync_panda3d_window_size(self, width, height)`: 同步Panda3D窗口尺寸到Qt窗口尺寸
|
||
|
||
### 4. `QPanda3D/QMouseWatcherNode.py`
|
||
- **功能**: 鼠标观察节点类,通过父级QWidget访问鼠标位置和按钮状态
|
||
- **类**:
|
||
- `QMouseWatcherNode`: 鼠标观察节点类,继承自MouseWatcher
|
||
- **方法**:
|
||
- `__init__(self, parent)`: 初始化鼠标观察节点
|
||
- `getMouse(self, *args, **kwargs)`: 获取鼠标位置
|
||
- `hasMouse(self)`: 检查是否有鼠标
|
||
|
||
### 5. `QPanda3D/QPanda3D_Keys_Translation.py`
|
||
- **功能**: 键盘事件翻译字典,将Qt键盘事件翻译为Panda3D键盘事件
|
||
- **类**:
|
||
- 无
|
||
- **方法**:
|
||
- 无
|
||
- **变量**:
|
||
- `QPanda3D_Key_translation`: Qt到Panda3D键盘事件的翻译字典
|
||
|
||
### 6. `QPanda3D/QPanda3D_Buttons_Translation.py`
|
||
- **功能**: 鼠标事件翻译字典,将Qt鼠标事件翻译为Panda3D鼠标事件
|
||
- **类**:
|
||
- 无
|
||
- **方法**:
|
||
- 无
|
||
- **变量**:
|
||
- `QPanda3D_Button_translation`: Qt到Panda3D鼠标事件的翻译字典
|
||
|
||
### 7. `QPanda3D/QPanda3D_Modifiers_Translation.py`
|
||
- **功能**: 键盘修饰符翻译字典,将Qt键盘事件翻译为Panda3D键盘事件
|
||
- **类**:
|
||
- 无
|
||
- **方法**:
|
||
- 无
|
||
- **变量**:
|
||
- `QPanda3D_Modifier_translation`: Qt到Panda3D键盘修饰符的翻译字典
|
||
|
||
### 8. `QPanda3D/Helpers/__init__.py`
|
||
- **功能**: QPanda3D辅助模块初始化文件,导出辅助类
|
||
- **类**:
|
||
- 无
|
||
- **方法**:
|
||
- 无
|
||
- **导出项**:
|
||
- `Env_Grid_Maker`: 环境网格生成器类
|
||
|
||
### 9. `QPanda3D/Helpers/Env_Grid_Maker.py`
|
||
- **功能**: 环境网格生成器,创建3D网格实现以显示坐标轴
|
||
- **类**:
|
||
- `Env_Grid_Maker`: 环境网格生成器类
|
||
- **方法**:
|
||
- `__init__(self, XYPlaneShow = True, XZPlaneShow = False, YZPlaneShow = False, endCapLinesShow = True, XSize = 50, YSize = 50, ZSize = 50, gridStep = 10, subdiv = 10)`: 初始化环境网格生成器
|
||
- `create(self)`: 创建网格
|
||
- `myfrange(self, start, stop=None, step=None)`: 浮点数范围生成器
|
||
|
||
### 10. `QPanda3D/Tools/__init__.py`
|
||
- **功能**: QPanda3D工具模块初始化文件,导出工具类
|
||
- **类**:
|
||
- 无
|
||
- **方法**:
|
||
- 无
|
||
- **导出项**:
|
||
- `generate_qt_to_pd3d_translator`: Qt到Panda3D翻译生成器
|
||
|
||
### 11. `QPanda3D/Tools/generate_qt_to_pd3d_translator.py`
|
||
- **功能**: 生成Qt到Panda3D事件翻译的工具脚本
|
||
- **类**:
|
||
- 无
|
||
- **方法**:
|
||
- 无
|
||
- **变量**:
|
||
- `H`: Qt模块字典
|
||
- `lst`: 以"Key_"开头的Qt键列表
|
||
- `QPanda3D_Key_translation`: 生成的Qt到Panda3D键盘事件翻译字符串
|
||
|
||
## 2.5 scene模块
|
||
|
||
### 1. `scene/__init__.py`
|
||
- **功能**: scene模块初始化文件,导出场景管理器类
|
||
- **类**:
|
||
- `SceneManager`: 场景管理器类
|
||
- **方法**:
|
||
- 无
|
||
|
||
### 2. `scene/scene_manager.py`
|
||
- **功能**: 场景管理器模块,负责场景和模型管理的核心功能,处理模型导入、场景树构建、材质系统、碰撞设置等
|
||
- **类**:
|
||
- `SceneManager`: 场景管理器类
|
||
- `CesiumIntegration`: Cesium集成类
|
||
- **方法**:
|
||
- `__init__(self, world)`: 初始化场景管理器
|
||
- `importModel(self, filepath, apply_unit_conversion=False, normalize_scales=True, auto_convert_to_glb=True)`: 导入模型
|
||
- `_fixModelStructure(self, model)`: 修复模型结构
|
||
- `_validateAndFixAllTransforms(self, model)`: 验证并修复模型中所有节点的变换矩阵
|
||
- `_validateAndFixTransform(self, node_path)`: 验证并修复单个节点的变换矩阵
|
||
- `_applyModelScale(self, model, scale_factor)`: 应用模型特定缩放
|
||
- `_applyMaterialsToModel(self, model)`: 递归应用材质到模型的所有GeomNode
|
||
- `_adjustModelToGround(self, model)`: 智能调整模型到地面,但保持原有缩放结构
|
||
- `_normalizeModelScales(self, model)`: 智能标准化模型缩放层级
|
||
- `_collectScaleInfo(self, node, scale_info, depth=0)`: 递归收集节点缩放信息
|
||
- `_findCommonLargeScale(self, large_scales)`: 找到最常见的大缩放值
|
||
- `_applyScaleNormalization(self, node, normalize_factor, depth=0)`: 安全地应用缩放标准化
|
||
- `importModelAsync(self, filepath)`: 异步导入模型
|
||
- `processMaterials(self, model)`: 处理模型材质
|
||
- `processModelGeometry(self, model)`: 处理模型几何体
|
||
- `setupCollision(self, model)`: 为模型设置碰撞检测(增强版本)
|
||
- `updateSceneTree(self)`: 更新场景树显示 - 代理到interface_manager
|
||
- `_collectGUIElementInfo(self, gui_node)`: 收集GUI元素的信息用于保存
|
||
- `_get_script_file_path(self, script_class, script_name)`: 获取脚本文件路径的可靠方法
|
||
- `saveScene(self, filename, project_path)`: 保存场景到BAM文件 - 完整版,支持GUI元素,地形
|
||
- `take_screenshot(self, projectpath)`: 截图并保存到指定的完整路径
|
||
- `loadScene(self, filename)`: 从BAM文件加载场景
|
||
- `_rebuildParentChildRelationships(self, loaded_nodes)`: 重建父子关系
|
||
- `_inferParentChildRelationships(self, loaded_nodes)`: 从场景结构推断父子关系
|
||
- `_shouldSkipNodeInTree(self, nodePath)`: 判断节点是否应该在场景树中跳过显示
|
||
- `_recreateGUIElementsFromData(self, gui_data)`: 根据保存的GUI数据重新创建GUI元素
|
||
- `_findOrCreateQtTreeItem(self, tree_widget, target_element, element_name)`: 在Qt树中查找或创建指定元素对应的项
|
||
- `_findQtTreeItem(self, tree_widget, target_element)`: 在Qt树中查找指定元素对应的项
|
||
- `_find_script_in_directory(self, script_name)`: 在脚本目录中查找脚本文件
|
||
- `_recreateSpotLight(self, light_node)`: 重新创建聚光灯
|
||
- `_recreatePointLight(self, light_node)`: 重新创建点光源
|
||
- `_cleanupAuxiliaryNodes(self)`: 清理场景中可能存在的辅助节点
|
||
- `deleteModel(self, model)`: 删除模型
|
||
- `clearAllModels(self)`: 清除所有模型
|
||
- `getModels(self)`: 获取模型列表
|
||
- `getModelCount(self)`: 获取模型数量
|
||
- `findModelByName(self, name)`: 根据名称查找模型
|
||
- `processLoadedModel(self, model)`: 处理加载完成的模型(用于异步加载回调)
|
||
- `createSpotLight(self, pos=(0, 0, 0))`: 创建聚光灯 - 支持多选创建,优化版本
|
||
- `createPointLight(self, pos=(0, 0, 0))`: 创建点光源 - 支持多选创建,优化版本
|
||
- `_get_tree_widget(self)`: 安全获取树形控件
|
||
- `_shouldConvertToGLB(self, filepath)`: 判断是否应该转换为GLB格式
|
||
- `_convertToGLBWithProgress(self, filepath)`: 带进度显示的GLB转换
|
||
- `_convertToGLB(self, filepath, progress=None)`: 将模型文件转换为GLB格式
|
||
- `_convertWithBlender(self, input_path, output_path, progress=None)`: 使用 Blender 进行转换
|
||
- `_convertWithFBX2glTF(self, input_path, output_path, progress=None)`: 使用 FBX2glTF 进行转换(仅支持FBX)
|
||
- `_convertWithAssimp(self, input_path, output_path, progress=None)`: 使用 PyAssimp 进行转换
|
||
- `load_cesium_tileset(self, tileset_url, position=(0, 0, 0))`: 加载 Cesium 3D Tileset - 采用新的创建逻辑,支持多选和更完善的UI交互
|
||
- `_load_tileset_async(self, tileset_url, tileset_info)`: 异步加载 tileset 数据
|
||
- `_check_async_task(self, panda3d_task)`: 检查 asyncio 任务是否完成
|
||
- `_parse_tileset(self, tileset_data, tileset_info)`: 解析 tileset 数据
|
||
- `_parse_tile(self, tile_data, parent_node, tileset_info)`: 解析 tile 数据
|
||
- `_create_tile_geometry(self, parent_node)`: 为 tile 创建占位几何体
|
||
- `_create_placeholder_geometry(self, parent_node)`: 创建一个简单的占位符几何体,让用户能看到节点
|
||
- `serializeNode(self, node)`: 序列化节点为字典数据
|
||
- `deserializeNode(self, node_data, parent_node)`: 从字典数据反序列化节点
|
||
- `serializeNodeForCopy(self, node)`: 序列化节点用于复制操作,完整保存视觉属性
|
||
- `_serializeGUIData(self, node)`: 序列化GUI元素数据
|
||
- `_serializeModelData(self, node)`: 序列化模型数据,包括材质信息
|
||
- `recreateNodeFromData(self, node_data, parent_node)`: 根据数据重建节点,并确保在场景树中显示
|
||
- `_findTreeItemForNode(self, node)`: 根据节点查找对应的场景树项
|
||
- `_findTreeItemForNodeRecursive(self, item, target_node)`: 递归查找场景树项
|
||
- `_recreateLightFromData(self, node_data, parent_node, name)`: 根据数据重建光源
|
||
- `_recreateTilesetFromData(self, node_data, parent_node, name)`: 根据数据重建Tileset
|
||
- `_recreateGUIFromData(self, node_data, parent_node, name)`: 根据数据重建GUI元素
|
||
- `_recreateModelFromData(self, node_data, parent_node, name)`: 根据数据重建模型,保持材质
|
||
- `_restoreModelMaterial(self, model, model_data)`: 恢复模型材质
|
||
- `_createBasicNodeFromData(self, node_data, parent_node, name)`: 创建基本节点,保持视觉属性
|
||
- `_generateUniqueName(self, base_name, parent_node)`: 生成唯一节点名称
|
||
|
||
### 3. `scene/util.py`
|
||
- **功能**: 跨平台路径处理工具,提供标准化模型文件路径的功能
|
||
- **类**:
|
||
- `CrossPlatformPathHandler`: 跨平台路径处理器
|
||
- **方法**:
|
||
- `__init__(self)`: 初始化路径处理器
|
||
- `normalize_model_path(self, filepath)`: 标准化模型文件路径
|
||
- `_check_file_exists(self, filepath)`: 检查文件是否存在
|
||
- `_panda3d_normalize(self, filepath)`: 使用Panda3D标准化路径
|
||
- `_attempt_path_fixes(self, filepath)`: 尝试各种路径修复方法
|
||
- `_fix_path_separators(self, filepath)`: 修复路径分隔符
|
||
- `_convert_to_relative_path(self, filepath)`: 转换绝对路径为相对路径
|
||
- `_clean_special_characters(self, filepath)`: 清理路径中的特殊字符
|
||
- `_smart_file_search(self, filepath)`: 智能文件搜索
|
||
- `_search_in_common_directories(self, filename)`: 在常见目录中搜索
|
||
- `_recursive_search(self, filename, max_depth=3)`: 递归搜索文件
|
||
- `_search_user_directories(self, filename)`: 搜索用户常用目录
|
||
- `_handle_path_not_found(self, filepath)`: 处理路径未找到的情况
|
||
- `suggest_file_placement(self, filename)`: 建议文件放置位置
|
||
- **函数**:
|
||
- `normalize_model_path(filepath)`: 便捷函数:标准化模型路径
|
||
- `suggest_file_placement(filename)`: 便捷函数:建议文件放置位置
|
||
|
||
## 2.6 scripts模块
|
||
|
||
### 1. `scripts/a.py`
|
||
- **功能**: 自定义脚本示例
|
||
- **类**:
|
||
- `A`: 自定义脚本类,继承自ScriptBase
|
||
- **方法**:
|
||
- `__init__(self)`: 初始化脚本
|
||
- `start(self)`: 脚本开始时调用
|
||
- `update(self, dt)`: 每帧更新
|
||
- `on_destroy(self)`: 脚本销毁时调用
|
||
|
||
### 2. `scripts/BouncerScript.py`
|
||
- **功能**: 跳跃脚本,让对象产生上下跳跃效果
|
||
- **类**:
|
||
- `BouncerScript`: 跳跃脚本类,继承自ScriptBase
|
||
- **方法**:
|
||
- `__init__(self)`: 初始化脚本参数
|
||
- `start(self)`: 脚本开始时调用
|
||
- `update(self, dt)`: 每帧更新,实现跳跃效果
|
||
- `set_bounce_parameters(self, height=None, speed=None, bounce_type=None)`: 设置跳跃参数
|
||
- `toggle_bouncing(self)`: 切换跳跃状态
|
||
- `reverse_direction(self)`: 反转跳跃方向
|
||
- `reset_position(self)`: 重置到原始高度
|
||
- `jump_once(self)`: 执行一次跳跃
|
||
- `on_destroy(self)`: 脚本销毁时调用
|
||
|
||
### 3. `scripts/ColorChangerScript.py`
|
||
- **功能**: 颜色变化脚本,让对象颜色产生循环变化
|
||
- **类**:
|
||
- `ColorChangerScript`: 颜色变化脚本类,继承自ScriptBase
|
||
- **方法**:
|
||
- `__init__(self)`: 初始化颜色参数
|
||
- `start(self)`: 脚本开始时调用
|
||
- `update(self, dt)`: 每帧更新,实现颜色变化效果
|
||
- `_calculate_rainbow_color(self)`: 计算彩虹颜色
|
||
- `_calculate_pulse_color(self)`: 计算脉冲颜色
|
||
- `_calculate_fade_color(self)`: 计算淡入淡出颜色
|
||
- `_calculate_strobe_color(self)`: 计算闪烁颜色
|
||
- `set_color_parameters(self, speed=None, mode=None, base_color=None, intensity=None)`: 设置颜色参数
|
||
- `toggle_color_change(self)`: 切换颜色变化状态
|
||
- `reset_color(self)`: 重置到原始颜色
|
||
- `set_solid_color(self, r=1.0, g=1.0, b=1.0, a=1.0)`: 设置固定颜色
|
||
- `on_destroy(self)`: 脚本销毁时调用
|
||
|
||
### 4. `scripts/ComboAnimatorScript.py`
|
||
- **功能**: 复合动画脚本,结合旋转和跳跃效果
|
||
- **类**:
|
||
- `ComboAnimatorScript`: 复合动画脚本类,继承自ScriptBase
|
||
- **方法**:
|
||
- `__init__(self)`: 初始化脚本
|
||
- `start(self)`: 脚本开始时调用
|
||
- `update(self, dt)`: 每帧更新,实现旋转和跳跃效果
|
||
- `on_destroy(self)`: 脚本销毁时调用
|
||
|
||
### 5. `scripts/example_script.py`
|
||
- **功能**: 示例脚本,演示如何编写脚本
|
||
- **类**:
|
||
- `ExampleScript`: 示例脚本类,继承自ScriptBase
|
||
- **方法**:
|
||
- `__init__(self)`: 初始化脚本
|
||
- `start(self)`: 脚本开始时调用
|
||
- `update(self, dt)`: 每帧更新
|
||
- `on_destroy(self)`: 脚本销毁时调用
|
||
- `on_enable(self)`: 脚本启用时调用
|
||
- `on_disable(self)`: 脚本禁用时调用
|
||
|
||
### 6. `scripts/FollowerScript.py`
|
||
- **功能**: 跟随脚本,让对象跟随指定的目标对象
|
||
- **类**:
|
||
- `FollowerScript`: 跟随脚本类,继承自ScriptBase
|
||
- **方法**:
|
||
- `__init__(self)`: 初始化跟随参数
|
||
- `start(self)`: 脚本开始时调用
|
||
- `update(self, dt)`: 每帧更新,实现跟随效果
|
||
- `set_target(self, target)`: 设置跟随目标
|
||
- `on_destroy(self)`: 脚本销毁时调用
|
||
|
||
### 7. `scripts/MoverScript.py`
|
||
- **功能**: 移动脚本,让对象在指定方向上来回移动
|
||
- **类**:
|
||
- `MoverScript`: 移动脚本类,继承自ScriptBase
|
||
- **方法**:
|
||
- `__init__(self)`: 初始化移动参数
|
||
- `start(self)`: 脚本开始时调用
|
||
- `update(self, dt)`: 每帧更新,实现移动效果
|
||
- `set_move_parameters(self, distance=None, speed=None, axis=None)`: 设置移动参数
|
||
- `toggle_movement(self)`: 切换移动状态
|
||
- `reset_position(self)`: 重置到起始位置
|
||
- `on_destroy(self)`: 脚本销毁时调用
|
||
|
||
### 8. `scripts/R_P.py`
|
||
- **功能**: 旋转脚本,让对象持续旋转(围绕P轴)
|
||
- **类**:
|
||
- `RotatorScript`: 旋转脚本类,继承自ScriptBase
|
||
- **方法**:
|
||
- `__init__(self)`: 初始化旋转参数
|
||
- `start(self)`: 脚本开始时调用
|
||
- `update(self, dt)`: 每帧更新,实现旋转效果
|
||
- `set_max_angle(self, new_max_angle)`: 设置新的最大旋转角度
|
||
- `set_rotation_speed(self, new_speed)`: 设置新的旋转速度
|
||
- `pause_rotation(self)`: 暂停旋转
|
||
- `resume_rotation(self)`: 恢复旋转
|
||
- `reset_to_initial_angle(self)`: 重置到初始角度
|
||
- `get_current_info(self)`: 获取当前旋转信息
|
||
- `on_destroy(self)`: 脚本销毁时调用
|
||
|
||
### 9. `scripts/R_R.py`
|
||
- **功能**: 旋转脚本,让对象持续旋转(围绕R轴)
|
||
- **类**:
|
||
- `RotatorScript`: 旋转脚本类,继承自ScriptBase
|
||
- **方法**:
|
||
- `__init__(self)`: 初始化旋转参数
|
||
- `start(self)`: 脚本开始时调用
|
||
- `update(self, dt)`: 每帧更新,实现旋转效果
|
||
- `set_max_angle(self, new_max_angle)`: 设置新的最大旋转角度
|
||
- `set_rotation_speed(self, new_speed)`: 设置新的旋转速度
|
||
- `pause_rotation(self)`: 暂停旋转
|
||
- `resume_rotation(self)`: 恢复旋转
|
||
- `reset_to_initial_angle(self)`: 重置到初始角度
|
||
- `get_current_info(self)`: 获取当前旋转信息
|
||
- `on_destroy(self)`: 脚本销毁时调用
|
||
|
||
### 10. `scripts/Rotate_H_Script.py`
|
||
- **功能**: 机器人式旋转脚本,让对象围绕H轴旋转并带有停顿效果
|
||
- **类**:
|
||
- `RotatorScript`: 旋转脚本类,继承自ScriptBase
|
||
- **方法**:
|
||
- `__init__(self)`: 初始化旋转参数和机器人模式参数
|
||
- `start(self)`: 脚本开始时调用
|
||
- `update(self, dt)`: 每帧更新,实现机器人式旋转效果
|
||
- `set_robot_mode(self, enabled=True)`: 启用或禁用机器人模式
|
||
- `set_pause_duration(self, duration)`: 设置停顿时间
|
||
- `set_max_angle(self, new_max_angle)`: 设置新的最大旋转角度
|
||
- `set_rotation_speed(self, new_speed)`: 设置新的旋转速度
|
||
- `pause_rotation(self)`: 暂停旋转
|
||
- `resume_rotation(self)`: 恢复旋转
|
||
- `reset_to_initial_angle(self)`: 重置到初始角度
|
||
- `get_current_info(self)`: 获取当前旋转信息
|
||
- `set_slow_robot_mode(self)`: 预设:慢速机器人模式
|
||
- `set_fast_robot_mode(self)`: 预设:快速机器人模式
|
||
- `set_smooth_mode(self)`: 预设:平滑模式(非机器人)
|
||
- `on_destroy(self)`: 脚本销毁时调用
|
||
|
||
### 11. `scripts/Rotate_P_Script.py`
|
||
- **功能**: 机器人式旋转脚本,让对象围绕P轴旋转并带有停顿效果
|
||
- **类**:
|
||
- `RotatorScript`: 旋转脚本类,继承自ScriptBase
|
||
- **方法**:
|
||
- `__init__(self)`: 初始化旋转参数和机器人模式参数
|
||
- `start(self)`: 脚本开始时调用
|
||
- `update(self, dt)`: 每帧更新,实现机器人式旋转效果
|
||
- `set_robot_mode(self, enabled=True)`: 启用或禁用机器人模式
|
||
- `set_pause_duration(self, duration)`: 设置停顿时间
|
||
- `set_max_angle(self, new_max_angle)`: 设置新的最大旋转角度
|
||
- `set_rotation_speed(self, new_speed)`: 设置新的旋转速度
|
||
- `pause_rotation(self)`: 暂停旋转
|
||
- `resume_rotation(self)`: 恢复旋转
|
||
- `reset_to_initial_angle(self)`: 重置到初始角度
|
||
- `get_current_info(self)`: 获取当前旋转信息
|
||
- `set_slow_robot_mode(self)`: 预设:慢速机器人模式
|
||
- `set_fast_robot_mode(self)`: 预设:快速机器人模式
|
||
- `set_smooth_mode(self)`: 预设:平滑模式(非机器人)
|
||
- `on_destroy(self)`: 脚本销毁时调用
|
||
|
||
### 12. `scripts/Rotate_R_Script.py`
|
||
- **功能**: 旋转脚本,让对象围绕R轴旋转
|
||
- **类**:
|
||
- `RotatorScript`: 旋转脚本类,继承自ScriptBase
|
||
- **方法**:
|
||
- `__init__(self)`: 初始化旋转参数
|
||
- `start(self)`: 脚本开始时调用
|
||
- `update(self, dt)`: 每帧更新,实现旋转效果
|
||
- `on_destroy(self)`: 脚本销毁时调用
|
||
|
||
### 13. `scripts/RotatorScript.py`
|
||
- **功能**: 旋转脚本,让对象持续旋转
|
||
- **类**:
|
||
- `RotatorScript`: 旋转脚本类,继承自ScriptBase
|
||
- **方法**:
|
||
- `__init__(self)`: 初始化旋转参数
|
||
- `start(self)`: 脚本开始时调用
|
||
- `update(self, dt)`: 每帧更新,实现旋转效果
|
||
- `on_destroy(self)`: 脚本销毁时调用
|
||
|
||
### 14. `scripts/ScalerScript.py`
|
||
- **功能**: 缩放脚本,让对象产生呼吸般的缩放效果
|
||
- **类**:
|
||
- `ScalerScript`: 缩放脚本类,继承自ScriptBase
|
||
- **方法**:
|
||
- `__init__(self)`: 初始化缩放参数
|
||
- `start(self)`: 脚本开始时调用
|
||
- `update(self, dt)`: 每帧更新,实现缩放效果
|
||
- `set_scale_parameters(self, base=None, amplitude=None, speed=None, uniform=None)`: 设置缩放参数
|
||
- `toggle_scaling(self)`: 切换缩放状态
|
||
- `reset_scale(self)`: 重置到原始缩放
|
||
- `pulse_once(self)`: 执行一次脉冲缩放
|
||
- `on_destroy(self)`: 脚本销毁时调用
|
||
|
||
### 15. `scripts/test_quick_script.py`
|
||
- **功能**: 测试快速脚本示例
|
||
- **类**:
|
||
- `TestQuickScript`: 测试快速脚本类,继承自ScriptBase
|
||
- **方法**:
|
||
- `__init__(self)`: 初始化脚本
|
||
- `start(self)`: 脚本开始时调用
|
||
- `update(self, dt)`: 每帧更新
|
||
- `on_destroy(self)`: 脚本销毁时调用
|
||
|
||
### 16. `scripts/TestMover.py`
|
||
- **功能**: 测试移动脚本
|
||
- **类**:
|
||
- `Testmover`: 测试移动脚本类,继承自ScriptBase
|
||
- **方法**:
|
||
- `__init__(self)`: 初始化移动参数
|
||
- `start(self)`: 脚本开始时调用
|
||
- `update(self, dt)`: 每帧更新,实现移动效果
|
||
- `on_destroy(self)`: 脚本销毁时调用
|
||
|
||
### 17. `scripts/TestRotator.py`
|
||
- **功能**: 测试旋转脚本
|
||
- **类**:
|
||
- `Testrotator`: 测试旋转脚本类,继承自ScriptBase
|
||
- **方法**:
|
||
- `__init__(self)`: 初始化脚本
|
||
- `start(self)`: 脚本开始时调用
|
||
- `update(self, dt)`: 每帧更新
|
||
- `on_destroy(self)`: 脚本销毁时调用
|
||
|
||
### 18. `scripts/TestScaler.py`
|
||
- **功能**: 测试缩放脚本
|
||
- **类**:
|
||
- `Testscaler`: 测试缩放脚本类,继承自ScriptBase
|
||
- **方法**:
|
||
- `__init__(self)`: 初始化脚本
|
||
- `start(self)`: 脚本开始时调用
|
||
- `update(self, dt)`: 每帧更新
|
||
- `on_destroy(self)`: 脚本销毁时调用
|
||
|
||
## 2.7 RenderPipelineFile模块
|
||
|
||
### 1. RenderPipelineFile根目录文件
|
||
|
||
**文件**: __init__.py
|
||
- **功能**: Python包初始化文件
|
||
- **类**:
|
||
- 无
|
||
- **方法**:
|
||
- 无
|
||
|
||
**文件**: README.md
|
||
- **功能**: 项目说明文档,包含项目介绍、特性列表和使用说明
|
||
- **类**:
|
||
- 无
|
||
- **方法**:
|
||
- 无
|
||
|
||
**文件**: setup.py
|
||
- **功能**: 安装和配置脚本,负责编译原生模块、生成必要的资源文件和配置渲染管线环境
|
||
- **类**:
|
||
- 无
|
||
- **方法**:
|
||
- `parse_cmd_args()`: 解析命令行参数
|
||
- `color()`: 为字符串着色
|
||
- `error()`: 打印错误信息并退出程序
|
||
- `print_step()`: 打印新章节
|
||
- `ask_for_troubleshoot()`: 询问是否打开故障排除页面
|
||
- `exec_python_file()`: 执行Python文件并检查返回值
|
||
- `extract_gz_files()`: 递归解压给定路径中的所有gz文件
|
||
- `check_file_exists()`: 检查给定文件是否存在
|
||
- `ask_download_samples()`: 询问用户是否要下载示例
|
||
- `get_user_choice()`: 向用户提出布尔问题
|
||
- `write_flag()`: 写入二进制标志
|
||
- `check_cmake()`: 检查是否安装了cmake
|
||
- `check_panda_version()`: 检查Panda3D版本是否是最新的
|
||
- `check_panda_rplight()`: 检查Panda3D是否提供rpcore原生模块
|
||
- `setup()`: 主设置例程
|
||
|
||
**文件**: start_daytime_editor.py
|
||
- **功能**: 启动日间编辑器脚本,用于运行时间ofday编辑器
|
||
- **类**:
|
||
- 无
|
||
- **方法**:
|
||
- 无
|
||
|
||
**文件**: start_plugin_configurator.py
|
||
- **功能**: 启动插件配置器脚本,用于运行插件配置工具
|
||
- **类**:
|
||
- 无
|
||
- **方法**:
|
||
- 无
|
||
|
||
### 2. RenderPipelineFile/config目录
|
||
|
||
**文件**: pipeline.yaml
|
||
- **功能**: 渲染管线基础配置文件,包含管线内部组件的基本设置
|
||
- **配置项**:
|
||
- `pipeline.display_debugger`: 控制是否显示屏幕调试器
|
||
- `pipeline.advanced_debugging_info`: 控制显示的调试信息详细程度
|
||
- `pipeline.use_r11_g11_b10`: 是否使用GL_R11F_G11F_B10F纹理格式节省内存和带宽
|
||
- `pipeline.resolution_scale`: 渲染分辨率缩放因子
|
||
- `pipeline.reference_mode`: 是否以参考模式渲染
|
||
- `lighting.culling_grid_size_x/y`: 光照剔除网格大小
|
||
- `lighting.culling_grid_slices`: 视锥体分割片数
|
||
- `lighting.culling_max_distance`: 光照剔除最大距离
|
||
- `lighting.culling_slice_width`: 剔除切片宽度
|
||
- `lighting.max_lights_per_cell`: 每个单元格最大光源数
|
||
- `shadows.atlas_size`: 全局阴影图集大小
|
||
- `shadows.max_updates`: 每帧最大阴影更新数
|
||
- `shadows.max_update_distance`: 阴影更新最大距离
|
||
|
||
**文件**: plugins.yaml
|
||
- **功能**: 渲染管线插件配置文件,包含启用的插件列表和各插件的配置参数
|
||
- **配置项**:
|
||
- `enabled`: 启用的插件列表
|
||
- `overrides`: 各插件的具体配置参数
|
||
|
||
**文件**: stages.yaml
|
||
- **功能**: 控制所有渲染阶段的执行顺序
|
||
- **配置项**:
|
||
- `global_stage_order`: 全局渲染阶段执行顺序列表
|
||
|
||
**文件**: debugging.yaml
|
||
- **功能**: 调试模式配置文件,包含所有可用的调试模式
|
||
- **配置项**:
|
||
- `render_modes`: 渲染模式列表
|
||
|
||
**文件**: panda3d-config.prc
|
||
- **功能**: Panda3D基础配置文件,用于配置Panda3D的基本设置
|
||
- **配置项**:
|
||
- 开发选项
|
||
- 生产选项
|
||
- 杂项设置
|
||
- OpenGL/性能设置
|
||
|
||
**文件**: task-scheduler.yaml
|
||
- **功能**: 任务调度配置文件,控制每帧允许运行的任务
|
||
- **配置项**:
|
||
- `frame_cycles`: 帧循环任务调度配置
|
||
|
||
### 3. RenderPipelineFile/data目录
|
||
|
||
**目录**: builtin_models/
|
||
- **功能**: 内置模型资源目录
|
||
- **子目录**:
|
||
- `skybox/`: 天空盒模型
|
||
|
||
**目录**: default_cubemap/
|
||
- **功能**: 默认立方体贴图资源目录
|
||
- **子目录**:
|
||
- `source/`: 源文件目录
|
||
- `cubemap.txo.pz`: 立方体贴图文件
|
||
- `source_2/`: 源文件目录2
|
||
- **文件**:
|
||
- `cubemap.txo.pz`: 立方体贴图文件
|
||
- `filter.compute.glsl`: 过滤计算着色器
|
||
- `filter.py`: 过滤脚本,用于过滤立方体贴图
|
||
- **类**:
|
||
- `CubeMapFilter`: 立方体贴图过滤器类
|
||
- `__init__()`: 初始化立方体贴图过滤器
|
||
- `load_settings()`: 加载设置
|
||
- `filter()`: 执行过滤操作
|
||
- `_make_temp_buffer()`: 创建临时缓冲区
|
||
- `_make_temp_target()`: 创建临时目标
|
||
- `_make_copy_target()`: 创建复制目标
|
||
|
||
**目录**: empty_textures/
|
||
- **功能**: 空纹理资源目录
|
||
- **文件**:
|
||
- `empty_basecolor.png`: 空基础颜色纹理
|
||
- `empty_normal.png`: 空法线纹理
|
||
- `empty_roughness.png`: 空粗糙度纹理
|
||
- `empty_specular.png`: 空镜面反射纹理
|
||
- `README.md`: 说明文档
|
||
|
||
**目录**: environment_brdf/
|
||
- **功能**: 环境BRDF资源目录
|
||
- **子目录**:
|
||
- `res/`: 资源目录
|
||
- `slices/`: 切片目录
|
||
- `slices_coat/`: 涂层切片目录
|
||
- `slices_metal/`: 金属切片目录
|
||
- **文件**:
|
||
- `generate_reference.py`: 生成参考脚本
|
||
- **函数**:
|
||
- `main()`: 主函数
|
||
- `generate_reference()`: 生成参考函数
|
||
- `run_mitsuba.bat`: Mitsuba运行脚本
|
||
|
||
**目录**: film_grain/
|
||
- **功能**: 胶片颗粒资源目录
|
||
- **文件**:
|
||
- `generate.py`: 生成脚本
|
||
- **函数**:
|
||
- `main()`: 主函数
|
||
- `generate_grain_texture()`: 生成颗粒纹理函数
|
||
- `grain.compute.glsl`: 颗粒计算着色器
|
||
- `grain.txo.pz`: 颗粒纹理文件
|
||
|
||
**目录**: font/
|
||
- **功能**: 字体资源目录
|
||
- **文件**: 包含Roboto字体系列的各种样式和粗细版本
|
||
- `roboto-LICENSE.txt`: 字体许可证
|
||
|
||
**目录**: gui/
|
||
- **功能**: GUI资源目录
|
||
- **文件**: 包含各种GUI元素的纹理和图标资源
|
||
|
||
**目录**: ies_profiles/
|
||
- **功能**: IES光照配置文件目录
|
||
- **文件**: 包含多种光照配置文件,如area_light.ies、bollard.ies等
|
||
- `PREVIEWS.jpg`: 预览图片
|
||
- `README.md`: 说明文档
|
||
|
||
**目录**: Materials/
|
||
- **功能**: 材质资源目录
|
||
- **文件**:
|
||
- `GroundMaterial.yaml`: 地面材质配置
|
||
|
||
**目录**: panda3d_patches/
|
||
- **功能**: Panda3D补丁目录
|
||
- **文件**:
|
||
- `prev-model-view-matrix-part2.diff`: 模型视图矩阵补丁2
|
||
- `prev-model-view-matrix.diff`: 模型视图矩阵补丁
|
||
- `README.md`: 说明文档
|
||
|
||
**目录**: scripts/
|
||
- **功能**: 脚本资源目录
|
||
- **文件**:
|
||
- `example_script.py`: 示例脚本
|
||
- **函数**:
|
||
- `main()`: 主函数
|
||
|
||
**目录**: setup/
|
||
- **功能**: 安装设置资源目录
|
||
- **文件**:
|
||
- `check_requirements.py`: 检查依赖脚本
|
||
- **函数**:
|
||
- `check_requirements()`: 检查依赖函数
|
||
- `main()`: 主函数
|
||
|
||
**文件**: generate_txo_files.py
|
||
- **功能**: TXO文件生成脚本,将管线资源转换为TXO文件以加速加载
|
||
- **类**:
|
||
- 无
|
||
- **方法**:
|
||
- 无
|
||
|
||
**文件**: install.flag
|
||
- **功能**: 安装标志文件,标识渲染管线是否已安装
|
||
|
||
### 4. RenderPipelineFile/effects目录
|
||
|
||
**文件**: basic_instancing.yaml
|
||
- **功能**: 基础实例化效果定义文件
|
||
|
||
**文件**: debug_metallic.yaml
|
||
- **功能**: 金属度调试效果定义文件
|
||
|
||
**文件**: debug_roughness.yaml
|
||
- **功能**: 粗糙度调试效果定义文件
|
||
|
||
**文件**: default.yaml
|
||
- **功能**: 默认效果定义文件,用于所有未覆盖的对象
|
||
|
||
**文件**: material_blend4.yaml
|
||
- **功能**: 四材质混合效果定义文件
|
||
|
||
**文件**: metallic_only.yaml
|
||
- **功能**: 仅金属度效果定义文件
|
||
|
||
**文件**: pbr_additive_metallic.yaml
|
||
- **功能**: PBR附加金属度效果定义文件
|
||
|
||
**文件**: pbr_direct_metallic.yaml
|
||
- **功能**: PBR直接金属度效果定义文件
|
||
|
||
**文件**: pbr_direct_roughness.yaml
|
||
- **功能**: PBR直接粗糙度效果定义文件
|
||
|
||
**文件**: pbr_extended.yaml
|
||
- **功能**: 扩展PBR效果定义文件,支持额外的纹理类型
|
||
|
||
**文件**: pbr_with_emission.yaml
|
||
- **功能**: 带自发光的PBR效果定义文件
|
||
|
||
**文件**: pbr_with_metallic.yaml
|
||
- **功能**: 带金属度的PBR效果定义文件
|
||
|
||
**文件**: pbr_with_normal.yaml
|
||
- **功能**: 带法线贴图的PBR效果定义文件
|
||
|
||
**文件**: pbr_with_roughness.yaml
|
||
- **功能**: 带粗糙度的PBR效果定义文件
|
||
|
||
**文件**: pbr_with_textures.yaml
|
||
- **功能**: 带纹理的PBR效果定义文件
|
||
|
||
**文件**: roughness_only.yaml
|
||
- **功能**: 仅粗糙度效果定义文件
|
||
|
||
**文件**: simple_texture_test.yaml
|
||
- **功能**: 简单纹理测试效果定义文件
|
||
|
||
**文件**: simple_transparent.yaml
|
||
- **功能**: 简单透明效果定义文件
|
||
|
||
**文件**: skybox.yaml
|
||
- **功能**: 天空盒效果定义文件
|
||
|
||
**文件**: terrain-effect.yaml
|
||
- **功能**: 地形效果定义文件
|
||
|
||
**文件**: test_metallic_debug.yaml
|
||
- **功能**: 金属度调试测试效果定义文件
|
||
|
||
**文件**: test_roughness_debug.yaml
|
||
- **功能**: 粗糙度调试测试效果定义文件
|
||
|
||
### 5. RenderPipelineFile/rpcore目录
|
||
|
||
**文件**: __init__.py
|
||
- **功能**: rpcore模块初始化文件,导出核心类
|
||
- **类**:
|
||
- `RenderPipeline`: 渲染管线主类
|
||
- `SpotLight`: 聚光灯类
|
||
- `PointLight`: 点光源类
|
||
- **方法**:
|
||
- `set_shader_inputs()`: 为较旧版本的Panda3D添加set_shader_inputs函数
|
||
|
||
**文件**: render_pipeline.py
|
||
- **功能**: 渲染管线主类,组合所有组件形成工作系统
|
||
- **类**:
|
||
- `RenderPipeline`: 渲染管线主类
|
||
- **属性**:
|
||
- `pipeline`: 管线实例
|
||
- `mount_mgr`: 挂载管理器
|
||
- `settings`: 管线设置
|
||
- `tag_mgr`: 标签状态管理器
|
||
- `plugin_mgr`: 插件管理器
|
||
- `stage_mgr`: 阶段管理器
|
||
- `light_mgr`: 光源管理器
|
||
- `daytime_mgr`: 日间管理器
|
||
- `common_resources`: 常用资源
|
||
- **方法**:
|
||
- `__init__()`: 创建新的管线实例
|
||
- `load_settings()`: 从给定文件名加载管线配置
|
||
- `reload_shaders()`: 重新加载所有着色器
|
||
- `_apply_custom_shaders()`: 重新应用用户自定义的着色器
|
||
- `pre_showbase_init()`: 设置所有需要在showbase初始化前设置的管线设置和配置
|
||
- `create()`: 创建管线并设置所有缓冲区
|
||
- `set_loading_screen_image()`: 设置使用默认加载屏幕
|
||
- `add_light()`: 添加新光源到渲染光源中
|
||
- `remove_light()`: 移除之前附加的光源
|
||
- `load_ies_profile()`: 从给定文件名加载IES配置文件
|
||
- `_internal_set_effect()`: 为给定对象设置效果
|
||
- `set_effect()`: 设置效果(内部_set_effect的包装)
|
||
- `add_environment_probe()`: 构造新环境探针并返回句柄
|
||
- `prepare_scene()`: 准备给定场景,转换panda灯光为渲染管线灯光
|
||
- `_create_managers()`: 创建所有管理器和实例
|
||
- `_analyze_system()`: 打印系统使用信息
|
||
- `_initialize_managers()`: 初始化所有管理器
|
||
- `_init_debugger()`: 初始化基于GUI的调试器
|
||
- `_init_globals()`: 初始化所有全局绑定
|
||
- `_set_default_effect()`: 设置默认效果
|
||
- `_adjust_camera_settings()`: 设置默认相机设置
|
||
- `_compute_render_resolution()`: 计算内部使用的渲染分辨率
|
||
- `_init_showbase()`: 初始化给定的showbase对象
|
||
- `_init_bindings()`: 初始化任务和按键绑定
|
||
- `_handle_window_event()`: 检查窗口事件
|
||
- `_clear_state_cache()`: 清除状态缓存任务
|
||
- `_manager_update_task()`: 更新任务,在渲染前更新所有管理器
|
||
- `_update_inputs_and_stages()`: 每帧更新常用输入
|
||
- `_plugin_pre_render_update()`: 渲染前更新插件的任务
|
||
- `_plugin_post_render_update()`: 渲染后更新插件的任务
|
||
- `_create_common_defines()`: 创建常用着色器配置定义
|
||
- `_create_default_skybox()`: 返回默认天空盒
|
||
- `_check_version()`: 检查所需Panda3D版本是否满足
|
||
- `_init_common_stages()`: 初始化常用阶段
|
||
- `_get_serialized_material_name()`: 返回可序列化的材质名称
|
||
- `export_materials()`: 导出当前场景中所有材质的列表
|
||
- `update_serialized_material()`: 从给定序列化材质更新材质
|
||
|
||
**文件**: light_manager.py
|
||
- **功能**: 光源管理器,InternalLightManager的包装器,提供额外功能
|
||
- **类**:
|
||
- `LightManager`: 光源管理器类
|
||
- **属性**:
|
||
- `pipeline`: 管线实例
|
||
- `internal_mgr`: 内部光源管理器
|
||
- `cmd_queue`: GPU命令队列
|
||
- `shadow_manager`: 阴影管理器
|
||
- `tile_size`: 瓦片大小
|
||
- `num_tiles`: 瓦片数量
|
||
- `total_tiles`: 总瓦片数
|
||
- `num_lights`: 光源数量
|
||
- `num_shadow_sources`: 阴影源数量
|
||
- `shadow_atlas_coverage`: 阴影图集覆盖率
|
||
- `img_light_data`: 光源数据图像
|
||
- `img_source_data`: 阴影源数据图像
|
||
- `pta_max_light_index`: 最大光源索引PTA
|
||
- **方法**:
|
||
- `__init__()`: 构造光源管理器
|
||
- `add_light()`: 添加新光源
|
||
- `remove_light()`: 移除光源
|
||
- `update()`: 主更新方法处理GPU命令
|
||
- `reload_shaders()`: 重新加载所有分配的着色器
|
||
- `compute_tile_size()`: 计算屏幕上 tile 数量
|
||
- `init_command_queue()`: 初始化命令队列
|
||
- `init_shadow_manager()`: 初始化阴影管理器
|
||
- `init_shadows()`: 初始化阴影
|
||
- `init_internal_manager()`: 创建光源存储管理器和光源数据缓冲区
|
||
- `init_stages()`: 初始化光照所需的所有阶段
|
||
- `init_defines()`: 初始化常用定义
|
||
|
||
**文件**: effect.py
|
||
- **功能**: 表示已编译效果的实例,可以从文件加载
|
||
- **类**:
|
||
- `Effect`: 效果类
|
||
- **属性**:
|
||
- `effect_id`: 效果ID
|
||
- `filename`: 文件名
|
||
- `effect_name`: 效果名称
|
||
- `effect_hash`: 效果哈希
|
||
- **方法**:
|
||
- `load()`: 从给定文件名加载具有指定选项的效果
|
||
- `_generate_hash()`: 为效果生成唯一哈希
|
||
- `__init__()`: 构造新的空效果
|
||
- `get_option()`: 通过名称返回给定选项值
|
||
- `set_options()`: 设置效果选项,覆盖默认选项
|
||
- `do_load()`: 从给定文件名加载效果的内部方法
|
||
- `get_shader_obj()`: 返回给定渲染通道的编译着色器对象句柄
|
||
- `_convert_filename_to_name()`: 从文件名构造效果名称
|
||
- `_parse_content()`: 从yaml对象构造效果的内部方法
|
||
- `_parse_shader_template()`: 解析片段模板
|
||
- `_construct_shader_from_data()`: 从给定数据集构造着色器
|
||
- `_process_shader_template()`: 从给定着色器源位置和代码注入定义生成编译着色器对象
|
||
|
||
**文件**: render_target.py
|
||
- **功能**: 渲染目标库,提供在Panda3D中轻松设置缓冲区的函数
|
||
- **类**:
|
||
- `RenderTarget`: 渲染目标类
|
||
- **属性**:
|
||
- `engine`: 图形引擎
|
||
- `debug_name`: 调试名称
|
||
- `support_transparency`: 支持透明度
|
||
- `create_default_region`: 创建默认区域
|
||
- `sort`: 排序值
|
||
- `_targets`: 目标字典
|
||
- `_color_bits`: 颜色位数
|
||
- `_aux_bits`: 辅助位数
|
||
- `_aux_count`: 辅助计数
|
||
- `_depth_bits`: 深度位数
|
||
- `_size`: 尺寸
|
||
- `_size_constraint`: 尺寸约束
|
||
- `_source_window`: 源窗口
|
||
- `_source_region`: 源区域
|
||
- `_active`: 活动状态
|
||
- `_internal_buffer`: 内部缓冲区
|
||
- **方法**:
|
||
- `__init__()`: 初始化渲染目标
|
||
- `add_color_attachment()`: 添加新的颜色附件
|
||
- `add_depth_attachment()`: 添加深度附件
|
||
- `add_aux_attachment()`: 添加新的辅助附件
|
||
- `add_aux_attachments()`: 添加n个新的辅助附件
|
||
- `size`: 设置渲染目标大小的setter属性
|
||
- `active`: 返回目标是否当前处于活动状态的属性
|
||
- `active.setter`: 设置目标是否处于活动状态
|
||
- `color_tex`: 返回颜色附件(如果存在)
|
||
- `depth_tex`: 返回深度附件(如果存在)
|
||
- `aux_tex`: 返回辅助纹理列表
|
||
- `set_shader_input()`: 设置目标可用的着色器输入
|
||
- `set_shader_inputs()`: 设置目标可用的着色器输入
|
||
- `shader`: 设置目标上的着色器的setter属性
|
||
- `internal_buffer`: 返回内部GraphicsBuffer对象句柄的属性
|
||
- `targets`: 返回附件字典的属性
|
||
- `region`: 返回内部使用的PostProcessRegion的属性
|
||
- `prepare_render()`: 准备渲染场景
|
||
- `prepare_buffer()`: 准备目标以渲染到离屏缓冲区
|
||
- `present_on_screen()`: 准备目标以在主窗口上渲染
|
||
- `remove()`: 删除此缓冲区,恢复之前的状态
|
||
- `set_clear_color()`: 设置清除颜色
|
||
- `instance_count`: 设置实例计数的setter属性
|
||
- `_create_buffer()`: 创建缓冲区对象的内部方法
|
||
- `_compute_size_from_constraint()`: 从目标大小约束计算实际大小(以像素为单位)
|
||
- `_setup_textures()`: 准备所有绑定的纹理
|
||
- `_make_properties()`: 创建窗口和缓冲区属性
|
||
- `_create()`: 创建内部使用的缓冲区
|
||
- `consider_resize()`: 检查目标是否需要调整大小,如果需要则执行调整大小
|
||
- `setter`: 仅设置属性的装饰器类
|
||
|
||
**文件**: rpobject.py
|
||
- **功能**: 渲染管线中每个对象的基类,提供调试、警告、错误和致命函数
|
||
- **类**:
|
||
- `RPObject`: 渲染管线对象基类
|
||
- **属性**:
|
||
- `_debug_name`: 调试名称
|
||
- `_debug_color`: 调试颜色
|
||
- **方法**:
|
||
- `set_output_level()`: 设置输出级别
|
||
- `global_debug()`: 从静态上下文打印调试消息
|
||
- `global_warn()`: 从静态上下文打印警告
|
||
- `global_error()`: 从静态上下文打印错误
|
||
- `__init__()`: 用给定名称初始化RPObject
|
||
- `_set_debug_color()`: 设置用于输出调试消息的颜色
|
||
- `debug()`: 输出调试消息
|
||
- `warn()`: 输出警告消息
|
||
- `error()`: 输出错误消息
|
||
- `fatal()`: 输出致命错误消息并退出程序
|
||
- `__repr__()`: 表示此对象
|
||
|
||
**文件**: render_stage.py
|
||
- **功能**: 所有渲染阶段的抽象基类
|
||
- **类**:
|
||
- `RenderStage`: 渲染阶段基类
|
||
- **属性**:
|
||
- `stage_id`: 阶段ID
|
||
- `required_inputs`: 必需的输入
|
||
- `required_pipes`: 必需的管道
|
||
- `produced_inputs`: 生成的输入
|
||
- `produced_pipes`: 生成的管道
|
||
- `produced_defines`: 生成的定义
|
||
- `disabled`: 禁用状态
|
||
- `_pipeline`: 管线实例
|
||
- `_active`: 活动状态
|
||
- `_targets`: 目标字典
|
||
- **方法**:
|
||
- `__init__()`: 创建新的渲染阶段
|
||
- `create()`: 设置阶段并创建管道
|
||
- `reload_shaders()`: 设置所有需要的着色器
|
||
- `set_shader_input()`: 在所有阶段设置着色器输入
|
||
- `set_shader_inputs()`: 在所有阶段设置着色器输入
|
||
- `update()`: 每帧调用的更新方法
|
||
- `active`: 属性,返回所有目标是否处于活动状态
|
||
- `active.setter`: 启用或禁用此阶段
|
||
- `create_target()`: 创建新的渲染目标并绑定到此阶段
|
||
- `remove_target()`: 移除之前注册的目标
|
||
- `load_shader()`: 从给定参数加载着色器
|
||
- `load_plugin_shader()`: 从插件目录加载着色器
|
||
- `handle_window_resize()`: 处理窗口大小调整
|
||
- `set_dimensions()`: 设置所有目标的尺寸
|
||
- `_get_shader_handle()`: 返回着色器对象句柄
|
||
- `_get_plugin_id()`: 返回创建此阶段的插件ID
|
||
|
||
**文件**: loader.py
|
||
- **功能**: 管线使用的通用加载器类,所有资产加载都在这里进行
|
||
- **类**:
|
||
- `RPLoader`: 资产加载器类
|
||
- **方法**:
|
||
- `load_texture()`: 从磁盘加载2D纹理
|
||
- `load_cube_map()`: 从磁盘加载立方体贴图
|
||
- `load_3d_texture()`: 从磁盘加载3D纹理
|
||
- `load_font()`: 从磁盘加载字体
|
||
- `load_shader()`: 从磁盘加载着色器
|
||
- `load_model()`: 从磁盘加载模型
|
||
- `load_sliced_3d_texture()`: 从给定文件名和尺寸加载纹理
|
||
- `timed_loading_operation`: 同步加载操作的上下文管理器类
|
||
- **方法**:
|
||
- `__init__()`: 初始化加载操作
|
||
- `__enter__()`: 进入上下文
|
||
- `__exit__()`: 退出上下文
|
||
|
||
**文件**: globals.py
|
||
- **功能**: 存储应用程序广泛使用的全局变量的单例类
|
||
- **类**:
|
||
- `Globals`: 全局变量类
|
||
- **属性**:
|
||
- `base`: ShowBase实例
|
||
- `render`: 渲染节点
|
||
- `clock`: 全局时钟
|
||
- `font`: 字体
|
||
- `resolution`: 分辨率
|
||
- `native_resolution`: 原生分辨率
|
||
- **方法**:
|
||
- `load()`: 从给定的showbase加载全局变量
|
||
|
||
**文件**: mount_manager.py
|
||
- **功能**: 挂载管线运行所需的目录
|
||
- **类**:
|
||
- `MountManager`: 挂载管理器类
|
||
- **属性**:
|
||
- `_pipeline`: 管线实例
|
||
- `_base_path`: 基础路径
|
||
- `_lock_file`: 锁文件
|
||
- `_model_paths`: 模型路径
|
||
- `_write_path`: 写入路径
|
||
- `_mounted`: 挂载状态
|
||
- `_do_cleanup`: 清理标志
|
||
- `_config_dir`: 配置目录
|
||
- **方法**:
|
||
- `__init__()`: 创建新的挂载管理器
|
||
- `write_path`: 返回先前设置的写入路径或None
|
||
- `write_path.setter`: 设置生成文件的可写目录
|
||
- `base_path`: 返回管线的基本路径
|
||
- `base_path.setter`: 设置基本着色器和模型所在路径
|
||
- `config_dir`: 返回先前设置的配置目录或None
|
||
- `config_dir.setter`: 设置配置目录路径
|
||
- `do_cleanup`: 返回挂载管理器是否会在应用程序停止运行后尝试清理生成的文件
|
||
- `do_cleanup.setter`: 设置是否在应用程序停止后清理临时文件夹
|
||
- `get_lock()`: 检查是否是唯一运行的实例
|
||
- `_find_basepath()`: 尝试通过查看此文件的位置找到管线基本路径
|
||
- `_is_pid_running()`: 检查pid是否仍在运行
|
||
- `_write_lock()`: 将当前进程id写入instance.pid锁文件
|
||
- `_try_remove()`: 尝试删除指定文件名
|
||
- `_on_exit_cleanup()`: 应用程序退出时调用
|
||
- `is_mounted`: 返回挂载管理器是否已通过调用mount()挂载
|
||
- `mount()`: 初始化VFS挂载
|
||
- `unmount()`: 卸载VFS
|
||
|
||
**文件**: stage_manager.py
|
||
- **功能**: 管理所有渲染阶段的顺序,同时连接不同的管道、输入、UBO和定义
|
||
- **类**:
|
||
- `StageManager`: 阶段管理器类
|
||
- **属性**:
|
||
- `stages`: 阶段列表
|
||
- `inputs`: 输入字典
|
||
- `pipes`: 管道字典
|
||
- `input_blocks`: 输入块列表
|
||
- `previous_pipes`: 前一帧管道字典
|
||
- `future_bindings`: 未来绑定列表
|
||
- `defines`: 定义字典
|
||
- `pipeline`: 管线实例
|
||
- `created`: 创建状态
|
||
- **方法**:
|
||
- `__init__()`: 构造阶段管理器
|
||
- `_load_stage_order()`: 从stages.yaml配置文件加载所有阶段的顺序
|
||
- `add_stage()`: 添加新阶段
|
||
- `get_stage()`: 返回实例化阶段的句柄
|
||
- `_prepare_stages()`: 通过删除禁用的阶段和排序阶段来准备所有阶段
|
||
- `_bind_pipes_to_stage()`: 在阶段上设置所有需要的管道
|
||
- `_bind_inputs_to_stage()`: 将所有输入包括通用输入绑定到给定阶段
|
||
- `_register_stage_result()`: 注册给定阶段生成的所有管道、输入和定义
|
||
- `_create_previous_pipes()`: 为每个上一帧的管道创建目标
|
||
- `_apply_future_bindings()`: 应用所有未来绑定
|
||
- `setup()`: 设置阶段
|
||
- `reload_shaders()`: 将着色器设置为所有阶段并生成着色器配置
|
||
- `update()`: 调用每个已注册阶段的更新方法
|
||
- `handle_window_resize()`: 窗口调整大小时调用的方法
|
||
- `write_autoconfig()`: 基于不同阶段指定的定义编写着色器自动配置
|
||
|
||
**文件**: image.py
|
||
- **功能**: Panda3D的Texture类的包装器,跟踪所有图像并注册/注销它们以及计算使用的内存
|
||
- **类**:
|
||
- `ImageFormatTypes`: 防止pylint错误的辅助类
|
||
- `Image`: 图像类
|
||
- **属性**:
|
||
- `REGISTERED_IMAGES`: 注册的图像列表
|
||
- `FORMAT_MAPPINGS`: 格式映射字典
|
||
- **方法**:
|
||
- `create_buffer()`: 创建新的缓冲区纹理
|
||
- `create_counter()`: 创建新的1x1 R32I纹理用作原子计数器
|
||
- `create_2d()`: 创建新的2D纹理
|
||
- `create_2d_array()`: 创建新的2D数组纹理
|
||
- `create_3d()`: 创建新的3D纹理
|
||
- `create_cube()`: 创建新的立方体贴图
|
||
- `create_cube_array()`: 创建新的立方体贴图数组
|
||
- `convert_texture_format()`: 将"RGBA8"等字符串转换为纹理类型和格式
|
||
- `__init__()`: 创建新图像的内部方法
|
||
- `__del__()`: 销毁图像
|
||
- `write()`: 将图像写入磁盘
|
||
|
||
**文件**: gpu_command_queue.py
|
||
- **功能**: GPU命令队列,用于将命令排队到GPU进行处理
|
||
- **类**:
|
||
- `GPUCommandQueue`: GPU命令队列类
|
||
- **属性**:
|
||
- `_pipeline`: 管线实例
|
||
- `_commands_per_frame`: 每帧命令数
|
||
- `_command_list`: 命令列表
|
||
- `_pta_num_commands`: 命令数量PTA
|
||
- `_data_texture`: 数据纹理
|
||
- `_command_target`: 命令目标
|
||
- `_commands`: 命令列表
|
||
- **方法**:
|
||
- `__init__()`: 构造GPU命令队列
|
||
- `clear_queue()`: 清除队列中的所有命令
|
||
- `command_list`: 返回命令列表句柄的属性
|
||
- `num_queued_commands`: 返回队列中命令数量的属性
|
||
- `num_processed_commands`: 返回已处理命令数量的属性
|
||
- `process_queue()`: 处理队列中的命令
|
||
- `reload_shaders()`: 重新加载着色器
|
||
- `register_input()`: 注册新的输入
|
||
- `_register_defines()`: 注册命令类型定义
|
||
- `_create_data_storage()`: 创建数据存储缓冲区
|
||
- `_create_command_target()`: 创建命令处理目标
|
||
|
||
**文件**: common_resources.py
|
||
- **功能**: 存储管线常用资源的类
|
||
- **类**:
|
||
- `CommonResources`: 常用资源类
|
||
- **属性**:
|
||
- `_pipeline`: 管线实例
|
||
- `_showbase`: ShowBase实例
|
||
- `_ptas`: PTA字典
|
||
- `_input_ubo`: 输入UBO
|
||
- **方法**:
|
||
- `__init__()`: 初始化常用资源
|
||
- `_load_fonts()`: 加载默认字体
|
||
- `_setup_inputs()`: 设置常用着色器输入
|
||
- `_load_textures()`: 加载常用纹理
|
||
- `_load_environment_cubemap()`: 加载环境立方体贴图
|
||
- `_load_prefilter_brdf()`: 加载预过滤BRDF
|
||
- `_load_skydome()`: 加载天空穹顶
|
||
- `load_default_skybox()`: 加载默认天空盒
|
||
- `write_config()`: 生成着色器配置
|
||
- `update()`: 更新常用资源
|
||
|
||
**目录**: gui/
|
||
- **功能**: GUI相关组件
|
||
- **文件**:
|
||
- `__init__.py`: 初始化文件
|
||
- `buffer_viewer.py`: 缓冲区查看器
|
||
- `checkbox_collection.py`: 复选框集合
|
||
- `checkbox.py`: 复选框组件
|
||
- `debugger.py`: 调试器
|
||
- `draggable_window.py`: 可拖拽窗口
|
||
- `error_message_display.py`: 错误信息显示
|
||
- `exposure_widget.py`: 曝光控件
|
||
- `fps_chart.py`: FPS图表
|
||
- `labeled_checkbox.py`: 带标签的复选框
|
||
- `loading_screen.py`: 加载屏幕
|
||
- `pipe_viewer.py`: 管道查看器
|
||
- `pixel_inspector.py`: 像素检查器
|
||
- `README.md`: 说明文档
|
||
- `render_mode_selector.py`: 渲染模式选择器
|
||
- `slider.py`: 滑块控件
|
||
- `sprite.py`: 精灵组件
|
||
- `text_node.py`: 文本节点
|
||
- `text.py`: 文本组件
|
||
- `texture_preview.py`: 纹理预览器
|
||
|
||
**目录**: native/
|
||
- **功能**: 原生C++模块接口
|
||
- **文件**:
|
||
- `__init__.py`: 初始化文件
|
||
- `source/`: C++源代码目录
|
||
- `.gitignore`: Git忽略文件
|
||
- `config.ini`: 配置文件
|
||
- `update_module_builder.py`: 模块构建器更新脚本
|
||
- `use_cxx.flag`: C++使用标志文件
|
||
|
||
**目录**: pluginbase/
|
||
- **功能**: 插件基础类
|
||
- **文件**:
|
||
- `__init__.py`: 初始化文件
|
||
- `base_plugin.py`: 插件基类
|
||
- `day_manager.py`: 日间管理器
|
||
- `day_setting_types.py`: 日间设置类型
|
||
- `manager.py`: 管理器
|
||
- `setting_types.py`: 设置类型
|
||
|
||
**目录**: pynative/
|
||
- **功能**: Python原生接口
|
||
- **文件**:
|
||
- `__init__.py`: 初始化文件
|
||
- `gpu_command_list.py`: GPU命令列表Python接口
|
||
- `gpu_command.py`: GPU命令Python接口
|
||
- `ies_dataset.py`: IES数据集Python接口
|
||
- `internal_light_manager.py`: 内部光源管理器Python接口
|
||
- `pointer_slot_storage.py`: 指针槽存储Python接口
|
||
- `pssm_camera_rig.py`: PSSM相机支架Python接口
|
||
- `README.md`: 说明文档
|
||
- `rp_light.py`: RP光源Python接口
|
||
- `rp_point_light.py`: RP点光源Python接口
|
||
- `rp_spot_light.py`: RP聚光灯Python接口
|
||
- `shadow_atlas.py`: 阴影图集Python接口
|
||
- `shadow_manager.py`: 阴影管理器Python接口
|
||
- `shadow_source.py`: 阴影源Python接口
|
||
- `tag_state_manager.py`: 标签状态管理器Python接口
|
||
|
||
**目录**: shader/
|
||
- **功能**: 着色器管理
|
||
- **子目录**:
|
||
- `ibl/`: 基于图像的光照着色器
|
||
- `includes/`: 包含文件
|
||
- `templates/`: 模板文件
|
||
|
||
**目录**: stages/
|
||
- **功能**: 渲染阶段实现
|
||
- **文件**:
|
||
- `__init__.py`: 初始化文件
|
||
- `ambient_stage.py`: 环境阶段
|
||
- `apply_lights_stage.py`: 应用光源阶段
|
||
- `collect_used_cells_stage.py`: 收集使用单元阶段
|
||
- `combine_velocity_stage.py`: 合并速度阶段
|
||
- `cull_lights_stage.py`: 剔除光源阶段
|
||
- `downscale_z_stage.py`: Z缓冲下采样阶段
|
||
- `final_stage.py`: 最终阶段
|
||
- `flag_used_cells_stage.py`: 标记使用单元阶段
|
||
- `gbuffer_stage.py`: G缓冲阶段
|
||
- `render_stage.py`: 渲染阶段基类
|
||
- **类**: `RenderStage`
|
||
- **方法**:
|
||
- `__init__()`: 创建新的渲染阶段
|
||
- `create()`: 设置阶段并创建管道
|
||
- `reload_shaders()`: 设置所有需要的着色器
|
||
- `set_shader_input()`: 在所有阶段设置着色器输入
|
||
- `set_shader_inputs()`: 在所有阶段设置着色器输入
|
||
- `update()`: 每帧调用的更新方法
|
||
- `create_target()`: 创建新的渲染目标并绑定到此阶段
|
||
- `remove_target()`: 移除之前注册的目标
|
||
- `load_shader()`: 从给定参数加载着色器
|
||
- `load_plugin_shader()`: 从插件目录加载着色器
|
||
- `handle_window_resize()`: 处理窗口大小调整
|
||
- `set_dimensions()`: 设置所有目标的尺寸
|
||
- `_get_shader_handle()`: 返回着色器对象句柄
|
||
- `_get_plugin_id()`: 返回创建此阶段的插件ID
|
||
- `active`: 属性,返回所有目标是否处于活动状态
|
||
- `active.setter`: 启用或禁用此阶段
|
||
- `shadow_stage.py`: 阴影阶段
|
||
- `update_previous_pipes_stage.py`: 更新前一管道阶段
|
||
- `upscale_stage.py`: 上采样阶段
|
||
|
||
**目录**: util/
|
||
- **功能**: 工具函数
|
||
- **文件**:
|
||
- `__init__.py`: 初始化文件
|
||
- `cubemap_filter.py`: 立方体贴图过滤器
|
||
- `display_shader_builder.py`: 显示着色器构建器
|
||
- `generic.py`: 通用工具函数
|
||
- `ies_profile_loader.py`: IES配置文件加载器
|
||
- `movement_controller.py`: 移动控制器
|
||
- `network_communication.py`: 网络通信
|
||
- `post_process_region.py`: 后期处理区域
|
||
- `shader_input_blocks.py`: 着色器输入块
|
||
- `smooth_connected_curve.py`: 平滑连接曲线
|
||
- `submodule_downloader.py`: 子模块下载器
|
||
- `task_scheduler.py`: 任务调度器
|
||
|
||
### 6. RenderPipelineFile/rpplugins目录
|
||
|
||
**文件**: __init__.py
|
||
- **功能**: rpplugins模块初始化文件
|
||
- **类**:
|
||
- 无
|
||
- **方法**:
|
||
- 无
|
||
|
||
**文件**: README.md
|
||
- **功能**: 插件目录说明文档
|
||
- **类**:
|
||
- 无
|
||
- **方法**:
|
||
- 无
|
||
|
||
**目录**: ao/
|
||
- **功能**: 环境光遮蔽插件
|
||
- **文件**:
|
||
- `__init__.py`: 初始化文件
|
||
- `shader/`: 着色器目录
|
||
- `ao_stage.py`: AO阶段
|
||
- `config.yaml`: 配置文件
|
||
- `plugin.py`: 插件主文件
|
||
- **类**: `Plugin`
|
||
- **属性**:
|
||
- `name`: 插件名称
|
||
- `author`: 插件作者
|
||
- `description`: 插件描述
|
||
- `version`: 插件版本
|
||
- **方法**:
|
||
- `on_stage_setup()`: 阶段设置回调
|
||
|
||
**目录**: bloom/
|
||
- **功能**: 泛光效果插件
|
||
- **文件**:
|
||
- `__init__.py`: 初始化文件
|
||
- `resources/`: 资源目录
|
||
- `shader/`: 着色器目录
|
||
- `bloom_stage.py`: 泛光阶段
|
||
- `config.yaml`: 配置文件
|
||
- `plugin.py`: 插件主文件
|
||
- **类**: `Plugin`
|
||
- **属性**:
|
||
- `name`: 插件名称
|
||
- `author`: 插件作者
|
||
- `description`: 插件描述
|
||
- `version`: 插件版本
|
||
- **方法**:
|
||
- `on_stage_setup()`: 阶段设置回调
|
||
- `on_pipeline_created()`: 管线创建回调
|
||
|
||
**目录**: clouds/
|
||
- **功能**: 云渲染插件
|
||
- **文件**:
|
||
- `__init__.py`: 初始化文件
|
||
- `resources/`: 资源目录
|
||
- `shader/`: 着色器目录
|
||
- `apply_clouds_stage.py`: 应用云阶段
|
||
- `cloud_voxel_stage.py`: 云体素阶段
|
||
- `config.yaml`: 配置文件
|
||
- `plugin.py`: 插件主文件
|
||
- **类**: `Plugin`
|
||
- **属性**:
|
||
- `name`: 插件名称
|
||
- `author`: 插件作者
|
||
- `description`: 插件描述
|
||
- `version`: 插件版本
|
||
- `required_plugins`: 必需插件
|
||
- **方法**:
|
||
- `on_stage_setup()`: 阶段设置回调
|
||
|
||
**目录**: color_correction/
|
||
- **功能**: 颜色校正插件
|
||
- **文件**:
|
||
- `__init__.py`: 初始化文件
|
||
- `resources/`: 资源目录
|
||
- `shader/`: 着色器目录
|
||
- `auto_exposure_stage.py`: 自动曝光阶段
|
||
- `color_correction_stage.py`: 颜色校正阶段
|
||
- `config.yaml`: 配置文件
|
||
- `manual_exposure_stage.py`: 手动曝光阶段
|
||
- `plugin.py`: 插件主文件
|
||
- **类**: `Plugin`
|
||
- **属性**:
|
||
- `name`: 插件名称
|
||
- `author`: 插件作者
|
||
- `description`: 插件描述
|
||
- `version`: 插件版本
|
||
- **方法**:
|
||
- `on_stage_setup()`: 阶段设置回调
|
||
|
||
**目录**: dof/
|
||
- **功能**: 景深效果插件
|
||
- **文件**:
|
||
- `__init__.py`: 初始化文件
|
||
- `shader/`: 着色器目录
|
||
- `config.yaml`: 配置文件
|
||
- `dof_stage.py`: 景深阶段
|
||
- `plugin.py`: 插件主文件
|
||
- **类**: `Plugin`
|
||
- **属性**:
|
||
- `name`: 插件名称
|
||
- `author`: 插件作者
|
||
- `description`: 插件描述
|
||
- `version`: 插件版本
|
||
- **方法**:
|
||
- `on_stage_setup()`: 阶段设置回调
|
||
- `on_pipeline_created()`: 管线创建回调
|
||
- `update_some_setting()`: 设置更新回调
|
||
|
||
**目录**: env_probes/
|
||
- **功能**: 环境探针插件
|
||
- **文件**:
|
||
- `__init__.py`: 初始化文件
|
||
- `shader/`: 着色器目录
|
||
- `apply_envprobes_stage.py`: 应用环境探针阶段
|
||
- `config.yaml`: 配置文件
|
||
- `cull_probes_stage.py`: 剔除探针阶段
|
||
- `environment_capture_stage.py`: 环境捕捉阶段
|
||
- `environment_probe.py`: 环境探针类
|
||
- `plugin.py`: 插件主文件
|
||
- **类**: `Plugin`
|
||
- **属性**:
|
||
- `name`: 插件名称
|
||
- `author`: 插件作者
|
||
- `description`: 插件描述
|
||
- `version`: 插件版本
|
||
- **方法**:
|
||
- `on_stage_setup()`: 阶段设置回调
|
||
|
||
**目录**: forward_shading/
|
||
- **功能**: 前向渲染插件
|
||
- **文件**:
|
||
- `__init__.py`: 初始化文件
|
||
- `shader/`: 着色器目录
|
||
- `config.yaml`: 配置文件
|
||
- `forward_stage.py`: 前向渲染阶段
|
||
- `plugin.py`: 插件主文件
|
||
- **类**: `Plugin`
|
||
- **属性**:
|
||
- `name`: 插件名称
|
||
- `author`: 插件作者
|
||
- `description`: 插件描述
|
||
- `version`: 插件版本
|
||
- **方法**:
|
||
- `on_stage_setup()`: 阶段设置回调
|
||
- `on_pipeline_created()`: 管线创建回调
|
||
|
||
**目录**: fxaa/
|
||
- **功能**: FXAA抗锯齿插件
|
||
- **文件**:
|
||
- `__init__.py`: 初始化文件
|
||
- `shader/`: 着色器目录
|
||
- `config.yaml`: 配置文件
|
||
- `fxaa_stage.py`: FXAA阶段
|
||
- `plugin.py`: 插件主文件
|
||
- **类**: `Plugin`
|
||
- **属性**:
|
||
- `name`: 插件名称
|
||
- `author`: 插件作者
|
||
- `description`: 插件描述
|
||
- `version`: 插件版本
|
||
- **方法**:
|
||
- `on_stage_setup()`: 阶段设置回调
|
||
|
||
**目录**: motion_blur/
|
||
- **功能**: 运动模糊插件
|
||
- **文件**:
|
||
- `__init__.py`: 初始化文件
|
||
- `shader/`: 着色器目录
|
||
- `config.yaml`: 配置文件
|
||
- `motion_blur_stage.py`: 运动模糊阶段
|
||
- `plugin.py`: 插件主文件
|
||
- **类**: `Plugin`
|
||
- **属性**:
|
||
- `name`: 插件名称
|
||
- `author`: 插件作者
|
||
- `description`: 插件描述
|
||
- `version`: 插件版本
|
||
- **方法**:
|
||
- `on_stage_setup()`: 阶段设置回调
|
||
|
||
**目录**: plugin_prefab/
|
||
- **功能**: 插件预制件
|
||
- **文件**:
|
||
- `__init__.py`: 初始化文件
|
||
- `resources/`: 资源目录
|
||
- `shader/`: 着色器目录
|
||
- `config.yaml`: 配置文件
|
||
- `demo_stage.py`: 演示阶段
|
||
- `plugin.py`: 插件主文件
|
||
- **类**: `Plugin`
|
||
- **属性**:
|
||
- `name`: 插件名称
|
||
- `author`: 插件作者
|
||
- `description`: 插件描述
|
||
- `version`: 插件版本
|
||
- **方法**:
|
||
- `on_stage_setup()`: 阶段设置回调
|
||
|
||
**目录**: pssm/
|
||
- **功能**: 平行分割阴影贴图插件
|
||
- **文件**:
|
||
- `__init__.py`: 初始化文件
|
||
- `shader/`: 着色器目录
|
||
- `config.yaml`: 配置文件
|
||
- `plugin.py`: 插件主文件
|
||
- **类**: `Plugin`
|
||
- **属性**:
|
||
- `name`: 插件名称
|
||
- `author`: 插件作者
|
||
- `description`: 插件描述
|
||
- `version`: 插件版本
|
||
- `required_plugins`: 必需插件
|
||
- **方法**:
|
||
- `on_stage_setup()`: 阶段设置回调
|
||
- `pssm_dist_shadow_stage.py`: PSSM距离阴影阶段
|
||
- `pssm_scene_shadow_stage.py`: PSSM场景阴影阶段
|
||
- `pssm_shadow_stage.py`: PSSM阴影阶段
|
||
- `pssm_stage.py`: PSSM阶段
|
||
|
||
**目录**: scattering/
|
||
- **功能**: 散射效果插件
|
||
- **文件**:
|
||
- `__init__.py`: 初始化文件
|
||
- `resources/`: 资源目录
|
||
- `shader/`: 着色器目录
|
||
- `config.yaml`: 配置文件
|
||
- `godray_stage.py`: 光线阶段
|
||
- `plugin.py`: 插件主文件
|
||
- **类**: `Plugin`
|
||
- **属性**:
|
||
- `name`: 插件名称
|
||
- `author`: 插件作者
|
||
- `description`: 插件描述
|
||
- `version`: 插件版本
|
||
- **方法**:
|
||
- `on_pipeline_created()`: 管线创建回调
|
||
- `on_stage_setup()`: 阶段设置回调
|
||
- `scattering_envmap_stage.py`: 散射环境贴图阶段
|
||
- `scattering_methods.py`: 散射方法
|
||
- `scattering_stage.py`: 散射阶段
|
||
|
||
**目录**: skin_shading/
|
||
- **功能**: 皮肤着色插件
|
||
- **文件**:
|
||
- `__init__.py`: 初始化文件
|
||
- `shader/`: 着色器目录
|
||
- `config.yaml`: 配置文件
|
||
- `plugin.py`: 插件主文件
|
||
- **类**: `Plugin`
|
||
- **属性**:
|
||
- `name`: 插件名称
|
||
- `author`: 插件作者
|
||
- `description`: 插件描述
|
||
- `version`: 插件版本
|
||
- **方法**:
|
||
- `on_stage_setup()`: 阶段设置回调
|
||
- `skin_shading_stage.py`: 皮肤着色阶段
|
||
|
||
**目录**: sky_ao/
|
||
- **功能**: 天空AO插件
|
||
- **文件**:
|
||
- `__init__.py`: 初始化文件
|
||
- `shader/`: 着色器目录
|
||
- `ao_stage.py`: AO阶段
|
||
- `capture_stage.py`: 捕捉阶段
|
||
- `config.yaml`: 配置文件
|
||
- `plugin.py`: 插件主文件
|
||
- **类**: `Plugin`
|
||
- **属性**:
|
||
- `name`: 插件名称
|
||
- `author`: 插件作者
|
||
- `description`: 插件描述
|
||
- `version`: 插件版本
|
||
- **方法**:
|
||
- `on_stage_setup()`: 阶段设置回调
|
||
|
||
**目录**: smaa/
|
||
- **功能**: SMAA抗锯齿插件
|
||
- **文件**:
|
||
- `__init__.py`: 初始化文件
|
||
- `resources/`: 资源目录
|
||
- `shader/`: 着色器目录
|
||
- `config.yaml`: 配置文件
|
||
- `jitters.py`: 抖动工具
|
||
- `LICENSE.txt`: 许可证文件
|
||
- `plugin.py`: 插件主文件
|
||
- **类**: `Plugin`
|
||
- **属性**:
|
||
- `name`: 插件名称
|
||
- `author`: 插件作者
|
||
- `description`: 插件描述
|
||
- `version`: 插件版本
|
||
- **方法**:
|
||
- `on_stage_setup()`: 阶段设置回调
|
||
- `smaa_stage.py`: SMAA阶段
|
||
|
||
**目录**: ssr/
|
||
- **功能**: 屏幕空间反射插件
|
||
- **文件**:
|
||
- `__init__.py`: 初始化文件
|
||
- `shader/`: 着色器目录
|
||
- `config.yaml`: 配置文件
|
||
- `plugin.py`: 插件主文件
|
||
- **类**: `Plugin`
|
||
- **属性**:
|
||
- `name`: 插件名称
|
||
- `author`: 插件作者
|
||
- `description`: 插件描述
|
||
- `version`: 插件版本
|
||
- **方法**:
|
||
- `on_stage_setup()`: 阶段设置回调
|
||
- `reload_shaders()`: 重载着色器回调
|
||
- `ssr_stage.py`: SSR阶段
|
||
|
||
**目录**: volumetrics/
|
||
- **功能**: 体积渲染插件
|
||
- **文件**:
|
||
- `__init__.py`: 初始化文件
|
||
- `shader/`: 着色器目录
|
||
- `config.yaml`: 配置文件
|
||
- `plugin.py`: 插件主文件
|
||
- **类**: `Plugin`
|
||
- **属性**:
|
||
- `name`: 插件名称
|
||
- `author`: 插件作者
|
||
- `description`: 插件描述
|
||
- `version`: 插件版本
|
||
- `required_plugins`: 必需插件
|
||
- **方法**:
|
||
- `on_stage_setup()`: 阶段设置回调
|
||
- `volumetrics_stage.py`: 体积渲染阶段
|
||
|
||
**目录**: vxgi/
|
||
- **功能**: VXGI全局光照插件
|
||
- **文件**:
|
||
- `__init__.py`: 初始化文件
|
||
- `shader/`: 着色器目录
|
||
- `config.yaml`: 配置文件
|
||
- `plugin.py`: 插件主文件
|
||
- **类**: `Plugin`
|
||
- **属性**:
|
||
- `name`: 插件名称
|
||
- `author`: 插件作者
|
||
- `description`: 插件描述
|
||
- `version`: 插件版本
|
||
- **方法**:
|
||
- `on_stage_setup()`: 阶段设置回调
|
||
- `voxelization_stage.py`: 体素化阶段
|
||
- `vxgi_stage.py`: VXGI阶段
|
||
|
||
### 7. RenderPipelineFile/toolkit目录
|
||
|
||
**目录**: bake_gi/
|
||
- **功能**: GI烘焙工具
|
||
- **文件**:
|
||
- `resources/`: 资源目录
|
||
- `bake.py`: 烘焙脚本
|
||
- **功能**: GI光照烘焙工具主程序
|
||
- **类**:
|
||
- 无
|
||
- **方法**:
|
||
- 主函数入口
|
||
- `display.py`: 显示脚本
|
||
- **功能**: 显示烘焙结果工具
|
||
- **类**:
|
||
- 无
|
||
- **方法**:
|
||
- 主函数入口
|
||
|
||
**目录**: day_time_editor/
|
||
- **功能**: 日间时间编辑器
|
||
- **文件**:
|
||
- `ui/`: UI目录
|
||
- **功能**: 用户界面资源文件
|
||
- `curve_widget.py`: 曲线控件
|
||
- **功能**: 时间曲线编辑控件
|
||
- **类**:
|
||
- `CurveWidget`: 曲线编辑控件类
|
||
- **方法**:
|
||
- 控件绘制和交互方法
|
||
- `main.py`: 主程序
|
||
- **功能**: 日间时间编辑器主程序
|
||
- **类**:
|
||
- `PointDialog`: 点插入对话框类
|
||
- `DayTimeEditor`: 日间时间编辑器主类
|
||
- **方法**:
|
||
- `setupUi()`: UI设置
|
||
- `_on_time_changed()`: 时间变化处理
|
||
- `_on_setting_selected()`: 设置选择处理
|
||
- `_insert_point()`: 插入点处理
|
||
- `_reset_settings()`: 重置设置处理
|
||
- `_update_tree_widgets()`: 更新树控件
|
||
- `_on_curve_edited()`: 曲线编辑处理
|
||
|
||
**目录**: import_sun_data/
|
||
- **功能**: 导入太阳数据工具
|
||
- **文件**:
|
||
- `import_data.py`: 导入数据脚本
|
||
- **功能**: 太阳数据导入工具
|
||
- **类**:
|
||
- 无
|
||
- **方法**:
|
||
- 数据解析和导入方法
|
||
- `README.md`: 说明文档
|
||
- **功能**: 工具使用说明
|
||
|
||
**目录**: material_editor/
|
||
- **功能**: 材质编辑器
|
||
- **文件**:
|
||
- `ui/`: UI目录
|
||
- **功能**: 用户界面资源文件
|
||
- `main.py`: 主程序
|
||
- **功能**: 材质编辑器主程序
|
||
- **类**:
|
||
- 无
|
||
- **方法**:
|
||
- 主程序入口和UI初始化
|
||
|
||
**目录**: pathtracing_reference/
|
||
- **功能**: 路径追踪参考
|
||
- **文件**:
|
||
- `config/`: 配置目录
|
||
- **功能**: 配置文件目录
|
||
- `res/`: 资源目录
|
||
- **功能**: 资源文件目录
|
||
- `batch_compare.py`: 批量比较脚本
|
||
- **功能**: 批量比较渲染结果
|
||
- **类**:
|
||
- 无
|
||
- **方法**:
|
||
- 批量比较处理方法
|
||
- `generate_difference.py`: 生成差异脚本
|
||
- **功能**: 生成渲染结果差异图像
|
||
- **类**:
|
||
- 无
|
||
- **方法**:
|
||
- 差异图像生成方法
|
||
- `get_brightness.py`: 获取亮度脚本
|
||
- **功能**: 获取图像亮度信息
|
||
- **类**:
|
||
- 无
|
||
- **方法**:
|
||
- 亮度计算方法
|
||
- `README.md`: 说明文档
|
||
- **功能**: 工具使用说明
|
||
- `run_mitsuba.bat`: Mitsuba运行脚本
|
||
- **功能**: 运行Mitsuba渲染器
|
||
- `run_renderpipeline.py`: 运行渲染管线脚本
|
||
- **功能**: 运行渲染管线进行对比测试
|
||
- **类**:
|
||
- 无
|
||
- **方法**:
|
||
- 渲染管线运行方法
|
||
|
||
**目录**: plugin_configurator/
|
||
- **功能**: 插件配置器
|
||
- **文件**:
|
||
- `ui/`: UI目录
|
||
- **功能**: 用户界面资源文件
|
||
- `main.py`: 主程序
|
||
- **功能**: 插件配置器主程序
|
||
- **类**:
|
||
- 无
|
||
- **方法**:
|
||
- 主程序入口和UI初始化
|
||
|
||
**目录**: poisson_disk_generator/
|
||
- **功能**: 泊松圆盘生成器
|
||
- **文件**:
|
||
- `source/`: 源代码目录
|
||
- **功能**: C++源代码目录
|
||
- `.gitignore`: Git忽略文件
|
||
- **功能**: Git忽略配置
|
||
- `config.ini`: 配置文件
|
||
- **功能**: 生成器配置文件
|
||
- `generate_poisson_disk.py`: 生成泊松圆盘脚本
|
||
- **功能**: 泊松圆盘生成工具
|
||
- **类**:
|
||
- 无
|
||
- **方法**:
|
||
- 圆盘生成方法
|
||
- `update_module_builder.py`: 更新模块构建器脚本
|
||
- **功能**: 更新模块构建器
|
||
- **类**:
|
||
- 无
|
||
- **方法**:
|
||
- 构建器更新方法
|
||
|
||
**目录**: render_service/
|
||
- **功能**: 渲染服务
|
||
- **文件**:
|
||
- `config/`: 配置目录
|
||
- **功能**: 服务配置文件目录
|
||
- `resources/`: 资源目录
|
||
- **功能**: 服务资源文件目录
|
||
- `example_usage.py`: 使用示例
|
||
- **功能**: 渲染服务使用示例
|
||
- **类**:
|
||
- 无
|
||
- **方法**:
|
||
- 示例使用方法
|
||
- `README.md`: 说明文档
|
||
- **功能**: 服务使用说明
|
||
- `service.py`: 服务脚本
|
||
- **功能**: 渲染服务主程序
|
||
- **类**:
|
||
- 无
|
||
- **方法**:
|
||
- 服务启动和管理方法
|
||
|
||
**目录**: rp_distributor/
|
||
- **功能**: RP分发器
|
||
- **文件**:
|
||
- `launch.templ.bat`: 启动模板脚本
|
||
- **功能**: 启动脚本模板
|
||
- `main.py`: 主程序
|
||
- **功能**: 分发器主程序
|
||
- **类**:
|
||
- 无
|
||
- **方法**:
|
||
- 分发器主逻辑
|
||
- `README.md`: 说明文档
|
||
- **功能**: 分发器使用说明
|
||
|
||
### 8. RenderPipelineFile/rplibs目录
|
||
|
||
**目录**: colorama/
|
||
- **功能**: 终端颜色库
|
||
- **功能**: 为终端输出提供颜色支持
|
||
|
||
**目录**: progressbar/
|
||
- **功能**: 进度条库
|
||
- **功能**: 提供进度条显示功能
|
||
|
||
**目录**: yaml/
|
||
- **功能**: YAML解析库
|
||
- **功能**: 提供YAML文件解析功能
|
||
|
||
**文件**: __init__.py
|
||
- **功能**: rplibs模块初始化文件
|
||
- **类**:
|
||
- 无
|
||
- **方法**:
|
||
- 无
|
||
|
||
**文件**: pyqt_imports.py
|
||
- **功能**: 导入所有qt类的包装脚本
|
||
- **类**:
|
||
- 无
|
||
- **方法**:
|
||
- `qt_connect()`: 连接Qt对象的信号和槽
|
||
- `qt_register_fonts()`: 注册字体
|
||
|
||
**文件**: six-source.txt
|
||
- **功能**: Six库源信息
|
||
- **功能**: Six库的源信息记录
|
||
|
||
**文件**: six.py
|
||
- **功能**: Six库兼容工具
|
||
- **功能**: Python 2/3兼容性工具库
|
||
|
||
## 2.8 ui模块
|
||
|
||
### 1. `ui/__init__.py`
|
||
- **功能**: ui模块初始化文件,导出UI组件类
|
||
- **类**:
|
||
- 无
|
||
- **方法**:
|
||
- 无
|
||
- **导出项**:
|
||
- `CustomPanda3DWidget`: 自定义Panda3D部件类
|
||
- `CustomFileView`: 自定义文件视图类
|
||
- `CustomTreeWidget`: 自定义树形控件类
|
||
- `MainWindow`: 主窗口类
|
||
- `setup_main_window`: 设置主窗口函数
|
||
|
||
### 2. `ui/assembly_disassembly_config_simple.py`
|
||
- **功能**: 拆装交互配置界面 - 简化版本,实现模型的分步拆装交互功能配置
|
||
- **类**:
|
||
- `AssemblyDisassemblyConfigDialog`: 拆装配置主对话框 - 简化版本
|
||
- **方法**:
|
||
- `__init__(self, parent=None, world=None)`: 初始化拆装配置对话框
|
||
- `setupUI(self)`: 设置界面
|
||
- `createModelsTab(self)`: 创建模型选择标签页
|
||
- `createStepsTab(self)`: 创建步骤配置标签页
|
||
- `createToolsTab(self)`: 创建工具配置标签页
|
||
- `createSettingsTab(self)`: 创建全局设置标签页
|
||
- `connectSignals(self)`: 连接信号槽
|
||
- `loadSceneModels(self)`: 加载场景中的模型
|
||
- `_addNodeToTree(self, node, parent_item)`: 递归添加节点到树形控件
|
||
- `filterSceneModels(self, search_text)`: 根据搜索文本过滤场景模型
|
||
- `addModelsToConfig(self)`: 添加选中的模型到配置
|
||
- `removeModelsFromConfig(self)`: 从配置中移除选中的模型
|
||
- `addStep(self)`: 添加步骤
|
||
- `removeStep(self)`: 删除步骤
|
||
- `moveStepUp(self)`: 上移步骤
|
||
- `moveStepDown(self)`: 下移步骤
|
||
- `renumberSteps(self)`: 重新编号步骤
|
||
- `onStepSelectionChanged(self)`: 步骤选择改变
|
||
- `_clearStepConfigurationUI(self)`: 清空步骤配置界面
|
||
- `loadStepConfiguration(self, step_data)`: 加载步骤配置到界面
|
||
- `disconnectStepConfigSignals(self)`: 断开步骤配置的信号连接
|
||
- `connectStepConfigSignals(self)`: 连接步骤配置的信号
|
||
- `saveCurrentStepConfig(self)`: 保存当前步骤的配置到list_item的UserRole数据中
|
||
- `addTool(self)`: 添加工具
|
||
- `editTool(self)`: 编辑工具
|
||
- `deleteTool(self)`: 删除工具
|
||
- `browseAudioFile(self)`: 浏览音频文件
|
||
- `saveConfiguration(self)`: 保存配置
|
||
- `loadConfiguration(self)`: 加载配置
|
||
- `loadConfigurationData(self, data)`: 加载配置数据到界面
|
||
- `_loadModelConfiguration(self, saved_models)`: 加载模型配置,通过路径精确匹配场景中的模型节点
|
||
- `_buildSceneModelMap(self, node, model_map)`: 递归构建场景模型名称到节点的映射
|
||
- `_getNodePath(self, node)`: 获取节点的完整路径,用于精确定位
|
||
- `_findNodeByPath(self, root_node, node_path)`: 根据路径在场景中查找节点
|
||
- `_findNodeByNameAndParent(self, root_node, node_name, parent_name)`: 根据节点名称和父节点名称查找节点
|
||
- `previewConfiguration(self)`: 预览配置效果
|
||
- `applyConfiguration(self)`: 应用配置
|
||
|
||
### 3. `ui/assembly_disassembly_config.py`
|
||
- **功能**: 拆装交互配置界面,实现模型的分步拆装交互功能配置
|
||
- **类**:
|
||
- `AssemblyDisassemblyConfigDialog`: 拆装配置主对话框
|
||
- **方法**:
|
||
- `__init__(self, parent=None, world=None)`: 初始化拆装配置对话框
|
||
- `setupUI(self)`: 设置界面
|
||
- `createLeftPanel(self)`: 创建左侧面板
|
||
- `createRightPanel(self)`: 创建右侧面板
|
||
- `createStepsTab(self)`: 创建步骤配置标签页
|
||
- `createStepConfigWidget(self)`: 创建步骤详细配置部件
|
||
- `createSettingsTab(self)`: 创建全局设置标签页
|
||
- `connectSignals(self)`: 连接信号槽
|
||
- `loadSceneModels(self)`: 加载场景中的模型
|
||
- `_addNodeToTree(self, node, parent_item)`: 递归添加节点到树形控件
|
||
- `filterSceneModels(self, text)`: 过滤场景模型列表
|
||
- `addModelsToConfig(self)`: 添加选中的模型到配置
|
||
- `removeModelsFromConfig(self)`: 从配置中移除选中的模型
|
||
- `addTool(self)`: 添加工具
|
||
- `editTool(self)`: 编辑工具
|
||
- `removeTool(self)`: 删除工具
|
||
- `addStep(self)`: 添加步骤
|
||
- `removeStep(self)`: 删除步骤
|
||
- `moveStepUp(self)`: 上移步骤
|
||
- `moveStepDown(self)`: 下移步骤
|
||
- `renumberSteps(self)`: 重新编号步骤
|
||
- `onStepSelectionChanged(self)`: 步骤选择改变
|
||
- `loadStepConfiguration(self, step_data)`: 加载步骤配置到界面
|
||
- `onInteractionTypeChanged(self, interaction_type)`: 交互方式改变
|
||
- `updateCurrentStep(self)`: 更新当前步骤数据
|
||
- `browseAudioFile(self)`: 浏览音频文件
|
||
- `saveConfiguration(self)`: 保存配置
|
||
- `loadConfiguration(self)`: 加载配置
|
||
- `loadConfigurationData(self, data)`: 加载配置数据到界面
|
||
- `previewConfiguration(self)`: 预览配置效果
|
||
- `applyConfiguration(self)`: 应用配置
|
||
|
||
### 4. `ui/icon_manager_gui.py`
|
||
- **功能**: 图标管理器GUI工具,提供图形界面来管理和查看图标
|
||
- **类**:
|
||
- `IconPreviewWidget`: 图标预览控件
|
||
- `IconManagerDialog`: 图标管理器对话框
|
||
- **方法**:
|
||
- `IconPreviewWidget.__init__(self)`: 初始化图标预览控件
|
||
- `IconPreviewWidget.setupUI(self)`: 设置UI
|
||
- `IconPreviewWidget.showIcon(self, icon_name: str, icon: QIcon)`: 显示图标
|
||
- `IconManagerDialog.__init__(self, parent=None)`: 初始化图标管理器对话框
|
||
- `IconManagerDialog.setupUI(self)`: 设置UI
|
||
- `IconManagerDialog.loadIcons(self)`: 加载图标列表
|
||
- `IconManagerDialog.onIconSelected(self)`: 当选择图标时
|
||
- `IconManagerDialog.refreshIcons(self)`: 刷新图标
|
||
- `IconManagerDialog.addIcon(self)`: 添加新图标
|
||
- `IconManagerDialog.showDebugInfo(self)`: 显示调试信息
|
||
- `show_icon_manager(parent=None)`: 显示图标管理器对话框
|
||
|
||
### 5. `ui/icon_manager.py`
|
||
- **功能**: 图标管理工具,负责统一管理应用程序中的所有图标
|
||
- **类**:
|
||
- `IconManager`: 图标管理器类
|
||
- **方法**:
|
||
- `__init__(self)`: 初始化图标管理器
|
||
- `_get_icon_directory(self)`: 获取图标目录的绝对路径
|
||
- `_create_default_icon(self)`: 创建默认图标
|
||
- `_preload_icons(self)`: 预加载常用图标
|
||
- `get_icon(self, icon_name: str, size: Optional[QSize] = None)`: 获取图标
|
||
- `get_icon_path(self, icon_name: str)`: 获取图标文件的完整路径
|
||
- `has_icon(self, icon_name: str)`: 检查图标是否存在
|
||
- `add_icon(self, icon_name: str, icon_path: str)`: 添加新图标到缓存
|
||
- `refresh_cache(self)`: 刷新图标缓存
|
||
- `get_available_icons(self)`: 获取所有可用的图标列表
|
||
- `get_cache_info(self)`: 获取缓存信息
|
||
- `debug_info(self)`: 打印调试信息
|
||
- `get_icon_manager()`: 获取全局图标管理器实例
|
||
- `get_icon(icon_name: str, size: Optional[QSize] = None)`: 便捷函数:获取图标
|
||
- `get_icon_path(icon_name: str)`: 便捷函数:获取图标路径
|
||
- `has_icon(icon_name: str)`: 便捷函数:检查图标是否存在
|
||
|
||
### 6. `ui/interface_manager.py`
|
||
- **功能**: 界面管理器,处理树形控件和UI交互
|
||
- **类**:
|
||
- `InterfaceManager`: 界面管理器类
|
||
- **方法**:
|
||
- `__init__(self, world)`: 初始化界面管理器
|
||
- `setTreeWidget(self, treeWidget)`: 设置树形控件引用并更新场景树
|
||
- `onTreeWidgetClicked(self, index)`: 处理树形控件点击事件(包括空白区域)
|
||
- `onTreeCurrentItemChanged(self, current, previous)`: 处理树形控件当前选中项改变事件
|
||
- `onTreeItemClicked(self, item, column)`: 处理树形控件项目点击事件
|
||
- `isModelOrChild(self, item)`: 检查是否是模型节点或其子节点
|
||
- `deleteNode(self, nodePath, item)`: 删除节点
|
||
- `_cleanupAllLightsInSubtree(self, parentNode)`: 清理节点树中的灯光
|
||
- `updateSceneTree(self)`: 更新场景树显示 - 实际实现
|
||
- `findTreeItem(self, node, parentItem)`: 在树形控件中查找指定的节点项
|
||
- `_collect_expanded(self, item=None, prefix="")`: 收集展开的节点路径
|
||
- `_restore_expanded(self, item=None, prefix="")`: 恢复展开的节点状态
|
||
- `syncVisibilityDownward(self)`: 向下同步可见性
|
||
|
||
### 7. `ui/main_window.py`
|
||
|
||
#### 类: StyledTerrainDialog
|
||
- **功能**: 与新建项目对话框风格一致的参数输入对话框
|
||
- **方法**:
|
||
- `__init__(self, parent, title, fields, primary_text="确认", secondary_text="取消")`: 初始化对话框
|
||
- `createTitleBar(self)`: 创建标题栏
|
||
- `_applyTitleBarIcons(self)`: 应用标题栏图标
|
||
- `setWindowTitle(self, title)`: 设置窗口标题
|
||
- `mousePressEvent(self, event)`: 鼠标按下事件
|
||
- `mouseMoveEvent(self, event)`: 鼠标移动事件
|
||
- `mouseReleaseEvent(self, event)`: 鼠标释放事件
|
||
- `get_value(self, name)`: 获取字段值
|
||
|
||
#### 类: MainWindow
|
||
- **功能**: 主窗口类,负责创建和管理应用程序的主界面
|
||
- **方法**:
|
||
- `__init__(self, world)`: 初始化主窗口
|
||
- `setupMessageBoxStyles(self)`: 设置消息框样式
|
||
- `createStyledInputDialog(self, parent, title, label, mode=QLineEdit.Normal, text="")`: 创建带样式的输入对话框
|
||
- `createStyledFileDialog(self, parent, caption, directory="", filter="")`: 创建带样式的文件对话框
|
||
- `setupCenterWidget(self)`: 设置窗口中央部件
|
||
- `move_center(self)`: 将窗口移动到屏幕中央
|
||
- `get_icon_path(self, icon_name)`: 获取图标文件路径
|
||
- `setupEmbeddedToolbar(self)`: 创建内嵌工具栏
|
||
- `toolbarMousePressEvent(self, event)`: 工具栏鼠标按下事件
|
||
- `toolbarMouseMoveEvent(self, event)`: 工具栏鼠标移动事件
|
||
- `toolbarMouseReleaseEvent(self, event)`: 工具栏鼠标释放事件
|
||
- `snapToNearestPosition(self)`: 自动吸附到最近的预设位置
|
||
- `setupMenus(self)`: 创建菜单栏
|
||
- `refreshAssetsView(self)`: 刷新资源视图
|
||
- `setupCreateMenuActions(self)`: 设置创建菜单动作
|
||
- `setupViewMenuActions(self)`: 设置视图菜单动作
|
||
- `onViewPerspective(self)`: 切换到透视视图
|
||
- `onViewOrthographic(self)`: 切换到正交视图
|
||
- `onViewTop(self)`: 切换到俯视图
|
||
- `onViewFront(self)`: 切换到前视图
|
||
- `onViewGrid(self)`: 切换网格显示
|
||
- `_createGridView(self)`: 创建网格视图
|
||
- `_saveCurrentCameraSettings(self)`: 保存当前相机设置
|
||
- `_setupOrthographicLens(self)`: 设置正交镜头
|
||
- `_updateViewMenuText(self)`: 更新视图菜单文本
|
||
- `_onWindowResized(self)`: 窗口大小改变时的处理
|
||
- `connectCreateMenuActions(self)`: 连接创建菜单动作
|
||
- `getCreateMenuActions(self)`: 获取所有创建菜单动作
|
||
- `setupDockWindows(self)`: 创建停靠窗口
|
||
- `setupToolbar(self)`: 创建工具栏
|
||
- `setupScriptPanel(self, layout)`: 创建脚本管理面板
|
||
- `connectEvents(self)`: 连接事件信号
|
||
- `onCopy(self)`: 复制操作
|
||
- `onCut(self)`: 剪切操作
|
||
- `onPaste(self)`: 粘贴操作
|
||
- `_serializeNode(self, node)`: 序列化节点
|
||
- `_deserializeNode(self, node_data, parent_node)`: 反序列化节点
|
||
- `_deleteNode(self, node, tree_item)`: 删除节点
|
||
- `onUndo(self)`: 撤销操作
|
||
- `onRedo(self)`: 重做操作
|
||
- `onCreateCesiumView(self)`: 创建 Cesium 视图
|
||
- `onToggleCesiumView(self)`: 切换 Cesium 视图
|
||
- `onRefreshCesiumView(self)`: 刷新 Cesium 视图
|
||
- `onUpdateCesiumURL(self)`: 更新 Cesium URL
|
||
- `onAddModelClicked(self)`: 处理添加模型按钮点击
|
||
- `showAddModelDialog(self)`: 显示添加模型对话框
|
||
- `getModelCoordinates(self)`: 获取模型坐标信息
|
||
- `onLoadCesiumTileset(self)`: 加载 Cesium 3D Tiles
|
||
- `onToolChanged(self, button)`: 工具切换事件处理
|
||
- `openWebBrowser(self)`: 打开网页浏览器
|
||
- `getSampleWeatherData(self)`: 获取示例天气数据
|
||
- `onCreate3DSampleInfoPanel(self)`: 创建3D示例信息面板
|
||
- `addInfoPanelToTree(self, panel, panel_name)`: 将信息面板添加到场景树
|
||
- `onCreateSystemStatusPanel(self)`: 创建系统状态信息面板
|
||
- `getSystemStatusData(self)`: 获取系统状态数据
|
||
- `onCreateSensorDataPanel(self)`: 创建传感器数据信息面板
|
||
- `getSensorData(self)`: 获取传感器数据
|
||
- `onCreateSceneInfoPanel(self)`: 创建场景信息面板
|
||
- `getSceneInfoData(self)`: 获取场景信息数据
|
||
- `refreshScriptsList(self)`: 刷新脚本列表
|
||
- `updateScriptPanel(self)`: 更新脚本面板状态
|
||
- `updateMountedScriptsList(self, game_object)`: 更新已挂载脚本列表
|
||
- `onCreateScript(self)`: 创建脚本按钮事件
|
||
- `onCreateScriptDialog(self)`: 菜单创建脚本事件
|
||
- `onLoadScript(self)`: 加载脚本按钮事件
|
||
- `onLoadScriptFile(self)`: 加载脚本文件菜单事件
|
||
- `onReloadAllScripts(self)`: 重新加载所有脚本事件
|
||
- `onToggleHotReload(self)`: 切换热更新状态
|
||
- `onOpenScriptsManager(self)`: 打开脚本管理器
|
||
- `onScriptDoubleClick(self, item)`: 脚本列表双击事件
|
||
- `onMountScript(self)`: 挂载脚本事件
|
||
- `onUnmountScript(self)`: 卸载脚本事件
|
||
- `onOpenIconManager(self)`: 打开图标管理器
|
||
- `closeEvent(self, event)`: 处理窗口关闭事件
|
||
- `onCreateFlatTerrain(self)`: 创建平面地形
|
||
- `onCreateHeightmapTerrain(self)`: 从高度图创建地形
|
||
- `onOpenAssemblyDisassemblyConfig(self)`: 打开拆装配置界面
|
||
- `onStartAssemblyInteraction(self)`: 开始拆装交互
|
||
- `onOpenMaintenanceSystem(self)`: 打开维修系统
|
||
- `onEnterVR(self)`: 进入VR模式
|
||
- `onExitVR(self)`: 退出VR模式
|
||
- `onShowVRStatus(self)`: 显示VR状态
|
||
- `onShowVRSettings(self)`: 显示VR设置对话框
|
||
- `createVRSettingsDialog(self)`: 创建VR设置对话框
|
||
- `onVRSettingsOK(self, dialog)`: 确定VR设置
|
||
- `applyVRSettings(self, dialog)`: 应用VR设置
|
||
- `onToggleVRDebug(self)`: 切换VR调试输出
|
||
- `onShowVRPerformance(self)`: 显示VR性能报告
|
||
- `onSetVRDebugMode(self, mode)`: 设置VR调试模式
|
||
- `onToggleVRPerformanceMonitor(self)`: 切换VR性能监控
|
||
- `onToggleVRGpuTiming(self)`: 切换VR GPU时间监控
|
||
- `onToggleVRPipelineMonitor(self)`: 切换VR管线监控
|
||
- `onSetVRPoseStrategy(self, strategy)`: 设置VR姿态策略
|
||
- `onTestVRPipeline(self)`: 测试VR管线监控功能
|
||
- `onShowVRDebugSettings(self)`: 显示VR调试设置对话框
|
||
- `createVRDebugSettingsDialog(self)`: 创建VR调试设置对话框
|
||
- `onToggleVRTestMode(self)`: 切换VR测试模式
|
||
- `onToggleVRTestSubmitTexture(self)`: 切换VR测试模式纹理提交功能
|
||
- `onToggleVRTestWaitPoses(self)`: 切换VR测试模式姿态等待功能
|
||
- `onSetVRTestStep(self, step)`: 设置VR测试步骤
|
||
|
||
#### 函数: setup_main_window
|
||
- **功能**: 设置主窗口的便利函数
|
||
- **方法**:
|
||
- `setup_main_window(world, path=None)`: 设置主窗口
|
||
|
||
#### 类: AssemblyModeSelectionDialog
|
||
- **功能**: 拆装模式选择对话框
|
||
- **方法**:
|
||
- `__init__(self, parent=None)`: 初始化对话框
|
||
- `setupUI(self)`: 设置界面
|
||
- `on_mode_changed(self)`: 模式改变时的处理
|
||
- `get_selected_mode(self)`: 获取选中的模式
|
||
|
||
### 8. `ui/maintenance_system.py`
|
||
|
||
#### 类: MaintenanceLoginDialog
|
||
- **功能**: 维修系统登录对话框
|
||
- **信号**:
|
||
- `login_success`: 登录成功信号
|
||
- **方法**:
|
||
- `__init__(self, parent=None)`: 初始化登录对话框
|
||
- `setupUI(self)`: 设置用户界面,包括标题、登录表单、提示信息和按钮,应用样式和布局
|
||
- `on_login(self)`: 处理登录,验证账号密码,成功时发射login_success信号
|
||
|
||
#### 类: MaintenanceSubjectDialog
|
||
- **功能**: 维修系统科目选择对话框
|
||
- **信号**:
|
||
- `subject_selected`: 科目选择信号,传递科目路径和模式参数
|
||
- **方法**:
|
||
- `__init__(self, project_path, parent=None)`: 初始化科目选择对话框,设置项目路径和科目路径
|
||
- `setupUI(self)`: 设置用户界面,包括标题、科目列表、科目详情、模式选择和底部按钮,应用样式和布局
|
||
- `load_subjects(self)`: 加载科目列表,扫描Subjects目录中的JSON文件并显示在列表中
|
||
- `on_subject_selected(self, item)`: 处理科目选择,更新科目详情显示和开始按钮状态
|
||
- `format_subject_description(self, subject_data, filename)`: 格式化科目描述,显示科目基本信息、描述、步骤数量、总分和工具列表
|
||
- `on_start(self)`: 开始科目,获取选择的模式并发射subject_selected信号
|
||
|
||
#### 类: MaintenanceSystemManager
|
||
- **功能**: 维修系统管理器
|
||
- **方法**:
|
||
- `__init__(self, world)`: 初始化维修系统管理器,保存world引用
|
||
- `show_maintenance_system(self, parent_window)`: 显示维修系统,创建登录对话框并连接登录成功信号
|
||
- `show_subject_selection(self, parent_window)`: 显示科目选择界面,获取当前项目路径并创建科目选择对话框
|
||
- `start_maintenance_subject(self, subject_path, mode)`: 开始维修科目,加载科目配置并启动拆装交互系统
|
||
|
||
### 9. `ui/property_panel.py`
|
||
|
||
#### 类: PropertyPanelManager
|
||
- **功能**: 属性面板管理器,负责显示和编辑场景中各种对象的属性
|
||
- **方法**:
|
||
- `__init__(self, world)`: 初始化属性面板管理器
|
||
- `createStatusBadge(self, text, badge_type="green")`: 创建现代化状态徽章
|
||
- `createFixedStatusBadge(self, text, badge_type="green")`: 创建固定宽度的状态徽章
|
||
- `createModernButton(self, text, button_type="default")`: 创建现代化按钮
|
||
- `_collision_button_style(self)`: 返回碰撞检测面板按钮统一样式
|
||
- `createModernGroupBox(self, title, parent_layout)`: 创建现代化的分组框
|
||
- `_getFigmaSpinBoxStyle(self)`: 获取符合Figma设计的SpinBox样式
|
||
- `createPropertyRow(self, label_text, widget, layout, tooltip=None)`: 创建属性行
|
||
- `setPropertyLayout(self, layout)`: 设置属性面板布局引用
|
||
- `clearPropertyPanel(self)`: 清空属性面板
|
||
- `updateNodeVisibilityAfterDrag(self, item)`: 拖拽结束后更新节点的可见性状态
|
||
- `_syncSceneVisibility(self)`: 同步场景可见性
|
||
- `updatePropertyPanel(self, item)`: 更新属性面板显示
|
||
- `_isTerrainNode(self, node, item)`: 检查是否是地形节点
|
||
- `_showTerrainProperties(self, terrain_node, item)`: 显示地形属性面板
|
||
- `_updateTerrainTransformPanel(self, terrain_node)`: 更新地形变化属性面板
|
||
- `_createTerrainEditPanel(self, terrain_info)`: 创建地形编辑控制面板
|
||
- `_onTerrainRadiusChanged(self, value)`: 地形编辑半径改变
|
||
- `_onTerrainStrengthChanged(self, value)`: 地形编辑强度改变
|
||
- `_onTerrainOperationChanged(self, text)`: 地形编辑操作类型改变
|
||
- `_updateTerrainMaterialPanel(self, terrain_node, terrain_info)`: 更新地形材质属性面板
|
||
- `_selectTerrainColor(self, terrain_info)`: 选择地形颜色
|
||
- `_selectTerrainTexture(self, terrain_info)`: 选择地形纹理
|
||
- `_deleteTerrain(self, terrain_info, item)`: 删除地形
|
||
- `_cleanupAllReferences(self)`: 清理所有控件引用
|
||
- `_setUserVisible(self, node, visible)`: 设置用户可见性
|
||
- `_syncEffectiveVisibility(self, start_node)`: 同步有效可见性
|
||
- `_toggleModelVisibility(self, model, state)`: 切换模型可见性状态
|
||
- `refreshModelValues(self, nodePath)`: 刷新模型值显示
|
||
- `_refreshGUIElementValues(self, gui_element)`: 刷新GUI元素值显示
|
||
- `_refreshModelValues(self, nodePath)`: 刷新普通模型值显示
|
||
- `_isPropertyPanelValid(self)`: 检查属性面板是否仍然有效
|
||
- `_safeUpdateSpinBox(self, attr_name, value)`: 安全地更新数值框
|
||
- `_createTransformControls(self, nodePath)`: 创建变换控制控件
|
||
- `_onPositionEditFinished(self, nodePath, axis)`: 位置编辑完成时的处理
|
||
- `_createSafeSpinBox(self, min_val, max_val, read_only=False)`: 创建安全的数值框
|
||
- `_cleanupTransformControls(self)`: 清理变换控件引用
|
||
- `_refreshWorldPos(self, model)`: 刷新世界位置
|
||
- `_showCesiumTilesetProperties(self, nodePath, item)`: 显示 Cesium tileset 属性
|
||
- `_createPositionControl(self, label, nodePath, axis)`: 创建位置控制控件
|
||
- `_createScaleControl(self, nodePath)`: 创建缩放控制控件
|
||
- `_updateTilesetPosition(self, nodePath, axis, value)`: 更新 tileset 位置
|
||
- `_updateTilesetScale(self, nodePath, value)`: 更新 tileset 缩放
|
||
- `_deleteCesiumTileset(self, nodePath, item)`: 删除 Cesium tileset
|
||
- `_updateModelPropertyPanel(self, model)`: 更新模型属性面板
|
||
- `_onScaleValueChanged(self, scale_widget, value)`: 缩放值改变
|
||
- `_updateXScale(self, model, value)`: 更新X轴缩放值
|
||
- `_updateYScale(self, model, value)`: 更新Y轴缩放值
|
||
- `_updateZScale(self, model, value)`: 更新Z轴缩放值
|
||
- `updateGUIPropertyPanel(self, gui_element, item)`: 更新GUI元素属性面板
|
||
- `_addInfoPanelProperties(self, info_panel)`: 为信息面板添加属性控制面板
|
||
- `_applyInfoPanel3DTitleProperties(self, info_panel, r, g, b, a, size)`: 应用3D信息面板标题属性
|
||
- `_applyInfoPanel3DContentProperties(self, info_panel, r, g, b, a, size)`: 应用3D信息面板内容属性
|
||
- `_adjustContentWordwrap(self, panel_id, panel_width, font_size)`: 调整信息面板内容的换行设置
|
||
- `_startInfoPanelMonitoring(self, info_panel, panel_id)`: 启动信息面板内容监控
|
||
- `_checkInfoPanelUpdates(self, panel_id)`: 检查信息面板内容更新
|
||
- `_selectInfoPanelBorderColor(self, info_panel, r_spin, g_spin, b_spin, a_spin)`: 选择信息面板边框颜色
|
||
- `updateInfoPanelBackgroundImage(self, info_panel, image_path)`: 更新信息面板背景图片
|
||
- `_applyInfoPanelBackgroundImage(self, panel_node, image_path, panel_data)`: 应用信息面板背景图片
|
||
- `_update3DInfoPanelBackgroundImage(self, panel_id, info_panel, image_path)`: 更新3D信息面板背景图片
|
||
- `_selectInfoPanelBackgroundColor(self, info_panel, r_spin, g_spin, b_spin, a_spin)`: 选择信息面板背景颜色
|
||
- `_applyInfoPanelBackgroundColor(self, info_panel, r, g, b, a)`: 应用信息面板背景颜色
|
||
- `_selectInfoPanelTitleColor(self, info_panel, r_spin, g_spin, b_spin, a_spin)`: 选择信息面板标题颜色
|
||
- `_selectInfoPanelContentColor(self, info_panel, r_spin, g_spin, b_spin, a_spin)`: 选择信息面板内容颜色
|
||
- `_applyInfoPanelTitleProperties(self, info_panel, r, g, b, a, size)`: 应用信息面板标题属性
|
||
- `_applyInfoPanelContentProperties(self, info_panel, r, g, b, a, size)`: 应用信息面板内容属性
|
||
- `_addSphericalVideoProperties(self, spherical_video)`: 为球形视频添加属性控制面板
|
||
- `_toggleSphericalVideoPlayback(self, spherical_video)`: 切换球形视频播放状态
|
||
- `_stopSphericalVideo(self, spherical_video)`: 停止球形视频
|
||
- `_seekSphericalVideo(self, spherical_video, slider_value)`: 跳转到指定时间位置
|
||
- `_updateSphericalVideoRadius(self, spherical_video, new_radius)`: 更新球形视频半径
|
||
- `loadSphericalVideoFile(self, spherical_video, video_path)`: 为球形视频加载新的视频文件
|
||
- `_selectSphericalVideoFile(self, spherical_video)`: 选择球形视频文件
|
||
- `_addVideoScreenProperties(self, video_screen, item)`: 添加视频屏幕属性面板
|
||
- `_add2DVideoScreenProperties(self, video_screen, item)`: 为2D视频屏幕添加属性控制面板
|
||
- `_loadVideoFromURLWithOpenCV(self, video_screen, url)`: 使用OpenCV从URL加载视频流并在2D视频屏幕上显示
|
||
- `play2DVideo(self, video_screen)`: 播放2D视频
|
||
- `pause2DVideo(self, video_screen)`: 暂停2D视频
|
||
- `_stop2DVideo(self, video_screen)`: 停止2D视频
|
||
- `_loadNew2DVideo(self, video_screen, item)`: 为2D视频屏幕加载新视频文件
|
||
- `_loadVideoFromURLWithOpenCV_3D(self, video_screen, url)`: 使用OpenCV从URL加载视频流并在3D视频屏幕上显示
|
||
- `_verifyVideoDisplay(self, video_screen, texture)`: 验证视频显示
|
||
- `_retryLoadVideoFromURLWithOpenCV_3D(self, video_screen, url)`: 重新加载3D视频流
|
||
- `_stop3DVideo(self, video_screen)`: 停止3D视频
|
||
- `_loadNewVideo(self, video_screen, item)`: 加载新视频
|
||
- `editGUI2DPosition(self, gui_element, axis, value)`: 编辑2D GUI元素位置
|
||
- `editGUIScale(self, gui_element, axis, value)`: 编辑GUI元素缩放
|
||
- `_update2DImageWidth(self, gui_element, width)`: 更新2D图片宽度
|
||
- `_update2DImageHeight(self, gui_element, height)`: 更新2D图片高度
|
||
- `_update2DImageScale(self, gui_element, scale)`: 更新2D图片缩放
|
||
- `_update3DImageScale(self, gui_element, axis, scale)`: 更新3D元素缩放
|
||
- `_selectGUIColor(self, gui_element)`: 选择GUI元素的字体颜色
|
||
- `_updateGUITextColor(self, gui_element, color)`: 更新GUI元素的字体颜色
|
||
- `_updateGUIScaleY(self, gui_element, scale_y)`: 更新GUI元素Y轴缩放
|
||
- `_updateGUIScaleZ(self, gui_element, scale_z)`: 更新GUI元素Z轴缩放
|
||
- `update2DImageTexture(self, image_element, texture_path)`: 更新2D图片纹理
|
||
- `_updateScriptPropertyPanel(self, game_object)`: 更新脚本属性面板
|
||
- `_toggleScriptEnabled(self, script_component)`: 切换脚本启用状态
|
||
- `updateLightPropertyPanel(self, model)`: 更新光源属性面板
|
||
- `_updateLightPosition(self, light_object, node_path, axis, value)`: 更新光源位置
|
||
- `_updateLightRotation(self, light_object, node_path, axis, value)`: 更新光源旋转
|
||
- `_updateLightEnergy(self, light_object, value)`: 更新光源强度
|
||
- `_updateLightRadius(self, light_object, value)`: 更新光源半径
|
||
- `_updateLightFOV(self, light_Object, value)`: 更新聚光灯视野角度
|
||
- `_updateLightTemperature(self, light_object, value)`: 更新光源色温
|
||
- `_updateLightInnerRadius(self, light_object, value)`: 更新点光源内半径
|
||
- `_updateLightShaowResolution(self, light_object, value)`: 更新阴影分辨率
|
||
- `_updateLightNearPlane(self, light_object, value)`: 更新近平面距离
|
||
- `_updateLightCastsShadows(self, light_object, casts_shadows)`: 更新光源是否投射阴影
|
||
- `_updateLightScale(self, node_path, axis, value)`: 更新光源节点缩放
|
||
- `_generateUniqueMaterialNames(self, materials, model_name)`: 生成唯一的材质名称
|
||
- `_updateModelMaterialPanel(self, model)`: 模型材质属性
|
||
- `_updateMaterialBaseColor(self, material, component, value)`: 更新材质基础颜色
|
||
- `_updateMaterialTransparency(self, material, alpha_value)`: 更新材质透明度
|
||
- `_updateMaterialRoughness(self, material, value)`: 更新材质粗糙度
|
||
- `_updateMaterialMetallic(self, material, value)`: 更新材质金属性
|
||
- `_updateMaterialIOR(self, material, value)`: 更新材质折射率
|
||
- `_getMaterialStatus(self, material)`: 获取材质状态描述
|
||
- `_getTextureModeString(self, mode)`: 获取纹理模式的字符串表示
|
||
- `_checkAndAdjustMaterialProperty(self, material, property_name, current_value, texture_type)`: 检查并智能调整材质属性值
|
||
- `_getOrCreateMaterialBaseColor(self, material)`: 智能获取或创建材质的基础颜色
|
||
- `_selectDiffuseTexture(self, material_title)`: 漫反射贴图
|
||
- `_selectNormalTexture(self, material)`: 选择法线贴图
|
||
- `_selectRoughnessTexture(self, material)`: 选择粗糙度贴图
|
||
- `_selectMetallicTexture(self, material)`: 选择金属性贴图
|
||
- `_selectIORTexture(self, material)`: 选择IOR贴图
|
||
- `_selectParallaxTexture(self, material)`: 选择视差贴图
|
||
- `_selectEmissionTexture(self, material)`: 选择自发光贴图
|
||
- `_selectAOTexture(self, material)`: 选择环境光遮蔽贴图
|
||
- `_selectAlphaTexture(self, material)`: 选择透明度贴图
|
||
- `_selectDetailTexture(self, material)`: 选择细节贴图
|
||
- `_selectGlossTexture(self, material)`: 选择光泽贴图
|
||
- `_applyDiffuseTexture(self, material_title, texture_path)`: 应用漫反射贴图
|
||
- `_applyNormalTexture(self, material, texture_path)`: 应用法线贴图
|
||
- `_applyRoughnessTexture_FINAL(self, material, texture_path)`: 应用粗糙度贴图
|
||
- `_hasNormalTexture(self, node)`: 检查节点是否有法线贴图
|
||
- `_applySmartPBREffect(self, node, effect_file="effects/default.yaml")`: 智能应用PBR效果
|
||
- `_verifyTextureInShader(self, node, texture_type, expected_sort)`: 验证纹理是否在shader中正确处理
|
||
- `_ensureEnhancedPBREffect(self, node)`: 确保节点使用增强的PBR效果
|
||
- `_createWhiteDiffuseTexture(self, node)`: 创建白色漫反射纹理
|
||
- `_applyMetallicTexture(self, material, texture_path)`: 应用金属性贴图
|
||
- `_applyIORTexture(self, material, texture_path)`: 应用IOR贴图
|
||
- `_applyParallaxTexture(self, material, texture_path)`: 应用视差贴图
|
||
- `_ensureNormalMappingEnabled(self, model)`: 确保模型启用了法线映射功能
|
||
- `_ensurePBREffectEnabled(self, model)`: 确保模型启用了完整的PBR效果
|
||
- `_ensurePBREffectEnabledWithParallax(self, model)`: 确保模型启用了完整的PBR效果,包括视差映射
|
||
- `_ensurePBREffectEnabledWithMetallic(self, model)`: 确保模型启用了支持金属性贴图的PBR效果
|
||
- `_ensurePBREffectEnabledWithDirectMetallic(self, model)`: 确保模型启用了支持金属性贴图直接控制的PBR效果
|
||
- `_onMetallicModeChanged(self, material, mode_index)`: 处理金属性控制模式变化
|
||
- `_ensurePBREffectEnabledWithAdditiveMetallic(self, model)`: 确保模型启用了支持金属性贴图叠加控制的PBR效果
|
||
- `_ensurePBREffectEnabledWithEmission(self, model)`: 确保模型启用了支持自发光贴图的PBR效果
|
||
- `_ensurePBREffectEnabledWithAlpha(self, model)`: 确保模型启用了支持透明度的PBR效果
|
||
- `_ensurePBREffectEnabledWithRoughness(self, model)`: 确保模型启用了支持粗糙度贴图的PBR效果
|
||
- `_ensurePBREffectEnabledStable(self, model)`: 确保模型启用了稳定的PBR效果
|
||
- `_applyEmissionTexture(self, material, texture_path)`: 应用自发光贴图
|
||
- `_applyAOTexture(self, material, texture_path)`: 应用环境光遮蔽贴图
|
||
- `_applyAlphaTexture(self, material, texture_path)`: 应用透明度贴图
|
||
- `_applyDetailTexture(self, material, texture_path)`: 应用细节贴图
|
||
- `_applyGlossTexture(self, material, texture_path)`: 应用光泽贴图
|
||
- `_clearConflictingTextureStages(self, node)`: 清理可能冲突的纹理阶段
|
||
- `_findNodeWithMaterial(self, target_material)`: 查找使用指定材质的节点
|
||
- `_findMaterialAndNodeByTitle(self, material_title)`: 根据材质标题查找对应的材质和节点
|
||
- `_findSpecificGeomNodeWithMaterial(self, model, target_material)`: 查找使用指定材质的具体几何节点
|
||
- `_findSpecificGeomNodeForMaterial(self, target_material)`: 查找使用指定材质的具体几何节点
|
||
- `_findGeomNodeWithMaterial(self, model, target_material)`: 查找使用指定材质的具体几何节点
|
||
- `_displayCurrentTextures(self, material, material_layout, current_row)`: 显示当前材质的贴图信息
|
||
- `_applyToAllMaterials(self, model, property_name, value)`: 将属性应用到模型的所有材质
|
||
- `_addShadingModelPanel(self, material, material_layout, current_row)`: 添加着色模型选择面板
|
||
- `_onShadingModelChanged(self, material, model_index)`: 处理着色模型变化
|
||
- `_updateShadingModel(self, material, model_index)`: 更新着色模型
|
||
- `_addTransparencyPanel(self, material, material_layout, current_row)`: 添加透明度控制面板
|
||
- `_updateTransparency(self, material, opacity_value)`: 更新不透明度值
|
||
- `_updateMaterialAlphaForTransparency(self, material, opacity_slider)`: 为透明度更新材质Alpha
|
||
- `_applyTransparentRenderingEffect(self)`: 为当前选中的模型应用透明渲染效果
|
||
- `_addEmissionPanel(self, material, material_layout, current_row)`: 添加自发光控制面板
|
||
- `_updateEmissionStrength(self, material, strength)`: 更新自发光强度
|
||
- `_addMaterialPresetPanel(self, material, material_layout, current_row)`: 添加材质预设面板
|
||
- `_detectCurrentPreset(self, material)`: 检测当前材质最接近的预设
|
||
- `_applyMaterialPreset(self, material, preset_name)`: 应用材质预设
|
||
- `_apply_transparent_effect(self)`: 为当前选中的模型应用透明渲染效果
|
||
- `_refreshMaterialUI(self)`: 刷新材质 UI 显示
|
||
- `_addBatchOperationsPanel(self, model)`: 添加批量操作面板
|
||
- `_batchSetRoughness(self, model)`: 批量设置粗糙度
|
||
- `_applyMetallicTexture_NEW(self, material, texture_path)`: 应用金属性贴图
|
||
- `_hasMetallicTexture(self, node)`: 检查节点是否有金属性贴图
|
||
- `_applyDefaultNormalTexture(self, node)`: 应用RenderPipeline的默认法线贴图
|
||
- `_needsAlphaTesting(self, node)`: 检查节点是否需要透明度测试
|
||
- `_addSunAzimuthPanel(self)`: 添加太阳方位角控制面板
|
||
- `_onSunAzimuthSliderChanged(self, value)`: 滑块值改变时的回调
|
||
- `_onSunAzimuthSpinboxChanged(self, value)`: 数值框值改变时的回调
|
||
- `_onSunAltitudeSliderChanged(self, value)`: 太阳高度角滑块值改变时的回调
|
||
- `_onSunAltitudeSpinboxChanged(self, value)`: 太阳高度角数值框值改变时的回调
|
||
- `_setSunPreset(self, preset_name)`: 设置太阳预设位置
|
||
- `_applySunAzimuth_new(self, azimuth_value)`: 应用太阳方位角
|
||
- `_applySunAltitude(self, altitude_value)`: 应用太阳高度角
|
||
- `_updateDayTimeEditorSetting(self, plugin_name, setting_name, value)`: 直接更新Day Time Editor中的设置节点值
|
||
- `_applySunAzimuth(self, azimuth_degrees)`: 应用太阳方位角到Day Time Editor中的Sun Azimuth节点
|
||
- `_sendSunAzimuthViaFile(self, azimuth_degrees)`: 通过文件通信发送Sun Azimuth值到Day Time Editor
|
||
- `_addAnimationPanel(self, origin_model)`: 添加动画面板
|
||
- `_buildSkeletalUI(self, origin_model, actor, layout)`: 构建骨骼动画UI
|
||
- `_getModelFormat(self, origin_model)`: 获取模型格式信息
|
||
- `_processAnimationNames(self, origin_model, anim_names)`: 处理和分析动画名称
|
||
- `_isLikelyBoneGroup(self, name)`: 判断动画名称是否更像骨骼组而不是动画序列
|
||
- `_analyzeAnimationQuality(self, actor, anim_names, format_info)`: 分析动画质量和类型
|
||
- `_getActor(self, origin_model)`: 获取Actor
|
||
- `_createFBXActor(self, origin_model, filepath)`: 专门为 FBX 文件创建 Actor
|
||
- `_convertFBXToActor(self, fbx_path)`: 将 FBX 转换为可用的 Actor
|
||
- `_fixFBXAnimations(self, actor, fbx_path)`: 修复 FBX Actor 的动画数据
|
||
- `_deepAnalyzeFBX(self, fbx_path)`: 深度分析 FBX 文件并尝试提取动画
|
||
- `_convertFBXManually(self, origin_model)`: 手动转换 FBX 动画
|
||
- `_systemConvertFBX(self, fbx_path, progress=None)`: 使用系统工具转换 FBX
|
||
- `_playAnimation(self, origin_model)`: 播放动画
|
||
- `_pauseAnimation(self, origin_model)`: 暂停动画
|
||
- `_stopAnimation(self, origin_model)`: 停止动画
|
||
- `_loopAnimation(self, origin_model)`: 循环动画
|
||
- `_setAnimationSpeed(self, origin_model, speed)`: 设置动画播放倍速
|
||
- `_dispatchAnimCommand(self, origin_model, cmd)`: 分发动画命令
|
||
- `removeActorForModel(self, model)`: 删除 model 对应的 Actor
|
||
- `_addCollisionPanel(self, model)`: 添加碰撞检测面板
|
||
- `_addCollisionParameterControls(self, model, layout, start_row, shape_type)`: 添加碰撞参数调整控件
|
||
- `_createCollisionSpinBox(self, min_val, max_val, decimals=2)`: 创建碰撞参数调整用的SpinBox
|
||
- `_addSphereParameters(self, model, layout, start_row)`: 添加球形碰撞参数
|
||
- `_addBoxParameters(self, model, layout, start_row)`: 添加盒型碰撞参数
|
||
- `_addCapsuleParameters(self, model, layout, start_row)`: 添加胶囊体碰撞参数
|
||
- `_addPlaneParameters(self, model, layout, start_row)`: 添加平面碰撞参数
|
||
- `_hasCollision(self, model)`: 检查模型是否已有碰撞体
|
||
- `_isCollisionVisible(self, model)`: 检查碰撞是否可见
|
||
- `_toggleCollisionVisibility(self, model)`: 切换碰撞可见性
|
||
- `_updateCollisionVisibilityButton(self, model)`: 更新碰撞可见性按钮状态
|
||
- `_getCurrentCollisionShape(self, model)`: 获取当前模型的碰撞形状类型
|
||
- `_setComboToShape(self, shape_type)`: 根据形状类型设置下拉框选择
|
||
- `_getSelectedCollisionShape(self)`: 获取选中的碰撞形状类型
|
||
- `_addCollisionAndUpdate(self, model)`: 添加指定形状的碰撞体并更新界面
|
||
- `_removeCollisionAndUpdate(self, model)`: 移除模型的碰撞体并更新界面
|
||
- `_findButtonRow(self, layout)`: 查找按钮应该在的行数
|
||
- `_updateCollisionPanelState(self, model)`: 更新碰撞面板状态
|
||
- `_loadCurrentCollisionParameters(self, model, shape_type)`: 加载当前碰撞参数到界面
|
||
- `_getCollisionShapeCenter(self, solid)`: 从碰撞体形状中获取中心点
|
||
- `_loadSphereParameters(self, solid)`: 加载球形参数
|
||
- `_loadBoxParameters(self, solid)`: 加载盒型参数
|
||
- `_loadCapsuleParameters(self, solid)`: 加载胶囊体参数
|
||
- `_loadPlaneParameters(self, solid)`: 加载平面参数
|
||
- `_updateCollisionPosition(self, model, axis, value)`: 更新碰撞位置偏移
|
||
- `_updateSphereRadius(self, model, radius)`: 更新球形半径
|
||
- `_updateBoxSize(self, model, dimension, value)`: 更新盒型尺寸
|
||
- `_updateCapsuleRadius(self, model, radius)`: 更新胶囊体半径
|
||
- `_updateCapsuleHeight(self, model, height)`: 更新胶囊体高度
|
||
- `_updatePlaneNormal(self, model, axis, value)`: 更新平面法向量
|
||
- `_recreateCollisionShape(self, model, shape_type, **kwargs)`: 重新创建碰撞形状
|
||
- `_clearCollisionParameterControls(self)`: 清理碰撞参数控件
|
||
- `_refreshCollisionPanel(self, model)`: 刷新整个碰撞面板
|
||
- `_addParameterControlsToExistingPanel(self, model, shape_type)`: 向现有面板添加参数控件
|
||
- `_addSphereParametersToExisting(self, model, layout, start_row)`: 向现有面板添加球形参数
|
||
- `_addBoxParametersToExisting(self, model, layout, start_row)`: 向现有面板添加盒型参数
|
||
- `_addCapsuleParametersToExisting(self, model, layout, start_row)`: 向现有面板添加胶囊体参数
|
||
- `_addPlaneParametersToExisting(self, model, layout, start_row)`: 向现有面板添加平面参数
|
||
- `_addVisibilityButtonToExistingPanel(self, model)`: 向现有面板添加可见性按钮
|
||
- `_repositionButtons(self, new_row)`: 重新定位按钮位置
|
||
- `_hideCollisionParameterControls(self)`: 隐藏碰撞参数控件
|
||
|
||
### 10. `ui/simple_maintenance_login.py`
|
||
|
||
#### 类: SimpleMaintenanceLoginDialog
|
||
- **功能**: 简化的维修系统登录对话框
|
||
- **信号**:
|
||
- `login_success`: 登录成功信号
|
||
- **方法**:
|
||
- `__init__(self, parent=None)`: 初始化登录对话框
|
||
- `setupUI(self)`: 设置用户界面,包括标题、登录表单、提示信息和按钮,应用样式和布局
|
||
- `handle_login(self)`: 处理登录,验证账号密码,成功时发射login_success信号
|
||
|
||
#### 函数: test_simple_login
|
||
- **功能**: 测试简化登录界面
|
||
- **方法**:
|
||
- `test_simple_login()`: 测试简化登录界面功能
|
||
|
||
### 11. `ui/widgets.py`
|
||
|
||
#### 类: NewProjectDialog
|
||
- **功能**: 新建项目对话框
|
||
- **方法**:
|
||
- `__init__(self, parent=None)`: 初始化新建项目对话框
|
||
- `createTitleBar(self)`: 创建自定义标题栏
|
||
- `_applyTitleBarIcons(self)`: 为标题栏按钮应用图标
|
||
- `toggleMaximize(self)`: 切换窗口最大化/还原
|
||
- `setWindowTitle(self, title)`: 设置窗口标题
|
||
- `mousePressEvent(self, event)`: 鼠标按下事件 - 用于拖拽窗口
|
||
- `mouseDoubleClickEvent(self, event)`: 双击标题栏切换最大化
|
||
- `mouseMoveEvent(self, event)`: 鼠标移动事件 - 用于拖拽窗口
|
||
- `mouseReleaseEvent(self, event)`: 鼠标释放事件 - 停止拖拽
|
||
- `browsePath(self)`: 浏览选择项目路径
|
||
- `validate(self)`: 验证输入并关闭对话框
|
||
|
||
#### 类: CustomPanda3DWidget
|
||
- **功能**: 自定义Panda3D显示部件
|
||
- **方法**:
|
||
- `__init__(self, world, parent=None)`: 初始化自定义Panda3D显示部件
|
||
- `getActualSize(self)`: 获取Qt部件的实际渲染尺寸
|
||
- `dragEnterEvent(self, event)`: 处理拖拽进入事件
|
||
- `dragMoveEvent(self, event)`: 处理拖拽移动事件
|
||
- `dropEvent(self, event)`: 处理拖放事件
|
||
- `wheelEvent(self, event)`: 处理滚轮事件
|
||
- `mousePressEvent(self, event)`: 处理 Qt 鼠标按下事件
|
||
- `mouseReleaseEvent(self, event)`: 处理 Qt 鼠标释放事件
|
||
- `mouseMoveEvent(self, event)`: 处理 Qt 鼠标移动事件
|
||
- `cleanup(self)`: 清理Panda3D资源
|
||
|
||
#### 类: CustomFileView
|
||
- **功能**: 自定义文件浏览器
|
||
- **方法**:
|
||
- `__init__(self, world, parent=None)`: 初始化自定义文件浏览器
|
||
- `setupUI(self)`: 初始化UI设置
|
||
- `setupDragDrop(self)`: 设置拖拽功能
|
||
- `startDrag(self, supportedActions)`: 开始拖拽操作
|
||
- `mouseDoubleClickEvent(self, event)`: 双击标题栏切换最大化
|
||
|
||
#### 类: CustomAssetsTreeWidget
|
||
- **功能**: 自定义资源树形控件
|
||
- **方法**:
|
||
- `__init__(self, world, parent=None)`: 初始化自定义资源树形控件
|
||
- `showContextMenu(self, position)`: 显示右键菜单
|
||
- `_saveExpandedState(self)`: 保存展开状态
|
||
- `_restoreExpandedState(self, expanded_paths)`: 恢复展开状态
|
||
- `_refreshWithStatePreservation(self)`: 刷新树形视图并保持状态
|
||
- `createNewFolder(self, parent_item)`: 新建文件夹
|
||
- `createNewFile(self, parent_item)`: 新建文件
|
||
- `renameItem(self, item)`: 重命名文件或文件夹
|
||
- `deleteItem(self, item)`: 删除文件或文件夹
|
||
- `copyPath(self, filepath)`: 复制路径到剪贴板
|
||
- `openFile(self, filepath)`: 打开文件
|
||
- `showProperties(self, item)`: 显示属性面板
|
||
- `setupUI(self)`: 初始化UI设置
|
||
- `setupDragDrop(self)`: 设置拖拽功能
|
||
- `getProjectRootPath(self)`: 获取项目根路径下的Resources文件夹,考虑跨平台
|
||
- `load_file_tree(self)`: 加载树形视图
|
||
- `addWatchedDirectory(self, directory)`: 添加监控目录
|
||
- `removeWatchedDirectory(self, directory)`: 移除监控目录
|
||
- `onDirectoryChanged(self, path)`: 目录发生变化时处理
|
||
- `onFileChanged(self, path)`: 目录发生变化时的处理
|
||
- `refreshView(self)`: 刷新视图
|
||
- `load_directory_tree(self, path, parent_item, max_depth=3, current_depth=0)`: 递归加载目录树
|
||
- `create_simple_tree_item(self, name, path, is_folder)`: 创建简单的树形项目
|
||
- `get_file_icon(self, filename)`: 根据文件扩展名获取图标
|
||
- `startDrag(self, supportedActions)`: 开始拖拽操作
|
||
- `dragEnterEvent(self, event)`: 处理拖拽进入事件
|
||
- `dragMoveEvent(self, event)`: 处理拖拽移动事件
|
||
- `dropEvent(self, event)`: 处理拖放事件
|
||
- `_moveFiles(self, source_paths, target_dir)`: 移动文件到目标目录
|
||
- `_isChildOf(self, potential_child, potential_parent)`: 检查 potential_child 是否是 potential_parent 的子级
|
||
|
||
#### 类: CustomConsoleDockWidget
|
||
- **功能**: 自定义控制台停靠部件
|
||
- **方法**:
|
||
- `__init__(self, world, parent=None)`: 初始化控制台UI
|
||
- `setupUI(self)`: 初始化控制台UI
|
||
- `updateFPS(self)`: 更新FPS显示
|
||
- `setupConsoleRedirect(self)`: 设置控制台重定向
|
||
- `addMessage(self, message, msg_type="INFO")`: 添加消息到控制台
|
||
- `clearConsole(self)`: 清空控制台
|
||
- `executeCommand(self)`: 执行命令
|
||
- `cleanup(self)`: 清理资源
|
||
|
||
#### 类: ConsoleRedirect
|
||
- **功能**: 控制台重定向类
|
||
- **方法**:
|
||
- `__init__(self, console_widget, stream_type)`: 初始化控制台重定向
|
||
- `write(self, text)`: 重定向写入
|
||
- `flush(self)`: 刷新缓冲区
|
||
|
||
#### 类: StyledMessageBox
|
||
- **功能**: 统一样式的消息框辅助类
|
||
- **变量**:
|
||
- `MESSAGEBOX_STYLE`: 消息框样式
|
||
- `INPUTDIALOG_STYLE`: 输入对话框样式
|
||
- `BUTTON_STYLE`: 按钮样式
|
||
- **方法**:
|
||
- `information(parent, title, message)`: 显示信息提示框
|
||
- `question(parent, title, message, buttons=QMessageBox.Yes | QMessageBox.No, defaultButton=QMessageBox.No)`: 显示确认对话框
|
||
- `warning(parent, title, message)`: 显示警告对话框
|
||
- `critical(parent, title, message)`: 显示错误对话框
|
||
- `getText(parent, title, label, text="")`: 显示样式统一的文本输入对话框
|
||
|
||
#### 类: UniversalMessageDialog
|
||
- **功能**: 通用消息对话框类 - 支持不同图标和按钮配置
|
||
- **枚举**:
|
||
- `SUCCESS`: 成功图标
|
||
- `WARNING`: 警告图标
|
||
- `ERROR`: 错误图标
|
||
- `INFO`: 信息图标
|
||
- **方法**:
|
||
- `__init__(self, parent, title, message, message_type=INFO, show_cancel=True, confirm_text="确认", cancel_text="取消", icon_size=QSize(20, 20))`: 初始化通用消息对话框
|
||
- `_get_message_icon(self)`: 根据消息类型获取对应图标
|
||
- `_setup_styles(self)`: 设置对话框样式
|
||
- `_create_ui(self, message)`: 构建用户界面
|
||
- `_create_title_bar(self)`: 创建自定义标题栏
|
||
- `_apply_title_bar_icons(self)`: 应用标题栏图标
|
||
- `setWindowTitle(self, title)`: 设置窗口标题
|
||
- `mousePressEvent(self, event)`: 鼠标按下事件 - 用于拖拽窗口
|
||
- `mouseMoveEvent(self, event)`: 鼠标移动事件 - 用于拖拽窗口
|
||
- `mouseReleaseEvent(self, event)`: 鼠标释放事件 - 停止拖拽
|
||
- `show_success(parent, title, message, show_cancel=False, confirm_text="确认")`: 显示成功消息对话框
|
||
- `show_warning(parent, title, message, show_cancel=True, confirm_text="确认", cancel_text="取消")`: 显示警告消息对话框
|
||
- `show_error(parent, title, message, show_cancel=False, confirm_text="确认")`: 显示错误消息对话框
|
||
- `show_info(parent, title, message, show_cancel=True, confirm_text="确认", cancel_text="取消")`: 显示信息消息对话框
|
||
|
||
#### 类: StyledTextInputDialog
|
||
- **功能**: 与新建项目样式一致的文本输入对话框
|
||
- **方法**:
|
||
- `__init__(self, parent, title, label_text="", placeholder="", default_text="")`: 初始化文本输入对话框
|
||
- `_createTitleBar(self)`: 创建标题栏
|
||
- `_applyTitleBarIcons(self)`: 应用标题栏图标
|
||
- `setWindowTitle(self, title)`: 设置窗口标题
|
||
- `_onAccept(self)`: 确认按钮点击事件
|
||
- `text(self)`: 获取输入文本
|
||
- `mousePressEvent(self, event)`: 鼠标按下事件
|
||
- `mouseMoveEvent(self, event)`: 鼠标移动事件
|
||
- `mouseReleaseEvent(self, event)`: 鼠标释放事件
|
||
|
||
#### 类: CustomTreeWidget
|
||
- **功能**: 自定义场景树部件
|
||
- **方法**:
|
||
- `__init__(self, world, parent=None)`: 初始化自定义场景树部件
|
||
- `initData(self)`: 初始化变量
|
||
- `setupUI(self)`: 初始化UI设置
|
||
- `setupDragDrop(self)`: 设置拖拽功能
|
||
- `setupContextMenu(self)`: 设置右键菜单
|
||
- `showContextMenu(self, position)`: 显示右键菜单
|
||
- `dropEvent(self, event)`: 处理拖放事件
|
||
- `_ensureUnderSceneRoot(self, item)`: 确保节点在场景根节点下
|
||
- `isValidParentChild(self, dragged_item, target_item)`: 检查是否是有效的父子关系
|
||
- `_validateGUITypeCompatibility(self, dragged_item, target_item)`: 验证GUI元素类型兼容性
|
||
- `_getRootNode(self, item)`: 获取树中节点的根节点项
|
||
- `dragEnterEvent(self, event)`: 处理拖入事件
|
||
- `dragMoveEvent(self, event)`: 处理拖动事件
|
||
- `keyPressEvent(self, event)`: 处理键盘按键事件
|
||
- `_preprocess_light_items_for_deletion(self, selected_items)`: 预处理灯光节点删除
|
||
- `delete_items(self, selected_items)`: 删除选中的item
|
||
- `delete_item(self, panda_node)`: 删除指定节点 panda3D
|
||
- `clear_tree(self)`: 清空UI树
|
||
- `_apply_font_to_item(self, item)`: 根据节点层级设置字体大小
|
||
- `_apply_font_recursively(self, item)`: 递归应用字体样式
|
||
- `_handle_rows_inserted(self, parent_index, first, last)`: 在插入新节点时自动调整字体
|
||
- `_cleanup_panda_node_resources(self, panda_node)`: 清理与Panda3D节点相关的所有资源
|
||
- `update_item_name(self, text, item)`: 树节点名字
|
||
- `_findSceneRoot(self)`: 查找场景根节点
|
||
- `create_model_items(self, model: NodePath)`: 创建模型项
|
||
- `_add_all_children_unconditionally(self, parent_item: QTreeWidgetItem, node_path: NodePath)`: 无条件地、递归地添加一个节点下的所有子节点
|
||
- `_generateUniqueNodeName(self, base_name, parent_node)`: 生成唯一的节点名称
|
||
- `add_node_to_tree_widget(self, node, parent_item, node_type)`: 将node元素添加到树形控件
|
||
- `update_selection_and_properties(self, node, qt_item)`: 更新选择状态和属性面板
|
||
- `get_target_parents_for_creation(self)`: 获取创建目标的父节点列表
|
||
- `_isValidParentForNewNode(self, item)`: 检查节点是否适合作为新节点的父节点
|
||
- `get_target_parents_for_gui_creation(self)`: 获取GUI创建目标的父节点列表
|
||
- `isValidParentForGUI(self, item)`: 检查节点是否适合作为GUI元素的父节点
|
||
- `is_gui_element(self, node)`: 判断节点是否是GUI元素
|
||
- `calculate_relative_gui_position(self, pos, parent_gui)`: 计算相对于GUI父节点的位置
|
||
- `add_existing_node(self, panda_node, node_type="SCENE_NODE", parent_item=None)`: 将已存在的Panda3D节点添加到Qt树形控件中
|
||
- `_findRenderItem(self)`: 查找render根节点项目
|
||
- `create_item(self, node_type="empty", selected_items=None)`: 创建不同类型的场景节点
|
||
- `_determineParentItems(self, selected_items)`: 确定父节点项目列表
|
||
- `_setupNewNodeDefaults(self, node)`: 设置新节点的默认属性
|
||
- `_createEmptyNode(self, parent_node, parent_item)`: 创建空节点
|
||
- `_createSpotLightNode(self, parent_node, parent_item)`: 创建聚光灯节点
|
||
- `_createPointLightNode(self, parent_node, parent_item)`: 创建点光源节点 |