EG/源代码架构说明.md
2025-10-23 14:57:57 +08:00

44 KiB
Raw Blame History

源代码整体架构说明

1. 项目整体结构

项目根目录包含以下主要目录和文件:

  • core/: 核心模块包含世界类、VR系统、选择系统、工具管理器、脚本系统等核心功能。
  • gui/: GUI管理模块负责2D和3D GUI元素的创建与管理。
  • project/: 项目管理模块,处理项目文件的加载、保存等操作。
  • scene/: 场景管理模块,负责场景中模型的管理。
  • QPanda3D/: Panda3D与PyQt5集成库提供Panda3D渲染窗口的Qt部件封装。
  • scripts/: 脚本文件目录包含各种可挂载到对象的Python脚本。
  • core/vr/: VR子系统包含VR相关的配置、交互、性能、渲染、测试、跟踪和可视化模块。
  • render_pipeline/ 渲染管线模块
  • config/: 配置文件目录包含VR设置等配置文件。
  • Resources/: 资源文件目录,包含模型、纹理等资源。
  • requirements/: 依赖管理文件目录。
  • ui/: UI组件和主窗口定义。
  • icons/: 图标资源文件。
  • templates/: 模板文件。
  • tex/: 纹理资源文件。
  • vr_actions/: VR动作相关文件。
  • main.py: 程序主入口文件。
  • Start_Run.py: 启动脚本。

2. 各模块详细说明

接下来将详细说明每个模块及其包含的文件。

2.1 core模块

core/目录包含了应用程序的核心功能模块,是整个系统的基础。

2.1.1 核心文件

  1. __init__.py: Python包初始化文件。

  2. world.py:

    • 定义了CoreWorld是整个3D世界的基础类。
    • 负责基本的场景设置,如相机、光照、坐标轴、地面网格等。
    • 提供资源路径管理和中文字体支持。
  3. vr_manager.py:

    • VR管理器主文件负责VR系统的初始化和管理。
    • 集成了OpenVR/SteamVR支持处理HMD和控制器的跟踪。
    • 管理VR渲染系统支持普通渲染和RenderPipeline高级渲染。
    • 包含VR交互系统抓取、传送、摇杆控制等
  4. selection.py:

    • 选择系统模块。
    • 实现了3D场景中对象的选择功能。
    • 提供选择历史管理和选择对象的可视化。
  5. tool_manager.py:

    • 工具管理器模块。
    • 管理各种编辑工具(选择、移动、旋转、缩放等)。
    • 处理工具状态和工具切换逻辑。
  6. script_system.py:

    • 脚本系统模块。
    • 管理游戏对象的脚本挂载和执行。
    • 提供脚本的热重载功能。
  7. gui_manager.py:

    • GUI管理器模块。
    • 负责2D和3D GUI元素的创建和管理。
    • 提供GUI编辑模式和属性面板集成。
  8. terrain_manager.py:

    • 地形管理器模块。
    • 处理3D地形的创建、编辑和渲染。
    • 支持高度图导入和LOD更新。
  9. collision_manager.py:

    • 碰撞管理器模块。
    • 管理场景中的碰撞检测和响应。
    • 提供碰撞历史和统计功能。
  10. event_handler.py:

    • 事件处理器模块。
    • 处理用户输入事件和系统事件。
    • 提供事件分发和处理机制。
  11. Command_System.py:

    • 命令系统模块。
    • 实现命令模式,支持撤销/重做功能。
    • 管理命令的执行和历史记录。
  12. InfoPanelManager.py:

    • 信息面板管理器模块。
    • 管理场景中信息面板的显示和更新。
    • 提供性能监控和调试信息显示。
  13. patrol_system.py:

    • 巡检系统模块。
    • 实现自动化巡检路径和逻辑。
    • 支持巡检点设置和巡检过程监控。
  14. assembly_interaction.py:

    • 装配交互模块。
    • 处理复杂装配体的交互逻辑。
    • 支持装配和拆卸操作。
  15. CustomMouseController.py:

    • 自定义鼠标控制器模块。
    • 提供定制化的鼠标操作控制。
    • 支持不同的鼠标交互模式。
  16. maintenance_gui.py:

    • 维护GUI模块。
    • 提供设备维护相关的GUI界面。
    • 支持维护任务管理和状态显示。

2.1.2 VR子模块

