From 32057f4e4d6b3d0dff06b373742d5db34310f4b3 Mon Sep 17 00:00:00 2001 From: Jeremy Hu Date: Mon, 2 Jan 2017 12:02:30 +0930 Subject: [PATCH] Add Catmull-Clark subdivision algorithm. --- screenshot/dust3d_subdivide_catmull_clark.png | Bin 0 -> 190448 bytes src/subdivide.c | 750 ++++++++++++++++++ src/subdivide.h | 25 + 3 files changed, 775 insertions(+) create mode 100644 screenshot/dust3d_subdivide_catmull_clark.png create mode 100644 src/subdivide.c create mode 100644 src/subdivide.h diff --git a/screenshot/dust3d_subdivide_catmull_clark.png b/screenshot/dust3d_subdivide_catmull_clark.png new file mode 100644 index 0000000000000000000000000000000000000000..d082836d90cd4040be4747d576d673a85b6e068d GIT binary patch literal 190448 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 y{O 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 CcAX9Y literal 0 HcmV?d00001 diff --git a/src/subdivide.c b/src/subdivide.c new file mode 100644 index 00000000..64577fa0 --- /dev/null +++ b/src/subdivide.c @@ -0,0 +1,750 @@ +#include +#include +#include +#include "subdivide.h" +#include "draw.h" + +// +// Catmull Clark Subdivision +// Modified from https://rosettacode.org/wiki/Catmull%E2%80%93Clark_subdivision_surface/C +// + +typedef struct subdivLink { + int index; + int nextLink; +} subdivLink; + +typedef struct subdivVertex { + vec3 v; + vec3 avgNorm; + int index; + int newVertexIndex; + int edgeLink; + int edgeNum; + int faceLink; + int faceNum; + int indexOnNewModel; +} subdivVertex; + +typedef struct subdivEdge { + int index; + int faceLink; + int faceNum; + int v[2]; + int edgePt; + vec3 avg; +} subdivEdge; + +typedef struct subdivFace { + int index; + int edgeLink; + int edgeNum; + int vertexLink; + int vertexNum; + vec3 norm; + int avg; +} subdivFace; + +struct subdivModel { + array *vertexArray; + array *faceArray; + array *edgeArray; + array *indexArray; + int faceLink; + int faceNum; + int edgeLink; + int edgeNum; + int vertexLink; + int vertexNum; +}; + +static void initVertex(subdivVertex *v) { + memset(v, 0, sizeof(subdivVertex)); + v->newVertexIndex = -1; + v->edgeLink = -1; + v->faceLink = -1; + v->indexOnNewModel = -1; +}; + +static void initEdge(subdivEdge *e) { + memset(e, 0, sizeof(subdivEdge)); + e->faceLink = -1; + e->v[0] = -1; + e->v[0] = -1; + e->edgePt = -1; +} + +static void initFace(subdivFace *f) { + memset(f, 0, sizeof(subdivFace)); + f->edgeLink = -1; + f->vertexLink = -1; + f->avg = -1; +} + +subdivModel *subdivCreateModel(void) { + subdivModel *model = (subdivModel *)calloc(1, sizeof(subdivModel)); + if (!model) { + fprintf(stderr, "%s:Insufficient memory.\n", __FUNCTION__); + return 0; + } + model->faceLink = -1; + model->edgeLink = -1; + model->vertexLink = -1; + model->vertexArray = arrayCreate(sizeof(subdivVertex)); + if (!model->vertexArray) { + fprintf(stderr, "%s:Insufficient memory.\n", __FUNCTION__); + return 0; + } + model->faceArray = arrayCreate(sizeof(subdivFace)); + if (!model->faceArray) { + fprintf(stderr, "%s:Insufficient memory.\n", __FUNCTION__); + return 0; + } + model->edgeArray = arrayCreate(sizeof(subdivEdge)); + if (!model->edgeArray) { + fprintf(stderr, "%s:Insufficient memory.\n", __FUNCTION__); + return 0; + } + model->indexArray = arrayCreate(sizeof(subdivLink)); + if (!model->indexArray) { + fprintf(stderr, "%s:Insufficient memory.\n", __FUNCTION__); + return 0; + } + return model; +} + +void subdivDestroyModel(subdivModel *model) { + arrayDestroy(model->vertexArray); + arrayDestroy(model->faceArray); + arrayDestroy(model->edgeArray); + arrayDestroy(model->indexArray); + free(model); +} + +static int allocLink(subdivModel *model, int index) { + subdivLink *linkItem; + int newLink = arrayGetLength(model->indexArray); + if (0 != arraySetLength(model->indexArray, newLink + 1)) { + fprintf(stderr, "%s:arraySetLength failed.\n", __FUNCTION__); + return -1; + } + linkItem = (subdivLink *)arrayGetItem(model->indexArray, newLink); + linkItem->index = index; + linkItem->nextLink = -1; + return newLink; +} + +static int subdivLinkElement(subdivModel *model, int current, int order) { + int i, iterator; + int element = -1; + subdivLink *linkItem; + iterator = current; + for (i = 0; i <= order && -1 != iterator; ++i) { + linkItem = (subdivLink *)arrayGetItem(model->indexArray, iterator); + element = linkItem->index; + iterator = linkItem->nextLink; + } + return element; +} + +static int pushLink(subdivModel *model, int *link, int *num, int index) { + int newLink = allocLink(model, index); + int i, iterator; + subdivLink *linkItem = 0; + if (-1 == newLink) { + fprintf(stderr, "%s:allocLink failed.\n", __FUNCTION__); + return -1; + } + if (-1 != *link) { + iterator = *link; + for (i = 0; i < *num; ++i) { + linkItem = (subdivLink *)arrayGetItem(model->indexArray, iterator); + iterator = linkItem->nextLink; + } + linkItem->nextLink = newLink; + } else { + *link = newLink; + } + (*num)++; + return 0; +} + +static subdivVertex *allocVertex(subdivModel *model) { + subdivVertex *vertex; + int newVertexIndex = arrayGetLength(model->vertexArray); + if (0 != arraySetLength(model->vertexArray, newVertexIndex + 1)) { + fprintf(stderr, "%s:arraySetLength failed.\n", __FUNCTION__); + return 0; + } + vertex = arrayGetItem(model->vertexArray, newVertexIndex); + initVertex(vertex); + vertex->index = newVertexIndex; + if (0 != pushLink(model, &model->vertexLink, &model->vertexNum, + vertex->index)) { + fprintf(stderr, "%s:pushLink failed.\n", __FUNCTION__); + return -1; + } + return vertex; +} + +static subdivEdge *allocEdge(subdivModel *model) { + subdivEdge *edge; + int newEdgeIndex = arrayGetLength(model->edgeArray); + if (0 != arraySetLength(model->edgeArray, newEdgeIndex + 1)) { + fprintf(stderr, "%s:arraySetLength failed.\n", __FUNCTION__); + return 0; + } + edge = arrayGetItem(model->edgeArray, newEdgeIndex); + initEdge(edge); + edge->index = newEdgeIndex; + return edge; +} + +static subdivFace *allocFace(subdivModel *model) { + subdivFace *face; + int newFaceIndex = arrayGetLength(model->faceArray); + if (0 != arraySetLength(model->faceArray, newFaceIndex + 1)) { + fprintf(stderr, "%s:arraySetLength failed.\n", __FUNCTION__); + return 0; + } + face = arrayGetItem(model->faceArray, newFaceIndex); + initFace(face); + face->index = newFaceIndex; + return face; +} + +static subdivVertex *getVertex(subdivModel *model, int index) { + if (-1 == index) { + return 0; + } + return (subdivVertex *)arrayGetItem(model->vertexArray, index); +} + +static subdivEdge *getEdge(subdivModel *model, int index) { + if (-1 == index) { + return 0; + } + return (subdivEdge *)arrayGetItem(model->edgeArray, index); +} + +static subdivFace *getFace(subdivModel *model, int index) { + if (-1 == index) { + return 0; + } + return (subdivFace *)arrayGetItem(model->faceArray, index); +} + +static int isHoleEdge(subdivModel *model, int e) { + return 1 == getEdge(model, e)->faceNum; +} + +static int isHoleVertex(subdivModel *model, int p) { + return getVertex(model, p)->faceNum != getVertex(model, p)->edgeNum; +} + +static int facePoint(subdivModel *model, int f); + +static int edgePoint(subdivModel *model, int e) { + int nv = getEdge(model, e)->edgePt; + if (-1 == nv) { + subdivVertex *newVertex = allocVertex(model); + if (!newVertex) { + fprintf(stderr, "%s:allocVertex failed.\n", __FUNCTION__); + return 0; + } + nv = newVertex->index; + getEdge(model, e)->edgePt = nv; + getEdge(model, e)->avg = getVertex(model, getEdge(model, e)->v[0])->v; + vec3Add(&getEdge(model, e)->avg, + &getVertex(model, getEdge(model, e)->v[1])->v, &getEdge(model, e)->avg); + getVertex(model, nv)->v = getEdge(model, e)->avg; + if (!isHoleEdge(model, e)) { + int iterator; + iterator = getEdge(model, e)->faceLink; + while (-1 != iterator) { + int f; + int fp; + subdivLink *linkItem = (subdivLink *)arrayGetItem(model->indexArray, + iterator); + f = linkItem->index; + iterator = linkItem->nextLink; + fp = facePoint(model, f); + if (-1 == fp) { + fprintf(stderr, "%s:facePoint failed.\n", __FUNCTION__); + return 0; + } + vec3Add(&getVertex(model, nv)->v, &getVertex(model, fp)->v, + &getVertex(model, nv)->v); + } + vec3Scale(&getVertex(model, nv)->v, 1.0 / 4, &getVertex(model, nv)->v); + } else { + vec3Scale(&getVertex(model, nv)->v, 1.0 / 2, &getVertex(model, nv)->v); + } + vec3Scale(&getEdge(model, e)->avg, 1.0 / 2, &getEdge(model, e)->avg); + } + return nv; +} + +static int facePoint(subdivModel *model, int f) { + int nv = getFace(model, f)->avg; + if (-1 == nv) { + int iterator; + subdivVertex *newVertex = allocVertex(model); + if (!newVertex) { + fprintf(stderr, "%s:allocVertex failed.\n", __FUNCTION__); + return 0; + } + nv = newVertex->index; + getFace(model, f)->avg = nv; + iterator = getFace(model, f)->vertexLink; + while (-1 != iterator) { + int p; + subdivLink *linkItem = (subdivLink *)arrayGetItem(model->indexArray, + iterator); + p = linkItem->index; + iterator = linkItem->nextLink; + if (getFace(model, f)->vertexLink == iterator) { + getVertex(model, nv)->v = getVertex(model, p)->v; + } else { + vec3Add(&getVertex(model, nv)->v, &getVertex(model, p)->v, + &getVertex(model, nv)->v); + } + } + vec3Scale(&getVertex(model, nv)->v, 1.0 / (getFace(model, f)->vertexNum), + &getVertex(model, nv)->v); + } + return nv; +} + +static void scaleAdd(vec3 *a, vec3 *b, float scale, vec3 *result) { + vec3 tmp; + vec3Scale(b, scale, &tmp); + vec3Add(a, &tmp, result); +} + +static int updatedPoint(subdivModel *model, int p) { + int n = 0; + int iterator; + subdivVertex *newVertex; + int facePt; + int e; + subdivFace *f; + subdivLink *link; + int nv; + int ep; + vec3 sum = {0, 0, 0}; + + nv = getVertex(model, p)->newVertexIndex; + if (-1 != nv) { + return nv; + } + + newVertex = allocVertex(model); + if (!newVertex) { + fprintf(stderr, "%s:allocVertex failed.\n", __FUNCTION__); + return 0; + } + nv = newVertex->index; + getVertex(model, p)->newVertexIndex = nv; + if (isHoleVertex(model, p)) { + getVertex(model, nv)->v = getVertex(model, p)->v; + iterator = getVertex(model, p)->edgeLink; + while (-1 != iterator) { + link = (subdivLink *)arrayGetItem(model->indexArray, iterator); + e = link->index; + iterator = link->nextLink; + if (!isHoleEdge(model, e)) { + continue; + } + ep = edgePoint(model, e); + if (-1 == ep) { + fprintf(stderr, "%s:edgePoint failed.\n", __FUNCTION__); + return 0; + } + vec3Add(&getVertex(model, nv)->v, &getVertex(model, ep)->v, + &getVertex(model, nv)->v); + n++; + } + vec3Scale(&getVertex(model, nv)->v, 1.0 / (n + 1), + &getVertex(model, nv)->v); + } else { + n = getVertex(model, p)->faceNum; + iterator = getVertex(model, p)->faceLink; + while (-1 != iterator) { + link = (subdivLink *)arrayGetItem(model->indexArray, iterator); + f = link->index; + iterator = link->nextLink; + facePt = facePoint(model, f); + if (-1 == facePt) { + fprintf(stderr, "%s:facePoint failed.\n", __FUNCTION__); + return 0; + } + vec3Add(&sum, &getVertex(model, facePt)->v, &sum); + } + iterator = getVertex(model, p)->edgeLink; + while (-1 != iterator) { + link = (subdivLink *)arrayGetItem(model->indexArray, iterator); + e = link->index; + iterator = link->nextLink; + ep = edgePoint(model, e); + if (-1 == ep) { + fprintf(stderr, "%s:edgePoint failed.\n", __FUNCTION__); + return 0; + } + scaleAdd(&sum, &getVertex(model, ep)->v, 2, &sum); + } + vec3Scale(&sum, 1.0 / n, &sum); + scaleAdd(&sum, &getVertex(model, p)->v, n - 3, &sum); + vec3Scale(&sum, 1.0 / n, &sum); + getVertex(model, nv)->v = sum; + } + + return nv; +} + +static int subdivCalculteNorms(subdivModel *model) { + int i, j, n; + int faceIterator; + int nextFaceIterator; + int vertexIterator; + int nextVertexIterator; + subdivFace *f; + subdivLink *linkItem; + subdivVertex *v; + subdivVertex *v0; + subdivVertex *v1; + vec3 d1, d2, norm; + + faceIterator = model->faceLink; + j = 0; + while (-1 != faceIterator) { + linkItem = (subdivLink *)arrayGetItem(model->indexArray, faceIterator); + f = getFace(model, linkItem->index); + nextFaceIterator = linkItem->nextLink; + vertexIterator = f->vertexLink; + n = f->vertexNum; + i = 0; + while (-1 != vertexIterator) { + linkItem = (subdivLink *)arrayGetItem(model->indexArray, faceIterator); + f = getFace(model, linkItem->index); + linkItem = (subdivLink *)arrayGetItem(model->indexArray, vertexIterator); + v = getVertex(model, linkItem->index); + vertexIterator = linkItem->nextLink; + v0 = getVertex(model, + subdivLinkElement(model, f->vertexLink, i ? i - 1 : n - 1)); + v1 = getVertex(model, + subdivLinkElement(model, f->vertexLink, (i + 1) % n)); + vec3Sub(&v->v, &v0->v, &d1); + vec3Sub(&v1->v, &v->v, &d2); + vec3CrossProduct(&d1, &d2, &norm); + vec3Add(&f->norm, &norm, &f->norm); + ++i; + } + if (i > 1) { + vec3Normalize(&f->norm); + } + faceIterator = nextFaceIterator; + ++j; + } + + vertexIterator = model->vertexLink; + while (-1 != vertexIterator) { + linkItem = (subdivLink *)arrayGetItem(model->indexArray, vertexIterator); + v = getVertex(model, linkItem->index); + nextVertexIterator = linkItem->nextLink; + faceIterator = v->faceLink; + j = 0; + while (-1 != faceIterator) { + linkItem = (subdivLink *)arrayGetItem(model->indexArray, faceIterator); + f = getFace(model, linkItem->index); + faceIterator = linkItem->nextLink; + vec3Add(&v->avgNorm, &f->norm, &v->avgNorm); + ++j; + } + if (j > 1) { + vec3Normalize(&v->avgNorm); + } + vertexIterator = nextVertexIterator; + } + + return 0; +} + +static void drawModel(subdivModel *model) { + subdivLink *linkItem; + subdivFace *f; + subdivVertex *v; + int faceIterator; + int vertexIterator; + faceIterator = model->faceLink; + glColor3f(1.0, 1.0, 1.0); + while (-1 != faceIterator) { + linkItem = (subdivLink *)arrayGetItem(model->indexArray, faceIterator); + f = getFace(model, linkItem->index); + faceIterator = linkItem->nextLink; + vertexIterator = f->vertexLink; + glBegin(GL_POLYGON); + while (-1 != vertexIterator) { + linkItem = (subdivLink *)arrayGetItem(model->indexArray, vertexIterator); + v = getVertex(model, linkItem->index); + vertexIterator = linkItem->nextLink; + glNormal3fv(&(f->norm.x)); + glVertex3fv(&(v->v.x)); + } + glEnd(); + } +} + +subdivModel *subdivCatmullClark(subdivModel *model) { + int j, ai, bi, ci, di; + int a, b, c, d; + int faceIterator; + int nextFaceIterator; + int vertexIterator; + int f; + subdivLink *linkItem; + int p; + subdivModel *outputModel; + + outputModel = subdivCreateModel(); + if (!outputModel) { + fprintf(stderr, "%s:subdivCreateModel failed.\n", __FUNCTION__); + return 0; + } + + faceIterator = model->faceLink; + while (-1 != faceIterator) { + linkItem = (subdivLink *)arrayGetItem(model->indexArray, faceIterator); + f = linkItem->index; + j = 0; + nextFaceIterator = linkItem->nextLink; + vertexIterator = getFace(model, f)->vertexLink; + while (-1 != vertexIterator) { + linkItem = (subdivLink *)arrayGetItem(model->indexArray, vertexIterator); + p = linkItem->index; + vertexIterator = linkItem->nextLink; + ai = updatedPoint(model, p); + if (-1 == ai) { + fprintf(stderr, "%s:updatedPoint failed.\n", __FUNCTION__); + subdivDestroyModel(outputModel); + return 0; + } + bi = edgePoint(model, subdivLinkElement(model, + getFace(model, f)->edgeLink, (j + 1) % getFace(model, f)->edgeNum)); + if (-1 == bi) { + fprintf(stderr, "%s:edgePoint failed.\n", __FUNCTION__); + subdivDestroyModel(outputModel); + return 0; + } + ci = facePoint(model, f); + if (-1 == ci) { + fprintf(stderr, "%s:facePoint failed.\n", __FUNCTION__); + subdivDestroyModel(outputModel); + return 0; + } + di = edgePoint(model, subdivLinkElement(model, + getFace(model, f)->edgeLink, j)); + if (-1 == di) { + fprintf(stderr, "%s:edgePoint failed.\n", __FUNCTION__); + subdivDestroyModel(outputModel); + return 0; + } + a = getVertex(model, ai)->indexOnNewModel; + if (-1 == a) { + a = subdivAddVertex(outputModel, &getVertex(model, ai)->v); + getVertex(model, ai)->indexOnNewModel = a; + } + b = getVertex(model, bi)->indexOnNewModel; + if (-1 == b) { + b = subdivAddVertex(outputModel, &getVertex(model, bi)->v); + getVertex(model, bi)->indexOnNewModel = b; + } + c = getVertex(model, ci)->indexOnNewModel; + if (-1 == c) { + c = subdivAddVertex(outputModel, &getVertex(model, ci)->v); + getVertex(model, ci)->indexOnNewModel = c; + } + d = getVertex(model, di)->indexOnNewModel; + if (-1 == d) { + d = subdivAddVertex(outputModel, &getVertex(model, di)->v); + getVertex(model, di)->indexOnNewModel = d; + } + if (-1 == a || -1 == b || -1 == c || -1 == d) { + fprintf(stderr, "%s:subdivAddVertex failed.\n", __FUNCTION__); + subdivDestroyModel(outputModel); + return 0; + } + if (-1 == subdivAddQuadFace(outputModel, a, b, c, d)) { + fprintf(stderr, "%s:subdivAddFace failed.\n", __FUNCTION__); + subdivDestroyModel(outputModel); + return 0; + } + ++j; + } + faceIterator = nextFaceIterator; + } + + if (0 != subdivCalculteNorms(outputModel)) { + fprintf(stderr, "%s:subdivCalculteNorms failed.\n", __FUNCTION__); + subdivDestroyModel(outputModel); + return 0; + } + + return outputModel; +} + +int subdivAddVertex(subdivModel *model, vec3 *v) { + subdivVertex *newVertex = allocVertex(model); + if (!newVertex) { + fprintf(stderr, "%s:allocVertex failed.\n", __FUNCTION__); + return -1; + } + newVertex->v = *v; + return newVertex->index; +} + +static int subdivAddEdge(subdivModel *model, int p1, int p2) { + subdivEdge *newEdge = allocEdge(model); + subdivVertex *v1; + subdivVertex *v2; + if (!newEdge) { + fprintf(stderr, "%s:allocEdge failed.\n", __FUNCTION__); + return -1; + } + newEdge->v[0] = p1; + newEdge->v[1] = p2; + v1 = getVertex(model, p1); + v2 = getVertex(model, p2); + if (-1 == pushLink(model, &v1->edgeLink, &v1->edgeNum, newEdge->index)) { + fprintf(stderr, "%s:pushLink failed.\n", __FUNCTION__); + return -1; + } + if (-1 == pushLink(model, &v2->edgeLink, &v2->edgeNum, newEdge->index)) { + fprintf(stderr, "%s:pushLink failed.\n", __FUNCTION__); + return -1; + } + if (-1 == pushLink(model, &model->edgeLink, &model->edgeNum, newEdge->index)) { + fprintf(stderr, "%s:pushLink failed.\n", __FUNCTION__); + return -1; + } + return newEdge->index; +} + +static int subdivEdgeByVertexs(subdivModel *model, int p1, int p2) { + subdivLink *linkItem; + subdivEdge *e; + subdivVertex *v1 = getVertex(model, p1); + int newEdgeIndex; + int iterator = v1->edgeLink; + while (-1 != iterator) { + linkItem = (subdivLink *)arrayGetItem(model->indexArray, iterator); + e = getEdge(model, linkItem->index); + iterator = linkItem->nextLink; + if (e->v[0] == p2 || e->v[1] == p2) { + return e->index; + } + } + newEdgeIndex = subdivAddEdge(model, p1, p2); + return newEdgeIndex; +} + +static int subdivAddFace(subdivModel *model, int *vertexs, int vertexNum) { + int i; + subdivFace *f = allocFace(model); + int p0, p1; + int newFaceIndex; + int edgeIndex; + if (!f) { + fprintf(stderr, "%s:allocFace failed.\n", __FUNCTION__); + return -1; + } + newFaceIndex = f->index; + if (0 != pushLink(model, &model->faceLink, &model->faceNum, newFaceIndex)) { + fprintf(stderr, "%s:pushLink failed.\n", __FUNCTION__); + return -1; + } + p0 = vertexs[0]; + for (i = 1; i <= vertexNum; ++i, p0 = p1) { + subdivVertex *v1; + subdivEdge *e; + p1 = vertexs[i % vertexNum]; + v1 = getVertex(model, p1); + if (0 != pushLink(model, &v1->faceLink, &v1->faceNum, newFaceIndex)) { + fprintf(stderr, "%s:pushLink failed.\n", __FUNCTION__); + return -1; + } + edgeIndex = subdivEdgeByVertexs(model, p0, p1); + if (-1 == edgeIndex) { + fprintf(stderr, "%s:subdivEdgeByVertexs failed.\n", __FUNCTION__); + return -1; + } + e = getEdge(model, edgeIndex); + if (0 != pushLink(model, &e->faceLink, &e->faceNum, newFaceIndex)) { + fprintf(stderr, "%s:pushLink failed.\n", __FUNCTION__); + return -1; + } + f = getFace(model, newFaceIndex); + if (0 != pushLink(model, &f->edgeLink, &f->edgeNum, edgeIndex)) { + fprintf(stderr, "%s:pushLink failed.\n", __FUNCTION__); + return -1; + } + if (0 != pushLink(model, &f->vertexLink, &f->vertexNum, p1)) { + fprintf(stderr, "%s:pushLink failed.\n", __FUNCTION__); + return -1; + } + } + return newFaceIndex; +} + +int subdivAddTriangleFace(subdivModel *model, int p1, int p2, int p3) { + int vertexs[3] = {p1, p2, p3}; + return subdivAddFace(model, vertexs, 3); +} + +int subdivAddQuadFace(subdivModel *model, int p1, int p2, int p3, int p4) { + int vertexs[4] = {p1, p2, p3, p4}; + return subdivAddFace(model, vertexs, 4); +} + +int subdivAddCube(subdivModel *model) { + int x, y, z; + for (x = -1; x <= 1; x += 2) { + for (y = -1; y <= 1; y += 2) { + for (z = -1; z <= 1; z += 2) { + vec3 v = {x, y, z}; + subdivAddVertex(model, &v); + } + } + } + subdivAddQuadFace(model, 0, 1, 3, 2); + subdivAddQuadFace(model, 6, 7, 5, 4); + subdivAddQuadFace(model, 4, 5, 1, 0); + subdivAddQuadFace(model, 2, 3, 7, 6); + subdivAddQuadFace(model, 0, 2, 6, 4); + subdivAddQuadFace(model, 5, 7, 3, 1); + subdivCalculteNorms(model); + return 0; +} + +subdivModel *subdivCatmullClarkWithLoops(subdivModel *model, int loops) { + int i; + subdivModel *outputModel; + outputModel = subdivCatmullClark(model); + if (!outputModel) { + fprintf(stderr, "%s:subdivCatmullClark failed.\n", __FUNCTION__); + return 0; + } + for (i = 1; i < loops; ++i) { + subdivModel *loopInput = outputModel; + outputModel = subdivCatmullClark(loopInput); + subdivDestroyModel(loopInput); + if (!outputModel) { + fprintf(stderr, "%s:subdivCatmullClark failed(loops:%d i:%d).\n", + __FUNCTION__, loops, i); + return 0; + } + } + drawDebugPrintf("faces: %d", outputModel->faceNum); + drawModel(outputModel); + return outputModel; +} diff --git a/src/subdivide.h b/src/subdivide.h new file mode 100644 index 00000000..8bbff092 --- /dev/null +++ b/src/subdivide.h @@ -0,0 +1,25 @@ +#ifndef SUBDIVIDE_H +#define SUBDIVIDE_H +#include "array.h" +#include "3dstruct.h" + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct subdivModel subdivModel; + +subdivModel *subdivCreateModel(void); +void subdivDestroyModel(subdivModel *model); +int subdivAddVertex(subdivModel *model, vec3 *v); +int subdivAddTriangleFace(subdivModel *model, int p1, int p2, int p3); +int subdivAddQuadFace(subdivModel *model, int p1, int p2, int p3, int p4); +subdivModel *subdivCatmullClark(subdivModel *model); +subdivModel *subdivCatmullClarkWithLoops(subdivModel *model, int loops); +int subdivAddCube(subdivModel *model); + +#ifdef __cplusplus +} +#endif + +#endif