Blender  V3.3
meshlaplacian.h
Go to the documentation of this file.
1 /* SPDX-License-Identifier: GPL-2.0-or-later */
2 
8 #pragma once
9 
10 //#define RIGID_DEFORM
11 
12 struct Mesh;
13 struct Object;
14 struct bDeformGroup;
15 
16 #ifdef RIGID_DEFORM
17 struct EditMesh;
18 #endif
19 
20 /* Laplacian System */
21 
22 struct LaplacianSystem;
23 typedef struct LaplacianSystem LaplacianSystem;
24 
25 void laplacian_add_vertex(LaplacianSystem *sys, float *co, int pinned);
26 void laplacian_add_triangle(LaplacianSystem *sys, int v1, int v2, int v3);
27 
28 void laplacian_begin_solve(LaplacianSystem *sys, int index);
29 void laplacian_add_right_hand_side(LaplacianSystem *sys, int v, float value);
32 
33 /* Heat Weighting */
34 
35 void heat_bone_weighting(struct Object *ob,
36  struct Mesh *me,
37  float (*verts)[3],
38  int numbones,
39  struct bDeformGroup **dgrouplist,
40  struct bDeformGroup **dgroupflip,
41  float (*root)[3],
42  float (*tip)[3],
43  const int *selected,
44  const char **error_str);
45 
46 #ifdef RIGID_DEFORM
47 /* As-Rigid-As-Possible Deformation */
48 
49 void rigid_deform_begin(struct EditMesh *em);
50 void rigid_deform_iteration(void);
51 void rigid_deform_end(int cancel);
52 #endif
53 
54 /* Harmonic Coordinates */
55 
56 /* ED_mesh_deform_bind_callback(...) defined in ED_armature.h */
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint GLsizei GLsizei GLenum type _GL_VOID_RET _GL_VOID GLsizei GLenum GLenum const void *pixels _GL_VOID_RET _GL_VOID const void *pointer _GL_VOID_RET _GL_VOID GLdouble v _GL_VOID_RET _GL_VOID GLfloat v _GL_VOID_RET _GL_VOID GLint GLint i2 _GL_VOID_RET _GL_VOID GLint j _GL_VOID_RET _GL_VOID GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble GLdouble GLdouble zFar _GL_VOID_RET _GL_UINT GLdouble *equation _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLenum GLfloat *v _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLfloat *values _GL_VOID_RET _GL_VOID GLushort *values _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLenum GLdouble *params _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_BOOL GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLenum GLfloat param _GL_VOID_RET _GL_VOID GLenum GLint param _GL_VOID_RET _GL_VOID GLushort pattern _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint const GLdouble *points _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint GLdouble v1
ATTR_WARN_UNUSED_RESULT const BMVert * v2
ATTR_WARN_UNUSED_RESULT const BMVert * v
static float verts[][3]
float laplacian_system_get_solution(LaplacianSystem *sys, int v)
void laplacian_add_right_hand_side(LaplacianSystem *sys, int v, float value)
int laplacian_system_solve(LaplacianSystem *sys)
void heat_bone_weighting(struct Object *ob, struct Mesh *me, float(*verts)[3], int numbones, struct bDeformGroup **dgrouplist, struct bDeformGroup **dgroupflip, float(*root)[3], float(*tip)[3], const int *selected, const char **error_str)
void laplacian_add_triangle(LaplacianSystem *sys, int v1, int v2, int v3)
void laplacian_add_vertex(LaplacianSystem *sys, float *co, int pinned)
void laplacian_begin_solve(LaplacianSystem *sys, int index)