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_Head * BME_init_transdata (int bufsize)
void BME_free_transdata (BME_TransData_Head *td)
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_TransData * BME_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_Poly * BME_JFKE_safe (BME_Mesh *bm, BME_Poly *f1, BME_Poly *f2, BME_Edge *e)
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 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_Vert * BME_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_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 float BME_bevel_set_max (BME_Vert *v1, BME_Vert *v2, float value, BME_TransData_Head *td)
static BME_Vert * BME_bevel_wire (BME_Mesh *bm, BME_Vert *v, float value, int res, int UNUSED(options), BME_TransData_Head *td)
static BME_Loop * BME_bevel_edge (BME_Mesh *bm, BME_Loop *l, float value, int UNUSED(options), float *up_vec, BME_TransData_Head *td)
static BME_Loop * BME_bevel_vert (BME_Mesh *bm, BME_Loop *l, float value, int UNUSED(options), float *up_vec, BME_TransData_Head *td)
static BME_Poly * BME_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_Mesh * BME_bevel_initialize (BME_Mesh *bm, int options, int UNUSED(defgrp_index), float angle, BME_TransData_Head *td)
static BME_Mesh * BME_bevel_reinitialize (BME_Mesh *bm)
static void bmesh_dissolve_disk (BME_Mesh *bm, BME_Vert *v)
static BME_Mesh * BME_bevel_mesh (BME_Mesh *bm, float value, int res, int options, int UNUSED(defgrp_index), BME_TransData_Head *td)
static BME_Mesh * BME_tesselate (BME_Mesh *bm)
BME_Mesh * BME_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().