Rocketdyne F-1

thumbnail_01-scaled
25-1

Martin Martschenko

Environment Artist

Introduction

Hi! My name is Martin Martschenko. I am a self-taught 3D Environment Artist from Germany.

My journey into 3D art began with a passion for video games that started at a young age. This grew into a deep curiosity about how these virtual worlds were created, which I have been focusing on for the last couple of years.

martin-martschenko-magazine

Goals

My main goals were to improve my texturing and baking skills, so I chose a challenging project, believing that the harder it was, the more I would learn, and I definitely learned a lot from it.

Top-scaled
thumbnail_01-scaled
Transport02-scaled
Transport03-scaled
Tools
  • My main modeling software for this project was Blender and ZBrush.
  • For UV Mapping, I’ve used ZenUV and UVPackMaster 3.
  • The Texturing and Baking were all done in Substance 3D Painter.
  • Marmoset Toolbag 4 for the Presentation.
Stage01_References_Inspiration

References & Inspiration

Reference search is probably one of the most important stages of a project, which is why I spend a lot of time searching through the whole Internet for the idea I have in mind.

In this case, it was the Rocketdyne F-1, the Engine that powered the Saturn V Rocket.

First_Image

The Initial Idea came from multiple factors; I’ve always wanted to create a complex prop to practice my baking skills and was inspired by the amazing work of Matthias Develtere.

In addition to that, I watched a space documentary where I came up with the idea of recreating the iconic engine from Rocketdyne.

The first image I found on the Internet was intimidating and complex, but what I’ve learned over these years is that no matter how complex the object or the scene is, it all comes down to planning it properly.

I’ve mentioned at the beginning the importance of Reference, and I can’t stress enough to gather enough references.

Every single extra image you gather will improve the result of the project. My software of choice for reference gathering is PureRef.

Rocketdyne_F1_PureRef-scaled

My PureRef File has a mixture of photographs, close-up images, blueprints, and even a 3D Printed Model of the Rocket Engine.

Every image you can find is helpful; I’ve also used YouTube Videos which have been a massive help.

Stage02_Blockout
Blockout
I think every artist knows the feeling when you’re looking at a blank scene; it can be quite scary.
Surprisingly, of the whole modeling process of the Engine, I’ve spent the most time on the Blockout because that’s where I studied the blueprints, figuring out where each pipe leads, and how every single part looks, and what purpose it has.
For a complex model like this, breaking it up into pieces makes it much less daunting. As soon as you have a base, it’s going to get much easier because you have something to work from.
Because there are so many different small parts of the Engine which are all covered in cables and pipes, the shapes are hard to see.
Because of this, I have been following a certain workflow for the Blockout where I researched about every single part and tried to find pictures that have that part isolated without all the other components of the rocket, so I can ensure an accurate blockout that makes my life easier down the road.
The workflow I have been following for this was:
  1. Find out the name of the part from Blueprints, Research, etc.
  2. Google that part and find out how it looks.
  3. Look up the measurements (if not available, I am guessing based on pictures where a human is standing beside it).
  4. Model a basic version of it. (Blockout)
This ensured that I didn’t get overwhelmed by the many different parts and just had some organization.
Blockout-scaled

If you pay attention to the Blockout Renders, you might notice that some of the elements (like the Pipes) look differently organized than in the final model.

This is because, later in my research, I found that this Engine had a lot of different iterations where some of the elements were differently organized, which means a lot of my references were made of different versions of the same Engine.

Later, I decided to stick to the original design.

Some might say this is already too detailed for a Blockout, which it kind of is.

But personally, for Props like these, I like to add a bit more detail than usual because I knew that I would be reusing this for the Low Poly, which saved me some time and made it easier later.

Stage03_ModelingTechniques
Modeling Techniques
Before we jump into the Low Poly and High Poly creation, I wanted to briefly cover two modeling/UV techniques that I’ve used over the whole model that saved me a ton of time.
Pipes
The Pipes were an important part of the model since there were a ton of them. For the Pipes, I use a mixture of Curves and Polygons.
The most important feature of Pipes is that they are mechanically made and out of metal, which means they have perfect 90-degree angles and straight lines.
  1. Create a Cube.
  2. Separate the Edge.
  3. Delete the Cube.
  4. Extrude the Edge until you have your desired shape for the pipe.
  5. Bevel the vertices in Blender (Ctrl + Shift + B).
  6. Convert to Curve.
  7. Add Depth under Curve Settings.
  8. Convert to Mesh when you’re happy with it.
