Skip to content

Comments

Xis droid parts refactored#282

Open
Xisifer wants to merge 6 commits intozunath:masterfrom
Xisifer:xis-droid-parts-refactored
Open

Xis droid parts refactored#282
Xisifer wants to merge 6 commits intozunath:masterfrom
Xisifer:xis-droid-parts-refactored

Conversation

@Xisifer
Copy link
Contributor

@Xisifer Xisifer commented Nov 2, 2025

MASSIVE Droid part update:

  • 19 new full droid models!!!
  • 3 new belts!!
  • 5 new neck accessories!
  • Fixed missing shadows on some legacy droid parts

Update vs PR#265: All models have been refactored and reworked to optimize UV layouts and reduce texture file sizes.

Summary by CodeRabbit

  • New Features
    • Added numerous material/texture definitions enabling normal and specular mapping for character model components (biceps, chest, feet, forearms, hands, head, legs, pelvis, shins), improving surface detail and lighting.
    • Extended character part data to include additional chest entries for expanded customization.

✏️ Tip: You can customize this high-level summary in your review settings.

Compiled, shadows enabled
Normal maps and MTRs
Crunched and refactored as far as I can feasibly go for most of them
@coderabbitai
Copy link

coderabbitai bot commented Nov 2, 2025

Important

Review skipped

Review was skipped as selected files did not have any reviewable changes.

💤 Files selected but had no reviewable changes (3)
  • swlor2_parts/pfz0_bicepL236.mdl
  • swlor2_parts/pfz0_bicepR236.mdl
  • swlor2_parts/pfz0_foreL236.mdl

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

📝 Walkthrough

Walkthrough

This PR adds ~49 new material definition files (.mtr) under swlor2_mtr and appends 10 lines to swlor2_2da/parts_chest.2da. Each .mtr defines renderhint NormalAndSpecMapped and 5 texture slots (typically texture1 → *_n, texture3 → *_r; others null).

Changes

Cohort / File(s) Change Summary
Biceps
swlor2_mtr/pfz0_bicepL223.mtr, swlor2_mtr/pfz0_bicepL225.mtr, swlor2_mtr/pfz0_bicepL227.mtr, swlor2_mtr/pfz0_bicepR225.mtr, swlor2_mtr/pfz0_bicepR227.mtr, swlor2_mtr/pmz0_bicepL225.mtr, swlor2_mtr/pmz0_bicepL227.mtr, swlor2_mtr/pmz0_bicepR225.mtr, swlor2_mtr/pmz0_bicepR227.mtr
New .mtr files with renderhint NormalAndSpecMapped; texture1 mapped to normal variants, texture3 mapped to roughness/spec where present; other texture slots null.
Chest
swlor2_mtr/pfz0_chest227.mtr, swlor2_mtr/pfz0_chest229.mtr, swlor2_mtr/pmz0_chest227.mtr, swlor2_mtr/pmz0_chest229.mtr
New .mtr files with NormalAndSpecMapped; texture mappings (texture1→normal, texture2/3→spec/rough as present), remaining slots null.
Foot
swlor2_mtr/pfz0_footL021.mtr, swlor2_mtr/pfz0_footL023.mtr, swlor2_mtr/pfz0_footR021.mtr, swlor2_mtr/pfz0_footR023.mtr, swlor2_mtr/pmz0_footL021.mtr, swlor2_mtr/pmz0_footL023.mtr, swlor2_mtr/pmz0_footR021.mtr, swlor2_mtr/pmz0_footR023.mtr
New .mtr files with NormalAndSpecMapped; texture1→normal, texture3→roughness/spec where present; other slots null.
Forearm
swlor2_mtr/pfz0_foreL226.mtr, swlor2_mtr/pfz0_foreL228.mtr, swlor2_mtr/pfz0_foreR226.mtr, swlor2_mtr/pfz0_foreR228.mtr, swlor2_mtr/pmz0_foreL226.mtr, swlor2_mtr/pmz0_foreL228.mtr, swlor2_mtr/pmz0_foreR226.mtr, swlor2_mtr/pmz0_foreR228.mtr
New .mtr files with NormalAndSpecMapped; texture1→normal, texture3→roughness/spec where present; others null.
Hand
swlor2_mtr/pfz0_handL225.mtr, swlor2_mtr/pfz0_handL227.mtr, swlor2_mtr/pfz0_handR225.mtr, swlor2_mtr/pfz0_handR227.mtr, swlor2_mtr/pmz0_handL225.mtr, swlor2_mtr/pmz0_handL227.mtr, swlor2_mtr/pmz0_handR225.mtr, swlor2_mtr/pmz0_handR227.mtr
New .mtr files with NormalAndSpecMapped; texture1→normal, texture3→roughness/spec where present; other slots null.
Head
swlor2_mtr/pfz0_head035.mtr, swlor2_mtr/pmz0_head035.mtr
New .mtr files with NormalAndSpecMapped; texture1→normal, texture3→roughness/spec, includes transparency=1 in head files.
Leg
swlor2_mtr/pfz0_legL021.mtr, swlor2_mtr/pfz0_legR021.mtr, swlor2_mtr/pmz0_legL021.mtr, swlor2_mtr/pmz0_legL023.mtr, swlor2_mtr/pmz0_legR021.mtr, swlor2_mtr/pmz0_legR023.mtr
New .mtr files with NormalAndSpecMapped; texture1→normal, texture3→roughness/spec where present; others null.
Pelvis
swlor2_mtr/pfz0_pelvis022.mtr, swlor2_mtr/pmz0_pelvis022.mtr, swlor2_mtr/pmz0_pelvis024.mtr
New .mtr files with NormalAndSpecMapped; texture1→normal, texture3→roughness/spec where present; remaining null.
Shin
swlor2_mtr/pfz0_shinL021.mtr, swlor2_mtr/pfz0_shinR021.mtr, swlor2_mtr/pmz0_shinL021.mtr, swlor2_mtr/pmz0_shinL023.mtr, swlor2_mtr/pmz0_shinR021.mtr, swlor2_mtr/pmz0_shinR023.mtr
New .mtr files with NormalAndSpecMapped; texture1→normal, texture3→roughness/spec where present; other slots null.
2DA update
swlor2_2da/parts_chest.2da
Appended 10 lines ("**** ****") to the end of the file.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Possibly related PRs

  • New KOTOR parts #266 — modifies swlor2_2da/parts_chest.2da (reformat) and overlaps the same 2da asset updated here.

Suggested reviewers

  • zunath

Poem

🐰 New materials sprout in rows tonight,
Normal maps snug, roughness tucked just right,
A hop, a stitch, each slot aligned and prim,
Renderhints set — the shaders hum a hymn,
Hooray for textures — now the models gleam! 🎨

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The PR title 'Xis droid parts refactored' is partially related to the changeset but lacks specificity about the scope of changes.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

Warning

Review ran into problems

🔥 Problems

Git: Failed to clone repository. Please run the @coderabbitai full review command to re-trigger a full review. If the issue persists, set path_filters to include or exclude specific files.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 8

♻️ Duplicate comments (7)
swlor2_mtr/pfz0_handL227.mtr (1)

6-6: Verify texture name prefix mismatch.

Same naming pattern issue: pfz0_handL227.mtr references pmz0_handL227_n. Please verify this is intentional texture sharing and that the referenced texture file exists.

swlor2_mtr/pfz0_shinL021.mtr (1)

6-8: Verify texture name prefix mismatch.

Same naming pattern issue: pfz0_shinL021.mtr references pmz0_shinL021_n and pmz0_shinL021_r.

swlor2_mtr/pfz0_handR227.mtr (1)

6-6: Verify texture name prefix mismatch.

Same naming pattern issue: pfz0_handR227.mtr references pmz0_handR227_n.

swlor2_mtr/pfz0_handR225.mtr (1)

6-8: Verify texture name prefix mismatch.

Same naming pattern issue: pfz0_handR225.mtr references pmz0_handR225_n and pmz0_handR225_r.

swlor2_mtr/pfz0_legL021.mtr (1)

6-8: Same prefix mismatch as in other pfz0 files.

This file exhibits the same pfz0_*.mtrpmz0_* texture reference pattern identified in pfz0_handL225.mtr.

swlor2_mtr/pfz0_bicepR227.mtr (1)

6-6: Same prefix mismatch as in other pfz0 files.

This file exhibits the same pfz0_*.mtrpmz0_* texture reference pattern identified in pfz0_handL225.mtr.

swlor2_mtr/pfz0_bicepL225.mtr (1)

6-8: Same prefix mismatch as in other pfz0 files.

This file exhibits the same pfz0_*.mtrpmz0_* texture reference pattern identified in pfz0_handL225.mtr.

🧹 Nitpick comments (1)
swlor2_mtr/pfz0_head035.mtr (1)

1-10: Add texture4 declaration for consistency.

This file is missing the texture4 declaration that appears in all other material files in this PR. While the transparency setting may be intentional for the head material, the texture slot should be explicitly declared.

 // Textures
 texture1 pmz0_head035_n
 texture2 null
 texture3 pmz0_head035_r
+texture4 null
 texture5 null
 
 transparency 1
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 3a1a7c8 and 27cfde2.

