Renderman Rendering

Objective
Modelling and Rendering a real life object (pen) using Python API for Renderman
Analyzing the object
The real life object to be modeled is a metallic pen which has been examined in detail by taking pictures of various parts. The pen is of cylindrical shape with several rings connecting the cap and the body. Even though the entire pen is said to be metallic, the degree of spectacularity varies at certain areas. On closer observation, uniform fines lines could be seen on the cap and body.

Modelling
Most of the modelling has been done using cylinders:the camp, cap top, holder, body and the base. The holder has a slight protrusion towards the end which has been modeled using a hemisphere. The middle ring portion is the combination of torus and cylinder placed overlapping each other. These are created using procedural for loop.
Cylinder
Variable to create a cylinder:
​
-
Radius
-
Zmin
-
Zmax
-
Sweepangle (Ï´)
Torus
Variable to create a cylinder:
​
-
Majorrad
-
Minorrad
-
Phimin
-
Phimax
-
Sweepangle (Ï´)



Maps
Displacement Map: The cap and body has fine lines running throughout. This has been created with a shader using perlin noise in one uniform direction to give the linear texture which is then applied as a displacement map with a scale of 0.1 to give a very slight bumpy impression.
Bump Map: Light scratch marks have been implemented on the cap top and body of the model to show wear and tear to give it touch of realism. Also the logo the the company 'LAMY' has been embedded on the cap, These scratch marks and logo have been applied as PxrBump bump map.



Texturing
Textures have been used to give the area surrounding the pen a realistic appeal. The object is placed on a simple flat plane with wooden texture applied as PxrTexture pattern and PxrDisney BXDF to take RGB reference color from the provided texture giving the effect of table top. In the similar manner a wall texture has been applied on the plane placed vertically upright in the background.
Lighting
To have a properly well lit scene a total of six lights have been used. Three PxrStdAreaLight to illuminate the top, middle and base of the pen, two sphere lights placed towards the top corners and one PxrStdEnvMapLight to add-on to the general illumination.
​
The area lights focus primarily on the areas they have been placed near and help enhance the specular highlights especially on the purely metallic parts of the pen. The sphere lights provide the additional brightness to light especially towards the back part of the scene. A PxrStdEnvMapLight using HDR image is applied to further enhance the overall lighting in the scene.
Area Light
ri.AttributeBegin()
ri.Declare("areaLight" ,"string")
ri.AreaLightSource( "PxrStdAreaLight", {ri.HANDLEID:"areaLight", "float exposure" : [4.5]})
ri.Sphere( 0.5, -0.5, 0.5, 360)
ri.AttributeEnd()
Sphere Light
ri.TransformBegin()
ri.Bxdf( "PxrDisney","bxdf", { "color emitColor" : [ 1,1,1] })
ri.Geometry("spherelight")
ri.TransformEnd()
Environment Map Light
ri.AttributeBegin()
ri.Declare("envLight" ,"string")
ri.AreaLightSource( "PxrStdEnvMapLight",
{ri.HANDLEID:"envLight",
"float exposure" : [0.1],
"string rman__EnvMap" : ["HDRImage.tx"]
})
ri.Geometry('envsphere')
ri.AttributeEnd()

Area Light

Sphere Light

EnvironmentMap Light
JR
Final Output
The final output came out pleasant and well lit with the combination of above mentioned lights and a slight depth of field to bring the pen into more focus compared to the background. The model though still comparatively close to real object still requires certain improvements in terms of making the look more realistic with the help of an additional shader to show the paints peeled off at certain areas, which I would like to experiment with in given time. Also the shader for fine lines one the cap and body need improvement since it just uses the perlin noise without any specific modification which has lead to breaking uniformity at certain places.

