Mattia Canfarotta told us about the workflow behind the PlayStation project, shared a nice and quick way to create details, and spoke about how to get a better idea of what your textures will look like in Unreal Engine or Marmoset.
Hi everyone, my name is Mattia Canfarotta. I am a 3D Environment Artist and a Think Tank Training Online student from Italy. I'm currently developing my skills and building my portfolio, and I aspire to work in the video game industry.
I thought about realizing this project for quite a long time mainly because I like modeling props. Also, the first PlayStation was my first love that started my passion for video games, so making a tribute to that period was a mandatory and fun jump to the past.
I wanted to recreate these props as realistic as possible with an eye kept for optimization and pushing further my texturing and modeling skills.
Before starting modeling, I took the accurate dimensions of my PlayStation. I also took a few pictures of all sides and a few closeups. I've used a simple reflex with an 80mm prime lens to reduce perspective distortion. I used these pictures in an orthogonal view, that's helped me maintain some proportions of the models, especially with the tricky tiny parts to measure.
For this project, I used the standard high poly to low poly workflow done in Maya. My modeling always starts with blockout, just simple meshes. Then, I try to have all the primes shapes there and achieve the silhouette that works for me.
After the blockout, I started modeling the high poly. I usually use Sub-D with this kind of hard surface. I add support edges and try to make it look nice and smooth. Keeping my topology clean with quad and proper flow guarantees me to be far away from artifacts and helps me in the following stages.
Sometimes on flat surfaces, I use N-gons and triangles. Besides, I use floating mesh, a geometry that sits right above the surface of a high poly. If you align it closer to the surface, you can trick the bake into thinking it is a part of the high poly model. Again, an excellent and quick way to create details, avoid topology issues, and save time.
Making the low poly is nothing too special: I collapse, merge, and delete all the unnecessary edges from a high poly mesh. I've set up some restrictions for the polycount to align to game industry-standard for props of this size, having 20k tris for the lod0 is perfectly fine in specific:
- Consol: 17k;
- Controller: 6k;
- Games Cover: 2k each;
- MemoryCard: 700.
I've done all of my UVs in Maya as well. For me, it's the perfect tool for unwrapping and layout. I straightened the shells as much as I could, using as much UV space as possible to obtain a layout that minimizes bake errors and makes texturing easier. I saved space by symmetrizing and deleting repeated parts (like the button or plinths: you can unwrap one and duplicate it after baking).
As the camera is close to the props, the texel density is relatively high, especially for the smaller parts. I used different resolutions across the texture sets to keep a good even texture quality overall.
Ending the UVs, I triangulated my low poly. After that, it was ready to be exported to Substance 3D Painter for bake. I always use "baking by mesh name". I also need my low poly like "gg_low" and my high poly "gg_high" –it helps me to be away from artifacts. Baking as much quality as possible 4k is more than okay. I toggle off average normals and use antialiasing subsampling 4x4. It can improve the quality of baked textures and reduce aliasing where different geometries connect. Be aware that subsampling increase the bake time.
Texturing part is my funniest one. It is where the things come alive if you are lucky to have the object you try to mimic. Look at it from many angles with different lights condition. If you can't, collect many pictures and try to catch every detail to put on your maps, especially in the roughness. I think breaking down the elements of the surfaces and understanding why they are essential helped me create believable textures.
Before you start the texturing, the first two things you should do in Substance 3D Painter are enabling the ACES LUT made by Brian Leleux – this will give you a better idea of what your textures will look like in Unreal Engine or Marmoset. Also, use a neutral HDRI; I like to use Studio Black Soft.
I start the texturing process by creating a Folder structure in Substance 3D Painter to define the primary materials (plastic, metal, etc.). The plastic material is quite simple to do: I used two layers, one as a base plastic smooth in roughness and flat, and the second layer is used as a variation. I bumped to break up the surfaces according to what I see in the real world.
After that, I started to layer on second details, such as surface imperfection: wear, scratch, graphic elements, and dust/dirt. I used pretty much the fill layer with masks by procedural noise or alpha stamps and cleaned it up by hand trying to balance everything not making it too noisy and unreadable. I don't have a clear explanation of how to do that. Mostly, it takes trial and error to find what works and cut the unnecessary to create interesting props.
For prop art, I use Substance 3D Designer to create support elements such as grunge masks, screws, normals details, decals, etc. In this case, I used it for creating screws that you can find at the bottom of the console and the CD interior case that you can't see in this project. Still, it helped me tweak the value of the original artwork of the PlayStation games and label graphics.
When the textures were done, I checked the values with PBR validate to ensure everything was right and ready for export with Unreal packed output that brings your linear maps in one called ARM (AO, Roughness, Metallic). I always use the Targa format for my textures because it stores all the information without loose information in the engine.
Import and Setting Up the Scene in Unreal
Before exporting my final models, I center them on the origins of the axis in Maya because Unreal uses this as your pivot. After that, I export each model individually as an fbx. You can easily drag and drop the models in the Unreal content browser, as these are static mesh. You can uncheck skeletal mesh, same for the textures – just drag and drop. For your ARM textures, you have to set the compression to "mask(no RGB)." Plus, I have a backdrop model that I use for props presentations.
So I have all ingredients in there. I just create the camera, change the Film Back to 16:9 DSLR, and set the focal length to something high. I usually use 120mm or 150mm, sometimes 200mm, to reduce the perspective distortion (I don't like it so much for the presentation), give intimacy, nicely show the details and overall images look more natural. Finally, before starting lighting, I make a post-process volume and remove auto exposure, enabling lumen GI and reflection for scene simple like that Lumen does not change too much and is subtly improved in the reflections.
Lighting and Final Touches
My lighting is pretty simple: a three-point light with a few rim lights to stick out the details. I did use a Rectlight set on movable. When lighting props or whatever, I suggest desaturating everything into black and white through post-process volume; you can evaluate the scene light exclusively in brightness and contrast.
Be sure that your light source is close enough to the subject and has good intensity, avoid very dark or too bright parts. Another thing that I like to do is use highlights such as graphic elements that could create exciting shapes, make a point of interest, and show up a material definition.
At the end of the lighting and framing, I come back to the post-process volume to add a few subtle details that could improve the realistic feeling of the images, such as grain, chromatic aberration, and bump up a bit the contrast. Then I take a high-resolution screenshot.
There are no differences for importing in Marmoset – just drag and drop the mesh in the viewport and assign the textures to the materials. I followed the same techniques above for my lighting and framing in Marmoset Toolbag, plus I used an HDRI: Alley Construction, so I switched to ACES and ON the RTX. Again, I played with some effects like grain and chromatic aberration. I prefer rendering with transparency and adding a background afterward in Photoshop.
Marmoset is a powerful tool for prop presentation with a user-friendly interface, and the RTX features take your work to the next level in a minute.
Unreal Engine gives me back a gaming feeling images, more than Marmoset Toolbag. You can do fancy stuff with shaders, but you have to spend a lot of time; of course, it's free. Epic builds all the ecosystem around. The community is the most strong tool, a game-changer for the next generation of games and creators. We have many resources, tutorials, and platforms like Megascans or MetaHuman, so the best is yet to come.
I'd thank the 80 Level team for the opportunity. It means a lot to share something I spend so much time and work on. I'm always happy to answer any questions, so please message me on ArtStation.
You may find these articles interesting