Mark by Angle (ZenUV)
Probably one of my favorite features in ZenUV, it’s really simple but saved me so much time. All it does is create automatic seams based on a certain angle.
This is especially useful if you have a lot of hard edges as shown in the example below of one of the engine parts.
Stage04_HighPoly
High Poly
So, for this Prop, I started with the High Poly before the Low Poly.
The reason for this was that I wanted to ensure that I added all the details I wanted without any limitations.
This is the part where ZBrush comes into play. The whole high poly model uses a mixture of SubD modeling and for more complex parts, the ZBrush Polish Workflow.
Looking at my reference, I recognized a lot of intersecting metal shapes; one way to achieve this was by either using Union Boolean, cleaning up the mesh, and using Subdivision Surface, or I could just use ZBrush’s Dynamesh and Polish feature to get the same effect but at a much faster speed.
Below I’ve broken down the workflow for one of the parts of the engine:
  • Create the shape based on your reference; as you can see in my image, it’s just a bunch of primitive shapes moved into each other. Our goal is to recreate the silhouette of our reference.
ZBrushWorkflowMeshPreperation_Before
  • Since we have a lot of Cylinders, we must ensure they have a high polycount, just so later in ZBrush the Hard Edges will not be visible.For that, I just put a crease on all the sharp edges and added a Subdivision Surface modifier; this will only increase the polycount of the sides of the cylinder which is exactly what we want.After that, we export it.

Make Sure to merge all your separate meshes into one like you see in the gif below, otherwise, you have to merge it in the SubTools Menu inside of ZBrush for this to work.

When we import our Mesh into ZBrush, all we have to do is activate DynaMesh; depending on the size of the mesh, the resolution you have to use is different. In my case, since this part of the rocket is quite small, it was about 1 million polygons.

Now, if you look closely, the areas where the mesh was intersecting are “connected,” looking like one mesh; if you don’t have access to ZBrush, it’s basically the same as Voxel Remesh in Blender.

The bevel still looks very sharp which is why we use Polish in the next step.

MeshWithDynaMesh
  • If you go under Deformation, you can see a bunch of different sliders; the one we are interested in is the first one.If you now increase it a little bit, you can see the magic where all your sharp edges and intersections become smooth, looking like one piece of mesh.
MeshWithDynaMeshPolish
DeformationMenu

Note

If you get into a situation like I did with this mesh where you have smaller parts and therefore need smaller bevels only in that area, in that case, I always only apply a small polish and mask the area where you’re happy with the bevels.

Then afterward polish again to create a bigger bevel on all the other areas which are not masked.

  • All you have to do now is to export it back to your software of choice. I still highly recommend decimating your meshes before exporting inside of ZBrush with Decimation Master, just so you avoid having 10GB FBX files or Blender exploding.

This workflow is extremely powerful and saved me a ton of time. There were cases when I used the traditional method since sometimes it’s easier to do it that way. I still highly recommend learning both ways and using whatever saves you more time.

Below, you can see a couple of High Poly Meshes of the Engine that have been created with this workflow:

ZBrushWorkflowMesh01
ZBrushWorkflowMesh02
ZBrushWorkflowMesh03

Welding

Let’s talk about the Welding Seams as they are also a crucial part of this model. Most of these weldings were created with the help of an amazing addon from Łukasz Hoffmann called “Welder” Link to Welder addon.

This addon allows you to create welding seams from a bunch of different presets inside of Blender between two intersecting objects with just a couple of mouse clicks. This Addon combined with the workflow I’ve mentioned above created some amazing results at an incredible speed.

Sculpting Weldings can be quite time-consuming, especially if you have a lot of them like I had in the Rocket Engine, which is why I’ve used this addon to save some time.

