Day.png);">
Apprendre


Vous êtes
nouveau sur
Oniromancie?

Visite guidée
du site


Découvrir
RPG Maker


Apprendre
RPG Maker

Tutoriels
Guides
Making-of

Dans le
Forum

Section Entraide

Jeux: puie z / Jeux: Citymaime - Chapitre 1 / Jeux: Mer, îles et fous / News: Du neuf dans le making / News: Muma|Rope est disponible en (...) / Chat

Bienvenue
visiteur !




publicité RPG Maker!

Statistiques

Liste des
membres


Contact

Mentions légales

384 connectés actuellement

30729773 visiteurs
depuis l'ouverture

3390 visiteurs
aujourd'hui



Barre de séparation

Partenaires

Indiexpo

Akademiya RPG Maker

Blog Alioune Fall

Fairy Tail Constellations

RPG Maker Détente

Hellsoft

Le Comptoir Du clickeur

Lunae - le bazar d'Emz0

Eclipso

Tous nos partenaires

Devenir
partenaire



forums

Index du forum > Généralités > Discussion programmation 3D


solidboko - posté le 09/05/2014 à 17:24:32 (292 messages postés)

❤ 0

Topic créé pour éviter de squatter le topic Screenshots.

Mack a dit:


solidboko a dit:


Mack> c'est le sinus de l'angle vertical.

Portion de code : Tout sélectionner

1
@camera.target_y = @camera.position.y + distance * Math::sin(@angle_vertical * Math::PI / 180.0)



Attention à bien limiter la rotation de -90.0 à 90.0 max, sinon tu vas revenir en arrière ! Et puis bon, ça simulerait un FPS de contorsionniste de toutes façons ;)



En faite, j'ai compris d'où viens mon problème xD.
C'est que quand je bouge la caméra de haut en bas, je dois pas déplacer mes objets seulement sur l'axe vertical, mais aussi sur les deux autres !
Si mon personnage regarde dessous lui, les objets seront en position (0,-1,0) ( Avex X,Y,Z. Y positif vers le haut ), s'il regarde vers le haut ça sera (0,1,0), et s'il regarde devant lui X et Z dépendront de sa rotation, et Y sera fixé par ses yeux.
Bon, maintenant j'ai plus qu'à trouver comment faire xD.


