Blender
V2.93
source
blender
blenkernel
intern
multires_unsubdivide.h
Go to the documentation of this file.
1
/*
2
* This program is free software; you can redistribute it and/or
3
* modify it under the terms of the GNU General Public License
4
* as published by the Free Software Foundation; either version 2
5
* of the License, or (at your option) any later version.
6
*
7
* This program is distributed in the hope that it will be useful,
8
* but WITHOUT ANY WARRANTY; without even the implied warranty of
9
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10
* GNU General Public License for more details.
11
*
12
* You should have received a copy of the GNU General Public License
13
* along with this program; if not, write to the Free Software Foundation,
14
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
15
*
16
* The Original Code is Copyright (C) 2020 Blender Foundation.
17
* All rights reserved.
18
*/
19
24
#pragma once
25
26
#include "
BLI_sys_types.h
"
27
28
struct
BMesh
;
29
struct
Mesh
;
30
struct
MultiresModifierData
;
31
32
typedef
struct
MultiresUnsubdivideGrid
{
33
/* For sanity checks. */
34
int
grid_index
;
35
int
grid_size
;
36
38
float
(*
grid_co
)[3];
39
40
}
MultiresUnsubdivideGrid
;
41
42
typedef
struct
MultiresUnsubdivideContext
{
43
/* Input Mesh to un-subdivide. */
44
struct
Mesh
*
original_mesh
;
45
struct
MDisps
*
original_mdisp
;
46
48
int
num_original_levels
;
49
51
struct
Mesh
*
base_mesh
;
52
54
int
max_new_levels
;
55
57
int
num_new_levels
;
58
63
int
num_total_levels
;
64
66
int
num_grids
;
67
struct
MultiresUnsubdivideGrid
*
base_mesh_grids
;
68
69
/* Private data. */
70
struct
BMesh
*
bm_original_mesh
;
71
int
*
loop_to_face_map
;
72
int
*
base_to_orig_vmap
;
73
}
MultiresUnsubdivideContext
;
74
75
/* --------------------------------------------------------------------
76
* Construct/destruct reshape context.
77
*/
78
79
void
multires_unsubdivide_context_init
(
MultiresUnsubdivideContext
*
context
,
80
struct
Mesh
*original_mesh,
81
struct
MultiresModifierData
*mmd);
82
void
multires_unsubdivide_context_free
(
MultiresUnsubdivideContext
*
context
);
83
84
/* --------------------------------------------------------------------
85
* Rebuild Lower Subdivisions.
86
*/
87
88
/* Rebuilds all subdivision to the level 0 base mesh. */
89
bool
multires_unsubdivide_to_basemesh
(
MultiresUnsubdivideContext
*
context
);
float
typedef float(TangentPoint)[2]
BLI_sys_types.h
MultiresUnsubdivideContext
struct MultiresUnsubdivideContext MultiresUnsubdivideContext
multires_unsubdivide_to_basemesh
bool multires_unsubdivide_to_basemesh(MultiresUnsubdivideContext *context)
Definition:
multires_unsubdivide.c:1125
multires_unsubdivide_context_init
void multires_unsubdivide_context_init(MultiresUnsubdivideContext *context, struct Mesh *original_mesh, struct MultiresModifierData *mmd)
Definition:
multires_unsubdivide.c:1115
MultiresUnsubdivideGrid
struct MultiresUnsubdivideGrid MultiresUnsubdivideGrid
multires_unsubdivide_context_free
void multires_unsubdivide_context_free(MultiresUnsubdivideContext *context)
Definition:
multires_unsubdivide.c:1169
context
struct SELECTID_Context context
Definition:
select_engine.c:47
BMesh
Definition:
bmesh_class.h:296
MDisps
Definition:
DNA_meshdata_types.h:358
Mesh
Definition:
DNA_mesh_types.h:132
MultiresModifierData
Definition:
DNA_modifier_types.h:1075
MultiresUnsubdivideContext
Definition:
multires_unsubdivide.h:42
MultiresUnsubdivideContext::base_mesh_grids
struct MultiresUnsubdivideGrid * base_mesh_grids
Definition:
multires_unsubdivide.h:67
MultiresUnsubdivideContext::base_to_orig_vmap
int * base_to_orig_vmap
Definition:
multires_unsubdivide.h:72
MultiresUnsubdivideContext::max_new_levels
int max_new_levels
Definition:
multires_unsubdivide.h:54
MultiresUnsubdivideContext::num_grids
int num_grids
Definition:
multires_unsubdivide.h:66
MultiresUnsubdivideContext::loop_to_face_map
int * loop_to_face_map
Definition:
multires_unsubdivide.h:71
MultiresUnsubdivideContext::num_total_levels
int num_total_levels
Definition:
multires_unsubdivide.h:63
MultiresUnsubdivideContext::base_mesh
struct Mesh * base_mesh
Definition:
multires_unsubdivide.h:51
MultiresUnsubdivideContext::bm_original_mesh
struct BMesh * bm_original_mesh
Definition:
multires_unsubdivide.h:70
MultiresUnsubdivideContext::num_original_levels
int num_original_levels
Definition:
multires_unsubdivide.h:48
MultiresUnsubdivideContext::original_mdisp
struct MDisps * original_mdisp
Definition:
multires_unsubdivide.h:45
MultiresUnsubdivideContext::original_mesh
struct Mesh * original_mesh
Definition:
multires_unsubdivide.h:44
MultiresUnsubdivideContext::num_new_levels
int num_new_levels
Definition:
multires_unsubdivide.h:57
MultiresUnsubdivideGrid
Definition:
multires_unsubdivide.h:32
MultiresUnsubdivideGrid::grid_index
int grid_index
Definition:
multires_unsubdivide.h:34
MultiresUnsubdivideGrid::grid_size
int grid_size
Definition:
multires_unsubdivide.h:35
MultiresUnsubdivideGrid::grid_co
float(* grid_co)[3]
Definition:
multires_unsubdivide.h:38
Generated on Tue Jan 31 2023 14:37:24 for Blender by
doxygen
1.9.1