//TODO: lots! These presets need work. /// <summary> /// Reset and Configure SoftBody settings for some general preset values. Can use as a starting point before optimization. /// </summary> /// <param name="preset"></param> public void ResetToSoftBodyPresets(SBSettingsPresets preset) { sBpresetSelect = preset; //save last applied preset totalMass = 10f; scale = Vector3.one; fromFaces = true; bframe = true; bvolume = false; generateClusters = false; bendingConstraintDistance = 2; randomizeConstraints = true; config = new SBConfig(); sBMaterial = new SBMaterial(); switch (preset) { case SBSettingsPresets.Default: //reset itself break; case SBSettingsPresets.Cloth: fromFaces = false; bvolume = false; bframe = false; sBMaterial.LinearStiffness = 0.5f; break; case SBSettingsPresets.Rope: config.PositionIterations = 20; sBMaterial.LinearStiffness = 0.5f; bendingConstraintDistance = 0; randomizeConstraints = false; fromFaces = false; bframe = false; bvolume = false; break; case SBSettingsPresets.ConvexHull: break; case SBSettingsPresets.Pressurized: sBMaterial.LinearStiffness = 0.1f; config.DynamicFriction = 1; config.Damping = 0.001f; // fun factor... config.Pressure = 2500; fromFaces = true; break; case SBSettingsPresets.Aerodynamic: config.Lift = 0.004f; config.Drag = 0.0003f; config.aeroModel = AeroModel.VertexTwoSided; break; case SBSettingsPresets.Volume: sBMaterial.LinearStiffness = 0.45f; config.VolumeConversation = 20; totalMass = 50f; fromFaces = true; bvolume = true; bframe = false; break; case SBSettingsPresets.ShapeMatching: sBMaterial.LinearStiffness = 0.5f; config.DynamicFriction = 0.5f; config.PoseMatching = 0.05f; config.PositionIterations = 10; randomizeConstraints = true; totalMass = 100f; fromFaces = true; bvolume = false; bframe = true; break; case SBSettingsPresets.ropeStick: config.AnchorHardness = 0.7f; config.ClusterIterations = 4; config.RigidContactHardness = 0.1f; config.DynamicFriction = 0.2f; config.Drag = 0f; config.DriftIterations = 0; config.Damping = 0.005f; config.KineticContactHardness = 0.1f; config.Lift = 0; config.PoseMatching = 0; config.MaxVolume = 1.0f; config.PositionIterations = 1; config.Pressure = 0; config.SoftKineticImpulseSplit = 0.5f; config.SoftRigidImpulseSplit = 0.5f; config.SoftSoftImpulseSplit = 0.5f; config.Shr = 1f; config.SoftKineticHardness = 1f; config.SoftRigidHardness = 0.1f; config.SoftSoftHardness = 0.5f; config.Timescale = 1; config.VolumeConversation = 0f; config.VelocityCorrectionFactor = 1f; config.VelocityIterations = 0; sBMaterial.LinearStiffness = 1.0f; sBMaterial.AngularStiffness = 1.0f; sBMaterial.VolumeStiffness = 1.0f; bframe = false; fromFaces = false; bvolume = false; generateClusters = false; totalMass = 0.01f; break; default: break; } }
//TODO: lots! These presets need work. /// <summary> /// Reset and Configure SoftBody settings for some general preset values. Can use as a starting point before optimization. /// </summary> /// <param name="preset"></param> public void ResetToSoftBodyPresets(SBSettingsPresets preset) { sBpresetSelect = preset; //save last applied preset totalMass = 10f; scale = Vector3.one; fromFaces = true; bframe = true; bvolume = false; generateClusters = false; bendingConstraintDistance = 2; randomizeConstraints = true; config = new SBConfig(); sBMaterial = new SBMaterial(); switch (preset) { case SBSettingsPresets.Default: //reset itself break; case SBSettingsPresets.Cloth: fromFaces = false; bvolume = false; bframe = false; sBMaterial.LST = 0.5f; break; case SBSettingsPresets.Rope: config.PIterations = 20; sBMaterial.LST = 0.5f; bendingConstraintDistance = 0; randomizeConstraints = false; fromFaces = false; bframe = false; bvolume = false; break; case SBSettingsPresets.ConvexHull: break; case SBSettingsPresets.Pressurized: sBMaterial.LST = 0.1f; config.DF = 1; config.DP = 0.001f; // fun factor... config.PR = 2500; fromFaces = true; break; case SBSettingsPresets.Aerodynamic: config.LF = 0.004f; config.DG = 0.0003f; config.aeroModel = AeroModel.VTwoSided; break; case SBSettingsPresets.Volume: sBMaterial.LST = 0.45f; config.VC = 20; totalMass = 50f; fromFaces = true; bvolume = true; bframe = false; break; case SBSettingsPresets.ShapeMatching: sBMaterial.LST = 0.5f; config.DF = 0.5f; config.MT = 0.05f; config.PIterations = 10; randomizeConstraints = true; totalMass = 100f; fromFaces = true; bvolume = false; bframe = true; break; case SBSettingsPresets.ropeStick: config.Ahr = 0.7f; config.CIterations = 4; config.Chr = 0.1f; config.DF = 0.2f; config.DG = 0f; config.DIterations = 0; config.DP = 0.005f; config.Khr = 0.1f; config.LF = 0; config.MT = 0; config.MaxVolume = 1.0f; config.PIterations = 1; config.PR = 0; config.SKSplitCL = 0.5f; config.SRSplitCL = 0.5f; config.SSSplitCL = 0.5f; config.Shr = 1f; config.SkhrCL = 1f; config.SrhrCL = 0.1f; config.SshrCL = 0.5f; config.Timescale = 1; config.VC = 0f; config.Vcf = 1f; config.Viterations = 0; sBMaterial.LST = 1.0f; sBMaterial.AST = 1.0f; sBMaterial.VST = 1.0f; bframe = false; fromFaces = false; bvolume = false; generateClusters = false; totalMass = 0.01f; break; default: break; } }