Archives de catégorie : Conception

Didacticiel Sketchyphysics

Didacticiel Sketchyphysics

par Laurent Lescop

Moteur Physique pour Sketchup

(Page de référence en anglais : http://code.google.com/p/sketchyphysics/wiki/Docs)

Page de téléchargement du moteur physique :

http://code.google.com/p/sketchyphysics/downloads/list.

Avant propos : les moteurs physiques trouvent de plus en plus leur place dans les applications 3D. On les trouvera dans 3Dsmax (reactor), Blender (Bullit) et maintenant ici Sketchup (Newton). L’utilisation du moteur physique permet d’approcher le comportement « réel » des objets soumis à des contraintes de gravité, de déplacements contrôlés ou de chocs et ce en fonction de caractéristiques propres : poids, élasticité, dureté. Le résultat attendu relève de la simulation physique, ce qui peut différer de ce qu’un animateur peut attendre, à savoir une interprétation du mouvement.

Sketchup met toute les qualités de son ergonomie et de sa relative facilité de prise en main pour offrir à l’utilisateur un outil de simulation physique puissant et rapide. En effet, la rapidité de la résolution des solutions mises par l’utilisateur est déterminante pour le confort d’usage.

Partie 1 : les bases

Après installation de l’application SetupSketchyPhysics2b1-Jan14.exe, on trouvera à l’ouverture de Sketchup de nouveaux onglets et menus :

clip_image002

Simulation

clip_image003 Le premier bouton démarre et met en pause les simulations, le second réinitialise les solutions. Le bouton UI lance une boite de dialogue contenant les attributs des objets.

Lors de la simulation, il est possible d’intervenir sur les objets en appuyant sur le bouton gauche (BG) de la souris. MAJ + BG permet de déplacer les objets de bas en haut.

Création

N’importe quelle forme peut devenir un « objet physique » pour peu qu’elle soit assemblée en groupe. Sinon il existe des primitives élémentaires que l’on va trouver ici :

clip_image004On notera l’importance de la primitive « solid floor » (sol solide) clip_image005 importante pour créer un support sur lequel se dérouleront les simulations. Sans le sol, les objets tombent.

Attention : comme dans toute opération d’animation ou de simulation, le changement d’échelle peut engendrer des erreurs ou des comportements étranges. A éviter.

Par le bouton droit de la souris (BD) il est possible de préciser la géométrie que va calculer le moteur physique, cette géométrie pouvant être différente de la forme propre de l’objet. Ainsi une sphère pourra-t-elle approximée par un cube (pour des résultats plus rapides). L’option « Convex Hull » (coque convexe) permet de « draper » un objet afin d’en approcher la géométrie lorsque celle-ci est complexe.

clip_image007 L’option « Static Mesh » (maillage statique) rend l’objet immobile. Il n’est plus considéré comme un objet dynamique.

Les attributs des objets

Par bouton droit (BD) on peut affecter des attributs à des objets

clip_image009 »Frozen » (gelé), l’objet ne peut pas bouger tant qu’il n’a pas été touché par un autre objet. Cela servira à mettre en place les scènes. « Static » (statique), l’objet ne bougera pas et se comportera comme un objet solide. « Ignore » (ignorer), préserve l’objet des collisions. Un nouvel attribut « NoCollision » verra bientôt le jour apportant des nuances à l’attribut Ignore.

Les joints

Les joints sont les objets non géométriques articulant les géométries entre elles.

clip_image010 On trouvera dans l’ordre de la palette :

clip_image011 « Hinge » (charnière). La charnière est le joint que l’on utilise le plus, il crée les systèmes articulés et les systèmes à rotations, comme les roues.

clip_image012 « Slider » (glissière). La glissière fait bouger un objet comme sur un rail.

clip_image013 « Corkscrew » (Tire-bouchon). Le tire-bouchon est la combinaison de la glissière et de la charnière.

clip_image014 « Spring » (ressort). Le ressort fonctionne comme une glissière, mais l’objet revient à sa position initiale (avec un effet de rebond).

clip_image015 « Universal joint » (jointure universelle). La jointure universelle fonctionne comme deux glissières à angle droit. Les résultats peuvent être instables.

clip_image016 « Ball joint » (joint boule). Le joint boule (comme une boule de caravane) permet à l’objet de bouger librement autour d’un point. Ce joint est également instable s’il est sollicité trop fortement.

clip_image017 Les quatre derniers joints « Servo », « Piston », « Motor » et « Gyro » seront décrits un peu plus loin.

Les joints hinge, Slider, Servo, Piston et Motor sont des joints contrôlables.

Mise en place simple

Mise en place d’un objet géométrique et d’un joint commandant le comportement de cet objet.

Slider

Créer une boite et créer un « slider » sur le dessus de cette boite.

clip_image018clip_image019clip_image021

1. Cliquer sur le « joint Connection Tool » (JTC, outil de connexion de joint) clip_image022. Une fois le JTC activé, cliquer sur la boite

2. Maintenir la touche contrôle (CTRL) enfoncée, cliquer sur le Slider

La boite est connectée au Slider. Le déplacement de la boite est maintenant conditionnée par les paramètres du Slider. Le tester en cliquant sur le bouton « Play/Pause » clip_image023 et clip_image024 pour rétablir l’état d’origine.

En cliquant sur le bouton clip_image025 « UI », on accède à une interface de contrôle des objets de la scène. Cliquer sur le Slider et observer les valeur Min et Max. Elles donnent la valeur de l’amplitude du mouvement. Par defaut c’est la longueur du Slider.

clip_image027

Si l’on place un nom dans la case « controler », on voit apparaitre lors de la simulation un panneau de contrôle doté d’une glissière permettant d’animer le mouvent du cube de façon très précise. Cette fonction servira par la suite constament afin d’avoir un contrôle exact des actions à imprimer aux objets. Il sera même possible de piloter les actions via un joystick.

clip_image028clip_image030

Charnière entre deux solides

Voici deux façon de lier deux solides entre eux avec une charnière. La première consiste à utiliser un groupe pré-paramétréclip_image031. Cliquer sur l’icône pour créer un premier block puis recommencer la manœuvre en démarrant scrupuleusement à l’angle de l’objet venant juste d’être créé. On constitue ainsi un petit ensemble articulé (un peu comme un serpent).

clip_image033

On remarque que les solides d’interpénètrent. On retiendra cette méthode pour faire des cordes ou tout objet demandant une grande souplesse.

Créer maintenant deux boites et placer une Charnière « Hinge » à l’intersection.

clip_image035

Lier la première boite à la charnière :

  1. Cliquer sur le « joint Connection Tool » (JTC, outil de connexion de joint) clip_image022[1]. Une fois le JTC activé, cliquer sur la boite

2. Maintenir la touche contrôle (CTRL) enfoncée, cliquer sur la charnière -> la première boite pivote maintenant autour de l’axe donné par la charnière

3. Répéter l’opération avec la deuxième boite -> les deux boites pivotent autour de la charnière sans interpénétrations.

4. Si l’on déclare l’une des boites comme « static » elle se comportera comme un pan de mur, alors que l’autre boite se comportera comme une porte.

La question de l’enveloppe de simulation

L’enveloppe de simulation (« shape Physics »)va déterminer la manière dont l’objet va se comporter. Par défaut, l’enveloppe de simulation d’un cube, sera un cube, une sphère pour une spère et un cylindre pour un cylindre. Les choses se compliquent lorsque la forme est convexe ou possède des trous ou un certain nombre de reliefs.

On peut visualiser la forme de l’enveloppe de simulation en cliquant sur la fonction « readback collision geometry », accessible en cliquant sur le modèle avec le bouton droit (BD)

clip_image037

Pour une forme telle que cette sphère munie de picots, l’enveloppe de déformation se présente ainsi : on voit que la sphère englobante ne prend pas toute la forme.

clip_image039

Le logiciel se débrouille pour approcher au mieux l’enveloppe. Une option permet toutefois de disposer autrement. Par exemple, pour des raisons de rapidité de calcul, on pourra préférer envelopper une forme d’une géométrie plus simple afin d’accelérer les calculs.

clip_image041 Par défaut on a « box » (boite), « sphere » (sphère), « cylinder » (cylindre), « cone » (cône), « capsule » (capsule), « chamber » (ventricule) et « convexhull » (coque convexe).

Pour des formes complexes, on va plutôt chercher à les envelopper avec une coque convexe, comme pour le polyèdre ci-dessous.

clip_image043

Les objets creux

Un trou ne sera pas pris en compte dans la simulation, si l’on veux faire une chaine par exemple, les maillons seront pris en compte par rapport à leur enveloppe extéreure et non comme un objet concave (contrairement à ce que l’on peut avoir avec reactor de Havock).

La solution consiste à créer un groupe de groupes.

1. Commencer par créer une brique, en faire un groupe

2. Recommencer et positionner les objets de telle manière à faire un maillon

3. Les grouper.

clip_image045

L’ensemble va fonctionner correctement comme une chaine. Il n’y a pas de notion d’objet creu (contrairement à d’autres moteurs comme celui d’Avock dans 3Dsmax), il faut donc contourner cette difficulté en modélisant des objets groupés.

Construction d’un petit véhicule

Créer un socle, construire une boite. Elever la boite.

clip_image047

Utiliser l’outil « create wheel » (créer roue).

clip_image049Positionner la première roue. Des lignes d’aide ont été créées afin de positionner la roue avec précision. Répéter l’opération pour chaque roue.

Le véhicule est prêt. Passer en mode « play » pour le faire rouler. L’installer le long d’une pente pour le faire dégringoler tout seul.

clip_image051Il est toujours possible d’éditer la boite de base pour «sculpter » le véhicule. Faire BD, éditer groupe et modifier à volonté.

Pour faire rouler automatiquement le véhicule, il convient de lui ajouter un moteur. Pour cela, éditer les propriétés de la jointure « hinge », éditer la roue, puis cliquer sur la charnière (hinge) en ayant la palette de UI active (« show UI »).

Dans la case contrôleur ajouter –slider(« roue »)– pour la version 3, juste –roue– pour la version 2.

Un slider apparaitra au moment de jouer l’animation permettant de régler la puissance du moteur.

clip_image053

Les lignes d’aide ont été conservées afin de suivre la vitesse de rotation des roues. Elles seront bien entendu retirées pour une présentation définitive.

Nota : chaque objet constituant l’ensemble doit être individualisé. Il ne faut pas faire de copier/coller des ensembles roues et surtout ne pas faire de copier/coller des joints. Ils sont tous référencés par un numéro. Un copier/coller les ferait tous se comporter de la même manière.

Créer un moteur de poulie.

Dans cet exemple, il sera question de construire un objet concave, de paramétrer un moteur, puis de créer une corde. La corde sera attachée dans la gorge de la poulie, l’ensemble soulèvera une charge.

Mise en place de la poulie

clip_image055

Il faut créer 3 cylindres, qui seront groupés en un seul objet afin de faire reconnaitre la gorge de la poulie (comme pour les maillons de la chaine plus haute). On applique ensuite un joint « servo » dont on aura « labélisé » le controller afin de créer une glissère de contrôle.

clip_image057

Attention : ne pas mettre d’accent ou de signes particuliers dans les contrôleurs.

Pour simplifier la visualisation des actions, seule la partie centrale va être montrée. Dans cette partie centrale va être tracée une gorge. L’ensemble va ensuite être démonté pour obtenir des blocs indépendants, puis, ces blocs vont être associés en groupes. Rappel, SketchyPhysics ne gère pas les formes concaves.

clip_image059

Chaque morceau constituant la gorge de la poulie est visualisé ci-dessus par des couleurs différentes.

Création de la corde.

La corde est un objet simple à créer, mais dont la réalisation demande une très grande attention. Il s’agit tout simplement de lier des « box » avec des joints, « hinge » (charnière) ou « ball » balle. Dans le cas qui suit, ce sera avec des charnières.

Dans un premier temps, la corde est réalisée avec des boites légèrement distantes. Pour que l’espacement des boites soit régulier et que l’ensemble soit rapide à construire, on utilise des petites boites intermédiaires. Ensuite il ne reste plus qu’à faire des « déplacer/copier » (fonction déplacer + CTRL). La corde doit être assez longue.

clip_image061

Le premier maillon de la chaine est marqué d’une couleur rouge. Cela pourra être utile pour la suite.

Placer des charnières (« hinge ») à l’extrémité des boites à partir de la deuxième. Attention, il ne faut pas faire de copier/coller avec les charnières, car les noms seraient identiques et donc la simulation serait faussée. Effectuer la jonction telle que vue précédemment :

  1. Cliquer sur le « joint Connection Tool » (JTC, outil de connexion de joint) clip_image062. Une fois le JTC activé, cliquer sur la boite

2. Maintenir la touche contrôle (CTRL) enfoncée, cliquer sur la charnière -> la première boite pivote maintenant autour de l’axe donné par la charnière

clip_image064

Faire ensuite un groupe boite + charnière.

clip_image066

Renouveler l’opérartion pour chaque maillon de la chaine.

Connecter ensuite les maillons entre eux en cliquant sur le joint (accessible même s’il est dans un groupe) et la boite faisant face. Ici, la chaine est dessinée à plat, elle est ensuite redressée.

clip_image068 L’inspector montre ici la logique de connection des différentes entitées.

clip_image070 La flexibilité de la corde est testée, il ne faut pas qu’il y ait de cassures, de blocages ou d’explosion des solides.

Réalisation du moteur de la poulie

Le moteur est réalisé avec un joint « motor » comme pour la voiture.

clip_image072

Dans la version 3 de Sketchyphysics, la case « controler » est alimentée automatiquement, ce qui permet d’avoir un « slider » pour gérer la vitesse de rotation. Dans la version 2, il faut renseigner manuellement la case afin de faire apparaitre un slider de contrôle.

La corde est attaché à la poulie par un emboitement.

clip_image074

Visualisation

clip_image076

L’ensemble fonctionne parfaitement. L’astuce de la gorge de poulie permet de simplifier grandement le travail d’attache de la corde à la poulie.

Modélisation de données urbaines[1]

clip_image082

Les sources

Google map : maps.google.fr

clip_image002

clip_image004

La fonction street view permet d’obtenir les images satellitaires et les vues des façades.

Bing, le moteur de Microsoft : www.bing.com

clip_image006

On recherche les cartes :

clip_image008

L’interface est proche de celle de Google map.

En plus de la fonction vue en plan et vue satellite, il y a la fonction vue isométrique, qui offre la possiblité d’extraire très facilement la texture des façades.

clip_image010

clip_image013

clip_image015

Une nouveauté encore en développement : Bing3D

clip_image017

Pour l’instant pas de modélisations sur Nantes

Géoportail, le portail de l’IGN : www.geoportail.fr

clip_image019

On peut visualiser le terrain en 3D, ajouter différentes couches concernant le parcellaire et autres renseignements contextualisés suivant l’endroit où pointe la recherche.

clip_image021

La navigation 3D est en beta test et demande l’installation d’un module spécifique.

Les pages jaunes : www.pagesjaunes.fr

clip_image023

Pour quelques villes en France, les pages jaunes offrent un service de visualisation 3D.

La visualisation est la même en terme de sources et de rendu que celle que nous utiliserons ci-après.

clip_image025

Le site du cadastre : www.cadastre.gouv.fr

clip_image027 clip_image029

Le site du cadastre va permettre d’obtenir des tracés de parcelles à l’échelle ce qui donnera les fonds de plans pour la suite de la modélisation.

clip_image031

clip_image034

Mise en place dans Sketchup

Importation du fond de cadastre.

clip_image036

Le fond de plan est capturé avec l’outil « capture », livré en standard avec Windows et sauvegardé au format jpg ou png, puis réimporté dans Sketchup.

 clip_image038

On trace la silhouette du bati en s’appuyant sur l’image de base. Il faut penser à créer un nouveau calque pour isoler la géométrie du plan de celle des volumes.

Maintenant il faut estimer la hauteur des bâtiments.

On peut importer une vue axonométrique depuis Bing.com.

 clip_image040

 clip_image042

 clip_image044

Extruder en se plaçant dans une bonne moyenne d’alignement.

On peut dès lors directement projeter la texture sur la façade.

clip_image046Il faut décoller l’image du volume, l’exploser.

On prend ensuite l’outil pipette lié aux textures, l’on échantillonne l’image, puis on peint la façade.

clip_image048

On positionne ensuite la texture :

clip_image050

clip_image052Si nécessaire décocher « fixed pins » et attraper les épingles jaunes (un clic pour les détacher) et les positionner aux angles du bâtiment sur la photo. clip_image054

clip_image056

A poursuivre sur les quatre angles. Une fois terminé, clic sur « done »

clip_image058

clip_image060

Une façade est faite et à la bonne échelle. La photo est assez pauvre en définition, mais il est ensuite possible de la remplacer par une photo de meilleure résolution suivant la même technique.

On importe la vue de côté :

 clip_image062

On clique sur (Bouton Droit) unglue pour pouvoir la manipuler.

clip_image064

On déplace l’image et on l’explose comme précédement.

clip_image066

La façade a un décroché, on va donc commencer par la partie en saillie. Il faut retrouver les continuités avec la texture déjà en place.

clip_image068Ensuite pipette sur le morceau réalisé et pot de peinture sur la partie restée blanche et toute la face se met en place automatiquement.

clip_image070

On monte ensuite la toiture selon les photos aériennes.

clip_image072

On récupère à la pipette la texture de la façade pour la projeter sur le toit :

clip_image074

On peut utiliser la photo aérienne pour traiter les faces arrières.

 clip_image076

On procède de même pour le bâtiment voisin :

clip_image078

Unglue pour libérer l’image de sa contrainte d’attachement. On se cale sur la partie centrale : clip_image080

clip_image082

Rapidement on finit par obtenir un environnement urbain de référence sans avoir bougé de sa chaise. La même technique est employée pour réaliser la même chose mais à partir de photos de meilleure définition prises sur place.


[1] Sans bouger de sa chaise !