44 KiB
源代码整体架构说明
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 核心文件
-
__init__.py: Python包初始化文件。 -
world.py:- 定义了
CoreWorld类,是整个3D世界的基础类。 - 负责基本的场景设置,如相机、光照、坐标轴、地面网格等。
- 提供资源路径管理和中文字体支持。
- 定义了
-
vr_manager.py:- VR管理器主文件,负责VR系统的初始化和管理。
- 集成了OpenVR/SteamVR支持,处理HMD和控制器的跟踪。
- 管理VR渲染系统,支持普通渲染和RenderPipeline高级渲染。
- 包含VR交互系统(抓取、传送、摇杆控制等)。
-
selection.py:- 选择系统模块。
- 实现了3D场景中对象的选择功能。
- 提供选择历史管理和选择对象的可视化。
-
tool_manager.py:- 工具管理器模块。
- 管理各种编辑工具(选择、移动、旋转、缩放等)。
- 处理工具状态和工具切换逻辑。
-
script_system.py:- 脚本系统模块。
- 管理游戏对象的脚本挂载和执行。
- 提供脚本的热重载功能。
-
gui_manager.py:- GUI管理器模块。
- 负责2D和3D GUI元素的创建和管理。
- 提供GUI编辑模式和属性面板集成。
-
terrain_manager.py:- 地形管理器模块。
- 处理3D地形的创建、编辑和渲染。
- 支持高度图导入和LOD更新。
-
collision_manager.py:- 碰撞管理器模块。
- 管理场景中的碰撞检测和响应。
- 提供碰撞历史和统计功能。
-
event_handler.py:- 事件处理器模块。
- 处理用户输入事件和系统事件。
- 提供事件分发和处理机制。
-
Command_System.py:- 命令系统模块。
- 实现命令模式,支持撤销/重做功能。
- 管理命令的执行和历史记录。
-
InfoPanelManager.py:- 信息面板管理器模块。
- 管理场景中信息面板的显示和更新。
- 提供性能监控和调试信息显示。
-
patrol_system.py:- 巡检系统模块。
- 实现自动化巡检路径和逻辑。
- 支持巡检点设置和巡检过程监控。
-
assembly_interaction.py:- 装配交互模块。
- 处理复杂装配体的交互逻辑。
- 支持装配和拆卸操作。
-
CustomMouseController.py:- 自定义鼠标控制器模块。
- 提供定制化的鼠标操作控制。
- 支持不同的鼠标交互模式。
-
maintenance_gui.py:- 维护GUI模块。
- 提供设备维护相关的GUI界面。
- 支持维护任务管理和状态显示。
2.1.2 VR子模块
core/vr/目录包含了VR系统的各个子模块:
-
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系统的各种设置参数。
-
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传送功能,包括抛物线轨迹计算和可视化、传送点有效性检测、传送执行、可视化反馈(抛物线、落点标记)等。
-
performance/: VR性能监控模块。__init__.py: Python包初始化文件,导出VRPerformanceMonitor类。monitoring.py: VR性能监控子系统,负责VR应用的性能监控、GPU计时、管线统计和性能诊断,包含完整的性能报告、监控核心、GPU计时、管线统计、诊断工具、调试控制、配置、查询和控制方法。optimization.py: VR对象池和优化系统,负责VR系统中的对象池管理、垃圾回收控制、分辨率缩放和性能模式控制。MIGRATION_REPORT.md: VR性能监控子系统迁移完成报告,详细记录了性能监控功能的迁移过程和验证结果。
-
rendering/: VR渲染模块。__init__.py: Python包初始化文件。stages.py: VR专用渲染Stages模块,为VR创建简化但完整的渲染管线,支持GBuffer生成(延迟渲染基础)、光照计算(复用主Pipeline的LightManager)、最终合成(tone mapping + gamma校正),包含VRGBufferStage、VRLightingStage、VRAmbientStage、VRFinalStage和VRPipelineController类。
-
testing/: VR测试模块。__init__.py: Python包初始化文件,导出VRTestMode类。test_mode.py: VR测试调试子系统,负责VR测试模式、HUD显示和性能测试功能,包含测试模式控制、纹理管理、显示系统、HUD系统、状态查询和性能测试方法,支持VR内容直接显示在屏幕上、实时性能监控HUD、左眼/右眼/立体三种显示模式、渐进式测试功能和性能测试工具。
-
tracking/: VR跟踪模块。__init__.py: Python包初始化文件。controllers.py: VR手柄管理模块,基于panda3d-openvr参考实现,提供完整的VR手柄追踪和交互功能,包括手柄位置和姿态追踪、按钮和触摸板输入处理、手柄可视化和射线显示、震动反馈支持,包含VRController基类和LeftController、RightController子类。
-
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 核心文件
-
__init__.py: Python包初始化文件,导出GUIManager类。 -
gui_manager.py:- GUI管理器主文件,定义了
GUIManager类。 - 负责各种GUI元素的创建,包括:
- 2D GUI元素:按钮、标签、输入框、2D图像、2D视频屏幕等
- 3D GUI元素:3D文本、3D图像、视频屏幕、球形视频、虚拟屏幕等
- 提供GUI编辑模式,支持在独立预览窗口中查看和编辑GUI元素。
- 支持GUI元素的属性编辑、复制、删除等操作。
- 集成Cesium地图视图功能,支持在GUI中嵌入地图显示。
- 提供GUI元素在场景树中的管理与属性面板集成。
- 支持视频播放控制功能,包括播放、暂停、停止和时间控制。
- 支持2D和3D图像纹理更新功能。
- GUI管理器主文件,定义了
2.3 project模块
project/目录包含了项目管理系统,负责项目的生命周期管理。
2.3.1 核心文件
-
__init__.py: Python包初始化文件,导出ProjectManager和NewProjectDialog类。 -
project_manager.py:- 项目管理器主文件,定义了
ProjectManager类。 - 负责项目的完整生命周期管理,包括:
- 创建新项目:提供项目创建向导,生成标准项目结构
- 打开项目:加载项目配置和场景文件
- 保存项目:保存场景数据和项目配置
- 打包项目:将项目打包为可执行文件,支持多平台发布
- 提供项目配置管理,维护项目元数据(创建时间、修改时间、版本等)。
- 集成文件浏览器,支持项目文件的可视化管理。
- 提供窗口标题更新等辅助功能。
- 支持通过路径直接打开项目功能。
- 在打包过程中复制Resources、scripts和RenderPipelineFile目录。
- 保存GUI元素信息到JSON文件供打包后使用。
- 项目管理器主文件,定义了
2.4 QPanda3D模块
QPanda3D/目录包含了Panda3D与PyQt5集成的库,实现了在Qt应用程序中嵌入Panda3D渲染窗口的功能。
2.4.1 核心文件
-
__init__.py: Python包初始化文件,导出主要的类。 -
QPanda3DWidget.py:- 定义了
QPanda3DWidget类,这是一个继承自QWidget的自定义Qt控件。 - 负责在Qt界面中显示Panda3D渲染内容。
- 处理用户输入事件(鼠标、键盘)并将其转换为Panda3D事件。
- 集成定时器系统,定期更新Panda3D场景和重绘Qt控件。
- 提供窗口尺寸调整功能,保持渲染内容与窗口尺寸同步。
- 实现了保持宽高比的图像缩放和居中显示功能。
- 添加了异常处理机制,静默处理TransformState断言错误和其他异常。
- 定义了
-
Panda3DWorld.py:- 定义了
Panda3DWorld类,继承自ShowBase。 - 负责初始化Panda3D环境,设置离屏渲染模式。
- 集成RenderPipeline渲染管线,提供高质量的渲染效果。
- 创建用于Qt显示的纹理输出接口。
- 提供鼠标控制器集成。
- 添加了VR性能优化配置,包括单缓冲、禁用VSync等设置。
- 实现了窗口尺寸调整功能,支持同步Panda3D窗口尺寸到Qt窗口尺寸。
- 定义了
-
QMouseWatcherNode.py:- 定义了
QMouseWatcherNode类,继承自MouseWatcher。 - 实现了通过父级QWidget获取鼠标位置和状态的功能。
- 为Panda3D提供鼠标输入数据。
- 定义了
-
QPanda3D_Keys_Translation.py:- 定义了
QPanda3D_Key_translation字典。 - 实现了Qt键盘按键到Panda3D键盘事件的映射。
- 定义了
-
QPanda3D_Buttons_Translation.py:- 定义了
QPanda3D_Button_translation字典。 - 实现了Qt鼠标按键到Panda3D鼠标事件的映射。
- 定义了
-
QPanda3D_Modifiers_Translation.py:- 定义了
QPanda3D_Modifier_translation字典。 - 实现了Qt修饰键(如Shift、Ctrl、Alt)到Panda3D修饰键的映射。
- 定义了
2.5 scene模块
scene/目录包含了场景管理系统,负责场景中模型、光源、地形等元素的管理。
2.5.1 核心文件
-
__init__.py: Python包初始化文件,导出SceneManager类。 -
scene_manager.py:- 场景管理器主文件,定义了
SceneManager类。 - 负责场景中各种元素的管理,包括:
- 模型导入:支持多种3D模型格式(FBX、GLB等),提供模型转换和优化功能
- 光源管理:创建和管理聚光灯、点光源等不同类型的光源
- 场景保存和加载:支持将整个场景保存为BAM文件格式,并能完整加载恢复
- 碰撞检测:为模型设置碰撞体,支持选择和交互功能
- Cesium 3D Tiles集成:支持加载和显示地理空间数据
- GUI元素管理:与GUI系统集成,管理场景中的GUI元素
- 提供模型处理功能,包括材质应用、缩放标准化、位置调整等。
- 支持异步模型加载,提升用户体验。
- 集成脚本系统,支持为场景元素挂载和管理脚本。
- 场景管理器主文件,定义了
-
util.py:- 工具模块,提供跨平台路径处理功能。
- 定义了
CrossPlatformPathHandler类,用于处理不同操作系统的路径问题。 - 提供路径标准化、文件搜索、错误处理等辅助功能。
2.6 scripts模块
scripts/目录包含了各种可挂载到场景对象的脚本文件,用于实现对象的动态行为。
2.6.1 核心概念
脚本系统基于组件化设计,每个脚本都是一个继承自ScriptBase的Python类。脚本可以被挂载到场景中的任何对象上,为对象添加动态行为。
2.6.2 脚本文件说明
-
example_script.py:- 示例脚本,演示了脚本的基本结构和生命周期方法。
- 实现了简单的旋转功能。
-
Rotate_H_Script.py:- H轴(偏航)旋转脚本,实现对象绕Y轴的机器人式旋转。
- 支持设置旋转角度范围、速度、停顿时间等参数。
- 提供多种预设模式(慢速、快速、平滑)。
-
Rotate_P_Script.py:- P轴(俯仰)旋转脚本,实现对象绕X轴的机器人式旋转。
- 支持设置旋转角度范围、速度、停顿时间等参数。
- 提供多种预设模式(慢速、快速、平滑)。
-
Rotate_R_Script.py:- R轴(滚动)旋转脚本,实现对象绕Z轴的旋转。
- 简化版旋转脚本,适用于基本的旋转需求。
-
MoverScript.py:- 移动脚本,实现对象在指定轴向上的来回移动。
- 支持设置移动距离、速度和移动轴(X/Y/Z)。
-
ScalerScript.py:- 缩放脚本,实现对象的呼吸式缩放效果。
- 支持设置基础缩放、缩放幅度、缩放速度等参数。
- 提供统一缩放和非统一缩放选项。
-
ColorChangerScript.py:- 颜色变化脚本,实现对象颜色的动态变化。
- 支持多种颜色模式:彩虹、脉冲、淡入淡出、闪烁。
- 可调整颜色变化速度和强度。
-
BouncerScript.py:- 跳跃脚本,实现对象的上下跳跃效果。
- 支持多种跳跃类型:正弦波、绝对值正弦波、方波。
- 可设置跳跃高度和速度。
-
ComboAnimatorScript.py:- 组合动画脚本,可以同时控制对象的多个属性(位置、旋转、缩放)。
- 支持复杂的动画序列和时间控制。
-
FollowerScript.py:- 跟随脚本,使对象跟随另一个对象或鼠标位置移动。
- 支持平滑跟随和延迟跟随效果。
-
TestMover.py、TestRotator.py、TestScaler.py:- 测试脚本,用于验证脚本系统的基本功能。
-
a.py、R_P.py、R_R.py、Rotate_H_Script.py:- 其他功能脚本,实现特定的动画或交互效果。
2.7 RenderPipelineFile模块
RenderPipelineFile/目录包含了Panda3D的高级渲染管线实现,提供了基于物理的着色、延迟渲染和后处理效果。
2.7.1 核心特性
- 基于物理的着色(Physically Based Shading)
- 延迟渲染(Deferred Rendering)
- 高级后处理效果和框架
- 时间ofday系统
- 插件系统
2.7.2 目录结构
-
config/: 配置文件目录debugging.yaml: 调试配置panda3d-config.prc: Panda3D配置pipeline.yaml: 渲染管线配置plugins.yaml: 插件配置stages.yaml: 渲染阶段配置task-scheduler.yaml: 任务调度配置
-
data/: 数据资源目录builtin_models/: 内置模型资源skybox/: 天空盒模型
default_cubemap/: 默认立方体贴图资源source/: 源文件目录source_2/: 源文件目录2cubemap.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: 模型视图矩阵补丁2prev-model-view-matrix.diff: 模型视图矩阵补丁README.md: 说明文档
scripts/: 脚本资源example_script.py: 示例脚本
setup/: 安装设置资源check_requirements.py: 检查依赖脚本
generate_txo_files.py: TXO文件生成脚本install.flag: 安装标志文件
-
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: 粗糙度调试测试效果
-
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: 任务调度器
-
-
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阶段
-
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: 说明文档
-
rplibs/: 第三方库colorama/: 终端颜色库progressbar/: 进度条库yaml/: YAML解析库__init__.py: 初始化文件pyqt_imports.py: PyQt导入工具six-source.txt: Six库源信息six.py: Six库兼容工具
2.7.3 根目录文件
__init__.py: Python包初始化文件.flake8: Flake8配置文件,用于代码风格检查.gitignore: Git忽略文件,指定不纳入版本控制的文件和目录.pylintrc: Pylint配置文件,用于代码质量检查.travis.yml: Travis CI配置文件,用于持续集成Default_NRM_2K.png: 默认法线贴图,2K分辨率Default_Rough.png: 默认粗糙度贴图LICENSE.txt: 许可证文件,采用MIT许可证README.md: 项目说明文档,包含项目介绍、特性列表和使用说明setup.py: 安装和配置脚本,负责编译原生模块、生成必要的资源文件和配置渲染管线环境start_daytime_editor.py: 启动日间编辑器脚本,用于运行时间ofday编辑器start_plugin_configurator.py: 启动插件配置器脚本,用于运行插件配置工具
2.8 ui模块
ui/目录包含了用户界面组件和主窗口定义。
2.8.1 核心文件
-
__init__.py: Python包初始化文件。 -
assembly_disassembly_config_simple.py:- 简化版装配拆卸配置界面模块,提供装配拆卸功能的简单配置界面。
-
assembly_disassembly_config.py:- 装配拆卸配置界面模块,提供复杂的装配拆卸配置功能。
-
icon_manager_gui.py:- 图标管理GUI模块,负责管理界面中的图标资源。
-
icon_manager.py:- 图标管理器模块,提供图标资源的加载和管理功能。
-
interface_manager.py:- 界面管理器模块,负责管理整个应用程序的界面组件。
- 处理窗口布局、控件管理和用户交互。
-
main_window.py:- 主窗口模块,定义了应用程序的主窗口结构和布局。
- 负责创建和管理主界面的各种组件。
-
maintenance_system.py:- 维护系统模块,提供设备维护相关的界面功能。
-
property_panel.py:- 属性面板模块,负责对象属性的显示和编辑。
- 提供对象属性的可视化编辑界面。
-
simple_maintenance_login.py:- 简化版维护登录界面模块,提供维护功能的登录界面。
-
widgets.py:- 自定义控件模块,包含各种自定义的UI控件。
- 提供Panda3D控件和文件视图等特殊控件。
2.9 templates模块
templates/目录包含项目模板文件。
2.9.1 核心文件
main_template.py:- 主程序模板文件,提供了一个基础的Panda3D应用程序框架。
- 包含场景加载、GUI元素处理、动画播放、脚本管理等功能的模板实现。
- 提供了相机控制、鼠标点击处理、帧率显示等基础功能。
2.10 主程序文件
2.10.1 核心文件
-
main.py:- 程序主入口文件,定义了
MyWorld类,继承自CoreWorld。 - 集成了所有核心系统:选择系统、事件处理、工具管理、脚本管理、GUI管理、场景管理、项目管理、地形管理、属性面板、界面管理、VR管理、碰撞管理等。
- 提供了兼容性属性和功能代理方法,将各种操作委托给相应的管理器。
- 实现了键盘事件处理、巡检系统控制、模型导入等核心功能。
- 包含了与UI模块的集成,通过
setup_main_window函数创建主窗口。
- 程序主入口文件,定义了
-
Start_Run.py:- 程序启动脚本,负责初始化Python路径和依赖。
- 自动添加项目根目录、RenderPipeline、RenderPipelineFile和icons目录到Python路径。
- 处理命令行参数并启动主程序。
- 提供了项目路径参数的处理功能。
3 非代码文件
3.1 config模块
config/目录包含项目的配置文件,主要用于存储系统设置和参数。
3.1.1 核心文件
vr_settings.json:- VR系统配置文件,定义了VR渲染模式和质量参数。
- 包含渲染模式设置(render_pipeline)、分辨率缩放、管线分辨率缩放、质量预设等参数。
- 包含Pipeline VR配置,如阴影、环境光遮蔽(AO)、泛光(Bloom)、运动模糊等效果的启用状态和质量设置。
3.2 Resources模块
Resources/目录包含了项目使用的各种资源文件。
3.2.1 目录结构
-
animations/:- 动画资源目录,当前为空。
-
c/:- 测试/临时资源目录,包含一些测试文件和子目录。
-
icons/:- 图标资源目录,包含各种纹理图标:
heightmap.png: 高度图纹理test_metallic_stripes.png: 金属度测试纹理test_roughness_checkerboard.png: 粗糙度棋盘纹理test_roughness_circle.png: 粗糙度圆形纹理test_roughness_gradient.png: 粗糙度渐变纹理
-
materials/:- 材质资源目录,当前为空。
-
models/:- 3D模型资源目录,包含示例模型文件:
DancingTwerk.glb: 跳舞动画模型Haqijingzhu.glb: 花旗镜柱模型JQB_auto_converted.glb: 自动转换的JQB模型Women_2.glb: 女性角色模型
-
textures/:- 纹理资源目录,当前为空。
-
a:- 根目录下的测试文件。
3.3 requirements模块
requirements/目录包含项目的依赖管理文件,用于环境配置和部署。
3.3.1 核心文件
-
requirements.txt:- 项目的完整依赖列表文件,包含所有必要的Python包及其版本。
- 包括Panda3D、PyQt5、PySide6、Pillow、pyassimp等核心依赖。
- 还包含系统级包如apturl、bcrypt、dbus-python等。
-
clean-requirements.txt:- 精简的依赖列表文件,仅包含项目核心依赖。
- 包括Panda3D、PyQt5、PySide6、Pillow、python-dotenv、pyassimp等。
-
environment.yml:- Conda环境配置文件,定义了项目环境的依赖。
- 指定了Python版本为3.10,并包含了pip依赖项。
-
conda-requirements.txt:- Conda显式依赖文件,用于创建完全相同的环境。
- 包含了系统级依赖如libgcc、openssl、ncurses等。
-
DEPLOYMENT_README.md:- 项目部署指南文档,提供详细的部署说明。
- 包含使用Conda和virtualenv两种部署方法。
- 提供了项目依赖说明和跨平台注意事项。
- 包含常见问题解答。
3.4 icons模块
icons/目录包含应用程序使用的各种图标资源文件。
3.4.1 图标文件
close_icon.png: 关闭按钮图标delete_fail_icon.png: 删除失败图标down_arrows.png: 向下箭头图标left_arrows.png: 向左箭头图标logo.png: 应用程序Logo图标minimize_icon.png: 最小化按钮图标move_tool.png: 移动工具图标property_select_image.png: 属性选择图像right_arrows.png: 向右箭头图标rotate_tool.png: 旋转工具图标scale_tool.png: 缩放工具图标select_tool.png: 选择工具图标solid_down_arrows.png: 实心向下箭头图标solid_right_arrows.png: 实心向右箭头图标success_icon.png: 成功图标up_arrows.png: 向上箭头图标warning_icon.png: 警告图标windowing_icon.png: 窗口化图标
3.5 tex模块
tex/目录包含基础纹理资源文件。
3.5.1 纹理文件
empty_basecolor.png: 空白基础颜色纹理empty_normal.png: 空白法线纹理empty_roughness.png: 空白粗糙度纹理empty_specular.png: 空白镜面反射纹理
这些纹理通常用作默认或占位纹理,在材质系统中作为基础资源。
3.6 vr_actions模块
vr_actions/目录包含VR动作系统配置文件。
3.6.1 核心文件
-
actions.json:- VR动作定义文件,定义了VR系统中所有可用的动作。
- 包括姿态、触发器、握把、菜单、系统按钮、触摸板、操纵杆等动作。
- 定义了动作集和默认绑定关系,支持多语言本地化。
-
bindings_index.json:- Valve Index控制器绑定配置文件。
- 定义了Index控制器的按钮、操纵杆、触摸板等输入的映射关系。
-
bindings_oculus.json:- Oculus Touch控制器绑定配置文件。
- 定义了Oculus Touch控制器的按钮、扳机、操纵杆等输入的映射关系。
-
bindings_vive.json:- HTC Vive控制器绑定配置文件。
- 定义了Vive控制器的按钮、触控板等输入的映射关系。