Ver código fonte

DAE Exporter

Added possibility to export Collada files (.dae) to BabylonJS file format (.babylon).
The exporter uses the same logic as the FBX exporter. The file is loaded thanks to a XNA loader in memory and XNA classes are used to export to BabylonJS file format.
Since this logic could be used for other 3D formats files, I renamed FBXExporter to XNAExporter and made it abstract. Concrete subclasses of it are the specific exporters: FBXExporter and DAEExporter. In the concrete subclasses you just have to override XNAExporter::SupportedExtensions, XNAExporter::Importer and you can override XNAExporter::ExtraPipelineAssemblies.

As Collada importer to XNA I chose ColladaXna and added it as submodule. For now it points to my fork of Bunkerbewohner/ColladaXna since I fixed a bug in it (I also discovered that it doesn't deal with up_axis and distance unit so I may add some code to fix that) but of course it should later point directly to Bunkerbewohner/ColladaXna.

Since it could be helpful, I added a Visual Studio 2010 solution to contain projects related to export. I had to change the framework version though.

I commented the part telling Visual Studio to copy generateAll.bat to the bin folder since the file is not in the repo.

I also applied fix provided in #106
Gwenaël Hagenmuller 11 anos atrás
pai
commit
eb1b2745f6
89 arquivos alterados com 220 adições e 42 exclusões
  1. 3 0
      .gitmodules
  2. 94 0
      Exporters/ExportToBabylon.sln
  3. 27 15
      Exporters/FBX - OBJ/BabylonExport.Core/BabylonExport.Core.csproj
  4. 0 0
      Exporters/XNA - OBJ/BabylonExport.Core/Entities/Export/BabylonAnimation.cs
  5. 0 0
      Exporters/XNA - OBJ/BabylonExport.Core/Entities/Export/BabylonAnimationKey.cs
  6. 0 0
      Exporters/XNA - OBJ/BabylonExport.Core/Entities/Export/BabylonBone.cs
  7. 0 0
      Exporters/XNA - OBJ/BabylonExport.Core/Entities/Export/BabylonCamera.cs
  8. 0 0
      Exporters/XNA - OBJ/BabylonExport.Core/Entities/Export/BabylonLensFlare.cs
  9. 0 0
      Exporters/XNA - OBJ/BabylonExport.Core/Entities/Export/BabylonLensFlareSystem.cs
  10. 0 0
      Exporters/XNA - OBJ/BabylonExport.Core/Entities/Export/BabylonLight.cs
  11. 0 0
      Exporters/XNA - OBJ/BabylonExport.Core/Entities/Export/BabylonMaterial.cs
  12. 0 0
      Exporters/XNA - OBJ/BabylonExport.Core/Entities/Export/BabylonMesh.cs
  13. 0 0
      Exporters/XNA - OBJ/BabylonExport.Core/Entities/Export/BabylonMultiMaterial.cs
  14. 0 0
      Exporters/XNA - OBJ/BabylonExport.Core/Entities/Export/BabylonParticleSystem.cs
  15. 0 0
      Exporters/XNA - OBJ/BabylonExport.Core/Entities/Export/BabylonScene.cs
  16. 0 0
      Exporters/XNA - OBJ/BabylonExport.Core/Entities/Export/BabylonShadowGenerator.cs
  17. 0 0
      Exporters/XNA - OBJ/BabylonExport.Core/Entities/Export/BabylonSkeleton.cs
  18. 0 0
      Exporters/XNA - OBJ/BabylonExport.Core/Entities/Export/BabylonSubMesh.cs
  19. 0 0
      Exporters/XNA - OBJ/BabylonExport.Core/Entities/Export/BabylonTexture.cs
  20. 0 0
      Exporters/XNA - OBJ/BabylonExport.Core/Entities/IDumpable.cs
  21. 0 0
      Exporters/XNA - OBJ/BabylonExport.Core/Entities/IQueryable.cs
  22. 0 0
      Exporters/XNA - OBJ/BabylonExport.Core/Entities/Mesh.cs
  23. 0 0
      Exporters/XNA - OBJ/BabylonExport.Core/Entities/PositionNormalTextured.cs
  24. 0 0
      Exporters/XNA - OBJ/BabylonExport.Core/Entities/PositionNormalTexturedWeights.cs
  25. 0 0
      Exporters/XNA - OBJ/BabylonExport.Core/Entities/ProxyMesh.cs
  26. 0 0
      Exporters/XNA - OBJ/BabylonExport.Core/Entities/StandardMaterial.cs
  27. 0 0
      Exporters/XNA - OBJ/BabylonExport.Core/Exporters/Blender/io_export_babylon.py
  28. 0 0
      Exporters/XNA - OBJ/BabylonExport.Core/Exporters/IExporter.cs
  29. 0 0
      Exporters/XNA - OBJ/BabylonExport.Core/Exporters/MXB/NovaExporter.Materials.cs
  30. 0 0
      Exporters/XNA - OBJ/BabylonExport.Core/Exporters/MXB/NovaExporter.cs
  31. 0 0
      Exporters/XNA - OBJ/BabylonExport.Core/Exporters/OBJ/Document.cs
  32. 0 0
      Exporters/XNA - OBJ/BabylonExport.Core/Exporters/OBJ/Line.cs
  33. 0 0
      Exporters/XNA - OBJ/BabylonExport.Core/Exporters/OBJ/MtlHeader.cs
  34. 0 0
      Exporters/XNA - OBJ/BabylonExport.Core/Exporters/OBJ/MtlLine.cs
  35. 0 0
      Exporters/XNA - OBJ/BabylonExport.Core/Exporters/OBJ/ObjExporter.Material.cs
  36. 0 0
      Exporters/XNA - OBJ/BabylonExport.Core/Exporters/OBJ/ObjExporter.cs
  37. 0 0
      Exporters/XNA - OBJ/BabylonExport.Core/Exporters/OBJ/ObjHeader.cs
  38. 0 0
      Exporters/XNA - OBJ/BabylonExport.Core/Exporters/OBJ/ObjLine.cs
  39. 1 0
      Exporters/XNA - OBJ/BabylonExport.Core/Exporters/ThroughXNA/DAE/ColladaXna
  40. 28 0
      Exporters/XNA - OBJ/BabylonExport.Core/Exporters/ThroughXNA/DAE/DAEExporter.cs
  41. 28 0
      Exporters/XNA - OBJ/BabylonExport.Core/Exporters/ThroughXNA/FBX/FBXExporter.cs
  42. 12 6
      Exporters/FBX - OBJ/BabylonExport.Core/Exporters/FBX/XNA/ContentBuilder.cs
  43. 1 1
      Exporters/FBX - OBJ/BabylonExport.Core/Exporters/FBX/XNA/ErrorLogger.cs
  44. 1 1
      Exporters/FBX - OBJ/BabylonExport.Core/Exporters/FBX/XNA/GraphicsDeviceService.cs
  45. 1 1
      Exporters/FBX - OBJ/BabylonExport.Core/Exporters/FBX/XNA/ServiceContainer.cs
  46. 0 0
      Exporters/XNA - OBJ/BabylonExport.Core/Exporters/ThroughXNA/XNA/XNA Game Studio/Microsoft.Xna.GameStudio.ContentPipelineExtensions.targets
  47. 0 0
      Exporters/XNA - OBJ/BabylonExport.Core/Exporters/ThroughXNA/XNA/XNA Game Studio/Microsoft.Xna.GameStudio.targets
  48. 0 0
      Exporters/XNA - OBJ/BabylonExport.Core/Exporters/ThroughXNA/XNA/XNA Game Studio/v4.0/Microsoft.Xna.Framework.Tools.Packaging.Tasks.dll
  49. 0 0
      Exporters/XNA - OBJ/BabylonExport.Core/Exporters/ThroughXNA/XNA/XNA Game Studio/v4.0/Microsoft.Xna.GameStudio.AvailablePlatforms.targets
  50. 0 0
      Exporters/XNA - OBJ/BabylonExport.Core/Exporters/ThroughXNA/XNA/XNA Game Studio/v4.0/Microsoft.Xna.GameStudio.Common.targets
  51. 0 0
      Exporters/XNA - OBJ/BabylonExport.Core/Exporters/ThroughXNA/XNA/XNA Game Studio/v4.0/Microsoft.Xna.GameStudio.Content.targets
  52. 0 0
      Exporters/XNA - OBJ/BabylonExport.Core/Exporters/ThroughXNA/XNA/XNA Game Studio/v4.0/Microsoft.Xna.GameStudio.ContentPipeline.targets
  53. 0 0
      Exporters/XNA - OBJ/BabylonExport.Core/Exporters/ThroughXNA/XNA/XNA Game Studio/v4.0/Microsoft.Xna.GameStudio.Windows.targets
  54. 0 0
      Exporters/XNA - OBJ/BabylonExport.Core/Exporters/ThroughXNA/XNA/XNA Game Studio/v4.0/Microsoft.Xna.GameStudio.Xbox 360.targets
  55. 10 13
      Exporters/FBX - OBJ/BabylonExport.Core/Exporters/FBX/FBXExporter.cs
  56. 0 0
      Exporters/XNA - OBJ/BabylonExport.Core/Properties/AssemblyInfo.cs
  57. 0 0
      Exporters/XNA - OBJ/BabylonExport.Core/Refs/Microsoft.Xna.Framework.Content.Pipeline.AudioImporters.dll
  58. 0 0
      Exporters/XNA - OBJ/BabylonExport.Core/Refs/Microsoft.Xna.Framework.Content.Pipeline.EffectImporter.dll
  59. 0 0
      Exporters/XNA - OBJ/BabylonExport.Core/Refs/Microsoft.Xna.Framework.Content.Pipeline.FBXImporter.dll
  60. 0 0
      Exporters/XNA - OBJ/BabylonExport.Core/Refs/Microsoft.Xna.Framework.Content.Pipeline.TextureImporter.dll
  61. 0 0
      Exporters/XNA - OBJ/BabylonExport.Core/Refs/Microsoft.Xna.Framework.Content.Pipeline.VideoImporters.dll
  62. 0 0
      Exporters/XNA - OBJ/BabylonExport.Core/Refs/Microsoft.Xna.Framework.Content.Pipeline.XImporter.dll
  63. 0 0
      Exporters/XNA - OBJ/BabylonExport.Core/Refs/Microsoft.Xna.Framework.Content.Pipeline.dll
  64. 0 0
      Exporters/XNA - OBJ/BabylonExport.Core/Refs/Microsoft.Xna.Framework.Tools.Packaging.Tasks.dll
  65. 0 0
      Exporters/XNA - OBJ/BabylonExport.Core/Refs/SharpDX.DXGI.dll
  66. 0 0
      Exporters/XNA - OBJ/BabylonExport.Core/Refs/SharpDX.Direct3D9.dll
  67. 0 0
      Exporters/XNA - OBJ/BabylonExport.Core/Refs/SharpDX.dll
  68. 0 0
      Exporters/XNA - OBJ/BabylonExport.Core/Refs/SkinnedModel.dll
  69. 0 0
      Exporters/XNA - OBJ/BabylonExport.Core/Refs/SkinnedModelPipeline.dll
  70. 0 0
      Exporters/XNA - OBJ/BabylonExport.Core/Refs/Vertice.Core.dll
  71. 0 0
      Exporters/XNA - OBJ/BabylonExport.Core/Refs/Vertice.Nova.Core.DirectX10.dll
  72. 0 0
      Exporters/XNA - OBJ/BabylonExport.Core/Refs/Vertice.Nova.Core.DirectX9.dll
  73. 0 0
      Exporters/XNA - OBJ/BabylonExport.Core/Refs/Vertice.Nova.Interop.dll
  74. 0 0
      Exporters/XNA - OBJ/BabylonExport.Core/Refs/Vertice.Nova.dll
  75. 0 0
      Exporters/XNA - OBJ/BabylonExport.Core/Refs/Vertice.Wrappers.DirectX.dll
  76. 0 0
      Exporters/XNA - OBJ/BabylonExport.Core/Refs/xnafx40_redist.msi
  77. 0 0
      Exporters/XNA - OBJ/BabylonExport.Core/Tools.cs
  78. 1 1
      Exporters/FBX - OBJ/BabylonExport.Interface/BabylonExport.Interface.csproj
  79. 0 0
      Exporters/XNA - OBJ/BabylonExport.Interface/IService.cs
  80. 0 0
      Exporters/XNA - OBJ/BabylonExport.Interface/Properties/AssemblyInfo.cs
  81. 0 0
      Exporters/XNA - OBJ/BabylonExport.zip
  82. 1 1
      Exporters/FBX - OBJ/BabylonExport/App.config
  83. 10 2
      Exporters/FBX - OBJ/BabylonExport/BabylonExport.csproj
  84. 0 0
      Exporters/XNA - OBJ/BabylonExport/DirectShow.Net.dll
  85. 0 0
      Exporters/XNA - OBJ/BabylonExport/Exporters/Blender/io_export_babylon.zip
  86. 2 1
      Exporters/FBX - OBJ/BabylonExport/Program.cs
  87. 0 0
      Exporters/XNA - OBJ/BabylonExport/Service.cs
  88. 0 0
      Exporters/XNA - OBJ/BabylonExport/packages.config
  89. 0 0
      Exporters/XNA - OBJ/readme.md

+ 3 - 0
.gitmodules

@@ -0,0 +1,3 @@
+[submodule "Exporters/XNA - OBJ/BabylonExport.Core/Exporters/ThroughXNA/DAE/ColladaXna"]
+	path = Exporters/XNA - OBJ/BabylonExport.Core/Exporters/ThroughXNA/DAE/ColladaXna
+	url = https://github.com/gwenael-hagenmuller/ColladaXna.git

+ 94 - 0
Exporters/ExportToBabylon.sln

@@ -0,0 +1,94 @@
+
+Microsoft Visual Studio Solution File, Format Version 11.00
+# Visual Studio 2010
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BabylonExport.Core", "XNA - OBJ\BabylonExport.Core\BabylonExport.Core.csproj", "{CE70B051-FB63-420D-80C0-51CC03A214BA}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BabylonExport.Interface", "XNA - OBJ\BabylonExport.Interface\BabylonExport.Interface.csproj", "{DEC52846-FFCB-4A66-9F13-64F65B61EDBA}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BabylonExport", "XNA - OBJ\BabylonExport\BabylonExport.csproj", "{1E0A8EB2-7022-42E2-8970-F0374188A09D}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ColladaXnaImporter", "XNA - OBJ\BabylonExport.Core\Exporters\ThroughXNA\DAE\ColladaXna\ColladaXnaImporter\ColladaXnaImporter.csproj", "{625E5D7F-86F6-4961-89D0-3835BF261ACC}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ColladaXnaBase", "XNA - OBJ\BabylonExport.Core\Exporters\ThroughXNA\DAE\ColladaXna\ColladaXnaBase\ColladaXnaBase.csproj", "{65FE2973-B4E6-49DE-8F57-55490D4B4FD4}"
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		Debug|Any CPU = Debug|Any CPU
+		Debug|Mixed Platforms = Debug|Mixed Platforms
+		Debug|x64 = Debug|x64
+		Debug|x86 = Debug|x86
+		Release|Any CPU = Release|Any CPU
+		Release|Mixed Platforms = Release|Mixed Platforms
+		Release|x64 = Release|x64
+		Release|x86 = Release|x86
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{CE70B051-FB63-420D-80C0-51CC03A214BA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{CE70B051-FB63-420D-80C0-51CC03A214BA}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{CE70B051-FB63-420D-80C0-51CC03A214BA}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{CE70B051-FB63-420D-80C0-51CC03A214BA}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{CE70B051-FB63-420D-80C0-51CC03A214BA}.Debug|x64.ActiveCfg = Debug|Any CPU
+		{CE70B051-FB63-420D-80C0-51CC03A214BA}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{CE70B051-FB63-420D-80C0-51CC03A214BA}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{CE70B051-FB63-420D-80C0-51CC03A214BA}.Release|Any CPU.Build.0 = Release|Any CPU
+		{CE70B051-FB63-420D-80C0-51CC03A214BA}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{CE70B051-FB63-420D-80C0-51CC03A214BA}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+		{CE70B051-FB63-420D-80C0-51CC03A214BA}.Release|x64.ActiveCfg = Release|Any CPU
+		{CE70B051-FB63-420D-80C0-51CC03A214BA}.Release|x86.ActiveCfg = Release|Any CPU
+		{DEC52846-FFCB-4A66-9F13-64F65B61EDBA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{DEC52846-FFCB-4A66-9F13-64F65B61EDBA}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{DEC52846-FFCB-4A66-9F13-64F65B61EDBA}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{DEC52846-FFCB-4A66-9F13-64F65B61EDBA}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{DEC52846-FFCB-4A66-9F13-64F65B61EDBA}.Debug|x64.ActiveCfg = Debug|Any CPU
+		{DEC52846-FFCB-4A66-9F13-64F65B61EDBA}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{DEC52846-FFCB-4A66-9F13-64F65B61EDBA}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{DEC52846-FFCB-4A66-9F13-64F65B61EDBA}.Release|Any CPU.Build.0 = Release|Any CPU
+		{DEC52846-FFCB-4A66-9F13-64F65B61EDBA}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{DEC52846-FFCB-4A66-9F13-64F65B61EDBA}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+		{DEC52846-FFCB-4A66-9F13-64F65B61EDBA}.Release|x64.ActiveCfg = Release|Any CPU
+		{DEC52846-FFCB-4A66-9F13-64F65B61EDBA}.Release|x86.ActiveCfg = Release|Any CPU
+		{1E0A8EB2-7022-42E2-8970-F0374188A09D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{1E0A8EB2-7022-42E2-8970-F0374188A09D}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{1E0A8EB2-7022-42E2-8970-F0374188A09D}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
+		{1E0A8EB2-7022-42E2-8970-F0374188A09D}.Debug|Mixed Platforms.Build.0 = Debug|x86
+		{1E0A8EB2-7022-42E2-8970-F0374188A09D}.Debug|x64.ActiveCfg = Debug|x64
+		{1E0A8EB2-7022-42E2-8970-F0374188A09D}.Debug|x64.Build.0 = Debug|x64
+		{1E0A8EB2-7022-42E2-8970-F0374188A09D}.Debug|x86.ActiveCfg = Debug|x86
+		{1E0A8EB2-7022-42E2-8970-F0374188A09D}.Debug|x86.Build.0 = Debug|x86
+		{1E0A8EB2-7022-42E2-8970-F0374188A09D}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{1E0A8EB2-7022-42E2-8970-F0374188A09D}.Release|Any CPU.Build.0 = Release|Any CPU
+		{1E0A8EB2-7022-42E2-8970-F0374188A09D}.Release|Mixed Platforms.ActiveCfg = Release|x86
+		{1E0A8EB2-7022-42E2-8970-F0374188A09D}.Release|Mixed Platforms.Build.0 = Release|x86
+		{1E0A8EB2-7022-42E2-8970-F0374188A09D}.Release|x64.ActiveCfg = Release|x64
+		{1E0A8EB2-7022-42E2-8970-F0374188A09D}.Release|x64.Build.0 = Release|x64
+		{1E0A8EB2-7022-42E2-8970-F0374188A09D}.Release|x86.ActiveCfg = Release|x86
+		{1E0A8EB2-7022-42E2-8970-F0374188A09D}.Release|x86.Build.0 = Release|x86
+		{625E5D7F-86F6-4961-89D0-3835BF261ACC}.Debug|Any CPU.ActiveCfg = Debug|x86
+		{625E5D7F-86F6-4961-89D0-3835BF261ACC}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
+		{625E5D7F-86F6-4961-89D0-3835BF261ACC}.Debug|Mixed Platforms.Build.0 = Debug|x86
+		{625E5D7F-86F6-4961-89D0-3835BF261ACC}.Debug|x64.ActiveCfg = Debug|x86
+		{625E5D7F-86F6-4961-89D0-3835BF261ACC}.Debug|x86.ActiveCfg = Debug|x86
+		{625E5D7F-86F6-4961-89D0-3835BF261ACC}.Debug|x86.Build.0 = Debug|x86
+		{625E5D7F-86F6-4961-89D0-3835BF261ACC}.Release|Any CPU.ActiveCfg = Debug|x86
+		{625E5D7F-86F6-4961-89D0-3835BF261ACC}.Release|Mixed Platforms.ActiveCfg = Debug|x86
+		{625E5D7F-86F6-4961-89D0-3835BF261ACC}.Release|Mixed Platforms.Build.0 = Debug|x86
+		{625E5D7F-86F6-4961-89D0-3835BF261ACC}.Release|x64.ActiveCfg = Debug|x86
+		{625E5D7F-86F6-4961-89D0-3835BF261ACC}.Release|x86.ActiveCfg = Debug|x86
+		{625E5D7F-86F6-4961-89D0-3835BF261ACC}.Release|x86.Build.0 = Debug|x86
+		{65FE2973-B4E6-49DE-8F57-55490D4B4FD4}.Debug|Any CPU.ActiveCfg = Debug|x86
+		{65FE2973-B4E6-49DE-8F57-55490D4B4FD4}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
+		{65FE2973-B4E6-49DE-8F57-55490D4B4FD4}.Debug|Mixed Platforms.Build.0 = Debug|x86
+		{65FE2973-B4E6-49DE-8F57-55490D4B4FD4}.Debug|x64.ActiveCfg = Debug|x86
+		{65FE2973-B4E6-49DE-8F57-55490D4B4FD4}.Debug|x86.ActiveCfg = Debug|x86
+		{65FE2973-B4E6-49DE-8F57-55490D4B4FD4}.Debug|x86.Build.0 = Debug|x86
+		{65FE2973-B4E6-49DE-8F57-55490D4B4FD4}.Release|Any CPU.ActiveCfg = Release|x86
+		{65FE2973-B4E6-49DE-8F57-55490D4B4FD4}.Release|Mixed Platforms.ActiveCfg = Release|x86
+		{65FE2973-B4E6-49DE-8F57-55490D4B4FD4}.Release|Mixed Platforms.Build.0 = Release|x86
+		{65FE2973-B4E6-49DE-8F57-55490D4B4FD4}.Release|x64.ActiveCfg = Release|x86
+		{65FE2973-B4E6-49DE-8F57-55490D4B4FD4}.Release|x86.ActiveCfg = Release|x86
+		{65FE2973-B4E6-49DE-8F57-55490D4B4FD4}.Release|x86.Build.0 = Release|x86
+	EndGlobalSection
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
+EndGlobal

+ 27 - 15
Exporters/FBX - OBJ/BabylonExport.Core/BabylonExport.Core.csproj

@@ -9,7 +9,7 @@
     <AppDesignerFolder>Properties</AppDesignerFolder>
     <RootNamespace>BabylonExport.Core</RootNamespace>
     <AssemblyName>BabylonExport.Core</AssemblyName>
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
+    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
     <FileAlignment>512</FileAlignment>
     <SccProjectName>SAK</SccProjectName>
     <SccLocalPath>SAK</SccLocalPath>
@@ -149,11 +149,13 @@
     <Compile Include="Entities\PositionNormalTexturedWeights.cs" />
     <Compile Include="Entities\ProxyMesh.cs" />
     <Compile Include="Entities\StandardMaterial.cs" />
-    <Compile Include="Exporters\FBX\FBXExporter.cs" />
-    <Compile Include="Exporters\FBX\XNA\ContentBuilder.cs" />
-    <Compile Include="Exporters\FBX\XNA\ErrorLogger.cs" />
-    <Compile Include="Exporters\FBX\XNA\GraphicsDeviceService.cs" />
-    <Compile Include="Exporters\FBX\XNA\ServiceContainer.cs" />
+    <Compile Include="Exporters\ThroughXNA\DAE\DAEExporter.cs" />
+    <Compile Include="Exporters\ThroughXNA\FBX\FBXExporter.cs" />
+    <Compile Include="Exporters\ThroughXNA\XNAExporter.cs" />
+    <Compile Include="Exporters\ThroughXNA\XNA\ContentBuilder.cs" />
+    <Compile Include="Exporters\ThroughXNA\XNA\ErrorLogger.cs" />
+    <Compile Include="Exporters\ThroughXNA\XNA\GraphicsDeviceService.cs" />
+    <Compile Include="Exporters\ThroughXNA\XNA\ServiceContainer.cs" />
     <Compile Include="Exporters\IExporter.cs" />
     <Compile Include="Exporters\MXB\NovaExporter.cs" />
     <Compile Include="Exporters\MXB\NovaExporter.Materials.cs" />
@@ -170,34 +172,34 @@
   </ItemGroup>
   <ItemGroup>
     <None Include="Exporters\Blender\io_export_babylon.py" />
-    <None Include="Exporters\FBX\XNA\XNA Game Studio\Microsoft.Xna.GameStudio.ContentPipelineExtensions.targets">
+    <None Include="Exporters\ThroughXNA\XNA\XNA Game Studio\Microsoft.Xna.GameStudio.ContentPipelineExtensions.targets">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </None>
-    <None Include="Exporters\FBX\XNA\XNA Game Studio\Microsoft.Xna.GameStudio.targets">
+    <None Include="Exporters\ThroughXNA\XNA\XNA Game Studio\Microsoft.Xna.GameStudio.targets">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </None>
-    <None Include="Exporters\FBX\XNA\XNA Game Studio\v4.0\Microsoft.Xna.GameStudio.AvailablePlatforms.targets">
+    <None Include="Exporters\ThroughXNA\XNA\XNA Game Studio\v4.0\Microsoft.Xna.GameStudio.AvailablePlatforms.targets">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </None>
-    <None Include="Exporters\FBX\XNA\XNA Game Studio\v4.0\Microsoft.Xna.GameStudio.Common.targets">
+    <None Include="Exporters\ThroughXNA\XNA\XNA Game Studio\v4.0\Microsoft.Xna.GameStudio.Common.targets">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </None>
-    <None Include="Exporters\FBX\XNA\XNA Game Studio\v4.0\Microsoft.Xna.GameStudio.Content.targets">
+    <None Include="Exporters\ThroughXNA\XNA\XNA Game Studio\v4.0\Microsoft.Xna.GameStudio.Content.targets">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </None>
-    <None Include="Exporters\FBX\XNA\XNA Game Studio\v4.0\Microsoft.Xna.GameStudio.ContentPipeline.targets">
+    <None Include="Exporters\ThroughXNA\XNA\XNA Game Studio\v4.0\Microsoft.Xna.GameStudio.ContentPipeline.targets">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </None>
-    <None Include="Exporters\FBX\XNA\XNA Game Studio\v4.0\Microsoft.Xna.GameStudio.Windows.targets">
+    <None Include="Exporters\ThroughXNA\XNA\XNA Game Studio\v4.0\Microsoft.Xna.GameStudio.Windows.targets">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </None>
-    <None Include="Exporters\FBX\XNA\XNA Game Studio\v4.0\Microsoft.Xna.GameStudio.Xbox 360.targets">
+    <None Include="Exporters\ThroughXNA\XNA\XNA Game Studio\v4.0\Microsoft.Xna.GameStudio.Xbox 360.targets">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </None>
     <None Include="Refs\xnafx40_redist.msi" />
   </ItemGroup>
   <ItemGroup>
-    <None Include="Exporters\FBX\XNA\XNA Game Studio\v4.0\Microsoft.Xna.Framework.Tools.Packaging.Tasks.dll">
+    <None Include="Exporters\ThroughXNA\XNA\XNA Game Studio\v4.0\Microsoft.Xna.Framework.Tools.Packaging.Tasks.dll">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </None>
   </ItemGroup>
@@ -222,6 +224,16 @@
     <Content Include="Refs\Vertice.Nova.Interop.dll" />
     <Content Include="Refs\Vertice.Wrappers.DirectX.dll" />
   </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="Exporters\ThroughXNA\DAE\ColladaXna\ColladaXnaBase\ColladaXnaBase.csproj">
+      <Project>{65FE2973-B4E6-49DE-8F57-55490D4B4FD4}</Project>
+      <Name>ColladaXnaBase</Name>
+    </ProjectReference>
+    <ProjectReference Include="Exporters\ThroughXNA\DAE\ColladaXna\ColladaXnaImporter\ColladaXnaImporter.csproj">
+      <Project>{625E5D7F-86F6-4961-89D0-3835BF261ACC}</Project>
+      <Name>ColladaXnaImporter</Name>
+    </ProjectReference>
+  </ItemGroup>
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
        Other similar extension points exist, see Microsoft.Common.targets.

Exporters/FBX - OBJ/BabylonExport.Core/Entities/Export/BabylonAnimation.cs → Exporters/XNA - OBJ/BabylonExport.Core/Entities/Export/BabylonAnimation.cs


Exporters/FBX - OBJ/BabylonExport.Core/Entities/Export/BabylonAnimationKey.cs → Exporters/XNA - OBJ/BabylonExport.Core/Entities/Export/BabylonAnimationKey.cs


Exporters/FBX - OBJ/BabylonExport.Core/Entities/Export/BabylonBone.cs → Exporters/XNA - OBJ/BabylonExport.Core/Entities/Export/BabylonBone.cs


Exporters/FBX - OBJ/BabylonExport.Core/Entities/Export/BabylonCamera.cs → Exporters/XNA - OBJ/BabylonExport.Core/Entities/Export/BabylonCamera.cs


Exporters/FBX - OBJ/BabylonExport.Core/Entities/Export/BabylonLensFlare.cs → Exporters/XNA - OBJ/BabylonExport.Core/Entities/Export/BabylonLensFlare.cs


Exporters/FBX - OBJ/BabylonExport.Core/Entities/Export/BabylonLensFlareSystem.cs → Exporters/XNA - OBJ/BabylonExport.Core/Entities/Export/BabylonLensFlareSystem.cs


Exporters/FBX - OBJ/BabylonExport.Core/Entities/Export/BabylonLight.cs → Exporters/XNA - OBJ/BabylonExport.Core/Entities/Export/BabylonLight.cs


Exporters/FBX - OBJ/BabylonExport.Core/Entities/Export/BabylonMaterial.cs → Exporters/XNA - OBJ/BabylonExport.Core/Entities/Export/BabylonMaterial.cs


Exporters/FBX - OBJ/BabylonExport.Core/Entities/Export/BabylonMesh.cs → Exporters/XNA - OBJ/BabylonExport.Core/Entities/Export/BabylonMesh.cs


Exporters/FBX - OBJ/BabylonExport.Core/Entities/Export/BabylonMultiMaterial.cs → Exporters/XNA - OBJ/BabylonExport.Core/Entities/Export/BabylonMultiMaterial.cs


Exporters/FBX - OBJ/BabylonExport.Core/Entities/Export/BabylonParticleSystem.cs → Exporters/XNA - OBJ/BabylonExport.Core/Entities/Export/BabylonParticleSystem.cs


Exporters/FBX - OBJ/BabylonExport.Core/Entities/Export/BabylonScene.cs → Exporters/XNA - OBJ/BabylonExport.Core/Entities/Export/BabylonScene.cs


Exporters/FBX - OBJ/BabylonExport.Core/Entities/Export/BabylonShadowGenerator.cs → Exporters/XNA - OBJ/BabylonExport.Core/Entities/Export/BabylonShadowGenerator.cs


Exporters/FBX - OBJ/BabylonExport.Core/Entities/Export/BabylonSkeleton.cs → Exporters/XNA - OBJ/BabylonExport.Core/Entities/Export/BabylonSkeleton.cs


Exporters/FBX - OBJ/BabylonExport.Core/Entities/Export/BabylonSubMesh.cs → Exporters/XNA - OBJ/BabylonExport.Core/Entities/Export/BabylonSubMesh.cs


Exporters/FBX - OBJ/BabylonExport.Core/Entities/Export/BabylonTexture.cs → Exporters/XNA - OBJ/BabylonExport.Core/Entities/Export/BabylonTexture.cs


Exporters/FBX - OBJ/BabylonExport.Core/Entities/IDumpable.cs → Exporters/XNA - OBJ/BabylonExport.Core/Entities/IDumpable.cs


Exporters/FBX - OBJ/BabylonExport.Core/Entities/IQueryable.cs → Exporters/XNA - OBJ/BabylonExport.Core/Entities/IQueryable.cs


Exporters/FBX - OBJ/BabylonExport.Core/Entities/Mesh.cs → Exporters/XNA - OBJ/BabylonExport.Core/Entities/Mesh.cs


Exporters/FBX - OBJ/BabylonExport.Core/Entities/PositionNormalTextured.cs → Exporters/XNA - OBJ/BabylonExport.Core/Entities/PositionNormalTextured.cs


Exporters/FBX - OBJ/BabylonExport.Core/Entities/PositionNormalTexturedWeights.cs → Exporters/XNA - OBJ/BabylonExport.Core/Entities/PositionNormalTexturedWeights.cs


Exporters/FBX - OBJ/BabylonExport.Core/Entities/ProxyMesh.cs → Exporters/XNA - OBJ/BabylonExport.Core/Entities/ProxyMesh.cs


Exporters/FBX - OBJ/BabylonExport.Core/Entities/StandardMaterial.cs → Exporters/XNA - OBJ/BabylonExport.Core/Entities/StandardMaterial.cs


Exporters/FBX - OBJ/BabylonExport.Core/Exporters/Blender/io_export_babylon.py → Exporters/XNA - OBJ/BabylonExport.Core/Exporters/Blender/io_export_babylon.py


Exporters/FBX - OBJ/BabylonExport.Core/Exporters/IExporter.cs → Exporters/XNA - OBJ/BabylonExport.Core/Exporters/IExporter.cs


Exporters/FBX - OBJ/BabylonExport.Core/Exporters/MXB/NovaExporter.Materials.cs → Exporters/XNA - OBJ/BabylonExport.Core/Exporters/MXB/NovaExporter.Materials.cs


Exporters/FBX - OBJ/BabylonExport.Core/Exporters/MXB/NovaExporter.cs → Exporters/XNA - OBJ/BabylonExport.Core/Exporters/MXB/NovaExporter.cs


Exporters/FBX - OBJ/BabylonExport.Core/Exporters/OBJ/Document.cs → Exporters/XNA - OBJ/BabylonExport.Core/Exporters/OBJ/Document.cs


Exporters/FBX - OBJ/BabylonExport.Core/Exporters/OBJ/Line.cs → Exporters/XNA - OBJ/BabylonExport.Core/Exporters/OBJ/Line.cs


Exporters/FBX - OBJ/BabylonExport.Core/Exporters/OBJ/MtlHeader.cs → Exporters/XNA - OBJ/BabylonExport.Core/Exporters/OBJ/MtlHeader.cs


Exporters/FBX - OBJ/BabylonExport.Core/Exporters/OBJ/MtlLine.cs → Exporters/XNA - OBJ/BabylonExport.Core/Exporters/OBJ/MtlLine.cs


Exporters/FBX - OBJ/BabylonExport.Core/Exporters/OBJ/ObjExporter.Material.cs → Exporters/XNA - OBJ/BabylonExport.Core/Exporters/OBJ/ObjExporter.Material.cs


Exporters/FBX - OBJ/BabylonExport.Core/Exporters/OBJ/ObjExporter.cs → Exporters/XNA - OBJ/BabylonExport.Core/Exporters/OBJ/ObjExporter.cs


Exporters/FBX - OBJ/BabylonExport.Core/Exporters/OBJ/ObjHeader.cs → Exporters/XNA - OBJ/BabylonExport.Core/Exporters/OBJ/ObjHeader.cs


Exporters/FBX - OBJ/BabylonExport.Core/Exporters/OBJ/ObjLine.cs → Exporters/XNA - OBJ/BabylonExport.Core/Exporters/OBJ/ObjLine.cs


+ 1 - 0
Exporters/XNA - OBJ/BabylonExport.Core/Exporters/ThroughXNA/DAE/ColladaXna

@@ -0,0 +1 @@
+Subproject commit fc8c36d10129a9ef47cc294117f00be0203a4605

+ 28 - 0
Exporters/XNA - OBJ/BabylonExport.Core/Exporters/ThroughXNA/DAE/DAEExporter.cs

@@ -0,0 +1,28 @@
+using System.Collections.Generic;
+using BabylonExport.Core.Exporters.XNA;
+
+namespace BabylonExport.Core.Exporters.DAE
+{
+    public class DAEExporter : XNAExporter
+    {
+        public override string SupportedExtensions
+        {
+            get { return ".dae"; }
+        }
+
+        public override string Importer
+        {
+            get { return "ColladaStdModelImporter"; }
+        }
+
+        static readonly string[] extraPipelineAssemblies =
+        {
+            "ColladaXnaImporter",
+        };
+
+        public override IEnumerable<string> ExtraPipelineAssemblies
+        {
+            get { return extraPipelineAssemblies; }
+        }
+    }
+}

+ 28 - 0
Exporters/XNA - OBJ/BabylonExport.Core/Exporters/ThroughXNA/FBX/FBXExporter.cs

@@ -0,0 +1,28 @@
+using System.Collections.Generic;
+using BabylonExport.Core.Exporters.XNA;
+
+namespace BabylonExport.Core.Exporters.FBX
+{
+    public class FBXExporter : XNAExporter
+    {
+        public override string SupportedExtensions
+        {
+            get { return ".fbx"; }
+        }
+
+        public override string Importer
+        {
+            get { return null; } // use default one
+        }
+
+        static readonly string[] extraPipelineAssemblies =
+        {
+            "Microsoft.Xna.Framework.Content.Pipeline.FBXImporter, Version=4.0.0.0, PublicKeyToken=842cf8be1de50553",
+        };
+
+        public override IEnumerable<string> ExtraPipelineAssemblies 
+        {
+            get { return extraPipelineAssemblies; } 
+        }
+    }
+}

+ 12 - 6
Exporters/FBX - OBJ/BabylonExport.Core/Exporters/FBX/XNA/ContentBuilder.cs

@@ -8,7 +8,7 @@ using Microsoft.Build.Execution;
 using Microsoft.Build.Framework;
 using System.Windows.Forms;
 
-namespace BabylonExport.Core.Exporters.FBX
+namespace BabylonExport.Core.Exporters.XNA
 {
     class ContentBuilder : IDisposable
     {
@@ -16,7 +16,6 @@ namespace BabylonExport.Core.Exporters.FBX
 
         static readonly string[] pipelineAssemblies =
         {
-            "Microsoft.Xna.Framework.Content.Pipeline.FBXImporter" + xnaVersion,
             "Microsoft.Xna.Framework.Content.Pipeline.XImporter" + xnaVersion,
             "Microsoft.Xna.Framework.Content.Pipeline.TextureImporter" + xnaVersion,
             "Microsoft.Xna.Framework.Content.Pipeline.EffectImporter" + xnaVersion,
@@ -40,10 +39,10 @@ namespace BabylonExport.Core.Exporters.FBX
             get { return Path.Combine(buildDirectory, "bin"); }
         }
 
-        public ContentBuilder()
+        public ContentBuilder(IEnumerable<string> extraPipelineAssemblies = null)
         {
             CreateTempDirectory();
-            CreateBuildProject();
+            CreateBuildProject(extraPipelineAssemblies);
         }
 
         public void Dispose()
@@ -51,7 +50,7 @@ namespace BabylonExport.Core.Exporters.FBX
             DeleteTempDirectory();
         }
 
-        void CreateBuildProject()
+        void CreateBuildProject(IEnumerable<string> extraPipelineAssemblies = null)
         {
             string projectPath = Path.Combine(buildDirectory, "content.contentproj");
             string outputPath = Path.Combine(buildDirectory, "bin");
@@ -60,7 +59,7 @@ namespace BabylonExport.Core.Exporters.FBX
             projectRootElement = ProjectRootElement.Create(projectPath);
 
             // Include the standard targets file that defines how to build XNA Framework content.
-            projectRootElement.AddImport(Application.StartupPath + "\\Exporters\\FBX\\XNA\\XNA Game Studio\\" +
+            projectRootElement.AddImport(Application.StartupPath + "\\Exporters\\ThroughXNA\\XNA\\XNA Game Studio\\" +
                                          "v4.0\\Microsoft.Xna.GameStudio.ContentPipeline.targets");
 
             buildProject = new Project(projectRootElement);
@@ -78,6 +77,13 @@ namespace BabylonExport.Core.Exporters.FBX
             {
                 buildProject.AddItem("Reference", pipelineAssembly);
             }
+            if (extraPipelineAssemblies != null)
+            {
+                foreach (string pipelineAssembly in extraPipelineAssemblies)
+                {
+                    buildProject.AddItem("Reference", pipelineAssembly);
+                }
+            }
 
             // Hook up our custom error logger.
             errorLogger = new ErrorLogger();

+ 1 - 1
Exporters/FBX - OBJ/BabylonExport.Core/Exporters/FBX/XNA/ErrorLogger.cs

@@ -1,7 +1,7 @@
 using System.Collections.Generic;
 using Microsoft.Build.Framework;
 
-namespace BabylonExport.Core.Exporters.FBX
+namespace BabylonExport.Core.Exporters.XNA
 {
     class ErrorLogger : ILogger
     {

+ 1 - 1
Exporters/FBX - OBJ/BabylonExport.Core/Exporters/FBX/XNA/GraphicsDeviceService.cs

@@ -4,7 +4,7 @@ using Microsoft.Xna.Framework.Graphics;
 
 #pragma warning disable 67
 
-namespace BabylonExport.Core.Exporters.FBX
+namespace BabylonExport.Core.Exporters.XNA
 {
     public class GraphicsDeviceService : IGraphicsDeviceService
     {

+ 1 - 1
Exporters/FBX - OBJ/BabylonExport.Core/Exporters/FBX/XNA/ServiceContainer.cs

@@ -1,7 +1,7 @@
 using System;
 using System.Collections.Generic;
 
-namespace BabylonExport.Core.Exporters.FBX
+namespace BabylonExport.Core.Exporters.XNA
 {
     public class ServiceContainer : IServiceProvider
     {

Exporters/FBX - OBJ/BabylonExport.Core/Exporters/FBX/XNA/XNA Game Studio/Microsoft.Xna.GameStudio.ContentPipelineExtensions.targets → Exporters/XNA - OBJ/BabylonExport.Core/Exporters/ThroughXNA/XNA/XNA Game Studio/Microsoft.Xna.GameStudio.ContentPipelineExtensions.targets


Exporters/FBX - OBJ/BabylonExport.Core/Exporters/FBX/XNA/XNA Game Studio/Microsoft.Xna.GameStudio.targets → Exporters/XNA - OBJ/BabylonExport.Core/Exporters/ThroughXNA/XNA/XNA Game Studio/Microsoft.Xna.GameStudio.targets


Exporters/FBX - OBJ/BabylonExport.Core/Refs/Microsoft.Xna.Framework.Tools.Packaging.Tasks.dll → Exporters/XNA - OBJ/BabylonExport.Core/Exporters/ThroughXNA/XNA/XNA Game Studio/v4.0/Microsoft.Xna.Framework.Tools.Packaging.Tasks.dll


Exporters/FBX - OBJ/BabylonExport.Core/Exporters/FBX/XNA/XNA Game Studio/v4.0/Microsoft.Xna.GameStudio.AvailablePlatforms.targets → Exporters/XNA - OBJ/BabylonExport.Core/Exporters/ThroughXNA/XNA/XNA Game Studio/v4.0/Microsoft.Xna.GameStudio.AvailablePlatforms.targets


Exporters/FBX - OBJ/BabylonExport.Core/Exporters/FBX/XNA/XNA Game Studio/v4.0/Microsoft.Xna.GameStudio.Common.targets → Exporters/XNA - OBJ/BabylonExport.Core/Exporters/ThroughXNA/XNA/XNA Game Studio/v4.0/Microsoft.Xna.GameStudio.Common.targets


Exporters/FBX - OBJ/BabylonExport.Core/Exporters/FBX/XNA/XNA Game Studio/v4.0/Microsoft.Xna.GameStudio.Content.targets → Exporters/XNA - OBJ/BabylonExport.Core/Exporters/ThroughXNA/XNA/XNA Game Studio/v4.0/Microsoft.Xna.GameStudio.Content.targets


Exporters/FBX - OBJ/BabylonExport.Core/Exporters/FBX/XNA/XNA Game Studio/v4.0/Microsoft.Xna.GameStudio.ContentPipeline.targets → Exporters/XNA - OBJ/BabylonExport.Core/Exporters/ThroughXNA/XNA/XNA Game Studio/v4.0/Microsoft.Xna.GameStudio.ContentPipeline.targets


Exporters/FBX - OBJ/BabylonExport.Core/Exporters/FBX/XNA/XNA Game Studio/v4.0/Microsoft.Xna.GameStudio.Windows.targets → Exporters/XNA - OBJ/BabylonExport.Core/Exporters/ThroughXNA/XNA/XNA Game Studio/v4.0/Microsoft.Xna.GameStudio.Windows.targets


Exporters/FBX - OBJ/BabylonExport.Core/Exporters/FBX/XNA/XNA Game Studio/v4.0/Microsoft.Xna.GameStudio.Xbox 360.targets → Exporters/XNA - OBJ/BabylonExport.Core/Exporters/ThroughXNA/XNA/XNA Game Studio/v4.0/Microsoft.Xna.GameStudio.Xbox 360.targets


+ 10 - 13
Exporters/FBX - OBJ/BabylonExport.Core/Exporters/FBX/FBXExporter.cs

@@ -10,10 +10,15 @@ using Microsoft.Xna.Framework.Graphics;
 using SkinnedModel;
 using Vertice.Nova.Animations;
 
-namespace BabylonExport.Core.Exporters
+namespace BabylonExport.Core.Exporters.XNA
 {
-    public class FBXExporter : IExporter
+    public abstract class XNAExporter : IExporter
     {
+        public abstract string SupportedExtensions { get; }
+        public abstract string Importer { get; }
+
+        public virtual IEnumerable<string> ExtraPipelineAssemblies { get { return null; } }
+        
         public event Action<int> OnImportProgressChanged;
 
         readonly Dictionary<string, string> exportedTexturesFilename = new Dictionary<string, string>();
@@ -21,14 +26,6 @@ namespace BabylonExport.Core.Exporters
 
         private int texturesCount = 0;
 
-        public string SupportedExtensions
-        {
-            get
-            {
-                return ".fbx";
-            }
-        }
-
         public void GenerateBabylonFile(string file, string outputFile, bool skinned)
         {
             if (OnImportProgressChanged != null)
@@ -44,12 +41,12 @@ namespace BabylonExport.Core.Exporters
             
             services.AddService<IGraphicsDeviceService>(GraphicsDeviceService.AddRef(form.Handle, 1, 1));
 
-            var contentBuilder = new ContentBuilder();
+            var contentBuilder = new ContentBuilder(ExtraPipelineAssemblies);
             var contentManager = new ContentManager(services, contentBuilder.OutputDirectory);
 
             // Tell the ContentBuilder what to build.
             contentBuilder.Clear();
-            contentBuilder.Add(Path.GetFullPath(file), "Model", null, skinned ? "SkinnedModelProcessor" : "ModelProcessor");
+            contentBuilder.Add(Path.GetFullPath(file), "Model", Importer, skinned ? "SkinnedModelProcessor" : "ModelProcessor");
 
             // Build this new model data.
             string buildError = contentBuilder.Build();
@@ -210,7 +207,7 @@ namespace BabylonExport.Core.Exporters
                 {
                     var mesh = new Mesh<PositionNormalTextured>(material);
                     var vertices = new PositionNormalTextured[part.NumVertices];
-                    part.VertexBuffer.GetData(part.VertexOffset * PositionNormalTextured.Stride, vertices, 0, vertices.Length, PositionNormalTextured.Stride);
+                    part.VertexBuffer.GetData(part.VertexOffset * part.VertexBuffer.VertexDeclaration.VertexStride, vertices, 0, vertices.Length, part.VertexBuffer.VertexDeclaration.VertexStride);
 
                     for (int index = 0; index < vertices.Length; index++)
                     {

Exporters/FBX - OBJ/BabylonExport.Core/Properties/AssemblyInfo.cs → Exporters/XNA - OBJ/BabylonExport.Core/Properties/AssemblyInfo.cs


Exporters/FBX - OBJ/BabylonExport.Core/Refs/Microsoft.Xna.Framework.Content.Pipeline.AudioImporters.dll → Exporters/XNA - OBJ/BabylonExport.Core/Refs/Microsoft.Xna.Framework.Content.Pipeline.AudioImporters.dll


Exporters/FBX - OBJ/BabylonExport.Core/Refs/Microsoft.Xna.Framework.Content.Pipeline.EffectImporter.dll → Exporters/XNA - OBJ/BabylonExport.Core/Refs/Microsoft.Xna.Framework.Content.Pipeline.EffectImporter.dll


Exporters/FBX - OBJ/BabylonExport.Core/Refs/Microsoft.Xna.Framework.Content.Pipeline.FBXImporter.dll → Exporters/XNA - OBJ/BabylonExport.Core/Refs/Microsoft.Xna.Framework.Content.Pipeline.FBXImporter.dll


Exporters/FBX - OBJ/BabylonExport.Core/Refs/Microsoft.Xna.Framework.Content.Pipeline.TextureImporter.dll → Exporters/XNA - OBJ/BabylonExport.Core/Refs/Microsoft.Xna.Framework.Content.Pipeline.TextureImporter.dll


Exporters/FBX - OBJ/BabylonExport.Core/Refs/Microsoft.Xna.Framework.Content.Pipeline.VideoImporters.dll → Exporters/XNA - OBJ/BabylonExport.Core/Refs/Microsoft.Xna.Framework.Content.Pipeline.VideoImporters.dll


Exporters/FBX - OBJ/BabylonExport.Core/Refs/Microsoft.Xna.Framework.Content.Pipeline.XImporter.dll → Exporters/XNA - OBJ/BabylonExport.Core/Refs/Microsoft.Xna.Framework.Content.Pipeline.XImporter.dll


Exporters/FBX - OBJ/BabylonExport.Core/Refs/Microsoft.Xna.Framework.Content.Pipeline.dll → Exporters/XNA - OBJ/BabylonExport.Core/Refs/Microsoft.Xna.Framework.Content.Pipeline.dll


Exporters/FBX - OBJ/BabylonExport.Core/Exporters/FBX/XNA/XNA Game Studio/v4.0/Microsoft.Xna.Framework.Tools.Packaging.Tasks.dll → Exporters/XNA - OBJ/BabylonExport.Core/Refs/Microsoft.Xna.Framework.Tools.Packaging.Tasks.dll


Exporters/FBX - OBJ/BabylonExport.Core/Refs/SharpDX.DXGI.dll → Exporters/XNA - OBJ/BabylonExport.Core/Refs/SharpDX.DXGI.dll


Exporters/FBX - OBJ/BabylonExport.Core/Refs/SharpDX.Direct3D9.dll → Exporters/XNA - OBJ/BabylonExport.Core/Refs/SharpDX.Direct3D9.dll


Exporters/FBX - OBJ/BabylonExport.Core/Refs/SharpDX.dll → Exporters/XNA - OBJ/BabylonExport.Core/Refs/SharpDX.dll


Exporters/FBX - OBJ/BabylonExport.Core/Refs/SkinnedModel.dll → Exporters/XNA - OBJ/BabylonExport.Core/Refs/SkinnedModel.dll


Exporters/FBX - OBJ/BabylonExport.Core/Refs/SkinnedModelPipeline.dll → Exporters/XNA - OBJ/BabylonExport.Core/Refs/SkinnedModelPipeline.dll


Exporters/FBX - OBJ/BabylonExport.Core/Refs/Vertice.Core.dll → Exporters/XNA - OBJ/BabylonExport.Core/Refs/Vertice.Core.dll


Exporters/FBX - OBJ/BabylonExport.Core/Refs/Vertice.Nova.Core.DirectX10.dll → Exporters/XNA - OBJ/BabylonExport.Core/Refs/Vertice.Nova.Core.DirectX10.dll


Exporters/FBX - OBJ/BabylonExport.Core/Refs/Vertice.Nova.Core.DirectX9.dll → Exporters/XNA - OBJ/BabylonExport.Core/Refs/Vertice.Nova.Core.DirectX9.dll


Exporters/FBX - OBJ/BabylonExport.Core/Refs/Vertice.Nova.Interop.dll → Exporters/XNA - OBJ/BabylonExport.Core/Refs/Vertice.Nova.Interop.dll


Exporters/FBX - OBJ/BabylonExport.Core/Refs/Vertice.Nova.dll → Exporters/XNA - OBJ/BabylonExport.Core/Refs/Vertice.Nova.dll


Exporters/FBX - OBJ/BabylonExport.Core/Refs/Vertice.Wrappers.DirectX.dll → Exporters/XNA - OBJ/BabylonExport.Core/Refs/Vertice.Wrappers.DirectX.dll


Exporters/FBX - OBJ/BabylonExport.Core/Refs/xnafx40_redist.msi → Exporters/XNA - OBJ/BabylonExport.Core/Refs/xnafx40_redist.msi


Exporters/FBX - OBJ/BabylonExport.Core/Tools.cs → Exporters/XNA - OBJ/BabylonExport.Core/Tools.cs


+ 1 - 1
Exporters/FBX - OBJ/BabylonExport.Interface/BabylonExport.Interface.csproj

@@ -9,7 +9,7 @@
     <AppDesignerFolder>Properties</AppDesignerFolder>
     <RootNamespace>BabylonExport.Interface</RootNamespace>
     <AssemblyName>BabylonExport.Interface</AssemblyName>
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
+    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
     <FileAlignment>512</FileAlignment>
     <SccProjectName>SAK</SccProjectName>
     <SccLocalPath>SAK</SccLocalPath>

Exporters/FBX - OBJ/BabylonExport.Interface/IService.cs → Exporters/XNA - OBJ/BabylonExport.Interface/IService.cs


Exporters/FBX - OBJ/BabylonExport.Interface/Properties/AssemblyInfo.cs → Exporters/XNA - OBJ/BabylonExport.Interface/Properties/AssemblyInfo.cs


Exporters/FBX - OBJ/BabylonExport.zip → Exporters/XNA - OBJ/BabylonExport.zip


+ 1 - 1
Exporters/FBX - OBJ/BabylonExport/App.config

@@ -1,6 +1,6 @@
 <?xml version="1.0"?>
 <configuration>
   <startup useLegacyV2RuntimeActivationPolicy="true"> 
-        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5"/>
+        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
     </startup>
 </configuration>

+ 10 - 2
Exporters/FBX - OBJ/BabylonExport/BabylonExport.csproj

@@ -9,7 +9,7 @@
     <AppDesignerFolder>Properties</AppDesignerFolder>
     <RootNamespace>BabylonExport</RootNamespace>
     <AssemblyName>BabylonExport</AssemblyName>
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
+    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
     <FileAlignment>512</FileAlignment>
     <SccProjectName>SAK</SccProjectName>
     <SccLocalPath>SAK</SccLocalPath>
@@ -174,7 +174,7 @@
   </ItemGroup>
   <ItemGroup>
     <Content Include="generateAll.bat">
-      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+      <!--<CopyToOutputDirectory>Always</CopyToOutputDirectory>-->
     </Content>
     <None Include="Test scenes\Chimie\BalanceDM.dds" />
     <None Include="Test scenes\Chimie\BalanceLightingMap.dds" />
@@ -916,6 +916,14 @@
       <Project>{ce70b051-fb63-420d-80c0-51cc03a214ba}</Project>
       <Name>BabylonExport.Core</Name>
     </ProjectReference>
+    <ProjectReference Include="..\BabylonExport.Core\Exporters\ThroughXNA\DAE\ColladaXna\ColladaXnaBase\ColladaXnaBase.csproj">
+      <Project>{65FE2973-B4E6-49DE-8F57-55490D4B4FD4}</Project>
+      <Name>ColladaXnaBase</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\BabylonExport.Core\Exporters\ThroughXNA\DAE\ColladaXna\ColladaXnaImporter\ColladaXnaImporter.csproj">
+      <Project>{625E5D7F-86F6-4961-89D0-3835BF261ACC}</Project>
+      <Name>ColladaXnaImporter</Name>
+    </ProjectReference>
     <ProjectReference Include="..\BabylonExport.Interface\BabylonExport.Interface.csproj">
       <Project>{dec52846-ffcb-4a66-9f13-64f65b61edba}</Project>
       <Name>BabylonExport.Interface</Name>

Exporters/FBX - OBJ/BabylonExport/DirectShow.Net.dll → Exporters/XNA - OBJ/BabylonExport/DirectShow.Net.dll


Exporters/FBX - OBJ/BabylonExport/Exporters/Blender/io_export_babylon.zip → Exporters/XNA - OBJ/BabylonExport/Exporters/Blender/io_export_babylon.zip


+ 2 - 1
Exporters/FBX - OBJ/BabylonExport/Program.cs

@@ -7,6 +7,7 @@ using System.Windows.Forms;
 using System.ServiceModel;
 using BabylonExport.Interface;
 using BabylonExport.Core;
+using System.Linq;
 
 namespace BabylonExport
 {
@@ -76,7 +77,7 @@ namespace BabylonExport
                     }
 
                     // Browsing exporters
-                    foreach (var type in Assembly.GetAssembly(typeof(NovaExporter)).GetTypes())
+                    foreach (var type in Assembly.GetAssembly(typeof(NovaExporter)).GetTypes().Where(t => !t.IsAbstract))
                     {
                         var interf = type.GetInterface("BabylonExport.Core.IExporter");
                         if (interf != null)

Exporters/FBX - OBJ/BabylonExport/Service.cs → Exporters/XNA - OBJ/BabylonExport/Service.cs


Exporters/FBX - OBJ/BabylonExport/packages.config → Exporters/XNA - OBJ/BabylonExport/packages.config


Exporters/FBX - OBJ/readme.md → Exporters/XNA - OBJ/readme.md