Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHans Goudey <h.goudey@me.com>2022-03-01 19:40:25 +0300
committerHans Goudey <h.goudey@me.com>2022-03-01 19:40:25 +0300
commitf98d74c80de7b1cae1e5a963f33c51c49f478ba1 (patch)
tree5144a2249410c0128d7e2780cb39e56aa5181ab2 /source/blender/blenkernel
parent143bc9f8d4baf2a7312f3e836a464f74148c4a3b (diff)
Curves: Move curves primitive to object add code
Currently, any time a Curves data-block is created, the `curves_random` function runs, filling it with 500 random curves, also adding a radius attribute. This is just left over from the prototype in the initial commit that added the type. This commit moves the code that creates the random data to the curve editors module, like the other primitives are organized. Differential Revision: https://developer.blender.org/D14211
Diffstat (limited to 'source/blender/blenkernel')
-rw-r--r--source/blender/blenkernel/intern/curves.cc46
1 files changed, 0 insertions, 46 deletions
diff --git a/source/blender/blenkernel/intern/curves.cc b/source/blender/blenkernel/intern/curves.cc
index d7783c76f65..c7aaf4718fe 100644
--- a/source/blender/blenkernel/intern/curves.cc
+++ b/source/blender/blenkernel/intern/curves.cc
@@ -50,7 +50,6 @@ using blender::Span;
static const char *ATTR_POSITION = "position";
-static void curves_random(Curves *curves);
static void update_custom_data_pointers(Curves &curves);
static void curves_init_data(ID *id)
@@ -61,8 +60,6 @@ static void curves_init_data(ID *id)
MEMCPY_STRUCT_AFTER(curves, DNA_struct_default_get(Curves), id);
new (&curves->geometry) blender::bke::CurvesGeometry();
-
- curves_random(curves);
}
static void curves_copy_data(Main *UNUSED(bmain), ID *id_dst, const ID *id_src, const int flag)
@@ -234,49 +231,6 @@ static void update_custom_data_pointers(Curves &curves)
blender::bke::CurvesGeometry::wrap(curves.geometry).update_customdata_pointers();
}
-static void curves_random(Curves *curves)
-{
- const int numpoints = 8;
-
- blender::bke::CurvesGeometry &geometry = blender::bke::CurvesGeometry::wrap(curves->geometry);
- geometry = blender::bke::CurvesGeometry(500 * numpoints, 500);
-
- MutableSpan<int> offsets = geometry.offsets();
- MutableSpan<float3> positions = geometry.positions();
-
- float *radius_data = (float *)CustomData_add_layer_named(
- &geometry.point_data, CD_PROP_FLOAT, CD_DEFAULT, nullptr, geometry.point_size, "radius");
- MutableSpan<float> radii{radius_data, geometry.points_size()};
-
- for (const int i : offsets.index_range()) {
- offsets[i] = numpoints * i;
- }
-
- RandomNumberGenerator rng;
-
- for (int i = 0; i < geometry.curve_size; i++) {
- const IndexRange curve_range = geometry.range_for_curve(i);
- MutableSpan<float3> curve_positions = positions.slice(curve_range);
- MutableSpan<float> curve_radii = radii.slice(curve_range);
-
- const float theta = 2.0f * M_PI * rng.get_float();
- const float phi = saacosf(2.0f * rng.get_float() - 1.0f);
-
- float3 no = {std::sin(theta) * std::sin(phi), std::cos(theta) * std::sin(phi), std::cos(phi)};
- no = blender::math::normalize(no);
-
- float3 co = no;
- for (int key = 0; key < numpoints; key++) {
- float t = key / (float)(numpoints - 1);
- curve_positions[key] = co;
- curve_radii[key] = 0.02f * (1.0f - t);
-
- float3 offset = float3(rng.get_float(), rng.get_float(), rng.get_float()) * 2.0f - 1.0f;
- co += (offset + no) / numpoints;
- }
- }
-}
-
void *BKE_curves_add(Main *bmain, const char *name)
{
Curves *curves = static_cast<Curves *>(BKE_id_new(bmain, ID_CV, name));