190930
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user