Changeset View
Changeset View
Standalone View
Standalone View
source/blender/editors/gpencil/gpencil_convert.c
| Show First 20 Lines • Show All 1,119 Lines • ▼ Show 20 Lines | |||||
| } | } | ||||
| /* convert a given grease-pencil layer to a 3d-curve representation (using current view if appropriate) */ | /* convert a given grease-pencil layer to a 3d-curve representation (using current view if appropriate) */ | ||||
| static void gp_layer_to_curve(bContext *C, ReportList *reports, bGPdata *gpd, bGPDlayer *gpl, const int mode, | static void gp_layer_to_curve(bContext *C, ReportList *reports, bGPdata *gpd, bGPDlayer *gpl, const int mode, | ||||
| const bool norm_weights, const float rad_fac, const bool link_strokes, tGpTimingData *gtd) | const bool norm_weights, const float rad_fac, const bool link_strokes, tGpTimingData *gtd) | ||||
| { | { | ||||
| struct Main *bmain = CTX_data_main(C); | struct Main *bmain = CTX_data_main(C); | ||||
| Scene *scene = CTX_data_scene(C); | Scene *scene = CTX_data_scene(C); | ||||
| SceneLayer *sl = CTX_data_scene_layer(C); | ViewLayer *sl = CTX_data_view_layer(C); | ||||
| SceneCollection *sc = CTX_data_scene_collection(C); | SceneCollection *sc = CTX_data_scene_collection(C); | ||||
| bGPDframe *gpf = BKE_gpencil_layer_getframe(gpl, CFRA, 0); | bGPDframe *gpf = BKE_gpencil_layer_getframe(gpl, CFRA, 0); | ||||
| bGPDstroke *gps, *prev_gps = NULL; | bGPDstroke *gps, *prev_gps = NULL; | ||||
| Object *ob; | Object *ob; | ||||
| Curve *cu; | Curve *cu; | ||||
| Nurb *nu = NULL; | Nurb *nu = NULL; | ||||
| Base *base_new = NULL; | Base *base_new = NULL; | ||||
| float minmax_weights[2] = {1.0f, 0.0f}; | float minmax_weights[2] = {1.0f, 0.0f}; | ||||
| Show All 15 Lines | static void gp_layer_to_curve(bContext *C, ReportList *reports, bGPdata *gpd, bGPDlayer *gpl, const int mode, | ||||
| } | } | ||||
| /* init the curve object (remove rotation and get curve data from it) | /* init the curve object (remove rotation and get curve data from it) | ||||
| * - must clear transforms set on object, as those skew our results | * - must clear transforms set on object, as those skew our results | ||||
| */ | */ | ||||
| ob = BKE_object_add_only_object(bmain, OB_CURVE, gpl->info); | ob = BKE_object_add_only_object(bmain, OB_CURVE, gpl->info); | ||||
| cu = ob->data = BKE_curve_add(bmain, gpl->info, OB_CURVE); | cu = ob->data = BKE_curve_add(bmain, gpl->info, OB_CURVE); | ||||
| BKE_collection_object_add(scene, sc, ob); | BKE_collection_object_add(scene, sc, ob); | ||||
| base_new = BKE_scene_layer_base_find(sl, ob); | base_new = BKE_view_layer_base_find(sl, ob); | ||||
| cu->flag |= CU_3D; | cu->flag |= CU_3D; | ||||
| gtd->inittime = ((bGPDstroke *)gpf->strokes.first)->inittime; | gtd->inittime = ((bGPDstroke *)gpf->strokes.first)->inittime; | ||||
| /* add points to curve */ | /* add points to curve */ | ||||
| for (gps = gpf->strokes.first; gps; gps = gps->next) { | for (gps = gpf->strokes.first; gps; gps = gps->next) { | ||||
| const bool add_start_point = (link_strokes && !(prev_gps)); | const bool add_start_point = (link_strokes && !(prev_gps)); | ||||
| ▲ Show 20 Lines • Show All 341 Lines • Show Last 20 Lines | |||||