- Editing Virtual Textures
- Getting Started with BG3 Modding
- How to change NPC visuals [redirect]
- How to change Voice using AI [redirect]
[back to index]
Editing Virtual Textures
Let's assume you want to extract and edit the texture for the "Simple Robe" worn by a Female Human Mage.
Find and Extract the Code pointing to the Mesh
We will be creating a new robe with the same 3D meshes but assign different texture to the meshes.
- Look for the VisualResourceID for Simple Robe in the "Armour & Clothing" spreadsheet.
- Open BG3MT and search for the VisualResourceID.
- In the results you should look for [PAK]_Female_Clothing or [PAK]_Female_Armor
- Open the lsf.lsx file using notepad++ and search for the same VisualResourceID
- This will take you to a VisualBank resource that looks like this (first attribute has "AttachBone")
- Copy this resource and put it in a new file called NewRobeTexture.lsf.lsx. Then add headers and footers as indicated.
Code: Select all
<!--header start--> <?xml version="1.0" encoding="utf-8"?> <save> <version major="4" minor="0" revision="9" build="0" lslib_meta="v1,bswap_guids" /> <region id="VisualBank"> <node id="VisualBank"> <children> <!--header end--> <!--resource start--> <node id="Resource"> <attribute id="AttachBone" type="FixedString" value="" /> <attribute id="AttachmentSkeletonResource" type="FixedString" value="" /> <attribute id="BlueprintInstanceResourceID" type="FixedString" value="" /> <attribute id="BoundsMax" type="fvec3" value="0.6168748 1.63359 0.2678758" /> <attribute id="BoundsMin" type="fvec3" value="-0.6182736 0.2625153 -0.2551202" /> <attribute id="ClothColliderResourceID" type="FixedString" value="" /> <attribute id="HairPresetResourceId" type="FixedString" value="" /> <attribute id="HairType" type="uint8" value="0" /> <attribute id="ID" type="FixedString" value="4084d9c1-de9e-bb68-f0bc-0395ad80357b" /> <attribute id="MaterialType" type="uint8" value="13" /> <attribute id="Name" type="LSString" value="HUM_F_ARM_Robe_A_Body" /> <attribute id="NeedsSkeletonRemap" type="bool" value="False" /> <attribute id="RemapperSlotId" type="FixedString" value="" /> <attribute id="ScalpMaterialId" type="FixedString" value="" /> <attribute id="SkeletonResource" type="FixedString" value="" /> <attribute id="SkeletonSlot" type="FixedString" value="" /> <attribute id="Slot" type="FixedString" value="Body" /> <attribute id="SoftbodyResourceID" type="FixedString" value="" /> <attribute id="SourceFile" type="LSString" value="Generated/Public/Shared/Assets/Characters/_Models/Humans/_Female/Resources/HUM_F_ARM_Robe_A_Body.GR2" /> <attribute id="SupportsVertexColorMask" type="bool" value="True" /> <attribute id="Template" type="FixedString" value="Generated/Public/Shared/Assets/Characters/_Models/Humans/_Female/Resources/HUM_F_ARM_Robe_A_Body.Dummy_Root.0" /> <attribute id="_OriginalFileVersion_" type="int64" value="144115207403209033" /> <children> <node id="AnimationWaterfall"> <attribute id="Object" type="FixedString" value="" /> </node> <node id="Base" /> <node id="ClothParams"> <attribute id="AngularDrag" type="fvec3" value="0.0001 0.0001 0.0001" /> <attribute id="AngularInertia" type="fvec3" value="0.5 0.5 0.5" /> <attribute id="AnimDriveDampingForce" type="float" value="75" /> <attribute id="AnimDriveSpringForce" type="float" value="225" /> <attribute id="AnimInfluenceMultiplier" type="float" value="1" /> <attribute id="AtmosphericWindEnabled" type="bool" value="False" /> <attribute id="BendingStiffness" type="float" value="1" /> <attribute id="CentrifugalInertia" type="fvec3" value="0.5 0.5 0.5" /> <attribute id="ClothMainWindFrequency" type="float" value="0" /> <attribute id="ClothMainWindSpeed" type="float" value="0" /> <attribute id="ClothMainWindVariance" type="float" value="0" /> <attribute id="ClothMaxWindDirectionOffset" type="float" value="0" /> <attribute id="ClothWindDirectionOffsetFrequency" type="float" value="0" /> <attribute id="ClothWindSpeed" type="float" value="0" /> <attribute id="CollisionMassScale" type="float" value="1" /> <attribute id="CompressionLimit" type="float" value="0.8" /> <attribute id="Damping" type="fvec3" value="0.04 0.04 0.04" /> <attribute id="DragCoefficient" type="float" value="0.4" /> <attribute id="EnableCCD" type="bool" value="False" /> <attribute id="EnableVirtualParticles" type="bool" value="False" /> <attribute id="FluidDensity" type="float" value="0.1" /> <attribute id="Friction" type="float" value="0.1" /> <attribute id="FrontalWindSpeed" type="float" value="0" /> <attribute id="FrontalWindVariance" type="float" value="0" /> <attribute id="LiftCoefficient" type="float" value="0.01" /> <attribute id="LinearDrag" type="fvec3" value="0.0001 0.0001 0.0001" /> <attribute id="LinearInertia" type="fvec3" value="0.5 0.5 0.5" /> <attribute id="LinearStiffness" type="float" value="1" /> <attribute id="OverrideAtmosphericWind" type="bool" value="False" /> <attribute id="SelfCollisionDistance" type="float" value="0" /> <attribute id="SelfCollisionStiffness" type="float" value="0" /> <attribute id="SolverFrequency" type="float" value="30" /> <attribute id="StiffnessFrequency" type="float" value="350" /> <attribute id="StiffnessMultiplier" type="float" value="1" /> <attribute id="StretchLimit" type="float" value="1.2" /> <attribute id="TetherConstraintScale" type="float" value="1" /> <attribute id="TetherConstraintStiffness" type="float" value="1" /> <attribute id="UUID" type="FixedString" value="HUM_F_ARM_Robe_A_Body.HUM_F_ARM_Robe_A_Body_Cloth_Mesh.2" /> </node> <node id="ClothParams"> <attribute id="AngularDrag" type="fvec3" value="0.0001 0.0001 0.0001" /> <attribute id="AngularInertia" type="fvec3" value="0.5 0.5 0.5" /> <attribute id="AnimDriveDampingForce" type="float" value="75" /> <attribute id="AnimDriveSpringForce" type="float" value="225" /> <attribute id="AnimInfluenceMultiplier" type="float" value="1" /> <attribute id="AtmosphericWindEnabled" type="bool" value="False" /> <attribute id="BendingStiffness" type="float" value="1" /> <attribute id="CentrifugalInertia" type="fvec3" value="0.5 0.5 0.5" /> <attribute id="ClothMainWindFrequency" type="float" value="0" /> <attribute id="ClothMainWindSpeed" type="float" value="0" /> <attribute id="ClothMainWindVariance" type="float" value="0" /> <attribute id="ClothMaxWindDirectionOffset" type="float" value="0" /> <attribute id="ClothWindDirectionOffsetFrequency" type="float" value="0" /> <attribute id="ClothWindSpeed" type="float" value="0" /> <attribute id="CollisionMassScale" type="float" value="1" /> <attribute id="CompressionLimit" type="float" value="0.8" /> <attribute id="Damping" type="fvec3" value="0.04 0.04 0.04" /> <attribute id="DragCoefficient" type="float" value="0.4" /> <attribute id="EnableCCD" type="bool" value="False" /> <attribute id="EnableVirtualParticles" type="bool" value="False" /> <attribute id="FluidDensity" type="float" value="0.1" /> <attribute id="Friction" type="float" value="0.1" /> <attribute id="FrontalWindSpeed" type="float" value="0" /> <attribute id="FrontalWindVariance" type="float" value="0" /> <attribute id="LiftCoefficient" type="float" value="0.01" /> <attribute id="LinearDrag" type="fvec3" value="0.0001 0.0001 0.0001" /> <attribute id="LinearInertia" type="fvec3" value="0.5 0.5 0.5" /> <attribute id="LinearStiffness" type="float" value="1" /> <attribute id="OverrideAtmosphericWind" type="bool" value="False" /> <attribute id="SelfCollisionDistance" type="float" value="0" /> <attribute id="SelfCollisionStiffness" type="float" value="0" /> <attribute id="SolverFrequency" type="float" value="30" /> <attribute id="StiffnessFrequency" type="float" value="350" /> <attribute id="StiffnessMultiplier" type="float" value="1" /> <attribute id="StretchLimit" type="float" value="1.2" /> <attribute id="TetherConstraintScale" type="float" value="1" /> <attribute id="TetherConstraintStiffness" type="float" value="1" /> <attribute id="UUID" type="FixedString" value="HUM_F_ARM_Robe_A_Body.HUM_F_ARM_Robe_A_Body_Cloth_Mesh_LOD1.5" /> </node> <node id="ClothProxyMapping"> <children> <node id="Object"> <attribute id="MapKey" type="FixedString" value="HUM_F_ARM_Robe_A_Body.HUM_F_ARM_Robe_A_Body_Cloth_Mesh.2" /> <children> <node id="MapValue"> <children> <node id="Object"> <attribute id="ClosestVertices" type="ScratchBuffer" value="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" /> <attribute id="Name" type="FixedString" value="HUM_F_ARM_Robe_A_Body.HUM_F_ARM_Robe_A_Body_Mesh.1" /> <attribute id="NbClosestVertices" type="int32" value="4428" /> </node> </children> </node> </children> </node> <node id="Object"> <attribute id="MapKey" type="FixedString" value="HUM_F_ARM_Robe_A_Body.HUM_F_ARM_Robe_A_Body_Cloth_Mesh_LOD1.5" /> <children> <node id="MapValue"> <children> <node id="Object"> <attribute id="ClosestVertices" type="ScratchBuffer" value="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" /> <attribute id="Name" type="FixedString" value="HUM_F_ARM_Robe_A_Body.HUM_F_ARM_Robe_A_Body_Mesh_LOD1.4" /> <attribute id="NbClosestVertices" type="int32" value="4428" /> </node> </children> </node> </children> </node> </children> </node> <node id="Objects"> <attribute id="LOD" type="uint8" value="0" /> <attribute id="MaterialID" type="FixedString" value="8e81efd2-f7e0-0a04-6b32-9101c28b6af3" /> <attribute id="ObjectID" type="FixedString" value="HUM_F_ARM_Robe_A_Body.HUM_F_ARM_Robe_A_Bracers_Mesh.0" /> </node> <node id="Objects"> <attribute id="LOD" type="uint8" value="0" /> <attribute id="MaterialID" type="FixedString" value="4bf29629-687c-5330-bce8-8d22432941c8" /> <attribute id="ObjectID" type="FixedString" value="HUM_F_ARM_Robe_A_Body.HUM_F_ARM_Robe_A_Body_Mesh.1" /> </node> <node id="Objects"> <attribute id="LOD" type="uint8" value="0" /> <attribute id="MaterialID" type="FixedString" value="9e2966c7-b61c-4bc1-bef1-a79cb5fde067" /> <attribute id="ObjectID" type="FixedString" value="HUM_F_ARM_Robe_A_Body.HUM_F_ARM_Robe_A_Body_Cloth_Mesh.2" /> </node> <node id="Objects"> <attribute id="LOD" type="uint8" value="1" /> <attribute id="MaterialID" type="FixedString" value="8e81efd2-f7e0-0a04-6b32-9101c28b6af3" /> <attribute id="ObjectID" type="FixedString" value="HUM_F_ARM_Robe_A_Body.HUM_F_ARM_Robe_A_Bracers_Mesh_LOD1.3" /> </node> <node id="Objects"> <attribute id="LOD" type="uint8" value="1" /> <attribute id="MaterialID" type="FixedString" value="4bf29629-687c-5330-bce8-8d22432941c8" /> <attribute id="ObjectID" type="FixedString" value="HUM_F_ARM_Robe_A_Body.HUM_F_ARM_Robe_A_Body_Mesh_LOD1.4" /> </node> <node id="Objects"> <attribute id="LOD" type="uint8" value="1" /> <attribute id="MaterialID" type="FixedString" value="9e2966c7-b61c-4bc1-bef1-a79cb5fde067" /> <attribute id="ObjectID" type="FixedString" value="HUM_F_ARM_Robe_A_Body.HUM_F_ARM_Robe_A_Body_Cloth_Mesh_LOD1.5" /> </node> <node id="VertexColorMaskSlots"> <attribute id="Object" type="FixedString" value="Torso" /> </node> <node id="VertexColorMaskSlots"> <attribute id="Object" type="FixedString" value="upperarm" /> </node> <node id="VertexColorMaskSlots"> <attribute id="Object" type="FixedString" value="decolletage_02" /> </node> <node id="VertexColorMaskSlots"> <attribute id="Object" type="FixedString" value="lowerarm" /> </node> <node id="VertexColorMaskSlots"> <attribute id="Object" type="FixedString" value="Shoulders" /> </node> <node id="VertexColorMaskSlots"> <attribute id="Object" type="FixedString" value="Underwear_Bra" /> </node> <node id="VertexColorMaskSlots"> <attribute id="Object" type="FixedString" value="Nipple Covers" /> </node> </children> </node> <!--footer start--> </children> </node> </region> </save> <!--footer end--> - Scroll down until you find <node id="Objects">
- Notice this robe is composed of 3 main objects, "Robe_A_Bracers", "Robe_A_Body" & "Robe_A_Body_Cloth"
The first 2 are self explanatory. But any mesh ending with "_Cloth" designates an invisible mesh that is used to control the movement of the cloth (cloth physics). Unless you alter the robe mesh in blender, there is no need to touch this. Let's extract the texture for "Robe_A_Body" for now. - Notice each object has a MaterialID. This is the texture and other visual parameters of the cloth. Search for this MaterialID in Notepad++
- This should take you to a MaterialBank resource whose first attribute is "DiffusionProfileUUID". Note: sometimes this is simply missing, because the MaterialID is present in a different race/ gender's [PAK] file. Usually you'll find what you need in the Human Male version of the same item.
- Scroll down till you find "VirtualTextureParameters"
- Copy this resource and paste it after </region> in NewRobeTexture.lsf.lsx. Add the Material Bank region id and node id tags before and after the resource. The portion we paste into NewRobeTexture.lsf.lsx, including MaterialBank tags, is below:
Code: Select all
<!--MaterialBankHeader start--> <region id="MaterialBank"> <node id="MaterialBank"> <!--MaterialBankHeader end--> <children> <node id="Resource"> <attribute id="DiffusionProfileUUID" type="FixedString" value="" /> <attribute id="ID" type="FixedString" value="4bf29629-687c-5330-bce8-8d22432941c8" /> <attribute id="MaterialType" type="uint8" value="13" /> <attribute id="Name" type="LSString" value="HUM_F_ARM_Robe_A_Body" /> <attribute id="SourceFile" type="LSString" value="Public/Shared/Assets/Materials/Characters/CHAR_BASE_VertCut_VT.lsf" /> <attribute id="_OriginalFileVersion_" type="int64" value="144115207403209030" /> <children> <node id="ScalarParameters"> <attribute id="BaseValue" type="float" value="0.7" /> <attribute id="Enabled" type="bool" value="False" /> <attribute id="ExportAsPreset" type="bool" value="True" /> <attribute id="GroupName" type="FixedString" value="" /> <attribute id="ParameterName" type="FixedString" value="Armor_Dirt_Sharpness" /> <attribute id="Value" type="float" value="0.7" /> </node> <node id="ScalarParameters"> <attribute id="BaseValue" type="float" value="0.5" /> <attribute id="Enabled" type="bool" value="False" /> <attribute id="ExportAsPreset" type="bool" value="True" /> <attribute id="GroupName" type="FixedString" value="" /> <attribute id="ParameterName" type="FixedString" value="Armor_Blood_Sharpness" /> <attribute id="Value" type="float" value="0.5" /> </node> <node id="ScalarParameters"> <attribute id="BaseValue" type="float" value="4" /> <attribute id="Enabled" type="bool" value="False" /> <attribute id="ExportAsPreset" type="bool" value="False" /> <attribute id="GroupName" type="FixedString" value="" /> <attribute id="ParameterName" type="FixedString" value="Dirt_AO_Sharpness" /> <attribute id="Value" type="float" value="4" /> </node> <node id="ScalarParameters"> <attribute id="BaseValue" type="float" value="4" /> <attribute id="Enabled" type="bool" value="False" /> <attribute id="ExportAsPreset" type="bool" value="False" /> <attribute id="GroupName" type="FixedString" value="" /> <attribute id="ParameterName" type="FixedString" value="Blood_AO_Sharpness" /> <attribute id="Value" type="float" value="4" /> </node> <node id="ScalarParameters"> <attribute id="BaseValue" type="float" value="0" /> <attribute id="Enabled" type="bool" value="False" /> <attribute id="ExportAsPreset" type="bool" value="True" /> <attribute id="GroupName" type="FixedString" value="" /> <attribute id="ParameterName" type="FixedString" value="Dirt" /> <attribute id="Value" type="float" value="0" /> </node> <node id="ScalarParameters"> <attribute id="BaseValue" type="float" value="0" /> <attribute id="Enabled" type="bool" value="False" /> <attribute id="ExportAsPreset" type="bool" value="True" /> <attribute id="GroupName" type="FixedString" value="" /> <attribute id="ParameterName" type="FixedString" value="Blood" /> <attribute id="Value" type="float" value="0" /> </node> <node id="ScalarParameters"> <attribute id="BaseValue" type="float" value="0.5" /> <attribute id="Enabled" type="bool" value="False" /> <attribute id="ExportAsPreset" type="bool" value="True" /> <attribute id="GroupName" type="FixedString" value="" /> <attribute id="ParameterName" type="FixedString" value="Reflectance" /> <attribute id="Value" type="float" value="0.5" /> </node> <node id="Texture2DParameters"> <attribute id="Enabled" type="bool" value="False" /> <attribute id="ExportAsPreset" type="bool" value="True" /> <attribute id="GroupName" type="FixedString" value="" /> <attribute id="ID" type="FixedString" value="8f1f209a-dd37-4531-b1ee-5e81c1d169cc" /> <attribute id="ParameterName" type="FixedString" value="VertexColor_MSK" /> </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="949ed002-24d5-c042-52bc-3c163b03445d" /> <attribute id="ParameterName" type="FixedString" value="MSKColor" /> </node> <node id="Texture2DParameters"> <attribute id="Enabled" type="bool" value="False" /> <attribute id="ExportAsPreset" type="bool" value="True" /> <attribute id="GroupName" type="FixedString" value="" /> <attribute id="ID" type="FixedString" value="2765e270-52ce-6f45-eddf-d0451042b54c" /> <attribute id="ParameterName" type="FixedString" value="" /> </node> <node id="Vector3Parameters"> <attribute id="BaseValue" type="fvec3" value="0.151058 0.2932161 0.4877652" /> <attribute id="Enabled" type="bool" value="False" /> <attribute id="ExportAsPreset" type="bool" value="True" /> <attribute id="GroupName" type="FixedString" value="02 Colour" /> <attribute id="IsColor" type="bool" value="True" /> <attribute id="ParameterName" type="FixedString" value="Cloth_Primary" /> <attribute id="Value" type="fvec3" value="0.151058 0.2932161 0.4877652" /> </node> <node id="Vector3Parameters"> <attribute id="BaseValue" type="fvec3" value="0.1701384 0.04614884 0.04614884" /> <attribute id="Enabled" type="bool" value="False" /> <attribute id="ExportAsPreset" type="bool" value="True" /> <attribute id="GroupName" type="FixedString" value="02 Colour" /> <attribute id="IsColor" type="bool" value="True" /> <attribute id="ParameterName" type="FixedString" value="Cloth_Secondary" /> <attribute id="Value" type="fvec3" value="0.1701384 0.04614884 0.04614884" /> </node> <node id="Vector3Parameters"> <attribute id="BaseValue" type="fvec3" value="0.07176144 0.06190747 0.1061561" /> <attribute id="Enabled" type="bool" value="False" /> <attribute id="ExportAsPreset" type="bool" value="True" /> <attribute id="GroupName" type="FixedString" value="02 Colour" /> <attribute id="IsColor" type="bool" value="True" /> <attribute id="ParameterName" type="FixedString" value="Cloth_Tertiary" /> <attribute id="Value" type="fvec3" value="0.07176144 0.06190747 0.1061561" /> </node> <node id="Vector3Parameters"> <attribute id="BaseValue" type="fvec3" value="1 1 1" /> <attribute id="Enabled" type="bool" value="False" /> <attribute id="ExportAsPreset" type="bool" value="True" /> <attribute id="GroupName" type="FixedString" value="02 Colour" /> <attribute id="IsColor" type="bool" value="True" /> <attribute id="ParameterName" type="FixedString" value="Accent_Color" /> <attribute id="Value" type="fvec3" value="1 1 1" /> </node> <node id="Vector3Parameters"> <attribute id="BaseValue" type="fvec3" value="0.238828 0.1036341 0.0600316" /> <attribute id="Enabled" type="bool" value="False" /> <attribute id="ExportAsPreset" type="bool" value="True" /> <attribute id="GroupName" type="FixedString" value="02 Colour" /> <attribute id="IsColor" type="bool" value="True" /> <attribute id="ParameterName" type="FixedString" value="Leather_Primary" /> <attribute id="Value" type="fvec3" value="0.238828 0.1036341 0.0600316" /> </node> <node id="Vector3Parameters"> <attribute id="BaseValue" type="fvec3" value="0.151058 0.0342302 0.02654868" /> <attribute id="Enabled" type="bool" value="False" /> <attribute id="ExportAsPreset" type="bool" value="True" /> <attribute id="GroupName" type="FixedString" value="02 Colour" /> <attribute id="IsColor" type="bool" value="True" /> <attribute id="ParameterName" type="FixedString" value="Leather_Secondary" /> <attribute id="Value" type="fvec3" value="0.151058 0.0342302 0.02654868" /> </node> <node id="Vector3Parameters"> <attribute id="BaseValue" type="fvec3" value="0.1219857 0.0600316 0.05112205" /> <attribute id="Enabled" type="bool" value="False" /> <attribute id="ExportAsPreset" type="bool" value="True" /> <attribute id="GroupName" type="FixedString" value="02 Colour" /> <attribute id="IsColor" type="bool" value="True" /> <attribute id="ParameterName" type="FixedString" value="Leather_Tertiary" /> <attribute id="Value" type="fvec3" value="0.1219857 0.0600316 0.05112205" /> </node> <node id="Vector3Parameters"> <attribute id="BaseValue" type="fvec3" value="1 1 1" /> <attribute id="Enabled" type="bool" value="False" /> <attribute id="ExportAsPreset" type="bool" value="True" /> <attribute id="GroupName" type="FixedString" value="02 Colour" /> <attribute id="IsColor" type="bool" value="True" /> <attribute id="ParameterName" type="FixedString" value="Custom_1" /> <attribute id="Value" type="fvec3" value="1 1 1" /> </node> <node id="Vector3Parameters"> <attribute id="BaseValue" type="fvec3" value="0.7667436 0.7667436 0.7667436" /> <attribute id="Enabled" type="bool" value="False" /> <attribute id="ExportAsPreset" type="bool" value="True" /> <attribute id="GroupName" type="FixedString" value="02 Colour" /> <attribute id="IsColor" type="bool" value="True" /> <attribute id="ParameterName" type="FixedString" value="Metal_Primary" /> <attribute id="Value" type="fvec3" value="0.7667436 0.7667436 0.7667436" /> </node> <node id="Vector3Parameters"> <attribute id="BaseValue" type="fvec3" value="0.7686275 0.7686275 0.7686275" /> <attribute id="Enabled" type="bool" value="False" /> <attribute id="ExportAsPreset" type="bool" value="True" /> <attribute id="GroupName" type="FixedString" value="02 Colour" /> <attribute id="IsColor" type="bool" value="True" /> <attribute id="ParameterName" type="FixedString" value="Metal_Secondary" /> <attribute id="Value" type="fvec3" value="0.7686275 0.7686275 0.7686275" /> </node> <node id="Vector3Parameters"> <attribute id="BaseValue" type="fvec3" value="0.7686275 0.7686275 0.7686275" /> <attribute id="Enabled" type="bool" value="False" /> <attribute id="ExportAsPreset" type="bool" value="True" /> <attribute id="GroupName" type="FixedString" value="02 Colour" /> <attribute id="IsColor" type="bool" value="True" /> <attribute id="ParameterName" type="FixedString" value="Metal_Tertiary" /> <attribute id="Value" type="fvec3" value="0.7686275 0.7686275 0.7686275" /> </node> <node id="Vector3Parameters"> <attribute id="BaseValue" type="fvec3" value="1 1 1" /> <attribute id="Enabled" type="bool" value="False" /> <attribute id="ExportAsPreset" type="bool" value="True" /> <attribute id="GroupName" type="FixedString" value="02 Colour" /> <attribute id="IsColor" type="bool" value="True" /> <attribute id="ParameterName" type="FixedString" value="Custom_2" /> <attribute id="Value" type="fvec3" value="1 1 1" /> </node> <node id="Vector3Parameters"> <attribute id="BaseValue" type="fvec3" value="0.1176471 0.06666667 0.04705882" /> <attribute id="Enabled" type="bool" value="False" /> <attribute id="ExportAsPreset" type="bool" value="True" /> <attribute id="GroupName" type="FixedString" value="08Dirt&Blood&Sweat" /> <attribute id="IsColor" type="bool" value="True" /> <attribute id="ParameterName" type="FixedString" value="DirtColor" /> <attribute id="Value" type="fvec3" value="0.1176471 0.06666667 0.04705882" /> </node> <node id="Vector3Parameters"> <attribute id="BaseValue" type="fvec3" value="0.1294118 0.007843138 0.003921569" /> <attribute id="Enabled" type="bool" value="False" /> <attribute id="ExportAsPreset" type="bool" value="True" /> <attribute id="GroupName" type="FixedString" value="08Dirt&Blood&Sweat" /> <attribute id="IsColor" type="bool" value="True" /> <attribute id="ParameterName" type="FixedString" value="Blood_Color" /> <attribute id="Value" type="fvec3" value="0.1294118 0.007843138 0.003921569" /> </node> <node id="VirtualTextureParameters"> <attribute id="Enabled" type="bool" value="True" /> <attribute id="ExportAsPreset" type="bool" value="True" /> <attribute id="GroupName" type="FixedString" value="Texture Map" /> <attribute id="ID" type="FixedString" value="2e041542-207c-c3a0-2408-0159491d10be" /> <attribute id="Index" type="int32" value="0" /> <attribute id="ParameterName" type="FixedString" value="virtualtexture" /> </node> </children> </node> </children> <!--Footer start--> </node> </region> <!--Footer end--> - At the very bottom of this resource you will find a ParameterName called "virtualtexture". Copy it's ID. Keep it handy for later.
- Searching for this ID will take you to a VirtualTextureBank with a GTexFileName
- If you haven't done it already extract the VirtualTextures.pak using BG3MT and index it (See to Unpacking Game Files )
- Now search for the GTexFileName ID from step 13 using BG3MT tool. This will take you to a gtp file.
- Note that the gtp filename begins with Albedo_Normal_Physical_9 (ignore the remaining string consisting of GTexFilename for now)
- Right click on the gtp file result, and open it's folder location by clicking on the folder icon on the right. This will open your File Explorer.
- Search for Albedo_Normal_Physical_9 in your File Explorer. You should see this a file called Albedo_Normal_Physical_9.gts. Copy the path to this file from your explorer address bar.
- Open Norbyte's Lslib Tool, otherwise known as Converter Tool.
- Go to the Virtual Textures tab, and paste the direct path to the GTS file in "Tileset (GTS) path". Set the Destination to the same folder as the GTS file:
- Now in the VirtualTextures folder where you extracted the GTS file, search for the GTexFilename you found in step 13
- This time you will find three .dds files. The texture type depends on the number at the end of the file e.g. xxx_0.dds, xxx_1.dds
- It's a good idea to rename them to match the base items that the texture is for. In this case it's for HUM_F_ARM_Robe_A_Body. So lets rename the textures as follows:
- HUM_F_ARM_Robe_A_Body_BM.DDS (base color map)
- HUM_F_ARM_Robe_A_Body_NM.DDS (normal map)
- HUM_F_ARM_Robe_A_Body_PM.DDS (physical map)
- Go to this website: https://bg3.wiki/wiki/Modding:Armor/Clo ... _(Configs)
Follow the instructions on how to change Shader configs and create your basic texture maps.










