Initial revision
This commit is contained in:
157
intern/python/modules/Blender/World.py
Normal file
157
intern/python/modules/Blender/World.py
Normal file
@@ -0,0 +1,157 @@
|
||||
import _Blender.World as _World
|
||||
|
||||
import shadow
|
||||
|
||||
def _getAmbCol(obj):
|
||||
return obj.ambR, obj.ambG, obj.ambB
|
||||
|
||||
def _setAmbCol(obj, rgb):
|
||||
obj.ambR, obj.ambG, obj.ambB = rgb
|
||||
|
||||
def _getZenCol(obj):
|
||||
return obj.zenR, obj.zenG, obj.zenB
|
||||
|
||||
def _setZenCol(obj, rgb):
|
||||
obj.zenR, obj.zenG, obj.zenB = rgb
|
||||
|
||||
def _getHorCol(obj):
|
||||
return obj.horR, obj.horG, obj.horB
|
||||
|
||||
def _setHorCol(obj, rgb):
|
||||
obj.horR, obj.horG, obj.horB = rgb
|
||||
|
||||
def _setMist(obj, mist):
|
||||
obj.mistStart = mist.start
|
||||
obj.mistDepth = mist.depth
|
||||
obj.mistHeight = mist.height
|
||||
obj.mistType = mist.type
|
||||
|
||||
def _getMist(obj):
|
||||
mist = Mist()
|
||||
mist.start = obj.mistStart
|
||||
mist.depth = obj.mistDepth
|
||||
mist.height = obj.mistHeight
|
||||
mist.type = obj.mistType
|
||||
return mist
|
||||
|
||||
class World(shadow.hasIPO, shadow.hasModes):
|
||||
"""Wrapper for Blender World DataBlock
|
||||
|
||||
Attributes
|
||||
|
||||
horCol -- horizon colour triple '(r, g, b)' where r, g, b must lie
|
||||
in the range of [0.0, 1.0]
|
||||
|
||||
zenCol -- zenith colour triple
|
||||
|
||||
ambCol -- ambient colour triple
|
||||
|
||||
exposure -- exposure value
|
||||
|
||||
mist -- mist structure, see class Mist
|
||||
|
||||
starDensity -- star density (the higher, the more stars)
|
||||
|
||||
starMinDist -- the minimum distance to the camera
|
||||
|
||||
starSize -- size of the stars
|
||||
|
||||
starColNoise -- star colour noise
|
||||
|
||||
gravity -- The gravity constant (9.81 for earth gravity)
|
||||
"""
|
||||
|
||||
SkyTypes = {'blend' : 1,
|
||||
'real' : 2,
|
||||
'paper' : 4,
|
||||
}
|
||||
|
||||
Modes = {'mist' : 1,
|
||||
'stars' : 2,
|
||||
}
|
||||
|
||||
_emulation = {'Expos' : "exposure",
|
||||
'HorR' : "horR",
|
||||
'HorG' : "horG",
|
||||
'HorB' : "horB",
|
||||
'ZenR' : "zenR",
|
||||
'ZenG' : "zenG",
|
||||
'ZenB' : "zenB",
|
||||
'StarDi' : "starDensity",
|
||||
'StarSi' : "starSize",
|
||||
'MisSta' : "mistStart",
|
||||
'MisDi' : "mistDepth",
|
||||
'MisHi' : "mistHeight",
|
||||
}
|
||||
|
||||
_setters = {'horCol' : _getHorCol,
|
||||
'zenCol' : _getZenCol,
|
||||
'ambCol' : _getAmbCol,
|
||||
'mist' : _getMist,
|
||||
}
|
||||
|
||||
_setters = {'horCol' : _setHorCol,
|
||||
'zenCol' : _setZenCol,
|
||||
'ambCol' : _setAmbCol,
|
||||
'mist' : _setMist,
|
||||
}
|
||||
|
||||
def getSkyType(self):
|
||||
"""Returns a list of the set Sky properties, see setSkyType()"""
|
||||
list = []
|
||||
for k in self.SkyTypes.keys():
|
||||
i = self.SkyTypes[k]
|
||||
if self._object.skyType & i:
|
||||
list.append(k)
|
||||
return list
|
||||
|
||||
def setSkyType(self, *args):
|
||||
"""Set the sky type. This function takes a variable number
|
||||
of string arguments of ['blend', 'real', 'paper']"""
|
||||
flags = 0
|
||||
try:
|
||||
for a in args:
|
||||
flags |= self.SkyTypes[a]
|
||||
except:
|
||||
raise TypeError, "mode must be one of" % self.SkyTypes.keys()
|
||||
self._object.skyType = flags
|
||||
|
||||
|
||||
class Mist:
|
||||
"""Mist structure
|
||||
|
||||
Attributes
|
||||
|
||||
start -- start of the mist
|
||||
|
||||
depth -- depth of the "mist wall"
|
||||
|
||||
height -- height of the mist layer
|
||||
"""
|
||||
|
||||
Types = { 'quadratic' : 0,
|
||||
'linear' : 1,
|
||||
'sqrt' : 2,
|
||||
}
|
||||
|
||||
def __init__(self):
|
||||
self.start = 0.0
|
||||
self.depth = 0.0
|
||||
self.height = 0.0
|
||||
self.type = 0
|
||||
|
||||
def setType(self, name):
|
||||
"""Set the Mist type (one of ['quadratic', 'linear', 'sqrt'])"""
|
||||
try:
|
||||
t = self.Types[name]
|
||||
else:
|
||||
raise TypeError, "type must be one of %s" % self.Types.keys()
|
||||
self.type = t
|
||||
|
||||
def getType(self):
|
||||
"""Returns the Mist type as string. See setType()"""
|
||||
for k in self.Types.keys():
|
||||
if self.Types[k] == self.type:
|
||||
return k
|
||||
|
||||
|
Reference in New Issue
Block a user