// Use this for initialization
    void Start()
    {
        renal   = GameObject.Find("RenalSystemColor");
        backups = save_mesh(renal);
        //renal.GetComponent<Renderer>().enabled = false;

        ppanel = GameObject.Find("PracticePanel");
        ppanel.SetActive(false);
        fimgpanel = GameObject.Find("FemaleImagePanel");
        mimgpanel = GameObject.Find("MaleImagePanel");
    }
Example #2
0
        /// <summary>
        /// Initializes a new instance of the <see cref="MeshModelPart"/> class.
        /// </summary>
        /// <param name="metaData">The meta data.</param>
        /// <param name="meshes">The meshes.</param>
        /// <param name="edges">The edges.</param>
        /// <param name="meshValueLists">A list of data values for this model (deviations, minima, maxima, mean values, etc.).</param>
        /// <param name="thumbnail">The thumbnail.</param>
        public MeshModelPart(MeshModelMetadata metaData, IEnumerable <Mesh> meshes, IEnumerable <Edge> edges = null, IEnumerable <MeshValueList> meshValueLists = null, byte[] thumbnail = null)
        {
            ConstructGeometry(meshes, edges);
            Metadata = metaData;

            UpdateTriangulationHash();
            MeshValues = (meshValueLists ?? new MeshValueList[0]).ToArray();

            CheckMeshValueIntegrity();

            Metadata.MeshValueEntries = MeshValues.Select(m => m.Entry).ToArray();

            Thumbnail = thumbnail;
        }
Example #3
0
        /// <summary>
        /// Creates the specified <paramref name="subFolder"/> in the specified <paramref name="zipFile"/> and writes the serialized data into it.
        /// If the <paramref name="subFolder"/> is null or empty, the data will be serialized into the root directory of the zip archive .
        /// </summary>
        public void Serialize(ZipArchive zipFile, string subFolder = "")
        {
            Metadata.MeshValueEntries = MeshValues.Select(v => v.Entry).ToArray();

            using (var entryStream = zipFile.CreateNormalizedEntry(Path.Combine(subFolder, "Metadata.xml"), CompressionLevel.Optimal).Open())
            {
                Metadata.WriteTo(entryStream, true);
            }

            // Vorschaubild
            if (HasThumbnail)
            {
                using (var entryStream = zipFile.CreateNormalizedEntry(Path.Combine(subFolder, "PreviewImage.png"), CompressionLevel.NoCompression).Open())
                {
                    entryStream.Write(_Thumbnail, 0, _Thumbnail.Length);
                }
            }

            // Triangulierungsdaten schreiben
            using (var entryStream = zipFile.CreateNormalizedEntry(Path.Combine(subFolder, "Meshes.dat"), CompressionLevel.Fastest).Open())
                using (var binaryWriter = new BinaryWriter(entryStream, Encoding.UTF8, true))
                {
                    binaryWriter.Write(Meshes.Length);
                    foreach (var mesh in Meshes)
                    {
                        mesh.Write(binaryWriter);
                    }
                }

            // Edgedaten schreiben
            using (var entryStream = zipFile.CreateNormalizedEntry(Path.Combine(subFolder, "Edges.dat"), CompressionLevel.Fastest).Open())
                using (var binaryWriter = new BinaryWriter(entryStream, Encoding.UTF8, true))
                {
                    binaryWriter.Write(Edges.Length);
                    foreach (var edge in Edges)
                    {
                        edge.Write(binaryWriter);
                    }
                }

            // Datenwerte schreiben
            foreach (var entry in MeshValues)
            {
                using (var entryStream = zipFile.CreateNormalizedEntry(Path.Combine(subFolder, entry.Entry.Filename), CompressionLevel.Fastest).Open())
                    using (var binaryWriter = new BinaryWriter(entryStream, Encoding.UTF8, true))
                    {
                        entry.Write(binaryWriter);
                    }
            }
        }
