26 BLI_assert(!curve_geometry_.nurbs_element_.curv_indices.is_empty());
33 curve->resolu = curve->resolv = 12;
39 this->create_nurbs(curve);
51 if (ob_name.empty()) {
60 curve->resolu = curve->resolv = 12;
66 this->create_nurbs(curve);
74void CurveFromGeometry::create_nurbs(
Curve *curve)
77 Nurb *nurb =
static_cast<Nurb *
>(curve->nurb.first);
88 nurbs_geometry.degree + 1;
94 for (
int i = 0; i < tot_vert; i++) {
106 bool do_endpoints =
false;
107 int deg1 = nurbs_geometry.
degree + 1;
108 if (nurbs_geometry.
parm.
size() >= deg1 * 2) {
111 for (
int i = 0; i < deg1; ++i) {
112 if (
abs(nurbs_geometry.
parm[i] - range.x) > 0.0001f) {
113 do_endpoints =
false;
116 if (
abs(nurbs_geometry.
parm[nurbs_geometry.
parm.
size() - 1 - i] - range.y) > 0.0001f) {
117 do_endpoints =
false;
void BKE_curve_init(Curve *cu, short curve_type)
ListBase * BKE_curve_nurbs_get(Curve *cu)
void BKE_nurb_knot_calc_u(Nurb *nu)
Curve * BKE_curve_add(Main *bmain, const char *name, int type)
void BKE_nurb_points_add(Nurb *nu, int number)
void * BKE_id_new_nomain(short type, const char *name)
General operations, lookup, etc. for blender objects.
Object * BKE_object_add_only_object(Main *bmain, int type, const char *name) ATTR_RETURNS_NONNULL
void BLI_addtail(struct ListBase *listbase, void *vlink) ATTR_NONNULL(1)
MINLINE void copy_v3_v3(float r[3], const float a[3])
Object * create_curve_object(Main *bmain, const OBJImportParams &import_params)
void *(* MEM_callocN)(size_t len, const char *str)
void transform_object(Object *object, const OBJImportParams &import_params)
std::string get_geometry_name(const std::string &full_name, char separator)
char collection_separator
NurbsElement nurbs_element_
std::string geometry_name_
Vector< float3 > vertices
Vector< int > curv_indices
ccl_device_inline int abs(int x)