128 KiB
128 KiB
功能与源代码对应关系清单
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 视图的 URLaddModelToCesium(): 向 Cesium 添加模型addCesiumTilesetToScene(): 在 Panda3D 场景中添加 Cesium 3D TilesremoveModelFromCesium(): 从 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(): 更新所有地形的LODsetTerrainLODThreshold(): 设置地形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__(): 初始化维护GUIsetup_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(): 显示GUIhide_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阴影Stagecreate(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的阴影Atlasbind_to_stage(self, target_stage)- 将阴影数据绑定到目标stagecleanup(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 Stagecreate(self, width, height, vr_camera)- 创建GBuffer渲染目标get_gbuffer_textures(self)- 获取GBuffer纹理字典make_gbuffer_ubo(self)- 创建GBuffer UBOget_internal_buffer(self)- 获取内部GraphicsOutputcleanup(self)- 清理资源
- 类: VRLightingStage
__init__(self, name, pipeline)- 初始化VR光照Stagecreate(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 UBOget_shaded_texture(self)- 获取光照计算后的纹理cleanup(self)- 清理资源
- 类: VRAmbientStage
__init__(self, name, pipeline)- 初始化VR环境光Stagecreate(self, width, height, lighting_stage, gbuffer_stage)- 创建环境光渲染目标_bind_environment_inputs(self)- 从主Pipeline获取环境相关shader inputs_set_vr_scene_data(self)- 创建VR专用的MainSceneData UBOget_ambient_scene_texture(self)- 获取带环境光的场景纹理cleanup(self)- 清理资源
- 类: VRFinalStage
__init__(self, name, pipeline)- 初始化VR最终合成Stagecreate(self, width, height, ambient_stage)- 创建最终合成目标_set_vr_scene_data(self)- 创建VR专用的MainSceneData UBOget_final_texture(self)- 获取最终输出纹理get_internal_buffer(self)- 获取内部GraphicsOutputcleanup(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的内部bufferget_right_buffer(self)- 获取右眼Final stage的内部buffercleanup_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)- 清理性能HUDget_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)- 重新创建visualizercleanup(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 Managerapply_effects_to_scene(self, scene_root)- 为场景根节点下的所有模型应用effectsapply_effect_to_model(self, model_node, effect_config=None)- 为单个模型节点应用RenderPipeline effectapply_effect_to_model_simple(self, model_node)- 为模型应用简化版effect_should_apply_effect(self, node)- 判断是否应该为节点应用effectapply_effects_to_new_models(self, model_list)- 为新添加的模型列表批量应用effectsupdate_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 视图的 URLaddModelToCesium(): 向 Cesium 添加模型addCesiumTilesetToScene(): 在 Panda3D 场景中添加 Cesium 3D TilesremoveModelFromCesium(): 从 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同步器类,继承自QTimerQPanda3DWidget: 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.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): 设置UIIconPreviewWidget.showIcon(self, icon_name: str, icon: QIcon): 显示图标IconManagerDialog.__init__(self, parent=None): 初始化图标管理器对话框IconManagerDialog.setupUI(self): 设置UIIconManagerDialog.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 URLonAddModelClicked(self): 处理添加模型按钮点击showAddModelDialog(self): 显示添加模型对话框getModelCoordinates(self): 获取模型坐标信息onLoadCesiumTileset(self): 加载 Cesium 3D TilesonToolChanged(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): 初始化控制台UIsetupUI(self): 初始化控制台UIupdateFPS(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): 删除选中的itemdelete_item(self, panda_node): 删除指定节点 panda3Dclear_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): 创建点光源节点