Blender
V3.3
|
#include <cmath>
#include <cstdio>
#include <cstring>
#include "MEM_guardedalloc.h"
#include "DNA_curve_types.h"
#include "DNA_mesh_types.h"
#include "DNA_object_types.h"
#include "DNA_scene_types.h"
#include "DNA_vfont_types.h"
#include "BLI_bitmap.h"
#include "BLI_index_range.hh"
#include "BLI_linklist.h"
#include "BLI_listbase.h"
#include "BLI_math.h"
#include "BLI_memarena.h"
#include "BLI_scanfill.h"
#include "BLI_span.hh"
#include "BLI_string.h"
#include "BLI_utildefines.h"
#include "BKE_anim_path.h"
#include "BKE_curve.h"
#include "BKE_curve_legacy_convert.hh"
#include "BKE_displist.h"
#include "BKE_geometry_set.hh"
#include "BKE_key.h"
#include "BKE_lattice.h"
#include "BKE_lib_id.h"
#include "BKE_mball.h"
#include "BKE_mball_tessellate.h"
#include "BKE_mesh.h"
#include "BKE_modifier.h"
#include "BKE_object.h"
#include "BKE_vfont.h"
#include "BLI_sys_types.h"
#include "DEG_depsgraph.h"
#include "DEG_depsgraph_query.h"
Go to the source code of this file.
Functions | |
static void | displist_elem_free (DispList *dl) |
void | BKE_displist_free (ListBase *lb) |
DispList * | BKE_displist_find (ListBase *lb, int type) |
void | BKE_displist_copy (ListBase *lbn, const ListBase *lb) |
void | BKE_displist_normals_add (ListBase *lb) |
void | BKE_displist_count (const ListBase *lb, int *totvert, int *totface, int *tottri) |
bool | BKE_displist_surfindex_get (const DispList *dl, int a, int *b, int *p1, int *p2, int *p3, int *p4) |
static void | curve_to_displist (const Curve *cu, const ListBase *nubase, const bool for_render, ListBase *r_dispbase) |
void | BKE_displist_fill (const ListBase *dispbase, ListBase *to, const float normal_proj[3], const bool flip_normal) |
static void | bevels_to_filledpoly (const Curve *cu, ListBase *dispbase) |
static void | curve_to_filledpoly (const Curve *cu, ListBase *dispbase) |
static float | displist_calc_taper (Depsgraph *depsgraph, const Scene *scene, Object *taperobj, float fac) |
float | BKE_displist_calc_taper (Depsgraph *depsgraph, const Scene *scene, Object *taperobj, int cur, int tot) |
void | BKE_displist_make_mball (Depsgraph *depsgraph, Scene *scene, Object *ob) |
static ModifierData * | curve_get_tessellate_point (const Scene *scene, const Object *ob, const bool for_render, const bool editmode) |
void | BKE_curve_calc_modifiers_pre (Depsgraph *depsgraph, const Scene *scene, Object *ob, ListBase *source_nurb, ListBase *target_nurb, const bool for_render) |
static bool | do_curve_implicit_mesh_conversion (const Curve *curve, ModifierData *first_modifier, const Scene *scene, const ModifierMode required_mode) |
static GeometrySet | curve_calc_modifiers_post (Depsgraph *depsgraph, const Scene *scene, Object *ob, const ListBase *dispbase, const bool for_render) |
static void | displist_surf_indices (DispList *dl) |
static GeometrySet | evaluate_surface_object (Depsgraph *depsgraph, const Scene *scene, Object *ob, const bool for_render, ListBase *r_dispbase) |
static void | rotateBevelPiece (const Curve *cu, const BevPoint *bevp, const BevPoint *nbevp, const DispList *dlb, const float bev_blend, const float widfac, const float radius_factor, float **r_data) |
static void | fillBevelCap (const Nurb *nu, const DispList *dlb, const float *prev_fp, ListBase *dispbase) |
static void | calc_bevfac_segment_mapping (const BevList *bl, float bevfac, float spline_length, int *r_bev, float *r_blend) |
static void | calc_bevfac_spline_mapping (const BevList *bl, float bevfac, float spline_length, int *r_bev, float *r_blend) |
static void | calc_bevfac_mapping_default (const BevList *bl, int *r_start, float *r_firstblend, int *r_steps, float *r_lastblend) |
static void | calc_bevfac_mapping (const Curve *cu, const BevList *bl, const Nurb *nu, int *r_start, float *r_firstblend, int *r_steps, float *r_lastblend) |
static GeometrySet | evaluate_curve_type_object (Depsgraph *depsgraph, const Scene *scene, Object *ob, const bool for_render, ListBase *r_dispbase) |
void | BKE_displist_make_curveTypes (Depsgraph *depsgraph, const Scene *scene, Object *ob, const bool for_render) |
void | BKE_displist_minmax (const ListBase *dispbase, float min[3], float max[3]) |
Definition at line 508 of file displist.cc.
References BKE_displist_fill(), BKE_displist_free(), BLI_addtail(), DispList::charidx, DispList::col, copy_v3_v3(), CU_BACK, CU_FRONT, DL_BACK_CURVE, DL_CYCL_U, DL_CYCL_V, DL_FRONT_CURVE, DL_POLY, DL_SURF, DispList::flag, Curve::flag, LISTBASE_FOREACH, MEM_mallocN, DispList::nr, DispList::parts, DispList::type, and DispList::verts.
Referenced by curve_to_filledpoly().
void BKE_curve_calc_modifiers_pre | ( | Depsgraph * | depsgraph, |
const Scene * | scene, | ||
Object * | ob, | ||
ListBase * | source_nurb, | ||
ListBase * | target_nurb, | ||
const bool | for_render | ||
) |
Definition at line 702 of file displist.cc.
References BKE_curve_nurbs_key_vert_coords_alloc(), BKE_curve_nurbs_key_vert_tilts_apply(), BKE_curve_nurbs_vert_coords_alloc(), BKE_curve_nurbs_vert_coords_apply(), BKE_key_evaluate_object(), BKE_keyblock_curve_element_count(), BKE_modifier_get_info(), BKE_modifier_is_enabled(), BKE_modifiers_clear_errors(), BKE_modifiers_get_virtual_modifierlist(), BLI_assert, curve_get_tessellate_point(), Object::data, ModifierTypeInfo::deformVerts, depsgraph, Curve::editfont, Curve::editnurb, eModifierMode_Editmode, eModifierMode_Realtime, eModifierMode_Render, eModifierTypeType_OnlyDeform, float(), MEM_freeN, MOD_APPLY_RENDER, MOD_APPLY_USECACHE, ModifierData::next, scene, and ModifierTypeInfo::type.
Referenced by evaluate_curve_type_object(), and evaluate_surface_object().
float BKE_displist_calc_taper | ( | Depsgraph * | depsgraph, |
const Scene * | scene, | ||
Object * | taperobj, | ||
int | cur, | ||
int | tot | ||
) |
Definition at line 633 of file displist.cc.
References depsgraph, displist_calc_taper(), float(), and scene.
Definition at line 89 of file displist.cc.
References BKE_displist_free(), BLI_addtail(), DispList::index, LISTBASE_FOREACH, MEM_dupallocN, DispList::nors, and DispList::verts.
Definition at line 173 of file displist.cc.
References DL_CYCL_U, DL_CYCL_V, DL_INDEX3, DL_INDEX4, DL_POLY, DL_SEGM, DL_SURF, and LISTBASE_FOREACH.
void BKE_displist_fill | ( | const ListBase * | dispbase, |
ListBase * | to, | ||
const float | normal_proj[3], | ||
const bool | flip_normal | ||
) |
Definition at line 389 of file displist.cc.
References BLI_addhead(), BLI_listbase_is_empty(), BLI_memarena_free(), BLI_memarena_new(), BLI_SCANFILL_ARENA_SIZE, BLI_scanfill_begin_arena(), BLI_scanfill_calc_ex(), BLI_SCANFILL_CALC_HOLES, BLI_SCANFILL_CALC_POLYS, BLI_SCANFILL_CALC_REMOVE_DOUBLES, BLI_scanfill_edge_add(), BLI_scanfill_end_arena(), BLI_scanfill_vert_add(), DispList::col, col, copy_v3_v3(), CU_SMOOTH, DL_BACK_CURVE, DL_FRONT_CURVE, DL_INDEX3, DL_POLY, ScanFillContext::fillfacebase, ScanFillContext::fillvertbase, DispList::flag, DispList::index, LISTBASE_FOREACH, LISTBASE_FOREACH_INDEX, MEM_mallocN, DispList::nr, DispList::parts, ScanFillContext::poly_nr, DispList::rt, DispList::type, and DispList::verts.
Referenced by bevels_to_filledpoly(), curve_to_filledpoly(), and evaluate_curve_type_object().
Definition at line 78 of file displist.cc.
References LISTBASE_FOREACH, and type.
Referenced by BKE_lattice_deform_data_create(), BKE_lattice_minmax_dl(), contarget_get_lattice_mat(), give_parvert(), and lattice_foreachScreenVert().
Definition at line 69 of file displist.cc.
References BLI_pophead(), and displist_elem_free().
Referenced by bevels_to_filledpoly(), BKE_displist_copy(), BKE_displist_make_mball(), BKE_lattice_resize(), BKE_object_free_curve_cache(), BKE_object_material_slot_remove(), curve_bevel_make_from_object(), evaluate_curve_type_object(), M_Geometry_tessellate_polygon(), and metaball_free_data().
void BKE_displist_make_curveTypes | ( | Depsgraph * | depsgraph, |
const Scene * | scene, | ||
Object * | ob, | ||
const bool | for_render | ||
) |
Definition at line 1462 of file displist.cc.
References BKE_id_copy_ex(), BKE_object_boundbox_calc_from_evaluated_geometry(), BKE_object_eval_assign_data(), BKE_object_free_derived_caches(), BLI_assert, Object_Runtime::curve_cache, Curve::curve_eval, Object::data, depsgraph, CurveCache::disp, Curve::edit_data_from_original, Curve::editfont, Curve::editnurb, ELEM, evaluate_curve_type_object(), evaluate_surface_object(), Object_Runtime::geometry_set_eval, GeometrySet::get_curves_for_read(), GeometrySet::has_curves(), Curve::id, LIB_ID_COPY_LOCALIZE, OB_CURVES_LEGACY, OB_FONT, OB_SURF, Object::runtime, scene, and Object::type.
Referenced by displist_calc_taper().
Definition at line 641 of file displist.cc.
References BKE_displist_free(), BKE_mball_basis_find(), BKE_mball_polygonize(), BKE_mball_texspace_calc(), Object_Runtime::curve_cache, depsgraph, CurveCache::disp, OB_MBALL, object_deform_mball(), Object::runtime, scene, and Object::type.
Referenced by BKE_object_handle_data_update(), object_data_convert_ensure_curve_cache(), and object_force_modifier_update_for_bind().
Definition at line 1515 of file displist.cc.
References DL_INDEX3, DL_INDEX4, ELEM, LISTBASE_FOREACH, max, min, minmax_v3v3_v3(), and zero_v3().
Definition at line 102 of file displist.cc.
References Freestyle::a, add_v3_v3(), usdtokens::b(), BKE_displist_surfindex_get(), DL_BACK_CURVE, DL_INDEX3, DL_SURF, LISTBASE_FOREACH, MEM_callocN, nor, normal_quad_v3(), normalize_v3(), v1, and v2.
Referenced by DRW_displist_vertbuf_create_pos_and_nor().
bool BKE_displist_surfindex_get | ( | const DispList * | dl, |
int | a, | ||
int * | b, | ||
int * | p1, | ||
int * | p2, | ||
int * | p3, | ||
int * | p4 | ||
) |
Definition at line 216 of file displist.cc.
References Freestyle::a, DL_CYCL_U, DL_CYCL_V, DispList::flag, DispList::nr, and DispList::parts.
Referenced by BKE_displist_normals_add(), and displist_surf_indices().
|
static |
Definition at line 1172 of file displist.cc.
References Curve::bevfac1, Curve::bevfac1_mapping, Curve::bevfac2, Curve::bevfac2_mapping, BKE_nurb_check_valid_u(), calc_bevfac_mapping_default(), calc_bevfac_segment_mapping(), calc_bevfac_spline_mapping(), CU_BEVFAC_MAP_RESOLU, CU_BEVFAC_MAP_SEGMENT, CU_BEVFAC_MAP_SPLINE, ELEM, max_ff(), min_ff(), BevList::nr, BevList::seglen, SEGMENTSU, and SWAP.
Referenced by evaluate_curve_type_object().
|
static |
Definition at line 1163 of file displist.cc.
References BevList::nr.
Referenced by calc_bevfac_mapping(), and evaluate_curve_type_object().
|
static |
Definition at line 1115 of file displist.cc.
References BevList::nr, BevList::segbevcount, and BevList::seglen.
Referenced by calc_bevfac_mapping().
|
static |
Definition at line 1141 of file displist.cc.
References BevList::bevpoints, len, BevList::nr, and BevPoint::offset.
Referenced by calc_bevfac_mapping().
|
static |
Definition at line 830 of file displist.cc.
References BKE_mesh_ensure_normals_for_display(), BKE_mesh_new_nomain(), BKE_mesh_new_nomain_from_curve_displist(), BKE_mesh_vert_coords_alloc(), BKE_mesh_vert_coords_apply(), BKE_modifier_get_info(), BKE_modifier_is_enabled(), BKE_modifiers_get_virtual_modifierlist(), BLI_strncpy(), Object_Runtime::curve_cache, curve_get_tessellate_point(), blender::bke::curve_legacy_to_curves(), Object::data, CurveCache::deformed_nurbs, ModifierTypeInfo::deformVerts, depsgraph, do_curve_implicit_mesh_conversion(), Curve::editfont, Curve::editnurb, eModifierMode_Editmode, eModifierMode_Realtime, eModifierMode_Render, eModifierType_Nodes, eModifierTypeType_OnlyDeform, float(), GeometrySet::get_mesh_for_write(), GeometrySet::has_mesh(), Curve::id, Mesh::id, ID_ME, MEM_freeN, mesh, MOD_APPLY_RENDER, MOD_APPLY_USECACHE, ModifierTypeInfo::modifyGeometrySet, ModifierTypeInfo::modifyMesh, ID::name, ModifierData::next, OB_SURF, GeometrySet::replace_curves(), GeometrySet::replace_mesh(), Object::runtime, scene, ModifierTypeInfo::type, ModifierData::type, and Object::type.
Referenced by evaluate_curve_type_object(), and evaluate_surface_object().
|
static |
Definition at line 662 of file displist.cc.
References BKE_modifier_get_info(), BKE_modifier_is_enabled(), BKE_modifiers_get_virtual_modifierlist(), ELEM, eModifierMode_ApplyOnSpline, eModifierMode_Editmode, eModifierMode_Realtime, eModifierMode_Render, eModifierType_Hook, eModifierType_MeshDeform, eModifierType_Softbody, eModifierTypeType_Constructive, ModifierData::mode, ModifierData::next, scene, ModifierTypeInfo::type, and ModifierData::type.
Referenced by BKE_curve_calc_modifiers_pre(), and curve_calc_modifiers_post().
|
static |
Definition at line 252 of file displist.cc.
References BKE_curve_forward_diff_bezier(), BKE_nurb_check_valid_u(), BKE_nurb_makeCurve(), BLI_addtail(), DispList::charidx, DispList::col, copy_v3_v3(), CU_BEZIER, CU_NURB_CYCLIC, CU_NURBS, CU_POLY, data, DL_POLY, DL_SEGM, Curve::editfont, Curve::editnurb, float(), BezTriple::h1, BezTriple::h2, HD_VECT, if(), is_cyclic(), len, LISTBASE_FOREACH, MEM_mallocN, DispList::nr, DispList::parts, Curve::resolu_ren, SEGMENTSU, DispList::type, BezTriple::vec, BPoint::vec, and DispList::verts.
Referenced by evaluate_curve_type_object().
Definition at line 568 of file displist.cc.
References bevels_to_filledpoly(), BKE_displist_fill(), CU_DO_2DFILL, DL_SURF, and ListBase::first.
Referenced by evaluate_curve_type_object(), and evaluate_surface_object().
|
static |
Definition at line 588 of file displist.cc.
References Freestyle::a, BKE_displist_make_curveTypes(), Object_Runtime::curve_cache, depsgraph, CurveCache::disp, ListBase::first, if(), DispList::nr, OB_CURVES_LEGACY, Object::runtime, scene, Object::type, and DispList::verts.
Referenced by BKE_displist_calc_taper(), and evaluate_curve_type_object().
Definition at line 53 of file displist.cc.
References DispList::index, MEM_freeN, DispList::nors, and DispList::verts.
Referenced by BKE_displist_free().
Definition at line 913 of file displist.cc.
References Freestyle::a, usdtokens::b(), BKE_displist_surfindex_get(), DispList::index, MEM_mallocN, DispList::nr, DispList::parts, and DispList::totindex.
Referenced by evaluate_curve_type_object(), and evaluate_surface_object().
|
static |
Definition at line 790 of file displist.cc.
References Curve::bevel_mode, Curve::bevel_radius, Curve::bevobj, BKE_modifier_is_enabled(), CU_BEV_MODE_OBJECT, CU_DO_2DFILL, CU_FAST, curve, eModifierType_Nodes, Curve::extrude, Curve::flag, ModifierData::next, scene, and ModifierData::type.
Referenced by curve_calc_modifiers_post().
|
static |
Definition at line 1251 of file displist.cc.
References Freestyle::a, CurveCache::bev, Curve::bevfac1, Curve::bevfac2, BevList::bevpoints, BKE_anim_path_calc_data(), BKE_curve_bevel_make(), BKE_curve_bevelList_make(), BKE_curve_calc_modifiers_pre(), BKE_curve_nurbs_get_for_read(), BKE_displist_fill(), BKE_displist_free(), BKE_nurbList_duplicate(), BKE_vfont_to_curve_nubase(), BLI_addtail(), BLI_assert, BLI_listbase_is_empty(), calc_bevfac_mapping(), calc_bevfac_mapping_default(), DispList::charidx, DispList::col, copy_v3_v3(), BevPoint::cosa, CU_FILL_CAPS, CU_MAP_TAPER, CU_NURB_CYCLIC, CU_PATH, CU_TAPER_RADIUS_ADD, CU_TAPER_RADIUS_MULTIPLY, Object_Runtime::curve_cache, curve_calc_modifiers_post(), curve_to_displist(), curve_to_filledpoly(), DAG_EVAL_NEED_CURVE_PATH, data, Object::data, CurveCache::deformed_nurbs, DEG_get_eval_flags_for_id(), depsgraph, BevPoint::dir, displist_calc_taper(), displist_surf_indices(), DL_BACK_CURVE, DL_CYCL_U, DL_CYCL_V, DL_FRONT_CURVE, DL_POLY, DL_SEGM, DL_SURF, ELEM, fabsf, fillBevelCap(), ListBase::first, DispList::flag, Curve::flag, float(), FO_EDIT, Object::id, if(), len, LISTBASE_FOREACH, MEM_mallocN, negate_v3_v3(), BevList::next, DispList::nr, BevList::nr, OB_CURVES_LEGACY, OB_FONT, Curve::offset, DispList::parts, BevList::poly, BevPoint::radius, rotateBevelPiece(), DispList::rt, Object::runtime, scene, BevPoint::sina, steps, Curve::taper_radius_mode, Curve::taperobj, DispList::type, Object::type, BevPoint::vec, and DispList::verts.
Referenced by BKE_displist_make_curveTypes().
|
static |
Definition at line 944 of file displist.cc.
References BKE_curve_calc_modifiers_pre(), BKE_curve_editNurbs_get_for_read(), BKE_mesh_new_nomain(), BKE_nurb_check_valid_uv(), BKE_nurb_makeCurve(), BKE_nurb_makeFaces(), BKE_nurbList_duplicate(), BLI_addtail(), BLI_assert, DispList::charidx, DispList::col, CU_NURB_CYCLIC, Object_Runtime::curve_cache, curve_calc_modifiers_post(), curve_to_filledpoly(), data, Object::data, CurveCache::deformed_nurbs, depsgraph, displist_surf_indices(), DL_CYCL_U, DL_CYCL_V, DL_POLY, DL_SEGM, DL_SURF, Curve::editnurb, DispList::flag, GeometrySet::has_mesh(), if(), len, LISTBASE_FOREACH, MEM_mallocN, DispList::nr, Curve::nurb, OB_SURF, DispList::parts, GeometrySet::replace_mesh(), Curve::resolu_ren, Curve::resolv_ren, DispList::rt, Object::runtime, scene, SEGMENTSU, DispList::type, Object::type, and DispList::verts.
Referenced by BKE_displist_make_curveTypes().
|
static |
Definition at line 1095 of file displist.cc.
References BLI_addtail(), DispList::charidx, Nurb::charidx, DispList::col, DL_POLY, Nurb::flag, Nurb::mat_nr, MEM_mallocN, DispList::nr, DispList::parts, DispList::rt, DispList::type, and DispList::verts.
Referenced by evaluate_curve_type_object().
|
static |
Definition at line 1034 of file displist.cc.
References usdtokens::b(), copy_qt_qt(), copy_v3_v3(), BevPoint::cosa, CU_3D, data, Curve::flag, interp_qt_qtqt(), interp_v3_v3v3(), mul_qt_v3(), DispList::nr, BevPoint::quat, BevPoint::sina, BevPoint::vec, and DispList::verts.
Referenced by evaluate_curve_type_object().