Files
BL/README_fused_system.md
nicomacbookpro 565bb02a28 案例
2025-09-02 15:58:31 +08:00

4.4 KiB
Raw Blame History

融合光学系统脚本

这个脚本将 toModel.pylight_path_simple.py 两个脚本的功能融合在一起,在一个场景中同时显示光学系统的几何体和光路可视化。

功能特点

  • 🔧 光学系统几何体: 创建平面、抛物面、双曲面等光学元件
  • 💡 光路可视化: 显示发光的光路曲线
  • 🎨 材质系统: 金属、透明、发光等不同材质
  • 📁 文件组织: 使用集合Collection组织不同类型的对象
  • 📤 多格式导出: 支持 OBJ、GLB、Blend 文件导出
  • 🖼️ 高质量渲染: 使用 Cycles 渲染引擎

文件结构

├── fused_optical_system.py    # 主要的融合脚本
├── run_fused_system.py        # 运行辅助脚本
├── README_fused_system.md     # 本说明文件
├── e8caffb4622e03b1495bbc1ed13fce13.json  # 光学系统数据
└── miao_light_path_tsingtao.json           # 光路数据

使用方法

方法 1: 使用运行辅助脚本(推荐)

python3 run_fused_system.py

这个脚本会自动:

  • 检测 Blender 安装
  • 检查必要的 JSON 文件
  • 运行融合脚本
  • 显示执行结果

方法 2: 直接使用 Blender 命令

blender --background --python fused_optical_system.py -- [optical_json_path] [light_path_json_path]

参数说明:

  • optical_json_path: 光学系统 JSON 文件路径(可选,默认:./e8caffb4622e03b1495bbc1ed13fce13.json
  • light_path_json_path: 光路 JSON 文件路径(可选,默认:./miao_light_path_tsingtao.json

方法 3: 在 Blender 中运行

  1. 打开 Blender
  2. 切换到 Scripting 工作区
  3. 打开 fused_optical_system.py 文件
  4. 点击运行按钮

输出文件

脚本执行完成后会生成以下文件:

  • fused_optical_system.blend - Blender 工程文件,包含完整的场景
  • fused_optical_system.glb - Web 友好的 3D 模型格式
  • fused_optical_system.obj - 通用的 3D 模型格式
  • fused_optical_system_render.png - 高质量渲染图像

场景组织

融合后的场景使用集合Collection来组织对象

  • OpticalSystem: 包含所有光学系统几何体
  • LightPaths: 包含所有光路可视化对象

材质系统

  • 金属材质: 用于光学元件表面
  • 透明材质: 用于"nothing"类型的对象
  • 发光材质: 用于特殊发光对象
  • 光路材质: 用于光路曲线,具有发光效果

光路可视化

  • 支持多种颜色方案(红、绿、蓝、黄、紫、青、橙、粉)
  • 发光强度增强,确保在场景中清晰可见
  • 自动限制光路数量(最多 20 条)以避免场景过于复杂
  • 曲线厚度适中,既清晰又不会遮挡几何体

相机和灯光设置

  • 相机位置: (20, -20, 15),角度适合观察整个系统
  • 主灯光: 太阳光,提供主要照明
  • 环境光: 区域光,提供柔和的环境照明
  • 背景: 深蓝色背景,突出光路效果

渲染设置

  • 渲染引擎: Cycles提供更好的材质和光照效果
  • 分辨率: 1920x1080全高清
  • 输出格式: PNG

故障排除

常见问题

  1. 找不到 Blender

    • 确保 Blender 已安装
    • 将 Blender 添加到系统 PATH 中
    • 或手动指定 Blender 安装路径
  2. 缺少 JSON 文件

    • 确保 e8caffb4622e03b1495bbc1ed13fce13.json 存在
    • 确保 miao_light_path_tsingtao.json 存在
  3. 脚本执行失败

    • 检查 JSON 文件格式是否正确
    • 查看错误输出信息
    • 确保有足够的磁盘空间
  4. 渲染失败

    • 检查是否有足够的系统内存
    • 确保输出目录可写
    • 检查 Blender 版本兼容性

调试模式

如果需要调试,可以在 Blender 中直接运行脚本,这样可以看到更详细的错误信息。

性能优化

  • 光路数量限制在 20 条以内
  • 使用适当的几何体分辨率
  • 优化材质节点设置
  • 合理的灯光配置

扩展功能

可以基于这个融合脚本进一步扩展:

  • 添加动画效果
  • 支持更多几何体类型
  • 自定义材质和纹理
  • 添加交互式控制
  • 支持实时渲染

技术细节

  • Python 版本: 3.7+
  • Blender 版本: 2.80+
  • 依赖库: bpy, json, mathutils, bmesh, numpy
  • 渲染引擎: Cycles
  • 文件格式: 支持 OBJ、GLB、Blend

许可证

本脚本遵循与原始脚本相同的许可证条款。