Jump to content

WIP JP's Pokemon graphics overhaul


Fraesh

Recommended Posts

Hey!

 

This is actually my first post here so, hi everybody :)

 

Im pretty new to vpin, started beginning this year and got my pin in a playable state at this point. Now that I got most of the wood working behind me (and its raining nonstop anyways...) time to get to my feet wet in table making!

 

To start off, Ill try to give JP's Pokemon table a graphics overhaul and thought I'd share some of my journey on the way :) Ill stick to graphics for this one and dive into coding another day.

Maybe some of you can help me in case Im stuck, maybe someone will learn a thing or two, as I have learned by reading all your posts this past year.

 

Ill post more in the time to come but now, heres a quick render of my current state:

 

20210709_4krender.thumb.jpg.0c1851015ad43c67430d880c3972b1cb.jpg

 

Link to comment
Share on other sites

thx! im excited aswell 🙈 lets see how itll work out in vpx....

 

Alright here we go:

 

How do you even make a table?

I have no clue, but most certainly one step at a time. So first I had to find an easy table to modify that could use an overhaul: Pokemon it is!

Since its an original table theres no need for scans or anything, everythings up to imagination :)

Im a child of the 90s, so this is basically the style I grew up with and immediatly came to my mind:

 

image.png.d82bd9fb3833430806723ce1c3f6aa75.png

 

You remember the pokerap from back in the days :D? Oh well, music comes at a later stage.

 

 

Not knowing where to start, the playfield seemed like the easiest first step to take. Off to Affinity photo!

After importing the original playfield, a quick magic select got rid of most of the background and I put the red underneath. The original will now be used as a guideline, hence the rough job. I just need to know where to place stuff.

 

image.png.6425339f25d2e1a482ec8b676c919230.png

 

Some assets from google turned out to make a nice collage. Try filtering the image search for big pictures/symbol to find good metarial!

image.png.d680ce108956d3c8c5382344f00b19fe.png

 

For the bursts i actually drew some very very rough lines to form a kind of star with a corse brush (it looks like a toddler gone wild with a crayon) and used a zoom blur on it. Thats an old trick from back in the day and basically the extend of my photoshop skills :D Then again, perfect for reconstructing a 90s style.

 

image.png.00e8fee7c118c052090638ea47a194f9.png

 

Last but not least, the not so fun part: putting circles in all the right places and adding text overlays. Not much to say here, it takes time. Now its in 4k, much more readable :) 

The inserts are just plain circles for now to indicate their position. The actual inserts will be added later in blender. 

Finally, one export for the PF, one export with just the labels on, well need those later.

 

Thats it for part 1. We got a playfield!

image.png.b7ca2a3b2b54e0b8362e247b6f782ee6.png

 

Edited by Fraesh
Link to comment
Share on other sites

On we go: 3D!

 

First thing to do, export the whole table as OBJ to get it into Blender, also some of the important textures. 

For the playfield, I already imported my new one :)

To get some light goin, I threw in a basic HDRI of a room and free handed the some GI lights in the places the original table has them. Insets are still the old one but even with this basic setup, you can already see the blender magic.

This is as easy as it gets but if you wanna have a glimpse on how a table would look ray traced, just import it into blender :)

Screenshot-2021-07-11-081933.jpg

 

The materials are very simple principled shaders (due to lack of skill on my side :D) but thats ok for now. On the bumpers you can already see some subsurface scattering going on. If you dont know what that means, it basically means that the material lets some light through but colors it in a different way. Think of skin for example, which is acutally kinda white, but scatters the light so your blood and muscles return the light with, well skin color. Or a balloon lit from behind. Most of our plastics use subsurface scattering (at least I do) later on to return a more whiteish color when lit from below. Ive also already replaced the charizard with an OG charizard as you can see :P.

 

For most of the pinball related stuff I used ALBs fantastic!!! youtube series which goes into much more detail!

https://www.youtube.com/channel/UCdwbk0uOSkgVHd_HWYVCQag/videos

 

The point lights used in this shot use his settings. They try to resemble old bulbs which was too orange for my taste, so I made them more blue'ish later on. 

 

