Example #1
0
    public void CreateGameObject(VTKNode node)
    {
        string gameObjectName = VTK.GetGameObjectName(node);

        Debug.Log("Create gameobject " + gameObjectName);

        if (node.filter.outputType == VTK.DataType.PolyData)
        {
            //Create gameobject
            VtkToUnity vtu = new VtkToUnity(node.filter.vtkFilter.GetOutputPort(),
                                            VTK.GetGameObjectName(node));
            vtu.go.transform.parent = gameObject.transform;
            vtu.ColorBy(Color.magenta);
            vtu.Update();

            gameObjects.Add(vtu.go.name, vtu);

            if (node.filter.outputType == VTK.DataType.PolyData)
            {
                //Add mesh for controller support
                GameObject   go = FindGameObject(gameObjectName);
                MeshCollider mc = go.AddComponent <MeshCollider>();
                mc.isTrigger = true;
                ControllerGameObject cg = go.AddComponent <ControllerGameObject>();
                cg.node = node;
                cg.Initialize();
            }
        }
    }
Example #2
0
    public void UpdateFilter()
    {
        if (isRoot)
        {
            return;
        }

        //Update this filter
        filter.UpdateInput();

        //UpdateChildren
        if (hasChildren)
        {
            foreach (VTKNode child in children)
            {
                child.UpdateFilter();
            }
        }

        //Update gameobject
        VtkToUnity vtu;
        VTKRoot    root           = filter.gameObject.GetComponent <VTKRoot>();
        string     gameObjectName = VTK.GetGameObjectName(this);

        if (root.gameObjects.TryGetValue(gameObjectName, out vtu))
        {
            /*
             * vtu.triangleFilter.SetInputConnection(filter.vtkFilter.GetOutputPort());
             * vtu.Update();
             */
            UpdateProperties();
        }
    }
Example #3
0
    /*
     * Creates node new node
     * Creates or update gameobject
     * */
    public void AddNode(string filterName)
    {
        VTKNode node = activeNode.AddChild(new VTKNode((VTKFilter)gameObject.AddComponent(filterName),
                                                       activeNode, gameObject.AddComponent <VTKProperties>()));

        if (node == null)
        {
            return;
        }

        Debug.Log("Add node " + node.name);

        node.filter.node = node;
        node.filter.SetPlaymodeParameters();
        node.properties.node = node;
        node.properties.SetPlaymodeParameters();
        node.properties.Read();
        node.UpdateFilter();

        SetActiveNode(node);

        //Create or update gameobject for new node
        if (!node.parent.isRoot)
        {
            //If parent has no children, update parent
            if (node.parent.children.Count == 1)
            {
                //Destroy old gameobject
                gameObjects.Remove(VTK.GetGameObjectName(node.parent));
                GameObject.DestroyImmediate(GameObject.Find(VTK.GetGameObjectName(node.parent)));
            }
        }

        CreateGameObject(node);
    }
Example #4
0
    /*
     * Creates tree entries for a given node and its children
     * */
    private void CreateSubTree(VTKNode n, int space)
    {
        //Change color of the node if it is the selected one
        if (script.activeNode == n)
        {
            treeNodeStyle.normal.textColor = Color.green;
        }

        EditorGUILayout.BeginHorizontal();
        GUILayout.Space(space);
        if (GUILayout.Button(n.name, treeNodeStyle))
        {
            script.SetActiveNode(n);
        }

        GameObject go = script.FindGameObject(VTK.GetGameObjectName(n));

        if (go != null)
        {
            ControllerGameObject cgo = go.GetComponent <ControllerGameObject>();
            if (cgo != null)
            {
                cgo.showGameObject = EditorGUILayout.Toggle(cgo.showGameObject);

                if (cgo.showGameObject)
                {
                    go.renderer.enabled = true;
                }
                else
                {
                    go.renderer.enabled = false;
                }
            }
        }
        EditorGUILayout.EndHorizontal();

        //Reset color for other nodes
        if (script.activeNode == n)
        {
            treeNodeStyle.normal.textColor = Color.black;
        }

        //Show children
        if (n.hasChildren)
        {
            for (int i = 0; i < n.children.Count; i++)
            {
                CreateSubTree(n.children[i], space + 20);
            }
        }
    }
        private void makeVTK()
        {
            try
            {
                VTK vtk = new VTK(keyLetterBox.Text[0]);

                codedTextBox.Text   = vtk.Encrypt(textBox.Text);
                decodedTextBox.Text = vtk.Decrypt(codedTextBox.Text).ToString();
                entropyBox.Text     = Entropy.Calculate(textBox.Text).ToString();
            }
            catch (Exception e)
            {
                MessageBox.Show(e.Message);
            }
        }
