MODÉLISATION 3D. Alexandre Blondin Massé Département d'informatique Université du Québec à Montréal 14 octobre 2015 INF5071 - Infographie



Documents pareils
pcon.planner 6 Préparer et présenter une implantation en toute simplicité

Développement mobile MIDP 2.0 Mobile 3D Graphics API (M3G) JSR 184. Frédéric BERTIN

Canvas 3D et WebGL. Louis Giraud et Laetitia Montagny. 9 Avril Université Lyon 1

modélisation solide et dessin technique

Faire de la 3D dans un navigateur web avec three.js. v Brouillon

Comment sélectionner des sommets, des arêtes et des faces avec Blender?

TP Blender n 3 : Luxrender : Rendu d une scène d extérieur

Le stockage local de données en HTML5

Mise en scène d un modèle dans l espace 3D

Reaper : utilisations avancées

IMAGE BASED MODELING généralités et utilisation des outils de photomodélisation. 123D Catch de Autodesk.

TP Blender n 2 : Importation d un modèle SketchUp et animation

MEMENTO D'UTILISATION DE INTERWRITE 8 version

Nouveautés par rapport à la version Qlik Sense 1.0. Qlik Sense Copyright QlikTech International AB. Tous droits réservés.

Tune Sweeper Manuel de l'utilisateur

Comment réaliser un modèle compatible pour l'impression 3D?

SHERLOCK 7. Version du 01/09/09 JAVASCRIPT 1.5

Convers3 Documentation version Par Eric DAVID : vtopo@free.fr

ECLIPSE ET PDT (Php development tools)

VOS PREMIERS PAS AVEC TRACENPOCHE

IV TECHNIQUES DE MODELISATION

Choisir entre le détourage plume et le détourage par les couches.

CRÉER UNE BASE DE DONNÉES AVEC OPEN OFFICE BASE

Création d'un questionnaire (sondage)

Tp_chemins..doc. Dans la barre "arche 2" couleur claire 1/5 21/01/13

Le générateur d'activités

Introduction : Cadkey

Serveur d'application Client HTML/JS. Apache Thrift Bootcamp

Le projet 3D de la Ville de Liège: réflexions sur l'exploitation des données. Bernard Lechanteur, Responsable Cellule cartographie Ville de Liège

Java3D. Généralités sur la synthèse d'images temps réel. Généralités sur Java3D. d 'après P.Reignier, UJF

Découverte et prise en main de SWEET HOME 3D

Pour les futurs développeurs Sommaire

CommandCenter Génération 4

Guide de démarrage rapide

Adobe Illustrator Logiciel de dessin vectoriel et de Cartographie Assistée par Ordinateur

ET 24 : Modèle de comportement d un système Boucles de programmation avec Labview.

RAPPELS SUR LES METHODES HERITEES DE LA CLASSE RACINE Object ET LEUR SPECIALISATION (i.e. REDEFINITION)

Interwrite Workspace version 8 avec le projecteur Epson

MANUEL TBI - STARBOARD

Tutoriel première utilisation ICEM-CFD. Couche limite et modification du maillage en 2D

Guide pour la réalisation d'un document avec Open Office Writer 2.2

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004. Loc Jeudi 29/4/2004

Prise en main du logiciel. Smart BOARD Notebook 10

Guide Draw. Chapitre 5 Combiner plusieurs objets

DECOUVREZ Discover TYPE EDIT V12 Français

KL5121. Pour activer des sorties en fonction de la position d'un codeur

Leçon 18 Coupes et sections

OpenOffice.org Présentation - Débuter. Distribué par Le projet OpenOffice.org

Evolutions. GRAITEC Advance PowerPack

Utilisation de l'outil «Open Office TEXTE»

Programmation par les Objets en Java

Tutoriel : logiciel de présentation Openoffice Impress

Edutab. gestion centralisée de tablettes Android

MANUEL TBI - INTERWRITE

DMU Kinematics Simulator

Le programme détaillé. Salle A07 Salle A06 Salle A04. Initiation à DirectX. Création de Mods Minecraft

