Junliang Zhang shared the production details of CyberNeon in UE4, a project that combined the styles of Blade Runner 2049 and Chinese cyberpunk.
My passion for the game industry comes from my childhood. I still remember how much I was sitting in front of the computer back in the 90s, playing classical PC games like Starcraft, Command & Conquer series and Age of Empires II. When I played those games I always wondered how they were made in terms of art and gameplay and how I could make cool mods on my own.
In order to pursue this interest, I started to self-learn 3D modeling, texturing, and game engines since 2010. At the same time, I went to Shanghai Art & Design Academy to study Game and Interactive Media Design. I studied a lot of 2D and 3D game art fields, such as concept art, 2D/3D character design, environment modeling, and game design.
In September 2014, I went to New York Film Academy (NYFA) to study a BFA in Game Design program. Since then, I have kept track of the newest game industry workflows and also learned a lot from many professional artists through watching their tutorials. After graduating from NYFA, I gained a lot of great experience in 3D environment art and lighting, joined 3BLACKDOT, and participated in the production of Dead Realm (2017), No Way Out – A Dead Realm Tale (2018), and some unannounced projects.
Now, I work as a full-time 3D Environment Artist and constantly create personal projects for my Artstation portfolio. At the same time, I am going to study an Entertainment Arts & Engineering program at the University of Utah at the end of this year.
How It Started
I worked on CyberNeon project from October 21, 2017, to March 15, 2019. As I work full time at 3BLACKDOT, I came back to the project only after work and on the weekends. The environment was inspired by Josh Van Zuylen’s CyberRunner project which also took two years to be finished. At that time, I found Josh’s work shocking and admired it, so I decided to make a unique Chinese Cyberpunk world which was called CyberNeon after all.
Back in 2017, I set three main goals:
- All scenes had to be designed from zero to complete independent production
- Implement Chinese style in the Cyberpunk world
- Make a scene of a larger scale than CyberRunner
Reference & Blockout
Awesome reference or concept art is always a great way to get started when you want to create something visual. When I start making a project like this, I usually sit down and think about the background story of the scene first. This is a great habit that can help you find inspiration and new ideas while designing and texturing. I spent a lot of time to collect as many references as I could and eventually, made several mood boards for the project.
First of all, I created some of the basic buildings to block out the city layout, and play with different art styles and composition in order to get some ideas for the pre-production stage. I used modular modeling techniques for some of the main buildings. Every piece was planned in Maya to snap together perfectly. I could modify different shapes even after the pieces were done which was very useful and efficient.
Some buildings and background structures that have special design were created manually one by one. This approach helped me to come up with new ideas. Sometimes when I could not figure out the design, I went outside/traveled to get fresh inspiration.
For the wires and pipes, I built a custom spline mesh component blueprint in UE4 which helped to speed up the workflow.
For the city layout, I created over thirty different types of buildings and three hundred props in total. You can see how large the scope of the city was at the end of 2017.
In early 2018, I was mainly focused on workflows, pipelines, building designs, shader creation, composition, color palette, and lighting.
The pipeline was the following:
- UE4 – Block out with simple white boxes
- Maya – Create low poly meshes
- Maya – Create high poly meshes
- Substance Painter – Baking and Texturing
- Substance Designer/Quixel Mixer – Create tiling procedural textures
- SpeedTree – Create organic foliage and trees
- UE4 – Set up scenes and create unique shaders if needed
Once the pipeline was clear, it was time to block out some simple white boxes and create some basic shaders and rain effects before the pre-production stage.
Here is my initial idea for the focal point of CyberNeon during the pre-production stage. I really wanted to create something that would combine the styles of Blade Runner and 80’s Cyberpunk. However, I changed my mind because it felt that the scale of the clock tower didn’t benefit the space, so I extended my background to improve the composition. As you can see, I still stuck with blocking out the environment and didn’t texture it yet.
One month later, I felt that the background had a lot of free space I could utilize, so I started to create background buildings based on the mood boards.
First Lighting pass experiment:
When I accidentally stumbled upon this amazing cyberpunk style captured and edited by Liam Wong, an award-winning director and photographer, I was inspired by his fantastic color palettes, lighting, and compositions, and decided to use Adobe Color Wheel to capture all the main colors used by Liam. This tool is very useful when you want to create color palettes for your lighting scenarios.
After two months, however, I lost interest in the chosen color palette because it contained only purple and blue tints. It somehow felt tedious and repetitive, so I removed the lighting. At the same time, I deleted almost 85% of the buildings because the scene lacked diversity.
Two more months were spent creating assets and trying to work out a nice composition with different building designs. I re-designed a lot of buildings to get a great contrast between modern style and Sci-Fi elements.
A screenshot from UE4 before the final stage:
The final stage had been refined roughly for three months from January 2019 to March 2019. I created all of the neon signs, new props, vehicles, improved shaders, and tested different lighting scenarios.
Here is the final background building design. It is completely different from what I did previously in the pre-production stage.
The creation of materials and shaders is a huge challenge for me. The most difficult part was to create a dripping water shader for the master materials that I used everywhere.
For the dripping water shader, I used Animated Raindrop Material created by Harry “deBug” Emelianov. However, I did some research and heavily modified the original shader. I wanted to combine MF_Raindrops and MF_DrippingRain material functions into one and also split top raindrops and side dripping water.
Here’s the breakdown of the original raindrop material: Breakdown: Animated Raindrop Material in UE4.
- Water Shader Breakdown:
Here’s my modified version of the water shader.
I used World Space to split dripping water and raindrops with Lerp Alpha Node.
Here is the final all-in-one water material function. There are tons of settings you can change in real-time which is very fast and effective.
- Master Material with Water Shader Breakdown:
I used three different normal raindrop maps blended together and blended them with final water shader material function that I made before.
I used MakeMaterialAttributes Node to connect all of the nodes together. Fresnel node was used to fake water reflections. At the same time, I used a dripping roughness map to introduce leaking effects.
Here’s PBR textures setup created in Substance Painter.
I used HUE Shift Node which helped to create different color variations on the same model. For the normal map, I used Append Node to split X and Y channels and increase the intensity of the normal map. This was very useful to avoid breaking normal maps by increasing the value too much.
For the details, I used Detail Normal and Detail Normal Distance. This way, if the player is close to the props or buildings, he’ll see normal details. If the player stays away from the props or buildings, the normal maps will automatically change.
Here, I blended everything together and connected it to the Output node.
Make sure Use Material Attributes are checked.
Final master material instance.
Final rendering screenshots
- Vertex Painter Shader with Raindrops Breakdown:
I created a Vertex Painter Shader for the ground and used channel B for raindrops.
Then, I made Alpha raindrop textures and blended them together.
And then I used PreparePerturbNormalHQ Node and PerturbNormalHQ node to convert the Alpha map to Normal.
The last step is to create a B channel for Normal map with Z Vector.
Here is the entire graph for Vertex Painter Shader setup with World Space UV mapping.
Final rendering screenshots for Vertex Painter Shader.
As mentioned above, I manually created all of the background buildings one by one in Maya. I did not use any generators or procedural tools for this project. First, I started with references from the mood board, made a base model for the buildings and modified different shapes. That was quite an enjoyable process for me at that time.
All models were simple and easy to create, and I mostly focused on good-looking shapes.
Screenshots from Maya.
Neon signs were created quite differently. For some common Chinese words, I used PinYin input to type symbols directly in Photoshop and exported them to UE4 to set up the materials. It was very straightforward.
For some complicated dynamic neon signs, I started with black and white simple shapes of GIFs. I used GIF to Sprite Sheet Converter to create a sprite, imported it to UE4, and created a unique material with Flipbook material function.
For the RGBA textures, I created all of the shapes in Photoshop as well, imported them to UE4, and made a master material for the neon signs. I only needed to modify the color and emissive intensity for the materials.
At the same time, I converted the textures, colors, and constants to parameters because I wanted to change all of the settings with instance materials. Once the material is finished, I would create an instance material so that I could instantly modify anything I want.
In general, lighting is usually the hardest thing for artists, and a bad lighting setup can ruin everything you did. When approaching lighting for the first time, I usually focus on the player’s view and the objects or lights the player will see at a glance.
For CyberNeon, I re-created lighting for the entire scene over five times in order to get the best result. The foreground and background lightings were separated which helped me to optimize the process performance before baking due to the scale of the environment.
For the foregrounds, I created a dynamic star neon sign that was the focal point of the scene. I also used a red sign with white Chinese words at the top – it used a spot light and helped the scene stand out more. At the same time, I used Volumetric Lighting for the spot lights which brought in a very significant effect of emitting light beams.
As long as the key light was set, I started adding and positioning the fill lights and back lights. Cold and warm colors represented primary and secondary lights.
For the background, I used a lot of spot lights to illuminate the buildings and neon signs with blue and purple tints which helped the main building pop up. Then, I added some lit smoke, fog, and raining particles for a nice atmosphere of a cyberpunk world.
Here are my Lightmass and Post-Processing Settings:
I created a post-processing sharpness material so that I could adjust the sharpness of the scene.
In the end, I mixed together almost 90% baked lighting maps and 10% real-time point lights and spot lights. I usually use lighting to tell a story because different lighting and colors can make the player experience different feelings. That’s why I mainly think about the lighting from the player’s point of view. I believe it is very useful for lighting artists to think about what kind of mood he/she wants to achieve.
I also spent a lot of time working on set dressing, creating new assets, and adjusting lighting and composition for the final fly-through video. I studied a lot of cinematic angles, cutting shots from many great cyberpunk theme films and TV shows. Eventually, the video was shot entirely in the sequencer of Unreal Engine 4. I created over 20 different angle shots and one master sequences to put every shot together into the final video. I should say that the Rain shader was definitely the key to making the entire scene vivid and materials pop up. Not only could it help me to achieve a realistic look of the textures but it also highlighted cool raindrops and dripping water effects.
If you are interested in lighting, you can check my lighting breakdown for UE4, also published on 80.lv: Mimicking Prey and Alien Isolation Lighting in UE4:
I think that the biggest challenges were the composition and design of different assets. I spent almost a year working on the pre-production stage. I spent a lot of time on shaders, new assets design, resolving technical problems, studying blueprints, and so on. But I should say that I have learned a lot from CyberNeon project. I’ve gained a lot of great experience in 3D environment art, shaders, cinematic animations, composition, and lighting.
If you struggle with figuring out good ideas for your project, I would recommend you to go outside and see the real world which can actually give you a lot of fresh inspiration and new ideas. And enjoy life!
In the end, I would like to thank 80.lv for this interview and all of you for reading it. I hope you enjoyed this breakdown and found some helpful information! If you have any questions or feedback, you can find me here: