Hi! My name is Béla Csampai. I am a 20 year old self taught 3D Artist from Germany.
It was my combined interest in games, history and art that got me into modding and eventually made me start with 3D Art.
I decided not to study 3D Art, as it is very expensive here (only private institutes offer it). At that point I already had a fair amount of experience so altogether with many other reasons taken into consideration, it didn’t make much sense from my perspective.
How it came about
Usually I am working on something that has to do with Antiquity or the Middle Ages, but this time I made an exception. Quite some time ago a pair of real Feldstecher binoculars from World War I that had been passed on to my father caught my interest. I took them to my desk and there they remained for many months untouched. Finally I was inspired at some point to make them in 3D. Besides, there is something about the shape of binoculars that make them very appealing as far as I am concerned. It’s probably the way all the different shapes and materials are combined into one compact harmonious piece. 😀
How I did it
I used PureRef, 3ds Max, Marvelous Designer, ZBrush, Unfold3D (RizomUV), Substance Painter, Marmoset Toolbag and GIMP. I also used a Wacom tablet.
First, to have some context, I took a bit of time to research the specific model and type of Feldstecher I wanted to recreate. I collected all the images that I found on the web and in this case, as I happened to have a real one myself, I took a ton of pictures with my phone as well. I took close ups which were mostly helpful for texturing later (for reference – they weren’t used as textures themselves) and blueprint-like pictures from the front, back, side, top and bottom. By distancing myself a bit with the camera and by zooming in instead, I got more of an orthographic view with that lower field of view, helpful for modeling later. All the images I put into PureRef. For those who don’t know, PureRef is an awesome tool for organizing and viewing your reference images.
I am using 3ds Max. After taking a closer look at the different shapes and objects that the Feldstecher is made of and trying to understand how everything works, I started with the easy and basic shapes. My goal was to make the Feldstecher as accurate as possible, so I took a ruler and measured everything.
Almost every part of the Feldstecher started as a cylinder primitive. From there on I mostly used standard tools among them Extract, Bevel, Inset, Outline, Connect, Bridge, and modifiers like Shell, Symmetry and FFD. I made sure to keep every part as a separate mesh just as it is in reality. This also made unwrapping easier later. Other than that I added a new Edit Poly modifier on top of the stack every few edits. That became a habit of mine but it’s not necessary, it just gave me a bit more control and I was able to go back to different versions of each object if I needed to.
I used Marvelous Designer for simulating the drape of the leather strap. This would have also worked just within 3ds Max but I wanted to try using MD for it and I think it might give better results as well. The base mesh of the leather strap I made in 3ds Max. I didn’t give it a shell.
I exported 4 different objects from 3ds Max. The binocular, the leather strap just hanging straight down and two simple planes parallel to the ground, one of them at Z 0 and the other one below the strap. In Marvelous I imported the leather strap as a garment and the binocular as an avatar. Then first I had to import the lower plane as an avatar as well. In the simulation this plane should move up to Z 0 (ground level) so it looks like the Feldstecher with its leather strap lays on some surface. Having the plane selected, I then imported the plane above as a morph target. Before continuing the simulation I used the Pin (Box) tool to preserve the upper part of the strap where it’s riveted to the Feldstecher. The ground collision has been deactivated. To finish that off I took the simulated strap back into 3ds Max. There I used TurboSmooth and manually added some extra loops with the Flow Connect tool. Then came the shell and some extra details for the high poly like grooves in the leather.
Before getting everything into ZBrush to do the detailing, I added a Chamfer (I am using the custom Quad Chamfer modifier which does a better job compared to the one 3ds Max ships with) and TurboSmooth modifier. Depending on the object, the Chamfer was controlled by smoothing groups or edge selections. A few minor details like very small grooves and spikes which would not have survived the Chamfer and TurboSmooth, I added later.
In ZBrush I split the mesh into similar parts and ZRemeshed everything to get a proper topology to sculpt on. I recorded the sculpting in Layers in order to have more control later. For all the edges I used the TrimDynamic brush and then added some scratches, dents and metal brushing with DamStandard.
For the leather pattern I wanted to use a Substance Source material I really liked. To get a height map so I could use it in ZBrush I just put an unwrapped plane into Substance Painter and applied the material and adjusted the scale. I was then able to use the exported height map in ZBrush and project it onto the barrels with Surface Noise with UV projection. This required the Subtool (which has been ZRemeshed) to be unwrapped, so I quickly did that and took it back into ZBrush.
On areas where your hand and fingers would put most pressure on the leather when holding the Feldstecher, I flattened the leather out, again with the TrimDynamic brush. I was trying out different Brush Imbed values here.
For all rivets and tubes which penetrate into other surfaces and objects, I wanted to imply the hole or damage in the object it goes through. I drew a circular mask with MaskPerfectCircle on the object that the rivet or tube goes into. (By holding spacebar I could adjust and correct the position). I inverted the mask and used a negative Inflate value (Deformations). Alternatively I could have, for example, selected a circular alpha with hard edges in combination with a brush set to -100 Focal Shift and used the Drag Rectangular stroke type. Since the rivets and the surfaces they go into are two separate Subtools it made it easier by using Transparency as well as Ghost Transparency. I cleaned the result up a bit with the Smooth and TrimDynamic brush. For the strap I used some leather wrinkle alphas applied with the Drag Rectangular stroke type. This I could have made more detailed but with texturing the combined leather materials made up for it in the end.
During the whole process I closely looked at the reference to spot any interesting details I hadn’t added yet.
In 3ds Max I disabled all modifiers that were added for the High Poly. Other than that I made sure to delete all faces which you wouldn’t see in the final model and also removed a few unnecessary edge loops. There is one little strange idea that I thought of and was curious about how it would work:
The objective lenses sit inside of the main body, the barrel. What I did is close the hole in the backside of the barrel. Instead I wanted to hide the exact circular area where the hole would actually be by using a masked opacity map later. 😀
I used Unfold3D, now called RizomUV for all the unwrapping. This software is great. Much more fun than it is in 3ds Max. The bridge which is available made it very easy to integrate into my workflow.
I am baking with Marmoset Toolbag which gives me a lot of direct interactive control compared to other solutions. I imported the Feldstecher from 3ds Max with Smoothing Groups matching the UV shells. TexTools offers a tool for that (I think it’s also available for Blender). If I have hard edges which at the same time are not split in the UV’s, it will unnecessarily need to calculate the vertices there twice from what I understand.
Beforehand I was too lazy to use a proper naming convention for all the objects so I had to organize all Low and High Polys in Toolbag now before I could see the first bake results. The default Bake Direction wasn’t working well in this case, in particular the rivets’ normals had weird angles. The Paint Skew tool in Toolbag made it very easy to fix that. In the GIF below you can see the minor differences between the High Poly and the Low Poly with baked normals:
Finally I could start texturing. I was looking forward to it a lot since it would combine many different materials and details. Scratches, fingerprints, dirt, dust, rust and more. Those signs of usage made for an interesting object and they can be very aesthetically appealing too. Then I loaded the model and the bakes (Normal and Material ID map) from Toolbag into Substance Painter. I made two 2k Texture Sets, one for the Feldstecher and one for its strap. I am working with PBR Metal Roughness so the channels I am mostly using are Base Color, Metallness, Roughness, Normal, Height and Opacity. AO, Curvature and the other maps I bake directly in Substance Painter usually, based on the already baked Normal map input. Most of my layers in Substance Painter can be broken down into Base Layers, Grunge Layers, Generator Layers, and AO.
I usually start with adding an extra layer of AO to every Texture Set – Black Fill Layer with the AO map in the fill effect of the mask. I invert and play around with the Level settings and maybe add a Blur effect as well. Then I might add Fill Layers masked by Dirt and Edge Wear Generators, adjust their properties, and modify them with more Fill and Paint effects. Instantiating layers across Texture Sets and creating anchor points within a Texture Set simplified the steps I had to do when working with many layers which otherwise I would have duplicated. I used that in this project to a large extent. Now I would continue with a Fill Layer for each Texture Set at the bottom of the stack to have a Base Material with basic color, metallness, roughness and height values to build on top of. I call those Base Layers. I didn’t use any Substance Materials.
Many Grunge Layers helped building up the details by working with the color and roughness values and sometimes the height values. In most cases the masks of those Fill Layers were not only controlled by one Grunge or one Procedural map. Instead I was stacking many different Fill effects on top of each other with different modes like Linear Dodge (Add), Normal, Substract, Multiply and Overlay, depending on the look I wanted to achieve to control the mask and also using them in combination with Paint and Generator effects in this way. Substance Painter ships with many great Grunge maps but I also got a few nice ones from Poliigon which I used for the Feldstecher.
It’s worth mentioning that I am organising my layers in folders (and folders within folders…) which themselves are controlled by Fills, Paints and Generators. Other than that I drew the engraved writings in GIMP based on the reference and imported them in Substance Painter to use as Alphas. An interesting detail is that one of the Feldstecher’s eyecups seems to have been replaced at some point. Therefore their materials differ significantly. In the image below you can see one of the dust Fill Layers and the main dust folder and how their masks are controlled by different effects. So for example using a White Noise Procedural map with Subtract Mode on top of a Dirt Generator is an easy way to get a nice simple dust effect.
Altogether the texturing process was the most complex (but also the most fun) part. What I can say is that by looking very closely at references and by thinking about how the object could have been used, it made it easier for me to abstract the different layers of details so I could rebuild them myself. I hope that makes sense. 🙂 I forgot to mention that when texturing I always had Marmoset Toolbag opened as well. Every now and then I exported the textures and I could view the real-time rendered result in Toolbag in a matter of seconds. This was not only helpful in a way that I could quickly see what I still wanted to change for the final result but it also was very rewarding and motivating.
As mentioned I am using Marmoset Toolbag for rendering. It allowed me to very quickly visualise different environments and lighting. First I searched for a nice Sky which fits the object and makes the details shine. Of the presets my favourites are Museum and Ennis House. Before adding Sky Lights by dragging around on the Light Editor, I was looking for the most interesting Sky Rotations in regards to the different perspectives on the object. I experimented with many different lights. If some shadows appeared too sharp then increasing the Width value of the Light was able to make them look smoother. Lights that emphasize the silhouette of your object make a huge difference in my opinion. I think those are called Rim Lights. I love adding those. What I love as well is a black background. I am not sure if I know exactly why but it definitely brings the object forth and gives it all the attention. The render settings were pretty much all activated. Local Reflections, Global Illumination and Ambient Occlusion with high intensity. Therefore I was using the speedy viewport mode a lot.
Regarding the camera settings I am usually rendering with the default Field of View but I also did some renders with a lower Field of View which gave the renders a different and distinctive look which can be very nice. For Tone Mapping I usually just use the High Contrast preset of the Curve Editor, but chose the Purple preset for the Feldstecher as I liked it a lot in this case. Also I slightly increased the Exposure, Contrast and Saturation values. At times I was using a bit of Depth of Field, but really not that much. Same goes for Bloom and Flare effects I’d say. A bit can be nice but too much is distracting. Actually I think it holds true for all the effects. So in the same way a bit of Sharpen, Vignette and Grain can enhance the look of the render but as soon as it gets to be too much, it gets in the way. Balance is key. 🙂
All final renders are on my ArtStation page.
I have been using Sketchfab for many years now and it has come a long way since then. I love the new Post Processing Filters like the Screen Space Reflections which worked nicely with the Feldstecher, especially with the golden variant. I used a lot of SSAO, as well, and a tiny bit of Grain, Sharpness and Bloom. Also I increased the Brightness, Contrast and Saturation a bit. Milky Way for the Environment. No extra lights in this case. A smaller Field of View and black background again. That’s it really.
Thanks to Sketchfab for the opportunity to write this blog!