The initial ambient occlusion & normal maps are done.
Instead of having every 3D objects' UVs (of the Lucky 38 building) fit into one space, I divided them up into pieces. The top 'hat' of the building has its own, the middle, bottom, and the floor (also the sign has its own as well). I started with fixing all the normal maps of each 3D object that needed fixing in Photoshop, and then went on to editing all the AO (ambient occlusion) maps afterwards. This took some time, and when I say 'some', I mean a lot/tons/heaps (/a bag full?) of time.
In the game Fallout: New Vegas, the 3D asset in-game is a bit different from one in the intro cutscene of the game, as well as looking at the building from far away as the player in game. In regard to the lighting, the cutscenes and at night, the building has lights that are attached to multiple places of the building. In the game's G.E.C.K. toolkit, the lights are not attached to the asset of the building.
Right now, my plan is to work on the textures of the building, and then start work on the lighting afterwards. I'm thinking of choosing the lighting of either the in-game day or in-game night lighting of the asset. Time to stay indoors, stay away from everybody, and begin painting textures onto the asset. 🎨
Fallout: New Vegas 2010, Obsidian Entertainment, Bethesda, intro cutscene.
Fallout: New Vegas 2010, Obsidian Entertainment, Bethesda, Lucky 38, Fallout Wiki, viewed 25 March 2020, <https://fallout.fandom.com/wiki/Lucky_38>.
One of the things that I wanted to get right with this model (The Lucky 38 Hotel & Casino seen in Fallout: New Vegas) was the small detail on the object that 'holds up' the sign. I've had some problems with Unity in the past when wanting pieces of an object to be somewhat transparent or completely invisible, but in this case, surprisingly, it was very simple 😵.
Instead of modelling all the small details, multi-cutting, adding more polygons and waste precious computing memory and time ⏱️, I decided to just create a flat mesh, and make an albedo/texture map that takes into account its alpha channel. The 'alpha channel' is a colour component that represents the degree of transparency or opacity of a colour. And in this case, will be used to make part of an objects mesh completely invisible to the naked eye (and... I guess... a clothed eye as well 👕).
After creating the UV map for the object, I used a snapshot of it in Photoshop (the Adobe kind) and began to create the shape I intended the viewer to see. After shaping it out (as seen in the pic below (the black part)). I then selected all the white parts in between and in the alpha channel, I 'painted' them black. I also painted the dots around the sides black as well (seen as pink dots in the pic below).
Why black you ask? Well son, in the alpha channel black means completely transparent, while white means it will not be transparent 🙃. And anywhere in between those two full colours, will create a degree of transparency. In the picture below, I made the Red Channel and Alpha Channel visible, while the others hidden. The red-ish pink is the alpha channel shining through, and those parts will be transparent.
After that, I hid the shape I created (once again, the black part, in the pic above). Now the albedo/texture map is now completely white, but the alpha channel is still there (in the background, waiting, watching 🕵️). I saved the file as a .psd Photoshop file (I've had previous trouble with .png files and Unity when it comes to transparency and alphas. But maybe I'll try it out, see if it works), I then imported the file into the Unity game engine, dragged it onto a material, and changed the rendering mode on the material from Opaque to Cutout. Now the alpha channel is taken into account and voilà! Opacity levels in effect.
P.S. The 3D model in these pictures were the colour red to make the small details more visible.
Finally finished modelling this bad boi ☝; The Lucky 38 Hotel and Casino (at least the first version of it). Also be prepared to see a lot of grayscale pictures of a 3D model 😞.
Well, maybe not finished yet... I might create simple shapes in Maya for the light sources (of the lights on the building), Making those created models emit light in the Unity Game Engine. But that's way down the line. All other pieces are modelled.
Instead of modelling the whole building, I decided to just create pieces of it. Being a 'round' building and all, I can just centre the pivot of each object to the centre of the building, duplicate and then rotate it to fit in the empty spaces. This helps cut down the time of the UV unwrapping/mapping, and also leaves more room on the UV map for more detail to put on the texture maps.
'Large' pieces of the Lucky 38 Building
For the Lucky 38 sign, I found two fonts (on dafonts.com. Links to fonts at bottom of blog post) that resembled the fonts used in the actual model in-game (Fallout: New Vegas). So, I downloaded 'em and installed 'em! And Jumped on the old Abode Illustrator train (and rode that shit till the sun went down! ... Too far? ...probably... anyways,). I just used the default Font tool and wrote 'Lucky' and '38'. Saved them as Illustrator files (.ai) and then went on the old Maya train (and rode that shit til--... I'll stop...).
Maya lets you import Adobe Illustrator files and turn them into 3D objects made of polygons. After spending way too much time cleaning and decreasing the polygons on each text model, I used a Non-linear deform called Bend on the 'Lucky' model. The bend deformer does what it sounds like it does; bends shit. Bent it just enough to sit on the 'backboard' of the sign (︵).
Something I got to look into is having/showing two sided faces, so that it can be looked at from the front and back. As you can see in the images below, I'm going to try to make the 'side-middle' part of the sign just be faces and make the gaps (as seen in the in-game model) transparent. It's the double-sided face problem that needs solving (so it can be seen from both front and back, not invisible when looking at the back of it. I read somewhere on the interwebs that Maya has an option to make faces double-sided, but I don't know if that will transfer over when importing to Unity. Unity might have an option similar to this, or I might need to research into creating a shader that inverts and shows the model's faces as double sided. If push comes to shove, I might just duplicate and invert the model, or even extrude out the model to make it 3D. Lots of testing to be done either way!
The 'low poly' model (if you can even call it that at this point) is made up of just above 10,000 polygons! (Je - fucken - sus) Which is the model I will be primarily using. The high poly model is over 42,000 polys, which will be used for the initial detail maps (ao, normal). I also plan to create LOD (Level of Detail) models. So, when the camera is zoomed out and the building is in the distance, the model in the scene will switch with a lower poly model of the low poly model (if that makes sense to you), reducing the poly count.
Initially I thought about fitting the UVs of all the objects on one map and making that map size at least 4096 x 4096 (4k), but now I'm leaning towards separating them out, to make sure every object has enough space and detail (they rightfully deserve!). Well, ♫Heigh-ho, heigh-ho, it's UV mapping time, here I go! ♫ 👉
P.S. To make up for all the colourless photos of the model here's a picture of Kermit the Frog on a log, singing The Rainbow Connection (rainbow not shown). ⇩⇩⇩
'Airstream' by Nick's Fonts, <https://www.dafont.com/airstream.font?text=Lucky&psize=l>.
'Fontdinerdotcom Huggable' by Font Diner, <https://www.dafont.com/fontdinerdotcom-huggable.font?psize=l&text=38>.
G.E.C.K. screenshots taken from the Fallout New Vegas G.E.C.K. toolkit
The Muppet Movie 1979, ITC Entertainment / Henson Associates, The Rainbow Connection, The Disney Wiki, viewed 29 December 2019, <https://disney.fandom.com/wiki/The_Rainbow_Connection>.
Couple of months back I started modelling the Lucky 38 building seen in the game Fallout: New Vegas. But I put it on hold to complete a 3D asset pack I was working on (Diner Prop Pack - available now!). As of the start of November I've picked this project up again and there's no turning back baby!
I started off this project by looking at some reference images on the old Google machine. Although a good start, most pictures were screenshots of the building from a distance and I needed to get some references that showed the minor details (I needed to get in close 🔎). Images from the world wide web were a good start for blocking out the model, but it was time to get down to the nitty-gritty.
I remembered that the PC version of Fallout: New Vegas included the G.E.C.K. (Garden of Eden Creation Kit) toolkit, which allows you to edit and create any data for use with Fallout: New Vegas. - on a bit of a tangent, I remember creating a new skin/material (texture map) for the 10mm Pistol in Fallout 3 with G.E.C.K., and I also changed the damage of the gun to something like 999999. Which was fun for a while, just running around with my custom decked out 10mm Pistol. Those were the days 😢 - So I opened up GOG galaxy on my PC and downloaded my copy of New Vegas.
Before continuing with this project, I had to boot up New Vegas just for old times' sake. Took me straight back to 2010 (simpler times back then...). Anyway, after helping the town of Goodsprings get rid of the attacking Powder Gangers (⟵ game reference), I quit the game and opened up G.E.C.K..
There I found a better reference to the Lucky 38 building... It was the Lucky 38 building itself! I took a ton of screenshots from all different angles, but being an in-game asset, some of the pieces were cut off/hidden/deleted. Pieces that were never going to be seen in-game by the player (some of the top section of the building for example).
A few screenshots of the Lucky 38 Building asset in G.E.C.K.
As mentioned earlier, some parts of the asset were missing (most of the roof pieces), and the top of the building differed from the top of the building from a level in the actual game (example in pics below). So, ended up just looking at the two assets and tried to put them together where they made sense.
The rest of the model was created just by looking at the reference images, and then modelling it in Maya, while listening to Spotify Daily Mixes and Discover Weekly playlists (which by the way, seemed like I was listening to the same songs over and over, So I switched to a Jukebox Jives playlist to switch things up a bit and then I proceeded to do The Twist 🕺.)
Current state of my model
Currently I'm still modelling pieces of the model (still got to do the front gate and stairs, as well as the smaller details, like the railing near observation points and whatnot.), then try to cut down the polygon count as much as possible for the Low Poly model as well as correct the UVs for texturing.
G.E.C.K. screenshots taken from the Fallout New Vegas G.E.C.K. toolkit
The 'released' blog post (this is gonna be a short one folks)
The Diner Prop Pack submission to the Unity Asset Store was successful (So there's that). Initially it was declined because I didn't format the text description correctly on the store page and I also needed to add the poly count of each object in the description as well. But after doing that, I resubmitted, and a couple of days later it was accepted.
Links to Diner Prop Pack:
- Unity Asset Store
Version 1.0 done.
This month I finished modelling the assets needed for the initial release of the asset pack. This 'pack' in Unity contains 67 prefabs, and 3 example scenes. Initially there were going to be more objects included, but I crossed some out due to just wanting to release as soon as possible. I might update the Diner Prop Pack and add some more objects in the future, but for now, this is it (↑).
After finishing and resizing the models, I created three example scenes, made sure every prefab had a collider attached to it, and checked if there were any spelling mistakes in the file names. I then submitted the asset pack to Unity to hopefully get accepted and be sold on the Unity Asset Store. The submission included setting up the basic information of the store page (name, description), and also adding artwork to the page as well.
There could be a long wait before they get to testing my submitted work. The Unity Asset Store Publisher employees (😎) need to test what versions of Unity it will work on, check if there are overall errors in importing the pack to a Unity project and also the fact that it said on the web page that it might take some time due to the high demand in submissions. So, what I might do is upload the pack onto my itch.io page as well, so the project isn't just sitting on my computer collecting (digital) dust.
I scribbled out a checklist a few months back, which you can see just above (also looks totally destroyed 💔), which helped me continue working on this project. And, as you can see the next picture contains the objects that I didn't get to model (yet! (maybe. we'll see)). (Also wasn't trying to win a handwriting contest so get off my back OK!) ✍
Yep. Still working on this diner asset pack.
This past month started great. I modelled and textured a few models in about a week, which included modelling; stools, a sugar dispenser, coffee machine, coffee jug, popcorn machine, and a food menu sign (WOW! Some exciting stuff! 🔪). But then I took a week off from working on it. I just needed a break.
After recharging my batteries, I resumed working on the project (No Rest for the Living). I modelled a couple of more objects, fixed a few errors in some of the normal and occlusion maps, and also resized some of the assets as well.
I also created some prefab variants for objects (pics above ↑), which saved me some time, having not to model any new pieces. I just changed the appearance by adding or removing pieces from each model and/or creating different textures (albedo maps).
To get this project finished, I crossed a few items off that I won't be modelling and aren't essential to this 'pack', well at least for 'version 1.0'. I just need to finish this project as fast as possible at this point. I've only got a few more objects to model, and then I'll start getting the package ready to upload onto the interwebs (😎).
There are so many projects that I have started, never finished, and moved on to working on another. But for this project, I painted myself into a corner in the best possible way. I've created all these models (↑), it would be stupid to stop now, scrap everything and start a new project. So, the adventure continues...
Just been modelling assets this whole month. That's it. End of blog post. Goodbye. Take it easy. Au revoir. Auf Wiedersehen. (I joke 😊)
After modelling and texturing a few more props, I decided to start planning out a diner scene with the models already made. The above picture (⇧) is the initial layout of the scene, and will probably be changed in the future, to comply to an example of a level that could be in a game. Making it more focused and thinking about what the goal is for the player in that said space. (Also, the lighting of the scene has not been worked on, so don't judge the lights Sonny Jim!)
Off the bat, the scene has helped with what the scale of each object should be. I tried scaling them as close as possible in Maya, but when importing into Unity, some just needed a little adjusting. I'm planning to put some more time into resizing some props when all the models are finished and imported into Unity, and then freezing each of the adjusted objects transform components. Even though I'm trying to scale them to a reasonable size when working on them as I go.
During modelling in Maya, I figured out for this pack of assets, it helps to model the low poly object first and then the high poly afterwards. This helps me keep the poly count to a minimum. For some models, I started creating the high poly first and then by subtracting edges, faces, and vertices, I ended up with the low poly. But doing so, the assets still ended up having a lot more polygons than intended with the final low poly model. I also need to keep in mind that some of the smaller objects don't need to have little details extruded out in its low poly model. The object will be looked at from a distance and not inspected from a centimetre away.
Also, a tip: When creating assets, YouTube and/or TuneIn radio (or even Spotify) are your best friends. You start listening to a 60s ,70s or 80s radio station on TuneIn or a Top 100 songs playlist on YouTube... mate. In the words of the band Starship... "Nothing's Gonna Stop Us Now".
A couple of days ago, I decided to create some 3D art assets. They will be put into a unity package, and ultimately upload it onto the Unity Asset Store when finished.
I decided to go with a diner theme for these 3D models. Before a came to that conclusion, I looked up diner assets on the Unity Asset Store by just typing in the word 'diner'. About 11 packages popped up. All have a price tag to them, the lowest is $4.99 while the highest is at $55. Right now, I'm trying to decide if I should make this package free (which will make it the only package free when 'diner' is typed in the search bar) or sell it at the lowest price possible on the Asset Store (which is $4.99). I think I'll have more of a final answer when I've modelled and textured most of the assets, and see how the package looks as a whole.
I will also upload the package onto my itch.io page as well if its legally allowed to be uploaded there as well as on Unity's store. Unity's store guidelines might state that the packages uploaded to their store have to be exclusive to that store.
I'm also trying to use the least polygons on each object without losing the shape of that said object. The texture maps (albedo) are just plain colours to create a that simplistic look, and all map sizes are at 512 x 512. The albedo maps can be edited so that the colours of the objects can be changed (you might not like the colour red!).
As of right now I've modelled 13 assets, and my goal is to model at least one every day. I have a total of 69 models that are planned to be created, but that number could change depending on what I think is missing from the package or what models aren't needed.
If the platform your building your game to doesn't support a specific custom shader that contains the ability to see the player through a wall, I have an alternate way that may help you with that problem.
I had been messing around with a New Nintendo 3DS development kit, and found out that it doesn't support custom shaders. Specifically, a shader I wanted to use which gave the ability to see the player behind a wall, so the actual person playing the game knows where the character is on screen.
This alternate option uses a Linecast from the Camera game object to the position of the Player, and then when the player is behind a wall a sprite pops up on the screen where the player is positioned. You can imagine that the sprite could be some quirky animating image of the face of the main character.
I have a couple of other scripts running during the game, a player controller script, a camera follow, etc. I will only go through the ability to find where the player is when him/her is behind a wall. Also, I am using an orthographic projection on the camera, but not to worry because this alternate way will still work if your camera is in a perspective view.
Full C# Script and Example at bottom of blog post.
Checked with Unity version: 2018.3
Then back in Unity, create/add a player game object if you haven't yet (e.g. Create -> 3D object -> Cube), create a Canvas (Create -> UI -> Canvas), and name them anything you like.
On that canvas I changed the Render Mode to Screen Space - Camera, and also created another Camera game object that takes care of the UI elements in the game. I then dragged the UI Camera in the Render Camera slot on the Canvas. You can choose to do this or just stick to one camera. (There are no scripts on the UI Camera, just on the Main Camera). If your using two cameras don't forget to uncheck UI on the Culling Mask of the Main Camera and select the UI layer on the Culling Mask on the UI Camera and nothing else. Also make sure the Layer of each game object is correctly displayed just like the pictures below. (Main Camera Layer = Main Camera, Canvas Layer = UI).
Now create an image (Create -> UI -> Image) and add it to your canvas, This is going to be the sprite that shows up on the screen when the player is behind a wall (make sure you choose a sprite for your UI Image).
Select the Main Camera and in the boxes below on the script drag your Image and Canvas to the script.
After that, it's time to create some layers. On the Player, go to the Layer option in the Inspector tab, and add Layer.
Now add two new Layers, name one Player and the other BehindWall.
Make sure you set the Player layer onto the player after creating it. And now create a new game object or if you have a wall in your scene, make sure the layer of that object/wall is set on BehindWall.
You can also open up the Project Settings (Edit -> Project Settings...) and uncheck a couple of things on the Layer Collision Matrix on the Physics tab.
With that now done, we can go back and select the Main Camera and now on the script we can choose the Player and BehindWall layers on the LayerMask.
Back to the script. In the Start function add these lines:
Now let's set up the Linecast. (you can also find out more on Linecasts here .)
After we have set up the Linecast, we can now use its information. So that if the Linecast is not hitting the Player, which will only happen when a wall (with the Layer set to BehindWall) is between the line and the Player. We then show the sprite, which will follow the player behind the wall.
When the Player is behind a wall the sprite image will pop up and follow the player as long as you are behind a wall. Another thing we could add just below this piece of code to make it easier to visualise the line is this:
Now when we press the Play button in the Unity Editor a line will be drawn in the Scene view when selecting the Main Camera.
P.S./Edit: Instead of enabling and disabling the canvas, you can also just turn the actual Image Gameobject on and off.
A shrivelled up gherkin.