There were cases where the weldings in the Reference were quite unique, and the addon couldn’t replicate the look of it, which is when I sculpted them manually. But for the typical weldings you see on 90% of objects in the real world, this addon is a huge time saver.

Below you can see the photograph of one of the weldings I had to sculpt manually in ZBrush.

WeldingReference-1
The sculpting for the example above was pretty straightforward; since the weldings are quite big, I’ve created a blockout of them in Blender and replicated the look in ZBrush using Alphas.
This is the part where it’s important to understand why and especially how they are so big. If you look closely at the weldings, you will notice that it’s a bunch of “normal” welding seams combined into one big one; you can also see how they grinded the welding seams to give it a sort of smooth surface.
If you understand how the thing you want to model is made in the real world, you can just replicate the steps you would do in the real world in 3D and you will basically get the same result.
So, for this, I’ve sculpted a lot of smaller welding seams and smoothed them using the trim dynamic brush.
To summarize this Chapter, for this model, I’ve added as many details as possible in the high poly to avoid having to rely on adding the details later in Substance Painter.
I found that modeling all those details and baking them will get you a much better result than if you’d, for example, create tileable materials and use the normal information from them to get those details.
If you look at the high poly renders below, you can see that on the main body of the rocket, there are a ton of cylinders which I’ve duplicated with a radial array around the model.
Theoretically, this could have also been done with a tileable material created in Substance Designer, but the result later in the low poly wouldn’t have looked as good as it would if you actually added them in the High Poly.
So, in conclusion, my advice for creating high poly models is to model as many details as possible and not rely on textures to give you these details.
01_hprender-scaled
05_hprender-scaled
04_hprender-scaled
03_hprender-scaled
02_hprender-scaled
Stage05_LowPoly

Low Poly

Low Poly creation is all about silhouette; our goal with a low poly mesh is to give the viewer the illusion that they are looking at a high poly mesh, even though they are looking at a heavily optimized one.

We achieve this by reducing polygons where the viewer can’t see it, and the silhouette plays a very important role in this.

I knew that I wanted a really optimized model in terms of topology, so just using decimate and calling it a day wasn’t an option. This would have created a whole bunch of other problems like unoptimized UVs or thin triangles.

So, for the whole Low Poly, I’ve reused the blockout and always compared it with my high poly. If I see details in the high poly that affect the silhouette, I remodel them in the already existing blockout mesh with optimization in mind.

The Engine is 90% made of Cylinders, so I made sure to optimize them in a proper way by reducing the polygons based on the diameter of the Cylinder.

If you look at the illustration below, you can see two different cylinder caps with a hole in the middle; usually, a hole inside a cylinder will have a smaller diameter than the base mesh, which means the smaller the diameter is, the less polygons you need for the silhouette to be smooth.

The 32 Triangle difference between those two meshes might not seem like much, but considering the huge number of Cylinders I had in this Engine, this saved a lot. The same applies to bent pipes; the smaller the bend radius, the fewer polygons you need.

I’ve used this method over the whole Rocket as shown in the images below.

Optimized03_SmallPipes-1
Optimized02_Top-1
Optimized01_Bolts-1
ComparisonTriangles-1
LargePipe

You can especially see this on the big pipe of the Engine.

Because I always optimize with silhouette in mind, I’ve only increased the Polygons of the rings which basically block the view of the actual pipe in the silhouette, making my eyes think that I am looking at a mesh with a high polycount, even though the actual pipe has quite a low polycount.

This is because you only really see the rings in the silhouette. I’ve also deleted faces that are hidden and not visible; this not only saves polygons but also in the end gives you more UV Space to work with and therefore a higher texel density.

If you like to read more about this type of stuff, I highly recommend this short article by CGTyphoon that covered these optimization methods in detail, which I’ve used over my whole model: Link to CGTyphoon Article

Stage06_UVMapping

UV Mapping & Baking

Now, I think it’s very important to mention that in terms of UV Mapping and Texturing, a Prop of that size requires a lot of unique UV Maps to achieve the desired texel density and therefore is extremely unlikely to be ever used in a game in this state.