core/vr/目录包含了VR系统的各个子模块

  1. config/: VR配置管理模块。

    • __init__.py: Python包初始化文件。
    • vr_config.py: VR配置管理器模块负责VR设置的保存、加载和管理包括渲染模式、分辨率缩放、质量预设等参数的配置和管理。
    • joystick_config.py: VR摇杆配置模块提供摇杆交互的配置选项和预设包括不同的转向模式和灵敏度设置、传送参数调整等。
    • shadow_stage.py: VR专用阴影Stage模块为VR渲染管线提供阴影支持采用智能复用策略可选择复用主Pipeline的ShadowAtlas或创建独立的ShadowAtlas。
    • vr_settings.json: VR配置文件存储VR系统的各种设置参数。
  2. interaction/: VR交互系统模块。

    • __init__.py: Python包初始化文件。
    • actions.py: VR动作系统模块基于OpenVR Action系统提供高级的输入处理和动作映射包括VR动作清单管理、按钮和轴输入处理、触觉反馈、动作集管理等。
    • grab.py: VR抓取交互模块提供VR手柄与3D场景的交互功能包括射线投射和碰撞检测、对象选择和高亮、对象抓取和移动、UI交互、距离抓取等。
    • joystick.py: VR摇杆交互系统模块提供类似SteamVR的摇杆交互功能包括摇杆左右转向旋转视角、摇杆向前传送预览抛物线轨迹、松开摇杆执行传送、死区处理和平滑控制等。
    • teleport.py: VR传送系统模块提供VR传送功能包括抛物线轨迹计算和可视化、传送点有效性检测、传送执行、可视化反馈抛物线、落点标记等。
  3. performance/: VR性能监控模块。

    • __init__.py: Python包初始化文件导出VRPerformanceMonitor类。
    • monitoring.py: VR性能监控子系统负责VR应用的性能监控、GPU计时、管线统计和性能诊断包含完整的性能报告、监控核心、GPU计时、管线统计、诊断工具、调试控制、配置、查询和控制方法。
    • optimization.py: VR对象池和优化系统负责VR系统中的对象池管理、垃圾回收控制、分辨率缩放和性能模式控制。
    • MIGRATION_REPORT.md: VR性能监控子系统迁移完成报告详细记录了性能监控功能的迁移过程和验证结果。
  4. rendering/: VR渲染模块。

    • __init__.py: Python包初始化文件。
    • stages.py: VR专用渲染Stages模块为VR创建简化但完整的渲染管线支持GBuffer生成延迟渲染基础、光照计算复用主Pipeline的LightManager、最终合成tone mapping + gamma校正包含VRGBufferStage、VRLightingStage、VRAmbientStage、VRFinalStage和VRPipelineController类。
  5. testing/: VR测试模块。

    • __init__.py: Python包初始化文件导出VRTestMode类。
    • test_mode.py: VR测试调试子系统负责VR测试模式、HUD显示和性能测试功能包含测试模式控制、纹理管理、显示系统、HUD系统、状态查询和性能测试方法支持VR内容直接显示在屏幕上、实时性能监控HUD、左眼/右眼/立体三种显示模式、渐进式测试功能和性能测试工具。
  6. tracking/: VR跟踪模块。

    • __init__.py: Python包初始化文件。
    • controllers.py: VR手柄管理模块基于panda3d-openvr参考实现提供完整的VR手柄追踪和交互功能包括手柄位置和姿态追踪、按钮和触摸板输入处理、手柄可视化和射线显示、震动反馈支持包含VRController基类和LeftController、RightController子类。
  7. visualization/: VR可视化模块。

    • __init__.py: Python包初始化文件。
    • controllers.py: VR可视化模块提供VR手柄和交互元素的高级可视化功能包括手柄3D模型渲染、交互射线显示、按钮状态可视化、触摸板和扳机反馈包含VRControllerVisualizer类。
    • effects.py: VR Effects管理器模块为VR场景中的模型自动应用RenderPipeline Effects包含VREffectsManager类和setup_vr_model_effects便捷函数。

2.1.3 资源文件

  • RotationHandleFull.fbx, RotationHandleQuarter.fbx, TranslateArrowHandle.fbx, UniformScaleHandle.fbx: 工具控制器的3D模型文件。

2.2 gui模块

gui/目录包含了GUI管理系统负责2D和3D GUI元素的创建和管理。

2.2.1 核心文件

  1. __init__.py: Python包初始化文件导出GUIManager类。

  2. gui_manager.py:

    • GUI管理器主文件定义了GUIManager类。
    • 负责各种GUI元素的创建包括
      • 2D GUI元素按钮、标签、输入框、2D图像、2D视频屏幕等
      • 3D GUI元素3D文本、3D图像、视频屏幕、球形视频、虚拟屏幕等
    • 提供GUI编辑模式支持在独立预览窗口中查看和编辑GUI元素。
    • 支持GUI元素的属性编辑、复制、删除等操作。
    • 集成Cesium地图视图功能支持在GUI中嵌入地图显示。
    • 提供GUI元素在场景树中的管理与属性面板集成。
    • 支持视频播放控制功能,包括播放、暂停、停止和时间控制。
    • 支持2D和3D图像纹理更新功能。

2.3 project模块

project/目录包含了项目管理系统,负责项目的生命周期管理。

2.3.1 核心文件

  1. __init__.py: Python包初始化文件导出ProjectManagerNewProjectDialog类。

  2. project_manager.py:

    • 项目管理器主文件,定义了ProjectManager类。
    • 负责项目的完整生命周期管理,包括:
      • 创建新项目:提供项目创建向导,生成标准项目结构
      • 打开项目:加载项目配置和场景文件
      • 保存项目:保存场景数据和项目配置
      • 打包项目:将项目打包为可执行文件,支持多平台发布
    • 提供项目配置管理,维护项目元数据(创建时间、修改时间、版本等)。
    • 集成文件浏览器,支持项目文件的可视化管理。
    • 提供窗口标题更新等辅助功能。
    • 支持通过路径直接打开项目功能。
    • 在打包过程中复制Resources、scripts和RenderPipelineFile目录。
    • 保存GUI元素信息到JSON文件供打包后使用。

