[Bf-blender-cvs] [ca0c24c9df0] soc-2019-npr: LANPR: Manual stroke update functions. (Not working yet)

YimingWu noreply at git.blender.org
Wed Jun 19 11:43:27 CEST 2019


Commit: ca0c24c9df0a542856c97d26b802ff494e007c96
Author: YimingWu
Date:   Wed Jun 19 17:41:02 2019 +0800
Branches: soc-2019-npr
https://developer.blender.org/rBca0c24c9df0a542856c97d26b802ff494e007c96

LANPR: Manual stroke update functions. (Not working yet)

===================================================================

M	release/scripts/startup/bl_ui/properties_data_modifier.py
M	source/blender/draw/engines/lanpr/lanpr_access.c
M	source/blender/draw/engines/lanpr/lanpr_access.h
M	source/blender/draw/engines/lanpr/lanpr_engine.c
M	source/blender/draw/engines/lanpr/lanpr_ops.c
M	source/blender/editors/render/render_intern.h
M	source/blender/editors/render/render_ops.c

===================================================================

diff --git a/release/scripts/startup/bl_ui/properties_data_modifier.py b/release/scripts/startup/bl_ui/properties_data_modifier.py
index 4f37cf04265..e2416de1410 100644
--- a/release/scripts/startup/bl_ui/properties_data_modifier.py
+++ b/release/scripts/startup/bl_ui/properties_data_modifier.py
@@ -1669,7 +1669,7 @@ class DATA_PT_modifiers(ModifierButtonsPanel, Panel):
         col.prop(md, "face_influence")
 
     def FEATURE_LINE(self, layout, ob, md):
-        layout.label(text='Not operational yet')
+        layout.operator("scene.lanpr_update_gp_strokes", icon='RENDER_STILL', text='Manual Update')
         layout.label(text='Usage:')
         row = layout.row()
         row.prop(md,'usage',expand=True)
@@ -1684,7 +1684,7 @@ class DATA_PT_modifiers(ModifierButtonsPanel, Panel):
             row.prop(md,'enable_modifier_mark',toggle=True)
             layout.label(text='Result GP:')
             layout.prop(md,'target')
-            layout.prop(md,'replace')
+            layout.prop(md,'replace', text='Replace existing frames')
 
             row = layout.row()
             row.prop(md,'layer')
diff --git a/source/blender/draw/engines/lanpr/lanpr_access.c b/source/blender/draw/engines/lanpr/lanpr_access.c
index 50abf53bbd2..95cfe3dd2e7 100644
--- a/source/blender/draw/engines/lanpr/lanpr_access.c
+++ b/source/blender/draw/engines/lanpr/lanpr_access.c
@@ -292,7 +292,7 @@ void lanpr_update_data_for_external(Depsgraph *depsgraph)
     return;
   if (!lanpr_share.render_buffer_shared ||
       lanpr_share.render_buffer_shared->cached_for_frame != scene->r.cfra) {
-    lanpr_compute_feature_lines_internal(depsgraph, lanpr, scene);
+    lanpr_compute_feature_lines_internal(depsgraph);
   }
 }
 
diff --git a/source/blender/draw/engines/lanpr/lanpr_access.h b/source/blender/draw/engines/lanpr/lanpr_access.h
index 0e3903c9f37..5703cc2e52e 100644
--- a/source/blender/draw/engines/lanpr/lanpr_access.h
+++ b/source/blender/draw/engines/lanpr/lanpr_access.h
@@ -20,7 +20,7 @@ void lanpr_update_data_for_external(Depsgraph *depsgraph);
 
 int lanpr_count_chain(LANPR_RenderLineChain *rlc);
 
-int lanpr_compute_feature_lines_internal(Depsgraph *depsgraph, SceneLANPR *lanpr, Scene *scene);
+int lanpr_compute_feature_lines_internal(Depsgraph *depsgraph);
 
 void lanpr_destroy_render_data(struct LANPR_RenderBuffer *rb);
 
diff --git a/source/blender/draw/engines/lanpr/lanpr_engine.c b/source/blender/draw/engines/lanpr/lanpr_engine.c
index 2294af796b1..f588e87a0b3 100644
--- a/source/blender/draw/engines/lanpr/lanpr_engine.c
+++ b/source/blender/draw/engines/lanpr/lanpr_engine.c
@@ -587,8 +587,8 @@ static void lanpr_render_matrices_init(RenderEngine *engine, Depsgraph *depsgrap
   DRW_view_set_active(view);
 }
 
