Blender V2.61 - r43446
Functions

BME_tools.c File Reference

#include <math.h>
#include "MEM_guardedalloc.h"
#include "DNA_meshdata_types.h"
#include "DNA_object_types.h"
#include "BLI_math.h"
#include "BLI_utildefines.h"
#include "BKE_bmesh.h"

Go to the source code of this file.

Functions

BME_TransData_HeadBME_init_transdata (int bufsize)
void BME_free_transdata (BME_TransData_Head *td)
BME_TransDataBME_assign_transdata (BME_TransData_Head *td, BME_Mesh *bm, BME_Vert *v, float *co, float *org, float *vec, float *loc, float factor, float weight, float maxfactor, float *max)
BME_TransDataBME_get_transdata (BME_TransData_Head *td, BME_Vert *v)
float * BME_new_transdata_float (BME_TransData_Head *td)
static int BME_is_nonmanifold_vert (BME_Mesh *UNUSED(bm), BME_Vert *v)
static BME_PolyBME_JFKE_safe (BME_Mesh *bm, BME_Poly *f1, BME_Poly *f2, BME_Edge *e)
static BME_PolyBME_split_face (BME_Mesh *bm, BME_Poly *f, BME_Vert *v1, BME_Vert *v2, BME_Loop **nl, BME_Edge *example)
static void BME_data_facevert_edgesplit (BME_Mesh *bm, BME_Vert *v1, BME_Vert *UNUSED(v2), BME_Vert *v, BME_Edge *e1, float fac)
static BME_VertBME_split_edge (BME_Mesh *bm, BME_Vert *v, BME_Edge *e, BME_Edge **ne, float percent)
static void BME_collapse_vert (BME_Mesh *bm, BME_Edge *ke, BME_Vert *kv, float fac)
static int BME_bevel_is_split_vert (BME_Loop *l)
static int BME_bevel_get_vec (float *vec, BME_Vert *v1, BME_Vert *v2, BME_TransData_Head *td)
static float BME_bevel_project_vec (float *vec1, float *vec2, float *up_vec, int is_forward, BME_TransData_Head *UNUSED(td))
static BME_VertBME_bevel_split_edge (BME_Mesh *bm, BME_Vert *v, BME_Vert *v1, BME_Loop *l, float *up_vec, float value, BME_TransData_Head *td)
static float BME_bevel_set_max (BME_Vert *v1, BME_Vert *v2, float value, BME_TransData_Head *td)
static BME_VertBME_bevel_wire (BME_Mesh *bm, BME_Vert *v, float value, int res, int UNUSED(options), BME_TransData_Head *td)
static BME_LoopBME_bevel_edge (BME_Mesh *bm, BME_Loop *l, float value, int UNUSED(options), float *up_vec, BME_TransData_Head *td)
static BME_LoopBME_bevel_vert (BME_Mesh *bm, BME_Loop *l, float value, int UNUSED(options), float *up_vec, BME_TransData_Head *td)
static BME_PolyBME_bevel_poly (BME_Mesh *bm, BME_Poly *f, float value, int options, BME_TransData_Head *td)
static void BME_bevel_add_vweight (BME_TransData_Head *td, BME_Mesh *bm, BME_Vert *v, float weight, float factor, int options)
static float BME_bevel_get_angle (BME_Mesh *UNUSED(bm), BME_Edge *e, BME_Vert *v)
static int BME_face_sharededges (BME_Poly *f1, BME_Poly *f2)
static BME_MeshBME_bevel_initialize (BME_Mesh *bm, int options, int UNUSED(defgrp_index), float angle, BME_TransData_Head *td)
static BME_MeshBME_bevel_reinitialize (BME_Mesh *bm)
static void bmesh_dissolve_disk (BME_Mesh *bm, BME_Vert *v)
static BME_MeshBME_bevel_mesh (BME_Mesh *bm, float value, int res, int options, int UNUSED(defgrp_index), BME_TransData_Head *td)
static BME_MeshBME_tesselate (BME_Mesh *bm)
BME_MeshBME_bevel (BME_Mesh *bm, float value, int res, int options, int defgrp_index, float angle, BME_TransData_Head **rtd)

Detailed Description

Definition in file BME_tools.c.


Function Documentation

BME_TransData* BME_assign_transdata ( BME_TransData_Head td,
BME_Mesh bm,
BME_Vert v,
float *  co,
float *  org,
float *  vec,
float *  loc,
float  factor,
float  weight,
float  maxfactor,
float *  max 
)
BME_Mesh* BME_bevel ( BME_Mesh bm,
float  value,
int  res,
int  options,
int  defgrp_index,
float  angle,
BME_TransData_Head **  rtd 
) [read]
static void BME_bevel_add_vweight ( BME_TransData_Head td,
BME_Mesh bm,
BME_Vert v,
float  weight,
float  factor,
int  options 
) [static]
static BME_Loop* BME_bevel_edge ( BME_Mesh bm,
BME_Loop l,
float  value,
int   UNUSEDoptions,
float *  up_vec,
BME_TransData_Head td 
) [static]
static float BME_bevel_get_angle ( BME_Mesh UNUSEDbm,
BME_Edge e,
BME_Vert v 
) [static]
static int BME_bevel_get_vec ( float *  vec,
BME_Vert v1,
BME_Vert v2,
BME_TransData_Head td 
) [static]
static BME_Mesh* BME_bevel_initialize ( BME_Mesh bm,
int  options,
int   UNUSEDdefgrp_index,
float  angle,
BME_TransData_Head td 
) [static]
static int BME_bevel_is_split_vert ( BME_Loop l) [static]
static BME_Mesh* BME_bevel_mesh ( BME_Mesh bm,
float  value,
int  res,
int  options,
int   UNUSEDdefgrp_index,
BME_TransData_Head td 
) [static]
static BME_Poly* BME_bevel_poly ( BME_Mesh bm,
BME_Poly f,
float  value,
int  options,
BME_TransData_Head td 
) [static]

BME_bevel_poly

Polygon inset tool:

Insets a polygon/face based on the tflag1's of its vertices and edges. Used by the bevel tool only, for now. The parameter "value" is the distance to inset (should be negative). The parameter "options" is not currently used.

Returns - A BME_Poly pointer to the resulting inner face.

Definition at line 764 of file BME_tools.c.

References add_v3_v3(), BME_BEVEL_BEVEL, BME_bevel_edge(), BME_bevel_get_vec(), BME_BEVEL_ORIG, BME_bevel_vert(), BME_get_transdata(), copy_v3_v3(), cross_v3_v3v3(), dot_v3v3(), BME_Loop::e, BME_Loop::f, BME_TransData::factor, i, len(), BME_Poly::len, len_v3(), BME_TransData::loc, BME_Poly::loopbase, max, BME_TransData::max, mul_v3_fl(), BME_Loop::next, next, normalize_v3(), NULL, BME_Loop::prev, project_v3_v3v3(), BME_Edge::tflag1, BME_Vert::tflag1, BME_Loop::v, and BME_TransData::vec.

Referenced by BME_bevel_mesh().

static float BME_bevel_project_vec ( float *  vec1,
float *  vec2,
float *  up_vec,
int  is_forward,
BME_TransData_Head UNUSEDtd 
) [static]

Definition at line 378 of file BME_tools.c.

References cross_v3_v3v3(), dot_v3v3(), BME_Loop::f, fabsf, and normalize_v3().

Referenced by BME_bevel_split_edge().

static BME_Mesh* BME_bevel_reinitialize ( BME_Mesh bm) [static]
static float BME_bevel_set_max ( BME_Vert v1,
BME_Vert v2,
float  value,
BME_TransData_Head td 
) [static]
static BME_Vert* BME_bevel_split_edge ( BME_Mesh bm,
BME_Vert v,
BME_Vert v1,
BME_Loop l,
float *  up_vec,
float  value,
BME_TransData_Head td 
) [static]
static BME_Loop* BME_bevel_vert ( BME_Mesh bm,
BME_Loop l,
float  value,
int   UNUSEDoptions,
float *  up_vec,
BME_TransData_Head td 
) [static]
static BME_Vert* BME_bevel_wire ( BME_Mesh bm,
BME_Vert v,
float  value,
int  res,
int   UNUSEDoptions,
BME_TransData_Head td 
) [static]
static void BME_collapse_vert ( BME_Mesh bm,
BME_Edge ke,
BME_Vert kv,
float  fac 
) [static]
static void BME_data_facevert_edgesplit ( BME_Mesh bm,
BME_Vert v1,
BME_Vert UNUSEDv2,
BME_Vert v,
BME_Edge e1,
float  fac 
) [static]
static int BME_face_sharededges ( BME_Poly f1,
BME_Poly f2 
) [static]

Definition at line 920 of file BME_tools.c.

References BME_radial_find_face(), BME_Loop::e, BME_Poly::loopbase, and BME_Loop::next.

Referenced by BME_bevel_initialize().

void BME_free_transdata ( BME_TransData_Head td)
BME_TransData* BME_get_transdata ( BME_TransData_Head td,
BME_Vert v 
) [read]
BME_TransData_Head* BME_init_transdata ( int  bufsize)
static int BME_is_nonmanifold_vert ( BME_Mesh UNUSEDbm,
BME_Vert v 
) [static]
static BME_Poly* BME_JFKE_safe ( BME_Mesh bm,
BME_Poly f1,
BME_Poly f2,
BME_Edge e 
) [static]
float* BME_new_transdata_float ( BME_TransData_Head td)

Definition at line 124 of file BME_tools.c.

References BLI_memarena_alloc(), and BME_TransData_Head::ma.

Referenced by BME_bevel_split_edge().

static BME_Vert* BME_split_edge ( BME_Mesh bm,
BME_Vert v,
BME_Edge e,
BME_Edge **  ne,
float  percent 
) [static]
static BME_Poly* BME_split_face ( BME_Mesh bm,
BME_Poly f,
BME_Vert v1,
BME_Vert v2,
BME_Loop **  nl,
BME_Edge example 
) [static]
static BME_Mesh* BME_tesselate ( BME_Mesh bm) [static]
static void bmesh_dissolve_disk ( BME_Mesh bm,
BME_Vert v 
) [static]

BME_bevel_mesh

Mesh beveling tool:

Bevels an entire mesh. It currently uses the tflag1's of its vertices and edges to track topological changes. The parameter "value" is the distance to inset (should be negative). The parameter "options" is not currently used.

Returns - A BME_Mesh pointer to the BMesh passed as a parameter.

Definition at line 1160 of file BME_tools.c.

References BME_collapse_vert(), BME_cycle_length(), BME_disk_nextedge(), BME_JFKE_safe(), BME_CycleNode::data, credits_svn_gen::e, BME_Vert::edge, BME_Loop::f, len(), BME_Edge::loop, BME_CycleNode::next, NULL, and BME_Loop::radial.

Referenced by BME_bevel_mesh().