Skip to content

There's Nord Place Like Home (LOD'd exterior Nord set stuff, normals/UV work and some optimizations on both int and ext models)#103

Open
BethOfDeath wants to merge 1 commit intomop-org:masterfrom
BethOfDeath:Nord_Place_Like_Home
Open

There's Nord Place Like Home (LOD'd exterior Nord set stuff, normals/UV work and some optimizations on both int and ext models)#103
BethOfDeath wants to merge 1 commit intomop-org:masterfrom
BethOfDeath:Nord_Place_Like_Home

Conversation

@BethOfDeath
Copy link
Copy Markdown
Contributor

Reduces exterior Nord house model drawcalls by half.

Also does usual normals work, including on various other exterior stuff with Nord in its name. I believe I got all of them (the doorframe was in a previous PR).

Most interior model performance improvements, if any, will be from severe splitting of the collision mesh to get the dang beams' collision radius out of the PC's and NPCs' way.

Also fixed the longstanding texturing issue with the baseboard, which had a black line all the way along it. This new unwrapping fixes that, and any seams, but Sophia's testing showed one parallax wood texture mod breaking a little. My guess is that it's likely due to painting the texture directly to the model without first fixing the UVs.

ex_nord_house_01:

  • Adjusted collision mesh to better fit visual mesh, as roof was well above the actual thatching
  • Combined trishapes using tx_wood_brown_posts_02 texture, reducing from 9 drawcalls to 7.
  • Retopologized endgrain mesh (reduced 24 tris)
  • Reunwrapped stone bits sticking out of corners of stone wall. There's distortion either way, unfortunately.
  • Merged vertices along hidden top edge of thatching (reduced 7 vertices)
  • Removed 6 hidden triangles from the stone bits which poke out of the building. Added 3 to fill holes.
  • Corrected unwrapping on wooden beams, and unified UV islands in the process. Most of this (other than the ends on the portion which rests on stone) isn't visible due to the thatching hiding it, but may make under-construction/rethatching derivatives less work to make.
  • Deleted 12 completely hidden internal faces of wood beam structure. 4 of which are only present to prevent seeing a gap between it and the thatch. (There is no gap there.)
  • Applied location transforms to all parts.
  • Added 2 LODs to reduce drawcalls and simplify walls.
  • Vanilla: 49659 bytes; new: 76889 (+55%)

07 Enhanced Vertex Lighting\x\ex_nord_house_01.nif

  • Added lots of vertices, but not as much in section which should be below ground or believably less well-lit due to ambient occlusion.
  • Now 94564 bytes.

ex_nord_house_02:

  • Further split collision
  • Corrected unwrapping on wooden beams
  • Retopologized endgrain (reduced 36 tris) and removed faces hidden behind thatch (reduced 18 further tris)
  • Added missing rafter to right side, where the short section tees into the longer.
  • Slid vertices on rafters which don't need the ends sticking out up the
  • Normals work
  • Reunwrapped stone bits sticking out of corners of stone wall. There's distortion either way, unfortunately.
  • Applied location transforms to all parts.
  • Added 2 LODs, reducing from 8 drawcalls to 4, then to 3 with simplified walls.
  • Vanilla: 82361 bytes; new: 128881 (+57%)

07 Enhanced Vertex Lighting\x\ex_nord_house_02.nif

  • Same as before
  • Now 171064 bytes

ex_nord_house_03:

  • Reworked collision to close up gaps between roof and walls which I'm pretty sure are completely impossible to pass through, but I guess projectiles would.
  • UV rework to reduce distortion on thatching and combine into one UV island.
  • Deleted 20 entirely-hidden triangles from inside of wooden framework.
  • Retopologized endgrain. (Reduced by 22 triangles)
  • Removed what were probably degenerate faces from thatching, and merged the top point vertices of the small ends of the roof with the edge vertices of the top/long sides.
  • Deleted hidden faces from small corner rock
  • Normals work
  • Applied location transforms to all parts.
  • Added 2 LODs to reduce from 10 drawcalls always to 10 near -> 5 at 4096 -> 4 beyond vanilla distance (and simplified geometry on walls)
  • Vanilla: 44991 bytes; new: 63782 (+42%)

07 etc etc version:

  • Same as ever.
  • Now 104750 bytes.