If you would create a prop like this for an actual game, a combination of Trim Sheet, Decals, and Masks would have made a lot more sense, but in my case, as mentioned at the beginning, my focus and goal was to improve my baking and texturing skills.

For that, I chose a complex model with the thought that if I’d be able to successfully bake and texture an asset this size, I would be able to bake any asset in the future without any issues, and for that purpose, I’ve definitely learned a lot from this project.

With that being said, the target texel density for this project was 1024px/m, which allowed me to have crisp details and more possibilities for adding interesting materials in the texturing process.

I see a lot of people who take Texel Density too strictly when in reality you do have some flexibility. I like to see Texel Density as a guideline and not a rule; for this model, the Texel density was between 900px/m and 1100px/m. If it doesn’t look weird or is too noticeable, it’s fine if you don’t have exactly 1024px/m.

In terms of the actual UV Mapping process, I use a bunch of addons that make my life easier since Blender’s native UV Tools are not good in my opinion. The main ones are ZenUV and UVPackmaster 3.

Because the Rocket was made of a lot of Cylinder Shapes, and I wanted to save as much UV Space as possible, I’ve only UV’d ¼ or ½ of the Cylinder and stacked the rest; a lot of the models are also mirrored, which saved some time in the modeling process as well as saved more UV Space.

Below you can see an example of this with the Nozzle Extension and the Top Part.

NozzleExtensionSeams-1-scaled
NozzleExtensionBreakdown-scaled
UV02_Example_optimized
TopUV-1
UV01-scaled

The Blue Color shows the actual UV which is in the 0-1 space, whereas the red color shows the UVs that are stacked on top to save space.

UVPackMaster 3 was an incredible help for this one due to the amazing packing as well as its “Split Overlapping Island” feature that moves all the overlapped islands in the next tile for baking purposes.

This is done across the whole model, which saved me a lot of UV Space and therefore I could achieve a higher Texel Density. Since the whole model is basically textured with presentation in mind and not necessarily for games.

I’ve also decided to use a smaller Pixel Margin just so I can get even more Texel Density, which then again, I don’t recommend if you would actually create an asset for an actual game. In terms of the baking, it really isn’t anything special.

Personally, in the past, I’ve used Marmoset Toolbag for baking, but in my opinion, I find Substance Painter’s Baking Tools really good nowadays, so I just bake there. Just so I don’t have to switch between software all the time. I didn’t really use anything special like name suffixes since it worked without them.

ID_Color_optimized
Stage07_Texturing

Texturing

We have come to probably the most interesting stage; it’s time to give the engine some color and make it look realistic.

Before we talk about the actual texturing process, I want to mention the importance of planning and studying the materials because this will greatly improve your work and give you more flexibility.

You might ask yourself why you should study the materials if you can just create some random metal material or some metal that looks similar to the reference and put it on the object, but the truth is that no object is made out of some random metal.

It’s made of a particular metal that suits the needs for this exact object, and each metal has its own properties on how it reacts to heat, dirt, water, etc.

If you know your materials and how they react, you will know where you should paint the imperfections and, most importantly, how the imperfections should look.

My Favorite Website for planning is “Miro”. Below you can see a screenshot of the layout of the planning in Miro. I will cover each section in detail and explain why I did it like this.

MiroLayout-1-1
The first step was identifying the different materials in the rocket engine and marking them in a separate color.
It’s easy to get overwhelmed by the vast number of materials, so breaking it up into its own sections helped to organize it all.
The second step is the actual research; luckily for me, there’s a lot of data about the Rocketdyne F1 and what materials were used on each part, and if I couldn’t find information about the materials, I searched what type of metals were generally used in Rocket Engines.
If I found the material that was used on this part of the engine, I continued researching about that material and asked myself these 4 questions:
  • What is the appearance of the Metal? How does it react to Oxidation?
  • How is the behavior under heat?
  • What is the appearance when dirty?
Below you can see one of the sections in this case, Stainless Steel, from the layout above in Miro.
StainlessSteelExample-1

This was unbelievably helpful for me to know why exactly the Metal looks like this in the Reference and how it happened.

This knowledge is not only helpful for the actual material creation but also if you plan to not follow your reference or if you don’t have enough references and must add your own details which are not existent in the reference.

