Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

23.02.2005, 18:25

models nur teilweise rendern

ist das irgendwie möglich dass ich von models teile abschneiden kann oder muss ich dann den teil der weg soll als einzelmodel haben? gibt es vllt irgendwelche tricks wie einfach unsichtbar machen oder gehts irgendwie mit teilweisem culling???

Dave

Alter Hase

Beiträge: 757

Wohnort: Berlin

  • Private Nachricht senden

2

23.02.2005, 20:06

die frage ist nach welchen kriterien abgeschnitten werden soll...

3

23.02.2005, 20:10

ist ein tetrisblock von dem 1-4 reihen verschwinden...

er ist aus 4 gleichen würfeln aufgebaut die aber als ein model gespeichert sind. ich hätte zwar noch die möglichkeit einen einzigen würfel als model zu speichern und dann die models per code zu erstellen aber wie bewegt und dreht man die dann...ich glaub da wird alles komplizierter :[

Till

Alter Hase

Beiträge: 378

Wohnort: Lincoln College, Oxford

Beruf: Student

  • Private Nachricht senden

4

23.02.2005, 22:57

Wie liegt dein "model" denn vor? tbm? Kannst du auf VB und IB zugreifen? Aber auch wenn du einzelne Modelle benutzt, kannst du doch recht einfach drehen und bewegen! Sieh es doch mal so: egal ob in einem Model oder in mehreren, die Vertices, die transformiert werden (also transliert oder rotiert) müssen halt die gleichen Werte haben. Das erreichst du entweder, indem zu verschiedene Models erstellst, die alle schon "an der richtigen Position" sitzten, also die eben nicht genau auf ihrem relativen Koordinatenursprung sitzten, oder indem du gleiche Modelle nimmst und diese zuerst an die einzelnen Positionen transformierst. Dann nämlich kannst du ganz normal rotieren (das geschieht nämlich um den Ursprung) und translieren oder auch verschwinden lassen. Ich hoffe mal, so funktioniert es - ist schon spät :-D
DOMINVS ILLVMINATIO MEA
---
Es lebe unmanaged Code!
---
>> Meine Uni <<

Steven77

Alter Hase

Beiträge: 515

Wohnort: Münster - Gievenbeach

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

5

24.02.2005, 13:23

Die Objekte, die bei Tetris herumfliegen, sind ja sowieso alle aus Würfeln zusammengesetzt. Du kannst ja einfach ein einziges Würfelmodell nehmen, was Du dann halt zusammensetzt. Beim "normalen" Tetris bestehen die Standardkörper alle aus jeweils vier Würfeln, die verschieden kombiniert werden.
So einen Körper kannst Du dann ja (beim 3D-Tetris) mit einem dreidimensionalen Array realisieren, z.B. so:

C-/C++-Quelltext

1
bool obj[4][4][4];

Eine Rotation z.B. um die Z-Achse wäre dann recht einfach:

C-/C++-Quelltext

1
2
3
4
5
6
for (int z = 0; z < 4; z++)
for (int y = 0; y < 4; y++)
for (int x = 0; x < 4; x++)
{
        tmp[x][y][z] = obj[3 - y][x][z];
}

Die Würfelmodelle selbst müssen eigentlich nicht gedreht werden, da ein Würfel von allen Seiten gleich aussieht. Die Würfel müssen halt nur an ihre entsprechenden Positionen geschoben werden.
Nur so 'ne Idee...

6

24.02.2005, 19:47

hm na gut ich probiers...

muss ich auch nur ein model laden :]

rewb0rn

Supermoderator

Beiträge: 2 773

Wohnort: Berlin

Beruf: Indie Game Dev

  • Private Nachricht senden

7

25.02.2005, 16:17

Nee das is quatsch :wirbel:

Es ist egtl recht simpel. Du musst dir folgendes klar machen: Wenn du 4 Würfel nebeneinandern stellst, die jeweils 1 Modell darstellen, dann setzt du meinetwegen das erste Modell auf den Ursprung(tbVector3(0,0,0)). Den nächsten setzt Du zB rechts daneben, natürlich um soviele Punkte weiter rechts, wie die Würfel breit sind, also meinetwegen tbVector3(15,0,0), den nächsten setzt du wieder ein Stück weiter und so weiter. Du realisierst das indem du für jeden Würfel eine Positionsmatrix erstellst. (tbMatrixTransformation(tbVector3(15,0,0)), glaube es war "Transformation", aber bin mir nich sicher).
Wenn du jetzt alle 4 Matrizen der Modelle mit derselben Rotationsmatrix um 90° um die z-Achse drehst, stehen alle Modelle senkrecht übereinander.

Till

Alter Hase

Beiträge: 378

Wohnort: Lincoln College, Oxford

Beruf: Student

  • Private Nachricht senden

8

26.02.2005, 00:06

Zitat von »"Spik)evil("«

Nee das is quatsch :wirbel:

Es ist egtl recht simpel. Du musst dir folgendes klar machen: Wenn du 4 Würfel nebeneinandern stellst, die jeweils 1 Modell darstellen, dann setzt du meinetwegen das erste Modell auf den Ursprung(tbVector3(0,0,0)). Den nächsten setzt Du zB rechts daneben, natürlich um soviele Punkte weiter rechts, wie die Würfel breit sind, also meinetwegen tbVector3(15,0,0), den nächsten setzt du wieder ein Stück weiter und so weiter. Du realisierst das indem du für jeden Würfel eine Positionsmatrix erstellst. (tbMatrixTransformation(tbVector3(15,0,0)), glaube es war "Transformation", aber bin mir nich sicher).
Wenn du jetzt alle 4 Matrizen der Modelle mit derselben Rotationsmatrix um 90° um die z-Achse drehst, stehen alle Modelle senkrecht übereinander.


Genau das meinte ich ja mit zuerst translieren und dann rotieren!
Aber wieso ist es Quatch, was Steven77 gesagt hat?
DOMINVS ILLVMINATIO MEA
---
Es lebe unmanaged Code!
---
>> Meine Uni <<

9

26.02.2005, 18:37

gut danke...ich melde mich dann wieder bei problemen :]

Werbeanzeige