-int lanpr_compute_feature_lines_internal(Depsgraph *depsgraph, SceneLANPR *lanpr, Scene *scene);
-LANPR_RenderBuffer *lanpr_create_render_buffer(SceneLANPR *lanpr);
+int lanpr_compute_feature_lines_internal(Depsgraph *depsgraph);
+LANPR_RenderBuffer *lanpr_create_render_buffer();
 
 extern DrawEngineType draw_engine_lanpr_type;
 
@@ -628,10 +628,10 @@ static void lanpr_render_to_image(LANPR_Data *vedata,
   if (lanpr->master_mode == LANPR_MASTER_MODE_SOFTWARE ||
       (lanpr->master_mode == LANPR_MASTER_MODE_DPIX && lanpr->enable_intersections)) {
     if (!lanpr_share.render_buffer_shared)
-      lanpr_create_render_buffer(lanpr);
+      lanpr_create_render_buffer();
     if (lanpr_share.render_buffer_shared->cached_for_frame != scene->r.cfra ||
         LANPR_GLOBAL_update_tag) {
-      lanpr_compute_feature_lines_internal(draw_ctx->depsgraph, lanpr, scene);
+      lanpr_compute_feature_lines_internal(draw_ctx->depsgraph);
     }
   }
 
diff --git a/source/blender/draw/engines/lanpr/lanpr_ops.c b/source/blender/draw/engines/lanpr/lanpr_ops.c
index 2324f50d83d..90e60ebfd53 100644
--- a/source/blender/draw/engines/lanpr/lanpr_ops.c
+++ b/source/blender/draw/engines/lanpr/lanpr_ops.c
@@ -40,6 +40,11 @@
 #include "RNA_access.h"
 #include "RNA_define.h"
 
+#include "BKE_modifier.h"
+#include "BKE_gpencil.h"
+#include "BKE_gpencil_modifier.h"
+#include "lanpr_access.h"
+
 extern LANPR_SharedResource lanpr_share;
 struct Object;
 
@@ -3308,7 +3313,7 @@ void lanpr_destroy_render_data(LANPR_RenderBuffer *rb)
   mem_static_destroy(&rb->render_data_pool);
 }
 
