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]...[43] 429 63095 Hier 21:45:20
lucky 
Hors Sujet !! Buy (20 Pieces) New Sony PlayStation 5 Console – Horizon Forbidden West Bundle $8,000 0 15 Hier 14:53:07
emailychang01 
Hors Sujet !! Buy (30 Pcs) Dell - Inspiron 2-in-1 16-Inch 512GB SSD $25,47 0 25 14/08 19:10:12
emailychang01 
Hors Sujet !! les tutos de Moonboots    [1][2][3]...[31] 301 44309 14/08 13:41:53
moonboots 
Hors Sujet !! Buy (100 Pcs) Sunpak 22 Bi-Color Ring Light Vlogging $10,900 0 45 13/08 16:17:37
emailychang01 
Hors Sujet !! Buy (50 Pieces) Cambridge Audio - G2 Mini Portable Bluetooth Speaker - Black $5,950 0 62 12/08 15:43:03
emailychang01 
Hors Sujet !! Buy (50 Pieces) New Samsung Galaxy Z Fold4 256GB Unlocked $64,950 Website: www.brianelectronics.com 0 1577 11/08 14:19:42
emailychang01 
Hors Sujet !! Buy (50 Pieces) Apple iPad Pro 11-Inches 2021 2TB Wifi + Cellular $84,950 0 86 10/08 16:07:53
emailychang01 
Hors Sujet !! Buy (50 Pieces) New Original Unlocked Apple iPhone 13 5G 512GB $34,950 0 93 09/08 14:54:39
emailychang01 
Questions & Réponses Problème alpha sur le rendu 3 165 09/08 13:27:37
debutant 
Hors Sujet !! Buy (30 Pieces) LG - 55-inch Class C2 Series OLED evo 4K UHD Smart webOS TV (2022) $44,970 0 114 08/08 13:58:45
emailychang01 
Hors Sujet !! Buy(30 Pcs) Package Fujifilm-X-S10 Mirrorless Camera $30,570 Website: www.brianelectronics.com 0 126 07/08 15:23:19
emailychang01 
Hors Sujet !! Buy (10 Pieces) Sony - FE 70-200mm F2.8 GM OSS II Full-Frame Telephoto Zoom G Master Lens $24,990 1 83674 06/08 17:16:33
moonboots 
The Blender Clan 'tchat Enfin ! depuis 20 ans :) 2 275 06/08 15:06:57
stefff285 
Hors Sujet !! Buy(50 Pcs) Optoma CinemaX P2 Home Theater Projector $94,950 Website: www.brianelectronics.com 0 23019 05/08 15:34:27
emailychang01 
Hors Sujet !! Buy (50 Pieces) Samsung Galaxy Tab S8+ 8GB 12.4-inch display Original Wi-Fi Only 128GB $22,500 0 18439 04/08 16:14:48
emailychang01 
Hors Sujet !! Buy(50 Pcs) Mac Studio (2022) M1 Ultra 64GB 1TB SSD $174,950 0 215 03/08 17:10:34
emailychang01 
Questions & Réponses problème sur la texture voulue 3 408 03/08 01:56:09
meltingman 
Hors Sujet !! Buy (50 Pcs) HP ENVY 2-in-1 15-ch i7 16GB 512GB SSD $29,950 0 321 02/08 16:29:43
emailychang01 
Hors Sujet !! Buy (30 Pieces) Plustek - SmartOffice PS3180U Document Scanner - White $15,870 0 253 01/08 17:03:39
emailychang01 

Qui est en ligne
128 utilisateur(s) en ligne (dont 60 sur Forums)

Membre(s): 0
Invité(s): 128


plus...
Nouveaux membres
NoreenQtx8 16/8/2022
KathyBdz28 16/8/2022
MeridithPa 16/8/2022
IrvingFine 16/8/2022
LeahWinche 16/8/2022
JaiBarnett 16/8/2022
Roberto923 16/8/2022
RMSDarci04 16/8/2022
EtsukoMede 16/8/2022
RodneyBkz0 16/8/2022
Dernier Ajout
2020-09-24.jpg

Evènements à venir
Sep 8
Anniversaire de ang
Nov 18
Anniversaire de RichDeg
Dec 29
Anniversaire d'ebrain
plus 233 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