2.4 QPanda3D模块

QPanda3D/目录包含了Panda3D与PyQt5集成的库实现了在Qt应用程序中嵌入Panda3D渲染窗口的功能。

2.4.1 核心文件

  1. __init__.py: Python包初始化文件导出主要的类。

  2. QPanda3DWidget.py:

    • 定义了QPanda3DWidget类,这是一个继承自QWidget的自定义Qt控件。
    • 负责在Qt界面中显示Panda3D渲染内容。
    • 处理用户输入事件鼠标、键盘并将其转换为Panda3D事件。
    • 集成定时器系统定期更新Panda3D场景和重绘Qt控件。
    • 提供窗口尺寸调整功能,保持渲染内容与窗口尺寸同步。
    • 实现了保持宽高比的图像缩放和居中显示功能。
    • 添加了异常处理机制静默处理TransformState断言错误和其他异常。
  3. Panda3DWorld.py:

    • 定义了Panda3DWorld类,继承自ShowBase
    • 负责初始化Panda3D环境设置离屏渲染模式。
    • 集成RenderPipeline渲染管线提供高质量的渲染效果。
    • 创建用于Qt显示的纹理输出接口。
    • 提供鼠标控制器集成。
    • 添加了VR性能优化配置包括单缓冲、禁用VSync等设置。
    • 实现了窗口尺寸调整功能支持同步Panda3D窗口尺寸到Qt窗口尺寸。
  4. QMouseWatcherNode.py:

    • 定义了QMouseWatcherNode类,继承自MouseWatcher
    • 实现了通过父级QWidget获取鼠标位置和状态的功能。
    • 为Panda3D提供鼠标输入数据。
  5. QPanda3D_Keys_Translation.py:

    • 定义了QPanda3D_Key_translation字典。
    • 实现了Qt键盘按键到Panda3D键盘事件的映射。
  6. QPanda3D_Buttons_Translation.py:

    • 定义了QPanda3D_Button_translation字典。
    • 实现了Qt鼠标按键到Panda3D鼠标事件的映射。
  7. QPanda3D_Modifiers_Translation.py:

    • 定义了QPanda3D_Modifier_translation字典。
    • 实现了Qt修饰键如Shift、Ctrl、Alt到Panda3D修饰键的映射。

2.5 scene模块

scene/目录包含了场景管理系统,负责场景中模型、光源、地形等元素的管理。

2.5.1 核心文件

  1. __init__.py: Python包初始化文件导出SceneManager类。

  2. scene_manager.py:

    • 场景管理器主文件,定义了SceneManager类。
    • 负责场景中各种元素的管理,包括:
      • 模型导入支持多种3D模型格式FBX、GLB等提供模型转换和优化功能
      • 光源管理:创建和管理聚光灯、点光源等不同类型的光源
      • 场景保存和加载支持将整个场景保存为BAM文件格式并能完整加载恢复
      • 碰撞检测:为模型设置碰撞体,支持选择和交互功能
      • Cesium 3D Tiles集成支持加载和显示地理空间数据
      • GUI元素管理与GUI系统集成管理场景中的GUI元素
    • 提供模型处理功能,包括材质应用、缩放标准化、位置调整等。
    • 支持异步模型加载,提升用户体验。
    • 集成脚本系统,支持为场景元素挂载和管理脚本。
  3. util.py:

    • 工具模块,提供跨平台路径处理功能。
    • 定义了CrossPlatformPathHandler类,用于处理不同操作系统的路径问题。
    • 提供路径标准化、文件搜索、错误处理等辅助功能。

2.6 scripts模块

scripts/目录包含了各种可挂载到场景对象的脚本文件,用于实现对象的动态行为。

2.6.1 核心概念

脚本系统基于组件化设计,每个脚本都是一个继承自ScriptBase的Python类。脚本可以被挂载到场景中的任何对象上为对象添加动态行为。

2.6.2 脚本文件说明

  1. example_script.py:

    • 示例脚本,演示了脚本的基本结构和生命周期方法。
    • 实现了简单的旋转功能。
  2. Rotate_H_Script.py:

    • H轴偏航旋转脚本实现对象绕Y轴的机器人式旋转。
    • 支持设置旋转角度范围、速度、停顿时间等参数。
    • 提供多种预设模式(慢速、快速、平滑)。
  3. Rotate_P_Script.py:

    • P轴俯仰旋转脚本实现对象绕X轴的机器人式旋转。
    • 支持设置旋转角度范围、速度、停顿时间等参数。
    • 提供多种预设模式(慢速、快速、平滑)。
  4. Rotate_R_Script.py:

    • R轴滚动旋转脚本实现对象绕Z轴的旋转。
    • 简化版旋转脚本,适用于基本的旋转需求。
  5. MoverScript.py:

    • 移动脚本,实现对象在指定轴向上的来回移动。
    • 支持设置移动距离、速度和移动轴X/Y/Z
  6. ScalerScript.py:

    • 缩放脚本,实现对象的呼吸式缩放效果。
    • 支持设置基础缩放、缩放幅度、缩放速度等参数。
    • 提供统一缩放和非统一缩放选项。
  7. ColorChangerScript.py:

    • 颜色变化脚本,实现对象颜色的动态变化。
    • 支持多种颜色模式:彩虹、脉冲、淡入淡出、闪烁。
    • 可调整颜色变化速度和强度。
  8. BouncerScript.py:

    • 跳跃脚本,实现对象的上下跳跃效果。
    • 支持多种跳跃类型:正弦波、绝对值正弦波、方波。
    • 可设置跳跃高度和速度。
  9. ComboAnimatorScript.py:

    • 组合动画脚本,可以同时控制对象的多个属性(位置、旋转、缩放)。
    • 支持复杂的动画序列和时间控制。
  10. FollowerScript.py:

    • 跟随脚本,使对象跟随另一个对象或鼠标位置移动。
    • 支持平滑跟随和延迟跟随效果。
  11. TestMover.pyTestRotator.pyTestScaler.py:

    • 测试脚本,用于验证脚本系统的基本功能。
  12. a.pyR_P.pyR_R.pyRotate_H_Script.py:

    • 其他功能脚本,实现特定的动画或交互效果。

2.7 RenderPipelineFile模块

RenderPipelineFile/目录包含了Panda3D的高级渲染管线实现提供了基于物理的着色、延迟渲染和后处理效果。

2.7.1 核心特性

  • 基于物理的着色Physically Based Shading
  • 延迟渲染Deferred Rendering
  • 高级后处理效果和框架
  • 时间ofday系统
  • 插件系统

