def createLight(self): """docstring for createLight""" light = createNewLightHandle() apiCall( ILBCreateDirectionalLight(self.m_scene, "Sun", vecmath.directionalLightOrientation(Vec3(1.0, -1.0, -1.0)), ColorRGB(1.0, 1.0, 0.8), light) ) apiCall( ILBSetCastShadows(light, True) ) apiCall( ILBSetShadowSamples(light, 32) ) apiCall( ILBSetShadowAngle(light, 0.1) ) skylight = createNewLightHandle() apiCall( ILBCreateSkyLight( self.m_scene, 'SkyLight', vecmath.identity(), ColorRGB(1.0, 0.0, 0.0), skylight) )
def main(argv): """docstring for main""" optlist, args = getopt.getopt(argv, "", ['runningmode=']) runningmode = "global" for o, a in optlist: if o == "--runningmode": runningmode = a runmode = getRunMode(runningmode) print runmode try: M_PI = 3.14159265358979323846 bmh = createNewManagerHandle() apiCall( ILBSetLogTarget(ILB_LT_ERROR, ILB_LS_STDERR, None) ) apiCall( ILBSetLogTarget(ILB_LT_INFO, ILB_LS_DEBUG_OUTPUT, None) ) config = ConfigParser.ConfigParser() config.read('config.ini') configItems = {} for item in config.items('BeastPythonExamples'): configItems[item[0]] = item[1] # Setup our beast manager beastCacheFolder = os.path.normpath(configItems['beast_cache']) beastBinFolder = os.path.normpath(configItems['beast_bin']) beastDataFolder = os.path.normpath(configItems['beast_data']) dir = beastCacheFolder + r'/temp/cache' if runmode == RM_CLEAR: print "Clearing cache..." apiCall( ILBCreateManager(dir, ILB_CS_GLOBAL, bmh) ) apiCall( ILBClearCache(bmh) ) print "Done!" elif runmode == RM_GLOBAL: print "Creating a global cache!" apiCall( ILBCreateManager(dir, ILB_CS_GLOBAL, bmh) ) elif runmode == RM_LOCAL: print "createing a local cache!" apiCall( ILBCreateManager(dir, ILB_CS_LOCAL, bmh) ) else: print "Invalid runmode" apiCall( ILBSetBeastPath(bmh, beastBinFolder) ) sphereName = "Sphere" floorName = "Floor" sphereMatName = "SphereMaterial" floorMatName = "FloorMaterial" sphereMesh = createNewMeshHandle() if not findCachedMesh(bmh, sphereName, sphereMesh): sphereMesh = primitives.createSphere(bmh, sphereName, sphereMatName, 600, 400, None) floorMesh = createNewMeshHandle() if not findCachedMesh(bmh, floorName, floorMesh): floorMesh = primitives.createPlaneSimple(bmh, floorName, floorMatName) texName = "Mandelbrot" texture = createNewTextureHandle() if not findCachedTexture(bmh, texName, texture): texture = textures.createMandelbrotTexture(bmh, texName, ColorRGB(1.0, 0.7, 0.7), 1000, 1000) scene = createNewSceneHandle() sceneName = "SimpleScene" apiCall( ILBBeginScene(bmh, sceneName, scene) ) floorInstance = createNewInstanceHandle() floorTrans = vecmath.scaleTranslation(Vec3(10.0, 1.0, 10.0), Vec3(0.0, -5.0, 0.0)) apiCall( ILBCreateInstance(scene, floorMesh, "FloorInstance", floorTrans, floorInstance)) SPHERES = 5 spherePosRadius = 5.0 sphereRad = 2.0 sphereInstances = [] for i in range(SPHERES): angle = (M_PI * 2.0 * i) / SPHERES x = math.cos(angle) * spherePosRadius z = math.sin(angle) * spherePosRadius trans = vecmath.scaleTranslation(Vec3(sphereRad, sphereRad, sphereRad), Vec3(x, -3.0, z)) tempInstance = createNewInstanceHandle() sphereName = 'SphereInstance_' + str(i) apiCall( ILBCreateInstance(scene, sphereMesh, sphereName, trans, tempInstance) ) # create the floor material floorMat = createNewMaterialHandle() primitives.apiCall( ILBCreateMaterial(scene, floorMatName, floorMat) ) primitives.apiCall( ILBSetMaterialTexture(floorMat, ILB_CC_DIFFUSE, texture) ) # create sphere material sphereMat = createNewMaterialHandle() apiCall( ILBCreateMaterial(scene, sphereMatName, sphereMat) ) apiCall( ILBSetMaterialColor(sphereMat, ILB_CC_DIFFUSE, ColorRGBA(0.3, 0.3, 0.3, 1.0)) ) apiCall( ILBSetMaterialColor(sphereMat, ILB_CC_SPECULAR, ColorRGBA(1.0, 1.0, 1.0, 1.0)) ) apiCall( ILBSetMaterialScale(sphereMat, ILB_CC_REFLECTION, 0.1) ) apiCall( ILBSetMaterialScale(sphereMat, ILB_CC_SHININESS, 15.0) ) light = createNewLightHandle() apiCall( ILBCreateDirectionalLight(scene, "Sun", vecmath.directionalLightOrientation(Vec3(1.0, -1.0, -1.0)), ColorRGB(1.0, 1.0, 0.8), light)) apiCall( ILBSetCastShadows(light, True) ) apiCall( ILBSetShadowSamples(light, 32) ) apiCall( ILBSetShadowAngle(light, 0.1) ) skylight = createNewLightHandle() apiCall( ILBCreateSkyLight( scene, 'SkyLight', vecmath.identity(), ColorRGB(0.21, 0.21, 0.3), skylight) ) camera = createNewCameraHandle() apiCall( ILBCreatePerspectiveCamera(scene, "Camera", vecmath.setCameraMatrix(Vec3(0.3, 0.5, 15.0), Vec3(0.1, -0.3, -1.0), Vec3(0.0, 1.0, 0.0)), camera) ) # Finalize the scene apiCall(ILBEndScene(scene)); job = createNewJobHandle() apiCall( ILBCreateJob( bmh, 'TestJob', scene, beastDataFolder + r'/data/simpleFG.xml', job ) ) fullShadingPass = createNewRenderPassHandle() apiCall( ILBCreateFullShadingPass(job, 'fullShading', fullShadingPass) ) cameraTarget = createNewTargetHandle() apiCall( ILBCreateCameraTarget( job, 'cameraTarget', camera, 640, 480, cameraTarget ) ) apiCall( ILBAddPassToTarget( cameraTarget, fullShadingPass ) ) if not renderJob( job ): print "render error occured" except BeastPythonException, (instance): print "exception: " + str(instance.parameter) ex = instance.parameter errorString = createNewStringHandle() extendedError = createNewStringHandle() ILBErrorToString(ex, errorString) ILBGetExtendErrorInformation(extendedError) print "Beast API error" print "Error: " + convertStringHandle(errorString) print "Info: " + convertStringHandle(extendedError)
def main(argv): """docstring for main""" try: M_PI = 3.14159265358979323846 bmh = createNewManagerHandle() apiCall( ILBSetLogTarget(ILB_LT_ERROR, ILB_LS_STDERR, None) ) apiCall( ILBSetLogTarget(ILB_LT_INFO, ILB_LS_DEBUG_OUTPUT, None) ) config = ConfigParser.ConfigParser() config.read('config.ini') configItems = {} for item in config.items('BeastPythonExamples'): configItems[item[0]] = item[1] # Setup our beast manager beastCacheFolder = os.path.normpath(configItems['beast_cache']) beastBinFolder = os.path.normpath(configItems['beast_bin']) beastDataFolder = os.path.normpath(configItems['beast_data']) dir = beastCacheFolder + r'/temp/baking' apiCall( ILBCreateManager(dir, ILB_CS_LOCAL, bmh) ) # Set the path to the Beast binaries apiCall( ILBSetBeastPath(bmh, beastBinFolder) ) # Waste the cache from previous runs if present apiCall( ILBClearCache(bmh) ) sphereName = "Sphere" floorName = "Floor" sphereMatName = "SphereMaterial" floorMatName = "FloorMaterial" sphereMesh = createNewMeshHandle() floorMesh = createNewMeshHandle() floorMesh = primitives.createPlaneSimple(bmh, 'Floor', floorMatName) sphereMesh = primitives.createSphere(bmh, 'Sphere', sphereMatName, 30, 15) scene = createNewSceneHandle() sceneName = "BakingScene" apiCall( ILBBeginScene(bmh, sceneName, scene) ) floorInstance = createNewInstanceHandle() floorTrans = vecmath.scaleTranslation(Vec3(10.0, 1.0, 10.0), Vec3(0.0, -5.0, 0.0)) apiCall( ILBCreateInstance(scene, floorMesh, "FloorInstance", floorTrans, floorInstance)) SPHERES = 5 spherePosRadius = 5.0 sphereRad = 2.0 sphereInstances = [] for i in range(SPHERES): angle = (M_PI * 2.0 * i) / SPHERES x = math.cos(angle) * spherePosRadius z = math.sin(angle) * spherePosRadius trans = vecmath.scaleTranslation(Vec3(sphereRad, sphereRad, sphereRad), Vec3(x, -3.0, z)) tempInstance = createNewInstanceHandle() sphereName = 'SphereInstance_' + str(i) apiCall( ILBCreateInstance(scene, sphereMesh, sphereName, trans, tempInstance) ) apiCall( ILBSetRenderStats(tempInstance, ILB_RS_SHADOW_BIAS, ILB_RSOP_ENABLE) ) # create the floor material floorMat = createNewMaterialHandle() primitives.apiCall( ILBCreateMaterial(scene, floorMatName, floorMat) ) primitives.apiCall( ILBSetMaterialColor(floorMat, ILB_CC_DIFFUSE, ColorRGBA(0.7, 0.7, 0.7, 1.0)) ) # create sphere material sphereMat = createNewMaterialHandle() apiCall( ILBCreateMaterial(scene, sphereMatName, sphereMat) ) apiCall( ILBSetMaterialColor(sphereMat, ILB_CC_DIFFUSE, ColorRGBA(0.9, 0.9, 0.9, 1.0)) ) #apiCall( ILBSetMaterialColor(sphereMat, ILB_CC_SPECULAR, ColorRGBA(1.0, 1.0, 1.0, 1.0)) ) #apiCall( ILBSetMaterialScale(sphereMat, ILB_CC_REFLECTION, 0.1) ) #apiCall( ILBSetMaterialScale(sphereMat, ILB_CC_SHININESS, 15.0) ) light = createNewLightHandle() apiCall( ILBCreateDirectionalLight(scene, "Sun", vecmath.directionalLightOrientation(Vec3(1.0, -1.0, -1.0)), ColorRGB(1.0, 1.0, 0.8), light)) apiCall( ILBSetCastShadows(light, True) ) apiCall( ILBSetShadowSamples(light, 32) ) apiCall( ILBSetShadowAngle(light, 0.1) ) skylight = createNewLightHandle() apiCall( ILBCreateSkyLight( scene, 'SkyLight', vecmath.identity(), ColorRGB(0.21, 0.21, 0.3), skylight) ) camera = createNewCameraHandle() apiCall( ILBCreatePerspectiveCamera(scene, "Camera", vecmath.setCameraMatrix(Vec3(0.3, 0.5, 15.0), Vec3(0.1, -0.3, -1.0), Vec3(0.0, 1.0, 0.0)), camera) ) # Finalize the scene apiCall(ILBEndScene(scene)); beastConfig = beastCacheFolder + "/data/baking.xml" dom = minidom.getDOMImplementation() xmlDoc = dom.createDocument(None, "ILConfig", None) docRoot = xmlDoc.documentElement AASettingsElement = xmlDoc.createElement("AASettings") xmlCreateElement(xmlDoc, AASettingsElement, "minSampleRate", "0") xmlCreateElement(xmlDoc, AASettingsElement, "maxSampleRate", "2") docRoot.appendChild(AASettingsElement) RenderSettingsElement = xmlDoc.createElement("RenderSettings") xmlCreateElement(xmlDoc, RenderSettingsElement, "bias", "0.00001") docRoot.appendChild(RenderSettingsElement) FrameSettingsElement = xmlDoc.createElement("FrameSettings") xmlCreateElement(xmlDoc, FrameSettingsElement, "inputGamma", "0.45") outputCorrectionElement = xmlDoc.createElement("outputCorrection") xmlCreateElement(xmlDoc, outputCorrectionElement, "colorCorrection", "Gamma") xmlCreateElement(xmlDoc, outputCorrectionElement, "gamma", "2.2") FrameSettingsElement.appendChild(outputCorrectionElement) GISettingsElement = xmlDoc.createElement("GISettings") xmlCreateElement(xmlDoc, GISettingsElement, "enableGI", "true") xmlCreateElement(xmlDoc, GISettingsElement, "fgRays", "1000") xmlCreateElement(xmlDoc, GISettingsElement, "fgContrastThreshold", "0.1") xmlCreateElement(xmlDoc, GISettingsElement, "fginterpolationPoints", "15") xmlCreateElement(xmlDoc, GISettingsElement, "primaryIntegrator", "FinalGather") xmlCreateElement(xmlDoc, GISettingsElement, "secondaryIntegrator", "None") docRoot.appendChild(FrameSettingsElement) #write file contents xmlFile = open(beastConfig, "w") xmlFile.write(xmlDoc.toprettyxml()) xmlFile.close() job = createNewJobHandle() apiCall( ILBCreateJob( bmh, 'TestJob', scene, beastConfig, job ) ) fullShadingPass = createNewRenderPassHandle() apiCall( ILBCreateFullShadingPass(job, 'fullShading', fullShadingPass) ) textureTarget = createNewTargetHandle() apiCall( ILBCreateTextureTarget(job, "textureTarget", 512, 512, textureTarget)) entity = createNewTargetEntityHandle() # Add the floor instance twice in different parts of the UV space apiCall( ILBAddBakeInstance(textureTarget, floorInstance, entity) ) apiCall( ILBSetUVTransform(entity, Vec2(0.0, 0.0), Vec2(0.5, 1.0)) ) apiCall( ILBAddBakeInstance(textureTarget, floorInstance, entity) ) apiCall( ILBSetUVTransform(entity, Vec2(0.5, 0.0), Vec2(0.5, 1.0)) ) cameraTarget = createNewTargetHandle() apiCall( ILBCreateCameraTarget( job, 'cameraTarget', camera, 640, 480, cameraTarget ) ) apiCall( ILBAddPassToTarget( textureTarget, fullShadingPass ) ) apiCall( ILBAddPassToTarget( cameraTarget, fullShadingPass ) ) if not renderJob( job ): print "render error occured" except BeastPythonException, (instance): print "exception: " + str(instance.parameter) ex = instance.parameter errorString = createNewStringHandle() extendedError = createNewStringHandle() ILBErrorToString(ex, errorString) ILBGetExtendErrorInformation(extendedError) print "Beast API error" print "Error: " + convertStringHandle(errorString) print "Info: " + convertStringHandle(extendedError)
sphereMesh = primitives.createSphere(bmh, 'Sphere', sphereMatName, 30, 15) goboTex = textures.createXorTexture(bmh, "xorTex", ColorRGB(1.0, 1.0, 1.0)) lsTypes = 7 scenes = [] cameras = [] for lightType in range(lsTypes): scene = createNewSceneHandle() sceneName = "SceneInstance_" + str(lightType) apiCall( ILBBeginScene(bmh, sceneName, scene) ) skylight = createNewLightHandle() primitives.apiCall( ILBCreateSkyLight( scene, 'SkyLight', vecmath.identity(), ColorRGB(0.21, 0.21, 0.3), skylight) ) # Create an instance of the plane that will be a floor floorInstance = createNewInstanceHandle() floorTrans = vecmath.scaleTranslation(Vec3(10.0, 1.0, 10.0), Vec3(0.0, -5.0, 0.0)) apiCall( ILBCreateInstance(scene, floorMesh, 'FloorInstance', floorTrans, floorInstance) ) x = 0.0 z = 0.0 sphereRad = 2.0 trans = vecmath.scaleTranslation(Vec3(sphereRad, sphereRad, sphereRad), Vec3(x, -3.0, z)) tempInstance = createNewInstanceHandle() sphereName = 'SphereInstance_' + str(lightType) primitives.apiCall( ILBCreateInstance(scene, sphereMesh, sphereName, trans, tempInstance) ) apiCall( ILBSetRenderStats(tempInstance, ILB_RS_SHADOW_BIAS, ILB_RSOP_ENABLE) )
floorInstance = createNewInstanceHandle() floorTrans = vecmath.scaleTranslation(Vec3(10.0, 1.0, 10.0), Vec3(0.0, -5.0, 0.0)) apiCall( ILBCreateInstance(scene, floorMesh, "FloorInstance", floorTrans, floorInstance)) light = createNewLightHandle() apiCall( ILBCreateDirectionalLight(scene, "Light", vecmath.directionalLightOrientation(Vec3(1.0, -1.0, -1.0)), ColorRGB(1.0, 1.0, 0.8), light)) apiCall( ILBSetCastShadows(light, True) ) apiCall( ILBSetShadowSamples(light, 32) ) apiCall( ILBSetShadowAngle(light, 0.1) ) skylight = createNewLightHandle() apiCall( ILBCreateSkyLight( scene, 'SkyLight', vecmath.identity(), ColorRGB(1.0, 0.0, 0.0), skylight) ) apiCall(ILBSetLightStats(skylight, ILB_LS_VISIBLE_FOR_EYE, ILB_LSOP_DISABLE)) SPHERE_RADIUS = 1 #SPHERES = 100 SPHERES = 100 spherePosRadius = 10.0 - 2.0*SPHERE_RADIUS sphereInstances = [] for i in range(SPHERES): x = (random.random()-0.5) * spherePosRadius * 2.0 z = (random.random()-0.5) * spherePosRadius * 2.0 trans = vecmath.scaleTranslation(Vec3(SPHERE_RADIUS, SPHERE_RADIUS, SPHERE_RADIUS), Vec3(x, SPHERE_RADIUS-5.0, z))