Blender
V3.3
|
#include <math.h>
#include <stddef.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "MEM_guardedalloc.h"
#include "BLI_blenlib.h"
#include "BLI_math.h"
#include "BLI_rand.h"
#include "BLI_utildefines.h"
#include "BLT_translation.h"
#include "DNA_anim_types.h"
#include "DNA_collection_types.h"
#include "DNA_curve_types.h"
#include "DNA_gpencil_types.h"
#include "DNA_material_types.h"
#include "DNA_node_types.h"
#include "DNA_object_types.h"
#include "DNA_scene_types.h"
#include "DNA_screen_types.h"
#include "DNA_space_types.h"
#include "DNA_view3d_types.h"
#include "BKE_animsys.h"
#include "BKE_collection.h"
#include "BKE_context.h"
#include "BKE_curve.h"
#include "BKE_fcurve.h"
#include "BKE_global.h"
#include "BKE_gpencil.h"
#include "BKE_gpencil_geom.h"
#include "BKE_image.h"
#include "BKE_layer.h"
#include "BKE_main.h"
#include "BKE_material.h"
#include "BKE_object.h"
#include "BKE_report.h"
#include "BKE_scene.h"
#include "BKE_tracking.h"
#include "DEG_depsgraph.h"
#include "DEG_depsgraph_query.h"
#include "UI_interface.h"
#include "WM_api.h"
#include "WM_types.h"
#include "RNA_access.h"
#include "RNA_define.h"
#include "UI_resources.h"
#include "UI_view2d.h"
#include "ED_clip.h"
#include "ED_gpencil.h"
#include "ED_keyframing.h"
#include "ED_object.h"
#include "ED_view3d.h"
#include "gpencil_intern.h"
Go to the source code of this file.
Classes | |
struct | tGpTimingData |
Macros | |
#define | MIN_TIME_DELTA 0.02f |
#define | GAP_DFAC 0.01f |
#define | WIDTH_CORR_FAC 0.1f |
#define | BEZT_HANDLE_FAC 0.3f |
Typedefs | |
typedef struct tGpTimingData | tGpTimingData |
Enumerations | |
enum | { GP_STROKECONVERT_PATH = 1 , GP_STROKECONVERT_CURVE , GP_STROKECONVERT_POLY } |
enum | { GP_STROKECONVERT_TIMING_NONE = 1 , GP_STROKECONVERT_TIMING_LINEAR = 2 , GP_STROKECONVERT_TIMING_FULL = 3 , GP_STROKECONVERT_TIMING_CUSTOMGAP = 4 } |
Variables | |
static const EnumPropertyItem | prop_gpencil_convertmodes [] |
static const EnumPropertyItem | prop_gpencil_convert_timingmodes_restricted [] |
static const EnumPropertyItem | prop_gpencil_convert_timingmodes [] |
Operator for converting Grease Pencil data to geometry.
Definition in file gpencil_convert.c.
#define BEZT_HANDLE_FAC 0.3f |
Definition at line 603 of file gpencil_convert.c.
#define GAP_DFAC 0.01f |
Definition at line 601 of file gpencil_convert.c.
#define MIN_TIME_DELTA 0.02f |
Definition at line 294 of file gpencil_convert.c.
#define WIDTH_CORR_FAC 0.1f |
Definition at line 602 of file gpencil_convert.c.
typedef struct tGpTimingData tGpTimingData |
anonymous enum |
Enumerator | |
---|---|
GP_STROKECONVERT_PATH | |
GP_STROKECONVERT_CURVE | |
GP_STROKECONVERT_POLY |
Definition at line 79 of file gpencil_convert.c.
anonymous enum |
Enumerator | |
---|---|
GP_STROKECONVERT_TIMING_NONE | |
GP_STROKECONVERT_TIMING_LINEAR | |
GP_STROKECONVERT_TIMING_FULL | |
GP_STROKECONVERT_TIMING_CUSTOMGAP |
Definition at line 86 of file gpencil_convert.c.
Definition at line 1237 of file gpencil_convert.c.
References C, CTX_data_ensure_evaluated_depsgraph(), CTX_data_scene(), CTX_wm_region(), CTX_wm_view3d(), depsgraph, ED_view3d_calc_camera_border(), RegionView3D::persp, ARegion::regiondata, RV3D_CAMOB, and scene.
Referenced by gpencil_layer_to_curve().
|
static |
Definition at line 1406 of file gpencil_convert.c.
References BKE_gpencil_layer_frame_get(), C, RenderData::cfra, CTX_data_scene(), double(), ListBase::first, GP_GETFRAME_USE_PREV, if(), bGPDstroke::inittime, bGPDstroke::next, NULL, bGPDstroke::points, wmOperator::ptr, Scene::r, RNA_boolean_set(), scene, bGPDframe::strokes, and bGPDspoint::time.
Referenced by gpencil_convert_layer_exec().
|
static |
Definition at line 1488 of file gpencil_convert.c.
References tGpTimingData::bevel_depth, tGpTimingData::bevel_resolution, BKE_gpencil_layer_active_get(), BKE_report(), C, CTX_data_active_object(), CTX_data_scene(), tGpTimingData::cur_point, Object::data, DEG_id_tag_update(), tGpTimingData::dists, ELEM, tGpTimingData::end_frame, tGpTimingData::frame_range, tGpTimingData::gap_duration, tGpTimingData::gap_randomness, tGpTimingData::gap_tot_time, GP_STROKECONVERT_TIMING_LINEAR, GP_STROKECONVERT_TIMING_NONE, gpencil_convert_check_has_valid_timing(), gpencil_layer_to_curve(), Scene::id, ID_RECALC_SELECT, tGpTimingData::inittime, MEM_SAFE_FREE, min_ff(), tGpTimingData::mode, NA_ADDED, NC_OBJECT, NC_SCENE, ND_OB_ACTIVE, NULL, tGpTimingData::offset_time, OPERATOR_CANCELLED, OPERATOR_FINISHED, tGpTimingData::points_num, wmOperator::ptr, tGpTimingData::realtime, wmOperator::reports, RNA_boolean_get(), RNA_enum_get(), RNA_enum_set(), RNA_float_get(), RNA_int_get(), RNA_property_boolean_get(), RNA_property_is_set(), RNA_struct_find_property(), RPT_ERROR, RPT_WARNING, scene, tGpTimingData::seed, tGpTimingData::start_frame, tGpTimingData::times, tGpTimingData::tot_dist, tGpTimingData::tot_time, and WM_event_add_notifier().
Referenced by GPENCIL_OT_convert().
Definition at line 1466 of file gpencil_convert.c.
References blender::compositor::area(), BKE_gpencil_layer_active_get(), BKE_gpencil_layer_frame_get(), C, RenderData::cfra, CTX_data_active_object(), CTX_data_scene(), CTX_wm_area(), Object::data, GP_GETFRAME_USE_PREV, GPENCIL_ANY_EDIT_MODE, NULL, OB_GPENCIL, Scene::r, scene, SPACE_VIEW3D, and Object::type.
Referenced by GPENCIL_OT_convert().
|
static |
Definition at line 1562 of file gpencil_convert.c.
References GP_STROKECONVERT_TIMING_CUSTOMGAP, GP_STROKECONVERT_TIMING_NONE, wmOperator::ptr, ptr, RNA_boolean_get(), RNA_enum_get(), RNA_float_get(), RNA_property_identifier(), STR_ELEM, and STREQ.
Referenced by GPENCIL_OT_convert().
|
static |
Definition at line 1454 of file gpencil_convert.c.
References ptr, RNA_int_get(), and RNA_int_set().
Referenced by GPENCIL_OT_convert().
|
static |
Definition at line 297 of file gpencil_convert.c.
References BLI_rng_get_float(), CLAMP, tGpTimingData::gap_duration, tGpTimingData::gap_randomness, GP_STROKECONVERT_TIMING_CUSTOMGAP, max, min, tGpTimingData::mode, tGpTimingData::points_num, and tGpTimingData::times.
Referenced by gpencil_stroke_path_animation_add_keyframes().
|
static |
Definition at line 1259 of file gpencil_convert.c.
References BA_SELECT, tGpTimingData::bevel_depth, Curve::bevel_radius, tGpTimingData::bevel_resolution, Curve::bevresol, BKE_collection_object_add(), BKE_curve_add(), BKE_gpencil_layer_frame_get(), BKE_nurb_type_convert(), BKE_object_add_only_object(), BKE_view_layer_base_find(), BLI_assert_msg, BLI_listbase_is_empty(), C, RenderData::cfra, CTX_data_collection(), CTX_data_main(), CTX_data_scene(), CTX_data_view_layer(), CU_3D, CU_POLY, Object::data, DEG_id_tag_update(), DEG_relations_tag_update(), ED_object_base_select(), ELEM, ListBase::first, Curve::flag, GP_GETFRAME_USE_PREV, GP_STROKECONVERT_CURVE, GP_STROKECONVERT_PATH, GP_STROKECONVERT_POLY, gpencil_camera_view_subrect(), gpencil_stroke_finalize_curve_endpoints(), gpencil_stroke_norm_curve_weights(), gpencil_stroke_path_animation(), gpencil_stroke_to_bezier(), gpencil_stroke_to_path(), Object::id, ID_RECALC_GEOMETRY, bGPDlayer::info, tGpTimingData::inittime, LISTBASE_FOREACH, Nurb::next, NULL, Curve::nurb, OB_CURVES_LEGACY, bGPDstroke::points, Scene::r, scene, bGPDframe::strokes, bGPDstroke::totpoints, bGPDspoint::x, and bGPDspoint::y.
Referenced by gpencil_convert_layer_exec().
void GPENCIL_OT_convert | ( | wmOperatorType * | ot | ) |
Definition at line 1636 of file gpencil_convert.c.
References wmOperatorType::description, wmOperatorType::exec, wmOperatorType::flag, GP_STROKECONVERT_TIMING_FULL, gpencil_convert_layer_exec(), gpencil_convert_poll(), gpencil_convert_poll_property(), gpencil_convert_set_end_frame(), wmOperatorType::idname, wmOperatorType::invoke, wmOperatorType::name, OPTYPE_REGISTER, OPTYPE_UNDO, ot, wmOperatorType::poll, wmOperatorType::poll_property, wmOperatorType::prop, prop_gpencil_convert_timingmodes, prop_gpencil_convertmodes, PROP_SKIP_SAVE, RNA_def_boolean(), RNA_def_enum(), RNA_def_enum_funcs(), RNA_def_float(), RNA_def_float_distance(), RNA_def_int(), RNA_def_property_flag(), RNA_def_property_update_runtime(), rna_GPConvert_mode_items(), wmOperatorType::srna, and WM_menu_invoke().
Referenced by ED_operatortypes_gpencil().
void GPENCIL_OT_image_to_grease_pencil | ( | wmOperatorType * | ot | ) |
Definition at line 1830 of file gpencil_convert.c.
References wmOperatorType::description, wmOperatorType::exec, wmOperatorType::flag, wmOperatorType::idname, image_to_gpencil_exec(), image_to_gpencil_poll(), wmOperatorType::name, OPTYPE_REGISTER, OPTYPE_UNDO, ot, wmOperatorType::poll, wmOperatorType::prop, PROP_SKIP_SAVE, RNA_def_boolean(), RNA_def_float(), RNA_def_property_flag(), and wmOperatorType::srna.
Referenced by ED_operatortypes_gpencil().
Definition at line 1173 of file gpencil_convert.c.
References Nurb::bezt, Nurb::bp, ListBase::first, ListBase::last, Curve::nurb, Nurb::pntsu, BezTriple::radius, BPoint::radius, BezTriple::weight, and BPoint::weight.
Referenced by gpencil_layer_to_curve().
Definition at line 1208 of file gpencil_convert.c.
References IS_EQF, LISTBASE_FOREACH, Curve::nurb, BezTriple::weight, and BPoint::weight.
Referenced by gpencil_layer_to_curve().
|
static |
Definition at line 493 of file gpencil_convert.c.
References BEZT_KEYTYPE_KEYFRAME, BKE_animsys_eval_context_construct(), BKE_fcurve_handles_recalc(), BLI_rng_free(), BLI_rng_new(), C, Curve::ctime, CTX_data_depsgraph_pointer(), CTX_data_main(), CTX_data_scene(), CU_PATH, DEG_id_tag_update(), depsgraph, ED_action_fcurve_ensure(), ED_id_action_ensure(), tGpTimingData::end_frame, FCurve::extend, FCURVE_EXTRAPOLATE_LINEAR, Curve::flag, float(), FRA2TIME, tGpTimingData::frame_range, tGpTimingData::gap_duration, tGpTimingData::gap_randomness, GP_STROKECONVERT_TIMING_CUSTOMGAP, GP_STROKECONVERT_TIMING_LINEAR, GP_STROKECONVERT_TIMING_NONE, gpencil_stroke_path_animation_add_keyframes(), gpencil_stroke_path_animation_preprocess_gaps(), Curve::id, insert_keyframe_direct(), INSERTKEY_FAST, tGpTimingData::mode, NA_EDITED, NC_ANIMATION, ND_KEYFRAME, NULL, Curve::pathlen, ptr, tGpTimingData::realtime, RNA_id_pointer_create(), RNA_struct_find_property(), scene, tGpTimingData::start_frame, TIME2FRA, tGpTimingData::tot_time, and WM_event_add_notifier().
Referenced by gpencil_layer_to_curve().
|
static |
Definition at line 381 of file gpencil_convert.c.
References BEZT_KEYTYPE_BREAKDOWN, BEZT_KEYTYPE_KEYFRAME, BKE_animsys_eval_context_construct(), Curve::ctime, depsgraph, tGpTimingData::dists, float(), G, G_DEBUG, gpencil_find_end_of_stroke_idx(), insert_keyframe_direct(), INSERTKEY_FAST, MIN_TIME_DELTA, NULL, Curve::pathlen, tGpTimingData::points_num, ptr, tGpTimingData::start_frame, tGpTimingData::times, tGpTimingData::tot_dist, and tGpTimingData::tot_time.
Referenced by gpencil_stroke_path_animation().
|
static |
Definition at line 354 of file gpencil_convert.c.
References BLI_rng_srandom(), float(), tGpTimingData::gap_duration, tGpTimingData::gap_randomness, tGpTimingData::points_num, tGpTimingData::seed, tGpTimingData::times, and tGpTimingData::tot_time.
Referenced by gpencil_stroke_path_animation().
|
static |
Definition at line 888 of file gpencil_convert.c.
References Nurb::bezt, BEZT_HANDLE_FAC, BKE_nurb_bezierPoints_add(), BKE_nurb_handles_calc(), BLI_addtail(), BLI_assert, C, copy_v3_v3(), CU_BEZIER, GAP_DFAC, GP_STROKECONVERT_TIMING_NONE, gpencil_stroke_to_bezier_add_point(), gpencil_strokepoint_convertcoords(), gpencil_timing_data_set_num(), bGPDstroke::inittime, interp_v3_v3v3(), interpf(), bGPDlayer::line_change, MEM_callocN, tGpTimingData::mode, NULL, Curve::nurb, Nurb::pntsu, bGPDstroke::points, bGPDspoint::pressure, bGPDstroke::prev, Nurb::resolu, Nurb::resolv, bGPDstroke::thickness, bGPDspoint::time, bGPDstroke::totpoints, Nurb::type, BezTriple::vec, width, and WIDTH_CORR_FAC.
Referenced by gpencil_layer_to_curve().
|
static |
Definition at line 852 of file gpencil_convert.c.
References CLAMP, copy_v3_v3(), BezTriple::f1, BezTriple::f2, BezTriple::f3, gpencil_timing_data_add_point(), BezTriple::h1, BezTriple::h2, HD_FREE, len_v3v3(), BezTriple::radius, SELECT, time, BezTriple::vec, BezTriple::weight, and width.
Referenced by gpencil_stroke_to_bezier().
|
static |
Definition at line 640 of file gpencil_convert.c.
References BKE_nurb_knot_calc_u(), BKE_nurb_points_add(), BLI_addtail(), BLI_assert, Nurb::bp, C, copy_v3_v3(), CU_NURB_ENDPOINT, CU_NURBS, Nurb::flagu, GAP_DFAC, GP_STROKECONVERT_TIMING_NONE, gpencil_stroke_to_path_add_point(), gpencil_strokepoint_convertcoords(), gpencil_timing_data_set_num(), bGPDstroke::inittime, interp_v3_v3v3(), interpf(), Nurb::knotsu, bGPDlayer::line_change, MEM_callocN, tGpTimingData::mode, NULL, Curve::nurb, Nurb::orderu, Nurb::pntsu, Nurb::pntsv, bGPDstroke::points, bGPDspoint::pressure, bGPDstroke::prev, Nurb::resolu, Curve::resolu, Nurb::resolv, Curve::resolv, bGPDstroke::thickness, bGPDspoint::time, bGPDstroke::totpoints, Nurb::type, BPoint::vec, width, and WIDTH_CORR_FAC.
Referenced by gpencil_layer_to_curve().
|
static |
Definition at line 608 of file gpencil_convert.c.
References CLAMP, copy_v3_v3(), BPoint::f1, gpencil_timing_data_add_point(), len_v3v3(), BPoint::radius, SELECT, time, BPoint::vec, BPoint::weight, and width.
Referenced by gpencil_stroke_to_path().
|
static |
Definition at line 143 of file gpencil_convert.c.
References BKE_gpencil_layer_transform_matrix_get(), BLI_rctf_size_x(), BLI_rctf_size_y(), C, copy_v3_v3(), CTX_data_active_object(), CTX_data_ensure_evaluated_depsgraph(), CTX_data_scene(), CTX_wm_region(), CTX_wm_view3d(), Scene::cursor, depsgraph, ED_view3d_win_to_3d(), bGPDstroke::flag, float(), GP_STROKE_2DSPACE, GP_STROKE_3DSPACE, View3DCursor::location, mul_v3_m4v3(), scene, UI_view2d_view_to_region_fl(), ARegion::v2d, ARegion::winx, ARegion::winy, bGPDspoint::x, rctf::xmin, bGPDspoint::y, and rctf::ymin.
Referenced by gpencil_stroke_to_bezier(), and gpencil_stroke_to_path().
|
static |
Definition at line 258 of file gpencil_convert.c.
References tGpTimingData::cur_point, tGpTimingData::dists, fabsf, float(), tGpTimingData::gap_tot_time, tGpTimingData::inittime, tGpTimingData::offset_time, time, tGpTimingData::times, tGpTimingData::tot_dist, and tGpTimingData::tot_time.
Referenced by gpencil_stroke_to_bezier_add_point(), and gpencil_stroke_to_path_add_point().
|
static |
Definition at line 232 of file gpencil_convert.c.
References BLI_assert, tGpTimingData::dists, MEM_callocN, MEM_freeN, tGpTimingData::points_num, and tGpTimingData::times.
Referenced by gpencil_stroke_to_bezier(), and gpencil_stroke_to_path().
|
static |
Definition at line 1786 of file gpencil_convert.c.
References BKE_gpencil_frame_addnew(), BKE_gpencil_from_image(), BKE_gpencil_layer_addnew(), BKE_gpencil_object_material_new(), BKE_gpencil_stroke_delete_tagged_points(), BKE_reportf(), C, RenderData::cfra, CTX_data_main(), CTX_data_scene(), CTX_wm_space_image(), Scene::cursor, Object::data, DEG_relations_tag_update(), ED_gpencil_add_object(), GP_MATERIAL_MODE_SQUARE, GP_SPOINT_SELECT, Material::gp_style, SpaceImage::image, LISTBASE_FOREACH_MUTABLE, View3DCursor::location, MaterialGPencilStyle::mode, bGPDframe::next, NULL, OPERATOR_CANCELLED, OPERATOR_FINISHED, wmOperator::ptr, Scene::r, wmOperator::reports, RNA_boolean_get(), RNA_float_get(), RPT_INFO, scene, size(), and bGPDframe::strokes.
Referenced by GPENCIL_OT_image_to_grease_pencil().
Definition at line 1773 of file gpencil_convert.c.
References BKE_image_has_ibuf(), C, CTX_wm_space_data(), CTX_wm_space_image(), image(), SpaceImage::image, SpaceImage::iuser, NULL, SPACE_IMAGE, and SpaceLink::spacetype.
Referenced by GPENCIL_OT_image_to_grease_pencil().
|
static |
Definition at line 127 of file gpencil_convert.c.
References prop_gpencil_convert_timingmodes, prop_gpencil_convert_timingmodes_restricted, ptr, and RNA_boolean_get().
Referenced by GPENCIL_OT_convert().
|
static |
Definition at line 111 of file gpencil_convert.c.
Referenced by GPENCIL_OT_convert(), and rna_GPConvert_mode_items().
|
static |
Definition at line 105 of file gpencil_convert.c.
Referenced by rna_GPConvert_mode_items().
|
static |
Definition at line 94 of file gpencil_convert.c.
Referenced by GPENCIL_OT_convert().