[Bf-blender-cvs] [4c3ed98ca27] blender2.8: Local View
Dalai Felinto
noreply at git.blender.org
Sun Nov 25 12:59:56 CET 2018
Commit: 4c3ed98ca27667c3403361199096e31eaa93cce2
Author: Dalai Felinto
Date: Sun Nov 25 09:50:34 2018 -0200
Branches: blender2.8
https://developer.blender.org/rB4c3ed98ca27667c3403361199096e31eaa93cce2
Local View
Bring back per-viewport localview. This is based on Blender 2.79.
We have a limit of 16 different local view viewports.
We are using both the numpad /, as well as the regular /.
Missing features:
* Hack to make sure lights are always visible.
* Make rendered mode with external engines to support this as well
(probably just need to support this in the RNA iterators).
* Support over 16 viewports by taking existing viewports out of local view.
The code can use a cleanup pass in the future to unify the test to see
if an object is visible (or we can use TESTBASE in more places).
===================================================================
M release/scripts/presets/keyconfig/keymap_data/blender_default.py
M release/scripts/startup/bl_ui/space_view3d.py
M source/blender/blenkernel/BKE_layer.h
M source/blender/blenkernel/BKE_object.h
M source/blender/blenkernel/intern/layer.c
M source/blender/blenkernel/intern/layer_utils.c
M source/blender/blenkernel/intern/object.c
M source/blender/blenkernel/intern/object_update.c
M source/blender/blenloader/intern/readfile.c
M source/blender/depsgraph/intern/depsgraph_query_iter.cc
M source/blender/draw/intern/draw_manager.c
M source/blender/editors/armature/armature_add.c
M source/blender/editors/armature/armature_edit.c
M source/blender/editors/armature/armature_naming.c
M source/blender/editors/armature/armature_relations.c
M source/blender/editors/armature/armature_select.c
M source/blender/editors/armature/editarmature_undo.c
M source/blender/editors/armature/pose_edit.c
M source/blender/editors/armature/pose_select.c
M source/blender/editors/armature/pose_slide.c
M source/blender/editors/armature/pose_transform.c
M source/blender/editors/armature/pose_utils.c
M source/blender/editors/curve/editcurve.c
M source/blender/editors/curve/editcurve_paint.c
M source/blender/editors/curve/editcurve_select.c
M source/blender/editors/curve/editcurve_undo.c
M source/blender/editors/include/ED_armature.h
M source/blender/editors/include/ED_object.h
M source/blender/editors/include/ED_uvedit.h
M source/blender/editors/lattice/editlattice_select.c
M source/blender/editors/lattice/editlattice_tools.c
M source/blender/editors/lattice/editlattice_undo.c
M source/blender/editors/mesh/editmesh_bevel.c
M source/blender/editors/mesh/editmesh_bisect.c
M source/blender/editors/mesh/editmesh_extrude.c
M source/blender/editors/mesh/editmesh_extrude_screw.c
M source/blender/editors/mesh/editmesh_extrude_spin.c
M source/blender/editors/mesh/editmesh_inset.c
M source/blender/editors/mesh/editmesh_intersect.c
M source/blender/editors/mesh/editmesh_loopcut.c
M source/blender/editors/mesh/editmesh_path.c
M source/blender/editors/mesh/editmesh_polybuild.c
M source/blender/editors/mesh/editmesh_rip.c
M source/blender/editors/mesh/editmesh_rip_edge.c
M source/blender/editors/mesh/editmesh_select.c
M source/blender/editors/mesh/editmesh_select_similar.c
M source/blender/editors/mesh/editmesh_tools.c
M source/blender/editors/mesh/editmesh_undo.c
M source/blender/editors/metaball/editmball_undo.c
M source/blender/editors/metaball/mball_edit.c
M source/blender/editors/object/object_edit.c
M source/blender/editors/object/object_random.c
M source/blender/editors/object/object_select.c
M source/blender/editors/object/object_vgroup.c
M source/blender/editors/screen/screen_context.c
M source/blender/editors/space_info/info_stats.c
M source/blender/editors/space_view3d/view3d_edit.c
M source/blender/editors/space_view3d/view3d_gizmo_preselect_type.c
M source/blender/editors/space_view3d/view3d_intern.h
M source/blender/editors/space_view3d/view3d_ops.c
M source/blender/editors/space_view3d/view3d_select.c
M source/blender/editors/space_view3d/view3d_snap.c
M source/blender/editors/space_view3d/view3d_utils.c
M source/blender/editors/space_view3d/view3d_view.c
M source/blender/editors/transform/transform_generics.c
M source/blender/editors/transform/transform_gizmo_2d.c
M source/blender/editors/transform/transform_gizmo_3d.c
M source/blender/editors/transform/transform_snap.c
M source/blender/editors/uvedit/uvedit_draw.c
M source/blender/editors/uvedit/uvedit_ops.c
M source/blender/editors/uvedit/uvedit_smart_stitch.c
M source/blender/editors/uvedit/uvedit_unwrap_ops.c
M source/blender/makesdna/DNA_layer_types.h
M source/blender/makesdna/DNA_object_types.h
M source/blender/makesdna/DNA_scene_types.h
M source/blender/makesdna/DNA_view3d_types.h
M source/blender/makesrna/intern/rna_object_api.c
===================================================================
diff --git a/release/scripts/presets/keyconfig/keymap_data/blender_default.py b/release/scripts/presets/keyconfig/keymap_data/blender_default.py
index 2b83b03f322..00fd59820e0 100644
--- a/release/scripts/presets/keyconfig/keymap_data/blender_default.py
+++ b/release/scripts/presets/keyconfig/keymap_data/blender_default.py
@@ -845,6 +845,9 @@ def km_view3d(params):
])
items.extend([
+ # Visibility.
+ ("view3d.localview", {"type": 'NUMPAD_SLASH', "value": 'PRESS'}, None),
+ ("view3d.localview", {"type": 'SLASH', "value": 'PRESS'}, None),
# Navigation.
("view3d.rotate", {"type": 'MIDDLEMOUSE', "value": 'PRESS'}, None),
("view3d.move", {"type": 'MIDDLEMOUSE', "value": 'PRESS', "shift": True}, None),
diff --git a/release/scripts/startup/bl_ui/space_view3d.py b/release/scripts/startup/bl_ui/space_view3d.py
index 8b4028386ff..1cf9a3a4b31 100644
--- a/release/scripts/startup/bl_ui/space_view3d.py
+++ b/release/scripts/startup/bl_ui/space_view3d.py
@@ -609,6 +609,7 @@ class VIEW3D_MT_view(Menu):
layout.operator("view3d.view_all", text="Frame All").center = False
layout.operator("view3d.view_persportho", text="Perspective/Orthographic")
+ layout.operator("view3d.localview")
layout.separator()
diff --git a/source/blender/blenkernel/BKE_layer.h b/source/blender/blenkernel/BKE_layer.h
index 2d736b41d1a..e98fa189379 100644
--- a/source/blender/blenkernel/BKE_layer.h
+++ b/source/blender/blenkernel/BKE_layer.h
@@ -53,6 +53,7 @@ struct Main;
struct Object;
struct RenderEngine;
struct Scene;
+struct View3D;
struct ViewLayer;
struct WorkSpace;
@@ -140,6 +141,11 @@ void BKE_layer_eval_view_layer_indexed(
/* iterators */
+typedef struct ObjectsVisibleIteratorData {
+ struct ViewLayer *view_layer;
+ struct View3D *v3d;
+} ObjectsVisibleIteratorData;
+
void BKE_view_layer_selected_objects_iterator_begin(BLI_Iterator *iter, void *data_in);
void BKE_view_layer_selected_objects_iterator_next(BLI_Iterator *iter);
void BKE_view_layer_selected_objects_iterator_end(BLI_Iterator *iter);
@@ -155,6 +161,7 @@ void BKE_view_layer_selected_editable_objects_iterator_end(BLI_Iterator *iter);
struct ObjectsInModeIteratorData {
int object_mode;
struct ViewLayer *view_layer;
+ struct View3D *v3d;
struct Base *base_active;
};
@@ -174,39 +181,57 @@ void BKE_view_layer_visible_bases_iterator_begin(BLI_Iterator *iter, void *data_
void BKE_view_layer_visible_bases_iterator_next(BLI_Iterator *iter);
void BKE_view_layer_visible_bases_iterator_end(BLI_Iterator *iter);
-#define FOREACH_SELECTED_OBJECT_BEGIN(view_layer, _instance) \
+#define FOREACH_SELECTED_OBJECT_BEGIN(_view_layer, _v3d, _instance) \
+{ \
+ struct ObjectsVisibleIteratorData data_ = { \
+ .view_layer = _view_layer, \
+ .v3d = _v3d, \
+ }; \
ITER_BEGIN(BKE_view_layer_selected_objects_iterator_begin, \
BKE_view_layer_selected_objects_iterator_next, \
BKE_view_layer_selected_objects_iterator_end, \
- view_layer, Object *, _instance)
+ &data_, Object *, _instance)
#define FOREACH_SELECTED_OBJECT_END \
- ITER_END
+ ITER_END; \
+} ((void)0)
-#define FOREACH_SELECTED_EDITABLE_OBJECT_BEGIN(view_layer, _instance) \
+#define FOREACH_SELECTED_EDITABLE_OBJECT_BEGIN(_view_layer, _v3d, _instance) \
+{ \
+ struct ObjectsVisibleIteratorData data_ = { \
+ .view_layer = _view_layer, \
+ .v3d = _v3d, \
+ }; \
ITER_BEGIN(BKE_view_layer_selected_editable_objects_iterator_begin, \
BKE_view_layer_selected_editable_objects_iterator_next, \
BKE_view_layer_selected_editable_objects_iterator_end, \
- view_layer, Object *, _instance)
+ &data_, Object *, _instance)
#define FOREACH_SELECTED_EDITABLE_OBJECT_END \
- ITER_END
+ ITER_END; \
+} ((void)0)
-#define FOREACH_VISIBLE_OBJECT_BEGIN(view_layer, _instance) \
+#define FOREACH_VISIBLE_OBJECT_BEGIN(_view_layer, _v3d, _instance) \
+{ \
+ struct ObjectsVisibleIteratorData data_ = { \
+ .view_layer = _view_layer, \
+ .v3d = _v3d, \
+ }; \
ITER_BEGIN(BKE_view_layer_visible_objects_iterator_begin, \
BKE_view_layer_visible_objects_iterator_next, \
BKE_view_layer_visible_objects_iterator_end, \
- view_layer, Object *, _instance)
+ &data_, Object *, _instance)
#define FOREACH_VISIBLE_OBJECT_END \
- ITER_END
-
+ ITER_END; \
+} ((void)0)
-#define FOREACH_BASE_IN_MODE_BEGIN(_view_layer, _object_mode, _instance) \
+#define FOREACH_BASE_IN_MODE_BEGIN(_view_layer, _v3d, _object_mode, _instance) \
{ \
struct ObjectsInModeIteratorData data_ = { \
.object_mode = _object_mode, \
.view_layer = _view_layer, \
+ .v3d = _v3d, \
.base_active = _view_layer->basact, \
}; \
ITER_BEGIN(BKE_view_layer_bases_in_mode_iterator_begin, \
@@ -218,14 +243,14 @@ void BKE_view_layer_visible_bases_iterator_end(BLI_Iterator *iter);
ITER_END; \
} ((void)0)
-#define FOREACH_BASE_IN_EDIT_MODE_BEGIN(_view_layer, _instance) \
- FOREACH_BASE_IN_MODE_BEGIN(_view_layer, OB_MODE_EDIT, _instance)
+#define FOREACH_BASE_IN_EDIT_MODE_BEGIN(_view_layer, _v3d, _instance) \
+ FOREACH_BASE_IN_MODE_BEGIN(_view_layer, _v3d, OB_MODE_EDIT, _instance)
#define FOREACH_BASE_IN_EDIT_MODE_END \
FOREACH_BASE_IN_MODE_END
-#define FOREACH_OBJECT_IN_MODE_BEGIN(_view_layer, _object_mode, _instance) \
- FOREACH_BASE_IN_MODE_BEGIN(_view_layer, _object_mode, _base) { \
+#define FOREACH_OBJECT_IN_MODE_BEGIN(_view_layer, _v3d, _object_mode, _instance) \
+ FOREACH_BASE_IN_MODE_BEGIN(_view_layer, _v3d, _object_mode, _base) { \
Object *_instance = _base->object;
#define FOREACH_OBJECT_IN_MODE_END \
@@ -247,14 +272,20 @@ void BKE_view_layer_visible_bases_iterator_end(BLI_Iterator *iter);
#define FOREACH_SELECTED_BASE_END \
ITER_END
-#define FOREACH_VISIBLE_BASE_BEGIN(view_layer, _instance) \
+#define FOREACH_VISIBLE_BASE_BEGIN(_view_layer, _v3d, _instance) \
+{ \
+ struct ObjectsVisibleIteratorData data_ = { \
+ .view_layer = _view_layer, \
+ .v3d = _v3d, \
+ }; \
ITER_BEGIN(BKE_view_layer_visible_bases_iterator_begin, \
BKE_view_layer_visible_bases_iterator_next, \
BKE_view_layer_visible_bases_iterator_end, \
- view_layer, Base *, _instance)
+ &data_, Base *, _instance)
#define FOREACH_VISIBLE_BASE_END \
- ITER_END
+ ITER_END; \
+} ((void)0)
#define FOREACH_OBJECT_BEGIN(view_layer, _instance) \
@@ -332,21 +363,21 @@ struct ObjectsInModeParams {
};
Base **BKE_view_layer_array_from_bases_in_mode_params(
- struct ViewLayer *view_layer, uint *r_len,
+ struct ViewLayer *view_layer, struct View3D *v3d, uint *r_len,
const struct ObjectsInModeParams *params);
struct Object **BKE_view_layer_array_from_objects_in_mode_params(
- struct ViewLayer *view_layer, uint *len,
+ struct ViewLayer *view_layer, struct View3D *v3d, uint *len,
const struct ObjectsInModeParams *params);
-#define BKE_view_layer_array_from_objects_in_mode(view_layer, r_len, ...) \
+#define BKE_view_layer_array_from_objects_in_mode(view_layer, v3d, r_len, ...) \
BKE_view_layer_array_from_objects_in_mode_params( \
- view_layer, r_len, \
+ view_layer, v3d, r_len, \
&(const struct ObjectsInModeParams)__VA_ARGS__)
-#define BKE_view_layer_array_from_bases_in_mode(view_layer, r_len, ...) \
+#define BKE_view_layer_array_from_bases_in_mode(view_layer, v3d, r_len, ...) \
BKE_view_layer_array_from_bases_in_mode_params( \
- view_layer, r_len, \
+ view_layer, v3d, r_len, \
&(const struct ObjectsInModeParams)__VA_ARGS__)
bool BKE_view_layer_filter_edit_mesh_has_uvs(struct Object *ob, void *user_data);
@@ -354,38 +385,38 @@ bool BKE_view_layer_filter_edit_mesh_has_edges(struct Object *ob, void *user_dat
/* Utility macros that wrap common args (add more as needed). */
-#define BKE_view_layer_array_from_objects_in_edit_mode(view_layer, r_len) \
+#define BKE_view_layer_array_from_objects_in_edit_mode(view_layer, v3d, r_len) \
BKE_view_layer_array_from_objects_in_mode( \
- view_layer, r_len, { \
+ view_layer,
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list