-LANPR_RenderBuffer *lanpr_create_render_buffer(SceneLANPR *lanpr)
+LANPR_RenderBuffer *lanpr_create_render_buffer()
 {
   if (lanpr_share.render_buffer_shared) {
     lanpr_destroy_render_data(lanpr_share.render_buffer_shared);
@@ -3941,22 +3946,24 @@ void lanpr_software_draw_scene(void *vedata, GPUFrameBuffer *dfb, int is_render)
 /* ============================================ operators =========================================
  */
 
-int lanpr_compute_feature_lines_internal(Depsgraph *depsgraph, SceneLANPR *lanpr, Scene *scene)
+int lanpr_compute_feature_lines_internal(Depsgraph *depsgraph)
 {
   LANPR_RenderBuffer *rb;
+  SceneLANPR* lanpr;
 
-  rb = lanpr_create_render_buffer(lanpr);
+  rb = lanpr_create_render_buffer();
 
   lanpr_share.render_buffer_shared = rb;
 
-  rb->scene = scene;
-  rb->w = scene->r.xsch;
-  rb->h = scene->r.ysch;
+  rb->scene = DEG_get_evaluated_scene(depsgraph);
+  rb->w = rb->scene->r.xsch;
+  rb->h = rb->scene->r.ysch;
+  lanpr = &rb->scene->lanpr;
   rb->enable_intersections = lanpr->enable_intersections;
 
   rb->triangle_size = lanpr_get_render_triangle_size(rb);
 
-  lanpr_make_render_geometry_buffers(depsgraph, scene, scene->camera, rb);
+  lanpr_make_render_geometry_buffers(depsgraph, rb->scene, rb->scene->camera, rb);
 
   lanpr_compute_view_Vector(rb);
   lanpr_cull_triangles(rb);
@@ -3977,7 +3984,7 @@ int lanpr_compute_feature_lines_internal(Depsgraph *depsgraph, SceneLANPR *lanpr
     lanpr_connect_chains_image_space(rb);
   }
 
-  rb->cached_for_frame = scene->r.cfra;
+  rb->cached_for_frame = rb->scene->r.cfra;
 
   return OPERATOR_FINISHED;
 }
@@ -4005,7 +4012,7 @@ static int lanpr_compute_feature_lines_exec(struct bContext *C, struct wmOperato
     return OPERATOR_FINISHED;
   }
 
-  return lanpr_compute_feature_lines_internal(CTX_data_depsgraph(C), lanpr, scene);
+  return lanpr_compute_feature_lines_internal(CTX_data_depsgraph(C));
 }
 static void lanpr_compute_feature_lines_cancel(struct bContext *C, struct wmOperator *op)
 {
@@ -4214,6 +4221,35 @@ int lanpr_auto_create_line_layer_exec(struct bContext *C, struct wmOperator *op)
 
   return OPERATOR_FINISHED;
 }
+int lanpr_update_gp_strokes_exec(struct bContext *C, struct wmOperator *op)
+{
+  Scene *scene = CTX_data_scene(C);
+  SceneLANPR *lanpr = &scene->lanpr;
+  Object* ob;
+  Object* gpobj;
+  ModifierData* md;
+  bGPdata* gpd;
+  bGPDlayer* gpl;
+  bGPDframe* gpf;
+  
+  return;
+  //XXX this iteration will not work. try to get an object list.
+  for(ob = scene->collection->objects.first; ob; ob=ob->id.next){
+    //TODO: Object visibility in render and viewport.
+    for(md = ob->modifiers.first;md;md=md->next){
+      if(md->type == eModifierType_FeatureLine){
+        FeatureLineModifierData* flmd = (FeatureLineModifierData*)flmd;
+        if(flmd->target && flmd->target->type == OB_GPENCIL){
+          gpobj = flmd->target;
+          gpd = gpobj->data;
+            // add strokes
+        }
+      }
+    }
+  }
+
+  return OPERATOR_FINISHED;
+}
 
 void SCENE_OT_lanpr_add_line_layer(struct wmOperatorType *ot)
 {
@@ -4301,134 +4337,13 @@ void SCENE_OT_lanpr_delete_line_component(struct wmOperatorType *ot)
   RNA_def_int(ot->srna, "index", 0, 0, 10000, "index", "index of this line component", 0, 10000);
 }
 
-#ifdef USE_LANPR_HINT
-
-// how to access LANPR's occlusion info after LANPR software mode calculation
-
-// You can access descrete occlusion data from every edge,
-// but you can also access occlusion using LANPR's chain data.
-// Two examples are given.
-
-// [1.descrete occlusion data for
-// edges]======================================================================================
-//
-// LANPR occlusion related data storage :
-//
-// LANPR_RenderBuffer :: all_render_lines   ====>  All LANPR_RenderLine nodes. Each node for a
-// singe edge on the mesh.
-//                                               Only features lines are in this list.
-//                                               LANPR_RenderLine stores a list of occlusion info
-//                                               in LANPR_RenderLineSegment.
-//
-// LANPR_RenderBuffer :: contours (and crease/material_lines/Intersections/edge_marks)
-//                                        ====>  ListItemPointers to LANPR_RenderLine nodes.
-//                                               Use these lists to access individual line types
-//                                               for convenience. For how to access this list,
-//                                               refer to this file line 728-730 as an example.
-//
-// LANPR_RenderLine :: segments           ====>  List of LANPR_RenderLineSegment to represent
-// occlusion info.
-//                                               See below for how occlusion is reoresented in
-//                                               Renderline and RenderLineSegment.
-//
-//  RenderLine Diagram:
-//    +[RenderLine]
-//       [segments]
-//         [Segment]  at=0      occlusion=0
-//         [Segment]  at=0.5    occlusion=1
-//         [Segment]  at=0.7    occlusion=0
-//
-//  Then you get a line with such occlusion:
-//  [l]|-------------------------|=========|-----------[r]
-//
-//  the beginning to 50% of the line :   Not occluded
-//  50% to 70% of the line :             Occluded 1 time
-//  70% to the end of the line :         Not occluded
-//
-//  cut positions are linear interpolated in image space from line->l->fbcoord to
-//  line->r->fbcoord (always l to r)
-//                    ~~~~~~~~~~~~~~~~~~~    ~~~~~~~~~~~
-//  to see an example of iterating occlusion data for all lines for drawing, see below or refer to
-//  this file line 2930.
-//
-//  [Iterating occlusion data]
-void lanpr_iterate_renderline_and_occlusion(LANPR_RenderBuffer *rb, double *v_OUT, double Occ_OUT)
+void SCENE_OT_lanpr_update_gp_strokes(struct wmOperatorType *ot)
 {
-  LinkData *lip;
-  LANPR_R

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list