( N'empêche, on ( Enfin, surtout moi ) squatte le topic depuis une page ou deux en faite xD )



En fait, tu as tes deux angles principaux, l'axe "oui" de la tête et l'axe "non" de la tête. Personnellement, parce que ça me parle bien même si c'est peut être faux, je les appelle respectivement axe_vertical et axe_horizontal.

Si tu es dans un FPS, ta caméra va se déplacer et ta cible sera placée en fonction d'elle. Si tu es dans un TPS, c'est l'inverse. Dans les deux cas, tu vas avoir besoin de deux variables supplémentaires : la vélocité et la distance entre caméra et cible.

Si tu es dans un FPS, par exemple :

Portion de code : Tout sélectionner

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# si déplacement vers l'avant
@camera.position.x += speed * Math::cos(@angle_horizontal * Math::PI / 180.0)
@camera.position.z += speed * Math::sin(@angle_horizontal * Math::PI / 180.0)
 
# si déplacement vers l'arrière
@camera.position.x -= speed * Math::cos(@angle_horizontal * Math::PI / 180.0)
@camera.position.z -= speed * Math::sin(@angle_horizontal * Math::PI / 180.0)
 
# si déplacement vers la droite
@camera.position.x += speed * Math::cos((@angle_horizontal - 90.0) * Math::PI / 180.0)
@camera.position.z += speed * Math::sin((@angle_horizontal - 90.0) * Math::PI / 180.0)
 
# si déplacement vers la gauche
@camera.position.x -= speed * Math::cos((@angle_horizontal - 90.0) * Math::PI / 180.0)
@camera.position.z -= speed * Math::sin((@angle_horizontal - 90.0) * Math::PI / 180.0)
 
# ta position est ajustée, maintenant tu positionnes ta cible de la même manière par rapport à la position
@camera.target.x = @camera.position.x + distance * Math::cos(@angle_horizontal * Math::PI / 180.0)
@camera.target.y = @camera.position.y + distance * Math::sin(@angle_vertical * Math::PI / 180.0)
@camera.target.z = @camera.position.z + distance * Math::sin(@angle_horizontal * Math::PI / 180.0)



Et voilà ! Et du coup, tu peux dessiner tes objets à leur position réelle :

Portion de code : Tout sélectionner

1
2
3
4
5
6
7
8
9
gluLookAt(@camera.position.x, @camera.position.y, @camera.position.z,
  @camera.target.x, @camera.target.y, @camera.target.z, 0, 1, 0) # verticale sur Y
 
BOUCLE sur tous tes objets à dessiner
glPushMatrix # sauvegarde de la matrice actuelle
glTranslate(x, y, z) # tu déplaces le repère là où tu dois dessiner ton objet
# dessin de ton objet...
glPopMatrix # tu remets la matrice à l'état précédent
FIN DE BOUCLE



Maker un jour, maker toujours.


Mack - posté le 09/05/2014 à 18:39:14 (2310 messages postés) - staff -

❤ 0

Çà peut être une bonne idée ce topic, même si on risque d'être principalement nous deux xD.


Bah en faite, pour le déplacement c'est (presque) exactement ce que j'ai fait.
( Dans ton code, tu inverses tout les sin et les cos.
En gros, moi j'ai du position.x = speed * Math.sin(Math.toRadians(Axe_H))
position.z = speed * Math.cos(Math.toRadians(Axe_H))
Pour le déplacement en avant. Et ainsi de suite pour les autres déplacements.
)

Pour le dernier code, c'est ce que je fait pour afficher n'importe quel objet 3D ^^.

Et pour placer mes mains ( parce que je rappelle que c'est ça mon soucis xD. ), la position en Y ne dépend que de l'axe vertical, tandis que les positions X/Z, elles dépendent aussi de l'axe Y.
En gros :

Vue de côté :
image

Vue de dessus :
image


Chaque couleur correspond au même point de vue sur les deux images.
Donc en gros, on imagine une sphère et les armes doivent rester aux bords.
Donc si le joueur regarde le sol ( couleur verte ), ou le plafond ( couleur violette ), les objets n'auront pas la même position X/Z que si le joueur regarde droit devant lui ( couleur bleu ).
J'arrive pas à expliquer ce que je veux dire en faite ><.


Sinon, avec ta solution, ça donne ça :



Et pour l'instant, moi j'arrive à avoir ça :



( Ah mince, j'viens de me rendre compte que j'ai aussi modifier autre chose dans la seconde vidéo, normalement les objets sont bien espacé, mais selon l'axe vertical, ils le sont plus ou moins, et finissent par échanger leur place.
Mais bon, en bossant bien j'suis arriver jusque là. )


Donc faut juste que j'arrive à espacer correctement mes objets.

( Je prend note de tout les commentaires, même si je n'y répond pas )


solidboko - posté le 09/05/2014 à 22:06:04 (292 messages postés)

❤ 0

Vidéo privée :-)

Maker un jour, maker toujours.


Mack - posté le 09/05/2014 à 22:11:51 (2310 messages postés) - staff -

❤ 0

Ah mince ><.

Ça devrait être bon là.

( Je prend note de tout les commentaires, même si je n'y répond pas )


solidboko - posté le 16/05/2014 à 14:18:12 (292 messages postés)

❤ 0

oui, c'est clairement pas top. L'idée, c'est d'arriver à avoir le pivot au bon endroit, spontanément, je me demande donc comment sont chargés tes objets 3D. Il faudrait dessiner par rapport à la "prise" et faire pivoter la vue en même temps que les objets.

Maker un jour, maker toujours.

Index du forum > Généralités > Discussion programmation 3D

repondre up

Suite à de nombreux abus, le post en invités a été désactivé. Veuillez vous inscrire si vous souhaitez participer à la conversation.

Haut de page

Merci de ne pas reproduire le contenu de ce site sans autorisation.
Contacter l'équipe - Mentions légales

Plan du site

Communauté: Accueil | Forum | Chat | Commentaires | News | Flash-news | Screen de la semaine | Sorties | Tests | Gaming-Live | Interviews | Galerie | OST | Blogs | Recherche
Apprendre: Visite guidée | RPG Maker 95 | RPG Maker 2003 | RPG Maker XP | RPG Maker VX | RPG Maker MV | Tutoriels | Guides | Making-of
Télécharger: Programmes | Scripts/Plugins | Ressources graphiques / sonores | Packs de ressources | Midis | Eléments séparés | Sprites
Jeux: Au hasard | Notre sélection | Sélection des membres | Tous les jeux | Jeux complets | Le cimetière | RPG Maker 95 | RPG Maker 2000 | RPG Maker 2003 | RPG Maker XP | RPG Maker VX | RPG Maker VX Ace | RPG Maker MV | Autres | Proposer
Ressources RPG Maker 2000/2003: Chipsets | Charsets | Panoramas | Backdrops | Facesets | Battle anims | Battle charsets | Monstres | Systems | Templates
Ressources RPG Maker XP: Tilesets | Autotiles | Characters | Battlers | Window skins | Icônes | Transitions | Fogs | Templates
Ressources RPG Maker VX: Tilesets | Charsets | Facesets | Systèmes
Ressources RPG Maker MV: Tilesets | Characters | Faces | Systèmes | Title | Battlebacks | Animations | SV/Ennemis
Archives: Palmarès | L'Annuaire | Livre d'or | Le Wiki | Divers