⛔ Files ignored due to path filters (57)
  • swlor2_dds/pfz0_bicepL225_n.dds is excluded by !**/*.dds
  • swlor2_dds/pfz0_bicepL227_n.dds is excluded by !**/*.dds
  • swlor2_dds/pfz0_bicepR225_n.dds is excluded by !**/*.dds
  • swlor2_dds/pfz0_bicepR227_n.dds is excluded by !**/*.dds
  • swlor2_dds/pfz0_chest227_n.dds is excluded by !**/*.dds
  • swlor2_dds/pfz0_chest229_n.dds is excluded by !**/*.dds
  • swlor2_dds/pfz0_footL021_n.dds is excluded by !**/*.dds
  • swlor2_dds/pfz0_footL023_n.dds is excluded by !**/*.dds
  • swlor2_dds/pfz0_footR021_n.dds is excluded by !**/*.dds
  • swlor2_dds/pfz0_footR023_n.dds is excluded by !**/*.dds
  • swlor2_dds/pfz0_foreL226_n.dds is excluded by !**/*.dds
  • swlor2_dds/pfz0_foreL228_n.dds is excluded by !**/*.dds
  • swlor2_dds/pfz0_foreR226_n.dds is excluded by !**/*.dds
  • swlor2_dds/pfz0_foreR228_n.dds is excluded by !**/*.dds
  • swlor2_dds/pfz0_handL225_n.dds is excluded by !**/*.dds
  • swlor2_dds/pfz0_handL227_n.dds is excluded by !**/*.dds
  • swlor2_dds/pfz0_handR225_n.dds is excluded by !**/*.dds
  • swlor2_dds/pfz0_handR227_n.dds is excluded by !**/*.dds
  • swlor2_dds/pfz0_legL021_n.dds is excluded by !**/*.dds
  • swlor2_dds/pfz0_legL023_n.dds is excluded by !**/*.dds
  • swlor2_dds/pfz0_legR021_n.dds is excluded by !**/*.dds
  • swlor2_dds/pfz0_legR023_n.dds is excluded by !**/*.dds
  • swlor2_dds/pfz0_pelvis022_n.dds is excluded by !**/*.dds
  • swlor2_dds/pfz0_pelvis024_n.dds is excluded by !**/*.dds
  • swlor2_dds/pfz0_shinL021_n.dds is excluded by !**/*.dds
  • swlor2_dds/pfz0_shinL023_n.dds is excluded by !**/*.dds
  • swlor2_dds/pfz0_shinR021_n.dds is excluded by !**/*.dds
  • swlor2_dds/pfz0_shinR023_n.dds is excluded by !**/*.dds
  • swlor2_dds/pmz0_bicepL225_n.dds is excluded by !**/*.dds
  • swlor2_dds/pmz0_bicepL227_n.dds is excluded by !**/*.dds
  • swlor2_dds/pmz0_bicepR225_n.dds is excluded by !**/*.dds
  • swlor2_dds/pmz0_bicepR227_n.dds is excluded by !**/*.dds
  • swlor2_dds/pmz0_chest227_n.dds is excluded by !**/*.dds
  • swlor2_dds/pmz0_chest229_n.dds is excluded by !**/*.dds
  • swlor2_dds/pmz0_footL021_n.dds is excluded by !**/*.dds
  • swlor2_dds/pmz0_footL023_n.dds is excluded by !**/*.dds
  • swlor2_dds/pmz0_footR021_n.dds is excluded by !**/*.dds
  • swlor2_dds/pmz0_footR023_n.dds is excluded by !**/*.dds
  • swlor2_dds/pmz0_foreL226_n.dds is excluded by !**/*.dds
  • swlor2_dds/pmz0_foreL228_n.dds is excluded by !**/*.dds
  • swlor2_dds/pmz0_foreR226_n.dds is excluded by !**/*.dds
  • swlor2_dds/pmz0_foreR228_n.dds is excluded by !**/*.dds
  • swlor2_dds/pmz0_handL225_n.dds is excluded by !**/*.dds
  • swlor2_dds/pmz0_handL227_n.dds is excluded by !**/*.dds
  • swlor2_dds/pmz0_handR225_n.dds is excluded by !**/*.dds
  • swlor2_dds/pmz0_handR227_n.dds is excluded by !**/*.dds
  • swlor2_dds/pmz0_head035_n.dds is excluded by !**/*.dds
  • swlor2_dds/pmz0_legL021_n.dds is excluded by !**/*.dds
  • swlor2_dds/pmz0_legL023_n.dds is excluded by !**/*.dds
  • swlor2_dds/pmz0_legR021_n.dds is excluded by !**/*.dds
  • swlor2_dds/pmz0_legR023_n.dds is excluded by !**/*.dds
  • swlor2_dds/pmz0_pelvis022_n.dds is excluded by !**/*.dds
  • swlor2_dds/pmz0_pelvis024_n.dds is excluded by !**/*.dds
  • swlor2_dds/pmz0_shinL021_n.dds is excluded by !**/*.dds
  • swlor2_dds/pmz0_shinL023_n.dds is excluded by !**/*.dds
  • swlor2_dds/pmz0_shinR021_n.dds is excluded by !**/*.dds
  • swlor2_dds/pmz0_shinR023_n.dds is excluded by !**/*.dds
📒 Files selected for processing (54)
  • swlor2_mtr/pfz0_bicepL223.mtr (1 hunks)
  • swlor2_mtr/pfz0_bicepL225.mtr (1 hunks)
  • swlor2_mtr/pfz0_bicepL227.mtr (1 hunks)
  • swlor2_mtr/pfz0_bicepR225.mtr (1 hunks)
  • swlor2_mtr/pfz0_bicepR227.mtr (1 hunks)
  • swlor2_mtr/pfz0_chest227.mtr (1 hunks)
  • swlor2_mtr/pfz0_chest229.mtr (1 hunks)
  • swlor2_mtr/pfz0_footL021.mtr (1 hunks)
  • swlor2_mtr/pfz0_footL023.mtr (1 hunks)
  • swlor2_mtr/pfz0_footR021.mtr (1 hunks)
  • swlor2_mtr/pfz0_footR023.mtr (1 hunks)
  • swlor2_mtr/pfz0_foreL226.mtr (1 hunks)
  • swlor2_mtr/pfz0_foreL228.mtr (1 hunks)
  • swlor2_mtr/pfz0_foreR226.mtr (1 hunks)
  • swlor2_mtr/pfz0_foreR228.mtr (1 hunks)
  • swlor2_mtr/pfz0_handL225.mtr (1 hunks)
  • swlor2_mtr/pfz0_handL227.mtr (1 hunks)
  • swlor2_mtr/pfz0_handR225.mtr (1 hunks)
  • swlor2_mtr/pfz0_handR227.mtr (1 hunks)
  • swlor2_mtr/pfz0_head035.mtr (1 hunks)
  • swlor2_mtr/pfz0_legL021.mtr (1 hunks)
  • swlor2_mtr/pfz0_legR021.mtr (1 hunks)
  • swlor2_mtr/pfz0_pelvis022.mtr (1 hunks)
  • swlor2_mtr/pfz0_shinL021.mtr (1 hunks)
  • swlor2_mtr/pfz0_shinR021.mtr (1 hunks)
  • swlor2_mtr/pmz0_bicepL225.mtr (1 hunks)
  • swlor2_mtr/pmz0_bicepL227.mtr (1 hunks)
  • swlor2_mtr/pmz0_bicepR225.mtr (1 hunks)
  • swlor2_mtr/pmz0_bicepR227.mtr (1 hunks)
  • swlor2_mtr/pmz0_chest227.mtr (1 hunks)
  • swlor2_mtr/pmz0_chest229.mtr (1 hunks)
  • swlor2_mtr/pmz0_footL021.mtr (1 hunks)
  • swlor2_mtr/pmz0_footL023.mtr (1 hunks)
  • swlor2_mtr/pmz0_footR021.mtr (1 hunks)
  • swlor2_mtr/pmz0_footR023.mtr (1 hunks)
  • swlor2_mtr/pmz0_foreL226.mtr (1 hunks)
  • swlor2_mtr/pmz0_foreL228.mtr (1 hunks)
  • swlor2_mtr/pmz0_foreR226.mtr (1 hunks)
  • swlor2_mtr/pmz0_foreR228.mtr (1 hunks)
  • swlor2_mtr/pmz0_handL225.mtr (1 hunks)
  • swlor2_mtr/pmz0_handL227.mtr (1 hunks)
  • swlor2_mtr/pmz0_handR225.mtr (1 hunks)
  • swlor2_mtr/pmz0_handR227.mtr (1 hunks)
  • swlor2_mtr/pmz0_head035.mtr (1 hunks)
  • swlor2_mtr/pmz0_legL021.mtr (1 hunks)
  • swlor2_mtr/pmz0_legL023.mtr (1 hunks)
  • swlor2_mtr/pmz0_legR021.mtr (1 hunks)
  • swlor2_mtr/pmz0_legR023.mtr (1 hunks)
  • swlor2_mtr/pmz0_pelvis022.mtr (1 hunks)
  • swlor2_mtr/pmz0_pelvis024.mtr (1 hunks)
  • swlor2_mtr/pmz0_shinL021.mtr (1 hunks)
  • swlor2_mtr/pmz0_shinL023.mtr (1 hunks)
  • swlor2_mtr/pmz0_shinR021.mtr (1 hunks)
  • swlor2_mtr/pmz0_shinR023.mtr (1 hunks)
🔇 Additional comments (41)
swlor2_mtr/pmz0_legR023.mtr (1)

2-10: Verify missing specular/roughness texture is intentional.

The renderhint specifies NormalAndSpecMapped, but texture3 (which typically holds the specular/roughness map according to the PR pattern) is set to null. Only the normal map is assigned to texture1.

Confirm whether this part intentionally uses default specular values or if the specular/roughness texture assignment was overlooked during the refactoring.

swlor2_mtr/pfz0_shinR021.mtr (1)

1-11: LGTM! Material definition follows the established pattern.

The material definition is well-structured with appropriate texture mappings for normal (texture1) and roughness (texture3) maps. The renderhint and texture slot configuration align with the established pattern for droid part materials in this PR.

swlor2_mtr/pmz0_shinR023.mtr (1)

2-2: Verify consistency between renderhint and texture mappings.

The NormalAndSpecMapped renderhint suggests both normal and specular mapping should be active, but texture3 (typically used for roughness/specular maps) is set to null. While this may be intentional as part of the optimization mentioned in the PR objectives, please confirm:

  1. Is the missing specular/roughness map intentional for this specific part?
  2. Should the renderhint be adjusted if specular mapping isn't used?

Run the following script to check if other shin parts in this PR follow the same pattern and verify the texture file exists:

Also applies to: 6-10

swlor2_mtr/pmz0_foreL228.mtr (1)

1-11: LGTM! Consistent naming pattern.

The material definition is correctly structured with texture1 referencing the matching normal map. The filename prefix (pmz0) matches the texture name prefix, maintaining consistency.

swlor2_mtr/pmz0_pelvis022.mtr (1)

1-11: LGTM! Consistent naming pattern.

The material definition correctly references textures with matching prefix (pmz0). Both normal map (texture1) and roughness map (texture3) are properly defined.

swlor2_mtr/pmz0_shinR021.mtr (1)

1-11: LGTM! Consistent naming pattern.

The material definition correctly references textures with matching prefix (pmz0). Both normal and roughness maps are properly defined.

swlor2_mtr/pfz0_legR021.mtr (1)

6-8: Verify texture name prefix mismatch.

The file is named pfz0_legR021.mtr but references textures with the pmz0_ prefix. This pattern appears across multiple files in this PR (pfz0 files referencing pmz0 textures). If this is intentional texture sharing between variants to reduce file sizes, that's fine, but please verify that the referenced texture files (pmz0_legR021_n and pmz0_legR021_r) exist in the assets.

Run this script to verify the texture references:

swlor2_mtr/pmz0_bicepL225.mtr (1)

1-11: LGTM!

Material definition follows the consistent pattern with correct texture naming conventions.

swlor2_mtr/pmz0_legR021.mtr (1)

1-11: LGTM!

Material definition follows the consistent pattern with correct texture naming conventions.

swlor2_mtr/pmz0_chest227.mtr (1)

6-6: Verify texture2 usage pattern.

This file sets texture2 to pmz0_chest227_s, which deviates from the pattern observed in most other material files in this PR where texture2 is set to null. Verify that this specular map assignment is intentional and that the texture file exists.

swlor2_mtr/pmz0_head035.mtr (1)

10-10: Verify transparency setting.

This file includes a transparency 1 property that is not present in other material files in this PR. Ensure this is intentional for the head piece.

swlor2_mtr/pfz0_bicepR225.mtr (1)

1-10: LGTM! Material definition with normal and roughness maps.

The material definition correctly specifies both normal map (texture1) and roughness map (texture3). The file uses pfz0 prefix while referencing pmz0 texture names, which appears to be an intentional pattern for variant materials sharing texture resources.

swlor2_mtr/pmz0_foreR226.mtr (1)

1-10: LGTM! Complete material definition with normal and roughness maps.

swlor2_mtr/pmz0_handL227.mtr (1)

1-10: Material definition correct; texture3 pattern noted.

The structure is correct with normal map in texture1. Like pmz0_shinL023.mtr, this file has texture3 set to null while other body parts in this PR include roughness maps. This pattern may be intentional based on different material requirements per body part type.

swlor2_mtr/pmz0_footL021.mtr (1)

1-10: LGTM! Complete material definition.

swlor2_mtr/pmz0_bicepL227.mtr (1)

1-10: LGTM! Material definition structure is correct.

The material correctly defines the normal map. This shares the same texture resource name with pfz0_bicepL227.mtr, which is consistent with the variant pattern observed in this PR.

swlor2_mtr/pfz0_bicepL227.mtr (1)

1-10: LGTM! Variant material definition sharing texture resources.

This material variant correctly references the same texture resources as pmz0_bicepL227.mtr, following the established pattern where different model variants (pmz0/pfz0 prefixes) can share texture assets.

swlor2_mtr/pfz0_footR023.mtr (1)

1-10: Material definition correct; note texture3 difference.

The structure is correct with proper texture references. Note that pmz0_footL021.mtr (foot left) includes a roughness map in texture3, while this foot right variant has texture3 set to null. This may be intentional based on different variant requirements.

swlor2_mtr/pmz0_shinL023.mtr (1)

1-10: Material definition structure is correct; verify texture3 pattern.

The material definition follows the correct format with NormalAndSpecMapped renderhint and appropriate texture slots. However, this file has texture3 set to null (no roughness/specular map), while other similar files in this PR (e.g., pfz0_bicepR225.mtr, pmz0_foreR226.mtr, pmz0_footL021.mtr) define texture3 with roughness maps (_r suffix). Verify this is intentional based on the material requirements for shin parts.

swlor2_mtr/pfz0_pelvis022.mtr (1)

1-11: LGTM! Standard material definition.

The material definition follows the expected pattern with normal map (texture1) and roughness map (texture3) properly configured.

swlor2_mtr/pmz0_legL021.mtr (1)

1-11: LGTM! Standard material definition.

The material definition follows the expected pattern with normal map (texture1) and roughness map (texture3) properly configured.

swlor2_mtr/pmz0_shinL021.mtr (1)

1-11: LGTM! Standard material definition.

The material definition follows the expected pattern with normal map (texture1) and roughness map (texture3) properly configured.

swlor2_mtr/pfz0_foreR226.mtr (1)

1-11: LGTM! Standard material definition.

The material definition follows the expected pattern with normal map (texture1) and roughness map (texture3) properly configured.

swlor2_mtr/pfz0_footL021.mtr (1)

1-11: LGTM! Standard material definition.

The material definition follows the expected pattern with normal map (texture1) and roughness map (texture3) properly configured.

swlor2_mtr/pmz0_footL023.mtr (1)

6-8: Verify missing roughness texture.

Unlike most other material files in this PR, texture3 is set to null instead of referencing a roughness map (e.g., pmz0_footL023_r). Ensure this is intentional and that the corresponding roughness texture file doesn't exist.

swlor2_mtr/pmz0_handR227.mtr (1)

6-8: Verify missing roughness texture.

Unlike most other material files in this PR, texture3 is set to null instead of referencing a roughness map (e.g., pmz0_handR227_r). Ensure this is intentional and that the corresponding roughness texture file doesn't exist.

swlor2_mtr/pmz0_footR023.mtr (1)

1-11: LGTM!

Material definition follows the expected structure with proper prefix consistency.

swlor2_mtr/pmz0_bicepR227.mtr (1)

1-11: LGTM!

Material definition is correctly structured with matching prefix convention.

swlor2_mtr/pmz0_handL225.mtr (1)

1-11: LGTM!

Material definition is correctly structured with matching prefix convention and includes both normal and roughness maps.

swlor2_mtr/pmz0_legL023.mtr (1)

1-11: LGTM!

Material definition is correctly structured with matching prefix convention.

swlor2_mtr/pfz0_handL225.mtr (1)

6-8: Verify texture name prefixes match file prefix.

The file is named pfz0_handL225.mtr but references textures with the pmz0_ prefix (pmz0_handL225_n, pmz0_handL225_r). This pattern appears in multiple files where pfz0_*.mtr files reference pmz0_* textures. Please confirm whether this cross-prefix texture sharing is intentional or if the texture names should use the pfz0_ prefix to match the material filename.

swlor2_mtr/pfz0_bicepL223.mtr (1)

1-11: LGTM! Material definition follows consistent pattern.

The file structure is correct with NormalAndSpecMapped renderhint and proper texture slot definitions. The cross-reference from pfz0 filename to pmz0 texture appears intentional based on the pattern across the PR.

swlor2_mtr/pmz0_chest229.mtr (1)

1-11: LGTM! Material definition is correctly structured.

Consistent naming and proper texture slot configuration.

swlor2_mtr/pmz0_pelvis024.mtr (1)

1-11: LGTM! Material definition is correctly formatted.

swlor2_mtr/pmz0_foreL226.mtr (1)

1-11: LGTM! Material definition correctly includes both normal and roughness maps.

This material properly defines texture1 (normal) and texture3 (roughness/specular), which provides enhanced material detail.

swlor2_mtr/pmz0_handR225.mtr (1)

1-11: LGTM! Material definition correctly includes both normal and roughness maps.

Proper texture configuration for enhanced material rendering.

swlor2_mtr/pmz0_footR021.mtr (1)

1-11: LGTM! Material definition correctly configured.

Proper use of both normal (texture1) and roughness (texture3) maps for complete material definition.

swlor2_mtr/pfz0_foreR228.mtr (1)

1-11: LGTM! Material definition follows consistent pattern.

The cross-reference from pfz0 filename to pmz0 texture is consistent with the PR's pattern, and the texture configuration matches the corresponding pmz0_foreR228.mtr file.

swlor2_mtr/pmz0_foreR228.mtr (1)

1-11: Verify texture mapping consistency for forearm materials.

This file defines only texture1 (normal map) while the similar pmz0_foreL226.mtr includes both texture1 and texture3 (roughness). If these represent different droid model variants (226 vs 228), this may be intentional. Otherwise, consider whether texture3 should be added for consistency.

Verify texture mapping patterns across similar body part materials:

swlor2_mtr/pmz0_bicepR225.mtr (1)

1-10: Material definition looks correct.

The file follows the expected pattern with consistent naming between the filename prefix (pmz0) and texture references. Both normal map (texture1) and roughness map (texture3) are properly defined.

swlor2_mtr/pfz0_chest229.mtr (1)

8-8: Verify if roughness map is intentionally omitted.

Unlike other material files in this PR (e.g., pmz0_bicepR225.mtr, pfz0_chest227.mtr), this file has texture3 set to null instead of referencing a roughness/specular map. Please confirm whether this is intentional or if a roughness map texture should be added.

Comment on lines +6 to +8
texture1 pmz0_chest227_n
texture2 null
texture3 pmz0_chest227_r
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

Texture name prefix mismatch with filename.

The material filename uses the pfz0 prefix, but the texture references use pmz0 prefix. This inconsistency will likely cause texture loading failures or load incorrect textures.

Apply this diff to correct the texture references:

-texture1 pmz0_chest227_n
+texture1 pfz0_chest227_n
 texture2 null
-texture3 pmz0_chest227_r
+texture3 pfz0_chest227_r
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
texture1 pmz0_chest227_n
texture2 null
texture3 pmz0_chest227_r
texture1 pfz0_chest227_n
texture2 null
texture3 pfz0_chest227_r
🤖 Prompt for AI Agents
In swlor2_mtr/pfz0_chest227.mtr around lines 6 to 8, the texture references use
the wrong prefix "pmz0" while the material filename uses "pfz0", causing
mismatched texture loading; update texture1 and texture3 to use the "pfz0"
prefix (i.e., change "pmz0_chest227_n" to "pfz0_chest227_n" and
"pmz0_chest227_r" to "pfz0_chest227_r"), leaving texture2 as "null".


// Textures

texture1 pmz0_chest229_n
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

Texture name prefix mismatch with filename.

The material filename uses the pfz0 prefix, but the texture reference uses pmz0 prefix. This inconsistency will likely cause texture loading failures or load incorrect textures.

Apply this diff to correct the texture reference:

-texture1 pmz0_chest229_n
+texture1 pfz0_chest229_n
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
texture1 pmz0_chest229_n
texture1 pfz0_chest229_n
🤖 Prompt for AI Agents
In swlor2_mtr/pfz0_chest229.mtr around line 6, the texture reference uses the
wrong prefix ("pmz0_chest229_n") which doesn't match the material filename
prefix ("pfz0"); update the texture name to "pfz0_chest229_n" so the texture
reference matches the file naming and will load correctly.


// Textures

texture1 pmz0_footL023_n
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

Texture prefix mismatch detected.

Line 6 references pmz0_footL023_n but the file is named pfz0_footL023.mtr. This prefix inconsistency (pmz0 vs pfz0) may cause a missing texture error. Verify the correct texture name matches the pfz0 convention.

🤖 Prompt for AI Agents
In swlor2_mtr/pfz0_footL023.mtr around line 6, the texture reference uses the
wrong prefix "pmz0_footL023_n" which doesn't match the file's "pfz0" naming
convention; update the texture name to the correct prefix (e.g.,
"pfz0_footL023_n") so the material references the existing texture file, and
verify the corrected texture file exists in the assets directory.


texture1 pmz0_footL023_n
texture2 null
texture3 null
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Missing roughness map texture.

texture3 is set to null, which is inconsistent with the pattern in most other material files where texture3 references a roughness map (e.g., _r suffix). Compare with pfz0_footR021.mtr or similar foot materials to verify if a roughness map should be assigned.

If a roughness map exists, apply this diff:

-texture3 null
+texture3 pfz0_footL023_r
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
texture3 null
texture3 pfz0_footL023_r
🤖 Prompt for AI Agents
In swlor2_mtr/pfz0_footL023.mtr around line 8, texture3 is set to null but other
foot materials use texture3 for the roughness map (typically with an "_r"
suffix); update texture3 to point to the correct roughness texture by copying
the naming/pattern from the matching right-foot material (e.g.,
pfz0_footR021.mtr) or, if no asset exists, assign the project default roughness
texture or remove the null entry so the material falls back to defaults.

Comment on lines +6 to +8
texture1 pmz0_footR021_n
texture2 null
texture3 pmz0_footR021_r
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

Texture prefix mismatches detected.

Lines 6 and 8 reference pmz0_footR021_n and pmz0_footR021_r respectively, but the file is named pfz0_footR021.mtr. These prefix inconsistencies (pmz0 vs pfz0) may cause missing texture errors. Verify the correct texture names match the pfz0 convention.

Apply this diff if the textures should use the pfz0 prefix:

-texture1 pmz0_footR021_n
+texture1 pfz0_footR021_n
 texture2 null
-texture3 pmz0_footR021_r
+texture3 pfz0_footR021_r
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
texture1 pmz0_footR021_n
texture2 null
texture3 pmz0_footR021_r
texture1 pfz0_footR021_n
texture2 null
texture3 pfz0_footR021_r
🤖 Prompt for AI Agents
In swlor2_mtr/pfz0_footR021.mtr around lines 6 to 8, the texture entries use the
pmz0 prefix but the file is pfz0_footR021.mtr; update the texture names to match
the pfz0 convention by renaming texture1 from pmz0_footR021_n to pfz0_footR021_n
and texture3 from pmz0_footR021_r to pfz0_footR021_r (leave texture2 as null).

Comment on lines +6 to +8
texture1 pmz0_foreL226_n
texture2 null
texture3 pmz0_foreL226_r
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

Texture prefix mismatches detected.

Lines 6 and 8 reference pmz0_foreL226_n and pmz0_foreL226_r respectively, but the file is named pfz0_foreL226.mtr. These prefix inconsistencies (pmz0 vs pfz0) may cause missing texture errors. Verify the correct texture names match the pfz0 convention.

Apply this diff if the textures should use the pfz0 prefix:

-texture1 pmz0_foreL226_n
+texture1 pfz0_foreL226_n
 texture2 null
-texture3 pmz0_foreL226_r
+texture3 pfz0_foreL226_r
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
texture1 pmz0_foreL226_n
texture2 null
texture3 pmz0_foreL226_r
texture1 pfz0_foreL226_n
texture2 null
texture3 pfz0_foreL226_r
🤖 Prompt for AI Agents
In swlor2_mtr/pfz0_foreL226.mtr around lines 6 to 8 the texture names use the
pmz0 prefix (pmz0_foreL226_n and pmz0_foreL226_r) which mismatches the file's
pfz0 naming convention; replace those texture names to use the pfz0 prefix
(pfz0_foreL226_n and pfz0_foreL226_r) so they match the pfz0_* convention and
prevent missing texture errors, leaving texture2 as null if intentionally empty.


// Textures

texture1 pmz0_foreL228_n
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

Texture prefix mismatch detected.

Line 6 references pmz0_foreL228_n but the file is named pfz0_foreL228.mtr. This prefix inconsistency (pmz0 vs pfz0) may cause a missing texture error if the texture file follows the pfz0 naming convention. Verify the correct texture name.

#!/bin/bash
# Description: Verify texture file naming and check for similar mismatches

# Search for all pfz0 material files that reference pmz0 textures
echo "=== pfz0 files referencing pmz0 textures ==="
rg -n 'texture\d+\s+pmz0' swlor2_mtr/pfz0_*.mtr

# Search for all pmz0 material files that reference pfz0 textures
echo -e "\n=== pmz0 files referencing pfz0 textures ==="
rg -n 'texture\d+\s+pfz0' swlor2_mtr/pmz0_*.mtr

# List texture files to verify which prefix convention is used
echo -e "\n=== Available texture files (if present) ==="
fd -e dds -e tga 'foreL228' 2>/dev/null || echo "Texture files not in repository or different location"
🤖 Prompt for AI Agents
In swlor2_mtr/pfz0_foreL228.mtr around line 6, the texture reference uses the
prefix "pmz0_foreL228_n" which mismatches this file's "pfz0" prefix; change the
texture token to the matching prefix (e.g., "pfz0_foreL228_n") or, if the
texture file truly uses "pmz0", rename/move the texture file to follow the pfz0
convention and update any other references accordingly so the material points to
an existing texture; verify by searching other .mtr files for inconsistent
pmz0/pfz0 usages and ensuring the final texture filename exists in the asset
directory.

Comment on lines +5 to +8
texture1 pmz0_head035_n
texture2 null
texture3 pmz0_head035_r
texture5 null
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Missing texture4 definition.

The file defines texture1, texture2, texture3, and texture5, but texture4 is not defined (line 8 jumps from texture3 to texture5). All other material files in this PR consistently define all five texture slots. Verify whether texture4 should be defined as null for consistency.

Apply this diff to add the missing texture4 slot:

 texture3 pmz0_head035_r
+texture4 null
 texture5 null
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
texture1 pmz0_head035_n
texture2 null
texture3 pmz0_head035_r
texture5 null
texture1 pmz0_head035_n
texture2 null
texture3 pmz0_head035_r
texture4 null
texture5 null
🤖 Prompt for AI Agents
In swlor2_mtr/pmz0_head035.mtr around lines 5 to 8, texture4 is missing between
texture3 and texture5; add a line defining texture4 as null (i.e., insert
"texture4 null" directly after the texture3 line) so the file consistently
declares all five texture slots and matches the other material files' format.

@zunath
Copy link
Owner

zunath commented Nov 21, 2025

This appears to be a similar/duplicate PR of this: #276

Please close out the PR you don't want me to review.

@zunath zunath mentioned this pull request Nov 21, 2025
Copy link
Owner

@zunath zunath left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Requesting changes (See above)

zunath and others added 3 commits November 21, 2025 17:27
for more headroom
- Added Pit Droid: full body, M & F

- Added lower body (pelvis, thighs, shins, feet) for HK-model droid
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