convert VB to C#
This commit is contained in:
@@ -1,195 +0,0 @@
|
||||
Imports System.IO
|
||||
Imports System.Numerics
|
||||
|
||||
Public Class Object3D
|
||||
|
||||
Public ReadOnly Property Meshes As New List(Of Mesh)
|
||||
Public ReadOnly Property Materials As New Dictionary(Of String, Material)
|
||||
Public Property Shading As New Shading
|
||||
|
||||
Public Sub ScaleModel(factor As Single)
|
||||
For Each m As Mesh In Meshes
|
||||
For Each v As Vertex In m.Vertices
|
||||
v.X *= factor
|
||||
v.Y *= factor
|
||||
v.Z *= factor
|
||||
Next
|
||||
Next
|
||||
End Sub
|
||||
|
||||
Public Sub OffsetModel(off As Vector3)
|
||||
For Each m As Mesh In Meshes
|
||||
For Each v As Vertex In m.Vertices
|
||||
v.X += off.X
|
||||
v.Y += off.Y
|
||||
v.Z += off.Z
|
||||
Next
|
||||
Next
|
||||
End Sub
|
||||
|
||||
Public Function GetBoundaries() As ModelBoundaries
|
||||
Dim maxX As Single? = Nothing
|
||||
Dim maxY As Single? = Nothing
|
||||
Dim maxZ As Single? = Nothing
|
||||
Dim minX As Single? = Nothing
|
||||
Dim minY As Single? = Nothing
|
||||
Dim minZ As Single? = Nothing
|
||||
|
||||
For Each m As Mesh In Meshes
|
||||
For Each vert As Vertex In m.Vertices
|
||||
If maxX Is Nothing OrElse vert.X > maxX Then maxX = vert.X
|
||||
If maxY Is Nothing OrElse vert.Y > maxY Then maxY = vert.Y
|
||||
If maxZ Is Nothing OrElse vert.Z > maxZ Then maxZ = vert.Z
|
||||
If minX Is Nothing OrElse vert.X < minX Then minX = vert.X
|
||||
If minY Is Nothing OrElse vert.Y < minY Then minY = vert.Y
|
||||
If minZ Is Nothing OrElse vert.Z < minZ Then minZ = vert.Z
|
||||
Next
|
||||
Next
|
||||
|
||||
If maxX Is Nothing Then maxX = 0
|
||||
If maxY Is Nothing Then maxY = 0
|
||||
If maxZ Is Nothing Then maxZ = 0
|
||||
If minX Is Nothing Then minX = 0
|
||||
If minY Is Nothing Then minY = 0
|
||||
If minZ Is Nothing Then minZ = 0
|
||||
|
||||
Return New ModelBoundaries(New Vector3(maxX, maxY, maxZ),
|
||||
New Vector3(minX, minY, minZ))
|
||||
End Function
|
||||
|
||||
Public Sub SetNullVertices()
|
||||
Dim newVert As New Vertex With {.X = 0, .Y = 0, .Z = 0}
|
||||
Dim nullCounter As Integer
|
||||
|
||||
For Each m As Mesh In Meshes
|
||||
nullCounter = 0
|
||||
|
||||
For Each f As Face In m.Faces
|
||||
For Each p As Point In f.Points
|
||||
If p.Vertex Is Nothing Then
|
||||
p.Vertex = newVert
|
||||
nullCounter += 1
|
||||
End If
|
||||
Next
|
||||
Next
|
||||
|
||||
If nullCounter > 0 Then
|
||||
m.Vertices.Add(newVert)
|
||||
End If
|
||||
Next
|
||||
End Sub
|
||||
|
||||
Public Sub SetNullUVs()
|
||||
Dim newUV As New UV With {.U = 0, .V = 0}
|
||||
Dim nullCounter As Integer
|
||||
|
||||
For Each m As Mesh In Meshes
|
||||
nullCounter = 0
|
||||
|
||||
For Each f As Face In m.Faces
|
||||
For Each p As Point In f.Points
|
||||
If p.UV Is Nothing Then
|
||||
p.UV = newUV
|
||||
nullCounter += 1
|
||||
End If
|
||||
Next
|
||||
Next
|
||||
|
||||
If nullCounter > 0 Then
|
||||
m.UVs.Add(newUV)
|
||||
End If
|
||||
Next
|
||||
End Sub
|
||||
|
||||
Public Sub SetNullNormals()
|
||||
Dim newNormal As New Normal With {.X = 0, .Y = 0, .Z = 1}
|
||||
Dim nullCounter As Integer
|
||||
|
||||
For Each m As Mesh In Meshes
|
||||
nullCounter = 0
|
||||
|
||||
For Each f As Face In m.Faces
|
||||
For Each p As Point In f.Points
|
||||
If p.Normal Is Nothing Then
|
||||
p.Normal = newNormal
|
||||
nullCounter += 1
|
||||
End If
|
||||
Next
|
||||
Next
|
||||
|
||||
If nullCounter > 0 Then
|
||||
m.Normals.Add(newNormal)
|
||||
End If
|
||||
Next
|
||||
End Sub
|
||||
|
||||
Public Sub RemoveUnusedMaterials()
|
||||
'Dim usedMats As New List(Of Material)
|
||||
'Dim unusedMats As New List(Of String)
|
||||
|
||||
'For Each f As Face In Faces
|
||||
' If Not usedMats.Contains(f.Material) Then
|
||||
' usedMats.Add(f.Material)
|
||||
' End If
|
||||
'Next
|
||||
|
||||
'For Each kvp As KeyValuePair(Of String, Material) In Materials
|
||||
' If Not usedMats.Contains(kvp.Value) Then
|
||||
' unusedMats.Add(kvp.Key)
|
||||
' End If
|
||||
'Next
|
||||
|
||||
'For Each k As String In unusedMats
|
||||
' Materials.Remove(k)
|
||||
'Next
|
||||
End Sub
|
||||
|
||||
Public Function ToOneMesh() As Object3D
|
||||
Dim newObject3D As New Object3D
|
||||
Dim newMesh As New Mesh
|
||||
|
||||
For Each mat As KeyValuePair(Of String, Material) In Materials
|
||||
newObject3D.Materials.Add(mat.Key, mat.Value)
|
||||
Next
|
||||
|
||||
For Each m As Mesh In Meshes
|
||||
For Each v As Vertex In m.Vertices
|
||||
newMesh.Vertices.Add(v)
|
||||
Next
|
||||
|
||||
For Each vc As VertexColor In m.VertexColors
|
||||
newMesh.VertexColors.Add(vc)
|
||||
Next
|
||||
|
||||
For Each n As Normal In m.Normals
|
||||
newMesh.Normals.Add(n)
|
||||
Next
|
||||
|
||||
For Each uv As UV In m.UVs
|
||||
newMesh.UVs.Add(uv)
|
||||
Next
|
||||
|
||||
For Each f As Face In m.Faces
|
||||
newMesh.Faces.Add(f)
|
||||
Next
|
||||
Next
|
||||
|
||||
newObject3D.Meshes.Add(newMesh)
|
||||
Return newObject3D
|
||||
End Function
|
||||
|
||||
Public Sub CenterModel()
|
||||
Mesh.CenterModel(Meshes)
|
||||
End Sub
|
||||
|
||||
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