Modding:Creating hair merged.lsf with custom texture
Jump to navigation
Jump to search
This page shows an example of a _merged.lsf.lsx file that can be used to set up a custom texture for your custom hair. To use, replace your _merged file with this example and then use the Replace function to replace the MATERIALUUID and TEXTUREUUID with two new UUIDs, respectively. Also, ensure the file paths are changed from Em_New_Hair_Template to whatever your file path is.
<?xml version="1.0" encoding="utf-8"?>
<save>
<version major="4" minor="0" revision="8" build="2" lslib_meta="v1,bswap_guids" />
<region id="MaterialBank">
<node id="MaterialBank">
<children>
<node id="Resource">
<attribute id="DiffusionProfileUUID" type="FixedString" value="" />
<attribute id="ID" type="FixedString" value="MATERIALUUID" />
<attribute id="MaterialType" type="uint8" value="18" />
<attribute id="Name" type="LSString" value="HAIR_Test_A" />
<attribute id="SourceFile" type="LSString" value="Public/Shared/Assets/Materials/Characters/CHAR_Hair.lsf" />
<attribute id="_OriginalFileVersion_" type="int64" value="144115205255725667" />
<children>
<node id="ScalarParameters">
<attribute id="BaseValue" type="float" value="50" />
<attribute id="Enabled" type="bool" value="False" />
<attribute id="ExportAsPreset" type="bool" value="True" />
<attribute id="GroupName" type="FixedString" value="03Hair" />
<attribute id="ParameterName" type="FixedString" value="SharedNoiseTiling" />
<attribute id="Value" type="float" value="50" />
</node>
<node id="ScalarParameters">
<attribute id="BaseValue" type="float" value="0.0005" />
<attribute id="Enabled" type="bool" value="False" />
<attribute id="ExportAsPreset" type="bool" value="True" />
<attribute id="GroupName" type="FixedString" value="03Hair" />
<attribute id="ParameterName" type="FixedString" value="HairFrizz" />
<attribute id="Value" type="float" value="0.0005" />
</node>
<node id="ScalarParameters">
<attribute id="BaseValue" type="float" value="0.002" />
<attribute id="Enabled" type="bool" value="False" />
<attribute id="ExportAsPreset" type="bool" value="True" />
<attribute id="GroupName" type="FixedString" value="03Hair" />
<attribute id="ParameterName" type="FixedString" value="PixelDepthOffsetRoot" />
<attribute id="Value" type="float" value="0.002" />
</node>
<node id="ScalarParameters">
<attribute id="BaseValue" type="float" value="0.01" />
<attribute id="Enabled" type="bool" value="True" />
<attribute id="ExportAsPreset" type="bool" value="True" />
<attribute id="GroupName" type="FixedString" value="03Hair" />
<attribute id="ParameterName" type="FixedString" value="PixelDepthOffset" />
<attribute id="Value" type="float" value="0.02" />
</node>
<node id="ScalarParameters">
<attribute id="BaseValue" type="float" value="0.1" />
<attribute id="Enabled" type="bool" value="True" />
<attribute id="ExportAsPreset" type="bool" value="True" />
<attribute id="GroupName" type="FixedString" value="03Hair" />
<attribute id="ParameterName" type="FixedString" value="DepthTransitionMidPoint" />
<attribute id="Value" type="float" value="0.7" />
</node>
<node id="ScalarParameters">
<attribute id="BaseValue" type="float" value="0.001" />
<attribute id="Enabled" type="bool" value="True" />
<attribute id="ExportAsPreset" type="bool" value="True" />
<attribute id="GroupName" type="FixedString" value="03Hair" />
<attribute id="ParameterName" type="FixedString" value="DepthTransitionSoftness" />
<attribute id="Value" type="float" value="0.2" />
</node>
<node id="ScalarParameters">
<attribute id="BaseValue" type="float" value="2" />
<attribute id="Enabled" type="bool" value="False" />
<attribute id="ExportAsPreset" type="bool" value="True" />
<attribute id="GroupName" type="FixedString" value="03Hair" />
<attribute id="ParameterName" type="FixedString" value="HairSoupleness" />
<attribute id="Value" type="float" value="2" />
</node>
<node id="ScalarParameters">
<attribute id="BaseValue" type="float" value="0.05" />
<attribute id="Enabled" type="bool" value="False" />
<attribute id="ExportAsPreset" type="bool" value="True" />
<attribute id="GroupName" type="FixedString" value="03Hair" />
<attribute id="ParameterName" type="FixedString" value="MaxWindMovementAmount" />
<attribute id="Value" type="float" value="0.05" />
</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="03Hair" />
<attribute id="ParameterName" type="FixedString" value="SoftenTipsAlpha" />
<attribute id="Value" type="float" value="0" />
</node>
<node id="ScalarParameters">
<attribute id="BaseValue" type="float" value="1" />
<attribute id="Enabled" type="bool" value="False" />
<attribute id="ExportAsPreset" type="bool" value="False" />
<attribute id="GroupName" type="FixedString" value="03Hair" />
<attribute id="ParameterName" type="FixedString" value="DontTouchMe_Beard_Alpha" />
<attribute id="Value" type="float" value="1" />
</node>
<node id="ScalarParameters">
<attribute id="BaseValue" type="float" value="1" />
<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="_OpacityFade" />
<attribute id="Value" type="float" value="1" />
</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="03Hair" />
<attribute id="ParameterName" type="FixedString" value="BaseColorVar" />
<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="False" />
<attribute id="GroupName" type="FixedString" value="03Hair" />
<attribute id="ParameterName" type="FixedString" value="DontTouchMe_isBeard" />
<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="03Hair" />
<attribute id="ParameterName" type="FixedString" value="Graying_Intensity" />
<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="03Beard" />
<attribute id="ParameterName" type="FixedString" value="Beard_Graying_Intensity" />
<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="03Hair" />
<attribute id="ParameterName" type="FixedString" value="Graying_Seed" />
<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="03Hair" />
<attribute id="ParameterName" type="FixedString" value="Highlight_Falloff" />
<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="03Hair" />
<attribute id="ParameterName" type="FixedString" value="Highlight_Intensity" />
<attribute id="Value" type="float" value="0" />
</node>
<node id="ScalarParameters">
<attribute id="BaseValue" type="float" value="0.1" />
<attribute id="Enabled" type="bool" value="False" />
<attribute id="ExportAsPreset" type="bool" value="True" />
<attribute id="GroupName" type="FixedString" value="03Hair" />
<attribute id="ParameterName" type="FixedString" value="RootTransitionMidPoint" />
<attribute id="Value" type="float" value="0.1" />
</node>
<node id="ScalarParameters">
<attribute id="BaseValue" type="float" value="0.2" />
<attribute id="Enabled" type="bool" value="False" />
<attribute id="ExportAsPreset" type="bool" value="True" />
<attribute id="GroupName" type="FixedString" value="03Hair" />
<attribute id="ParameterName" type="FixedString" value="RootTransitionSoftness" />
<attribute id="Value" type="float" value="0.2" />
</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="03Hair" />
<attribute id="ParameterName" type="FixedString" value="DepthColorExponent" />
<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="03Hair" />
<attribute id="ParameterName" type="FixedString" value="DepthColorIntensity" />
<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="03Hair" />
<attribute id="ParameterName" type="FixedString" value="IDContrast" />
<attribute id="Value" type="float" value="0.5" />
</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="03Hair" />
<attribute id="ParameterName" type="FixedString" value="ColorDepthContrast" />
<attribute id="Value" type="float" value="0.5" />
</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="03Hair" />
<attribute id="ParameterName" type="FixedString" value="DreadNoiseBaseColor" />
<attribute id="Value" type="float" value="0" />
</node>
<node id="ScalarParameters">
<attribute id="BaseValue" type="float" value="0.41" />
<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="Roughness" />
<attribute id="Value" type="float" value="0.41" />
</node>
<node id="ScalarParameters">
<attribute id="BaseValue" type="float" value="0.05" />
<attribute id="Enabled" type="bool" value="False" />
<attribute id="ExportAsPreset" type="bool" value="True" />
<attribute id="GroupName" type="FixedString" value="03Hair" />
<attribute id="ParameterName" type="FixedString" value="RoughnessContrast" />
<attribute id="Value" type="float" value="0.05" />
</node>
<node id="ScalarParameters">
<attribute id="BaseValue" type="float" value="0.35" />
<attribute id="Enabled" type="bool" value="False" />
<attribute id="ExportAsPreset" type="bool" value="True" />
<attribute id="GroupName" type="FixedString" value="03Hair" />
<attribute id="ParameterName" type="FixedString" value="StrandDirectionVariation" />
<attribute id="Value" type="float" value="0.35" />
</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="03Hair" />
<attribute id="ParameterName" type="FixedString" value="DreadNoiseNormal" />
<attribute id="Value" type="float" value="0" />
</node>
<node id="ScalarParameters">
<attribute id="BaseValue" type="float" value="0.3" />
<attribute id="Enabled" type="bool" value="False" />
<attribute id="ExportAsPreset" type="bool" value="True" />
<attribute id="GroupName" type="FixedString" value="03Hair" />
<attribute id="ParameterName" type="FixedString" value="Scatter" />
<attribute id="Value" type="float" value="0.3" />
</node>
<node id="ScalarParameters">
<attribute id="BaseValue" type="float" value="0.4" />
<attribute id="Enabled" type="bool" value="False" />
<attribute id="ExportAsPreset" type="bool" value="True" />
<attribute id="GroupName" type="FixedString" value="03Hair" />
<attribute id="ParameterName" type="FixedString" value="HairBacklit" />
<attribute id="Value" type="float" value="0.4" />
</node>
<node id="ScalarParameters">
<attribute id="BaseValue" type="float" value="1" />
<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="CB_MaterialConstants._OpacityFade" />
<attribute id="Value" type="float" value="1" />
</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="d339f00a-fb40-4581-ecc9-886b05583036" />
<attribute id="ParameterName" type="FixedString" value="" />
</node>
<node id="Texture2DParameters">
<attribute id="Enabled" type="bool" value="True" />
<attribute id="ExportAsPreset" type="bool" value="True" />
<attribute id="GroupName" type="FixedString" value="01Texture Maps" />
<attribute id="ID" type="FixedString" value="TEXTUREUUID" />
<attribute id="ParameterName" type="FixedString" value="ID_Depth_Root_Alpha_MSKA" />
</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="1b153fa7-3bf1-f221-efd2-4e0a4dc0f5b8" />
<attribute id="ParameterName" type="FixedString" value="" />
</node>
<node id="Texture2DParameters">
<attribute id="Enabled" type="bool" value="False" />
<attribute id="ExportAsPreset" type="bool" value="True" />
<attribute id="GroupName" type="FixedString" value="01Texture Maps" />
<attribute id="ID" type="FixedString" value="c13a1681-ae9b-dc45-2454-fdd8325159d1" />
<attribute id="ParameterName" type="FixedString" value="BaseColorVarMSK" />
</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="178daede-8ecc-243f-951e-b26354d4af23" />
<attribute id="IgnoreTexelDensity" type="bool" value="True" />
<attribute id="ParameterName" type="FixedString" value="" />
</node>
<node id="Vector3Parameters">
<attribute id="BaseValue" type="fvec3" value="0.150985 0.09372021 0.05276263" />
<attribute id="Enabled" type="bool" value="False" />
<attribute id="ExportAsPreset" type="bool" value="True" />
<attribute id="GroupName" type="FixedString" value="03Hair" />
<attribute id="IsColor" type="bool" value="True" />
<attribute id="ParameterName" type="FixedString" value="Hair_Color" />
<attribute id="Value" type="fvec3" value="0.150985 0.09372021 0.05276263" />
</node>
<node id="Vector3Parameters">
<attribute id="BaseValue" type="fvec3" value="0.1362835 0.08225837 0.04361792" />
<attribute id="Enabled" type="bool" value="False" />
<attribute id="ExportAsPreset" type="bool" value="True" />
<attribute id="GroupName" type="FixedString" value="03Beard" />
<attribute id="IsColor" type="bool" value="True" />
<attribute id="ParameterName" type="FixedString" value="Beard_Color" />
<attribute id="Value" type="fvec3" value="0.1362835 0.08225837 0.04361792" />
</node>
<node id="Vector3Parameters">
<attribute id="BaseValue" type="fvec3" value="0.7316965 0.7316965 0.7316965" />
<attribute id="Enabled" type="bool" value="False" />
<attribute id="ExportAsPreset" type="bool" value="True" />
<attribute id="GroupName" type="FixedString" value="03Hair" />
<attribute id="IsColor" type="bool" value="True" />
<attribute id="ParameterName" type="FixedString" value="Hair_Graying_Color" />
<attribute id="Value" type="fvec3" value="0.7316965 0.7316965 0.7316965" />
</node>
<node id="Vector3Parameters">
<attribute id="BaseValue" type="fvec3" value="0.732 0.732 0.732" />
<attribute id="Enabled" type="bool" value="False" />
<attribute id="ExportAsPreset" type="bool" value="True" />
<attribute id="GroupName" type="FixedString" value="03Beard" />
<attribute id="IsColor" type="bool" value="True" />
<attribute id="ParameterName" type="FixedString" value="Beard_Graying_Color" />
<attribute id="Value" type="fvec3" value="0.732 0.732 0.732" />
</node>
<node id="Vector3Parameters">
<attribute id="BaseValue" type="fvec3" value="0.3531314 0.1078292 0.1888481" />
<attribute id="Enabled" type="bool" value="False" />
<attribute id="ExportAsPreset" type="bool" value="True" />
<attribute id="GroupName" type="FixedString" value="03Hair" />
<attribute id="IsColor" type="bool" value="True" />
<attribute id="ParameterName" type="FixedString" value="Highlight_Color" />
<attribute id="Value" type="fvec3" value="0.3531314 0.1078292 0.1888481" />
</node>
<node id="Vector3Parameters">
<attribute id="BaseValue" type="fvec3" value="0.3531314 0.1078292 0.1888481" />
<attribute id="Enabled" type="bool" value="False" />
<attribute id="ExportAsPreset" type="bool" value="True" />
<attribute id="GroupName" type="FixedString" value="03Beard" />
<attribute id="IsColor" type="bool" value="True" />
<attribute id="ParameterName" type="FixedString" value="Beard_Highlight_Color" />
<attribute id="Value" type="fvec3" value="0.3531314 0.1078292 0.1888481" />
</node>
<node id="Vector3Parameters">
<attribute id="BaseValue" type="fvec3" value="0.3 0.3 0.3" />
<attribute id="Enabled" type="bool" value="False" />
<attribute id="ExportAsPreset" type="bool" value="True" />
<attribute id="GroupName" type="FixedString" value="03Hair" />
<attribute id="IsColor" type="bool" value="False" />
<attribute id="ParameterName" type="FixedString" value="HueShiftColorWeight" />
<attribute id="Value" type="fvec3" value="0.3 0.3 0.3" />
</node>
</children>
</node>
</children>
</node>
</region>
<region id="TextureBank">
<node id="TextureBank">
<children>
<node id="Resource">
<attribute id="Depth" type="int32" value="1" />
<attribute id="Height" type="int32" value="2048" />
<attribute id="ID" type="FixedString" value="TEXTUREUUID" />
<attribute id="Localized" type="bool" value="False" />
<attribute id="Name" type="LSString" value="Em_New_Hair_Template_MSKA" />
<!--This needs to be the name of your custom texture.-->
<attribute id="SRGB" type="bool" value="False" />
<attribute id="SourceFile" type="LSString" value="Generated/Public/Em_New_Hair_Template/[PAK]_Em_New_Hair_Template/Em_New_Hair_Template_MSKA.DDS" />
<!--This needs to be the file path to your custom texture in .DDS format.-->
<attribute id="Streaming" type="bool" value="True" />
<attribute id="Template" type="FixedString" value="Em_New_Hair_Template_MSKA" />
<!--This needs to be the name of your custom texture.-->
<attribute id="Type" type="int32" value="1" />
<attribute id="Width" type="int32" value="2048" />
<attribute id="_OriginalFileVersion_" type="int64" value="144115205255725060" />
</node>
</children>
</node>
</region>
<region id="VisualBank">
<node id="VisualBank">
<children>
<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.1644483 1.950027 0.1588906" />
<attribute id="BoundsMin" type="fvec3" value="-0.1682484 1.579714 -0.1309586" />
<attribute id="Center" type="fvec3" value="-0.00190004 1.764871 0.01396601" />
<attribute id="ClothColliderResourceID" type="FixedString" value="" />
<attribute id="HairPresetResourceId" type="FixedString" value="dd1b33fb-3750-7243-685c-e0faaa928fd8" />
<!-- Either use from a hair you like (how much frizz it has etc) or make your own.-->
<attribute id="HairType" type="uint8" value="0" />
<attribute id="ID" type="FixedString" value="HAIRVISUALRESOURCEUUID" />
<!-- ^ Make a new UUID and make sure it matches VisualResourceID in CharacterCreationAppearanceVisuals. -->
<attribute id="Initialized" type="bool" value="True" />
<attribute id="Localized" type="bool" value="False" />
<attribute id="MaterialType" type="uint8" value="0" />
<attribute id="Name" type="LSString" value="Em_New_Hair_Template.GR2" />
<!-- ^ Name of your GR2. -->
<attribute id="NeedsSkeletonRemap" type="bool" value="True" />
<!-- ^ Change to false if not auto-snap. -->
<attribute id="Radius" type="float" value="0.2880241" />
<attribute id="ScalpMaterialId" type="FixedString" value="2db2a0fe-43c9-ec5c-a7f7-71a3727ca474" />
<!-- Use from a scalp you like. -->
<attribute id="SkeletonResource" type="FixedString" value="" />
<!-- If the hair you're referencing uses physics, copy the SkeletonResource ID here. -->
<attribute id="SkeletonSlot" type="FixedString" value="" />
<attribute id="Slot" type="FixedString" value="Hair" />
<attribute id="SoftbodyResourceID" type="FixedString" value="" />
<attribute id="SourceFile" type="LSString" value="Generated/Public/Em_New_Hair_Template/[PAK]_Em_New_Hair_Template/Em_New_Hair_Template.GR2" />
<!-- Make sure this matches your folder structure. Should have .GR2 at the end. -->
<attribute id="SupportsVertexColorMask" type="bool" value="False" />
<attribute id="Template" type="FixedString" value="Generated/Public/Em_New_Hair_Template/[PAK]_Em_New_Hair_Template/Em_New_Hair_Template.Dummy_Root.0" />
<!-- Make sure this matches your folder structure. Should have .Dummy_Root.0 at the end. -->
<attribute id="_OriginalFileVersion_" type="int64" value="144115205255725060" />
<children>
<node id="Base" />
<node id="Objects">
<attribute id="LOD" type="uint8" value="0" />
<attribute id="MaterialID" type="FixedString" value="MATERIALUUID" />
<!-- Use from a hair material you like. -->
<attribute id="ObjectID" type="FixedString" value="Em_New_Hair_Template.Em_New_Hair_Template_Mesh.0" />
<!-- Make sure this matches your GR2 name. -->
<attribute id="Physics" type="FixedString" value="" />
<attribute id="Slot" type="FixedString" value="" />
</node>
</children>
</node>
</children>
</node>
</region>
</save>