Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Full implementation of features for dynamic scenes into the Viser viewer. #2936

Merged
merged 12 commits into from
Feb 21, 2024

Conversation

iSach
Copy link
Contributor

@iSach iSach commented Feb 20, 2024

Description

This pull request finalizes the feature fix in PR #2931.

To allow working with dynamic scenes on the new Viser viewer, the Render panel now allows for setting per-keyframe timestamps along with a default time value. When rendering, it will interpolate between the times of each keyframe (similar to FOV interpolation).

Also, unlike the legacy viewer which does not support previewing the dynamic render, this PR separates the default view (using the time in the Control panel) and the preview view so that one can preview (although blurry obviously :-)) their rendered dynamic scene!

TL;DR

  • The Control panel now has a slider for setting the time at which the (dynamic) scene is rendered.
  • The Render panel now has a default time slider, which sets the default time for each keyframe.
  • Each keyframe can override the default time value. At render (i.e., through the camera path JSON file), each frame between keyframes will interpolate the render time.
  • The render preview now supports dynamic scenes, which allows for going into preview mode and see how the animated render will look like.

Demo

demo_time_render.mp4

@iSach
Copy link
Contributor Author

iSach commented Feb 20, 2024

Little fix incoming with JSON exports.

@iSach
Copy link
Contributor Author

iSach commented Feb 20, 2024

Should be good now. :)

Copy link
Collaborator

@brentyi brentyi left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

looks good to me, thanks @iSach!!

@@ -902,8 +989,10 @@ def _(_) -> None:
wxyz=pose.rotation().wxyz,
# There are some floating point conversions between degrees and radians, so the fov and
# default_Fov values will not be exactly matched.
override_fov_enabled=abs(frame["fov"] - json_data.get("default_fov", 0.0)) < 1e-3,
override_fov_enabled=abs(frame["fov"] - json_data.get("default_fov", 0.0)) > 1e-3,
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

also thanks for fixing my bug 🎊

@brentyi brentyi enabled auto-merge (squash) February 20, 2024 23:48
@brentyi brentyi merged commit a8b3f71 into nerfstudio-project:main Feb 21, 2024
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants