Build a table in Blender. Then what?

  • This topic has 11 replies, 6 voices, and was last updated 7 years ago by Dark.
Viewing 12 posts - 1 through 12 (of 12 total)
  • Author
    Posts
  • #52555
    bord
    Moderator
      @bord
      MembervipContributorModerator

      Let’s say you decide to try out the technique of building a complete table in 3D modeling software (like @Flupper, @Knorr, @Dark, etc.). Once the table is built, how do you decide which elements to bring into VPX and which ones to let VPX manage? Do you group like objects and bring them into VPX as a large primitive, each with one large baked texture or just bake one or two distinct ones and duplicate them on the VPX table? What about GI? Do you bake two versions of the playfield for GI on and off?

      I think the difference in quality between a basic VPX table and a 3D modeled table is significant enough to explore but I’m stuck on finding an approach that is also practical. Hoping you guys can chime in and give me some feedback. You can reference my early work on a Centigrade 37 table if you want to give specific pointers.

      Attachments:
      #52558
      randr
      Keymaster
        @randr
        ModeratorMember

        Your correct proper way is to export let’s say all like objects as one object. So like all plastics would be one prim not 5 separate prims as example. This is huge performance boost and really is proper way to do it. I struggle with placement and always say close enough but dark has shown me close enough is not good enough! So placing objects in a program like blender is almost a must today to keep up with the quality of tables being done lately

        ********************************************************
        Messing with the VPinball app and push notifications.
        So if you haven't downloaded app yet what are you waiting for!?
        for IOS and Android

        ********************************************************

        #52559
        nFozzy
        Participant
          @nfozzy

          Looks good. I recommend keeping the table renders color neutral, so any objects with baked textures don’t get colorized twice when they get rendered again in-game.

          Combining objects is a good idea, it improves performance by reducing draw calls. Each object can only have one material though, and you’ll have to sort out the UVs.

          You can’t swap PF images without losing reflections (PF is static rendered for that trick to work). I don’t think it’s necessary though. You can bake shadows / AO into the playfield image, or you can overlay shadows on top using a flasher with alpha. The playfield will be lit by the environment image and the main table lights, then the GI should be able to brighten them up through modulation (check out Fuzzel’s guide on that). If all goes well, the flashers should be able to handle the majority of the lighting fine.

          Using images or image sequences for lighting is tricky. If you use disable light, the textures will have to match the lighting of the scene as closely as possible. There’s a cheap shortcut approach where you just render some light into the texture and then move on. Once the object is lit up in-engine, you’ll get a similar light ‘pop’ to your rendered light. I think TPA does this a lot. I’m using this technique right now with some plastic inlanes because they aren’t a high priority.

          1 user thanked author for this post.
          #52564
          Flupper
          Participant
            @philippe

            Where to start? Most of the stuff I have made in Blender was discovered through trial and error. So for the pop bumpers texture I have made maybe 10-20 test textures which did not work, before finally I liked it. This includes a lot of photoshop modifications on the texture as well. Main big change for me was using project-from-view uv mapping in blender for rendering the textures. This means that the uv mapping of the 3d model matches the render output of the blender camera. So I don’t use baking that much anymore. The drawback is that the textures are view dependent and could mean that you need to make them separately for FS and DT. Benefit ofcourse is refraction, reflection, etc.

            other topics: my 3d models tend to get simpler (less faces) since I started working with blender. In VPX I now always use low poly objects. The same objects in blender, have a modifier for subdivision of the faces. Only with that enabled, you get nice looking reflections, refraction, etc during render time. For diner I even removed the nonvisible faces of all the ramp models.

            i really like the vpx lighting system, so what I do for inserts is this: texture for the inserts is either from images or prerendered in blender by me. In photoshop I overlay the insert texture with a feathered selection of the center of the texture, which is black&white. Without a light on it, it looks a little desaturated in the middle, but with a light, it gives a nice highlight. On for instance a green insert, with a sufficient bright light in vpx, the green insert gets a white highlight in the middle. You can see how this looks in my wip images of WH2O but is also used in bk2k and diner.

            i am not a big fan of the shadows (AO) in vpx, so I leave that off and instead prerender it like described above. If you do not overdo it with the shadows, there is no issue to have them in the pf texture, a good light will “outshine” the shadow, so the player will not notice it still is in the texture.

            Also, I use “disable lighting” a lot. This lets the texture be seen as I made it in blender. For Diner I only relied on the environment map for the wireramps, which have no texture. I tried to do this in Blender, but could not get this working nicely, and takes huges textures. Wireramps I tend to make from a basic (working) wireramp in vpx, exported to blender and then add rings, cut off parts, bend stuff vpx cannot, etc.

            Most of this stuff you can see in action in Diner. My 2 goals are always: make it look super good and at the same time have excellent performance: not too many timers, polys, scripts, etc. The only thing I don’t reduce on are big textures.

            #52566
            Flupper
            Participant
              @philippe

              And I use inkscape like Fren to convert an image into a svg for blender importing, for all the plastics.

              And for all the inserts I use one primary light on the insert and a secondary one (round) for adding an “indirect lighting ” effect on the playfield. Which I like a lot especially on a dark table. This requires the insert light to be on a 1 unit high wall, otherwise the insert texture would be lit twice and look wrong.

              #52569
              randr
              Keymaster
                @randr
                ModeratorMember

                Great info!

                All very easy to do when you learn how but every time I do plastics I have to watch frens video :)

                ********************************************************
                Messing with the VPinball app and push notifications.
                So if you haven't downloaded app yet what are you waiting for!?
                for IOS and Android

                ********************************************************

                #52570
                randr
                Keymaster
                  @randr
                  ModeratorMember

                  Great info!

                  All very easy to do when you learn how but every time I do plastics I have to watch frens video :)

                  ********************************************************
                  Messing with the VPinball app and push notifications.
                  So if you haven't downloaded app yet what are you waiting for!?
                  for IOS and Android

                  ********************************************************

                  #52571
                  bord
                  Moderator
                    @bord
                    MembervipContributorModerator

                    Thanks for all the responses. Already going to save me a lot of frustration. It’d be interesting to see a well documented walk through of a build like Diner or STTNG. Not just the WIP images but process details. There’s no manual on this sort of thing and you guys are blazing the trail.

                    #52573
                    Drybonz
                    Participant
                      @drybonz
                      Member

                      I was hoping Dark could write up some brief tutorial-like stuff before he heads on to other projects.  Not sure if he would want to do that, but I’m sure it would help people out for things like this and optimizing table sizes, etc…

                      #52578
                      Flupper
                      Participant
                        @philippe

                        For WH2O I am trying to do the process more strsightforward, and it sort of looks like this:

                        1. Find a good playfield image, either fully prepared or a real good photo/scan/redraw. Find the correct size for it (aspect ratio) and a blueprint or playfield protector (found and used this for WH2O). Use the blueprint/protector to check/correct the playfield. A full redraw can take as long as a full build. Colors should be uniform for the whole playfield and use the full range of colors if possible (so red something like rgb 255,0,0 for instance). Work on a highres version if possible (2048×4096 for instance).

                        2. Find playfield inserts texts, I did this for bk2k, diner and wh2o. Replace all insert light images with new good ones and put the insert texts on top of that.

                        3. Find reference images shot in good light and in darkness for reference later on. Preferably also shots of the table decomposed, to see where the light bulbs are,etc

                        4. Find good images/scans of all the plastics. Clean them and use the same color palette as the playfield.

                        (I only continue if I can find good enough resources)

                        5. Convert a (usually existing) vp8 or vp9 version to vpx. Replace all outdated stuff and workarounds. Import new playfield and implement the insert lights.

                        6. Replace ramps and wireramps by vpx ones for physics. Get the table playing to a certain degree. I group all physics related objects on one layer.

                        5. Create wireramps and plastics in Blender. Create specials like holes, figures, etc

                        6. Do the lighting other then inserts. For flashers on Diner I made new primitives, textures for that (flashing/non flashing), side wall textures and special LUT files as well. I prefer not to use flasher vpx objects, just regular lights. For GI I use a combination of regular lights and primitives (ie posts) who are set to “disabled lighting”.

                        7. Create textures for the transparent ramps like in diner with refraction. This means four of them; GI on/off, FS/DT

                        8. Check all sounds, import new ones from other tables if possible.

                        9. Create desktop background somehow. Check for unused textures, sounds, objects and remove them.

                        10. Test,test,test, update physics, all shots etc should be possible.

                        general tips:

                        A ask help if you are stuck or be prepared for a long search to get stuff working.

                        B accept that (much of) the fun is in the making, less so in the finishing. This all takes many evenings. I worked on Diner almost every evening during half a year. A lot of stuff took several iterations to get it right. I know Knorr also takes several months and a lot of hours. For me it is not about speed, but the quality.

                         

                        #52592
                        Dark
                        Moderator
                          @dark
                          vipMemberContributor

                          What can I say that hasn’t already been said here?  Grouping objects/mesh’s on export is a good practice but to be specific about it, this is mostly important with dynamic objects that utilise transparency.  As most vpx authors know anything with transparency has to be rendered ‘dynamic’ and has extra render calls to render what’s to be seen through that transparency.  So if you have overlapping objects with transparency those objects will need to be made separate so we can set individual depth bias values for them so that they may render properly.  So if you have transparent layered plastics you could make all level 1 plastics in one group and all level 2 plastics in another.  As was mentioned previously all grouped objects must share a material so if all your plastics were made the same way generally a material along the lines of “plastic with an image’ will suffice, I usually use that material as a base and tweak it from there.  So grouping dynamic objects will reduce render calls and boost performance but another thing to consider as well is texture maps.  If you have a group of primitive objects, they will all need to share the same texture map.  What I often do is just bake the textures for individual plastics, then using photoshop combine those textures into one and then adjust the UV layouts of the objects to match the new layout of the texture map.  If you look at Gilligan’s Island you will see how I grouped the plastics.  On Taxi I combined the plastic ramps into one mesh for the same reason but also since I used the ‘project from view’ method set up in Blender and rendered in max, I didn’t need to worry about the overlapping section showing through.

                          As flupper mentioned post-photoshop work can go a long way, both flupper and myself probably do at least minor tweaks in photoshop to almost all 3D rendered textures we produce.  So in regards to PF shadows or element shadows or GI shadows etc, you can paint those right on the PF if you desired or if you want to be able to fade them in/out you can use a flasher object for shadows, or if you want to easily animate a shadow you can use a primitive.  If you take Taxi as an example you will see that the GI lighting around the slings is done with flasher objects, and for those shadows I literally just painted them, it was no 3D trickery as it would of taken longer to arrive at a similar result for me.  The shadows for the plastic and wire ramps I rendered using a shadow matte method in 3ds max.  Basically I make a copy of the PF in 3D and apply a ‘shadow matte material’ to it, then what I do is select all the objects that I want to cast shadows and in their object options I disable ‘visible to camera’ so that when I render from a top(ish) view from a camera it will save only the shadows for me complete with an alpha map transparency (png/tiff/targa supported formats.)  I actually added a slight blur to the shadows in photoshop afterwards to tweak the ‘softness’ of the shadow to my liking.  This is why if you look at the shadows of particularly the plastic ramps on taxi you’ll notice the ramps cast a variety of different depths of shadow since something transparent casts less of shadow and in areas with over lapping plastic that are less transparent cast more of a shadow.

                          I feel like with this topic, since it’s essentially a discussion about art and how to render content in a realistic manner we could discuss many other sub-topics such as color and light endlessly.  Hauntfreaks for example had 20+ years experience in the graphics industry and as a result had a very sharp eye for colors, contrast and composition and it showed in the work he did.

                          I think an important question to ask when assessing what should be made into 3D or maybe what should be handled by VPX is ‘how much better will this be in 3d?’  For those of us who do a lot of work in 3D it seems natural to just start doing everything but there are many cases where the reward might not always be worth the effort to you.  Plastics can be done fine with walls but the downside is less control over how the sides of the plastic look and you can achieve higher resolution graphics using primitives, so I think in most cases prims are a good choice for plastics.  Ramps can be done in VPX obviously as well but they can look waayyy better in 3D, however it can be frustrating trying to get those 3D ramps to look good – luckily flupper is working on a tutorial which will explain the ‘project from view’ rendered method in detail.  Toys, especially ones that move are obviously better in 3D but they are probably among some of the most challenging things you could try your hand at making in 3D – which is one of the main reasons I’ve made them my priority.  Generic parts likes posts, pegs, screws etc don’t necessarily need to be made with prims but they are much easier to deal with than a 50 pointed wall.  Also generic parts, once accumulated can be re-used again and again so in the long run they will save you time.

                           

                          I had planned to make a small ‘3d table builder’s course’ which would include the basics of getting set up in 3D and correlating between your 3D scene and your VPX table.  It would be split into parts and it would cover a few different videos for making ramps and plastics as a main priority.  My aim would be to make the tutorials specifically geared towards making the process slow and easy to follow to get you started but hopefully introduce you to enough basic concepts that you could expand on your skills/learning from there should you choose to do so.  I’d been talking about putting this ‘course’ together with Hauntfreaks…..that’s how long ago I started thinking about it.  In short I wanted to give the community the building blocks they need to continue making quality tables without my help.

                          I’d like to make a distinction at this point, I’ve never said that I plan to leave the VP scene, just to dial it back.  I won’t necessarily be quitting making models for VP entirely, it will just be to a lesser extent and with my focus primarily on toys and complex models.  I’m not quitting per say, I’ve just made it official that I’m no longer accepting model requests.  I think at this point that any or every author should make an effort to at least learn how to make their own 3D ramps, plastics and basic 3D objects and with just that I’m confident the community will continue to strive to put out quality tables, especially since there are a fair number of guys these days that you can lean on besides myself.

                          3dcreation

                          #52593
                          Dark
                          Moderator
                            @dark
                            vipMemberContributor

                            Oh I forgot to mention power of 2 textures, I was told by a dev at sketchfab (and I’ve been conscious of it ever since) that with game engines you should try to make all your 3D object’s textures to the power of 2.  This is similar to grouping objects as it reduces render calls on the game engine.  Simply put, a texture that is to the power of 2 is much easier for the computer ‘mind’ to process than textures with random ratios.  These texture’s don’t need to be square but need to be to the power of 2,  common texture sizes in 3D are…..256×256,  512×512, 1024×1024, 2048×2048, 4096×4096.  Determining the size you should use depends on the size of the object on the table.  Generally I render my original textures out at least 1 size larger than I think it will need to be in the end.  So for example I know my plastic ramps texture will end up being 2048×2048, but I will render it out as 4096×4096 first then down size it later.  Also if you use textures like this the ‘texture limiter’ in vpx video options will have a more dramatic effect on performance.   When I said textures don’t need to be square I meant you can make them like 256×512 or 1024×2048,  2048×512 etc.  It’s almost always a good idea to work bigger than you intend the final to be because you can always downsize but upsizing is never as easy.

                            [edit] I guess it’s also worth mentioning here my method for lining up my 3D scene with the VPX table.

                            1. Export table mesh from VPX
                            2. Import table mesh to 3D software (blender/max/cinema4D/maya etc)
                            3. Select table mesh, select by sub-object ‘element’ mode.
                            4. Select only the PF using element mode and make a clone in place (in max I detach as clone),  this will make a clone of the PF in the exact spot of the original PF.
                            5. Select newly copied PF object, apply the PF image to it, it should apply just like the original PF object – then export this as an obj.
                            6. Import the 3D PF to VPX and take care to ensure it lines up perfectly with the VPX PF,  add a low value to the Z height (.1 or .5) just to verify the PF is lined up.
                            7. Reset height value back to 0 for 3D PF once satisfied with it’s positioning.  Should note that it’s scale should be 1/1/1 (at least how I do it any ways).
                            8. Copy paste the 3D PF, and now with that copied version import what ever other 3D object you want from your scene and it will automatically line up perfectly to the table provided you did everything properly leading up to this point.

                            Take extra care to make sure the first 3D PF is lined up perfectly and it will make the rest of the build cruise along problem free.

                            3dcreation

                          Viewing 12 posts - 1 through 12 (of 12 total)

                          Forums are currently locked.

                          ©2024 VPinBall.com

                          Log in with your credentials

                          Forgot your details?