======= Product ======= .. py:currentmodule:: p3dsdk .. py:class:: Product .. py:method:: id :property: The id of the product. :type: str, read-only .. py:method:: name :property: The name of the product. :type: str :raises ReadOnlyError: If :py:obj:`Database` is in read only mode. .. py:method:: favorite_camera_1 :property: The favorite camera 1. :type: Camera or None :raises ReadOnlyError: If :py:obj:`Database` is in read only mode. .. py:method:: favorite_camera_2 :property: The favorite camera 2. :type: Camera or None :raises ReadOnlyError: If :py:obj:`Database` is in read only mode. .. py:method:: favorite_camera_3 :property: The favorite camera 3. :type: Camera or None :raises ReadOnlyError: If :py:obj:`Database` is in read only mode. .. py:method:: favorite_camera_4 :property: The favorite camera 4. :type: Camera or None :raises ReadOnlyError: If :py:obj:`Database` is in read only mode. .. py:method:: active_aspect_layer :property: The active :py:obj:`AspectLayer` of this product. :type: AspectLayer :raises ReadOnlyError: If :py:obj:`Database` is in read only mode. .. py:method:: active_environment_layer :property: The active :py:obj:`EnvironmentLayer` of this product. :type: EnvironmentLayer :raises ReadOnlyError: If :py:obj:`Database` is in read only mode. .. py:method:: ssao_enabled :property: Whether the SSAO is enabled. :type: bool :raises ReadOnlyError: If :py:obj:`Database` is in read only mode. .. py:method:: ssao_intensity :property: The SSAO intensity. :type: float :raises ReadOnlyError: If :py:obj:`Database` is in read only mode. :raises ValueError: If trying to set a negative intensity. .. py:method:: ssao_lightmaps_enabled :property: Whether the lightmaps are enabled when SSAO is enabled. :type: bool :raises ReadOnlyError: If :py:obj:`Database` is in read only mode. .. py:method:: ssao_apply_transparent_surfaces :property: Whether the SSAO is applied to transparent surfaces. :type: bool :raises ReadOnlyError: If :py:obj:`Database` is in read only mode. .. py:method:: ssao_radius :property: The SSAO radius when searching for occluders. :type: float :raises ReadOnlyError: If :py:obj:`Database` is in read only mode. :raises ValueError: If trying to set a negative radius. .. py:method:: ssao_steps :property: The number of steps to use when computing SSAO. :type: int :raises ReadOnlyError: If :py:obj:`Database` is in read only mode. :raises ValueError: If trying to set a number of steps not between 1 and 500. .. py:method:: ssao_bias :property: The SSAO bias. :type: float :raises ReadOnlyError: If :py:obj:`Database` is in read only mode. :raises ValueError: If trying to set a bias less than 1. .. py:method:: duplicate() Duplicate this product. :returns: The duplicated product. :rtype: Product :raises ReadOnlyError: If :py:obj:`Database` is in read only mode. .. py:method:: remove() Delete this product. :raises ReadOnlyError: If :py:obj:`Database` is in read only mode. .. py:method:: export_fbx(filename, use_kinematic_tree = True, external_textures = False, extra_textures = False, text_mode = False) Export this product to an FBX file. :param filename: FBX filename. :type filename: str :param use_kinematic_tree: If :py:obj:`True`, export the kinematic hierarchy, otherwise use the surface layers hierarchy. :type use_kinematic_tree: bool :param external_textures: If :py:obj:`True`, textures are stored as external files next to the FBX file. :type external_textures: bool :param extra_textures: If :py:obj:`True`, also export extra texture channels (displacement, roughness, etc.). :type extra_textures: bool :param text_mode: If :py:obj:`True`, export the FBX as text, otherwise as binary. :type text_mode: bool :raises FileNotFoundError: If the destination directory does not exist. .. py:method:: find_aspect_layer(id) Find an :py:obj:`AspectLayer` by id. :param id: :py:obj:`AspectLayer` id to find. :type id: str :returns: The :py:obj:`AspectLayer` found or :py:obj:`None` if not found. :rtype: AspectLayer or None .. py:method:: list_aspect_layers(recursive = True) List all the :py:obj:`AspectLayer`. :param recursive: If :py:obj:`True`, list all aspect layers in the hierarchy, otherwise only aspect layers at the root are returned. :type recursive: bool :returns: The list of :py:obj:`AspectLayer` in this product. :rtype: list(AspectLayer) .. py:method:: find_aspect_layer_group(id) Find an :py:obj:`AspectLayerGroup` by id. :param id: :py:obj:`AspectLayerGroup` id to find. :type id: str :returns: The :py:obj:`AspectLayerGroup` found or :py:obj:`None` if not found. :rtype: AspectLayerGroup or None .. py:method:: list_aspect_layer_groups(recursive = True) List all the :py:obj:`AspectLayerGroup`. :param recursive: If :py:obj:`True`, list all aspect layer groups in the hierarchy, otherwise only aspect layer groups at the root are returned. :type recursive: bool :returns: The list of :py:obj:`AspectLayerGroup` in this product. :rtype: list(AspectLayerGroup) .. py:method:: create_aspect_layer_group(name) Create a new :py:obj:`AspectLayerGrup` in this product. :param name: Name of the :py:obj:`AspectLayerGroup`. :type name: str :returns: The newly created :py:obj:`AspectLayerGroup`. :rtype: AspectLayerGroup :raises ReadOnlyError: If :py:obj:`Database` is in read only mode. .. py:method:: create_aspect_layer(name) Create a new :py:obj:`AspectLayer` in this product. :param name: Name of the :py:obj:`AspectLayer`. :type name: str :returns: The newly created :py:obj:`AspectLayer`. :rtype: AspectLayer :raises ReadOnlyError: If :py:obj:`Database` is in read only mode. .. py:method:: list_environment_layers() List all the :py:obj:`EnvironmentLayer`. :returns: The list of :py:obj:`EnvironmentLayer` in this product. :rtype: list(EnvironmentLayer) .. py:method:: create_environment_layer(name) Create a new :py:obj:`EnvironmentLayer` in this product. :param name: Name of the :py:obj:`EnvironmentLayer`. :type name: str :returns: The newly created :py:obj:`EnvironmentLayer`. :rtype: EnvironmentLayer :raises ReadOnlyError: If :py:obj:`Database` is in read only mode. .. py:method:: list_configuration_parameters() List all the :py:obj:`ConfigurationParameter`. :returns: The list of :py:obj:`ConfigurationParameter` in this product. :rtype: list(ConfigurationParameter) .. py:method:: list_configuration_presets() List all the :py:obj:`ConfigurationPreset`. :returns: The list of :py:obj:`Configuration` in this product. :rtype: list(ConfigurationPreset) .. py:method:: create_configuration_preset(name) Create a new :py:obj:`ConfigurationPreset` in this product. :param name: Name of the :py:obj:`ConfigurationPreset`. :type name: str :returns: The newly created :py:obj:`ConfigurationPreset`. :rtype: ConfigurationPreset :raises ReadOnlyError: If :py:obj:`Database` is in read only mode.