diff --git a/application/main.cpp b/application/main.cpp index 6437509..286ac37 100644 --- a/application/main.cpp +++ b/application/main.cpp @@ -10,6 +10,7 @@ int main() // auto sphere2 = create_primitive(primitive_data_center, PRIMITIVE_TYPE_SPHERE); auto cylinder = create_primitive(primitive_data_center, PRIMITIVE_TYPE_CYLINDER); primitive_apply_translation(sphere1, {1.0, 0.0, 0.0}); + // primitive_apply_scale(cylinder, {1, 1, 2}); std::cout << "primitive created..." << std::endl; auto runtime_blobtree = create_blobtree(); diff --git a/network_process/src/prim_gen/extract_vertex_infos.cpp b/network_process/src/prim_gen/extract_vertex_infos.cpp index ec63527..fec3ce8 100644 --- a/network_process/src/prim_gen/extract_vertex_infos.cpp +++ b/network_process/src/prim_gen/extract_vertex_infos.cpp @@ -39,8 +39,9 @@ void extract_vertex_infos(const s_settings& settings, // compute the SDF values for each vertex for (uint32_t i = 0; i < tree.subfaces.size(); ++i) { - auto subface_vert_info = vertex_infos.col(i); - auto sdf_evaluator = tree.subfaces[i].object_ptr->fetch_sdf_evaluator(); + auto subface_vert_info = vertex_infos.col(i); + const auto& subface = tree.subfaces[i]; + auto sdf_evaluator = subface.object_ptr->fetch_sdf_evaluator(); for (uint32_t j = 0; j < subface_vert_info.size(); ++j) { auto pos = get_vert_pos(j, scene_bg_mesh_info); subface_vert_info[j] = sdf_evaluator(pos); diff --git a/primitive_process/src/primitive/simple/cylinder.cpp b/primitive_process/src/primitive/simple/cylinder.cpp index da6c6c5..20623a6 100644 --- a/primitive_process/src/primitive/simple/cylinder.cpp +++ b/primitive_process/src/primitive/simple/cylinder.cpp @@ -24,7 +24,7 @@ void cylinder_t::destroy() void cylinder_t::initialize(primitive_data_center_t &data_center, const std::vector> &new_model_matrices) { - std::array old_ptrs{bottom_plane.get_ptr(), cylinder_face.get_ptr(), top_plane.get_ptr()}; + std::array old_ptrs{cylinder_face.get_ptr(), bottom_plane.get_ptr(), top_plane.get_ptr()}; std::array old_model_matrices{nullptr, nullptr, nullptr}; for (size_t i = 0; i < 3; ++i) { if (old_ptrs[i] != nullptr) old_model_matrices[i] = old_ptrs[i]->model_matrices; @@ -52,8 +52,13 @@ void cylinder_t::initialize(primitive_data_center_t } // deferred release to avoid acquiring the same just-released subface - for (size_t i = 0; i < 3; ++i) { - if (old_ptrs[i] != nullptr) data_center.spheres.release(old_model_matrices[i]); + { + if (old_ptrs[0] != nullptr) + data_center.cylinders.release(cylinder_paired_model_matrix{old_model_matrices[0]}); + if (old_ptrs[1] != nullptr) + data_center.planes.release(plane_paired_model_matrix{old_model_matrices[1]}); + if (old_ptrs[2] != nullptr) + data_center.planes.release(plane_paired_model_matrix{old_model_matrices[2]}); } } } // namespace internal \ No newline at end of file