top of page

RIGGING AND CREATURE FX

WEEK 1

Rigging overview- Tentacle

In the first week of rigging and creature FX,  we got introduced to the rigging basics by creating a rigged tentacle. We used mash to multiply the tentacle and we attached them to a sphere. Then, we used mash again to multiply the sphere and the tentacles, and we added camera, light, textures and aiAtmosphere.

First, we created a tentacle by using soft selection tool on a cube. 

Then, we went to Skeleton and 'Create Joint' tool, and added 4 joints with 3 vertices of spacing between each.

We created controllers for joints, by adding 3 NURBS circles.

We created an animation by using the expression editor with different expressions on different axis.

I played around with mash nodes such as Time, Random or Signal to make the animation more interesting.

Below are some screenshots showing my process as well as a playblast render.

2.JPG
4.JPG
5.JPG

Here is my playblast render. I have also added textures and lights to the scene but because the Arnold render and Arnold playblast takes a lot of time on my laptop, I only did a playblast and one frame with arnold render.

images.jpg

WEEK 2

Joint Creation

This week we learnt about joints, how to create them and how to use them. We experimented on a simple robot.

I created joints for the arms, legs, head, body.

I then started to mirror the joints to the other side by using the mirror joint tool for arms and legs to create a full skeloton.

Notes:

-to snap joints to X axis (to grid): hold X when creating them

1.JPG
3.JPG

After creating the joints, it's time for parenting. 

We use parent constrain to make 2 objects behave as a parent-child relationship, so the position of an object depends of the other object.

I used parenting by selecting the relevant joints and objects and pressing P on the keyboard. 

7.JPG
4.JPG
5.JPG
6.JPG
8.JPG

WEEK 3

Skinning

This week we played around with a 3D arm model. We rigged it and then we looked at paint skin weights tool. This tool allows us to paint weight intensity values on smooth skin.

I start by creating joints for the arm and naming them.

1_joints.JPG

Then, I do the fingers

Note: to expand a selection ->CTRL+right click->grow selection->grow

3.JPG

I connect the joints by selecting the finger first, then the arm and clicking on P.

I select the root joint and the arm and Skin->Bind Skin, then I make a simple animation

Paint Skin Weight Tool

->select the mash ->right click->paint skin weight tool

I start with root: Paint operation: replace ->value:1000 ->flood

Then, I move to shoulder. First, I need to lock everything besides root and shoulder

I select the shoulder vertexes ->paint  mode -> replace ->value:1000->flood

I expand the selection and paint mode -> smooth->flood

2.JPG
1.png
4.JPG
6.JPG

Select the joint and then the mesh ->    skin-> Bind Skin

Paint Skin Weights Tool

Spot light at the origin

Arm -> Arnold-> Standard Surface -> \

light -> Arnold -> Exposure up around 10.000

Spot light attributes -> cone and penumbra 

Render settings ->Arnold render-> environment ->atmosphere ->create aiatmposphere volume

Density up

Color

Toon Rendering

Material ->aiToon (Arnold)

lights->skydome

camera->0

exposure _>down around -3.000

Render settings->Arnold settings->filter->type contour

Mesh->aitoon ->edge->color, width scaling

sphere under the mesh -> the previous material ->edge detection->id difference

Base->color

Base->tone map ->ramp-> 

Select color

Type Vramp; interpolation -> none

duplicate spotlight ->exposure -1000

mesh->aitoon-> stylized highlight 

Image 04-03-2022 at 14.21.jpeg

WEEK 4

Rigging Controls Robot

This week we looked at another robot rig to explore more the rigging controls in Maya. We created rigging controls for the robot MKII.

 

We used nurbscircles (controls for joints) and snaped them to joints. To do this, we selected first the control and then the joint, we parent it and zero out the translate values from the channel box.

Shift+P to unparent -> adjust the rotation

Modify->Freeze transformation

Next step was to constrain the rotation of the joint to the control:

->select the control then what we want to be constrained

->constrain->orient

1.JPG

When we finish with the arm controls, we need to parent them right

2.JPG

Arm IK Control

Skeleton->Create IK Handle

We select the beginning and the end of a joint

Elbow Pole Vector 

We place a control behind the elbow, select the control then the ik handle -> constrain->pole vector

Using Set Driven key for claw controls

We click on load driver with claw control selected.

