/// <summary> /// Loads the model. /// </summary> protected override void Load(AssetLoadContext context, Stream stream, string extensionHint) { using (var importer = new AssimpImporter()) { var scene = importer.ImportFileFromStream(stream, postProcessing, extensionHint); this.Load(context, scene); } }
public override SceneContent Import(FileStream stream, ContentManager manager) { AssimpImporter importer = new AssimpImporter(); Scene scene = importer.ImportFileFromStream(stream, PostProcessPreset.TargetRealTimeMaximumQuality, Path.GetExtension(stream.Name)); return(new SceneContent(scene) { Name = stream.Name }); }
public void Construct(Stream stream, Action <Vector3, Vector3, Vector2> appendVertex, Action <Int3> appendIndex, int index, string formatHint) { Assimp.AssimpImporter importer = new AssimpImporter(); Scene scene = importer.ImportFileFromStream(stream, PostProcessPreset.ConvertToLeftHanded | PostProcessPreset.TargetRealTimeQuality, formatHint); Assimp.Mesh mesh = scene.Meshes[index % scene.MeshCount]; int offset = 0; Construct(mesh, appendVertex, appendIndex, ref offset); }
private ContentCompilerResult CompileFromStream(Stream modelStream, string fileName, ModelCompilerOptions compilerOptions) { logger = new Logger(); var result = new ContentCompilerResult() { Logger = logger }; modelFilePath = fileName; modelDirectory = Path.GetDirectoryName(modelFilePath); // Preload AssimpLibrary if not already loaded if (!AssimpLibrary.Instance.LibraryLoaded) { var rootPath = Path.GetDirectoryName(typeof(AssimpLibrary).Assembly.Location); AssimpLibrary.Instance.LoadLibrary(Path.Combine(rootPath, AssimpLibrary.Instance.DefaultLibraryPath32Bit), Path.Combine(rootPath, AssimpLibrary.Instance.DefaultLibraryPath64Bit)); } var importer = new AssimpImporter(); //importer.SetConfig(new NormalSmoothingAngleConfig(66.0f)); // Steps for Direct3D, should we make this configurable? var steps = PostProcessSteps.FlipUVs | PostProcessSteps.FlipWindingOrder | PostProcessSteps.MakeLeftHanded; // Setup quality switch (compilerOptions.Quality) { case ModelRealTimeQuality.Low: steps |= PostProcessPreset.TargetRealTimeFast; break; case ModelRealTimeQuality.Maximum: steps |= PostProcessPreset.TargetRealTimeMaximumQuality; break; default: steps |= PostProcessPreset.TargetRealTimeQuality; break; } scene = importer.ImportFileFromStream(modelStream, steps, Path.GetExtension(fileName)); model = new ModelData(); ProcessScene(); result.IsContentGenerated = true; result.ModelData = model; return(result); }
public List <DX11IndexedGeometry> LoadModelsFromStream(Stream stream, AssimpLoadInformation loadInfo, string formatHint) { Assimp.AssimpImporter importer = new AssimpImporter(); stream.Position = 0; Scene scene = importer.ImportFileFromStream(stream, PostProcessPreset.ConvertToLeftHanded | PostProcessPreset.TargetRealTimeQuality, formatHint); List <DX11IndexedGeometry> result = new List <DX11IndexedGeometry>(); for (int j = 0; j < scene.MeshCount; j++) { Assimp.Mesh mesh = scene.Meshes[j]; if (mesh.HasFaces && mesh.HasVertices) { result.Add(this.LoadFromMesh(mesh, loadInfo)); } } return(result); }
public void TestImportFromStream() { String path = Path.Combine(TestHelper.RootPath, "TestFiles\\duck.dae"); FileStream fs = File.OpenRead(path); AssimpImporter importer = new AssimpImporter(); importer.VerboseLoggingEnabled = true; LogStream logstream = new LogStream(delegate(String msg, String userData) { Console.WriteLine(msg); }); importer.AttachLogStream(logstream); Scene scene = importer.ImportFileFromStream(fs, ".dae"); fs.Close(); Assert.IsNotNull(scene); Assert.IsTrue((scene.SceneFlags & SceneFlags.Incomplete) != SceneFlags.Incomplete); }