Your image as custom mesh
Guide to creating neon signs from 2d textures
Summary
Published August 2023 by manavortex Last documented update: March 18 2024 by manavortex
This guide will take you through the steps of replacing one of Cyberpunk's neon signs with a custom mesh.
If you want, you can then turn your replacers into new AMM: Custom Props for AMM!
Wait, that's not what I want!
To learn how material assignment works, check 3d objects: .mesh files and its sub-page Submeshes, Materials and Chunks
To learn more on how materials in general work, read Textures, Materials and Shaders
For a guide on changing an existing mesh, read Changing materials, colors and textures
Prerequisites
You need the following software:
Step 0: Make or find an image
Start with an image. We're aiming for our own neon sign here, and we'll aassign the colours later in Wolvenkit, so make sure that it is something with clean lines and good contrasts. I'll use this:
Make sure that your image is as clean as possible. I can't stress this enough – any rough or fuzzy edges will result in extra geometry, making the cleanup in Blender much harder.
Step 1: Convert to SVG
I started by following this guide, but I'll write you a TL;DR
Open Inkscape and create a new document
Select File -> Import and import your .png from step 0
Make sure that your image is selected (click on it if you're not sure, it will have that resizing handle)
From the menu, select Path -> Trace Bitmap (it doesn't have to be a bitmap)
Pick your options in the right-hand panel. I won't cover them in detail here, check the linked guide or noodle around until the result looks OK.
Press the Apply button at the bottom
Your new traced path will be auto-selected for you.
Select File -> Save As and save it as an *.svg file.
Time to switch to Blender to turn it into a mesh!
Step 2: Making a mesh
For this, I've originally followed this guide, but here's a TL;DR for you again:
In Blender, select File -> Import -> Scalable Vector Graphic (SVG)
Import your SVG. It will show up as solid black:
With an active selection, find the curve properties panel in the bottom right (the green icon).
In the "Geometry" section and find "Extrude".
Set it to something like 0.001 — play around with it until your mesh is appropriately extruded.
Do not bevel it! We want the corners nice and sharp, we can always make it round l,ater.
Once you're satisfied, transform the curve into a mesh: Object -> Convert -> Mesh
We're now leaving the previous guide.
Step 3: Fixing up the mesh for Cyberpunk
Scale, rotate, and move your curve to the centre of the viewport
Fix rotation: Press
R
->X
->90
Fix scale: Press
S
and move the mouseFix position:
Press
G
->Z
to move the mesh up and downPress
G
->X
to move the mesh left and rightYou don't need to move it on the y axis
Apply transformations: Press
Ctrl+A
->T
Cleaning up the geometry
You will get much better results with the Blender AddOn QuadRemesher; however, after the first 30 days it costs money. You can download a trial version here.
Let's reduce poly count and clean up our mesh. For a detailed guide, see here, I'm going to give you a TL;DR again:
Remesh modifier
Switch to the "Modifiers" tab in the sidebar panel on the right (the wrench, below the one highlighted in the screenshot above)
From the dropdown, select Generate -> Remesh
Your mesh will be a black box now. Don't panic, we'll fix this by setting the modifier proprerties:
Mode
sharp
Remesh type: preserving sharp edges
Octree Depth
8
Level of detail
Scale
0.1
Size of quads in the remeshed object
Sharpness
1
Preserve sharp edges
Switch back to Object Mode (press Tab) and apply the modifier. The result should be something like this:
Now, triangulate: switch to edit mode, select everything, and press Ctrl+T. It's necessary for the Cyberpunk reimport.
For better results, I cheated: I split off the ghosts' eyes, the ghosts themselves and Pacman, and used Quad Remesher on each of them. This guide will show you the basics, you can make prettier meshes on your own later once you got it to work.
Creating an UV map
Switch to the Object Data Properties in the right sidebar, fold out "UV Maps" and click the + button. This is necessary for material projection, and Wolvenkit won't let you import if you didn't do it.
Naming
Rename your original mesh to submesh_00_LOD_1
— we need that for the import in Wolvenkit.
Optional: More submeshes for more colours
You can assign one material per submesh. To split off a part of the mesh,
Change back to Edit Mode
Turn on X-Ray (Alt+Z) and select the shape that you want to split off
Press
P
->S
(Split -> Selection)Rinse and repeat until you have all the submeshes split off
Creating a Wolvenkit project
Time to pull up Wolvenkit.
You can obviously use any kind of mesh or material here!
I'll be replacing base\environment\decoration\advertising\signage\sex_shop_neon_sign\sex_shop_neon_sign_b.mesh
, the heart-shaped ad banner.
Decide on a mesh and add it to your project.
In the project explorer, right-click on the exported file (
sex_shop_neon_sign_b.glb
) and select Show in Windows Explorer, because we will now overwrite this file in Blender.
Exporting
In Blender,
select all the meshes that you want included (in Object Mode)
use the Wolvenkit Blender IO Suiteto export into the file from the previous step.
Assigning Materials
I'll give the TL;DR version, you should be able to follow along. If not, feel free to read up on how materials work in meshes or find us on Discord!
Open sex_shop_neon_sign_b.mesh
in Wolvenkit and open the appearance on
(as this is the one they're using on Jig Jig Street).
ChunkMaterials
To learn more about this, check Submeshes, Materials and Chunks. This is not necessary for completing this guide.
At the very top of the mesh, we'll need to change the chunkMaterials
as follows:
MaterialEntries
Now, we define the materials:
Find the array
materialEntries
Add four new entries (or duplicate one four times, or…)
Name each item according to the entries in the previous step
Make sure that their
index
property is unique and corresponds to their array position.
LocalMaterials
… and finally, we actually add the materials.
Find and expand the array
localMaterialBuffer
and its childmaterials
Copy the second entry,
sex_shop_neon_sign_emissive_red_on
via right-click menupaste it into
materials
Duplicate it three more times
In the new material entries, find the property
ColorOneStart
and change it in the side panel.Repeat for each material, then save the mesh.
Testing!
Let's hit up Jig Jig Street to look at our sign…
Please remember that you are currently replacing all heart neon signs in the entire game! Before sharing your custom neon, consider making AMM: Custom Props!
Congratulations! If everything works, you just made a mod!
I don't want a replacer!
That's A-OK, but exceeds the scope of this guide. Fortunately, you can just head over to AMM: Custom Props and proceed from there.
Troubleshooting
There is really very little that can go wrong here if you closely follow this guide.
Something is wrong with my 3d object!
If you can't export your mesh from Blender or import it into Wolvenkit, make a cube (right-click into the viewport, Add
, select Cube
. Before you get hung up on this step and burn out, let's add a few cubes to the game to give you a success. After that, you can hit us up on Discord in the #textures-and-models
so we can fix your mesh.
Something else is wrong!
Check the Troubleshooting your mesh edits pages or find us on discord. :)
Last updated