ex_nord_house_04:

  • Removed 12 faces from collision mesh for entrance which can in no circumstances be collided with.
  • Modified roof's collision geometry so that walking on it doesn't resulting in feet clipping through the visual model anymore.
  • Added to some slightly-existing vertex color on the roof where the front entrance portion meets the main roof, to try to deemphasize where the meshes intersect.
  • Normals work, including tweaking the normals of the back edge of the entrance's roof to hopefully further make it look smooth. The better solution to this would be booleaning the meshes together, but it's been requested I stop doing that.
  • Reworked roof UVs to combine UV islands. I considered mirroring them on the Y axis because I finally noticed the lighting looked reversed, but this would break texture replacers which take that into account.
  • Shifted inner edges of thatching above windows forward slightly to fully hide the almost-but-not-quite hidden faces of the wood framing, as otherwise the next step created incredibly tiny gaps.
  • Removed 42 triangles from wood framing which are completely hidden by the thatching.
  • Slid top vertices down and bottom vertices up on metal bars in windows, to reduce overdraw.
  • Decided to not mess with window meshes at all. Let whoever does the GitD compatible version handle that. ...apologies to future!me, if that ends up being her. The overdraw is minor.
  • Retopologized engrain. (Reduced from 86 tris to to 60.) Then realized that two instances of it are _completely hidden by the thatching of the entranceway, and deleted those entirely. (Reduced to 52).
  • Added missing rafter and wood rings to right side front of model.
  • Slid the ends of the wood framing also hidden entirely by the thatching back up the rafters, to reduce overdraw. For reference for anyone wishing to put them back while making derivative models, the average location of the two groups was X: -0.015029 m, Y: -1.6883 m, Z: 1.99468 m.
  • Applied location transforms to all parts.
  • Created two LODs, reducing from 13 drawcalls always to 6 at 4096 and 5 beyond vanilla distances.
  • Vanilla: 69684 bytes; new: 101530 (+46%)

07 etc etc version:

  • Same as ever. Also used opportunity caused by added edge loops to delete additional hidden faces. (Derivatives should be working from 00 Core versions and adding in their own extra vertices.)
  • Now 186992 bytes.

ex_nord_house_05

  • Collision splitting. It's slightly, barely smaller of a collision calculation radius this way, and my testing before showed that neither engine's physics engines care much about larger numbers of meshes made of fewer triangles but dislike fewer with more.
  • Partially reunwrapped thatch as before, transferring bit over doorway from _04.
  • Retopologized endgrain. Removed bit that was hidden in entranceway thatching.
  • Slid the ends of the wood framing also hidden entirely by the thatching back up the rafters, to reduce overdraw. For reference for anyone wishing to put them back while making derivative models, the average location of the bottom vertices was X: 0.004162 m, Y: -1.6883 m, Z: 2.11835 m.
  • Added edge loop to back side, in both stucco and stone, to make the vertex lighting a little less bad. Probably needed 2, not one, come to think of it
  • Very slight amount of vertex color added to entrance thatch back edge, as with _04.
  • Applied location transforms to all parts.
  • Created two LODs, reducing from 11 drawcalls to 4, then reducing tricount.
  • Vanilla: 51535 bytes; new: 90653 (+76%)

07 etc etc version:

  • Same as ever. Also used opportunity caused by added edge loops to delete additional hidden faces.
  • Now 165497 bytes.

ex_nord_houseshed_01

  • Split collision due to ridiculous calculation volume

  • Corrected unwrap of wooden frame due to visible zero-width UV faces on top of beams where thatch does not cover it.

  • Shifted UVs for front stucco and stone by -1 on the width axis to correct texture crunch and match buildings. This will change the appearance of the floor in some TR cell called Ghand which uses two of this model turned sideways as a floor what the the heck but honestly: omelette, eggs, crack crack.

  • Rotated and shifted around UVs on thatch. I'm still not happy, but at least the thatch runs in the correct direction now and doesn't have seams.

  • Shifted edges of sides towards front to reduce overdraw. Given the much shorter depth of the roof and that the wooden frame delineates how far against a building the model should stick out, this should never cause a problem. Pardon me while I frantically bribe the Fates with lemon cookies to not take that as a challenge.

  • Removed 8 triangles from wood framing which are impossible to see.

  • Slid and merged triangles at top tip of thatching to prevent bunched-up normals.

  • Previously: 15984 bytes; new: 20282 (+27%)

  • Added a few edge loops and diagonal knife cuts to improve vertex lighting. Some may have been unnecessary, and can be dissolved later after more testing.

  • Now 27209 bytes.