Driven will be represented by claw parts.

Then, we select all 3 rotation controls and click on key for each claw

At another frame we change the claw open from 0 to 1, we open the claws and select key again

Claw control rotation expression

We add another attribute for claw control:wrist spin

With claw selected, 

R click on wrist spin ->create new expression and we write the expression

5.JPG

WEEK 5

Rigging Controls Robot 2

This week we used the robot MKII file like seen in the previous week but this time we created rigging controls for its spine. Also, we created some controls for the eyes. In the second half of the lesson, we created an emoji smiley face using MASH.

Rigging Controls For Spine

I used a nurbsCircle that I parented to the hips of the robot and then, I added a master controller in order to move the entire robot.

Set driven keys

For this, we had to add 2 new attributes: one for the froward and backward bending and another one for bending right and left. I used a float data type and wrote in a minimum of -1 and a maximum of 1. The numbers represent how the spine will act in whether it is curling forwards or backwards.

Then, I used the set driven for spine joints that I wanted to animate.The driver is the root control and the driven is represented by spine 1,2,3.  First, it will only affect the rotate Y (curling forward)

I then repeated the process, but I changed the rotate Y to the rotate Z (curling backwards)

Finally, I created a controller for the curling of the spine and on connection editor tab, I made sure it was hooked up to the attributes that I created.

Screenshots and recordings of my progres:

Image 18-03-2022 at 14.14.jpeg
Image 18-03-2022 at 14.17.jpeg

Rigging controls for eyes

I created 3 controllers, one for each eye and then a master controller that will move both of them. I parented the controllers over each eye. I used  aim constraint in order to make the eyes move with the controller

1.JPG

Mash Smiley Face

 I imported a Cube and a Sphere and I created 'Mesh'. I set the Sphere mesh into 'Input Mesh' section on Mesh Distribute node. Then, I added 'Offset', 'Random' and 'Signal' Nodes.

2.JPG

I added 2 colour nodes: black and pink and I placed 2 spheres ansd a cube for the eyes and mouth.

For mouth, I used Deform->Bend. Then, I used FallOff, I made a connection and I shaped in the face_mash. FallOff Object controls  a falloff volume using an input object for its shape.​

Then, I created 2 controls to animate the smiley face and I set Driven Keys.

4.JPG

Arnold Render

 In order to render in Arnold and render the colors, we need to turn on mash's vertex color. I imported aiUserDataColor and connected to Base Color to get the vertex color information into the color channel of the mash's shade.

5.JPG
aa.jpg















Assignment 1

For this first assignment, I modeled and rigged a mechanical machine using Maya. The rig needed to be  presented in the form of a Rig Demo, which should include different aspects of the rig. 

I created a simple robot. First, I made sure that I modeled it along with the origin point. This way, the model is symetrical and I could also mirror different parts such as legs and arms.

I then added some lighting. I added a skydome light and I used a hdri image, for which I turned down the visibility of the camera and 2 area lights. I also textured the robot in Substance Painter.

1.JPG
2.JPG
0.JPG
02.JPG

Then, I used substance painter to texture it.

3.JPG

Back in Maya, I continued with the joints.I used the joint creation tool and I created joints in the center of specific parts of the body like arms, legs, neck, etc. After making the joints, I made sure that where I rotated the joints when making them, I write the joints transform attributes(rotation) into joint orient, and then I zero out the transform attributes. I used mirroring for the arm and leg joint.

Then, I set up the hierarchy and made sure that the joints are correctly parented to one another.

Note: the joint after the neck is only made to keep the arms in place, is not made to be rotated when animating

4.JPG
5.JPG

Setting FK Controls.

In order to move the arms easier, I made some FK Controls by using nurbs circles that I moved in the centre of the joints, freeze the transformation and then I used orient constraint on the controls, so the arms can only rotate.

Then, I added more FK controls for the neck, chest, root, etc.

I also made iKHandles for the legs. I came into some difficulties as after I selected the joints and created the IKHandle, the IKHandle was placing in the wrong way and the leg was not bending right. However, I found a solution on the internet. I set a preferred angle. Rigging menu→ Skeleton →Set Preferred Angle.

First, I rotated the bend joint in the direction I wanted it to bend. I selected the joint where the IK handle begins(start joint), and clicked the “set preferred angle” tool. Finally, I restored rotation on the bend joint back to what it was before I modified it. Then, when I created the IK handle again, the joint will bend in the directionI just set it to.

