IrrLicht3D , Node ausrichten
- tft
- Beiträge: 650
- Registriert: 08.09.2004 20:18
- Computerausstattung: GFX 3060 Ti , i7 12700F , 32 GB Ram , 900 GB SSD , TV
- Wohnort: Dachsen
- Kontaktdaten:
IrrLicht3D , Node ausrichten
Hallo ...
weis einer wie ich mit Irrlicht eine SceneNode auf einen punkt im 3D Raum ausrichten kann?
MfG TFT
weis einer wie ich mit Irrlicht eine SceneNode auf einen punkt im 3D Raum ausrichten kann?
MfG TFT
TFT seid 1989 , Turgut Frank Temucin , CH-Dachsen/DE-Berlin/TR-Antalya
Mein Projekt (Driving School Evergarden)
Codes bei (GitHub) Videos von (YouTube)
Treffen via Discord: Einladung
PB 6.10 | W11 | i7 12700F | 32 GB Ram | RTX 3060 Ti | 60 Herz -TV FullHD
ARDUINO Freak | Sprecher | Game Dev. | Geschichten Erzähler
Mein Projekt (Driving School Evergarden)
Codes bei (GitHub) Videos von (YouTube)
Treffen via Discord: Einladung
PB 6.10 | W11 | i7 12700F | 32 GB Ram | RTX 3060 Ti | 60 Herz -TV FullHD
ARDUINO Freak | Sprecher | Game Dev. | Geschichten Erzähler

- Max_der_Held
- Beiträge: 595
- Registriert: 18.04.2006 17:01
- Wohnort: Bavaria
- Kontaktdaten:
hm.. bei OPEN Gl hats mal nen befehl gegeben, der die camera dreht... wenn man des umschreibt, könnte man die entstehende formel zum drehen vom OBjekt hernehmen.. viel spaß :ironie:
beschreibung des befehls (alles aus nem opengl tutorial):
Code: Alles auswählen
piover180.f = (ATan(1)*4)/180
gluLookAt__(-CameraX, -CameraY, -CameraZ, -(CameraX + Sin(CamrotY*piover180)*10), 0, -(CameraZ + Cos(CamrotY*piover180)*10)+1, 0.0, 1.0, 0.0)
- ; Mit gluLookAt definieren wir den Standort der Sicht. Die ersten drei Parameter sind die Position. Die zweiten drei ist die GuckPOSITION. Die dritten sind der UpVektor(fast immer 0.0, 1.0, 0.0)
- [EDIT] wenn du's mal irgendwie rauskriegst, dann postes bitte.. ich such sowas auch, eigentlich (laser-schuss-mesh in schussrichtung ausrichten)
[/edit]
Zuletzt geändert von Max_der_Held am 29.12.2007 22:01, insgesamt 1-mal geändert.
- tft
- Beiträge: 650
- Registriert: 08.09.2004 20:18
- Computerausstattung: GFX 3060 Ti , i7 12700F , 32 GB Ram , 900 GB SSD , TV
- Wohnort: Dachsen
- Kontaktdaten:
Hi ...
danke für die Antwort... leider blicke ich da nicht durch .... mal sehen was ich draus machen kann.
danke für die Antwort... leider blicke ich da nicht durch .... mal sehen was ich draus machen kann.
TFT seid 1989 , Turgut Frank Temucin , CH-Dachsen/DE-Berlin/TR-Antalya
Mein Projekt (Driving School Evergarden)
Codes bei (GitHub) Videos von (YouTube)
Treffen via Discord: Einladung
PB 6.10 | W11 | i7 12700F | 32 GB Ram | RTX 3060 Ti | 60 Herz -TV FullHD
ARDUINO Freak | Sprecher | Game Dev. | Geschichten Erzähler
Mein Projekt (Driving School Evergarden)
Codes bei (GitHub) Videos von (YouTube)
Treffen via Discord: Einladung
PB 6.10 | W11 | i7 12700F | 32 GB Ram | RTX 3060 Ti | 60 Herz -TV FullHD
ARDUINO Freak | Sprecher | Game Dev. | Geschichten Erzähler

