├── .github ├── FUNDING.yml └── workflows │ └── release.yml ├── .gitignore ├── .vscode └── settings.json ├── LICENSE ├── README.md ├── TODO.md ├── __init__.py ├── blender_utility ├── __init__.py ├── blender_ui_utility.py ├── driver_utility.py ├── logging_utility.py ├── nerf_obj_utils.py ├── nerf_render_manager.py ├── nerf_scene.py ├── nerf_scene_update_handler.py ├── obj_type_utility.py ├── object_utility.py ├── point_clouds.py └── render_camera_utility.py ├── constants ├── __init__.py ├── math.py └── raymarching.py ├── docs └── release.md ├── effects ├── __init__.py ├── panels │ ├── __init__.py │ └── spatial_effects_panel.py ├── spatial │ ├── __init__.py │ ├── repeater_effect.py │ └── spatial_effect.py └── utils │ ├── __init__.py │ ├── common.py │ ├── drivers.py │ └── serialization.py ├── operators ├── __init__.py ├── operator_export_nerf_dataset.py ├── operator_export_nerfies_cameras.py ├── operator_export_render_cam_json.py ├── operator_export_world_matrix.py ├── operator_import_hypernerf_cams.py └── operator_import_nerf_transforms.py ├── panels ├── __init__.py ├── nerf_3dview_panels │ ├── __init__.py │ ├── dataset_panel.py │ ├── index.py │ ├── info_panel.py │ ├── preview_panel.py │ ├── snapshot_panel.py │ └── training_panel.py ├── nerf_object_panel.py ├── nerf_panel_operators │ ├── __init__.py │ ├── delete_nerf_dataset_operator.py │ ├── export_dataset_operator.py │ ├── export_nerf_snapshot_operator.py │ ├── import_dataset_operator.py │ ├── import_nerf_snapshot_operator.py │ ├── load_nerf_images_operator.py │ ├── preview_nerf_operator.py │ ├── reset_nerf_training_operator.py │ ├── train_nerf_operator.py │ └── unload_nerf_training_data_operator.py ├── render_panel.py ├── render_panel_operators │ ├── __init__.py │ ├── camera_manager_operators.py │ ├── camera_models │ │ ├── __init__.py │ │ ├── perspective_camera.py │ │ ├── quadrilateral_hexahedron_camera.py │ │ └── spherical_quadrilateral_camera.py │ ├── mask_shape_operators.py │ ├── ngp_snapshot_operators.py │ └── operator_export_nerf_render_json.py ├── train_panel.py └── train_panel_operators │ ├── __init__.py │ ├── camera_selection_operators.py │ ├── scene_operators.py │ └── setup_scene.py ├── preferences └── addon_preferences.py ├── registration ├── __init__.py └── registration.py ├── renderer ├── __init__.py ├── nerf_render_engine.py ├── nerf_snapshot_manager.py └── panels │ ├── __init__.py │ └── render_engine_raymarching_panel.py └── utility ├── __init__.py ├── developer_utility.py ├── dotdict.py ├── layout_utility.py ├── math.py ├── nerf_manager.py ├── pylib.py └── render_camera_utils.py /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | github: [JamesPerlman] 2 | -------------------------------------------------------------------------------- /.github/workflows/release.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JamesPerlman/TurboNeRF-Blender/HEAD/.github/workflows/release.yml -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JamesPerlman/TurboNeRF-Blender/HEAD/.gitignore -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JamesPerlman/TurboNeRF-Blender/HEAD/.vscode/settings.json -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JamesPerlman/TurboNeRF-Blender/HEAD/LICENSE -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JamesPerlman/TurboNeRF-Blender/HEAD/README.md -------------------------------------------------------------------------------- /TODO.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JamesPerlman/TurboNeRF-Blender/HEAD/TODO.md -------------------------------------------------------------------------------- /__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JamesPerlman/TurboNeRF-Blender/HEAD/__init__.py -------------------------------------------------------------------------------- /blender_utility/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JamesPerlman/TurboNeRF-Blender/HEAD/blender_utility/__init__.py -------------------------------------------------------------------------------- /blender_utility/blender_ui_utility.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JamesPerlman/TurboNeRF-Blender/HEAD/blender_utility/blender_ui_utility.py -------------------------------------------------------------------------------- /blender_utility/driver_utility.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JamesPerlman/TurboNeRF-Blender/HEAD/blender_utility/driver_utility.py -------------------------------------------------------------------------------- /blender_utility/logging_utility.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JamesPerlman/TurboNeRF-Blender/HEAD/blender_utility/logging_utility.py -------------------------------------------------------------------------------- /blender_utility/nerf_obj_utils.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JamesPerlman/TurboNeRF-Blender/HEAD/blender_utility/nerf_obj_utils.py -------------------------------------------------------------------------------- /blender_utility/nerf_render_manager.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JamesPerlman/TurboNeRF-Blender/HEAD/blender_utility/nerf_render_manager.py -------------------------------------------------------------------------------- /blender_utility/nerf_scene.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JamesPerlman/TurboNeRF-Blender/HEAD/blender_utility/nerf_scene.py -------------------------------------------------------------------------------- /blender_utility/nerf_scene_update_handler.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JamesPerlman/TurboNeRF-Blender/HEAD/blender_utility/nerf_scene_update_handler.py -------------------------------------------------------------------------------- /blender_utility/obj_type_utility.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JamesPerlman/TurboNeRF-Blender/HEAD/blender_utility/obj_type_utility.py -------------------------------------------------------------------------------- /blender_utility/object_utility.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JamesPerlman/TurboNeRF-Blender/HEAD/blender_utility/object_utility.py -------------------------------------------------------------------------------- /blender_utility/point_clouds.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JamesPerlman/TurboNeRF-Blender/HEAD/blender_utility/point_clouds.py -------------------------------------------------------------------------------- /blender_utility/render_camera_utility.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JamesPerlman/TurboNeRF-Blender/HEAD/blender_utility/render_camera_utility.py -------------------------------------------------------------------------------- /constants/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JamesPerlman/TurboNeRF-Blender/HEAD/constants/__init__.py -------------------------------------------------------------------------------- /constants/math.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JamesPerlman/TurboNeRF-Blender/HEAD/constants/math.py -------------------------------------------------------------------------------- /constants/raymarching.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JamesPerlman/TurboNeRF-Blender/HEAD/constants/raymarching.py -------------------------------------------------------------------------------- /docs/release.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JamesPerlman/TurboNeRF-Blender/HEAD/docs/release.md -------------------------------------------------------------------------------- /effects/__init__.py: -------------------------------------------------------------------------------- 1 | """ Unified folder for all effects. """ 2 | -------------------------------------------------------------------------------- /effects/panels/__init__.py: -------------------------------------------------------------------------------- 1 | """ Effects Panels """ 2 | -------------------------------------------------------------------------------- /effects/panels/spatial_effects_panel.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JamesPerlman/TurboNeRF-Blender/HEAD/effects/panels/spatial_effects_panel.py -------------------------------------------------------------------------------- /effects/spatial/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JamesPerlman/TurboNeRF-Blender/HEAD/effects/spatial/__init__.py -------------------------------------------------------------------------------- /effects/spatial/repeater_effect.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JamesPerlman/TurboNeRF-Blender/HEAD/effects/spatial/repeater_effect.py -------------------------------------------------------------------------------- /effects/spatial/spatial_effect.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JamesPerlman/TurboNeRF-Blender/HEAD/effects/spatial/spatial_effect.py -------------------------------------------------------------------------------- /effects/utils/__init__.py: -------------------------------------------------------------------------------- 1 | """ Utils for effects """ 2 | -------------------------------------------------------------------------------- /effects/utils/common.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JamesPerlman/TurboNeRF-Blender/HEAD/effects/utils/common.py -------------------------------------------------------------------------------- /effects/utils/drivers.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JamesPerlman/TurboNeRF-Blender/HEAD/effects/utils/drivers.py -------------------------------------------------------------------------------- /effects/utils/serialization.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JamesPerlman/TurboNeRF-Blender/HEAD/effects/utils/serialization.py -------------------------------------------------------------------------------- /operators/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JamesPerlman/TurboNeRF-Blender/HEAD/operators/__init__.py -------------------------------------------------------------------------------- /operators/operator_export_nerf_dataset.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JamesPerlman/TurboNeRF-Blender/HEAD/operators/operator_export_nerf_dataset.py -------------------------------------------------------------------------------- /operators/operator_export_nerfies_cameras.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JamesPerlman/TurboNeRF-Blender/HEAD/operators/operator_export_nerfies_cameras.py -------------------------------------------------------------------------------- /operators/operator_export_render_cam_json.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JamesPerlman/TurboNeRF-Blender/HEAD/operators/operator_export_render_cam_json.py -------------------------------------------------------------------------------- /operators/operator_export_world_matrix.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JamesPerlman/TurboNeRF-Blender/HEAD/operators/operator_export_world_matrix.py -------------------------------------------------------------------------------- /operators/operator_import_hypernerf_cams.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JamesPerlman/TurboNeRF-Blender/HEAD/operators/operator_import_hypernerf_cams.py -------------------------------------------------------------------------------- /operators/operator_import_nerf_transforms.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JamesPerlman/TurboNeRF-Blender/HEAD/operators/operator_import_nerf_transforms.py -------------------------------------------------------------------------------- /panels/__init__.py: -------------------------------------------------------------------------------- 1 | """ Contains panels for operating on NeRF scenes """ 2 | -------------------------------------------------------------------------------- /panels/nerf_3dview_panels/__init__.py: -------------------------------------------------------------------------------- 1 | """ Panels for the 3D View """ 2 | -------------------------------------------------------------------------------- /panels/nerf_3dview_panels/dataset_panel.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JamesPerlman/TurboNeRF-Blender/HEAD/panels/nerf_3dview_panels/dataset_panel.py -------------------------------------------------------------------------------- /panels/nerf_3dview_panels/index.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JamesPerlman/TurboNeRF-Blender/HEAD/panels/nerf_3dview_panels/index.py -------------------------------------------------------------------------------- /panels/nerf_3dview_panels/info_panel.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JamesPerlman/TurboNeRF-Blender/HEAD/panels/nerf_3dview_panels/info_panel.py -------------------------------------------------------------------------------- /panels/nerf_3dview_panels/preview_panel.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JamesPerlman/TurboNeRF-Blender/HEAD/panels/nerf_3dview_panels/preview_panel.py -------------------------------------------------------------------------------- /panels/nerf_3dview_panels/snapshot_panel.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JamesPerlman/TurboNeRF-Blender/HEAD/panels/nerf_3dview_panels/snapshot_panel.py -------------------------------------------------------------------------------- /panels/nerf_3dview_panels/training_panel.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JamesPerlman/TurboNeRF-Blender/HEAD/panels/nerf_3dview_panels/training_panel.py -------------------------------------------------------------------------------- /panels/nerf_object_panel.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JamesPerlman/TurboNeRF-Blender/HEAD/panels/nerf_object_panel.py -------------------------------------------------------------------------------- /panels/nerf_panel_operators/__init__.py: -------------------------------------------------------------------------------- 1 | """ Operators for the NeRF Panel """ -------------------------------------------------------------------------------- /panels/nerf_panel_operators/delete_nerf_dataset_operator.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JamesPerlman/TurboNeRF-Blender/HEAD/panels/nerf_panel_operators/delete_nerf_dataset_operator.py -------------------------------------------------------------------------------- /panels/nerf_panel_operators/export_dataset_operator.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JamesPerlman/TurboNeRF-Blender/HEAD/panels/nerf_panel_operators/export_dataset_operator.py -------------------------------------------------------------------------------- /panels/nerf_panel_operators/export_nerf_snapshot_operator.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JamesPerlman/TurboNeRF-Blender/HEAD/panels/nerf_panel_operators/export_nerf_snapshot_operator.py -------------------------------------------------------------------------------- /panels/nerf_panel_operators/import_dataset_operator.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JamesPerlman/TurboNeRF-Blender/HEAD/panels/nerf_panel_operators/import_dataset_operator.py -------------------------------------------------------------------------------- /panels/nerf_panel_operators/import_nerf_snapshot_operator.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JamesPerlman/TurboNeRF-Blender/HEAD/panels/nerf_panel_operators/import_nerf_snapshot_operator.py -------------------------------------------------------------------------------- /panels/nerf_panel_operators/load_nerf_images_operator.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JamesPerlman/TurboNeRF-Blender/HEAD/panels/nerf_panel_operators/load_nerf_images_operator.py -------------------------------------------------------------------------------- /panels/nerf_panel_operators/preview_nerf_operator.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JamesPerlman/TurboNeRF-Blender/HEAD/panels/nerf_panel_operators/preview_nerf_operator.py -------------------------------------------------------------------------------- /panels/nerf_panel_operators/reset_nerf_training_operator.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JamesPerlman/TurboNeRF-Blender/HEAD/panels/nerf_panel_operators/reset_nerf_training_operator.py -------------------------------------------------------------------------------- /panels/nerf_panel_operators/train_nerf_operator.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JamesPerlman/TurboNeRF-Blender/HEAD/panels/nerf_panel_operators/train_nerf_operator.py -------------------------------------------------------------------------------- /panels/nerf_panel_operators/unload_nerf_training_data_operator.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JamesPerlman/TurboNeRF-Blender/HEAD/panels/nerf_panel_operators/unload_nerf_training_data_operator.py -------------------------------------------------------------------------------- /panels/render_panel.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JamesPerlman/TurboNeRF-Blender/HEAD/panels/render_panel.py -------------------------------------------------------------------------------- /panels/render_panel_operators/__init__.py: -------------------------------------------------------------------------------- 1 | """ Operators for the NeRF Render Panel """ 2 | -------------------------------------------------------------------------------- /panels/render_panel_operators/camera_manager_operators.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JamesPerlman/TurboNeRF-Blender/HEAD/panels/render_panel_operators/camera_manager_operators.py -------------------------------------------------------------------------------- /panels/render_panel_operators/camera_models/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JamesPerlman/TurboNeRF-Blender/HEAD/panels/render_panel_operators/camera_models/__init__.py -------------------------------------------------------------------------------- /panels/render_panel_operators/camera_models/perspective_camera.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JamesPerlman/TurboNeRF-Blender/HEAD/panels/render_panel_operators/camera_models/perspective_camera.py -------------------------------------------------------------------------------- /panels/render_panel_operators/camera_models/quadrilateral_hexahedron_camera.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JamesPerlman/TurboNeRF-Blender/HEAD/panels/render_panel_operators/camera_models/quadrilateral_hexahedron_camera.py -------------------------------------------------------------------------------- /panels/render_panel_operators/camera_models/spherical_quadrilateral_camera.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JamesPerlman/TurboNeRF-Blender/HEAD/panels/render_panel_operators/camera_models/spherical_quadrilateral_camera.py -------------------------------------------------------------------------------- /panels/render_panel_operators/mask_shape_operators.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JamesPerlman/TurboNeRF-Blender/HEAD/panels/render_panel_operators/mask_shape_operators.py -------------------------------------------------------------------------------- /panels/render_panel_operators/ngp_snapshot_operators.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JamesPerlman/TurboNeRF-Blender/HEAD/panels/render_panel_operators/ngp_snapshot_operators.py -------------------------------------------------------------------------------- /panels/render_panel_operators/operator_export_nerf_render_json.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JamesPerlman/TurboNeRF-Blender/HEAD/panels/render_panel_operators/operator_export_nerf_render_json.py -------------------------------------------------------------------------------- /panels/train_panel.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JamesPerlman/TurboNeRF-Blender/HEAD/panels/train_panel.py -------------------------------------------------------------------------------- /panels/train_panel_operators/__init__.py: -------------------------------------------------------------------------------- 1 | """ Ease-of-use operators for NeRF Panel """ 2 | -------------------------------------------------------------------------------- /panels/train_panel_operators/camera_selection_operators.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JamesPerlman/TurboNeRF-Blender/HEAD/panels/train_panel_operators/camera_selection_operators.py -------------------------------------------------------------------------------- /panels/train_panel_operators/scene_operators.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JamesPerlman/TurboNeRF-Blender/HEAD/panels/train_panel_operators/scene_operators.py -------------------------------------------------------------------------------- /panels/train_panel_operators/setup_scene.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JamesPerlman/TurboNeRF-Blender/HEAD/panels/train_panel_operators/setup_scene.py -------------------------------------------------------------------------------- /preferences/addon_preferences.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JamesPerlman/TurboNeRF-Blender/HEAD/preferences/addon_preferences.py -------------------------------------------------------------------------------- /registration/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JamesPerlman/TurboNeRF-Blender/HEAD/registration/__init__.py -------------------------------------------------------------------------------- /registration/registration.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JamesPerlman/TurboNeRF-Blender/HEAD/registration/registration.py -------------------------------------------------------------------------------- /renderer/__init__.py: -------------------------------------------------------------------------------- 1 | """ Custom NeRF Renderer """ 2 | -------------------------------------------------------------------------------- /renderer/nerf_render_engine.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JamesPerlman/TurboNeRF-Blender/HEAD/renderer/nerf_render_engine.py -------------------------------------------------------------------------------- /renderer/nerf_snapshot_manager.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JamesPerlman/TurboNeRF-Blender/HEAD/renderer/nerf_snapshot_manager.py -------------------------------------------------------------------------------- /renderer/panels/__init__.py: -------------------------------------------------------------------------------- 1 | """ Custom NeRF render engine panels """ -------------------------------------------------------------------------------- /renderer/panels/render_engine_raymarching_panel.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JamesPerlman/TurboNeRF-Blender/HEAD/renderer/panels/render_engine_raymarching_panel.py -------------------------------------------------------------------------------- /utility/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JamesPerlman/TurboNeRF-Blender/HEAD/utility/__init__.py -------------------------------------------------------------------------------- /utility/developer_utility.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JamesPerlman/TurboNeRF-Blender/HEAD/utility/developer_utility.py -------------------------------------------------------------------------------- /utility/dotdict.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JamesPerlman/TurboNeRF-Blender/HEAD/utility/dotdict.py -------------------------------------------------------------------------------- /utility/layout_utility.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JamesPerlman/TurboNeRF-Blender/HEAD/utility/layout_utility.py -------------------------------------------------------------------------------- /utility/math.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JamesPerlman/TurboNeRF-Blender/HEAD/utility/math.py -------------------------------------------------------------------------------- /utility/nerf_manager.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JamesPerlman/TurboNeRF-Blender/HEAD/utility/nerf_manager.py -------------------------------------------------------------------------------- /utility/pylib.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JamesPerlman/TurboNeRF-Blender/HEAD/utility/pylib.py -------------------------------------------------------------------------------- /utility/render_camera_utils.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JamesPerlman/TurboNeRF-Blender/HEAD/utility/render_camera_utils.py --------------------------------------------------------------------------------