def glDrawBMEdges(lbme, opts=None, enableShader=True): if opts and 'line width' in opts and opts['line width'] <= 0.0: return glSetOptions('line', opts) if enableShader: bmeshShader.enable() dn = opts['normal'] if opts and 'normal' in opts else 0.0 bgl.glBegin(bgl.GL_LINES) for bme in lbme: bmv0, bmv1 = bme.verts bgl.glNormal3f(*bmv0.normal) bgl.glVertex3f(*(bmv0.co + bmv0.normal * dn)) bgl.glNormal3f(*bmv1.normal) bgl.glVertex3f(*(bmv1.co + bmv1.normal * dn)) bgl.glEnd() bgl.glDisable(bgl.GL_LINE_STIPPLE) if opts and opts.get('mirror x', False): glSetOptions('line mirror', opts) bgl.glBegin(bgl.GL_LINES) for bme in lbme: bmv0, bmv1 = bme.verts co0, co1 = bmv0.co, bmv1.co bgl.glNormal3f(-bmv0.normal.x, bmv0.normal.y, bmv0.normal.z) bgl.glVertex3f(-co0.x, co0.y, co0.z) bgl.glNormal3f(-bmv1.normal.x, bmv1.normal.y, bmv1.normal.z) bgl.glVertex3f(-co1.x, co1.y, co1.z) bgl.glEnd() bgl.glDisable(bgl.GL_LINE_STIPPLE) if enableShader: bmeshShader.disable()
def drawPath(self): """ Draw ray on screen. """ bgl.glColor4f(0.8, 0.8, 0.9, 0.01) bgl.glLineWidth(0.01) bgl.glBegin(bgl.GL_LINES) bgl.glVertex3f(self.p1[0], self.p1[1], self.p1[2]) bgl.glVertex3f(self.p2[0], self.p2[1], self.p2[2]) bgl.glEnd() bgl.glNormal3f(0.0, 0.0, 1.0) bgl.glShadeModel(bgl.GL_SMOOTH)
def drawPath(self): """ Draw ray on screen. """ bgl.glColor4f(0.8,0.8,0.9,0.01) bgl.glLineWidth(0.01) bgl.glBegin(bgl.GL_LINES) bgl.glVertex3f(self.p1[0],self.p1[1],self.p1[2]) bgl.glVertex3f(self.p2[0],self.p2[1],self.p2[2]) bgl.glEnd() bgl.glNormal3f(0.0,0.0,1.0) bgl.glShadeModel(bgl.GL_SMOOTH);
def render_triangles(sx, sy, sz): # optimized for triangle-only meshes # (source meshes that have been triangulated) bmeshShader.assign('vert_scale', (sx, sy, sz)) bmeshShader.assign('selected', 0.0) for bmf in lbmf: bmeshShader.assign('selected', 1.0 if bmf.select else 0.0) if bmf.smooth: v0, v1, v2 = bmf.verts if v0 not in vdict: vdict[v0] = (v0.co, v0.normal) if v1 not in vdict: vdict[v1] = (v1.co, v1.normal) if v2 not in vdict: vdict[v2] = (v2.co, v2.normal) (c0, n0), (c1, n1), (c2, n2) = vdict[v0], vdict[v1], vdict[v2] bmeshShader.assign('vert_norm', n0) bmeshShader.assign('vert_pos', c0) # bgl.glNormal3f(*n0) # bgl.glVertex3f(*c0) bmeshShader.assign('vert_norm', n1) bmeshShader.assign('vert_pos', c1) # bgl.glNormal3f(*n1) # bgl.glVertex3f(*c1) bmeshShader.assign('vert_norm', n2) bmeshShader.assign('vert_pos', c2) # bgl.glNormal3f(*n2) # bgl.glVertex3f(*c2) else: bgl.glNormal3f(*bmf.normal) v0, v1, v2 = bmf.verts if v0 not in vdict: vdict[v0] = (v0.co, v0.normal) if v1 not in vdict: vdict[v1] = (v1.co, v1.normal) if v2 not in vdict: vdict[v2] = (v2.co, v2.normal) (c0, n0), (c1, n1), (c2, n2) = vdict[v0], vdict[v1], vdict[v2] bmeshShader.assign('vert_pos', c0) # bgl.glVertex3f(*c0) bmeshShader.assign('vert_pos', c1) # bgl.glVertex3f(*c1) bmeshShader.assign('vert_pos', c2)
def render_triangles(sx, sy, sz): # optimized for triangle-only meshes # (source meshes that have been triangulated) bmeshShader.assign('vert_scale', (sx, sy, sz)) bmeshShader.assign('selected', 0.0) for bmf in lbmf: bmeshShader.assign('selected', 1.0 if bmf.select else 0.0) if bmf.smooth: v0, v1, v2 = bmf.verts if v0 not in vdict: vdict[v0] = (v0.co, v0.normal) if v1 not in vdict: vdict[v1] = (v1.co, v1.normal) if v2 not in vdict: vdict[v2] = (v2.co, v2.normal) (c0, n0), (c1, n1), (c2, n2) = vdict[v0], vdict[v1], vdict[v2] bmeshShader.assign('vert_norm', n0) bmeshShader.assign('vert_pos', c0) # bgl.glNormal3f(*n0) # bgl.glVertex3f(*c0) bmeshShader.assign('vert_norm', n1) bmeshShader.assign('vert_pos', c1) # bgl.glNormal3f(*n1) # bgl.glVertex3f(*c1) bmeshShader.assign('vert_norm', n2) bmeshShader.assign('vert_pos', c2) # bgl.glNormal3f(*n2) # bgl.glVertex3f(*c2) else: bgl.glNormal3f(*bmf.normal) v0, v1, v2 = bmf.verts if v0 not in vdict: vdict[v0] = (v0.co, v0.normal) if v1 not in vdict: vdict[v1] = (v1.co, v1.normal) if v2 not in vdict: vdict[v2] = (v2.co, v2.normal) (c0, n0), (c1, n1), (c2, n2) = vdict[v0], vdict[v1], vdict[v2] bmeshShader.assign('vert_pos', c0) # bgl.glVertex3f(*c0) bmeshShader.assign('vert_pos', c1) # bgl.glVertex3f(*c1) bmeshShader.assign('vert_pos', c2)
def glDrawBMVerts(lbmv, opts=None, enableShader=True): if opts and 'point size' in opts and opts['point size'] <= 0.0: return glSetOptions('point', opts) if enableShader: bmeshShader.enable() dn = opts['normal'] if opts and 'normal' in opts else 0.0 bgl.glBegin(bgl.GL_POINTS) for bmv in lbmv: bgl.glNormal3f(*bmv.normal) bgl.glVertex3f(*(bmv.co + bmv.normal * dn)) bgl.glEnd() bgl.glDisable(bgl.GL_LINE_STIPPLE) if opts and opts.get('mirror x', False): glSetOptions('point mirror', opts) bgl.glBegin(bgl.GL_POINTS) for bmv in lbmv: bgl.glNormal3f(-bmv.normal.x, bmv.normal.y, bmv.normal.z) bgl.glVertex3f(-bmv.co.x, bmv.co.y, bmv.co.z) bgl.glEnd() bgl.glDisable(bgl.GL_LINE_STIPPLE) if enableShader: bmeshShader.disable()
def glDrawBMFaces(lbmf, opts=None): glSetOptions('poly', opts) bgl.glBegin(bgl.GL_TRIANGLES) for bmf in lbmf: bgl.glNormal3f(*bmf.normal) bmv0 = bmf.verts[0] for bmv1, bmv2 in zip(bmf.verts[1:-1], bmf.verts[2:]): bgl.glVertex3f(*bmv0.co) bgl.glVertex3f(*bmv1.co) bgl.glVertex3f(*bmv2.co) bgl.glEnd() bgl.glDisable(bgl.GL_LINE_STIPPLE) if opts and opts.get('mirror x', False): glSetOptions('poly mirror', opts) bgl.glBegin(bgl.GL_TRIANGLES) for bmf in lbmf: bgl.glNormal3f(-bmf.normal.x, bmf.normal.y, bmf.normal.z) bmv0 = bmf.verts[0] for bmv1, bmv2 in zip(bmf.verts[1:-1], bmf.verts[2:]): bgl.glVertex3f(-bmv0.co.x, bmv0.co.y, bmv0.co.z) bgl.glVertex3f(-bmv1.co.x, bmv1.co.y, bmv1.co.z) bgl.glVertex3f(-bmv2.co.x, bmv2.co.y, bmv2.co.z) bgl.glEnd() bgl.glDisable(bgl.GL_LINE_STIPPLE)
def glDrawBMFaces(lbmf, opts=None): glSetOptions('poly', opts) bgl.glBegin(bgl.GL_TRIANGLES) for bmf in lbmf: bgl.glNormal3f(*bmf.normal) bmv0 = bmf.verts[0] for bmv1,bmv2 in zip(bmf.verts[1:-1],bmf.verts[2:]): bgl.glVertex3f(*bmv0.co) bgl.glVertex3f(*bmv1.co) bgl.glVertex3f(*bmv2.co) bgl.glEnd() bgl.glDisable(bgl.GL_LINE_STIPPLE) if opts and opts.get('mirror x', False): glSetOptions('poly mirror', opts) bgl.glBegin(bgl.GL_TRIANGLES) for bmf in lbmf: bgl.glNormal3f(-bmf.normal.x, bmf.normal.y, bmf.normal.z) bmv0 = bmf.verts[0] for bmv1,bmv2 in zip(bmf.verts[1:-1],bmf.verts[2:]): bgl.glVertex3f(-bmv0.co.x, bmv0.co.y, bmv0.co.z) bgl.glVertex3f(-bmv1.co.x, bmv1.co.y, bmv1.co.z) bgl.glVertex3f(-bmv2.co.x, bmv2.co.y, bmv2.co.z) bgl.glEnd() bgl.glDisable(bgl.GL_LINE_STIPPLE)
def render_general(sx, sy, sz): bmeshShader.assign('vert_scale', (sx, sy, sz)) bmeshShader.assign('selected', 0.0) for bmf in lbmf: bmeshShader.assign('selected', 1.0 if bmf.select else 0.0) if bmf.smooth: for v0, v1, v2 in triangulateFace(bmf.verts): if v0 not in vdict: vdict[v0] = (v0.co, v0.normal) if v1 not in vdict: vdict[v1] = (v1.co, v1.normal) if v2 not in vdict: vdict[v2] = (v2.co, v2.normal) (c0, n0), (c1, n1), (c2, n2) = vdict[v0], vdict[v1], vdict[v2] bmeshShader.assign('vert_norm', n0) bmeshShader.assign('vert_pos', c0) bmeshShader.assign('vert_norm', n1) bmeshShader.assign('vert_pos', c1) bmeshShader.assign('vert_norm', n2) bmeshShader.assign('vert_pos', c2) else: bgl.glNormal3f(*bmf.normal) bmeshShader.assign('vert_norm', bmf.normal) for v0, v1, v2 in triangulateFace(bmf.verts): if v0 not in vdict: vdict[v0] = (v0.co, v0.normal) if v1 not in vdict: vdict[v1] = (v1.co, v1.normal) if v2 not in vdict: vdict[v2] = (v2.co, v2.normal) (c0, n0), (c1, n1), (c2, n2) = vdict[v0], vdict[v1], vdict[v2] bmeshShader.assign('vert_pos', c0) bmeshShader.assign('vert_pos', c1) bmeshShader.assign('vert_pos', c2)
def render_general(sx, sy, sz): bmeshShader.assign('vert_scale', (sx, sy, sz)) bmeshShader.assign('selected', 0.0) for bmf in lbmf: bmeshShader.assign('selected', 1.0 if bmf.select else 0.0) if bmf.smooth: for v0, v1, v2 in triangulateFace(bmf.verts): if v0 not in vdict: vdict[v0] = (v0.co, v0.normal) if v1 not in vdict: vdict[v1] = (v1.co, v1.normal) if v2 not in vdict: vdict[v2] = (v2.co, v2.normal) (c0, n0), (c1, n1), (c2, n2) = vdict[v0], vdict[v1], vdict[v2] bmeshShader.assign('vert_norm', n0) bmeshShader.assign('vert_pos', c0) bmeshShader.assign('vert_norm', n1) bmeshShader.assign('vert_pos', c1) bmeshShader.assign('vert_norm', n2) bmeshShader.assign('vert_pos', c2) else: bgl.glNormal3f(*bmf.normal) bmeshShader.assign('vert_norm', bmf.normal) for v0, v1, v2 in triangulateFace(bmf.verts): if v0 not in vdict: vdict[v0] = (v0.co, v0.normal) if v1 not in vdict: vdict[v1] = (v1.co, v1.normal) if v2 not in vdict: vdict[v2] = (v2.co, v2.normal) (c0, n0), (c1, n1), (c2, n2) = vdict[v0], vdict[v1], vdict[v2] bmeshShader.assign('vert_pos', c0) bmeshShader.assign('vert_pos', c1) bmeshShader.assign('vert_pos', c2)
def render(sx, sy, sz): bmeshShader.assign('vert_scale', (sx, sy, sz)) for sf in lsf: for v0, v1, v2 in triangulateFace(sf): (c0, n0), (c1, n1), (c2, n2) = v0, v1, v2 bgl.glNormal3f(*n0) bgl.glVertex3f(*c0) bgl.glNormal3f(*n1) bgl.glVertex3f(*c1) bgl.glNormal3f(*n2) bgl.glVertex3f(*c2)
def render(sx, sy, sz): bmeshShader.assign('vert_scale', (sx, sy, sz)) for sf in lsf: for v0, v1, v2 in triangulateFace(sf): (c0, n0), (c1, n1), (c2, n2) = v0, v1, v2 bgl.glNormal3f(*n0) bgl.glVertex3f(*c0) bgl.glNormal3f(*n1) bgl.glVertex3f(*c1) bgl.glNormal3f(*n2) bgl.glVertex3f(*c2)
def glDrawBMFaces(lbmf, opts=None, enableShader=True): glSetOptions('poly', opts) if enableShader: bmeshShader.enable() dn = opts['normal'] if opts and 'normal' in opts else 0.0 bgl.glBegin(bgl.GL_TRIANGLES) for bmf in lbmf: bgl.glNormal3f(*bmf.normal) bmv0 = bmf.verts[0] for bmv1, bmv2 in zip(bmf.verts[1:-1], bmf.verts[2:]): if bmf.smooth: bgl.glNormal3f(*bmv0.normal) bgl.glVertex3f(*(bmv0.co)) #+bmv0.normal*dn)) if bmf.smooth: bgl.glNormal3f(*bmv1.normal) bgl.glVertex3f(*(bmv1.co)) #+bmv1.normal*dn)) if bmf.smooth: bgl.glNormal3f(*bmv2.normal) bgl.glVertex3f(*(bmv2.co)) #+bmv2.normal*dn)) bgl.glEnd() bgl.glDisable(bgl.GL_LINE_STIPPLE) if opts and opts.get('mirror x', False): glSetOptions('poly mirror', opts) bgl.glBegin(bgl.GL_TRIANGLES) for bmf in lbmf: bgl.glNormal3f(-bmf.normal.x, bmf.normal.y, bmf.normal.z) bmv0 = bmf.verts[0] for bmv1, bmv2 in zip(bmf.verts[1:-1], bmf.verts[2:]): if bmf.smooth: bgl.glNormal3f(-bmv0.normal.x, bmv0.normal.y, bmv0.normal.z) bgl.glVertex3f(-bmv0.co.x, bmv0.co.y, bmv0.co.z) if bmf.smooth: bgl.glNormal3f(-bmv1.normal.x, bmv1.normal.y, bmv1.normal.z) bgl.glVertex3f(-bmv1.co.x, bmv1.co.y, bmv1.co.z) if bmf.smooth: bgl.glNormal3f(-bmv2.normal.x, bmv2.normal.y, bmv2.normal.z) bgl.glVertex3f(-bmv2.co.x, bmv2.co.y, bmv2.co.z) bgl.glEnd() bgl.glDisable(bgl.GL_LINE_STIPPLE) if enableShader: bmeshShader.disable()