This commit is contained in:
2019-09-30 16:18:53 +02:00
parent 7d884d7cba
commit 53f2a0666b
70 changed files with 2984 additions and 197 deletions

View File

@@ -8,34 +8,35 @@ Public Class Mesh
Public ReadOnly Property VertexColors As New List(Of VertexColor)
Public ReadOnly Property Faces As New List(Of Face)
Friend Function GetCenterModelAvg() As Vector3
Public Sub CenterModel()
CenterModel({Me})
End Sub
Public Shared Sub CenterModel(meshes As IEnumerable(Of Mesh))
Dim avgX As Integer = 0
Dim avgY As Integer = 0
Dim avgZ As Integer = 0
Dim vertsCount As Long = 0
For Each v As Vertex In Vertices
avgX += v.X
avgY += v.Y
avgZ += v.Z
For Each m As Mesh In meshes
For Each v As Vertex In m.Vertices
avgX += v.X
avgY += v.Y
avgZ += v.Z
Next
vertsCount += m.Vertices.Count
Next
Return New Vector3(avgX, avgY, avgZ)
End Function
Dim avg As New Vector3(avgX, avgY, avgZ)
avg /= New Vector3(vertsCount)
Public Sub CenterModel()
Dim avg As Vector3 = GetCenterModelAvg()
avg /= New Vector3(Vertices.Count)
CenterModel(avg)
End Sub
Public Sub CenterModel(avg As Vector3)
For Each v As Vertex In Vertices
v.X -= avg.X
v.Y -= avg.Y
v.Z -= avg.Z
For Each m As Mesh In meshes
For Each v As Vertex In m.Vertices
v.X -= avg.X
v.Y -= avg.Y
v.Z -= avg.Z
Next
Next
End Sub
End Class
End Class

View File

@@ -179,22 +179,17 @@ Public Class Object3D
End Function
Public Sub CenterModel()
Dim avg As Vector3 = Vector3.Zero
Dim vertsCount As ULong = 0
For Each m As Mesh In Meshes
avg += m.GetCenterModelAvg
vertsCount += m.Vertices.Count
Next
avg /= vertsCount
CenterModel(avg)
Mesh.CenterModel(Meshes)
End Sub
Public Sub CenterModel(avg As Vector3)
For Each m As Mesh In Meshes
m.CenterModel(avg)
Public Shared Sub CenterModel(objs As IEnumerable(Of Object3D))
Dim meshes As New List(Of Mesh)
For Each obj As Object3D In objs
meshes.AddRange(obj.Meshes)
Next
Mesh.CenterModel(meshes)
End Sub
End Class

View File

@@ -69,8 +69,11 @@ Public Class File3DLoaderModule
AssimpModule.AssimpLoader.LoadAssimpLibs()
Dim exts As New Dictionary(Of String, String)
For Each fd As Assimp.ExportFormatDescription In AssimpLibrary.Instance.GetExportFormatDescriptions
If Not exts.ContainsKey(fd.FileExtension) Then exts.Add(fd.FileExtension, fd.FormatId & " - " & fd.Description)
If Not exts.ContainsKey(fd.FileExtension) Then
exts.Add(fd.FileExtension, fd.FormatId & " - " & fd.Description)
End If
Next
exts.Add("blend", "Blender")
list.Add(New File3DLoaderModule("Assimp",
AddressOf LoadViaAssimp,

View File

@@ -52,12 +52,11 @@
<Reference Include="Aspose.3D, Version=18.4.0.0, Culture=neutral, PublicKeyToken=f071c641d0b4582b, processorArchitecture=MSIL">
<HintPath>..\packages\Aspose.3D.18.4.0\lib\net40\Aspose.3D.dll</HintPath>
</Reference>
<Reference Include="AssimpNet, Version=3.3.2.0, Culture=neutral, PublicKeyToken=0d51b391f59f42a6, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<Reference Include="AssimpNet">
<HintPath>..\Shared Libs\AssimpNet.dll</HintPath>
</Reference>
<Reference Include="ColladaSchema">
<HintPath>..\..\..\DLL's\ColladaSchema.dll</HintPath>
<HintPath>..\Shared Libs\ColladaSchema.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Data" />