diff --git a/docs/02.simulation-setup/04.output/02.outputs-list/21.render-output.md b/docs/02.simulation-setup/04.output/02.outputs-list/21.render-output.md new file mode 100644 index 0000000..a536f52 --- /dev/null +++ b/docs/02.simulation-setup/04.output/02.outputs-list/21.render-output.md @@ -0,0 +1,182 @@ +# Render Output + +*Render Output in Flow360 automatically generates animations for unsteady simulations by rendering flow field visualizations. This output creates rendered animations, making it ideal for visualizing time-dependent flow phenomena such as vortex shedding, unsteady pressure waves, or moving boundaries.* + +--- + +## **Available Options** + +| *Option* | *Description* | *Applicable* | +|----------|---------------|--------------| +| **Name** | Name identifier for the render output | always | +| **Frequency** | How often to render frames | always | +| **Frequency offset** | Time step at which to start rendering | always | +| **Surface render** | Configure surface rendering groups | optional | +| **Slice render** | Configure slice rendering groups | optional | +| **IsoSurface render** | Configure isosurface rendering groups | optional | +| **Camera** | Camera/viewpoint settings for the render | optional | + +--- + +## **Important Notes** + +> **Important:** +> - Render Output is **only available for unsteady simulations**. It cannot be used with steady-state cases. + +--- + +## **Global Time Stepping in Child Cases** + +When working with **child cases** (cases forked from a parent simulation), it's important to understand that the `Frequency` and `Frequency offset` parameters refer to the **global** time step, which is transferred from the parent case. + +**Example:** If the parent case finished at `time_step=174`, the child case will start from `time_step=175`. If `Frequency=100` is set in the child case, the render will be generated at global time steps 200 (25 time steps into the child simulation), 300 (125 time steps into the child simulation), etc. `Frequency offset` also refers to the global time step, meaning that if in the previously mentioned child case, `Frequency offset=50` was set (with `Frequency=100`), the render would be generated at **global** time steps 250 (75 time steps into the child simulation), 350 (175 time steps into the child simulation), etc. + +--- + +## **Detailed Descriptions** + +### **Name** + +An identifier for this render output configuration. + +### **Frequency** + +*Controls how often rendered frames are generated during the simulation in physical steps.* + +- **Required** Yes +- **Example:** `100` — renders a frame every 100 physical time steps. +>**Notes:** +> - Lower frequency values provide smoother animations but require more storage and computation. +> - Higher frequency values reduce storage but may result in choppier animations. +> - Important for child cases - this parameter refers to the **global** time step (see [Global Time Stepping](#global-time-stepping-in-child-cases)). + +### **Frequency offset** + +*Specifies the time step at which to begin rendering frames.* + +- **Default:** `0` (start at beginning of simulation) +- **Example:** `1000` — with `frequency=100`, renders are generated at time steps 1000, 1100, 1200, etc. + - **Standalone case:** If you start a simulation from `time_step=0` with `frequency=100` and `frequency_offset=1000`, renders are generated at time steps 1000, 1100, 1200, etc. + - **Parent-child case:** If the parent finished at `time_step=174`, the child starts from `time_step=175`. With `frequency=100` and `frequency_offset=200` in the child, renders are generated at global time steps 200 (25 steps into child), 300 (125 steps into child), 400 (225 steps into child), etc. +>**Notes:** +> - Useful when you want to skip initial transient flow development in animations. +> - Important for child cases - this parameter refers to the **global** time step (see [Global Time Stepping](#global-time-stepping-in-child-cases)). + +### **Surface render** + +*Configure one or more surface rendering groups. Each group can contain multiple boundaries that share the same material and visualization settings.* + +Each surface render group includes: + +- **Material:** Select the rendering material type: + - **Output fields:** Display a scalar field on the surface (e.g., `Cp`, `Cf`, `Mach`, `pressure_pa`) + - **PBR material:** Physically-based rendering material with customizable properties. Options include: + - **metal:** Metallic material with customizable shine + - **plastic:** Plastic material with customizable shine +- **Set output fields:** Choose which flow field variable to visualize on the surfaces (only available when Material is "Output fields") +- **Colormap:** Select the color scheme for visualizing the field (e.g., rainbow, grayscale, temperature) (only available when Material is "Output fields") +- **Range:** Define the minimum and maximum values for the colormap (only available when Material is "Output fields"): + - **Min value:** Lower bound of the color scale + - **Max value:** Upper bound of the color scale +- **Assigned boundaries:** Select which boundary surfaces to include in this render group + - Use the search bar to find specific boundaries + - Multiple boundaries can be assigned to a single group + +### **Slice render** + +*Configure one or more slice rendering groups. Each group can contain multiple slices that share the same material and visualization settings.* + +Each slice render group includes: + +- **Material:** Select the rendering material type: + - **Output fields:** Display a scalar field on the slice (e.g., `Mach`, `pressure`, `T`) + - **PBR material:** Physically-based rendering material with customizable properties. Options include: + - **metal:** Metallic material with customizable shine + - **plastic:** Plastic material with customizable shine +- **Set output fields:** Choose which flow field variable to visualize on the slices (only available when Material is "Output fields") +- **Colormap:** Select the color scheme for visualizing the field (only available when Material is "Output fields") +- **Range:** Define the minimum and maximum values for the colormap (only available when Material is "Output fields") +- **Assigned slices:** Select which slices to include in this render group + - Select slices from the 3D scene or from a list + - Multiple slices can be assigned to a single group + +### **IsoSurface render** + +*Configure one or more isosurface rendering groups. Each group can contain multiple isosurfaces that share the same material and visualization settings.* + +Each isosurface render group includes: + +- **Material:** Select the rendering material type: + - **Output fields:** Display a scalar field on the isosurface (e.g., `qcriterion`, `Mach`, `T`) + - **PBR material:** Physically-based rendering material with customizable properties. Options include: + - **metal:** Metallic material with customizable shine + - **plastic:** Plastic material with customizable shine +- **Set output fields:** Choose which flow field variable to visualize on the isosurfaces (only available when Material is "Output fields") +- **Colormap:** Select the color scheme for visualizing the field (only available when Material is "Output fields") +- **Range:** Define the minimum and maximum values for the colormap (only available when Material is "Output fields") +- **Isosurfaces:** Define one or more isosurfaces by specifying: + - **Name:** A unique identifier for the isosurface + - **Field:** The flow variable used to define the isosurface (e.g., `qcriterion`, `Mach`) + - **Value:** The constant value of the field variable that defines the isosurface + +>**Note:** Isosurface renders are particularly useful for visualizing vortices (using Q-criterion) or shock waves (using Mach number). + +### **Camera** + +*Configure the camera/viewpoint settings for the render.* + +- **Set as current perspective:** Use the current 3D view as the camera position +- Additional camera settings may be available for fine-tuning the viewpoint + +>**Note:** The camera settings determine the viewing angle and perspective for all rendered frames in the animation. + +--- + +
+

