public IVectorDisplacementSourceOp AppendRegionSmoothOp(EnclosedPatchSO Source) { PolyCurveSOSourceOp curveOp = new PolyCurveSOSourceOp(Source); EnclosedRegionSmoothOp deformOp = new EnclosedRegionSmoothOp() { SmoothAlpha = 0.5f, MeshSource = SOMeshSource, CurveSource = curveOp }; Combiner.Append(deformOp); SO_Op.Add(Source, deformOp); OnDeformationAdded?.Invoke(Source, deformOp); return(deformOp); }
public IVectorDisplacementSourceOp AppendRegionOffset(EnclosedPatchSO Source) { Frame3f deformF = Frame3f.Identity; deformF = SceneTransforms.TransformTo(deformF, Source, leg); PolyCurveSOSourceOp curveOp = new PolyCurveSOSourceOp(Source); EnclosedRegionOffsetOp deformOp = new EnclosedRegionOffsetOp() { Normal = deformF.Y, PushPullDistance = 2.0f, MeshSource = SOMeshSource, CurveSource = curveOp }; Combiner.Append(deformOp); SO_Op.Add(Source, deformOp); OnDeformationAdded?.Invoke(Source, deformOp); return(deformOp); }
public SocketModel(SocketSO Socket, LegModel leg, TrimLoopSO trimLineIn, ModelModes eMode) : base(Socket.Mesh, false) { socket = Socket; this.leg = leg; leg.SO.OnTransformModified += leg_transform_modified; this.trimLine = trimLineIn; LegSourceOp = new ShapeModelOutputMeshSourceOp(leg); TrimlineSourceOp = new PolyCurveSOSourceOp(this.trimLine); if (eMode == ModelModes.Socket) { DeviceGenOp = new SocketGeneratorOp(); } else { DeviceGenOp = new AFOGeneratorOp(); } DeviceGenOp.MeshSource = LegSourceOp; DeviceGenOp.CurveSource = TrimlineSourceOp; DeviceGenOp.SocketVertexColor = Colorf.CornflowerBlue; DeviceGenOp.PartialSocketVertexColor = ColorMixer.Darken(Colorf.SelectionGold, 0.75f); DeviceGenOp.SocketThickness = this.SocketThickness; DeviceGenOp.InnerWallOffset = this.SocketOffset; DeviceGenOp.ConnectorCutHeight = this.ConnectorCutHeight; Compute = new ThreadedMeshComputeOp() { MeshSource = DeviceGenOp }; // initialize socket input transform leg_transform_modified(leg.SO); }