EG/功能与源代码对应关系清单.md
2025-10-24 14:43:42 +08:00

174 KiB
Raw Blame History

功能与源代码对应关系清单

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): 创建点光源节点