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
Hors Sujet !! les tutos de Moonboots    [1][2][3]...[30] 298 44075 Hier 19:22:50
moonboots 
Hors Sujet !! Buy (100 Pcs) Sunpak 22 Bi-Color Ring Light Vlogging $10,900 0 16 Hier 16:17:37
emailychang01 
The Blender Clan 'tchat Avenir du blender clan    [1][2][3]...[43] 420 62750 12/08 19:28:37
Bibi09 
Hors Sujet !! Buy (50 Pieces) Cambridge Audio - G2 Mini Portable Bluetooth Speaker - Black $5,950 0 32 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 857 11/08 14:19:42
emailychang01 
Hors Sujet !! Buy (50 Pieces) Apple iPad Pro 11-Inches 2021 2TB Wifi + Cellular $84,950 0 53 10/08 16:07:53
emailychang01 
Hors Sujet !! Buy (50 Pieces) New Original Unlocked Apple iPhone 13 5G 512GB $34,950 0 64 09/08 14:54:39
emailychang01 
Questions & Réponses Problème alpha sur le rendu 3 122 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 89 08/08 13:58:45
emailychang01 
Hors Sujet !! Buy(30 Pcs) Package Fujifilm-X-S10 Mirrorless Camera $30,570 Website: www.brianelectronics.com 0 100 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 83647 06/08 17:16:33
moonboots 
The Blender Clan 'tchat Enfin ! depuis 20 ans :) 2 245 06/08 15:06:57
stefff285 
Hors Sujet !! Buy(50 Pcs) Optoma CinemaX P2 Home Theater Projector $94,950 Website: www.brianelectronics.com 0 22992 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 18415 04/08 16:14:48
emailychang01 
Hors Sujet !! Buy(50 Pcs) Mac Studio (2022) M1 Ultra 64GB 1TB SSD $174,950 0 172 03/08 17:10:34
emailychang01 
Questions & Réponses problème sur la texture voulue 3 373 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 280 02/08 16:29:43
emailychang01 
Hors Sujet !! Buy (30 Pieces) Plustek - SmartOffice PS3180U Document Scanner - White $15,870 0 226 01/08 17:03:39
emailychang01 
Hors Sujet !! Buy (30 Pieces) Apple iPad Air 10.9-inch (2022) 256GB Wi-Fi + Cellular 17,970 0 220 30/07 15:52:56
emailychang01 
Questions & Réponses Visit Our Website 0 256 30/07 06:16:18
NREKatheri 

Qui est en ligne
145 utilisateur(s) en ligne (dont 68 sur Forums)

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


Anibal0914, plus...
Nouveaux membres
VMVStuart 14/8/2022
HarryBeaul 14/8/2022
Tara214543 14/8/2022
CliffShell 14/8/2022
VerleneGil 14/8/2022
Fran16N69 14/8/2022
ChristyDel 14/8/2022
Cortney692 14/8/2022
GeorgiaFor 14/8/2022
JodyWaterh 14/8/2022
Dernier Ajout
2020-09-24.jpg

Evènements à venir
(continuer) - Aou 14
Anniversaire Siskas
Sep 8
Anniversaire de ang
Nov 18
Anniversaire de RichDeg
plus 234 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