Example #4
0
        /// <summary>
        /// Returns the dataset with the specified <paramref name="dataSetIndex" /> from the <see cref="MeshValueList" /> with the specified <paramref name="dataType" />.
        /// If no <paramref name="dataSetIndex" /> is specified, the method will return the first dataset or <code>null</code>, in case the list is empty.
        /// </summary>
        /// <param name="dataType">Type of the data.</param>
        /// <param name="dataSetIndex">Index of the data set.</param>
        /// <returns></returns>
        public MeshValueList GetMeshValueList(string dataType, int dataSetIndex = -1)
        {
            var meshValueList = MeshValues.Where(list => list.Entry.DataType == dataType).ToArray();

            if (meshValueList.Length == 0)
            {
                return(null);
            }

            if (dataSetIndex < 0)
            {
                return(meshValueList[0]);
            }

            if (meshValueList.Length > 0 && dataSetIndex >= 0 && dataSetIndex < meshValueList.Length)
            {
                return(meshValueList[dataSetIndex]);
            }

            return(null);
        }
    private static void restore_mesh(GameObject obj, MeshValues mv)
    {
        var smr = obj.GetComponent <SkinnedMeshRenderer>();
        var fsm = obj.GetComponent <FlexShapeMatching>();
        var fp  = obj.GetComponent <FlexParticles>();

        fsm.m_shapeRestPositions = mv.shapeRestPositions;
        fsm.m_shapeCenters       = mv.shapeCenters;
        fsm.m_shapeTranslations  = mv.shapeTranslations;
        fsm.m_shapeRotations     = mv.shapeRotations;
        fsm.m_shapeIndices       = mv.shapeIndices;
        fsm.m_shapeOffsets       = mv.shapeOffsets;
        fsm.m_shapeIndicesCount  = mv.shapeIndices.Length;
        //smr.sharedMesh = Instantiate(mv.mesh);
        var mesh = Instantiate(smr.sharedMesh) as Mesh;

        smr.sharedMesh.MarkDynamic();
        smr.sharedMesh.Clear();

        smr.sharedMesh.vertices     = mv.mesh_vertices;
        smr.sharedMesh.subMeshCount = mv.mesh_indices.Length;
        for (int i = 0; i < mv.mesh_indices.Length; i++)
        {
            smr.sharedMesh.SetIndices(mv.mesh_indices[i], MeshTopology.Triangles, i);
        }
        //smr.sharedMesh.SetTriangles(mv.mesh_triangles.ToList(), 0);
        smr.sharedMesh.boneWeights = mv.mesh_weights;
        smr.sharedMesh.SetNormals(mv.mesh_normals.ToList());
        smr.sharedMesh.SetUVs(0, mv.mesh_uv.ToList());
        smr.sharedMesh.bindposes = mv.bind_poses;
        //smr.sharedMesh = mesh;
        //smr.sharedMesh.UploadMeshData(true);
        smr.sharedMesh.UploadMeshData(false);
        fp.m_particles = mv.flex_particles;
        for (int i = 0; i < mv.shape_transforms.Length; ++i)
        {
            mv.shape_transforms[i].obj.transform.position = mv.shape_transforms[i].pos;
            mv.shape_transforms[i].obj.transform.rotation = mv.shape_transforms[i].rot;
        }
    }
Example #6
0
 /// <summary>
 /// Returns all <see cref="MeshValueList" /> with the specified <paramref name="dataType" />.
 /// </summary>
 /// <param name="dataType">Type of the data.</param>
 /// <returns></returns>
 public MeshValueList[] GetMeshValueLists(string dataType)
 {
     return(MeshValues.Where(list => string.Equals(list.Entry.DataType, dataType, StringComparison.OrdinalIgnoreCase)).ToArray());
 }
Example #7
0
 /// <summary>
 /// Determines whether the <see cref="MeshValues"/> of this instance contain an entry with the specified <paramref name="dataType"/>.
 /// </summary>
 /// <param name="dataType">Type of the data.</param>
 public bool ContainsMeshValueList(string dataType)
 {
     return(string.IsNullOrEmpty(dataType) || (MeshValues != null && MeshValues.Any(m => string.Equals(m.Entry.DataType, dataType, StringComparison.OrdinalIgnoreCase))));
 }