Example #6
0
    public GameObject FindGameObject(string name)
    {
        if (name == VTK.GetGameObjectName(rootNode))
        {
            return(gameObject);
        }

        Transform found = gameObject.transform.Find(name);

        if (found != null)
        {
            return(found.gameObject);
        }
        else
        {
            return(null);
        }
    }
Example #7
0
    public void UpdateProperties()
    {
        Debug.Log("Update properties: " + VTK.GetGameObjectName(this));

        VtkToUnity vtkToUnity;
        VTKRoot    root = filter.gameObject.GetComponent <VTKRoot>();

        root.gameObjects.TryGetValue(VTK.GetGameObjectName(this), out vtkToUnity);

        vtkToUnity.triangleFilter.SetInputConnection(filter.vtkFilter.GetOutputPort());

        //Properties
        if (properties.selectedColorType == 0)         //solid color
        {
            vtkToUnity.ColorBy(Color.magenta);
        }
        else
        {
            if (properties.selectedColorType == 1)             //data
            {
                string data     = properties.dataArrays[properties.selectedDataArray];
                string dataName = data.Remove(data.IndexOf("[") - 1);

                if (data.EndsWith("[C]"))
                {
                    vtkToUnity.ColorBy(dataName, VtkToUnity.VtkColorType.CELL_DATA);
                }

                if (data.EndsWith("[P]"))
                {
                    vtkToUnity.ColorBy(dataName, VtkToUnity.VtkColorType.POINT_DATA);
                }
            }

            vtkToUnity.SetLut((VtkToUnity.LutPreset)properties.selectedLut);
        }

        vtkToUnity.Update();
    }
Example #8
0
    public void Initialize()
    {
        string rootName = VTK.GetFileName(filepath);

        gameObject.name = rootName;

        supportedFilters = VTK.GetSupportedFiltersByName();

        //Initialize file reader
        if (filepath.EndsWith(".vtp"))
        {
            dataType = VTK.DataType.PolyData;

            polyDataReader = vtkXMLPolyDataReader.New();
            polyDataReader.SetFileName(filepath);
            polyDataReader.Update();
        }

        if (filepath.EndsWith(".vtu"))
        {
            dataType = VTK.DataType.UnstructuredGrid;

            unstructuredGridReader = vtkXMLUnstructuredGridReader.New();
            unstructuredGridReader.SetFileName(filepath);
            unstructuredGridReader.Update();
        }

        //Initialize root node
        Debug.Log("Initialize root node");
        rootNode.name       = rootName;
        rootNode.filter     = gameObject.AddComponent <VTKFilterRootNode> ();
        rootNode.properties = gameObject.AddComponent <VTKProperties> ();

        PreloadNode(rootNode);

        activeNode = rootNode;
    }
Example #9
0
    public void PreloadNode(VTKNode node)
    {
        Debug.Log("Preload data for " + node.name);

        string objectName = VTK.GetGameObjectName(node);

        //Set filter
        if (node.isRoot)
        {
            if (dataType == VTK.DataType.PolyData)
            {
                polyDataReader = vtkXMLPolyDataReader.New();
                polyDataReader.SetFileName(filepath);
                polyDataReader.Update();

                node.filter.vtkFilter  = polyDataReader;
                node.filter.outputType = VTK.DataType.PolyData;
            }

            if (dataType == VTK.DataType.UnstructuredGrid)
            {
                unstructuredGridReader = vtkXMLUnstructuredGridReader.New();
                unstructuredGridReader.SetFileName(filepath);
                unstructuredGridReader.Update();

                node.filter.vtkFilter  = unstructuredGridReader;
                node.filter.outputType = VTK.DataType.UnstructuredGrid;
            }
        }
        else
        {
            node.filter.node = node;
            node.filter.UpdateInput();
            node.filter.SetPlaymodeParameters();
        }

        //Set properties
        node.properties.node = node;
        node.properties.SetPlaymodeParameters();
        node.properties.Read();

        //Set vtkToUnity
        VtkToUnity vtu;

        if (gameObjects.TryGetValue(objectName, out vtu))
        {
            gameObjects.Set(objectName, new VtkToUnity(node.filter.vtkFilter.GetOutputPort(),
                                                       FindGameObject(objectName)));

            node.UpdateProperties();             //Some filters need stuff from properties
        }

        //Set controller script
        ControllerGameObject cg = node.filter.gameObject.GetComponent <ControllerGameObject>();

        if (cg != null)
        {
            cg.node = node;
            cg.Initialize();
        }

        //Do it for the kids
        if (node.hasChildren)
        {
            foreach (VTKNode child in node.children)
            {
                //Set parent reference
                child.parent = node;

                PreloadNode(child);
            }
        }
    }