4.JPG
3.JPG
5.JPG
6.JPG
7.JPG

Then, I created some attributes and expressions!

First, I added an attribute which I called head spin and makes the robot head spin. I set the attribute to a float data type and for the expression I used the code below:

float $neckRot = NECK_CNTRL.NECK_SPIN;

if ($neckRot == 0) {

head.rotateY = 0;


} else
{


head.rotateY = frame*$neckRot;

}

I have also added a similar attribute called hand spin, which makes the hands spin.

float $wristRot = L_WRIST_CNTRL_01.WRIST_SPIN;

if ($wristRot == 0) {

L_WRIST_CNTRL_01.rotateY = 0;


} else
{


L_WRIST_CNTRL_01.rotateY = frame*$wristRot;

}

I set driven keys for spine_01 control. I added 2 attributes: left&right curl and forward&backward curl. So then, when I change the values of one of these attributes the robot moves accordingly.

Then, I created a simple animation to demonstrate what my rig is capable of:

WEEK 6

This week was about creating simple hydraulics in Maya. We learned about creating psitons, springs and hydraulics for robot's arm. 

For the first exercise, I made two pont constraints on each of the torus's to make them connect one to each other in order to achieve the piston motion. Note: It is essential to have the maintain offset button ticked. Then, I created a joint and applied again the point constrains.

3.JPG

Springs

 

I have created a spring hydraulic by using a s cylinder. I added a NURBS curve down the middle of it and then connected it to the cylinder. When I move the curve, the cylinder will move accordingly. 

Note: increase the dropoff distance to get your deformed working properly.

Springs (Helix)

Then,  I have created a helix and I have set the parameters in order to make it look like a spring.

I also used the poly to curve tool as I need to select the outside edge of the helix to a NURBS curve that I  created below.

I used the previous method for this exercise, so I connected the NURBS curve to the polygon. When I adjust the curve's vertexes, the object moves accordingly.

WEEK 7

This week, we had one to one tutorials to make sure that we are up to date with the previous lessons and to clarify any questions that we have related to the assignment. This helped me in the process of rigging my robot as well as in learning more about rendering settings. We learned tips how to make the rendering quicker and how to make it more engaging. Specifically, I learned and applied to my first assignment how to choose a hdri image to a skydom light. I set  the camera visibility to 0,  the resolution to the image resolution (2k is the best because it is high quality, but it will also not take a lot of memory), and I played around with temperature and exposure.

WEEK 8

This week, we looked at deforming mesh workflow and we were told about the importance of mesh topology when it comes to animation. Topology means the layout of the polygons across the model's surface.

 

An essential note is that we need to pay attention to geometry. If the geometry is too much, then the process of UV unwrapping, skinning, weight painting will be more complicated and affected. The smaller amount the geometry, the better.

When we create a character, it is better to have more geometry where the lips and eyes are. In order to get the mesh bending right and not using volume, we need at least 5 spans in the joints area.

Valence: it is a vertex, but several edges connect to it. The valence of the vertex is the number od edges that are connected to that vertex. Valences allow us to change the direction of the flows of the polygons.

Quads over triangles

Quads are better at smoothing and deforming than triangles.

Minimising the number of edge loops from a high mesh density to a low mesh density is an important modelling skill:

https://topologyguides.com/loop-reduction

WEEK 9

This week,we had a look at blend shapes in Maya, how to make them, and why to use them along with a model. In class today I have gone through various ways to create/add blend shapes. Below are my processes for this week.

Creating a blend shape

For the first exercise, I created 3 planes called hill, valley and base. I used soft selection tool to deform the vertexes into a hill for the first plane and valley for the second one. I  slected first the hill, then the valley, then the base and used create blend shape in the deform tab and called it test. Now, when I adjust the test from base, I can transform the plane into a hill or a valley.In oder words, when adjusting the slider for the blend shape it allows the flat plane to incorporate features from the other two planes to create the object seen below.

1.JPG

How blend shapes work

Each vertex has its own distinct number and when we make a blend shape the number and its location gets stored. We can see this numbers by going to Display->Polygons->component ID->vertices

