utiliser gluUnProject dans la vue 3D ?
Blendie
Inscrit:
02/07/2004 13:10
De Périgueux ou Bordeaux
Post(s): 28
Bonjour !

Je cherche a récupérer les coordonnées 3D de ce qui est sous le curseur de la souris..
En OpenGL, ca se fait en utilisant la fonction gluUnProject, et, Oh miracle !! cette fonction est également dans BGL...
Seulement lorsque je l'appelle, les coordonnées qu'elle me retourne sont toujours (0, 0, 0)...
Quelqu'un saurait pourquoi ?

Contribution le : 13/03/2007 11:20
Créer un fichier PDF de la contribution Imprimer


Re: utiliser gluUnProject dans la vue 3D ?
RegulatorZ
Inscrit:
17/01/2006 15:44
De chez les Ch'tis !
Post(s): 4032
C'est quoi les paramètres que tu lui passe dans BGL ? Peut-être que les matrices sont incorrectes.

Contribution le : 13/03/2007 11:57
_________________
Snark -- Pourquoi faire simple quand on peut faire compliqué ?
Créer un fichier PDF de la contribution Imprimer


Re: utiliser gluUnProject dans la vue 3D ?
Blendie
Inscrit:
02/07/2004 13:10
De Périgueux ou Bordeaux
Post(s): 28
Je récupere les matrices modelView, projection et viewport avec des glGet qui vont bien ...
J'ai essayé d'afficher ces matrices, et elles ont l'ai correctes... En tout cas, elles ne sont pas nulles...

Voila un petit bout de code..

# SPACEHANDLER.VIEW3D.EVENT

import sys
import os


import Blender
from Blender import Draw

from Blender import BGL

def get_viewport():
    view = BGL.Buffer(BGL.GL_INT, 4)
    BGL.glGetIntegerv(BGL.GL_VIEWPORT, view)
    return view

def get_modelview_matrix():
    model_matrix = BGL.Buffer(BGL.GL_FLOAT, 16)
    BGL.glGetFloatv(BGL.GL_MODELVIEW_MATRIX, model_matrix)
    return model_matrix

def get_projection_matrix():
    proj_matrix = BGL.Buffer(BGL.GL_FLOAT, 16)
    BGL.glGetFloatv(BGL.GL_PROJECTION_MATRIX, proj_matrix)
    return proj_matrix

def mouse_coords_to_3D_view(x, y):
    
    depth = BGL.Buffer(BGL.GL_FLOAT, 1)
    BGL.glReadPixels(x, y, 1, 1, BGL.GL_DEPTH_COMPONENT, BGL.GL_FLOAT, depth)

    if (depth[0] != 1):
        world_x = BGL.Buffer(BGL.GL_FLOAT, 2)
        world_y = BGL.Buffer(BGL.GL_FLOAT, 2)
        world_z = BGL.Buffer(BGL.GL_FLOAT, 2)

        view1 = get_viewport()
        model = get_modelview_matrix()
        proj = get_projection_matrix ()
   
        BGL.gluUnProject(x, y, depth[0], 
                         model, proj,
                         view1,
                         world_x, world_y, world_z)

        return world_x[0], world_y[0], world_z[0]

evt = Blender.event
return_it = False

if (evt == Draw.LEFTMOUSE):
    coord = Blender.Window.GetMouseCoords()
    print mouse_coords_to_3D_view (coord[0],coord[1])
else:
    return_it = True

# if Blender should not process itself the passed event:
if (not return_it):
    Blender.event = None

Contribution le : 13/03/2007 12:03
Créer un fichier PDF de la contribution Imprimer


Re: utiliser gluUnProject dans la vue 3D ?
RegulatorZ
Inscrit:
23/05/2004 07:11
De Metz
Post(s): 11301
Salut,

je ne sais pas si ça peut t'aider, mais voici un tuto sur l'utilisation du curseur dans Game Blender. Bonne lecture !

Contribution le : 13/03/2007 12:39
_________________
Portfolio
Créer un fichier PDF de la contribution Imprimer


Re: utiliser gluUnProject dans la vue 3D ?
Blendie
Inscrit:
02/07/2004 13:10
De Périgueux ou Bordeaux
Post(s): 28
Merci, mais ici il suppose que la camera est en vue de haut... moi j'ai besoin que ca marche dans tous les cas ...

Contribution le : 13/03/2007 16:01
Créer un fichier PDF de la contribution Imprimer


Re: utiliser gluUnProject dans la vue 3D ?
Touriste
Inscrit:
31/03/2007 20:47
Post(s): 1
La vache, j'ai essayé de faire exactement la même chose sans succès... Il faut dire que j'avais mis 0. pour la profondeur (au lieu de faire comme tu as fait avec depth). J'ai donc essayé ton script, et réussi à le faire marcher ! Et je te dis merci au passage

Donc bref je t'explique ce que j'ai fait : en fait gluUnProject prend des buffers de type GL_DOUBLE en entrée (et sortie aussi)... Donc il suffit de changer les types des buffers, ça donne ça :

def get_modelview_matrix():
model_matrix = BGL.Buffer(BGL.GL_DOUBLE, 16)
BGL.glGetDoublev(BGL.GL_MODELVIEW_MATRIX, model_matrix)
return model_matrix

def get_projection_matrix():
proj_matrix = BGL.Buffer(BGL.GL_DOUBLE, 16)
BGL.glGetDoublev(BGL.GL_PROJECTION_MATRIX, proj_matrix)
return proj_matrix

De même pour les coordonnées :
world_x = BGL.Buffer(BGL.GL_DOUBLE, 1)
world_y = BGL.Buffer(BGL.GL_DOUBLE, 1)
world_z = BGL.Buffer(BGL.GL_DOUBLE, 1)

Voilà, ça devrait marcher (en tous cas ça marche chez moi).

Contribution le : 31/03/2007 20:57
Créer un fichier PDF de la contribution Imprimer



 Haut   Précédent   Suivant




Enregistrer votre réponse
Compte*
Nom   Mot de passe   Authentification
Message:*



[Recherche avancée]



Sujets récemment répondus
Forums Sujets Réponses Lus Dernières contributions
The Blender Clan 'tchat Blender Tribu, un nouveau forum 5 568 26/06 11:18:05
moonboots 
Questions & Réponses Machine distante puissante 1 67 25/06 13:33:05
sapajou 
Questions & Réponses Lattice cylindrique 2 56 25/06 12:33:08
kimlicrea 
[WIP] et travaux terminés Participation au concours Spark Avec Blender 2 121 25/06 11:51:13
ArnaudT 
Questions & Réponses [résolu] Transition couleur 7 319 23/06 23:13:47
yawdpwal 
Questions & Réponses Image étiré sur un objet 3 129 23/06 22:50:24
meltingman 
Questions & Réponses [non résolu] Mes UDIM ne se chargent pas automatiquement 2 110 23/06 18:00:47
Voltrum 
Questions & Réponses Je n'arrive pas à rendre mon animation, je n'obtiens que des images noires    [1][2] 16 48774 23/06 17:48:25
thomas56 
Questions & Réponses booleen: Faire une différence entre deux objet 4 227 21/06 00:08:50
BlendProblem 
Hors Sujet !! les tutos de Moonboots    [1][2][3]...[29] 284 40273 18/06 09:13:32
moonboots 
Questions & Réponses Panneau disparu en passant de 3.0 à 3.2 2 195 18/06 08:53:13
Horemheb 
The Blender Clan 'tchat Avenir du blender clan    [1][2][3]...[42] 415 58842 15/06 19:35:29
Teto45 
Questions & Réponses [résolu] effet de fumée: mon cube "domain" apparaît lors du render 2 286 14/06 09:42:07
PounchPounch 
[WIP] et travaux terminés [WIP] Les tests de mon gros projet (merci pour vos conseils)    [1][2][3][4] 33 51550 13/06 13:37:51
Lylo 
The Blender Clan 'tchat Leurre ?    [1][2][3] 22 1292 08/06 02:04:39
meltingman 
Moteur de jeu GameBlender et alternatives [non résolu] Cs (vaisseau)    [1][2][3]...[57] 567 185745 07/06 20:14:37
Redstar 
Questions & Réponses [non résolu] Cycle rendre une vitre de manière visible 0 179 06/06 10:33:25
Redstar 
The Blender Clan 'tchat VSE !!! 2 314 05/06 02:35:33
meltingman 
The Blender Clan 'tchat Inscription BlenderClan 6 1175 04/06 09:50:41
Redstar 
The Blender Clan 'tchat Les muets 0 228 03/06 23:04:31
Rimpotche 

Qui est en ligne
213 utilisateur(s) en ligne (dont 105 sur Forums)

Membre(s): 1
Invité(s): 212


KathleneMc, plus...
Nouveaux membres
BennettSal 28/6/2022
TressaGopi 28/6/2022
ElkeBrake 28/6/2022
EliseDenby 28/6/2022
GwenChadwi 28/6/2022
JeannaCard 28/6/2022
HungAdams6 28/6/2022
AzucenaGua 28/6/2022
ScottyWebs 28/6/2022
GladisSkut 28/6/2022
Dernier Ajout
2020-09-24.jpg

Evènements à venir
Jui 30
Anniv des Jedi :-D
Jui 9
BUG de Lyon
Jui 23
Anniv du BlenderClan !
plus 238 plus d'élément(s)
 Par Mickaël Guédon [ebrain] © 2003-2021 The Blender Clan - hébergé par TuxFamily - Site déclaré à la CNIL sous le numéro 1155445