Textur-Koordinaten bei einem Mesh setzen

Anfängerfragen zum Programmieren mit PureBasic.
IcedCoffee
Beiträge: 115
Registriert: 09.07.2005 12:11
Wohnort: Fürstenwald [Internat], Berlin[wen keine lust auf Internat], Wildau[Einfamilienhaus]
Kontaktdaten:

Textur-Koordinaten bei einem Mesh setzen

Beitrag von IcedCoffee »

Moin

ich will eine 3D pyramide haben aber habe keine ahnung wie ich die texturen koordinaten setzen muss damit sich die tx nicht immer widerholt also hir mein code

Code: Alles auswählen

If InitEngine3D() And InitSprite() And InitKeyboard() 
  OpenScreen(1024,768,32,"CreateMesh") 
  
  CreateTexture(2, 512, 512)
    StartDrawing(TextureOutput(2))
      Box(0,0,512,512,$FFFFFF)
      Box(0,0,32,32,$FF00FF)
    StopDrawing()
  CreateMaterial(3,TextureID(2))
  
  CreateMesh(4)
    SetMeshData(4, #PB_Mesh_Vertices, ?EckenDesObjeks, 5)
    SetMeshData(4, #PB_Mesh_Triangles, ?DasObjekt, 6)
    SetMeshData(4, #PB_Mesh_UVCoordinates, ?TexturenKoordinatenDesObjeks, 4)
  CreateEntity(5, MeshID(4), MaterialID(3))
  
  DataSection
    EckenDesObjeks:
      Data.f -1.0, 1.0, -0.5  ;0    0-----1
      Data.f  1.0, 1.0, -0.5  ;1    |\  / |
      Data.f -1.0, -1.0, -0.5 ;2    |  4  |
      Data.f 1.0, -1.0, -0.5  ;3    |/  \ |
      Data.f 0.0, 0.0, 0.5    ;4    2-----3
    
    TexturenKoordinatenDesObjeks:
      Data.f 1.0, 1.0
      Data.f -1.0, 1.0
      Data.f 1.0, -1.0
      Data.f -1.0, -1.0
  
    DasObjekt:
      Data.w 0,4,1
      Data.w 1,4,3
      Data.w 3,4,2
      Data.w 2,4,0
      Data.w 0,3,2
      Data.w 1,3,0

      
  EndDataSection
    
  CreateCamera(0, 0 , 0, 100, 100)
  MoveCamera(0, 0, 0, 10) 
  Repeat
    ExamineKeyboard()    
    
    RotateEntity(5, 1, 1, 1)
    RenderWorld()
    
    FlipBuffers()     
    Delay(10)
  Until KeyboardReleased(1)  
EndIf
End
oder könnt ihr mir mal einen link zu einem schönnen tut geben wo das mit dem mesh erklärt ist
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Beitrag von DarkDragon »

Texturkoordinaten gehen von 0 - 1 und nicht von -1 bis 1 bei identity matrix.
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
IcedCoffee
Beiträge: 115
Registriert: 09.07.2005 12:11
Wohnort: Fürstenwald [Internat], Berlin[wen keine lust auf Internat], Wildau[Einfamilienhaus]
Kontaktdaten:

Beitrag von IcedCoffee »

also irgend wie bekomme ich das nicht hin also hier mal meine Textur
Bild
hier mein Mesh

Code: Alles auswählen

  LoadTexture(2,"Tex.PNG")
  CreateMaterial(3,TextureID(2))
  
  CreateMesh(4)
    SetMeshData(4, #PB_Mesh_Vertices, ?EckenDesObjeks, 5)
    SetMeshData(4, #PB_Mesh_Triangles, ?DasObjekt, 6)
    SetMeshData(4, #PB_Mesh_UVCoordinates, ?TexturenKoordinatenDesObjeks, 4)
  CreateEntity(5, MeshID(4), MaterialID(3))
  
  DataSection
    EckenDesObjeks:
      Data.f -1.0, 1.0, -0.5  ;0    0-----1
      Data.f  1.0, 1.0, -0.5  ;1    |\  / |
      Data.f -1.0, -1.0, -0.5 ;2    |  4  |
      Data.f 1.0, -1.0, -0.5  ;3    |/  \ |
      Data.f 0.0, 0.0, 0.5    ;4    2-----3
    
    TexturenKoordinatenDesObjeks:
    Data.f 0.0, 0.0
    Data.f 1.0, 0.0
    Data.f 1.0, 1.0
    Data.f 0.0, 1.0
  
    DasObjekt:
      Data.w 0,4,1
      Data.w 1,4,3
      Data.w 3,4,2
      Data.w 2,4,0
      Data.w 0,3,2
      Data.w 1,3,0

      
  EndDataSection
und das ergebnis ist irgendwie nicht das was ich erwarte
leider kann ich gerade keine Screenshots machen da meine Druck taste kaput ist weil sonst hätte ich noch ein bild vom ergebnis gemacht
Benutzeravatar
Kiffi
Beiträge: 10719
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag von Kiffi »

> leider kann ich gerade keine Screenshots machen da meine Druck taste
> kaput ist weil sonst hätte ich noch ein bild vom ergebnis gemacht

Code: Alles auswählen

; English forum: http://purebasic.myforums.net/viewtopic.php?t=3695&highlight=
; Author: PB
; Date: 30. January 2002

#Desk = #False     ; set to #True, if you want SCREENSHOT of full desktop
                   ; set to #False, if you want only capture active window
                   
If #Desk = #True      ; make SCREENSHOT of full desktop
  keybd_event_(#VK_SNAPSHOT,0,0,0) ; Snapshot of entire desktop
  ; Note: Win 9x needs 1,0,0 for the entire desktop. 
Else                  ; make SCREENSHOT of active window
  keybd_event_(#VK_SNAPSHOT,1,0,0) ; Snapshot of current active window.
EndIf

MessageRequester("Message","OK, paste the current clipboard data to your favorite Gfx program to see SCREENSHOT.",#MB_ICONEXCLAMATION) 
;-)
a²+b²=mc²
IcedCoffee
Beiträge: 115
Registriert: 09.07.2005 12:11
Wohnort: Fürstenwald [Internat], Berlin[wen keine lust auf Internat], Wildau[Einfamilienhaus]
Kontaktdaten:

Beitrag von IcedCoffee »

thx aber die ist wirklich kaputt also sie geht nirgends wo :(
Benutzeravatar
Batze
Beiträge: 1492
Registriert: 03.06.2005 21:58
Wohnort: Berlin
Kontaktdaten:

Beitrag von Batze »

Schau mal auf meiner Website, da hab ich ein par Beispiele die alle ganz gut fanden. :wink:

Siehe Signatur :allright:
Hier sind meine Codes (aber die Seite geht gerade nicht):
http://www.basicpure.de.vu
IcedCoffee
Beiträge: 115
Registriert: 09.07.2005 12:11
Wohnort: Fürstenwald [Internat], Berlin[wen keine lust auf Internat], Wildau[Einfamilienhaus]
Kontaktdaten:

Beitrag von IcedCoffee »

thx habe ich mir jetzt schon mal angesehen und werde ich auch gleich mal genauer an schauen
[häte nicht gedacht das ein kleiner wirfel so viel arbeit ist :allright:]
Benutzeravatar
Batze
Beiträge: 1492
Registriert: 03.06.2005 21:58
Wohnort: Berlin
Kontaktdaten:

Beitrag von Batze »

Wie wolltset du die eigentlich?
So:

Code: Alles auswählen

CreateMesh(4)
  SetMeshData(4, #PB_Mesh_Vertices, ?EckenDesObjeks, 5)
  SetMeshData(4, #PB_Mesh_Triangles, ?DasObjekt, 6)
  SetMeshData(4, #PB_Mesh_UVCoordinates, ?TexturenKoordinatenDesObjeks, 5)
  CreateEntity(5, MeshID(4), MaterialID(3))
  
  DataSection
  EckenDesObjeks:
  Data.f -1.0, 1.0, -0.5  ;0    0-----1
  Data.f  1.0, 1.0, -0.5  ;1    |\  / |
  Data.f -1.0, -1.0, -0.5 ;2    |  4  |
  Data.f 1.0, -1.0, -0.5  ;3    |/  \ |
  Data.f 0.0, 0.0, 0.5    ;4    2-----3
  
  TexturenKoordinatenDesObjeks:
  Data.f 0.00, 0.0
  Data.f 0.25, 0.0
  Data.f 0.50, 0.0
  Data.f 0.75, 0.0
  Data.f 0.50, 1.0
  
  DasObjekt:
  Data.w 0,4,1
  Data.w 1,4,3
  Data.w 3,4,2
  Data.w 2,4,0
  Data.w 0,3,2
  Data.w 1,3,0
  
  
  EndDataSection
  
:?
Hier sind meine Codes (aber die Seite geht gerade nicht):
http://www.basicpure.de.vu
IcedCoffee
Beiträge: 115
Registriert: 09.07.2005 12:11
Wohnort: Fürstenwald [Internat], Berlin[wen keine lust auf Internat], Wildau[Einfamilienhaus]
Kontaktdaten:

Beitrag von IcedCoffee »

also ich will nur das man die tex erkennen kann und nicht so wie jetzt weil ich kann da keinen rassen sehen oder irgent etwas anderes sondern nur bunte striche und nicht irgend ein bescheuertes bild

naja nur mal so ne frage kennt jemand einen guten mesh editor wo ich sozusagen ein 3d zeichenprogramm habe und dann mit LoadMesh() importieren kann?
Benutzeravatar
Batze
Beiträge: 1492
Registriert: 03.06.2005 21:58
Wohnort: Berlin
Kontaktdaten:

Beitrag von Batze »

Milkshape3D ist das einzige was ich mal zum Erstellen von Meshs bekommen habe.
Deine Textur ist übrigens zu groß. Probier mal eine 256*256 dann siehst du auch was ich meinte. :allright:
Hier sind meine Codes (aber die Seite geht gerade nicht):
http://www.basicpure.de.vu
Antworten