diff --git a/scripts/run.py b/scripts/run.py index ea6bbf3959eb793b8d8edb4203fd081f59b24306..e5e3aeac2bfa2893fbd045002244adcbc46cc8fb 100644 --- a/scripts/run.py +++ b/scripts/run.py @@ -36,20 +36,21 @@ def parse_args(): parser.add_argument("--save_snapshot", default="", help="Save this snapshot after training. recommended extension: .msgpack") parser.add_argument("--nerf_compatibility", action="store_true", help="Matches parameters with original NeRF. Can cause slowness and worse results on some scenes.") - parser.add_argument("--test_transforms", default="", help="Path to a nerf style transforms json from which we will compute PSNR") + parser.add_argument("--test_transforms", default="", help="Path to a nerf style transforms json from which we will compute PSNR.") - parser.add_argument("--screenshot_transforms", default="", help="Path to a nerf style transforms json from which to save a screenshot.") - parser.add_argument("--screenshot_frames", nargs="*", help="Which frame(s) to take a screenshot of") - parser.add_argument("--screenshot_dir", default="", help="which directory to output screenshots to") - parser.add_argument("--screenshot_w", type=int, default=0, help="screenshot res width") - parser.add_argument("--screenshot_h", type=int, default=0, help="screenshot res height") - parser.add_argument("--screenshot_spp", type=int, default=16, help="screenshot spp") + parser.add_argument("--screenshot_transforms", default="", help="Path to a nerf style transforms.json from which to save screenshots.") + parser.add_argument("--screenshot_frames", nargs="*", help="Which frame(s) to take screenshots of.") + parser.add_argument("--screenshot_dir", default="", help="Which directory to output screenshots to.") + parser.add_argument("--screenshot_spp", type=int, default=16, help="Number of samples per pixel in screenshots.") + + parser.add_argument("--width", "--screenshot_w", type=int, default=0, help="Resolution width of GUI and screenshots.") + parser.add_argument("--height", "--screenshot_h", type=int, default=0, help="Resolution height of GUI and screenshots.") parser.add_argument("--gui", action="store_true", help="Run the testbed GUI interactively.") parser.add_argument("--train", action="store_true", help="If the GUI is enabled, controls whether training starts immediately.") parser.add_argument("--n_steps", type=int, default=-1, help="Number of steps to train for before quitting.") - parser.add_argument("--sharpen", default=0, help="Set amount of sharpening applied to NeRF training images") + parser.add_argument("--sharpen", default=0, help="Set amount of sharpening applied to NeRF training images.") args = parser.parse_args() return args @@ -122,8 +123,8 @@ if __name__ == "__main__": if args.gui: # Pick a sensible GUI resolution depending on arguments. - sw = args.screenshot_w or 1920 - sh = args.screenshot_h or 1080 + sw = args.width or 1920 + sh = args.height or 1080 while sw*sh > 1920*1080*4: sw = int(sw / 2) sh = int(sh / 2) @@ -277,7 +278,7 @@ if __name__ == "__main__": ssim = totssim/(totcount or 1) print(f"PSNR={psnr} [min={minpsnr} max={maxpsnr}] SSIM={ssim}") - if args.screenshot_w: + if args.width: if ref_transforms: testbed.fov_axis = 0 testbed.fov = ref_transforms["camera_angle_x"] * 180 / np.pi @@ -295,13 +296,13 @@ if __name__ == "__main__": outname = outname + ".png" print(f"rendering {outname}") - image = testbed.render(args.screenshot_w or int(ref_transforms["w"]), args.screenshot_h or int(ref_transforms["h"]), args.screenshot_spp, True) + image = testbed.render(args.width or int(ref_transforms["w"]), args.height or int(ref_transforms["h"]), args.screenshot_spp, True) os.makedirs(os.path.dirname(outname), exist_ok=True) write_image(outname, image) - else: + elif args.screenshot_dir: outname = os.path.join(args.screenshot_dir, args.scene + "_" + network_stem) print(f"Rendering {outname}.png") - image = testbed.render(args.screenshot_w, args.screenshot_h, args.screenshot_spp, True) + image = testbed.render(args.width, args.height, args.screenshot_spp, True) if os.path.dirname(outname) != "": os.makedirs(os.path.dirname(outname), exist_ok=True) write_image(outname + ".png", image) diff --git a/src/main.cu b/src/main.cu index 0bcc62a4caa1377bbd411048d81fcf5efeca521d..f6be9256bcf252d7c0648f882017b38ca24ea23d 100644 --- a/src/main.cu +++ b/src/main.cu @@ -85,6 +85,20 @@ int main(int argc, char** argv) { {"snapshot"}, }; + ValueFlag<uint32_t> width_flag{ + parser, + "WIDTH", + "Resolution width of the GUI.", + {"width"}, + }; + + ValueFlag<uint32_t> height_flag{ + parser, + "HEIGHT", + "Resolution height of the GUI.", + {"height"}, + }; + Flag version_flag{ parser, "VERSION", @@ -211,7 +225,7 @@ int main(int argc, char** argv) { #endif if (gui) { - testbed.init_window(1920, 1080); + testbed.init_window(width_flag ? get(width_flag) : 1920, height_flag ? get(height_flag) : 1080); } // Render/training loop