For the inserts, I simply added primitives and placed them in the right spot on the playfield. Boolean modifier "punches" the holes into the playfield, put a light below everyone of them, add a plane with the text et voila, you got inserts!

Screenshot-2021-07-11-083603.jpg

 

Clear inserts are nicer with all their detail and geometry but for now, simple diffuse & subsurface scattering do the job just fine. 

For the plastics, I wanted to do a bit more then just a color gradient. So I searched for some nice textures and added them to the plastics layer. since these are simply projection mapped from above, they dont have to be cut out neatly.

Screenshot-2021-07-11-084243.jpg

 

These will give the table a bunch more detail so you got something to look at. Pinballs are always cramped with illustrations :)

 

Screenshot-2021-07-11-084029.jpg

 

Starting to look like a real table!!

Edited by Fraesh
Link to comment
Share on other sites

Some more 3d Stuff...

 

Now that most of the stuff is set up, its time for the hard part. Improving the scene and getting stuff to vpx.

One thing I found is, exported geometry from VPX is no good, you gotta fix every single model, which is quite painfull. 

 

Your best friend is "M" - merge by distance, and "Convert tris to quads" to retopologize, at least thats what i found. Walls and plastics from VPX also dont have a real body since they are basically planes arranged next to each other. This appearantly makes a big difference for subsurface scattering. Compare the dark ramp shot from above with this one for example:

Screenshot-2021-07-12-094846.jpg 

 

You see how the plastics are lit from below? I was trying to achive that with material settings for some time until i realized it was geometry issue. So if you're like me and think you can skip fixing the ramps, forget it. You gotta fix it...

 

After some more tinkering, we got this:

Screenshot-2021-07-12-094335.jpg

 

If you've never done 3D or artsy stuff in general, you spend maybe 20% of your time on the first 90% of the end-result and the other 80% on the last 10% that push it over the edge :D. Thats the way it is....

 

 

Now the learning curve really comes into play. Ive already exported multiple render passes to put test them in VPX. Surprise: It doesnt look that same :D

I used the "render static cam and project UV map from view"-approach for this which suprisingly really works quite well.

 

Screenshot-2021-07-12-093301.jpg

 

I rendered my assets just like in the above mentioned tutorial to find them in VPX looking like trash. After a LOT of tinkering we are startin to get somewhere. So if youre at this stage and struggling, heres some stuff that screwed my colors:

 

- Check your material and set "Disable lighting" to 1. The less VPX messes with my colors, the better! I still kept the original GI in the table to light dynamic objects and the ball but leave my rendered assets alone :D

- Check flasher and light colors! The table was tinted in red the whole time because some lights and flashers colored it in. VPX finds various ways to mess with your colors... you gotta close every last loophole...

- Dont forget about the Night/Day slider. Since my static rendered version doesnt like VPX lighting, i wanna fix that slider to a point where the dynamic lighting is coherent with my render lighting. Otherwise it looks weird.

- Adjust enviroinment emission. Like Day/NIght this can cause discrepancies between dynamic and prerendered elements.

 

EDIT: After more experimentation I found that I in fact DO NEED LIHGTING! More tweaking to get it to work but sadly, just turning the lights off won't fix everything...  

 

And finally, try to make it look as good as possible. Play with everything. If it makes it better keept it. If it makes it worse, reverse it. 

 

This is a render of the current working, playable table in VPX

 

20210712-VPXrender.jpg

 

As you can see, theres still a long ways to go but were getting there, one step at a time...

The lighting is still very very hard to get right and on my actual VPin it looks very washed out sadly. I guess Ill have to tinker with the lights some more and just found that in blender I had Ambient Occlusion turned on which, confusingly, made the scene brighter and removed shadows... Isnt ambient occlusion supposed to ADD shadows in cornors? Anyways, it has to go. If you miss shadows, try unchecking ambient occlusion :P 

 

 

Edited by Fraesh
Link to comment
Share on other sites

Today I had some more time on my hands, changed the whole lighting and added a real pokemon center. The backdrop kinda bothered me and since the assets are available, i just popped in a real building :)

 

Turns out, if you want more shadow, you need more light! Sounds paradox, but thats how it is :) So I added more lights for all the figures and stuff to highlight them and also create shadow everywhere the light doesnt hit. 

 

