diff options
author | Phoenix Katsch <phoenixkatsch> | 2022-10-03 20:26:02 +0300 |
---|---|---|
committer | Brecht Van Lommel <brecht@blender.org> | 2022-10-03 22:59:31 +0300 |
commit | b475506cfbd35fe2d356ce43a6a3e1f93bd6602b (patch) | |
tree | 030ef0c4eafbb9443ae5c6ed9b8d105dd5a82974 /intern/cycles/blender | |
parent | af51e4b41c9e591bd0640623d5314508f8e6a8ea (diff) |
Cycles: add option to bake specular from active camera viewpoint
Previously it would bake viewed from above the surface. The new option can be
useful when the baked result is meant to be viewed from a fixed viewpoint or
with limited camera motion.
Some effort is made to give a continuous reflection on parts of the surface
invisible to the camera, but this is necessarily only a rough approximation.
Differential Revision: https://developer.blender.org/D15921
Diffstat (limited to 'intern/cycles/blender')
-rw-r--r-- | intern/cycles/blender/addon/ui.py | 6 | ||||
-rw-r--r-- | intern/cycles/blender/camera.cpp | 6 |
2 files changed, 12 insertions, 0 deletions
diff --git a/intern/cycles/blender/addon/ui.py b/intern/cycles/blender/addon/ui.py index 7036e58f6fb..f763fe0eb0b 100644 --- a/intern/cycles/blender/addon/ui.py +++ b/intern/cycles/blender/addon/ui.py @@ -1880,6 +1880,12 @@ class CYCLES_RENDER_PT_bake(CyclesButtonsPanel, Panel): layout.prop(rd, "use_bake_multires") layout.prop(cscene, "bake_type") + if not rd.use_bake_multires and cscene.bake_type not in { + "AO", "POSITION", "NORMAL", "UV", "ROUGHNESS", "ENVIRONMENT"}: + row = layout.row() + row.prop(cbk, "view_from") + row.active = scene.camera is not None + class CYCLES_RENDER_PT_bake_influence(CyclesButtonsPanel, Panel): bl_label = "Influence" diff --git a/intern/cycles/blender/camera.cpp b/intern/cycles/blender/camera.cpp index 6926c833096..d7def9fdb7c 100644 --- a/intern/cycles/blender/camera.cpp +++ b/intern/cycles/blender/camera.cpp @@ -2,6 +2,7 @@ * Copyright 2011-2022 Blender Foundation */ #include "scene/camera.h" +#include "scene/bake.h" #include "scene/scene.h" #include "blender/sync.h" @@ -592,6 +593,11 @@ void BlenderSync::sync_camera(BL::RenderSettings &b_render, blender_camera_from_object(&bcam, b_engine, b_ob); b_engine.camera_model_matrix(b_ob, bcam.use_spherical_stereo, b_ob_matrix); bcam.matrix = get_transform(b_ob_matrix); + scene->bake_manager->set_use_camera(b_render.bake().view_from() == + BL::BakeSettings::view_from_ACTIVE_CAMERA); + } + else { + scene->bake_manager->set_use_camera(false); } /* sync */ |