Modding:Creating a custom cloth collider

From bg3.wiki
Revision as of 13:34, 17 April 2024 by EmeraldTechno (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search
If making a custom body, you may need to create a custom cloth collider for it. You can look up any vanilla cloth collider to use as a base, but here is an example one:
<region id="ClothColliderBank">
		<node id="ClothColliderBank">
			<children>
				<node id="Resource">
					<attribute id="ID" type="FixedString" value="a16538a0-69f3-4537-8b3a-192e9e958026" />
					<attribute id="Name" type="LSString" value="FS_NKD_Body_ClothCollider" />
					<attribute id="_OriginalFileVersion_" type="int64" value="144537400540921856" />
					<children>
						<node id="Spheres">
							<attribute id="AttachedName" type="FixedString" value="Ankle_R" />
							<attribute id="Name" type="FixedString" value="Ankle_R" />
							<attribute id="Position" type="fvec3" value="0.02408487 0.008219436 0.0002600327" />
							<attribute id="Radius" type="float" value="0.115" />
						</node>
						<node id="Spheres">
							<attribute id="AttachedName" type="FixedString" value="Knee_R" />
							<attribute id="Name" type="FixedString" value="Knee_R" />
							<attribute id="Position" type="fvec3" value="0.1842566 0.01101419 -0.2196186" />
							<attribute id="Radius" type="float" value="0.12" />
							<children>
								<node id="Links">
									<attribute id="Link" type="FixedString" value="Hip_R_Twist_02" />
								</node>
							</children>
						</node>
						<node id="Spheres">
							<attribute id="AttachedName" type="FixedString" value="Hip_R_Twist_02" />
							<attribute id="Name" type="FixedString" value="Hip_R_Twist_02" />
							<attribute id="Position" type="fvec3" value="0.2335134 -0.009342965 0.0003812611" />
							<attribute id="Radius" type="float" value="0.12" />
							<children>
								<node id="Links">
									<attribute id="Link" type="FixedString" value="Hip_R" />
								</node>
								<node id="Links">
									<attribute id="Link" type="FixedString" value="Ankle_R" />
								</node>
							</children>
						</node>
						<node id="Spheres">
							<attribute id="AttachedName" type="FixedString" value="Hip_R_Twist_01" />
							<attribute id="Name" type="FixedString" value="Hip_R_Twist_01" />
							<attribute id="Position" type="fvec3" value="0.2496572 -0.03000538 0.009381257" />
							<attribute id="Radius" type="float" value="0.12" />
							<children>
								<node id="Links">
									<attribute id="Link" type="FixedString" value="Hip_R" />
								</node>
							</children>
						</node>
						<node id="Spheres">
							<attribute id="AttachedName" type="FixedString" value="Hip_R" />
							<attribute id="Name" type="FixedString" value="Hip_R" />
							<attribute id="Position" type="fvec3" value="0.03671718 0.02558749 -0.03661869" />
							<attribute id="Radius" type="float" value="0.175" />
							<children>
								<node id="Links">
									<attribute id="Link" type="FixedString" value="Root_M" />
								</node>
							</children>
						</node>
						<node id="Spheres">
							<attribute id="AttachedName" type="FixedString" value="Ankle_L" />
							<attribute id="Name" type="FixedString" value="Ankle_L" />
							<attribute id="Position" type="fvec3" value="-0.02430184 -0.008254398 -5.885959E-07" />
							<attribute id="Radius" type="float" value="0.115" />
						</node>
						<node id="Spheres">
							<attribute id="AttachedName" type="FixedString" value="Knee_L" />
							<attribute id="Name" type="FixedString" value="Knee_L" />
							<attribute id="Position" type="fvec3" value="-0.183996 -0.01075782 -4.082918E-06" />
							<attribute id="Radius" type="float" value="0.12" />
							<children>
								<node id="Links">
									<attribute id="Link" type="FixedString" value="Hip_L_Twist_02" />
								</node>
							</children>
						</node>
						<node id="Spheres">
							<attribute id="AttachedName" type="FixedString" value="Hip_L_Twist_02" />
							<attribute id="Name" type="FixedString" value="Hip_L_Twist_02" />
							<attribute id="Position" type="fvec3" value="-0.2332943 0.009374093 -6.183982E-07" />
							<attribute id="Radius" type="float" value="0.12" />
							<children>
								<node id="Links">
									<attribute id="Link" type="FixedString" value="Hip_L" />
								</node>
								<node id="Links">
									<attribute id="Link" type="FixedString" value="Ankle_L" />
								</node>
							</children>
						</node>
						<node id="Spheres">
							<attribute id="AttachedName" type="FixedString" value="Hip_L_Twist_01" />
							<attribute id="Name" type="FixedString" value="Hip_L_Twist_01" />
							<attribute id="Position" type="fvec3" value="-0.249878 0.0301131 -0.00954318" />
							<attribute id="Radius" type="float" value="0.125" />
							<children>
								<node id="Links">
									<attribute id="Link" type="FixedString" value="Hip_L" />
								</node>
							</children>
						</node>
						<node id="Spheres">
							<attribute id="AttachedName" type="FixedString" value="Hip_L" />
							<attribute id="Name" type="FixedString" value="Hip_L" />
							<attribute id="Position" type="fvec3" value="-0.03669894 -0.02522373 0.0368407" />
							<attribute id="Radius" type="float" value="0.175" />
							<children>
								<node id="Links">
									<attribute id="Link" type="FixedString" value="Root_M" />
								</node>
							</children>
						</node>
						<node id="Spheres">
							<attribute id="AttachedName" type="FixedString" value="Chest_M" />
							<attribute id="Name" type="FixedString" value="Chest_M" />
							<attribute id="Position" type="fvec3" value="0.1746373 0.009826064 1.951149E-05" />
							<attribute id="Radius" type="float" value="0.2" />
							<children>
								<node id="Links">
									<attribute id="Link" type="FixedString" value="Spine2_M" />
								</node>
							</children>
						</node>
						<node id="Spheres">
							<attribute id="AttachedName" type="FixedString" value="Spine2_M" />
							<attribute id="Name" type="FixedString" value="Spine2_M" />
							<attribute id="Position" type="fvec3" value="0.1052495 0.02236807 9.536742E-07" />
							<attribute id="Radius" type="float" value="0.15" />
							<children>
								<node id="Links">
									<attribute id="Link" type="FixedString" value="Spine1_M" />
								</node>
							</children>
						</node>
						<node id="Spheres">
							<attribute id="AttachedName" type="FixedString" value="Spine1_M" />
							<attribute id="Name" type="FixedString" value="Spine1_M" />
							<attribute id="Position" type="fvec3" value="0.0001251698 -0.005512714 4.768372E-07" />
							<attribute id="Radius" type="float" value="0.15" />
							<children>
								<node id="Links">
									<attribute id="Link" type="FixedString" value="Root_M" />
								</node>
							</children>
						</node>
						<node id="Spheres">
							<attribute id="AttachedName" type="FixedString" value="Root_M" />
							<attribute id="Name" type="FixedString" value="Root_M" />
							<attribute id="Position" type="fvec3" value="-0.04438829 -0.04123938 -2.205372E-06" />
							<attribute id="Radius" type="float" value="0.18" />
						</node>
					</children>
				</node>
			</children>
		</node>
	</region>
The Radius attributes control how large each "sphere" of collision is. You can make it bigger or smaller to make cloth physics behave differently when colliding with it.

Place this bank inside your body _merged.lsf.lsx file.