2.7.2 目录结构

  1. config/: 配置文件目录

    • debugging.yaml: 调试配置
    • panda3d-config.prc: Panda3D配置
    • pipeline.yaml: 渲染管线配置
    • plugins.yaml: 插件配置
    • stages.yaml: 渲染阶段配置
    • task-scheduler.yaml: 任务调度配置
  2. data/: 数据资源目录

    • builtin_models/: 内置模型资源
      • skybox/: 天空盒模型
    • default_cubemap/: 默认立方体贴图资源
      • source/: 源文件目录
      • source_2/: 源文件目录2
      • cubemap.txo.pz: 立方体贴图文件
      • filter.compute.glsl: 过滤计算着色器
      • filter.py: 过滤脚本
    • 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: 生成参考脚本
      • run_mitsuba.bat: Mitsuba运行脚本
    • film_grain/: 胶片颗粒资源
      • generate.py: 生成脚本
      • 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: 示例脚本
    • setup/: 安装设置资源
      • check_requirements.py: 检查依赖脚本
    • generate_txo_files.py: TXO文件生成脚本
    • install.flag: 安装标志文件
  3. 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: 粗糙度调试测试效果
  4. rpcore/: 核心渲染管线模块

    • __init__.py: Python包初始化文件

    • common_resources.py: 通用资源管理

    • effect.py: 效果管理

    • globals.py: 全局变量和设置

    • gpu_command_queue.py: GPU命令队列

    • image.py: 图像处理

    • light_manager.py: 光源管理器

    • loader.py: 资源加载器

    • mount_manager.py: 挂载管理器

    • render_pipeline.py: 渲染管线主类

    • render_stage.py: 渲染阶段基类

    • render_target.py: 渲染目标管理

    • rpobject.py: RP对象基类

    • stage_manager.py: 阶段管理器

    • 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++源代码目录
        • config_rsnative.cpp/h/N: 原生配置模块
        • gpu_command_list.cpp/h: GPU命令列表
        • gpu_command.cpp/h/I: GPU命令
        • ies_dataset.cpp/h: IES数据集
        • internal_light_manager.cpp/h/I: 内部光源管理器
        • pointer_slot_storage.h: 指针槽存储
        • pssm_camera_rig.cpp/h/I: PSSM相机支架
        • pssm_helper.cpp/h: PSSM辅助函数
        • README.md: 说明文档
        • rp_light.cpp/h/I: RP光源基类
        • rp_point_light.cpp/h/I: RP点光源
        • rp_spot_light.cpp/h/I: RP聚光灯
        • shadow_atlas.cpp/h/I: 阴影图集
        • shadow_manager.cpp/h/I: 阴影管理器
        • shadow_source.cpp/h/I: 阴影源
        • tag_state_manager.cpp/h/I: 标签状态管理器
      • .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/: 基于图像的光照着色器
        • cubemap_diffuse_filter.frag.glsl: 立方体贴图漫反射过滤片段着色器
        • cubemap_diffuse.frag.glsl: 立方体贴图漫反射片段着色器
        • cubemap_specular_filter_first.frag.glsl: 立方体贴图镜面反射过滤第一阶段片段着色器
        • cubemap_specular_filter.frag.glsl: 立方体贴图镜面反射过滤片段着色器
        • cubemap_specular_prefilter_first.frag.glsl: 立方体贴图镜面反射预过滤第一阶段片段着色器
        • cubemap_specular_prefilter.frag.glsl: 立方体贴图镜面反射预过滤片段着色器
      • includes/: 包含文件
        • brdf.inc.glsl: BRDF函数包含文件
        • color_spaces.inc.glsl: 颜色空间包含文件
        • common_functions.inc.glsl: 通用函数包含文件
        • envprobes.inc.glsl: 环境探针包含文件
        • forward_shading.inc.glsl: 前向渲染包含文件
        • gaussian_weights.inc.glsl: 高斯权重包含文件
        • gbuffer.inc.glsl: G缓冲包含文件
        • halton_sequences.inc.glsl: Halton序列包含文件
        • ies_lighting.inc.glsl: IES光照包含文件
        • importance_sampling.inc.glsl: 重要性采样包含文件
        • light_classification.inc.glsl: 光源分类包含文件
        • light_culling.inc.glsl: 光源剔除包含文件
        • light_data.inc.glsl: 光源数据包含文件
        • light_data.struct.glsl: 光源数据结构包含文件
        • lighting_pipeline.inc.glsl: 光照管线包含文件
        • lights.inc.glsl: 光源包含文件
        • material.inc.glsl: 材质包含文件
        • noise.inc.glsl: 噪声包含文件
        • nonviewspace_shading_pipeline.inc.glsl: 非视图空间着色管线包含文件
        • normal_mapping.inc.glsl: 法线映射包含文件
        • normal_packing.inc.glsl: 法线打包包含文件
        • poisson_disk.inc.glsl: 泊松圆盘包含文件
        • sampling_sequences.inc.glsl: 采样序列包含文件
        • shadows.inc.glsl: 阴影包含文件
        • skin_shading.inc.glsl: 皮肤着色包含文件
        • source_data.struct.glsl: 源数据结构包含文件
        • temporal_resolve.inc.glsl: 时间解析包含文件
        • tonemapping.inc.glsl: 色调映射包含文件
        • transforms.inc.glsl: 变换包含文件
        • upsampling.inc.glsl: 上采样包含文件
        • vertex_output.struct.glsl: 顶点输出结构包含文件
      • templates/: 模板文件
        • envmap.frag.glsl: 环境贴图片段着色器模板
        • forward.frag.glsl: 前向渲染片段着色器模板
        • gbuffer.frag.glsl: G缓冲片段着色器模板
        • shadow.frag.glsl: 阴影片段着色器模板
        • vertex.vert.glsl: 顶点着色器模板
        • voxelize.frag.glsl: 体素化片段着色器模板
      • ambient_stage.frag.glsl: 环境阶段片段着色器
      • apply_lights.frag.glsl: 应用光照片段着色器
      • bilateral_blur.frag.glsl: 双边模糊片段着色器
      • bilateral_halfres_blur.frag.glsl: 半分辨率双边模糊片段着色器
      • bilateral_upscale.frag.glsl: 双边上采样片段着色器
      • collect_used_cells.frag.glsl: 收集使用单元片段着色器
      • combine_velocity.frag.glsl: 合并速度片段着色器
      • cull_lights.frag.glsl: 剔除光源片段着色器
      • default_gui_shader.vert.glsl: 默认GUI顶点着色器
      • default_post_process_instanced.vert.glsl: 默认后期处理实例化顶点着色器
      • default_post_process.vert.glsl: 默认后期处理顶点着色器
      • downscale_depth.frag.glsl: 深度下采样片段着色器
      • final_present_stage.frag.glsl: 最终呈现阶段片段着色器
      • final_stage.frag.glsl: 最终阶段片段着色器
      • flag_used_cells.frag.glsl: 标记使用单元片段着色器
      • fps_chart_update.compute.glsl: FPS图表更新计算着色器
      • fps_chart.compute.glsl: FPS图表计算着色器
      • group_lights.frag.glsl: 分组光源片段着色器
      • pixel_inspector.frag.glsl: 像素检查器片段着色器
      • process_command_queue.frag.glsl: 处理命令队列片段着色器
      • render_pipeline_base.inc.glsl: 渲染管线基础包含文件
      • tiled_culling.vert.glsl: 平铺剔除顶点着色器
      • upscale_stage.frag.glsl: 上采样阶段片段着色器
      • view_frustum_cull.frag.glsl: 视锥剔除片段着色器
      • visualize_exposure.compute.glsl: 可视化曝光计算着色器
    • 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缓冲阶段
      • 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: 任务调度器
  5. rpplugins/: 插件目录

    • __init__.py: 初始化文件
    • ao/: 环境光遮蔽插件
      • __init__.py: 初始化文件
      • shader/: 着色器目录
      • ao_stage.py: AO阶段
      • config.yaml: 配置文件
      • plugin.py: 插件主文件
    • bloom/: 泛光效果插件
      • __init__.py: 初始化文件
      • resources/: 资源目录
      • shader/: 着色器目录
      • bloom_stage.py: 泛光阶段
      • config.yaml: 配置文件
      • plugin.py: 插件主文件
    • clouds/: 云渲染插件
      • __init__.py: 初始化文件
      • resources/: 资源目录
      • shader/: 着色器目录
      • apply_clouds_stage.py: 应用云阶段
      • cloud_voxel_stage.py: 云体素阶段
      • config.yaml: 配置文件
      • plugin.py: 插件主文件
    • color_correction/: 颜色校正插件
      • __init__.py: 初始化文件
      • resources/: 资源目录
      • shader/: 着色器目录
      • auto_exposure_stage.py: 自动曝光阶段
      • color_correction_stage.py: 颜色校正阶段
      • config.yaml: 配置文件
      • manual_exposure_stage.py: 手动曝光阶段
      • plugin.py: 插件主文件
      • sharpen_stage.py: 锐化阶段
      • tonemapping_stage.py: 色调映射阶段
    • dof/: 景深效果插件
      • __init__.py: 初始化文件
      • shader/: 着色器目录
      • config.yaml: 配置文件
      • dof_stage.py: 景深阶段
      • plugin.py: 插件主文件
    • env_probes/: 环境探针插件
      • __init__.py: 初始化文件
      • shader/: 着色器目录
      • apply_envprobes_stage.py: 应用环境探针阶段
      • config.yaml: 配置文件
      • cull_probes_stage.py: 剔除探针阶段
      • environment_capture_stage.py: 环境捕捉阶段
      • environment_probe.py: 环境探针类
      • plugin.py: 插件主文件
      • probe_manager.py: 探针管理器
    • forward_shading/: 前向渲染插件
      • __init__.py: 初始化文件
      • shader/: 着色器目录
      • config.yaml: 配置文件
      • forward_stage.py: 前向渲染阶段
      • plugin.py: 插件主文件
    • fxaa/: FXAA抗锯齿插件
      • __init__.py: 初始化文件
      • shader/: 着色器目录
      • config.yaml: 配置文件
      • fxaa_stage.py: FXAA阶段
      • plugin.py: 插件主文件
    • motion_blur/: 运动模糊插件
      • __init__.py: 初始化文件
      • shader/: 着色器目录
      • config.yaml: 配置文件
      • motion_blur_stage.py: 运动模糊阶段
      • plugin.py: 插件主文件
    • plugin_prefab/: 插件预制件
      • __init__.py: 初始化文件
      • resources/: 资源目录
      • shader/: 着色器目录
      • config.yaml: 配置文件
      • demo_stage.py: 演示阶段
      • plugin.py: 插件主文件
    • pssm/: 平行分割阴影贴图插件
      • __init__.py: 初始化文件
      • shader/: 着色器目录
      • config.yaml: 配置文件
      • plugin.py: 插件主文件
      • 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: 插件主文件
      • scattering_envmap_stage.py: 散射环境贴图阶段
      • scattering_methods.py: 散射方法
      • scattering_stage.py: 散射阶段
    • skin_shading/: 皮肤着色插件
      • __init__.py: 初始化文件
      • shader/: 着色器目录
      • config.yaml: 配置文件
      • plugin.py: 插件主文件
      • skin_shading_stage.py: 皮肤着色阶段
    • sky_ao/: 天空AO插件
      • __init__.py: 初始化文件
      • shader/: 着色器目录
      • ao_stage.py: AO阶段
      • capture_stage.py: 捕捉阶段
      • config.yaml: 配置文件
      • plugin.py: 插件主文件
    • smaa/: SMAA抗锯齿插件
      • __init__.py: 初始化文件
      • resources/: 资源目录
      • shader/: 着色器目录
      • config.yaml: 配置文件
      • jitters.py: 抖动工具
      • LICENSE.txt: 许可证文件
      • plugin.py: 插件主文件
      • smaa_stage.py: SMAA阶段
    • ssr/: 屏幕空间反射插件
      • __init__.py: 初始化文件
      • shader/: 着色器目录
      • config.yaml: 配置文件
      • plugin.py: 插件主文件
      • ssr_stage.py: SSR阶段
    • volumetrics/: 体积渲染插件
      • __init__.py: 初始化文件
      • shader/: 着色器目录
      • config.yaml: 配置文件
      • plugin.py: 插件主文件
      • volumetrics_stage.py: 体积渲染阶段
    • vxgi/: VXGI全局光照插件
      • __init__.py: 初始化文件
      • shader/: 着色器目录
      • config.yaml: 配置文件
      • plugin.py: 插件主文件
      • voxelization_stage.py: 体素化阶段
      • vxgi_stage.py: VXGI阶段
  6. toolkit/: 工具集

    • bake_gi/: GI烘焙工具
      • resources/: 资源目录
      • bake.py: 烘焙脚本
      • display.py: 显示脚本
    • day_time_editor/: 日间时间编辑器
      • ui/: UI目录
      • curve_widget.py: 曲线控件
      • main.py: 主程序
    • import_sun_data/: 导入太阳数据工具
      • import_data.py: 导入数据脚本
      • README.md: 说明文档
    • material_editor/: 材质编辑器
      • ui/: UI目录
      • main.py: 主程序
    • pathtracing_reference/: 路径追踪参考
      • config/: 配置目录
      • res/: 资源目录
      • batch_compare.py: 批量比较脚本
      • generate_difference.py: 生成差异脚本
      • get_brightness.py: 获取亮度脚本
      • README.md: 说明文档
      • run_mitsuba.bat: Mitsuba运行脚本
      • run_renderpipeline.py: 运行渲染管线脚本
    • plugin_configurator/: 插件配置器
      • ui/: UI目录
      • main.py: 主程序
    • poisson_disk_generator/: 泊松圆盘生成器
      • source/: 源代码目录
      • .gitignore: 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: 说明文档
  7. rplibs/: 第三方库

    • colorama/: 终端颜色库
    • progressbar/: 进度条库
    • yaml/: YAML解析库
    • __init__.py: 初始化文件
    • pyqt_imports.py: PyQt导入工具
    • six-source.txt: Six库源信息
    • six.py: Six库兼容工具

