Exulansis

Exulansis is short film that explores the challenges of explaining a mental illness to people who do not actually deal with any mental illnesses. The first effect on the dancer depicts anxiety. The jittering movement of the wires represent the feeling of unease. The second effect represents BPD, Borderline Personality Disorder. The exploding and jittery effect represent the random explosive feelings of intense emotion that one can feel at any given time.

For this project my job was to create the destruction on the warehouse, all motion capture aspects, and all character effects aspects.

Destruction:

I imported each asset of the warehouse, modeled by Adrienne Johnson, so that each piece could be UVed separately.

Each asset is UVed individually

I fractured each object individually and put the material node after the Voronoi fracture to have the inside/outside groups for each element.

Full fracturing node tree

Close up of fracturing

After fracturing I brought in the fractured elements into a new node for constraining.

Full constraint node tree

Close up of individual constraints

Merged individual constraints for overall constraint and merged geometry

All objects were brought into the DOP network as RBD packed objects.

Collision objects

DOP Network

After completing the simulation, I put the data from the DOP network using the point data onto the geometry.

Bringing information out of the DOP Network

Applying the data brought from the DOP Network onto the merged geometry

Finally, I cached the geometry and merged the static objects back into the simulation along with a newly textured(textured by Adrienne Johnson) floor. I used the time warp nodes to slow down the destruction, adjust the frame range, and reverse the destruction.

Monster Motion Capture and FX

Currently working on all motion capture and FX aspects for the monster character on a student animation film that will be completed in the spring of 2018.

Car Transformation- The Mill Project

How it was made:

The effect was achieved by bringing in the car that was provided by Sydnee Robertson with the object merge node and and scattered points along the surface, then fractured it using the voronoi fracture node. The Scatter node changes the level of detail of the fracture segments. Polyname and Pscale attributes were added so that the faces would gradually appear or disappear based on how close the faces are to the sphere, which drives the effect. Scaling or translating the sphere will change the starting position of where the objects transitions from.

Parameters were made at the top level for easy adjustments. Level of detail comes from the scatter point density. Face distance was unused because it came from the exploded view node that was not needed in this project. Transition Growth is relating to the attribute texture node, this uses the sphere to direct where the transition is starting. The Transformation Controls are connected to the sphere radius and transformation controls.

The depth frequency section of the parameters was created by using a point VOP node and adding an anti- aliased noise node to the x y and z of the geometry. The parameters were promoted to allow top level adjusting. For the final result of this project, this section was not used.

 

Challenges:

Some challenges with this project included the heaviness of the file. In order to get the amount of fractures Sydnee needed, I had to crank up the scatter points to about 900. Also because the scatter points were increased, in the voronoi fracture the setting “Create Inside Surface” had to be turned off so that Houdini wouldn't crash. Turning off Create Inside Surface reduced the overall buffering time, however it took away the thickness of the fractured faces during the transition.

OSL Scripting

Heart model created by Alissa Drake

shader
circle
[[
int rfm_nodeid = 3,
string rfm_classification = "rendernode/RenderMan/pattern",
string help = "Brief description goes here."
]]
(color fcolor = color(1,0,0),
output color resultRGB = 0,
float Radius = .2,
output float resultF = 0)

{
if (((u - .5) * (u - .5) + (v - .5) * (v - .5)) <= Radius)
{
resultRGB=fcolor;
resultF = 1;
}

shader

Rectangle

[[
int rfm_nodeid = 1,
string rfm_classification = "rendernode/RenderMan/pattern",
string help = "Brief description goes here."
]]
(
    float s = 0
        [[
        int lockgeom = 0,
        string widget = "null",
        ]],
    float t = 0
        [[
        int lockgeom = 0,
        string widget = "null",
        ]],
        float Horizontal = 0.5,
        float Vertical = 0.5,
        float Width = 0.4,
        float Height = 0.4,
    output color resultRGB = 0)
{
float left = Horizontal - Width/2;
float right = Horizontal + Width/2;
float top = Vertical - Width/2;
float bottom = Vertical + Width/2;
if(t >= left && t <= right ||
    s >= top && s<= bottom)
    resultRGB = color(1,0,0);
else
    resultRGB = color(1,1,1);
}

           

shader
parabola
[[
int rfm_nodeid = 2,
string rfm_classification = "rendernode/RenderMan/pattern",
string help = "Brief description goes here."
]]
(color fcolor= color (1,0,0),
output color resultRGB = 0,
output float resultF = 0)
{

if (u>= sin (v * 5))
{
resultRGB=fcolor;
resultF = 1;
}
else
{
resultRGB = 1;
resultF = 1;
}

}

       

Rib Wrangling

This project demonstrates the basics of how a 3D scene is represented by Pixar's RenderMan scene description RIB file. Such RIB files are normally generated automatically by applications such as Houdini or Maya (plus Pixar's plugin). However, manually writing RIB files using a text editor focuses attention on the way that "elements" such as color, opacity, shading, lighting and coordinate systems are presented to Pixar's PhotoRealistic RenderMan rendering system.

