Skip to content

Conversation

@BethOfDeath
Copy link

The only asset from Mesh Fix v1.2 not included here is the custom modfied tx_bark_01.dds texture, as I wish to figure out if that was done from the lossless original and whether better DDS compression is possible.

Not that the existing compression is noticable after bilinear filtering, mind.

furn_cushion_square_08 and _09:

  • Added collision mesh.
  • Adjusted UVs to reduce distortion/islands.
  • Vanilla: 3735 bytes each, new: 3624 bytes. (-3%)

furn_de_ashl_post:

  • Retopologized endgrain
  • Corrected UV distortions, but not stretching. Don't worry, pole poll voters, the difference is utterly unnoticeable as far as I checked -- they aren't even visible in the Zainab Camp Wise Woman's yurt!
  • Added LODs to reduce draw calls from 3 always to 3 closeup -> 2 near -> 1 far
  • Vanilla: 6686 bytes; new: 9334. (+40%)

furn_dwrv_bed00:

  • UV rework to minimize distortion and reduce/hide steams and stretching. Did not eliminate stretching entirely due to texture repetition.
  • Booleaned mesh pieces together to eliminate clipping.
  • Split collision mesh in half to reduce calculation volume.
  • Retopologized underside of feet.
  • Vanilla: 49882 bytes; new 54467 due to added triangles from Boolean modifier. (+9%)