If you understand the materials, you know where to paint the imperfections and how they should look.

An advice most of us probably have heard once in a while is to get enough reference, and it’s honestly one of the best pieces of advice out there in terms of 3D Art.

EngineInjector-1

Reference is one of the key factors, especially if you’re aiming for realism.

But I believe in addition to gathering a ton of Reference, understanding the reference and understanding why it looks like this opens you up to so many more possibilities and therefore improves the result.

NozzleExtension-1

After importing and baking my Mesh in Substance Painter, I follow a base set up in every Texture Set in the Layer Stack before starting to texture the object.

validate_phbr
  • First, I have a Curvature Overlay, which is basically the Curvature from the Baked Mesh overlaid in Color. This effect produces brighter edges while making everything else darker. I found that this effect makes the texturing more contrasty and nicer to look at.

  • Above that, I multiply the AO Bake Map of the Mesh; this again just adds more contrast and makes the AO Map stronger.

  • At the top, I have a Sharpener, which is just a Passthrough Layer with a Sharpen Filter. Sometimes I don’t need it, but sometimes it can be quite helpful. The con is that it can quickly make your materials look noisy, so be careful with that.

  • Above everything, I have a PBR Validate, which ensures that I have the right PBR Values. Depending on the Mesh, I disable or enable some of them.

  • I also use a LUT from Alexandre Alves in Substance Painter, which matches the colors as accurately as possible to Unreal Engine 5. I found that this LUT is a little more accurate in comparison to setting ACES in the Viewport Display in Substance Painter, but both methods work well.

    Here’s the LUT: Link to the LUT

Let’s talk about the actual texturing process.
I don’t use any existing Smart Materials that are available in Substance Painter; I create them all myself and over time create my own library of Materials, which is where my initial research about these Materials really paid off.
As visible in the Miro Layout, besides the reference to the engine, I also gathered references to the actual metal, which helped me create the base Metal without any imperfections; the goal here is to match the color as much as possible and get a good base to work off, always compare it with your Reference.
If I am texturing an object and I want to achieve as much realism as possible, I generally follow these three rules:
  • Color Variation
  • Roughness Variation
  • Height Variation
For that, I use a lot of layers that have different colors, different roughness values, and when needed, slight height variation, which are all driven by masks; a lot of times, these masks are from the Megascans Imperfections Library.
During that whole process, always look at your reference; look at the highlights in the photograph and see how the surface reacts to light.
Especially with Metal surfaces, you have to rely a lot on Roughness Variation to make it look interesting.
If I have the Base, I start getting the dirt in to make the surface even more interesting.

As mentioned earlier, there are a lot of weldings on this Engine, especially smaller ones. Doing them all in the High Poly would have taken a ton of time, so I decided to do it in Substance Painter and at the same time use the power of Anchor Points, which have been heavily used in this Project.

Substance Painter has an amazing tool that I’ve used on this Project for the small weldings called the Path Tool. To explain very simply, it allows you to create a spline on top of your model where you can assign Materials that will follow this spline.

You can actually try it out right now since Substance Painter already has a Welding Path tool inside their library, which I’ve used for this project.

If you just search for “welding,” you will find “Welding Metal”; if you click on it with an empty layer, you will automatically be in the Path Tool, and you can start creating them on your model as shown below.

StainlessSteelExample_sharpned

After creating all the Weldings I wanted, I put an Anchor Point on this layer because I wanted to create dirt based on these weldings, just like in my Reference.

The dirt for the Weldings has quite a complex setup because I wanted as much variation as possible to avoid making it look repetitive, so it has a lot of filters and different Grunge Maps as shown in the breakdown below.

The same technique was used on the weldings of the bigger pipe:

WeldingTechniqueBiggerPipe-1
Mask02

Anchor Points really do bring your projects to the next level; my favorite combination is using Anchor Points and the High Pass Filter, which allows you to add multiple layers of complexity to your materials, which is what you see a lot in the real world.

I generally spend a lot of time in the mask trying to replicate my reference as accurately as possible; for that, I use a mix of generators, stencils, and hand-painted details as shown in the example below.

