How to Create a Persian Inspired 3D Still Life From a Painting

How to Create a Persian Inspired 3D Still Life From a Painting

Simin Farrokh Ahmadi showcases her impressive project 'Persian Afternoon,' created for the CG Asset Creation for Games program at Think Tank Training Centre. In this article, she guides us through the process of transforming a painting into a stunning Persian-inspired 3D still life.

Simin Farrokh Ahmadi, known as Simba to many, created an impressive scene, 'Persian Afternoon', which was created for her final project in the Foundation term of the CG Asset Creation for Games; Props & Environment at Think Tank Training Centre.

In this article she shares with us how to create a Persian inspired 3D still life From a painting.


Being an Iranian artist, I have always wanted to contribute to my Persian roots. Even before I started my courses, I always found inspiration in Persian art and architecture. When I came across this amazing oil painting by Manouchehr Malekshahi, I immediately fell in love with it! It had such a sense of Persian nostalgia, with its detailed rug patterns, classic chair, and the Tar instrument. It took me to a whole different time and place. Although I knew I would face a lot of challenges in recreating it, I was up for the game!


I had a little over 4 weeks to finish this project, so the process of scheduling & gathering reference images for objects and materials began! I love using PureRef to see all my visual references on a single board.

Camera Alignment

Modeling was done in Maya. The first step was to align my camera in Maya to match the perspective of the reference image. you can see the camera view vs. the perspective view here. The supposed floor perspective of the image and the floor grid in Maya should accurately align.

Tip: try putting a couple of cubes in different spots of the camera view workspace to align them with some of the objects in the scene. It's worth taking your time on this step, otherwise you might face a lot of potential issues in perspective alignments going forward.


Having three views of the same object is the best way to approach modeling objects.

I used spheres and Lattice to create Tar bowls. To model the short strings on the fingerboard, I used some of the edge loops from the board itself, and tried “Modify/ Convert/ Polygon Edges to Curve”. Longer string tie knots are helix meshes.

The most challenging part of the modeling was recreating the floral woodwork on the armchair. I primarily relied on drawing EP Curves, and using the Attach Brush to Curve tool while playing with the Pressure Mappings parameters to adjust the shape and width of the curves as needed.

To optimise my workflow, I made a few main curved shapes, and tried adjusting the shapes to generate different silhouettes. This allowed me to explore a variety of forms without starting from scratch each time.

Tip: Global scale shows the widest part of your curve. Also, in Pressure Scale, remember to put Pressure Map 1 to Scale. Once you’re satisfied with the curve shape, go to “Modify/ Convert/ Paint Effects to Polygon”, and then apply a temporary Lambert so you can see your mesh properly!

I used MASH with a Curve Node to distribute buttons around the woodwork. Here's a helpful tutorial I watched.

The rug is a rectangular plane with around 15 subdivisions in width and height. During the modeling, I tried pulling and pushing vertices to get the rough shape resembling the reference image. To add the tassels, I used XGen in Maya. After converting the XGen Primitives to Polygons, I used Lattice to modify hair strands and shape them as I wanted. I then created a knot shape with the same method as the woodwork. Here is how the tassels looked before and after modifications.

To get the thickness effect on the lenses of the glasses and to emphasise the distorted image of the paper behind them, I exaggerated the convex shape.

The entire scene is made of quad faces, which required some puzzle-solving to avoid Ngons and triangles. But, this challenge added a fun element to the blocking phase! During the polishing stage, I added support edge loops to enhance the meshes. This is the final wireframe at the end of modeling.

UV Unwrapping

Before sculpting and texturing, I had to start the UV unwrapping process. I used Planar, Camera Based, Spherical and Automatic projection to create the UVs for different objects. To keep the consistency, I Got the Texel Density from the wall/ floor and the rug as the largest objects for Setting the Texel density of other objects. Here’s a quick look at my UV unwrapping.

To handle the unwrapping, I used various tools in the UV Toolkit, such as Layout, Distribute, Stitch Together and Unfold. This is the result after UV Unwrapping was done.


To add wrinkles to the armchair cushions and to refine the rug, I imported the meshes as OBJ file into Mudbox. I used Wax, Grab, Smooth, and also Wrinkle Stamp in the Sculpt Tool to make the meshes look more realistic.

Tip: you can export your camera from Maya as an FBX file and import it in Mudbox to have the same camera view you have in Maya. Just Right Click on the exported camera in Mudbox and click on Look through. Make sure to lock the camera itself, its Pan, Zoom, and Rotate.

Once the sculpting was done, I experimented with the V-Ray Displacement Map to transfer the data onto the low poly meshes in Maya. Add Subdivision, Displacement control, and Subdivision & Displacement Quality in V-Ray Attributes, and remember to add Texture Input Gamma and Allow Negative Color with a Linear Color Space in Extra V-Ray Attributes for a 32-Bit FP map.

Here is a comparison of before and after the sculpting process.


Texturing was done in Mari and Photoshop. Starting with the armchair, I focused on texturing the fabric and wooden parts. For the fabric, I created a star shape to distribute on a single tile in Photoshop and added a color layer and a fabric texture layer set to a lower opacity. I made sure that it was tileable, allowing for seamless repetition. Next, I imported the OBJ file of the armchair to Mari and created a Tiled layer with a Cloud Procedural Fractal node as a mask to incorporate a subtle layer of dirt onto the fabric.

I created the wood as a shader in Maya with V-Ray. To add the falloff effect to the shininess of the wood, I added Ramp and Sampler Info nodes connected to the Reflection Color channel.

During the texturing process of the rug, I experimented with three different methods:

  • Projecting the pattern through the camera in Maya.
  • Projecting the pattern through a camera in Mari.
  • Creating the pattern as a patchwork in Photoshop.

I found the Photoshop method to be the most effective for this particular project, as it gave me full control over matching the patterns with the original image, and easier adjustment of colours.

I then added a fuzz texture in Bump & Normal Mappings while adding Texture Input Gamma in V-Ray Attributes and setting the Color Space to Linear in the V-Ray shader.

The textures for the wall and floor were designed in Photoshop. To get a smooth transition and fading effect between the wall and the floor, I used the V-Ray Blend Material in Maya. Within the Blend Material, I added a Ramp with a Gradient Mask. This mask allowed me to seamlessly fade and blend the textures of the wall and floor together.

To texture the Tar, I used Mari as my primary tool. For the wooden part, I used a Triplanar Projection to fade the seam line of the wood. Also, I incorporated a dirt layer and a mask stack for the upper beige section of the Tar. For the skin parts, I introduced smudges to represent fingerprints. As well, I adjusted the Refraction amount within the V-Ray shader to achieve the desired level of transparency. A Subsurface Scattering Material was used for the Tar's bridge, by applying a VRayFastSSS2.

To create the glass effect for the glasses, I implemented a straightforward glass shader setup with the IOR value set to 3.0, which accounted for the thickness and distortion of the glass material. For the metal parts of the glasses, I disabled the Fresnel effect, so it resulted in a more consistent and uniform reflection on the metal surfaces. I then adjusted the Reflection Amount and Glossiness parameters to fine-tune the reflection intensity and smoothness.

To create the realistic appearance of the paper material for note sheets, I used V-Ray 2 Sided Material or VrayMtl2Sided. This material allows for a more accurate representation of the opacity and translucency of paper when exposed to light. I played with the Translucency Tex feature within the material settings to get the opaque feeling of the paper.

Tip: If you don't have separate textures for the front and the back, the front texture will be considered for both sides. For more details, refer to the Document provided by Chaos about V-Ray 2 Sided Material.

Fun fact: The notes belong to the “Chaharmezrab-E Dashti” song by the late master of Iranian traditional music, Mohammad Reza Lotfi. You can watch him playing the Tar solo in one of his concerts.


In the lighting phase, I used a non-linear workflow since the lighting had an impact on the colours and texture details. This was a back-and-forth process in Mari, Photoshop, and Maya.

I used 26 VRayLightRects to both create the same atmosphere as the reference image, and also highlight specific areas. I used different temperatures and/ or light colors to get the effect I was looking for. You can see that I also placed a few objects to either block or spread the light in some areas. Having the V-Ray RT enabled on a viewport during the lighting adjustments was helpful as it allowed for real-time feedback on the effects of the lights.

Rendering & Lookdev

To have more flexibility during the post-production, I exported a few Render Elements including Denoiser, two passes of Ambient Occlusion using VRayDirt with varying Falloff and Radius settings on VRayExtraTex, Diffuse, Object ID, Specular, Normals and Glare. The final touches to enhance the exposure, local contrasts etc. were done in Photoshop while playing with opacity and different blending modes including Screen, Multiply, Overlay etc.

A thank you note!

I would like to thank Warner Bros. Discovery Acces Canada and the Think Tank Training Centre family for giving me the invaluable opportunity to reshape my DNA as an artist.

I am grateful to my supervisor Derrick Sesson for all his help and feedback, Seyed M. Tabatabaei for his unconditional love and support, and my course instructors Adar Bronstein, Matthew Novak, Joe Crawford, Renato Eiras, Arianna Mao and Chad Fox.

Persian Afternoon is also on The Rookies. Come give me a high five if you’re around!

Follow Simin on The Rookies, Artstation, LinkedIn or Instagram to see her journey into the game industry.