Elvas Tower: Levels of Detail - Elvas Tower

Jump to content

  • 4 Pages +
  • 1
  • 2
  • 3
  • 4
  • You cannot start a new topic
  • You cannot reply to this topic

Levels of Detail Qu are LoDs either needed or desirable in OR models? Rate Topic: -----

#21 User is offline   ebnertra000 

  • Superintendant
  • Group: Status: Elite Member
  • Posts: 1,234
  • Joined: 27-February 17
  • Gender:Male
  • Location:East-Central Minnesota
  • Simulator:OR/TSRE
  • Country:

Posted 19 February 2018 - 06:44 PM

View PostGenma Saotome, on 19 February 2018 - 06:15 PM, said:

...

I've long been curious about the use of the verb weld as it is used in these forums. It's not a concept I recognize when working in Sketchup... it is tool specific? A product of how one does the work? Or is it something that is inherent to all such modeling?


I'm not sure if it's a term used in other tools, but I know it make appearances in gmax, which I (and I'm led to believe Erick) use

#22 User is offline   darwins 

  • Superintendant
  • Group: Status: Elite Member
  • Posts: 1,231
  • Joined: 25-September 17
  • Gender:Male
  • Simulator:Open Rails
  • Country:

Posted 19 February 2018 - 10:58 PM

Quote

Yup. Ideally there are no named parts other than what MSTS requires.


There lies the problem with TSM - in order to make LoD using Polymaster you need to have named parts - either by making them children of other parts or by giving them fake animations.

This may mean that the approach that Ian has taken with wheels also needs to be taken with the main part of the model - having a separate part for distant LoD.


Quote

I've long been curious about the use of the verb weld as it is used in these forums. It's not a concept I recognize when working in Sketchup... it is tool specific? A product of how one does the work? Or is it something that is inherent to all such modeling?


It appears as Weld in GMax and 3DC. In TSM it is Snap to Grid. I think Sketch up does it automatically if the points or vertices are close enough together.

#23 User is offline   ErickC 

  • Superintendant
  • Group: Status: Elite Member
  • Posts: 1,001
  • Joined: 18-July 17
  • Gender:Male
  • Location:Hastings, MN, US
  • Simulator:ORTS
  • Country:

Posted 20 February 2018 - 12:15 AM

Welding vertices generally refers to merging two vertices within a given threshold (say .001in) into a single vertex. Specifically, when I speak of welding UV coordinates, I am referring to ensuring that triangles which have vertices in the same place in UVW space have those vertices welded. The ability to do this is largely dependent on mapping layout. For example:

Attached Image: soo375_diffusemap.JPG

This is the diffuse map for one of my works-in-progress. I am going to concentrate on the long hood of this GP7.

Attached Image: Soo375_longhood.JPG

You can see that the sides and top of the long hood blend seamlessly into each other. This was deliberate (I don't texture by accident, I plan ahead very carefully, from a definite resolution - in this case 1/2 pixel per inch - to the optimum layout to minimize the number of maps and provide the greatest ease-of-use for repainters). I knew that, just as the top and sides, obviously, meet in the mesh, so too should their UV coordinates meet so that no coordinate was duplicated. This would not be possible on, say, an SD40-2, with its dynamic brake blister protruding out from the hood and creating the necessity of a gap between the top and sides, but I would ensure that the widest part of the hood - the dynamic brake blister - was a continuous surface from top to side, so that I could at least eliminate a few UV coordinates. In this case, the GP7 has a straight, uniform-height and width hood for me to work with, so that the UV coordinates end up looking like this:

Attached Image: unwrapUVW_overview.JPG

UV coordinates exist in a 3D space, so even though I had moved the coordinates so that they were coincident where possible in this plane, they would not weld. This is because they were still separated "vertically," that is, the UV coordinates were separated along a space perpendicular to the texture map. So I changed the coordinate display in Unwrap UVW from UV to UW - which shows us a "side" view of the coordinates - and scaled them vertically so that they were more or less along a straight line. This allowed colocated coordinates to be welded:

Attached Image: unwrapUVW_side.JPG

If we change our coordinate display to UV again, and again end up with this image, we can see some compromises that I made:

Attached Image: unwrapUVW_overview.JPG

Note how the front and back of the cab are separated by some space. This is to avoid bleed-through from one "island" to the other due to antialiasing. If I didn't care about this, however, I could indeed select either the front or back, and move it left or right so that it shared an edge with the other "island," and weld the vertices accordingly.

Why does this matter? Because it's not the triangles that kill performance, it's the vertices that define them. Two models with identical triangle counts can differ wildly on vertex counts depending on mapping or smooth groups. When you create a hard edge, for example, the vertices at the edge may be welded insofar as the 3D program is concerned, but on export, they will be discrete vertices (this is how the hard edge is defined). So a cube that is smoothed over into one smooth group will have eight vertices, while a cube that has all hard edges will have 24. If you were then to map each face of the cube individually, with no continuity across any mapped surfaces, this vertex count would double. If I were to take this hard-edge cube and map it so that all faces shared the same UV coordinates, then I would only be adding four, resulting in a total of 28. If I smoothed the cube over, it would become a 12-vertex deal.

This is why I smooth over many minor parts, especially parts that will be dark and can have a hard edge simulated in the texture. You can see this on the stanchions and the radiator shutters.

The desire on my part to conserve UV coordinates is a prime driver in my tendency towards large, continuous surfaces, which, by necessity, leads to small numbers of large maps. This is also more efficient in terms of drawcalls, as the number of materials is a determinant of drawcall count. The ability of OR to handle all transparency requirements without a loss of bit depth is a critical component in drawcall reduction, as the entire model can now use a single material (whereas I would need to have a separate material for gradient alpha parts in MSTS due to its inability to handle gradient alpha without reducing RGB bit depth).

Dave mentioned in another post that he primarily works with buildings, which, depending on the target distance, can have their own specific issues with solutions that might not be compatible with this methodology. Specifically, large buildings meant to be viewed at close distances have the specific problem of a large surface area that needs a high amount of detail. The extra drawcall might be worth not having to manage a huge texture if a small texture that tiles can be used instead, especially since such a building would not likely be drawn more than once in an area. Smaller, generic buildings that won't be viewed up close and don't need the extra resolution would benefit greatly from being grouped into a single large map with relatively low resolution per building, with each building mapped as efficiently as possible. A move to non-cruciform trees is probably inevitable (because cruciform trees look awful outside of flight simulators), but trees that will always be hidden behind another row of trees ought to still be cruciform. This implies the need for careful planning and separate models for separate purposes - it's helpful to think of objects in terms of whether they are "hero" objects - viewed close up or in isolation - or whether they will be viewed distantly or will always be partially obscured (forests, for example). Model-building for MSTS and OR thus far has been somewhat haphazard. The visual demands of the contemporary PC game mean that a more coherent approach with high awareness of LOD levels, drawcall counts, object placement and visibility, and vertex counts, is desirable (to reinforce this fact, one of the major reasons for FSXs poor performance was the large store of poorly-optimized legacy content that ACES did not have the manpower to replace).

The "model railroad" system set in place by Kuju and continued in all modern rail simulators probably isn't helping, either. FSX uses about 9 GB of texture files to render the entire world. True, that's about the same as a couple dozen routes, but consider how much ground that 9 GB covers. Also consider that the average route doesn't look much better or worse than FSX's autogen ground scenery, the number of routes is limited, and the number of route builders isn't exactly growing.

#24 User is offline   darwins 

  • Superintendant
  • Group: Status: Elite Member
  • Posts: 1,231
  • Joined: 25-September 17
  • Gender:Male
  • Simulator:Open Rails
  • Country:

Posted 20 February 2018 - 01:39 AM

Quote

The ability of OR to handle all transparency requirements without a loss of bit depth is a critical component in drawcall reduction


Thanks for pointing this one out. I was not previously aware of this and was intending to make separate 'glass' parts for future OR models. (I will now rethink that policy at least for lower poly models.)

Related to that would be the 'alpha question'. Do we still need to think in terms of layers in order Alpha+ Alpha Alpha- or is there some alpha sorting ability in the OR rendering logic?

#25 User is offline   Hamza97 

  • Engineer
  • Group: Status: Contributing Member
  • Posts: 606
  • Joined: 01-March 15
  • Gender:Male
  • Simulator:Open Rails
  • Country:

Posted 20 February 2018 - 06:32 AM

I would like chip in with my bits too.... :sweatingbullets:
I primarily work in Blender using Wayne`s fabulous exporter which does majority of work itself, saving me useful time. One of thing which i did with the exporter was to increase the vertex count threshold after which the exporter splits the model into another subobject. It was set initially i think at 8000 for MaxVerticesPerPrimitive & 15,000 for MaxVerticesPerSubObject. That maybe necessary for use with MSTS. But as i primarily make models for OpenRails only, i experimented a bit and increased the numbers from 8000 to 32,000 and 15,000 to 60,000. Any higher than this and model "exploded" in OpenRails. The effect was that the number of subobjects (hence the number of Draw Calls) considerably reduced. Earlier a subobject had 1667 poly max after which new subobject would be made. Now after export the subobject have a max of 10667 poly thus roughly 10x increase in poly capacity of subobject. This has the effect of having lower draw calls thus imporving performance.

#26 User is offline   ErickC 

  • Superintendant
  • Group: Status: Elite Member
  • Posts: 1,001
  • Joined: 18-July 17
  • Gender:Male
  • Location:Hastings, MN, US
  • Simulator:ORTS
  • Country:

Posted 20 February 2018 - 12:13 PM

View Postdarwins, on 20 February 2018 - 01:39 AM, said:

Thanks for pointing this one out. I was not previously aware of this and was intending to make separate 'glass' parts for future OR models. (I will now rethink that policy at least for lower poly models.)

Related to that would be the 'alpha question'. Do we still need to think in terms of layers in order Alpha+ Alpha Alpha- or is there some alpha sorting ability in the OR rendering logic?

OR sorts things on its own, with two caveats. If your alpha object is in front of a point light, it will act as a 1-bit alpha channel even if it is 8-bit (and even if it works like it should when the light behind it is off). This makes numberboards awkward, but manageable (they should be both lit and semi-transparent, and 8-bit alpha channels allow for antialiased edges of transparent portions). My solution was to use a fairly dim light to give the appearance of semi-transparency:

Attached Image: Soo 375-11.JPG

You can see in the enlarged portion that there is a hard edge around the numbers - this is actually a soft antialiased edge in the alpha channel and would display as such if there were no light behind it. Similar effects happen when you have many alpha layers stacked on top of each other (such as a wiper behind a window behind a window behind a wiper). The furthest alpha part down the stack will tend to have hard edges where the actual alpha channel might be antialiased. But it's not a big problem, because in this case, there's so much other stuff obscuring it, you'd hardly notice. So long as you're conscious of those two special cases... no problem. Definitely a huge improvement over MSTS.

#27 User is offline   Genma Saotome 

  • Owner Emeritus and Admin
  • PipPipPipPipPipPipPipPipPipPipPipPipPip
  • Group: ET Admin
  • Posts: 15,341
  • Joined: 11-January 04
  • Gender:Male
  • Location:United States
  • Simulator:Open Rails
  • Country:

Posted 20 February 2018 - 01:00 PM

ErickC, thank you for taking the time to put together such a detailed post. I'll have to read it a couple of times, much of it was beyond my understanding. Second, thanks too for the mention of OR handling transparencies differently than MSTS. I have been in the habit of saying color quality would be degraded if you put any alpha feature into an ordinary texture 9as it was in MSTS). I'll stop saying that now.

If I may, a few images of a large building and the techniques I use in Sketchup:

This is the Chicago Opera House; The concert hall is bottom center, everything above was added to provide income from leasing out office space. Smart move. The building is 535ft tall, 388ft wide, 150ft deep, making a bounding box volume of a bit more than 31 million cubic feet. Your average steam era boxcar has a cubic volume of 6000 cubic feet.
Attached Image: Opera1.jpg


The above image shows the scaling for this texture, which I step and repeat over all of the non-window surfaces. Given the size of the building there is no way at all to map the whole building to a single texture... step and repeat is the only way that will work.
Attached Image: Opera2.jpg


And a closeup showing the texture as applied:
Attached Image: Opera3.jpg


FWIW one of things I experimented with for the first time is making the glass reflective. The result is noticeable enough I'm using the technique routinely now. The glass for each window is actually a single face spanning the entire wall so it's cost is 2 polys per wall.
Attached Image: Opera4.jpg
I have to change the black to a transparency and put something behind it (window shades and the like to finish the job. If I do it right that too will not be a single face per wall, probably one face per floor, and it will step and repeat the "interior" texture. The face-per-floor will allow me to push the one texture around, including flipping it left to right, so as to try and break up repeating patterns.

My point is that substantially differently sized models can require substantially different solutions when modeling, stuff that unlikely to be applied universally. Understanding what mesh and skins are really causing the GPU to do is universal however and being able to explain it in a tool independent way is really useful to all us.

Returning the basenote... the model uses three LOD distances -- 250m, 500m, and 2000m and obtains nearly a 50% drop in polys after the camera moves beyond 250m. The other two distances don't buy all that much but I'm trying to include and use 2000m and greater in everything because of OR's extended view distance. The building is visible in the route from several miles away.

#28 User is offline   ErickC 

  • Superintendant
  • Group: Status: Elite Member
  • Posts: 1,001
  • Joined: 18-July 17
  • Gender:Male
  • Location:Hastings, MN, US
  • Simulator:ORTS
  • Country:

Posted 21 February 2018 - 08:41 PM

Yep, OR is perfectly happy to render the full bit depth of the textures. The entire GP7 model uses a single blendAtexdiff material, and the texture has an 8-bit alpha channel. No MSTS blotchiness here:

Attached Image: Soo 375-12.JPG

And here is a shot of the way that alpha bit depth is somewhat reduced when you have many alpha layers on top of each other:

Attached Image: Soo 375-13.JPG

The fore and aft wipers are mapped to the exact same spot. But you can also see that it's not something that you're really going to notice from most angles. Overall, I'm very pleased with the way that OR handles everything but specular highlights (very sharply and at limited angles), which I never really used anyway, because they only really look good if you have a specular map and can have a fine degree of control (the highlights tend to wash out the sides of hoods). Overall, it's a major, major improvement over MSTS. The automatic alpha sorting is a real time saver. Overall, OR is probably the most user-friendly platform I've built models for (and that includes the unimpeachable FS9).

#29 User is offline   Hamza97 

  • Engineer
  • Group: Status: Contributing Member
  • Posts: 606
  • Joined: 01-March 15
  • Gender:Male
  • Simulator:Open Rails
  • Country:

Posted 22 February 2018 - 09:07 PM

@ErickC

You tried the low shine option...?? I agree that high shine specular effect washes out any diffuse detail, and sometimes you only see a blotch of blinding specularity.... :scarerun:

#30 User is offline   ErickC 

  • Superintendant
  • Group: Status: Elite Member
  • Posts: 1,001
  • Joined: 18-July 17
  • Gender:Male
  • Location:Hastings, MN, US
  • Simulator:ORTS
  • Country:

Posted 22 February 2018 - 10:07 PM

Low shine renders a very thin, sharp line of shine from very narrow angles every once in a while if the sun is in just the right place. Either way, highlights on the hood end up being a big bright spot. You can't really get decent highlights without specular and bump mapping to break up the perfection of the highlight. It just ends up making it obvious that the hood is a flat plane with a texture applied, you'd have to model all of the bumps and crevices to get it to look good under the current system. Notice how the panel lines are all washed out, which would not happen in real life (as the lines represent a crevice):

Attached Image: Loshine1.JPG

You can also see that specular highlights in OR do not like curves one bit. That blower duct is all one smooth group, yet the shine abruptly cuts off midway down the curve as if the upper portion were a separate group. You can also see it on the long hood here:

Attached Image: Loshine2.JPG


Until we get specular maps and bump maps, I'm just going to leave the textures highlight-less, like I did in MSTS.

  • 4 Pages +
  • 1
  • 2
  • 3
  • 4
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users