public BoneVisual3d(TransformPtrViewModel transform, SkeletonVisual3d skeleton, string name) { this.ViewModel = transform; this.Skeleton = skeleton; this.rotation = new RotateTransform3D(); this.position = new TranslateTransform3D(); Transform3DGroup transformGroup = new Transform3DGroup(); transformGroup.Children.Add(this.rotation); transformGroup.Children.Add(this.position); this.Transform = transformGroup; PaletteHelper ph = new PaletteHelper(); ITheme t = ph.GetTheme(); this.defaultMaterial = new DiffuseMaterial(new SolidColorBrush(WinColor.FromArgb(64, 0, 0, 0))); this.hoverMaterial = new EmissiveMaterial(new SolidColorBrush(t.PrimaryDark.Color)); this.selectedMaterial = new EmissiveMaterial(new SolidColorBrush(t.PrimaryMid.Color)); System.Windows.Media.Color c1 = System.Windows.Media.Color.FromArgb(200, 255, 255, 255); this.sphere = new Sphere(); this.sphere.Radius = 0.02; this.sphere.Material = this.defaultMaterial; this.Children.Add(this.sphere); this.OriginalBoneName = name; this.BoneName = name; this.Skeleton.PropertyChanged += this.OnSkeletonPropertyChanged; }
public static async Task <SkeletonVisual3d> GetVisual(ActorViewModel actor) { SkeletonVisual3d skeleton; if (actorSkeletons.ContainsKey(actor)) { skeleton = actorSkeletons[actor]; skeleton.Clear(); actorSkeletons.Remove(actor); } // TODO: Why does a new skeleton work, but clearing an old one gives us "not a child of the specified visual" when writing? ////else { skeleton = new SkeletonVisual3d(actor); actorSkeletons.Add(actor, skeleton); } skeleton.Clear(); await skeleton.GenerateBones(); return(skeleton); }
public BoneVisual3d(TransformViewModel transform, SkeletonVisual3d skeleton) { this.ViewModel = transform; this.Skeleton = skeleton; this.rotation = new RotateTransform3D(); this.position = new TranslateTransform3D(); Transform3DGroup transformGroup = new Transform3DGroup(); transformGroup.Children.Add(this.rotation); transformGroup.Children.Add(this.position); this.Transform = transformGroup; PaletteHelper ph = new PaletteHelper(); Sphere sphere = new Sphere(); sphere.Radius = 0.005; System.Windows.Media.Color c1 = System.Windows.Media.Color.FromArgb(200, 255, 255, 255); sphere.Material = new EmissiveMaterial(new SolidColorBrush(c1)); this.Children.Add(sphere); }