💡 Tips

+ +#### Optimizing Render Output + +- **Frequency selection:** Choose an appropriate frequency based on your needs: + - For smooth animations: Use lower frequency values (e.g., 1-10) + - For storage efficiency: Use higher frequency values (e.g., 50-100) + - For presentation: Balance between smoothness and file size + +
+ +--- + +
+

❓ Frequently Asked Questions

+ +- **Can I use Render Output with steady simulations?** + > No, Render Output is only available for unsteady simulations. For steady simulations, use standard output types like Surface Output or Volume Output. + +- **How do I combine multiple visualization types in one animation?** + > Create multiple render groups (Surface, Slice, and/or IsoSurface) within the same Render Output configuration. Each group will be rendered together in the animation. +
+ +--- + +
+

🐍 Python API Example

+ +```python +render_output = fl.RenderOutput( + name="Render output", + frequency=10, + groups=[ + fl.RenderOutputGroup( + surfaces=[volume_mesh["*"]], + material=fl.render.FieldMaterial.rainbow( + field="Cp", + min_value=-1.0, + max_value=1.0 + ) + ) + ], + camera=fl.render.Camera.orthographic(scale=5) +) +``` + +
diff --git a/docs/02.simulation-setup/04.output/02.outputs-list/README.md b/docs/02.simulation-setup/04.output/02.outputs-list/README.md index 49475f1..25132e7 100644 --- a/docs/02.simulation-setup/04.output/02.outputs-list/README.md +++ b/docs/02.simulation-setup/04.output/02.outputs-list/README.md @@ -26,6 +26,7 @@ | **[Force Output](./16.force-output.md)** | Force and moment coefficient outputs with optional statistics | Tracking aerodynamic performance, monitoring convergence | | **[Force Distribution Output](./17.force-distribution-output.md)** | Custom force and moment distribution along a specified direction | Spanwise/chordwise loading analysis, directional force analysis | | **[Time-averaging Force Distribution Output](./18.time-averaging-force-distribution-output.md)** | Time-averaged custom force and moment distribution | Statistical analysis of unsteady force distributions | +| **[Render Output](./21.render-output.md)** | Automatically rendered animations for unsteady simulations | Creating animations of time-dependent flow phenomena | --- @@ -99,5 +100,6 @@ For configuration details specific to each output type, see the individual outpu ./16.force-output.md ./17.force-distribution-output.md ./18.time-averaging-force-distribution-output.md +./21.render-output.md ./19.output-formats.md ``` \ No newline at end of file