Scenes
- sionna.rt.load_scene(filename=None, merge_shapes=True, merge_shapes_exclude_regex=None)[source]
Loads a scene from file
- Parameters:
filename (
typing.Optional
[str
]) – Name of a valid scene file. Sionna uses the simple XML-based format from Mitsuba 3. For None, an empty scene is created.merge_shapes (
bool
) – If set to True, shapes that share the same radio material are merged.merge_shapes_exclude_regex (
typing.Optional
[str
]) – Optional regex to exclude shapes from merging. Only used ifmerge_shapes
is set to True.
- Return type:
- class sionna.rt.Scene(mi_scene=None)[source]
A scene contains everything that is needed for radio propagation simulation and rendering.
A scene is a collection of multiple instances of
SceneObject
which define the geometry and materials of the objects in the scene. It also includes transmitters (Transmitter
) and receivers (Receiver
).A scene is instantiated by calling
load_scene()
.Example scenes can be loaded as follows:
from sionna.rt import load_scene scene = load_scene(sionna.rt.scene.munich) scene.preview()
- Parameters:
mi_scene (
typing.Optional
[mitsuba.Scene
]) – A Mitsuba scene
- add(item)[source]
Adds a radio device or radio material to the scene
If a different item with the same name as
item
is part of the scene, an error is raised.- Parameters:
item (
sionna.rt.radio_devices.radio_device.RadioDevice
|sionna.rt.radio_materials.radio_material_base.RadioMaterialBase
) – Item to be added to the scene- Return type:
None
- all_set(radio_map)[source]
Raises an exception if the scene is not all set for simulations
- Parameters:
radio_map (
bool
) – Set to True if checking for radio map computation. Set to False otherwise.- Return type:
None
- property angular_frequency
Angular frequency [rad/s]
- Type:
mi.Float
- property bandwidth
Get/set the transmission bandwidth [Hz]. Used for the computation of
thermal_noise_power
.- Type:
mi.Float
- edit(add=None, remove=None)[source]
Add and/or remove a list of objects to/from the scene
To optimize performance and reduce processing time, it is recommended to use a single call to this function with a list of objects to add and/or remove, rather than making multiple individual calls to edit scene objects.
- Parameters:
add (
typing.Union
[sionna.rt.scene_object.SceneObject
,list
[sionna.rt.scene_object.SceneObject
],dict
,None
]) – Object, or list /dictionary of objects to be addedremove (
typing.Union
[str
,sionna.rt.scene_object.SceneObject
,list
[sionna.rt.scene_object.SceneObject
|str
],None
]) – Name or object, or list/dictionary of objects or names to be added
- Return type:
None
- property frequency
Get/set the carrier frequency [Hz]
- Type:
mi.Float
- get(name)[source]
Returns a scene object, radio device, or radio material
- Parameters:
name (
str
) – Name of the item to retrieve- Return type:
None
|sionna.rt.radio_devices.radio_device.RadioDevice
|sionna.rt.radio_materials.radio_material_base.RadioMaterialBase
- property mi_scene
Mitsuba scene
- Type:
mi.Scene
- property mi_scene_params
Mitsuba scene parameters
- Type:
mi.SceneParameters
- property objects
Dictionary of scene objects
- Type:
dict
, { “name”,SceneObject
}
- property paths_solver
Get/set the path solver
- Type:
rt.PathSolverBase
- preview(*, background='white', clip_at=None, clip_plane_orientation=(0, 0, -1), fov=45.0, paths=None, radio_map=None, resolution=(655, 500), rm_db_scale=True, rm_metric='path_gain', rm_tx=None, rm_vmax=None, rm_vmin=None, show_devices=True, show_orientations=False)[source]
In an interactive notebook environment, opens an interactive 3D viewer of the scene.
Default color coding:
Green: Receiver
Blue: Transmitter
Controls:
Mouse left: Rotate
Scroll wheel: Zoom
Mouse right: Move
- Parameters:
background (
str
) – Background color in hex format prefixed by “#”clip_at (
typing.Optional
[float
]) – If not None, the scene preview will be clipped (cut) by a plane with normal orientationclip_plane_orientation
and offsetclip_at
. That means that everything behind the plane becomes invisible. This allows visualizing the interior of meshes, such as buildings.clip_plane_orientation (
tuple
[float
,float
,float
]) – Normal vector of the clipping planefov (
float
) – Field of view [deg]paths (
typing.Optional
[sionna.rt.path_solvers.paths.Paths
]) – Optional propagation paths to be shownradio_map (
typing.Optional
[sionna.rt.radio_map_solvers.radio_map.RadioMap
]) – Optional radio map to be shownresolution (
tuple
[int
,int
]) – Size of the viewer figurerm_db_scale (
bool
) – Use logarithmic scale for radio map visualization, i.e. the radio map values are mapped to: .rm_metric ("path_gain" | "rss" | "sinr") – Metric of the radio map to be displayed
rm_tx (
typing.Union
[int
,str
,None
]) – Whenradio_map
is specified, controls for which of the transmitters the radio map is shown. Either the transmitter’s name or index can be given. If None, the maximum metric over all transmitters is shown.rm_vmax (
typing.Optional
[float
]) – For radio map visualization, defines the maximum value that the colormap covers. It should be provided in dB ifrm_db_scale
is set to True, or in linear scale otherwise.rm_vmin (
typing.Optional
[float
]) – For radio map visualization, defines the minimum value that the colormap covers. It should be provided in dB ifrm_db_scale
is set to True, or in linear scale otherwise.show_devices (
bool
) – Show radio devicesshow_orientations (
bool
) – Show orientation of radio devices
- Return type:
sionna.rt.preview.Previewer
- property radio_materials
dict
, { “name”,RadioMaterialBase
}: Dictionary of radio materials
- property receivers
Dictionary of receivers
- Type:
dict
, { “name”,Receiver
}
- remove(name)[source]
Removes a radio device or radio material from the scene
In the case of a radio material, it must not be used by any object of the scene.
- Parameters:
name (
str
) – Name of the item to be removed- Return type:
None
- render(*, camera, clip_at=None, clip_plane_orientation=(0, 0, -1), envmap=None, fov=45, lighting_scale=1.0, num_samples=128, paths=None, radio_map=None, resolution=(655, 500), return_bitmap=False, rm_db_scale=True, rm_metric='path_gain', rm_show_color_bar=False, rm_tx=None, rm_vmax=None, rm_vmin=None, show_devices=True)[source]
Renders the scene from the viewpoint of a camera or the interactive viewer
- Parameters:
camera (
sionna.rt.camera.Camera
|str
) – Camera to be used for rendering the scene. If an interactive viewer was opened withpreview()
, “preview” can be to used to render the scene from its viewpoint.clip_at (
typing.Optional
[float
]) – If not None, the scene preview will be clipped (cut) by a plane with normal orientationclip_plane_orientation
and offsetclip_at
. That means that everything behind the plane becomes invisible. This allows visualizing the interior of meshes, such as buildings.clip_plane_orientation (
tuple
[float
,float
,float
]) – Normal vector of the clipping planeenvmap (
typing.Optional
[str
]) – Path to an environment map image file (e.g. in EXR format) to use for scene lightingfov (
float
) – Field of view [deg]lighting_scale (
float
) – Scale to apply to the lighting in the scene (e.g., from a constant uniform emitter or a given environment map)num_samples (
int
) – Number of rays thrown per pixelpaths (
typing.Optional
[sionna.rt.path_solvers.paths.Paths
]) – Optional propagation paths to be shownradio_map (
typing.Optional
[sionna.rt.radio_map_solvers.radio_map.RadioMap
]) – Optional radio map to be shownresolution (
tuple
[int
,int
]) – Size of the viewer figurereturn_bitmap (
bool
) – If True, directly return the rendered imagerm_db_scale (
bool
) – Use logarithmic scale for radio map visualization, i.e. the radio map values are mapped to: .rm_metric ("path_gain" | "rss" | "sinr") – Metric of the radio map to be displayed
rm_show_color_bar (
bool
) – Show color barrm_tx (
typing.Union
[int
,str
,None
]) – Whenradio_map
is specified, controls for which of the transmitters the radio map is shown. Either the transmitter’s name or index can be given. If None, the maximum metric over all transmitters is shown.rm_vmax (
typing.Optional
[float
]) – For radio map visualization, defines the maximum value that the colormap covers. It should be provided in dB ifrm_db_scale
is set to True, or in linear scale otherwise.rm_vmin (
typing.Optional
[float
]) – For radio map visualization, defines the minimum value that the colormap covers. It should be provided in dB ifrm_db_scale
is set to True, or in linear scale otherwise.show_devices (
bool
) – Show radio devices
- Return type:
matplotlib.figure.Figure
|mitsuba.Bitmap
- render_to_file(*, camera, filename, clip_at=None, clip_plane_orientation=(0, 0, -1), envmap=None, fov=45, lighting_scale=1.0, num_samples=512, paths=None, radio_map=None, resolution=(655, 500), rm_db_scale=True, rm_metric='path_gain', rm_tx=None, rm_vmin=None, rm_vmax=None, show_devices=True)[source]
Renders the scene from the viewpoint of a camera or the interactive viewer, and saves the resulting image
- Parameters:
camera (
sionna.rt.camera.Camera
|str
) – Camera to be used for rendering the scene. If an interactive viewer was opened withpreview()
, “preview” can be to used to render the scene from its viewpoint.filename (
str
) – Filename for saving the rendered image, e.g., “my_scene.png”clip_at (
typing.Optional
[float
]) – If not None, the scene preview will be clipped (cut) by a plane with normal orientationclip_plane_orientation
and offsetclip_at
. That means that everything behind the plane becomes invisible. This allows visualizing the interior of meshes, such as buildings.clip_plane_orientation (
tuple
[float
,float
,float
]) – Normal vector of the clipping planeenvmap (
typing.Optional
[str
]) – Path to an environment map image file (e.g. in EXR format) to use for scene lightingfov (
float
) – Field of view [deg]lighting_scale (
float
) – Scale to apply to the lighting in the scene (e.g., from a constant uniform emitter or a given environment map)num_samples (
int
) – Number of rays thrown per pixelpaths (
typing.Optional
[sionna.rt.path_solvers.paths.Paths
]) – Optional propagation paths to be shownradio_map (
typing.Optional
[sionna.rt.radio_map_solvers.radio_map.RadioMap
]) – Optional radio map to be shownresolution (
tuple
[int
,int
]) – Size of the viewer figurerm_db_scale (
bool
) – Use logarithmic scale for radio map visualization, i.e. the radio map values are mapped to: .rm_metric ("path_gain" | "rss" | "sinr") – Metric of the radio map to be displayed
rm_tx (
typing.Union
[int
,str
,None
]) – Whenradio_map
is specified, controls for which of the transmitters the radio map is shown. Either the transmitter’s name or index can be given. If None, the maximum metric over all transmitters is shown.rm_vmax (
typing.Optional
[float
]) – For radio map visualization, defines the maximum value that the colormap covers. It should be provided in dB ifrm_db_scale
is set to True, or in linear scale otherwise.rm_vmin (
typing.Optional
[float
]) – For radio map visualization, defines the minimum value that the colormap covers. It should be provided in dB ifrm_db_scale
is set to True, or in linear scale otherwise.show_devices (
bool
) – Show radio devices
- Return type:
mitsuba.Bitmap
- property rx_array
Get/set the antenna array used by all receivers in the scene
- Type:
AntennaArray
- scene_geometry_updated()[source]
Callback to trigger when the scene geometry is updated
- Return type:
None
- sources(synthetic_array, return_velocities)[source]
Builds arrays containing the positions and orientations of the sources
If synthetic arrays are not used, then every transmit antenna is modeled as a source of paths. Otherwise, transmitters are modelled as if they had a single antenna located at their
position
.- Return type:
tuple
[mitsuba.Point3f
,mitsuba.Point3f
,mitsuba.Point3f
|None
,mitsuba.Vector3f
|None
]- Returns:
Positions of the sources
- Returns:
Orientations of the sources
- Returns:
Positions of the antenna elements relative to the transmitters positions. None is returned if
synthetic_array
is True.- Returns:
Velocities of the transmitters. None is returned if return_velocities is set to False.
- Parameters:
synthetic_array (bool)
return_velocities (bool)
- targets(synthetic_array, return_velocities)[source]
Builds arrays containing the positions and orientations of the targets
If synthetic arrays are not used, then every receiver antenna is modeled as a source of paths. Otherwise, receivers are modelled as if they had a single antenna located at their
position
.- Return type:
tuple
[mitsuba.Point3f
,mitsuba.Point3f
,mitsuba.Point3f
|None
,mitsuba.Vector3f
|None
]- Returns:
Positions of the targets
- Returns:
Orientations of the targets
- Returns:
Positions of the antenna elements relative to the receivers. Only returned if
synthetic_array
is True.- Returns:
Velocities of the transmitters. None is returned if return_velocities is set to False.
- Parameters:
synthetic_array (bool)
return_velocities (bool)
- property temperature
Get/set the environment temperature [K]. Used for the computation of
thermal_noise_power
.- Type:
mi.Float
- property thermal_noise_power
Thermal noise power [W]
- Type:
mi.Float
- property transmitters
Dictionary of transmitters
- Type:
dict
, { “name”,Transmitter
}
- property tx_array
Get/set the antenna array used by all transmitters in the scene
- Type:
AntennaArray
- property wavelength
Wavelength [m]
- Type:
mi.Float
Examples
Sionna has several integrated scenes that are listed below. They can be loaded and used as follows:
scene = load_scene(sionna.rt.scene.etoile)
scene.preview()
- sionna.rt.scene.box
Example scene containing a metallic box
- sionna.rt.scene.box_one_screen
Example scene containing a metallic box and a screen made of glass
Note: In the figure below, the upper face of the box has been removed for visualization purposes. In the actual scene, the box is closed on all sides.
- sionna.rt.scene.box_two_screens
Example scene containing a metallic box and two screens made of glass
Note: In the figure below, the upper face of the box has been removed for visualization purposes. In the actual scene, the box is closed on all sides.
- sionna.rt.scene.double_reflector
Example scene containing two metallic squares
- sionna.rt.scene.etoile
Example scene containing the area around the Arc de Triomphe in Paris The scene was created with data downloaded from OpenStreetMap and the help of Blender and the Blender-OSM and Mitsuba Blender add-ons. The data is licensed under the Open Data Commons Open Database License (ODbL).
- sionna.rt.scene.floor_wall
Example scene containing a ground plane and a vertical wall
- sionna.rt.scene.florence
Example scene containing the area around the Florence Cathedral in Florence The scene was created with data downloaded from OpenStreetMap and the help of Blender and the Blender-OSM and Mitsuba Blender add-ons. The data is licensed under the Open Data Commons Open Database License (ODbL).
- sionna.rt.scene.munich
Example scene containing the area around the Frauenkirche in Munich The scene was created with data downloaded from OpenStreetMap and the help of Blender and the Blender-OSM and Mitsuba Blender add-ons. The data is licensed under the Open Data Commons Open Database License (ODbL).
- sionna.rt.scene.simple_reflector
Example scene containing a metallic reflector
- sionna.rt.scene.simple_street_canyon
Example scene containing a few rectangular building blocks and a ground plane
- sionna.rt.scene.simple_street_canyon_with_cars
Example scene containing a few rectangular building blocks and a ground plane as well as some cars
- sionna.rt.scene.simple_wedge
Example scene containing a wedge with a
opening angle
- sionna.rt.scene.triple_reflector
Example scene containing three metallic rectangles