APPENDICE TVP ANIMATION 9.5

"Modélisation interactive d'un genou humain"

Programmation VBA/Excel. Programmation VBA. Pierre BONNET. Masters SMaRT & GSI - Supervision Industrielle P. Bonnet

Suivi de la formation

Cours Informatique Master STEP

Ressources pour débutant du logiciel SMART Notebook

Ressources pour débutant du logiciel SMART Notebook

Cloner son système avec True Image

HMI target Visu / PLC HMI. Pour réaliser une interface homme machine avec PLC control

Ceci est un aperçu du livre "QCAD - Introduction à la conception assistée par ordinateur (CAO)" QCAD

Utilisation du logiciel GALAAD

31. OOo Draw Réglages propres à Draw

Guide de l utilisateur. Faites connaissance avec la nouvelle plateforme interactive de

Comment tracer une droite représentative d'une fonction et méthode de calcul de l'équation d'une droite.

Modélisation PHP Orientée Objet pour les Projets Modèle MVC (Modèle Vue Contrôleur) Mini Framework

Mémo d'utilisation de BD Dico1.6

IMPORTATION, CRÉATION, MANIPULATION, EXPORTATION DE DONNÉES STATISTIQUES

LIMESURVEY. LimeSurvey est une application permettant de créer des questionnaires d enquête en ligne et d en suivre le dépouillement.

Manuel utilisateur du portail (accès BS2000 version 1.6n)

Table des matières. Google Inc

AIDE à l utilisation du cédérom «L athlétisme à l école» Niveau Primaire SOMMAIRE

REALISER UN SITE INTERNET AVEC IZISPOT SOMMAIRE

TUTORIEL IMPRESS. Ouvrir Impress cocher «présentation vierge», «suivant» cocher «écran», «suivant» cocher «standard», «créer»

MEDIAplus elearning. version 6.6

SIG ET ANALYSE EXPLORATOIRE

.NET - Classe de Log

Sage CRM. Sage CRM 7.3 Guide de l'utilisateur

Projet tablettes numériques Document de référence

Unity. Moteur de jeu 3D et 2D. Cross platform: Windows, Mac, Linux, ios, Android, Blackberry, Xbox, Playstation, Wii

Keynote 08 Guide de l utilisateur

MEMENTO D'UTILISATION Du T.N.I. SmartBoard (Version )

Utiliser un tableau de données

CALC2QIF Conversion de données OpenOffice au format QIF

Microsoft Excel. Tableur

Silfid : Agence de création de site internet, formations et Conseils Retour sommaire

Introduction à MATLAB R

Parcours FOAD Formation EXCEL 2010

Qlik Sense Desktop. Qlik Sense Copyright QlikTech International AB. Tous droits réservés.

Chapitre 2 Devine mon nombre!

Utilisation d'interwrite avec un vidéoprojecteur interactif EPSON

Utiliser un poste de travail avec la distribution logicielle Ubuntu

Banque d images SVT. Créer et utiliser une banque d images avec Picasa 2. Version anglaise -Windows 98. Banque photo en SVT : page 1 /14

1. Introduction Création d'une requête...2

Transcription:

CHAPITRE 5 MODÉLISATION 3D Alexandre Blondin Massé Département d'informatique Université du Québec à Montréal 14 octobre 2015 INF5071 - Infographie

MODÈLE, VUE ET PROJECTION Pour visualiser une scène en 3D sur un écran 2D, il existe une façon très pratique de diviser les transformations à appliquer aux objets; Disons qu'on décrit un objet complexe en coordonnées cartésiennes (avec l'origine comme repère); Alors on applique les trois transformations suivantes : Modèle : on applique d'abord différentes transformations à des objets simples (homothéties, rotations, translations, etc.), pour le localiser dans l'espace; Vue : on décrit l'angle avec lequel on souhaite observer, et la position depuis laquelle on observe (caméra); Projection : on décrit la façon d'observer la scène, généralement à l'aide d'une projection perspective ou orthographique.

