示例#1
0
        // Descendants must use this on all GameObjects representing layers
        protected void AddLayerComponent(GameObject go, ModelLayerInfo layerInfo)
        {
            ModelLayer layer = go.AddComponent <ModelLayer>();

            layer.Caption    = layerInfo.Caption;
            layer.Simulation = CheckIfSimulation(layerInfo.DataType);
            layer.DataType   = GetDataType(layerInfo.DataType);
        }
示例#2
0
        protected override void ImportLayer(ModelLayerInfo layerInfo)
        {
            string objectName = Info.Caption + "_" + Path.GetFileName(layerInfo.Directory);

            layerImporter.ImportData(layerInfo, objectName);
            AddLayerComponent(layerImporter.ModelGameObject, layerInfo);
            SaveFilesForExport(layerInfo, objectName, layerImporter.ModelMesh.Get(), layerImporter.ModelGameObject);
        }
        protected override void ImportLayer(ModelLayerInfo layerInfo)
        {
            string     objectName      = Info.Caption + "_" + Path.GetFileName(layerInfo.Directory);
            GameObject modelGameObject = GameObject.CreatePrimitive(PrimitiveType.Cube);

            ImportData(modelGameObject, layerInfo);
            AddLayerComponent(modelGameObject, layerInfo);
            SaveFilesForExport(modelGameObject, layerInfo, objectName);
        }
示例#4
0
        // Exports finished GameObject to a .prefab
        private void CreatePrefab(ModelLayerInfo layerInfo, GameObject modelGameObject, string objectName)
        {
            string rootAssetsDir = AssetDirs.TempAssetsDir + "/" + Info.Caption;

            AssetDirs.CreateAssetDirectory(rootAssetsDir);

            string prefabPath = rootAssetsDir + "/" + objectName + ".prefab";

            AssetPaths.Add(prefabPath);
            PrefabUtility.SaveAsPrefabAsset(modelGameObject, prefabPath);
        }
        private void ImportData(GameObject modelGameObject, ModelLayerInfo layerInfo)
        {
            // FIXME: Scale of display cube should depend on scale of data  and should be set at load !!!
            modelGameObject.transform.localScale = new Vector3(0.9f, 0.9f, 0.1f);
            VolumetricMedata metadata;

            using (StreamReader r = new StreamReader(layerInfo.Directory + @"\" + "metadata.json"))
            {
                string json = r.ReadToEnd();
                metadata = JsonConvert.DeserializeObject <VolumetricMedata>(json);
            }

            VolumetricModelLayer modelLayer = modelGameObject.AddComponent <VolumetricModelLayer>();

            modelLayer.Width    = metadata.width;
            modelLayer.Height   = metadata.height;
            modelLayer.Depth    = metadata.depth;
            modelLayer.Channels = metadata.channels;
        }
示例#6
0
        protected override void ImportLayer(ModelLayerInfo layerInfo)
        {
            string objectName   = Info.Caption + "_" + Path.GetFileName(layerInfo.Directory);
            string absolutePath = layerInfo.Directory + "/" + layerInfo.AssetFileName;
            string objectPath   = "Assets" + absolutePath.Substring(Application.dataPath.Length);

            GameObject modelGameObject = AssetDatabase.LoadAssetAtPath <GameObject>(@"Test Models/Skull/skull_body");

            if (modelGameObject == null)
            {
                throw Log.ThrowError("Cannot import model from " + objectPath, new IOException());
            }
            GameObject modelInstance = UnityEngine.Object.Instantiate(modelGameObject);

            AddLayerComponent(modelInstance, layerInfo);
            CreatePrefab(layerInfo, modelInstance, objectName);
            if (layerInfo.UseAsIcon)
            {
                LayerAutomaticIconGenerate(modelInstance);
            }
            GameObject.DestroyImmediate(modelInstance);
        }
示例#7
0
        // Saves imported model to a Unity-friendly files, to be put in AssetBundles.
        private void SaveFilesForExport(ModelLayerInfo layerInfo, string objectName, Mesh modelMesh, GameObject modelGameObject)
        {
            string rootAssetsDir = AssetDirs.TempAssetsDir + "/" + Info.Caption;

            AssetDirs.CreateAssetDirectory(rootAssetsDir);

            string meshPath = rootAssetsDir + "/" + objectName + ".asset";

            AssetPaths.Add(meshPath);
            AssetDatabase.CreateAsset(modelMesh, meshPath);

            string gameObjectPath = rootAssetsDir + "/" + objectName + ".prefab";

            AssetPaths.Add(gameObjectPath);
            PrefabUtility.SaveAsPrefabAsset(modelGameObject, gameObjectPath);

            if (layerInfo.UseAsIcon)
            {
                PrepareForPreview(modelGameObject);
                LayerAutomaticIconGenerate(modelGameObject);
            }
        }
        // Saves imported model to a Unity-friendly files, to be put in AssetBundles.
        private void SaveFilesForExport(GameObject modelGameObject, ModelLayerInfo layerInfo, string objectName)
        {
            string rootAssetsDir = AssetDirs.TempAssetsDir + "/" + Info.Caption;

            AssetDirs.CreateAssetDirectory(rootAssetsDir);

            Mesh   modelMesh = modelGameObject.GetComponent <MeshFilter>().mesh;
            string meshPath  = rootAssetsDir + "/" + objectName + ".asset";

            AssetPaths.Add(meshPath);
            AssetDatabase.CreateAsset(modelMesh, meshPath);

            string rawDataPath = layerInfo.Directory + @"\" + "data.raw";
            // This is strange to copy data first as Asset then copy asset to build dir
            string tmpDataPath = rootAssetsDir + "/tmp_data.bytes";
            string dataPath    = rootAssetsDir + "/" + objectName + "_data.bytes";

            if (File.Exists(tmpDataPath))
            {
                FileUtil.DeleteFileOrDirectory(tmpDataPath);
            }
            FileUtil.CopyFileOrDirectory(rawDataPath, tmpDataPath);
            AssetPaths.Add(dataPath);
            AssetDatabase.Refresh();
            AssetDatabase.CopyAsset(tmpDataPath, dataPath);


            string gameObjectPath = rootAssetsDir + "/" + objectName + ".prefab";

            AssetPaths.Add(gameObjectPath);
            PrefabUtility.SaveAsPrefabAsset(modelGameObject, gameObjectPath);

            if (layerInfo.UseAsIcon)
            {
                PrepareForPreview(modelGameObject);
                LayerAutomaticIconGenerate(modelGameObject);
            }
        }
示例#9
0
 // Imports layer (with body or simulation blendshapes).
 // May also set layerAutomaticIcon.
 abstract protected void ImportLayer(ModelLayerInfo layerInfo);