protected override void DerivedDraw(MotionEditor editor) { CuboidMap sensor = GetCuboidMap(editor.GetCurrentFrame(), editor.Mirror); sensor.Draw(Color); if (DrawReferences) { sensor.DrawReferences(); } if (DrawDistribution) { sensor.DrawDistribution(Color, Rect); } }
public CuboidMap GetCuboidMap(Frame frame, bool mirrored) { CuboidMap sensor = new CuboidMap(Resolution); RootModule module = Data.GetModule <RootModule>(); if (module != null) { Vector3 position = module.GetRootPosition(frame.Timestamp, mirrored); Quaternion rotation = module.GetRootRotation(frame.Timestamp, mirrored); sensor.Sense(Matrix4x4.TRS(position + new Vector3(0f, 0.5f * Size.y, 0f), rotation, Vector3.one), Mask, Size); } else { sensor.Sense(frame.GetBoneTransformation(0, mirrored), Mask, Size); } return(sensor); }
public InputSIGGRAPHAsia(MotionEditor editor, float timestamp) { editor.LoadFrame(timestamp); Frame = editor.GetCurrentFrame(); Root = editor.GetActor().GetRoot().GetWorldMatrix(true); Posture = editor.GetActor().GetBoneTransformations(); Velocities = editor.GetActor().GetBoneVelocities(); TimeSeries = ((TimeSeriesModule)editor.GetData().GetModule(Module.ID.TimeSeries)).GetTimeSeries(Frame, editor.Mirror, 6, 6, 1f, 1f, 1, 1f / editor.TargetFramerate); RootSeries = (TimeSeries.Root)TimeSeries.GetSeries("Root"); StyleSeries = (TimeSeries.Style)TimeSeries.GetSeries("Style"); GoalSeries = (TimeSeries.Goal)TimeSeries.GetSeries("Goal"); ContactSeries = (TimeSeries.Contact)TimeSeries.GetSeries("Contact"); PhaseSeries = (TimeSeries.Phase)TimeSeries.GetSeries("Phase"); Environment = ((CylinderMapModule)editor.GetData().GetModule(Module.ID.CylinderMap)).GetCylinderMap(Frame, editor.Mirror); Interaction = ((GoalModule)editor.GetData().GetModule(Module.ID.Goal)).Target.GetInteractionGeometry(Frame, editor.Mirror, 1f / editor.TargetFramerate); }
protected override void DerivedDraw(MotionEditor editor) { if (Target.DrawGeometry || Target.DrawReferences || Target.DrawDistribution) { //DistanceMap sensor = Target.GetInteractionGeometry(editor.GetCurrentFrame(), editor.Mirror, 1f/editor.TargetFramerate); CuboidMap sensor = Target.GetInteractionGeometry(editor.GetCurrentFrame(), editor.Mirror, 1f / editor.TargetFramerate); /* * Interaction interaction = Target.FindInteraction(editor.GetCurrentFrame()); * CuboidMap sensor; * if(interaction == null) { * RootModule module = Data.GetModule(ID.Root) == null ? null : (RootModule)Data.GetModule(ID.Root); * sensor = new CuboidMap(new Vector3Int(Target.PropResolution, Target.PropResolution, Target.PropResolution)); * sensor.Sense(module == null ? Matrix4x4.identity : module.GetRootTransformation(editor.GetCurrentFrame(), editor.Mirror), interaction.gameObject.layer, Vector3.zero); * } else { * sensor = new CuboidMap(new Vector3Int(Target.PropResolution, Target.PropResolution, Target.PropResolution)); * sensor.Sense(interaction.GetCenter(), LayerMask.GetMask("Interaction"), interaction.GetExtents()); * Transformation transformation = interaction.GetComponent<Transformation>(); * if(transformation != null) { * sensor.Retransform(interaction.GetCenter(transformation.GetTransformation(Target.GetTargetFrame(editor.GetCurrentFrame(), 1f/editor.TargetFramerate), editor.Mirror))); * } * } */ if (Target.DrawGeometry) { sensor.Draw(UltiDraw.Cyan.Transparent(0.75f)); } if (Target.DrawReferences) { sensor.DrawReferences(); } if (Target.DrawDistribution) { sensor.DrawDistribution(UltiDraw.Black, new UltiDraw.GUIRect(0.5f, 0.1f, 0.9f, 0.1f)); } } }
public CuboidMap GetInteractionGeometry(Frame frame, bool mirrored, float delta) { Interaction interaction = FindInteraction(frame); if (interaction == null) { RootModule module = Module.Data.GetModule(ID.Root) == null ? null : (RootModule)Module.Data.GetModule(ID.Root); CuboidMap sensor = new CuboidMap(new Vector3Int(PropResolution, PropResolution, PropResolution)); sensor.Sense(module == null ? Matrix4x4.identity : module.GetRootTransformation(frame, mirrored), LayerMask.GetMask("Interaction"), Vector3.zero); return(sensor); } else { CuboidMap sensor = new CuboidMap(new Vector3Int(PropResolution, PropResolution, PropResolution)); sensor.Sense(interaction.GetCenter(), LayerMask.GetMask("Interaction"), interaction.GetExtents()); Transformation transformation = interaction.GetComponent <Transformation>(); if (transformation != null) { sensor.Retransform(interaction.GetCenter(transformation.GetTransformation(GetTargetFrame(frame, delta), mirrored))); } return(sensor); } }
protected override void Setup() { Controller = new Controller(); Controller.Signal idle = Controller.AddSignal("Idle"); idle.Default = true; idle.Velocity = 0f; idle.AddKey(KeyCode.W, false); idle.AddKey(KeyCode.A, false); idle.AddKey(KeyCode.S, false); idle.AddKey(KeyCode.D, false); idle.AddKey(KeyCode.Q, false); idle.AddKey(KeyCode.E, false); idle.AddKey(KeyCode.V, true); idle.UserControl = 0.25f; idle.NetworkControl = 0.1f; Controller.Signal walk = Controller.AddSignal("Walk"); walk.AddKey(KeyCode.W, true); walk.AddKey(KeyCode.A, true); walk.AddKey(KeyCode.S, true); walk.AddKey(KeyCode.D, true); walk.AddKey(KeyCode.Q, true); walk.AddKey(KeyCode.E, true); walk.AddKey(KeyCode.LeftShift, false); walk.AddKey(KeyCode.C, false); walk.Velocity = 1f; walk.UserControl = 0.25f; walk.NetworkControl = 0.25f; Controller.Signal run = Controller.AddSignal("Run"); run.AddKey(KeyCode.LeftShift, true); run.Velocity = 3f; run.UserControl = 0.25f; run.NetworkControl = 0.25f; Controller.Signal carry = Controller.AddSignal("Carry"); carry.AddKey(KeyCode.V, true); carry.Velocity = 0f; carry.UserControl = 0.1f; carry.NetworkControl = 0f; Controller.Signal open = Controller.AddSignal("Open"); open.AddKey(KeyCode.F, true); open.Velocity = 0f; open.UserControl = 0.1f; open.NetworkControl = 0f; Controller.Signal sit = Controller.AddSignal("Sit"); sit.AddKey(KeyCode.C, true); sit.Velocity = 0f; sit.UserControl = 0.25f; sit.NetworkControl = 0f; Environment = new CylinderMap(4f, 9, 9, true); Geometry = new CuboidMap(new Vector3Int(8, 8, 8)); TimeSeries = new TimeSeries(6, 6, 1f, 1f, 5); RootSeries = new TimeSeries.Root(TimeSeries); StyleSeries = new TimeSeries.Style(TimeSeries, "Idle", "Walk", "Run", "Carry", "Open", "Sit", "Climb"); GoalSeries = new TimeSeries.Goal(TimeSeries, Controller.GetSignalNames()); ContactSeries = new TimeSeries.Contact(TimeSeries, "Hips", "RightWrist", "LeftWrist", "RightAnkle", "LeftAnkle"); PhaseSeries = new TimeSeries.Phase(TimeSeries); for (int i = 0; i < TimeSeries.Samples.Length; i++) { RootSeries.Transformations[i] = transform.GetWorldMatrix(true); if (StyleSeries.Styles.Length > 0) { StyleSeries.Values[i][0] = 1f; } if (GoalSeries.Actions.Length > 0) { GoalSeries.Values[i][0] = 1f; } GoalSeries.Transformations[i] = transform.GetWorldMatrix(true); PhaseSeries.Values[i] = Mathf.Repeat((float)i / GetFramerate(), 1f); Geometry.Pivot = transform.GetWorldMatrix(true); Geometry.References[i] = transform.position; } PosePrediction = new Vector3[Actor.Bones.Length]; RootPrediction = new Matrix4x4[7]; GoalPrediction = new Matrix4x4[7]; RightFootIK = UltimateIK.BuildModel(Actor.FindTransform("RightHip"), Actor.GetBoneTransforms(ContactSeries.Bones[3])); LeftFootIK = UltimateIK.BuildModel(Actor.FindTransform("LeftHip"), Actor.GetBoneTransforms(ContactSeries.Bones[4])); }