{"id":13840797,"url":"https://github.com/owl-project/NVISII","last_synced_at":"2025-07-11T09:33:37.156Z","repository":{"id":39753907,"uuid":"256589983","full_name":"owl-project/NVISII","owner":"owl-project","description":null,"archived":false,"fork":false,"pushed_at":"2024-08-12T22:56:46.000Z","size":21658,"stargazers_count":320,"open_issues_count":61,"forks_count":27,"subscribers_count":8,"default_branch":"master","last_synced_at":"2024-08-13T22:59:09.848Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/owl-project.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2020-04-17T19:18:42.000Z","updated_at":"2024-08-12T22:56:49.000Z","dependencies_parsed_at":"2022-07-13T15:29:24.418Z","dependency_job_id":"7828fb39-2ee7-4091-bf5c-3554df77f2d6","html_url":"https://github.com/owl-project/NVISII","commit_stats":null,"previous_names":[],"tags_count":16,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/owl-project%2FNVISII","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/owl-project%2FNVISII/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/owl-project%2FNVISII/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/owl-project%2FNVISII/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/owl-project","download_url":"https://codeload.github.com/owl-project/NVISII/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":225712731,"owners_count":17512469,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-04T17:00:55.884Z","updated_at":"2024-11-21T10:30:47.629Z","avatar_url":"https://github.com/owl-project.png","language":"C++","funding_links":[],"categories":["[nvisii](https://nvisii.com/)"],"sub_categories":[],"readme":"# NVISII - NVIDIA Scene Imaging Interface\n\n\u003c!-- ![NVISII examples](https://i.imgur.com/A3MDFzy.png) --\u003e\n![NVISII examples](https://i.imgur.com/oygYO5M.png)\n\nNVISII is a python-enabled ray tracing based renderer built on top of NVIDIA OptiX (C++/CUDA backend). \nThe tool allows you to define complex scenes: 3d meshes, object materials, lights, loading textures, _etc._, and render \nthem using ray tracing techniques. \nA scene can be described in many ways, you can use our simple mesh definitions, use multiple obj files, or \nload a complex scene defined in an obj file.\nNVISII can be used to export metadata about the scene, _e.g._, object segmentation. \nFor more information see our [ICLR workshop 2021 paper](https://arxiv.org/abs/2105.13962).\n\n[Documentation](https://nvisii.com) and [quick tutorial](https://youtu.be/vg7FN7YDUy0).\n\n\u003c!--\nThis library provides a simple, primarily python-user targeted, interface to rendering images of a virtual scene. Its key cornerstones are:\n\na) a relatively simple, RTX/OptiX-accelerated path tracer, and\nb) a interface (available in both python and C) for declaring a scene, doing basic modifications to it, and rendering images\n\n The two primary goals of this lirary are\na) ease of use (in particular, for non-expert users, and from languages like python), and\nb) ease of deployment (ie, allowing headless rendering, minimal dependenies, etc).\nTo be clear: This is an academic and research renderer. There will be more sophisticated renderers out there, as well as faster ones, better ones, etc;\nthe goal of _this_ project is to offer something that's easy to get started with.\n --\u003e\n## Installing\n\nWe highly recommend that you use the pre-built wheels for python as follow: \n```\npip install nvisii\n```\nAlso make sure your NVIDIA drivers are up to date (default set at R460). We offer different `nvisii` packages for different NVIDIA driver versions.\nR435 `pip install nvisii==1.x.70`, r450 `pip install nvisii==1.x.71`, or R460 `pip install nvisii==1.x.72` which is the default version. \nIf you need more information about how to install NVIDIA drivers on Ubuntu please consult\n[this](https://ingowald.blog/installing-the-latest-nvidia-driver-cuda-and-optix-on-linux-ubuntu-18-04/).\n\n\n## Getting Started \n\nWe wrote different examples covering most of the functionalities of NVISII, [here](examples/). \nYou can also find more extensive documentation [here](https://nvisii.com).\n\n## Building \n\nExact commands used to build NVISII can be found in .github/manylinux.yml and .github/windows.yml.\nMore information on how to build will be added in the near future. \n\n\u003c!-- Although we do not recommend building nvisii from scratch. Here are the rudimentary \nrequirements: \n--\u003e\n\n## Docker\n\nHere are the steps to build a docker image for NVISII. \n\n```\ncd docker\nsudo sh get_nvidia_libs.sh\n```\n\nSince the CUDA docker image includes limited libs, this script adds the missing one for NVISII to run. \nThis could potentially cause problems if the docker image is deployed on a different system, \nplease make sure the NVIDIA drivers match on all your systems. This also implies that you should [check](https://github.com/owl-project/NVISII/blob/master/docker/Dockerfile#L31) which version \nof NViSII to install, see above. \n\n```\ndocker build . -t nvisii:07.20\n```\n\nYou can run an example like follow, \nmake sure you change `/PATH/TO/NVISII/` to your path to the root of this repo.   \n```\ndocker run --gpus 1 -v /PATH/TO/NVISII/:/code nvisii:07.20 python examples/01.simple_scene.py\n```\nThis will save a `tmp.png` in the root folder. \n\n## Citation\n\nIf you use this tool in your research project, please cite as follows:\n```\n@misc{morrical2021nvisii,\n      title={NViSII: A Scriptable Tool for Photorealistic Image Generation}, \n      author={Nathan Morrical and Jonathan Tremblay and Yunzhi Lin and Stephen Tyree and Stan Birchfield and Valerio Pascucci and Ingo Wald},\n      year={2021},\n      eprint={2105.13962},\n      archivePrefix={arXiv},\n      primaryClass={cs.CV}\n}\n```\nor \n```\n@misc{Morrical20nvisii,\n    author = {Nathan Morrical and Jonathan Tremblay and Stan Birchfield and Ingo Wald},\n    note= {\\url{ https://github.com/owl-project/NVISII/ }},\n    title = {{NVISII}: NVIDIA Scene Imaging Interface},\n    Year = 2020\n    }\n```\n## Requested features\n\n- texture.set_translation() and texture.set_rotation() functions for more randomization opportunities (issue 106, 140)\n\n- material.get_XYZ_texture() functions, which would be useful for when importing things like OBJs, then wanting to modify their textures (issue 141)\n\n- Vertex colors are currently unused. The vertex colors should multiply with the base color. Useful for molecular visualization. (issue 133)\n\n- render_ray_data function, loosly following render_data but for only one ray. would be useful for querying certain pixels or objects, ray casting calls, etc., (issue 129)\n\n- Directional light sources. An entity with a transform and a light component whose type is directional, and with no mesh component. Only the transform rotation would be used. Not sure yet how a directional light with a mesh component would work... (issue 124)\n\n- Ability to construct one component as a copy of another (issue 100)\n\n## Extra examples\n\n[Falling teapots](https://imgur.com/Fzjg7ZQ)\n\n[Falling objects dans une salle de bain](https://imgur.com/BqSKTO7)\n\n[Random camera pose around objects](https://imgur.com/79eMgUv)\n\n\u003c!-- ## Code Structure\n\n- submodules/ : external git submodule dependencies to build this\n- nvisii/ : the (static) library that provides the renderer\n    - nvisii/scene/ : code that maintains the nvisii \"scene graph\"\n    - nvisii/render/ : the actual renderer(s) provided in this library\n- cAPI/ : a extern \"C\" shared library/DLL interface for this library\n- python/ : python interface for this library\n- (?) tools/ : importer tools, as required for samples\n\n## Building\n\ntodo\n\n## Samples\n\ntodo: need (at least) the following samples\n\n- load an OBJ file, declare camera and light, render an image, save as ppm\n\n- same as before, but do simple modification of scene (ie, rotate it)\n\n- same as before, but two scene (probably need way of \"naming\" objects when loading), with one rotating around the other\n\n- same as before, but also render depth, and primID --\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fowl-project%2FNVISII","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fowl-project%2FNVISII","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fowl-project%2FNVISII/lists"}