diff --git a/README.md b/README.md index cd10fd3d..04168c90 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# PRMan for Blender +# RenderMan for Blender Blender render addon for Pixar's RenderMan 21.0 and beyond. To use, install RenderMan, (free from [renderman.pixar.com](https://renderman.pixar.com/store/intro)), download [the latest release](https://github.com/prman-pixar/RenderManForBlender/releases) and put it in the addons folder for Blender. See the [installation.txt](installation.txt) file for detailed instructions. diff --git a/changelog.txt b/changelog.txt index b3ffc587..a9602a62 100644 --- a/changelog.txt +++ b/changelog.txt @@ -1,4 +1,4 @@ -v21.5.0 8/14/17 +v21.5.0 8/18/17 * Heat grid now available for Blender smoke sims cached with OpenVDB * RIB formatting now works with IPR renders * Icons have been added to all ui panels that contain RenderMan settings @@ -6,7 +6,7 @@ v21.5.0 8/14/17 * Light rig presets now have correct world rotation * Can now update crop window during IPR * Viewport diffuse and specular color controls now work -* Auto updater has been temporarily removed +* Auto updater has been temporarily removed * Materials can now be linked directly to an object instance * Update a few paths, URLs, and other details * Spell RenderMan with bi-caps in user visible strings @@ -51,7 +51,7 @@ v21.2.0 11/8/16 * Using "add renderman nodetree" will attempt to convert and hook up your cycles nodetree. * this is still a work in progress and won't give you an exact conversion. * New PxrSurface lobe AOV's. Due to changes in codebase you will have to reassign any existing AOV's to avoid export errors. -* Support for PRMan 21 features - specifically new shaders and lights. +* Support for RenderMan 21 features - specifically new shaders and lights. * Portal lights are supported. * Light filters are added - using a light and set it to "Filter type", then link the filters to your lights. * Sample and display filters are now under the scene properties. @@ -85,7 +85,7 @@ v0.9.0 7/13/16 * curves can render as ribbons now or round curves (default) * hair width correctly uses the Cycles settings rather than duplicating * High resolution smoke is supported (finally) -* Darkfalloff is supported (thanks jdent) PRMan 20.9 feature +* Darkfalloff is supported (thanks jdent) RenderMan 20.9 feature * Openexr renders can go to multilayer exrs for compositing (thanks Jdent) * some example files are provided - accesible though toolbar * Inline RIB boxes can now be inserted into the rib stream in various places (scene, world, object settings) @@ -198,7 +198,7 @@ v0.1.1 25/03/2015 * Changed RIB output for 19.0 specific construct (integrator, bxdf, etc) * TODO - proper shader network support of bxdf/pattern via args files - integrator settings and general settings cleanup - - move to prman python plugin for rib integration + - move to RenderMan python plugin for rib integration - lights integration - general code cleanup diff --git a/engine.py b/engine.py index a045e24e..e148b11e 100644 --- a/engine.py +++ b/engine.py @@ -323,7 +323,7 @@ def update_image(): update_image() except: engine.report({"ERROR"}, - "Problem launching PRMan from %s." % prman_executable) + "Problem launching RenderMan from %s." % prman_executable) isProblem = True def get_denoise_names(self): @@ -397,7 +397,7 @@ def update_image(): isProblem = False except: engine.report({"ERROR"}, - "Problem launching PRMan from %s." % prman_executable) + "Problem launching RenderMan from %s." % prman_executable) isProblem = True if not isProblem: @@ -406,7 +406,7 @@ def update_image(): s = '.' while not os.path.exists(render_output) and \ self.display_driver not in ['it']: - engine.update_stats("", ("PRMan: Starting Rendering" + s)) + engine.update_stats("", ("RenderMan: Starting Rendering" + s)) if engine.test_break(): try: process.kill() @@ -415,7 +415,7 @@ def update_image(): break if process.poll() != None: - engine.report({"ERROR"}, "PRMan: Exited") + engine.report({"ERROR"}, "RenderMan: Exited") break time.sleep(DELAY) @@ -425,7 +425,7 @@ def update_image(): if self.display_driver not in ['it']: prev_mod_time = os.path.getmtime(render_output) - engine.update_stats("", ("PRMan: Rendering.")) + engine.update_stats("", ("RenderMan: Rendering.")) # Update while rendering while True: @@ -437,20 +437,20 @@ def update_image(): engine.update_progress(float(perc) / 100.0) else: if line and "ERROR" in str(line): - engine.report({"ERROR"}, "PRMan: %s " % + engine.report({"ERROR"}, "RenderMan: %s " % line.decode('utf8')) elif line and "WARNING" in str(line): - engine.report({"WARNING"}, "PRMan: %s " % + engine.report({"WARNING"}, "RenderMan: %s " % line.decode('utf8')) elif line and "SEVERE" in str(line): - engine.report({"ERROR"}, "PRMan: %s " % + engine.report({"ERROR"}, "RenderMan: %s " % line.decode('utf8')) if process.poll() is not None: if self.display_driver not in ['it']: update_image() t2 = time.time() - engine.report({"INFO"}, "PRMan: Done Rendering." + + engine.report({"INFO"}, "RenderMan: Done Rendering." + " (elapsed time: " + format_seconds_to_hhmmss(t2 - t1) + ")") @@ -462,7 +462,7 @@ def update_image(): process.kill() isProblem = True engine.report({"INFO"}, - "PRMan: Rendering Cancelled.") + "RenderMan: Rendering Cancelled.") except: pass break @@ -480,7 +480,7 @@ def update_image(): "] does not exist.") else: debug("error", - "Problem launching PRMan from %s." % prman_executable) + "Problem launching RenderMan from %s." % prman_executable) # launch the denoise process if turned on if self.rm.do_denoise and not isProblem: @@ -496,7 +496,7 @@ def update_image(): cmd = [os.path.join(self.paths['rmantree'], 'bin', 'denoise')] + denoise_options + [denoise_data] - engine.update_stats("", ("PRMan: Denoising image")) + engine.update_stats("", ("RenderMan: Denoising image")) t1 = time.time() process = subprocess.Popen(cmd, cwd=images_dir, stdout=subprocess.PIPE, @@ -505,7 +505,7 @@ def update_image(): process.wait() t2 = time.time() if os.path.exists(filtered_name): - engine.report({"INFO"}, "PRMan: Done Denoising." + + engine.report({"INFO"}, "RenderMan: Done Denoising." + " (elapsed time: " + format_seconds_to_hhmmss(t2 - t1) + ")") if self.display_driver != 'it': @@ -536,7 +536,7 @@ def update_image(): env=environ) process.wait() else: - engine.report({"ERROR"}, "PRMan: Error Denoising.") + engine.report({"ERROR"}, "RenderMan: Error Denoising.") except: engine.report({"ERROR"}, "Problem launching denoise from %s." % diff --git a/export.py b/export.py index cfc3122e..a0108e38 100644 --- a/export.py +++ b/export.py @@ -2897,7 +2897,7 @@ def export_searchpaths(ri, paths): def export_header(ri): render_name = os.path.basename(bpy.data.filepath) - export_comment(ri, 'Generated by PRMan for Blender, v%s.%s.%s \n' % ( + export_comment(ri, 'Generated by RenderMan for Blender, v%s.%s.%s \n' % ( addon_version[0], addon_version[1], addon_version[2])) export_comment(ri, 'From File: %s on %s\n' % (render_name, time.strftime("%A %c"))) diff --git a/installation.txt b/installation.txt index cfb5603d..34ad79a7 100644 --- a/installation.txt +++ b/installation.txt @@ -1,4 +1,4 @@ -PRMan for Blender Installation Instructions +RenderMan for Blender Installation Instructions ------------------------------------------ 1. Install Blender if not already (2.78 recommended) @@ -25,8 +25,8 @@ ADVANCED: RenderMan normally bases everything off a variable RMANTREE which is set to your installation folder, eg /Applications/Pixar/RenderManProServer-21.0 on OSX and C:\Program Files\Pixar\RenderManProServer-21.0 on Windows. -PRMan for Blender will try and guess the appropriate RenderMan version to use and the location of -the RMANTREE folder. If you are installing PRMan to the standard location you shouldn't have to do anything! +RenderMan for Blender will try and guess the appropriate RenderMan version to use and the location of +the RMANTREE folder. If you are installing RenderMan to the standard location you shouldn't have to do anything! However, if you installed in a non-standard location, set the RMANTREE environment variable before starting blender. diff --git a/nodes.py b/nodes.py index 7ee93d32..ceefa72b 100644 --- a/nodes.py +++ b/nodes.py @@ -542,7 +542,7 @@ def setOslProps(self, prop_names, shader_meta): class RendermanOutputNode(RendermanShadingNode): - bl_label = 'PRMan Material' + bl_label = 'RenderMan Material' renderman_node_type = 'output' bl_icon = 'MATERIAL' node_tree = None @@ -2019,7 +2019,7 @@ def is_same_type(socket1, socket2): def is_float_type(socket): - # this is a prman node + # this is a renderman node if type(socket) == type({}): return socket['renderman_type'] in ['int', 'float'] elif hasattr(socket.node, 'plugin_name'): @@ -2033,7 +2033,7 @@ def is_float_type(socket): def is_float3_type(socket): - # this is a prman node + # this is a renderman node if type(socket) == type({}): return socket['renderman_type'] in ['int', 'float'] elif hasattr(socket.node, 'plugin_name'): @@ -2269,18 +2269,18 @@ def register(): nodetypes[typename] = nodetype node_cats = { - 'bxdf': ('PRMan Bxdfs', []), - 'light': ('PRMan Lights', []), - 'patterns_texture': ('PRMan Texture Patterns', []), - 'patterns_bump': ('PRMan Bump Patterns', []), - 'patterns_color': ('PRMan Color Patterns', []), - 'patterns_manifold': ('PRMan Manifold Patterns', []), - 'patterns_geometry': ('PRMan Geometry Patterns', []), - 'patterns_utility': ('PRMan Utility Patterns', []), - 'patterns_script': ('PRMan Script Patterns', []), - 'patterns_displace': ('PRMan Displacement Patterns', []), - 'patterns_layer': ('PRMan Layers', []), - 'displacement': ('PRMan Displacements', []) + 'bxdf': ('RenderMan Bxdfs', []), + 'light': ('RenderMan Lights', []), + 'patterns_texture': ('RenderMan Texture Patterns', []), + 'patterns_bump': ('RenderMan Bump Patterns', []), + 'patterns_color': ('RenderMan Color Patterns', []), + 'patterns_manifold': ('RenderMan Manifold Patterns', []), + 'patterns_geometry': ('RenderMan Geometry Patterns', []), + 'patterns_utility': ('RenderMan Utility Patterns', []), + 'patterns_script': ('RenderMan Script Patterns', []), + 'patterns_displace': ('RenderMan Displacement Patterns', []), + 'patterns_layer': ('RenderMan Layers', []), + 'displacement': ('RenderMan Displacements', []) } for name, node_type in nodetypes.items(): @@ -2310,7 +2310,7 @@ def register(): # all categories in a list node_categories = [ # identifier, label, items list - RendermanPatternNodeCategory("PRMan_output_nodes", "PRMan Outputs", + RendermanPatternNodeCategory("PRMan_output_nodes", "RenderMan Outputs", items=[NodeItem('RendermanOutputNode', label=RendermanOutputNode.bl_label)]), ] diff --git a/operators.py b/operators.py index a27960b1..db419433 100644 --- a/operators.py +++ b/operators.py @@ -474,7 +474,7 @@ def draw(self, context): w = context.region.width h = context.region.height - # Draw text area that PRMan is running. + # Draw text area that RenderMan is running. pos_x = w / 2 - 100 pos_y = 20 blf.enable(0, blf.SHADOW) @@ -483,7 +483,7 @@ def draw(self, context): blf.size(0, 32, 36) blf.position(0, pos_x, pos_y, 0) bgl.glColor4f(1.0, 0.0, 0.0, 1.0) - blf.draw(0, "%s" % ('PRMan Interactive Mode Running')) + blf.draw(0, "%s" % ('RenderMan Interactive Mode Running')) blf.disable(0, blf.SHADOW) def invoke(self, context, event=None): diff --git a/preferences.py b/preferences.py index 478e8b0c..29e60855 100644 --- a/preferences.py +++ b/preferences.py @@ -104,13 +104,13 @@ def find_installed_rendermans(self, context): archive_paths_index = IntProperty(min=-1, default=-1) use_default_paths = BoolProperty( - name="Use PRMan default paths", + name="Use RenderMan default paths", description="Includes paths for default shaders etc. from RenderMan Pro\ Server install", default=True) use_builtin_paths = BoolProperty( name="Use built in paths", - description="Includes paths for default shaders etc. from PRMan\ + description="Includes paths for default shaders etc. from RenderMan\ exporter", default=False) diff --git a/properties.py b/properties.py index 47f3f83d..112e23f8 100644 --- a/properties.py +++ b/properties.py @@ -574,7 +574,7 @@ def reset_ll_object_index(self, context): dicing_strategy = EnumProperty( name="Dicing Strategy", - description="Sets the method that PRMan uses to tessellate objects. Spherical may help with volume rendering", + description="Sets the method that RenderMan uses to tessellate objects. Spherical may help with volume rendering", items=[ ("planarprojection", "Planar Projection", "Tessellates using the screen space coordinates of a primitive projected onto a plane"), @@ -795,7 +795,7 @@ def reset_ll_object_index(self, context): enable_external_rendering = BoolProperty( name="Enable External Rendering", - description="This will allow extended rendering modes, which allow batch rendering to PRMan outside of Blender", + description="This will allow extended rendering modes, which allow batch rendering to RenderMan outside of Blender", default=False) display_driver = EnumProperty( @@ -957,12 +957,12 @@ def reset_ll_object_index(self, context): do_denoise = BoolProperty( name="Denoise Post-Process", - description="Use PRMan's image denoiser to post process your render. This allows you to use a higher pixel variance (and therefore faster render) while still producing a high quality image", + description="Use RenderMan's image denoiser to post process your render. This allows you to use a higher pixel variance (and therefore faster render) while still producing a high quality image", default=False) external_denoise = BoolProperty( name="Denoise Post-Process", - description="Use PRMan's image denoiser to post process your render. This allows you to use a higher pixel variance (and therefore faster render) while still producing a high quality image", + description="Use RenderMan's image denoiser to post process your render. This allows you to use a higher pixel variance (and therefore faster render) while still producing a high quality image", default=False) crossframe_denoise = BoolProperty( diff --git a/ui.py b/ui.py index 40eac0a3..541ac774 100644 --- a/ui.py +++ b/ui.py @@ -1657,10 +1657,10 @@ def PRMan_menu_func(self, context): self.layout.separator() if engine.ipr: self.layout.operator('lighting.start_interactive', - text="PRMan Stop Interactive Rendering") + text="RenderMan Stop Interactive Rendering") else: self.layout.operator('lighting.start_interactive', - text="PRMan Start Interactive Rendering") + text="RenderMan Start Interactive Rendering") #################