CreateMesh() und Terrain
CreateMesh() und Terrain
Hi
ich möchte ein Terrain mit Schatten erstellen...
bei dem normalen standart CreateTerrain befehl geht das leider nicht.
ich habe mir das so vorgestellt:
ich habe einen Array von n*n. der Arrayindex sind die höhen und tiefen des Terrains.
jetzt möchte ich mir ein mesh erstellen mit hilfe von CreateMesh und seine punkte als Gitter anordnen und in höhe des Arrayindexes speicher, sodass das mesh zum terrain wird.
jetzt mein problem:
ich weiß nicht wie man die Befehle CreateMesh und co nutzt.
könnte mir jemand entweder ein tut für 3dMesh-erstellung geben
oder mir dieses kleine Programm schreiben, damit ich mir das mal angucken kann?
Vielen Dank! Bruegge
ich möchte ein Terrain mit Schatten erstellen...
bei dem normalen standart CreateTerrain befehl geht das leider nicht.
ich habe mir das so vorgestellt:
ich habe einen Array von n*n. der Arrayindex sind die höhen und tiefen des Terrains.
jetzt möchte ich mir ein mesh erstellen mit hilfe von CreateMesh und seine punkte als Gitter anordnen und in höhe des Arrayindexes speicher, sodass das mesh zum terrain wird.
jetzt mein problem:
ich weiß nicht wie man die Befehle CreateMesh und co nutzt.
könnte mir jemand entweder ein tut für 3dMesh-erstellung geben
oder mir dieses kleine Programm schreiben, damit ich mir das mal angucken kann?
Vielen Dank! Bruegge
so hier :
Das habe ich in meinem Müll gefunden, weil ich eingesehen habe das es schwachsinnig ist ein Mash per Hand zu erstellen :
Hier das ergebnis : Raumschiff-Bild
Das habe ich in meinem Müll gefunden, weil ich eingesehen habe das es schwachsinnig ist ein Mash per Hand zu erstellen :
Hier das ergebnis : Raumschiff-Bild
Code: Alles auswählen
; *** Raumschiff ***
CreateMesh(1)
SetMeshData(1, 0, ?Punkte , 18)
SetMeshData(1, 1, ?Dreiecke , 20)
SetMeshData(1, 2, ?Texturen , 18)
CreateEntity(Nr, MeshID(1), CreateMaterial(0, LoadTexture(0, "tex3.jpg")))
DataSection
Punkte:
Data.f -5, 0, 8
Data.f -2, -3, 8
Data.f 2, -3, 8
Data.f 5, 0, 8
Data.f -3, 0, 16
Data.f 3, 0, 16
Data.f -5, 0, 8
Data.f -2, 6, 8
Data.f 2, 6, 8
Data.f 5, 0, 8
Data.f -5, 0, -8
Data.f -2, -3, -8
Data.f 2, -3, -8
Data.f 5, 0, -8
Data.f -5, 0, -8
Data.f -2, 6, -8
Data.f 2, 6, -8
Data.f 5, 0, -8
Dreiecke:
Data.w 0, 1, 4
Data.w 1, 2, 5
Data.w 5, 4, 1
Data.w 2, 3, 5
Data.w 9, 8, 5
Data.w 4, 5, 8
Data.w 8, 7, 4
Data.w 7, 6, 4
Data.w 10, 11, 1
Data.w 1, 0, 10
Data.w 11, 12, 2
Data.w 2, 1, 11
Data.w 12, 13, 3
Data.w 3, 2, 12
Data.w 6, 7, 15
Data.w 15, 14, 6
Data.w 7, 8, 16
Data.w 16, 15, 7
Data.w 8, 9, 17
Data.w 17, 16, 8
Texturen:
Data.f 0.00 , 0.25
Data.f 0.33 , 0.25
Data.f 0.67 , 0.25
Data.f 1.00 , 0.25
Data.f 0.33 , 0.50
Data.f 0.67 , 0.50
Data.f 0.00 , 0.75
Data.f 0.33 , 0.75
Data.f 0.66 , 0.75
Data.f 1.00 , 0.75
Data.f 0.00 , 0.00
Data.f 0.33 , 0.00
Data.f 0.67 , 0.00
Data.f 1.00 , 0.00
Data.f 0.00 , 1.00
Data.f 0.33 , 1.00
Data.f 0.67 , 1.00
Data.f 1.00 , 1.00
EndDataSection
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
@STARGÅTE
danke für den code
@Brügge
Zaphod hat das auch mal ganz gut erklärt:
http://www.purebasic.fr/german/viewtopi ... ht=#173822
danke für den code
@Brügge
Zaphod hat das auch mal ganz gut erklärt:
http://www.purebasic.fr/german/viewtopi ... ht=#173822
danke für die Beschreibung!
aber ich habe noch ein problem...
wie kann ich in der DataSection eine schleife bauen?
also ich möchte zum beispiel für das Terrain 100 * 100 punkte machen:
also müsste es doch so aussehen:
aber ich habe noch ein problem...
wie kann ich in der DataSection eine schleife bauen?
also ich möchte zum beispiel für das Terrain 100 * 100 punkte machen:
also müsste es doch so aussehen:
Code: Alles auswählen
DataSection
punkte:
for i = 0 to 99
for j = 0 to 99
Data.f i, 5, j
next j
next i
EndDataSection
lasse von PB ein Include schreiben:
Denn das Terrain soll ja eh ein eigenes festes Mash seinPB-Code hat geschrieben: CreateFile(1, "Data.dat")
WriteStringN("DataSection")
For i = 0 To 99
For j = 0 To 99
WriteStringN("Data.f "+Str(i)+", 5, "+Str(i)+"")
Next j
Next i
WriteStringN("EndDataSection")
CloseFile(1)
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
-
- Beiträge: 557
- Registriert: 29.11.2005 15:05
-
- Beiträge: 972
- Registriert: 04.10.2004 18:42
- Computerausstattung: Amiga, LinuxMint, Windows7
- Wohnort: gotha
- Kontaktdaten:
damit erhaeltst du meshdaten fuer eine glatte ebene aus 100x100 tiles,kein terrainWriteStringN("Data.f "+Str(i)+", 5, "+Str(i)+"")
am besten du baust dir ein terrain mit nem modeller
oder schreibst dir nen importer fuer heightmapimages
einfache variante
Code: Alles auswählen
dim terra.l(size,size)
startdrawing(imageoutput(x))
for x= 0 to size-1
for y= 0 to size-1
col=point(x,y)
terra(x,y)=red(col)
next
next
stopdrawing()
amiga rulez...
Rebirth Software
Rebirth Software