ex_nord_doorrocks_01

  • Split collsion. The volume was not that large, but there was already an edge loop there, so why not?
  • UV adjustments and reunwrapping to reduce seams and hide poorly-tiling texture.
  • Added LOD, using Decimate modifier to drop tricount by about a third beyond vanilla distance.
  • Vanilla: 14570; previous MOP: 11182 bytes; new: 17049 (+17% vs vanilla, +53% vs previous MOP)

ex_nord_rock_01

  • Added collision mesh. 16 triangles isn't much less than 35, and it's small, but it probably helps a little.
  • Reunwrapped to reduce distortion
  • Vanilla: bytes; new:

ex_nord_rock_02:

  • Did not add collision mesh, as appropriate model could only shave off 8 triangles.
  • Reunwrapped somewhat to reduce distortion and islands, but there was little of the former and one rock would end up worse trying to use the same methods I used on the other.
  • Vanilla: 3223 bytes; new: 2543 (-21%)

in_nord_house_05:

  • Copied missing collision mesh pieces from in_nord_house_01, adjusted location, modified to fit doorway, and split the rafters so the player and any NPC isn't constantly causing calculations

  • Slid and merged vertices on thatch roof

  • Combined UV islands

  • Dissolved edges/verts on floor and re-subdivided to improve lighting -- there were no vertex colors.

  • Vanilla: 45181 bytes; new: 45903 (+2%)

  • Made version with more vertices for lighting purposes

  • 78871 bytes, or +75% over vanilla

in_nord_house_01:

  • Split rafters to hopefully avoid constant collision calculations

  • Deleted hidden face from wooden beams

  • Combined UV islands

  • Dissolved edges/verts on floor and re-subdivided to improve lighting -- there were no vertex colors.

  • Normals work.

  • Probably something else which the information was lost due to my forgetting to save this file at one point.

  • Vanilla: 43810 bytes; new: 37110 (-15%)

  • Added subdivision and vertices to walls and beams to improve vertex lighting

  • New: 46922 bytes

in_nord_fireplace_01:

  • Split collision to reduce ridiculous collision calculation radius
  • Deleted fireplace wallstone mesh ceiling and floor hidden by other mesh. They are easily recreated if need be, and only created overdraw.
  • Deleted underside face of fireplace plain stone mesh which would be completely obscured by the floor in all situations. Again, it is easily recreated.
  • Tweaked vertex colors on vertices at very base of front of firepit, to smooth the gradiant. This is probably all but invisible due to the outer stone mesh.
  • Deleted 4 hidden faces from the back side of andirons/firedogs (things which hold up the logs and keep them in place, apparently) which poke through back of fireplace, and moved back side verts on right one 0.11 units towards the front (on X axis) to remove clipping.
  • UV work on everything to reduce distortion, other than wallstone's vertical stretch.
  • Vanilla: 30163 bytes; new: 24277 (-20%)

in_nord_house_02:

  • Severe splitting of collsion mesh due to multiple beams' collision calculation volume extending far into character collision box height, and one notably having a volume larger than the entire interior of the room.
  • Deleted endgrain, reducing 1 drawcall.
  • Deleted hidden faces from the wood framing.
  • Merged top edges of roof thatch
  • UV rework. Some wood beams rescaled to 1:1, not all, after thinking too much about parallax maps. Should probably finish these. Basically all had top UVs at 3.998, for undoing reference.
  • Normals work.
  • Reworked subdivision of floor to greating increase number of vertices available for lighting.
  • Vanilla: 76160 bytes; new: 74364. (-2%)

07 Enhanced Vertex Lighting/meshes/i/in_nord_house_02.nif

  • Added lots of vertices for even vertex lighting
  • Now: 122400 bytes