2.7.3 根目录文件

  1. __init__.py: Python包初始化文件
  2. .flake8: Flake8配置文件用于代码风格检查
  3. .gitignore: Git忽略文件指定不纳入版本控制的文件和目录
  4. .pylintrc: Pylint配置文件用于代码质量检查
  5. .travis.yml: Travis CI配置文件用于持续集成
  6. Default_NRM_2K.png: 默认法线贴图2K分辨率
  7. Default_Rough.png: 默认粗糙度贴图
  8. LICENSE.txt: 许可证文件采用MIT许可证
  9. README.md: 项目说明文档,包含项目介绍、特性列表和使用说明
  10. setup.py: 安装和配置脚本,负责编译原生模块、生成必要的资源文件和配置渲染管线环境
  11. start_daytime_editor.py: 启动日间编辑器脚本用于运行时间ofday编辑器
  12. start_plugin_configurator.py: 启动插件配置器脚本,用于运行插件配置工具

2.8 ui模块

ui/目录包含了用户界面组件和主窗口定义。

2.8.1 核心文件

  1. __init__.py: Python包初始化文件。

  2. assembly_disassembly_config_simple.py:

    • 简化版装配拆卸配置界面模块,提供装配拆卸功能的简单配置界面。
  3. assembly_disassembly_config.py:

    • 装配拆卸配置界面模块,提供复杂的装配拆卸配置功能。
  4. icon_manager_gui.py:

    • 图标管理GUI模块负责管理界面中的图标资源。
  5. icon_manager.py:

    • 图标管理器模块,提供图标资源的加载和管理功能。
  6. interface_manager.py:

    • 界面管理器模块,负责管理整个应用程序的界面组件。
    • 处理窗口布局、控件管理和用户交互。
  7. main_window.py:

    • 主窗口模块,定义了应用程序的主窗口结构和布局。
    • 负责创建和管理主界面的各种组件。
  8. maintenance_system.py:

    • 维护系统模块,提供设备维护相关的界面功能。
  9. property_panel.py:

    • 属性面板模块,负责对象属性的显示和编辑。
    • 提供对象属性的可视化编辑界面。
  10. simple_maintenance_login.py:

    • 简化版维护登录界面模块,提供维护功能的登录界面。
  11. widgets.py:

    • 自定义控件模块包含各种自定义的UI控件。
    • 提供Panda3D控件和文件视图等特殊控件。

2.9 templates模块

templates/目录包含项目模板文件。

2.9.1 核心文件

  1. main_template.py:
    • 主程序模板文件提供了一个基础的Panda3D应用程序框架。
    • 包含场景加载、GUI元素处理、动画播放、脚本管理等功能的模板实现。
    • 提供了相机控制、鼠标点击处理、帧率显示等基础功能。

2.10 主程序文件

2.10.1 核心文件

  1. main.py:

    • 程序主入口文件,定义了MyWorld类,继承自CoreWorld
    • 集成了所有核心系统选择系统、事件处理、工具管理、脚本管理、GUI管理、场景管理、项目管理、地形管理、属性面板、界面管理、VR管理、碰撞管理等。
    • 提供了兼容性属性和功能代理方法,将各种操作委托给相应的管理器。
    • 实现了键盘事件处理、巡检系统控制、模型导入等核心功能。
    • 包含了与UI模块的集成通过setup_main_window函数创建主窗口。
  2. Start_Run.py:

    • 程序启动脚本负责初始化Python路径和依赖。
    • 自动添加项目根目录、RenderPipeline、RenderPipelineFile和icons目录到Python路径。
    • 处理命令行参数并启动主程序。
    • 提供了项目路径参数的处理功能。

3 非代码文件

3.1 config模块

config/目录包含项目的配置文件,主要用于存储系统设置和参数。

3.1.1 核心文件

  1. vr_settings.json:
    • VR系统配置文件定义了VR渲染模式和质量参数。
    • 包含渲染模式设置render_pipeline、分辨率缩放、管线分辨率缩放、质量预设等参数。
    • 包含Pipeline VR配置如阴影、环境光遮蔽(AO)、泛光(Bloom)、运动模糊等效果的启用状态和质量设置。

3.2 Resources模块

Resources/目录包含了项目使用的各种资源文件。

3.2.1 目录结构

  1. animations/:

    • 动画资源目录,当前为空。
  2. c/:

    • 测试/临时资源目录,包含一些测试文件和子目录。
  3. icons/:

    • 图标资源目录,包含各种纹理图标:
    • heightmap.png: 高度图纹理
    • test_metallic_stripes.png: 金属度测试纹理
    • test_roughness_checkerboard.png: 粗糙度棋盘纹理
    • test_roughness_circle.png: 粗糙度圆形纹理
    • test_roughness_gradient.png: 粗糙度渐变纹理
  4. materials/:

    • 材质资源目录,当前为空。
  5. models/:

    • 3D模型资源目录包含示例模型文件
    • DancingTwerk.glb: 跳舞动画模型
    • Haqijingzhu.glb: 花旗镜柱模型
    • JQB_auto_converted.glb: 自动转换的JQB模型
    • Women_2.glb: 女性角色模型
  6. textures/:

    • 纹理资源目录,当前为空。
  7. a:

    • 根目录下的测试文件。

3.3 requirements模块

requirements/目录包含项目的依赖管理文件,用于环境配置和部署。

3.3.1 核心文件

  1. requirements.txt:

    • 项目的完整依赖列表文件包含所有必要的Python包及其版本。
    • 包括Panda3D、PyQt5、PySide6、Pillow、pyassimp等核心依赖。
    • 还包含系统级包如apturl、bcrypt、dbus-python等。
  2. clean-requirements.txt:

    • 精简的依赖列表文件,仅包含项目核心依赖。
    • 包括Panda3D、PyQt5、PySide6、Pillow、python-dotenv、pyassimp等。
  3. environment.yml:

    • Conda环境配置文件定义了项目环境的依赖。
    • 指定了Python版本为3.10并包含了pip依赖项。
  4. conda-requirements.txt:

    • Conda显式依赖文件用于创建完全相同的环境。
    • 包含了系统级依赖如libgcc、openssl、ncurses等。
  5. DEPLOYMENT_README.md:

    • 项目部署指南文档,提供详细的部署说明。
    • 包含使用Conda和virtualenv两种部署方法。
    • 提供了项目依赖说明和跨平台注意事项。
    • 包含常见问题解答。

3.4 icons模块

icons/目录包含应用程序使用的各种图标资源文件。

3.4.1 图标文件

  1. close_icon.png: 关闭按钮图标
  2. delete_fail_icon.png: 删除失败图标
  3. down_arrows.png: 向下箭头图标
  4. left_arrows.png: 向左箭头图标
  5. logo.png: 应用程序Logo图标
  6. minimize_icon.png: 最小化按钮图标
  7. move_tool.png: 移动工具图标
  8. property_select_image.png: 属性选择图像
  9. right_arrows.png: 向右箭头图标
  10. rotate_tool.png: 旋转工具图标
  11. scale_tool.png: 缩放工具图标
  12. select_tool.png: 选择工具图标
  13. solid_down_arrows.png: 实心向下箭头图标
  14. solid_right_arrows.png: 实心向右箭头图标
  15. success_icon.png: 成功图标
  16. up_arrows.png: 向上箭头图标
  17. warning_icon.png: 警告图标
  18. windowing_icon.png: 窗口化图标

3.5 tex模块

tex/目录包含基础纹理资源文件。

3.5.1 纹理文件

  1. empty_basecolor.png: 空白基础颜色纹理
  2. empty_normal.png: 空白法线纹理
  3. empty_roughness.png: 空白粗糙度纹理
  4. empty_specular.png: 空白镜面反射纹理

这些纹理通常用作默认或占位纹理,在材质系统中作为基础资源。

3.6 vr_actions模块

vr_actions/目录包含VR动作系统配置文件。

3.6.1 核心文件

  1. actions.json:

    • VR动作定义文件定义了VR系统中所有可用的动作。
    • 包括姿态、触发器、握把、菜单、系统按钮、触摸板、操纵杆等动作。
    • 定义了动作集和默认绑定关系,支持多语言本地化。
  2. bindings_index.json:

    • Valve Index控制器绑定配置文件。
    • 定义了Index控制器的按钮、操纵杆、触摸板等输入的映射关系。
  3. bindings_oculus.json:

    • Oculus Touch控制器绑定配置文件。
    • 定义了Oculus Touch控制器的按钮、扳机、操纵杆等输入的映射关系。
  4. bindings_vive.json:

    • HTC Vive控制器绑定配置文件。
    • 定义了Vive控制器的按钮、触控板等输入的映射关系。