Kopierte Meshs mit mehrere Texturen [gelöst]

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

TimBo

Betreff: Kopierte Meshs mit mehrere Texturen [gelöst]

BeitragFr, Okt 30, 2009 16:12
Antworten mit Zitat
Benutzer-Profile anzeigen
kurze Frage:
ich habe ein Mesh modelliert mit Blender und eine Standarttextur draufgeladen. Nun möchte ich aber , das Modell kopieren und eine neue Textur draufladen.
Geht sowas ?
Denn wenn ich eine Textur änder , dann wird diese bei den anderen Meshs auch geändert ?

mein bisheriger Ansatz:

BlitzBasic: [AUSKLAPPEN]

Global wueste=CopyMesh(world)
;Texturen
Global Wueste_Boden=LoadImage("models\DesertBoden.jpg")
world_surface = GetSurface(wueste,2)
world_brush = GetSurfaceBrush(world_surface)
world_text = GetBrushTexture(world_brush,0)
SetBuffer TextureBuffer(world_text)
DrawImage Wueste_Boden,0,0
ScaleTexture world_text,15,15
SetBuffer BackBuffer()


Vielen Dank schonmal

Grüße
TimBo
mfg Tim Borowski // CPU: Ryzen 2700x GPU: Nvidia RTX 2070 OC (Gigabyte) Ram: 16GB DDR4 @ 3000MHz OS: Windows 10
Stolzer Gewinner des BCC 25 & BCC 31
hat einen ersten Preis in der 1. Runde beim BWInf 2010/2011 & 2011/12 mit BlitzBasic erreicht.
  • Zuletzt bearbeitet von TimBo am Sa, Okt 31, 2009 15:58, insgesamt 2-mal bearbeitet

Xaymar

ehemals "Cgamer"

BeitragFr, Okt 30, 2009 17:14
Antworten mit Zitat
Benutzer-Profile anzeigen
BlitzBasic: [AUSKLAPPEN]
Graphics3D 800,600,32,2
SetBuffer BackBuffer()

Timer = CreateTimer(60)

cam = CreateCamera()
MoveEntity cam, 0, 0, -50


Mesh = LoadMesh("hierMESHfileREIN") ;Laden des Meshes

;Das wichtige
Mesh2 = CopyMesh(Mesh)
T_Surf = GetSurface(Mesh2, 1)
T_Brush = GetSurfaceBrush(T_Surf)
Tex2 = GetBrushTexture(T_Brush, 1)
If Tex2 <> 0
Tex3 = CreateTexture(TextureWidth(Tex2), TextureHeight(Tex2))
CopyRect 0, 0, TextureWidth(Tex2), TextureHeight(Tex2), 0, 0, TextureBuffer(Tex2), TextureBuffer(Tex3)

;Modifying
SetBuffer TextureBuffer(tex3)
Rect 16, 16, 100, 100, 1
SetBuffer BackBuffer()

EntityTexture Mesh2, Tex3
EndIf
;Ende des wichtigen

While Not KeyHit(1)
Cls



RenderWorld
Flip 0
WaitTimer Timer
Wend


Natürlich geht sowas siehe oberer Code. Du musst lediglich die Textur verdoppeln und wieder aufs mesh drraufpacken. Danach kannst du es nicht mehr mit dem neuerstellten mesh machen, ich kann(und auch andere) dir auch ne funktion dafür schreiben wo du dann jede Textur/Surface ändern kannst und das dann auch noch mit dem veränderten Mesh

EDIT:

Die Funktion Smile :
BlitzBasic: [AUSKLAPPEN]
Function ModifySurfaceTexture(Mesh, SurfC, TexC, Flags=1)
If Mesh <> 0
Local SurfCount = CountSurfaces(Mesh)
If SurfCount >= SurfC
Local Brush = GetSurfaceBrush(GetSurface(Mesh, SurfC))
Local Tex = GetBrushTexture(TexC)
If Tex <> 0
Local Tex2 = CreateTexture(TextureWidth(Tex), TextureHeight(Tex), Flags)
CopyRect 0,0, TextureWidth(Tex), TextureHeight(Tex), 0, 0, TextureBuffer(Tex), TextureBuffer(Tex2)
BrushTexture Brush, Tex2, 0, TexC
Return Tex
Else
Return 0
EndIf
EndIf
Return 0
EndIf
End Function


Edit: Noch 'n kleinen fix reingepappt
Warbseite

TimBo

BeitragSa, Okt 31, 2009 15:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi

leider funktioniert dein Code nicht so ganz Sad

habe aber auch selber weiter versucht
BlitzBasic: [AUSKLAPPEN]
Global rohling=LoadMesh("models\Boden.3ds")
HideEntity rohling

Test=CopyEntity(rohling)
DebugLog CountSurfaces(rohling)
Local Surface=GetSurface(rohling,1)
Local Brush =CreateBrush(255,0,0)
;BrushTexture Brush,Wald_Boden
PaintSurface Surface,Brush



bei dem Code geht es , die gewünschten Surfaces einzufärben, aber das mit der Textur klappt nicht.
Die Textur wird nicht auf das Surface gemalt, das Surface wird nur anders-rot eingefärbt, wenn ich die kommentierte Zeile aktiviere..



Viele Grüße
TimBo

Edit:
habe nach sau langer Zeit endlich gecheckt, das ich die Textur mit Scaletextur(100,100) vergrößern muss.
Das war die Lösung.

Vielen Dank aber für deine Hilfe !
mfg Tim Borowski // CPU: Ryzen 2700x GPU: Nvidia RTX 2070 OC (Gigabyte) Ram: 16GB DDR4 @ 3000MHz OS: Windows 10
Stolzer Gewinner des BCC 25 & BCC 31
hat einen ersten Preis in der 1. Runde beim BWInf 2010/2011 & 2011/12 mit BlitzBasic erreicht.

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group