Mesh Befehle für 3D Fortgeschrittene

Übersicht BlitzBasic Codearchiv

Neue Antwort erstellen

Suco-X

Betreff: Mesh Befehle für 3D Fortgeschrittene

BeitragDo, Feb 26, 2004 6:44
Antworten mit Zitat
Benutzer-Profile anzeigen
ScaleMeshTexture arbeitet wie ScaleTexture, nur das diese änderungen an den Mesh Textur Koordinaten vorgenommen werden. Somit fallen die nachteile von ScaleTexture weg.
MeshFromSurface erstellt ein neues Mesh vom gewünschten Surface des Source Mesh und gibt den Handle zurück.
BlitzBasic: [AUSKLAPPEN]

Function MeshFromSurface(mesh, surface_num, delete_surface = 1)

If surface_num = 0 Or surface_num>CountSurfaces(mesh)
Return 0
EndIf

Local final_mesh = CreateMesh()
Local temp_surface = GetSurface(mesh, surface_num)
Local final_surface = CreateSurface(final_mesh)
Local mesh_brush = GetSurfaceBrush(temp_surface)
Local vert_1, vert_2, vert_3
Local vert_num1, vert_num2, vert_num3


For i = 0 To CountTriangles(temp_surface)-1
vert_num1 = TriangleVertex(temp_surface,i,0)
vert_num2 = TriangleVertex(temp_surface,i,1)
vert_num3 = TriangleVertex(temp_surface,i,2)

vert_1 =AddVertex(final_surface, VertexX(temp_surface,vert_num1), VertexY(temp_surface,vert_num1), VertexZ(temp_surface,vert_num1), VertexU(temp_surface,vert_num1), VertexV(temp_surface,vert_num1), VertexW(temp_surface, vert_num1))
vert_2 =AddVertex(final_surface, VertexX(temp_surface,vert_num2), VertexY(temp_surface,vert_num2), VertexZ(temp_surface,vert_num2), VertexU(temp_surface,vert_num2), VertexV(temp_surface,vert_num2), VertexW(temp_surface, vert_num2))
vert_3 =AddVertex(final_surface, VertexX(temp_surface,vert_num3), VertexY(temp_surface,vert_num3), VertexZ(temp_surface,vert_num3), VertexU(temp_surface,vert_num3), VertexV(temp_surface,vert_num3), VertexW(temp_surface, vert_num3))

VertexTexCoords(final_surface, vert_1, VertexU(temp_surface,vert_num1,1), VertexV(temp_surface, vert_num1,1),0,1)
VertexTexCoords(final_surface, vert_2, VertexU(temp_surface,vert_num2,1), VertexV(temp_surface, vert_num2,1),0,1)
VertexTexCoords(final_surface, vert_3, VertexU(temp_surface,vert_num3,1), VertexV(temp_surface, vert_num3,1),0,1)
AddTriangle(final_surface, vert_1, vert_2, vert_3)
Next



If delete_surface = 1
ClearSurface(temp_surface)
EndIf

UpdateNormals(final_mesh)
PaintMesh(final_mesh, mesh_brush)
FreeBrush(mesh_brush)

Return final_mesh
End Function




Function ScaleMeshTexture(mesh, xsize#,ysize#,texture_layer = 0,certain_surface = -1)

If certain_surface = 0
Return 0
EndIf

Local temp_u#, temp_v#

If certain_surface = -1
Local mesh_surfaces[500]
Local surface_anzahl = CountSurfaces(mesh)

For i = 1 To surface_anzahl
mesh_surfaces[i] = GetSurface(mesh,i)
Next


For i = 1 To surface_anzahl
For ii = 0 To CountVertices(mesh_surfaces[i])-1
temp_u = VertexU(mesh_surfaces[i],ii, texture_layer)
temp_v = VertexV(mesh_surfaces[i],ii,texture_layer)
VertexTexCoords(mesh_surfaces[i],ii, temp_u*xsize, temp_v*ysize,0, texture_layer)
Next
Next
Else
If certain_surface>CountSurfaces(mesh)
Return 0
EndIf


Local temp_surface = GetSurface(mesh, certain_surface)

If temp_surface = 0
Return 0
EndIf


For i = 0 To CountVertices(temp_surface)-1
temp_u = VertexU(temp_surface,i, texture_layer)
temp_v = VertexV(temp_surface,i, texture_layer)
VertexTexCoords(temp_surface,i, temp_u*xsize, temp_v*ysize,0, texture_layer)
Next
EndIf

End Function

bye
Intel Core 2 Quad Q8300, 4× 2500 MHz, 4096 MB DDR2-Ram, GeForce 9600GT 512 MB
  • Zuletzt bearbeitet von Suco-X am Di, Okt 26, 2004 1:09, insgesamt 2-mal bearbeitet

Wild-Storm

BeitragDi, März 09, 2004 20:34
Antworten mit Zitat
Benutzer-Profile anzeigen
aha......

[edit]kewl (jetzt wo was da is, aber was war diese bye für ne aktion??)[/edit]
Visit http://www.next-dimension.org
-------------------------------------------------
Freeware Modelle, Texturen & Sounds:
http://www.blitzforum.de/forum...hp?t=12875
  • Zuletzt bearbeitet von Wild-Storm am Di, März 09, 2004 21:44, insgesamt einmal bearbeitet

Boris0190

BeitragDi, März 09, 2004 21:01
Antworten mit Zitat
Benutzer-Profile anzeigen
äh hab ich was verpasst? Smile
If windows is the sollution, I want my problems back! -
The only way to have a friend is to be one

Neue Antwort erstellen


Übersicht BlitzBasic Codearchiv

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group