Exemple #1
0
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)
Exemple #5
0
 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)
Exemple #6
0
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()
Exemple #7
0
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)
Exemple #10
0
 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)
Exemple #12
0
 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)
Exemple #13
0
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()