Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/owl-project/NVISII
https://github.com/owl-project/NVISII
Last synced: about 2 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/owl-project/NVISII
- Owner: owl-project
- License: apache-2.0
- Created: 2020-04-17T19:18:42.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2024-08-12T22:56:46.000Z (5 months ago)
- Last Synced: 2024-08-13T22:59:09.848Z (5 months ago)
- Language: C++
- Size: 20.7 MB
- Stars: 320
- Watchers: 8
- Forks: 27
- Open Issues: 61
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-simulation - Github - A python-enabled ray tracing based renderer built on top of NVIDIA OptiX (C++/CUDA backend). ([nvisii](https://nvisii.com/))
README
# NVISII - NVIDIA Scene Imaging Interface
![NVISII examples](https://i.imgur.com/oygYO5M.png)
NVISII is a python-enabled ray tracing based renderer built on top of NVIDIA OptiX (C++/CUDA backend).
The tool allows you to define complex scenes: 3d meshes, object materials, lights, loading textures, _etc._, and render
them using ray tracing techniques.
A scene can be described in many ways, you can use our simple mesh definitions, use multiple obj files, or
load a complex scene defined in an obj file.
NVISII can be used to export metadata about the scene, _e.g._, object segmentation.
For more information see our [ICLR workshop 2021 paper](https://arxiv.org/abs/2105.13962).[Documentation](https://nvisii.com) and [quick tutorial](https://youtu.be/vg7FN7YDUy0).
## Installing
We highly recommend that you use the pre-built wheels for python as follow:
```
pip install nvisii
```
Also make sure your NVIDIA drivers are up to date (default set at R460). We offer different `nvisii` packages for different NVIDIA driver versions.
R435 `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.
If you need more information about how to install NVIDIA drivers on Ubuntu please consult
[this](https://ingowald.blog/installing-the-latest-nvidia-driver-cuda-and-optix-on-linux-ubuntu-18-04/).## Getting Started
We wrote different examples covering most of the functionalities of NVISII, [here](examples/).
You can also find more extensive documentation [here](https://nvisii.com).## Building
Exact commands used to build NVISII can be found in .github/manylinux.yml and .github/windows.yml.
More information on how to build will be added in the near future.## Docker
Here are the steps to build a docker image for NVISII.
```
cd docker
sudo sh get_nvidia_libs.sh
```Since the CUDA docker image includes limited libs, this script adds the missing one for NVISII to run.
This could potentially cause problems if the docker image is deployed on a different system,
please 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
of NViSII to install, see above.```
docker build . -t nvisii:07.20
```You can run an example like follow,
make sure you change `/PATH/TO/NVISII/` to your path to the root of this repo.
```
docker run --gpus 1 -v /PATH/TO/NVISII/:/code nvisii:07.20 python examples/01.simple_scene.py
```
This will save a `tmp.png` in the root folder.## Citation
If you use this tool in your research project, please cite as follows:
```
@misc{morrical2021nvisii,
title={NViSII: A Scriptable Tool for Photorealistic Image Generation},
author={Nathan Morrical and Jonathan Tremblay and Yunzhi Lin and Stephen Tyree and Stan Birchfield and Valerio Pascucci and Ingo Wald},
year={2021},
eprint={2105.13962},
archivePrefix={arXiv},
primaryClass={cs.CV}
}
```
or
```
@misc{Morrical20nvisii,
author = {Nathan Morrical and Jonathan Tremblay and Stan Birchfield and Ingo Wald},
note= {\url{ https://github.com/owl-project/NVISII/ }},
title = {{NVISII}: NVIDIA Scene Imaging Interface},
Year = 2020
}
```
## Requested features- texture.set_translation() and texture.set_rotation() functions for more randomization opportunities (issue 106, 140)
- material.get_XYZ_texture() functions, which would be useful for when importing things like OBJs, then wanting to modify their textures (issue 141)
- Vertex colors are currently unused. The vertex colors should multiply with the base color. Useful for molecular visualization. (issue 133)
- 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)
- 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)
- Ability to construct one component as a copy of another (issue 100)
## Extra examples
[Falling teapots](https://imgur.com/Fzjg7ZQ)
[Falling objects dans une salle de bain](https://imgur.com/BqSKTO7)
[Random camera pose around objects](https://imgur.com/79eMgUv)