Author Topic: 3D Rotation  (Read 2166 times)

x-tra

  • Guest
3D Rotation
« on: 2007-Sep-12 »
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?

Offline Kitty Hello

  • code monkey
  • Administrator
  • Prof. Inline
  • *******
  • Posts: 10814
  • here on my island the sea says 'hello'
    • View Profile
    • http://www.glbasic.com
3D Rotation
« Reply #1 on: 2007-Sep-13 »
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.

Offline Schranz0r

  • Premium User :)
  • Administrator
  • Prof. Inline
  • *******
  • Posts: 5111
  • O Rly?
    • View Profile
3D Rotation
« Reply #2 on: 2007-Sep-13 »
Quote from: x-tra
Ich 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!)

Code: (glbasic) [Select]
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
I <3 DGArray's :D

PC:
AMD Ryzen 7 1700 @3.9GHz, 16GB HyperX Fury 3000MHz Ram, ASUS ROG GTX 1060 STRIX 6GB, Windows 10 Pro 64Bit, MSi Tomahawk B350 Mainboard

x-tra

  • Guest
3D Rotation
« Reply #3 on: 2007-Sep-15 »
Quote from: GernotFrisch
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.
Kannst du mir mal bildlich beschreiben, etwas unverständlich.


Ebenso wie dies:  
Code: (glbasic) [Select]
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.

x-tra

  • Guest
3D Rotation
« Reply #4 on: 2007-Sep-16 »
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.

Code: (glbasic) [Select]
// --------------------------------- //
// 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
ENDSUB
wie 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.

Code: (glbasic) [Select]
// --------------------------------- //
// 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 start
Ich suche also eine Möglichkeit, um ein Objekt relativ zu EIGENEN Achse zu rotieren/drehen usw.

Offline BumbleBee

  • Global Moderator
  • Prof. Inline
  • *******
  • Posts: 891
    • View Profile
3D Rotation
« Reply #5 on: 2007-Sep-16 »
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
The day will come...

CPU Intel(R) Core(TM) i5-3570k, 3.4GHz, AMD Radeon 7800 , 8 GB RAM, Windows 10 Home 64Bit

x-tra

  • Guest
3D Rotation
« Reply #6 on: 2007-Sep-16 »
Code: (glbasic) [Select]
// 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
WEND
mit 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.

Offline Kitty Hello

  • code monkey
  • Administrator
  • Prof. Inline
  • *******
  • Posts: 10814
  • here on my island the sea says 'hello'
    • View Profile
    • http://www.glbasic.com
3D Rotation
« Reply #7 on: 2007-Sep-17 »
AC3D kann direkt nach .ddd exportieren. Im Ordner /plugins ist die .dll.