def __init__(self, *args, **kwargs): super(CreateLook, self).__init__(*args, **kwargs) self.data["renderlayer"] = lib.get_current_renderlayer() # Whether to automatically convert the textures to .tx upon publish. self.data["maketx"] = True # Enable users to force a copy. self.data["forceCopy"] = False
def get_renderer_variables(renderlayer=None): """Retrieve the extension which has been set in the VRay settings Will return None if the current renderer is not VRay For Maya 2016.5 and up the renderSetup creates renderSetupLayer node which start with `rs`. Use the actual node name, do NOT use the `nice name` Args: renderlayer (str): the node name of the renderlayer. Returns: dict """ renderer = lib.get_renderer(renderlayer or lib.get_current_renderlayer()) render_attrs = lib.RENDER_ATTRS.get(renderer, lib.RENDER_ATTRS["default"]) padding = cmds.getAttr("{}.{}".format(render_attrs["node"], render_attrs["padding"])) filename_0 = cmds.renderSettings(fullPath=True, firstImageName=True)[0] if renderer == "vray": # Maya's renderSettings function does not return V-Ray file extension # so we get the extension from vraySettings extension = cmds.getAttr("vraySettings.imageFormatStr") # When V-Ray image format has not been switched once from default .png # the getAttr command above returns None. As such we explicitly set # it to `.png` if extension is None: extension = "png" filename_prefix = "<Scene>/<Scene>_<Layer>/<Layer>" else: # Get the extension, getAttr defaultRenderGlobals.imageFormat # returns an index number. filename_base = os.path.basename(filename_0) extension = os.path.splitext(filename_base)[-1].strip(".") filename_prefix = "<Scene>/<RenderLayer>/<RenderLayer>" return { "ext": extension, "filename_prefix": filename_prefix, "padding": padding, "filename_0": filename_0 }
def get_renderer_variables(renderlayer, root): """Retrieve the extension which has been set in the VRay settings. Will return None if the current renderer is not VRay For Maya 2016.5 and up the renderSetup creates renderSetupLayer node which start with `rs`. Use the actual node name, do NOT use the `nice name` Args: renderlayer (str): the node name of the renderlayer. root (str): base path to render Returns: dict """ renderer = lib.get_renderer(renderlayer or lib.get_current_renderlayer()) render_attrs = lib.RENDER_ATTRS.get(renderer, lib.RENDER_ATTRS["default"]) padding = cmds.getAttr("{}.{}".format(render_attrs["node"], render_attrs["padding"])) filename_0 = cmds.renderSettings( fullPath=True, gin="#" * int(padding), lut=True, layer=renderlayer or lib.get_current_renderlayer())[0] filename_0 = filename_0.replace('_<RenderPass>', '_beauty') prefix_attr = "defaultRenderGlobals.imageFilePrefix" if renderer == "vray": renderlayer = renderlayer.split("_")[-1] # Maya's renderSettings function does not return V-Ray file extension # so we get the extension from vraySettings extension = cmds.getAttr("vraySettings.imageFormatStr") # When V-Ray image format has not been switched once from default .png # the getAttr command above returns None. As such we explicitly set # it to `.png` if extension is None: extension = "png" if extension == "exr (multichannel)" or extension == "exr (deep)": extension = "exr" prefix_attr = "vraySettings.fileNamePrefix" filename_prefix = cmds.getAttr(prefix_attr) # we need to determine path for vray as maya `renderSettings` query # does not work for vray. scene = cmds.file(query=True, sceneName=True) scene, _ = os.path.splitext(os.path.basename(scene)) filename_0 = filename_prefix.replace('<Scene>', scene) filename_0 = filename_0.replace('<Layer>', renderlayer) filename_0 = "{}.{}.{}".format( filename_0, "#" * int(padding), extension) filename_0 = os.path.normpath(os.path.join(root, filename_0)) elif renderer == "renderman": prefix_attr = "rmanGlobals.imageFileFormat" elif renderer == "redshift": # mapping redshift extension dropdown values to strings ext_mapping = ["iff", "exr", "tif", "png", "tga", "jpg"] extension = ext_mapping[ cmds.getAttr("redshiftOptions.imageFormat") ] else: # Get the extension, getAttr defaultRenderGlobals.imageFormat # returns an index number. filename_base = os.path.basename(filename_0) extension = os.path.splitext(filename_base)[-1].strip(".") filename_prefix = cmds.getAttr(prefix_attr) return {"ext": extension, "filename_prefix": filename_prefix, "padding": padding, "filename_0": filename_0}