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] [EINKLAPPEN] 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
|