本文整理汇总了Python中pandac.PandaModules.PNMImage.setMaxval方法的典型用法代码示例。如果您正苦于以下问题:Python PNMImage.setMaxval方法的具体用法?Python PNMImage.setMaxval怎么用?Python PNMImage.setMaxval使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类pandac.PandaModules.PNMImage
的用法示例。
在下文中一共展示了PNMImage.setMaxval方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: run
# 需要导入模块: from pandac.PandaModules import PNMImage [as 别名]
# 或者: from pandac.PandaModules.PNMImage import setMaxval [as 别名]
def run(self):
size = 256
pb = Perlin.Perlin( persistance = 0.500, smooth = False, seed = random.random() )
myImage2 = pb.imgNoise2D(size,True)
myImage=PNMImage(size,size)
myImage.makeGrayscale()
myImage.setMaxval( (2<<16)-1 )
myImage.fill(0.5)
line = lineDrawer.LineDrawer(myImage,(42,180),(13,253),13)
for x in range(size):
for y in range(size):
gray = myImage.getGray(x,y) - 0.5
gray = gray + (myImage2.getGray(x,y) - 0.5)
myImage.setGray(x,y,gray + 0.5)
self.myTexture.load(myImage)
示例2: imgNoise2D
# 需要导入模块: from pandac.PandaModules import PNMImage [as 别名]
# 或者: from pandac.PandaModules.PNMImage import setMaxval [as 别名]
def imgNoise2D(self, size = 512, autoOctave = False):
myImage=PNMImage(1,1)
myImage.makeGrayscale()
myImage.fill(0.5)
octaves = self.numberOfOctaves
if autoOctave == True:
octaves = int(math.log(size,2))
self.pNoise = range(0,octaves)
random.seed(self.seed)
for i in range(1,octaves):
self.pNoise[i] = PerlinNoise2( 1, 1, 256, random.randint(1,10000))
for o in range(1,octaves):
freq = 2**o
oldImage = myImage
myImage = PNMImage(freq+1,freq+1)
myImage.makeGrayscale()
myImage.setMaxval( (2<<16)-1 )
myImage.gaussianFilterFrom(1.0, oldImage)
for x in range(0,freq):
for y in range(0,freq):
newNoise = (self.pNoise[o].noise( x, y)*(self.persistance**o)) / 2
myImage.setGray(x,y, myImage.getGray(x,y) + newNoise)#*32)
for i in range(0,freq+1):
myImage.setGray(i,freq, myImage.getGray(i%freq,0))
myImage.setGray(freq,i, myImage.getGray(0,i%freq))
oldImage = myImage
myImage = PNMImage(size,size)
myImage.makeGrayscale()
myImage.setMaxval( (2<<16)-1 )
myImage.gaussianFilterFrom(1.0, oldImage)
return myImage
示例3: Heightfield
# 需要导入模块: from pandac.PandaModules import PNMImage [as 别名]
# 或者: from pandac.PandaModules.PNMImage import setMaxval [as 别名]
class Heightfield(DirectObject):# threading.Thread):
#def __init__(self):
# threading.Thread.__init__(self)#, name="test")
def __init__( self ):
'''try:
import psyco
psyco.full()
except ImportError:
pass'''
self.ts0 = TextureStage( 'dirtL0' )
self.ts1 = TextureStage( 'dirtL1' )
self.ts2 = TextureStage( 'dirtL3' )
self.tex0 = loader.loadTexture( 'mud-tile.png' )
self.mTerrainHeight = MAPSIZE*3
self.mHorizontalScale = MAPSIZE/TEXSIZE
size = int(TEXSIZE) + 1
pb = Perlin.Perlin( persistance = 0.500, smooth = False, seed = random.random() )
myImage2 = pb.imgNoise2D(size,True)
self.myImage=PNMImage(size,size)
self.myImage.makeGrayscale()
self.myImage.setMaxval( (2<<16)-1 )
line = lineDrawer.LineDrawer(self.myImage,(42,180),(13,240),30)
for x in range(size):
for y in range(size):
if self.myImage.getGray(x,y) > myImage2.getGray(x,y):
gray = self.myImage.getGray(x,y) - 0.5
else:
gray = myImage2.getGray(x,y) - 0.5
self.myImage.setGray(x,y,gray + 0.5)
#size = int(TEXSIZE) + 1
#randSeed = random.random()
#p1 = Perlin.Perlin( persistance = 0.500, smooth = False, seed = randSeed )
#self.myImage = p1.imgNoise2D(size,True)
self.terrain1 = GeoMipTerrain("myTerrain1")
self.terrain2 = GeoMipTerrain("myTerrain2")
self.setupHeightfield(self.terrain1)
self.setupHeightfield(self.terrain2)
self.terrain1.getRoot().reparentTo(render)
self.terrain2.getRoot().reparentTo(render)
self.accept( "g", self.flattenArea)
self.accept( "u", self.updateWithNewImage)
def setupHeightfield( self , terrain):
terrain.setHeightfield(self.myImage)
terrain.setBruteforce(True)
terrain.setBlockSize(64)
terrain.setNear(128)
terrain.setFar(512)
terrain.setFocalPoint(base.camera.getPos(render))
taskMgr.add(self.updateTask, "update")
mHeightFieldNode = terrain.getRoot()
mHeightFieldNode.setPos( -MAPSIZE/2, -MAPSIZE/2, - self.mTerrainHeight/2)
mHeightFieldNode.setSx(self.mHorizontalScale)
mHeightFieldNode.setSy(self.mHorizontalScale)
mHeightFieldNode.setSz(self.mTerrainHeight)
terrain.generate()
scale = 1.0
mHeightFieldNode.setTexScale( self.ts0, scale, scale )
mHeightFieldNode.setTexture( self.ts0, self.tex0, 1 )
scale = 32.0
mHeightFieldNode.setTexScale( self.ts1, scale, scale )
mHeightFieldNode.setTexture( self.ts1, self.tex0, 1 )
scale = 128.0
mHeightFieldNode.setTexScale( self.ts2, scale, scale )
mHeightFieldNode.setTexture( self.ts2, self.tex0, 1 )
def flattenArea( self ):
tilePos = (500,500)
tileSize = (4000,4000)
imgTilePos = self.world2MapPos(tilePos)
imgTileSize = self.world2MapPos( (tilePos[0] + tileSize[0], tilePos[1] + tileSize[1]) )
imgTileSize = (imgTileSize[0] - imgTilePos[0], imgTileSize[1] - imgTilePos[1])
tileSquare = PNMImage(Filename("tile.png"))
tileStamp = PNMImage(int(imgTileSize[0] * (5/3)),int(imgTileSize[1] * (5/3)))
tileStamp.makeGrayscale()
tileStamp.addAlpha()
#.........这里部分代码省略.........
示例4: TerrainTile
# 需要导入模块: from pandac.PandaModules import PNMImage [as 别名]
# 或者: from pandac.PandaModules.PNMImage import setMaxval [as 别名]
#.........这里部分代码省略.........
self.image = PNMImage(heightMapSize, heightMapSize, 1, 65535)
ySize = self.image.getYSize() - 1
getHeight = self.terrain.getHeight
setGray = self.image.setGray
xo = self.xOffset
yo = self.yOffset
d = self.heightMapDetail
for x in range(self.image.getXSize()):
for y in range(ySize + 1):
height = getHeight(x / d + xo, y / d + yo)
# feed pixel into image
# why is it necessary to invert the y axis I wonder?
setGray(x, ySize - y, height)
#self.postProcessImage()
if SAVED_HEIGHT_MAPS:
fileName = "maps/height/" + self.name + ".png"
logging.info( "saving heightmap to " + fileName)
self.image.write(Filename(fileName))
def postProcessImage(self):
"""Perform filters and manipulations on the heightmap image."""
#self.image.gaussianFilter()
def setWireFrame(self, state):
self.getRoot().setRenderModeWireframe()
def makeSlopeMap(self):
self.slopeMap = PNMImage()
if SAVED_SLOPE_MAPS:
fileName = "maps/slope/" + self.name + ".png"
if self.slopeMap.read(Filename(fileName)):
logging.info( "read slopemap from " + fileName)
return
self.slopeMap = PNMImage(self.terrain.heightMapSize, self.terrain.heightMapSize)
self.slopeMap.makeGrayscale()
self.slopeMap.setMaxval(65535)
size = self.slopeMap.getYSize()
getNormal = self.getNormal
setGray = self.slopeMap.setGray
for x in range(size):
for y in range(size):
#note getNormal works at the same resolution as the heightmap
normal = getNormal(x, y)
# feed pixel into image
# why is it necessary to invert the y axis I wonder?
#logging.info( normal)
normal.z /= self.terrain.getSz()
normal.normalize()
slope = 1.0 - normal.dot(Vec3(0, 0, 1))
setGray(x, y, slope)
if SAVED_SLOPE_MAPS:
fileName = "maps/slope/" + self.name + ".png"
logging.info( "saving slopemap to " + fileName)
self.slopeMap.write(Filename(fileName))
def createGroups(self):
self.statics = self.getRoot().attachNewNode(self.name + "_statics")
self.statics.setSz(1.0 / self.terrain.getSz())
self.statics.setSx(1.0 / self.terrain.getSz())
self.statics.setSy(1.0 / self.terrain.getSy())
self.statics.setShaderAuto()
@pstat
def make(self):
"""Build a finished renderable heightMap."""
# apply shader
#logging.info( "applying shader")
self.terrain.texturer.apply(self.getRoot())
# detail settings
#self.getRoot().setSz(1.0 / self.heightMapDetail)
#self.getRoot().setSy(1.0 / self.heightMapDetail)
#logging.info( "making height map")
self.makeHeightMap()
#logging.info( "setHeight()")
self.setHeight()
#self.getRoot().setSz(self.maxHeight)
#http://www.panda3d.org/forums/viewtopic.php?=t=12054
self.calcAmbientOcclusion()
#loggin.info( "generate()")
self.generate()
self.getRoot().setCollideMask(BitMask32.bit(1))
#self.makeSlopeMap()
#logging.info( "createGroups()")
self.createGroups()
self.terrain.populator.populate(self)