Announcement

Collapse
No announcement yet.

Create a curved wall?

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

    #16
    I was under the impression that generating a normal map between a low-poly and high-poly curved surface produced the same appearance of curvature except at the edges of the geometry?

    And if it appears the same, what's the issue? I work in VFX, and you might be surprised (unless you work in VFX yourself) just how much 'photoreal' work is produced with absolute fakes. The human eye is ridiculously easy to fool.

    So I would ask, why comprimise on performance for something which will not be perceptibly different? The engine's lack of support for real-time subdivision of curved surfaces is not a failing. It's a conscious decision (I would guess) to maintain performance at PERCEPTIBLY high levels of detail.

    I wonder just how many game engines HAVE supported real-time subdivision, and in what way? I know some games utilise player-centric subdivision of landscape geometry to give closer geo a smoother appearance. Any idea what other engines use it? How do they perform doing so? Personally, I remember running the Serious Sam tech demo and having to turn off the subD, because at that point the stupid teapot would crash my PC... but I do think I had a card that didn't support it through hardware at the time. I can't remember what the tech was called, but it had a specific name.

    I don't think DGUnreal meant to imply a lack of knowledge on your part - I think he was just providing helpful reading material given he has no idea how advanced your understanding of 3D is. You COULD have been a beginner. You're not. You're getting kinda angry about this...

    Comment


      #17
      Even if it's based on parametric equations, a surface must be tessellated into polygons in order to be drawn by the graphics card. Why must the engine or the editor spend time calculating this when it can be done in an external application? Just create a NURBs surface and convert it to polygons before exporting if that's what you really want. Same idea, but none of the processing power. In the end, I think it comes down to the fact that Epic would be wasting their time adding rudimentary versions of tools to UnrealEd when more capable and advanced versions of these tools already exist elsewhere. I'm surprised they've gone as far as they have with the geometry tools already to be honest.

      Comment


        #18
        Originally posted by Rigel View Post
        I already know all about it, and I know far more about its limitations that you could possibly imagine, demonstrated by the fact that you think in this day and age it's a suitable replacement for true curves.
        I don't understand your sarcasm and flame when all I did was answer your question and give you a link to information about what it is.
        If you "already know all about it" then why did you post asking what it was? The feature/name itself has been in use in 3D apps for many years.
        My comment regarding real-time sub-division was: why waste time running unnecessary calculations such as this for a video game when there are better low-impact methods that achieve results that are essentially just as good.
        Video games are about performance and perception, not perfection.

        Comment


          #19
          Sorry for the flame, sometimes I get carried away.

          Anyway, I already know about normal interpolation, but I'd never heard it called "smoothing groups". In fact, most game engines do this automatically, as its an (almost) free feature on today's graphics cards*. I had no idea that it was still considered a "named feature" for modeling apps (rather like 3DS having a feature called "Vertex Manipulation" - you kind of assume that they do).

          As far as why you would need it, many times you don't - but the times you do, it can be invaluable. My personal opinion (which I am well aware that the rest of the world doesn't always share ) is that both NURBS and Parametrics are needed, as you can't model either one with the other.

          But the main point is that, when you need a curved surface, you either need to
          a) model the curve with sufficient detail yourself, making sure that all the texturing et cetera works out correctly, or
          b) tell the engine, "Put a curve here", and let it deal with the details.

          Naturally, I prefer option b.

          And faultymoose, you're right about faking it when possible - that's why, in many instances, a real curve isn't needed. But for the specific map I'm working on, I have the player running through a rather large, curved corrider. An insufficient tesselation, either on my part or on the engine's, would be immediately noticeable while running through this corridor. While I'm willing to use static walls, it's only because that's all that's available.

          ---

          *I say that normal interpolation is "(almost) free" because, while its true that drawing polys is considerably faster without it, most cards today are so fast anyway that nobody notices the performance hit when you do the per pixel interpolation.

          Comment


            #20
            Well, in a couple of years I'm sure we can afford to have just-in-time subdivision and maybe NURBS too, so long though it's not possible to have those things in realtime just yet and keep all the fancy things the unreal engine does have

            Myself, if I'm to choose between a playable level that isn't perfect but looks close to perfect, judged by today's standards, and a level that looks perfect and is perfect but has 10 fps or less, I choose the former.

            Comment


              #21
              Originally posted by Rigel View Post
              As far as why you would need it, many times you don't - but the times you do, it can be invaluable. My personal opinion (which I am well aware that the rest of the world doesn't always share ) is that both NURBS and Parametrics are needed, as you can't model either one with the other.

              But the main point is that, when you need a curved surface, you either need to
              a) model the curve with sufficient detail yourself, making sure that all the texturing et cetera works out correctly, or
              b) tell the engine, "Put a curve here", and let it deal with the details.

              Naturally, I prefer option b.
              I do agree that advanced features are always nice, however, not all of them are as easily implemented as others, nor should they necessarily be implemented.

              I'm not disagreeing with you on this. Personally I don't feel that it would be high on my list of game engine features I would want/need.

              Old engines like Q3 didn't have the good staticmesh importing and implementation that we see common now, nor was there powerful apps like Maya PLE available for free at that time.

              There will be a point of diminishing returns on attempting to fully integrate Max/Maya and PhotoShop features into a game editor when those other applications already exist. After all, UnrealEd is free, and is just a game map and package editor.

              Adding features such as this not only takes away programmer-time from other more important "game engine" features, and it increases the complexity of the engine, but it is also begging for problems from level designers.
              The Terrain and FluidSurfaceInfo (UT2004) are perfect examples of this, with respect as to the results of putting actors with variable mesh properties into the hands of most mappers. Most community mappers do not properly understand the implications of using these and their impact on performance. I have seen many maps where outrageously dense terrains or FSIs were used. I foresee 2048 segment 45 degree curves...
              Another issue to be considered on curved surfaces is where to split it into chunks for culling and occlusion. I can see many mappers creating full hi-poly circles and then wondering why they have no framerate.

              That all being said, I don't think I would ever use the feature since I rarely use CSG Brushes, CSG doesn't support smoothing groups anyway so it will just look like a hi-poly faceted partial cylinder, and it's easy to create this in Max if I want it as a StaticMesh (and with smoothing groups).

              Just my opinion fwiw...

              Comment


                #22
                I just wish we could texture / apply uv maps in the editor.
                Most of the problem comes from applying textures to meshes.
                You have to export the materials (not easy) align them with numerous uvw maps, reimport everything, find they come out different in game, change the maps, reimport etc etc.
                All this takes <1 min if using BSP.
                I can't stand meshes tbh. Everything takes 60 times longer to acheive.
                I used loads of curves in my new map, with no problems at all. They were all quarter cut, 24-48 sides depending on their size.
                Just don't make each side of the curve too small or the lighting wont work right.
                Also set these surfaces to light map 4.
                All other surfaces I use 8, otherwise it looks AWFUL on low detail on the default 32.

                Meshes will usually look nicer, but is it really worth taking 2 hours to do something that could look slightly worse and take 2 mins?

                Comment


                  #23
                  Originally posted by CreepyD View Post
                  but is it really worth taking 2 hours to do something that could look slightly worse and take 2 mins?
                  Ah, the eternal question

                  Comment


                    #24
                    It could be done with the editor only making a mesh for the wall... I just made some simple meshes using this tactic.

                    Make your CSG Builder Brush into whatever size you want the wall height- and thickness-wise. But make it about 32 units long (kinda short).

                    Select the brush and go into Geometry mode.

                    Go to Polygon or Face selection mode (forget which it's called in the editor).

                    Open the little menu-looking tab on the Geometry Mode Browser thing and it should open another small window with a bunch of greyed-out options.

                    Select a side face and one of the Options called "Extrude" should be un-greyed.

                    Tick the extrude and you are presented with some options.

                    Make the Extrusion Length = 32 and Segments = 7, this will give you a total of 8 32-unit segments after you Click Apply.

                    Go into Top View, Click the Little Box that brought up the menu to hide it again, then go back to vertex selection mode and start dragging your points into a curve.

                    Once you have it where you want it, Add the Brush and apply materials the way you want, align them and everything....

                    Make SURE you don't change the builder brush yet, just hide it out of the way for the moment.

                    Select your new wall, and Right-Click > Convert to Static Mesh. Make sure the package is YOUR MAP'S NAME to save it in your map and not an external package, because that will just make things more complicated than they need to be.

                    Don't Delete the original brush as it will be referenced when you create the first copy of your mesh, Including using Material Alignment as the UV Map .

                    Add in a copy of your new custom mesh.

                    Once the copy is visible, grab the builder brush and place it EXACTLY where the mesh is on all axis... Once you have the brush (still shaped the way the wall is) aligned 100% on ALL AXIS, Select BOTH the brush and your copy of the Static Mesh, then right-click them and go to "Save Brush as Collision".

                    That will save your builder brush as the default collision model for all instances of that mesh.

                    VIOLA! Delete out the original added brush, rebuild geometry to get it out of the viewport and you are done. You can add as many copies of that curved wall as you like, and you can change the materials for the SM Actor and they will still be pretty well aligned.

                    That was pretty wordy lol... But for simple stuff like this it's way faster to build a basic mesh in the editor than to make one externally, UV map it, then Import it and hope it's scaled right.

                    This one will always be scaled and will have simple per-poly collision even when simple collision is on...

                    Comment


                      #25
                      That'll of course work, but keep in mind that it will be a lot less efficient for your performance than static meshes (they draw a lot slower per polygon). The Unreal engine is optimized for BSP being just the rough layout and static meshes fleshing it all out, that's just the way it is.

                      This is explicitly said in this guideline: http://udn.epicgames.com/Two/LevelOptimization.html

                      Also, I now found the one for UE3 too and will take some hints and tweak my level a bit before releasing it, should've realized this way earlier http://udn.epicgames.com/Three/LevelOptimization.html

                      Comment


                        #26
                        That's why I said there to convert it to a static mesh.

                        Comment


                          #27
                          Originally posted by CreepyD View Post
                          I just wish we could texture / apply uv maps in the editor.
                          Most of the problem comes from applying textures to meshes.
                          You have to export the materials (not easy) align them with numerous uvw maps, reimport everything, find they come out different in game, change the maps, reimport etc etc.
                          All this takes <1 min if using BSP.
                          I can't stand meshes tbh. Everything takes 60 times longer to acheive.
                          I used loads of curves in my new map, with no problems at all. They were all quarter cut, 24-48 sides depending on their size.
                          Just don't make each side of the curve too small or the lighting wont work right.
                          Also set these surfaces to light map 4.
                          All other surfaces I use 8, otherwise it looks AWFUL on low detail on the default 32.

                          Meshes will usually look nicer, but is it really worth taking 2 hours to do something that could look slightly worse and take 2 mins?
                          Please don't take this as a flame, it is not intended to be read that way at all.

                          I hate to disagree but most of this is not true at all.

                          I have found that in most cases, those people who were adamently against Staticmeshes simply didn't want to learn external apps like Maya PLE, and many times they do not fully understand all of the advantages of Staticmeshes over CSG and why the industry is moving in this direction.
                          The learning curve of PLE or other apps like Max, Blender, etc., is not that high for the few things that you will be exporting to UnrealEd, and the results are worth the time to learn it for anyone serious about mapping.
                          I don't feel that Epic should take a step backwards in technology (yes, backwards) just to appease those who do not wish to learn the modern tools.
                          Creating video games is akin to creating other multimedia such as movies, should hollywood go back to no cgi effects because the learning curve of 3D apps is high? As a professional level designer, I have found that you must move with the times or get left behind in the dust.
                          Does this mean that working with current game engines takes too long with all of the export-import fiddle-faddle that you mentioned? Not if a person fully understands the reason why things work the way they do in the engine. There is a reason why there are universities that teach game design and 3d modeling and such, and why there are level designers as a paid trade, video game design isn't the simple box room/hall that it used to be (thankfully ).

                          Anything good and worthwhile takes time to create.

                          For staticmeshes that are using standard cubic, cylindrical, spherical etc. mapping types, all that is required is changing the material in the override array to a different regular texture material. This allows changing a mesh from one type of rock to another or one type of metal to another, etc.
                          Look at a mesh such as UN_Rock.S_UN_Rock_SM_Blackspire01 as an example. You can swap out its material for any other standard material.

                          Staticmeshes that use skins have been designed this way for a reason chosen by the artist. Attempting to change the UVW mapping after-the-fact is usually not worth the effort unless you have the original source mesh file. For these types of Staticmeshes it is best just to export the skin and modify it how you want in external paint software such as PhotoShop. Of course a person needs good familiarity with the paint software as well.

                          In both cases, standard mapped or skinned, if it required the original modeler artist numerous hours to create the model, set up the mapping, paint the skin or bake it out, do you feel that it is fair that the entire methodology of how things work in the world should allow you to change that in only a few seconds? If creating it was time consuming and complicated, changing it will often also be.
                          If the original modeler created a masterpiece that took 8 hours, should you be able to change it into another different masterpiece in 8 seconds? Unlikely.
                          In some ways it is like trying to un-fry an egg. This doesn't mean it is a defect or issue with the game engine and its built-in tools.

                          For simple things like curved walls, I guarantee that I can create them in Max in much less time than 2 hours. More like 2 or 3 minutes. They are not difficult at all, and look better than CSG.


                          Originally posted by ShadeMistress View Post
                          It could be done with the editor only making a mesh for the wall... I just made some simple meshes using this tactic.
                          That is a good technique, and kudos for spending the time to post it all.

                          Using Max 9 one method would be:

                          - Create an Arc as desired, eg. 90 degrees over 256 units width
                          - Extrude to 256 units high
                          - Add an EditMesh modifier, select all faces and set them to Material ID 1 and Smooth Group 1
                          - Drag any Material to it
                          - Add a UVW Mapping modifier and set it to Cylindrical and the desired radius (Width,Height), 256 in this example
                          - Add an Unwrap UVW modifier, set it to Face, click Edit, click on Flatten Mapping
                          - Collapse the modifier stack
                          - Export

                          - Import into UnrealEd
                          - Assign the material, set to per-poly collision, set the desired default lightmap size
                          - Insert into the map

                          Once it is in the editor, it is usually easier to place and duplicate than CSG.

                          A simple curved wall.
                          Any standard square texture material can be assigned to it.
                          It includes full lightmapping support.
                          It has smoothing so it looks properly curved.
                          It supports Instancing.
                          It is easy to move, duplicate, modify and rescale in the Editor.
                          It will never create a BSP Hole/HOM.

                          Total time: perhaps 3 minutes.

                          And for a bonus, go back into Max, select all faces with the EditMesh modifier and Flip them. Re-collapse and export. You now have an inverted (ie. Concave) version of the same curve wall with about 15 seconds worth of work.

                          Comment


                            #28
                            Thanks Shademistress, that's pretty much what I'm doing now, except I'm leaving it as BSP until I finalize my level design.

                            I'm willing to learn whatever tools are necessary to do the job "right", so I guess I'll start with Blender. Unfortunately, it's been sitting in my downloads folder for over a month now, as I've got too many other things to do first.

                            For now, I'll stick with what I can do in UEd itself.

                            Comment

                            Working...
                            X