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 :
Simulation
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 :
On notera l’importance de la primitive « solid floor » (sol solide) 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.
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
»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.
On trouvera dans l’ordre de la palette :
« 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.
« Slider » (glissière). La glissière fait bouger un objet comme sur un rail.
« Corkscrew » (Tire-bouchon). Le tire-bouchon est la combinaison de la glissière et de la charnière.
« Spring » (ressort). Le ressort fonctionne comme une glissière, mais l’objet revient à sa position initiale (avec un effet de rebond).
« Universal joint » (jointure universelle). La jointure universelle fonctionne comme deux glissières à angle droit. Les résultats peuvent être instables.
« 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.
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.
1. Cliquer sur le « joint Connection Tool » (JTC, outil de connexion de joint) . 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 » et pour rétablir l’état d’origine.
En cliquant sur le bouton « 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.
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.
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é. 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).
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.
Lier la première boite à la charnière :
- Cliquer sur le « joint Connection Tool » (JTC, outil de connexion de joint) . 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)
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.
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.
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.
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.
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.
Utiliser l’outil « create wheel » (créer roue).
Positionner 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.
Il 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.
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
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.
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.
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.
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 :
- Cliquer sur le « joint Connection Tool » (JTC, outil de connexion de joint) . 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
Faire ensuite un groupe boite + charnière.
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.
L’inspector montre ici la logique de connection des différentes entitées.
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.
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.
Visualisation
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]
Les sources
Google map : maps.google.fr
La fonction street view permet d’obtenir les images satellitaires et les vues des façades.
Bing, le moteur de Microsoft : www.bing.com
On recherche les cartes :
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.
Une nouveauté encore en développement : Bing3D
Pour l’instant pas de modélisations sur Nantes
Géoportail, le portail de l’IGN : www.geoportail.fr
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.
La navigation 3D est en beta test et demande l’installation d’un module spécifique.
Les pages jaunes : www.pagesjaunes.fr
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.
Le site du cadastre : www.cadastre.gouv.fr
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.
Mise en place dans Sketchup
Importation du fond de cadastre.
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.
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.
Extruder en se plaçant dans une bonne moyenne d’alignement.
On peut dès lors directement projeter la texture sur la façade.
Il 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.
On positionne ensuite la texture :
Si 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.
A poursuivre sur les quatre angles. Une fois terminé, clic sur « done »
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é :
On clique sur (Bouton Droit) unglue pour pouvoir la manipuler.
On déplace l’image et on l’explose comme précédement.
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.
Ensuite 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.
On monte ensuite la toiture selon les photos aériennes.
On récupère à la pipette la texture de la façade pour la projeter sur le toit :
On peut utiliser la photo aérienne pour traiter les faces arrières.
On procède de même pour le bâtiment voisin :
Unglue pour libérer l’image de sa contrainte d’attachement. On se cale sur la partie centrale :
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 !