Wenn ich den Befehl x_rotation nehme, dann gibt man ja in welchem winkel sich das objeckt um die achse x,y,z drehen soll.
Ich hab als x,y,z wahrscheinlich fälschlicherweise die positionskoordinaten genommen.
Wie hab ich das mit den koordinaten zu verstehen?
ich habe ein Objekt von insgesamt dreien, und muß dieses von der camerasicht aus gesehen sozusagen um ca. 90 Grad nach rechts hinten in der horizontalen drehen.
Es ist momentan von der front zu sehen, und ich brauch die seite.
Wie macht man das mit dem x_rotation?
x,y,z ist die Richting der Achse um die gedreht wird. Nimm den rechten Daumen als Achse, und krümm' den Zeigefinger, dann hast Du die Richtung des Drehwinkels.
Quote from: x-traIch hab als x,y,z wahrscheinlich fälschlicherweise die positionskoordinaten genommen.
X_ROTATION Winkel,x,y,z
wenn du dein Objekt drehen willst:(evtl meinst ja das!)
INC phi,1
IF phi > 359 THEN phi = 0
X_ROTATION phi, 1, 1, 0 // 1 ist Positive richtung, -1 negative richtung
X_DRAWOBJ 0,0
Quote from: GernotFrischx,y,z ist die Richting der Achse um die gedreht wird. Nimm den rechten Daumen als Achse, und krümm' den Zeigefinger, dann hast Du die Richtung des Drehwinkels.
Kannst du mir mal bildlich beschreiben, etwas unverständlich.
Ebenso wie dies:
X_ROTATION phi, 1, 1, 0 // 1 ist Positive richtung, -1 negative richtungKann das mal jemand im dreidimensionalen Raum zeigen, damit ichs leichter begreif.Sorry aber danke für die Mühe.
Ich habs jetzt soweit hinbekommen, daß ich ja eine drehung hinbekomme, allerdings habe ich ein Objekt, was nur aus zwei kleinen Kreisen besteht.
Links einer, und rechts einer.Ich möchte, daß diese sich einfach im Kreis drehen, sozusagen eben um den eigenen Mittelpunkt, welcher auf der Z-Achse liegt.
Momentan wird nur das gesammte objekt rotiert, aber um die globale Z_Achse, nicht um die Objekt eigene.
Wie macht man das?
RotateEntity wäre da cool.
so hier mal mein code, ist etwas schludrig, aber naja.
// --------------------------------- //
// Project: spaceship
// Start: Wednesday, September 12, 2007
// IDE Version: 4.279
//Variablen
GLOBAL posx=0
GLOBAL posy=0
GLOBAL posz=0
// Spaceship zweiteilig laden
X_LOADOBJ "heck.ddd", 2
X_LOADOBJ "lichter1.ddd", 3
// 3D Modus, Kamera und Licht hinzufügen
X_MAKE3D 1, 100, 45
X_CAMERA 0, 0, 2, 0, 0, 0
X_AMBIENT_LT 0, RGB(209,209,209)
// Zeichnen
INC phi,1
IF phi > 359 THEN phi = 0
X_MOVEMENT posx, posy, posz
X_ROTATION 150, 0, 0, 0
X_DRAWOBJ 2, 0
GOSUB rotation
SHOWSCREEN
MOUSEWAIT
END
SUB rotation:
X_MOVEMENT posx, posy, posz
X_ROTATION phi, 1, 1, 0
X_DRAWOBJ 3, 0
ENDSUBwie baue ich am besten eine schleife ein, daß das objekt 3 aus der "Sub Rotation" sich langsam um sich selbst dreht?
mousewait hab ich erstmal dringelassen, damit überhaupt erstmal etwas zu sehen ist.
okay, habs damit hinbekommen, aber das mit der drehung klappt nicht, das objekt 3 dreht sich nicht um sich selbst.
// --------------------------------- //
// Project: spaceship
// Start: Wednesday, September 12, 2007
// IDE Version: 4.279
//Variablen
GLOBAL posx=0
GLOBAL posy=0
GLOBAL posz=0
// Spaceship zweiteilig laden
X_LOADOBJ "heck.ddd", 2
X_LOADOBJ "lichter1.ddd", 3
// 3D Modus, Kamera und Licht hinzufügen
start:
X_MAKE3D 1, 100, 45
X_CAMERA 0, 0, 2, 0, 0, 0
X_AMBIENT_LT 0, RGB(209,209,209)
// Zeichnen
INC phi,1
IF phi > 359 THEN phi = 0
X_MOVEMENT posx, posy, posz
X_ROTATION 150, 0, 0, 0
X_DRAWOBJ 2, 0
X_MOVEMENT posx, posy, posz
X_ROTATION phi, 0, 0, 1
X_DRAWOBJ 3, 1
SHOWSCREEN
GOTO startIch suche also eine Möglichkeit, um ein Objekt relativ zu EIGENEN Achse zu rotieren/drehen usw.
Morgen :)
Also, das Objekt das du entwirfst muß Mittig in deinem 3D Programm sein. Also nicht in den Achsen verschoben. Dann rotiert es normalerweise in GLBasic auch um seine eigene Achse. So kenn ich das halt. Aber vielleicht rede ich ja nur Blech. Ist ja schließlich noch sehr früh.:D
Probiers mal aus
Cheers
// Spaceship zweiteilig laden
X_LOADOBJ "heck.ddd", 2
X_LOADOBJ "lichter.ddd", 3
// 3D Modus, Kamera und Licht hinzufügen
WHILE TRUE
X_MAKE3D 1, 100, 45
X_CAMERA 0, 0, 2, 0, 0, 0
X_AMBIENT_LT 0, RGB(209,209,209)
// Zeichnen
INC phi,1
IF phi > 359 THEN phi = 0
//X_Movement 0, 0, 0
X_ROTATION phi,0,0,1
X_DRAWOBJ 2,0
//X_Movement 0, 0, 0
X_ROTATION phi,0,0,1
X_DRAWOBJ 3,0
SHOWSCREEN
WENDmit diesem code und dem Objekt mittig in AC3D hab ich es versucht, und obwohl es mir einleuchtete, funktioniert es nicht.
wenn ich X_Movement weglasse, dreht sich ein Objekt schneller als das andere, mit X_Movement beide gleichmässig, aber eben nur um die Globale Welt Z-Achse
Ah funktioniert, riesigen Dank, lag an AC3D, hatte beim export in .3ds die Koordinaten nicht gespeichert, warum auch immer, so jetzt bin ich schonmal ein ganzes Stück weiter.
AC3D kann direkt nach .ddd exportieren. Im Ordner /plugins ist die .dll.