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 Avenir du blender clan    [1][2][3]...[45] 448 68048 Hier 00:13:51
yaya55 
Mes premières images sous Blender (débutants) (WIP) langue des signes française 7 157 26/09 18:22:00
Drole2princesse 
Questions & Réponses Methode pour texture tableau 0 38 26/09 17:43:27
kimlicrea 
The Blender Clan 'tchat Inkscape Forum en français ! 0 64 25/09 17:09:08
Papy_Octet 
Hors Sujet !! Atelier master : le dernier robot - Meltingman tuto 7 482 24/09 20:28:07
meltingman 
Hors Sujet !! les tutos de Moonboots    [1][2][3]...[31] 309 48163 21/09 11:25:03
moonboots 
Questions & Réponses Timeline: ne peut bouger mes channels up/ down/ to top/ bottom 1 275 19/09 09:39:18
Redstar 
Hors Sujet !! Buy (50 Pieces) New Original Unlocked Apple iPhone 14 Pro Max 5G 128GB $34,950 0 174 17/09 14:19:18
emailychang01 
[WIP] et travaux terminés [WIP] Projet très court métrage Gustave 2 363 16/09 22:21:51
doudoulolita 
Hors Sujet !! Buy (50 Pieces) Apple Watch Series 7 (GPS) 45mm $11,450 0 160 16/09 14:20:37
emailychang01 
Hors Sujet !! Buy (50 Pieces) New Original Unlocked Apple iPhone 14 Pro 5G 128GB $29,950 0 188 15/09 13:07:23
emailychang01 
Hors Sujet !! Buy (500 Pieces) New AirPod Pro (2nd generation) $69,500 0 172 14/09 13:08:35
emailychang01 
Hors Sujet !! Buy (30 Pcs) Apple Watch Ultra (GPS + Cellular) 49mm $14,970 0 183 13/09 09:42:05
emailychang01 
Hors Sujet !! Buy (50 Pieces) New Original Unlocked Apple iPhone 14 Plus 5G 128GB $24,950 0 190 12/09 12:06:46
emailychang01 
Questions & Réponses Link et moteurs de rendu 0 303 11/09 10:04:02
doudoulolita 
Hors Sujet !! Buy (400 Pieces) New AirPod Pro (2nd generation) $67,600 0 212 11/09 09:41:39
emailychang01 
Hors Sujet !! Buy (30 Pcs) Apple Watch Ultra (GPS + Cellular) $14,970 0 220 10/09 13:57:22
emailychang01 
Questions & Réponses Transformation edge loop en cercle 3 406 09/09 20:28:46
moonboots 
Hors Sujet !! Buy (50 Pieces) New Apple iPhone 14 5G 512GB $34,950 Website: www.brianelectronics.com 0 3289 09/09 14:20:04
emailychang01 
Hors Sujet !! Buy (50 Pieces) New Original Unlocked Apple iPhone 13 Pro Max 5G 128GB $29,950 0 268 06/09 10:39:49
emailychang01 

Qui est en ligne
41 utilisateur(s) en ligne (dont 24 sur Forums)

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


MariaAlice, plus...
Nouveaux membres
MathiasFul 18/8/2022
VicenteZcl 18/8/2022
OlivaL1007 18/8/2022
Adrian8943 18/8/2022
NorbertoGe 18/8/2022
VeronaKais 18/8/2022
BettieSile 18/8/2022
DarylTier 18/8/2022
BretParkhi 18/8/2022
LeoTrotter 18/8/2022
Dernier Ajout
2020-09-24.jpg

Evènements à venir
Nov 18
Anniversaire de RichDeg
Dec 29
Anniversaire d'ebrain
Jan 7
BUG de Lyon
plus 232 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