本文整理汇总了Python中opengltk.OpenGL.GL.glNormal3fv方法的典型用法代码示例。如果您正苦于以下问题:Python GL.glNormal3fv方法的具体用法?Python GL.glNormal3fv怎么用?Python GL.glNormal3fv使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类opengltk.OpenGL.GL
的用法示例。
在下文中一共展示了GL.glNormal3fv方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: drawpolygons
# 需要导入模块: from opengltk.OpenGL import GL [as 别名]
# 或者: from opengltk.OpenGL.GL import glNormal3fv [as 别名]
def drawpolygons(self):
g = self.geom
vertices = g.getVertices()
faces = g.getFaces()
normals = g.getFNormals()
GL.glDisable(GL.GL_CULL_FACE)
for i,f in enumerate(faces):
GL.glBegin(GL.GL_POLYGON)
GL.glNormal3fv(normals[i])
for vi in f:
GL.glVertex3fv(vertices[vi])
GL.glEnd()
i+=1
示例2: Draw
# 需要导入模块: from opengltk.OpenGL import GL [as 别名]
# 或者: from opengltk.OpenGL.GL import glNormal3fv [as 别名]
#.........这里部分代码省略.........
sE = self.stripEnd
self.sE = sE
self.sB= sB
for stripNum in range(len(sB)):
#print 'stripNum',stripNum
GL.glPushName(stripNum)
GL.glBegin(GL.GL_TRIANGLE_STRIP)
# per part material properties
if frontMat:
if frontMatBind[noCol] == PER_PART:
if self.isNewColor(c=frontMat[noCol][stripNum]):
GL.glColor4fv(frontMat[noCol][stripNum])
if n is not None:
if frontMat:
for j in range(5):
if frontMatBind[j]==PER_PART:
glMaterialWithCheck( face,
propConst[j],
frontMat[j][stripNum] )
if backMat and not self.frontAndBack:
for j in range(5):
if backMatBind[j] == PER_PART:
glMaterialWithCheck( GL.GL_BACK,
propConst[j],
backMat[j][stripNum] )
# loop over each vertex in a strip
i = 0
for ind in range(sB[stripNum],sE[stripNum]):
if ind >= len(vert):
print 'ERROR',ind
v = vert[ind]
# normals for flat or smooth shading
if n is not None:
if self.shading==GL.GL_FLAT:
if i > 1:
GL.glNormal3dv(n[sB[stripNum]+i-(2*(stripNum+1))])
elif self.shading==GL.GL_SMOOTH:
GL.glNormal3fv(n[ind])
else:
pass
# per face (per triangle) material properties
if n is None:
if frontMat:
if frontMatBind[noCol] == PER_FACE:
if i > 1:
if self.isNewColor(c=frontMat[noCol][sB[stripNum]+i-(2*(stripNum+1))]):
GL.glColor4fv(frontMat[noCol][sB[stripNum]+i-(2*(stripNum+1))])
else:
if frontMat:
for k in range(5):
if frontMatBind[k] == PER_FACE:
if i > 1:
glMaterialWithCheck( face,
propConst[k],
frontMat[k][sB[stripNum]+i-(2*(stripNum+1))] )
if backMat and not self.frontAndBack:
for k in range(5):
if backMatBind[k] == PER_FACE:
if i > 1 and i%2==0:
glMaterialWithCheck( GL.GL_BACK,
propConst[k],
backMat[k][sB[stripNum]+i-(2*(stripNum+1))] )
# per vertex material properties
if n is None:
if frontMat:
if frontMatBind[noCol] == PER_VERTEX:
if self.isNewColor(c=frontMat[noCol][sB[stripNum]+i]):
GL.glColor4fv(frontMat[noCol][sB[stripNum]+i])
else:
if frontMat:
for k in range(5):
if frontMatBind[k] == PER_VERTEX:
glMaterialWithCheck( face,
propConst[k],
frontMat[k][sB[stripNum]+i] )
if backMat and not self.frontAndBack:
for k in range(5):
if backMatBind[k] == PER_VERTEX:
glMaterialWithCheck( GL.GL_BACK,
propConst[k],
backMat[k][sB[stripNum]+i] )
# draw vertex
#GL.glVertex3dv(v)
gllib.glVertex3fv(v)
i = i + 1
GL.glEnd()
GL.glPopName()
return 1
示例3: cyldrawWithInterpolatedColors
# 需要导入模块: from opengltk.OpenGL import GL [as 别名]
# 或者: from opengltk.OpenGL.GL import glNormal3fv [as 别名]
def cyldrawWithInterpolatedColors(self,
x, y, radx, rady, colxf=None, colxb=None,
colyf=None, colyb=None, face=None, **kw):
# draw a cylinder going from x to y with radii rx, and ry and materials
# colxf and colxb for front and back mterial in x
# colyf and colyb for front and back mterial in y
# face can be GL_FRONT_AND_BACK or something else
# determine scale and rotation of template
import math
sz=0.0
for i in (0,1,2): sz=sz+(x[i]-y[i])*(x[i]-y[i])
if sz <= 0.0: return
sz = math.sqrt(sz)
valueCos = (y[2]-x[2])/sz
valueCos = min(valueCos, 1)
valueCos = max(valueCos, -1)
rx = -180.0*math.acos(valueCos)/math.pi
dx = y[0]-x[0]
dy = y[1]-x[1]
if math.fabs(dx) < 0.00001 and math.fabs(dy) < 0.00001:
rz = 0.0
else:
rz = -180.0*math.atan2(dx,dy)/math.pi
GL.glPushMatrix()
GL.glTranslatef(float(x[0]),float(x[1]),float(x[2]))
if rz<=180.0 and rz >=-180.0: GL.glRotatef(float(rz), 0., 0., 1.)
GL.glRotatef(float(rx), 1., 0., 0.)
# draw cylinder
GL.glBegin(GL.GL_QUAD_STRIP)
for i in range(self.npoly+1):
if self.invertNormals:
GL.glNormal3fv(-self.n[i])
else:
GL.glNormal3fv(self.n[i])
if colxf:
for m in (0,1,2,3,4):
if colxf[m] is not None:
#print "colxf[m]",type(colxf[m])
#print 'AAAAA', colxf[m]
glMaterialWithCheck( face, viewerConst.propConst[m],
colxf[m], check=self.checkMat )
if colxf[1] is not None:
GL.glColor4fv(colxf[1])
if colxb and face!=GL.GL_FRONT_AND_BACK:
for m in (0,1,2,3,4):
if colxb[m] is not None:
glMaterialWithCheck( GL.GL_BACK,
viewerConst.propConst[m],
colxb[m], check=self.checkMat )
vx = self.v[i][0]
GL.glVertex3f(float(vx[0]*radx), float(vx[1]*radx), float(vx[2]*sz))
if colyf:
for m in (0,1,2,3,4):
if colyf[m] is not None:
#print 'BBBBB', colyf[m]
glMaterialWithCheck( face, viewerConst.propConst[m],
colyf[m], check=self.checkMat )
if colyf[1] is not None:
GL.glColor4fv(colyf[1])
if colyb and face!=GL.GL_FRONT_AND_BACK:
for m in (0,1,2,3,4):
if colyb[m] is not None:
glMaterialWithCheck( GL.GL_BACK,
viewerConst.propConst[m],
colyb[m], check=self.checkMat )
vy = self.v[i][1]
GL.glVertex3f(float(vy[0]*rady), float(vy[1]*rady), float(vy[2]*sz))
GL.glEnd()
GL.glPopMatrix()
示例4: Draw
# 需要导入模块: from opengltk.OpenGL import GL [as 别名]
# 或者: from opengltk.OpenGL.GL import glNormal3fv [as 别名]
def Draw(self):
for i in xrange(len(self.vertexSet)):
if len(self.radii)==1:
rad = self.radii[0]
else:
rad = self.radii[i]
if len(self.angles)==1:
ang = self.angles[0]
else:
ang = self.angles[i]
vx, vy, vz = norm = self.vertexSet.normals.array[i]
if self.vectors is None:
# get orthogonal vector
dx, dy, dz = fabs(vx), fabs(vy), fabs(vz)
mini= min( [dx, dy, dz] )
if mini==dx:
nov = 1./sqrt( vz*vz+ vy*vy )
ovx = 0.
ovy = -vz*nov
ovz = vy*nov
elif mini==dy:
nov = 1./sqrt( vz*vz+ vx*vx )
ovx = -vz*nov
ovy = 0.
ovz = vx*nov
else:
nov = 1./sqrt( vy*vy+ vx*vx )
ovx = -vy*nov
ovy = vx*nov
ovz = 0.
vec = [ovx, ovy, ovz]
elif len(self.vectors)==1:
vec = self.vectors[0]
else:
vec = self.vectors[i]
angRad = ang*pi*0.00555555555556
nsegments = int(ang/self.degreesPerSegment) + 1
d = angRad / nsegments # increment
a = 0 # starting angle
GL.glNormal3fv(norm.astype('f'))
GL.glPushName(i)
GL.glBegin(GL.GL_TRIANGLE_FAN)
if self.materials[GL.GL_FRONT].binding[0]==viewerConst.PER_VERTEX:
col = self.materials[GL.GL_FRONT].prop[0]
GL.glColor4fv(col[i])
center = Numeric.array(self.vertexSet.vertices.array[i])
vec = Numeric.array(vec).astype('f')
#vec = vec/sqrt(Numeric.sum(vec*vec))
vec2 = Numeric.zeros(3, 'f')
vec2[0] = vec[1]*norm[2] - vec[2]*norm[1]
vec2[1] = vec[2]*norm[0] - vec[0]*norm[2]
vec2[2] = vec[0]*norm[1] - vec[1]*norm[0]
GL.glVertex3fv(center)
for j in range(nsegments+1):
p = center + cos(a)*vec*rad + sin(a)*vec2*rad
GL.glVertex3fv(p.astype('f'))
a = a+d
GL.glEnd()
GL.glPopName()
return 1