<div dir="ltr">Hello, I wonder if this is the right place to ask the question<br>but I already try to subscribe the web forum several times w/o any success.<br>/* It keeps saying that I enter wrong value for image verification code */<br>
<br>I try to construct a new face with a modifier.<br><br>static DerivedMesh *dummyModifier_applyModifier(<br> ModifierData *md, Object *ob, DerivedMesh *derivedData,<br> int useRenderParams, int isFinalCalc)<br>
{<br> DerivedMesh *result;<br> DummyModifierData *emd = (DummyModifierData *) md;<br> int maxVerts = derivedData->getNumVerts(derivedData);<br> int maxEdges = derivedData->getNumEdges(derivedData);<br>
int maxFaces = derivedData->getNumFaces(derivedData);<br> int a,b;<br><br> DerivedMesh *dm = derivedData;<br><br> if (maxEdges < 1) return dm;<br><br><br> /* new face will be attached to the first edge so I need more 2 verts, 3 edges and 1 face */<br>
result = CDDM_from_template(dm, maxVerts + 2, maxEdges + 3, maxFaces + 1);<br><br> /* copy existing datas to new mesh */<br> DM_copy_vert_data(dm, result, 0, 0, maxVerts);<br> DM_copy_edge_data(dm, result, 0, 0, maxEdges);<br>
DM_copy_face_data(dm, result, 0, 0, maxFaces);<br><br> /* get the verts from the first edge */<br> a = CDDM_get_edge(result,0)->v1;<br> b = CDDM_get_edge(result,0)->v2;<br><br> /* build 1 face */<br>
{<br> MFace *targetMF;<br> targetMF = CDDM_get_face(result, 0);<br> targetMF = CDDM_get_face(result, maxFaces);<br><br> targetMF->v1 = a; targetMF->v2 = b;<br>
targetMF->v4 = maxVerts + 1; targetMF->v3 = maxVerts;<br><br> DM_copy_vert_data(result, result, a, maxVerts + 1, 1);<br> DM_copy_vert_data(result, result, b, maxVerts, 1);<br>
<br> targetMF->mat_nr = 0;<br> targetMF->edcode = 0;<br> targetMF->flag = 0;<br><br> test_index_face(targetMF, &result->faceData, 0, 4);<br> }<br>
<br> /* build 3 edges */<br> {<br> MEdge *anEdge = CDDM_get_edge(result, maxEdges);<br> bzero(anEdge, sizeof(MEdge) * 3);<br><br> anEdge->v1 = a;<br> anEdge->v2 = maxVerts + 1; /* | */<br>
anEdge++;<br> anEdge->v1 = b;<br> anEdge->v2 = maxVerts; /* | | */<br> anEdge++;<br> anEdge->v1 = maxVerts;<br> anEdge->v2 = maxVerts + 1; /* |_| */<br>
}<br><br> return result;<br><br>}<br><br><br>The input mesh can be a single edge. The code will crash when I enter edit mode.<br>What could be wrong?<br><br>#0 0x08295f3f in draw_em_fancy__setFaceOpts ()<br>
#1 0x085145a6 in cdDM_drawMappedFaces ()<br>#2 0x082a02b5 in draw_em_fancy ()<br>#3 0x082a1155 in draw_mesh_object ()<br><br>Thanks.<br></div>