If we create 2 objects and want to create a blend shape we need to pay attention to the numbers of the vertices. If we adjust one of the objects for example if we delete some faces and connect some other vertexes and the numbers will not be exactly the same as the other object, the blend is not gonna work. 

Example when the numbers don't match and when the numbers do match

4.JPG

Blend shapes limitations

For this exercise, I created a sphere and selected some faces that I then duplicated. I called them base mesh and blend mesh.

Then, I made a blend shape. I created a polygon between the faces. However, when adjusting the blend shape, in order to get a rotating around effect, I got a linear one.

5.JPG

Blend shapes editor

For this exercise, I  have imported a simple mouth that has been rigged.I used the blend shape editor in order to create some facial expressions. I have created two blend shapes, one for the upper right lip and the other for the upper left lip.I then adjusted the blend shapes to for each corner to create a smile. I have also added a combination target in order to achieve a smooth result and I sculpted on it. Finally, I created a group that I called smile group.

7.JPG

For this exercise, I  have imported a simple mouth that has been rigged.I used the blend shape editor in order to create some facial expressions. I have created two blend shapes, one for the upper right lip and the other for the upper left lip.I then adjusted the blend shapes to for each corner to create a smile. I have also added a combination target in order to achieve a smooth result and I sculpted on it. Finally, I created a group that I called smile group.

Blend shapes Pose editor

We used the joints to drive the blend shapes by adding a pose. We rotated the joints (in the rig) and pressed Add Pose. We made single-chain IK handles for the joints. 

8.JPG

After creating 2 mouth rig controllers, we added controls to the drivers of our poses in the blend shapes.After changing the view from Default to Advanced, I  introduced controllers to each driver to be able to use the controllers for deformations. I  middled mouse drag "translate" attributes of each controller into their corresponding "Add Controllers" windows.

9.JPG

For the next exercise, I used  Blend Shapes to make an eye blink.I added In-Between Target and used Erase Target tool to change the mesh for the in-between shape. 

WEEK 10

Mash Networks Mo cap

This week we learned about Mash Networks in Maya and how to apply this to motion capture data. After this, we created a man walking using mocap data and added mash network to the man to obtain a procedurally generated look with cubes.

Here I created a basic mash network by adding a distribute, signal and color node.

1.JPG

Random Node:

I then played around with falloff and I added a torus.

3.JPG
2.JPG
4.JPG

For the next exercise, I used Mash for a sphere. I added a circle nurbs and for Mash, I added curve node and connected the nurbscircle to it. I then applied a random and a signal node. I Created trails node and made sure that the playblack speed is set to play every frame. Finally, I made another nurbscircle and connected it to trails->profile curve

9.JPG

I changed the trail mode to connect by distance.

I duplicated the mash and played around with the nodes to make it look more interesting.

Fixing mash scatter noise

Step 1:

After creating a mash with the method called scatter on distribution, I connected my model(a walking man) to input mesh and I ticked the box use face area. Then, I selected all the joints on my model, changed the rotation on channel box to 0

Step 2:

Mash->Utilities->Create Mash from Points

Step 3:

Select the main joint, ''hips'' in my case, and Bind Skin. Then, select the meshfromPoints and go to Skin->Copy Skin Weights

Step 4:

Connect meshfromPoints to input under Mash Distribute. I changed the method to vertex.

08.JPG

Mash Network and Dynamics

I made a cube and added transform, dynamics and color node. I increased the bounce on dynamics.

I created a Mash Constrain on Distribute and a Controller Null

Plexus man

For the next exercise, I made a plexus walking man. I first made a mesh from a platonic solid. I changed the distribution type to mesh and the method to Random Face Centre. I used a signal, offset and trails node.

Finally, I added a lambert material and ramp.

Into trails, I made a curve

10.JPG

Crumbling Man

Additionally, I created a crumbling man. I started by creating a mash from a cube and changing the distribution method to mesh.

11.JPG

At a negative frame, I set the character to a T pose by selecting all the joints and adjusting their rotation to 0.

Then, MASH-> utilities ->create mesh from mash points

I selected mesh from points and the hips and then I clicked on bind skin under rigging tab.

I selected the walk_skin and the the meshfrompoints to copy the weights. MeshfromPoints becomes the input for mash distribute. Then, I created a color node.

12.JPG

Next, I added Dynamics. I added a channel randomiser inside dynamics and I set it up to position strength and increased the strat value. I made another one and set it to rotation strength. Then, I created falloff inside the position randomiser set it to a cube and adjusted its size and position in order to make the man break while he is walking.