in_nord_house_04

  • Collision splitting as before
  • UV rework as before. Left window arch (when facing the wall with the doorway from the inside) was particularly bad, not that anyone could see it well without Levitation.
  • Note on baseboards: I reworked the UVs to use some mirroring, to remove the ugly dark shadow strip from the corner edge and move it to where the wall or floor meets the baseboard
  • Vanilla: 68126 bytes; new: 68470.

07 etc etc:

  • Same as usual
  • Now: 117202 bytes

- Adjusted collision mesh to better fit visual mesh, as roof was well above the actual thatching
- Combined trishapes using tx_wood_brown_posts_02 texture, reducing from 9 drawcalls to 7.
- Retopologized endgrain mesh (reduced 24 tris)
- Reunwrapped stone bits sticking out of corners of stone wall. There's distortion either way, unfortunately.
- Merged vertices along hidden top edge of thatching (reduced 7 vertices)
- Removed 6 hidden triangles from the stone bits which poke out of the building. Added 3 to fill holes.
- Corrected unwrapping on wooden beams, and unified UV islands in the process. Most of this (other than the ends on the portion which rests on stone) isn't visible due to the thatching hiding it, but may make under-construction/rethatching derivatives less work to make.
- Deleted 12 completely hidden internal faces of wood beam structure. 4 of which are only present to prevent seeing a gap between it and the thatch. (There is no gap there.)
- Applied location transforms to all parts.
- Added 2 LODs to reduce drawcalls and simplify walls.
- Vanilla: 49659 bytes; new: 76889 (+55%)

07 Enhanced Vertex Lighting\x\ex_nord_house_01.nif
- Added lots of vertices, but not as much in section which should be below ground or believably less well-lit due to ambient occlusion.
- Now 94564 bytes.

ex_nord_house_02:
- Further split collision
- Corrected unwrapping on wooden beams
- Retopologized endgrain (reduced 36 tris) and removed faces hidden behind thatch (reduced 18 further tris)
- Added missing rafter to right side, where the short section tees into the longer.
- Slid vertices on rafters which don't need the ends sticking out up the
- Normals work
- Reunwrapped stone bits sticking out of corners of stone wall. There's distortion either way, unfortunately.
- Applied location transforms to all parts.
- Added 2 LODs, reducing from 8 drawcalls to 4, then to 3 with simplified walls.
- Vanilla: 82361 bytes; new: 128881 (+57%)

07 Enhanced Vertex Lighting\x\ex_nord_house_02.nif
- Same as before
- Now 171064 bytes

ex_nord_house_03:
- Reworked collision to close up gaps between roof and walls which I'm pretty sure are completely impossible to pass through, but I guess projectiles would.
- UV rework to reduce distortion on thatching and combine into one UV island.
- Deleted 20 entirely-hidden triangles from inside of wooden framework.
- Retopologized endgrain. (Reduced by 22 triangles)
- Removed what were probably degenerate faces from thatching, and merged the top point vertices of the small ends of the roof with the edge vertices of the top/long sides.
- Deleted hidden faces from small corner rock
- Normals work
- Applied location transforms to all parts.
- Added 2 LODs to reduce from 10 drawcalls always to 10 near -> 5 at 4096 -> 4 beyond vanilla distance (and simplified geometry on walls)
- Vanilla: 44991 bytes; new: 63782 (+42%)

07 etc etc version:
- Same as ever.
- Now 104750 bytes.

