Ad placeholder

Modding:Armor/Clothing Texture Maps: Difference between revisions

Jump to navigation Jump to search
Line 78: Line 78:
|#80FF00
|#80FF00
|}
|}
== Armor/Clothing Texture Maps (Advanced) ==
One can read [[Modding:Creating Outfit Textures|here]] to learn about the actual creation of textures for your custom armor/clothing, and check out [[Modding:Coding An Item|here]] for more in-depth explanations on inserting your textures into a mod.
This section is only meant to expand on the previous one with some images and the occasional code example, and with only brief mentions of texture editing.
=== Shader (Configs) ===
These files get assigned to each and every material used for models, and essentially tells the game how to render an object - what texture maps it allows and the different parameters one can edit.
A lot of the shaders used in the game are VT-only (short for Virtual Textures), meaning their textures can only be loaded via specially encoded .gtp files. Currently we can unpack and edit these but not re-insert them back into the game as VT’s or create custom ones without the setup and use of Script Extender (see guide [https://github.com/Norbyte/bg3se/blob/main/Docs/VirtualTextures.md here] if interested).
'''Shader configs are inserted as paths leading to the file into the SourceFile section of your material entry:'''<syntaxhighlight lang="xml">
<node id="Resource">
    <attribute id="DiffusionProfileUUID" type="FixedString" value="" />
    <attribute id="ID" type="FixedString" value="yourUUIDHere" /> Material ID for model
    <attribute id="MaterialType" type="uint8" value="4" />
    <attribute id="Name" type="LSString" value="YourModelName" />
    <attribute id="SourceFile" type="LSString" value="Public/Shared/Assets/Materials/Characters/CHAR_BASE.lsf" />
    <attribute id="_OriginalFileVersion_" type="int64" value="144115198813274414" />
    <children>
        your textures + settings here etc
    </children>
</node>
</syntaxhighlight>
This is the standard shader config you can use to insert your own Normal Maps, Physical Maps, Base Color Maps and MSKColor maps for your custom armor/clothing:
* ''Public/Shared/Assets/Materials/Characters/CHAR_BASE.lsf''
'''And these are the basic code entries needed to insert said texture maps:'''<syntaxhighlight lang="xml">
<node id="Texture2DParameters"> _BM
    <attribute id="Enabled" type="bool" value="True" />
    <attribute id="ExportAsPreset" type="bool" value="True" />
    <attribute id="GroupName" type="FixedString" value="01 Texture Map" />
    <attribute id="ID" type="FixedString" value="yourUUIDhere" />
    <attribute id="ParameterName" type="FixedString" value="basecolor" />
</node>
<node id="Texture2DParameters"> _NM
    <attribute id="Enabled" type="bool" value="True" />
    <attribute id="ExportAsPreset" type="bool" value="True" />
    <attribute id="GroupName" type="FixedString" value="01 Texture Map" />
    <attribute id="ID" type="FixedString" value="yourUUIDhere" />
    <attribute id="ParameterName" type="FixedString" value="normalmap" />
</node>
<node id="Texture2DParameters"> _PM
    <attribute id="Enabled" type="bool" value="True" />
    <attribute id="ExportAsPreset" type="bool" value="True" />
    <attribute id="GroupName" type="FixedString" value="01 Texture Map" />
    <attribute id="ID" type="FixedString" value="yourUUIDhere" />
    <attribute id="ParameterName" type="FixedString" value="physicalmap" />
</node>
<node id="Texture2DParameters">
    <attribute id="Enabled" type="bool" value="True" />
    <attribute id="ExportAsPreset" type="bool" value="True" />
    <attribute id="GroupName" type="FixedString" value="01 Texture Map" />
    <attribute id="ID" type="FixedString" value="yourUUIDhere" />
    <attribute id="ParameterName" type="FixedString" value="MSKColor" />
</node>
</syntaxhighlight>Some shaders allow for additional maps or features to be used for armor/clothing, such as:
=== Glow Maps ===
As their name implies, these allow for glowing sections to be added to armor/clothing. You’d need to swap to a shader config that allows for Glow Maps to be able to use insert them. There's a few non-VT possibilities for this, depending on what look you’re trying to achieve. Some standard ones are:
<blockquote>Public/Shared/Assets/Materials/Characters/CHAR_BASE_GM.lsf</blockquote>Basic, this one only lets you set glowmap color via an overlaid GlowColor. Supports MSKcolor maps!
<blockquote>Public/Shared/Assets/Materials/Base/Base_GM_Pulse_FX.lsf</blockquote>A little more advanced, as it lets you set Glow Map color via either an overlaid GlowColor OR you can insert the colors directly into the Glow Map depending on your chosen settings, and also lets you set a pulse animation on the glow. Does not support MSKcolor maps!
[image here]
'''To insert a Glow Map once you’ve switched to a _GM shader and have a Glow Map ready:'''<syntaxhighlight lang="xml+velocity">
<node id="Texture2DParameters"> _GM
    <attribute id="Enabled" type="bool" value="True" />
    <attribute id="ExportAsPreset" type="bool" value="True" />
    <attribute id="GroupName" type="FixedString" value="01 Texture Map" />
    <attribute id="ID" type="FixedString" value="yourUUIDhere" />
    <attribute id="ParameterName" type="FixedString" value="Glowmap" />
</node>
</syntaxhighlight>
'''And the GlowColor setting for both shader configs:'''<syntaxhighlight lang="xml">
<node id="Vector3Parameters">
    <attribute id="BaseValue" type="fvec3" value="0 0 0" />
    <attribute id="Enabled" type="bool" value="True" />
    <attribute id="ExportAsPreset" type="bool" value="True" />
    <attribute id="GroupName" type="FixedString" value="Glow" />
    <attribute id="IsColor" type="bool" value="True" />
    <attribute id="ParameterName" type="FixedString" value="GlowColour" />
    <attribute id="Value" type="fvec3" value="1 1 1" />
</node>
</syntaxhighlight>
'''These settings are for Base_GM_Pulse_FX specifically:''' <syntaxhighlight lang="xml">
<node id="ScalarParameters">
    <attribute id="BaseValue" type="float" value="0" />
    <attribute id="Enabled" type="bool" value="True" />
    <attribute id="ExportAsPreset" type="bool" value="True" />
    <attribute id="GroupName" type="FixedString" value="Glow" />
    <attribute id="ParameterName" type="FixedString" value="UseGMColor" />
    <attribute id="Value" type="float" value="1" />
</node>
</syntaxhighlight>0 = GlowColor sets the overall color of the Glow Map
1 = the color of the Glow Map itself dictates colors
<syntaxhighlight lang="xml">
<node id="ScalarParameters">
    <attribute id="BaseValue" type="float" value="1" />
    <attribute id="Enabled" type="bool" value="True" />
    <attribute id="ExportAsPreset" type="bool" value="True" />
    <attribute id="GroupName" type="FixedString" value="Glow" />
    <attribute id="ParameterName" type="FixedString" value="PulseSpeed" />
    <attribute id="Value" type="float" value="1" />
</node>
</syntaxhighlight>0 = no pulse animation
Between 0 - 1 = pulse animation and its speed
There are some Glow Map shaders that let you set colors via a ColorMap, which essentially is a colored gradient - these are more often used for VFX stuff than armor/clothing.
=== Alpha (aka Transparancy) ===
Some shader configs allow you to create completely (or partially) transparent parts on armor/clothing without needing to edit the mesh. A standard one is:<blockquote>Materials\Public\Shared\Assets\Materials\Characters\CHAR_BASE_AlphaTest.lsf</blockquote>[some images for illustration]
Any transparency is added via the Base Color map, by creating a white Alpha channel and painting in parts you want fully transparent with black (grey for partial transparancy). In the game files these files might be called _BMA instead of _BM, but the naming doesn’t matter - they’re just _BM files exported with Alpha active.
[some images for illustration]
=== Backfaces (Two-sided textures) ===
A way to make your model appear double-sided without editing the mesh, is to use a shader config that allows for Backfaces. A standard one is:<blockquote>Materials\Public\Shared\Assets\Materials\Characters\CHAR_BASE_AlphaTest_2S.lsf</blockquote>[some images for illustration]
You don’t need to do anything special when switching to this shader, the textures used within the materials will now just appear double-sided. Note that this one also allows for transparency, as a non-VT alternative just for _2s exclusively doesn’t exist for us to use. As long as you don’t have an Alpha channel in your Base Color Map it won’t affect your textures.
=== VertCut ===
Shaders with this term in their name allow for using vertex colors to mask parts of clothing. For example, a pair of boots are too long and clip through pants - a VertCut shader will allow you (with an appropriately set up model) to hide the part of the pants the boot overlays and avoid clipping. You can read more about them in general here [link]. A standard one is:<blockquote>Materials\Public\Shared\Assets\Materials\Characters\CHAR_BASE_VertCut.lsf</blockquote>
Some combinations of the above are also possible, though again, we are limited by the amount of non-VT ones that allow for them:
shader (allows for x + x)
etc
Many more shader configs with specific purposes exist, you can always check within the shader config .lsf file to see what texture maps + parameters it allows.
<br>
<br>
[https://substance3d.adobe.com/magazine/bringing-life-to-legends-character-art-in-baldurs-gate-3/ Source]
[https://substance3d.adobe.com/magazine/bringing-life-to-legends-character-art-in-baldurs-gate-3/ Source]
[[Category:Modding resources]]
[[Category:Modding resources]]
69
edits

Navigation menu