IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Java Discussion :

Créer un rayTrace


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Août 2012
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2012
    Messages : 39
    Par défaut Créer un rayTrace
    Bonjour a tous,

    Je suis actuellement en train de créer un jeu 3D et j'ai besoin d'avoir une fonction qui me retourne l’entité que je regarde, mais je n'est pas réussi a le faire.

    Voici mon code actuel:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    public Entity rayTrace()
        {
            if(entity instanceof EntityPlayer)
            {
                Vector3f cam = ((EntityPlayer)this.entity).getCameraPos();
                float distanceZ = (float)(Math.cos(Math.toRadians(this.entity.getRotY())) * 0.3f);
                float distanceX = (float)(Math.sin(Math.toRadians(this.entity.getRotY())) * 0.3f);
                Vector3f playerDirection = new Vector3f(cam.x + distanceX, cam.y, cam.z + distanceZ);
                Vector3f playerView = MathHelper.coordinate(cam, playerDirection);
     
                for(Entity entity : Entity.entityList)
                {
     
                    for(int k = 0; !entity.hitBox.collideWithVector(playerView); k++)
                    {
                        playerView = MathHelper.coordinate(cam.translate(k, 0, k), playerDirection.translate(k, 0, k));
                        if(entity.hitBox.collideWithVector(playerView))
                        {
                            System.out.println(entity);
                            return entity;
                        }
                        if(k>10)
                            break;
                    }
                }
            }
            return null;
        }
     
    public boolean collideWithVector(Vector3f vec)
        {
            return(vec.x > this.minX && vec.x < this.maxX && vec.y > this.minY && vec.y < this.maxY && vec.z > this.minZ && vec.z < this.maxX);
        }
    les methode utiliser dans la classe MathHelper:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public static Vector3f coordinate(Vector3f vec1, Vector3f vec2)
        {
            return new Vector3f(vec2.x - vec1.x, vec2.y - vec1.y, vec2.z - vec1.z);
        }

  2. #2
    Modérateur
    Avatar de wax78
    Homme Profil pro
    R&D - Palefrenier programmeur
    Inscrit en
    Août 2006
    Messages
    4 105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : R&D - Palefrenier programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 105
    Par défaut
    Ou est ta fonction de test d'intersection Ray->Box ?
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Août 2012
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2012
    Messages : 39
    Par défaut
    c'est la fonction collideWithVector que j'ai posté

  4. #4
    Modérateur
    Avatar de wax78
    Homme Profil pro
    R&D - Palefrenier programmeur
    Inscrit en
    Août 2006
    Messages
    4 105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : R&D - Palefrenier programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 105
    Par défaut
    Ta fonction elle teste si un point est dans une boite. Pas si un rayon touche une boite on dirait plutot. Est tu sûre que c'est bien ce que tu veux ? (mais j'en doute...)
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Août 2012
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2012
    Messages : 39
    Par défaut
    a oui exact, mais du coup comment modifier ca?

  6. #6
    Modérateur
    Avatar de wax78
    Homme Profil pro
    R&D - Palefrenier programmeur
    Inscrit en
    Août 2006
    Messages
    4 105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : R&D - Palefrenier programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 105
    Par défaut
    En général, il faut 3 paramètre pour faire un test Rayon->Boite. (Toi tu en as 2 jusque la, le param 1 et le 3 si je ne me trompe pas).

    Paramètre 1 les bouding box de la boite.
    Paramètre 2 l'origine du rayon (le jour j'imagine).
    Paramètre 3 la direction du rayon.

    Google devrait te trouver tout ce que tu voudrais, mais pour commencer ceci devrait peut être te mettre sur la piste http://gamedev.stackexchange.com/que...ion-algorithms ou peut être même dans http://matthieu-brucher.developpez.c.../3D/raytracer/ la je pense que y'a quelque chose.
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. [CR] Est il possible de créer des univers avec Seagate Info?
    Par Frank dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 27/06/2002, 16h22
  2. Créer un interpréteur de langage inspiré du Basic
    Par Picasso dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 11/05/2002, 18h10
  3. Comment faire pour créer un bitmap
    Par GliGli dans le forum C++Builder
    Réponses: 2
    Dernier message: 24/04/2002, 16h41
  4. Peux t'on créer une copie locale de l'objet partagé?
    Par Anonymous dans le forum CORBA
    Réponses: 8
    Dernier message: 16/04/2002, 17h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo