Blender V4.3
mball_tessellate.cc File Reference
#include <cctype>
#include <cfloat>
#include <cmath>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include "MEM_guardedalloc.h"
#include "DNA_meta_types.h"
#include "DNA_object_types.h"
#include "DNA_scene_types.h"
#include "BLI_math_geom.h"
#include "BLI_math_matrix.h"
#include "BLI_math_rotation.h"
#include "BLI_math_vector.h"
#include "BLI_math_vector.hh"
#include "BLI_memarena.h"
#include "BLI_string_utils.hh"
#include "BLI_utildefines.h"
#include "BKE_global.hh"
#include "BKE_mball_tessellate.hh"
#include "BKE_mesh.hh"
#include "BKE_object.hh"
#include "BKE_scene.hh"
#include "DEG_depsgraph.hh"
#include "DEG_depsgraph_query.hh"
#include "BLI_strict_flags.h"

Go to the source code of this file.

Classes

struct  CORNER
 
struct  CUBE
 
struct  CUBES
 
struct  CENTERLIST
 
struct  EDGELIST
 
struct  INTLIST
 
struct  INTLISTS
 
struct  Box
 
struct  MetaballBVHNode
 
struct  PROCESS
 

Macros

#define USE_ACCUM_NORMAL
 
#define MBALL_ARRAY_LEN_INIT   4096
 
#define L   0 /* Left direction: -x, -i. */
 
#define R   1 /* Right direction: +x, +i. */
 
#define B   2 /* Bottom direction: -y, -j. */
 
#define T   3 /* Top direction: +y, +j. */
 
#define N   4 /* Near direction: -z, -k. */
 
#define F   5 /* Far direction: +z, +k. */
 
#define LBN   0 /* Left bottom near corner. */
 
#define LBF   1 /* Left bottom far corner. */
 
#define LTN   2 /* Left top near corner. */
 
#define LTF   3 /* Left top far corner. */
 
#define RBN   4 /* Right bottom near corner. */
 
#define RBF   5 /* Right bottom far corner. */
 
#define RTN   6 /* Right top near corner. */
 
#define RTF   7 /* Right top far corner. */
 
#define HASHBIT   (5)
 
#define HASHSIZE   size_t(1 << (3 * HASHBIT))
 
#define HASH(i, j, k)   ((((((i) & 31) << 5) | ((j) & 31)) << 5) | ((k) & 31))
 
#define MB_BIT(i, bit)   (((i) >> (bit)) & 1)
 
#define LB   0 /* left bottom edge */
 
#define LT   1 /* left top edge */
 
#define LN   2 /* left near edge */
 
#define LF   3 /* left far edge */
 
#define RB   4 /* right bottom edge */
 
#define RT   5 /* right top edge */
 
#define RN   6 /* right near edge */
 
#define RF   7 /* right far edge */
 
#define BN   8 /* bottom near edge */
 
#define BF   9 /* bottom far edge */
 
#define TN   10 /* top near edge */
 
#define TF   11 /* top far edge */
 

Functions

static int vertid (PROCESS *process, const CORNER *c1, const CORNER *c2)
 
static void add_cube (PROCESS *process, int i, int j, int k)
 
static void make_face (PROCESS *process, int i1, int i2, int i3, int i4)
 
static void converge (PROCESS *process, const CORNER *c1, const CORNER *c2, float r_p[3])
 
static void make_box_union (const BoundBox *a, const Box *b, Box *r_out)
 
static void make_box_from_metaelem (Box *r, const MetaElem *ml)
 
static uint partition_mainb (MetaElem **mainb, uint start, uint end, uint s, float div)
 
static void build_bvh_spatial (PROCESS *process, MetaballBVHNode *node, uint start, uint end, const Box *allbox)
 
static float densfunc (const MetaElem *ball, float x, float y, float z)
 
static float metaball (PROCESS *process, float x, float y, float z)
 
static void freepolygonize (PROCESS *process)
 
static void docube (PROCESS *process, CUBE *cube)
 
static CORNERsetcorner (PROCESS *process, int i, int j, int k)
 
static int nextcwedge (int edge, int face)
 
static int otherface (int edge, int face)
 
static void makecubetable ()
 
void BKE_mball_cubeTable_free ()
 
static int setcenter (PROCESS *process, CENTERLIST *table[], const int i, const int j, const int k)
 
static void setedge (PROCESS *process, int i1, int j1, int k1, int i2, int j2, int k2, int vid)
 
static int getedge (EDGELIST *table[], int i1, int j1, int k1, int i2, int j2, int k2)
 
static void addtovertices (PROCESS *process, const float v[3], const float no[3])
 
static void next_lattice (int r[3], const float pos[3], const float size)
 
static void prev_lattice (int r[3], const float pos[3], const float size)
 
static void closest_latice (int r[3], const float pos[3], const float size)
 
static void find_first_points (PROCESS *process, const uint em)
 
static void polygonize (PROCESS *process)
 
static bool object_has_zero_axis_matrix (const Object *bob)
 
static void init_meta (Depsgraph *depsgraph, PROCESS *process, Scene *scene, Object *ob)
 
MeshBKE_mball_polygonize (Depsgraph *depsgraph, Scene *scene, Object *ob)
 

Variables

static INTLISTScubetable [256]
 
static char faces [256]
 
static int corner1 [12]
 
static int corner2 [12]
 
static int leftface [12]
 
static int rightface [12]
 

Macro Definition Documentation

◆ B

#define B   2 /* Bottom direction: -y, -j. */

Definition at line 272 of file mball_tessellate.cc.

Referenced by add_m3_m3m3(), add_m4_m4m4(), BLI_ewa_filter(), BLI_ewa_imp2radangle(), BLI_ghashutil_paircmp(), bsdf_microfacet_setup_fresnel_conductor(), bsdf_sheen_eval(), bsdf_sheen_sample(), btDoSimplex2(), btDoSimplex3(), btDoSimplex4(), btMprVec3PointTriDist2(), btSolveL1(), btSolveL1_1(), btSolveL1_2(), btSolveL1T(), btVec3PointTriDist2(), Freestyle::ViewEdgeXBuilder::BuildSmoothFEdge(), Freestyle::GridHelpers::closestPointToSegment(), Freestyle::ViewMapBuilder::computeCusps(), Freestyle::ViewMapBuilder::ComputeRayCastingVisibility(), libmv::ComputeTrackingEquation(), Freestyle::crossesProscenium(), CurvePoint_fedge_get(), CurvePoint_second_svertex_get(), dBoxBox2(), Freestyle::GeomUtils::distPointSegment(), btDeformableNeoHookeanForce::DotProduct(), FEdge_second_svertex_get(), blender::ed::object::followpath_path_animate_exec(), fresnel_dielectric_cos(), libmv::FrobeniusDistance(), blender::ed::greasepencil::get_reordered_indices(), Freestyle::ViewMap::getClosestFEdge(), Freestyle::ViewMap::getClosestViewEdge(), libmv::euclidean_resection::IJToIndex(), imagewraposa_aniso(), Freestyle::GeomUtils::include2dSeg2dArea(), Freestyle::GeomUtils::includePointTriangle(), interp_m3_m3m3(), interp_m4_m4m4(), blender::math::interpolate(), blender::math::interpolate(), Freestyle::GeomUtils::intersect2dSeg2dArea(), madd_m3_m3m3fl(), madd_m4_m4m4fl(), makecubetable(), md5_process_block(), mul_m3_m3_post(), mul_m3_m3m3(), mul_m3_m3m4(), mul_m3_m4m3(), mul_m3_m4m4(), mul_m4_m3m4(), mul_m4_m4_post(), mul_m4_m4m3(), mul_m4_m4m4(), mul_m4_m4m4_aligned_scale(), mul_m4_m4m4_split_channels(), mul_m4db_m4db_m4fl(), btMatrixX< T >::multiply2_p8r(), btMatrixX< T >::multiplyAdd2_p8r(), newPerlin(), nextcwedge(), nlaevalchan_keycmp(), operator!=(), Freestyle::Functions0D::Curvature2DAngleF0D::operator()(), Freestyle::Functions0D::VertexOrientation2DF0D::operator()(), Freestyle::Functions0D::VertexOrientation3DF0D::operator()(), Freestyle::less_SVertex2D::operator()(), operator<(), operator==(), operator==(), blender::robust_pred::orient2dadapt(), phase_fournier_forand_coeffs(), phase_sample_direction(), Freestyle::ImagePyramid::pixel(), blender::ed::greasepencil::primitive_calulate_curve_positions(), process(), radangle2imp(), sample_cos_hemisphere(), sample_uniform_cone(), sample_uniform_hemisphere(), SIM_hair_volume_solve_divergence(), singularValueDecomposition(), slide_spline_curvature_modal(), slide_spline_solve_P1(), slide_spline_solve_P2(), libmv::SolveCubicPolynomial(), btLemkeSolver::solveMLCP(), SolveP3(), Freestyle::SShape::SplitEdge(), Freestyle::SShape::SplitEdgeIn2(), sub_m3_m3m3(), sub_m4_m4m4(), svm_node_closure_volume(), svm_node_normal_map(), Freestyle::StrokeTesselator::Tesselate(), transform_equal_threshold(), triangle_light_pdf(), triangle_light_sample(), btSoftBody::updateDeformation(), and volume_fournier_forand_setup().

◆ BF

#define BF   9 /* bottom far edge */

Definition at line 522 of file mball_tessellate.cc.

Referenced by makecubetable(), and nextcwedge().

◆ BN

#define BN   8 /* bottom near edge */

Definition at line 521 of file mball_tessellate.cc.

Referenced by makecubetable(), and nextcwedge().

◆ F

◆ HASH

#define HASH ( i,
j,
k )   ((((((i) & 31) << 5) | ((j) & 31)) << 5) | ((k) & 31))

Definition at line 294 of file mball_tessellate.cc.

Referenced by getedge(), setcenter(), setcorner(), and setedge().

◆ HASHBIT

#define HASHBIT   (5)

the LBN corner of cube (i, j, k), corresponds with location (i-0.5)*size, (j-0.5)*size, (k-0.5)*size)

Definition at line 290 of file mball_tessellate.cc.

◆ HASHSIZE

#define HASHSIZE   size_t(1 << (3 * HASHBIT))

Hash table size (32768).

Definition at line 292 of file mball_tessellate.cc.

Referenced by polygonize().

◆ L

#define L   0 /* Left direction: -x, -i. */

BASED AT CODE (but mostly rewritten) : C code from the article "An Implicit Surface Polygonizer" by Jules Bloomenthal jbloo.nosp@m.m@be.nosp@m.auty..nosp@m.gmu..nosp@m.edu in "Graphics Gems IV", Academic Press, 1994

Authored by Jules Bloomenthal, Xerox PARC. Copyright (c) Xerox Corporation, 1991. All rights reserved. Permission is granted to reproduce, use and distribute this code for any and all purposes, provided that this notice appears in all copies.

Definition at line 270 of file mball_tessellate.cc.

Referenced by slim::add_soft_constraints(), BLI_exists(), BLI_file_read_data_as_mem_from_handle(), blinn_specular(), btLDLTAddTL(), btLDLTRemove(), btSolveL1(), btSolveL1_1(), btSolveL1_2(), btSolveL1T(), btSolveLDLT(), slim::build_linear_system(), clone_window(), slim::cotmatrix(), blender::gpu::detect_workarounds(), dfdx_spring(), DllRegisterServer(), DllUnregisterServer(), slim::edge_lengths(), libmv::euclidean_resection::EuclideanResectionAnsarDaniilidis(), libmv::euclidean_resection::EuclideanResectionEPnP(), fb(), fbderiv(), fbstar(), fbstar_jacobi(), film_clamp_light(), film_write_background(), film_write_surface_emission(), film_write_volume_emission(), Freestyle::BlenderStrokeRenderer::GenerateStrokeMesh(), Freestyle::GaussianFilter::getSmoothedPixel(), GHOST_WindowWin32::getTitle(), guiding_record_background(), libmv::Homography2DFromCorrespondencesLinear(), libmv::Homography2DFromCorrespondencesLinearEuc(), libmv::Homography3DFromCorrespondencesLinear(), Freestyle::GeomUtils::includePointTriangle(), GHOST_SystemWin32::init(), integrate_background(), integrate_surface_emission(), integrator_eval_background_shader(), interpolate_fresnel_color(), LaunchedFromSteam(), main(), makecubetable(), nextcwedge(), blender::geometry::p_chart_convex_hull(), read_file_data(), replace_if_different(), GHOST_SystemWin32::s_wndProc(), GHOST_WindowX11::setWindowCustomCursorShape(), shadow_ray_offset(), GHOST_SystemWin32::showMessageBox(), signDetermination1Internal(), blender::compositor::SMAALumaEdgeDetectionPS(), slim::solve_weighted_arap(), spring_length(), slim::squared_edge_lengths(), system_windows_version_at_least(), GHOST_WindowWin32::ThemeRefresh(), tonemap_calc_chunk_luminance(), tonemap_rd_photoreceptor(), blender::compositor::PhotoreceptorTonemapOperation::update_memory_buffer_partial(), and wWinMain().

◆ LB

#define LB   0 /* left bottom edge */

◆ LBF

#define LBF   1 /* Left bottom far corner. */

Definition at line 277 of file mball_tessellate.cc.

◆ LBN

#define LBN   0 /* Left bottom near corner. */

Definition at line 276 of file mball_tessellate.cc.

◆ LF

#define LF   3 /* left far edge */

Definition at line 516 of file mball_tessellate.cc.

Referenced by makecubetable(), and nextcwedge().

◆ LN

#define LN   2 /* left near edge */

Definition at line 515 of file mball_tessellate.cc.

Referenced by makecubetable(), and nextcwedge().

◆ LT

#define LT   1 /* left top edge */

◆ LTF

#define LTF   3 /* Left top far corner. */

Definition at line 279 of file mball_tessellate.cc.

◆ LTN

#define LTN   2 /* Left top near corner. */

Definition at line 278 of file mball_tessellate.cc.

◆ MB_BIT

#define MB_BIT ( i,
bit )   (((i) >> (bit)) & 1)

Definition at line 296 of file mball_tessellate.cc.

Referenced by add_cube(), docube(), and makecubetable().

◆ MBALL_ARRAY_LEN_INIT

#define MBALL_ARRAY_LEN_INIT   4096

Definition at line 45 of file mball_tessellate.cc.

Referenced by BKE_mball_polygonize(), and make_face().

◆ N

#define N   4 /* Near direction: -z, -k. */

Definition at line 274 of file mball_tessellate.cc.

Referenced by libmv::euclidean_resection::AbsoluteOrientation(), PreallocatedMemoryHelper< N >::addChunk(), btUnionFind::allocate(), area_light_tree_parameters(), background_sun_pdf(), background_sun_sample(), BKE_mask_spline_project_co(), blinn_specular(), bsdf_ashikhmin_shirley_eval(), bsdf_ashikhmin_shirley_sample(), bsdf_ashikhmin_velvet_eval(), bsdf_ashikhmin_velvet_sample(), bsdf_diffuse_eval(), bsdf_diffuse_sample(), bsdf_hair_huang_eval_residual(), bsdf_microfacet_eval(), bsdf_microfacet_sample(), bsdf_sheen_eval(), bsdf_sheen_sample(), bsdf_translucent_eval(), bsdf_translucent_sample(), bt_segment_collision(), buildTreeBottomUp(), bump_shadowing_term(), Freestyle::VecMat::Matrix< T, M, N >::cols(), libmv::ArrayND< T, N >::Contains(), blender::StringRefBase::copy(), Mesh::copy_center_to_motion_step(), create_mesh(), Freestyle::VecMat::Vec< T, N >::dim(), Freestyle::RandGen::drand48(), draw_frustum_bound_sphere_calc(), libmv::DrawLine(), ensure_valid_specular_reflection(), BicubicPatch::eval(), LinearQuadPatch::eval(), blender::draw::View::frustum_culling_sphere_calc(), MemoryAllocator< N >::getBytes(), GPU_matrix_bind(), Freestyle::gts_vertex_principal_directions(), guiding_bsdf_init(), guiding_record_bssrdf_bounce(), guiding_record_surface_bounce(), Freestyle::VecMat::SquareMatrix< T, N >::identity(), Freestyle::GeomUtils::includePointTriangle(), integrate_light(), integrator_init_from_bake(), libmv::InternalReprojectionError(), btMiniSDF::interpolate(), Freestyle::GeomUtils::intersect2dSegPoly(), lattice_foreachScreenVert(), light_sample(), light_sample(), light_sample_from_intersection(), light_sample_from_position(), light_sample_mis_weight_forward_background(), light_sample_mis_weight_forward_lamp(), light_sample_mis_weight_forward_surface(), light_sample_update(), light_tree_importance(), light_tree_node_importance(), light_tree_pdf(), light_tree_pdf(), make_orthonormals(), make_orthonormals_safe_tangent(), make_orthonormals_tangent(), make_transform_frame(), makecubetable(), Freestyle::VecMat::Matrix< T, M, N >::Matrix(), maybe_ensure_valid_specular_reflection(), array< T, alignment >::mem_allocate(), array< T, alignment >::mem_copy(), array< T, alignment >::mem_free(), MemoryAllocator< N >::MemoryAllocator(), MOD_lineart_chain_feature_lines(), motion_triangle_smooth_normal(), Freestyle::VecMat::Vec< T, N >::normalize(), Freestyle::VecMat::Vec< T, N >::normalizeSafe(), object_inverse_normal_transform(), object_normal_transform(), libmv::ArrayND< T, N >::Offset(), libmv::ArrayND< T, N >::Offset(), libmv::ArrayND< T, N >::Offset(), libmv::ArrayND< T, N >::Offset(), Freestyle::VecMat::Vec< T, N >::operator!=(), blender::tests::EqualityIntModN< N >::operator()(), blender::tests::HashIntModN< N >::operator()(), Freestyle::VecMat::Matrix< T, M, N >::operator()(), Freestyle::VecMat::Matrix< T, M, N >::operator()(), Freestyle::VecMat::operator*(), Freestyle::VecMat::operator*(), Freestyle::VecMat::Vec< T, N >::operator*(), Freestyle::VecMat::Matrix< T, M, N >::operator*=(), Freestyle::VecMat::Vec< T, N >::operator*=(), Freestyle::VecMat::Matrix< T, M, N >::operator+=(), Freestyle::VecMat::Vec< T, N >::operator+=(), Freestyle::VecMat::Matrix< T, M, N >::operator-=(), Freestyle::VecMat::Vec< T, N >::operator-=(), Freestyle::VecMat::Matrix< T, M, N >::operator/=(), Freestyle::VecMat::Vec< T, N >::operator/=(), Freestyle::VecMat::Vec< T, N >::operator<(), Freestyle::VecMat::operator<<(), Freestyle::VecMat::operator<<(), Freestyle::VecMat::Matrix< T, M, N >::operator=(), Freestyle::VecMat::Vec< T, N >::operator=(), Freestyle::VecMat::Vec< T, N >::operator==(), libmv::Tuple< T, N >::operator==(), Freestyle::VecMat::Vec< T, N >::operator>(), pdf_cos_hemisphere(), pdf_uniform_cone(), libmv::PearsonProductMomentCorrelation(), point_light_mnee_sample_update(), point_light_sample(), point_light_sample_from_intersection(), Freestyle::FEdgeXDetector::preProcessFace(), blender::math::project_point(), ray_plane_intersect(), btDeformableContactProjection::reinitialize(), Freestyle::Stroke::Resample(), libmv::resection::Resection(), libmv::Tuple< T, N >::Reset(), libmv::Tuple< T, N >::Reset(), btUnionFind::reset(), libmv::ArrayND< T, N >::Resize(), libmv::ArrayND< T, N >::Resize(), libmv::ArrayND< T, N >::Resize(), libmv::ArrayND< T, N >::Resize(), sample_cos_hemisphere(), sample_uniform_cone(), sample_uniform_hemisphere(), QuadDice::scale_factor(), libmv::SelectKeyframesBasedOnGRICAndVariance(), EdgeDice::set_vert(), btSoftBody::setCollisionQuadrature(), shadow_ray_smooth_surface_offset(), libmv::ArrayND< T, N >::Size(), iTaSC::WSDLSSolver::solve(), sphere_light_pdf(), BVHObjectBinning::split(), spot_light_mnee_sample_update(), spot_light_pdf(), spot_light_sample(), spot_light_sample_from_intersection(), studiolight_lights_eval(), subsurf_calculate_limit_positions(), surface_shader_ao(), surface_shader_average_normal(), svm_node_closure_bsdf(), svm_node_normal_map(), svm_node_tex_image_box(), tabulated_sobol_generate_4D(), Mesh::tessellate(), libmv::TEST(), libmv::TEST(), TEST(), TEST(), OSLRenderServices::texture(), blender::index_mask::IndexMask::to_spans_and_ranges(), Freestyle::VecMat::Matrix< T, M, N >::transpose(), triangle_light_pdf(), triangle_light_tree_parameters(), triangle_light_valid_ray_segment(), triangle_smooth_normal(), triangle_smooth_normal_unnormalized(), triangle_vertices_and_normals(), Freestyle::VecMat::Vec< T, N >::Vec(), Freestyle::VecMat::Vec< T, N >::Vec(), Freestyle::VecMat::Vec< T, N >::Vec(), Freestyle::VecMat::Vec< T, N >::Vec(), Freestyle::VecMat::Matrix< T, M, N >::~Matrix(), and Freestyle::VecMat::Vec< T, N >::~Vec().

◆ R

#define R   1 /* Right direction: +x, +i. */

Definition at line 271 of file mball_tessellate.cc.

Referenced by libmv::euclidean_resection::AbsoluteOrientation(), add_m3_m3m3(), add_m4_m4m4(), adjoint_m2_m2(), adjoint_m3_m3(), adjoint_m4_m4(), angle_to_mat2(), axis_angle_normalized_to_mat3(), axis_angle_to_mat3(), axis_angle_to_mat3_single(), axis_angle_to_mat4(), axis_angle_to_mat4_single(), blinn_specular(), bsdf_glossy_toon_eval(), bsdf_glossy_toon_sample(), bsdf_hair_huang_eval_trrt(), bsdf_hair_huang_sample(), libmv::ComputeTrackingEquation(), ComputeTwist(), ComputeTwist(), btCollisionWorld::convexSweepTest(), libmv::Depth(), libmv::Depth(), KDL::RotationVel::DoRotX(), KDL::RotationVel::DoRotY(), KDL::RotationVel::DoRotZ(), dquat_to_mat4(), EIG_invert_m4_m4(), ensure_valid_specular_reflection(), OSLRenderServices::environment(), libmv::EssentialFromRt(), libmv::EuclideanReconstructTwoFrames(), libmv::EuclideanResect(), libmv::euclidean_resection::EuclideanResection(), libmv::euclidean_resection::EuclideanResection(), libmv::euclidean_resection::EuclideanResectionAnsarDaniilidis(), libmv::euclidean_resection::EuclideanResectionEPnP(), libmv::euclidean_resection::EuclideanResectionPPnP(), EulerAngleFromMatrix(), EulerAngleFromMatrix(), eulO_to_gimbal_axis(), eulO_to_mat3(), eulO_to_quat(), extractRotation(), GivensRotation::fill(), GivensRotation::fill(), btDeformableCorotatedForce::firstPiola(), KDL::Frame::Frame(), KDL::Frame::Frame(), KDL::Frame2::Frame2(), KDL::Frame2::Frame2(), fresnel_iridescence(), blender::workbench::get_world_shading_rotation_matrix(), btSoftBody::getRigidTransform(), libmv::EuclideanReconstruction::InsertCamera(), interp_m3_m3m3(), interp_m4_m4m4(), KDL::RotationAcc::Inverse(), KDL::RotationAcc::Inverse(), KDL::RotationAcc::Inverse(), KDL::RotationVel::Inverse(), KDL::RotationVel::Inverse(), KDL::RotationVel::Inverse(), blender::math::invert(), iridescence_airy_summation(), libmv::KRt_From_P(), loc_axisangle_size_to_mat4(), loc_eul_size_to_mat4(), loc_eulO_size_to_mat4(), loc_quat_size_to_mat4(), loc_rot_size_to_mat4(), libmv::LookAt(), madd_m3_m3m3fl(), madd_m4_m4m4fl(), makecubetable(), mat3_normalized_to_eulo2(), mat4_to_dquat(), MatrixToAxisAngle(), libmv::ModalSolver(), libmv::MotionFromEssentialAndCorrespondence(), mul_m3_fl(), mul_m3_m3_post(), mul_m3_m3_pre(), mul_m3_m3m3(), mul_m3_m3m4(), mul_m3_m4m3(), mul_m3_m4m4(), mul_m4_fl(), mul_m4_m3m4(), mul_m4_m4_post(), mul_m4_m4_pre(), mul_m4_m4m3(), mul_m4_m4m4(), mul_m4_m4m4_aligned_scale(), mul_m4_m4m4_split_channels(), mul_m4db_m4db_m4fl(), mul_mat3_m4_fl(), mul_v3m3_dq(), negate_m3(), negate_m4(), negate_mat3_m4(), nextcwedge(), NODE_DEFINE(), normalize_m2(), normalize_m2_ex(), normalize_m2_m2(), normalize_m2_m2_ex(), normalize_m3(), normalize_m3_ex(), normalize_m3_m3(), normalize_m3_m3_ex(), normalize_m4(), normalize_m4_ex(), KDL::RotationAcc::operator*(), KDL::RotationAcc::operator*(), KDL::RotationVel::operator*(), KDL::RotationVel::operator*(), operator*(), operator*(), KDL::operator<<(), KDL::operator<<(), KDL::RotationAcc::operator=(), KDL::RotationAcc::operator=(), KDL::RotationVel::operator=(), KDL::RotationVel::operator=(), orient_mat_z_normalized(), blender::math::orthogonalize(), orthogonalize_m3(), orthogonalize_m3_stable(), orthogonalize_m4(), orthogonalize_m4_stable(), blender::geometry::p_edge_matrix(), blender::geometry::p_edge_matrix(), libmv::P_From_KRt(), slim::polar_svd(), polarDecomposition(), polarDecomposition(), KDL::posrandom(), posrandom(), projection_inverse(), projection_matrix4_inverse(), KDL::random(), random(), libmv::RelativeCameraMotion(), RemoveEulerAngleFromMatrix(), RemoveTwist(), libmv::RootMeanSquareError(), Freestyle::NodeTransform::Rotate(), libmv::RotationAroundX(), libmv::RotationAroundY(), libmv::RotationAroundZ(), scale_m3_fl(), scale_m4_fl(), scale_m4_v2(), libmv::SelectKeyframesBasedOnGRICAndVariance(), shuffle_m4(), size_to_mat3(), size_to_mat4(), libmv::panography::kernel::TwoPointSolver::Solve(), libmv::SolveCubicPolynomial(), SphericalRangeParameters(), studiolight_lights_eval(), sub_m3_m3m3(), sub_m4_m4m4(), svm_node_closure_bsdf(), TEST(), blender::math::to_dual_quaternion(), OSLRenderServices::trace(), transform_decompose(), blender::math::transform_point(), transpose_m3(), transpose_m3_m3(), transpose_m3_m4(), transpose_m4(), transpose_m4_m4(), KDL::RotationVel::UnitX(), KDL::RotationVel::UnitY(), and KDL::RotationVel::UnitZ().

◆ RB

#define RB   4 /* right bottom edge */

◆ RBF

#define RBF   5 /* Right bottom far corner. */

Definition at line 281 of file mball_tessellate.cc.

◆ RBN

#define RBN   4 /* Right bottom near corner. */

Definition at line 280 of file mball_tessellate.cc.

◆ RF

#define RF   7 /* right far edge */

Definition at line 520 of file mball_tessellate.cc.

Referenced by makecubetable(), and nextcwedge().

◆ RN

#define RN   6 /* right near edge */

Definition at line 519 of file mball_tessellate.cc.

Referenced by makecubetable(), and nextcwedge().

◆ RT

#define RT   5 /* right top edge */

Definition at line 518 of file mball_tessellate.cc.

Referenced by makecubetable(), and nextcwedge().

◆ RTF

#define RTF   7 /* Right top far corner. */

Definition at line 283 of file mball_tessellate.cc.

◆ RTN

#define RTN   6 /* Right top near corner. */

Definition at line 282 of file mball_tessellate.cc.

◆ T

#define T   3 /* Top direction: +y, +j. */

Definition at line 273 of file mball_tessellate.cc.

Referenced by add_edge_constraint(), blender::math::adjoint(), GuardedAllocator< T >::allocate(), blender::Any< ExtraInfo, InlineBufferCapacity, Alignment >::allocate_on_empty(), blender::math::angle_of(), blender::math::angle_of_signed(), blender::math::AngleCartesianBase< T >::AngleCartesianBase(), blender::draw::StorageVectorBuffer< T, len >::append_as(), blender::linear_allocator::ChunkedList< T, SegmentCapacity >::append_as(), blender::Vector< T, InlineBufferCapacity, Allocator >::append_unchecked_as(), apply_blend_function(), libmv::ApplyBrownDistortionModel(), libmv::ApplyDivisionDistortionModel(), libmv::ApplyPolynomialDistortionModel(), blender::math::average(), blender::math::AxisAngleBase< T, AngleT >::AxisAngleBase(), blender::fn::multi_function::CustomMF_Constant< T >::call(), blender::MutableSpan< T >::cast(), blender::Span< T >::cast(), ccl_try_align(), blender::nodes::value_elem::ElemVariant::clear_all(), blender::LinearAllocator< Allocator >::construct(), blender::Pool< T, ChunkLen >::construct(), blender::LinearAllocator< Allocator >::construct_array(), blender::LinearAllocator< Allocator >::construct_elements_and_pointer_array(), blender::bke::attribute_math::convert_to_static_type(), btAlignedObjectArray< T >::copy(), blender::cpp_type_util::copy_construct_compressed_cb(), blender::cpp_type_util::copy_construct_indices_cb(), device_vector< T >::copy_from_device(), libmv::ArrayND< T, N >::CopyFrom(), blender::CPPType::CPPType(), blender::fn::multi_function::build::exec_presets::AllSpanOrSingle::create_devirtualizers(), blender::fn::multi_function::build::exec_presets::SomeSpanOrSingle< Indices >::create_devirtualizers(), Procedural::create_node(), Scene::create_node(), ShaderGraph::create_node(), cross(), blender::eevee::Precompute::data(), blender::cpp_type_util::default_construct_indices_cb(), blender::math::AngleCartesianBase< T >::degree(), blender::math::AngleFraction< T >::degree(), blender::math::AngleRadianBase< T >::degree(), blender::DisjointSet< T >::DisjointSet(), blender::threading::EnumerableThreadSpecific< T >::EnumerableThreadSpecific(), blender::threading::EnumerableThreadSpecific< T >::EnumerableThreadSpecific(), blender::fn::multi_function::build::detail::execute_element_fn_as_multi_function(), blender::fn::lazy_function::detail::execute_lazy_function_eagerly_impl(), blender::fn::multi_function::build::detail::execute_materialized(), btAlignedObjectArray< T >::expand(), blender::math::QuaternionBase< T >::expmap(), blender::bke::SocketValueVariant::extract(), blender::draw::pbvh::fallback_value_for_fill(), blender::cpp_type_util::fill_construct_cb(), blender::cpp_type_util::fill_construct_indices_cb(), fill_crossdata_for_through_vert(), blender::meshintersect::fill_input_from_string(), blender::VArray< T >::ForFunc(), blender::math::AngleCartesianBase< T >::from_degree(), blender::math::AngleRadianBase< T >::from_degree(), blender::index_mask::IndexMask::from_groups(), blender::math::detail::from_rotation(), blender::math::detail::from_rotation(), blender::math::detail::from_rotation(), blender::math::detail::from_rotation(), blender::math::from_triangle(), blender::math::from_up_axis(), blender::math::from_vector(), blender::nodes::node_geo_scale_elements_cc::gather_mean(), blender::fixed_width_int::generic_add(), blender::fixed_width_int::generic_sub(), blender::fixed_width_int::generic_unsigned_mul(), blender::tests::ExtraSizeInfo::get(), blender::nodes::inverse_eval::InverseEvalParams::get_input(), blender::nodes::value_elem::ElemEvalParams::get_input_elem(), blender::nodes::inverse_eval::InverseEvalParams::get_output(), blender::nodes::value_elem::InverseElemEvalParams::get_output_elem(), blender::GVArrayImpl_For_VArray< T >::get_to_uninitialized(), blender::GVMutableArrayImpl_For_VMutableArray< T >::get_to_uninitialized(), gim_swap_elements_memcpy(), hair_attenuation(), Freestyle::VecMat::HVec3< T >::HVec3(), Freestyle::SilhouetteGeomEngine::ImageToWorldParameter(), blender::Vector< T, InlineBufferCapacity, Allocator >::insert(), blender::math::interpolate_dot_slerp(), blender::fixed_width_int::IntF< T, S >::IntF(), blender::math::invert(), libmv::InvertNukeDistortionModel(), blender::math::is_any_zero(), blender::math::is_negative(), blender::math::is_negative(), blender::math::is_normalized(), blender::math::is_unit(), blender::math::is_unit_scale(), blender::math::is_unit_scale(), blender::math::is_zero(), blender::math::is_zero(), blender::imbuf::load_pixels(), makecubetable(), blender::MatBase< T, NumCol, NumRow, Alignment >::MatBase(), blender::VArrayImpl< T >::materialize_compressed_to_uninitialized(), blender::VArrayImpl_For_Span< T >::materialize_compressed_to_uninitialized(), blender::VArrayImpl< T >::materialize_to_uninitialized(), blender::VArrayImpl_For_Single< T >::materialize_to_uninitialized(), blender::VArrayImpl_For_Span< T >::materialize_to_uninitialized(), Freestyle::VecMat::Matrix< T, M, N >::Matrix(), libmv::ArrayND< T, N >::MemorySizeInBytes(), blender::math::midpoint(), blender::cpp_type_util::move_construct_indices_cb(), blender::math::normalize(), blender::math::normalize_and_get_length(), blender::math::detail::normalized_to_eul2(), blender::math::detail::normalized_to_eul2(), blender::math::detail::normalized_to_quat_with_checks(), btVectorX< T >::nrm2(), blender::math::AngleFraction< T >::operator AngleCartesianBase< T >(), blender::fixed_width_int::UIntF< T, S >::operator uint64_t(), blender::math::EulerBase< T >::operator VecBase< T, 3 >(), blender::OffsetSpan< T, BaseT >::Iterator::operator*(), Freestyle::VecMat::Matrix< T, M, N >::operator+=(), Freestyle::VecMat::Vec< T, N >::operator+=(), Freestyle::VecMat::Matrix< T, M, N >::operator-=(), Freestyle::VecMat::Vec< T, N >::operator-=(), blender::VecBase< T, Size >::operator/=(), blender::VecBase< T, Size >::operator/=(), Freestyle::VecMat::Matrix< T, M, N >::operator=(), Freestyle::VecMat::Vec< T, N >::operator=(), blender::OffsetSpan< T, BaseT >::operator[](), blender::index_mask::optimized_foreach_index(), blender::index_mask::optimized_foreach_index_with_pos(), blender::math::projection::orthographic(), blender::math::projection::orthographic_infinite(), overlapfaces_test(), GIM_AABB::overlapping_trans_cache(), overlapping_trans_cache(), blender::geometry::p_face_stretch(), blender::math::projection::perspective(), blender::math::projection::perspective_infinite(), phase_sample_direction(), blender::gpu::populate_emulated_tri_fan_buf(), blender::gpu::populate_optimized_tri_strip_buf(), blender::imbuf::transform::process_scanlines(), blender::math::project_point(), libmv::ProjectionChangeAspectRatio(), libmv::ProjectionShiftPrincipalPoint(), blender::math::pseudo_invert(), blender::Stack< T, InlineBufferCapacity, Allocator >::push_as(), btAlignedObjectArray< T >::push_back(), blender::gpu::VKPushConstants::push_constant_set(), blender::math::AngleCartesianBase< T >::radian(), blender::math::AngleFraction< T >::radian(), KDL::Rall1d< T, V, S >::Rall1d(), blender::math::rcp(), btSdfDataStream::read(), blender::cpp_type_util::relocate_construct_cb(), blender::cpp_type_util::relocate_construct_indices_cb(), RemoveEulerAngleFromMatrix(), libmv::Tuple< T, N >::Reset(), blender::Bounds< T >::resize(), blender::geometry::EvalDataBuffer::resize(), btAlignedObjectArray< T >::resize(), gim_array< T >::resizeData(), blender::math::safe_acos(), blender::math::safe_divide(), blender::math::safe_rcp(), blender::math::safe_sqrt(), sample_cos_hemisphere(), sample_uniform_cone(), sample_uniform_hemisphere(), libmv::SampleLinear(), libmv::SampleLinear(), blender::Bounds< T >::scale_from_center(), blender::math::sign(), blender::MutableSpan< T >::size_in_bytes(), blender::Span< T >::size_in_bytes(), blender::nodes::node_shader_tex_sky_cc::sky_precompute_old(), sky_texture_precompute_preetham(), DiagSplit::split_ngon(), Freestyle::SShape::SplitEdge(), svm_node_closure_bsdf(), btAlignedObjectArray< T >::swap(), blender::tests::TEST(), blender::math::to_axis_angle(), blender::math::to_dual_quaternion(), blender::math::to_euler(), blender::math::to_gimbal_axis(), blender::math::to_quaternion(), blender::nodes::node_geo_blur_attribute_cc::to_static_type_for_blur(), blender::gpu::to_vk_object_type(), blender::math::transform_point(), blender::math::transform_point(), triple(), blender::math::QuaternionBase< T >::twist(), blender::math::QuaternionBase< T >::twist_angle(), blender::fixed_width_int::UIntF< T, S >::UIntF(), IK_QElbowSegment::UpdateAngleApply(), util_aligned_new(), CCL_NAMESPACE_BEGIN::util_image_downscale_sample(), blender::cpp_type_util::value_initialize_cb(), blender::cpp_type_util::value_initialize_indices_cb(), Freestyle::VecMat::Vec< T, N >::Vec(), Freestyle::VecMat::Vec< T, N >::Vec(), Freestyle::VecMat::Vec< T, N >::Vec(), Freestyle::VecMat::Vec2< T >::Vec2(), Freestyle::VecMat::Vec3< T >::Vec3(), blender::VecBase< T, Size >::VecBase(), blender::MatBase< T, NumCol, NumRow, Alignment >::view(), blender::math::AngleRadianBase< T >::wrapped(), and xml_read_mesh().

◆ TF

#define TF   11 /* top far edge */

Definition at line 524 of file mball_tessellate.cc.

Referenced by makecubetable(), and nextcwedge().

◆ TN

#define TN   10 /* top near edge */

Definition at line 523 of file mball_tessellate.cc.

Referenced by makecubetable(), and nextcwedge().

◆ USE_ACCUM_NORMAL

#define USE_ACCUM_NORMAL

Definition at line 43 of file mball_tessellate.cc.

Function Documentation

◆ add_cube()

static void add_cube ( PROCESS * process,
int i,
int j,
int k )
static

Adds cube at given lattice position to cube stack of process.

Definition at line 1036 of file mball_tessellate.cc.

References BLI_memarena_alloc(), CUBE::corners, CUBES::cube, CUBE::i, CUBE::j, CUBE::k, MB_BIT, CUBES::next, process(), setcenter(), and setcorner().

Referenced by docube(), and find_first_points().

◆ addtovertices()

static void addtovertices ( PROCESS * process,
const float v[3],
const float no[3] )
static

Adds a vertex, expands memory if needed.

Definition at line 941 of file mball_tessellate.cc.

References process(), and v.

Referenced by vertid().

◆ BKE_mball_cubeTable_free()

void BKE_mball_cubeTable_free ( )

◆ BKE_mball_polygonize()

◆ build_bvh_spatial()

static void build_bvh_spatial ( PROCESS * process,
MetaballBVHNode * node,
uint start,
uint end,
const Box * allbox )
static

Recursively builds a BVH, dividing elements along the middle of the longest axis of allbox.

Definition at line 198 of file mball_tessellate.cc.

References BLI_memarena_alloc(), build_bvh_spatial(), INIT_MINMAX, make_box_from_metaelem(), make_box_union(), Box::max, Box::min, partition_mainb(), and process().

Referenced by BKE_mball_polygonize(), and build_bvh_spatial().

◆ closest_latice()

static void closest_latice ( int r[3],
const float pos[3],
const float size )
static

Definition at line 1073 of file mball_tessellate.cc.

References floorf, int, and pos.

Referenced by find_first_points().

◆ converge()

static void converge ( PROCESS * process,
const CORNER * c1,
const CORNER * c2,
float r_p[3] )
static

Given two corners, computes approximation of surface intersection point between them. In case of small threshold, do bisection.

Definition at line 997 of file mball_tessellate.cc.

References CORNER::co, copy_v3_v3(), interp_v3_v3v3(), metaball(), process(), and CORNER::value.

Referenced by vertid().

◆ densfunc()

static float densfunc ( const MetaElem * ball,
float x,
float y,
float z )
static

Computes density from given metaball at given position. Metaball equation is: (1 - r^2 / R^2)^3 * s

r = distance from center R = metaball radius s - metaball stiffness

Definition at line 309 of file mball_tessellate.cc.

References ATTR_FALLTHROUGH, MetaElem::expx, MetaElem::expy, MetaElem::expz, MetaElem::imat, MetaElem::len, len_squared_v3(), MB_BALL, MB_CUBE, MB_ELIPSOID, MB_PLANE, MB_TUBE, MB_TUBEX, MB_TUBEY, MB_TUBEZ, mul_m4_v3(), MetaElem::rad2, MetaElem::s, MetaElem::type, x, y, and z().

Referenced by metaball().

◆ docube()

static void docube ( PROCESS * process,
CUBE * cube )
static

triangulate the cube directly, without decomposition

Definition at line 592 of file mball_tessellate.cc.

References add_cube(), corner1, corner2, CUBE::corners, count, cubetable, CUBE::i, CUBE::j, CUBE::k, INTLISTS::list, make_face(), MB_BIT, INTLISTS::next, process(), CORNER::value, and vertid().

Referenced by polygonize().

◆ find_first_points()

static void find_first_points ( PROCESS * process,
const uint em )
static

Find at most 26 cubes to start polygonization from.

Definition at line 1083 of file mball_tessellate.cc.

References add(), add_cube(), b, MetaElem::bb, closest_latice(), copy_v3_v3_int(), mid_v3_v3v3(), blender::math::min(), next_lattice(), prev_lattice(), process(), setcorner(), CORNER::value, and BoundBox::vec.

Referenced by polygonize().

◆ freepolygonize()

static void freepolygonize ( PROCESS * process)
static

Definition at line 487 of file mball_tessellate.cc.

References BLI_memarena_free(), MEM_freeN(), and process().

Referenced by BKE_mball_polygonize().

◆ getedge()

static int getedge ( EDGELIST * table[],
int i1,
int j1,
int k1,
int i2,
int j2,
int k2 )
static
Returns
vertex id for edge; return -1 if not set

Definition at line 914 of file mball_tessellate.cc.

References HASH, EDGELIST::i1, EDGELIST::i2, EDGELIST::j1, EDGELIST::j2, EDGELIST::k1, EDGELIST::k2, EDGELIST::next, and EDGELIST::vid.

Referenced by vertid().

◆ init_meta()

◆ make_box_from_metaelem()

static void make_box_from_metaelem ( Box * r,
const MetaElem * ml )
static

Definition at line 154 of file mball_tessellate.cc.

References MetaElem::bb, copy_v3_v3(), Box::max, Box::min, Box::ml, and BoundBox::vec.

Referenced by build_bvh_spatial().

◆ make_box_union()

static void make_box_union ( const BoundBox * a,
const Box * b,
Box * r_out )
static

Definition at line 143 of file mball_tessellate.cc.

References b, Box::max, max_ff(), Box::min, and min_ff().

Referenced by build_bvh_spatial(), and init_meta().

◆ make_face()

static void make_face ( PROCESS * process,
int i1,
int i2,
int i3,
int i4 )
static

Adds face to indices, expands memory if needed.

Definition at line 438 of file mball_tessellate.cc.

References accumulate_vertex_normals_v3(), MBALL_ARRAY_LEN_INIT, MEM_reallocN, normal_quad_v3(), normal_tri_v3(), process(), and UNLIKELY.

Referenced by docube().

◆ makecubetable()

static void makecubetable ( )
static

create the 256 entry table for cubical polygonization

Definition at line 749 of file mball_tessellate.cc.

References B, BF, BN, corner1, corner2, cubetable, e, ELEM, F, INTLIST::i, L, LB, leftface, LF, INTLISTS::list, LN, LT, MB_BIT, MEM_callocN, N, INTLIST::next, INTLISTS::next, nextcwedge(), otherface(), pos, R, RB, RF, rightface, RN, RT, T, TF, and TN.

Referenced by polygonize().

◆ metaball()

static float metaball ( PROCESS * process,
float x,
float y,
float z )
static

Computes density at given position form all meta-balls which contain this point in their box. Traverses BVH using a queue.

Definition at line 407 of file mball_tessellate.cc.

References MetaballBVHNode::child, densfunc(), node, process(), and z().

Referenced by converge(), metaball_foreach_id(), metaball_free_data(), metaball_init_data(), and setcorner().

◆ next_lattice()

static void next_lattice ( int r[3],
const float pos[3],
const float size )
static

Definition at line 1060 of file mball_tessellate.cc.

References ceil(), int, and pos.

Referenced by find_first_points(), and prev_lattice().

◆ nextcwedge()

static int nextcwedge ( int edge,
int face )
static

return next clockwise edge from given edge around given face

Definition at line 706 of file mball_tessellate.cc.

References B, BF, BN, L, LB, LF, LN, LT, R, RB, RF, RN, RT, TF, and TN.

Referenced by makecubetable().

◆ object_has_zero_axis_matrix()

static bool object_has_zero_axis_matrix ( const Object * bob)
static

Definition at line 1161 of file mball_tessellate.cc.

References has_zero_axis_m4(), and Object::parent.

Referenced by init_meta().

◆ otherface()

static int otherface ( int edge,
int face )
static
Returns
the face adjoining edge that is not the given face

Definition at line 740 of file mball_tessellate.cc.

References leftface, and rightface.

Referenced by makecubetable().

◆ partition_mainb()

static uint partition_mainb ( MetaElem ** mainb,
uint start,
uint end,
uint s,
float div )
static

Partitions part of #process.mainb array [start, end) along axis s. Returns i, where centroids of elements in the [start, i) segment lie "on the right side" of div, and elements in the [i, end) segment lie "on the left"

Definition at line 166 of file mball_tessellate.cc.

References MetaElem::bb, and BoundBox::vec.

Referenced by build_bvh_spatial().

◆ polygonize()

static void polygonize ( PROCESS * process)
static

The main polygonization processing function. Allocates memory, makes cube-table, finds starting surface points and processes cubes on the stack until none left.

Definition at line 1134 of file mball_tessellate.cc.

References docube(), find_first_points(), HASHSIZE, makecubetable(), MEM_callocN, and process().

Referenced by BKE_mball_polygonize().

◆ prev_lattice()

static void prev_lattice ( int r[3],
const float pos[3],
const float size )
static

Definition at line 1066 of file mball_tessellate.cc.

References next_lattice(), and pos.

Referenced by find_first_points().

◆ setcenter()

static int setcenter ( PROCESS * process,
CENTERLIST * table[],
const int i,
const int j,
const int k )
static

Inserts cube at lattice i, j, k into hash table, marking it as "done"

Definition at line 854 of file mball_tessellate.cc.

References BLI_memarena_alloc(), HASH, CENTERLIST::i, CENTERLIST::j, CENTERLIST::k, l, BMLoop::next, CENTERLIST::next, and process().

Referenced by add_cube().

◆ setcorner()

static CORNER * setcorner ( PROCESS * process,
int i,
int j,
int k )
static

return corner with the given lattice location set (and cache) its function value

Definition at line 670 of file mball_tessellate.cc.

References BLI_memarena_alloc(), CORNER::co, float, HASH, CORNER::i, CORNER::j, CORNER::k, metaball(), CORNER::next, process(), and CORNER::value.

Referenced by add_cube(), and find_first_points().

◆ setedge()

static void setedge ( PROCESS * process,
int i1,
int j1,
int k1,
int i2,
int j2,
int k2,
int vid )
static

Sets vid of vertex lying on given edge.

Definition at line 881 of file mball_tessellate.cc.

References BLI_memarena_alloc(), HASH, EDGELIST::i1, EDGELIST::i2, EDGELIST::j1, EDGELIST::j2, EDGELIST::k1, EDGELIST::k2, EDGELIST::next, process(), and EDGELIST::vid.

Referenced by vertid().

◆ vertid()

static int vertid ( PROCESS * process,
const CORNER * c1,
const CORNER * c2 )
static
Returns
the id of vertex between two corners.

If it wasn't previously computed, does converge() and adds vertex to process.

Definition at line 969 of file mball_tessellate.cc.

References addtovertices(), converge(), getedge(), CORNER::i, int, CORNER::j, CORNER::k, process(), setedge(), v, and zero_v3().

Referenced by docube().

Variable Documentation

◆ corner1

int corner1[12]
static
Initial value:
= {
LBN,
LTN,
LBN,
LBF,
RBN,
RTN,
RBN,
RBF,
LBN,
LBF,
LTN,
LTF,
}
#define RTN
#define RBN
#define LTN
#define LTF
#define LBF
#define LBN
#define RBF

Definition at line 530 of file mball_tessellate.cc.

Referenced by docube(), makecubetable(), blender::geometry::p_rectangle_area(), TEST(), and TEST().

◆ corner2

int corner2[12]
static
Initial value:
= {
LBF,
LTF,
LTN,
LTF,
RBF,
RTF,
RTN,
RTF,
RBN,
RBF,
RTN,
RTF,
}
#define RTF

Definition at line 544 of file mball_tessellate.cc.

Referenced by docube(), makecubetable(), blender::geometry::p_rectangle_area(), TEST(), and TEST().

◆ cubetable

INTLISTS* cubetable[256]
static

Definition at line 526 of file mball_tessellate.cc.

Referenced by BKE_mball_cubeTable_free(), docube(), and makecubetable().

◆ faces

char faces[256]
static

Definition at line 527 of file mball_tessellate.cc.

Referenced by BKE_mesh_calc_loop_tangent_ex(), BKE_mesh_calc_loop_tangent_single_ex(), BKE_mesh_calc_relative_deform(), BKE_mesh_validate_arrays(), bm_mesh_calc_tessellation_with_partial__multi_threaded(), bm_mesh_calc_uv_islands(), BM_mesh_intersect(), BM_vert_collapse_faces(), bmo_dissolve_faces_exec(), blender::bke::pbvh::build_nodes_recursive_grids(), blender::bke::pbvh::build_nodes_recursive_mesh(), blender::ed::sculpt_paint::calc_front_face(), blender::bke::pbvh::calc_node_face_normals(), blender::bke::compare_meshes::compare_meshes(), blender::nodes::node_geo_input_mesh_face_area_cc::construct_face_area_varray(), blender::draw::pbvh::create_index_bmesh(), blender::nodes::node_geo_curve_fill_cc::do_cdt_with_mask(), do_multires_bake(), dynamicPaint_Modifier_apply(), ED_uvedit_selected_faces(), blender::draw::pbvh::extract_data_corner_bmesh(), blender::draw::pbvh::extract_data_face_bmesh(), blender::draw::pbvh::extract_data_vert_bmesh(), blender::nodes::node_geo_extrude_mesh_cc::extrude_mesh_face_regions(), blender::meshintersect::fill_input_from_string(), blender::draw::pbvh::fill_vbo_face_set_bmesh(), blender::draw::pbvh::fill_vbo_mask_bmesh(), blender::draw::pbvh::fill_vbo_normal_bmesh(), blender::draw::pbvh::fill_vbo_position_bmesh(), blender::draw::pbvh::fill_vbos_mesh(), Freestyle::WFillGrid::fillGrid(), Freestyle::WSFillGrid::fillGrid(), blender::io::obj::fixup_invalid_face(), blender::nodes::node_geo_input_mesh_edge_angle_cc::AngleFieldInput::get_varray_for_context(), blender::nodes::node_geo_input_mesh_edge_angle_cc::SignedAngleFieldInput::get_varray_for_context(), blender::nodes::node_geo_input_mesh_face_is_planar_cc::PlanarFieldInput::get_varray_for_context(), blender::meshintersect::graph_draw(), knife_find_line_hits(), M_Geometry_delaunay_2d_cdt(), modify_mesh(), modify_mesh(), multiresModifier_disp_run(), normalEditModifier_do(), blender::bke::mesh::normals_calc_corners(), blender::ed::sculpt_paint::hide::partialvis_update_bmesh_faces(), blender::io::usd::read_generic_mesh_primvar(), blender::ed::sculpt_paint::undo::restore_face_set_from_undo_step(), blender::ed::sculpt_paint::undo::restore_list(), btConvexHullInternal::shrink(), ss_sync_ccg_from_derivedmesh(), ss_sync_from_uv(), and blender::geometry::weld_mesh_context_create().

◆ leftface

int leftface[12]
static
Initial value:
= {
B,
L,
L,
F,
R,
T,
N,
R,
N,
B,
T,
F,
}
#define N
#define T
#define B
#define F
#define R
#define L

Definition at line 558 of file mball_tessellate.cc.

Referenced by makecubetable(), and otherface().

◆ rightface

int rightface[12]
static
Initial value:
= {
L,
T,
N,
L,
B,
R,
R,
F,
B,
F,
N,
T,
}

Definition at line 573 of file mball_tessellate.cc.

Referenced by makecubetable(), and otherface().