MirrorReflect — 镜面圆柱体可视化教学工具
SOLO 科技至善挑战赛 参赛作品
用科技让光学之美触手可及,让抽象物理原理跃然眼前。
一、作品简介
MirrorReflect 是一款跨学科的交互式可视化教学软件,专注于演示和探索**圆柱镜面反射映射(Cylindrical Mirror Anamorphosis)**的物理与数学原理。
你见过那种神奇的"变形画"吗?——一张纸上画着看似乱七八糟的图案,但把一个圆柱形镜子放在中间,镜子里就会浮现出一幅清晰的图像。这种数百年来让人着迷的光学幻象,正是 MirrorReflect 要揭示和教学的核心。
我们的软件不仅还原这一光学现象,更让用户能够亲手设计属于自己的镜面变形画,在交互中理解光线追踪、坐标变换和图像优化等核心概念。
一句话描述:让每个人都能"画"出镜中的世界——一个将光学、数学与艺术融为一体的科技教学平台。
二、
解决的问题:科技至善,教育为先
当前教育的痛点
在中学和大学的物理、光学、计算机图形学课程中,圆柱镜面反射映射是一个经典的跨学科课题,但长期以来面临三大困境:
困境
具体表现
高度抽象
涉及复杂的光线追踪、非线性坐标变换,纯公式推导让学生望而生畏
缺乏实验手段
手工制作镜面变形画极其耗时且精度低,难以在课堂上实时演示
知识割裂
物理光学、数学变换、计算机算法各自独立,缺乏一个能直观串联的工具
MirrorReflect 的解决方案
我们打造了一个零门槛、全功能、实时交互的教学平台:
-
可视即所得:上传任意图片,即刻生成对应的镜面变形画,亲眼见证"混沌→清晰"的光学魔法 -
从入门到专业:入门模式只需 5 个直观滑块即可快速体验;专业模式暴露 60+ 可调参数,满足深度研究 -
3D 沉浸观察:GPU 加速的 3D 场景中自由旋转视角,直观理解观察者、圆柱和纸面之间的空间关系 -
GPU 实时加速:核心计算全部支持 GPU 加速,复杂搜索秒级完成
三、
核心功能模块
MirrorReflect 围绕四大功能模块构建,覆盖从基础演示到高级研究的全链路:
模块一:逆映射与搜索(Inverse Mapping & Search)
输入:一张目标图片(你希望在镜子中看到的图像)
输出:一张纸面图案(打印后放在圆柱旁,镜子中会映出目标图)
技术亮点:
-
光线追踪逆求解:从观察者视线出发,反向计算每条光线经圆柱镜面反射后在纸面上的落点
-
蒙特卡洛参数搜索:自动搜索最优圆柱尺寸(半径 R、高度 H)和可见角范围,最大化纸面覆盖率
-
结果对比:同时展示目标图、纸面设计图、模拟镜面图和误差热力图
模块二:镜面融合优化(Mirror Fusion Optimizer)
输入:镜面目标图 + 纸面先验图
输出:一张融合纸面图案,在镜子中呈现目标图,在纸面上保留先验图的特征
技术亮点:
-
三阶段优化:镜面硬约束 → 纸面软约束 → 联合微调
-
多损失函数融合:MSE、SSIM、边缘损失、金字塔损失、全变分正则化,九项损失权重均可调
-
脚印掩膜技术:精确划定镜面反射影响区域,实现区域化约束
-
质量预设(低/中/高)和优化模式(均衡/镜面优先/纸面优先)一键切换
模块三:双重语义分析(Dual Semantics Analysis)
输入:两张不同图案(图片A和图片B)
输出:可行性评估——能否在同一圆柱的不同角度分别看到两张图?
技术亮点:
-
双重独立图案可行性量化分析
-
帕累托前沿计算:在两张图的还原质量之间寻找最优折衷
-
FFT 变形分析 + 雷达图多维评估
-
适合高阶研究和项目答辩展示
模块四:3D 立体观察(3D Interactive Viewer)
功能:在3D场景中实时观察圆柱镜面映射系统
技术亮点:
-
pyrender + OpenGL GPU 渲染:圆柱实体 + 纸面贴图 + 观察者视线,真实物理场景
-
鼠标拖拽旋转:视角参数实时双向同步(拖拽 3D 视图 ↔ 滑块数值联动)
-
滚轮缩放:模拟观察距离变化
-
自动旋转模式:360° 缓慢旋转,适合演示和录屏
-
当 pyrender 不可用时自动降级为 matplotlib 3D 渲染
四、
技术架构
技术栈
层级
技术
用途
GUI 框架
PySide6 (Qt for Python)
跨平台桌面应用界面
数值计算
PyTorch + CUDA
GPU 加速的光线追踪和优化
图像处理
OpenCV, NumPy, SciPy
图像预处理、插值、滤波
3D 渲染
trimesh + pyrender (OpenGL)
3D 场景构建与 GPU 离线渲染
可视化
matplotlib
热力图、损失曲线、帕累托图等
异步架构
QThread + Signal/Slot
计算异步化,不阻塞 UI
架构设计
┌─────────────────────────────────────────────────────┐
│ QToolBar │
│ 标题 | 📂打开图片 | 🔬专业模式 | 💾导出 │
├─────────────────────────────────────────────────────┤
│ InfoBar: 文件名 | 分辨率 | 文件大小 │
├─────────────────────────────────────────────────────┤
│ ┌─────────────┐ 全屏画布 ┌─────────────┐ │
│ │ 快速成像面板 │ ResultCanvas │ 高级搜索面板 │ │
│ │ (悬浮浮动) │ (QStacked) │ (悬浮浮动) │ │
│ │ │ │ QScrollArea │ │
│ │ 5个核心滑块 │ │ 完整参数控制 │ │
│ │ ▶一键生成 │ │ 🔍完整搜索 │ │
│ │ ⚡GPU开关 │ │ │ │
│ │ 进度条 │ │ │ │
│ └─────────────┘ └─────────────┘ │
├─────────────────────────────────────────────────────┤
│ QStatusBar: 设备信息 | GPU型号 | 当前模式 │
└─────────────────────────────────────────────────────┘
关键设计原则:
-
悬浮极简 UI:左右参数面板悬浮于画布之上,半透明白色背景 + 12px 统一圆角 + 柔和阴影,最大化画布空间
-
入门/专业分离:左侧 5 个核心参数(入门级),右侧 60+ 参数(专业级),入门模式可隐藏专业面板
-
GPU 加速开关:GPU 可用时显示绿色 “
GPU 加速 ON”,可随时切换 CPU/GPU -
显存自适应:自动检测 GPU 显存容量,动态调整计算分辨率防止 OOM
-
计算异步化:所有计算在 QThread 子线程执行,通过信号槽传递进度和结果
五、
核心创新点
1. 从"黑箱演示"到"透明探索"
传统的教学动画只能展示"结果"——一张变形的图和镜中的清晰影像。MirrorReflect 将整个物理过程可视化:
-
实时调整观察者距离、视线高度、圆柱尺寸
-
即刻看到纸面图案的对应变化
-
误差热力图直观反馈设计质量
2. 入门与专业的无缝衔接
不是简单的"难/易"二选一,而是渐进式参数暴露:
-
入门模式的 5 个滑块对应核心物理量,适合 10 分钟课堂演示
-
专业模式解锁全部 60+ 参数,支持研究生级别的深入研究
-
同一套代码、同一个界面,按需切换
3. 双重语义——从"一幅图"到"两幅图"
首次将"在同一圆柱上看到两幅不同图案"的可行性分析可视化:
-
帕累托前沿让用户直观理解"质量权衡"
-
FFT 分析揭示变形的频域特性
-
为光学艺术创作提供量化指导
4. GPU 加速的全链路覆盖
不只是一个"GPU Demo",而是从图像加载、光线追迹(数千条光线并行计算)、参数搜索(数百组参数批量评估)、结果构建到 3D 渲染的全链路 GPU 加速。
六、
社会价值与教育意义(科技至善)
教育公平
-
零成本部署:纯 Python 开源软件,无需昂贵的实验设备
-
跨平台运行:Windows/Linux/macOS 均可使用
-
降低门槛:让偏远地区的学生也能"亲手"体验光学的奇妙
跨学科融合
MirrorReflect 天然连接多个学科领域:
学科
涉及知识点
物理学
镜面反射定律、光线追迹、光学成像
数学
非线性坐标变换、优化算法、蒙特卡洛方法
计算机科学
GPU 并行计算、数值优化、3D 渲染管线
艺术
变形画(Anamorphosis)、视觉错觉艺术
适用场景
-
中学物理课堂:光的反射定律的可视化演示 -
大学光学/图形学课程:交互式实验平台 -
科研探索:镜面变形画的参数敏感性分析 -
科普展览:科技馆/美术馆的互动展项 -
STEM 教育:编程+物理+数学的融合实践项目



