案例
This commit is contained in:
157
README_fused_system.md
Normal file
157
README_fused_system.md
Normal file
@@ -0,0 +1,157 @@
|
||||
# 融合光学系统脚本
|
||||
|
||||
这个脚本将 `toModel.py` 和 `light_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: 使用运行辅助脚本(推荐)
|
||||
|
||||
```bash
|
||||
python3 run_fused_system.py
|
||||
```
|
||||
|
||||
这个脚本会自动:
|
||||
|
||||
- 检测 Blender 安装
|
||||
- 检查必要的 JSON 文件
|
||||
- 运行融合脚本
|
||||
- 显示执行结果
|
||||
|
||||
### 方法 2: 直接使用 Blender 命令
|
||||
|
||||
```bash
|
||||
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
|
||||
|
||||
## 许可证
|
||||
|
||||
本脚本遵循与原始脚本相同的许可证条款。
|
||||
Reference in New Issue
Block a user