OBJET Dans un premier temps, on doit décrire la géométrie de l'objet qu'on souhaite afficher à l'écran; Celle-ci est décrite par un ensemble de triangles ou quadrilatères, auxquels on applique une texture. (source: http://www.opengl-tutorial.org/ )

MODÈLE On peut appliquer différentes transformations à l'objet (translations, réflexions, rotations, homothéties, transvections, etc.). La nouvelle géométrie de l'objet ainsi obtenue est appelée modèle. (source: http://www.opengl-tutorial.org/ )

VUE Ensuite, on positionne la caméra, c'est-à-dire la vue qu'on souhaite avoir de la scène; Les transformations inverses sont importantes, car en réalité, la vue est obtenue en déplaçant le modèle, en inversant les opérations (translations et rotations, principalement) : (source: http://www.opengl-tutorial.org/ )

PROJECTION Finalement, on transforme la scène en lui appliquant une projection; Très souvent, il s'agit d'une projection perspective, mais on peut en imaginer autant que l'on souhaite : (source: http://www.opengl-tutorial.org/ )

RÉSULTAT Puis on affiche le résultat de la projection sur une face du cube : (source: http://www.opengl-tutorial.org/ )

LE LOGICIEL BLENDER Il s'agit d'un logiciel open-source permettant entre autres de modéliser des objets en 3D; Il permet aussi de créer des animations; Quelques liens utiles : Le site officiel : http://www.blender.org/ Dépôt Git : http://git.blender.org/gitweb/ Référence des raccourcis : http://download.blender.org/documentation/blenderhotkeyreference.pdf

TUTORIELS Neal Hirsig, de Tufts University, a produit un cours complet sur l'utilisation de Blender; Les ressources se trouvent sur http://gryllus.net/blender/3d.html et sont aussi téléchargeables sur iphone/ipad via itunes; Il explique en détails toutes les opérations effectuées, de façon très pédagogique. Exemple (array modifier) : https://vimeo.com/46061877.

INTERFACE DE BASE

MAILLAGES DE BASE Un maillage est un ensemble de sommets, d'arêtes et de faces organisées; Généralement, on peut facilement modeler n'importe quel objet à partir de ces maillages de base.

OPÉRATIONS DE BASE Il est très simple de modifier un maillage à l'aide d'opérations élémentaires : Translation (touche G pour grab); Changement d'échelle (touche S pour scale); Rotation (touche R pour rotate);

MANIPULATION DE MAILLAGES Il est possible d'appliquer ces mêmes opérations aux sommets, aux arêtes et aux faces :

MODÉLISATION D'UNE TABLE En utilisant seulement quelques opérations, on peut rapidement obtenir une scène simple comme celle ci-bas :

OPÉRATIONS UTILISÉES Zoom (touches + et -); Rotations de la vue (trackpad); Vues de côté et de haut (touches 1, 3 et 7 du Numpad); Suppression d'objets (touche X); Ajout d'objet (touche SHIFT-A); Mouvement d'objets (touche G pour grab); Redimensionnement (touche S pour scaling); Extrusion de sommets (touche E); Sélection en boîte (touche B); Duplication d'objets (touche SHIFT-D).

MODÉLISATION D'UN PION En utilisant seulement quelques opérations, on peut rapidement modéliser un pion (pièce d'échecs) :

OPÉRATIONS UTILISÉES Ajout d'une image en arrière-plan; Ajout d'une courbe NURBS; Extrusion de sommets (touche E), suivie d'un déplacement contraint en direction de l'axe Z (touche Z); d'un redimensionnement (touche S); ou d'une combinaison des deux.

MODÉLISATION D'UN CHEMIN On peut également modéliser un chemin bordé de briques :

CHARGEMENT D'UN MODÈLE Les projets Blender et three.js étant tous les deux open-source, les développeurs ont rapidement proposé un greffon (plugin) permettant de convertir une scène Blender en format JSON; Il y a certaines limites dans l'exportation d'une scène, mais cela fonctionne généralement très bien. Dans un premier temps, il faut installer le greffon qui se trouve dans le dépôt de three.js et copier les fichiers pertinents dans le répertoire addon de Blender; Les instructions se trouvent à https://github.com/mrdoob/three.js/tree/master/utils/exporters/blender

EXPORTATION D'UN CHÂTEAU

FICHIER JSON { "metadata": { "generator": "io_three", "version": 4.3, "type": "Object", "sourcefile": "Castle_Modeling_Complete.blend" }, "images": [], "object": { "uuid": "6870F400-16EF-4EF5-88B4-DB981146181E", "type": "Scene", "children": [{ "type": "Mesh", "name": "Castle Walls", "uuid": "0E1AE968-2778-30C2-AE7D-601454D93C1E", "matrix": [0,0,0.5,0,-3e-06,4.75,0,0,-1,-1e-06,1e-06,0,0,5.14355,0,1], "visible": true, "castshadow": false, "receiveshadow": false, "geometry": "31F9DD3C-2200-3149-8360-C87C703AA631" },{ "type": "Mesh", "name": "Catwalk", "uuid": "C65B17F3-5D17-383D-BB0D-6E1E2B03CAB3", "matrix": [0,0,0.5,0,-3e-06,4.75,0,0,-1,-1e-06,1e-06,0,-6e-06,10.1436,0.84286,1], "visible": true, "castshadow": false, "receiveshadow": false, "geometry": "04FD17AD-EA86-3F58-AB8A-9F17F83D4831" },{ "type": "Mesh", "name": "Cornice Blocks", "uuid": "E2CBA763-6C6A-3C0C-A846-9BCABB30AAF7",

CHARGEMENT DE LA SCÈNE // Variables globales var scene; var camera; var distance = 80; // Initialisation de la scène initializescene(); // Animation de la scène animatescene(); function initializescene(){ // Initialisation du canvas renderer = new THREE.WebGLRenderer({antialias: true}); renderer.setclearcolor(0x000000, 1); canvaswidth = 800; canvasheight = 600; renderer.setsize(canvaswidth, canvasheight); document.getelementbyid("canvas").appendchild(renderer.domelement); // Initialisation de la scène et de la caméra scene = new THREE.Scene(); camera = new THREE.PerspectiveCamera(45, canvaswidth / canvasheight, 1, 1000); camera.position.set(0, distance Voir / 2, le distance); résultat camera.lookat(scene.position); scene.add(camera); // De la lumière var directionallight = new THREE.DirectionalLight(0xffffff, 0.5); directionallight.position.set(0, 100, 0); scene.add(directionallight); var ambientlight = new THREE.AmbientLight(0xF0F0F0); scene.add(ambientlight);

AJOUT DE MATÉRIAUX On constate que dans la scène précédente, les matériaux apparaissent avec une couleur aléatoire; Il est possible d'ajouter un matériau en parcourant l'objet chargé : // Chargement du château var loader = new THREE.ObjectLoader(); loader.load('/assets/castle.json', function(object) { scene.add(object); object.traverse(function(child) { if (child instanceof THREE.Mesh) { var color; if (child.name === "Plane") { color = 0x004000; } else { color = 0x606060; } child.material = new THREE.MeshLambertMaterial({color: color}); } }); });

CHARGEMENT DE LA SCÈNE AVEC MATÉRIAUX // Variables globales var scene; var camera; var distance = 80; // Initialisation de la scène initializescene(); // Animation de la scène animatescene(); function initializescene(){ // Initialisation du canvas renderer = new THREE.WebGLRenderer({antialias: true}); renderer.setclearcolor(0x000000, 1); canvaswidth = 800; canvasheight = 600; renderer.setsize(canvaswidth, canvasheight); document.getelementbyid("canvas").appendchild(renderer.domelement); // Initialisation de la scène et de la caméra scene = new THREE.Scene(); camera = new THREE.PerspectiveCamera(45, canvaswidth / canvasheight, 1, 1000); camera.position.set(0, distance Voir / 2, le distance); résultat camera.lookat(scene.position); scene.add(camera); // De la lumière var directionallight = new THREE.DirectionalLight(0xffffff, 0.5); directionallight.position.set(0, 100, 0);