13.JPG

Finally, I added light and a camera. Also, I applied aiStandardSurface material to the model. In order for Arnold to render the colors, I need to go to ReproMeshShape and tick Export Vertex Colors. Then, inside standard surface, on color, I need to choose aiUserDataColor and to type into attribute section ColorSet.

The last step was to export the mash to Alembic (Cache->Alembic->Export Selection to Alembic). Then, I could hide the mash and the repromash.

Finally, I imported the .abc file into the scene

WEEK 11

Spline Ik and Influences

This week we looked at spline Ik and Influences.

The first thing that we talked about was about joint chains that are not running in a straight line. We created a nurbscurve, parent it to the joint and zero out the transform numbers on the nurbscirlce so it snaps. Then, we unparented it and freezed the transformation, but that was actually reseting it like in the image from right:

1.JPG

The right way to do it:

-create the nurbscircle, group it(I called the group JT_CNTRL_OFFSET)

-parent the group to the joint

-zero out the transform and rotation numbers on the group

-unparent (the controller is now snapped to the joint)

-freeze transformation on controller

Image 06-05-2022 at 13.22.jpeg
Image 06-05-2022 at 13.25.jpeg

For the next exercise, we used a model of a cat and talked about what spine Ik does and how to create it:

-Skeleton->create Ik Spine

-click on the second joint from the beginning and on the second joint from the end

This will create an iKhandle and a curve that adjusts the spine.

However, in order to control the curve easier some further steps need to be made.

Image 06-05-2022 at 13.39.jpeg

-In animation tab, we selected the vertex we wanted to create a controller on ->Deform>Create Cluster

Image 06-05-2022 at 13.50.jpeg

Then, we created nurbscircles and we grouped them.

Snapping the controllers to the joints:

-select the group containing the nurbscircle and the joint and hit P

-zero out the offsets

-unparent again

-freeze the transformations of the nurbscircle

We made a point constraint for the controller and the cluster

Image 06-05-2022 at 14.06.jpeg

We then parented everything in the correct way.

Image 06-05-2022 at 14.17.jpeg

Adding extra joints to a skinned object:

-we created the joints for tail and connected them to the spine

-we selected the mesh, then edit->influences->add influences and now the new joints appear in the paint weight tool

Image 06-05-2022 at 14.47.jpeg

How to use meshes as influences for deforming the skin?

For this exercise, we created a sphere that will represent a muscle for our hand model and we parented it to the shoulder. We added the sphere as a influence by selecting the mesh  then the sphere, and went to skin->add influence. We unlocked the shoulder and sphere into paint skin weights and then we started painting.

Note: we used the paint mode with 0.1 value. Finally, when we scale the sphere, the shoulder scales accordingly.

Then, we wanted to set a driven key so when we move the elbow joint, the muscle will get scale accordingly. Sphere is the driven and the elbow joint is the driver

Image 06-05-2022 at 14.59.jpeg
Image 06-05-2022 at 15.13.jpeg

WEEK 12

Fur

This week we learned how to apply fur. We used a model that is already rigged. The workspace used was XGen-Interactive Groom. Then, we created interactive groom splines options. The options were adjusted depending on how we wanted the fur to look.

Image 13-05-2022 at 13.23.jpeg

We then wanted to remove fur from certain areas such as hands, feet, head, so we went to Generator->Density Mask, then Create Map Options. We saved the map into source images folder and called it density mask. We chose a harsh brush (3rd one) with the black color and we painted what we wanted to remove. By holding shift we can obtain blur.

Image 13-05-2022 at 13.42.jpeg

The next step was to bring the density mask into photoshop. However, in order to obtain the right painted areas we had to go back to Maya->UV Editor and UV Snapshot where we changed the size to 1024 because that is the size of our image and called it outUV. In photoshop, we added the new tiff over the first layer. By selecting the areas that should be just black and holding command+delete, we made the, black. When we finished with all the adjustments, we saved it as a copy and brought the image into fur base->density mask.

Image 13-05-2022 at 14.02.jpeg
Image 13-05-2022 at 13.46.jpeg
Image 13-05-2022 at 13.53.jpeg
Image 13-05-2022 at 13.58.jpeg
Image 13-05-2022 at 14.04.jpeg

I started grooming by adding sculpt layers and using brushes such as comb, length, part.

8.JPG

Then, I added twice the cump modifier and I played around with the density and other settings. In order to get the clump follow the direction of the fur, I made the setup below in the node editor. Finally, I added a noise modifier and I changed the magnitude.

12.JPG
11.JPG

The next step was texturing the fur. I applied aiStandardHair and on base color I imported a picture with many colors and I played with melanin to make it lighter/darker.

15.JPG

Finally, I added a Physical Sky light and I made it look like nighttime. I played around with different settings such as emmision and tint to obtain a reflective colors effect that will shine in the dark.

16.JPG

Final result:

fur.png

WEEK 13

SUB PIVOT CONTROLS - SQUASH AND STRETCH
































































































































 

This week we learned how to create sub pivot controls for legs. I used a leg of a cat in order to explore this. We also had a look on squash and stretch.

I first created an ikhandle for the leg using rotate plane solver  that I parented to the paw control. I made another one for the ankle by using single chain solver.

I then made the toe tap set up by making a group from ikhandle_toe and moving the pivot control to the toe joint. The next step was to create leg flex and twist set up where I used the same process, but grouping first the ankle and the foot(which made the flex) and then the flex,

The toe pivot and ankle setup was similar to the process I explained above.

Finally, I created custom attributes to control the movement of the foot, ankle and toe easier. I selected the paw control and click on add attributes in attributes tab.

2.JPG

In windows->general editors->connection editor, I selected which rotation controls (X/Y/Z) I wanted to be adjusted when I adjust the custom attributes in the channel box

For the next exercise, we explored the stretch of an arm.

First, I created an ikHandle for the arm and a controller(nurbsCircle) for the ikHandle. Then, I applied point constrain. I created a distance tool. Then, I had to work out the distance between the shoulder joint and ik. I wanted to make Maya when the distance number is less than 6.1 not to do anything, and to only apply scale to the joints when the number is biggerand I did that by creating an expression.

4.JPG

First, I added an attributed to the ikhanle called outScale

5.JPG

In the node editor, I brought in the ikhandle as well as the shoulder and elbow joint.I connected the outscale to the scale x of the joints

6.JPG

Assignment 2

For this assignment, I was required to demonstrate a range of the techniques which have been taught in the second part of the course. I modeled a cat in Zbrush, textured it in Substance Painter and then I rigged in Maya. The techniques that I demonstrated are: 

-modeling for deformation

-skinning and painting weights

-subpivot controls for feet

-custom attributes

-ik handles, rotate plane solver, single chain solvers

-fur

​​​

I modeled the cat in Zbrush, then I brought it in Maya but because it contained a lot of polygons and painting the weights became difficult, I had to go back to Zbrush, and create a low poly version of my model. I added a displacement map of the high poly version to regain all the details.

Capture.JPG

Here is a recording of the initial process of modeling, as I then moved on a machine at university.

I used an image with a cat skeleton as a reference when I created the joints, and decided to add 2 more extra joints to make  painting the weights easier.

squelette-chat-EN-FI.png
14.JPG

Then, I created ik Handles for legs,Ik spline Handle, clusters and pole vectors for knees. I added controlls and custom attributes for feet such as toe tap, flex, twist, toe pivot, ankle movement.

15.JPG

I then painted the weights.

I then did the texture in substance painter.

16.JPG
17.JPG
18.JPG

Next step was to create fur in Maya. This step was complicated for me as my laptop kept crashing a lot, so I had to move again on a machine from university. The screenshots below are from what I worked on my laptop, but the final fur I made it in uni because I could increase the density without Maya crashing. However, the process was the same.

I applied the fur and then I painted the density mask. I didn't want hair on the face and on paws so I painted it black. Then, I imported the density mask in Photoshop in order to make it more accurated and then I imported back in Maya.

7.JPG
8.JPG
2.JPG

I set up the guides and started grooming. I played around with comb, length and place brush. Then, I added clumps and finally I set up the rendering.

3.JPG
4.JPG
10.JPG
11.JPG
9.JPG
12.JPG
5.JPG
6.JPG
r7.jpg

Renders with fur added:

r3.jpg
r5.jpg

The render below does not include the fur, because my laptop was too slow to let me animate the model with the fur added.

bottom of page