Final Renders

Textures

Main RIB

Option "ribparse" "string varsubst" ["$"]
IfBegin "!defined(RMSTREE)"
Option "user" "string RMSTREE" ["/opt/pixar/RenderManForMaya-21.0-maya2016.5"]
IfEnd
Option "searchpath" "shader"["../../maya/projects/RfM_osl:@"]
Option "searchpath" "rixplugin" ["${RMSTREE}/lib/shaders:/home/mkesson/mount/fachome/maya/projects/RfM_ris:@"]
Option "searchpath" "texture" ["../textures:@"]
Option "searchpath" "archive" ["../archives:Cutter_Help/templates/Rib:custom_templates/Rib"]
#Option "statistics" "endofframe" [1]

Hider "raytrace" "int incremental" [1] "int minsamples" [0] "int maxsamples" [128] "float darkfalloff" [0.025]
Integrator "PxrPathTracer" "PxrPathTracer" "int maxPathLength" [10] "int allowCaustics" [0]
PixelVariance 0.05

Format 1080 720 1
Display "untitled" "it" "rgba"
Projection "perspective" "fov" [20]

Translate0 -1.5 15
Rotate -30 1 0 0
Rotate 50 0 1 0
Scale 1 1 -1
#DisplayFilter "PxrBackgroundDisplayFilter" "background" "color backgroundColor" [1 1 1]
WorldBegin
Bxdf "PxrSurface" "default"
"color diffuseColor" [0.6 0.6 0.6]
"float diffuseGain" [1.0]
"float presence" [1.0]
TransformBegin
Scale 4 4 4
#ReadArchive "cutrAxes.rib"
TransformEnd

ReadArchive "../ribs/cgsky.rib"
ReadArchive "lights/3pt.rib"

AttributeBegin
Translate 0 0 0
#ReadArchive "materials/bluePlastic.rib"
#Sphere 1 -1 1 360
ReadArchive "geo/teaKettle.rib"
AttributeEnd
AttributeBegin
Scale 100 1 100
ReadArchive "materials/ground.rib"
Polygon "P" [-0.5 0 -0.5-0.5 0 0.50.5 0 0.50.5 0 -0.5]
"st" [0 00 33 33 0]
AttributeEnd
WorldEnd

Kettle RIB

# Project 2

# body
AttributeBegin
AttributeBegin
Attribute "identifier" "name" ["kettle_body"]
ReadArchive "materials/copper_color.rib"
ReadArchive "materials/copper_bumps.rib"
Translate 0 0 0
Rotate -90 1 0 0
Cylinder 1.3 0 2 360
#"st" [ 1 11 20 12 2]
AttributeEnd

AttributeBegin
Attribute "identifier" "name" ["upper_body"]
ReadArchive "materials/copper_color.rib"
#ReadArchive "materials/copper_bumps.rib"
Translate 0 2 0
Rotate -901 0 0
Scale 1.3 1.3 1.3
Hyperboloid 1 0 00.6 0 .3360
AttributeEnd
# lid

AttributeBegin
Attribute "identifier" "name" ["lid_connector"]
ReadArchive "materials/copper_color.rib"
Translate 0 2.5 0
Rotate 90 1 0 0
Cylinder .9 0 .3 360
AttributeEnd
AttributeBegin
Attribute "identifier" "name" ["lid_mid"]
ReadArchive "materials/copper_color.rib"
Translate 0 2.5 0
Rotate -901 0 0
Hyperboloid .9 0 00.5 .6 .3360
AttributeEnd
AttributeBegin
Attribute "identifier" "name" ["top_lid"]
ReadArchive "materials/copper_color.rib"
Rotate -90 1 0 0
Disk2.8 .8 360
AttributeEnd
AttributeBegin
Attribute "identifier" "name" ["lid_handel"]
ReadArchive "materials/copper_color.rib"
Translate 0 3 0
Rotate 90 1 0 0
Cylinder .15 0 .3 360
AttributeEnd
AttributeBegin
Attribute "identifier" "name" ["lid_handel"]
ReadArchive "materials/copper_color.rib"
Translate 0 3 0
Sphere .19 -.15 2 180
AttributeEnd
AttributeEnd

# handle

AttributeBegin
Attribute "identifier" "name" ["main_handle"]
ReadArchive "materials/copper_color.rib"
Translate 0 3.3 0
Scale 1 .4 1
Torus 1.1 0.07 0 360 180
AttributeEnd
AttributeBegin
Attribute "identifier" "name" ["Rside_handle"]
ReadArchive "materials/copper_color.rib"
Translate 1.1 3.3 0.0
Rotate 90 1 0 0
Cylinder .07 0 1.3 360
AttributeEnd
AttributeBegin
Attribute "identifier" "name" ["Lside_handle"]
ReadArchive "materials/copper_color.rib"
Translate -1.1 3.3 0.0
Rotate 90 1 0 0
Cylinder .07 0 1.3 360
AttributeEnd

# spout
AttributeBegin
Attribute "identifier" "name" ["Lside_handle"]
ReadArchive "materials/copper_color.rib"
Translate -2.6 2.2 0.0
Rotate 90 1 0 0
Rotate 45 0 1 0
Cylinder .16 .2 1.5 360
AttributeEnd

AttributeBegin
Attribute "identifier" "name" ["Lside_handle"]
ReadArchive "materials/copper_color.rib"
ReadArchive "materials/copper_bumps.rib"
Translate -1 1 0
Rotate -90 1 0 0
Rotate -90 0 1 0
Sphere .6 0 2 360
AttributeEnd

AttributeBegin
Attribute "identifier" "name" ["Lside_handle"]
#ReadArchive "../ribs/flair.rib"
ReadArchive "materials/copper_color.rib"
Translate -2.15 1.78 0
Rotate -40 0 0 1
Rotate -90 0 1 0
Rotate 60 0 0 1
Paraboloid .25 .1 .5 360
AttributeEnd

AttributeBegin
Attribute "identifier" "name" ["Lside_handle"]
ReadArchive "materials/copper_color.rib"
Translate -1.5 1.15 0
Rotate -90 1 0 0
Rotate -90 0 1 0
Sphere .35 1 1 360
AttributeEnd


AttributeBegin
Attribute "identifier" "name" ["Lside_handle"]
ReadArchive "materials/copper_color.rib"
Translate -1.85 1.45 0
Sphere .25 1 1 360
AttributeEnd
AttributeBegin
Attribute "identifier" "name" ["Lside_torus"]
ReadArchive "materials/copper_color.rib"
Translate -1.77 1.38 0
Rotate 90 0 1 0
Rotate 30 1 0 0
Scale 2 2 2
Torus .1 0.025 0 360 360
AttributeEnd

Texture Color RIB

# txmake -mode periodic ../tiffs/CopperTexture.tif ../textures/CopperTexture.tex
Pattern "PxrTexture" "PxrTexture1"
"string filename" ["CopperTexture.tex"]
"int firstChannel" [0]
"int atlasStyle" [0]
"int invertT" [1]
"int filter" [1]
"float blur" [0.0]
"int lerp" [1]
"color missingColor" [1. 0. 1.]
"float missingAlpha" [1.0]
"int linearize" [1]

Pattern "PxrManifold3D" "PxrManifold3D1"
"float scale" [1]
"int use" [0]
"string pref" [""]
"string coordsys" [""]

Bxdf "PxrSurface" "PxrSurface1"
"float diffuseGain" [0]
"color diffuseColor"[1 1 1]

"int diffuseDoubleSided" [1]
"int diffuseBackUseDiffuseColor" [1]
"color diffuseBackColor" [0.18 0.18 0.18]

"reference color specularFaceColor" ["PxrTexture1:resultRGB"]
"float specularRoughness" [.39]
"float presence" [1]
"float reflectionGain" [.7]

 

Texture Displacement RIB

Pattern "PxrVoronoise" "PxrVoronoise2"
"float frequency" [18.0]
"float jitter" [1.0]
"float smoothness" [1.0]

Pattern "PxrWorley" "PxrWorley1"
"int surfacePosition" [0]
"float frequency" [8.0]
"int distancemetric" [0]
"float jitter" [0.75]
"float c1" [0.8]
"float c2" [-0.2]
"float minkowskiExponent" [4.0]
"int shape" [0]
"int clamp" [1]
"int invert" [0]
"float randomScale" [0.]
"float randomScaleCenter" [0.]
# Examples manifold connection
#"reference struct manifold" ["PxrManifold2D1:result"]
#"reference struct manifold" ["PxrManifold3D1:result"]

# "PxrWorley1:resultF"uses->|float|
# "PxrWorley1:resultRGB"uses->|color|





Pattern "PxrRemap" "PxrRemap2"
"reference color inputRGB" ["PxrWorley1:resultRGB"]
"float outputMin" [-1]
"float outputMax" [ 1]
"int clampOutput" [0]

Attribute "displacementbound" "float sphere" [.5]
Displace "PxrDisplace" "PxrDisplace1"
"int enabled" [1]
"float dispAmount" [0.005]
"reference float dispScalar" ["PxrRemap2:resultR"]

Reference Image

Challenges

I had a lot of trouble with creating the curved spout using the displacement and transparency map. Even after adjusting the bounding box area, the object looked like it was still being clipped.

Final Thoughts

If I were to do this project again, I would improve the lighting set up. The UV maps and textures could also be more complex now that I am used to using RIBs.

Pop Up Book

RenderMan project 1: pop up book

I built my model in Houdini and imported it to Maya. An importing challenge came up because of the cookie node. To solve this problem, I imported both assets before the cookie node in houdini. After bringing in both assets, I used the difference boolean to make the final shape. The displacement in the inner part of the books had to be carefully adjusted to control the black edges.

Final Render

Look Dev/Reference

Concept: Ethiopian Orthodox Church carved into a stack of books. Main look dev references are from artist Guy Laramee

Occlusion Renders