Raydium 3D Game Engine

Official forum for everything about Raydium, ManiaDrive, MeMak, ...
It is currently Thu Apr 18, 2024 5:22 pm

All times are UTC




Post new topic Reply to topic  [ 10 posts ] 
Author Message
PostPosted: Sat Jul 04, 2009 10:16 pm 
Offline

Joined: Tue Jul 22, 2008 1:52 pm
Posts: 82
Bonjour
Voila je voudrais savoir si s'est possible de tourner un object crée avec raydium_object_load


Top
 Profile  
 
PostPosted: Sun Jul 05, 2009 3:46 pm 
Offline
User avatar

Joined: Sun Mar 16, 2003 2:53 am
Posts: 2591
Location: gnniiiii (Scrat)
Il est possible de translater, rotater, scaler, ... les objets "purs" avec les appels OpenGL dédiés :
glTranslate*(), glRotate*() et glScale*(), et ce juste avant de rendre l'objet en question avec raydium_object_draw_*(). Après le rendu, il faut réinitialiser la matrice OpenGL, à l'aide de raydium_camera_replace() par exemple.

L'utilisation des matrices OpenGL demande un peu d'habitude. Par exemple, il faut bien comprendre que l'ordre des opérations est important. Rotater un objet puis le translater va donner un résultat très différent d'un objet qui a d'abord été translaté, puis rotaté (la rotation ne se fait plus sur son centre géométrique dans ce cas).

Bref, cette manière de travailler n'est clairement pas la plus évidente, d'autant qu'elle te prive de beaucoup de fonctionnalités (réseau, replays, physique, captures 3D, ...) par rapport à une utilisation "classique" à l'aide de RayODE (avec raydium_ode_object_box_add(), par exemple).

Dernier point (de détail), la fonction raydium_object_load() est globalement inutile (sauf gestion des id/instance ou du cache lors du chargement de l'application) puisque Raydium charge automatiquement les objets lors d'une demande de rendu (avec raydium_object_draw_name(), donc).


Top
 Profile  
 
PostPosted: Sun Jul 05, 2009 7:31 pm 
Offline

Joined: Tue Jul 22, 2008 1:52 pm
Posts: 82
Merci mais mon problème est que je ne veut pas de physique sur cette object
J'en avait déjà parlé mais s'est pour faire des cube qui tourne (comme dans mariokart pour prendre les armes)


Top
 Profile  
 
PostPosted: Sun Jul 05, 2009 7:56 pm 
Offline

Joined: Tue Jul 22, 2008 1:52 pm
Posts: 82
sa semble marcher avec

Code:
glTranslatef(24.0000,-0.2000,-1.3000);
glRotatef(r,1,0,0);
raydium_object_draw(arme);
raydium_camera_replace();


merci


Top
 Profile  
 
PostPosted: Sun Jul 05, 2009 8:29 pm 
Offline
User avatar

Joined: Sun Mar 16, 2003 2:53 am
Posts: 2591
Location: gnniiiii (Scrat)
Ouaip, c'est correct.

Sinon, "pas de physique", ça signifie quoi ? Si tu ne souhaite pas que les objets tombent sur le sol, par exemple, et flottent en l'air, tu as plein de moyens de faire avec RayODE : désactiver la gravité pour ces objets, créer tes objets en RAYDIUM_ODE_STATIC et les faire tourner/bouger à l'aide des fonctions ODE classiques, ...

Si ce sont des bonus, le problème suivant pour toi risque d'être la détection de la collision lorsque le joueur "passe dessus". Là encore, la physique te fait ce travail tout seul ... (tu met un tag spécifique, et hop c'est réglé).

Enfin, c'est à toi de voir hein ;)


Top
 Profile  
 
PostPosted: Tue Jul 07, 2009 6:46 pm 
Offline

Joined: Tue Jul 22, 2008 1:52 pm
Posts: 82
Merci
j'ai pensé à supprimer la gravité
mais je peut aussi supprimer la réaction physique quand la voiture va arriver dedans ??
car sinon il va partir et si je le met en STATIC sa va bloquer la voiture.

Voila ma réflexion qui me pousse à ne pas mettre d'objet avec ode mais si tu a une solution merci.

Pour la détection je pensait juste calculer la distance et quand on est proche sa prend le bonus le désavantage est qu'on peut toucher le bonus sans le prendre l'avantage est que sa ne favorise pas les grande voiture.


Top
 Profile  
 
PostPosted: Wed Jul 08, 2009 9:01 am 
Offline
User avatar

Joined: Sun Mar 16, 2003 2:53 am
Posts: 2591
Location: gnniiiii (Scrat)
Tu disposes de callback pour gérer le fait que tu veuilles ou non une collision entre deux objets précis. Par exemple, ManiaDrive utilise ce système, avec sa fonction nearcall() (regarde dans mania_drive.c, c'est assez simple) pour que la voiture n'entre pas en collision avec les boites STATIC invisibles des checkpoints/arrivé/départ/turbos. Il suffit de faire un "return 0" dans la fonction en question. Et au passage, tu détectes que le joueur vient de toucher ton objet :)

N'oublie pas de d'enregistrer ton callback auprès de Raydium:
Code:
int main(...)
{
...
raydium_ode_ObjectNearCollide=nearcall;
...
}


Mais, comme tu le dit, ta méthode a ses avantages aussi :)


Top
 Profile  
 
PostPosted: Wed Jul 08, 2009 7:40 pm 
Offline

Joined: Tue Jul 22, 2008 1:52 pm
Posts: 82
Merci s'est pratique ce système.
Mais je pense rester sur mon idée.
Je vais tout de même regarder dans ManiaDrive comment s'est fait.

Comme tu semble bien maîtriser l'opengl je voulait juste savoir si il est possible de rendre mon cube semi transparent facilement ou si si s'est au niveau des texture


Top
 Profile  
 
PostPosted: Wed Jul 08, 2009 9:27 pm 
Offline
User avatar

Joined: Sun Mar 16, 2003 2:53 am
Posts: 2591
Location: gnniiiii (Scrat)
le problème des surfaces transparentes, c'est la gestion du zbuffer ... il est impossible d'utiliser le zbuffer, puisque sinon, les surfaces transparentes à l'arrière du cube ne vont pas être affichées, puisque cachées (selon le zbuffer) par les surfaces transparentes de l'avant du cube ...

En bref, active le blending et désactive le zbuffer avant de rendre ton objet à l'aide de textures transparentes.


Top
 Profile  
 
PostPosted: Wed Jul 08, 2009 9:31 pm 
Offline

Joined: Tue Jul 22, 2008 1:52 pm
Posts: 82
ok
Trop complexe pour le moment je verrais sa plus tard.

Merci


Top
 Profile  
 
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 10 posts ] 

All times are UTC


Who is online

Users browsing this forum: No registered users and 16 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
cron
Powered by phpBB® Forum Software © phpBB Group