Hier ne C++ Funktion - siehst mal die Mathe dahinter. Baue die noch ein ( einfachheitshalber ).... Aber irgendwo hatte ich das schon mal beantwortet hier... puh scheissgrippe .. immernoch schlepp ich die rum.
vector3df = vector 3d float
resp. ( findest du im include file )
Damit sollts eigentlich einfach sein.
Neue Version wird noch n Command dazu kommen ( Geplant ist auch ein "Newbie" set das DarkBASIC alike simple ist... - aber erst mal muss ich etwas feddich kriegen - typisch widermal an 10 sachen dran hier
Falls partu ned weiterkommst schreib ichs um die Tage mal...
Thalius
Code: Alles auswählen
; void faceTarget(irr::core::vector3df targetPos) {
; core::vector3df nodePos = targetPos - myNode->getPosition();
; myRotation.Y = ATan(nodePos.Z/nodePos.X) * (180.0f / irr::core::PI);
; If((targetPos.X - myNode->getPosition().X) > 0) {
; myRotation.Y = 90 - myRotation.Y;
; } Else If((targetPos.X - myNode->getPosition().X) < 0) {
; myRotation.Y = -90 - myRotation.Y;
; }
; myRotation.Y -= 90;
; myNode->setRotation(myRotation);
; }
resp. ( findest du im include file )
Code: Alles auswählen
Structure IRR_VECTOR
x.f
y.f
z.f
EndStructure
Neue Version wird noch n Command dazu kommen ( Geplant ist auch ein "Newbie" set das DarkBASIC alike simple ist... - aber erst mal muss ich etwas feddich kriegen - typisch widermal an 10 sachen dran hier

Falls partu ned weiterkommst schreib ichs um die Tage mal...
Thalius
"...smoking hash-tables until until you run out of memory." :P
gibts da nich schon ne Funktion? Hab da was in erinnerung. In der Hilfe war als Beispiel eine Rakete genannt, die sich aufs Ziel ausrichtet.. hab grad Irrlicht nich hier..
2D Game H.E.R.A. (Entwicklung eingefroren)
www.chamaeleo-fx.de.vu
- mein Lieblingszitat
"die Informationsumwelt wird von einer fürchterlichen Menge an Unsinn und Lügen verschmutzt" (Stanislaw Lem, Lokaltermin, 1954 (!) )
http://www.stanislaw-lem.de/zitate/zitate.shtml
www.chamaeleo-fx.de.vu
- mein Lieblingszitat
"die Informationsumwelt wird von einer fürchterlichen Menge an Unsinn und Lügen verschmutzt" (Stanislaw Lem, Lokaltermin, 1954 (!) )
http://www.stanislaw-lem.de/zitate/zitate.shtml
Yup für den Pitch:
** schnipp **
** schnapp **
Thalius
** schnipp **
// Especially wanted from Xperience2003
// Usefull for all out there
// Author : Xaron
/**
* @brief guided missile steering helper function
*
* @param missilePosition - current absolute position of the missile
* @param missileRotation - current absolute rotation of the missile
* @param targetPosition - current absolute target position
* @param oversteer - oversteer factor in degrees
*
* @return targetPitchRoll - delta pitch (x) and delta roll (z) values to the target
*
Code: Alles auswählen
NAME
IrrGetToTargetPitchRoll -
SYNOPSIS
IrrGetToTargetPitchRoll(*sourceNode.l, *targetNode.l, *x.f, *y.f, *z.f)
INPUTS
*sourceNode.l - pointer to a Scene Node that act as Source (maybe the Rocket)
*targetNode.l - pointer to a Scene Node to point at (maybe a enemy)
*x.f,*y.f,*z.f - targetPitchRoll : delta pitch (x) and delta roll (z) values to the target
FUNCTION
guided missile steering helper function
EXAMPLE
IrrGetToTargetPitchRoll(*rocketNode,*destinationNode, @x.f,@y.f,@z.f )
RESULT
nothing
NOTES
This wraps a Method, found in the Irrlicht-Forum
Author of the Method is : Xaron
Thalius
"...smoking hash-tables until until you run out of memory." :P
Und die C++ Funktion übersetzt:
IrrFaceTargetNode()
Siehe hier:
http://www.purebasic.fr/english/viewtopic.php?t=30500
Thalius
IrrFaceTargetNode()
Siehe hier:
http://www.purebasic.fr/english/viewtopic.php?t=30500
Thalius
"...smoking hash-tables until until you run out of memory." :P
Wenn ich das richtig vertsehe willst du das das Objekt in eine richtige Richtung schaut. Am besten du löst das ganze mit trigonometrie [cos, tan, sin] ( mach ich auch immer so ).
Bsp.
Du musst die dementsprechenden Befehle für die anderen Achsen ergänzen, ich weiß ja nicht in welche Richtung dein Objekt standardmäßig schaut. Das hier ist nur ein Beispiel.
Bahn ist die Bahnegschwindigkeit, also im Grunde die Hypothenuse.
Und gib Acht, PB benutzt in Sachen Winkelberechnungen das Bogenmaß und Irrlicht das Gradmaß, man muss erst umrechnen.
lg
Andreas
Bsp.
Code: Alles auswählen
Procedure.f Objektneigung(Bahn.f, StreckeX.f, StreckeY.f, StreckeZ.f, Achse.b)
If Achse = #ACHSE_X
ElseIf Achse = #ACHSE_Y
If StreckeZ < 0
ProcedureReturn (ACos(StreckeX/Bahn)*360)/(2*#PI)
Else
ProcedureReturn 360-(ACos(StreckeX/Bahn)*360)/(2*#PI)
EndIf
ElseIf Achse = #ACHSE_Z
EndIf
EndProcedure
Bahn ist die Bahnegschwindigkeit, also im Grunde die Hypothenuse.
Und gib Acht, PB benutzt in Sachen Winkelberechnungen das Bogenmaß und Irrlicht das Gradmaß, man muss erst umrechnen.
lg
Andreas
Solltet ihr Rechtschreibfehler finden, dürft ihr diese natürlich gerne behalten
.
