Inheritance: Mckineap.Models.Context.FileObject
Example #1
0
        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);
        }
Example #2
0
 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);
        }