ex_nord_house_04:
- Removed 12 faces from collision mesh for entrance which can in no circumstances be collided with.
- Modified roof's collision geometry so that walking on it doesn't resulting in feet clipping through the visual model anymore.
- Added to some slightly-existing vertex color on the roof where the front entrance portion meets the main roof, to try to deemphasize where the meshes intersect.
- Normals work, including tweaking the normals of the back edge of the entrance's roof to hopefully further make it look smooth. The better solution to this would be booleaning the meshes together, but it's been requested I stop doing that.
- Reworked roof UVs to combine UV islands. I considered mirroring them on the Y axis because I finally noticed the lighting looked reversed, but this would break texture replacers which take that into account.
- Shifted inner edges of thatching above windows forward slightly to fully hide the almost-but-not-quite hidden faces of the wood framing, as otherwise the next step created incredibly tiny gaps.
- Removed 42 triangles from wood framing which are completely hidden by the thatching.
- Slid top vertices down and bottom vertices up on metal bars in windows, to reduce overdraw.
- Decided to not mess with window meshes at all. Let whoever does the GitD compatible version handle that. ...apologies to future!me, if that ends up being her. The overdraw is minor.
- Retopologized engrain. (Reduced from 86 tris to to 60.) Then realized that two instances of it are _completely hidden by the thatching of the entranceway, and deleted those entirely. (Reduced to 52).
- Added missing rafter and wood rings to right side front of model.
- Slid the ends of the wood framing also hidden entirely by the thatching back up the rafters, to reduce overdraw. For reference for anyone wishing to put them back while making derivative models, the average location of the two groups was X: -0.015029 m, Y: -1.6883 m, Z: 1.99468 m.
- Applied location transforms to all parts.
- Created two LODs, reducing from _13_ drawcalls always to 6 at 4096 and 5 beyond vanilla distances.
- Vanilla: 69684 bytes; new: 101530 (+46%)

07 etc etc version:
- Same as ever. Also used opportunity caused by added edge loops to delete additional hidden faces. (Derivatives should be working from 00 Core versions and adding in their own extra vertices.)
- Now 186992 bytes.

ex_nord_house_05
- Collision splitting. It's _slightly_, barely smaller of a collision calculation radius this way, and my testing before showed that neither engine's physics engines care much about larger numbers of meshes made of fewer triangles but dislike fewer with more.
- Partially reunwrapped thatch as before, transferring bit over doorway from _04.
- Retopologized endgrain. Removed bit that was hidden in entranceway thatching.
-  Slid the ends of the wood framing also hidden entirely by the thatching back up the rafters, to reduce overdraw. For reference for anyone wishing to put them back while making derivative models, the average location of the bottom vertices was X: 0.004162 m, Y: -1.6883 m, Z: 2.11835 m.
- Added edge loop to back side, in both stucco and stone, to make the vertex lighting a little less bad. Probably needed 2, not one, come to think of it
- Very slight amount of vertex color added to entrance thatch back edge, as with _04.
- Applied location transforms to all parts.
- Created two LODs, reducing from _11_ drawcalls to 4, then reducing tricount.
- Vanilla: 51535 bytes; new: 90653 (+76%)

07 etc etc version:
- Same as ever. Also used opportunity caused by added edge loops to delete additional hidden faces.
- Now 165497 bytes.

ex_nord_houseshed_01
- Split collision due to ridiculous calculation volume
- Corrected unwrap of wooden frame due to visible zero-width UV faces on top of beams where thatch does not cover it.
- Shifted UVs for front stucco and stone by -1 on the width axis to correct texture crunch and match buildings. This will change the appearance of the floor in some TR cell called Ghand which uses two of this model turned sideways as a floor _what the the heck_ but honestly: omelette, eggs, crack crack.
- Rotated and shifted around UVs on thatch. I'm still not happy, but at least the thatch runs in the correct direction now _and_ doesn't have seams.
- Shifted edges of sides towards front to reduce overdraw. Given the much shorter depth of the roof and that the wooden frame delineates how far against a building the model should stick out, this should never cause a problem. Pardon me while I frantically bribe the Fates with lemon cookies to not take that as a challenge.
- Removed 8 triangles from wood framing which are impossible to see.
- Slid and merged triangles at top tip of thatching to prevent bunched-up normals.
- Previously: 15984 bytes; new: 20282 (+27%)

- Added a few edge loops and diagonal knife cuts to improve vertex lighting. Some may have been unnecessary, and can be dissolved later after more testing.
- Now 27209 bytes.

ex_nord_doorrocks_01
- Split collsion. The volume was not that large, but there was already an edge loop there, so why not?
- UV adjustments and reunwrapping to reduce seams and hide poorly-tiling texture.
- Added LOD, using Decimate modifier to drop tricount by about a third beyond vanilla distance.
- Vanilla: 14570; previous MOP: 11182 bytes; new: 17049 (+17% vs vanilla, +53% vs previous MOP)

ex_nord_rock_01
- Added collision mesh. 16 triangles isn't _much_ less than 35, and it's small, but it probably helps a little.
- Reunwrapped to reduce distortion
- Vanilla: bytes; new:

