Last active
August 29, 2015 14:26
-
-
Save thebusytypist/a2f950fc26ee36957cdd to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
From 011dec2b84f5c9b61a4b5ef8bddf1ed0b6e891f2 Mon Sep 17 00:00:00 2001 | |
From: thebusytypist <ounanding@gmail.com> | |
Date: Mon, 3 Aug 2015 12:00:05 +0800 | |
Subject: [PATCH 1/6] Add skeleton code for modifier tetrahedron; add | |
definition of TetrahedronModifierData; include tetrahedron modifier in build | |
system. | |
--- | |
source/blender/makesdna/DNA_modifier_types.h | 5 ++ | |
source/blender/modifiers/CMakeLists.txt | 1 + | |
source/blender/modifiers/intern/MOD_tetrahedron.c | 81 +++++++++++++++++++++++ | |
3 files changed, 87 insertions(+) | |
create mode 100644 source/blender/modifiers/intern/MOD_tetrahedron.c | |
diff --git a/source/blender/makesdna/DNA_modifier_types.h b/source/blender/makesdna/DNA_modifier_types.h | |
index 1fc66b9..75ec37e 100644 | |
--- a/source/blender/makesdna/DNA_modifier_types.h | |
+++ b/source/blender/makesdna/DNA_modifier_types.h | |
@@ -1241,6 +1241,11 @@ enum { | |
MOD_SKIN_SMOOTH_SHADING = 1, | |
}; | |
+/* Tetrahedron modifier */ | |
+typedef struct TetrahedronModifierData { | |
+ ModifierData modifier; | |
+} TetrahedronModifierData; | |
+ | |
/* Triangulate modifier */ | |
typedef struct TriangulateModifierData { | |
ModifierData modifier; | |
diff --git a/source/blender/modifiers/CMakeLists.txt b/source/blender/modifiers/CMakeLists.txt | |
index fde0c77..5b543fd 100644 | |
--- a/source/blender/modifiers/CMakeLists.txt | |
+++ b/source/blender/modifiers/CMakeLists.txt | |
@@ -91,6 +91,7 @@ set(SRC | |
intern/MOD_solidify.c | |
intern/MOD_subsurf.c | |
intern/MOD_surface.c | |
+ intern/MOD_tetrahedron.c | |
intern/MOD_triangulate.c | |
intern/MOD_util.c | |
intern/MOD_uvwarp.c | |
diff --git a/source/blender/modifiers/intern/MOD_tetrahedron.c b/source/blender/modifiers/intern/MOD_tetrahedron.c | |
new file mode 100644 | |
index 0000000..76b3768 | |
--- /dev/null | |
+++ b/source/blender/modifiers/intern/MOD_tetrahedron.c | |
@@ -0,0 +1,81 @@ | |
+#include "MEM_guardedalloc.h" | |
+ | |
+#include "BLI_math.h" | |
+#include "BLI_utildefines.h" | |
+ | |
+#include "DNA_curve_types.h" | |
+#include "DNA_meshdata_types.h" | |
+#include "DNA_object_types.h" | |
+#include "DNA_scene_types.h" | |
+ | |
+#include "BKE_cdderivedmesh.h" | |
+#include "BKE_displist.h" | |
+#include "BKE_curve.h" | |
+#include "BKE_modifier.h" | |
+ | |
+#include "MOD_util.h" | |
+ | |
+#include "depsgraph_private.h" | |
+ | |
+static void initData(ModifierData *md) | |
+{ | |
+} | |
+ | |
+static void copyData(ModifierData *md, ModifierData *target) | |
+{ | |
+ modifier_copyData_generic(md, target); | |
+} | |
+ | |
+static void foreachObjectLink( | |
+ ModifierData *md, Object *ob, | |
+ void (*walk)(void *userData, Object *ob, Object **obpoin), | |
+ void *userData) | |
+{ | |
+} | |
+ | |
+static void updateDepsgraph(ModifierData *md, | |
+ struct Main *UNUSED(bmain), | |
+ struct Scene *scene, | |
+ Object *UNUSED(ob), | |
+ struct DepsNodeHandle *node) | |
+{ | |
+} | |
+ | |
+static DerivedMesh *applyModifier(ModifierData *md, Object *ob, | |
+ DerivedMesh *dm, | |
+ ModifierApplyFlag flag) | |
+{ | |
+ return NULL; | |
+} | |
+ | |
+ | |
+ModifierTypeInfo modifierType_Tetrahedron = { | |
+ /* name */ "Tetrahedron", | |
+ /* structName */ "TetrahedronModifierData", | |
+ /* structSize */ sizeof(TetrahedronModifierData), | |
+ /* type */ eModifierTypeType_Constructive, | |
+ /* flags */ eModifierTypeFlag_AcceptsMesh | | |
+ eModifierTypeFlag_SupportsMapping | | |
+ eModifierTypeFlag_SupportsEditmode | | |
+ eModifierTypeFlag_EnableInEditmode | | |
+ eModifierTypeFlag_AcceptsCVs, | |
+ | |
+ /* copyData */ copyData, | |
+ /* deformVerts */ NULL, | |
+ /* deformMatrices */ NULL, | |
+ /* deformVertsEM */ NULL, | |
+ /* deformMatricesEM */ NULL, | |
+ /* applyModifier */ applyModifier, | |
+ /* applyModifierEM */ NULL, | |
+ /* initData */ initData, | |
+ /* requiredDataMask */ NULL, | |
+ /* freeData */ NULL, | |
+ /* isDisabled */ NULL, | |
+ /* updateDepgraph */ NULL, | |
+ /* updateDepsgraph */ updateDepsgraph, | |
+ /* dependsOnTime */ NULL, | |
+ /* dependsOnNormals */ NULL, | |
+ /* foreachObjectLink */ foreachObjectLink, | |
+ /* foreachIDLink */ NULL, | |
+ /* foreachTexLink */ NULL, | |
+}; | |
-- | |
1.9.5.msysgit.1 | |
From af11b31ecf7e10c1fd543ceb3d562c05fc6c1e4a Mon Sep 17 00:00:00 2001 | |
From: thebusytypist <ounanding@gmail.com> | |
Date: Mon, 3 Aug 2015 12:07:05 +0800 | |
Subject: [PATCH 2/6] Register the tetrahedron modifier to the system. | |
--- | |
source/blender/makesdna/DNA_modifier_types.h | 1 + | |
source/blender/modifiers/MOD_modifiertypes.h | 1 + | |
source/blender/modifiers/intern/MOD_util.c | 1 + | |
3 files changed, 3 insertions(+) | |
diff --git a/source/blender/makesdna/DNA_modifier_types.h b/source/blender/makesdna/DNA_modifier_types.h | |
index 75ec37e..252758e 100644 | |
--- a/source/blender/makesdna/DNA_modifier_types.h | |
+++ b/source/blender/makesdna/DNA_modifier_types.h | |
@@ -85,6 +85,7 @@ typedef enum ModifierType { | |
eModifierType_DataTransfer = 49, | |
eModifierType_NormalEdit = 50, | |
eModifierType_CorrectiveSmooth = 51, | |
+ eModifierType_Tetrahedron = 52, | |
NUM_MODIFIER_TYPES | |
} ModifierType; | |
diff --git a/source/blender/modifiers/MOD_modifiertypes.h b/source/blender/modifiers/MOD_modifiertypes.h | |
index a5d9675..10b6df2 100644 | |
--- a/source/blender/modifiers/MOD_modifiertypes.h | |
+++ b/source/blender/modifiers/MOD_modifiertypes.h | |
@@ -76,6 +76,7 @@ extern ModifierTypeInfo modifierType_DynamicPaint; | |
extern ModifierTypeInfo modifierType_Remesh; | |
extern ModifierTypeInfo modifierType_Skin; | |
extern ModifierTypeInfo modifierType_LaplacianSmooth; | |
+extern ModifierTypeInfo modifierType_Tetrahedron; | |
extern ModifierTypeInfo modifierType_Triangulate; | |
extern ModifierTypeInfo modifierType_UVWarp; | |
extern ModifierTypeInfo modifierType_MeshCache; | |
diff --git a/source/blender/modifiers/intern/MOD_util.c b/source/blender/modifiers/intern/MOD_util.c | |
index be6f7af..e4b930e 100644 | |
--- a/source/blender/modifiers/intern/MOD_util.c | |
+++ b/source/blender/modifiers/intern/MOD_util.c | |
@@ -307,5 +307,6 @@ void modifier_type_init(ModifierTypeInfo *types[]) | |
INIT_TYPE(DataTransfer); | |
INIT_TYPE(NormalEdit); | |
INIT_TYPE(CorrectiveSmooth); | |
+ INIT_TYPE(Tetrahedron); | |
#undef INIT_TYPE | |
} | |
-- | |
1.9.5.msysgit.1 | |
From 5cce373ea31875c06238e1f47b3fcd752579966e Mon Sep 17 00:00:00 2001 | |
From: thebusytypist <ounanding@gmail.com> | |
Date: Mon, 3 Aug 2015 15:25:20 +0800 | |
Subject: [PATCH 3/6] Expose tetrahedron modifier to UI through RNA interface. | |
--- | |
release/scripts/addons | 2 +- | |
release/scripts/addons_contrib | 2 +- | |
release/scripts/startup/bl_ui/properties_data_modifier.py | 3 +++ | |
source/blender/editors/space_outliner/outliner_draw.c | 2 ++ | |
source/blender/makesrna/RNA_access.h | 1 + | |
source/blender/makesrna/intern/rna_modifier.c | 15 +++++++++++++++ | |
6 files changed, 23 insertions(+), 2 deletions(-) | |
diff --git a/release/scripts/addons b/release/scripts/addons | |
index 45b1e42..0c5b35f 160000 | |
--- a/release/scripts/addons | |
+++ b/release/scripts/addons | |
@@ -1 +1 @@ | |
-Subproject commit 45b1e42fffd550b4250f953a1933892c913b7182 | |
+Subproject commit 0c5b35fda451b6607d348abd0cf199217844004f | |
diff --git a/release/scripts/addons_contrib b/release/scripts/addons_contrib | |
index 5b36ccb..a71b3a5 160000 | |
--- a/release/scripts/addons_contrib | |
+++ b/release/scripts/addons_contrib | |
@@ -1 +1 @@ | |
-Subproject commit 5b36ccbe7d5f830b541540b7befad3b93af51ee8 | |
+Subproject commit a71b3a51be57cc1f76e217e267d117a25d98147a | |
diff --git a/release/scripts/startup/bl_ui/properties_data_modifier.py b/release/scripts/startup/bl_ui/properties_data_modifier.py | |
index 381c9ad..16d8409 100644 | |
--- a/release/scripts/startup/bl_ui/properties_data_modifier.py | |
+++ b/release/scripts/startup/bl_ui/properties_data_modifier.py | |
@@ -1172,6 +1172,9 @@ class DATA_PT_modifiers(ModifierButtonsPanel, Panel): | |
col.prop(md, "use_y_symmetry") | |
col.prop(md, "use_z_symmetry") | |
+ def TETRAHEDRON(self, layout, ob, md): | |
+ layout.label(text="Comming soon.") | |
+ | |
def TRIANGULATE(self, layout, ob, md): | |
row = layout.row() | |
diff --git a/source/blender/editors/space_outliner/outliner_draw.c b/source/blender/editors/space_outliner/outliner_draw.c | |
index 420b73c..548899b 100644 | |
--- a/source/blender/editors/space_outliner/outliner_draw.c | |
+++ b/source/blender/editors/space_outliner/outliner_draw.c | |
@@ -1160,6 +1160,8 @@ static void tselem_draw_icon(uiBlock *block, int xmax, float x, float y, TreeSto | |
UI_icon_draw(x, y, ICON_MOD_SKIN); break; | |
case eModifierType_Triangulate: | |
UI_icon_draw(x, y, ICON_MOD_TRIANGULATE); break; | |
+ case eModifierType_Tetrahedron: | |
+ UI_icon_draw(x, y, ICON_MOD_BUILD); break; | |
case eModifierType_MeshCache: | |
UI_icon_draw(x, y, ICON_MOD_MESHDEFORM); break; /* XXX, needs own icon */ | |
case eModifierType_Wireframe: | |
diff --git a/source/blender/makesrna/RNA_access.h b/source/blender/makesrna/RNA_access.h | |
index 965d1d9..0d5c6b6 100644 | |
--- a/source/blender/makesrna/RNA_access.h | |
+++ b/source/blender/makesrna/RNA_access.h | |
@@ -577,6 +577,7 @@ extern StructRNA RNA_SubsurfModifier; | |
extern StructRNA RNA_SunLamp; | |
extern StructRNA RNA_SurfaceCurve; | |
extern StructRNA RNA_SurfaceModifier; | |
+extern StructRNA RNA_TetrahedronModifier; | |
extern StructRNA RNA_TexMapping; | |
extern StructRNA RNA_Text; | |
extern StructRNA RNA_TextBox; | |
diff --git a/source/blender/makesrna/intern/rna_modifier.c b/source/blender/makesrna/intern/rna_modifier.c | |
index 087db2b..5df7214 100644 | |
--- a/source/blender/makesrna/intern/rna_modifier.c | |
+++ b/source/blender/makesrna/intern/rna_modifier.c | |
@@ -87,6 +87,7 @@ EnumPropertyItem modifier_type_items[] = { | |
{eModifierType_Skin, "SKIN", ICON_MOD_SKIN, "Skin", ""}, | |
{eModifierType_Solidify, "SOLIDIFY", ICON_MOD_SOLIDIFY, "Solidify", ""}, | |
{eModifierType_Subsurf, "SUBSURF", ICON_MOD_SUBSURF, "Subdivision Surface", ""}, | |
+ {eModifierType_Tetrahedron, "TETRAHEDRON", ICON_MOD_BUILD, "Tetrahedron", ""}, | |
{eModifierType_Triangulate, "TRIANGULATE", ICON_MOD_TRIANGULATE, "Triangulate", ""}, | |
{eModifierType_Wireframe, "WIREFRAME", ICON_MOD_WIREFRAME, "Wireframe", "Generate a wireframe on the edges of a mesh"}, | |
{0, "", 0, N_("Deform"), ""}, | |
@@ -364,6 +365,8 @@ static StructRNA *rna_Modifier_refine(struct PointerRNA *ptr) | |
return &RNA_SkinModifier; | |
case eModifierType_LaplacianSmooth: | |
return &RNA_LaplacianSmoothModifier; | |
+ case eModifierType_Tetrahedron: | |
+ return &RNA_TetrahedronModifier; | |
case eModifierType_Triangulate: | |
return &RNA_TriangulateModifier; | |
case eModifierType_UVWarp: | |
@@ -4560,6 +4563,17 @@ static void rna_def_modifier_normaledit(BlenderRNA *brna) | |
RNA_def_property_update(prop, 0, "rna_Modifier_update"); | |
} | |
+static void rna_def_modifier_tetrahedron(BlenderRNA *brna) | |
+{ | |
+ StructRNA *srna; | |
+ PropertyRNA *prop; | |
+ | |
+ srna = RNA_def_struct(brna, "TetrahedronModifier", "Modifier"); | |
+ RNA_def_struct_ui_text(srna, "Tetrahedron Modifier", "Generate Tetrahedron"); | |
+ RNA_def_struct_sdna(srna, "TetrahedronModifierData"); | |
+ RNA_def_struct_ui_icon(srna, ICON_MOD_BUILD); | |
+} | |
+ | |
void RNA_def_modifier(BlenderRNA *brna) | |
{ | |
StructRNA *srna; | |
@@ -4676,6 +4690,7 @@ void RNA_def_modifier(BlenderRNA *brna) | |
rna_def_modifier_wireframe(brna); | |
rna_def_modifier_datatransfer(brna); | |
rna_def_modifier_normaledit(brna); | |
+ rna_def_modifier_tetrahedron(brna); | |
} | |
#endif | |
-- | |
1.9.5.msysgit.1 | |
From cd40a0fa30e5a987d5374206494c829de8c804f1 Mon Sep 17 00:00:00 2001 | |
From: thebusytypist <ounanding@gmail.com> | |
Date: Tue, 4 Aug 2015 10:46:11 +0800 | |
Subject: [PATCH 4/6] Implement basic tetrahedron modifier. | |
--- | |
source/blender/modifiers/intern/MOD_tetrahedron.c | 39 +++++++++++++++++++++-- | |
1 file changed, 37 insertions(+), 2 deletions(-) | |
diff --git a/source/blender/modifiers/intern/MOD_tetrahedron.c b/source/blender/modifiers/intern/MOD_tetrahedron.c | |
index 76b3768..d6b23bc 100644 | |
--- a/source/blender/modifiers/intern/MOD_tetrahedron.c | |
+++ b/source/blender/modifiers/intern/MOD_tetrahedron.c | |
@@ -3,7 +3,6 @@ | |
#include "BLI_math.h" | |
#include "BLI_utildefines.h" | |
-#include "DNA_curve_types.h" | |
#include "DNA_meshdata_types.h" | |
#include "DNA_object_types.h" | |
#include "DNA_scene_types.h" | |
@@ -19,6 +18,7 @@ | |
static void initData(ModifierData *md) | |
{ | |
+ TetrahedronModifierData *tmd = (TetrahedronModifierData *)md; | |
} | |
static void copyData(ModifierData *md, ModifierData *target) | |
@@ -45,7 +45,42 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob, | |
DerivedMesh *dm, | |
ModifierApplyFlag flag) | |
{ | |
- return NULL; | |
+ DerivedMesh *result = NULL; | |
+ float rsqrt2 = -1.0f / sqrtf(2.0f); | |
+ float verts[4][3] = { | |
+ {1.0f, 0.0f, -rsqrt2}, | |
+ {-1.0f, 0.0f, -rsqrt2}, | |
+ {0.0f, 1.0f, rsqrt2}, | |
+ {0.0f, -1.0f, rsqrt2} | |
+ }; | |
+ | |
+ result = CDDM_new(4, 6, 0, 0, 0); | |
+ copy_v3_v3(CDDM_get_verts(result)[0].co, verts[0]); | |
+ copy_v3_v3(CDDM_get_verts(result)[1].co, verts[1]); | |
+ copy_v3_v3(CDDM_get_verts(result)[2].co, verts[2]); | |
+ copy_v3_v3(CDDM_get_verts(result)[3].co, verts[3]); | |
+ | |
+ CDDM_get_edges(result)[0].v1 = 0; | |
+ CDDM_get_edges(result)[0].v2 = 1; | |
+ | |
+ CDDM_get_edges(result)[1].v1 = 1; | |
+ CDDM_get_edges(result)[1].v2 = 2; | |
+ | |
+ CDDM_get_edges(result)[2].v1 = 2; | |
+ CDDM_get_edges(result)[2].v2 = 3; | |
+ | |
+ CDDM_get_edges(result)[3].v1 = 3; | |
+ CDDM_get_edges(result)[3].v2 = 0; | |
+ | |
+ CDDM_get_edges(result)[4].v1 = 3; | |
+ CDDM_get_edges(result)[4].v2 = 1; | |
+ | |
+ CDDM_get_edges(result)[5].v1 = 2; | |
+ CDDM_get_edges(result)[5].v2 = 0; | |
+ | |
+ CDDM_calc_edges(result); | |
+ | |
+ return result; | |
} | |
-- | |
1.9.5.msysgit.1 | |
From 9d54743f448707a356e777e60ef28b8df5b657e0 Mon Sep 17 00:00:00 2001 | |
From: thebusytypist <ounanding@gmail.com> | |
Date: Tue, 4 Aug 2015 15:25:19 +0800 | |
Subject: [PATCH 5/6] Support parameter in tetrahedron modifier. | |
--- | |
release/datafiles/locale | 2 +- | |
release/scripts/startup/bl_ui/properties_data_modifier.py | 2 +- | |
source/blender/makesdna/DNA_modifier_types.h | 4 ++++ | |
source/blender/makesrna/intern/rna_modifier.c | 7 +++++++ | |
source/blender/modifiers/intern/MOD_tetrahedron.c | 13 ++++++++----- | |
5 files changed, 21 insertions(+), 7 deletions(-) | |
diff --git a/release/datafiles/locale b/release/datafiles/locale | |
index da05fa0..06bedbb 160000 | |
--- a/release/datafiles/locale | |
+++ b/release/datafiles/locale | |
@@ -1 +1 @@ | |
-Subproject commit da05fa08d4e80a634a91a82f211589587f9169bc | |
+Subproject commit 06bedbb3d37d4369748c6af4a40db549efe92065 | |
diff --git a/release/scripts/startup/bl_ui/properties_data_modifier.py b/release/scripts/startup/bl_ui/properties_data_modifier.py | |
index 16d8409..6efd899 100644 | |
--- a/release/scripts/startup/bl_ui/properties_data_modifier.py | |
+++ b/release/scripts/startup/bl_ui/properties_data_modifier.py | |
@@ -1173,7 +1173,7 @@ class DATA_PT_modifiers(ModifierButtonsPanel, Panel): | |
col.prop(md, "use_z_symmetry") | |
def TETRAHEDRON(self, layout, ob, md): | |
- layout.label(text="Comming soon.") | |
+ layout.prop(md, "scale") | |
def TRIANGULATE(self, layout, ob, md): | |
row = layout.row() | |
diff --git a/source/blender/makesdna/DNA_modifier_types.h b/source/blender/makesdna/DNA_modifier_types.h | |
index 252758e..4f98f62 100644 | |
--- a/source/blender/makesdna/DNA_modifier_types.h | |
+++ b/source/blender/makesdna/DNA_modifier_types.h | |
@@ -1245,6 +1245,10 @@ enum { | |
/* Tetrahedron modifier */ | |
typedef struct TetrahedronModifierData { | |
ModifierData modifier; | |
+ | |
+ float scale; | |
+ | |
+ int pad; | |
} TetrahedronModifierData; | |
/* Triangulate modifier */ | |
diff --git a/source/blender/makesrna/intern/rna_modifier.c b/source/blender/makesrna/intern/rna_modifier.c | |
index 5df7214..d828a7b 100644 | |
--- a/source/blender/makesrna/intern/rna_modifier.c | |
+++ b/source/blender/makesrna/intern/rna_modifier.c | |
@@ -4572,6 +4572,13 @@ static void rna_def_modifier_tetrahedron(BlenderRNA *brna) | |
RNA_def_struct_ui_text(srna, "Tetrahedron Modifier", "Generate Tetrahedron"); | |
RNA_def_struct_sdna(srna, "TetrahedronModifierData"); | |
RNA_def_struct_ui_icon(srna, ICON_MOD_BUILD); | |
+ | |
+ prop = RNA_def_property(srna, "scale", PROP_FLOAT, PROP_FACTOR); | |
+ RNA_def_property_float_sdna(prop, NULL, "scale"); | |
+ RNA_def_property_range(prop, 0.0f, 100.0f); | |
+ RNA_def_property_ui_range(prop, 0.0f, 100.0f, 1.0f, 2); | |
+ RNA_def_property_ui_text(prop, "Scale", "Scale of the tetrahedron"); | |
+ RNA_def_property_update(prop, 0, "rna_Modifier_update"); | |
} | |
void RNA_def_modifier(BlenderRNA *brna) | |
diff --git a/source/blender/modifiers/intern/MOD_tetrahedron.c b/source/blender/modifiers/intern/MOD_tetrahedron.c | |
index d6b23bc..f8d8263 100644 | |
--- a/source/blender/modifiers/intern/MOD_tetrahedron.c | |
+++ b/source/blender/modifiers/intern/MOD_tetrahedron.c | |
@@ -19,6 +19,7 @@ | |
static void initData(ModifierData *md) | |
{ | |
TetrahedronModifierData *tmd = (TetrahedronModifierData *)md; | |
+ tmd->scale = 1.0f; | |
} | |
static void copyData(ModifierData *md, ModifierData *target) | |
@@ -45,13 +46,15 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob, | |
DerivedMesh *dm, | |
ModifierApplyFlag flag) | |
{ | |
+ TetrahedronModifierData *tmd = (TetrahedronModifierData *)md; | |
DerivedMesh *result = NULL; | |
- float rsqrt2 = -1.0f / sqrtf(2.0f); | |
+ float scale = tmd->scale; | |
+ float rsqrt2 = -1.0f / sqrtf(2.0f) * scale; | |
float verts[4][3] = { | |
- {1.0f, 0.0f, -rsqrt2}, | |
- {-1.0f, 0.0f, -rsqrt2}, | |
- {0.0f, 1.0f, rsqrt2}, | |
- {0.0f, -1.0f, rsqrt2} | |
+ {scale, 0.0f, -rsqrt2}, | |
+ {-scale, 0.0f, -rsqrt2}, | |
+ {0.0f, scale, rsqrt2}, | |
+ {0.0f, -scale, rsqrt2} | |
}; | |
result = CDDM_new(4, 6, 0, 0, 0); | |
-- | |
1.9.5.msysgit.1 | |
From 56c7bf8844884c88961051736638a22854aaa190 Mon Sep 17 00:00:00 2001 | |
From: thebusytypist <ounanding@gmail.com> | |
Date: Mon, 10 Aug 2015 09:36:41 +0800 | |
Subject: [PATCH 6/6] Construct polys and loops to make solid tetrahedron. | |
--- | |
source/blender/modifiers/intern/MOD_tetrahedron.c | 47 ++++++++++++++--------- | |
1 file changed, 29 insertions(+), 18 deletions(-) | |
diff --git a/source/blender/modifiers/intern/MOD_tetrahedron.c b/source/blender/modifiers/intern/MOD_tetrahedron.c | |
index f8d8263..f11fd6f 100644 | |
--- a/source/blender/modifiers/intern/MOD_tetrahedron.c | |
+++ b/source/blender/modifiers/intern/MOD_tetrahedron.c | |
@@ -56,30 +56,41 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob, | |
{0.0f, scale, rsqrt2}, | |
{0.0f, -scale, rsqrt2} | |
}; | |
+ MLoop *loops = NULL; | |
+ MPoly *polys = NULL; | |
- result = CDDM_new(4, 6, 0, 0, 0); | |
+ result = CDDM_new(4, 0, 0, 3 * 4, 4); | |
copy_v3_v3(CDDM_get_verts(result)[0].co, verts[0]); | |
copy_v3_v3(CDDM_get_verts(result)[1].co, verts[1]); | |
copy_v3_v3(CDDM_get_verts(result)[2].co, verts[2]); | |
copy_v3_v3(CDDM_get_verts(result)[3].co, verts[3]); | |
- CDDM_get_edges(result)[0].v1 = 0; | |
- CDDM_get_edges(result)[0].v2 = 1; | |
- | |
- CDDM_get_edges(result)[1].v1 = 1; | |
- CDDM_get_edges(result)[1].v2 = 2; | |
- | |
- CDDM_get_edges(result)[2].v1 = 2; | |
- CDDM_get_edges(result)[2].v2 = 3; | |
- | |
- CDDM_get_edges(result)[3].v1 = 3; | |
- CDDM_get_edges(result)[3].v2 = 0; | |
- | |
- CDDM_get_edges(result)[4].v1 = 3; | |
- CDDM_get_edges(result)[4].v2 = 1; | |
- | |
- CDDM_get_edges(result)[5].v1 = 2; | |
- CDDM_get_edges(result)[5].v2 = 0; | |
+ loops = CDDM_get_loops(result); | |
+ polys = CDDM_get_polys(result); | |
+ | |
+ polys[0].totloop = 3; | |
+ polys[0].loopstart = 0; | |
+ loops[0].v = 0; | |
+ loops[1].v = 3; | |
+ loops[2].v = 2; | |
+ | |
+ polys[1].totloop = 3; | |
+ polys[1].loopstart = 3; | |
+ loops[3].v = 1; | |
+ loops[4].v = 2; | |
+ loops[5].v = 3; | |
+ | |
+ polys[2].totloop = 3; | |
+ polys[2].loopstart = 6; | |
+ loops[6].v = 2; | |
+ loops[7].v = 1; | |
+ loops[8].v = 0; | |
+ | |
+ polys[3].totloop = 3; | |
+ polys[3].loopstart = 9; | |
+ loops[9].v = 0; | |
+ loops[10].v = 1; | |
+ loops[11].v = 3; | |
CDDM_calc_edges(result); | |
-- | |
1.9.5.msysgit.1 | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment