private static bool LinkAnimation(ref Model3D sourceModel3D, ref Model3D destinationModel3D) { if (sourceModel3D == null || destinationModel3D == null) return false; destinationModel3D.Animation = sourceModel3D.Animation; destinationModel3D.Scene.Animations.Clear(); for (int i = 0; i < sourceModel3D.Scene.AnimationCount; i++) { if (destinationModel3D.Scene.RootNode.ChildCount > 0) { Node node = destinationModel3D.Scene.RootNode.Children.Where(x => x.Name == "0").FirstOrDefault(); destinationModel3D.Scene.RootNode = node; } destinationModel3D.Scene.Animations.Add(CreateAssimpAnimation(destinationModel3D.Scene.RootNode, sourceModel3D.Scene.Animations[i])); destinationModel3D.Animation.AssimpAnimation = destinationModel3D.Scene.Animations[0]; } destinationModel3D.HasAnimations = true; destinationModel3D.IsMerged = true; return true; //NodeArchitectureFactory.Run(model3D.Scene); //bool acceptance = MergeAcceptance.Run(model3D.Scene, animation.Scene); //if (acceptance) // Model3DMerger.Run(model3D.Scene, animation.Scene); }
public static bool Run(ref Model3D sourceModel3D, ref Model3D destinationModel3D) { //sourceModel3D = Session.CurrentSession.CurrentProject.GetModel3DByName("fall"); //destinationModel3D = Session.CurrentSession.HasCurrentModel3D() ? Session.CurrentSession.CurrentProject.CurrentModel3D : null; return LinkAnimation(ref sourceModel3D, ref destinationModel3D); }
public static bool Run(Model3D sourceModel3D, Model3D destinationModel3D) { //sourceModel3D = Session.CurrentSession.CurrentProject.GetModel3DByName("fall"); //destinationModel3D = Session.CurrentSession.HasCurrentModel3D() ? Session.CurrentSession.CurrentProject.CurrentModel3D : null; return GetNodeArchitecture(sourceModel3D, destinationModel3D); }
private static bool GetNodeArchitecture(Model3D sourceModel3D, Model3D destinationModel3D) { if (sourceModel3D == null || destinationModel3D == null) return false; int sourceNodeCount = 0; int destinationNodeCount = 0; if (!CheckRequirements(sourceModel3D.Scene, destinationModel3D.Scene, ref sourceNodeCount, ref destinationNodeCount)) return false; int nodeCount = MaxNode(sourceNodeCount, destinationNodeCount); int otherNodeCount = MinNode(sourceNodeCount, destinationNodeCount); Node node = sourceNodeCount >= destinationNodeCount ? sourceModel3D.Scene.RootNode: destinationModel3D.Scene.RootNode; Node otherNode = sourceNodeCount >= destinationNodeCount ? destinationModel3D.Scene.RootNode : sourceModel3D.Scene.RootNode; double deltaPercentage = 0; double deltaDepth = 0; double depthWeightThreshold = 0; CompareNodes(node, otherNode, depthWeightThreshold, ref deltaDepth, ref deltaPercentage); return true; }
private void CreateCapture(object parameter) { Window captureWindow = parameter as Window; Model3D model3d = new Mckineap.Models.Engine3D.Model3D(CaptureName, kineapScene); if (model3d != null) Session.CurrentSession.CurrentProject.LoadCapturedModel3D(CaptureName, kineapScene); McWindow.CloseWindow(captureWindow); }