ex_nord_rock_02:
- Did not add collision mesh, as appropriate model could only shave off 8 triangles.
- Reunwrapped somewhat to reduce distortion and islands, but there was little of the former and one rock would end up worse trying to use the same methods I used on the other.
- Vanilla: 3223 bytes; new: 2543 (-21%)

in_nord_house_05:
- Copied missing collision mesh pieces from in_nord_house_01, adjusted location, modified to fit doorway, and split the rafters so the player and any NPC isn't constantly causing calculations
- Slid and merged vertices on thatch roof
- Combined UV islands
- Dissolved edges/verts on floor and re-subdivided to improve lighting -- there were no vertex colors.
- Vanilla: 45181 bytes; new: 45903 (+2%)

- Made version with more vertices for lighting purposes
- 78871 bytes, or +75% over vanilla

in_nord_house_01:
- Split rafters to hopefully avoid constant collision calculations
- Deleted hidden face from wooden beams
- Combined UV islands
- Dissolved edges/verts on floor and re-subdivided to improve lighting -- there were no vertex colors.
- Normals work.
- Probably something else which the information was lost due to my forgetting to save this file at one point.
- Vanilla: 43810 bytes; new: 37110 (-15%)

- Added subdivision and vertices to walls and beams to improve vertex lighting
- New: 46922 bytes

in_nord_fireplace_01:
- Split collision to reduce _ridiculous_ collision calculation radius
- Deleted fireplace wallstone mesh ceiling and floor hidden by other mesh. They are easily recreated if need be, and only created overdraw.
- Deleted underside face of fireplace plain stone mesh which would be completely obscured by the floor in all situations. Again, it is easily recreated.
- Tweaked vertex colors on vertices at very base of front of firepit, to smooth the gradiant. This is probably all but invisible due to the outer stone mesh.
- Deleted 4 hidden faces from the back side of andirons/firedogs (things which hold up the logs and keep them in place, apparently) which poke through back of fireplace, and moved back side verts on right one 0.11 units towards the front (on X axis) to remove clipping.
- UV work on everything to reduce distortion, other than wallstone's vertical stretch.
- Vanilla: 30163 bytes; new: 24277 (-20%)

in_nord_house_02:
- Severe splitting of collsion mesh due to multiple beams' collision calculation volume extending far into character collision box height, and one notably having a volume larger than the _entire interior_ of the room.
- Deleted endgrain, reducing 1 drawcall.
- Deleted hidden faces from the wood framing.
- Merged top edges of roof thatch
- UV rework. Some wood beams rescaled to 1:1, not all, after thinking too much about parallax maps. Should probably finish these. Basically all had top UVs at 3.998, for undoing reference.
- Normals work.
- Reworked subdivision of floor to greating increase number of vertices available for lighting.
- Vanilla: 76160 bytes; new: 74364. (-2%)

07 Enhanced Vertex Lighting/meshes/i/in_nord_house_02.nif
- Added lots of vertices for even vertex lighting
- Now: 122400 bytes

in_nord_house_04
- Collision splitting as before
- UV rework as before. Left window arch (when facing the wall with the doorway from the inside) was particularly bad, not that anyone could see it well without Levitation.
- Note on baseboards: I reworked the UVs to use some mirroring, to remove the ugly dark shadow strip from the corner edge and move it to where the wall meets the b
@BethOfDeath
Copy link
Copy Markdown
Contributor Author

This is where I spotted the breakage, in what appears to be an instance of in_nord_house_04.nif. It's pretty minor unless you're looking for it, imo, but still something to contact the creator about.

Screenshot_20260226_144623

@C3pa
Copy link
Copy Markdown
Contributor

C3pa commented Mar 4, 2026

Fixes #68. If you mention an issue number after one of the available keywords in your PR description/commit message, merging the PR will automatically close the linked issue.

@BethOfDeath BethOfDeath changed the title There's Nord Place Like Home (LOD'd interior and exterior Nord set stuff) There's Nord Place Like Home (LOD'd exterior Nord set stuff, normals/UV work and some optimizations on both int and ext models) Mar 5, 2026
@BethOfDeath
Copy link
Copy Markdown
Contributor Author

Fixes part of #81; rest of bug is handled by PR #104.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants