• Le couloir : croquis

    Bonjour à tous.

    Voici le croquis correspondant au couloir de mon projet. L'image n'est pas impressionnante, mais il y a pas mal de détails techniques intéressants derrière, comme vous le verrez dans le reste de l'article.

    Pourquoi un schéma aussi simple ? Pour plusieurs raisons :

    Tout d'abord, il est plus simple de placer les emplacements des objets plutôt que les objets complets. L'équilibrage de la scène est simplifié. Le rendu des scènes intermédiaires est nettement plus rapide.

    Les objets ainsi placés seront donc remplacés un par un, en temps et en heure, par des versions améliorées. Les versions de base resteront néanmoins disponibles, pour permettre par exemple de tester les animations avec des rendus rapides.

    Au niveau du code, cela se voit par des déclarations en début de fichier du type :

    #declare TAPIS_ROUGE=1; //max=1

    La valeur indiquée orientera le code source vers la version correspondante de l'objet. 0 correspond à l'absence d'objet, 1 à l'objet basique, 2 une version améliorée, et ainsi de suite. Le //max=1 rappelle que pour l'instant, la version la plus avancée est la version 1.

    Dans le code source, l'orientation s'effectue par des directives du type :

    #if (TAPIS_ROUGE=1)
    box { <150,0,-40>,<250,1,-800> pigment {color ROUGE} }
    #end

    D'autres #if se grefferont par la suite.

    Notez dans le code l'utilisation de la couleur ROUGE, qui est définie dans mon fichier "couleur.inc" (disponible sur ce blog. Fouillez un peu...)

    D'autres astuces ? Oui. Par exemple, regarder le petit cube gris en haut et à gauche. Il sera remplacé à terme par un buste. Vous remarquerez qu'il pointe vers la caméra. Lorsque la caméra se déplacera, il suivra automatiquement du regard ce déplacement. Comment ? Un peu de trigonométrie. L'angle de rotation est défini par l'arctangente du ratio entre les différences de coordonnées x et les différences de coordonnées z. ouf. 

    Ou pour être plus clair :

    #macro AngleDeVisee(PositionCamera,PositionObjet)
    atan2 (PositionCamera.x-PositionObjet.x,PositionCamera.z-PositionObjet.z) *180/pi
    #end
    box {<-15,100,-15>,<15,130,15> pigment {color GRISA} 
    rotate AngleDeVisee(PositionCam,<130,0,-200>) *y
    translate <130,0,-200>
    }

    Résultat :

    En parlant de caméra, et en vue des futures animations. J'ai remplacé le classique "Location <> look_at <>" par ceci :

    #macro LaCamera(Position, Distance, Angle, AngleVertical) 
    camera
    {
    location Position
    look_at <Position.x+Distance*sin(Angle*pi/180)*cos(AngleVertical*pi/180), Position.y-Distance*sin(AngleVertical*pi/180),
    Position.z+Distance*cos(Angle*pi/180)*cos(AngleVertical*pi/180)>
    }
    #end

    Position est la position classique de la caméra. Distance est la distance de vue, qui sera utile lorsque l'on ajoutera un focal_blur. Angle est l'angle de vue (0 regarde vers +z. On tourne autour de l'axe y) et angleVertical l'angle de plongée. Les angles sont en degré.

    Par exemple :

    Prochaine étape : le schéma de la bibliothèque. Les lumières deviendront aussi animables (et encore de la trigonométrie à la clef !)

    Et par la suite : l'animation en elle-même et les objets totalement modélisés.

    A bientôt !

    « Un nouveau projet avec des fantômes dedansUn couloir animé et un (tout petit) peu hanté »

  • Commentaires

    Aucun commentaire pour le moment

    Suivre le flux RSS des commentaires


    Ajouter un commentaire

    Nom / Pseudo :

    E-mail (facultatif) :

    Site Web (facultatif) :

    Commentaire :