PS: habe erst mal aus der Winterlandschaft ne Wüste mit Kaktenen gemacht
Winterlandschaft 3D
Ich finds auch cool, finde as aber schade das du nicht den Source reinstellt, ich habe nämlich ne menge 2D kampfspiele die würden dann mit 3D noch besser aussehen, außerdem könnte man ja zusammenarbeiten 
PS: habe erst mal aus der Winterlandschaft ne Wüste mit Kaktenen gemacht
PS: habe erst mal aus der Winterlandschaft ne Wüste mit Kaktenen gemacht
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
danke für die frage wollte ich auch drauf kommen !ZeHa hat geschrieben:Danke für die kurze Beschreibung, aber wie realisierst Du das mit den Sprite3D-Befehlen?!
denn NUR mit Sprite3D-Befehlen geht das nicht so einfach
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
Das ist Vergewaltigung der Tastatur! Bitte, ASYX zum Laufen? Dafür gibt's doch WASD! Bitte bitte, schnell ändern!
Ansonsten ist's ganz okay. Man sieht zu stark die unterschiedlichen Polygone heraus. Also es fehlt eine Routine welche die Schattierung rund erscheinen lässt. Keine Ahnung wie der Fachausdruck dafür lautet.
Aber es läuft sehr flüssig, auch mit > 2000 Polygonen noch auf 66/ 33 FPS (schwenkt immer um).
Ansonsten ist's ganz okay. Man sieht zu stark die unterschiedlichen Polygone heraus. Also es fehlt eine Routine welche die Schattierung rund erscheinen lässt. Keine Ahnung wie der Fachausdruck dafür lautet.
Aber es läuft sehr flüssig, auch mit > 2000 Polygonen noch auf 66/ 33 FPS (schwenkt immer um).
-
Kaeru Gaman
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
...ein Sprite3D ist nur ein 4-Punkt-Polygon...Viele Kollegen hat geschrieben:... wie realisierst Du das mit den Sprite3D-Befehlen?!
geradezu prädestiniert für die klassische landschaftsdarstellung...
früher hat man sowas händisch proggen müssen, und ahnung von matritzenrechnung haben...
mit Sprite3D ist das schon viel einfacher...
@Yps: Gute Arbeit
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Der Weise weiß, dass er ein Narr ist.
ja ja aber wenn ich mit TransformSprite3D verzerrt es sich und mit ZoomSpirte3D aleine geht es nicht . mmmmKaeru Gaman hat geschrieben:...ein Sprite3D ist nur ein 4-Punkt-Polygon...Viele Kollegen hat geschrieben:... wie realisierst Du das mit den Sprite3D-Befehlen?!
geradezu prädestiniert für die klassische landschaftsdarstellung...
früher hat man sowas händisch proggen müssen, und ahnung von matritzenrechnung haben...
mit Sprite3D ist das schon viel einfacher...
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
- Ypser
- XMas-Contest-Gewinner '03
- Beiträge: 128
- Registriert: 29.08.2004 14:35
- Computerausstattung: Win7
- Wohnort: Ingelheim
- Kontaktdaten:
Doch, das geht. Der Wunderbefehl, dessen Potenzial die meisten PBler leider nicht kennen,STARGÅTE hat geschrieben:... denn NUR mit Sprite3D-Befehlen geht das nicht so einfach
heisst TransformSprite3D(). Alles andere ist Mathematik, bei der mir damals übrigens TomCat
(kennt ihr vll. aus dem engl. Forum) geholfen hat. Von ihm war die "PureRacerDemo".
Die Schattierung erledigt eine Procedure, die Danilo vor einiger Zeit geschrieben hat,
als es um TransformSprite3D() ging. Ich hatte damals an einer Grafik-Engine für Rennspiele gearbeitet,
und eine Diskussion über die Einsatzfähigkeit des aktuellen TransformSprite3D() angestossen,
aus der die 4 optionalen Z-Parameter hervorgingen. Dadurch wurden solche Projekte eigentlich
erst möglich (mit Sprite3Ds).
Diese Z-Parameter ermöglichen korrekte Verzerrungen, wenn man die Werte entsprechend berechnet.
Und ja, man kann die vier "Punkte" absolut frei platzieren. Der DisplaySprite3D()-Befehl
bekommt bei mir am Ende als X/Y-Parameter nur 0,0.
ist ja klar das es mit TransformSprite3D() geht aber mein problem ist :Ypser hat geschrieben:Doch, das geht. Der Wunderbefehl, dessen Potenzial die meisten PBler leider nicht kennen,STARGÅTE hat geschrieben:... denn NUR mit Sprite3D-Befehlen geht das nicht so einfach
heisst TransformSprite3D(). Alles andere ist Mathematik, bei der mir damals übrigens TomCat
(kennt ihr vll. aus dem engl. Forum) geholfen hat. Von ihm war die "PureRacerDemo".
Die Schattierung erledigt eine Procedure, die Danilo vor einiger Zeit geschrieben hat,
als es um TransformSprite3D() ging. Ich hatte damals an einer Grafik-Engine für Rennspiele gearbeitet,
und eine Diskussion über die Einsatzfähigkeit des aktuellen TransformSprite3D() angestossen,
aus der die 4 optionalen Z-Parameter hervorgingen. Dadurch wurden solche Projekte eigentlich
erst möglich (mit Sprite3Ds).![]()
Diese Z-Parameter ermöglichen korrekte Verzerrungen, wenn man die Werte entsprechend berechnet.
Und ja, man kann die für "Punkte" absolut frei platzieren. Der DisplaySprite3D()-Befehl
bekommt am Ende als X/Y-Parameter nur 0,0.
"Warnung: Da ein Sprite3D sich in 2 Richtungen ausdehnt (2 Dreiecke), kann die Verformung sehr seltsam aussehen... " wie soll man das verhindern
Mein Beispiel :
da ist ein knick in den Fugen!
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
- Ypser
- XMas-Contest-Gewinner '03
- Beiträge: 128
- Registriert: 29.08.2004 14:35
- Computerausstattung: Win7
- Wohnort: Ingelheim
- Kontaktdaten:
Das "Geheimnis" ist, dass du ja vorher die Koordinaten aus 3D in 2D umrechnest, also
hast du auch die nötigen Z-Werte.
Hab mal nen kleinen Code geschrieben, der das veranschaulicht:
Probiert mal mit den 4 Z-Werten rum, die ja nur die Entfernung zur Kamera angeben...
hast du auch die nötigen Z-Werte.
Hab mal nen kleinen Code geschrieben, der das veranschaulicht:
Code: Alles auswählen
InitSprite()
InitSprite3D()
InitKeyboard()
OpenScreen(800, 600, 32, "")
s2D = CreateSprite(#PB_Any, 64, 64, #PB_Sprite_Texture)
StartDrawing(SpriteOutput(s2D))
Box(0, 0, 64, 64, RGB(50, 50, 200))
For I = 0 To 5
Line(2, I*10, 64, 0, RGB(255, 255, 255))
Line(I*10, 2, 0, 64, RGB(255, 255, 255))
Next
StopDrawing()
s3D = CreateSprite3D(#PB_Any, s2D)
ScreenMidX = 400
ScreenMidY = 300
z1 = 2
z2 = 4
z3 = 4
z4 = 2
x1 = ScreenMidX - (400 / z1)
y1 = ScreenMidY + (300 / z1)
x2 = ScreenMidX - (400 / z2)
y2 = ScreenMidY - (300 / z2)
x3 = ScreenMidX + (400 / z3)
y3 = ScreenMidY - (300 / z3)
x4 = ScreenMidX + (400 / z4)
y4 = ScreenMidY + (300 / z4)
Repeat
ExamineKeyboard()
If KeyboardReleased(#PB_Key_Space)
WithZValues = (1 - WithZValues)
EndIf
ClearScreen(0, 0, 0)
Start3D()
If (WithZValues = 1)
;MIT z-Werten
TransformSprite3D(s3D, x1, y1, z1, x2, y2, z2, x3, y3, z3, x4, y4, z4)
Else
;Ohne z-Werte
TransformSprite3D(s3D, x1, y1, 1, x2, y2, 1, x3, y3, 1, x4, y4, 1) ;1=Standard = alle z-Werte gleich
EndIf
DisplaySprite3D(s3D, 0, 0)
Stop3D()
StartDrawing(ScreenOutput())
DrawingMode(1)
FrontColor(255, 255, 255)
Locate (20, 20): DrawText("[SPACE] = Switch with/without Z-Values")
StopDrawing()
FlipBuffers()
Until KeyboardReleased(#PB_Key_Escape)
Zuletzt geändert von Ypser am 20.12.2005 00:31, insgesamt 3-mal geändert.
