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!

Prerequisites

You need the following software:

SoftwareWhat's it for?

Converting your picture into an svg which you can then import into Blender to create a mesh

converting your mesh to an in-game-item

Converting your SVG to a 3d object that you can import into Cyberpunk.

Exporting from Blender to Cyberpunk

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

  1. Open Inkscape and create a new document

  2. Select File -> Import and import your .png from step 0

  3. Make sure that your image is selected (click on it if you're not sure, it will have that resizing handle)

  4. From the menu, select Path -> Trace Bitmap (it doesn't have to be a bitmap)

  5. 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.

  6. Press the Apply button at the bottom

  7. Your new traced path will be auto-selected for you.

  8. 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:

  1. In Blender, select File -> Import -> Scalable Vector Graphic (SVG)

  2. Import your SVG. It will show up as solid black:

  1. With an active selection, find the curve properties panel in the bottom right (the green icon).

  2. In the "Geometry" section and find "Extrude".

  3. Set it to something like 0.001 — play around with it until your mesh is appropriately extruded.

    1. Do not bevel it! We want the corners nice and sharp, we can always make it round l,ater.

  4. 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

  1. Fix rotation: Press R -> X -> 90

  2. Fix scale: Press S and move the mouse

  3. Fix position:

    1. Press G -> Z to move the mesh up and down

    2. Press G -> X to move the mesh left and right

    3. You don't need to move it on the y axis

  4. 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

  1. Switch to the "Modifiers" tab in the sidebar panel on the right (the wrench, below the one highlighted in the screenshot above)

  2. From the dropdown, select Generate -> Remesh

  3. Your mesh will be a black box now. Don't panic, we'll fix this by setting the modifier proprerties:

SettingValueexplanation

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,

  1. Change back to Edit Mode

  2. Turn on X-Ray (Alt+Z) and select the shape that you want to split off

  3. Press P -> S (Split -> Selection)

  4. 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.

  1. Decide on a mesh and add it to your project.

  2. 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,

  1. select all the meshes that you want included (in Object Mode)

  2. 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:

  1. Find the array materialEntries

  2. Add four new entries (or duplicate one four times, or…)

  3. Name each item according to the entries in the previous step

  4. Make sure that their index property is unique and corresponds to their array position.

LocalMaterials

… and finally, we actually add the materials.

  1. Find and expand the array localMaterialBuffer and its child materials

  2. Copy the second entry, sex_shop_neon_sign_emissive_red_on via right-click menu

  3. paste it into materials

  4. Duplicate it three more times

  5. In the new material entries, find the property ColorOneStart and change it in the side panel.

  6. 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