3D Grafik am C64

Es gibt 71 Antworten in diesem Thema, welches 4.306 mal aufgerufen wurde. Der letzte Beitrag (27. März 2025 um 18:46) ist von ivettaB.

  • Hat schon jemand mal mit 3D im Textmodus gebastelt? Also ich meine jetzt nicht einfach Blockgrafik, sondern dynamisch umdefinierten Zeichensatz, der eigentlich Hires oder Multicolor macht? So wie das auch Lemmings damals gemacht hat? (da ist der Hintergrund per Sprites gemacht, die Lemminge sind allesamt Zeichensatz inkl. überlappende Lemminge etc.)

    Vorteil dürfte dabei sein, dass man sehr schnell wiederkehrende Blöcke "zeichnen" kann (eben z.B. gefüllte nicht-schattierte Flächen), dafür ist natürlich die Logik außenherum nicht trivial...

    Bitte melde dich an, um diesen Link zu sehen. - Bitte melde dich an, um diesen Link zu sehen.

  • genau das mache ich im neuen renderer. Deshalb so weiche animation. muss nur 2k löschen statt 8k...

    habe die Plot routine so umgeschrieben das sie im Charset plottet.

  • Danke Sorbas2020 für deinen schnellen Drawline Algo. Habe in deinen Code meine 3D Kuh eingebaut und was soll ich sagen

    Der Drawline ist schnell aber um die >220 Dreiecke zu rendern reicht die CPU Power immer noch nicht.

    sys4096 zeichnet alle vertexes (Eckpunkte) und faces( polygone ) aus der 3d Datei.

    da noch was zu füllen ist dann echt der Overkill.

    Nachdem die Kuh ursprünglich 17412 Eckpunkte hatte habe ich die eh schon auf 256 Punkte herunter gerechnet.

    Dann wären noch 200-500 Dreiecke wenn man alle Dreiecke zeichnet. In diesem Falle zeichne ich nur die Dreiecke die dem Betrachter zugewandt sind.
    Bleiben dann noch 180-221 je nach Betrachtungswinkel für die Kuh über....

    1) Also entweder einen Zusatzchip in den Expansionport (Final Chess Card übertaktet ?)

    2) oder vielleicht weiss jemand von diesem Mega 65 Projekt ob das dort mit 40 Mhz ?? laufen kann ?

  • ivettaB Wie wäre es denn mal mit dem Klassiker sin(x)/x Surface Ripple 8o

    "Führungskräfte verrichten keine Arbeit." — Schülerduden Physik

  • ja der line draw ist in der Zeropage ab adresse 10

    und macht wieder 320x200 obwohl ich nur 256 x 256 verwende der einfachheit halber.

    Also wieder Hires screen da ich den Line Algo nicht ganz verstehe um ihn in meine Charplot Routine einzubauen.

  • ivettaB Wie wäre es denn mal mit dem Klassiker sin(x)/x Surface Ripple 8o

    habe eh den Sourcecode für c64 Studio angehängt beim Renderer . kannst dich gerne austoben und das Ding machen !
    unter label Runner gehts los...

    setze pointX und pointY und rufe plotpix auf - schon ist der Punkt am schirm

  • Danke Sorbas2020 für deinen schnellen Drawline Algo. Habe in deinen Code meine 3D Kuh eingebaut und was soll ich sagen

    Der Drawline ist schnell aber um die >220 Dreiecke zu rendern reicht die CPU Power immer noch nicht.

    1) Also entweder einen Zusatzchip in den Expansionport (Final Chess Card übertaktet ?)

    2) oder vielleicht weiss jemand von diesem Mega 65 Projekt ob das dort mit 40 Mhz ?? laufen kann ?

    Ein Ultimate64-Board mit 40Mhz, eine SuperCPU mit 20MHz oder ein TC64 mit 10MHz reicht nicht? Also der Teapot dreht sich ganz wunderbar am TC64 und die Kuh wird nicht gezeichnet, die ist einfach da... und das schon mit 10MHz...

    Also Mega65 braucht es da nicht wirklich... stell den Renderer mit den Lines doch mal rein, dann kann man das selber testen. Oder nimm VICE/SCPU64, da ist die Kuh auch sofort da...

  • Der Drawline ist schnell aber um die >220 Dreiecke zu rendern reicht die CPU Power immer noch nicht.

    So lange es nur darum geht, ein Objekt aus einer vorberechneten 3D-Perspektive, egal ob aus Punkten oder Linien zusammengesetzt, einmalig in einer festen Lage auf den Bildschirm zu bringen, ist jede "CPU Power" völlig ausreichend. Interessant wird das ganze erst, wenn das Objekt rotiert wird - bzw. der Beobachter irgendeine Kamerafahrt drumherum macht: dann möchte man sicher gerne sagen können, daß da so-und-so-viele Animations-Phasen pro Sekunde gerendert werden und nicht, daß das Zeichnen einer Animationsphase so-und-so-viele (Zehntel?) Sekunden braucht.

    Die KuhV5, mit bereits ausgerechnetem "Netz" der Eckpunkte in Bildschirmkoordinaten braucht ca. 1/3 Sekunde nach dem Entpacken, um als Linienmodell gezeichnet zu werden. Für eine Animation bräuchte es jetzt eine Geometrie-Engine auf dem C64, die ausgehend von einer Koordinaten-, Netz- und Flächendefinition alle Ecken transformiert und auf dem Bildschirm projiziert und dann auf geeignete Weise die nicht sichtbaren Flächen ausblendet. Daß das mit einfacheren Objekten mit ca. 4 oder 5 Animations-Phasen pro Sekunde auch auf dem C64 geht, zeigt ein Spiel wie Elite ja.

    Passend zum Thema hatte ich bereits in den letzten Wochen einen Workshop im Denial-Forum angefangen (Bitte melde dich an, um diesen Link zu sehen.), der eben neben der reinen Darstellung auch die geometrischen Berechnungen auf dem C64 - bzw. dort, dem VC-20 - behandelt. Es sind schon einige Klimmzüge nötig, um die Geometrie schnell hinzukriegen. Mit den Fließkommaroutinen in BASIC kann man zwar schon einiges vorbereiten, aber den Nachbrenner muß man auf 8-Bit-Rechnern dann schon mit Fixpunkt-Arithmetik in Maschinensprache zünden - ...

    1) Also entweder einen Zusatzchip in den Expansionport (Final Chess Card übertaktet ?)

    2) oder vielleicht weiss jemand von diesem Mega 65 Projekt ob das dort mit 40 Mhz ?? laufen kann ?

    ... ich hatte das alles schon mal vor 30 Jahren auf einem Acorn Archimedes zwischen. Da ging animierte Vektorgrafik in interpretiertem BASIC. :D


    Edit: in der Zwischenzeit habe ich mir auch noch den Teapot angeschaut - der ist auch komplett vorberechnet. Ohne weitere Vorkehrungen braucht so eine Feld-Wald-und-Wiesen-Plot-Routine ca. 50 Zyklen pro Punkt, mit etwa 300 Punkten für's Objekt sind das dann 15000 Zyklen pro Animationsphase, plus dann noch Verwaltungsaufwand um die Koordinaten zu 'pumpen' - und dann muß auch noch der Bildschirm(ausschnitt) der versteckten Seite gelöscht werden (bei einer 2-KB-Bitmap geht das in ca. 8000 Zyklen) und dann sind wir bei ca. 30000 Zyklen pro Bild. Also, ca. 30 Bilder pro Sekunde.

  • source von den Kuh Line befehlen.

    "

    Also Mega65 braucht es da nicht wirklich... stell den Renderer mit den Lines doch mal rein, dann kann man das selber testen. Oder nimm VICE/SCPU64, da ist die Kuh auch sofort da..."

    ja stimmt die kuh ist gleich da. das gibt hoffnung auf einen Füller für grau schattierungen....

    Dann muss ich nur mehr meinen Mesh Calculator auf den C64 rüberbringen. Leider rechnet der alles am PC vor. Das mit Interaktiv und Kamera Fahrt muss dann erst gecodet werden. Müsste ich C nehmen - kenne mich da wenig aus wie ich das am C64 compilieren kann.

    "

    ... ich hatte das alles schon mal vor 30 Jahren auf einem Acorn Archimedes zwischen. Da ging animierte Vektorgrafik in interpretiertem BASIC. :D"

    krass wie kann das sein ? wie schnell war der denn ?

  • Geht es noch flotter wenn man face1-3 in die ZP verlagert?

    Aber aus irgend einem Grund läuft das prg in meinem Android ViceC64 nicht.

    Komisch:/

  • Kurz über die c64 3d Engine nachgedacht....

    3d Objekt:

    Puh die Kuh in 256 Eckpunkten frisst endlos speicher.

    $8000- $8ea0 : x,y,z, Facelist, Normal vectoren (alles schon in 8bit)

    für schattierung müsste ich den multicol modus und habe dann nur mehr 160 Pixel statt 256 in X richtung.
    Und in Hires habe ich keine Ahnung wie man dies schattieren soll.

  • krass wie kann das sein ? wie schnell war der denn ?

    Der 8-MHz-ARM2 in den ersten Acorn Archimedes Rechnern war bereits 1987 grob über den Daumen gepeilt etwa 50x schneller als ein 1-MHz-65xx.

    Das BBC BASIC V ist dazu dann auch noch mit hochoptimierten Fließkomma- und Integer(!)-Routinen ausgestattet, die Grafikbefehle des BASIC werden direkt an das Betriebssystem durchgereicht - mit Linienzieh-, Dreieckfüll-, Kreis(füll)-Routinen im Fundus. Arrays und Matrizen können direkt als ganzes, ohne FOR-Schleifen, miteinander multipliziert werden.

    Ich such später am Abend mal ein entsprechendes Beispiel im Source raus.