furn_log_01:

  • Retopologized endgrain
  • Added collision mesh (26 tris) -- not much of a decrease, but it's split in two to reduce calculation volume.
  • Created LOD to reduce to one drawcall and stop drawing beyond 1 cell.
  • Vanilla: 3629 bytes; new: 6720. (+85%)
  • Did not adjust tx_wood_brown_posts texture UVs, so still stretched. :(
  • 3844 bytes.

furn_log_02-03:

  • Downscaled new furn_log_01

furn_log_04:

  • Adjusted endgrain texture UVs to center it better
  • Created LOD to reduce to 2 drawcalls (cut edges are so bright that no distance makes the change to 1 invisible before making the entire model impossible to see, at least in Blender)
  • Vanilla: 3259 bytes; new: 5802 (+92%)4

furn_stickbundle00: (Unused in vanilla)

  • Retopologized wood ends, saving 22 tris.
  • Heavily fixed the UVs, which were a complete mess.
  • Discovered that not even T_D uses this model or adds it to the Construction Set, and questioned my (hour or so of) life choices.
  • Added LOD to reduce to 1 drawcall.
  • Vanilla: 13196 bytes; 24332 bytes (+84%)

⚠ Note: Did not test in game, for same reason as for ex_de_constr_* assets below.

a_daedric_fountain_h:

  • Fixed the misassigned faces.
  • Corrected misassigned sharp edges.
  • Gorget texture is mirrored, judging by well-known Daedric letter Oht (O). Fixed during re-unwrap, as this was clearly a mistake -- see also the "hair" band thing at the top not being mirrored.
  • Merged trishapes with identical materials. 8 drawcalls reduced to 5.
  • Adjusted triangulation to be more consistent and reduce curve distortions. It's a subtle, but the right (from helmet perspective) eye looks better matching the left, and the brow region looks no different even on close inspection but the thinner triangles aren't so thin so... microoptimization I guess.
  • Slid over and merged two verts in the glabella area which provided zero perceptable shape influence.
  • Corrected flat-shaded faces on back of helmet.
  • Vanilla: 35533 bytes; new 29388. (-17%)

ex_de_constr_* (Unused in vanilla)

  • Retopologized endgrain
  • Added LOD to reduce to one drawcall and stop rendering beyond 8191 units, if they're ever added or used in a mod.
  • Added split collision mesh to reduce calculation volume for _04 through _06
  • _01: Was 5786 bytes; now 6001
  • _02: Was 3886 bytes; now 6149
  • _03: Was 3886 bytes; now 5893
  • _04: Was 1952 bytes; now 4928
  • _05: Was 2144 bytes; now 4928
  • _06: Was 2144 bytes; now 4718

⚠ NOTE: I did not test these in-game, as I didn't feel like adding Construction Set IDs for them and placing them in the world. Testing should be possible in the Melee, Docks cell of Arktwend, at least for one of them; beware of being even more pained by THAT content than even Bloodmoon content.

ex_de_docks_cleat:

  • Retopologized bolts
  • Reworked normals and some very slight UV distortion
  • Added LOD to reduce drawcalls by 1 and stop rendering beyond 8191 units (they're invisible even at FOV 30 at 1080p at that distance)
  • Vanilla: 8673 bytes; new: 10989. (+27%)

ex_de_docks_gate:

  • Union-booleaned wood parts together, and rope parts together, into single meshes.
  • Added LODs to reduce drawcalls from 3 always to 3->2->1 (and reduce tricount)
  • Vanilla: 19739 bytes; new: 44631. (+126%) (Every NiTriShape is different, so no geometry could be shared, only materials.)

ex_de_docks_steps_01:

  • Weighted and adjusted normals.
  • Added LOD to reduce to one drawcall.
  • Vanilla: 12175 bytes; new: 21684. (+78%)

ex_de_oar:

  • Added split collision mesh to reduce compute volume. ...36 tris is still better than 56, I suppose.
  • Placed in NiLODNode to stop rendering beyond 8191 units.
  • was bytes 3121; now 4600. (+47%)

ex_t_gateway_great:

  • Fixed noticable texture seams
  • Adjusted and ooleaned spikes/branches to correct some of them visibly poking through the center ring's mesh to the outside... and some not making it inside at all, leaving visible gaps.
  • Added LOD to reduce to 1 drawcall.
  • Adjusted collision meshes to more closely conform to visual mesh, reworked the top branch's collision entirely to be more correct (yet able to split it up), and added collision to smallest branches missing any for better compatibility with mods adding impact sounds on weapon impacts.
  • Vanilla: 38851 bytes; now 75459. (+94%)

ex_de_sn_gate: (Unused in game)

  • Fixed odd and obvious usage of metal strip texture on hinge faces instead of hinge texture.
  • Reworked some UVs to reduce islands.
  • Reworked normals
  • Added LODs to reduce drawcalls from 3 to 1, then reduce tricount at distance
  • Vanilla: 20544 bytes; new 30030. (+46%)

⚠ It was pointed out that this model was used with a different texture for at least one other model. It may be worth copying this to those, with the texture appropriately updated.

ex_imp_plat_01:

  • Removed unneeded faces from underside of collision mesh.
  • Slid over some unneed verts on top corners
  • Added edge loops to improve vertex lighting
  • Added simplified LOD of 2 drawcalls and no bevels
  • Vanilla: 6178 bytes; new: 6810 bytes (+10%)

ex_t_manor_01:

  • Split collision mesh into four pieces
  • Adjusted UVs to reduce stretch and try to line up bark (with only slight success)
  • Weighted and stitched normals.
  • Vanilla: 42734 bytes; new: 39572. (-7%)

ex_t_platform_01:

  • Slightly tweaked UVs to correct distortion, without altering texel density (despite believing bark would match surroundings better if it were adjusted)
  • Weighted and stitched normals.
  • Vanilla: 6530 bytes; new: 5974 (-9%)

ex_t_pole_hooked:

  • Simplified collision mesh from 76 tris to 42 and split in three pieces to reduce volume.
  • Adjusted UVs to eliminate seam I didn't even know was there until I checked the UV edge locations.
  • Placed in NiLODNode...
  • Weighted and stitched normals.
  • Vanilla: 8916 bytes; new: 7324. (-18%)

ex_t_root_hook:

  • Copied part of the new collision mesh of ex_t_pole_hooked to replace collision mesh
  • Fixed distortion of UVs
  • Placed in NiLODNode...
  • Vanilla: 12724 bytes; new: 11561. (-9%)

ex_t_root_spikes_01:

  • Split collision into three pieces, dramatically reducing computation volume.
  • Placed in NiLODNode to hopefully stop rendering after 32768 units. ...at least until the paging system is changed to just display the same stuff after 16384 forever.
  • Weighted and stitched normals.
  • Vanilla: 14172 bytes; new: 13094. (-8%)

ex_t_root_spikes_02: (Unused in vanilla)

  • Split collision into four pieces to reduce computation volume
  • Fixed ugly and unneccesary levels of texture stretching
  • Placed in NiLODNode as with _01.
  • Weighted and stitched normals.
  • Vanilla: 10521 bytes; new: 11614 (+10%)

ex_t_root_stem:

  • Split collision into four pieces to reduce computation volume
  • Adjusted UVs to eliminate seam I didn't even know was there until I checked the UV edge locations.
  • Added slightly simplified LOD.
  • Weighted and stitched normals.
  • Vanilla: 11631; now 14186 (+22%)

ex_t_stair_90_l_short:

  • Changed tendril to use tx_bark_01 texture, for consistency with the rest of the set's stairs and walkways.
  • Simplified and split collision mesh, which still had every step modeled except for the tops (which had been turned into a ramp)
  • Reworked UVs of steps to elimination seams and distortion
  • Added LOD1 with bevels removed and tendril decimated, reducing total tricount to ~60%.
  • Vanilla: 26976 bytes; new: 24311. (-10%)
  • Probably can have collision simplified further, but I didn't bother.

ex_t_stair_90_r_short:

  • Copied the l version, mirrored the Empties everything was parented, then flipped the faces to point outside the mesh again. Thankfully, that was all that was necessary.
  • Exact same filesizes as l version.

…ified tx_bark_01.dds texture, as I wish to figure out if that was done from the lossless original and whether better DDS compression is possible.

Not that the existing compression is noticable after bilinear filtering, mind.

furn_cushion_square_08 and _09:
	- Added collision mesh.
	- Adjusted UVs to reduce distortion/islands.
	- Vanilla: 3735 bytes each, new: 3624 bytes. (-3%)

furn_de_ashl_post:
	- Retopologized endgrain
	- Corrected UV distortions, but not stretching. Don't worry, pole poll voters, the difference is utterly unnoticeable as far as I checked -- they aren't even visible in the Zainab Camp Wise Woman's yurt!
	- Added LODs to reduce draw calls from 3 always to 3 closeup -> 2 near -> 1 far
	- Vanilla: 6686 bytes; new: 9334. (+40%)

furn_dwrv_bed00:
	- UV rework to minimize distortion and reduce/hide steams and stretching. Did not eliminate stretching entirely due to texture repetition.
	- Booleaned mesh pieces together to eliminate clipping.
	- Split collision mesh in half to reduce calculation volume.
	- Retopologized underside of feet.
	- Vanilla: 49882 bytes; new 54467 due to added triangles from Boolean modifier. (+9%)

furn_log_01:
	- Retopologized endgrain
	- Added collision mesh (26 tris) -- not much of a decrease, but it's split in two to reduce calculation volume.
	- Created LOD to reduce to one drawcall and stop drawing beyond 1 cell.
	- Vanilla: 3629 bytes; new: 6720. (+85%)
	- Did not adjust tx_wood_brown_posts texture UVs, so still stretched. :(
	- 3844 bytes.

furn_log_02-03:
	- Downscaled new furn_log_01

furn_log_04:
	- Adjusted endgrain texture UVs to center it better
	- Created LOD to reduce to 2 drawcalls (cut edges are so bright that no distance makes the change to 1 invisible before making the entire model impossible to see, at least in Blender)
	- Vanilla: 3259 bytes; new: 5802 (+92%)4

furn_stickbundle00: (Unused in vanilla)
	- Retopologized wood ends, saving 22 tris.
	- Heavily fixed the UVs, which were a complete mess.
	- Discovered that not even T_D uses this model or adds it to the Construction Set, and questioned my (hour or so of) life choices.
	- Added LOD to reduce to 1 drawcall.
	- Vanilla: 13196 bytes; 24332 bytes (+84%)

	!! Note: Did not test in game, for same reason as for ex_de_constr_* assets below.

a_daedric_fountain_h:
	- Fixed the misassigned faces.
	- Corrected misassigned sharp edges.
	- Gorget texture is mirrored, judging by well-known Daedric letter Oht (O). Fixed during re-unwrap, as this was clearly a mistake -- see also the "hair" band thing at the top *not* being mirrored.
	- Merged trishapes with identical materials. 8 drawcalls reduced to 5.
	- Adjusted triangulation to be more consistent and reduce curve distortions. It's a subtle, but the right (from helmet perspective) eye looks better matching the left, and the brow region looks no different even on close inspection but the thinner triangles aren't so thin so... microoptimization I guess.
	- Slid over and merged two verts in the glabella area which provided zero perceptable shape influence.
	- Corrected flat-shaded faces on back of helmet.
	- Vanilla: 35533 bytes; new 29388. (-17%)

ex_de_constr_* (Unused in vanilla)
	- Retopologized endgrain
	- Added LOD to reduce to one drawcall and stop rendering beyond 8191 units, if they're ever added or used in a mod. (
	- Added split collision mesh to reduce calculation volume for _04 through _06
	- _01: Was 5786 bytes; now 6001
	- _02: Was 3886 bytes; now 6149
	- _03: Was 3886 bytes; now 5893
	- _04: Was 1952 bytes; now 4928
	- _05: Was 2144 bytes; now 4928
	- _06: Was 2144 bytes; now 4718

	!! NOTE: I did not test these in-game, as I didn't feel like adding Construction Set IDs for them and placing them in the world.
		 Testing should be possible in the Melee, Docks cell of Arktwend, at least for one of them.

ex_de_docks_cleat:
	- Retopologized bolts
	- Reworked normals and some *very slight* UV distortion
	- Added LOD to reduce drawcalls by 1 and stop rendering beyond 8191 units (they're invisible even at FOV 30 at 1080p at that distance)
	- Vanilla: 8673 bytes; new: 10989. (+27%)

ex_de_docks_gate:
	- Union-booleaned wood parts together, and rope parts together, into single meshes.
	- Added LODs to reduce drawcalls from 3 always to 3->2->1 (and reduce tricount)
	- Vanilla: 19739 bytes; new: 44631. (+126%) (Every NiTriShape is different, so no geometry could be shared, only materials.)

ex_de_docks_steps_01:
	- Weighted and adjusted normals.
	- Added LOD to reduce to one drawcall.
	- Vanilla: 12175 bytes; new: 21684. (+78%)

ex_de_oar:
	- Added split collision mesh to reduce compute volume. ...36 tris is still better than 56, I suppose.
	- Placed in NiLODNode to stop rendering beyond 8191 units.
	- was bytes 3121; now 4600. (+47%)

ex_t_gateway_great:
	- Fixed noticable texture seams
	- Adjusted and ooleaned spikes/branches to correct some of them visibly poking through the center ring's mesh to the outside... and some not making it inside at all, leaving visible gaps.
	- Added LOD to reduce to 1 drawcall.
	- Adjusted collision meshes to more closely conform to visual mesh, reworked the top branch's collision entirely to be more correct (yet able to split it up), and added collision to smallest branches missing any for better compatibility with mods adding impact sounds on weapon impacts.
	- Vanilla: 38851 bytes; now 75459. (+94%)

ex_de_sn_gate: (Unused in game)
	- Fixed odd and obvious usage of metal strip texture on hinge faces instead of hinge texture.
	- Reworked some UVs to reduce islands.
	- Reworked normals
	- Added LODs to reduce drawcalls from 3 to 1, then reduce tricount at distance
	- Vanilla: 20544 bytes; new 30030. (+46%)

ex_imp_plat_01:
	- Removed unneeded faces from underside of collision mesh.
	- Slid over some unneed verts on top corners
	- Added edge loops to improve vertex lighting
	- Added simplified LOD of 2 drawcalls and no bevels
	- Vanilla: 6178 bytes; new: 6810 bytes (+10%)

ex_t_manor_01:
	- Split collision mesh into four pieces
	- Adjusted UVs to reduce stretch and try to line up bark (with only slight success)
	- Weighted and stitched normals.
	- Vanilla: 42734 bytes; new: 39572. (-7%)

ex_t_platform_01:
	- Slightly tweaked UVs to correct distortion, without altering texel density (despite believing bark would match surroundings better if it were adjusted)
	- Weighted and stitched normals.
	- Vanilla: 6530 bytes; new: 5974 (-9%)

ex_t_pole_hooked:
	- Simplified collision mesh from 76 tris to 42 and split in three pieces to reduce volume.
	- Adjusted UVs to eliminate seam I didn't even know was there until I checked the UV edge locations.
	- Placed in NiLODNode...
	- Weighted and stitched normals.
	- Vanilla: 8916 bytes; new: 7324. (-18%)

ex_t_root_hook:
	- Copied part of the new collision mesh of ex_t_pole_hooked to replace collision mesh
	- Fixed distortion of UVs
	- Placed in NiLODNode...
	- Vanilla: 12724 bytes; new: 11561. (-9%)

ex_t_root_spikes_01:
	- Split collision into three pieces, dramatically reducing computation volume.
	- Placed in NiLODNode to hopefully stop rendering after 32768 units. ...at least until the paging system is changed to just display the same stuff after 16384 forever.
	- Weighted and stitched normals.
	- Vanilla: 14172 bytes; new: 13094. (-8%)

ex_t_root_spikes_02: (Unused in vanilla)
	- Split collision into four pieces to reduce computation volume
	- Fixed ugly and unneccesary levels of texture stretching
	- Placed in NiLODNode as with _01.
	- Weighted and stitched normals.
	- Vanilla: 10521 bytes; new: 11614 (+10%)

ex_t_root_stem:
	- Split collision into four pieces to reduce computation volume
	- Adjusted UVs to eliminate seam I didn't even know was there until I checked the UV edge locations.
	- Added slightly simplified LOD.
	- Weighted and stitched normals.
	- Vanilla: 11631; now 14186 (+22%)

ex_t_stair_90_l_short:
	- Changed tendril to use tx_bark_01 texture, for consistency with the rest of the set's stairs and walkways.
	- Simplified and split collision mesh, which still had every step modeled except for the tops (which had been turned into a ramp)
	- Reworked UVs of steps to elimination seams and distortion
	- Added LOD1 with bevels removed and tendril decimated, reducing total tricount to ~60%.
	- Vanilla: 26976 bytes; new: 24311. (-10%)
	- Probably can have collision simplified further, but I didn't bother.

ex_t_stair_90_r_short:
	- Copied the l version, mirrored the Empties everything was parented, then flipped the faces to point outside the mesh again. Thankfully, that was all that was necessary.
	- Exact same filesizes as l version.
@C3pa
Copy link

C3pa commented Jan 5, 2026

I'm glad to see all these meshes being done. I thought you might be interested in bringing over the UV edit to ex_imp_plat_01.nif from: #45.

@C3pa
Copy link

C3pa commented Jan 5, 2026

Axeljk made some adjustments to the collision mesh for ex_de_docks_steps_01.nif quite some time ago, but it was kind of forgotten and not submitted for inclusion into MOP. These are from the #showcases channel in the MMC Discord server:

image image

Here is the mentioned archive: better_dock_steps.zip. (I only had to change it from 7z to zip since Github doesn't allow attaching 7z files).

What are these collision changes? They basically cut out the top of the collision to end at the top stair instead of the top part of the side planks. Here is the modified screenshot:
image

The archive contains the same change for ex_de_docks_steps.nif:
image

While vanilla meshes look like this:
ex_de_docks_steps_01.nif
image
ex_de_docks_steps.nif
image

You might be interested in incorporating these collision mesh changes.

@C3pa
Copy link

C3pa commented Jan 5, 2026

Since you started to work on cushions, there is a UV issue with Furn_cushion_square_03 you might want to tackle. You can read more here: #13.

@BethOfDeath
Copy link
Author

BethOfDeath commented Jan 5, 2026

I'm glad to see all these meshes being done. I thought you might be interested in bringing over the UV edit to ex_imp_plat_01.nif from: #45.

I will look at it, thanks!

You might be interested in incorporating these collision mesh changes.

I believe I fixed the collision face orientation (and forgot to mention it), but I may be thinking of another model (possibly the mirrored Telvanni long staircase after I mirrored it). I'll look into it.

If I am not mistaken, the mesh should be named a_daedric_fountain_h.nif

Now this is interesting, because I did test this (like all of them that have Construction Set IDs) ingame, and I remember ori stating the mesh was coming from my mod folder. I'll look into this right away.

Since you started to work on cushions, there is a UV issue with Furn_cushion_square_03 you might want to tackle. You can read more here: #13.

I only tackled them because Mesh Fix v1.2 covered them and I wanted to hit parity. I'll add it to the textfile with the list of assets to deal with (it's a long one).

Updated ex_de_docks_steps_01 with collision mesh from Axeljk's version.

Reunwrapped ex_imp_plat_01 to minimize UV islands and remove texture seams.

Thanks to Axeljk for the collision mesh, and C3pa for the suggestions and corrections!
@BethOfDeath
Copy link
Author

I modified Axeljk's collision mesh a bit to split the little top bits into separate NiTriShapes, and I simply reunwrapped ex_imp_plat_01's sides like I should've done in the first place rather than Data Transfer'ing over the exact UVs from the suggested version, but this implements the suggested changes correctly.

@C3pa
Copy link

C3pa commented Jan 5, 2026

Thanks, Fia! Your changes look good.

C3pa added a commit to C3pa/morrowind-optimization-patch that referenced this pull request Jan 5, 2026
Already covered by Fia in mop-org#51.
@C3pa
Copy link

C3pa commented Jan 5, 2026

Now this is interesting, because I did test this (like all of them that have Construction Set IDs) ingame, and I remember ori stating the mesh was coming from my mod folder. I'll look into this right away.

This probably happened because MOP already covers that helmet mesh.

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