{"id":13791332,"url":"https://github.com/linusmossberg/light-field-renderer","last_synced_at":"2025-05-12T10:31:50.474Z","repository":{"id":101182925,"uuid":"299894301","full_name":"linusmossberg/light-field-renderer","owner":"linusmossberg","description":"Interactive light field renderer using dynamically reparameterized light fields.","archived":false,"fork":false,"pushed_at":"2021-08-24T18:41:59.000Z","size":75229,"stargazers_count":67,"open_issues_count":0,"forks_count":10,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-11-18T05:38:58.295Z","etag":null,"topics":["autofocus","computational-photography","light-field","lightfield","rendering","tnm089","view-synthesis"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/linusmossberg.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,"roadmap":null,"authors":null}},"created_at":"2020-09-30T11:15:05.000Z","updated_at":"2024-11-08T07:25:26.000Z","dependencies_parsed_at":"2024-01-20T05:23:20.222Z","dependency_job_id":null,"html_url":"https://github.com/linusmossberg/light-field-renderer","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/linusmossberg%2Flight-field-renderer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/linusmossberg%2Flight-field-renderer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/linusmossberg%2Flight-field-renderer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/linusmossberg%2Flight-field-renderer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/linusmossberg","download_url":"https://codeload.github.com/linusmossberg/light-field-renderer/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253719977,"owners_count":21952935,"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":["autofocus","computational-photography","light-field","lightfield","rendering","tnm089","view-synthesis"],"created_at":"2024-08-03T22:00:58.946Z","updated_at":"2025-05-12T10:31:45.460Z","avatar_url":"https://github.com/linusmossberg.png","language":"C++","funding_links":[],"categories":["Demos"],"sub_categories":["Other"],"readme":"# Light Field Renderer\n\nThis is a light field renderer that can synthesize new camera views from a collection of images.\n\n\u003cimg src=\"https://user-images.githubusercontent.com/15798094/102777590-28471c80-4391-11eb-9e4d-0d4f1a4a173b.gif\" width=\"100%\"/\u003e\n\nThe renderer is mainly based on the paper [Dynamically Reparameterized Light Fields](https://dash.harvard.edu/handle/1/2634290), but additional features such as a dynamic synthetic aperture and phase detection autofocus has also been implemented. A report describing the renderer in more detail is available [here](report.pdf).\n\nThe program is written in C++ and uses OpenGL for hardware acceleration. The GUI is implemented using [NanoGUI](https://github.com/mitsuba-renderer/nanogui).\n\n## Usage\n\n![Screenshot](https://user-images.githubusercontent.com/15798094/97706716-683b0300-1ab6-11eb-9ac0-67f66a4f3765.png)\n\nThe image above is a screenshot of the program. Most aspects of the camera can be changed, such as position, rotation, focal length, depth of field (f-stop), focus distance etc. Most settings are hopefully self-explanatory, and some have explanatory tooltips. \n\n### Controls\n\n| Key                   | Action                |\n|-----------------------|-----------------------|\n| `W`                   | Move forward          |\n| `A`                   | Move left             |\n| `S`                   | Move back             |\n| `D`                   | Move right            |\n| `SPACE`               | Move up               |\n| `CTRL`                | Move down             |\n| `SCROLL`              | Change focus distance |\n| `SHIFT`+`MOUSE CLICK` | Autofocus             |\n\nClicking and holding down a mouse button in the render view activates mouse navigation, which is deactivated once the button is released. Mouse navigation is used to rotate the camera in `Free` mode (like in a first-person game) and to move the camera laterally in `Target` mode.\n\n## Examples\n\n### Dolly Zoom\n\u003cimg src=\"https://user-images.githubusercontent.com/15798094/97700126-97984280-1aab-11eb-87ea-e0dbcea23b9c.gif\"/\u003e\nMoving the camera back and forth while changing the focal length. This clearly shows that the synthesized view is a combination of several (hundred) images since all input images have the same focal length and are located on a plane perpendicular to the movement direction.\n\n### Focus Change\n\u003cimg src=\"https://user-images.githubusercontent.com/15798094/97703913-b8639680-1ab1-11eb-8d8d-947ec173f4b5.gif\"/\u003e\nMoving the focal plane between the shop owner and the metal sphere while using a large aperture.\n\n## Light Fields\n\nThe included light field was rendered in [Blender](https://www.blender.org/) using the simple script [blender-exporter.py](blender-exporter.py). The scene was created by [Alex Treviño](http://www.aendom.com/) using concept by [Anaïs Maamar](https://www.artstation.com/chatonlaser).\n\nThe renderer is also capable of rendering rectified light fields from the Stanford Lego Gantry, which can be downloaded here: http://lightfield.stanford.edu/lfs.html.\n\n### Config\n\nThe start values and ranges of sliders and such in the GUI can be modified by adding a `config.cfg` file to the light field folder that specifies the start, min and max value for different properties: \n```cfg\n# [property name] [start value] [min value] [max value]\nfocal-length 50 10 100\nfocus-distance 16 10 50\nf-stop 1.8 0.1 5.6\n```\nUnspecified properties uses the default values. All property names are available in [config.cpp](source/core/config.cpp#L54).\n\n## Building\n\nStart by cloning the program and all submodules using the following command:\n\u003cpre\u003e\u003ccode\u003egit clone \u003cb\u003e--recursive\u003c/b\u003e https://github.com/linusmossberg/light-field-renderer\u003c/code\u003e\u003c/pre\u003e\nBuild files can then be generated with [CMake](https://cmake.org/) using:\n```sh\ncd light-field-renderer\nmkdir build\ncd build\ncmake ..\n```\nThese should work automatically, but a few additional packages are required on certain platforms. On Debian/Ubuntu, these can be installed using:\n```sh\napt-get install xorg-dev libglu1-mesa-dev\n```\nand on RedHat/Fedora:\n```sh\nsudo dnf install mesa-libGLU-devel libXi-devel libXcursor-devel libXinerama-devel libXrandr-devel xorg-x11-server-devel\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flinusmossberg%2Flight-field-renderer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flinusmossberg%2Flight-field-renderer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flinusmossberg%2Flight-field-renderer/lists"}