def Render(self): # Loop trough all blender versions for (index, executable) in enumerate(self._executables): #Create a result container and create a new result set resultSet = ResultSet.ResultSetClass() # and get the build information resultSet.SetBuildInformation( BlenderUtils.GetBlenderVersionInformation( self._executables[index])) # then render all files, one after another for renderTask in self._renderTasks: print(">> Rendering " + renderTask[0] + " with Blender version " + resultSet.BuildInformation["release"]) # --engine CYCLES BLENDER_RENDER md5 = hashlib.md5(open(renderTask[0], 'rb').read()).hexdigest() imageoutput = "../images/results/" + md5 + "_" + resultSet.BuildInformation[ "hash"] + "_" for line in BlenderUtils.RunCommand(executable + " -b " + renderTask[0] + #" -o " + imageoutput + " -F PNG -x 1 -f " + str(renderTask[1])): #print(line.decode("utf-8")) # And look if the result is available already # btw. this is pretty weak - if "Saved:" is not recognized, the complete test result will vanish :( if line.decode("utf-8").find('Saved: ') > -1: consoleLine = line.decode("utf-8").split() resultSet.AddResult({ "filename": os.path.basename(renderTask[0]), "rendertime": consoleLine[3], "savetime": consoleLine[5].replace('(', '').replace(')', ''), "md5": md5, "frame": str(renderTask[1]).zfill(4) }) print(resultSet.Results)
def bonerot(bindentry): args = bindentry["bonerot"].split(":") scale = 1 if ("scale" in bindentry): scale = bindentry["scale"] return lambda: BlenderUtils.get_bones_rotation_rad(*args) * scale
def childbones_rot(bindentry): armature, axis = bindentry["childbones_rot"].split(":") return lambda: [ BlenderUtils.get_bones_rotation_rad(armature, bone, axis) for bone in bpy.data.objects[armature].pose.bones.keys() ]
def bonerot(bindentry): args = bindentry["bonerot"].split(":") scale = 1 if ("scale" in bindentry): scale = bindentry["scale"] return lambda: BlenderUtils.get_bones_rotation_rad(*args)*scale