Hi nick, I'm not aware of any other functionality on face select mode so if those two are back it should be fine
cheers Daniel Salazar www.3developer.com On Fri, Aug 20, 2010 at 9:46 PM, Nicholas Bishop <[email protected]> wrote: > Originally I was using face select mode for ptex, but that's no longer > the case; I added another mode flag for ptex editing. I didn't revert > all the changes to face selection mode though, so perhaps some things > are still broken? > > Also, I have "taken over" the face select button for ptex resolution > editing, so the old face selection mode isn't currently exposed in my > branch. Ideally, the ptex editing mode should grow to support face > hiding and such (unlike the older face select, the new mode uses the > PBVH for selection, so it doesn't have any of that nasty backbuf > selection stuff.) > > Is there anything other than masking and hiding that face select mode > can do that the ptex edit mode can't? > > Thanks, > -Nicholas > > On Fri, Aug 20, 2010 at 11:36 PM, Daniel Salazar - 3Developer.com > <[email protected]> wrote: >> Hi nick, I don know your plans about this but face select mode is used >> to mask and/or hide faces on paint modes and his functionality is >> colliding with your implementation. Care to shed some light into this? >> >> cheers >> >> Daniel Salazar >> www.3developer.com >> >> >> >> On Fri, Aug 20, 2010 at 9:09 PM, Nicholas Bishop >> <[email protected]> wrote: >>> Revision: 31490 >>> >>> http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=31490 >>> Author: nicholasbishop >>> Date: 2010-08-21 05:09:20 +0200 (Sat, 21 Aug 2010) >>> >>> Log Message: >>> ----------- >>> == Ptex == >>> >>> Resolution editing works now with VBO enabled >>> >>> Modified Paths: >>> -------------- >>> >>> branches/soc-2010-nicolasbishop/source/blender/editors/sculpt_paint/paint_ptex.c >>> branches/soc-2010-nicolasbishop/source/blender/gpu/intern/gpu_buffers.c >>> >>> Modified: >>> branches/soc-2010-nicolasbishop/source/blender/editors/sculpt_paint/paint_ptex.c >>> =================================================================== >>> --- >>> branches/soc-2010-nicolasbishop/source/blender/editors/sculpt_paint/paint_ptex.c >>> 2010-08-21 00:31:08 UTC (rev 31489) >>> +++ >>> branches/soc-2010-nicolasbishop/source/blender/editors/sculpt_paint/paint_ptex.c >>> 2010-08-21 03:09:20 UTC (rev 31490) >>> @@ -872,6 +872,31 @@ >>> } >>> } >>> >>> +static void ptex_redraw_selected(PBVHNode *node, void *data) >>> +{ >>> + PBVH *pbvh = data; >>> + MPtex *mptex; >>> + GridToFace *grid_face_map; >>> + CustomData *fdata; >>> + int totgrid, *grid_indices, i; >>> + >>> + BLI_pbvh_get_customdata(pbvh, NULL, &fdata); >>> + mptex = CustomData_get_layer(fdata, CD_MPTEX); >>> + grid_face_map = BLI_pbvh_get_grid_face_map(pbvh); >>> + BLI_pbvh_node_get_grids(pbvh, node, >>> + &grid_indices, &totgrid, NULL, NULL, >>> + NULL, NULL, NULL); >>> + >>> + for(i = 0; i < totgrid; ++i) { >>> + GridToFace *gtf = &grid_face_map[grid_indices[i]]; >>> + if(mptex[gtf->face].subfaces[gtf->offset].flag & >>> MPTEX_SUBFACE_SELECTED) { >>> + BLI_pbvh_node_set_flags(node, >>> + >>> SET_INT_IN_POINTER(PBVH_UpdateColorBuffers| >>> + >>> PBVH_UpdateRedraw)); >>> + } >>> + } >>> +} >>> + >>> static int ptex_face_resolution_set_exec(bContext *C, wmOperator *op) >>> { >>> ToolSettings *ts = CTX_data_tool_settings(C); >>> @@ -891,6 +916,8 @@ >>> } >>> } >>> >>> + BLI_pbvh_search_callback(ob->paint->pbvh, NULL, NULL, >>> ptex_redraw_selected, ob->paint->pbvh); >>> + >>> WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, ob); >>> >>> return OPERATOR_FINISHED; >>> >>> Modified: >>> branches/soc-2010-nicolasbishop/source/blender/gpu/intern/gpu_buffers.c >>> =================================================================== >>> --- branches/soc-2010-nicolasbishop/source/blender/gpu/intern/gpu_buffers.c >>> 2010-08-21 00:31:08 UTC (rev 31489) >>> +++ branches/soc-2010-nicolasbishop/source/blender/gpu/intern/gpu_buffers.c >>> 2010-08-21 03:09:20 UTC (rev 31490) >>> @@ -742,15 +742,22 @@ >>> >>> void GPU_update_grid_uv_buffer(GPU_Buffers *buffers, PBVH *pbvh, PBVHNode >>> *node, DMDrawFlags flags) >>> { >>> + CustomData *fdata; >>> + GridToFace *grid_face_map; >>> + MPtex *mptex; >>> float (*uv_data)[2]; >>> int *grid_indices, totgrid, gridsize, totvert; >>> >>> if(!buffers->vert_buf) >>> return; >>> >>> + BLI_pbvh_get_customdata(pbvh, NULL, &fdata); >>> + mptex = CustomData_get_layer(fdata, CD_MPTEX); >>> + grid_face_map = BLI_pbvh_get_grid_face_map(pbvh); >>> BLI_pbvh_node_get_grids(pbvh, node, >>> &grid_indices, &totgrid, NULL, &gridsize, >>> NULL, NULL, NULL); >>> + >>> /* for now, pbvh is required to give one node per subface in ptex >>> mode */ >>> assert(totgrid == 1); >>> >>> @@ -758,11 +765,31 @@ >>> uv_data= map_uv_buffer(buffers, (flags & DM_DRAW_PTEX), totvert); >>> >>> if(uv_data) { >>> - int u, v; >>> - for(v = 0; v < gridsize; ++v) { >>> - for(u = 0; u < gridsize; ++u, ++uv_data) { >>> - uv_data[0][0] = u / (gridsize - 1.0f); >>> - uv_data[0][1] = v / (gridsize - 1.0f); >>> + GridToFace *gtf = &grid_face_map[grid_indices[0]]; >>> + MPtex *pt = &mptex[gtf->face]; >>> + MPtexSubface *subface = &pt->subfaces[gtf->offset]; >>> + float u, v, ustep, vstep, vstart = 0; >>> + int x, y; >>> + >>> + if(flags & DM_DRAW_PTEX_TEXELS) { >>> + ustep = subface->res[0] >> 1; >>> + vstep = subface->res[1] >> 1; >>> + /* make quad texel pattern appear uniform across >>> all four subfaces */ >>> + if(gtf->offset % 2) >>> + vstart = 0.5; >>> + } >>> + else { >>> + ustep = 1; >>> + vstep = 1; >>> + } >>> + >>> + ustep /= gridsize - 1.0f; >>> + vstep /= gridsize - 1.0f; >>> + >>> + for(y = 0, v = vstart; y < gridsize; ++y, v += vstep) { >>> + for(x = 0, u = 0; x < gridsize; ++x, u += ustep, >>> ++uv_data) { >>> + uv_data[0][0] = u; >>> + uv_data[0][1] = v; >>> } >>> } >>> >>> @@ -1126,7 +1153,7 @@ >>> >>> if(ptex_edit) { >>> if(subface->flag & MPTEX_SUBFACE_SELECTED) >>> - glColor3ub(255, 255, 255); >>> + glColor3ub(255, 255, 255); >>> else >>> glColor3ub(128, 128, 128); >>> } >>> @@ -1224,7 +1251,7 @@ >>> glShadeModel((flags & DM_DRAW_FULLY_SMOOTH) ? GL_SMOOTH: GL_FLAT); >>> >>> if(buffers->vert_buf && buffers->index_buf) { >>> - GLboolean colmat; >>> + GLboolean use_colmat, colmat; >>> >>> glEnableClientState(GL_VERTEX_ARRAY); >>> glEnableClientState(GL_NORMAL_ARRAY); >>> @@ -1236,7 +1263,8 @@ >>> glBindBufferARB(GL_ARRAY_BUFFER_ARB, buffers->vert_buf); >>> glBindBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, >>> buffers->index_buf); >>> >>> - if(buffers->color_buf) { >>> + use_colmat = buffers->color_buf || (flags & >>> DM_DRAW_PTEX_TEXELS); >>> + if(use_colmat) { >>> glColorMaterial(GL_FRONT_AND_BACK, GL_DIFFUSE); >>> glGetBooleanv(GL_COLOR_MATERIAL, &colmat); >>> glEnable(GL_COLOR_MATERIAL); >>> @@ -1251,7 +1279,33 @@ >>> } >>> if(buffers->uv_buf) { >>> glEnable(GL_TEXTURE_2D); >>> - glBindTexture(GL_TEXTURE_2D, >>> buffers->ptex[0]); >>> + if(flags & DM_DRAW_PTEX_TEXELS) { >>> + int *grid_indices; >>> + CustomData *fdata; >>> + GridToFace *gtf; >>> + MPtex *mptex, *pt; >>> + MPtexSubface *subface; >>> + GridToFace *grid_face_map; >>> + >>> + BLI_pbvh_get_customdata(pbvh, NULL, >>> &fdata); >>> + mptex = CustomData_get_layer(fdata, >>> CD_MPTEX); >>> + grid_face_map = >>> BLI_pbvh_get_grid_face_map(pbvh); >>> + BLI_pbvh_node_get_grids(pbvh, node, >>> + >>> &grid_indices, NULL, NULL, NULL, >>> + NULL, NULL, >>> NULL); >>> + >>> + gtf = >>> &grid_face_map[grid_indices[0]]; >>> + pt = &mptex[gtf->face]; >>> + subface = >>> &pt->subfaces[gtf->offset]; >>> + >>> + gpu_bind_ptex_pattern(); >>> + if(subface->flag & >>> MPTEX_SUBFACE_SELECTED) >>> + glColor3ub(255, 255, 255); >>> + else >>> + glColor3ub(128, 128, 128); >>> + } >>> + else >>> + glBindTexture(GL_TEXTURE_2D, >>> buffers->ptex[0]); >>> glBindBufferARB(GL_ARRAY_BUFFER_ARB, >>> buffers->uv_buf); >>> glTexCoordPointer(2, GL_FLOAT, 0, (void*)0); >>> } >>> @@ -1273,7 +1327,7 @@ >>> glDrawElements(GL_TRIANGLES, buffers->tot_tri * 3, >>> buffers->index_type, 0); >>> } >>> >>> - if(buffers->color_buf && !colmat) >>> + if(use_colmat && !colmat) >>> glDisable(GL_COLOR_MATERIAL); >>> >>> glBindBufferARB(GL_ARRAY_BUFFER_ARB, 0); >>> >>> >>> _______________________________________________ >>> Bf-blender-cvs mailing list >>> [email protected] >>> http://lists.blender.org/mailman/listinfo/bf-blender-cvs >>> >> _______________________________________________ >> Bf-committers mailing list >> [email protected] >> http://lists.blender.org/mailman/listinfo/bf-committers >> > _______________________________________________ > Bf-committers mailing list > [email protected] > http://lists.blender.org/mailman/listinfo/bf-committers > _______________________________________________ Bf-committers mailing list [email protected] http://lists.blender.org/mailman/listinfo/bf-committers