If you light too little and uniformlly, everything looks flat or overblown as in my screenshots above.  I used few harsh lights for the renders above and a flat area. Now i reduced the area light, got rid of the ambient occlusion und added more small point lights for lots of accents. I think it looks better? I guess? 

 

 

hopefully it looks better in VPX..!

 

 

20210712-with-Pokecenter.jpg

Edited by Fraesh
Link to comment
Share on other sites

Letting everything render over the course of the day (yeay homeoffice!) i imported the new setup into VPX. Low and behold, it works!!

 

I  rendered all textures in lit/unit state and basically made 2 exact copys of the whole playfield with lit/dark textures on them. Then I transferred them into a collection in the top menuunder Table -> Collection Manager.

(didnt know VPX had collections?!)

 

To use the GI I had to edit the code a bit. In the script, theres a function called "GiOn" and "GiOff". Depending on your table and setup these might differ but as far as I understand it, every table has some kind of Gi function.

Inside these I simply iterate through my collections of Objects and turn them on/off

 

Sub GiOn
    Dim bulb
	Dim element 
    For each bulb in aGiLights
        bulb.State = 1
    Next
	For each element in aGiOff
        element.visible = false
    Next
	For each element in aGiOn
        element.visible = true
    Next
	Table1.environmentemissionscale = 0
End Sub

 

Heres some demo gameplay from the current state! It already looks pretty nice :D

Some more cleaning up and I can start playing it to debug! Excited!!!

 

As you can see, theres still some lighting issues. I need environmental emission to light the flippers, ball, playfield, etc but it also affects my models, where lighting is turned off :(

If somebody knows how to prevent models from recieving environmental emission let me know :)

 

 

Edited by Fraesh
Link to comment
Share on other sites

Quick Update of todays epiphamy: Remember when I wrote disable lighting on everything? Well dont :D 

I dont know why my earlier renders were screwed up but appearantly it wasnt the lighting....

Now that Im using VPX lights again, stuff comes together much more nicely!

Link to comment
Share on other sites

1 hour ago, ItchyRobot said:

Looks great! I would love someone to mod his Gargamel/Smurf table. Such a great table as-is, but with a graphic update it would be even more amazing.

Get some nFozzy physics in there, too!

Link to comment
Share on other sites

Thanks! Glad you enjoy it!

 

If everything works out with this one, maybe Gargamel can be the second one to recieve a facelift :D

Ill also have a look at nFozzy physics, havent give physics much attention yet :) 

 

Today is baking time! 

 

Some models dont like the projection mapping that much, especially the detailed ones like the pokemon. The tiniest change in viewing angle will mess them up. So we need complete textures for this instead of the projection. This is done by "baking" the colors into the texture. 

 

Screenshot-2021-07-15-112056.jpg

 

To bake your model, simply put an image node into the material, click on "new" and dont connect it to anything. Yup, its definitely a weird setup but it gets weirder...

Now hit the bake button on the right in the render tab and watch your precious time rinse away. 

 

For some reason, baking doesnt get much love in blender. It takes forever and is very very noisy, not using any of the optimisations available appearantly. Everything below 500 samples looks like TV static and even with 500 samples it looks like 360p youtube videos.

 

Squirtle.png

 

It took some time but I found this wonderful tip on youtube:

https://www.youtube.com/watch?v=lJbGR0Jnd0k

 

You can manually denoise your baked textures!!!

 

Just add an image input in the compositing tab, add the denoising, pump it through a viewer node.....

 

Screenshot-2021-07-15-112114.jpg

 

...and in an empty texture view select "Viewer Node" ans your image. Now you can save your denoised texture!

Screenshot-2021-07-15-112124.jpg

 

The time and headache this one saved me is unmeasurable. I was starting to think I'd have to go to 2000 samples which takes almost an hour per texture, even with a 2060super...

 

Now that baking is working though, Ill be chillin today while my GPU suffers the horrific fate that is ray tracing.

Link to comment
Share on other sites

On 7/15/2021 at 5:37 AM, Fraesh said:

If everything works out with this one, maybe Gargamel can be the second one to recieve a facelift :D

Ill also have a look at nFozzy physics, havent give physics much attention yet :)

Oh        my        god!!!!!!!
Please do

Link to comment
Share on other sites

Happy to help! Blender tips are most appreciated, especially specific VPX things. Stuff can be fiddely at times :)

 

Had a busy weekend and played the delightful flintstones table today. I really liked how the inserts and GI reflected off the table. My Pokemon don't do that yet since I just recently switched from "DUN TOUCH MA RENDER!!" to actually using VPX lights. 

 

At this point, I have a confession to make: I'm actually a musician and developer. Since the pandemic hit I havent been on stage  and just started messing with blender last year :D

So if you're new to all of this aswell, don't be afraid to just mess with stuff. It's a journey.

Having no clue how to properly light something, I just started applying skills from music production today.

 

If everything is playing at once, you can't hear what the instruments are actually doing, so first I turned everything but the inserts (animation...) off. Surprise, its pretty dark :D 

Perfekt to adjust the table reflection and insert light settings though. Now we can see clearly how the light is affecting our table

 

lights0.jpg

 

Its not much but you can see it quite clearly. The table doesnt have much geometry itself so theres not too much to reflect off but thats ok.

Next is GI. Turn it on, mess with the values. Having studied computer graphics in university, I know what the falloff stuff and power mean in theory. In reality  I just type in stuff and see what happens :D 

Just like music, reading a book about piano doesn't make you mozart. You gotta play. 

 

lights1.jpg

 

So here it is with GI on. Funny how the whole playfield is plain white in this state. I'd guess that under the hood VPX might just apply global emission and adds the GI value on top. If initially everything is black, that would explain why its just white when illuminated. But who knows, VPX rendering is indeed "special" :D 

 

Alright. We got lights, we got contrast, we got reflection. Now slowly add the color back in and try not to lose the detail we just accomplished

 

lights2.jpg

 

Tadaa, awesome! As you can see, still far from perfect. But it looks much more "natural?" and most importantly, its a process. Before the table was just too bright and I couldnt quite put my finger on it. Now it looks unbalanced, but real. We can work with that.

 

Theres also a buch of minor things like the projection error under the trees, brackets need better textures, the red hole behind the pokecenter and the faulty mew texture is still nightmare fuel.

 

mew.jpg

 

BEGONE SATAN!!!

Edited by Fraesh
Link to comment
Share on other sites

  • 2 weeks later...

Long time no see :D

 

Had a few busy weeks and no time/nerves left to work on the table. At this point, I'm also pretty fed up with it since the learning process took a lot out of me. For example, Im not really in the mood to render another full set of textures for this one just to fix some small issues I forgot. Also, the way it is now, I wont get the lighting exaclty how I want it.

With the knowledge and feel I have gained from this project, I'd like to completely restart it to get to where I'd be happy with it but that wont happen :D 

 

Some more learnings:

 

I rendered everything in 200% resolution and resized it afterwords in affinity (photoshop). I also applied some post processing since thats pretty easy to do with this texture based workflow.

This definitely makes the image clearer but adds another tedious step to the process you have to keep track of.... 

For the next one, ill try to incorporate that into the blender workflow somehow. You can resize and grade once. While learning I rendered 6-7 sets of images though at least and it starts to eat you up till its no fun anymore.

 

So Im messing a bit with physics this weekend and try to find something thats working for me. Unfortunately, I cant handle JP's physics somehow. Its so fast and bouncy... Guess I'm just too slow for his arcade gameplay :( I tried exporting physics from fluppers Tables and have much more success with these! So I guess, if thats alright? I might steal some physics from another table. 

 

Ill see how much energy I can muster up to iron out small flaws, after that Im done with pokemon. It wont be perfect but it's flaws will benefit the next table. Hopefully, for the next one, I wont have to render THAT many times just to find a small thing misaligning and it wont be as tedious :) 

Link to comment
Share on other sites

  • 2 months later...

haha hey long time no see :D

needed a break and had stuff to do, now i dont even know how I did the the whole pipeline for the build. Cant wait for VPE, tha'tll be sooooo much smoother hopefully. Maybe Ill just upload it next week since i wont really be able to change much anymore. Not perfect but hey, good first try :D

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
  • Create New...