示例#1
0
        public SimObjectBase createProp(String propName, Vector3 translation, Quaternion rotation)
        {
            if (subScene != null)
            {
                PropDefinition propDef;
                if (prototypes.TryGetValue(propName, out propDef))
                {
                    SimObjectDefinition definition          = propDef.SimObject;
                    Vector3             originalTranslation = definition.Translation;
                    Quaternion          originalRotation    = definition.Rotation;

                    definition.Name        = UniqueKeyGenerator.generateStringKey();
                    definition.Translation = translation;
                    definition.Rotation    = rotation;
                    SimObjectBase instance = definition.register(subScene);
                    medicalController.addSimObject(instance);
                    scene.buildScene();

                    definition.Translation = originalTranslation;
                    definition.Rotation    = originalRotation;
                    return(instance);
                }
                else
                {
                    Log.Error("Could not create prop {0}. The definition cannot be found.", propName);
                }
            }
            else
            {
                Log.Error("Could not create prop {0}. The subscene is null.", propName);
            }
            return(null);
        }
示例#2
0
        private KinectIKFace createKinectFace(String boneSimObjectName, String translationSimObjectName, KinectIKBone parent, Vector3 additionalOffset, SimScene scene, SimSubScene subScene)
        {
            dragControl.BoneSimObjectName = boneSimObjectName;

            var targetSimObject = medicalController.getSimObject(dragControl.BoneSimObjectName);
            var ikBone          = targetSimObject.getElement("IKBone") as BEPUikBone;

            ikBone.Pinned = false;

            dragSimObjectDefinition.Name        = "KinectFaceControl";
            dragSimObjectDefinition.Enabled     = allowMovement;
            dragSimObjectDefinition.Translation = medicalController.getSimObject(translationSimObjectName).Translation + additionalOffset;
            SimObjectBase instance = dragSimObjectDefinition.register(subScene);

            medicalController.addSimObject(instance);
            scene.buildScene();

            ikDragSimObjects.Add(instance);

            float distanceToParent = 0;

            if (parent != null)
            {
                distanceToParent = (instance.Translation - parent.Translation).length();
            }

            return(new KinectIKFace(parent, distanceToParent, instance));
        }
示例#3
0
 public void createSimObjects()
 {
     if (dynamicMode)
     {
         scene.buildScene(SceneBuildOptions.None);
     }
     else
     {
         scene.buildStaticScene();
     }
 }
示例#4
0
        /// <summary>
        /// Create a model.
        /// </summary>
        /// <param name="meshName">The name of the mesh to load.</param>
        /// <param name="scene">The scene to load the mesh into.</param>
        public void createModel(String meshName, SimScene scene)
        {
            entityDefintion.MeshName = meshName;
            currentSimObject         = simObjectDefinition.register(scene.getDefaultSubScene());
            Stopwatch sw = new Stopwatch();

            sw.Start();
            scene.buildScene(SceneBuildOptions.None);
            sw.Stop();
            Log.Info("Scene loaded in {0} ms.", sw.ElapsedMilliseconds);
            entity = ((SceneNodeElement)currentSimObject.getElement("EntityNode")).getNodeObject("Entity") as Entity;
            readModelInfo();
            entity.setDisplaySkeleton(showSkeleton);
            selectableModel.ModelObject = currentSimObject;
            controller.ObjectMover.clearMovableObjects();
            controller.ObjectMover.addMovableObject("model", selectableModel);
        }