My favorite Stencils Pack that I’ve used for this project is from Javad Rajabzade called “Metal Surface Imperfection Vol 02”; apart from that, I’ve also created my own stencils from my reference.

StencilCreation

Basically, for the Stencil, all I did was take my Reference in Photoshop, desaturate it, and increase the Contrast. After that, play with levels to get good black-and-white values, and you’re done.

Now you can import that in Substance Painter and paint it on your mesh; I still fixed and hand-painted a lot of extra details on areas that seemed too empty or the stencil couldn’t reach.

Originally, this project was just supposed to be the Engine alone, but after getting some critique that I should add more color, I did by making the tapes different colors and even making the bigger pipes at the top.

Which originally had been just bare metal and had green and red paint, I still found it to be a bit colorless and not interesting to look at, so I decided to model a cart which I found on some Reference pictures as shown below.

46381456365_97a200c809_b

The cart was done roughly in about 1.5 – 2 days, but for that, I think it turned out quite well.

Modeling-wise, it’s nothing special; for the high poly, I haven’t done any sculpting; all I did was just take the low poly and bevel some of the edges and add some welding with the Addon I mentioned above; the texturing does most of the work here.

The Rust is just a Megascans Material and again heavy usage of Anchors.
In conclusion to the texturing, your goal is to replicate your Reference as much as possible, and for that, Anchor Points and Stencils are your best friends.
As you might notice, Reference is the base of it all and therefore the most important factor in this, in addition to understanding your reference and knowing why the metal looks like this can be extremely beneficial to texture areas where you don’t have reference.
Explaining Anchor Points and Stencils can be a little difficult, especially at an advanced level, which is why I’ll refer to two amazing free courses from Artstation Learning that explain it really well.
  • Substance Painter: Pushing Your Texturing Further from Jason Ord: Link to Course
  • Creating and Texturing with Custom Stencils from Rick Greeves: Link to Course
Albedo01
Albedo02
Albedo03
Albedo04
Roughness01
Roughness02
Roughness03
Roughness04
Stage08_Presentation

Presentation

In terms of the Presentation, I think that Marmoset Toolbag is just the best software out there for this type of stuff; it’s incredibly easy to use and produces really good results in a short period of time.

I see a lot of props or environments on ArtStation where I can see that the texturing and the assets look really good, but the lighting and presentation just don’t show it to its fullest potential, which is such a bummer considering the amount of time you’ve spent adding all those details, so definitely take your time with the presentation.

Lighting

When it comes to Lighting, I think for Props like these, basic is best. For this one, I just used 2 different HDRI from PolyHaven, one being an Interior Lighting (for the renders with the cart) and the other one being just a basic studio (for the full rocket engine standing).

I also use a Shadow Catcher with a Roughness Map just to get some nice reflections on the ground and add more shadows.

In terms of the Render Settings, I’ve used Ray Tracing and used a lot of bounces as well as put the Shadow Quality to the maximum. I wanted the highest possible quality for my final renders.

RenderSettings

Camera settings

I feel like the Camera Settings have the biggest impact on the overall visuals because that’s where you can add some Post Effects and change your Tone Mapping.

In terms of Tone Mapping, I always use ACES; it’s just what looks best for me and is closest to my Substance Viewport because of the LUT I am using.

For the Lens, most shots use 50mm to represent the human eye the closest; play around with some lenses and see what works best as this can have a huge effect on how you see the model.

post_effect-1

You might notice that I don’t use any Vignette or Bloom; this is because after Rendering it out, I usually import the images in Photoshop to do some last changes there because that’s just where I have more possibilities and what I am used to in terms of post-processing.

Stage09_Conclusion

Conclusion

First and foremost, I would like to thank everyone who supported me during this Project and gave me critiques to improve it. I would also like to thank Games Artist for this opportunity; I really appreciate it!

In conclusion, I can say that this project has been an amazing learning opportunity for me to improve as an artist. I feel like the goal with every personal project should be to go out of your comfort zone and create something you haven’t done before, because every time you do so, you will drastically improve as an artist.

Thanks for reading – I hope this was helpful!

Wide-scaled
01_02-scaled
03_04-scaled