public FigureRecipe LoadFigureRecipe(string figureName, FigureRecipe parentRecipe) { var importProperties = ImportProperties.Load(pathManager, figureName); var figureRecipesDirectory = CommonPaths.WorkDir.Subdirectory("recipes/figures"); figureRecipesDirectory.Create(); var figureRecipeFile = figureRecipesDirectory.File($"{figureName}.dat"); if (!figureRecipeFile.Exists) { Console.WriteLine($"Reimporting {figureName}..."); FigureRecipe recipeToPersist = FigureImporter.ImportFor( figureName, fileLocator, objectLocator, importProperties.Uris, parentRecipe, importProperties.HdCorrectionInitialValue, importProperties.VisibleProducts); Persistance.Save(figureRecipeFile, recipeToPersist); } Console.WriteLine($"Loading {figureName}..."); FigureRecipe recipe = Persistance.Load <FigureRecipe>(figureRecipeFile); return(recipe); }
public ShapeNormals Load(IArchiveDirectory figureDir, Shape shape) { var file = shape.Directory?.File("shape-normals.dat"); if (file == null) { return(null); } var recipe = Persistance.Load <ShapeNormalsRecipe>(file); var uvSetName = recipe.UvSetName; IArchiveDirectory uvSetsDirectory = figureDir.Subdirectory("uv-sets"); IArchiveDirectory uvSetDirectory = uvSetsDirectory.Subdirectory(uvSetName); var texturedVertexInfos = uvSetDirectory.File("textured-vertex-infos.array").ReadArray <TexturedVertexInfo>(); var texturesDirectory = dataDir.Subdirectory("textures"); var textureLoader = new TextureLoader(device, textureCache, texturesDirectory); var normalMapsBySurface = recipe.TextureNamesBySurface .Select(name => name != ShapeNormalsRecipe.DefaultTextureName ? name : null) .Select(name => textureLoader.Load(name, TextureLoader.DefaultMode.Bump)) .ToArray(); return(new ShapeNormals(textureLoader, texturedVertexInfos, normalMapsBySurface)); }
public static Animation Load(IArchiveFile animationFile) { string label = Path.GetFileNameWithoutExtension(animationFile.Name); List <Pose> posesByFrame = Persistance.Load <List <Pose> >(animationFile); return(new Animation(label, posesByFrame)); }
public IOccluder Load(IArchiveDirectory occlusionDirectory) { bool isMainFigure = channelSystem.Parent == null; if (isMainFigure) { IArchiveFile occluderParametersFile = occlusionDirectory.File("occluder-parameters.dat"); if (occluderParametersFile == null) { throw new InvalidOperationException("expected main figure to have occlusion system"); } var occluderParameters = Persistance.Load <OccluderParameters>(occluderParametersFile); OcclusionInfo[] unmorphedOcclusionInfos = OcclusionInfo.UnpackArray(unmorphedOcclusionDirectory.File("occlusion-infos.array").ReadArray <uint>()); var occluder = new DeformableOccluder(device, shaderCache, channelSystem, unmorphedOcclusionInfos, occluderParameters); return(occluder); } else { OcclusionInfo[] figureOcclusionInfos = OcclusionInfo.UnpackArray(occlusionDirectory.File("occlusion-infos.array").ReadArray <uint>()); OcclusionInfo[] parentOcclusionInfos = OcclusionInfo.UnpackArray(occlusionDirectory.File("parent-occlusion-infos.array").ReadArray <uint>()); var occluder = new StaticOccluder(device, figureOcclusionInfos, parentOcclusionInfos); return(occluder); } }
public static FigureDefinition Load(IArchiveDirectory dataDir, string name, FigureDefinition parent) { IArchiveDirectory figureDir = dataDir.Subdirectory("figures").Subdirectory(name); var channelSystemRecipe = Persistance.Load <ChannelSystemRecipe>(figureDir.File("channel-system-recipe.dat")); var channelSystem = channelSystemRecipe.Bake(parent?.ChannelSystem); BoneSystem boneSystem; RigidTransform[] childToParentBindPoseTransforms; if (parent != null) { boneSystem = parent.BoneSystem; childToParentBindPoseTransforms = Persistance.Load <RigidTransform[]>(figureDir.File("child-to-parent-bind-pose-transforms.dat")); } else { var boneSystemRecipe = Persistance.Load <BoneSystemRecipe>(figureDir.File("bone-system-recipe.dat")); boneSystem = boneSystemRecipe.Bake(channelSystem.ChannelsByName); childToParentBindPoseTransforms = null; } var shapeOptions = Shape.LoadAllForFigure(figureDir, channelSystem); var materialSetOptions = MaterialSetOption.LoadAllForFigure(figureDir); return(new FigureDefinition(name, figureDir, channelSystem, boneSystem, childToParentBindPoseTransforms, shapeOptions, materialSetOptions)); }
public InverseKinematicsPerformanceDemo() { var figureDir = UnpackedArchiveDirectory.Make(new System.IO.DirectoryInfo("work/figures/genesis-3-female")); var channelSystemRecipe = Persistance.Load <ChannelSystemRecipe>(figureDir.File("channel-system-recipe.dat")); channelSystem = channelSystemRecipe.Bake(null); var boneSystemRecipe = Persistance.Load <BoneSystemRecipe>(figureDir.File("bone-system-recipe.dat")); boneSystem = boneSystemRecipe.Bake(channelSystem.ChannelsByName); var inverterParameters = Persistance.Load <InverterParameters>(figureDir.File("inverter-parameters.dat")); rigidBoneSystem = new RigidBoneSystem(boneSystem); goalProvider = new DemoInverseKinematicsGoalProvider(rigidBoneSystem); solver = new HarmonicInverseKinematicsSolver(rigidBoneSystem, inverterParameters.BoneAttributes); var pose = Persistance.Load <List <Pose> >(figureDir.File("animations/idle.dat"))[0]; var channelInputs = channelSystem.MakeDefaultChannelInputs(); new Poser(channelSystem, boneSystem).Apply(channelInputs, pose, DualQuaternion.Identity); var channelOutputs = channelSystem.Evaluate(null, channelInputs); rigidBoneSystem.Synchronize(channelOutputs); initialInputs = rigidBoneSystem.ReadInputs(channelOutputs); }
public FigureRenderer Load(IArchiveDirectory figureDir, MaterialSetAndVariantOption materialSetOption) { SurfaceProperties surfaceProperties = Persistance.Load <SurfaceProperties>(figureDir.File("surface-properties.dat")); var refinementDirectory = figureDir.Subdirectory("refinement"); var controlMeshDirectory = refinementDirectory.Subdirectory("control"); int[] surfaceMap = controlMeshDirectory.File("surface-map.array").ReadArray <int>(); var refinedMeshDirectory = refinementDirectory.Subdirectory("level-" + surfaceProperties.SubdivisionLevel); SubdivisionMesh mesh = SubdivisionMeshPersistance.Load(refinedMeshDirectory); int[] controlFaceMap = refinedMeshDirectory.File("control-face-map.array").ReadArray <int>(); var materialSet = MaterialSet.LoadActive(device, shaderCache, textureCache, dataDir, figureDir, materialSetOption, surfaceProperties); var materials = materialSet.Materials; Scatterer scatterer = surfaceProperties.PrecomputeScattering ? Scatterer.Load(device, shaderCache, figureDir, materialSetOption.MaterialSet.Label) : null; var uvSetName = materials[0].UvSet; IArchiveDirectory uvSetDirectory = figureDir.Subdirectory("uv-sets").Subdirectory(uvSetName); var texturedVertexInfos = uvSetDirectory.File("textured-vertex-infos.array").ReadArray <TexturedVertexInfo>(); Quad[] texturedFaces = uvSetDirectory.File("textured-faces.array").ReadArray <Quad>(); var vertexRefiner = new VertexRefiner(device, shaderCache, mesh, texturedVertexInfos); FigureSurface[] surfaces = FigureSurface.MakeSurfaces(device, materials.Length, texturedFaces, controlFaceMap, surfaceMap, materialSet.FaceTransparencies); HashSet <int> visitedSurfaceIndices = new HashSet <int>(); List <int> surfaceOrder = new List <int>(surfaces.Length); bool[] areUnorderedTransparent = new bool[surfaces.Length]; //first add surfaces with an explicity-set render order foreach (int surfaceIdx in surfaceProperties.RenderOrder) { visitedSurfaceIndices.Add(surfaceIdx); surfaceOrder.Add(surfaceIdx); areUnorderedTransparent[surfaceIdx] = false; } //then add any remaining surfaces for (int surfaceIdx = 0; surfaceIdx < surfaces.Length; ++surfaceIdx) { if (visitedSurfaceIndices.Contains(surfaceIdx)) { continue; } surfaceOrder.Add(surfaceIdx); areUnorderedTransparent[surfaceIdx] = true; } var isOneSided = figureDir.Name == "genesis-3-female"; //hack return(new FigureRenderer(device, shaderCache, scatterer, vertexRefiner, materialSet, surfaces, isOneSided, surfaceOrder.ToArray(), areUnorderedTransparent)); }
public static List <Character> LoadList(IArchiveDirectory dataDir) { var dir = dataDir.Subdirectory("characters"); var characters = dir.GetFiles() .Select(file => Persistance.Load <Character>(file)) .ToList(); return(characters); }
public static List <Outfit> LoadList(IArchiveDirectory dataDir) { var outfitsDir = dataDir.Subdirectory("outfits"); var outfits = outfitsDir.GetFiles() .Select(outfitFile => Persistance.Load <Outfit>(outfitFile)) .Concat(new List <Outfit> { Naked }) .ToList(); return(outfits); }
private void HandleOnLoadOutputDataReceived(object sender, DataReceivedEventArgs dataReceivedEventArgs) { string fileName = dataReceivedEventArgs.Data; if (!string.IsNullOrEmpty(fileName)) { Dispatcher.Invoke(() => { _persistanceScript.Load(fileName); }); } }
public static ControlVertexProvider Load(Device device, ShaderCache shaderCache, FigureDefinition definition) { var shaperParameters = Persistance.Load <ShaperParameters>(definition.Directory.File("shaper-parameters.dat")); var occluderLoader = new OccluderLoader(device, shaderCache, definition); var provider = new ControlVertexProvider( device, shaderCache, occluderLoader, definition, shaperParameters); return(provider); }
public void login() { User newUser = new User(username, password); Persistance.Load(); foreach (User user in Persistance.users) { if (newUser.Equals(user)) { Debug.Log("Hello " + user); } } }
private static ChannelInputs LoadChannelInputs(ChannelSystem channelSystem, IArchiveFile channelInputsFile) { var shapeInputsByName = Persistance.Load <Dictionary <string, double> >(channelInputsFile); ChannelInputs channelInputs = channelSystem.MakeDefaultChannelInputs(); foreach (var entry in shapeInputsByName) { Channel channel = channelSystem.ChannelsByName[entry.Key]; channel.SetValue(channelInputs, entry.Value); } return(channelInputs); }
public static void DumpFigure(Figure figure, SurfaceProperties surfaceProperties, DirectoryInfo figureDestDir) { DirectoryInfo refinementDirectory = figureDestDir.Subdirectory("refinement").Subdirectory("level-" + surfaceProperties.SubdivisionLevel); Quad[] spatialFaces = refinementDirectory.File("faces.array").ReadArray <Quad>(); SubdivisionTopologyInfo spatialTopologyInfo = Persistance.Load <SubdivisionTopologyInfo>(UnpackedArchiveFile.Make(refinementDirectory.File("topology-info.dat"))); DirectoryInfo uvSetsDirectory = figureDestDir.Subdirectory("uv-sets"); UVSetDumper dumper = new UVSetDumper(figure, surfaceProperties, uvSetsDirectory, spatialFaces, spatialTopologyInfo); foreach (var pair in figure.UvSets) { dumper.Dump(pair.Key, pair.Value); } }
public void Execute() { var persistance = new Persistance(); var addSourceTmConfiguration = persistance.Load(); if (addSourceTmConfiguration != null) { return; } persistance.Save(new AddSourceTmConfigurations() { Configurations = new List <AddSourceTmConfiguration>() }); }
public BoneSystemPerformanceDemo() { var figureDir = UnpackedArchiveDirectory.Make(new System.IO.DirectoryInfo("work/figures/genesis-3-female")); var channelSystemRecipe = Persistance.Load <ChannelSystemRecipe>(figureDir.File("channel-system-recipe.dat")); channelSystem = channelSystemRecipe.Bake(null); var boneSystemRecipe = Persistance.Load <BoneSystemRecipe>(figureDir.File("bone-system-recipe.dat")); boneSystem = boneSystemRecipe.Bake(channelSystem.ChannelsByName); var pose = Persistance.Load <List <Pose> >(figureDir.File("animations/idle.dat"))[0]; inputs = channelSystem.MakeDefaultChannelInputs(); new Poser(channelSystem, boneSystem).Apply(inputs, pose, DualQuaternion.Identity); }
public void Run() { var figureDir = UnpackedArchiveDirectory.Make(new System.IO.DirectoryInfo("work/figures/genesis-3-female")); var channelSystemRecipe = Persistance.Load <ChannelSystemRecipe>(figureDir.File("channel-system-recipe.dat")); var channelSystem = channelSystemRecipe.Bake(null); var boneSystemRecipe = Persistance.Load <BoneSystemRecipe>(figureDir.File("bone-system-recipe.dat")); var boneSystem = boneSystemRecipe.Bake(channelSystem.ChannelsByName); bonesByParent = boneSystem.Bones.ToLookup(bone => bone.Parent); foreach (var rootBone in bonesByParent[null]) { PrintBone(rootBone, 0); } }
private static ParentOverride[] LoadParentOverrides(ChannelSystem channelSystem, IArchiveFile parentOverridesFile) { if (parentOverridesFile == null) { return(null); } var parentChannelSystem = channelSystem.Parent; var parentOverridesByName = Persistance.Load <Dictionary <string, double> >(parentOverridesFile); var parentOverrides = parentOverridesByName .Select(entry => new ParentOverride { channel = parentChannelSystem.ChannelsByName[entry.Key], value = entry.Value }) .ToArray(); return(parentOverrides); }
public static MaterialSet LoadActive(Device device, ShaderCache shaderCache, TextureCache textureCache, IArchiveDirectory dataDir, IArchiveDirectory figureDir, string materialSetName, SurfaceProperties surfaceProperties) { var materialsDirectory = figureDir .Subdirectory("material-sets") .Subdirectory(materialSetName); var texturesDirectory = surfaceProperties.ShareTextures != null? dataDir.Subdirectory("textures").Subdirectory(surfaceProperties.ShareTextures) : materialsDirectory; var textureLoader = new TextureLoader(device, textureCache, texturesDirectory); var multiMaterialSettings = Persistance.Load <MultiMaterialSettings>(materialsDirectory.File("material-settings.dat")); var materials = multiMaterialSettings.PerMaterialSettings.Select(settings => settings.Load(device, shaderCache, textureLoader)).ToArray(); float[] faceTransparencies = materialsDirectory.File("face-transparencies.array").ReadArray <float>(); return(new MaterialSet(textureLoader, materials, faceTransparencies)); }
public void Init(Uri providerUri) { var builder = new SQLiteConnectionStringBuilder { SyncMode = SynchronizationModes.Off, DataSource = _tmDatabasePath, Enlist = false, Pooling = false }; _db = Database.OpenConnection(builder.ToString()); var persistance = new Persistance(); var addSourceTmConfigurations = persistance.Load(); _addSourceTmConfiguration = addSourceTmConfigurations.Configurations.FirstOrDefault(x => x.ProviderUri == providerUri) ?? addSourceTmConfigurations.Default; }
private static MultiMaterialSettings DumpMaterialSet(ImportSettings settings, Device device, ShaderCache shaderCache, ContentFileLocator fileLocator, DsonObjectLocator objectLocator, Figure figure, MaterialSetImportConfiguration baseConfiguration, MaterialSetImportConfiguration configuration, TextureProcessor sharedTextureProcessor) { DirectoryInfo figuresDirectory = CommonPaths.WorkDir.Subdirectory("figures"); DirectoryInfo figureDirectory = figuresDirectory.Subdirectory(figure.Name); DirectoryInfo materialsSetsDirectory = figureDirectory.Subdirectory("material-sets"); DirectoryInfo materialSetDirectory = materialsSetsDirectory.Subdirectory(configuration.name); FileInfo materialSettingsFileInfo = materialSetDirectory.File("material-settings.dat"); FileInfo faceTransparenciesFileInfo = materialSetDirectory.File("face-transparencies.array"); if (materialSettingsFileInfo.Exists && faceTransparenciesFileInfo.Exists) { return(Persistance.Load <MultiMaterialSettings>(UnpackedArchiveFile.Make(materialSettingsFileInfo))); } var aggregator = new DsonMaterialAggregator(fileLocator, objectLocator); IEnumerable <string> dufPaths = Enumerable.Concat(baseConfiguration.materialsDufPaths, configuration.materialsDufPaths); foreach (string path in dufPaths) { DsonTypes.DsonDocument doc = objectLocator.LocateRoot(path); aggregator.IncludeDuf(doc.Root); } TextureProcessor localTextureProcessor; if (sharedTextureProcessor == null) { localTextureProcessor = new TextureProcessor(device, shaderCache, materialSetDirectory, settings.CompressTextures); } else { localTextureProcessor = null; } var textureProcessor = sharedTextureProcessor ?? localTextureProcessor; var faceTransparencyProcessor = new FaceTransparencyProcessor(device, shaderCache, figure); IMaterialImporter materialImporter; if (figure.Name.EndsWith("-hair")) { materialImporter = new HairMaterialImporter(figure, textureProcessor, faceTransparencyProcessor); } else { materialImporter = new UberMaterialImporter(figure, textureProcessor, faceTransparencyProcessor); } var perMaterialSettings = Enumerable.Range(0, figure.Geometry.SurfaceCount) .Select(surfaceIdx => { string surfaceName = figure.Geometry.SurfaceNames[surfaceIdx]; var bag = aggregator.GetBag(surfaceName); var materialSettings = materialImporter.Import(surfaceIdx, bag); return(materialSettings); }) .ToArray(); var multiMaterialSettings = new MultiMaterialSettings(perMaterialSettings); materialSetDirectory.CreateWithParents(); textureProcessor.RegisterAction(() => { Persistance.Save(materialSettingsFileInfo, multiMaterialSettings); }); localTextureProcessor?.ImportAll(); var faceTranparencies = faceTransparencyProcessor.FaceTransparencies; faceTransparenciesFileInfo.WriteArray(faceTranparencies); faceTransparencyProcessor.Dispose(); return(multiMaterialSettings); }
public static ActorBehavior Load(ControllerManager controllerManager, IArchiveDirectory figureDir, ActorModel model) { InverterParameters inverterParameters = Persistance.Load <InverterParameters>(figureDir.File("inverter-parameters.dat")); return(new ActorBehavior(controllerManager, model, inverterParameters)); }
private static MultiMaterialSettings DumpMaterialSet(ImportSettings settings, Device device, ShaderCache shaderCache, ContentFileLocator fileLocator, DsonObjectLocator objectLocator, Figure figure, SurfaceProperties surfaceProperties, MaterialSetImportConfiguration baseConfiguration, DirectoryInfo figureDestDir, MaterialSetImportConfiguration configuration, TextureProcessor textureProcessor) { DirectoryInfo materialsSetsDirectory = figureDestDir.Subdirectory("material-sets"); DirectoryInfo materialSetDirectory = materialsSetsDirectory.Subdirectory(configuration.name); FileInfo materialSettingsFileInfo = materialSetDirectory.File("material-settings.dat"); FileInfo faceTransparenciesFileInfo = materialSetDirectory.File("face-transparencies.array"); if (materialSettingsFileInfo.Exists && faceTransparenciesFileInfo.Exists) { return(Persistance.Load <MultiMaterialSettings>(UnpackedArchiveFile.Make(materialSettingsFileInfo))); } var aggregator = new DsonMaterialAggregator(fileLocator, objectLocator); IEnumerable <string> dufPaths = Enumerable.Concat(baseConfiguration.materialsDufPaths, configuration.materialsDufPaths); foreach (string path in dufPaths) { DsonTypes.DsonDocument doc = objectLocator.LocateRoot(path); aggregator.IncludeDuf(doc.Root); } var faceTransparencyProcessor = new FaceTransparencyProcessor(device, shaderCache, figure, surfaceProperties); IMaterialImporter materialImporter; if (figure.Name.EndsWith("-hair")) { materialImporter = new HairMaterialImporter(figure, textureProcessor, faceTransparencyProcessor); } else { materialImporter = new UberMaterialImporter(figure, textureProcessor, faceTransparencyProcessor); } string[] surfaceNames = figure.Geometry.SurfaceNames; Dictionary <string, int> surfaceNameToIdx = Enumerable.Range(0, surfaceNames.Length) .ToDictionary(idx => surfaceNames[idx], idx => idx); var perMaterialSettings = Enumerable.Range(0, figure.Geometry.SurfaceCount) .Select(surfaceIdx => { string surfaceName = figure.Geometry.SurfaceNames[surfaceIdx]; var bag = aggregator.GetBag(surfaceName); var materialSettings = materialImporter.Import(surfaceIdx, bag); return(materialSettings); }) .ToArray(); var variantCategories = configuration.variantCategories .Select(variantCategoryConf => { int[] surfaceIdxs = variantCategoryConf.surfaces .Select(surfaceName => surfaceNameToIdx[surfaceName]) .ToArray(); var variants = variantCategoryConf.variants .Select(variantConf => { var variantAggregator = aggregator.Branch(); foreach (string path in variantConf.materialsDufPaths) { DsonTypes.DsonDocument doc = objectLocator.LocateRoot(path); variantAggregator.IncludeDuf(doc.Root); } var settingsBySurface = variantCategoryConf.surfaces .Select(surfaceName => { int surfaceIdx = surfaceNameToIdx[surfaceName]; var bag = variantAggregator.GetBag(surfaceName); var materialSettings = materialImporter.Import(surfaceIdx, bag); return(materialSettings); }) .ToArray(); return(new MultiMaterialSettings.Variant(variantConf.name, settingsBySurface)); }) .ToArray(); return(new MultiMaterialSettings.VariantCategory(variantCategoryConf.name, surfaceIdxs, variants)); }) .ToArray(); var multiMaterialSettings = new MultiMaterialSettings(perMaterialSettings, variantCategories); materialSetDirectory.CreateWithParents(); textureProcessor.RegisterAction(() => { Persistance.Save(materialSettingsFileInfo, multiMaterialSettings); }); var faceTranparencies = faceTransparencyProcessor.FaceTransparencies; faceTransparenciesFileInfo.WriteArray(faceTranparencies); faceTransparencyProcessor.Dispose(); return(multiMaterialSettings); }
public static MaterialSetOption Load(IArchiveDirectory materialSetDirectory) { var settings = Persistance.Load <MultiMaterialSettings>(materialSetDirectory.File("material-settings.dat")); return(new MaterialSetOption(materialSetDirectory.Name, materialSetDirectory, settings)); }