ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · ayam guide de référence randolf schultz...

535
Ayam Guide de Référence Randolf Schultz ([email protected]) Traducteur: Alain Siksik ([email protected]) 18 Sep 2020 Ceci est la documentation de Ayam 1.28 - un environnement de modélisation 3D libre et gratuit pour l’interface RenderMan. Notez s’il vous plaît, que ce document se veut un guide de référence, les explications plus détaillées sur comment réellement modéliser avec Ayam sont données dans les tutoriaux. Ce document a été écrit en utilisant le système de formatage SGML-Tools pour produire des fichiers de divers formats de texte depuis un même fichier source. Il y a des versions HTML et PDF de ce document préparées pour vous. De plus, vous pouvez utiliser les sources SGML fournies pour produire D’autres formats. Aperçu 1 Introduction 15 2 Interface graphique utilisateur (GUI) de Ayam 19 3 Les actions de modélisation 74 4 Objets, propriétés et balises 104 5 Outils de modélisation NURBS 271 6 Interface de script 337 7 Importations et Exportations 462 8 Divers 485 9 Index 513

Upload: others

Post on 01-Apr-2021

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

AyamGuide de Référence

Randolf Schultz ([email protected])Traducteur: Alain Siksik ([email protected]) 18 Sep 2020

Ceci est la documentation de Ayam 1.28 - un environnement de modélisation 3D libre et gratuitpour l’interface RenderMan. Notez s’il vous plaît, que ce document se veut un guide de référence,les explications plus détaillées sur comment réellement modéliser avec Ayam sont données dansles tutoriaux. Ce document a été écrit en utilisant le système de formatage SGML-Tools pourproduire des fichiers de divers formats de texte depuis un même fichier source. Il y a des versionsHTML et PDF de ce document préparées pour vous. De plus, vous pouvez utiliser les sourcesSGML fournies pour produire D’autres formats.

Aperçu

1 Introduction 15

2 Interface graphique utilisateur (GUI) de Ayam 19

3 Les actions de modélisation 74

4 Objets, propriétés et balises 104

5 Outils de modélisation NURBS 271

6 Interface de script 337

7 Importations et Exportations 462

8 Divers 485

9 Index 513

Page 2: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

TABLE DE MATIÈRES 2

Table de matières

1 Introduction 15

1.1 À propos de ce manuel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

1.2 À propos de Ayam . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

1.2.1 Historique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

1.2.2 Aperçu des fonctionnalités . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

1.2.3 Systèmes de coordonnées et unités . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

1.2.4 Coordonnées rationnelles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

2 Interface graphique utilisateur (GUI) de Ayam 19

2.1 Anatomie de la fenêtre principale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

2.1.1 Objets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

2.1.2 Les propriétés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

2.1.3 La console . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

2.2 Le menu principal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

2.3 Raccourcis clavier de la fenêtre principale . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

2.4 Anatomie d’une vue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

2.5 Menu d’une vue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

2.6 Afficher les raccourcis et les actions sur la fenêtre . . . . . . . . . . . . . . . . . . . . . . . 51

2.7 Modes de dessin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53

2.8 La boîte à outils . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55

2.9 Recherche d’objets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56

2.9.1 Les expressions de recherche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56

2.9.2 Les actions de recherche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58

2.10 Les préférences . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60

2.10.1 Les préférences principales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61

2.10.2 Préférences de modélisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64

2.10.3 Les préférences de dessin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66

2.10.4 Préférences d’exportation RIB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68

2.10.5 Préférences diverses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72

3 Les actions de modélisation 74

3.1 Aperçu des actions de modélisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75

Page 3: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

TABLE DE MATIÈRES 3

3.2 Transformer des objets ou des points sélectionnés . . . . . . . . . . . . . . . . . . . . . . . 76

3.3 Sélection d’objets par choix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76

3.3.1 Sélection d’objets individuels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76

3.3.2 Sélection d’objets multiples par glisser-déposer . . . . . . . . . . . . . . . . . . . . 77

3.3.3 Sélection ambiguë . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77

3.4 Sélection/traçage de points . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78

3.5 Définir une marque . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81

3.6 Les interfaces graphiques des paramètres intermédiaires . . . . . . . . . . . . . . . . . . . . 83

3.7 Déplacement d’objets ou de points sélectionnés . . . . . . . . . . . . . . . . . . . . . . . . 84

3.8 Rotation des objets ou des points sélectionnés . . . . . . . . . . . . . . . . . . . . . . . . . 85

3.9 Rotation des objets ou des points sélectionnés autour d’un point . . . . . . . . . . . . . . . 85

3.10 Mise à l’échelle d’objets ou de points sélectionnés . . . . . . . . . . . . . . . . . . . . . . . 86

3.11 Mise à l’échelle d’objets ou de points sélectionnés autour d’un point . . . . . . . . . . . . . 87

3.12 Éditer des Points . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88

3.13 Édition des poids . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91

3.14 Clipser les points sur la grille . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93

3.15 Clipser des objets sur la grille . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93

3.16 Clipser des points sur les marques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94

3.17 Clipser des objets sur les marques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94

3.18 Insérer ou supprimer des points . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95

3.19 Manipuler les points multiples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96

3.20 Trouver des points sur les courbes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97

3.21 Trouver des points sur les surfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98

3.22 Couper interactivement des courbes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99

3.23 Sélection et marquage des points limites . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100

3.24 L’édition dans les espaces locaux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101

4 Objets, propriétés et balises 104

4.1 Aperçu des types d’objets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106

4.1.1 Organisation de la scène . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106

4.1.2 Primitives CSG / Solides . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106

4.1.3 Courbes de forme libre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107

4.1.4 Surfaces de formes libres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107

Page 4: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

TABLE DE MATIÈRES 4

4.1.5 Outils pour les courbes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107

4.1.6 Outils pour les surfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108

4.1.7 Objets polygonaux et de subdivision . . . . . . . . . . . . . . . . . . . . . . . . . . 108

4.1.8 Scripts et plugins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109

4.2 Objets de l’organisation de la scène . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110

4.2.1 L’objet Racine (Root) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110

4.2.2 L’objet View . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113

4.2.3 L’objet Camera . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115

4.2.4 L’objet Light . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116

4.2.5 Les matériaux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122

4.2.6 L’objet Level (niveau) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125

4.2.7 L’objet Instance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128

4.2.8 L’objet Clone . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131

4.2.9 L’objet miroir (Mirror) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134

4.2.10 L’objet sélection (Select) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136

4.2.11 L’objet RiInc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137

4.2.12 L’objet RiProc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138

4.3 CSG / primitives des solides (Solid) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139

4.3.1 L’objet boîte (Box) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139

4.3.2 L’objet sphère (Sphere) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140

4.3.3 L’objet disque (Disk) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141

4.3.4 L’objet Cône (Cone) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142

4.3.5 L’objet cylindre (Cylinder) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143

4.3.6 L’objet tore (Torus) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144

4.3.7 L’objet paraboloïde (Paraboloid) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145

4.3.8 L’objet hyperboloïde (Hyperboloid) . . . . . . . . . . . . . . . . . . . . . . . . . . 146

4.4 Les courbes libres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147

4.4.1 L’objet NCurve (NURBS) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147

4.4.2 Les courbes interpolées (ICurve) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152

4.4.3 Les courbes approximées (ACurve) . . . . . . . . . . . . . . . . . . . . . . . . . . 154

4.4.4 L’objet NCircle (Cercle NURBS) . . . . . . . . . . . . . . . . . . . . . . . . . . . 156

4.4.5 Autres types de courbes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157

4.5 Outils pour ces courbes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158

Page 5: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

TABLE DE MATIÈRES 5

4.5.1 L’objet ConcatNC (Concatène les courbes NURBS) . . . . . . . . . . . . . . . . . 158

4.5.2 L’objet ExtrNC (Extraction de courbe NURBS) Object . . . . . . . . . . . . . . . . 161

4.5.3 Les courbes de décalage (OffsetNC) . . . . . . . . . . . . . . . . . . . . . . . . . . 164

4.6 Les surfaces libres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166

4.6.1 Patch NURBS (NPatch) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166

4.6.2 Les patch interpolés (IPatch) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171

4.6.3 Patch bilinéaires (BPatch) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173

4.6.4 Les patchs maillés (PatchMesh) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174

4.7 Les outils de surface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176

4.7.1 Les surfaces de révolution (Revolve) . . . . . . . . . . . . . . . . . . . . . . . . . . 176

4.7.2 Les surfaces par extrusions (Extrude) . . . . . . . . . . . . . . . . . . . . . . . . . 178

4.7.3 Les surfaces par balayage (Swing) . . . . . . . . . . . . . . . . . . . . . . . . . . . 181

4.7.4 Les surfaces par glissements (Sweep) . . . . . . . . . . . . . . . . . . . . . . . . . 184

4.7.5 L’objet Birail1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189

4.7.6 L’objet Birail2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192

4.7.7 Les revêtements (Skin) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196

4.7.8 Surface de Gordon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199

4.7.9 Les biseaux (Bevel) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203

4.7.10 Les bouchons (Cap) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207

4.7.11 Concaténer (relier) les patch NURBS (ConcatNP) . . . . . . . . . . . . . . . . . . . 210

4.7.12 Extraction d’un patch NURBS (ExtrNP) . . . . . . . . . . . . . . . . . . . . . . . . 213

4.7.13 Les décalages de surfaces(OffsetNP) . . . . . . . . . . . . . . . . . . . . . . . . . . 215

4.7.14 Le texte (Text) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217

4.7.15 Les découpes ou ajustements (Trim) . . . . . . . . . . . . . . . . . . . . . . . . . . 219

4.8 Objets polygonaux et de subdivision . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221

4.8.1 L’objet PolyMesh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221

4.8.2 L’objet SDMesh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223

4.9 Scénario (Script) et objets personnalisés . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225

4.9.1 L’objet Script . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225

4.9.2 Gestion des objets personnalisés . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235

4.9.3 L’objet SfCurve (courbe superformulée) . . . . . . . . . . . . . . . . . . . . . . . . 236

4.9.4 L’objet BCurve (Basis Curve - courbe de base) . . . . . . . . . . . . . . . . . . . . 238

4.9.5 Les courbes de subdivision (SDCurve) . . . . . . . . . . . . . . . . . . . . . . . . . 240

Page 6: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

TABLE DE MATIÈRES 6

4.9.6 Les objets Metaball . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242

4.9.7 SDNPatch Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245

4.10 Standard Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248

4.10.1 La propriété Transformations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248

4.10.2 La propriété Attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249

4.10.3 La propriété Material . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249

4.10.4 La propriété Shader . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250

4.10.5 La propriété Caps (Bouchon) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252

4.10.6 La propriété Bevels (biseaux) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253

4.10.7 La propriété Tags (Balises) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254

4.11 Tags . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256

4.11.1 Balise RiAttribute . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257

4.11.2 Balise "RiOption" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258

4.11.3 Balise "TC" (Texture Coordinates) . . . . . . . . . . . . . . . . . . . . . . . . . . . 258

4.11.4 Balise PV (Primitive Variable) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260

4.11.5 Balise "RiHider" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261

4.11.6 Balise "RiDisplay" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262

4.11.7 Balise "AsWire" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262

4.11.8 Balise "NoExport" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262

4.11.9 Balise "SaveMainGeom" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263

4.11.10 Balise "SavePaneLayout" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263

4.11.11 Balise "TP" (Tessellation Parameter) . . . . . . . . . . . . . . . . . . . . . . . . . . 263

4.11.12 Balise "DC" (Depth Complexity) . . . . . . . . . . . . . . . . . . . . . . . . . . . 264

4.11.13 Balise "NP" (New Property) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264

4.11.14 Balise RP (Remove Property) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265

4.11.15 Balise BNS (Before Notify Script) . . . . . . . . . . . . . . . . . . . . . . . . . . . 265

4.11.16 Balise ANS (After Notify Script) . . . . . . . . . . . . . . . . . . . . . . . . . . . 267

4.11.17 Balises UMM/VMM (U/V Min Max) . . . . . . . . . . . . . . . . . . . . . . . . . 268

4.11.18 Balise BP (Bevel Parameters) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268

4.11.19 Balise CP (Cap Parameters) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268

4.11.20 Balise MN (Mean Normal) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269

4.11.21 Balise MP (Mean Point) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269

4.11.22 XML Tag . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269

Page 7: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

TABLE DE MATIÈRES 7

4.11.23 Balises internes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270

5 Outils de modélisation NURBS 271

5.1 Remarques générales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271

5.2 Outils de création de courbes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272

5.2.1 Outil courbes B-spline circulaires (Circular B-Spline) . . . . . . . . . . . . . . . . . 272

5.2.2 Outil cercle NURBS (NURBCircle) . . . . . . . . . . . . . . . . . . . . . . . . . . 273

5.2.3 Outil rectangle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274

5.2.4 Outil rectangle de trim (TrimRect) . . . . . . . . . . . . . . . . . . . . . . . . . . . 275

5.2.5 Outil courbes interpolées (Tween Curve) . . . . . . . . . . . . . . . . . . . . . . . 276

5.3 Outils de modification des courbes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277

5.3.1 Outil de renversement (Revert) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277

5.3.2 Outil d’ouverture (Open) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278

5.3.3 Outil de fermeture (Close) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279

5.3.4 Outil d’affinage (Refine) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280

5.3.5 Outil d’affinage des noeuds (Refine Knots) . . . . . . . . . . . . . . . . . . . . . . 281

5.3.6 Outil d’affinage des noeuds avec un outil (Refine Knots With Tool) . . . . . . . . . 282

5.3.7 Outil d’approximation (Coarsen) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283

5.3.8 Outil d’élévation (Elevate) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284

5.3.9 Outil de réduction (Reduce) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285

5.3.10 Outil d’extension (Extend) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286

5.3.11 Outil de resserrage (Clamp) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287

5.3.12 Outil de desserrage (Unclamp) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 288

5.3.13 Outil d’insertion de noeud (Insert Knot) . . . . . . . . . . . . . . . . . . . . . . . . 289

5.3.14 Outil de suppression de noeud (Remove Knot) . . . . . . . . . . . . . . . . . . . . 290

5.3.15 Outil de suppression des noeuds superflus . . . . . . . . . . . . . . . . . . . . . . . 291

5.3.16 Outil de lissage (Fair) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292

5.3.17 Outil de concaténation (Concat) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294

5.3.18 Outil de fractionnement (Split) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295

5.3.19 Outil des courbes de trim (Découpe) . . . . . . . . . . . . . . . . . . . . . . . . . . 296

5.3.20 Outil de tracé de courbure (Plot Curvature) . . . . . . . . . . . . . . . . . . . . . . 297

5.3.21 Outil d’interpolation (Interpolate) . . . . . . . . . . . . . . . . . . . . . . . . . . . 298

5.3.22 Outil d’approximation (Approximate) . . . . . . . . . . . . . . . . . . . . . . . . . 299

Page 8: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

TABLE DE MATIÈRES 8

5.3.23 Outil de décalage de courbe fermée . . . . . . . . . . . . . . . . . . . . . . . . . . 300

5.3.24 Outil de retournement vers XY (To XY) . . . . . . . . . . . . . . . . . . . . . . . . 301

5.3.25 Outil pour rendre compatible (Make Compatible) . . . . . . . . . . . . . . . . . . . 302

5.3.26 Outil de répartition des noeuds sur une plage (Rescale Knots to Range) . . . . . . . 303

5.3.27 Outil de répartition des noeuds à une distance minimale (Rescale Knots to Mindist) . 303

5.3.28 Outil de regroupement de points (Collapse Points) . . . . . . . . . . . . . . . . . . 304

5.3.29 Outil d’éclatement de point multiple (Explode Points) . . . . . . . . . . . . . . . . 304

5.4 Outils de création de surfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305

5.4.1 Outil sphère NURBS 1 (NURBSphere) . . . . . . . . . . . . . . . . . . . . . . . . 305

5.4.2 Outil sphère NURBS 2 (NURBSphere2) . . . . . . . . . . . . . . . . . . . . . . . . 305

5.4.3 Outil de révolution (Revolve) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306

5.4.4 Outil de pivotement (Swing) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306

5.4.5 Outil d’extrusion (Extrude) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307

5.4.6 Outil de balayage (Sweep) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307

5.4.7 Outil de biseau (Bevel) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308

5.4.8 Outil de bouchonnage (Cap) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308

5.4.9 Outil de rail double 1 (Birail1) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308

5.4.10 Outil de rail double 2 (Birail2) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309

5.4.11 Outil de Gordon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309

5.4.12 Outil de revêtement (Skin) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 310

5.4.13 Outil de Trim (Découpe) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 310

5.4.14 Outil d’interpolation de surfaces (Tween Surfaces) . . . . . . . . . . . . . . . . . . 311

5.5 Outils de modification des surfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313

5.5.1 Outil de reversement sur U (Revert U) . . . . . . . . . . . . . . . . . . . . . . . . . 313

5.5.2 Outil de reversement sur V (Revert V) . . . . . . . . . . . . . . . . . . . . . . . . . 313

5.5.3 Outil de renversement UV (Swap UV) . . . . . . . . . . . . . . . . . . . . . . . . . 314

5.5.4 Outil de raffinage des noeuds de surface (Refine Knots Surface) . . . . . . . . . . . 315

5.5.5 Outil de raffinage des noeuds avec la surface(Refine Knots With Surface) . . . . . . 316

5.5.6 Outil d’augmentation de l’ordre de la surface (Elevate Surface) . . . . . . . . . . . . 317

5.5.7 Outil de réduction de l’ordre des surfaces (Reduce Surface) . . . . . . . . . . . . . 318

5.5.8 Outil de serrage de surface (Clamp Surface) . . . . . . . . . . . . . . . . . . . . . . 319

5.5.9 Outil de desserrage des surfaces (Unclamp Surface) . . . . . . . . . . . . . . . . . . 320

5.5.10 Outil d’insertion de noeuds (Insert Knot Surface) . . . . . . . . . . . . . . . . . . . 321

Page 9: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

TABLE DE MATIÈRES 9

5.5.11 Outil de suppression de noeuds (Remove Knot Surface) . . . . . . . . . . . . . . . 322

5.5.12 Outil de suppression des noeuds superflus (Remove Superfluous Knots) . . . . . . . 323

5.5.13 Outil de fractionnement de la surface (Split Surface) . . . . . . . . . . . . . . . . . 324

5.5.14 Outil d’interpolation de surface (Interpolate Surface) . . . . . . . . . . . . . . . . . 325

5.5.15 Outil pour rendre les surfaces compatibles (Make Surfaces Compatible) . . . . . . . 326

5.5.16 Outil de redimensionnent des noeuds en fonction de la plage (Rescale Knots to Range)327

5.5.17 Outil Redimensionnent des noeuds à la distance minimale (Rescale Knots to Mindist) 327

5.6 Outils de conversion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 328

5.6.1 Outil d’extraction de courbe (Extract Curve) . . . . . . . . . . . . . . . . . . . . . 328

5.6.2 Outil d’extraction de patch (Extract Patch) . . . . . . . . . . . . . . . . . . . . . . . 328

5.6.3 Outil décomposition en courbes (Break into Curves) . . . . . . . . . . . . . . . . . 329

5.6.4 Outil de construction à partir de courbes (Build from Curves) . . . . . . . . . . . . 330

5.6.5 Outil de tessellation (triangularisation) . . . . . . . . . . . . . . . . . . . . . . . . . 331

6 Interface de script 337

6.1 Variables et tableaux globaux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 338

6.1.1 Variables globales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 338

6.1.2 Le tableau global "ay" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 338

6.1.3 Le tableau global "ayprefs" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 338

6.1.4 Le tableau global "aymark" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 339

6.1.5 Gestion des propriétés et tableaux de données . . . . . . . . . . . . . . . . . . . . . 340

6.2 Procédures and Commandes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342

6.2.1 Obtenir de l’aide sur les commandes de l’interface de script . . . . . . . . . . . . . 342

6.2.2 Gérer les objets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343

6.2.3 Interroger les objets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 361

6.2.4 Sélectionner des Objets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365

6.2.5 Sélection des points . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367

6.2.6 Manipuler les propriétés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 368

6.2.7 Opérations avec le presse-papiers . . . . . . . . . . . . . . . . . . . . . . . . . . . 369

6.2.8 Opérations sur la hiérarchie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371

6.2.9 Transformations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373

6.2.10 Manipuler les ombrages (shaders) . . . . . . . . . . . . . . . . . . . . . . . . . . . 376

6.2.11 Manipuler les balises (tag) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 377

Page 10: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

TABLE DE MATIÈRES 10

6.2.12 Manipuler les courbes (Curves) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 380

6.2.13 Manipuler les surfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 382

6.2.14 Manipuler les courbes NURBS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383

6.2.15 Manipuler des surfaces NURBS . . . . . . . . . . . . . . . . . . . . . . . . . . . . 390

6.2.16 Manipuler les objets PolyMesh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 401

6.2.17 Manipuler des points . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 402

6.2.18 Mettre à jour l’interface graphique . . . . . . . . . . . . . . . . . . . . . . . . . . . 404

6.2.19 Gestion des préférences . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 405

6.2.20 Objets personnalisés / Plugins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 405

6.2.21 Appliquer des commandes à un certain nombre d’objets . . . . . . . . . . . . . . . 406

6.2.22 Entrée/sortie de scène . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 407

6.2.23 Exportation RIB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 408

6.2.24 Signalement d’erreur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 409

6.2.25 Gestion de l’interface graphique des propriétés . . . . . . . . . . . . . . . . . . . . 409

6.2.26 Divers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 414

6.3 Prise en charge des expressions dans les entrées de dialogue . . . . . . . . . . . . . . . . . 420

6.4 Exemples de script . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 421

6.4.1 Déplacer des objets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 421

6.4.2 Déplacer des points NURBS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 422

6.4.3 Interpolation facile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 423

6.4.4 Boutons et boite à outils . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 425

6.5 Scripts d’aide distribués . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 427

6.5.1 Réparer Ayam . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 427

6.5.2 Tester Ayam . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 428

6.5.3 Utiliser Ayam comme convertisseur de ligne de commande . . . . . . . . . . . . . . 428

6.5.4 Analyse des ombrages (shaders) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 429

6.5.5 Tout transformer en polygones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 430

6.5.6 Tout transformer en patch NURBS . . . . . . . . . . . . . . . . . . . . . . . . . . . 430

6.5.7 Restreindre la console . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 430

6.5.8 Colorer la bague de mise au point (????focus ring) . . . . . . . . . . . . . . . . . . 430

6.5.9 Automatismes avec les actions de centrage (???? Automatic About Center Actions) . 431

6.5.10 Automatisation des actions sur les points . . . . . . . . . . . . . . . . . . . . . . . 431

6.5.11 Sauvegarder les points sélectionnés . . . . . . . . . . . . . . . . . . . . . . . . . . 432

Page 11: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

TABLE DE MATIÈRES 11

6.5.12 Modifier le comportement des touches curseur . . . . . . . . . . . . . . . . . . . . 432

6.5.13 Accéder aux fonctions de base à partir de la boîte à outils . . . . . . . . . . . . . . . 432

6.5.14 Passer des dialogues à Kdialog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 432

6.5.15 Passez des dialogues à Zenity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 433

6.5.16 Changer les dialogues de fichiers en Tcl . . . . . . . . . . . . . . . . . . . . . . . . 433

6.5.17 Utiliser Aqsis à partir du répertoire des applications . . . . . . . . . . . . . . . . . . 433

6.5.18 Utiliser Pixie depuis le répertoire de la bibliothèque . . . . . . . . . . . . . . . . . . 433

6.5.19 Remplacer les Icones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 433

6.5.20 Arbre dynamique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 434

6.5.21 Vue du sommet de contrôle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 434

6.5.22 Tracé de la courbure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 435

6.5.23 NURBS pour X3DOM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 436

6.6 Objets script distribués . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 440

6.6.1 Cône tronqué . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 440

6.6.2 Boîte avec topologie cylindrique . . . . . . . . . . . . . . . . . . . . . . . . . . . . 441

6.6.3 Cercle NURBS avec base triangulaire . . . . . . . . . . . . . . . . . . . . . . . . . 442

6.6.4 Hélicoïde (helix) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 443

6.6.5 Spirale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 444

6.6.6 Double balayage (DualSweep) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 445

6.6.7 Surface par translation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 446

6.6.8 Extrusion le long de la normale . . . . . . . . . . . . . . . . . . . . . . . . . . . . 447

6.6.9 Créer des polyèdres à partir des notations de Conway . . . . . . . . . . . . . . . . . 448

6.7 Interface de script JavaScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 450

6.7.1 Accès à JavaScript depuis Tcl et les objets Script . . . . . . . . . . . . . . . . . . . 450

6.7.2 Fonctions JavaScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 451

6.7.3 Conversion de données . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 453

6.7.4 Exemples complets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 454

6.8 Interface de script Lua . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 456

6.8.1 Accéder à Lua à partir de Tcl et des objets script . . . . . . . . . . . . . . . . . . . 456

6.8.2 Fonctions Lua . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 457

6.8.3 Conversion des données . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 459

6.8.4 Exemples complets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 460

Page 12: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

TABLE DE MATIÈRES 12

7 Importations et Exportations 462

7.1 Gestion des plugins d’importation et d’exportation . . . . . . . . . . . . . . . . . . . . . . 462

7.2 Aperçu des plugins d’importation et d’exportation . . . . . . . . . . . . . . . . . . . . . . . 462

7.3 Importation de RenderMan Interface Bytestream (RIB) . . . . . . . . . . . . . . . . . . . . 463

7.3.1 Prise en charge des primitives RIB . . . . . . . . . . . . . . . . . . . . . . . . . . . 464

7.3.2 Options d’importation RIB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 465

7.4 Exportation RIB (RenderMan Interface Bytestream) . . . . . . . . . . . . . . . . . . . . . . 465

7.5 Importation Mops . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 466

7.6 Importation AutoCAD DXF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 466

7.6.1 Prise en charges des entités DXF . . . . . . . . . . . . . . . . . . . . . . . . . . . . 467

7.6.2 Options des importations DXF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 467

7.7 Exportation AutoCAD DXF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 468

7.7.1 Prise en charge des objets et propriétés Ayam . . . . . . . . . . . . . . . . . . . . . 468

7.7.2 Options d’exportation DXF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 469

7.8 Importation Wavefront OBJ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 469

7.8.1 Prise en charge des déclarations de Wavefront OBJ . . . . . . . . . . . . . . . . . . 469

7.8.2 Options d’importation Wavefront OBJ . . . . . . . . . . . . . . . . . . . . . . . . . 470

7.9 Exportation Wavefront OBJ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 470

7.9.1 Prise en charge des objets et propriétés Ayam . . . . . . . . . . . . . . . . . . . . . 471

7.9.2 Options d’exportation Wavefront OBJ . . . . . . . . . . . . . . . . . . . . . . . . . 471

7.10 Importation 3DMF (Apple) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 472

7.10.1 Prise en charge des attributs et primitives 3DMF . . . . . . . . . . . . . . . . . . . 472

7.10.2 Options d’importation 3DMF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 472

7.11 Exportation 3DMF (Apple) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 473

7.11.1 Prise en charge des objets et propriétés Ayam . . . . . . . . . . . . . . . . . . . . . 473

7.11.2 Prise en charge des courbes de Trim . . . . . . . . . . . . . . . . . . . . . . . . . . 474

7.11.3 Options d’exportation 3DMF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 475

7.12 Importation 3DM (Rhino) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 475

7.12.1 Prise en charge des objets 3DM . . . . . . . . . . . . . . . . . . . . . . . . . . . . 475

7.12.2 Options de l’importation 3DM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 476

7.13 Exportation 3DM (Rhino) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 477

7.13.1 Prise en charge des objets et propriétés Ayam . . . . . . . . . . . . . . . . . . . . . 477

7.13.2 Options d’exportation 3DM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 477

Page 13: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

TABLE DE MATIÈRES 13

7.14 Importation X3D (Web3D) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 478

7.14.1 Prise en charge des éléments X3D . . . . . . . . . . . . . . . . . . . . . . . . . . . 479

7.14.2 Prise en charge des attibuts X3D . . . . . . . . . . . . . . . . . . . . . . . . . . . . 480

7.14.3 Options d’importation X3D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 481

7.15 Exportation X3D (Web3D) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 482

7.15.1 Prise en charge des objets et propriétés Ayam . . . . . . . . . . . . . . . . . . . . . 482

7.15.2 Prise en charge d’image filaires (Wire-frame) . . . . . . . . . . . . . . . . . . . . . 483

7.15.3 Options d’exportation X3D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 483

8 Divers 485

8.1 Le système d’annulation (undo) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 485

8.2 Le concept de modélisation outils-objets . . . . . . . . . . . . . . . . . . . . . . . . . . . . 485

8.3 Gestion des fichiers de scène . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 488

8.3.1 Ouvrir une Scène . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 488

8.3.2 Insérer une scène . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 489

8.3.3 Sauvegarder une scène . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 490

8.4 Le fichier Ayamrc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 490

8.4.1 Changement des raccourcis clavier . . . . . . . . . . . . . . . . . . . . . . . . . . . 491

8.4.2 Paramètres de préférences cachés . . . . . . . . . . . . . . . . . . . . . . . . . . . 492

8.4.3 Base de données pour RiOption et RiAttributes . . . . . . . . . . . . . . . . . . . . 499

8.5 Variables d’environnement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 500

8.6 Aperçu des plugins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 501

8.7 Plugins d’analyse des ombres (shaders) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 502

8.8 Instanciations automatiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 503

8.9 Rendu piloté par l’importance (Importance Driven Rendering IDR) . . . . . . . . . . . . . . 503

8.10 Aperçu CSG à l’aide du plugin AyCSG . . . . . . . . . . . . . . . . . . . . . . . . . . . . 504

8.11 Augmenter la vitesse de dessin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 508

8.12 Modélisation sans vue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 508

8.13 Restrictions et lacunes dans la mise en oeuvre . . . . . . . . . . . . . . . . . . . . . . . . . 508

8.14 Comment se joindre à la fête . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 509

8.15 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 510

8.16 Remerciements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 511

8.17 Trademarks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 512

Page 14: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

TABLE DE MATIÈRES 14

9 Index 513

Page 15: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

1. Introduction 15

1 Introduction

Cette section présente les informations générales à propos de Ayam et de ce document.Traduction en français : Alain Siksik 2020 ([email protected])La présentation suit fidèlement la version en anglais qui reste la seule référence.Veuillez noter que les renvois et les menus ne sont pas traduits volontairement pour le moment au vu duvolume initial à traduire.Certains terme techniques ne sont volontairement pas traduits exemples :- plugin : module d’extension- NURBS (Non-Uniform Rational Basis Splines) : B-splines rationnelles non uniformes.- ...Ceci n’est donc qu’une première version non exempte d’erreurs et/ou contres-sens multiples et variés. Demême, il y a parfois un mélange entre les termes français et anglais, dus essentiellement au fait que lesmenus, options, caractéristiques, propriétés, objets, ... portent le même nom que ce qui est définit dansAyam. Par exemple View et view -> View pour l’objet et vue pour le texte ! Mais parfois il y a confusion.N’hésitez pas à m’en faire part afin d’améliorer le résultat final.

1.1 À propos de ce manuel

Ce document étant un manuel de référence, il est probablement inutile de le lire du début à la fin (saufpeut-être pour la section suivante, expliquant les bases de l’interface utilisateur). Au lieu de cela, recherchezsimplement la documentation des choses qui vous intéressent via la table des matières ou l’index. Lesrenvois vous guideront alors vers d’autres parties importantes de la documentation. Encore une fois : cemanuel a un index assez gros, veuillez l’utiliser (voir section 9 Index (page 513)) !

Ce document est organisé de la manière suivante :

Après cette première section d’introduction, l’interface utilisateur de Ayam est expliquée et les instructionsde manipulation de base sont fournies dans la deuxième section.Dans la troisième section toutes les actions interactives de modélisation sont documentées.La quatrième section détaille tous les types et propriétés des objets, suivie par la documentation de tous lesobjets de modélisation NURBS dans la cinquième section.Dans la sixième section l’interface de script Tcl est expliquée et la septième section contient toutes lesinformations à propos des plugins d’importation et d’exportation.La huitième section est la section diverse tant redoutée et qui contient toute la documentation qu’on n’a paspu mettre ailleurs.

Page 16: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

1. Introduction 16

Dans ce manuel, les conventions typographiques suivantes sont utilisées :

• Raccourcis clavier : <Ctrl+c> (appuyez sur la touche contrôle et la touche c "en même temps"),pour un raccourcis du genre <Ctrl+Shift+t> la version abrégée est la suivante : <Ctrl+T>;

• Noms (de type d’objet, entrée de menus, propriété, ou élément de propriété) : "A Nom";

• Exemples de codes Tcl :

set riopt(runtime) { a b }

• Hiérarchie d’objets :

+-Objet parent(Type)| Premier objet enfant(Type)| Deuxième objet enfant(Type)| [Troisième objet enfant peut être présent ou non(Type)]| Niveau vide(Level)+-Sous niveau(Level)|| Premier enfant du sous niveau(Type)|\ Dernier enfant du sous niveau(Type)\ Dernier enfant de l’objet parent(Type)+-Objet parent suivant(Type)

• Commandes :» arguments des commandes

Page 17: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

1. Introduction 17

1.2 À propos de Ayam

Ayam est un environnement de modélisation 3D open source pour l’interface RenderMan, distribué sous lalicence BSD (Berkeley Software Distribution License), modifiée sans clause de publicité.

1.2.1 Historique

Ayam est en développement depuis 1997 et était connu sous le nom de "The Mops". Ayam est la base dutravail de la thèse de l’auteur. Une nouvelle version de Ayam est mise à jour tous les six mois environ.

1.2.2 Aperçu des fonctionnalités

Voici un bref résumé de l’ensemble des fonctionnalités de Ayam :

• Exportations et importatations de fichier RIB (RenderMan Interface Bytestream).

• Prise en charge des courbes NURBS, interpolations et courbes approximatives, surfaces NURBS(ajustées), surfaces interpolées, patchs bilinéaires, bi-cubiques et de maillage, kits, volumes quadra-tiques (Sphère, Disque, Cylindre, Cône, Hyperboloïde, Paraboloïde et Tores), maillages polygonaux,subdivisions de maillages et bien plus encore.

• Toutes les primitives peuvent être combinées avec les opérations communes : Intersection, Différence,et Union.

• La modélisation NURBS comprend les opérations d’extrusion, de révolution, de balayage, de bi-rail,de revêtement et de type Gordon (avec des bouchons, des trous et des biseaux) réalisées sous formed’objets-outils (voir aussi la section 8.2 Le concept de modélisation outils-objets (page 485)).

• Exportation et importation d’objets de Wavefront, Rhino 3DM, AutoCAD DXF, Web3D X3D, AppleQuicktime (3DMF).

• Les objets personnalisés peuvent librement implémenter leurs représentations (en utilisant OpenGLet RIB) et même de petites interfaces graphiques pour éditer leurs paramètres spécifiques à leur typepeuvent être écrits par l’utilisateur et chargés dynamiquement à l’exécution.

• Interface de script pour Tcl, JavaScript et Lua.

• Des objets Script.

• Divers : instanciation (automatique), nombre quelconque de vues de modélisation, presse-papiersindépendants d’objets et de propriétés, console, annulations sur n niveaux.

Depuis la version 1.12 de Ayam, le chargement dynamique d’objets personnalisés et de certains plugin sontaussi faisables sur la plateforme Windows 32 bits (ce n’était pas le cas avant)

Ayam est principalement destiné aux plates-formes Linux, IRIX et Win32. Sur ces plates-formes, le moteurgraphique BMRT (Blue Moon Rendering Tools, compatible avec RenderMan de Larry Gritz) est disponible.Même si la distribution de BMRT est arrêtée, c’est toujours le moteur de rendu recommandé pour Ayam.Malgré cela, Ayam peut être utilisé sur de nombreuses autres plates-formes avec n’importe quel moteur derendu compatible RenderMan.

Pour les plates-formes où BMRT n’est pas disponible (par exemple FreeBSD ou NetBSD), Ayam peutêtre compilé avec le code du toolkit Affine, mais avec des fonctionnalités limitées (voir aussi le fichierINSTALL). Dans ce cas, aucune analyse des ombres compilées par slc ne sera possible.

Page 18: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

1. Introduction 18

Depuis Ayam version 1.6, il est également possible de remplacer complètement l’analyse des ombres BMRTet le code d’écriture RIB par du code du projet Aqsis, éliminant ainsi complètement le besoin de BMRT.De plus, des plugins d’analyse des ombres sont disponibles pour tous les principaux moteurs de renducompatibles RenderMan, permettant une intégration étroite de Ayam avec l’un de ces moteurs de rendu.

1.2.3 Systèmes de coordonnées et unités

Ayam utilise un système de coordonnées dit "main droite" tel qu’utilisé par OpenGL mais en oppositionavec RenderMan (ce dernier utilise un système de coordonnées dit "main gauche").

Dans la vue de modélisation par défaut "Front", l’axe X positif pointe vers la droite, l’axe Y positif pointevers le haut et l’axe Z pointe vers l’extérieur de l’écran, vers l’utilisateur. Voir aussi l’image suivante.

Figure 1: Système de coordonnées dit "main droite"

Toutes les coordonnées dans Ayam sont sans dimension. C’est à l’utilisateur de définir si la valeur 1représente par exemple un centimètre ou un mètre.

En raison de la précision limitée de l’arithmétique à virgule flottante utilisée dans Ayam, les valeurs decoordonnées doivent être définies dans la plage comprise entre -10,0 et 10,0 pour des résultats plus précis.

1.2.4 Coordonnées rationnelles

Ayam stocke les coordonnées rationnelles dans le style euclidien rationnel, c’est-à-dire que le poids d’unpoint de contrôle n’est pas pré-multiplié avec les coordonnées (cela sera fait en interne lors de la remise descoordonnées à des fins de dessin ou d’exportation).

Dans les versions Ayam antérieures à 1.19, les poids étaient toujours multipliés par les valeurs de coordon-nées (c’est-à-dire coordonnées homogènes rationnelles) pour permettre un dessin plus rapide avec OpenGL/ GLU, qui s’attend à ce que les valeurs de coordonnées rationnelles lui soient fournies de cette façon. Maisun effet secondaire négatif de cette approche était que la modification, des coordonnées ou des poids à desfins de modélisation, était inutilement compliquée.Ayam peut toujours afficher les coordonnées dans les deux styles, contrôlés par l’option de préférence"RationalPoints" (voir aussi la section 2.10.2 Préférences de modélisation (page 64)), mais en in-terne les coordonnées sont conservées en style rationnel euclidien.Les fichiers de scène des anciennes versions de Ayam sont automatiquement convertis au nouveau stylerationnel lorsqu’ils sont lus par Ayam 1.19 et supérieur, mais le chargement des fichiers de scène écrits parAyam 1.19 et supérieur dans les anciennes versions de Ayam nécessitent une intervention manuelle (parexemple au moyen d’un script).

Page 19: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

2. Interface graphique utilisateur (GUI) de Ayam 19

2 Interface graphique utilisateur (GUI) de Ayam

Cette section décrit l’interface graphique utilisateur de Ayam

L’interface utilisateur de Ayam est composée de trois types de fenêtres : une fenêtre principale, une boîteà outils et un nombre quelconque de fenêtres de visualisation. La fenêtre principale affiche la hiérarchiedes objets et permet de modifier les propriétés des objets. La fenêtre de la boîte à outils permet de créerfacilement des objets et de démarrer des actions et des outils de modélisation. Les actions de modélisationsont ensuite effectuées dans des fenêtres de visualisation, où est également affichée la scène.

Jusqu’à la version 1.14 de Ayam, toutes ces fenêtres étaient toujours des fenêtres de niveau supérieur sé-parées par un soi-disant mode GUI de fenêtres flottantes . Depuis la version 1.14, un nouveau mode GUI estdisponible où la fenêtre principale, trois fenêtres de visualisation et la boite à outils sont intégrées dans unefenêtre de niveau supérieur. Ce mode est appelé mode GUI à fenêtre unique, voir aussi l’image ci-dessous.Le nouveau mode GUI à fenêtre unique est activé par défaut. Toutes les sous-fenêtres sont dans des volets,l’espace occupé par une sous-fenêtre peut être ajusté en faisant glisser la souris sur les bordures des volets.Le nombre de vues n’est pas limité à trois, mais toutes les vues supplémentaires deviennent des fenêtressupplémentaires de niveau supérieur.

Figure 2: mode GUI à fenêtre unique

La section suivante documente en détail les trois types de fenêtres (principale, boite à outils et visualisation)

Page 20: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

2. Interface graphique utilisateur (GUI) de Ayam 20

2.1 Anatomie de la fenêtre principale

La fenêtre principale est découpée en trois zones principales :

1. une zone appelée "Objects:"

2. une zone appelée "Properties:"

3. une zone interactive de texte (aussi nommée "Console")

Figure 3: La fenêtre principale

Les tailles relatives des trois zones sont gérées par ce que nous appellerons la gestion de la géométrie despanneaux. Pour changer la taille de la console, déplacez le pointeur de la souris sur le bord haut de la consolejusqu’à ce que la forme du pointeur change puis déplacez le bord. La même chose est valable pour le côtédroit de la zone des objets.

2.1.1 Objets

La représentation par défaut des objets est une arborescence des objets. L’autre présentation possible est unesimple liste (telle que connue sous "The Mops"). Le label "Objects" peut être utilisé pour basculerentre les deux types de présentation (en double cliquant dessus). Il est aussi possible de basculer entre lesdeux présentations en utilisant le menu contextuel.

Les deux présentations ont des propriétés différentes au vu de la vitesse, des ressources, et de polyvalence.L’arborescence des objets est plus polyvalente mais plus lente pour les opérations de glisser/déposer (dragand drop)

Les deux présentations gèrent ce que nous appellerons le niveau courant. Ce niveau est le niveau de la scèneaffichée dans la liste d’objets. Dans l’arborescence des objets, le niveau courant est affiché en noir alors queles autres niveaux sont grisés. On ne peut sélectionner des objets que dans le niveau courant !

Page 21: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

2. Interface graphique utilisateur (GUI) de Ayam 21

Après le démarrage de Ayam, vous remarquerez qu’il y a un premier objet racine appelé "Root" dans leniveau supérieur de la scène, même si la scène semble vide. Voir la section 4.2.1 L’objet Racine (Root)(page 110) pour plus d’informations sur cet objet un peu spécial, et ce qu’on peut en faire.

Veuillez noter que cet objet ne peut être ni supprimé, ni copié.

L’arborescence des objets:

Figure 4: L’arborescence des objets

L’arborescence des objets est assez complexe et peut être lente sur les machines lentes (de la classe Pentium90), en particulier lorsqu’il s’agit de scènes contenant de nombreux objets. Mais sur les machines plusrécentes ce n’est plus vraiment un problème. Néanmoins, Ayam essaie de maintenir les délais de mise à jourde l’arborescence aussi bas que possible, mais cela ne fonctionne que si la scène utilise la hiérarchie et queles changements se produisent dans les sous-niveaux (mais pas au niveau racine). D’autres accélérationspeuvent être réalisées à l’aide du script DTree (voir la section 6.5.20 Arbre dynamique (page 434)).

1

Dans l’arborescence, les objets doivent être sélectionnés en utilisant le bouton gauche de la souris. Unesélection multiple est possible en appuyant sur <Shift> ou <Ctrl> tout en cliquant sur les objets.

Un double clic sur un objet avec des objets enfant bascule l’affichage sur le niveau des enfants. On peutfaire la même chose en cliquant sur le symbole bien connu plus/moins en face du nom de ces objets.

Une opération de glisser/déposer est aussi possible pour déplacer des objets dans l’arborescence et pourinitialiser certaines actions comme définir des matériaux pour les objets. (Connecter des matériaux auxobjets ???) Cependant, cette dernière fonctionnalité est documentée dans la section 4 Objets, propriétés etbalises (page 104) car elle est spécifique au type d’objet.

Le bouton droit2 de la souris ouvre un menu contextuel avec une arborescence de base et les opérations avecle presse-papier.

• "Tree/Rebuild" supprime complètement l’arborescence, la reconstruit, définit le plus haut niveaucomme niveau courant et supprime la sélection d’objets.

• "Tree/Expand All"ouvre tous les noeuds avec enfants,

• "Tree/Collapse All" ferme tous les noeuds avec enfants,

• "Tree/Expand Selected" ouvre tous les noeuds sélectionnés,1 Depuis 1.22. 2 Comprendre le bouton le plus à droite

Page 22: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

2. Interface graphique utilisateur (GUI) de Ayam 22

• "Tree/Collapse Selected" ferme tous les noeuds sélectionnés,

• "Switch to Listbox" supprime l’affichage de l’arborescence et la remplace par la liste desobjets (voir plus loin).

• "Deselect Object" désélectionne le ou les objets sélectionnés.

• "Copy Object", "Cut Object", "Paste Object", "Delete Object" ce sontdes opérations courantes avec le presse-papier qui sont documentés dans la section 2.2 Menu principal(page 33).

• "Help on Object" affiche l’aide pour l’objet sélectionné.

Page 23: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

2. Interface graphique utilisateur (GUI) de Ayam 23

On peut aussi naviguer dans la scène et les objets peuvent être sélectionnés en utilisant le clavier :1

• <Up> et <Down> déplacent la sélection vers l’objet précédant ou suivant dans le niveau courant.

• <Shift-Up> et <Shift-Down> ne déplaceront pas la sélection, mais l’étendront dans la direc-tion spécifiée.2

• <Home> et <End> sélectionnent le premier ou le dernier objet du niveau courant,

• <Shift+Home> et <Shift+End> étendent la sélection du premier (respectivement du dernier)objet du niveau courant.3 Cependant l’objet racine sera toujours omis.

• <Right> entre dans le premier objet sélectionné,

• <Left> remonte dans le niveau de l’objet parent,

• <Ctrl+a> et <Ctrl+n>sélectionnent ou désélectionnent tous les objets du niveau courant. Si leniveau courant est le niveau racine, le niveau racine ne sera jamais sélectionné par <Ctrl+a>.

• <Space> bascule l’affichage des objets enfants du ou des objets sélectionnés.

• <Shift+Space> bascule l’affichage de tous les sous-niveaux du ou des objets sélectionnés.4

• <+> ouvre tous les sous-niveaux du ou des objets sélectionnés.5

• <-> ferme tous les sous-niveaux du ou des objets sélectionnés.6

• <Alt+Up> and <Alt+Down> mélangent les objets sélectionnés du niveau actuel dans la directionsélectionnée, à moins que l’objet Root ne soit sélectionné et à moins que le premier objet ne soitsélectionné pour le mouvement vers le haut ou le dernier objet pour le mouvement vers le bas.7

• <ˆ> déplace le sur la première vue (en version fenêtre GUI simple).8

Si ces raccourcis clavier ne marchent pas, vous devez préalablement déplacer le focus clavier dans la fenêtrenécessaire (vision, propriétés, ou console) en utilisant <Tab> or <Shift+Tab>.

Une autre façon de déplacer le focus (et de nettoyer l’état de l’application) consiste à utiliser latouche<Esc> : dans la fenêtre des propriétés et dans la console, appuyer sur <Esc> déplace le focussur la fenêtre principale ou sur la fenêtre de sélection de l’objet. Appuyer deux fois sur <Esc> dans unefenêtre d’affichage déplace aussi le focus sur la fenêtre principale / de sélection de l’objet.9 Appuyer deuxfois sur <Esc> dans la fenêtre de sélection de l’objet supprime la sélection (ce qui implique la disparitionde la fenêtre des propriétés) et change le niveau courant vers le niveau racine.

Bref si vous êtes perdus n’importe où dans Ayam, il vous suffit d’appuyer deux ou trois fois sur <Esc>.

1 Depuis 1.6. 2 Depuis 1.7. 3 Depuis 1.11. 4 Depuis 1.18. 5 Depuis 1.21. 6 Depuis 1.21. 7 Depuis 1.21.8 Depuis 1.24. 9 Depuis 1.15.

Page 24: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

2. Interface graphique utilisateur (GUI) de Ayam 24

Object Listbox:

Figure 5: Liste des objets

La zone de liste des objets affiche la hiérarchie des objets de la scène actuelle. En utilisant cette liste, vouspouvez vous déplacer au sein de la hiérarchie de la scène avec votre souris et vous pouvez sélectionner unou plusieurs objets.

Se déplacer et sélectionner sont très intuitifs. Utilisez un double clic pour rentrer dans un niveau (ou un objetavec enfants), utilisez un simple clic pour sélectionner, une sélection multiple peut être effectuée en utilisant<Shift> ou <Ctrl> tout en cliquant. Les opérations au clavier sont aussi possibles si la fenêtre de laliste a le focus.

Un ".." est affiché au niveau du premier élément du niveau courant si vous êtes "dans" un niveau ou unautre objet. Un double clic sur ce ".." remonte au niveau parent. Les boutons situés sous la zone de listepeuvent être utilisés pour modifier la sélection ou pour parcourir rapidement la hiérarchie. Ils devraient êtreexplicites.

Le bouton droit de la souris ouvre un petit menu contextuel.

• "Switch to Tree" supprime la liste et la remplace par l’arborescence.

• "Deselect Object" désélectionne le ou les objets sélectionnés.

• "Copy Object", "Cut Object", "Paste Object", "Delete Object" sont desopérations standards du presse-papier et sont documentés dans la section 2.2 Menu principal (page33).

• "Help on Object" affiche l’aide pour l’objet sélectionné.

La scène peut aussi être parcourue et les objets sélectionnés via l’utilisation du clavier :1

• <Up> et <Down> déplacent la sélection vers l’objet précédant ou suivant dans le niveau courant.

• <Shift-Up> et <Shift-Down> ne déplacent pas la sélection, mais l’étendent dans la directionchoisie.2

• <Home> et <End> sélectionnent le premier ou le dernier objet dans le niveau courant,

• <Shift+Home> et <Shift+End> étendent la sélection vers le premier ou le dernier objet dansle niveau courant.3 L’objet racine sera toujours omis.

1 Depuis 1.6. 2 Depuis 1.7. 3 Depuis 1.11.

Page 25: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

2. Interface graphique utilisateur (GUI) de Ayam 25

• <Right> entre dans le premier objet sélectionné,

• <Left> remonte dans le niveau parent,

• <Ctrl+a> and <Ctrl+n> sélectionnent ou désélectionnent tous les objets dans le niveau courant.Si le niveau courant est le niveau racine alors ce dernier n’est pas sélectionné par <Ctrl+a>.

• <Alt+Up> et <Alt+Down> déplacent l’objet sélectionné dans le niveau courant dans la directionchoisie, tant que le niveau sélectionné n’est pas le niveau racine et dans la mesure où on ne tente pasde déplacer le premier objet vers le haut ou le dernier vers le bas.1

• <ˆ> déplace le focus dans la première vue (dans le mode fenêtre unique).2

Si ces raccourcis clavier ne marchent pas, vous devez préalablement déplacer le focus clavier vers la fenêtrede visualisation, celle des propriétés ou la console en utilisant <Tab> ou <Shift+Tab>.

Une autre façon de déplacer le focus (et de nettoyer l’état de l’application) consiste à utiliser latouche<Esc> : Dans la fenêtre des propriétés et dans la console, appuyer sur <Esc> déplace le focussur la fenêtre principale ou sur la fenêtre de sélection de l’objet. Appuyer deux fois sur <Esc> dans unefenêtre d’affichage déplace aussi le focus sur la fenêtre principale / de sélection de l’objet.3 Appuyer deuxfois sur <Esc> dans la fenêtre de sélection de l’objet supprime la sélection (ce qui implique la disparitionde la fenêtre des propriétés) et change le niveau courant vers le niveau racine.

Bref si vous êtes perdus n’importe où dans Ayam, il vous suffit d’appuyer deux ou trois fois sur <Esc>.

1 Depuis 1.21. 2 Depuis 1.24. 3 Depuis 1.15.

Page 26: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

2. Interface graphique utilisateur (GUI) de Ayam 26

2.1.2 Les propriétés

Figure 6: Properties

La zone de liste juste à côté de l’arborescence des objets affiche les propriétés de l’objet actuellementsélectionné.

S’il y a plusieurs objets sélectionnés, la zone de liste n’affichera strictement rien.

Contrairement à l’arborescence ou à la zone de liste des objets, où plusieurs entrées peuvent être sélection-nées, seule une propriété peut être sélectionnée. Si une propriété est sélectionnée, la GUI associée seraaffiché dans la zone appropriée (sur le côté droit)

Le clavier peut aussi être utilisé pour sélectionner une propriété : il suffit d’appuyer une fois sur la touche<0>-<9> (c’est plus facile avec le clavier numérique). <0> sélectionne toujours la dernière et souventla seule propriété spécifique au type d’objet, alors que <1> sélectionne la première propriété, qui inclue latransformation linéaire dans la plus part des cas.1

La zone de liste des propriétés a aussi un menu contextuel. Les entrées de ce menu permettent de :

• Désélectionner la propriété courante,

• Copier/coller la propriété actuellement sélectionnée de/vers le presse-papier (voir plus loin),

• Ajouter/supprimer une propriété de/vers l’objet actuellement sélectionné au moyen de balises NP / RP(voir aussi les sections 4.11.13 Balise NP (New Property) (page 264) et 4.11.14 Balise RP (RemoveProperty) (page 265)),

• afficher l’aide de la propriété sélectionnée.

Les GUI propriétés

Toutes les GUI de propriétés utilisent des éléments plus ou moins standardisées et organisées sous forme deliste, voir aussi l’image ci-dessous. Ces listes peuvent être déroulées si elles sont trop longues pour tenirentièrement sur la fenêtre.

Ce qui s’affiche exactement et l’apparence des interfaces graphiques dépendent de l’objet sélectionné et dela propriété sélectionnée. Ceci est documenté de manière exhaustive dans la section 4 Objets, propriétés etbalises (page 104).1 Depuis 1.8

Page 27: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

2. Interface graphique utilisateur (GUI) de Ayam 27

Si Ayam est en mode fenêtres flottantes and que les éléments de la propriété courante ne tiennent pas hor-izontalement dans l’espace de la fenêtre définie dans la taille de fenêtre principale, Ayam peut redimen-sionner automatiquement cette taille. Ce comportement peut être contrôlé en utilisant la configuration despréférences "AutoResize" (see section 2.10 Les préférences (page 60)).

Si un objet et une propriété sont sélectionnés et qu’un objet différent est sélectionné, la GUI de propriété quia le même index que la propriété précédemment sélectionnée dans la liste des propriétés sera sélectionnéeet affichée. Ce n’est pas nécessairement une propriété du même type. Pour éviter cela ou pour effacer laGUI des propriétés pour une navigation rapide dans la scène, vous pouvez soit double-cliquer sur l’étiquette"Propriétés", appuyer trois fois sur la touche <Esc> ou utiliser le menu contextuel de la liste des propriétéspour désélectionner la propriété actuelle.

Toutes les modifications qui sont intervenues en utilisant la GUI des propriétés ne seront appliquées quelorsque le bouton "Apply" sera utilisé.

Cependant, maintenir le bouton "Shift"enfoncé tout en interagissant avec la GUI des propriétés ou enappuyant sur la touche "Return" lorsque les widgets d’entrée ont le focus de saisie au clavier entraîneraune application instantanée de toutes les valeurs modifiées.1

Notez que les GUI des propriétés des objets personnalisés peuvent offrir des éléments interactifs qui ef-fectuent également une opération "Apply" instantanée. Mais la plupart des éléments GUI de propriété desobjets de base de Ayam ne changent pas tant que le bouton "Apply" n’est pas utilisé.

Toutes les modifications apportées aux arguments d’une propriété depuis l’ouverture de la propriété ou ladernière opération "Apply" (quelle qu’elle soit) peuvent être annulées avec le bouton "Reset". Notezque cela n’utilise pas le mécanisme d’annulation de Ayam mais copie plutôt les données Tcl, tout comme lepresse-papiers des propriétés.

Si un élément de la GUI de propriété a le focus de saisie au clavier (il est alors généralement affiché avec unbord noir autour de lui), tous les raccourcis clavier pour le menu principal et la navigation de scène n’aurontaucun effet jusqu’à ce que le focus de saisie au clavier soit éloigné de la propriété GUI. Cela peut être faitfacilement en utilisant la touche <Esc>.

Les propriétés du presse-papier

À l’aide du presse-papiers de propriétés, les données de propriété choisies peuvent être copiées à partir del’un, puis collées dans un autre objet. Voir le menu "Edit" pour accéder à cette fonctionnalité.

Coller une propriété sur de multiples objets marche aussi. C’est un excellent moyen d’appliquer par exempleune ombre de surface paramétrée à un grand nombre d’objets matériaux, sans être obligé de définir unenouvelle ombre et entrer des paramètres pour chaque objet matériau.

Comme vous ne souhaitez peut-être pas copier et coller l’ensemble des propriétés tout le temps, vous pouvezmarquer des paramètres uniques avec un double-clic sur les étiquettes des paramètres. Les paramètressélectionnés seront alors précédés d’un point d’exclamation (!) dans la GUI de la propriété.

Si cette propriété est ensuite copiée, tous les paramètres marqués seront omis.

Il est également possible de ne copier que les paramètres sélectionnés en utilisant "Copy Marked

Prop".

1 Depuis 1.8.3.

Page 28: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

2. Interface graphique utilisateur (GUI) de Ayam 28

Un exemple simple pour une telle utilisation avancée du presse-papiers de propriétés :

Notre tâche est de donner à un grand nombre d’objets matériaux la même couleur, mais ils ont déjà desparamètres d’opacité différents. La copie brutale de la propriété d’attribut détruirait les valeurs d’opacitéajustées individuellement. Nous pouvons résoudre ce problème en copiant uniquement l’attribut de couleur,mais en laissant tous les autres attributs tels quels :

1. Modifiez la couleur d’un premier objet matériau à l’aide de la GUI des propriétés "Attributes".(N’oubliez pas le bouton "Apply")

2. sélectionnez le paramètre couleur en double cliquant sur le texte "Color"; on devrait alors lire"!Color".

3. Copiez uniquement le paramètre de couleur dans le presse-papiers, en utilisant "Copy MarkedProp" dans le menu "Edit" ou en utilisant le raccourci clavier <Ctrl+I>.

4. Sélectionnez tous les autres objets matériaux.

5. Collez la propriété en utilisant "Paste Property" ou <Ctrl+V>.

6. C’est tout !

Une application encore plus avancée du presse-papiers consiste à coller des valeurs de propriété dans dif-férents types de propriétés (par exemple coller des paramètres d’une ombre / nuance de surface à une ombre/ nuance de déplacement, ou coller une valeur de rayon d’une sphère sur un disque). Cela peut être fait enutilisant "Paste to selected" dans le sous-menu "Special/Clipboard".Cependant, des précautions particulières doivent être prises lors du collage de propriétés incomplètes surdes objets qui n’ont pas déjà des propriétés complètes. Ne collez pas une propriété ombre incomplète sur unobjet qui n’a pas déjà la même ombre.

Page 29: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

2. Interface graphique utilisateur (GUI) de Ayam 29

2.1.3 La console

Figure 7: La console

La troisième partie de la fenêtre principale est la console. La console est principalement destinée à la sortiede texte sans blocage (messages d’information, d’avertissement et d’erreur). Si quelque chose ne marchepas comme prévu, il serait bon de jeter un oeil à la console.

La console capture les canaux d’erreur (stderr pour Linux) et de sortie (stdout pour Linux) del’interpréteur Tcl dans lequel Ayam s’exécute. Il est également possible de rediriger tous les messagesd’erreur Tcl internes, qui normalement provoqueraient l’apparition d’une fenêtre de dialogue d’erreur Tcl,vers la console en utilisant le paramètre de préférence "Misc/RedirectTcl" (voir la section 2.10.5Préférences diverses (page 72)).

Qui plus est, des commandes ou même de nouvelles procédures Tcl complètes peuvent être directemententrées dans la console. Cependant, c’est une fonctionnalité faite pour un utilisateur averti qui a étudié lasection 6 Interface de script (page 337).

Vous devez obligatoirement cliquer dans la console pour lui donner le focus d’entrée et ainsi activer l’entrée.

Il est important de savoir que les raccourcis clavier pour les différentes entrées du menu principal ne fonc-tionnent pas si la console a le focus d’entrée. Au lieu de cela, D’autres raccourcis clavier (liés à la console)sont en vigueur. Comment sortir de cette situation ? Simplement en appuyant sur <Shift+Tab> ou sur<Esc> pour mettre le focus hors de la console et de nouveau avoir accès au raccourcis du menu principal.

Veuillez noter que l’appui sur la seule touche <Tab> ne déplace par le focus hors de la console. <Tab> parcontre complète les noms de fichiers, commandes (procédures), variables et widgets. Vous pouvez essayeren tapant tip dans la console puis en appuyant sur <Tab>. La console complète automatiquement tipen tipoftheDay (la procédure qui affiche l’astuce du jour, essayez pour voir)

Rappelez-vous que de nombreuses commandes de l’interface de script de Ayam fonctionnent en arrière-plan: sans mise à jour du widget de sélection d’objet, de l’interface graphique des propriétés ou du rafraîchisse-ment des fenêtres de vue. Mais il est possible de forcer ces mises à jour en utilisant <Shift-Enter> enlieu et place de <Enter> lors de la saisie de commandes.

Une autre démonstration simple des caractéristiques de la console :

• Créez dix objets boite en cliquant sur l’icone1 boite dix fois.

• Sélectionnez les dix boites.

• Entrez dans la console (en cliquant dessus).

• Saisissez les données suivantes : forAll {movOb $i 0 0; rotOb [expr $i*10] 0 0}

Cet exemple utilise trois procédures :

• forAll : permet d’exécuter une commande sur chaque objet sélectionné ou sur tous les objets duniveau courant si rien n’est sélectionné.

1 icone (masculin) et non icone (féminin) qui est une image pieuse

Page 30: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

2. Interface graphique utilisateur (GUI) de Ayam 30

• movOb: déplace le ou les objets sélectionnés.

• rotOb: effectue une rotation sur le ou les objets sélectionnés.

Voir la section 6 Interface de script (page 337) pour une liste complète de commandes utilisables.

Veuillez noter que cet exemple utilise un effet de bord, la variable "i" (qui représente l’index de l’objet encours de modification) est utilisée pour calculer la valeur du mouvement et de la rotation.

Pour plus d’information concernant la console, veuillez consulter la documentation appropriée de l’auteuroriginal Jeffrey Hobbs (voir le menu contextuel de la console, qui peut être ouvert avec le bouton droit de lasouris).

2.2 Le menu principal

Cette section décrit la barre de menu du menu principal.

Notez que de nombreuses entrées de menu ont des raccourcis clavier qui s’affichent dans chaque entrée.Mais ces raccourcis ne fonctionnent que si la fenêtre principale a le focus de saisie clavier et que le focusde saisie n’est pas dans la console ou dans un élément GUI de propriété (c’est-à-dire un champ de saisie dedonnées). Appuyez sur <Esc> pour mettre le focus sur le widget de sélection d’objet et ainsi activer lesraccourcis clavier du menu principal.

Ces raccourcis clavier peuvent être modifiés en utilisant le fichier ayamrc (voir la section section 8.4 Lefichier Ayamrc (page 490)).

Une autre manière de naviguer dans le menu est d’utiliser les touches <Alt> ou <Menu>, appuyées enmême temps que les lettres soulignées dans les entrées du menu. Une fois un menu ouvert, on peut aussinaviguer au clavier avec les touches de direction. La touche <Return> exécute l’entrée courante du menualors que la touche <Esc> ferme le menu.

Le menu "File" traite des opérations standards sur les fichiers :

• "New", supprime la scène courante (détruit tous les objets) et recharge l’environnement de travail.Cette opération est définitive, on ne peut pas l’annuler.

Le raccourci clavier prédéfini pour cette opération est <Ctrl+N>.

• "Open", Nettoie la scène courante et ferme toutes les vues, puis charge une nouvelle scène à partirdu disque. Tous les objets du fichier seront lus. Une copie de sauvegarde du fichier sera effectuéeavant le chargement (selon le paramètre de préférence "Main/BakOnReplace"). Voir la section8.3.1 Ouvrir une Scène (page 488) pour une description plus détaillée.

Cette opération ne peut être annulée.

Le raccourci clavier prédéfini pour cette opération est <Ctrl+o>.

Les fichiers pris en charge par l’un des plugins d’importation peuvent également être importés enutilisant cette méthode.1

Notez que cela ne fonctionne que si le fichier sélectionné a une extension de nom de fichier. Le pluginapproprié sera alors chargé automatiquement (à partir de la liste des répertoires de plugin dans lespréférences) si nécessaire et la boîte de dialogue des options d’importation du plugin sera ouverte,avec l’option "FileName" déjà définie. Notez que dans ce cas, aucune copie de sauvegarde dufichier ne sera effectuée. Voir aussi la section 7 Importations et Exportations (page 462).

1 Depuis 1.13.

Page 31: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

2. Interface graphique utilisateur (GUI) de Ayam 31

• "Insert", Insère les objets et les vues d’un fichier Ayam dans la scène courante. Tous les objetsdu fichier seront lus. Si le fichier à insérer contient un objet Root ou View, les nouveaux objetsseront créés au niveau supérieur de la scène. Sinon, si seuls des objets géométriques sont dans lefichier de scène (c’est-à-dire que le fichier a été créé à l’aide de "Special/Save Selected"),les nouveaux objets seront insérés dans le niveau actuel de la scène. Voir la section 8.3.2 Insérer unescène (page 489) pour une description plus détaillée.Cette opération ne peut être annulée.

Le raccourci clavier prédéfini pour cette opération est <Ctrl+i>.

Les fichiers pris en charge par l’un des plugins d’importation peuvent également être importés enutilisant cette méthode (voir la section ("Open") ci-dessus.1

• "Save as", sauvegarde la scène courante dans un fichier en demandant un nouveau nom. Tous lesobjets de la scène seront sauvé dans le fichier, mais si la scène courante a été chargée à partir d’unfichier ne comportant pas d’objet racine (et donc sans fenêtre de visualisation), l’objet racine et lesvues ne seront pas sauvegardées dans le nouveau fichier. Voir la section 8.3.3 Sauvegarder une scène(page 490) pour une description plus détaillée.

Le raccourci clavier prédéfini pour cette opération est <Ctrl+S>.

Les fichiers pris en charge par l’un des plugins d’importation peuvent également être importés enutilisant cette méthode (voir la section "Open" ci-dessus).2

• "Save", sauvegarde la scène dans un fichier. Si la scène n’a pas encore été sauvegardée (le nom de lascène est "unnamed") alors Ayam demandera un nom de fichier en premier. Tous les objets de la scèneseront enregistrés dans le fichier de scène, mais si la scène actuelle a été chargée à partir d’un fichiersans objet racine (et donc sans fenêtre de vue), la racine et les vues seront également omises du fichierde scène enregistré. Voir la section 8.3.3 Sauvegarder une scène (page 490) pour une description plusdétaillée.

Le raccourci clavier prédéfini pour cette opération est <Ctrl+s>.

• "Import/", depuis Ayam 1.13 ce sous menu est initialement vide. Pour accéder aux entrées demenu décrites ici, les différents plugins doivent être chargés.

– "Import/Apple 3DMF", importe une scène depuis le format Apple 3DMF, voir la section7.10 Importation 3DMF (Apple) (page 472) pour plus d’information.

– "Import/AutoCAD DXF", importe une scène depuis le format AutoCAD DXF, voir la sec-tion section 7.6 Importation AutoCAD DXF (page 466) pour plus d’information.

– "Import/Mops", importe une scène depuis le format The Mops, voir la section 7.5 Importa-tion Mops (page 466) pour plus d’information.

– "Import/Rhino 3DM", importe une scène depuis le format Rhino 3DM, voir la section 7.12Importation 3DM (Rhino) (page 475) pour plus d’information.

– "Import/Wavefront OBJ", importe une scène depuis le format Wavefront OBJ, voir lasection 7.8 Importation Wavefront OBJ (page 469) pour plus d’information.

– "Import/Web3D X3D", importe une scène depuis le format XML basé sur le format X3Dpublié par le consortium Web3D, voir la section 7.14 Importation X3D (Web3D) (page 478)pour plus d’information.

• "Export/", Depuis Ayam 1.13 Ce sous menu ne comporte initialement que l’entée "RenderManRIB". Pour accéder aux entrées de menu décrites ici, les différents plugins doivent être chargés.

1 Depuis 1.13. 2 Depuis 1.13.

Page 32: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

2. Interface graphique utilisateur (GUI) de Ayam 32

– "Export/RenderMan RIB", exporte la scène actuelle vers un fichier RIB, demandantquelle caméra (quelle vue) utiliser. Le raccourci clavier prédéfini pour cette opération est<Ctrl+E>.

– "Export/Apple 3DMF", exporte une scène en format Apple 3DMF, voir la section 7.11Exportation 3DMF (Apple) (page 473) pour plus d’information.

– "Export/Rhino 3DM", exporte une scène en format Rhino 3DM format, voir la section 7.13Exportation 3DM (Rhino) (page 477) pour plus d’information.

– "Export/Wavefront OBJ", exporte une scène en format Wavefront OBJ file, voir aussi lasection 7.9 Exportation Wavefront OBJ (page 470).

– "Export/Web3D X3D", exporte une scène en format XML based X3D publié par leconsortium Web3D, voir la section 7.15 Exportation X3D (Web3D) (page 482) pour plusd’information.

• "Load Plugin", charge un fichier contenant un objet personnalisé ou un plugin Selon la plate-forme sur laquelle Ayam s’exécute, ce sont des fichiers avec l’extension ".so" ou ".dll". Si lechargement d’un plugin échoue, D’autres tentatives peuvent également échouer, même si la cause del’échec initial est éliminée. Il suffit dans ce cas de redémarrer Ayam. Voir la section 8.6 Aperçu desplugins (page 501) pour des informations plus détaillées concernant les plugins de Ayam.

• "Save Prefs", enregistre les préférences actuelles dans le fichier ayamrc après en avoir fait unecopie (voir la section 8.4 Le fichier Ayamrc (page 490) pour plus d’information sur ce fichier).

• "1.", "2.", "3.", "4.", remplace immédiatement la scène actuelle par celle de l’entrée de menu.Les entrées de menu sont mises à jour et pivotées dès que le chargement et de la sauvegarde d’unescène sont réussis de sorte que la première entrée contienne toujours la scène chargée (ou enregistrée)en dernier.

Les raccourcis clavier pour ces opérations vont de <Ctrl+1> jusqu’à <Ctrl+4>.

• "Exit!", supprime tous les fichiers temporaires, enregistre les préférences (si le paramètre depréférence "Main/AutoSavePrefs" est activé) et quitte l’application.

Le raccourci clavier prédéfini pour cette opération est <Ctrl+q>.

Page 33: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

2. Interface graphique utilisateur (GUI) de Ayam 33

Le menu "Edit" contient les opérations sur les objets et les propriétés du presse-papiers, les actions desélection et d’annulation, permet la recherche d’objet et permet d’ouvrir l’éditeur de préférences :

• "Copy", copie le ou les objets sélectionnés dans le presse-papier.Il s’agit d’une copie complète, les compteurs de référence des objets maîtres ou matériaux peuventêtre augmentés et il existe des règles spéciales pour les instances, voir aussi la section 4.2.7 Instanceset presse-papier (page 129).Cette opération ne peut être annulée.

Le raccourci clavier prédéfini pour cette opération est <Ctrl+c>.

• "Cut", copie le ou les objets dans le presse-papier et les supprime de la scène courante.Cette opération ne peut être annulée.

Le raccourci clavier prédéfini pour cette opération est <Ctrl+x>.

• "Paste", Copie les objets du presse-papier vers le niveau courant de la scène.Cette opération ne peut être annulée !

Le raccourci clavier prédéfini pour cette opération est <Ctrl+v>.

À noter que le contenu du Presse-papier reste intact après cette opération, cela signifie que l’opérationpeut être utilisée plusieurs fois. Les objets peuvent être déplacés hors du Presse-papier (en l’effaçant)à l’aide de l’entrée de menu "Special/Clipboard/Paste (Move)".

A noter également que les objets référencés, lorsqu’ils sont déplacés dans le Presse-papier avec"Cut"), ne peuvent pas en être déplacés à l’aide d’un simple coller "Paste", , utilisez plutôt"Special/Clipboard/Paste (Move)" en lieu et place! Voir aussi la section 4.2.7 Instanceset presse-papier (page 129).

• "Delete", supprime les objets sélectionnés de la scène courante ainsi que leurs enfants.Cette opération peut échouer pour les objets référencés ou pour les objets parents avec des objetsréférencés parmi leurs enfants. En cas d’échec, une erreur sera signalée et le(s) objet(s) non sup-primable(s) seront déplacé(s) à la fin du niveau actuel.Cette opération ne peut être annulée !

• "Select All", sélectionne tous les objets du niveau courant (à l’exception du niveau racine)

Le raccourci clavier prédéfini pour cette opération est <Ctrl+a>.

• "Select None", désélectionne tous les objets sélectionnés.

Le raccourci clavier prédéfini pour cette opération est <Ctrl+n>.

• "Copy Property", Copie la propriétés sélectionnée du l’objet sélectionné dans le presse-papierdes propriétés (le presse-papier des propriétés est totalement indépendant du presse-papier des objets).Les paramètres marqués ne sont pas copiés.

Le raccourci clavier prédéfini pour cette opération est <Ctrl+C>.

Voir aussi la section 2.1.2 Propriétés du presse-papier (page 27) pour plus d’information.

• "Copy Marked Prop", Copie les paramètres marqués de la propriétés sélectionnée de l’objetsélectionné vers le presse-papier des propriétés (le presse-papier des propriétés est totalement in-dépendant du presse-papier des objets).

Le raccourci clavier prédéfini pour cette opération est <Ctrl+I>.

Page 34: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

2. Interface graphique utilisateur (GUI) de Ayam 34

• "Paste Property", copie toutes les données des propriétés depuis le presse-papier des propriétésvers les objets sélectionnés. Les données seront collées dans le type de propriété enregistré lors de ladernière opération de copie. Cela ne sera pas collé dans la propriété actuellement sélectionnée, pourça, utilisez "Special/Clipboard/Paste Property to selected".

Le raccourci clavier prédéfini pour cette opération est <Ctrl+V>.

• "Undo", annule la dernière opération (voir la section 8.1 Le système d’annulation (undo) (page 485)pour plus d’information).

Le raccourci clavier prédéfini pour cette opération est <Ctrl+z>.

• "Redo", ré-exécute la dernière opération (voir la section 8.1 Le système d’annulation (undo) (page485) pour plus d’information).

Le raccourci clavier prédéfini pour cette opération est <Ctrl+y>.

• "Material", recherche l’objet matériau actuellement associé à l’objet sélectionné et le sélectionnepour l’édition. Si l’objet sélectionné n’a pas encore de matériau, un nouveau matériau sera créé: Ayam demandera le nom du nouveau matériau, l’objet matériau sera créé, en cas de succès, lematériau sera lié à tous les objets sélectionnés (même s’ils sont déjà liés à d’autres objets), voir aussila section 4.2.5 Les matériaux (page 122).

Le raccourci clavier prédéfini pour cette opération est <Ctrl+m>.

• "Master", recherche le parent de l’objet sélectionné et le sélectionne pour l’édition, voir aussi lasection 4.2.7 L’objet Instance (page 128).

Le raccourci clavier prédéfini pour cette opération est <Ctrl+M>.

• "Search", ouvre la boite de dialogue de recherche des objets, voir aussi la section 2.9 Recherched’objets (page 56).

Le raccourci clavier prédéfini pour cette opération est <Ctrl+f>.

• "Preferences", ouvre la fenêtre de dialogue des préférences (voir la section 2.10 Les préférences(page 60) pour plus d’information).

Le raccourci clavier prédéfini pour cette opération est <Ctrl+p>.

Page 35: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

2. Interface graphique utilisateur (GUI) de Ayam 35

L’entrée de menu "Create" vous permet de créer des objets. Contrairement à la création d’objet via laboîte à outils, certaines entrées de menu ouvrent de petites boîtes de dialogue dans lesquelles les paramètresde l’objet à créer peuvent être ajustés. Les champs de saisie de ces boîtes de dialogue prennent en chargeles expressions Tcl comme détaillé dans la section 6.3 Prise en charge des expressions dans les entrées dedialogue (page 420).

Voici les entrées du menu Create :

• "NURBCurve", créer une nouvelle courbe NURBS. Une petite boite de dialogue va apparaître danslaquelle la taille de la nouvelle courbe pourra être spécifiée. Voir aussi la section 4.4.1 L’objet NCurve(NURBS) (page 147).

Cette boîte de dialogue contient également un champ d’entrée "AddArgs" où des arguments de lignede commande supplémentaires à la commande "crtOb NCurve" peuvent être spécifiés, commeindiqué dans la section 6.2.2 Création d’objets (page 344). 1

• "ICurve", créer une nouvelle courbe interpolée Une petite boite de dialogue va apparaître où lataille de la nouvelle courbe pourra être spécifiée. Voir aussi la section 4.4.2 Les courbes interpolées(ICurve) (page 152).

Cette boîte de dialogue contient également un champ d’entrée "AddArgs" où des arguments de lignede commande supplémentaires à la commande "crtOb ICurve" peuvent être spécifiés, commeindiqué dans la section 6.2.2 Création d’objets (page 346). 2

• "ACurve", créer une nouvelle courbe par approximations. Une petite boite de dialogue va appa-raître où la taille de la nouvelle courbe pourra être spécifiée. Voir aussi la section 4.4.3 Les courbesapproximées (ACurve) (page 154).

Cette boîte de dialogue contient également un champ d’entrée "AddArgs" où des arguments de lignede commande supplémentaires à la commande "crtOb ACurve" peuvent être spécifiés, commeindiqué dans la section 6.2.2 Création d’objets (page 348). 3

• "NCircle", Créer un nouveau cercle NURBS circle (NCircle object). Une petite boite de dialogueva apparaître où le rayon, l’angle de départ et l’angle de fin pourront être spécifiés. Voir aussi lasection 4.4.4 L’objet NCircle (Cercle NURBS) (page 156).

Pour les autres entrées voir la section 5.2 Outils de création de courbes (page 272).

• "NURBPatch", créer un nouveau patch NURBS. Une petite boite de dialogue va apparaître où lalargeur et la hauteur du nouveau patch pourront être spécifiées. Voir aussi la section section 4.6.1Patch NURBS (NPatch) (page 166).

Cette boîte de dialogue contient également un champ d’entrée "AddArgs" où des arguments de lignede commande supplémentaires à la commande "crtOb NPatch" peuvent être spécifiés, commeindiqué dans la section 6.2.2 Création d’objets (page 349). 4

• "IPatch", créer un nouveau patch interpolé.5 Une petite boite de dialogue va apparaître où lalargeur et la hauteur du nouveau patch pourront être spécifiées. Voir aussi la section section 4.6.2 Lespatch interpolés (IPatch) (page 171).

Cette boîte de dialogue contient également un champ d’entrée "AddArgs" où des arguments de lignede commande supplémentaires à la commande "crtOb IPatch" peuvent être spécifiés, commeindiqué dans la section 6.2.2 Création d’objets (page 351).

• "BPatch", créer un nouveau patch bilinéaire. Voir aussi la section section 4.6.3 Patch bilinéaires(BPatch) (page 173).

1 Depuis 1.19. 2 Depuis 1.19. 3 Depuis 1.19. 4 Depuis 1.19. 5 Depuis 1.20.

Page 36: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

2. Interface graphique utilisateur (GUI) de Ayam 36

• "PatchMesh", créer un nouveau patch maillage. Une petite boite de dialogue va apparaître où lalargeur et la hauteur du nouveau patch pourront être spécifiées. Voir aussi la section 4.6.4 Les patchsmaillés (PatchMesh) (page 174).

Cette boîte de dialogue contient également un champ d’entrée "AddArgs" où des arguments deligne de commande supplémentaires à la commande "crtOb PatchMesh" peuvent être spécifiés,comme indiqué dans la section 6.2.2 Création d’objets (page 353). 1

Pour les autres entrées voir la section 5.4 Outils de création de surfaces (page 305).

• "Solid", créer une nouvelle primitive d’objet solide, pour une utilisation dans une CSG (géométriede construction de solides, en anglais Constructive Solid Geometry). "Box", "Sphere", "Disk","Cone", "Cylinder", "Torus", "Hyperboloid" or "Paraboloid" peuvent être sélec-tionnés.

• "Level", créer une nouvelle hiérarchie d’objets. "Level" regroupe simplement les objets,"Union", "Intersection", "Difference", and "Primitive" sont des opérations deCSG. Voir aussi la section 4.2.6 L’objet Level (niveau) (page 125).

• "Light", créer une nouvelle source de lumière. Voir aussi la section 4.2.4 L’objet Light (page 116).

• "Custom Object", créer un nouvel objet personnalisé. Si rien n’apparaît dans ce sous-menu,c’est qu’aucun objet personnalisé n’a encore été chargé. Voir aussi la section 4.9.2 Gestion des objetspersonnalisés (page 235).

• "View", Ouvrir une nouvelle fenêtre de vue. Voir aussi la section 4.2.2 L’objet View (page 113).

• "Instance", créer une nouvelle instance de l’objet sélectionné, voir la section 4.2.7 L’objet In-stance (page 128) pour plus d’information sur ces instances.

• "Clone", créer un objet clonné, voir la section 4.2.8 L’objet Clone (page 131).

• "Mirror", créer un objet miroir, voir la section 4.2.9 L’objet miroir (Mirror) (page 134).

• "Material", créer un nouveau matériau. Une petite boite de dialogue va apparaître où le nom dunouveau matériau devra être spécifié. Voir aussi la section 4.2.5 Les matériaux (page 122).

• "Camera", créer une nouvelle caméra. Les objets caméra peuvent être utilisés pour sauvegardertemporairement les paramètres de la caméra de vue, voir la section 4.2.3 L’objet Camera (page 115).

• "RiInc", créer un nouvel objet RIB inclus. Ces objets peuvent être utilisés pour inclure des objetsdans vos scènes et qui existent comme des morceaux RIB, voir aussi la section 4.2.11 L’objet RiInc(page 137).

• "RiProc", créer un nouvel objet procédural RI, voir aussi la section 4.2.12 L’objet RiProc (page138).

• "Script", créer un nouvel objet script, voir aussi la section 4.9.1 L’objet Script (page 225).

• "Select", créer un nouvel objet Select, voir aussi la section 4.2.10 L’objet sélection (Select) (page136).

• "Text", créer un nouvel objet Text, voir aussi la section 4.7.14 Le texte (Text) (page 217).

1 Depuis 1.25.

Page 37: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

2. Interface graphique utilisateur (GUI) de Ayam 37

Le menu "Tools" héberge des outils de modélisation pour créer ou modifier des objets complexes.Quelques outils ouvrent des boites de dialogue afin de demander des paramètres. Les champs de saisiedans ces boîtes de dialogue prennent en charge les expressions Tcl comme détaillé dans la section 6.3 Priseen charge des expressions dans les entrées de dialogue (page 420).

Les entrées de ce menu "Tools" sont :

• "Last (None)", cette entrée de menu permet d’accéder rapidement au dernier outil/entrée dumenu "Tools".1 Le libellé de l’entrée sera modifié de manière appropriée lors du démarrage d’unoutil, par exemple en "Last (Revert U)" après que l’entrée "Tools/Surface/RevertU" ait été utilisée. Le raccourci clavier correspondant est : <Ctrl+t>. Pour répéter le dernieroutil utilisé avec le même jeu de paramètres (et sans ouvrir à nouveau la fenêtre de dialogue desparamètres), le raccourci <Ctrl+T> peut être utilisé en lieu et place.

• "Create", "Curve", et "Surface", sont des sous-menus avec divers outils de création et mod-élisation d’objets NURBS, qui sont expliqués en détail dans la section 5 Outils de modélisationNURBS (page 271).

• "PolyMesh" : sous-menu pour les outils relatifs à un maillage polygonal (PolyMesh) :– "Merge" : fusionne les différents maillages polygonaux en un seul maillage polygonal, sans

vérification des doublons sur les points, boucles ou faces. Les objets maillages précédemmentsélectionnés ne sont pas modifiés par cet outil. Mais cet outil peut les détruire immédiatementaprès la fusion si l’option "RemoveMerged" a été activée. Si la fusion échoue, les objetsinitiaux ne sont pas détruits.Si l’option "OptimizeNew" est active, l’outil "Optimize" (voir ci-dessous) sera lancé im-médiatement après la fusion avec pour paramètre le nouveau maillage créé.L’option "MergePVTags" contrôle si l’outil de fusion doit également fusionner toutes lesbalises PV.

– "Split" : scinde les faces des objets PolyMesh sélectionnés en un deuxième objet PolyMesh.Les faces à séparer sont sélectionnées en sélectionnant tous leurs points de contrôle (Voir aussila section 3.4 Sélection/traçage de points (page 78)).Les objets PolyMesh sélectionnés seront modifiés et les faces sélectionnées seront supprimées.Puisque l’opération de fractionnement ne crée pas de nouveaux objets optimisés, l’outil"Optimize" (voir ci-dessous) peut être démarré immédiatement après le fractionnement àl’aide de l’option "OptimizeNew".

– "Optimize" : optimise le ou les objets PolyMesh sélectionnés en supprimant tous les pointsde contrôle multi-utilisés (et inutilisés) (si l’option "OptimizeCoords" est active) ou multi-plie les faces utilisées (Ce n’est pas encore fait).L’option "NormalEpsilon" contrôle en outre quels points sont considérés comme égaux encomparant également les normales au sommet (si présentes) :Une valeur à "0.0" signifie que les normales doivent être identiques au niveau du bit, unevaleur de "Inf" signifie que les normales sont totalement ignorées, toute autre valeur définitl’angle maximum (en degrés) entre deux normales à considérer comme égales.2

L’option "OptimizePV" détermine si les tags PV doivent également être optimisés.3

Si l’option "OptimizeSelected" est active, seuls les points sélectionnés du PolyMesh sonttraités.La suppression de plusieurs points de contrôle utilisés à l’aide de l’outil "Optimize" peutréduire l’occupation mémoire des points de contrôle d’un facteur d’environ six, selon la connec-tivité du maillage d’origine.

1 Depuis 1.13. 2 Depuis 1.23. 3 Depuis 1.23.

Page 38: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

2. Interface graphique utilisateur (GUI) de Ayam 38

– "Connect" : relie les deux premiers objets PolyMesh sélectionnés via leurs frontières respec-tives. Cet outil peut par exemple être utilisé pour fermer les espaces entre les surfaces NURBStesselés incompatibles (pavement étanche).Tous les points de contrôle des frontières respectives doivent être sélectionnés. L’action demodélisation de sélection des points de frontière peut être utilisée pour sélectionner facilementtous ces points de manière interactive (Voir aussi la section 3.23 Sélection et marquage des pointslimites (page 100)).Les objets PolyMesh doivent être optimisés au moins dans le voisinage direct de la frontière(tous les points de contrôle utilisés par les faces sur la frontière).Les bords de frontière sont d’abord décalés respectivement vers l’intérieur du maillage le long dela surface tangente, puis une bande de nouveaux triangles sera générée. Les nouveaux trianglesseront placés dans un nouvel (troisième) objet PolyMesh.Les valeurs de décalage peuvent être ajustées; elles sont interprétées par rapport au bord le plusproche incident à chaque point de contrôle à déplacer. Notez que des valeurs de décalage tropimportantes peuvent conduire à des triangles / maillages dégénérés pour des faces frontières deforme défavorable.

– "Gen. Face Normals" : Génère des normales de face pour le ou les objets PolyMesh sélec-tionnés à l’aide de l’algorithme robuste de Newell. Les normales générées seront stockées dansun tag PV.

– "Gen. Smooth Normals" : Génère des normales de sommet lisses pour le ou les objetsPolyMesh sélectionnés, en calculant la moyenne des normales de face environnantes de chaquesommet. Les normales de face seront pondérées par la distance face-centrée du sommet, quiprend en compte à la fois la surface et la forme de la face. Les sommets des boucles de trousobtiendront simplement la face respective normale.Les normales de sommet déjà existantes seront détruites.Si des normales de face existent, elles seront utilisées, sinon, de nouvelles normales de faceseront générées automatiquement en utilisant le même algorithme que celui implémenté dansl’outil "Gen. Face Normals" ci-dessus.

– "Rem. Smooth Normals" : Supprimer toutes les normales lisses de sommet des objetsPolyMesh sélectionnés. Après quoi, les objets seront ombrés avec un aspect à facettes.

– "Flip Smooth Normals" : Inverse / rétablit toutes les normales des sommets lisses desobjets PolyMesh sélectionnés.

– "Flip Loops": Inverse / rétablit toutes les boucles des objets PolyMesh sélectionnés

• "Points" : sous-menu pour les outils qui travaillent sur les points :– "Select All Points", sélectionne tous les points du ou des objets sélectionnés.

– "Deselect All Points", désélectionne tous les points du ou des objets sélectionnés.

– "Invert Selection", inverse la sélection, c’est à dire sélectionne tous les points non sélec-tionnés et désélectionne tous les points sélectionnés préalablement.

– "Collapse Points", réduit tous les points actuellement sélectionnés à un seul point multi-ple, voir aussi 5.3.28 Outil de regroupement de points (Collapse Points) (page 304).

– "Explode Points", développe tous les points multiples actuellement sélectionnés, voiraussi 5.3.29 Outil d’éclatement de point multiple (Explode Points) (page 304).

– "Apply To All", applique les transformations codées dans la propriété transformation desobjets sélectionnés à tous les points de ces objets. Cela aura pour effet de réinitialiser la pro-priété transformation aux valeurs par défaut sans changer (visiblement) les points des objetssélectionnés.

Page 39: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

2. Interface graphique utilisateur (GUI) de Ayam 39

– "Apply To Selected", applique les transformations codées dans la propriété transforma-tion des objets sélectionnés aux points sélectionnés. Cela aura pour effet de réinitialiser la pro-priété transformation aux valeurs par défaut sans changer (visiblement) les points des objetssélectionnés. Les points actuellement non sélectionnés seront cependant transformés !

– "Center All Points (3D)", déplace tous les points des objets sélectionnés de sorte queleur centre commun (le centre de gravité) soit le centre du système de coordonnées des objets re-spectifs. Notez que, actuellement, cela fonctionne séparément sur chacun des objets sélectionnés!

– "Center All Points (2D-XY)", "Center All Points (2D-YZ)", "CenterAll Points (2D-XZ)" : fonctionne comme l’outil 3D mais simplement sur le plandésigné.

• "Show", "Hide" active ou désactive l’attribut "Hide" des objets sélectionnés, les rendant ainsivisibles ou invisibles. Notez que les objets invisibles peuvent être exclus de l’export RIB, lorsque leparamètre de préférence "RIB-Export/ExcludeHidden" est activé.

• "Show All" et "Hide All" active ou désactive l’attribut "Hide" de tous les objets sélectionnésde la scène (incluant aussi l’objet racine et tous les objets vue) quels que soient les objets actuellementsélectionnés (et sans changer la sélection courante). Cette opération n’est pas annulable.

• "Convert", lance l’action de conversion qui a été enregistrée pour le type du ou des objets sélec-tionnés. Le comportement exact dépend du type du ou des objets sélectionnés : un objet Revolvesera par exemple converti en un niveau contenant des patchs NURBS qui composent la surface derévolution et les bouchons. Cette opération ne peut pas être annulée, c’est-à-dire que les objets nou-vellement créés ne seront pas supprimés, en utilisant le système d’annulation. Potentiellement lestag "TP" et "TC" actuels seront préservés. Cela peut être configuré via le paramètre de préférencemasqué "ConvertTags", voir la section 8.4.2 Définitions des préférences masquées (page 493)pour plus d’information.

• "Convert (In Place)", démarre l’action de conversion comme indiqué ci-dessus, mais rem-place les objets d’origine par les nouveaux objets convertis. Cette opération, contrairement à la simpleconversion ci-dessus, peut être annulée.

• "Force Notification", force les rappels de notification de tous les objets sélectionnés (ou detous les objets de la scène si aucun objet n’est sélectionné) à être appelés. Les rappels de notificationsont utilisés par des objets comme par exemple Revolve pour être informé des changements de leursobjets enfants afin de s’adapter correctement à ces changements.

Le menu personnalisé "Custom" est initialement vide. Les objets personnalisés et les plugins peuventcréer des entrées ici.

Page 40: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

2. Interface graphique utilisateur (GUI) de Ayam 40

Le menu "Special" contient des outils rarement utilisés :

• "Save Selected as", enregistre uniquement les objets actuellement sélectionnés dans un fichierde scène. Notez qu’Ayam ne vérifiera pas si les objets sont enregistrés avec leurs matériaux. Il estégalement possible d’enregistrer des objets d’instance sans leurs objets maîtres. Cela entraînera deserreurs lors du chargement d’une telle scène plus tard.

• "Save Environment", enregistre l’objet racine et toutes les vues dans un fichier de scèned’environnement, qui est lu automatiquement au démarrage du programme et lorsque la scène estréinitialisée à l’aide de l’entrée du menu principal "File/New". Initialement, le gestionnaire defichier qui demande le nom du nouvel environnement utilise la valeur du paramètre de préférence"Main/EnvFile". Notez qu’il n’y aura pas de vérification si le chargement de cet environnementau prochain démarrage est activé dans les préférences. Notez également que les fichiers enregistrés àl’aide de "Save Environment" ne contiennent que l’objet Root et toutes les vues.. Pour incluredes objets géométriques dans l’environnement ou pour exclure l’objet racine et simplement enregistrerles objets de vue, utilisez respectivement "File/Save" ou "Special/Save Selected as".

• "Clipboard/Paste (Move)", déplace les objets du presse-papiers vers la scène (effacement dupresse-papiers). C’est le seul moyen d’extraire les objets référencés du presse-papiers.Cette opération peut échouer si le résultat est une configuration d’instance illégale.

• "Clipboard/Replace", remplace le ou les objets actuellement sélectionnés par le contenu dupresse-papiers de l’objet, en déplaçant les objets remplacés dans le presse-papiers. Si plusieurs objetssont sélectionnés dans des séquences non consécutives, seule la première séquence consécutive ou unseul objet est remplacé.Cette opération peut échouer si le résultat est une configuration d’instance illégale.

• "Clipboard/Copy (Add)", copie les objets sélectionnés dans le presse-papiers sans le nettoyerau préalable.

• "Clipboard/Cut (Add)", déplace les objets sélectionnés vers le presse-papiers sans le nettoyerau préalable.

• "Clipboard/Clear", efface le presse-papiers de l’objet.Cette opération peut échouer s’il existe des objets référencés (objets Material ou objets maîtresd’instances) dans le presse-papiers.

• "Clipboard/Paste Property to Selected" colle la propriété du presse-papiers des pro-priétés dans la propriété actuellement sélectionnée de l’objet actuellement sélectionné. Aucune véri-fication de type des propriétés n’aura lieu ! De cette façon, il est possible par exemple de copier unevaleur de rayon d’une sphère vers un cylindre ou de copier des paramètres d’une ombre de déplace-ment vers une ombre de surface (tant que les arguments copiés des deux ombres ont les mêmes nomset types).

• "Instances/Resolve all Instances", convertit tous les objets d’instance en copies re-spectives de leurs objets maître. Si l’entrée de menu est utilisée, une petite boîte de dialogues’ouvre où la portée de l’opération de résolution peut être ajustée et l’opération peut être démar-rée1. Contrairement à la conversion des objets Instance sélectionnés via par exemple l’entrée de menu"Tools/Convert", cette opération ne s’arrête pas tant qu’il existe une instance dans la hiérarchiedes objets traités.

• "Instances/Automatic Instancing", ouvre une petite boîte de dialogue, où l’instanciationautomatique peut être paramétrée et démarrée (cet algorithme crée automatiquement des instancesà partir d’objets égaux). Voir la section 8.8 Instanciations automatiques (page 503) pour plusd’information.

1 Depuis 1.21.

Page 41: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

2. Interface graphique utilisateur (GUI) de Ayam 41

• "Tags/Add RiOption", ouvre une petite boîte de dialogue, où une RiOption peut être sélec-tionnée, paramétrée et ajoutée en tant que balise à l’objet racine (voir 4.11.2 Balise RiOption (page258)).

L’objet racine n’a pas besoin d’être sélectionné et la sélection actuelle ne sera pas modifiée par cetteaction.La base de données des RiOptions disponibles est contrôlée par le fichier ayamrc (voir aussi la section8.4 Le fichier Ayamrc (page 490)).

• "Tags/Add RiAttribute", ouvre une petite boîte de dialogue, dans laquelle un RiAttributepeut être sélectionné, paramétré et ajouté en tant que balise aux objets actuellement sélectionnés (voir4.11.1 Balise RiAttribute (page 257)).La base de données des RiAttributes disponibles est contrôlée par le fichier ayamrc (voir aussi lasection 8.4 Le fichier Ayamrc (page 490)).

• "Tags/Edit TexCoords", ouvre l’éditeur de coordonnées de texture (voir aussi la section 4.11.3Balise TC (Texture Coordinates) (page 258)).

• "Tags/Add Property", ouvre une boîte de dialogue où les balises "NP" peuvent être géréesfacilement pour tous les objets sélectionnés (voir aussi la section 4.11.13 Balise NP (New Property)(page 264)).

• "Tags/Remove Property", ouvre une boîte de dialogue où les balises "RP" t peuvent êtrefacilement gérées pour tous les objets sélectionnés (voir aussi la section 4.11.14 Balise RP (RemoveProperty) (page 265)).

• "Tags/Add Tag", ouvre une boîte de dialogue dans laquelle une nouvelle balise peut être ajoutéeaux objets sélectionnés (voir aussi la section 4.11 Tags (page 256)).

• "RIB-Export/From Camera", écrit un RIB complet de la scène actuelle avec les transforma-tions de caméra prises à partir de l’objet Caméra actuellement sélectionné. Les dimensions de l’imagerendue seront prises à partir des RiOptions de l’objet racine. Si ces valeurs sont nulles, les valeurspar défaut utilisées seront de 400 pixels de largeur et 300 pixels de hauteur. Le type de projectionécrite sera perspective. Sinon, le RIB a exactement le même aspect que s’il était exporté via le menuprincipal "File/Export/RenderMan RIB".

• "RIB-Export/Selected Objects", exporte uniquement les objets sélectionnés vers un RIB.Notez que les instances seront toujours résolues, les objets cachés et les objets avec des balises"NoExport" sont traités comme sur les opérations d’exportation normales et les objets légers sontsimplement ignorés. Notez également que le RIB créé, puisqu’il manque par exemple les transforma-tions de caméra et les directives WorldBegin / End, ne peut pas être rendu directement par un moteurde rendu compatible RenderMan (à moins que le moteur de rendu ne pardonne vraiment les RIB malstructurés).L’utilisation principale de cette fonctionnalité est d’aider à la création de RIB qui peuvent être facile-ment inclus dans D’autres RIB en utilisant par exemple la directive ReadArchive Voir aussi la section4.2.11 L’objet RiInc (page 137).

• "RIB-Export/Create All ShadowMaps", pour chaque lumière de la scène, la lumière estsélectionnée, puis l’ombre (shadowsMap) sera créée de la même manière qu’avec l’entrée de menu"Create ShadowMap" ci-dessous (c’est à dire que cela crée toutes les ombres pour la scèneactuelle quelle que soit la sélection). Voir aussi la section 4.2.4 Utilisation des ombrages (Shad-owMaps) (page 118).

• "RIB-Export/Create ShadowMap", la scène est exportée vers un fichier RIB en utilisant lasource de lumière actuellement sélectionnée pour les paramètres de la caméra et avec une instruction

Page 42: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

2. Interface graphique utilisateur (GUI) de Ayam 42

RiDisplay qui se traduit par une ombre à produire lors du rendu ; puis la commande "SMRender"sera appelée. Voir aussi les sections 2.10.4 Préférences d’exportation RIB (page 68) et 4.2.4 Utilisa-tion des ombrages (ShadowMaps) (page 118).

Notez qu’avant de faire quoi que ce soit, Ayam vérifiera si les ombres sont activés dans les préférencesd’exportation RIB et proposera d’adapter le paramètre de préférence en conséquence. Cela doit êtrefait car uniquement les RIB exportés pour le rendu d’image utiliseront réellement les ombres.

• "Enable Scripts" active et désactive tous les script de balises et d’objets Les objets et les balisesdans le presse-papiers d’objets ne sont pas affectés !

• "Select Renderer" ouvre une boîte de dialogue dans laquelle le moteur de rendu pour le rendudirect à partir d’une vue peut être choisi. Les modifications auront un effet sur tous les paramètres depréférence qui contrôlent le rendu direct à partir d’une vue, sauf si les RenderGUI doivent être utilisés.Si la coche "ScanShaders" est activé, Ayam essaiera également de charger le plugin d’analyse desombres correspondant (voir aussi la section 8.7 Plugins d’analyse des ombres (shaders) (page 502))et refait une analyse pour compiler les ombres.

Notez que pour que la fonction "ScanShaders" fonctionne correctement, les paramètres depréférence "Main/Shaders" et "Main/Plugins" doivent avoir été configurés correctement(voir aussi la section 2.10.1 Les préférences principales (page 61)).

• "ScanShaders" initialise l’analyse des ombres grâce à l’analyseur intégré ou via le plugin actuelle-ment chargé (Voir aussi la section 8.7 Plugins d’analyse des ombres (shaders) (page 502)).

• "Reset Preferences" supprime le fichier ayamrc courant, dans lequel ont été sauvegardé lespréférences actuelles, au redémarrage de Ayam toutes les préférences seront réinitialisées aux valeurspar défaut. Voir aussi la section 8.4 Le fichier Ayamrc (page 490) pour plus d’information sur lefichier ayamrc.

• "Reset Layout" réinitialise la disposition du volet en mode GUI à fenêtre unique afin que les vuesinternes supérieures obtiennent une part approximativement égale de l’espace horizontal disponiblesur l’écran et que le widget de sélection d’objet et l’interface graphique des propriétés soient com-plètement visibles.

• "Toggle Toolbox" ferme ou ouvre la fenêtre de la boite à outils (voir 2.8 La boîte à outils (page55)).

L’état de la boîte à outils est également mémorisé dans les préférences enregistrées.1

Cette option n’est pas disponible si Ayam est en mode GUI à fenêtre unique.

• "Toggle TreeView" bascule entre l’arborescence et la zone de liste des objets (Voir aussi lasection 2.1.1 Objets (page 20) pour plus d’information sur les deux représentations).Cet état est aussi mémorisé dans les préférences sauvegardées.2

• "Zap Ayam" iconifie toutes les fenêtres actuellement ouvertes de Ayam. Si l’une des fenêtresiconifiées est désiconifiée ultérieurement, toutes les autres fenêtres zappées seront également dési-conifiées.

Le menu "Help" :

• "Help", ouvre un navigateur Web et affiche la documentation, l’URL à afficher provient de la valeurparamétrée dans la la préférence "Docs". Voir aussi la section 2.10.1 Les préférences principales(page 61).

Le raccourci clavier standard pour cette opération est <F1>.1 Depuis 1.3. 2 Depuis 1.3.

Page 43: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

2. Interface graphique utilisateur (GUI) de Ayam 43

• "Help on object", ouvre un navigateur Web et affiche la documentation concernant l’objetsélectionné, l’URL à afficher est déduite à partir de la valeur paramétrée dans la préférence "Docs".

• "Help on property", ouvre un navigateur Web et affiche la documentation concernant la pro-priété sélectionnée, l’URL à afficher est déduite de la même manière que "Help on object"ci-dessus.

• "Show Shortcuts", affiche quelques raccourcis importants pour les actions de modélisation,vous pouvez laisser cette fenêtre ouverte lors de vos premiers pas dans la modélisation avec Ayam.

• "About", affiche des informations sur la version, le copyright et la marque.

• "Show Tooltips", active les info-bulles pour divers éléments de l’interface utilisateur (y comprisles boutons de la boîte à outils).

Page 44: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

2. Interface graphique utilisateur (GUI) de Ayam 44

2.3 Raccourcis clavier de la fenêtre principale

Un groupe important de raccourcis est disponible via les touches de fonction :<F1> a déjà été mentionné, il ouvre un navigateur Web et affiche l’URL paramétré dans la préférence"Docs".<F2> et <F3> abaisse et augmente respectivement la valeur de tolérance d’échantillonnage GLU globale,ce qui permet un ajustement rapide de la qualité de dessin et d’ombres NURBS.<F4> bascule l’affichage entre les cages de contrôle des NURBS et les contours des courbes / surfacevraies.<F5> reconstruit l’arborescence des objets et émet une notification complète, puis toutes les vues (mêmecelles avec AutoDraw désactivé 1 seront dessinées. Il est donc utile de mettre à jour l’interface graphiquecomplète après les modifications apportées à la scène à l’aide de l’interface de script de la console.<F6> bascule vers des notifications simplifiées (paresseuses). ???

<Ctrl+A> est lié aux boutons "Apply" et <Ctrl+R> vers le bouton "Reset" du GUI de la propriété.

La sélection d’objets peut être manipulée par les touches de direction (flèches), voir aussi la section 2.1.1Raccourcis de l’arborescence des objets (page 23) et la section 2.1.1 Raccourcis de la liste des objets (page24).

L’application entière avec toutes les fenêtres ouvertes peut être iconifiée (zap) à l’aide du raccourci<Ctrl+Z>. Si l’une des fenêtres iconifiées par zap est désiconifiée, toutes les autres fenêtres iconifiéespar zap seront également désiconifiées.

De nombreuses entrées du menu principal ont des raccourcis clavier directs, affichés directement dans lesentrées du menu, voir aussi la section 2.2 Le menu principal (page 30).

Notez que les raccourcis clavier de la fenêtre principale ne fonctionnent que si la fenêtre principale a le focusde saisie clavier et que le focus de saisie n’est pas dans la console ou dans un élément GUI de propriété(c’est-à-dire un champ de saisie de données). En cas de doute, appuyez d’abord sur <Esc> pour mettre lefocus sur le widget de sélection d’objet et activer ainsi les raccourcis clavier de la fenêtre principale.

Tous ces raccourcis peuvent être modifiés à l’aide du fichier ayamrc (voir la section section 8.4 Le fichierAyamrc (page 490)).

1 Depuis 1.26.

Page 45: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

2. Interface graphique utilisateur (GUI) de Ayam 45

2.4 Anatomie d’une vue

Figure 8: Une fenêtre de vue

La fenêtre de vue (affichage) est divisée en une barre de menus et un widget OpenGL, où l’interaction et ledessin ont lieu. Le titre de la fenêtre de vue donne des informations sur le nom, le type actuel et l’action demodélisation actuellement active de la vue.

L’action de modélisation actuelle, le mode de modélisation, le mode de dessin et la taille de la grille sontégalement affichés sous la forme d’un ensemble d’icones sur le côté droit de la barre de menus de la vue.

2.5 Menu d’une vue

Cette section traite de la barre de menus d’une vue.

Notez que de nombreuses entrées de menu ont des raccourcis clavier qui s’affichent dans chaque entrée.Mais ces raccourcis ne fonctionnent que si la fenêtre de vue a le focus de saisie au clavier. Ces raccourcissont modifiables dans le fichier ayamrc file (voir la section 8.4 Le fichier Ayamrc (page 490)).

Une autre façon de naviguer dans le menu consiste à utiliser les touches "Menu" ou "Alt" enfoncée enmême temps que les différents caractères soulignés dans les entrées de menu.

Voici toutes les entrées du menu "View" :

• "Quick Render" : la scène est exportée vers un fichier RIB à l’aide des paramètres de caméra dela vue actuelle ; puis la commande "QRender" sera appelée. Voir aussi la section 2.10.4 Préférencesd’exportation RIB (page 68).

Comme le moteur de rendu sera exécuté en arrière-plan, Ayam restera réactif et il est égalementpossible d’exécuter plusieurs moteurs de rendu en parallèle.

Notez que l’exportation RIB n’utilise pas les paramètres RiOption pour la taille de l’image del’objet racine mais la taille de la fenêtre de vue actuelle est utilisée à la place. Notez également quela variable d’environnement SHADERS sera adaptée à la valeur actuelle du paramètre de préférenceShaders pour le rendu.

Page 46: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

2. Interface graphique utilisateur (GUI) de Ayam 46

• "Render" : la scène est exportée vers un fichier RIB à l’aide des paramètres de caméra de lavue actuelle ; puis la commande "Render" sera appelée. Voir aussi la section 2.10.4 Préférencesd’exportation RIB (page 68).

Comme le moteur de rendu sera exécuté en arrière-plan, Ayam restera réactif et il est égalementpossible d’exécuter plusieurs moteurs de rendu en parallèle.

Notez que l’exportation RIB n’utilise pas les paramètres RiOption pour la taille de l’image del’objet racine mais la taille de la fenêtre de vue actuelle est utilisée à la place. Notez également quela variable d’environnement SHADERS sera adaptée à la valeur actuelle du paramètre de préférenceShaders pour le rendu.

• "Render to File" : la scène est exportée vers un fichier RIB en utilisant les paramètres de lacaméra de la vue actuelle et avec une instruction RiDisplay qui aboutit à un fichier image à produirelors du rendu ; puis la commande "FRender" sera appelée. Voir aussi la section 2.10.4 Préférencesd’exportation RIB (page 68).

Comme le moteur de rendu sera exécuté en arrière-plan, Ayam restera réactif et il est égalementpossible d’exécuter plusieurs moteurs de rendu en parallèle.

Notez que l’exportation RIB n’utilise pas les paramètres RiOption pour la taille de l’image del’objet racine mais la taille de la fenêtre de vue actuelle est utilisée à la place. Notez également quela variable d’environnement SHADERS sera adaptée à la valeur actuelle du paramètre de préférenceShaders pour le rendu.

• "Export RIB" : exporte la scène dans un fichier RIB. Cela fait exactement la même chose quel’entrée du menu principal "File/Export/RenderMan RIB", sauf que la vue actuelle sera déjàsélectionnée dans la boîte de dialogue.

• "Redraw" : force la mise à jour de la fenêtre de vue, ceci est particulièrement utile si le rafraîchisse-ment automatique de la vue a été désactivé.

• "Reset" : restaure les paramètres de la caméra de la vue à ceux les plus naturels pour le type de vueactuel.

• "Open PPrev", "Close PPrev" : ces entrées de menu ne sont disponibles que si l’option decompilation AYENABLEPPREV a été activée. Cette option n’est pas définie pour les binaires officielde Ayam. L’aperçu permanent (PPrev) écrit en continu un flux RIB dans un moteur de rendu (rapide)RenderMan, une image pour chaque opération de rafraîchissement de la fenêtre de vue qui a étéutilisée pour ouvrir l’aperçu. De cette façon, le moteur de rendu RenderMan affiche immédiatementtoutes les modifications de la scène. C’est un excellent moyen de tester de nombreux paramètresde caméra ou d’éclairage différents sans avoir à démarrer manuellement un processus de rendu et àfermer la fenêtre d’aperçu pour chaque paramètre différent. Comme la bibliothèque cliente RIB n’estgénéralement pas capable de gérer simultanément plusieurs flux RIB ouverts, l’exportation RIB et lerendu direct à partir des fenêtres de visualisation ne sont pas disponibles tant que la fenêtre d’aperçupermanente n’est pas fermée.

• "Create All ShadowMaps" : pour chaque lumière de la scène, la lumière est sélectionnée,puis l’ombre sera créé de la même manière qu’avec l’entrée de menu "Create ShadowMap" ci-dessous (c’est à dire que cela crée toutes les ombres pour la scène actuelle quelle que soit la sélection).Voir aussi la section 4.2.4 Utilisation des ombrages (ShadowMaps) (page 118).

• "Create ShadowMap" : la scène est exportée vers un fichier RIB en utilisant la source de lumièreactuellement sélectionnée pour les paramètres de la caméra et avec une instruction RiDisplay qui setraduit par une ombre à produire lors du rendu ; puis la commande "SMRender" sera appelée. Voiraussi les sections 2.10.4 Préférences d’exportation RIB (page 68) et 4.2.4 Utilisation des ombrages(ShadowMaps) (page 118).

Page 47: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

2. Interface graphique utilisateur (GUI) de Ayam 47

Notez qu’avant de faire quoi que ce soit, Ayam vérifiera si les ombres sont activés dans les préférencesd’exportation RIB et proposera d’adapter le paramètre de préférence en conséquence. Cela doit êtrefait car c’est seulement alors que les RIB exportés pour le rendu d’image utiliseront réellement lesombres.

• "Close" : la fenêtre de vue sera supprimée. Cette entrée n’est pas disponible pour les vues internesde Ayam en mode GUI à fenêtre unique.

Les entrées du menu "Type" :

• "Front"

• "Side"

• "Top"

• "Perspective"

• "Trim"

peuvent être utilisé pour changer le type de vue, ce qui restreint la portée de certaines actions de modélisa-tion. Voir les sections 4.2.2 L’objet View (page 113), 2.6 Afficher les raccourcis et les actions sur la fenêtre(page 51) et 3 Les actions de modélisation (page 74) pour plus d’information.

Le menu "Configure" peut être utilisé pour modifier les préférences de la vue. Certaines préférencessont décrites plus en détail dans la section 4.2.2 La propriété ViewAttrib (page 114).

• "Automatic Redraw", bascule si la vue doit être redessinée, chaque fois que la scène change.Si cette option est désactivée, une actualisation peut être appliquée à l’aide de l’entrée de menu"View/Redraw" ou du raccourci clavier correspondant <Ctrl+d>.

• "Drawing Mode" détermine si la vue doit dessiner une représentation filaire("Drawing Mode/Draw"), une représentation ombrée ("Drawing Mode/Shade"),une représentation où le les fils du mode dessin sont tracés sur la représentation ombrée("Drawing Mode/ShadeAndDraw"), ou le mode fils et silhouettes cachés ("DrawingMode/HiddenWire"). Voir aussi la section 2.7 Modes de dessin (page 53).

• "Modelling Mode" permet de basculer le système de coordonnées de modélisation de l’espacemonde ("Global") vers l’espace défini par l’objet parent courant ("Local (Level)") ou mêmel’espace défini par l’objet actuellement sélectionné ("Local (Object)"). Voir aussi la section3.24 L’édition dans les espaces locaux (page 101).

• "Draw Selection only", si cette option est activée, seuls les objets actuellement sélectionnés(et leurs enfants) seront dessinés.

• "Draw Level only", si cette option est activée, seuls les objets du niveau actuel (et leurs enfants)seront dessinés.

• "Draw Object CS", si cette option est activée, de petits systèmes de coordonnées (trois lignescolorées) seront dessinés à la base de chaque système de coordonnées d’objets.

• "AntiAlias Lines", si cette option est activée, toutes les lignes seront anti-aliasées (anti-crénélées).

• "Draw BGImage", si cette option est activée, l’image d’arrière-plan sera dessinée.

• "Set BGImage", peut être utilisé pour définir l’image d’arrière-plan actuelle de la vue, qui doitêtre un fichier TIFF. Cette image peut également être spécifiée à l’aide de l’attribut de vue BGImage.

Page 48: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

2. Interface graphique utilisateur (GUI) de Ayam 48

• "Draw Grid", si cette option est activée, la grille sera dessinée.

• "Use Grid", si cette option est activée, la grille sera utilisée pour contraindre les actions de mod-élisation aux coordonnées de la grille. Voir aussi la section 3 Les actions de modélisation (page 74).

• "Set Gridsize", peut être utilisé pour modifier la taille de la grille associée à cette vue. Uneautre façon de changer la taille de la grille consiste à utiliser l’icone grille du menu sur le côté droit,voir ci-dessous.

• "Half Size", modifie la largeur et la hauteur à la moitié des valeurs actuelles. Ceci n’est pasdisponible pour les vues internes en mode GUI à fenêtre unique.

• "Double Size", modifie la largeur et la hauteur au double des valeurs actuelles. Ceci n’est pasdisponible pour les vues internes en mode GUI à fenêtre unique.

• "From Camera", copier les paramètres de caméra de l’objet caméra actuellement sélectionné dansla vue.

• "To Camera", copier les paramètres de la caméra vers l’objet de caméra actuellement sélectionnéà partir de la vue.

• "Set FOV", vous permet de spécifier une valeur de champ de vue pour la vue et d’adapter le zoomen conséquence. Bien entendu, cela ne fonctionne que pour les vues en perspective.

• "Zoom to Object", adapte les paramètres de la caméra afin que les objets actuellement sélec-tionnés soient centrés dans la vue. De plus, les plans de détourage et la position de la lumière peuventêtre adaptés pour des objets très petits ou très grands.

• "Zoom to All", adapte les paramètres de la caméra afin que tous les objets soient centrés dans lavue, quels que soient le niveau actuel et les objets sélectionnés.

• "Align to Object", aligner la vue sur le système de coordonnées de l’objet actuellement sélec-tionné ou sur l’objet parent du niveau actuel si aucun objet n’est actuellement sélectionné (voir aussila section 3.24 L’édition dans les espaces locaux (page 101)).

Mis à part les menus textuels documentés ci-dessus, il existe également des menus basés sur des icones dansla barre de menus de la fenêtre d’affichage :

L’icone "Action" permet les actions de sélection de base1 L’icone de ce menu transmet également tou-jours l’action de modélisation actuellement active. Voir aussi l’image ci-dessous :

Figure 9: Action Icon Menu

Les actions de sélection sont :1 Depuis 1.24.

Page 49: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

2. Interface graphique utilisateur (GUI) de Ayam 49

• Pick, voir la section 3.3 Sélection d’objets par choix (page 76),

• Tag, voir la section 3.4 Sélection/traçage de points (page 78),

• Mark, voir la section 3.5 Définir une marque (page 81),

• None, désactive toutes les actions.

L’icone "Modelling Mode" permet de changer rapidement le mode de modélisation actuel (global oulocal, voir aussi la section 3.24 L’édition dans les espaces locaux (page 101)).

En plus d’une icone différente, les modes locaux afficheront un L ou O dans le coin inférieur droit de l’icone.L’icone, en outre, indique si des objets ou des points seraient modifiés par une action de modélisation : pourles points, un point rouge sera présent dans le coin supérieur droit de l’icone (voir aussi la section 3.2Transformer des objets ou des points sélectionnés (page 76)).

La portée de modélisation peut également être basculée directement en cliquant sur le bouton de menu avecle bouton droit de la souris.1

De plus, le type de vue sera affiché dans le coin supérieur gauche de l’icone sous la forme de lettre F, S,T, ou P respectivement pour les vues de face, de côté, de dessus ou en perspective. Les vues de type Trimn’ont aucune lettre de désignation dans l’icone. Voir aussi l’image ci-dessous :

Figure 10: Modelling Mode Icon Menu

L’icone "Drawing Mode" peut être utilisé pour changer rapidement le mode de dessin courant, le modefilaire, l’ombre, le mode filaire et l’ombre ou les fils cachés. Voir aussi l’image ci-dessous :

Figure 11: Drawing Mode Icon Menu

Voir la section 2.7 Modes de dessin (page 53) pour une description des différents modes de dessin.

1 Depuis 1.26.

Page 50: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

2. Interface graphique utilisateur (GUI) de Ayam 50

Enfin, l’icone "Grid" peut être utilisé pour changer rapidement la taille actuelle de la grille :

Sur le côté droit de la barre de menu d’affichage, il y a un petit icone qui affiche la taille actuelle de lagrille. Vous pouvez cliquer sur l’icone pour afficher un menu avec des valeurs de taille de grille prédéfinies.Choisir l’une des valeurs 0,1, 0,25, 0,5 ou 1,0 définira la taille de la grille de la vue sur la valeur choisieet permettra en outre de dessiner la grille et de s’aligner sur la grille. L’entrée "X" permet de définir unevaleur de grille personnalisée. La dernière entrée définira la taille de la grille sur 0,0 et désactivera le dessinet l’accrochage à la grille. Si une taille de grille autre que 0,1, 0,25, 0,5 ou 1,0 est en vigueur pour la vue,un icone générique (avec un X au lieu d’un nombre) sera affichée dans le menu d’icones. Voir aussi l’imageci-dessous :

Figure 12: Grid Icon Menu

Page 51: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

2. Interface graphique utilisateur (GUI) de Ayam 51

2.6 Afficher les raccourcis et les actions sur la fenêtre

Les commandes clavier importantes d’une fenêtre de vue (à part les raccourcis du menu de vue) sont traitéesdans cette section.

Notez que les raccourcis clavier d’affichage ne fonctionnent que si la fenêtre d’affichage a le focus de saisieclavier.

Ces raccourcis peuvent être personnalisés à l’aide du fichier ayamrc file (voir la section 8.4 Le fichier Ayamrc(page 490)).

Les raccourcis clavier modifiant directement la caméra, qui est associée à la fenêtre de visualisation, sont :

• <Left>, <Up>, <Right>, <Down> pivotent la vue autour du point de visée actuel de la caméra.

• <Shift+Left>, <Shift+Up>, <Shift+Right>, <Shift+Down> déplacent la vue.

• <+>, <->, ou <Add>, <Sub> (sur le tesselé numérique) zooment la vue.

• <Ctrl+5> (sur le tesselé numérique) réinitialise la caméra de vue aux valeurs par défaut dépendantdu type de vue.

• <.> déplace la vue sur la marque.

Voir la section 6.5.12 Modifier le comportement des touches curseur (page 432) pour un script qui permuteles raccourcis clavier de rotation et de panoramique dans des vues parallèles.

Les actions interactives modifiant la caméra, associée à la fenêtre de visualisation, sont :

• En utilisant <v> , vous pouvez déplacer la vue avec votre souris.

• En utilisant <V> vous déplacez la caméra dans la direction dans laquelle elle regarde. Notez que celaaffecte à la fois les paramètres de départ et d’arrivée de la caméra virtuelle. De plus, ce mouvementn’aura aucun effet visible dans les vues parallèles.

• <R> (notez la majuscule !) commence à faire pivoter la caméra virtuelle autour du point qu’elle vise(cherche).

• La rotation de la vue est également possible dans n’importe quel mode de modélisation, en maintenantla touche <Alt> enfoncée tout en déplaçant la souris.

• <Z> commence à zoomer sur la vue. Faites glisser la souris vers le haut pour effectuer un zoom avantet faites glisser la souris vers le bas pour effectuer un zoom arrière.

• Il est également possible d’agrandir la vue dans une région rectangulaire définie par un déplacementde souris dans n’importe quel mode de modélisation, en maintenant la touche <Shift> enfoncée.1

Voir également le tableau ci-dessous.

Vous pouvez également effectuer un panoramique / déplacer la vue en faisant glisser avec le bouton droit dela souris et agrandir la vue avec le bouton central de la souris sans affecter aucune autre vue active ou actionde modélisation.

Si vous avez une souris à molette et qu’elle est configurée pour envoyer des événements de bouton Mouse4et Mouse5, Ayam agrandit la vue lorsque vous tournez la roue.

<PgUp> et <PgDown> permettent de parcourir les types de vues.2

<Ctrl+PgUp> et <Ctrl+PgDown> permettent de parcourir les modes de dessin.3

1 Depuis 1.7. 2 Depuis 1.15. 3 Depuis 1.16.

Page 52: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

2. Interface graphique utilisateur (GUI) de Ayam 52

Name Shortcut Icon

Pan View <v>

Zoom View <Z>

Rotate View <R>

Table 1: Interactive View Actions Overview

<Insert> et <Delete> permettent de parcourir les tailles de grille.<Shift-Insert> et <Shift-Delete> modifient la taille actuelle de la grille.1

À l’aide de l’entrée de menu "Zoom to Object" ou du raccourci correspondant <Ctrl+o> (<O>pour les vues internes), les paramètres de la caméra de vues peuvent être modifiés afin que le les objetssélectionnés soient affichés au centre de la fenêtre de visualisation. C’est pratique pour rechercher desobjets ou si l’utilisateur est simplement perdu dans l’espace.

L’action "Zoom to All", liée à la touche <BackSpace> est étroitement liée à cette dernière. Cetteaction ajuste les paramètres de la caméra afin que tous les objets de la scène soient visibles, quels que soientle niveau actuel et la sélection d’objets.

Notez que les deux, "zoom to object" et "zoom to all", ajustent les plans de détourage auxétendues des objets affectés et adaptent également la position de la source de lumière utilisée pour l’ombre.2

Cela facilite le travail avec des objets très grands ou très petits.

À l’aide de l’entrée de menu "Align to Object" ou du raccourci <Ctrl+a> (<L> pour les vuesinternes), les paramètres de la caméra de vues peuvent être modifiés afin que la vue soit alignée sur lesystème de coordonnées de l’objet actuellement sélectionné. C’est pratique pour la modélisation dans lessystèmes de coordonnées locaux (par exemple lors de l’édition des points de contrôle d’une courbe planedéfinie dans le plan XY qui a été rotationnée autour de l’axe Y). Voir aussi la section 3.24 L’édition dans lesespaces locaux (page 101).

Il est également possible de se déplacer dans la hiérarchie des scènes et de modifier la sélection directementdans les fenêtres de visualisation :3

• <Ctrl+4>, <Ctrl+6> (sur le tesselé numérique !) permettent de se déplacer vers le haut et versle bas dans la hiérarchie respectivement, en sélectionnant également le parent ou le premier enfant.

• <Ctrl+2>, <Ctrl+8> (sur le tesselé numérique !) sélectionnent l’objet suivant ou précédent.

• <Ctrl+Shift+2>, <Ctrl+Shift+8> (sur le tesselé numérique !) étendent la sélectionactuelle pour inclure l’objet suivant ou précédent.

1 Depuis 1.21. 2 Depuis 1.21. 3 Depuis 1.18.

Page 53: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

2. Interface graphique utilisateur (GUI) de Ayam 53

2.7 Modes de dessin

Cette section explique les modes de dessin disponibles dans Ayam.

Le mode de dessin "Draw" affiche une représentation filaire simple de la scène, voir l’image suivante :

Figure 13: Draw Mode "Draw"

Le mode de dessin "Shade" affiche la scène sous forme de surface ombrée éclairée par un seul phare, voiraussi l’image suivante :

Figure 14: Draw Mode "Shade"

Le mode de dessin "ShadeAndDraw" combine les images des modes "Shade" and "Draw", voir aussil’image suivante :

Figure 15: Draw Mode "ShadeAndDraw"

Page 54: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

2. Interface graphique utilisateur (GUI) de Ayam 54

Le mode de dessin "HiddenWire" fonctionne comme le mode d’ombre et de dessin, où la partie d’ombrede surface n’est utilisée que pour supprimer les bits cachés. De plus, les contours de la silhouette sontdétectés et dessinés. Pour de meilleurs résultats, utilisez-le avec l’anti-aliasing.

La détection de silhouette recalcule une deuxième fois les ombres dans une configuration d’éclairage mul-ticolore spéciale. Ensuite, les bords sont détectés dans le Z-buffer et le tampon de couleurs. La détectiondes bords dans le Z-buffer bénéficie de plans de détourage bien ajustés. Une bonne configuration du plan dedétourage peut être facilement réalisée par l’action "Zoom to Object" (raccourci <O>).Si l’anti-aliasing n’est pas activé, la carte de bord résultante est traitée par amincissement morphologiqueet suppression des pixels à proximité directe des pixels déjà dessinés, pour obtenir des lignes d’un pixel delarge.Enfin, la carte des bords est utilisée comme une texture largement transparente (sauf pour les bords) surun quadrilatère plein écran, qui est dessiné comme dernier objet. En cas d’anti-aliasing, le quadrilatèresera dessiné quatre fois. Voir l’image ci-dessous. La détection de silhouette est un processus lent et donc

Figure 16: Draw Mode "HiddenWire"

effectuée uniquement lorsqu’aucune action interactive n’est en cours. L’image suivante montre ce qui seradessiné lors des actions interactives, comparez-le également à l’image complète ci-dessus.

Figure 17: Draw Mode "HiddenWire" without Silhouettes

Page 55: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

2. Interface graphique utilisateur (GUI) de Ayam 55

2.8 La boîte à outils

Figure 18: La boîte à outils

La boîte à outils affiche certains boutons qui lancent des actions de modélisation interactives, des outils demodélisation ou créent des objets. La boîte à outils peut être ouverte et fermée en utilisant l’entrée du menuprincipal "Special/Toggle Toolbox" à moins qu’Ayam ne soit en mode GUI à fenêtre unique.

Notez que contrairement aux raccourcis clavier des fenêtres de vue, les boutons de la boîte à outils peuventbasculer vers les actions de modélisation pour toutes les vues ouvertes. C’est le cas si Ayam est en modeGUI à fenêtre unique et que l’AutoFocus est activé ou si Ayam est en mode GUI multi-fenêtres. Pour plusd’informations sur les actions, voir la section 3 Les actions de modélisation (page 74).

En outre, la portée de la modélisation peut être immédiatement basculée vers le point lors du démarraged’une action de transformation à l’aide du bouton droit de la souris.1 Voir aussi la section 3.2 Transformerdes objets ou des points sélectionnés (page 76).

Lors de la création d’objets, maintenez la touche <Ctrl> enfoncée tout en appuyant sur le bouton cor-respondant de la boîte à outils pour garder les objets sélectionnés. C’est particulièrement utile pour lesobjets qui déplaceraient les objets actuellement sélectionnés vers eux en tant qu’enfants (Niveau, Révolu-tion, Revêtement, etc.).

Plusieurs autres boutons d’outils modifient également leur comportement avec des touches de modification,consultez les info-bulles.

La fenêtre de la boîte à outils peut être configurée par l’utilisateur à l’aide du paramètre de préférencemasqué "toolBoxList" dans le fichier ayamrc. En utilisant ce paramètre, vous pouvez sélectionnercertains groupes de boutons et modifier l’ordre dans lequel ils apparaissent dans la fenêtre de la boîte àoutils. Voir la section 8.4.2 Définitions des préférences masquées (page 497) pour plus d’informations.

La boîte à outils peut être également étendue via des scripts, voir la section 6.4.4 Boutons et boite à outils(page 425) pour des exemples.

Vous pouvez également redimensionner la fenêtre pour passer de la disposition standard verticale à unedisposition horizontale, optimisant ainsi l’utilisation d’un espace précieux sur l’écran. Après le redimen-sionnement, la boîte à outils remettra en page les boutons, vous avertissant si l’espace est trop petit pourtous les boutons à afficher. Si la fenêtre est trop grande pour la mise en page souhaitée et que le paramètrede préférence caché "ToolBoxShrink" est activé, la boîte à outils rétrécira la fenêtre pour qu’ellecorresponde à l’espace occupé par les boutons. De plus, en utilisant le paramètre de préférence caché"ToolBoxTrans", la fenêtre de la boîte à outils peut être rendue transitoire. On obtiendra alors (enfonction du gestionnaire de fenêtres ou de sa configuration) une "décoration" différente, aucune décoration,aucune icone, ce sera toujours iconifié lorsque la fenêtre principale le sera aussi.

1 Depuis 1.26.

Page 56: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

2. Interface graphique utilisateur (GUI) de Ayam 56

2.9 Recherche d’objets

Figure 19: Object Search Dialog

La fonction de recherche d’objets permet de trouver des objets dans la hiérarchie de la scène selon de nom-breux critères différents, même définis par un script, et de les mettre en évidence dans l’arborescence oud’exécuter des actions quelconques sur eux.1 La recherche d’objets est contrôlée par une boîte de dia-logue, voir aussi l’image ci-dessus. Notez que la boîte de dialogue de recherche d’objet n’est pas ferméeimmédiatement après une opération de recherche, cela permet plusieurs opérations de recherche avec desparamètres éventuellement affinés. Les deux premières options "Expression" et "Action" permettentà l’utilisateur de spécifier les objets à rechercher et ce qu’il faut en faire, elles sont expliquées en détail dansles sections respectives ci-dessous. En utilisant le paramètre "Scope", la recherche peut être limitée àcertains ensembles d’objets. Par défaut, lorsque le paramètre scope est "All", tous les objets de la scènesont traités, même si le niveau actuel n’est pas le niveau racine et qu’aucun objet n’est sélectionné.Si le paramètre scope est "Selection" la recherche s’effectuera seulement sur les objets sélectionnés etleurs enfants.Si le paramètre scope est "Level" la recherche s’effectuera sur tous les objets du niveau actuel et bien sûrsur leurs enfants.Si le paramètre scope est "Collection" la recherche s’effectuera sur les seuls objets trouvés par larecherche précédenteVeuillez noter qu’aucune recherche n’est effectuée dans le presse-papiers. Plus d’options sont disponibleslorsque vous appuyez sur le bouton "Advanced Options". L’option "HighlightColor"

définit la couleur à utiliser par l’action "Highlight". Si les options "ClearHighlight" ou"ClearClipboard" sont activées, les surbrillances et le presse-papiers de l’objet sont respectivementeffacés avant le début d’une recherche. Enfin, "InvertMatch" annule la logique de recherche : si elle estactivée, la recherche trouve tous les objets pour lesquels l’expression de recherche donne un résultat négatif.

2.9.1 Les expressions de recherche

Lorsqu’une simple chaîne est utilisée comme expression de recherche, cette chaîne est comparée aux types,noms et matériaux des objets à rechercher sans tenir compte de la casse.2 La recherche permet l’utilisation de"*" (qui correspond à n’importe quelle séquence de caractères), "?" (qui correspond à un seul caractère) etdes plages de caractères spécifiées comme ceci "[A-z]". Pour rechercher l’un des caractères *?[] faitesle précéder d’un caractère antislash (barre oblique inverse).

1 Depuis 1.21. 2 Depuis 1.22.

Page 57: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

2. Interface graphique utilisateur (GUI) de Ayam 57

Si l’expression de recherche commence par "$", "(", ou "[" elle est considérée comme une expressionspéciale.

Les expressions de recherche spéciales suivantes sont définies :

Type

trouve les objets d’un certain type, par exemple

$type == "Sphere"

recherche toutes les sphères.

Name

trouve les objets d’un certain nom, par exemple

$name == "objname"

recherche tous les objets avec le nom objname.

Material Name

trouve les objets dotés d’un certain matériau, par exemple

$mat == "matname"

recherche tous les objets avec le matériau matname.

Property Value

trouve les objets avec une certaine valeur de propriété, par exemple

$SphereAttr(Radius) == 0.5

recherche toutes les sphères de rayon 0,5.

Master

recherche le maître de l’instance actuellement sélectionnée.

Instances

recherche toutes les instances du maître actuellement sélectionné, ou si l’objet actuellement sélec-tionné est une instance, rechercher toutes les instances avec le même maître.

Procedure Call

recherche les objets pour lesquels une procédure ou une commande renvoie 1, par exemple

[hasChild]

recherche tous les objets qui ont des enfants. Voir la section 6.2.3 Interroger les objets (page 361)pour une liste des commandes disponibles.

Des expressions logiques complexes peuvent également être créées, comme par exemple

($type == "Sphere") && ($mat == "wood")

Page 58: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

2. Interface graphique utilisateur (GUI) de Ayam 58

qui cherche tous les objets sphères en bois. En raison de la façon dont les expressions sont évaluées,l’utilisation des accolades est impérative même pour les expressions un peu plus complexes qui utilisentl’opérateur de négation :

(![hasChild])

Notez également que toutes les comparaisons basées sur des chaînes, par exemple des types ou noms via"==" sont sensibles à la casse (majuscules et minuscules). Le menu des valeurs par défaut de l’entrée"Expression" est prédéfini avec des entrées significatives lorsque la boîte de dialogue de recherche estouverte. Ce qui apparaît exactement dans ce menu dépend du premier des objets sélectionnés. Par exemple,si l’objet sélectionné est un matériau, l’entrée de matériau contiendra le nom du matériau extrait de cet objetet sera l’une des premières entrées, de sorte que la recherche d’objets de ce matériau ne se fera qu’en deuxclics de souris. Si l’objet est une instance, les deux premières entrées de ce menu seront "Master" et"Instances".

2.9.2 Les actions de recherche

Lors d’une recherche, pour chaque objet correspondant à l’expression donnée, l’objet sera sélectionné etune action sera exécutée. Les actions spéciales suivantes sont définies :

Highlight

Tous les objets trouvés seront colorés dans l’arborescence des objets, voir aussi l’image suivante.

Figure 20: Object Search Result of Search String "clay"

Les objets en surbrillance restent en surbrillance jusqu’à ce que l’arborescence soit complètementmise à jour (par exemple via le raccourci clavier <F5>) ou partiellement (par exemple après desopérations de glisser-déposer ou de presse-papiers d’objet).

Count

Les objets correspondant à l’expression de recherche seront comptés et le résultat sera envoyé à laconsole.

Page 59: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

2. Interface graphique utilisateur (GUI) de Ayam 59

Collect

Les noms des noeuds des objets trouvés seront collectés dans la liste Tcl"ObjectSearch(nodes)". Cette liste peut ensuite être utilisée pour le post-traitementpar des scripts sans les restrictions imposées par la commande "forAll".

Copy

Les objets trouvés seront ajoutés au presse-papiers.

Delete

Les noms de noeuds des objets trouvés seront collectés, puis la liste des objets sera traitée pour que lasuppression soit sûre, puis les objets seront supprimés de la scène.

En plus de ces actions spéciales, une commande / procédure, comme par exempleconvOb -inplace

ouaddTag NoExport ""

peut également être définie comme action. Cependant, comme la recherche d’objets est basée sur l’interfacescript de commande "forAll" certaines restrictions s’appliquent :

• L’action ne doit pas modifier la hiérarchie de la scène, c’est-à-dire qu’aucun objet ne doit être sup-primé, coupé ou créé dans l’appel de procédure de la commande / . Il est toutefois permis de modifierles objets eux-mêmes, voire de les convertir sur place.

• Le script n’a pas accès aux variables globales, sauf si des mesures spéciales sont prises (voir la section6.2.21 Appliquer des commandes à un certain nombre d’objets (page 406)).

Voir aussi la section 6.2 Procédures and Commandes (page 342) pour une liste des commandes disponibles.

Si l’action de recherche est vide, les objets seront simplement recherchés et un nombre de correspondancessera signalé.1 L’action spéciale "Highlight" collecte également les noms de noeuds trouvés dans la listeTcl globale "ObjectSearch(nodes)".

1 Depuis 1.26.

Page 60: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

2. Interface graphique utilisateur (GUI) de Ayam 60

2.10 Les préférences

Figure 21: Preferences Dialog

La boîte de dialogue des préférences peut être ouverte en utilisant l’entrée du menu principal"Edit/Preferences" ou le raccourci <Ctrl+p>.

Utilisez

• "Ok" pour fermer l’éditeur de préférences et appliquer toutes les modifications,

• "Apply" pour appliquer les modifications, mais laissez l’éditeur ouvert,

• "Revert" pour tout réinitialiser à l’état d’avant l’ouverture de l’éditeur de préférences1 (cene sont pas les paramètres d’usine par défaut, pour revenir aux paramètres d’usine, redémarrezAyam avec l’option de ligne de commande "-failsafe" ou utilisez l’entrée du menu principal"Special/Reset Preferences"),

• "Cancel" pour fermer la boîte de dialogue sans appliquer les modifications. Toutes les modifica-tions effectuées après la dernière pression sur "Apply" seront perdues.

Notez que lorsque l’éditeur de préférences est ouvert, la mise au point automatique est temporairementdésactivée et les modifications apportées au paramètre de préférence "AutoFocus" ne seront prises encompte qu’après la fermeture de l’éditeur.

Les préférences sont divisées en cinq sections comme suit.

1 Depuis 1.27.

Page 61: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

2. Interface graphique utilisateur (GUI) de Ayam 61

2.10.1 Les préférences principales

La section "Main" contient les paramètres de préférence liés à la configuration de l’application les plusimportants.

Notez que les paramètres inutilisés ne seront pas affichés, par exemple sur la plate-forme Win32, leparamètre "TwmCompat" sera masqué.1

• "Shaders" contient un certain nombre de chemins (séparés par un signe deux-points ":" sousUnix et par un point-virgule ";" sous Win32) où Ayam recherche les ombres compilés (par exempleles fichiers avec l’extension ".slc" qui ont été compilés avec slc de BMRT). En utilisant le bou-ton "Add", les chemins peuvent être ajoutés via une boîte de dialogue de sélection de répertoire.Après avoir modifié ce paramètre (également après "Revert" !), utilisez le bouton "Scan forShaders!" Ci-dessous.

Notez que la variable d’environnement SHADERS sera adaptée pour correspondre au contenu de ceparamètre de préférence, de sorte que les moteurs de rendu démarrés par Ayam voient exactementle même ensemble d’ombres qu’Ayam. Cependant, cela n’affecte bien sûr pas les moteurs de rendudémarrés en dehors du contexte Ayam, c’est-à-dire lors du rendu des fichiers RIB exportés à partird’un shell.

Depuis la version Ayam 1.22, les chemins d’ombres supportent la globalisation, c’est-à-dire qu’il estpossible de spécifier

"/usr/share/aqsis/shaders/*/"

pour inclure

"/usr/share/aqsis/shaders/surface/""/usr/share/aqsis/shaders/displacement/""/usr/share/aqsis/shaders/volume/""/usr/share/aqsis/shaders/light/"

etc. avec une seule entrée. Des styles de globalisation plus complexes, utilisant par exemple le pointd’interrogation, sont également pris en charge.

• "Scan for Shaders!" lance une reconstruction de la base de données interne des ombres.Toutes les ombres des répertoires spécifiés par le paramètre "Shaders" seront analysés et entrésdans cette base de données. Surveillez la console pour les messages d’erreur qui peuvent apparaîtrelors de l’analyse. Voir aussi les sections 4.10.4 Shader Parsing (page 250) et 8.7 Plugins d’analysedes ombres (shaders) (page 502) pour plus d’informations sur l’analyse des ombres.

La sous-section suivante contient les paramètres relatifs à l’interface graphique utilisateur (GUI).

• "Locale", définit une langue pour les bulles d’aide, le menu des valeurs par défaut affiche tous lesparamètres régionaux actuellement disponibles.

La valeur n’aura aucun effet jusqu’à ce qu’Ayam ne soit redémarré !

• "SingleWindow" bascule entre, si Ayam doit créer une seule fenêtre principale avec des vuesinternes et une boîte à outils ou utiliser l’ancienne interface graphique de style fenêtres flottantes. Lenouveau mode GUI à fenêtre unique est activé par défaut.

• "AutoResize" bascule, si la fenêtre principale doit être redimensionnée horizontalement en fonc-tion de la propriété GUI chaque fois qu’une nouvelle GUI est affichée.

Cette option n’est pas disponible en mode GUI à fenêtre unique.

1 Depuis 1.14.

Page 62: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

2. Interface graphique utilisateur (GUI) de Ayam 62

• "AutoFocus" contrôle si Ayam doit automatiquement déplacer le focus vers une vue ou la fenêtreprincipale, lorsque le pointeur de la souris y entre. Cependant, en fonction du système d’exploitation,du gestionnaire de fenêtres ou de leurs paramètres, cela ne peut fonctionner correctement quelorsqu’une fenêtre de Ayam a déjà le focus. Sur certains systèmes d’exploitation ou gestionnairesde fenêtres, la mise au point automatique peut ne pas fonctionner du tout. De plus, notez que déplacerle focus vers une fenêtre de niveau supérieur peut également la relancer.

En mode GUI à fenêtre unique, la mise au point automatique gère en outre le focus d’entrée des vuesinternes, de l’arborescence, de l’interface graphique des propriétés et de la console.

Notez que lorsque l’éditeur de préférences est ouvert, la mise au point automatique est toujours tempo-rairement désactivée et les modifications apportées au paramètre "AutoFocus" ne seront appliquéesqu’après la fermeture de l’éditeur de préférences.

• "TwmCompat" précise comment Ayam indique au gestionnaire de fenêtres les nouvelles géométriesdes fenêtres. Cette option doit être activée si Ayam ne parvient pas à se souvenir correctement de lagéométrie de la fenêtre principale entre deux invocations ou si la fenêtre principale saute vers le baslorsque les propriétés sont sélectionnées.

Cette option n’est pas disponible sur les plateformes Win32 et Mac OS X Aqua.

• "AutoSavePrefs", si c’est activé, Ayam écrira les paramètres de préférences dans le fichierayamrc lorsque le programme se fermera. Voir aussi la section 8.4 Le fichier Ayamrc (page 490).

• "BakOnReplace", contrôle si Ayam fera une copie de sauvegarde de chaque fichier de scène chargévia l’entrée du menu principal "File/Open" ou via la liste la plus récemment utilisée. Le fichierde sauvegarde sera placé juste à côté du fichier chargé et recevra une extension de nom de fichiersupplémentaire en fonction du paramètre de préférence caché "BackupExt".

• "AddExtensions", cette option peut être utilisée pour permettre à Ayam d’ajouter automatique-ment des extensions de nom de fichier aux fichiers enregistrés (s’ils n’ont pas déjà une extensionappropriée).

• "EnvFile" spécifie le fichier de scène de l’environnement de travail. Ce fichier contient générale-ment des objets de vue pour créer un environnement de travail standard à 2, 3 ou 4 vues et est automa-tiquement chargé à chaque démarrage de Ayam (sauf si l’option de préférence cachée "LoadEnv"est désactivée) et à chaque effacement de la scène en utilisant "File/New" (sauf si l’option depréférence cachée "NewLoadsEnv" est désactivée). Voir aussi la section 8.4.2 Définitions despréférences masquées (page 495).

• "Scripts" est une liste de fichiers de script Tcl qui seront exécutés au démarrage. Les scripts nedoivent pas être spécifiés avec le chemin complet et le nom de fichier.1 De plus, les répertoires descripts et de plugins (comme spécifié à l’aide de l’option "Plugins" ci-dessous) sont automatique-ment recherchés et l’extension de nom de fichier ".tcl" est automatiquement ajoutée, de sorte qu’unparamètre "colfocus;loadayslx" chargerait le script "colfocus.tcl" depuis le répertoirescripts et le plugin d’analyse d’ombres ayslx (via le script "loadayslx.tcl") depuis le répertoireplugins.Si des chemins relatifs sont utilisés, ils sont considérés comme relatifs au répertoire actuel de Ayamau démarrage de l’application (qui est généralement le répertoire où se trouve l’exécutable Ayam).Les entrées multiples doivent être séparées par des deux points (":") sous Unix et par un point-virgule (";") sous Win32.En cas de doute sur la syntaxe correcte, utilisez simplement le bouton "Add".

Voir la section 6.5 Scripts d’aide distribués (page 427) pour la documentation sur les scripts distribuésavec Ayam.

1 Depuis 1.16.

Page 63: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

2. Interface graphique utilisateur (GUI) de Ayam 63

• "Plugins" est une liste de répertoires contenant des objets personnalisés ou des plugins. Cesrépertoires seront par exemple recherchés pour des objets personnalisés lorsque des types d’objetsinconnus sont rencontrés lors de la lecture des fichiers de scène Ayam. Si un objet personnalisécorrespondant est trouvé, il sera automatiquement chargé dans Ayam, de sorte que le chargement dela scène puisse se poursuivre sans erreur. Si des chemins relatifs sont utilisés, ils sont considéréscomme relatifs au répertoire où se trouve l’exécutable Ayam.Ainsi, la valeur par défaut "plugins" conduit Ayam à rechercher les plugins dans le répertoire "plugins"situé dans le répertoire, où réside l’exécutable Ayam :

.../ayam/bin/Ayam.exe

.../ayam/bin/plugins/

.../ayam/bin/plugins/ayslx.dll

Les entrées multiples doivent être séparées par des deux points (":") sous Unix et par un point-virgule (";") sous Win32.En cas de doute sur la syntaxe correcte, utilisez simplement le bouton "Add".

Voir la section 8.6 Aperçu des plugins (page 501) pour plus d’informations sur les plugins de Ayam.

• "Docs" est une URL qui pointe vers la documentation au format HTML.

• "TmpDir" est le répertoire dans lequel les fichiers RIB temporaires sont créés, par exemple lors durendu directement à partir des fenêtres de visualisation.

Les paramètres de préférence "ListTypes", "MarkHidden", "LoadEnv", et "NewLoadsEnv" sontdes paramètres de préférence masqués depuis Ayam 1.14, voir la section 8.4.2 Définitions des préférencesmasquées (page 494).

Page 64: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

2. Interface graphique utilisateur (GUI) de Ayam 64

2.10.2 Préférences de modélisation

La section suivante des préférences, "Modelling", contient les paramètres relatifs à la modélisation :

• "PickEpsilon" est utilisé par les actions d’édition de point unique (voir la section 3.12 Éditer desPoints (page 88)) pour déterminer quel point d’un objet a été sélectionné.

Un "PickEpsilon" plus petit signifie un prélèvement plus précis. La valeur de "PickEpsilon"doit être positif et est exprimé en termes de coordonnées de l’objet, cependant, le facteur de zoom dela vue modifie également la valeur effective de "PickEpsilon" de telle sorte que pour les vuesagrandies, une valeur plus petite sera utilisée (et vice versa) .

Dans les anciennes versions de Ayam (antérieures à 1.8), une valeur de 0.0 était autorisée par défaut.Ce n’est plus le cas, la nouvelle valeur par défaut est 0,05.

• "HandleSize" contrôle la taille du dessin des points modifiables. Notez qu’il n’y a pas de vérifi-cation, si la valeur de taille est prise en charge par l’implémentation OpenGL utilisée.

• "LazyNotify" détermine si la notification doit se produire sur tous les mouvements de la souris oujuste au relâchement du bouton de la souris, pour les actions de modélisation interactive. Cette optionpeut également être basculée facilement à l’aide du raccourci clavier <F6>.

La notification est le mécanisme utilisé pour informer les objets qui reposent sur certains objets en-fants (par exemple l’objet outil Révolution) des modifications de leurs objets enfants, afin que leparent puisse s’adapter automatiquement aux objets enfants (voir aussi la section 8.2 Le concept demodélisation outils-objets (page 485)).

• "CompleteNotify" détermine le moment où la notification de tous les objets en fonction desréférences des objets modifiés a lieu :

– "Never", pour le contrôle manuel de la notification complète (la notification manuellecomplète peut être effectuée en utilisant l’entrée du menu principal "Tools/ForceNotification" ou en utilisant le raccourci clavier <F5>);

– "Always", une notification complète est effectuée chaque fois que la notification normale esteffectuée ;

– "Lazy", la notification complète ne s’exécute qu’après la fin d’une action de modélisation(lorsque le bouton de la souris est relâché).

Notez que la notification complète met également à jour les objets qui dépendent implicitement desobjets mis à jour via des instances.

• "EditSnaps" détermine si les points doivent être accrochés à la grille lorsqu’une grille est définieet utilisée pour les actions de modélisation de point unique.

• "Snap3D" détermine si les points qui sont accrochés aux coordonnées de la grille (dans les actionsd’édition de point unique et lorsque les grilles sont actives) doivent être influencés dans les troisdimensions ou uniquement dans les deux dimensions déterminées par le type de vue.

• "FlashPoints" contrôle le clignotement des points modifiables dans les actions de modélisationde point unique lorsqu’ils seraient modifiés par une action de clic et de glissement. Notez qu’unemodification de cette option de préférence ne prend effet que pour le prochain appel de l’action demodélisation d’édition de point unique.

Notez également qu’il existe une option de préférence similaire, bien que masquée, qui contrôle leclignotement des objets sélectionnés ("FlashObjects"), voir aussi la section 8.4.2 Définitionsdes préférences masquées (page 493).

Page 65: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

2. Interface graphique utilisateur (GUI) de Ayam 65

• "RationalPoints" détermine le style d’affichage des points rationnels.1

Dans le style euclidien, les poids ne sont pas multipliés, alors que dans le style homogène , les poidssont multipliés avant l’affichage. Ce paramètre de préférence influence également l’affichage de lacoque de contrôle des courbes et des surfaces NURBS et certaines actions de modélisation telles quela définition de la marque à partir de points. Voir également l’image suivante, montrant deux cerclesNURBS standard à neuf points, où chaque deuxième point de contrôle a une valeur de poids de 0,75,avec leurs coques de contrôle de style euclidien et homogène.

Figure 22: Euclidean (left) vs.Homogeneous (right) Display of Rational Points

• "GlobalMark" bascule si chaque vue doit gérer sa propre marque (poignée ???) (désactivée) ou s’ildoit y avoir une seule marque globale (activée, par défaut 2). Notez que l’activation de ce paramètre depréférence ne mènera pas immédiatement à un ensemble de marques globales dans toutes les fenêtres,il faut plutôt définir une nouvelle marque qui deviendra alors globale. Voir aussi la section 3.5 Définirune marque (page 81) pour plus d’informations sur la marque.

• "CreateAtMark" contrôle si de nouveaux objets doivent être créés ou non à la position de repèreactuelle (par défaut : oui).3

• "DefaultAction" détermine l’action de modélisation qui sera active après une pression sur latouche <Esc> dans une fenêtre de visualisation.

• "PickCycle" échange la boîte de dialogue des candidats de sélection d’objet avec un mécanismede cycle :4 lorsque plusieurs candidats sont disponibles, le premier clic sélectionne le premier objet dela liste et chaque clic supplémentaire sur la même position sélectionne l’objet suivant dans la liste descandidats. Voir aussi la section 3.3 Sélection d’objets par choix (page 76) pour plus d’informationssur la sélection d’objets.

• "UndoLevels" détermine le nombre d’étapes de modélisation à enregistrer dans le tampond’annulation. Si "UndoLevels" est réglé sur 0, le système d’annulation sera complètement désac-tivé.5 Pour plus d’informations, consultez également la section 8.1 Le système d’annulation (undo)(page 485).

1 Depuis 1.22. 2 Depuis 1.21. 3 Depuis 1.21. 4 Depuis 1.23. 5 Depuis 1.21.

Page 66: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

2. Interface graphique utilisateur (GUI) de Ayam 66

2.10.3 Les préférences de dessin

Les préférences de la section "Drawing" vous permettent de spécifier la manière dont les objets sontdessinés :

• "Tolerance" contrôle la qualité d’affichage des courbes et des surfaces NURBS. Des paramètresde tolérance plus petits conduisent à une meilleure qualité mais également à un affichage plus lent.Les valeurs utiles vont de 1 à 100.Dans les modes de dessin / d’ombre GLU, cette valeur est directement utilisée comme valeur detolérance d’échantillonnage GLU.Les modes de dessin / d’ombre STESS dérivent un facteur de qualité / échantillonnage de ceparamètre, qui conduit à une qualité d’échantillonnage qui est à peu près équivalente au mode GLUcorrespondant pour une distance de visualisation standard.

En utilisant les raccourcis clavier <F2> et <F3>, la tolérance peut également être réglée facilement.

Ce paramètre n’a aucun effet pour les objets qui le remplacent à l’aide d’un paramètre de tolérancelocale différent de 0.

• "NPDisplayMode" définit le mode d’affichage des patchs NURBS. Soit la coque de contrôle(ou le polygone de contrôle) est dessinée ("ControlHull"), soit simplement les contours despolygones créés par la tessellation ("OutlinePoly"), ou simplement les contours du patch("OutlinePatch"). Ces derniers sont disponibles en variantes GLU et STESS.

Les variantes GLU pavent la surface en fonction de la transformation actuelle de la caméra. Le zoomsur un objet augmente la fréquence d’échantillonnage. Cette approche est lente, doit être effectuéepour chaque fenêtre de vue séparément, mais offre une qualité élevée lorsque cela est nécessaire.En outre, les surfaces en dehors du volume de visualisation actuel sont éliminées. En raison del’échantillonnage dynamique, le paramétrage NURBS ne peut pas être estimé facilement.STESS, D’autre part, est en train de paver de manière uniforme et, par conséquent, la paramétrisationNURBS peut être facilement déduite. La tessellation est effectué une seule fois, même s’il existeplusieurs vues, puis mise en cache. Par conséquent, le coût de démarrage et les besoins en mémoirede STESS sont plus élevés que ceux de GLU, mais le dessin répété est beaucoup plus rapide, mêmesi l’abattage dans STESS est actuellement effectué sur la base de triangles tesselés, pas de surfacesentières.Un autre aspect à considérer est que GLU fonctionne sur le type de données à virgule flottante"float" et impose une contrainte sérieuse sur les valeurs des noeuds : les noeuds qui diffèrenten moins de 10E-4 sont considérés comme égaux. En revanche, STESS fonctionne sur le type dedonnées à virgule flottante "double" et utilise un epsilon plus détendu de 10E-6.1

Enfin, l’application de l’instanciation n’accélère pas le dessin avec GLU, mais réduit les coûts de tes-sellation et de mémoire de STESS, car les instances utilisent la tessellation en cache des objets maîtresrespectifs.

Notez que le paramètre "NPDisplayMode" influence également l’affichage des NURBS ombrés: ControlHull ombre le polygone de contrôle 2, OutlinePoly (GLU) et OutlinePatch (GLU) utilisentGLU et , et OutlinePatch (STESS) ombre la tessellation STESS. La tessellation STESS ombré dessurfaces NURBS ajustées non planes est de mauvaise qualité.

Notez également que le paramètre "NPDisplayMode" n’a aucun effet pour les objets qui le rem-placent localement en utilisant un attribut "DisplayMode" différent de "Global".

Le basculement entre le dessin des coques et des contours peut également être fait facilement à l’aidedu raccourci clavier <F4>.

1 Ayam peut être recompilé avec un epsilon différent si cela est trop limitatif. 2 Depuis 1.22.

Page 67: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

2. Interface graphique utilisateur (GUI) de Ayam 67

• "NCDisplayMode" définit le mode d’affichage des courbes NURBS ; comme pour les surfaces,la coque de contrôle (polygone de contrôle) ou la courbe ou une combinaison des deux peuvent êtreaffichées.

Voir également la discussion de GLU / STESS ci-dessus.

Notez que ce paramètre n’a aucun effet pour les objets qui le remplacent localement à l’aide d’unattribut "DisplayMode" différent de "Global".

Le basculement entre le dessin des coques et des courbes peut également être fait facilement à l’aidedu raccourci clavier <F4>.

• "ToleranceA" est la tolérance d’échantillonnage GLU qui est utilisée pour l’affichage des courbesou des patchs NURBS dans toutes les actions interactives, c’est-à-dire lors du déplacement interactifd’objets ou de l’édition de points de contrôle.

Les valeurs négatives sont interprétées comme multiplicande de la manière suivante. Une valeurde -2 signifie : utiliser la valeur du paramètre"Tolerance" multipliée par 2, par exemple si la"Tolerance" est définie sur 40, une valeur de 80 sera utilisée dans les actions.1

La valeur par défaut 0.0 signifie aucun changement par rapport au paramètre "Tolerance" setting.

Contrairement au paramètre "Tolerance" ci-dessus, les objets ne peuvent pas remplacer ceparamètre localement.

• "NPDisplayModeA" contrôle le mode d’affichage des patchs NURBS pour toutes les actions in-teractives. La première valeur par défaut ("NPDisplayMode") signifie : aucun changement.

Contrairement au paramètre "NPDisplayMode" ci-dessus, les objets ne peuvent pas remplacer ceparamètre localement.

• "NCDisplayModeA" contrôle le mode d’affichage des courbes NURBS pour toutes les actionsinteractives. La première valeur par défaut ("NCDisplayMode") signifie : aucun changement.

Contrairement au paramètre "NCDisplayMode" ci-dessus, les objets ne peuvent pas remplacer ceparamètre localement.

• "UseMatColor" détermine si la représentation ombrée utilise la couleur définie par le matériaud’un objet pour le rendu. Si elle est désactivée, la couleur définie par l’option "Shade" (ci-dessous)sera utilisée à la place.

• "Background", "Object", "Selection", "Grid", "Tag", "Shade", et "Light"définissent les couleurs qui seront utilisées lors du dessin ou de l’ombre des primitives respectives.

1 Depuis 1.22.

Page 68: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

2. Interface graphique utilisateur (GUI) de Ayam 68

2.10.4 Préférences d’exportation RIB

La section de préférences "RIB-Export" contient des paramètres qui affectent la façon dont les RIB sontcréés.

• "RIBFile" permet de définir le fichier dans lequel Ayam exporte les Bytestreams (RIB) del’interface RenderMan. Notez que certains noms de fichiers ont une signification particulière :

Si "RIBFile" est réglé sur "Scene" (c’est la valeur par défaut), le nom du fichier RIB sera dérivédu nom de la scène actuellement chargée avec la dernière extension remplacée par ".rib". Si"RIBFile" est réglé sur "Scenefile", le chemin principal sera en plus supprimé du nom de lascène. Utilisez "Scenefile", pour le rendu avec des ombres. De cette façon, la scène utilisera deschemins relatifs pour charger les ombres et les RIB peuvent être déplacés plus facilement.

"Ask" est un autre paramètre spécial, qui permet de sélectionner un nom de fichier différent chaquefois que la scène est exportée. Une boîte de dialogue de sélection de fichier apparaîtra après la sélec-tion de la vue à exporter. Le même effet peut être obtenu en laissant "RIBFile" totalement vide.

Si "RIBFile" est défini sur "rendrib", libribout.a ne crée pas du tout de fichier RIB, maisredirige immédiatement le flux d’octets résultant vers rendrib (le rendu BMRT) pour le rendu. Il enva de même pour "rgl". De plus, les noms de fichiers qui commencent par un symbole "|" ferontdémarrer le programme après le symbole par libribout et le RIB écrit sera redirigé. Cela fonctionnepar exemple avec Photoréalistic RenderMan, essayez-le avec "|render". Dans ce dernier cas derendu direct, vous voudrez probablement configurer le RIB pour qu’il rende la main à l’affichage (torender to the display ???) (il faut lire laissez le paramètre de préférence "Image" vide). Cependant,lorsque vous utilisez ces options de rendu direct, soyez averti que pendant le temps du rendu, Ayamsera gelé (il ne répondra pas aux clics de souris et ne mettra à jour aucune fenêtre), jusqu’à ce que lerendu soit terminé et que la fenêtre d’affichage du moteur de rendu soit fermée.

• "Image" spécifie le fichier image qui sera créé lors du rendu du fichier RIB exporté. Lorsque cetteoption est définie sur "RIB", le rendu créera des fichiers image nommés comme fichier RIB exporté(avec la dernière extension de fichier remplacée par ".tif"). Encore une fois, la définir sur "Ask"fera apparaître une boîte de dialogue à chaque fois que la scène est exportée vers RIB.

Notez que contrairement à l’option "RIBFile" laisser le champ totalement vide n’est pas égal àentrer "Ask" mais génère des fichiers RIB qui seront configurés pour être rendus à l’affichage.

• "ResInstances", si cette option est activée, tous les objets d’instance sont résolus (temporaire-ment) avant d’être écrits dans le fichier RIB.

• "CheckLights", si c’est activé, Ayam vérifiera la scène actuelle pour les lumières avantl’exportation RIB. Si aucune lumière ou aucune lumière réellement allumée ne se trouve dans lascène, un phare éloigné sera automatiquement ajouté à la scène pour l’exportation RIB.

• "DefaultMat" détermine un paramètre de matériau par défaut qui doit être écrit dans le niveausupérieur du RIB, afin qu’il soit appliqué à tous les objets qui ne sont pas connectés à un objet dematériau. De nombreux moteurs de rendu compatibles RenderMan ne rendront pas du tout les objets,si aucun matériau n’est défini. La valeur par défaut "matte", écrit juste un simple RiSurface"matte" (sans paramètres) dans le RIB. Le paramètre "default" défini un objet matériau nommé"default" et écrit ses ombres et attributs complets, s’il ne trouve pas un tel matériau, il revient à"matte". Le paramètre "none" n’écrit aucun paramètre de matériau par défaut.

• "RIStandard" détermine si Ayam doit omettre toutes les options et attributs d’interface Render-Man non standard lors de l’exportation RIB.

• "WriteIdent" détermine si Ayam doit écrire des RiAttributes spéciaux (RiAttribute"identifier" ["name"]) avec les noms des objets sur le RIB pour faciliter le débogage desfichiers RIB.

Page 69: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

2. Interface graphique utilisateur (GUI) de Ayam 69

• "ExcludeHidden" empêche les objets cachés d’être exportés vers des fichiers RIB.

La sous-section suivante des paramètres de préférence concerne les paramètres de rendu directementà partir de Ayam.

• "SetRenderer" permet de sélectionner les préférences de rendu à éditer (Preview, QuickPreview,File, ShadowMaps, or All). En fonction de la sélection, différents ensembles d’options seront affichésci-dessous en fonction du moteur de rendu respectif.

• "RenderMode" permet de basculer entre différentes méthodes pour forcer le rendu de l’aperçu às’afficher à l’écran :

– "CommandLineArg" via un argument de ligne de commande, par exemple -d pour le rendudepuis BMRT,

– "RiDisplay" via une instruction RiDisplay dans le RIB exporté, nécessaire par exemple pourPRMan et RDC,

– "Viewport" via un pilote d’affichage RenderMan comme spécifié ci-dessous.

Le rendu "Viewport" apparaîtra directement dans la fenêtre de visualisation Ayam.

• "Render" détermine la commande qui doit être exécutée lors du rendu de prévisualisation d’unevue en utilisant le menu Affichage "View/Render" ou le raccourci clavier <Ctrl+R>. L’espaceréservé %s indique le nom du fichier RIB.

• "RenderUI" active l’interface utilisateur du moteur de rendu d’aperçu (Rendu GUI), qui se com-pose d’une simple barre de progression, d’une étiquette qui affiche le temps de rendu estimé ouécoulé, d’un bouton à cocher pour contrôler la sonnerie lorsque le rendu est terminé et d’un boutond’annulation. Cette interface graphique s’affiche lorsqu’un moteur de rendu est appelé directement àpartir d’une fenêtre de visualisation en utilisant l’entrée de menu "Render" (ou le raccourci clavieréquivalent). Le bon fonctionnement de cette fonctionnalité dépend de l’existence de deux programmesexternes : "cat" et "kill" (ces programmes devraient être disponibles sur toutes les plates-formesUnix). Si vous n’avez pas ces programmes, n’activez pas l’option RenderUI.Sur la plate-forme Win32, un "cat.exe" fonctionnel est distribué avec Ayam et Ayam est config-uré pour utiliser une commande kill interne"w32kill".1 Voir aussi la section 8.4.2 Définitions despréférences masquées (page 494).

• "RenderPT" est une chaîne qui contient un modèle de sortie de progression utilisé par Ayampour déterminer le pourcentage actuel d’achèvement du rendu à afficher dans l’interface graphiquede rendu. Le symbole spécial "%d" indique la position du nombre en pourcentage dans la sor-tie du moteur de rendu. Pour rendrib depuis BMRT 2.6, il doit être défini sur "R90000 %d"et l’option spéciale de ligne de commande "-Progress" doit être utilisée pour la commande derendu (voir "Render" ci-dessus). Pour rendrib depuis BMRT 2.5, il doit être défini sur "Donecomputing %d" et aucune option spéciale ne doit être donnée au moteur de rendu.Si la sortie du moteur de rendu contient des chaînes de variables avant le numéro de progression ou sile moteur de rendu utilise des caractères de contrôle de terminal, une deuxième variante d’analyse dela sortie à l’aide d’expressions régulières est disponible.2 Dans ce cas, le modèle de progression doitêtre une commande regexp complète pour Tcl qui analyse la sortie du moteur de rendu avec une ex-pression régulière et place le numéro de progression extrait dans une variable nommée "percent".La sortie à analyser sera insérée dans le modèle de commande regexp à la place de "string". Lavariable de sortie fictive est nécessaire, car l’expression rationnelle Tcl renvoie toujours la ligne cor-respondante complète dans la première variable.Voici un exemple qui fonctionne avec Pixie-1.2.1, qui génère des chaînes comme

fish.rib (222): - 10.00 percent

1 Depuis 1.4. 2 Depuis 1.6.

Page 70: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

2. Interface graphique utilisateur (GUI) de Ayam 70

(notez le composant variable contenant le nom du RIB):

regexp -- {^.* - (\[0-9\]+)} string dummy percent

Cette commande regexp consomme le composant variable, puis recherche le tiret unique juste devantle pourcentage.La sortie Gelato ressemble à ceci

Elapsed: 10.1440s Done: 64% |******************** |

et utilise des caractères de contrôle de terminal pour rendre la barre de progression en ASCII; celaappelle une approche différente qui analyse à l’envers (d’où l’utilisation de $ à la fin) :

regexp -- {(\[0-9\]+)%(\[ |*\]+)$} string dummy percent

Cette commande regexp consomme tous les symboles "|", astérisques et espaces backwards, en com-mençant par le dernier caractère et en incluant le signe "%", qui vient juste derrière le nombre depourcentage recherché.

• "DisplayDriver" définit le pilote d’affichage RenderMan à utiliser pour le mode de rendu"Viewport" pour le moment, le seul paramètre sensé est "fifodspy".

• "QRenderMode" voir "RenderMode" ci-dessus.

• "QRender" détermine la commande qui doit être exécutée lors du rendu rapide d’une vue à l’aide dumenu d’affichage "View/Quick Render" ou du raccourci clavier <Ctrl+r>. L’espace réservé%s indique le nom du fichier RIB.

• "QRenderUI", active l’interface graphique de rendu pour un rendu rapide, voir la discussion de"RenderUI" ci-dessous.

• "QRenderPT", modèle de progression pour un rendu rapide, voir la discussion sur "RenderPT"ci-dessous.

• "QDisplayDriver" définit le pilote d’affichage RenderMan à utiliser pour le mode de rendu"Viewport" pour le moment, le seul paramètre sensé est "fifodspy".

• "FRenderMode" voir "RenderMode" ci-dessus.

• "FRender", commande de rendu à utiliser pour le rendu direct vers des fichiers image (via l’entréedu menu d’affichage "Render to File"). L’espace réservé %s indique le nom du fichier RIB.

• "FRenderUI", active l’interface graphique de rendu pour le rendu direct vers des fichiers image,voir la discussion de "RenderUI" ci-dessus.

• "FRenderPT", modèle de progression pour le rendu direct vers des fichiers image, voir la discussionsur "RenderPT" ci-dessus.

• "FDisplay" définit l’affichage RenderMan à utiliser pour le rendu dans un fichier image, la syntaxede cette chaîne est équivalente à la chaîne de valeur d’une balise RiDisplay voir aussi la section 4.11.6Balise RiDisplay (page 262).

Si cette chaîne commence par "image", la partie image sera remplacée par le nom du fichier imagequi serait utilisé pour l’exportation RIB normale.

• "SMRender", commande de rendu à utiliser pour le rendu des shadow maps (par exemple l’entréedu menu view "View/Create All ShadowMaps"), voir aussi la section 4.2.4 Utilisation desombrages (ShadowMaps) (page 118).

L’espace réservé %s indique le nom du fichier RIB.

Page 71: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

2. Interface graphique utilisateur (GUI) de Ayam 71

• "SMRenderUI", active l’interface graphique de rendu pour le rendu des ombres, voir la discussionsur "RenderUI" ci-dessus.

• "SMRenderPT", modèle de progression pour le rendu des shadow maps, voir discussion sur"RenderPT" ci-dessus.

• "AutoCloseUI" détermine si la fenêtre de dialogue de l’interface graphique de rendu doit êtrefermée automatiquement lorsque le moteur de rendu signale que le rendu est terminé.

La sous-section suivante des paramètres de préférence concerne les ombres.

• "ShadowMaps" détermine si les ombres doivent être créés / utilisés :– "Never" Les ombres ne seront pas créés / utilisés et les ombres seront créées par le moteur de

rendu à l’aide d’algorithmes tels que le lancer de rayons.

– "Automatic" Les ombres seront créés et utilisés à chaque rendu du RIB exporté.

– "Manual", les ombres seront utilisés à chaque rendu du RIB exporté. Les ombres ne serontcréés / rendus qu’à la demande de l’utilisateur uniquement (par exemple en utilisant l’entrée dumenu d’affichage : "View/Create All ShadowMaps").

Le mode "Manual" doit être utilisé lors du rendu directement à partir des fenêtres de visualisationavec le mode de rendu"CommandLineArg". Notez qu’il ne suffit pas d’activer cette option pourqu’une scène quelconque soit rendue en utilisant des ombres, les sources de lumière individuelles quiutiliseront des ombres doivent également être paramétrées pour cela, voir la section 4.2.4 Utilisationdes ombrages (ShadowMaps) (page 118).

• "SMFileFormat", désigne le format de fichier des ombres, utilisez "zfile" pour RenderMan et"shadow" pour Gelato.

• "SMFileType", type d’ombres à créer, les types actuellement disponibles sont "z" – texturesd’ombre normales (pour les moteurs de rendu RenderMan et Gelato), "avgz" – ombres Woo (seule-ment pour Gelato !), and "volz" – ombres volumiques (seulement pour Gelato !).

• "SMChangeShaders", bascule, si Ayam doit automatiquement ajouter une ombre aux nomsd’ombre pour les lumières qui utilisent des ombres lors de l’exportation RIB. Ne pas changer lesnoms des ombres est nécessaire pour Gelato.

• "PPRender" est le nom du moteur de rendu à utiliser pour la fonction de prévisualisation perma-nente (voir aussi la section 2.5 Menu d’une vue (page 45)).

Ce paramètre n’est disponible que si l’option de compilation AYENABLEPPREV a été définie. Cetteoption n’est pas active pour les versions officielles de Ayam.

Notez que de nombreuses préférences liées au rendu peuvent être définies à la fois à l’aide de l’outil de rendude sélection via le menu principal "Special/Select Renderer" (voir aussi la section 2.2 Menu spé-cial (page 40)). En fait, utiliser d’abord "Special/Select Renderer", puis affiner la configurationdu moteur de rendu à l’aide de l’éditeur de préférences est la manière suggérée de basculer Ayam vers uncertain moteur de rendu RenderMan.

Page 72: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

2. Interface graphique utilisateur (GUI) de Ayam 72

2.10.5 Préférences diverses

La section "Misc" des préférences contient les si redoutés paramètres divers. La première sous-sectiontraite de la gestion des messages d’erreur :• "RedirectTcl" contrôle si les messages d’erreur provenant de Tcl/Tk doivent être redirigés vers la

console, plutôt que d’être traités par la boîte de dialogue de traitement des erreurs parfois ennuyeusede Tcls. Cependant, cette boîte de dialogue avec le traceur de pile intégré peut aussi devenir trèspratique, lors de l’écriture et du débogage de scripts Tcl.

• "Logging" détermine si les messages d’erreur doivent être écrits dans le fichier spécifié par l’option"LogFile". Si cela est activé, vous devrez effacer le journal manuellement de temps en temps, carAyam ajoutera toujours à "LogFile".

• "LogFile" ; voir ci-dessus.

• "ErrorLevel", cette option contrôle combien de messages doivent être écrits sur la console Ayam.Les valeurs disponibles sont:"Silence" pas de sortie,"Errors" uniquement les messages d’erreur,"Warnings" uniquement les messages d’erreur et d’avertissement, et enfin"All" (par défaut) tous les messages, même informatifs, doivent être écrits sur la console.

La dernière sous-section contient diverses préférences liées à l’interface utilisateur :• "SaveAddsMRU" ; si cette option est activée, l’enregistrement dans un fichier ajoutera ce fichier à

la liste des fichiers les plus récemment utilisés dans le menu principal pour un accès rapide.

• "ExportSetsCD" : contrôle si le répertoire actuel de Ayam doit être défini ou non par une opérationd’exportation.

• "ImportSetsCD" : contrôle si le répertoire actuel de Ayam doit être défini ou non par une opérationd’importation.

• "TclPrecision" ; c’est la précision avec laquelle Tcl gère les conversions de nombres à virguleflottante en chaînes de caractères. Vous pouvez réduire cette valeur à environ 5 si certains nombresdans les champs de saisie sont représentés de manière exacte, mais aussi trop longue et difficile à lire,comme 0.4999999 au lieu de 0.5. Notez qu’une certaine précision du modèle est perdue en faisantcela. La valeur par défaut utilisée par Tcl est 12 et n’entraîne aucune perte de précision. La valeurpar défaut utilisée par Ayam est de 6 et devrait permettre d’obtenir un bon équilibre entre précision etlisibilité.

Les options de préférences cachées correspondants sont "NormalizeDigits","NormalizePoints", et "NormalizeTrafos", voir aussi la section 8.4.2 Définitionsdes préférences masquées (page 495).

• "SaveDialogGeom" contrôle si la géométrie des différentes fenêtres de dialogue doit être mé-morisée par Ayam, les paramètres disponibles sont"Never" : les fenêtres de dialogue sont toujours ouvertes en taille standard, centrées sur l’écran;"WhileRunning" : la géométrie de la fenêtre sera mémorisée tant qu’Ayam est en coursd’exécution;"Always" : la géométrie de la fenêtre sera stockée dans les préférences enregistrées, survivant ainsiégalement à un redémarrage de Ayam.

Notez que la hauteur de la fenêtre de dialogue des préférences sera toujours adaptée à la section despréférences actuellement ouverte, quelle que soit la façon dont "SaveDialogGeom" est réglé.

Pour plus d’informations sur la sauvegarde de la géométrie, voir aussi les sections 4.11.9 Balise Save-MainGeom (page 263) et 4.11.10 Balise SavePaneLayout (page 263).

Page 73: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

2. Interface graphique utilisateur (GUI) de Ayam 73

• "SMethod" ; est la méthode d’échantillonnage utilisée par l’installation de tessellation NURBS quiconvertit les surfaces NURBS en objets PolyMesh. Six méthodes d’échantillonnage sont disponibles:

1. "ParametricError" garantit que la distance entre la surface tesselée et la surface d’originen’est pas supérieure à la valeur spécifiée par "SParamU".

2. La méthode d’échantillonnage "PathLength" garantit qu’aucun bord d’un polygone générépar la tessellation n’est pas plus long que la valeur spécifiée par "SParamU" et la méthode detessellation

3. "DomainDistance" (la valeur par défaut dans Ayam jusqu’à la version 1.22) simplementpaver la surface NURBS en morceaux de taille égale en ce qui concerne l’espace paramétrique; "SParamU" et "SParamV" contrôler le nombre de points d’échantillonnage dans la direc-tion U et V respectivement par unité de longueur dans l’espace paramétrique. Toutefois, celaconduit à des nombres d’échantillons différents pour des vecteurs de noeuds de longueur totaledifférente.

4. "NormalizedDomainDistance" garantit que la tessellation crée le même nombre depoints d’échantillonnage (comme indiqué via "SParamU" et "SParamV") pour les vecteursde noeuds de n’importe quelle longueur totale dans l’espace des paramètres1 et

5. "AdaptiveDomainDistance" ajoute en outre des points d’échantillonnage en fonctiondu nombre de points de contrôle (largeur ou hauteur du patch) pour permettre une meilleureadaptation aux patchs complexes.2

6. "AdaptiveKnotDistance", enfin, normalise le nombre de points d’échantillonnage parrapport au nombre d’intervalles de noeuds et à la longueur totale du vecteur de noeud.3

La méthode d’échantillonnage "AdaptiveKnotDistance" est la méthode par défaut depuisAyam 1.23.

Notez que la méthode d’échantillonnage contrôlée par cette option de préférence n’est pas utiliséepour l’affichage NURBS dans Ayam. Voir aussi 2.10.3 Les préférences de dessin (page 66).

• "SParamU" ; est un paramètre pour la méthode d’échantillonnage ci-dessus.La valeur par défaut de la méthode d’échantillonnage "AdaptiveKnotDistance" est 3. Desvaleurs plus élevées entraînent une meilleure qualité et un plus grand nombre de polygones tesselés.La valeur par défaut de la méthode d’échantillonnage "DomainDistance" est 8. Des valeurs plusélevées entraînent une meilleure qualité et un plus grand nombre de polygones tesselés.La valeur par défaut pour la méthode d’échantillonnage "PathLength" est de 1.5. Des valeurs pluspetites conduisent à une meilleure qualité et à un plus grand nombre de polygones tesselés.La valeur par défaut de la méthode d’échantillonnage "ParametricError" est de 0.25. Desvaleurs plus petites conduisent à une meilleure qualité et à un plus grand nombre de polygones tes-selés.

Notez que "SParamU" est exprimé en unités d’espace objet pour les méthodes d’échantillonnage"PathLength" et "ParametricError".

• "SParamV" n’est disponible que pour les méthodes d’échantillonnage "DomainDistance","NormalizedDomainDistance", "AdaptiveDomainDistance", et"AdaptiveKnotDistance".La valeur par défaut est égale à la valeur respective du paramètre "SParamU" ci-dessus.

Voir aussi la section 5.6.5 Outil de tessellation (triangularisation) (page 331) pour des exemples de tessella-tions.

1 Depuis 1.9. 2 Depuis 1.9. 3 Depuis 1.23.

Page 74: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

3. Les actions de modélisation 74

3 Les actions de modélisation

Cette section contient la documentation des actions de modélisation interactive disponibles dans Ayam.

Avant d’invoquer une action de modélisation, un ou plusieurs objets doivent être sélectionnés en utilisantla hiérarchie des objets dans la fenêtre principale, l’action de sélection ou la sélection en manipulant lesraccourcis clavier.

Chaque action peut être lancée en appuyant sur une touche (un raccourci) lorsque le focus clavier estdans une fenêtre de visualisation ou en cliquant sur le bouton associé dans la fenêtre de la boîte à out-ils. L’utilisation d’un raccourci clavier permet de démarrer cette action uniquement dans la vue en cours,les autres vues ne sont pas affectées. En mode GUI multi-fenêtres, le lancement d’une action à partir dela fenêtre de la boîte à outils entraîne le lancement simultané de l’action dans toutes les fenêtres de vueactuellement ouvertes. En mode interface graphique à fenêtre unique, l’action sera lancée dans la vue in-terne actuelle uniquement (sauf si "AutoFocus" est activé).

Il est parfaitement possible de commencer et de travailler avec plusieurs actions différentes en même tempsdans différentes vues : on peut par exemple avoir une vue où les objets sont déplacés, une deuxième oùles objets sont tournés et une troisième où les objets sont choisis. La disposition, le style de dessin et lesgrilles peuvent également différer entre les différentes vues. Outre le fait que la sélection peut être modifiéelorsque les actions sont actives et qu’il est même possible de faire un panoramique et un zoom des vues (enutilisant respectivement les boutons droit et central de la souris) lorsque les actions sont actives et sans lesinterrompre, c’est la clé d’une flexibilité inégalée dans la modélisation à l’aide de Ayam.

Pour interrompre une action, la touche <Esc> peut être utilisée.

L’action par défaut pour toutes les vues, qui est également en vigueur après utilisation dela touche <Esc>, est "None", "Pick", ou "Edit" (selon le réglage des préférences"Modelling/DefaultAction"). Voir la section 3.3 Sélection d’objets par choix (page 76) pour plusd’informations sur la sélection d’objets.

Notez que les actions de modélisation qui modifient directement des transformations ou des points ne sontpas disponibles dans les vues en perspective, mais les actions de sélection et aussi l’action d’édition depoints numériques fonctionnent bien.

Si une action est en vigueur pour une vue, le titre de la vue sera modifié en conséquence.

Une action de modélisation est effectuée en cliquant dans la vue avec le bouton le plus à gauche de la sourispour marquer un point dans l’espace ou pour choisir un sommet, puis en faisant glisser la souris.

Vous pouvez annuler/refaire les effets d’une action de modélisation en utilisant <Ctrl+z> et <Ctrl+y>(voir la section 8.1 Le système d’annulation (undo) (page 485) pour plus d’informations).

Des grilles sont disponibles pour limiter les actions de modélisation à certains points et aider à la modélisa-tion exacte.

Notez également que les boutons du milieu et de droite de la souris peuvent être utilisés pour zoomer etdéplacer la vue lorsque les actions de modélisation sont actives.

Pour les actions qui modifient la caméra d’une vue, veuillez consulter la section 2.6 Afficher les raccourciset les actions sur la fenêtre (page 51).

Page 75: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

3. Les actions de modélisation 75

3.1 Aperçu des actions de modélisation

Cette section donne un aperçu des différentes actions de modélisation. Notez qu’une collection plus com-plète de raccourcis est disponible sous forme de carte de référence séparée dans la distribution Ayam.

Name Shortcut Icon Name Shortcut IconTransform:

Move <m> Rotate <r>

Move X <mx> Rotate About <ra>

Move Y <my> Set Mark <a>

Move Z <mz>

Scale 3D <S> Scale 3D About <Sa>

Scale 2D <s> Scale 2D About <sa>

Scale 1D X <sx> Scale 1D X About <sxa>

Scale 1D Y <sy> Scale 1D Y About <sya>

Scale 1D Z <sz> Scale 1D Z About <sza>

Stretch 2D <T> Stretch 2D About <Ta>

Edit:

Edit <e> Tag Points <t>

Edit Weights <w> Insert Points <i>

Edit Numeric <E> Delete Points <d>

Table 2: Aperçu des actions de modélisation

Page 76: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

3. Les actions de modélisation 76

3.2 Transformer des objets ou des points sélectionnés

De nombreuses actions de modélisation travaillent soit sur les attributs de transformation des objets, soit surles coordonnées de points sélectionnés. Avant Ayam 1.18, cela était implicitement contrôlé par la sélectionde points : si des points étaient sélectionnés, ils étaient transformés à la place de l’objet.

Il existe maintenant deux raccourcis clavier (<o> et <p>) qui permettent à l’utilisateur de contrôler cecomportement directement par vue:1 <o> passe aux transformations d’objets et <p> aux transformationsde points. Ces raccourcis peuvent être utilisés à tout moment, même au milieu de toute autre action. Si despoints doivent être modifiés, un petit point rouge apparaîtra dans l’icone du mode de modélisation dans lemenu d’affichage, comme le montre l’image ci-dessous :

Figure 23: View Transforming Objects (left) and Points (right)

Notez que ces raccourcis ne font que changer la vue courante, pour modifier toutes les vues ouvertes, il suffitd’appuyer deux fois sur o ou p : <oo> et <pp>.2

Notez également que le champ de modélisation peut également être basculé en cliquant sur l’icone du modede modélisation avec le bouton droit de la souris ou en démarrant l’action à l’aide de ce bouton de la souris.

Voir aussi la section 6.5.10 Automatisation des actions sur les points (page 431) pour un script qui, partielle-ment, ramène l’ancien comportement implicite.

3.3 Sélection d’objets par choix

Cette section décrit les techniques qui peuvent être utilisées pour sélectionner un ou plusieurs objets dansune fenêtre de visualisation à l’aide de la souris.

Lorsque l’action de la fenêtre de vue est "Pick", les objets qui apparaissent dans cette vue peuvent êtresélectionnés avec la souris. Cette action peut être invoquée en appuyant sur <P> ou en faisant de cetteaction l’action par défaut en utilisant le paramètre de préférence "Modelling/DefaultAction". Si lasélection est l’action par défaut, elle sera automatiquement activée lorsque toute autre action est interrompueen utilisant <Esc>.

3.3.1 Sélection d’objets individuels

La sélection d’objets dans une vue est une opération simple qui utilise des méthodes standard. Vous utiliserezle plus souvent les deux opérations de sélection suivantes :1 Depuis 1.18. 2 Depuis 1.21.

Page 77: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

3. Les actions de modélisation 77

• Pour sélectionner un seul objet dans une vue, déplacez le curseur sur l’objet et cliquez sur le bou-ton 1 de la souris (le plus à gauche). Une fois que vous avez sélectionné un objet, tous les objetsprécédemment sélectionnés sont automatiquement désélectionnés.

• Pour sélectionner un objet supplémentaire, déplacez le curseur sur l’objet et <Control>+Cliquez(toujours avec le bouton le plus à gauche de la souris). Les objets précédemment sélectionnés restentsélectionnés, et le nouvel objet sélectionné est ajouté à la sélection. Notez que l’objet sélectionné doitappartenir au même niveau que les objets précédemment sélectionnés. Une autre méthode pour sélec-tionner plusieurs objets consiste à faire glisser un rectangle autour d’eux. Pour plus d’informations,voir 3.3.2 Sélection d’objets multiples par glisser-déposer (page 77)

Notez que les objets Root et View ne peuvent pas être sélectionnés du tout.

3.3.2 Sélection d’objets multiples par glisser-déposer

Vous pouvez sélectionner plusieurs objets en utilisant la méthode <Control>+Click décrite dans la sec-tion 3.3.1 Sélection d’objets individuels (page 76).

Une autre méthode pour sélectionner plusieurs objets consiste à faire glisser un rectangle autour de cesobjets. Cependant, seuls les objets qui appartiennent au niveau actuel peuvent être sélectionnés par glisser-déposer. Si vous souhaitez sélectionner plusieurs objets appartenant à un autre niveau, vous devez modifierle niveau actuel soit en le sélectionnant dans l’arbre/la liste, soit en choisissant un objet de ce niveau dansune vue.

La procédure de sélection par glissement de plusieurs objets utilise également une méthode standard :

1. Imaginez un rectangle qui ne contienne que les objets que vous voulez sélectionner.

2. Cliquez sur un coin du rectangle et, tout en continuant à appuyer sur le bouton de la souris, faitesglisser jusqu’à ce que vous ayez entouré tous les objets.

3. Relâchez le bouton de la souris. Tous les objets valides à l’intérieur du rectangle ou le traversant sontsélectionnés et tous les objets précédemment sélectionnés sont automatiquement désélectionnés.

Notez que si vous appuyez sur <Control> pendant la sélection par glisser-déposer, les objets qui sontentourés par le rectangle seront ajoutés à la sélection actuelle au lieu de la remplacer.

3.3.3 Sélection ambiguë

Dans certains cas, Ayam n’est pas en mesure de faire la différence entre les objets que vous avez sélectionnéset D’autres objets proches ou apparentés. Cette ambiguïté peut se présenter comme suit :

• Imaginez un petit carré entourant le curseur. Lorsque vous cliquez sur un objet, tous les autres objetsvalides qui se trouvent à l’intérieur de ce carré sont également considérés comme des sélections pos-sibles. Par exemple, si vous sélectionnez un objet qui est positionné très près d’un autre, Ayam peutconsidérer les deux objets comme des sélections possibles.

• Si votre modèle est tridimensionnel (ce qui risque de se produire), imaginez une ligne perpendiculaireà l’écran qui traverse le curseur et entre dans le modèle. Lorsque vous choisissez un objet, tous lesobjets qui croisent cette ligne sont considérés comme des candidats possibles à la sélection.

Page 78: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

3. Les actions de modélisation 78

Si la sélection est ambiguë, Ayam affiche une fenêtre qui contient une liste des candidats possibles à lasélection (voir image ci-dessous), ou, si l’option "PickCycle" est activée, Ayam fait simplement défilerles objets candidats en cliquant à nouveau sur la même position.1

Lorsqu’un nom est sélectionné dans la liste des candidats, l’objet correspondant est mis en évidence. Cliquezsur "Ok" lorsque vous avez déterminé l’objet à sélectionner ou sur "Cancel" pour fermer la liste etconserver la sélection précédente inchangée.

Figure 24: List of Picking Candidates

Il est également possible d’utiliser un double clic dans la liste des candidats à la sélection pour sélectionnerun objet et fermer immédiatement la fenêtre de dialogue. De plus, comme la liste des candidats obtientimmédiatement le focus du clavier, les touches du curseur et <Enter> peuvent également être utiliséespour sélectionner l’objet.2

Notes:

• Tant que la liste des candidats ambigus est ouverte, aucun autre objet ne peut être choisi dans les vues.

• Il est possible d’utiliser l’action "Zoom to Object" (raccourci <O>) alors que la boîte de liste desélection ambiguë est ouverte pour obtenir une meilleure vue de l’objet temporairement sélectionné.

• La tolérance utilisée pour déterminer si un objet doit être sélectionné ou non peut être ajustée (voir"PickTolerance" dans 8.4.2 Définitions des préférences masquées (page 495)).

3.4 Sélection/traçage de points

L’action de modélisation "Select Points" (raccourci : <t>; pour les points de marquage : t tagpoints) peuvent être appliquées aux objets qui supportent l’édition à point unique ou les points de lectureseulement.

Pour sélectionner ou désélectionner un point, il est possible de cliquer directement dessus ou de faire glisserune région rectangulaire avec la souris autour des points en question.

Seuls les points situés à une certaine distance de la position du clic du pointeur de la souris seront considéréscomme choisis (voir l’option de préférence "Modelling/PickEpsilon"). Les points qui seraientchoisis clignoteront dans une couleur différente lorsque le pointeur de la souris passera dessus (ceci estégalement contrôlé par l’option de préférence "Modelling/FlashPoints").

Les points sélectionnés seront dessinés en rouge foncé lorsque l’action de modélisation des points sélection-nés ou une action de modélisation qui modifierait les points sélectionnés est active (voir l’image suivante).

Les points modifiables sélectionnés peuvent être modifiés ultérieurement à l’aide des actions de modélisationMove, Rotate, and Scale , comme indiqué ci-dessus, lorsque la vue est transformée en points à l’aide duraccourci <p>. Voir également le tableau ci-dessous.1 Depuis 1.23. 2 Depuis 1.11.

Page 79: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

3. Les actions de modélisation 79

Figure 25: Object With Selected Points (red)

Name Shortcut Icon

Tag Points <t>

Table 3: Tag Action

Après le choix (la sélection d’un point), le point choisi sera ajouté à la liste des points sélectionnés pourl’objet sélectionné. Si le point sélectionné est déjà dans cette liste, il sera retiré de la liste à la place, le pointchoisi sera désélectionné.

Tous les points peuvent être sélectionnés facilement en utilisant le raccourci clavier <A>.

La liste des points sélectionnés ne sera pas supprimée de l’objet tant qu’une désélection explicite n’aura pasété effectuée à l’aide du raccourci clavier <N> ou si certains outils de modélisation sont utilisés.

La sélection des points peut également être inversée en utilisant le raccourci clavier <I>.

Les trois raccourcis ci-dessus peuvent être utilisés à tout moment sans interférer avec D’autres actions demodélisation actives.

Notez que la liste des points sélectionnés n’est pas copiée, si l’objet est copié à l’aide du presse-papiers.La sélection n’est pas non plus enregistrée dans les fichiers de scènes Ayam. Mais les points sélectionnéssurvivent à annuler/refaire.1

En outre, l’action de sélection elle-même n’est pas une opération enregistrée dans le tampon d’annulation,et ne peut donc pas être annulée directement.

La sélection des points n’interfère pas non plus avec les actions de modélisation à point unique : Il estparfaitement légal de sélectionner certains points, de les déplacer en utilisant l’action de déplacement, puisde passer à l’édition d’un point unique, de modifier un autre ou même un des points sélectionnés, de revenir àl’action de sélection, d’ajouter D’autres points à la sélection ou de supprimer certains points de la sélection,de passer à la rotation, de faire pivoter les points sélectionnés et ainsi de suite.

Un plus grand nombre de points peut être ajouté à la sélection par une opération de glisser-déposer. Tous lespoints qui se trouvent à l’intérieur de la région rectangulaire définie par le clic et le glissement seront ajoutésà la sélection. En fait, cette approche est la seule façon d’ajouter en toute sécurité des points à la sélectionqui se bloquent les uns les autres. Le fait de cliquer ne fait qu’ajouter/supprimer des points isolés.

Maintenir la touche <Ctrl>- enfoncée tout en faisant glisser la souris supprime tous les points sélectionnésdans la région rectangulaire définie par le glissement de la sélection.2

1 Depuis1.16. 2 Depuis 1.16.1.

Page 80: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

3. Les actions de modélisation 80

Le comportement exact du choix de plusieurs points d’une courbe ou d’une surface NURBS dépend del’attribut "CreateMP" :Si "CreateMP" est activé, le fait de choisir un point multiple sélectionnera toujours tous les points quicomposent le point multiple.Si "CreateMP" est désactivé, le fait de choisir un point multiple ne sélectionnera que le premier despoints qui composent le point multiple (mais la sélection par glisser-déposer peut néanmoins être utiliséepour sélectionner tous les points).

Page 81: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

3. Les actions de modélisation 81

3.5 Définir une marque

Figure 26: Front View With Mark Set At 1,-1,0

Cette action peut être invoquée pour marquer un point dans l’espace afin de permettre la lecture D’autresactions de modélisation qui, par exemple, font une rotation ou une mise à l’échelle autour d’un point.

Le raccourci clavier permettant d’invoquer l’action de la marque fixe est <a>. Cette action est égalementactive comme action intermédiaire pour, par exemple, rotate about, où les raccourcis clavier <r> et ensuite<a> seraient utilisés dans une séquence et après avoir mis la marque, l’action rotate about reprendrait.

Voir également le tableau ci-dessous.

Name Shortcut Icon

Set Mark <a>

Table 4: Set Mark Action

Un simple clic avec le bouton gauche de la souris suffit pour définir la marque. Si des grilles sont activesdans la vue, la marque sera accrochée aux coordonnées de grille les plus proches.

Notez que, par un simple clic de souris, seules les coordonnées des marques à deux dimensions peuventêtre spécifiées. Par conséquent, dans les versions antérieures à la version 1.21, la troisième coordon-née était toujours mise à zéro lors d’un clic. Ce n’est plus le cas aujourd’hui. Si l’option de préférence"Modelling/GlobalMark" est activée, la troisième coordonnée n’est pas réinitialisée. De cette façon,les trois coordonnées de la marque peuvent être définies en cliquant deux fois dans les vues appropriées, parexemple d’abord dans une vue de face pour les coordonnées x et y et ensuite dans une vue de côté pour lacoordonnée z manquante.

La marque peut également être placée sur un point d’un des objets sélectionnés. Dans ce cas, les coordonnéesde la marque sont toujours immédiatement tridimensionnelles.1

Si l’on fait glisser la souris au lieu de cliquer, la marque est placée au centre de la boîte de délimitation detous les points du rectangle de glissement.2

1 Depuis 1.21. 2 Depuis 1.25.

Page 82: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

3. Les actions de modélisation 82

En outre, lorsque l’action de marquage est active, les raccourcis clavier suivants sont disponibles :

<Return> accepter la marque actuelle (utile, si l’on tourne d’abord autour d’un point puis quel’on décide de mettre à l’échelle également autour du même point : <ra>, glisser la souris, <sa>,<Return>, glisser la souris . . .),

<c> fixer la marque au centre de gravité de tous les systèmes de coordonnées des objets actuellementsélectionnés,

<C> fixer la marque au centre de gravité de tous les points actuellement sélectionnés.

<b> placez la marque au centre de la boîte de délimitation de tous les points actuellement sélection-nés. L’image ci-dessous montre la différence entre le centre de la boîte englobante et le centre degravité.

Le point marqué sera indiqué par une petite croix rouge dans la fenêtre de visualisation (voir aussi l’imageci-dessous).

Figure 27: Bounding Box Center Mark (left) and Center of Gravity Mark (right)

La marque peut également être manipulée directement en utilisant la propriété d’objet de vue correspondante(voir également la section 4.2.2 La propriété ViewAttrib (page 114)).

Depuis Ayam 1.21, la marque peut également être définie sans activer l’action "set mark" et sans interféreravec D’autres actions de modélisation en double cliquant avec le bouton le plus à droite de la souris.

Une autre façon d’établir la marque est via l’action spéciale "FindU" pour les courbes (voir aussi la section3.20 Trouver des points sur les courbes (page 97)) ou l’action spéciale "FindUV" pour les surfaces (voiraussi la section 3.21 Trouver des points sur les surfaces (page 98)).

La marque peut également être utilisée pour se souvenir d’un point important dans l’espace et y revenir plustard en utilisant le panoramique pour marquer l’action (raccourci clavier <.>).

La marque actuelle peut être effacée en appuyant sur <D> à tout moment.

Enfin, n’oubliez pas que certaines opérations, comme par exemple le changement de type de vue, permettentégalement d’effacer la marque.

Page 83: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

3. Les actions de modélisation 83

3.6 Les interfaces graphiques des paramètres intermédiaires

Figure 28: Exemple d’interface utilisateur graphique pour les paramètres intermédiaires

Plusieurs actions de modélisation interactive prennent en charge les paramètres intermédiaires GUI.1 Ils’agit de simples champs de saisie qui apparaissent dans le coin inférieur droit de la fenêtre de visualisationlorsque, par exemple, une touche numérique est enfoncée alors que l’action est active et qui permettentde paramétrer l’action de manière rapide et précise. Voir également l’image ci-dessus, où est indiqué leparamètre intermédiaire de l’interface graphique pour l’action Rotation.

La valeur du paramètre peut être validée en utilisant la touche <Enter> ou <Return>.

L’interface graphique des paramètres peut également être utilisée plusieurs fois / gardée ouverte lorsque latouche <Shift> est maintenue enfoncée pendant la validation de la valeur du paramètre.

Actuellement, seules les actions qui nécessitent un paramètre sont prises en charge.

1 Depuis 1.27.

Page 84: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

3. Les actions de modélisation 84

3.7 Déplacement d’objets ou de points sélectionnés

L’action de modélisation "Move" (raccourci : <m>) permet de déplacer des objets ou des points sélection-nés (marqués).

Notez que les objets/points seront déplacés dans le plan XY pour les vues de face, le plan ZY pour les vuesde côté et le plan XZ pour les vues de dessus uniquement, quelle que soit la façon dont la vue est tournée.

L’action de déplacement peut être limitée à un certain axe, en appuyant sur <x>, <y>, ou <z> juste aprèsle <m>.1

Pour un aperçu des actions de déplacement, voir également le tableau ci-dessous.

Name Shortcut Icon

Move <m>

Move X <mx>

Move Y <my>

Move Z <mz>

Table 5: Aperçu des actions de déplacement

Voir également la documentation des commandes correspondantes de l’interface de script 6.2.9 movOb(page 373) et 6.2.9 movPnts (page 373).

1 Depuis 1.17.

Page 85: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

3. Les actions de modélisation 85

3.8 Rotation des objets ou des points sélectionnés

L’action de modélisation "Rotate" (raccourci : <r>) permet de faire pivoter des objets ou des pointssélectionnés (marqués).

L’axe de rotation est toujours parallèle à l’axe Z dans les vues de face, à l’axe Y dans les vues de dessuset à l’axe X dans les vues de côté du système de coordonnées de l’objet local. L’orientation du systèmede coordonnées de l’objet peut changer par rapport au système de coordonnées du monde si une séquenced’actions de modélisation de la rotation est appliquée.

Notez que si plusieurs objets sont sélectionnés, chaque objet est tourné autour du centre de son propresystème de coordonnées locales. Seule la propriété Rotate_X, Rotate_Y ou Rotate_Z des objets sélectionnéssera modifiée par cette action.

Name Shortcut Icon

Rotate <r>

Table 6: Rotate Action

Voir également la documentation des commandes correspondantes de l’interface de script 6.2.9 rotOb (page373) et 6.2.9 rotPnts (page 374).

3.9 Rotation des objets ou des points sélectionnés autour d’un point

En utilisant l’action de modélisation "rotate about" des objets ou des points sélectionnés des objets sélec-tionnés peuvent être tournés de manière interactive autour d’un point spécifique dans l’espace.

Pour lancer la rotation sur action, invoquez l’action de rotation normale, puis appuyez sur <a>. Voirégalement le tableau ci-dessous.

Name Shortcut Icon

Rotate About <ra>

Table 7: Rotate About Action

Pour effectuer une rotation autour d’un point différent, il faut relancer l’action de la marque de réglageintermédiaire (appuyez simplement sur <a> à nouveau).

Après avoir placé la marque, l’action fonctionne de la même manière que l’action Rotation, sauf qu’elle faittourner le ou les objets sélectionnés ou des points autour de la marque. Cela fonctionne donc égalementavec plusieurs objets sélectionnés. Notez que cette action ne modifie pas seulement les propriétés Rotate_X,Rotate_Y ou Rotate_Z des objets sélectionnés, mais aussi les propriétés Translate_X, Translate_Y ou Trans-late_Z.

Pour éviter la dégradation des coordonnées due à des erreurs d’arrondi, il est fortement suggéré d’utiliserune grille ou le paramètre intermédiaire GUI avec cette action.

Voir aussi la section 6.5.9 Automatismes avec les actions de centrage (???? Automatic About Center Ac-tions) (page 431) pour un script, qui modifie l’action de rotation pour qu’elle tourne automatiquement autourdu centre des sélections en cours.

Page 86: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

3. Les actions de modélisation 86

3.10 Mise à l’échelle d’objets ou de points sélectionnés

Plusieurs actions différentes sont disponibles pour mettre à l’échelle de manière interactive les objets ou lespoints sélectionnés (marqués) des objets sélectionnés :

L’action de modélisation "Scale 3D" (raccourci : <S>, notez le S majuscule !) met à l’échelle les troisaxes des objets sélectionnés ou les points sélectionnés des objets sélectionnés par le même facteur.

L’action de modélisation "Scale 2D" (raccourci : <s>) met à l’échelle seulement deux axes des objetssélectionnés ou les points sélectionnés (marqués) des objets sélectionnés. Ces axes sont XY dans une vuede face, ZY dans une vue de côté et XZ dans une vue de dessus.

Il est également possible de limiter la mise à l’échelle des objets ou des points sélectionnés à un seul axe.Pour cela, il faut appuyer sur <x>, <y>, ou <z> juste après <s> (par exemple, <sx> pour une mise àl’échelle 1D sur x).

Depuis Ayam version 1.17, l’accès direct aux actions de modélisation à l’échelle 1D "Scale X" (ancienraccourci : <x>), "Scale Y" (ancien raccourci : <y>), et "Scale Z" (ancien raccourci : <z>) nesont plus disponible.

L’action de modélisation "Stretch 2D" (raccourci : <T>) fonctionne à peu près comme "Scale 2D"

mais le facteur d’échelle pour chaque axe peut être différent. Ne commencez jamais cette action par un clicprès d’un des axes à modifier, car cela entraînerait des facteurs d’échelle très importants pour l’autre axe.Essayez-le d’abord avec une boîte centrée en partant d’un des coins de la boîte, puis essayez-le une fois encommençant sur l’axe X.

Pour un aperçu des actions d’envergure, voir également le tableau ci-dessous.

Name Shortcut Icon

Scale 3D <S>

Scale 2D <s>

Scale 1D X <sx>

Scale 1D Y <sy>

Scale 1D Z <sz>

Stretch 2D <T>

Table 8: Scaling Actions Overview

See also the documentation of the corresponding scripting interface commands 6.2.9 scalOb (page 373) et6.2.9 scalPnts (page 374).

Page 87: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

3. Les actions de modélisation 87

3.11 Mise à l’échelle d’objets ou de points sélectionnés autour d’un point

En utilisant une mise à l’échelle sur les actions de modélisation, les objets ou les points sélectionnés (mar-qués) des objets sélectionnés peuvent être mis à l’échelle de façon interactive autour d’un point spécifiquedans l’espace.

Pour lancer une mise à l’échelle sur l’action, invoquez l’action scale normale, puis appuyez sur <a> (parexemple, <sa> pour l’échelle 2D, <sya> pour l’échelle 1D Y). Pour un aperçu de mise à l’échelle desactions, voir également le tableau ci-dessous.

Name Shortcut Icon

Scale 3D About <Sa>

Scale 2D About <sa>

Scale 1D X About <sxa>

Scale 1D Y About <sya>

Scale 1D Z About <sza>

Stretch 2D About <Ta>

Table 9: Scaling About Actions Overview

Pour une mise à l’échelle à partir d’un point différent, la marque intermédiaire doit être redéfinie ??? enappuyant simplement de nouveau sur <a>.

Après avoir fixé la marque, l’action fonctionne de la même manière que l’action de mise à l’échelle, saufqu’elle met à l’échelle le ou les objets sélectionnés ou les points autour de la marque. Cela fonctionne doncégalement avec plusieurs objets sélectionnés. Notez que cette action ne modifie pas seulement les propriétésScale_X, Scale_Y ou Scale_Z des objets sélectionnés, mais aussi les propriétés Translate_X, Translate_You Translate_Z.

Notez également que la mise à l’échelle tridimensionnelle de la marque se produit dans les trois dimen-sions, cependant, dans l’action interactive intermédiaire de la marque de série, seules les coordonnées bidi-mensionnelles peuvent être spécifiées par un simple clic de souris. Pour spécifier une véritable marquetridimensionnelle, on peut utiliser les attributs correspondants de l’objet de vue ou sélectionner un point etlui attribuer la marque (raccourci <C>). Voir la section 3.5 Définir une marque (page 81) pour D’autresmoyens de définir une marque tridimensionnelle.

Pour éviter la dégradations des coordonnées due à des erreurs d’arrondi, il est fortement suggéré d’utiliserune grille ou le paramètre intermédiaire GUI avec cette action.

Voir aussi la section 6.5.9 Automatismes avec les actions de centrage (???? Automatic About Center Ac-tions) (page 431) pour un script, qui modifie automatiquement les actions d’échelle pour mettre à l’échelleautour de centre des sélections en cours.

Page 88: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

3. Les actions de modélisation 88

3.12 Éditer des Points

Pour éditer les points d’un objet, deux actions ("Edit" et "Numeric Point Edit") sont disponibles.Ces actions peuvent être appliquées à des objets qui ne permettent que l’édition d’un seul point. Ces objetsdessinent généralement leurs points sélectionnables à l’aide de petites poignées rectangulaires blancheslorsqu’une action de modélisation est active (voir également l’image ci-dessous).

Figure 29: Objects With Editable (left) and With Read-only Points (right)

Contrairement à l’action de déplacement, par exemple, toutes les actions d’édition de point nécessitent quela poignée du point soit choisi directement. Seuls les points situés à une certaine distance de la positiondu clic du pointeur de la souris seront considérés comme étant sélectionnés (voir l’option de préférence"Modélisation/PickEpsilon"). Les points qui seraient choisis clignoteront d’une couleur dif-férente lorsque le pointeur de la souris se déplacera dessus (ceci est également contrôlé par l’option depréférence "Modélisation/PointsFlash").

Pour un aperçu des actions d’édition de points, voir également le tableau ci-dessous.

Name Shortcut Icon

Edit <e>

Numeric Edit <E>

Table 10: Aperçu des actions d’édition de points

L’action de modélisation "Edit" (raccourci : <e>) fonctionne à peu près comme l’action de déplacement,mais elle déplace des points individuels au lieu d’objets. Depuis Ayam 1.18, il est possible d’éditer les pointsde plusieurs objets sélectionnés (dans les versions précédentes, seuls les points du premier objet sélectionnéétaient pris en compte).

Si un point multiple est édité, cette action modifie tous les points simples qui composent le point multiple,c’est-à-dire qu’il n’est pas possible de déplacer des points simples à partir d’un point multiple en utilisantcette action. Pour ce faire, désactivez temporairement la propriété "CreateMP" ou explosez le pointmultiple.

Si l’option de préférence "Modelling/EditSnaps" est activée, le point choisi sera d’abord déplacévers les coordonnées de grille les plus proches, sinon la grille contrôle juste le déplacement pour l’actiond’édition. L’accrochage peut se faire en 2D ou 3D, selon l’option de préférence "Modelling/Snap3D".De plus, lors de l’accrochage d’un point, le pointeur de la souris se déformera à la nouvelle position du point

Page 89: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

3. Les actions de modélisation 89

(afin que l’utilisateur ne perde pas le fil (??? loose track of it)). La déformation du pointeur de la souris nefonctionne pas actuellement sous Mac OS X Aqua.

L’action de modélisation "Numeric Point Edit" (raccourci : <E>) lance une action de sélectionde points intermédiaires et, par un clic de souris, ouvre une petite fenêtre où les coordonnées du ou despoints modifiables sélectionnés peuvent être modifiées directement en saisissant de nouvelles valeurs decoordonnées au clavier (voir image ci-dessous). S’il y a déjà des points sélectionnés, la fenêtre de dialogues’ouvre immédiatement.1

Figure 30: Numeric Point Edit Dialog

Rien ne sera modifié sauf si la touche "Return" est enfoncée dans un champ de saisie de coordonnées ousi le bouton "Apply" est utilisé.

(Not clear at all ???) Contrairement à l’action normale de sélection de points, où des clics supplémentairesajoutent des points à la sélection, en cliquant sur de nouveaux points, alors que le dialogue d’édition depoints est ouvert, désélectionne le(s) ancien(s) point(s), sélectionne le nouveau point et charge ses valeursde coordonnées dans les champs de saisie. En cas de sélection multiple, la désélection n’est effectuée quesur l’objet avec une nouvelle sélection.

Notez que le réglage de la coordonnée w sera ignoré pour les points sélectionnés qui n’ont pas d’informationde poids (ne sont pas rationnels).

En utilisant le petit menu en haut de la fenêtre de coordonnées, on peut déterminer si l’édition a lieu dansl’espace local/objet ou dans l’espace global/monde.

Cette action de modélisation peut affecter plusieurs points de plusieurs objets sélectionnés.2

Il est désormais possible de faire coïncider les points de différents objets : Il suffit de sélectionner deuxobjets, de lancer l’édition numérique des points (appuyez sur <E>), de choisir un point sur le premierobjet (où un point du deuxième objet doit être accroché), la fenêtre d’édition des points s’ouvre, puis defaire glisser le point du deuxième objet (n’utilisez pas un simple clic pour la sélection car cela chargeraitégalement de nouvelles coordonnées) et d’appuyer sur apply.

L’action d’édition de points numériques prend également en charge les points en lecture seule, leurs coor-données peuvent être récupérées, mais la modification des valeurs n’aura aucun effet.3

Lors de l’application de modifications, des champs de saisie de coordonnées uniques peuvent être vides pourempêcher une modification de la valeur de la coordonnée correspondante.4

Si un point multiple est édité, cette action modifie tous les points simples qui composent le point multiple,c’est-à-dire que les points simples ne peuvent pas être séparés d’un point multiple en utilisant l’action1 Depuis 1.26. 2 Depuis 1.18. 3 Depuis 1.18. 4 Depuis 1.20.

Page 90: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

3. Les actions de modélisation 90

d’édition de point numérique. Pour ce faire, désactivez temporairement la propriété "CreateMP" oudéveloppez le point multiple.

Notez que le dialogue d’édition des points numériques peut rester ouvert tout le temps.1

En outre, il n’est pas nécessaire que l’objet d’origine reste sélectionné lorsque l’on travaille avec le dialogued’édition numérique des points, D’autres objets peuvent être sélectionnés pour, par exemple, insérer de nou-velles coordonnées de point à partir de leurs propriétés et les appliquer à l’objet d’origine. Notez égalementque les valeurs des coordonnées affichées dans la fenêtre d’édition numérique des points ne seront pas misesà jour lorsque le point est modifié par une autre action de modélisation (par exemple, dans une autre vue).Il suffit de cliquer à nouveau sur le point dans une vue où l’action d’édition de point numérique est active,pour mettre à jour les valeurs des coordonnées dans la fenêtre d’édition de point numérique.

Les champs de valeur d’édition de point numérique prennent en charge les expressions Tcl. Cela permet parexemple de fixer un point à exactement 2 1/3 en entrant :

[expr 1.0/3.0]

Même si le dialogue peut afficher des coordonnées de points avec une précision dégradée (en raison de laconversion de la virgule flottante en chaîne de caractères), les données de points originales restent inchangéeset leur précision n’est pas affectée tant que les nouvelles données ne sont pas appliquées. Voir aussi ladiscussion sur l’option de préférence "TclPrecision" dans la section 2.10.5 Préférences diverses (page72)).

Le dialogue d’édition par points numériques comporte également un menu contextuel.3 Les entrées de cemenu permettent de :

• "Clear" toutes les entrées,

• "Reset" toutes les entrées aux dernières valeurs extraites (annuler les modifications),

• "Fetch Mark", définissez toutes les entrées aux coordonnées de la marque de la vue actuelle (West effacé),

• "Fetch First", placez toutes les entrées sur le premier des points actuellement sélectionnés, ou

• "Fetch Last", placez toutes les entrées au dernier des points actuellement sélectionnés.

Les raccourcis clavier suivants sont en vigueur pour le dialogue d’édition numérique :

• <x>, <y>, <z>, <w>, déplace le focus sur l’entrée correspondante.

• <Return> /<Enter>, applique toutes les modifications.

• <Shift-Return> /<Shift-Enter>, applique toutes les modifications et ferme le dialogue.

• <Shift-Clear>, efface toutes les entrées.

• <Esc>, ferme le dialogue.

1 Depuis 1.4. 2 dans les limites imposées par le type de données à virgule flottante double 3 Depuis 1.21.

Page 91: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

3. Les actions de modélisation 91

3.13 Édition des poids

Dans le contexte des NURBS, les poids sont principalement utilisés pour construire des cercles parfaits, desarcs de cercle et des sphères. Cependant, ils présentent également une autre façon d’influencer les courbesou la forme des surfaces par rapport au point de contrôle avec le poids : Les poids inférieurs à 1,0 repoussentla courbe ou la surface du point de contrôle, tandis que les poids supérieurs à 1,0 attirent la courbe ou lasurface vers le point de contrôle. Voir également l’image suivante :

Figure 31: Weights Example (Blue: w = 0.5, Red: w = 2.0)

Pour éditer les poids d’un objet, deux actions ("Edit Weights" et "Reset Weights") sontdisponibles. Ces actions peuvent être appliquées aux objets qui supportent l’édition d’un seul point etne supportent que des coordonnées rationnelles. Ce sont des objets de type NCurve, NPatch, et PatchMesh.

L’action de modélisation "Edit Weights" (raccourci : <w>) permet de modifier la coordonnée w d’unseul point en faisant glisser la souris vers la gauche ou la droite. Le clic initial remet toujours le poids à 1.0.Pour chaque 10 pixels déplacés par la souris, une valeur de 0,1 sera ajoutée ou retirée du poids. Si une grilleest active, le 0,1 sera multiplié par la valeur de la grille, de sorte qu’une grille de 0,5 ajoutera/supprimera dupoids par bloc de 0,05.Lorsque la touche <Control> est maintenue enfoncée tout en choisissant le point de contrôle à modifier,le poids ne sera pas réinitialisé.1

L’action de modélisation "Reset Weights" (raccourci : <W>) réinitialise la coordonnée w du pointchoisi à 1.0. Il est également possible de faire glisser la sélection des points à réinitialiser.2

Dans les deux actions, le poids actuel d’un point de contrôle est visualisé par couleur : les poids répulsifs(w< 1.0) sont dessinés dans des tons de bleu qui s’assombrissent à mesure que le poids s’approche de 0.0et les poids attractifs (w> 1.0) sont dessinés dans des tons de rouge qui s’assombrissent à mesure que lepoids s’approche de 3.0. Les points de contrôle dont le poids est nul ou non valide sont dessinés en noir.Les points de contrôle ayant un poids négatif sont dessinés en vert. Les points de contrôle sans poids (w =1.0) restent blancs.

Les poids peuvent également être réinitialisés pour tous les points en utilisant le raccourci clavier :<Ctrl-W>.

1 Depuis 1.25. 2 Depuis 1.25.

Page 92: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

3. Les actions de modélisation 92

Notez également que, si l’option de préférence "RationalPoints" est réglée sur homogeneous , lamodification du poids d’un point de contrôle modifie également sa position (affichée). Voir aussi la section2.10.2 Préférences de modélisation (page 64).

Pour un aperçu des actions de modification du poids, voir également le tableau ci-dessous.

Name Shortcut Icon

Edit Weights <w>

Reset Weights <W>

Table 11: Edit Weights Overview

Page 93: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

3. Les actions de modélisation 93

3.14 Clipser les points sur la grille

Figure 32: Clipser les points sur la grille

Il y a deux actions disponibles pour accrocher des points à la grille actuelle d’une vue.1

Les actions sont lancées à l’aide des raccourcis <g> et <G>. Si un objet a sélectionné (marqué) des pointsmodifiables, seuls ces points seront accrochés à la grille, sinon tous les points modifiables de l’objet serontaccrochés à la grille (voir aussi l’image ci-dessus). Si <g> est utilisé, l’accrochage ne se produit que dans leplan de modélisation associé à la vue (c’est-à-dire en 2D). Pour accrocher les trois valeurs de coordonnéesà la grille, utilisez <G>. Notez que l’accrochage se produit également si l’option de préférence "Use

Grid" est désactivée. Cette action peut être utilisée sans affecter les autres actions actives.

3.15 Clipser des objets sur la grille

Figure 33: Clipser des objets sur la grille

Il existe deux actions disponibles pour accrocher des objets à la grille actuelle d’une vue.2

Les actions sont lancées en utilisant les raccourcis <f> et <F>.Si <f> est utilisé, l’accrochage ne se produit que dans le plan de modélisation associé à la vue (c’est-à-direen 2D). Pour accrocher les trois valeurs de coordonnées à la grille, utilisez <F>. Notez que l’accrochagese produit également si l’option de préférence "Use Grid" est désactivée. Cette action peut être utiliséesans affecter les autres actions actives.

1 Depuis 1.11. 2 Depuis 1.26.

Page 94: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

3. Les actions de modélisation 94

3.16 Clipser des points sur les marques

Figure 34: Clipser des points sur les marques

Les points d’accrochage pour marquer l’action déplacent tous les points sélectionnés vers la marqueactuelle.1 Voir aussi l’image ci-dessus.

Cette action est lancée à l’aide du raccourci <M>. Tous les points modifiables sélectionnés des objetssélectionnés sont instantanément placés aux coordonnées de la marque actuelle (voir la section 3.5 Définirune marque (page 81) pour plus d’informations sur la marque).

Cette action peut être utilisée sans affecter les autres actions actives.

3.17 Clipser des objets sur les marques

Figure 35: Clipser des objets sur les marques

Les objets instantanés pour marquer l’action déplacent tous les objets sélectionnés vers la marque actuelle.2

Voir aussi l’image ci-dessus.

Cette action est lancée à l’aide du raccourci <K>. Tous les objets sélectionnés sont accrochés immédiate-ment aux coordonnées de la marque actuelle (voir la section 3.5 Définir une marque (page 81) pour plusd’informations sur la marque), offrant un moyen facile de déplacer des objets sur de longues distances oude simplement mettre un objet "ici".

Cette action peut être utilisée sans affecter les autres actions actives.

1 Depuis 1.18. 2 Depuis 1.18.

Page 95: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

3. Les actions de modélisation 95

3.18 Insérer ou supprimer des points

Figure 36: Insérer des points

L’action de modélisation "Insert Point" (raccourci : <i>) peut être appliquée aux NURBS, en inter-polant et en approximant des courbes (objets de type NCurve, ICurve et ACurve) uniquement. Un nouveaupoint de contrôle sera inséré dans la courbe juste après le point choisi. Le nouveau point sera inséré au mi-lieu entre le point sélectionné et le point suivant, ce qui modifiera la forme de la courbe. Voir aussi l’imageci-dessus.Il est également possible d’insérer des points de contrôle dans certains types de courbes NURBS sans modi-fier leur forme en utilisant l’insertion de noeuds ; voir aussi la section sur l’outil d’insertion de noeuds 5.3.13Outil d’insertion de noeud (Insert Knot) (page 289).

Si la touche <Ctrl>- est maintenue enfoncée tout en cliquant sur un point, le nouveau point peut être placéde manière interactive sur une position librement choisie.1 Pour ce faire, on donne d’abord au nouveau pointles coordonnées du point cliqué, à partir de là, le nouveau point peut être déplacé jusqu’à la position finale.

L’action de modélisation "Delete Point" (shortcut: <d>) (raccourci : <d>) peut être appliquée auxNURBS, en interpolant et en approximant des courbes (objets de type NCurve, ICurve et ACurve) unique-ment. Le point de contrôle sélectionné sera supprimé de la courbe. La suppression de points d’une courbeavec un type de noeud "Custom" peut actuellement entraîner une séquence de noeuds incorrecte, veuillezvérifier et corriger la nouvelle séquence manuellement. Voir également le tableau ci-dessous.

Name Shortcut Icon

Insert Points <i>

Delete Points <d>

Table 12: Insert/Delete Points Actions

1 Depuis 1.25.

Page 96: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

3. Les actions de modélisation 96

3.19 Manipuler les points multiples

Figure 37: Successively Increasing the Multiplicity of Selected Points

Pour manipuler la multiplicité des points de contrôle sélectionnés de la courbe NURBS, deux actions demodélisation sont disponibles.1

Les actions sont lancées en utilisant les raccourcis <*> (pour augmenter la multiplicité) et </> (pourdiminuer la multiplicité). L’augmentation de la multiplicité d’un point de contrôle peut être utilisée pourconstruire facilement des coins nets et des segments de courbe linéaire (voir aussi l’image ci-dessus). Lamultiplicité des points de contrôle sélectionnés ne sera augmentée que dans l’ordre de la courbe et, in-versement, ne sera jamais diminuée en dessous de 1. Essayer d’augmenter/diminuer au-delà de ces limitesn’entraînera aucune erreur. Les points sélectionnés restent sélectionnés, de sorte que les actions peuventêtre appliquées plusieurs fois. Les deux actions peuvent être invoquées à tout moment sans interrompre lesautres actions.

1 Depuis 1.20.

Page 97: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

3. Les actions de modélisation 97

3.20 Trouver des points sur les courbes

Figure 38: Breakpoint Display in Find Point on Curve Action

L’action de modélisation "FindU" (raccourci : <u>) peut être appliquée aux courbes NURBS (objets detype NCurve ou objets qui fournissent des objets NCurve) uniquement. Cette action peut être utilisée pourobtenir la valeur paramétrique correspondante u à partir d’un point quelconque sur une courbe. Pour chaquepoint choisi, la valeur appropriée pour u est calculée, stockée dans la variable globale "u", et en outreécrite sur la console. La marque est fixée aux coordonnées du point sur la courbe qui résulte de l’évaluationde la courbe à la valeur paramétrique u. Voir aussi la section 3.5 Définir une marque (page 81) pour plusd’informations sur les marques.

N’oubliez pas de choisir un point exactement sur la courbe ou à proximité, sinon le calcul risque d’échouer.

Cette action peut également être utilisée pour obtenir les coordonnées de la courbe à partir d’une valeur dis-tincte (point de rupture) du vecteur noeud.1 Ces points sont affichés sous forme de losanges et peuvent êtresimplement choisis, voir aussi l’image ci-dessus. Si un point de rupture est choisi, sa valeur paramétriqueest placée dans la variable globale u et la marque est placée sur le point tridimensionnel correspondant de lacourbe. Il est également possible de sélectionner les points de rupture par glisser-déposer.

Voir également le tableau ci-dessous.

Name Shortcut Icon

Find U <u>

Table 13: Find Point on Curve Action

1 Depuis 1.25.

Page 98: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

3. Les actions de modélisation 98

3.21 Trouver des points sur les surfaces

L’action de modélisation "FindUV" (raccourci : <U>) peut être appliquée aux surfaces NURBS (objetsde type NPatch ou objets qui fournissent des objets NPatch) uniquement. Cette action peut être utilisée pourobtenir les valeurs paramétriques correspondantes u et v à partir d’un point sur une surface. Pour chaquepoint choisi, les valeurs appropriées pour u et v sont calculées, stockées dans les variables globales "u"et "v", et écrites en plus sur la console. La marque est fixée aux coordonnées du point sur la surface quirésulte de l’évaluation de la surface aux valeurs paramétriques u et v. Voir la section 3.5 Définir une marque(page 81) pour plus d’informations sur la marque.

N’oubliez pas de choisir un point exactement sur la surface ou à proximité, sinon le calcul risque d’échouer.Comme le suggère l’icone, cette action fonctionne mieux dans le mode de dessin ombré. Voir également letableau ci-dessous.

Name Shortcut Icon

Find UV <U>

Table 14: Find Point on Surface Action

Page 99: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

3. Les actions de modélisation 99

3.22 Couper interactivement des courbes

Figure 39: Interactive Curve Splitting

L’action de modélisation "Split Curve" (raccourci <|) peut être appliquée aux courbes NURBS (ob-jets de type NCurve) uniquement. En utilisant cette action, une courbe NURBS peut être divisée en deuxnouvelles courbes en un point de la courbe qui est spécifié en choisissant un point de la courbe ; voir aussil’outil de courbe NURBS correspondant 5.3.18 Outil de fractionnement (Split) (page 295).N’oubliez pas de choisir un point exactement sur la courbe ou à proximité, sinon le calcul de la valeurparamétrique de la scission échouera. La courbe sélectionnée sera modifiée par cette action, et une nouvellecourbe sera créée. Il n’est actuellement pas possible d’annuler les modifications d’une division !

Cette action affiche également les valeurs distinctes (breakpoints) du vecteur de noeud et permet de leschoisir comme dans l’action "FindU". 1 Les grilles ne sont pas utilisées par cette action. Voir égalementle tableau ci-dessous.

Name Shortcut Icon

Split <|>

Table 15: Split Curve Action

1 Depuis 1.25.

Page 100: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

3. Les actions de modélisation 100

3.23 Sélection et marquage des points limites

Figure 40: Selecting Boundary Points

L’action de modélisation "Select Boundary Points" (raccourci <B>) peut être appliquée aux ob-jets PolyMesh uniquement.Cette action peut être utilisée pour sélectionner tous les points de contrôle d’une frontière PolyMesh aprèsavoir choisi un point sur cette frontière.1 Des limites sélectionnées sont nécessaires pour l’outil "Connect"polymesh, voir aussi 2.2 PolyMesh (page 37). Voir aussi l’image ci-dessus.Notez que l’objet PolyMesh doit être optimisé pour obtenir les meilleurs résultats. Voir également le tableauci-dessous.

Name Shortcut Icon

Select Boundary <B>

Table 16: Select Boundary Points Action

1 Depuis 1.23.

Page 101: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

3. Les actions de modélisation 101

3.24 L’édition dans les espaces locaux

Normalement, tout le montage a lieu dans l’espace mondial et le plan d’entrée de toutes les actions demodélisation est limité au plan mondial XY, ZY ou XZ (selon le type de vue – "Front", "Side", ou"Top" respectivement).

Cependant, si une vue est alignée et commutée sur locale, l’édition dans l’espace objet est possible. Le pland’entrée d’une vue locale alignée correspondra au plan XY, ZY ou XZ de l’espace objet local, là encore enfonction du type de la vue. L’édition et les autres actions de modélisation ont lieu dans ce plan.

Cela signifie que dans une vue locale alignée, une courbe paramètres plane d’un objet de revêtement peut êtremodifiée et que la courbe paramètres est garantie de rester plane en permanence, même si les deux objets,courbe et revêtement, sont tournés et mis à l’échelle arbitrairement via leurs attributs de transformation.

En outre, les grilles agiront également comme si elles étaient définies dans l’espace local de l’objet. Notezque contrairement à leur comportement normal, les grilles peuvent également être mises à l’échelle dif-féremment en coordonnées X et Y dans les vues locales alignées (si l’espace objet local est déformé de cettefaçon).

Pour faire une vue objet-local et aligné, l’objet doit d’abord être sélectionné. Maintenant, en appuyant sur<l> deux fois, la vue actuelle devient objet-local (dans les vues externes, <Ctrl+l> peut également êtreutilisé). Dans les versions de Ayam antérieures à 1.18, la vue devait également être alignée manuellementen utilisant <L> (ou <Ctrl+a> dans les vues externes). Depuis Ayam 1.18, la vue est automatiquementalignée sur l’objet sélectionné ou le niveau actuel lors du passage en mode global/local. L’alignement manueld’une vue peut encore être nécessaire après certaines modifications de la caméra de la vue, par exemple parl’action de rotation de la vue. Notez que le réalignement est également toujours possible en passant troisfois par le mode de modélisation en utilisant <l>. Mais revenons à notre vue locale.

Pour illustrer un peu plus les vues locales, voir les exemples d’images suivants :

Figure 41: Global Front View with Rotated Sweep

Un objet Sweep (balayage) avec une courbe B-Spline circulaire comme section transversale (tournée de 90degrés autour de l’axe Y en utilisant les attributs de transformation) et une courbe standard droite commetrajectoire. Le Sweep lui-même est tourné de 30 degrés autour de l’axe Z. La vue est une vue de face, lasection transversale et la trajectoire sont toutes deux sélectionnées. Notez à quel point l’espacement de lagrille serait insuffisant pour modifier la courbe de la trajectoire (il est par exemple presque impossible demodifier la courbe et de la garder linéaire (??? straight).

» Press <l>.

Page 102: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

3. Les actions de modélisation 102

Figure 42: Local (Level) Aligned View

L’affichage a été commuté en niveau local par une simple pression de la touche <l> (voir l’icone du modede modélisation, il affiche un L dans le coin inférieur droit. La vue est maintenant alignée sur l’espace tournéde 30 degrés de l’objet Sweep (notez le système de coordonnées de l’objet Root, il est incliné). La grilleest également tournée (par rapport au système de coordonnées de l’objet racine) mais maintenant beaucoupplus utile pour modifier la trajectoire, en fait elle est parfaitement alignée sur la trajectoire.

» Presser <l> de nouveau.

Figure 43: Local (Object) Aligned View

La vue est maintenant objet-local et alignée sur le premier des objets sélectionnés (la courbe de sectiontransversale) ; regardez l’icone du mode de modélisation, elle affiche maintenant un O dans le coin inférieurdroit. Comme la courbe de section transversale sélectionnée a été tournée de 90 degrés autour de l’axe Y, lavue de face affiche maintenant un cercle. Notez à nouveau l’orientation du système de coordonnées de l’objetRoot. La courbe de section transversale peut maintenant être éditée en toute sécurité, elle restera plane.Notez que les vues alignées entre objets ne s’alignent que sur le premier des multiples objets sélectionnés ; sitous les objets sélectionnés partagent les mêmes attributs de transformation, tout va bien, mais sinon, certainsobjets seront désalignés. Rappelez-vous également : lorsqu’une vue est de niveau local, le fait de changer leniveau actuel ne réaligne pas automatiquement la vue. Si la vue est de niveau objet-local, le fait de modifierla sélection des objets peut également entraîner un mauvais alignement de la vue. Pour réaligner la vue aprèsavoir changé le niveau actuel ou la sélection d’objet, il suffit d’appuyer sur <L>. Notez que l’alignement dela vue change le point de visée de la caméra à l’origine du système de coordonnées local respectif qui pourraitne pas être approprié à des fins de modélisation ; ainsi, après un changement de sélection, on peut vouloirégalement zoomer la vue sur l’objet nouvellement sélectionné : <LO>. Enfin, notez que l’alignement des

Page 103: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

3. Les actions de modélisation 103

vues ne fonctionne que pour les espaces définis par les attributs de transformation, il n’est pas possible des’aligner par exemple sur une courbe plane qui possède les attributs de transformation par défaut et qui esttournée par les points de contrôle.

Page 104: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 104

4 Objets, propriétés et balises

Cette section informe sur les différents types d’objets de l’Ayam et sur les interfaces graphiques de propriétésqui apparaissent dans la section des propriétés de la fenêtre principale si un seul objet et une seule propriétéont été sélectionnés.

Notez que les entrées "Help on object" and "Help on property" du menu principal dans Ayampeuvent être utilisées pour passer directement à la sous-section appropriée de cette partie de la documenta-tion.

La documentation sur les propriétés standards (Transformations, Attributes, Material, Shader, and Tags) setrouve dans la section 4.10 Standard Properties (page 248).

En outre, cette section contient des informations sur tous les types de balises, voir la section 4.11 Tags (page256).

Dans les sections suivantes, les caractéristiques générales des objets seront brièvement documentées dansdes tableaux comme celui-ci :

Type Parent of Material Converts to / Provides Point EditObject Type No / Object Type+/∗ Yes/No N/A / Children / Object Type+/∗ Yes/No*

Table 17: Object Capabilities Template

Les caractéristiques sont :

• Type : le nom du type tel qu’il est affiché dans l’arborescence des objets et compris par la commande"crtOb" interface de script ;

• Parent of : l’objet est un objet parent (peut avoir des objets enfants du type désigné),+ – plusieurs objets enfants peuvent être présents (un ou plusieurs),∗ – plusieurs objets enfants doivent être présents (plusieurs),Notez que le type du ou des objets enfants n’a pas besoin de correspondre directement, le ou lesenfants doivent plutôt fournir un objet du type approprié (voir aussi la section 8.2 Le concept demodélisation outils-objets (page 485)) ;

• Material: l’objet peut être associé à un matériau ;

• Converts to / Provides : type d’objets convertis ou fournis (Children signifie que les objets fournispar les enfants sont livrés en amont),+ – plusieurs objets peuvent être fournis (un ou plusieurs),∗ – plusieurs objets seront fournis (plusieurs) ;

• Point Edit : l’objet a des points éditables,∗ – les points en lecture seule sont pris en charge.

Page 105: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 105

Exemple :

Type Parent of Material Converts to / Provides Point EditRevolve NCurve Yes NPatch+ No*

Table 18: Object Capabilities Example

Explication:

• Type : l’objet Revolve (révolution) a le nom de type "Revolve", c’est-à-dire qu’il peut être créé àpartir de scripts en utilisant la commande "crtOb Revolve" ;

• Parent de : l’objet Revolve a une NCurve (ou un objet fournissant une NCurve) comme enfant ;

• Material : l’objet Revolve peut être associé à un matériau ;

• Convert to / Provides : l’objet Revolve convertit en (et fournit) un ou plusieurs objets NPatch ;

• Point Edit : l’objet Revolve n’a pas de points modifiables, il ne supporte pas les actions de modélisa-tion à point unique ; cependant, les points en lecture seule sont pris en charge (les points de contrôlede l’objet NPatch sous-jacent peuvent être lus et sélectionnés).

Page 106: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 106

4.1 Aperçu des types d’objets

Cette section donne un aperçu des types d’objets disponibles dans l’Ayam (puisqu’il y en a tant). Les typesd’objets sont regroupés par application dans les sections suivantes.

4.1.1 Organisation de la scène

Ces objets aident à organiser/structurer la scène ; la vue, la caméra, la lumière et les objets matériaux sontégalement énumérés ici (même s’ils méritent chacun une section distincte) :

Type Parent of Material Converts to / Provides Point EditRoot View+ No N/A NoLevel Any+ Yes N/A / Children+ NoClone Any+ No Children+ No*Mirror Any+ No Children+ No*

Instance No No Master No*Select Any+ No N/A / Children+ NoRiInc Any No N/A No

RiProc No No N/A No

View NPatch No N/A YesCamera No No N/A YesLight No No N/A Yes

Material No N/A N/A No

Table 19: Scene Organization

Pour une documentation complète, voir la section 4.2 Objets de l’organisation de la scène (page 110).

4.1.2 Primitives CSG / Solides

Ces objets servent de primitives géométriques dans les hiérarchies des CSG :

Type Parent of Material Converts to / Provides Point EditBox No Yes NPatch∗ No*

Sphere No Yes NPatch+ No*Disk No Yes NPatch No*Cone No Yes NPatch+ No*

Cylinder No Yes NPatch+ No*Torus No Yes NPatch+ No*

Paraboloid No Yes NPatch+ No*Hyperboloid No Yes NPatch+ No*

Table 20: CSG / Solid Primitives

Pour une documentation complète, voir la section 4.3 CSG / primitives des solides (Solid) (page 139).

Page 107: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 107

4.1.3 Courbes de forme libre

Ces objets sont principalement utilisés comme objets enfants pour les outils de génération de surface :

Type Parent of Material Converts to / Provides Point EditNCurve No No N/A YesICurve No No NCurve YesACurve No No NCurve YesNCircle No No NCurve No*

Table 21: Freeform Curves

Pour une documentation complète, voir la section 4.4 Les courbes libres (page 147).

4.1.4 Surfaces de formes libres

Ces objets permettent de manipuler directement des surfaces de forme libre :

Type Parent of Material Converts to / Provides Point EditNPatch NCurve+/ Level+ Yes PolyMesh YesIPatch No Yes NPatch YesBPatch No Yes NPatch Yes

PatchMesh No Yes NPatch Yes

Table 22: Freeform Surfaces

Pour une documentation complète, voir la section 4.6 Les surfaces libres (page 166).

4.1.5 Outils pour les courbes

Ces objets modifient les courbes existantes ou créent de nouvelles courbes :

Type Parent of Material Converts to / Provides Point EditConcatNC NCurve+ No NCurve No*

ExtrNC NPatch No NCurve No*OffsetNC NCurve No NCurve No*

Table 23: Curve Tool Objects

Pour une documentation complète, voir la section 4.5 Outils pour ces courbes (page 158).

Page 108: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 108

4.1.6 Outils pour les surfaces

Ces objets créent des surfaces de forme libre à partir de courbes ou D’autres surfaces :

Type Parent of Material Converts to / Provides Point EditRevolve NCurve Yes NPatch+ No*Extrude NCurve+ Yes NPatch+ No*Swing NCurve∗ Yes NPatch+ No*Sweep NCurve∗ Yes NPatch+ No*Birail1 NCurve∗ Yes NPatch+ No*Birail2 NCurve∗ Yes NPatch+ No*Skin NCurve∗ Yes NPatch+ No*

Gordon NCurve∗/ Level / NPatch Yes NPatch+ No*Bevel NCurve+ Yes NPatch No*Cap NCurve+ Yes NPatch No*Text No Yes NPatch+ No*Trim NPatch / NCurve+/ Level+ Yes NPatch No*

ConcatNP NPatch∗/ NCurve∗ Yes NPatch+ No*ExtrNP NPatch Yes NPatch+ No*

OffsetNP NPatch Yes NPatch+ No*

Table 24: Surface Tool Objects

Pour une documentation complète, voir la section 4.7 Les outils de surface (page 176).

4.1.7 Objets polygonaux et de subdivision

Ces objets complètent l’ensemble des fonctionnalités de Ayam et permettent d’inclure dans les scènes Ayamdes objets modélisés dans les schéma de modélisation polygonale ou de subdivision :

Type Parent of Material Converts to / Provides Point EditPolyMesh No Yes SDMesh YesSDMesh No Yes PolyMesh Yes

Table 25: Polygonal and Subdivision Objects

Pour une documentation complète, voir la section 4.8 Objets polygonaux et de subdivision (page 221).

Page 109: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 109

4.1.8 Scripts et plugins

Ces objets créent/modifient D’autres objets quelconques à partir de scripts ou définissent des types d’objetsentièrement nouveaux via le mécanisme de plugin d’objet personnalisé.

Type Parent of Material Converts to / Provides Point EditScript Any+ No Any No*

MetaObj MetaComp+ Yes PolyMesh NoMetaComp No No N/A NoSDNPatch No Yes PolyMesh YesSfCurve No No NCurve No*SDCurve No No NCurve YesBCurve No No NCurve Yes

Table 26: Scripts and Plugins

Pour une documentation complète, voir la section 4.9 Scénario (Script) et objets personnalisés (page 225).

Un certain nombre d’objets Script sont déjà distribués avec Ayam :

Type Parent of Material Converts to / Provides Point EditHelix No No NCurve No*Spiral No No NCurve No*TCone No No Hyperboloid No*CBox No No NPatch No*

TCircle No No NCurve No*DualSweep NCurve* No NPatch No*

TSurf NCurve* No NPatch No*ExtrudeN NCurve No NPatch No*

Polyhedron No No PolyMesh No*

Table 27: Distributed Script Object Scripts

Pour une documentation complète, voir la section 6.6 Objets script distribués (page 440).

Page 110: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 110

4.2 Objets de l’organisation de la scène

Ces objets aident à organiser/structurer la scène ; la vue, la caméra, la lumière et les objets matériaux sontégalement énumérés ici (même s’ils méritent chacun une section propre).

4.2.1 L’objet Racine (Root)

Figure 44: Root Object

Il n’y a jamais qu’un seul objet Root dans la scène. Cet objet a la particularité de ne pas pouvoir êtresupprimé ou copié. L’objet Root contient des options de rendu globales à la scène comme les RiOptions,l’atmosphère et les ombres de l’image. De plus, toutes les fenêtres de vue actuellement ouvertes sontreprésentées comme des objets enfants de l’objet Root.

Si l’objet Root est caché, le petit système de coordonnées rouge/vert/bleu ne sera dessiné dans aucune vue.

L’objet Root facilite également la gestion de la géométrie des fenêtres par scène en utilisant les balisesSaveMainGeom et SavePaneLayout (voir aussi les sections 4.11.9 Balise SaveMainGeom (page 263) et4.11.10 Balise SavePaneLayout (page 263)).

Le tableau suivant énumère brièvement certaines caractéristiques de l’objet Root.

Type Parent of Material Converts to / Provides Point EditRoot View+ No N/A No

Table 28: Root Object Capabilities

Les options de rendu de la scène sont documentées dans les sections suivantes.

Les propriétés RiOptions

Cette propriété comporte les options de l’interface RenderMan. Cette propriété permet de définir des optionsstandard et spécifiques au BMRT. Dans un souci de concision, seule une brève description des optionsdisponibles sera donnée ici. Veuillez vous référer à la documentation de l’interface RenderMan et à ladocumentation du BMRT pour des informations plus détaillées sur les options.

La propriété RiOptions se compose des éléments suivants :

• "Width", "Height", si elle est supérieure à zéro, cette valeur sera utilisée pour la taille de l’imageau lieu de la dimension correspondante de la fenêtre de visualisation, mais uniquement pour les opéra-tions d’exportation de RIB réel, pas pour le QuickRender et pas pour les actions Render dans lesfenêtres de visualisation. Les actions QuickRender et Render utiliseront toujours les dimensions de lafenêtre de visualisation à la place.

Page 111: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 111

• "StdDisplay", si cette option est activée, une déclaration d’affichage standard sera écrite au RIB,qui ressemble à ceci :

Display "unnamed.tif" "file" "rgba"

Si cette option est désactivée, au moins une balise RiDisplay doit être ajoutée à l’objet Root (voir aussila section 4.11.6 Balise RiDisplay (page 262)), sinon le RIB exporté ne contiendra pas de déclarationRiDisplay.

Cette option n’a aucun effet sur les RIB créés par les actions QuickRender et Render dans les fenêtresd’affichage.

• "Variance", maximum allowed variance of two pixel values. The default 0.0 causes no settingin the RIB. variance maximale autorisée de deux valeurs de pixel. La valeur par défaut de 0.0 neprovoque aucun réglage dans le RIB. Si la variance est > 0.0, aucun réglage d’échantillons de pixelsne sera écrit dans le RIB. Diverses sources découragent l’utilisation de l’échantillonnage basé sur lavariance, parce que, par exemple, le nombre d’échantillons réellement prélevés (et donc le temps derendu) pourrait ne plus être facilement prévisible.

• "Samples_X", "Samples_Y" nombre d’échantillons prélevés par pixel.

• "FilterFunc", fonction utilisée pour filtrer les valeurs finales des pixels.

• "FilterWidth", "FilterHeight" taille du filtre de pixel.

• "ExpGain", Exposition

• "ExpGamma", Exposition Gamma

• "RGBA_ONE", "RGBA_MIN", "RGBA_MAX", "RGBA_Dither", préciser la quantification et lestremblements (dithering ???)

• "MinSamples", "MaxSamples", nombre minimum et maximum d’échantillons par pixel (pourl’échantillonnage basé sur la variance).

• "MaxRayLevel", nombre maximum de rayons récursifs.

• "ShadowBias", distance minimale que doit avoir un objet pour pouvoir ombrer un autre objet.

• "PRManSpec", permet de basculer le comportement de la fonction spéculaire : specular() du BMRTentre le compatible PRMan (par défaut) et le compatible avec la norme RI.

• "RadSteps", nombre de pas de radiosité, la valeur par défaut 0 n’entraîne aucun calcul de radiositéà effectuer.

• "PatchSamples", nombre minimum d’échantillons par patch pour calculer les facteurs de formede la radiosité pour ce patch.

• "Textures", "Shaders", "Archives" et "Procedurals" sont des chemins de recherchepour le moteur de rendu.

• "TextureMem" et "GeomMem" déterminent la quantité de mémoire que le rendu (du BMRT) doitutiliser au maximum pour mettre en cache les textures et la géométrie tesselée.

Des options spécifiques au moteur de rendu peuvent également être définies avec les balises RiOption (voirla section 4.11.2 Balise RiOption (page 258)), qui peuvent être ajoutées plus facilement via le menu principal"Special/Tags/Add RiOption" (voir la section 2.2 Menu spécial balises (page 41)).

Page 112: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 112

Les propriétés de l’imageur et de l’atmosphère

Les propriétés de l’imageur et de l’atmosphère vous permettent de définir des ombres pour l’objet Root.Veuillez vous reporter à la section 4.10.4 Propriété Shader (page 250) pour savoir comment traiter les inter-faces graphiques des propriétés des ombres.

Les ombres de l’imageur sont exécutés une fois pour chaque pixel rendu, ils peuvent par exemple être utiliséspour définir une couleur d’arrière-plan ou une image de fond spécifique.

Les ombres d’atmosphère sont des ombres de volume qui peuvent être utilisés pour mettre en oeuvre deseffets optiques atmosphériques globaux comme le brouillard.

Les exportations RIB

L’objet Root apparaît dans la sortie RIB à différents endroits en tant que collection d’options de l’interfaceRenderMan et de l’imageur ainsi que des ombres d’atmosphère.

Les déclarations RIB exactes utilisées dépendent de la configuration de l’objet et du réglage des préférences"RIB-Export/RIStandard".

L’objet Root est le seul à prendre en charge les balises RiOptions, RiHider et RiDisplay (voir aussi la section4.11 Tags (page 256).

Page 113: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 113

4.2.2 L’objet View

Chaque fenêtre de vue (Voir aussi la section 2.4 Anatomie d’une vue (page 45)) a un objet de vue corre-spondant en tant qu’objet enfant de l’objet Racine.

Les propriétés de l’objet de vue, les paramètres de la caméra, le type de vue et d’autres éléments liés à lavue peuvent être modifiés. Notez que la suppression de l’objet qui représente une vue, ne fermera pas lafenêtre de vue. Vous perdrez simplement un moyen de la configurer. S’il vous plaît, ne touchez pas auxobjets d’une autre manière (par exemple, en les copiant), sinon vous risquez de vous attirer des ennuis !

Chaque vue est associée à une caméra virtuelle. Le type de vue détermine le vecteur montant par défaut decette caméra. Si le type est "Top" le vecteur montant correspond à l’axe Z du monde, sinon à l’axe Y dumonde. Le type de vue détermine en outre le plan d’entrée de la vue. Les actions de modélisation interactivedans une vue sont limitées à ce plan d’entrée (à moins que la vue ne soit passée en modélisation locale ; voiraussi la section.3.24 L’édition dans les espaces locaux (page 101)).1

Les plans d’entrée standard sont les suivants : Front – XY-plane, Side – ZY-plane, Top – XZ-plane, Trim –XY-plane.

Dans les vues en perspective, aucune action de modélisation interactive n’est possible, mais l’appareil photopeut être modifié, des objets peuvent être choisis et des points sélectionnés.

Les vues de type "Trim" sont utilisées pour éditer les courbes de trim des objets NPatch uniquement. Ellesaffichent ces courbes de trim comme des courbes NURBS normales lorsque le niveau actuel se trouve àl’intérieur d’un NPatch. Les extensions du patch dans l’espace-paramètre sont également dessinées sousforme de rectangle en pointillés. Les courbes Trim doivent se trouver entièrement à l’intérieur de ce rectan-gle. Notez que le prélèvement d’objets ne fonctionne pas actuellement dans les vues de type "Trim".

Le tableau suivant énumère brièvement certaines caractéristiques de l’objet View.

Type Parent of Material Converts to / Provides Point EditView NPatch No N/A Yes

Table 29: Les caractéristiques de l’objet View

Les sections suivantes détaillent les propriétés de l’objet View.

La propriété Camera

Cette section décrit tous les éléments de la propriété "Camera" :

• "From" est le point où se trouve la caméra (qui est attachée à la vue).

• "To" est le point vers lequel la caméra regarde.

• "Up" est le vecteur ascendant de la caméra.

• "Near" définit le plan de découpage proche. Une valeur de 0.0 signifie qu’une valeur par défaut(qui dépend du type de vue) doit être utilisée. Sinon, Near doit toujours être positif pour les vues enperspective, et plus petit que Far.

• "Far" définit le plan d’écrêtage lointain. Une valeur de 0.0 signifie qu’une valeur par défaut (quidépend du type de vue) doit être utilisée. Sinon, Far doit toujours être plus grand que Near.

1 Depuis 1.4.

Page 114: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 114

• "Roll" définit un angle de rotation de la caméra autour de l’axe défini par les points To et From.

• "Zoom" est un facteur de zoom.

Notez que le vecteur montant n’est pas vérifié pour des valeurs erronées (par exemple en pointant dans ladirection From de To) lors de l’application des changements de la propriété "Camera".

La propriété ViewAttrib

Cette section décrit les éléments de la propriété "ViewAttrib" :

• "Type" spécifie le type de vue. On peut choisir entre Front, Side, Top (tous parallèles), Perspectiveet Trim (à nouveau parallèles).

• "Width" and "Height" contrôlent la taille de la fenêtre de visualisation. Il n’est actuellement paspossible de redimensionner les vues internes avec ces éléments.

• "Redraw" permet de redessiner automatiquement la vue. Si cette option est désactivée, aucun dessinn’est effectué dans la vue tant qu’un Redraw explicite n’est pas demandé (à l’aide du menu Affichageou du raccourci <Ctrl+d>).

• "DrawingMode" permet de spécifier le mode de dessin de la vue : "Draw" dessine un cadre filaire,"Shade" dessine des surfaces éclairées. Notez que l’éclairage n’est en aucun cas une représentationexacte (ou même similaire) de l’information lumineuse telle que spécifiée avec Objets lumineux dansla scène. Au lieu de cela, une seule source de lumière, située à l’origine de la caméra (un phare), serautilisée. "ShadeAndDraw" combine des surfaces et des fils de fer. "HiddenWire" montre lesfils de fer et les silhouettes cachés. Voir aussi la section 2.7 Modes de dessin (page 53).

item>"DrawSel" bascule le dessin des objets sélectionnés. Si cette option est activée, seuls lesobjets sélectionnés actuels seront dessinés.

• "DrawLevel" bascule le dessin des objets du niveau actuel uniquement. Si cette option est activée,seuls les objets du niveau actuel seront dessinés.

• "Grid" est la taille de la grille, 0.0 signifie aucune grille.

• "DrawGrid" bascule le dessin de la grille actuelle.

• "UseGrid" indique si la grille actuelle doit être utilisée par les actions de modélisation interactive.Voir aussi la section 3 Les actions de modélisation (page 74).

• "ModellingMode" permet l’édition dans des espaces d’objets locaux. Voir aussi la section 3.24L’édition dans les espaces locaux (page 101).

• "DrawBG" contrôle si l’image de fond (spécifiée par l’option "BGImage" ci-dessous) doit êtredessinée. Si un objet NPatch est présent en tant qu’enfant de l’objet View, l’image sera mappée surcet objet au lieu de remplir l’arrière-plan complet de la fenêtre de vue.

• "BGImage" est le nom d’un fichier image TIFF, qui sera utilisé comme texture pour l’image defond. Ayam lira ce fichier image lorsque les modifications apportées à la propriété "ViewAttrib"sont appliquées, mais relira également le fichier image si le rappel de notification de l’objet de vue estinvoqué (par exemple, en utilisant l’entrée du menu principal "Tools/Force Notification").

• "Mark" est le point marqué (en coordonnées mondiales) pour la rotation et l’échelle concernant lesactions de modélisation.

• "SetMark" contrôle si les données des entrées "Mark" ci-dessus doivent être utilisées commenouvelles coordonnées de marque lorsque les modifications apportées à la propriété "ViewAttrib"sont appliquées.

Page 115: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 115

• "EnableUndo" permet de contrôler l’annulation des actions de la vue interactive, par exemplefaire un panoramique ou zoomer une vue. Si cette option est désactivée, ces actions ne seront pasenregistrées dans le système d’annulation et ne changent pas non plus l’état de changement de scène.Par défaut cette option est active.

Soutien au glisser-déposer

Les objets de la vue agissent de manière particulière, lorsque certains objets sont déposés sur eux dans lavue arborescente :

Lorsqu’un objet Caméra est déposé sur un objet View, les paramètres de l’objet Caméra sont copiés surl’objet View.

Lorsqu’un objet lumineux de type "Spot" est déposé sur un objet View, la caméra de vue sera modifiée,de sorte que l’utilisateur regarde le long de la lumière pour voir quels objets de la scène sont éclairés par lespot (cela fonctionne mieux avec des vues en perspective qui ont une largeur et une hauteur égales).

Il est également possible de faire glisser directement des objets de la vue arborescente vers une fenêtre devue : pour les objets géométriques, la vue effectue alors un zoom sur l’objet, pour les caméras et les sourcesde lumière, la caméra de vue sera modifiée comme si l’objet était déposé sur un objet de la vue arborescente(voir la description ci-dessus).1

4.2.3 L’objet Camera

Les objets Camera sont utilisés pour enregistrer temporairement les réglages des vues. Par conséquent, ilsn’ont que deux propriétés expliquées ci-dessus, voir les sections 4.2.2 La propriété Camera (page 113) et4.10.2 Propriété Attributes (page 249).

Le tableau suivant énumère brièvement certaines caractéristiques de l’objet Camera.

Type Parent of Material Converts to / Provides Point EditCamera No No N/A Yes

Table 30: Camera Object Capabilities

Soutien au glisser-déposer

Lorsqu’un objet View est déposé sur un objet Camera, les paramètres de la caméra de la vue seront copiéssur l’objet Camera.

Exportation RIB

Les objets Camera ne sont jamais exportés lors d’un export RIB.

1 Depuis 1.8.

Page 116: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 116

4.2.4 L’objet Light

Figure 45: Exemple d’éclairages (l: Distant, m: Point, r: Spot)

Les objets Light représentent des sources de lumière.

Il y a actuellement quatre types de lampes différents disponibles dans Ayam : "Point", "Distant","Spot", et "Custom" (voir aussi l’image ci-dessus).

Point, Distant, and Spotlights :

Ces sources lumineuses standard ont des paramètres bien définis qui seront affichés dans la propriété"LightAttr". Veuillez vous référer à la documentation RenderMan pour plus d’informations sur cessources lumineuses standard (voir la section 8.15 References (page 510)).

Les sources de lumières personnalisées (Custom) :

Les sources lumineuses de type "Custom" utilisent le nuanceur ci-joint.

Notez qu’Ayam essaie de deviner à partir des noms des nuanceurs les arguments pour dessiner la lumière.Les noms "from" et "to" indiquent l’emplacement et la destination de la source de lumière. Ces nomsne doivent pas être utilisés pour d’autres choses dans les nuanceurs de lumière.

Contrairement aux sources lumineuses définies dans l’interface RenderMan, les sources lumineuses Ayamsont toujours globales par défaut. Cela signifie que, quelle que soit la place d’une source lumineuse dans lahiérarchie de la scène, elle éclairera toujours tous les autres objets (sauf si l’attribut "IsLocal" est utilisé).

Notez que l’effet d’une source de lumière ne peut pas être prévisualisé dans les vues Ayam ombrées, actuelle-ment. Cependant, il est possible d’estimer l’effet d’une source de lumière ponctuelle en la déposant sim-plement dans une fenêtre de vue en perspective ; la vue adaptera alors les attributs de la caméra (de, vers etzoom) de la vue pour montrer les objets éclairés par le spot.

Le tableau suivant énumère brièvement certaines caractéristiques de l’objet Light.

Type Parent of Material Converts to / Provides Point EditLight Yes No N/A Yes

Table 31: Caractéristiques de l’objet Light

La propriété LightAttr

Le paramètre "Type" détermine le type de la source de lumière.Selon le type de la source lumineuse, la propriété de l’attribut de lumière contient différents ensembles de

Page 117: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 117

paramètres. Les paramètres qui ne sont pas affichés ne seront pas utilisés lors de l’exportation de RIB, parconséquent. Lorsque le type d’une source lumineuse est modifié, l’interface graphique de la propriété seraadaptée pour n’afficher que les options disponibles pour le nouveau type de source lumineuse. Notez quecette adaptation se produit lorsque le bouton "Apply" est utilisé.

"IsOn" vous permet d’éteindre ou d’allumer la lumière. La valeur par défaut est on.

"IsLocal" contrôle si la source lumineuse doit éclairer uniquement des objets locaux (objets définis aumême niveau dans la hiérarchie de la scène que l’objet source lumineuse ou en dessous) ou tous les objetsde la scène. Par défaut, tous les objets de la scène sont éclairés. L’attribut "IsLocal" est ignoré pourles lumières qui sont définies dans le niveau racine de la scène. N’oubliez pas non plus que les ombragescontiendront toujours les ombres de tous les objets de la scène, quel que soit l’attribut "IsLocal" de lasource de lumière.

En utilisant l’attribut de lumière "Shadows" vous pouvez déterminer si la source de lumière doit projeterdes ombres. La valeur par défaut est "off", pas d’ombres. Notez que cette option n’activera pas les ombrespar magie sur les moteurs de rendu qui créent des ombres par des ombrages. Elle sera simplement interprétéepar les moteurs de rendu de type raytracing comme BMRT.

Le paramètre "Samples" détermine le nombre de fois qu’il faut échantillonner une source lumineuse dezone, indépendamment des échantillons de pixels, la valeur par défaut est 1. Cet attribut n’est disponibleque pour les lumières personnalisées.

"UseSM" détermine si des ombrages doivent être créées et utilisées pour cette source de lumière. Larésolution de l’ombrage peut être déterminée par l’attribut "SMRes". Si "SMRes" est 0, une résolutionpar défaut de 256 par 256 pixels sera utilisée. Ces options sont réservées aux moteurs de rendu qui neprennent pas en charge les ombres tracées par RayTracing comme PRMan ou Aqsis.

Pour les lumières de type "Distant" les attributs "Scale" de la propriété "Transformations" del’objet lumineux peuvent être utilisés pour mettre à l’échelle la transformation de la caméra utilisée pourla création de l’ombrage correspondante. Des valeurs de 1 pour "Scale_X" et "Scale_Y" créent unombrage de taille 1 par 1 dans l’espace mondial.

Tous les autres paramètres qui peuvent apparaître dans la propriété "LightAttr" sont les paramètresstandard des sources lumineuses RenderMan standard : distant, point et spot :

• "From" et "To" indiquent la position et la cible de la source lumineuse comme point dans l’espace.Vous pouvez éditer les deux points en utilisant les actions d’édition de point standard (voir aussi lasection 3 Les actions de modélisation (page 74)).

• "Color" est la couleur de la lumière émise par la source lumineuse.

• "Intensity" est l’intensité de la lumière émise par la source lumineuse. Notez que les pointslumineux standard et les spots ont un décalage quadratique (avec la distance), qui nécessite de réglerl’intensité à des valeurs assez élevées afin d’obtenir un certain effet d’éclairage (par exemple, environ30 pour la distance standard de "From" et "To" d’un spot).

• "ConeAngle" est l’angle du faisceau d’un spot lumineux.

• "ConeDAngle" (angle de cône delta) est l’angle qui détermine une zone de d’atténuation au borddu faisceau d’un spot lumineux.

• "BeamDistrib" (distribution du faisceau) détermine la manière dont la lumière se réparti dans lefaisceau du spot. Des valeurs plus élevées donnent des zones éclairées plus étroites.

Page 118: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 118

Afin de faciliter le paramétrage des spots, l’objet source de lumière peut être déposé sur un objet de la vue oudans une fenêtre de visualisation (de préférence une fenêtre avec une transformation de vue en perspective etavec une largeur et une hauteur égales) pour voir quels objets de la scène sont réellement éclairés par l’objetlumineux.

Utilisation des ombrages (ShadowMaps)

L’utilisation des ombrages nécessite l’activation du paramètre de préférence globale"RIB-Export/ShadowMaps". En outre, pour chaque source de lumière pour laquelle un ombrage doitêtre créée, les attributs "IsOn" et "UseSM" doivent être activés.

Création automatique de ShadowMaps

Si le paramètre de préférence "RIB-Export/ShadowMaps" est réglé sur "Automatic", Ayam créeraune version spéciale du RIB à l’exportation, qui crée toutes les ombrages automatiquement lors du rendu.Cela se fait en rendant la profondeur des images à partir de la position de chaque source de lumière quiprojette des ombres. Des ombres spéciales de sources lumineuses récupèrent ensuite ces images et calculentles ombres. Cette approche implique que la scène est recalculée plusieurs fois. Pour réduire la taille du RIB,les objets à rendre sont écrits dans un second fichier RIB nommé "<scene>.obj.rib". Ce fichierest lu plusieurs fois à partir du RIB principal via "ReadArchive". Le RIB contient plusieurs images quipeuvent également être rendues séparément si le numéro de l’image est connu. Pour faciliter le choix du bonnuméro de trame pour l’image (par exemple, pour ne rendre que l’image finale, lorsque seul un paramètrematériau a été modifié, et qu’aucune lumière de projection d’ombre n’a été déplacée et qu’aucune géométriede projection d’ombre n’a été modifiée), un commentaire avec le numéro de la dernière trame (l’image) seraécrit comme dernière déclaration au RIB.

Comme plusieurs fichiers (RIB et ombrages) sont utilisés, il est suggéré de modifier le paramètre depréférence "RIB-Export/RIBFile" en "Scenefile". Cela supprimera la composante principaledu chemin absolu des noms de fichiers afin que la scène exportée puisse être déplacée plus facilement d’unsystème à l’autre.

Ne pas effectuer le rendu directement depuis une fenêtre de visualisation vers l’écran lorsque l’option depréférence "ShadowMaps" "RIB-Export" est réglée sur "Automatic". Votre moteur de rendu nepeut pas écrire de fichiers d’images lorsque qu’on utilise l’option de ligne de commande pour effectuer lerendu directement sur l’affichage (-d pour rendrib, ou -fb pour Aqsis). Par conséquent, cela peut égalementempêcher l’écriture des ombres portées, de sorte que l’image résultante sera incorrecte, ou que le moteur derendu ne rendra que l’ombre portée à l’écran et s’arrêtera tout simplement.

Création manuelle des ombrages

Si le paramètre de préférence "RIB-Export/ShadowMaps" est réglé sur "Manual", la scène ex-portée ne rendra pas les ombrages mais s’attendra plutôt à ce qu’elles soient déjà présentes. Elles peu-vent être créées manuellement (d’où le nom "Manual") en utilisant les entrées du menu d’affichage"View/Create ShadowMap", "View/Create All ShadowMaps" ou les entrées du menu prin-cipal "Special/RIB-Export/Create ShadowMap", "Special/RIB-Export/Create All

ShadowMaps". L’approche manuelle présente l’avantage que les ombrages ne seront pas recréées à chaquefois que la scène est rendue.

Types d’ombrages

Page 119: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 119

Ayam supporte trois méthodes différentes pour la création d’ombrages pour certains types de sources delumière : ponctuelle, distante et ponctuelle :

La méthode des points est utilisée avec les lumières de type "Point" et les lumières personnalisées quiont un argument d’ombrage nommé "from". Six ombrages pointant dans toutes les directions possiblesalignées sur l’axe et nommées "<rib>.point<num>_<dir>.shd" (où "<rib>" est lr nom duRIB, "<num>" est le numéro de la source de lumière qui utilise les ombrages et "<dir>" est l’un des"x+", "x-", "y+", "y-", "z+", ou "z-") qui seront créés.

La méthode distante est utilisée avec des lumières de type "Distant" et des lumières personnaliséesqui ont un argument d’ombrage nommé "from" et un autre nommé "to". Un ombrage est créé et nommé"<rib>.dist<num>.shd". Par défaut, la taille de l’ombrage est de 1 par 1 unités dans l’espacemondial, mais elle peut être adaptée en utilisant les attributs de transformation d’échelle de l’objet lumineux.

La méthode spot est utilisée avec des lumières de type "Spot" et des lumières personnalisées qui ontles arguments d’ombrages nommés "from", "to", et "coneangle". Un ombrage est créé et porte le nom"<rib>.spot<num>.shd". La méthode spot utilise l’argument "cone angle" (et en plus l’argument"delta cone angle", s’il existe) pour déterminer la taille de l’ombrages dans l’espace mondial.

Si un objet lumineux de type "Spot", "Distant" ou "Point" est utilisé, Ayam change automatique-ment le nom de l’ombre exporté en "shadowspot", "shadowdistant", et "shadowpoint" respec-tivement. De plus, l’ombre sera paramétrée pour utiliser les cartes d’ombres créées. Si la source lumineuseest de type "Custom", aucun renommage et ajustement automatique de l’ombre n’a lieu. Cela signifie quevous devez vous assurer que rendu d’ombre utilise réellement les ombres portées, en sélectionnant l’ombreadéquate et en la paramétrant en conséquence. Voir la discussion ci-dessus pour les noms des fichiers decarte d’ombre. Ces noms de fichiers, très probablement, devront être entrés comme paramètres d’ombre delumière.

Par exemple, vous n’obtiendrez pas d’ombres si vous utilisez une source de lumière de type "Custom"avec le rendu d’ombre normal "distantlight" joint, même si Ayam est capable de créer les ombragesnécessaires. Le rendu d’ombre normal "distantlight" n’utilise tout simplement pas les ombrages.Vous devez passer manuellement à un rendu d’ombre qui utilise les ombrages ("shadowdistant" dansce cas) pour obtenir réellement des ombres.

Page 120: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 120

Mini tutoriel sur les ombrages

Voici un petit exemple de scène utilisant un ombrage :

1. Aller aux préférences (section "RIB-Export") et définir "ShadowMaps" to "Automatic".

2. Créer deux boîtes.

3. Ouvrir la propriété "Transformations" de la deuxième boîte.

4. Déplacer la en X : 0.0, Y : -1.0, Z : 0.0.

5. Mettre à l’échelle avec X : 4.0, Y : 1.0, Z : 4.0.

6. Créer une source de lumière.

7. Ouvrir la propriété "LightAttr".

8. Changer le type en "Spot". Appuyez sur "Apply".

9. Changez maintenant les paramètres du spot lumineux en "IsOn": Oui, "Intensity": 18.0,"UseSM": Oui, "ConeAngle": 45.0, "BeamDistrib": 3.0, "From": -2, 2, 2, "To": 1, 0,-1; laissez tous les autres paramètres à leur valeur par défaut.

10. Créer une nouvelle vue et la mettre en perspective (Menu : "Type/Perspective").

11. Exporter un RIB depuis cette vue en perspective (Menu : "View/Export RIB").

12. Rendu de la RIB avec un moteur de rendu compatible RenderMan, qui utilise des ombrages, parexemple Photorealistic RenderMan (prman) ou Aqsis.

Cette scène est distribuée avec Ayam comme exemple de scène nommée "shadowmaps.ay", voir aussil’image suivante de cette scène qui a été créée avec une lumière ponctuelle supplémentaire et Aqsis commemoteur de rendu :

Figure 46: Exemple d’ombrage

Notez que pour Aqsis, vous devez ajouter une balise RiHider hidden,depthfilter,s,midpoint à votre objetRoot si des ombrages sont utilisés. D’autres moteurs de rendu peuvent nécessiter un réglage supplémentaireen utilisant des balises RiOption de type shadow bias. Veuillez consulter la documentation de votre moteurde rendu pour savoir comment obtenir les meilleurs résultats en utilisant les ombrages.

Page 121: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 121

Utiliser des sources lumineuses étendues

Les sources lumineuses standard idéalisées communes "Point", "Distant" et "Spot" n’ont pasd’extension géométrique propre dans l’espace (sources ponctuelles) Cela signifie que les ombres résultantde ces sources de lumière auront des bords nets qui ne semblent pas trop naturels. Des ombres douces debonne apparence peuvent être générées en utilisant des éclairages étendus. Voir aussi l’image ci-dessous.

Les éclairages étendus peuvent être créés en plaçant simplement un objet unique comme objet enfant d’unobjet lumineux "Custom" qui a l’ombre "arealight" attaché, c’est-à-dire que la hiérarchie de la scèneressemble à ceci :

+-AreaLight(Light)

\ AreaLightGeometry(Sphere)

Cet objet enfant détermine la géométrie (place et extension) de la source lumineuse. D’après L. Gritz, lessphères et les cylindres fonctionnent mieux comme géométrie de la lumière pour le BMRT, en raison d’uncode d’échantillonnage spécial.

An example:

• Créer un objet lumineux personnalisé.

• Affectez-lui l’ombrage "arealight".

• Créer une sphère.

• Déposez la sphère sur l’objet lumineux de façon à ce qu’elle devienne un enfant de l’objet lumineux.

• Transformez l’objet sphère à votre guise ; la position et la taille de l’objet déterminent la position etla taille de la source de lumière.

Il existe un exemple de scène nommée "arealight.ay" distribué avec Ayam, voir aussi les imagessuivantes de cette scène qui ont été créées avec BMRT 2.6 comme moteur de rendu :

Table 32: Area Light (l) and Point Light (r)

Page 122: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 122

4.2.5 Les matériaux

Figure 47: Exemples de matériaux (bois, céramique et marbre veiné)

Les objets Material sont utilisés pour attacher les attributs RenderMan et les ombres aux objetsgéométriques. Voir aussi l’image ci-dessus qui a été rendue avec BMRT 2.6 et utilise des matériaux avec lesombres suivantes, qui sont distribuées avec le rendu : wood2, ceramic, veinedmarble.

Tant que des objets géométriques sont liés à un objet matériau, cet objet matériau ne peut pas être supprimé.

Le tableau suivant énumère brièvement certaines capacités de l’objet Materiau.

Type Parent of Material Converts to / Provides Point EditMaterial No N/A N/A No

Table 33: Material Object Capabilities

La propriété RiAttributes

En utilisant cette propriété standard et les attributs RenderMan spécifiques au BMRT, il est possible dedéfinir des attributs RenderMan. Veuillez vous référer à la documentation de l’interface RenderMan et à ladocumentation du BMRT pour des informations plus détaillées sur les attributs spécifiques du RenderMan.

• "Color", tla couleur de l’objet. Si l’une des entrées est définie à une valeur négative (par exemple-1), la couleur ne sera pas du tout définie pour cet objet, c’est-à-dire qu’aucun appel RiColor ne seraémis lors de l’exportation.

• "Opacity", l’opacité de l’objet, la valeur par défaut (255 255 255) signifie que l’objet est totalementopaque. Si l’une des entrées est définie à une valeur négative (par exemple -1), l’opacité ne sera pas dutout définie pour cet objet, c’est-à-dire qu’aucun appel RiOpacity ne sera émis lors de l’exportation.

• "ShadingRate", détermine la fréquence d’évaluation des ombres pour un échantillon.

• "Interpolation", détermine comment les valeurs de retour calculées par les ombres sont inter-polées à travers une primitive géométrique.

• "Sides", détermine combien de côtés de la surface d’une primitive géométrique doivent être om-brés.

• "BoundCoord", définit le système de coordonnées dans lequel le déplacement lié est exprimé.

• "BoundVal", valeur de la limite de déplacement.

Page 123: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 123

• "TrueDisp", active ou désactive les déplacements réels. Par défaut, désactivé.

• "CastShadows", détermine comment l’objet projette des ombres : la valeur par défaut "Os"signifie que l’objet projette des ombres en fonction de son opacité ; "None" l’objet ne projette aucuneombre ; "Opaque" l’objet est complètement opaque et projette des ombres ; "Shade" l’objet a unmodèle d’opacité complexe déterminé par son nuanceur de surface, qui est utilisé dans les calculsd’ombres.

• "Camera", "Reflection", et "Shadow" changent les attributs de visibilité.

Les propriétés "Surface", "Displacement", "Interior" et "Exterior"

Ces propriétés vous permettent de définir des ombres pour l’objet matériau, veuillez vous référer à la section4.10.4 Propriété Shader (page 250) pour des informations sur la manière de traiter les GUI de propriétés desombres.

Les ombres de surface peuvent être utilisés pour coder de manière procédurale les modèles d’éclairage etles textures. Les ombres de déplacement peuvent déformer l’objet lors du rendu. Les ombres intérieureset extérieures sont appelées ombres de volume et peuvent être utilisés pour modifier des effets optiquesspéciaux, en codant la façon dont la lumière est affectée lorsqu’elle traverse un objet.

La propriété MaterialAttr

La propriété MaterialAttr contient des attributs liés à la gestion des objets Matérial :

• "Materialname" indique le nom du matériau. Notez que les noms de matériaux doivent êtreuniques dans une scène. Si deux matériaux portant le même nom existent, seul le premier matériaucréé avec ce nom est "enregistré" et peut donc être relié à des objets géométriques.

• "Refcount" indique combien d’objets géométriques sont connectés à ce matériau. Notez que lesobjets géométriques connectés ou de référence ne doivent pas nécessairement exister dans la scène,ils peuvent tout aussi bien résider temporairement dans le presse-papiers des objets.

• "Registered" indique si ce matériau peut être connecté à des objets géométriques, voir la discus-sion sur les noms de matériaux ci-dessus.

Effets du glisser-déposer

Lorsque des objets géométriques sont déposés sur un objet Material, ils seront reliés à cet objet Material.

Exportation RIB

Les objets matériaux n’apparaissent en sortie RIB que s’ils sont connectés à un objet géométrique (parexemple : Box).

Les déclarations RIB exactes utilisées dépendent de votre configuration et du réglage des préférences"RIB-Export/RIStandard".

Si tous les éléments de la propriété MaterialAttr sont laissés sur leurs valeurs par défaut, seules la couleur etl’opacité seront écrites dans le RIB :

Page 124: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 124

RiColor(...);

RiOpacity(...);

Après que les éléments de la propriété MaterialAttr, la surface, le déplacement, les ombres intérieures etextérieures (s’i elles sont attachées au matériau) seront exportées, tous les paramètres des ombres serontcorrectement déclarés :

RiDeclare("Ka", "float");

...

RiSurface("Ka", 0.9, ...);

...

Après la description du matériau, les RiAttributs personnalisés et les coordonnées de texture des balisesseront exportés.

Aucune tentative n’est faite pour réordonner ou trier les objets dans un niveau en fonction des matériaux quileur sont attachés, ils seront plutôt exportés dans l’ordre de leur apparition dans le niveau et ainsi chaqueobjet avec un matériau sera également précédé d’une spécification complète du matériau comme décrit ci-dessus.

Voici un exemple complet de description d’un matériau avec le nuanceur de surface wood2 appliqué sur unesphère :

...

Color 0.862745 0.862745 0.862745

Opacity 1 1 1

Declare "Ka" "float"

Declare "Kd" "float"

Declare "Ks" "float"

Declare "roughness" "float"

Declare "ringscale" "float"

Declare "txtscale" "float"

Declare "lightwood" "color"

Declare "darkwood" "color"

Declare "grainy" "float"

Surface "wood2" "Ka" [1] "Kd" [0.75] "Ks" [0.4] "roughness" [0.1]

"ringscale" [15] "txtscale" [1] "lightwood" [0.686275 0.439216 0.247059]

"darkwood" [0.34902 0.219608 0.0784314] "grainy" [1]

Sphere 1 -1 1 360

...

Page 125: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 125

4.2.6 L’objet Level (niveau)

Les objets Level peuvent être utilisés pour construire des hiérarchies d’objets et effectuer des opérationsCSG.

Ayam ne propose pas de concept de couches, mais en regroupant les objets à l’aide de niveaux et des outilsde masquage et d’affichage, la fonctionnalité des couches peut être émulée dans une certaine mesure.

L’organisation de la scène et le travail en niveaux augmentent également la vitesse de mise à jour de l’arbredes objets, car seuls le niveau actuel et ses sous-niveaux sont soumis à une mise à jour de l’arbre si quelquechose change dans la hiérarchie des objets.

Notez que les objets enfants d’un niveau héritent des transformations, des matériaux, des attributs et desombres. L’héritage des transformations, par exemple, signifie:Si vous avez un patch NURBS dans un niveau qui est traduit en (10,0,0), l’origine du système de coordon-nées locales du patch NURBS sera située à (10,0,0). Si vous décidez de déplacer le patch d’une valeur de 5dans la direction X en fixant une valeur correspondante dans la propriété Transformations de l’objet patch,le système de coordonnées locales du patch sera placé à (15,0,0) en coordonnées mondiales, c’est-à-dire quele point de contrôle (1,0,0) sera à (16,0,0).

Notez également que depuis lAyam 1.12, les objets de niveau fournissent leurs objets enfants à leurs objetsparents sous forme de liste. Cela signifie que la hiérarchie suivante est désormais valable :

+-Skin

+-Level

| NCurve

| NCurve

| ICurve

\ NCurve

Toutes les courbes NURBS et les objets qui peuvent être convertis en courbes NURBS (dans cet exemple :l’ICurve) seront fournis à le revêtement par l’objet Level. Les attributs de transformation du niveau serontajoutés aux objets fournis. Les objets qui ne fournissent pas le type souhaité seront ignorés en silence (sansnotification).

Le tableau suivant énumère brièvement certaines capacités de l’objet Level.

Type Parent of Material Converts to / Provides Point EditLevel Any+ Yes N/A / Children+ No

Table 34: Level Object Capabilities

La propriété LevelAttr

Les niveaux n’ont pas beaucoup de propriétés spécifiques aux types d’objets, vous pouvez simplementmodifier le type du niveau en utilisant l’attribut "Type".

Les niveaux de type "Level" regroupent simplement les objets et héritent des attributs.

Les niveaux de type "Union", "Intersection", et "Difference" sont utilisés pour construire leshiérarchies des CSG. En outre, ils héritent d’attributs. Notez qu’Ayam n’est actuellement pas en mesure

Page 126: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 126

d’afficher correctement les résultats des opérations CSG, tous les objets sont toujours dessinés complète-ment, même si une opération CSG en couperait des parties.

Toutefois, depuis Ayam 1.8, il existe un plugin capable de prévisualiser les résultats des opérations du CSG,voir aussi la section 8.10 Aperçu CSG à l’aide du plugin AyCSG (page 504).

La hiérarchie des objets permettant de découper une partie d’une boîte à l’aide d’une sphère ressemble àceci :

+-Level_of_Type_Difference(Level)

| Box

\ Sphere

Plus de deux objets peuvent être des arguments d’une opération de CSG :

+-Level_of_Type_Difference(Level)

| Box

| Sphere

\ Sphere

Dans cet exemple, les deux sphères découperaient des parties de la boîte.

De nouvelles primitives solides peuvent être créées avec des niveaux de type "Primitive".

+-Level_of_Type_Difference(Level)

+-Level_of_Type_Primitive(Level)

| | Sphere_blue

| \ Disk_red

\ Box_grey

Dans cet exemple, une sphère ouverte avec "ThetaMax" 180,0 (un hémisphère) est manuellement coifféepar un objet disque. Les deux objets doivent être placés dans un niveau de type "Primitive" car chaqueobjet seul est une surface ouverte et donc pas une primitive CSG valide. Les deux objets qui forment lanouvelle primitive utilisent un matériau différent. De plus, une boîte grise coupe une partie de l’hémisphèremulticolore. La hiérarchie des CSG ci-dessus est disponible sous forme de fichier de scène d’exemple"multicolcsg.ay".

Voir aussi cette image:

Figure 48: Exemple CSG multicolore

Notez qu’Ayam n’est pas en mesure de vérifier si votre nouvelle primitive conserve la règle de la proximitétotale. Par exemple, si le disque dans l’exemple ci-dessus ne recouvre pas totalement la sphère (cela se

Page 127: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 127

produit si le "ThetaMax" du disque n’est pas 360.0 ou s’il n’est pas placé exactement sur la sphère), Ayamne se plaindrait pas lors de l’exportation RIB. L’image rendue présenterait cependant de graves erreurs.

En outre, il n’est pas nécessaire d’inclure les objets enfants normaux (par exemple une quadratrique avecl’attribut "Closed" réglé sur on) des CSG Level dans les primitive Level pour l’exportation RIB. Ceci estfait par Ayam automatiquement si nécessaire.

Exportation RIB

La représentation exacte d’un niveau dans la production de RIB dépend de son type.

Les objets de niveau normal apparaissent dans les sorties RIB comme des hiérarchies de transformation :

RiTransformBegin();

RiTranslate(. . .);

RiRotate(. . .);

RiScale(. . .);

«Children RIB output»

RiTransformEnd();

Les objets de niveau de type Union, Difference ou Intersection émettront en outre un appel à SolidBegin, etchaque enfant sera correctement déclaré comme primitive, par exemple :

RiTransformBegin();

«Level Transformations»

RiSolidBegin(RI_DIFFERENCE);

RiSolidBegin(RI_PRIMITIVE);

«Child #1 RIB output»

RiSolidEnd();

RiSolidBegin(RI_PRIMITIVE);

«Child #2 RIB output»

RiSolidEnd();

RiSolidEnd();

RiTransformEnd();

Page 128: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 128

4.2.7 L’objet Instance

Figure 49: Exemple d’instanciation

Les objets d’instance sont des copies légères transformées d’un seul ou de plusieurs objets et peuvent donccontribuer à économiser la consommation de mémoire dans les scènes comportant de nombreux objetssimilaires ou répétitifs. Voir également l’image ci-dessus, où il n’y a qu’un seul ensemble de patchs stockéspour les trois éléphants. La quantité d’espace économisé peut être très importante, en fonction de la scèneréelle et des niveaux hiérarchiques utilisés. Cependant, s’il n’y a pas d’objets similaires dans la scène,l’instanciation peut difficilement être utilisée. Dans ce contexte, similaire signifie "identique à l’exceptionde la propriété de transformation".

Le terme "instance" est malheureusement trompeur (et peut être très déroutant si vous êtes habitué à laterminologie de la programmation orientée objet), mais c’est le terme qui semble être utilisé et compris parla plupart des infographistes pour ce mécanisme. Un meilleur terme serait link, car un objet instance a lesmêmes propriétés de base qu’un lien dans un système de fichiers Unix. Un lien n’est qu’un pointeur versun fichier original, il en va de même pour un objet instance : c’est juste un pointeur vers un objet original(ici aussi appelé objet maître). Un lien peut être placé n’importe où dans le système de fichiers, un objetinstance peut être placé n’importe où dans la hiérarchie de la scène, et en outre, il peut être transformé.

Si l’objectif initial des instances est d’économiser de la mémoire, dans le contexte des objets-outils, lesinstances servent également à diffuser des données géométriques à travers la hiérarchie de la scène pourfaire dépendre les objets-outils les uns des autres (voir aussi la section 8.2 Le concept de modélisationoutils-objets (page 485)).

Notez que dans le contexte des objets-outils, les objets d’instance sont les seuls objets qui font l’objet d’unedeuxième série de dispositions.

Quelques règles simples pour l’instanciation :• Aucune instance ne peut être créée d’objets des types suivants : Root, View, Instance, Material, Light.

N’essayez pas de tromper Ayam et créer des instances de niveaux qui contiennent les types d’objetsmentionnés ci-dessus, les choses vont mal tourner !

• Il est cependant permis de mettre certaines instances dans un objet de niveau et de créer des instancesde ce niveau (c’est ce qu’on appelle parfois instanciation hiérarchique).

• Mais les instances d’un niveau ne peuvent pas être placées dans le même niveau ou dans un de sesenfants (ce serait uneinstanciation récursive, qui n’est pas supporté par Ayam).

• L’objet original/maître ne peut pas être supprimé de la scène tant qu’il y a des instances de cet objetdans la scène ou dans le presse-papiers de l’objet.

Page 129: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 129

Si la suppression d’un objet échoue, et que le message d’erreur se plaint que le compteur de référence n’estpas à zéro, alors la dernière règle est sur le point d’être violée. Nettoyez le presse-papiers en utilisant le menu"Special/Clipboard/Paste (Move)" et supprimez ou résolvez d’abord toutes les références.

Ayam peut également créer automatiquement des instances pour des scènes complètes (voir section 8.8Instanciations automatiques (page 503)).

Pour trouver facilement l’objet maître d’une instance, il suffit de sélectionner l’instance, puis d’utiliserl’entrée du menu principal : "Edit/Master".

Le tableau suivant énumère brièvement certaines capacités de l’objet Instance.

Type Parent of Material Converts to / Provides Point EditInstance No No Master No*

Table 35: Capacités de l’objet Instance

Instances sans Transformations (References)

Les objets d’instance prennent en charge le type de balise "RP" d’une manière particulière : si la pro-priété "Transformations" est supprimée à l’aide d’une balise "RP", l’instance ne fournit pas auxobjets un ensemble propre d’attributs de transformation (pour faciliter la construction de la hiérarchie avecpar exemple les objets "ExtrNC"/"ExtrNP", où seuls des pointeurs vers des objets déjà existants sontnécessaires et où l’on s’attend à ce que l’instance reflète exactement le maître, y compris ses attributs detransformation).1

Les outils d’extraction de courbes/surfaces ajoutent automatiquement une telle balise aux instances qu’ilscréent.

Pour créer manuellement une telle balise, sélectionnez l’objet Instance et entrez dans la console Ayam :

»addTag RP Transformations

Ce cas particulier d’une instance est parfois aussi appelé référence.

Instances et presse-papier

Cette section contient des informations supplémentaires sur les instances et sur ce qui leur arrive lorsqu’ellessont copiées et collées à l’aide du presse-papiers des objets.

Toutes les copies des objets d’instance, qui sont créées par le presse-papiers des objets, pointent toujoursvers le même objet maître original. Il n’est donc pas possible de copier un objet maître et certaines de sesinstances, de sorte que les nouvelles instances pointent vers le maître nouvellement créé.

Par exemple, lorsque les deux objets suivants sont copiés et recollés sur la scène

--NCurve <-----.

|

--Instance -----’

1 Depuis 1.16.

Page 130: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 130

the following scene hierarchy results:

--NCurve <-----+-.

| |

--Instance -----’ |

| !

--NCurve |

|

--Instance -------’

La nouvelle instance pointe toujours vers le master original et non pas vers la copie du master.

Néanmoins, il est possible de déplacer des ensembles complets de masters et leurs instances dans la hiérar-chie de la scène en utilisant le glisser-déposer dans l’arborescence ou en utilisant le presse-papier de l’objetavec "Edit/Cut" puis "Special/Clipboard/Paste (Move)".

Conversion

Un objet Instance peut être converti en un objet ordinaire en utilisant l’entrée du menu principal"Tools/Convert". Ce processus est également appelé résolution de l’instance.

Pour résoudre tous les objets d’instance dans une scène en objets normaux, également l’entrée de menuprincipal : "Special/Instances/Resolve all Instances" peut être utilisée.

Exportation RIB

L’exportation d’instances RIB n’utilise pas la fonction RiInstance de l’interface RenderMan, mais plutôt lemécanisme ReadArchive plus flexible.

Cela signifie que chaque objet principal de la scène sera écrit dans une archive séparée (fichier RIB) sur ledisque, et que chaque instance fera en sorte que ce fichier d’archive soit lu lors du rendu du fichier RIB.Le fichier RIB qui en résulte n’est pas autonome : plusieurs fichiers doivent être transférés vers d’autressystèmes lorsque le rendu doit s’y produire.

Ce comportement peut être modifié en utilisant le paramètre de préférence d’exportation RIB"ResInstances" : Si cette option est activée, toutes les instances seront temporairement résolues enobjets normaux avant d’être exportées vers le RIB. Le fichier RIB résultant sera alors autonome, mais prob-ablement aussi beaucoup plus volumineux.

Page 131: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 131

4.2.8 L’objet Clone

Figure 50: L’objet clone (bleu) avec courbe de trajectoire (blanc)

L’objet Clone permet de créer et de contrôler facilement un nombre quelconque d’instances d’un seul objet,ci-après appelé l’objet cloné. Les instances peuvent être transformées (chacune d’un certain montant ex-primé comme la différence entre deux instances) ou placées sur une courbe de trajectoire (voir aussi l’imageci-dessus).

Si un deuxième objet est présent en tant qu’enfant de l’objet Clone, il est automatiquement traité comme unecourbe de trajectoire (ou chemin). Le processus de placement des clones sur la trajectoire est très similaireà l’opération de balayage (voir aussi la section 4.7.4 Les surfaces par glissements (Sweep) (page 184)).

Ainsi, la hiérarchie d’objets par défaut d’un objet Clone ressemble à ceci :

+-Clone

| Cloned-Object

\ [Trajectory(NCurve)]

Si vous utilisez une courbe de trajectoire pour placer les clones, vous voudrez peut-être cacher l’objet clonéet y ajouter une balise "NoExport". Sinon, l’objet original apparaîtra deux fois, sur la trajectoire et sursa position normale, non transformée. Notez que les attributs de transformation de l’objet cloné serontcomplètement écrasés lorsque vous placerez les clones sur la courbe de la trajectoire. Si l’objet clonépossède des attributs d’échelle ou de rotation distincts, il doit être placé dans un objet de niveau commecelui-ci :

+-Clone

+-Level

|\ Cloned-Object with non-standard Scale/Rotation

\ Trajectory(NCurve)

Il n’est pas possible de créer des clones à partir d’objets qui ne sont pas des objets maîtres d’objetsd’instance, par exemple, il n’est pas possible de cloner des objets Light ou des objets Material. Toutefois,(depuis Ayam 1.7), il est possible d’utiliser des instances comme objets paramètres.

Si un objet d’instance est utilisé comme objet cloné sur une trajectoire, il peut être placé dans un niveau etla balise "NoExport" peut être ajoutée à l’objet de niveau (car l’ajout de balises aux objets d’instance estplus impliqué), voir la hiérarchie suivante pour un exemple :

Page 132: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 132

+-Clone

+-Level with NoExport tag

|\ Instance

\ Trajectory(NCurve)

Depuis Ayam 1.20, la fonction de miroir de l’objet Clone est réalisée par le nouvel objet Mirror (voir aussila section 4.2.9 L’objet miroir (Mirror) (page 134)).

L’installation de miroirs doit être intégrée à l’objet Clone auparavant.

Le tableau suivant énumère brièvement certaines capacités de l’objet Clone.

Type Parent of Material Converts to / Provides Point EditClone Any+ No Children+ No*

Table 36: Capacités de l’objet Clone

La propriété CloneAttr

Les attributs suivants contrôlent le processus de clonage :

• "NumClones" est le nombre de clones à créer.

• "Rotate" n’est utilisé que si une courbe de trajectoire est présente. Si elle est activée, tous lesclones seront alignés selon la normale de la courbe de trajectoire. Sinon, les attributs de rotation neseront pas touchés lorsque le clone sera placé sur la trajectoire.

• "Translate_X", "Translate_Y", "Translate_Z", "Rotate_X", "Rotate_Y","Rotate_Z", "Scale_X", "Scale_Y", "Scale_Z", ces attributs contrôlent la transforma-tion des instances créées par l’objet Clone. Ces attributs spécifient les valeurs de différence en-tre deux instances : le clone "n+1" est compensé par "Translate_X", "Translate_Y",et "Translate_Z" du clone précédent "n". Il est également tourné par "Rotate_X","Rotate_Y", et "Rotate_Z" et mis à l’échelle par "Scale_X", "Scale_Y", "Scale_Z"par rapport au clone précédent. Notez cependant que les attributs de transformation n’affectent pas lepremier clone.

Les attributs de transformation sont également en vigueur si une courbe de trajectoire est présente, ilsseront appliqués après le déplacement de l’instance sur la trajectoire et sa rotation.1

Le tableau suivant résume les attributs de transformation utilisés dans les modes de clonage respectifs.

Mode Use Child Transform Use CloneAttrib Transform Use Clone TransformClone No Yes Yes

Trajectory Yes Yes YesMirror Yes N/A Yes

Table 37: Exemples de paramétrisation des clones

1 Depuis 1.13.

Page 133: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 133

Conversion

L’objet Clone peut être converti en objets ordinaires en utilisant l’entrée de menu principal"Tools/Convert".

Lors de la conversion, un objet Level sera créé, qui contient l’objet original et les clones.

Exportation RIB

Les objets clones apparaissent dans les sorties RIB comme un certain nombre d’objets réels, chacun avecdes attributs de transformation différents.

Comme les objets originaux apparaîtront également dans la sortie du RIB, il est suggéré d’ajouter une balise"NoExport" à l’original si le Clone est en mode trajectoire.

Page 134: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 134

4.2.9 L’objet miroir (Mirror)

Figure 51: L’objet miroir (blue) à partir d’une courbe (white)

L’objet Miroir permet de créer et de contrôler facilement un nombre quelconque d’instances miroirs d’uncertain nombre d’objets.1

Le ou les objets originaux et leurs homologues en miroir seront fournis par l’objet Mirror à leur objet parentrespectif (normalement, les objets outils ne fournissent pas leurs enfants non modifiés). En outre, l’ordre desobjets miroirs sera inversé de sorte qu’il soit possible d’utiliser un seul objet Mirror (avec une ou plusieurscourbes NURBS comme enfants) comme objet paramètre de par exemple un objet Skin :

+-Skin

+-Mirror

\ NCurve

+-Skin

+-Mirror

| NCurve_1(NCurve)

| NCurve_2(NCurve)

\ NCurve_3(NCurve)

Le premier objet Skin dans l’exemple ci-dessus ne peut fonctionner que parce que l’objet Mirror four-nit également la courbe NCurve non modifiée. Le deuxième objet Skin ne peut fonctionner correctementque parce que l’ordre des objets fournis est inversé, de sorte qu’il voit les courbes dans l’ordre suivant :"NCurve_1", "NCurve_2", "NCurve_3", "Mirrored_NCurve_3", "Mirrored_NCurve_2","Mirrored_NCurve_1".

Le tableau suivant énumère brièvement certaines capacités de l’objet Mirror.

Type Parent of Material Converts to / Provides Point EditMirror Any+ No Children+ No*

Table 38: Capacités de l’objet Mirror

La propriété MirrorAttr

Les attributs suivants contrôlent le processus miroir :

• "Plane" permet de sélectionner le plan autour duquel la mise en miroir doit se produire (plan YZ,XZ ou XY).

1 Depuis 1.20.

Page 135: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 135

Conversion

L’objet Mirror peut être converti en objet ordinaire en utilisant l’entrée de menu principale"Tools/Convert".

Lors de la conversion, un objet Level sera créé, qui contient les objets originaux et les contreparties en miroir(ces dernières dans l’ordre inverse).

Exportation RIB

Les objets Mirror apparaissent dans la sortie RIB comme un certain nombre d’objets réels, chacun avec desattributs de transformation différents.

Page 136: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 136

4.2.10 L’objet sélection (Select)

L’objet Select peut être utilisé dans des hiérarchies d’objets outils pour sélectionner un objet dans une listed’objets fournis.1

Il est également possible de sélectionner plusieurs objets et plages (même des plages décroissantes quiconduisent à des ordres inversés).2

In the following example hierarchy, a single patch from multiple provided patches of the Sweep object (theswept surface, a bevel, or a cap) could be selected by the Select object and delivered upstream to the ExtrNCobject.

+-Sweep

+-Revolve

+-ExtrNC

+-Select

\ Instance_of_Sweep(Instance)

Notez que cet exemple n’a qu’un but illustratif ; la hiérarchie présentée n’est pas exactement utile, car l’objetExtrNC comporte une fonction de sélection intégrée. Par conséquent, l’objet Select doit être utilisé dans desscénarios où une fonction de sélection n’existe pas ou est difficile à mettre en oeuvre, comme par exempledans les scripts d’objets Script.

Le tableau suivant énumère brièvement certaines capacités de l’objet Select.

Type Parent of Material Converts to / Provides Point EditSelect Any+ No N/A / Children+ No

Table 39: Capacités de l’objet Select

La propriété SelectAttrib

L’attribut suivant contrôle le processus de sélection :• "Indices", les valeurs de l’indice sont basées sur zéro. Les indices multiples doivent être séparés

par ",", des plages peuvent être spécifiées comme ceci : "1-4", des plages inversées sont autorisées("4-1") et créeront une liste d’objets d’ordre inversé. L’index spécial "end" (ou abrégé "e")désigne le dernier de tous les objets fournis. Un index peut apparaître plusieurs fois, ce qui entraînela livraison en amont de plusieurs copies de l’objet sélectionné. La plage de l’index s’étend sur tousles objets fournis du type souhaité parmi tous les objets enfants. Cela signifie que les objets fournisde plusieurs objets enfants différents de l’objet sélectionné peuvent être mélangés. Les plages et lesindex syntaxiquement incorrects sont ignorés sans notification. Exemples :

– "0,2" – fournit les premier et troisième objets fournis en amont ;– "end0" – fournit tous les objets fournis en amont dans l’ordre inverse ;– "0,0,0" – fournit trois copies du premier objet fourni en amont ;– "0,4-end,1" – fournit le premier, le cinquième (s’il y en un) jusqu’au dernier, et le deuxième

objet en amont.

Exportation RIB

Les objets sélectionnés n’apparaissent jamais dans la sortie RIB.1 Depuis 1.14. 2 Depuis 1.16.

Page 137: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 137

4.2.11 L’objet RiInc

Figure 52: RiInc Example

Les objets RiInc peuvent être utilisés pour inclure dans vos scènes des objets ou des parties de scènes entièresqui ne sont disponibles que sous forme d’un morceau de RIB, appelé archive. Ils peuvent donc aider à gérerdes scènes énormes qui sont trop lourdes pour être traitées en totalité dans Ayam.

Les objets RiInc dessinent une simple boîte de délimitation avec des lignes pointillées à la place du contenude l’archive ; ceux-ci ne feront partie de la scène que lorsqu’elle sera exportée vers un RIB. Voir aussil’image ci-dessus. Si un objet RiInc a des enfants, ils seront dessinés au lieu de la boîte de délimitation.Cela permet de mieux rendre compte de la forme réelle des objets dans l’archive incluse.1 Comme la boîtede délimitation, les enfants n’apparaissent jamais non plus dans le RIB.

Notez que l’Ayam ne peut pas vérifier si la boîte de délimitation ou les enfants correspondent effectivementau contenu de l’archive incluse.

Notez également que les archives peuvent être créées facilement en utilisant l’entrée du menu principal"Special/RIB-Export/Selected Objects".

Le tableau suivant énumère brièvement certaines capacités de l’objet RiInc.

Type Parent of Material Converts to / Provides Point EditRiInc Any No N/A No

Table 40: Les capacités de l’objet RiInc

La propriété RiIncAttr

Les attributs suivants contrôlent le processus d’inclusion :

• Using "File" le nom du fichier de l’archive RIB à inclure est spécifié.

• "Width", "Height", et "Length" déterminent la taille d’une boîte, qui sera dessinée commeune représentation géométrique de l’archive RIB (si aucun enfant n’est présent).

Exportation RIB

Les objets RiInc sont exportés comme une déclaration simple :

ReadArchive <filename>

1 Depuis 1.26.

Page 138: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 138

4.2.12 L’objet RiProc

Les objets RiProc peuvent être utilisés pour inclure des objets de procédure ou des archives externes dansvos scènes. Contrairement aux archives incluses via un objet RiInc, ces archives ne seront incluses par lemoteur de rendu RenderMan que lorsque la boîte de délimitation spécifiée est visible pour la caméra encours.

Le tableau suivant énumère brièvement certaines capacités de l’objet RiProc.

Type Parent of Material Converts to / Provides Point EditRiProc No No N/A No

Table 41: Les capacités de l’objet RiProc

La propriété RiProcAttr

Les attributs suivants contrôlent l’objet RiProc :

• "Type" définit le type de l’objet de procédure qui est l’un des éléments suivants :"DelayedReadArchive", "RunProgram", ou "DynamicLoad".

• En utilisant "File", vous spécifiez le nom de fichier de l’archive RIB, du programme ou de l’objetdynamique partagé (selon le type de l’objet procédural).

• En utilisant "Data" des arguments supplémentaires peuvent être fournis aux objets procéduraux detype "RunProgram" et "DynamicLoad".

• "MinX", "MaxX", "MinY", "MaxY", "MinZ", et "MaxZ" indiquent la taille de la boîte en-globante des objets que la procédure créera ou que l’archive contient.

Exportation RIB

Les objets RiProc sont exportés sous la forme d’une seule instruction

RiProcedural

.

Page 139: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 139

4.3 CSG / primitives des solides (Solid)

Ces objets servent de primitives géométriques dans les hiérarchies des CSG.

4.3.1 L’objet boîte (Box)

C’est une boîte, centrée à l’origine du système de coordonnées de l’objet.

Le tableau suivant énumère brièvement certaines capacités de l’objet Box.

Type Parent of Material Converts to / Provides Point EditBox No Yes NPatch∗ No*

Table 42: Capacités de l’objet Box

La propriété BoxAttr

Les paramètres suivants contrôlent la forme de la boîte :

• "Width" est la largeur de la boîte (taille de la boîte dans la direction de l’axe X du système decoordonnées de l’objet).

• "Length" est la longueur de la boîte (taille de la boîte dans la direction de l’axe Z du système decoordonnées de l’objet).

• "Height" est la hauteur de la boîte (taille de la boîte dans la direction de l’axe Y du système decoordonnées de l’objet).

Conversion

Un objet Box peut être converti en trois patchs NURBS en utilisant l’entrée du menu principal"Tools/Convert".1 Voir la section 6.6.2 Boîte avec topologie cylindrique (page 441) pour un objetScript convertit en un seul patch NURBS.

Exportation RIB

L’objet Box sera toujours exporté sous forme de six patchs bilinéaires.

1 Depuis 1.8.2.

Page 140: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 140

4.3.2 L’objet sphère (Sphere)

c’est une sphère, centrée à l’origine du système de coordonnées de l’objet.

Le tableau suivant énumère brièvement certaines capacités de l’objet Sphere.

Type Parent of Material Converts to / Provides Point EditSphere No Yes NPatch+ No*

Table 43: Capacités de l’objet Sphere

La propriété SphereAttr

Les paramètres suivants contrôlent la forme de la sphère :

• "Closed" indique si l’objet doit être automatiquement scellé (fermé par des surfaces bouchon cor-respondantes).Ce n’est que lorsque cette option est activée que la sphère peut être utilisée en toute sécurité dans lecadre des opérations de la CSG.

• "Radius" est le rayon de la sphère, la valeur par défaut est 1.

• "ZMin" est la limite inférieure de la sphère sur l’axe Z, la valeur par défaut est -1.

• "ZMax" est la limite supérieure de la sphère sur l’axe Z, la valeur par défaut est 1.

• "ThetaMax" est l’angle de balayage de la sphère en degrés, la valeur par défaut est 360.

Conversion

Un objet Sphère peut être converti en patchs NURBS en utilisant l’entrée du menu principal"Tools/Convert". Cette conversion conserve tous les paramètres de la sphère.1

Si la sphère est fermée, un objet Level englobant sera créé et les bouchons suivront la sphère dans l’ordresuivant : bouchon en forme de disque à zmin, bouchon en forme de disque à zmax, bouchon à theta 0,bouchon à thetamax.

Exportation RIB

Un objet Sphere apparait dans un RIB simplement sous la forme

RiSphere(...);

ou, si "Closed" est activée et "ZMin", "ZMax", ou "ThetaMax" ont d’autres valeurs que celles pardéfaut, sous la forme d’une hiérarchie CSG complexe comprenant au maximum deux sphères, deux cylindreset huit disques.

1 Depuis 1.8.2.

Page 141: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 141

4.3.3 L’objet disque (Disk)

C’est un disque dans le plan XY, centré à l’origine du système de coordonnées de l’objet.

Le tableau suivant énumère brièvement certaines capacités de l’objet Disk.

Type Parent of Material Converts to / Provides Point EditDisk No Yes NPatch No*

Table 44: Capacités de l’objet Disk

La propriété DiskAttr

Les paramètres suivants contrôlent la forme du disque :

• "Radius" est le rayon du disque, la valeur par défaut est 1.

• "ZMin" déplace le disque le long de l’axe Z, la valeur par défaut est 0.

• "ThetaMax" est l’angle de balayage du disque en degrés, la valeur par défaut est 360.

Conversion

Un objet disque peut être converti en patch NURBS en utilisant l’entrée du menu principal"Tools/Convert". T Cette conversion conserve tous les paramètres du disque.1

Exportation RIB

L’objet Disk sera toujours exporté sous forme de simple disque :

RiDisk(...);

1 Depuis 1.8.2.

Page 142: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 142

4.3.4 L’objet Cône (Cone)

C’est un cône, centré à l’origine du système de coordonnées de l’objet, dont la base se trouve dans le planXY.

Le cône standard est toujours pointu. Voir la section 6.6.1 Cône tronqué (page 440) pour un objet Script quiimplémente un cône tronqué.

Le tableau suivant énumère brièvement certaines capacités de l’objet Cône.

Type Parent of Material Converts to / Provides Point EditCone No Yes NPatch+ No*

Table 45: Capacités de l’objet Cone

La propriété ConeAttr

Les paramètres suivants contrôlent la forme du cône :

• "Closed" permet d’indiquer si l’objet doit être automatiquement scellé (fermé par des surfacesbouchon correspondantes).Ce n’est que lorsque cette option est activée que le cône peut être utilisé en toute sécurité dans lesopérations du CSG.

• "Radius" est le rayon du cône à la base, la valeur par défaut est 1.

• "Height" est la hauteur du cône, la valeur par défaut est 1.

• "ThetaMax" est l’angle de balayage du cône en degrés, la valeur par défaut est 360.

Conversion

Un objet Cone peut être converti en patchs NURBS en utilisant l’entrée du menu principal"Tools/Convert". Cette conversion conserve tous les paramètres du cône.1

Si le cône est fermé, un objet Level englobant sera créé et les bouchons suivront le cône dans l’ordre suivant: bouchon en forme de disque à la base, bouchon à l’theta 0, bouchon à l’thetamax.

Exportation RIB

L’objet Cône apparaît dans la sortie RIB comme simple

RiCone(...);

ou, si "Closed" est activé et "ThetaMax" a une valeur différente de la valeur par défaut, comme unehiérarchie complexe des CSG comprenant tout au plus un cône, un disque et deux polygones.

1 Depuis 1.8.2.

Page 143: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 143

4.3.5 L’objet cylindre (Cylinder)

c’est d’un cylindre, centré à l’origine du système de coordonnées de l’objet.

Le tableau suivant énumère brièvement certaines capacités de l’objet Cylinder.

Type Parent of Material Converts to / Provides Point EditCylinder No Yes NPatch+ No*

Table 46: Capacités de l’objet Cylinder

La propriété CylinderAttr

Les paramètres suivants contrôlent la forme du cylindre :

• "Closed" permet de déterminer si l’objet doit être automatiquement scellé (fermé par des surfacesbouchon correspondantes).Ce n’est que lorsque cette option est activée que le cylindre peut être utilisé en toute sécurité dans lesopérations de la CSG.

• "Radius" est le rayon du cylindre, la valeur par défaut est 1.

• "ZMin" détermine l’emplacement Z de la base, la valeur par défaut est -1.

• "ZMax" détermine l’emplacement Z du sommet, la valeur par défaut est 1.

• "ThetaMax" est l’angle de balayage du cylindre en degrés, la valeur par défaut est 360.

Conversion

Un objet cylindrique peut être converti en patchs NURBS en utilisant l’entrée du menu principal"Tools/Convert". Cette conversion conserve tous les paramètres du cylindre.1

Si le cylindre est fermé, un objet Level englobant sera créé et les bouchons suivront le cylindre dans l’ordresuivant : bouchon en forme de disque à zmin, bouchon en forme de disque à zmax, bouchon à theta 0,bouchon à thetamax.

Exportation RIB

L’objet cylindre apparaît dans la sortie RIB simplement comme

RiCylinder(...);

ou, si "Closed" est activé et que "ThetaMax" a une valeur différente de la valeur par défaut, il ap-paraît comme une hiérarchie CSG complexe comprenant au maximum un cylindre, deux disques et deuxpolygones.

1 Depuis 1.8.2.

Page 144: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 144

4.3.6 L’objet tore (Torus)

C’est un tore, centré à l’origine du système de coordonnées de l’objet. Un tore est une forme de beignet, quirésulte du balayage d’un petit cercle (qui a été suffisamment déplacé le long de X) autour de l’axe Z.

Le tableau suivant énumère brièvement certaines capacités de l’objet Torus.

Type Parent of Material Converts to / Provides Point EditTorus No Yes NPatch+ No*

Table 47: Capacités de l’objet Torus

La propriété TorusAttr

Les paramètres suivants contrôlent la forme du tore :

• "Closed" indique si l’objet doit être automatiquement scellé (fermé par des surfaces bouchon cor-respondantes).Ce n’est que lorsque cette option est activée que le tore peut être utilisé en toute sécurité dans lesopérations de la CSG.

• "MajorRad" est le rayon du tore, mesuré depuis l’axe Z jusqu’au centre du petit cercle balayé, lavaleur par défaut est 0,75.

• "MinorRad" est le rayon du cercle balayé, la valeur par défaut est 0,25.

• "PhiMin" détermine un angle pour limiter le cercle balayé, la valeur par défaut est 0.

• "PhiMax" détermine un angle pour limiter le cercle balayé, la valeur par défaut est 360.

• "ThetaMax" est l’angle de balayage du tore en degrés, la valeur par défaut est 360.

Conversion

Un objet torus peut être converti en patchs NURBS en utilisant l’entrée du menu principal"Tools/Convert". Cette conversion conserve tous les paramètres du tore.1

Si le tore est fermé, un objet Level englobant sera créé et les bouchons suivront le tore dans l’ordre suivant: bouchon en forme de disque au thêta 0, bouchon en forme de disque au thêtamax, bouchon en formed’anneau au phimin 0, bouchon en forme d’anneau au phimax.

Exportation RIB

L’objet Torus apparaît dans la sortie RIB simplement comme

RiTorus(...);

ou, si "Closed" est activé et "PhiMin", "PhiMax", ou "ThetaMax" ont des valeurs différentes decelles par défaut, il apparaît comme une hiérarchie CSG complexe comprenant au maximum un tore, deuxdisques et deux hyperboloïdes.

1 Depuis 1.8.2.

Page 145: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 145

4.3.7 L’objet paraboloïde (Paraboloid)

C’est un paraboloïde, centré à l’origine du système de coordonnées de l’objet.

Le tableau suivant énumère brièvement certaines capacités de l’objet Paraboloid.

Type Parent of Material Converts to / Provides Point EditParaboloid No Yes NPatch+ No*

Table 48: Capacités de l’objet Paraboloid

La propriété ParaboloidAttr

Les paramètres suivants contrôlent la forme du paraboloïde :

• "Closed" permet de déterminer si l’objet doit être automatiquement scellé (fermé par des surfacesbouchon correspondantes).Ce n’est que lorsque cette option est activée que le paraboloïde peut être utilisé en toute sécurité dansles opérations du CSG.

• "RMax" est le rayon du paraboloïde à un Z de "ZMax", la base de la surface du paraboloïde, pardéfaut est 1.

• "ZMin" limite la surface du paraboloïde sur l’axe Z, doit être positif, la valeur par défaut est 0.

• "ZMax" limite la surface du paraboloïde sur l’axe Z et détermine la position Z de la base, doit êtrepositive, la valeur par défaut est 1.

• "ThetaMax" est l’angle de balayage du paraboloïde en degrés, la valeur par défaut est 360.

Conversion

Un objet paraboloïde peut être converti en patchs NURBS en utilisant l’entrée du menu principal"Tools/Convert". Cette conversion conserve tous les paramètres du paraboloïde.1

Si le paraboloïde est fermé, un objet Level englobant sera créé et les bouchons suivront le paraboloïde dansl’ordre suivant : bouchon en forme de disque à zmin, bouchon en forme de disque à zmax, bouchon à theta0, bouchon à thetamax.

Exportation RIB

L’objet paraboloïde apparaît dans la sortie RIB comme

RiParaboloid(...);

Ou, si "Closed" est activée et "ZMin", "ZMax", ou "ThetaMax" ont des valeurs différentes de cellespar défaut, il apparaît comme une hiérarchie CSG complexe comprenant au maximum un paraboloïde, deuxdisques et deux patchs bicubes.

1 Depuis 1.8.2.

Page 146: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 146

4.3.8 L’objet hyperboloïde (Hyperboloid)

C’est un hyperboloïde, centré à l’origine du système de coordonnées de l’objet. La forme de l’hyperboloïdesera créée en balayant une ligne spécifiée par deux points dans l’espace autour de l’axe Z. Ainsi, le disque,le cylindre et le cône sont des cas particuliers d’un hyperboloïde.

Le tableau suivant énumère brièvement certaines capacités de l’objet Hyperboloid.

Type Parent of Material Converts to / Provides Point EditHyperboloid No Yes NPatch+ No*

Table 49: Capacités de l’objet Hyperboloid

La propriété HyperboloidAttr

Les paramètres suivants contrôlent la forme de l’hyperboloïde :• "Closed" permet de déterminer si l’objet doit être automatiquement scellé (fermé par des surfaces

de bouchon correspondantes).Ce n’est que lorsque cette option est activée que l’hyperboloïde peut être utilisé en toute sécurité dansles opérations du CSG.

• "P1_X", "P1_Y" et "P1_Z", définissez le point un, la valeur par défaut est (0.1, -0.5).

• "P2_X", "P2_Y" et "P2_Z", définissent le point deux, la valeur par défaut est (1.0, 0.5).

• "ThetaMax" est l’angle de balayage de l’hyperboloïde en degrés, la valeur par défaut est 360.

Conversion

Un objet hyperboloïde peut être converti en patchs NURBS en utilisant l’entrée du menu principal"Tools/Convert". Cette conversion conserve les paramètres de l’hyperboloïde.1

Si l’hyperboloïde est fermé, un objet Level enveloppant sera créé et les bouchons suivront l’hyperboloïdedans l’ordre suivant : bouchon en forme de disque à P1, bouchon en forme de disque à P2, bouchon nonplan à theta 0, bouchon non plan à thetamax.

Exportation RIB

L’objet hyperboloïde apparaît dans la sortie RIB comme

RiHyperboloid(...);

ou, si "Closed" est activé et que "ThetaMax" a une valeur différente de la valeur par défaut, commeune hiérarchie CSG complexe comprenant au maximum un hyperboloïde, deux disques et deux patchs bil-inéaires.

Notez qu’en raison d’une erreur dans le BMRT qui est toujours présente dans la version 2.3.6, l’option"Closed" ne fonctionne pas correctement lorsque "ThetaMax" a une valeur différente de la valeur pardéfaut et que l’hyperboloïde n’a pas d’ombrage de déplacement (displacement shader). En fait, l’utilisationd’une ombre de déplacement avec une quantité de déplacement de 0.0 est une solution de rechange à ce bug(trouvé par T. E. Burge).1 Depuis 1.8.2.

Page 147: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 147

4.4 Les courbes libres

Ces objets sont principalement utilisés comme objets enfants pour les outils de génération de surface.

4.4.1 L’objet NCurve (NURBS)

Figure 53: Une courbe NURBS simple

L’objet NCurve est l’objet de base le plus utilisé pour la modélisation NURBS dans Ayam car les courbesNURBS sont utilisées pour construire des surfaces plus complexes de forme lisse en utilisant des opérationscomme l’extrusion, la rotation, le balayage ou le revêtement. Les courbes NURBS peuvent être ouvertes oufermées et sont utilisées pour émuler facilement les courbes de Bézier et B-Spline. En outre, pour faciliterla modélisation, elles prennent en charge plusieurs points, comme expliqué dans la section 4.4.1 Pointsmultiples (page 150).

Le tableau suivant énumère brièvement certaines capacités de l’objet NCurve.

Type Parent of Material Converts to / Provides Point EditNCurve No No N/A Yes

Table 50: Capacités de l’objet NCurve

Les objets NCurve peuvent être créés via la boîte à outils, le menu principal, plusieurs outils comme indiquédans la section 5.2 Outils de création de courbes (page 272), ou dans l’interface de scripting, voir aussi lasection 6.2.2 Création d’objets (page 344).

Les outils qui traitent les objets NCurve sont documentés dans 5.3 Outils de modification des courbes (page277).

La section suivante détaille la propriété de l’objet NCurve.

La propriété NCurveAttr

La première section de la propriété NCurveAttr contient des paramètres spécifiques à la courbe :

• "Type" : cet attribut remplace l’attribut "Closed" depuis Ayam 1.9. Le type "Open" est lestandard pour les courbes NURBS.

Si le type est "Closed", le premier et le dernier point de contrôle de la courbe seront rendus iden-tiques. Cela fermera la courbe mais sans garantie de continuité. Une telle courbe fermée sera par

Page 148: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 148

exemple créée par l’outil Circle. Il est important de savoir que des points de contrôle de début/finidentiques ne peuvent pas garantir à eux seuls que la courbe est fermée si le vecteur noeud n’est passerré. En cas de doute, utilisez l’outil de serrage ou des noeuds de type "NURB", "Chordal", ou"Centripetal".

Si le type est "Periodic", les derniers points de contrôle p de la courbe seront rendus identiquesau premier p où p est le degré de la courbe (lire ordre-1). Cela permettra de fermer la courbe avecune continuité garantie. Notez que pour une spline cubique (ordre 4), vous aurez besoin d’au moins6 points de contrôle pour la rendre périodique. Il est important de savoir que les multiples pointsde contrôle ne peuvent pas garantir à eux seuls que la courbe est fermée si le vecteur noeud n’apas d’extensions périodiques. En cas de doute, passez la courbe au type de noeud "B-Spline","Chordal", ou "Centripetal".

Vous pouvez également activer la création de points multiples en utilisant l’attribut "CreateMP"(voir ci-dessous) pour les courbes fermées et périodiques afin que les actions d’édition d’un pointunique modifient tous les points de contrôle multiples.

• "Length" est le nombre de points de contrôle de la courbe.

• "Order" est l’ordre de la courbe.

• "Knot-Type" en l’utilisant vous pouvez choisir entre les noeuds de type : "NURB", "Bezier","B-Spline", "Custom", "Chordal", et "Centripetal". Le type de noeud "NURB" génér-era des valeurs de noeuds uniformément réparties allant de 0,0 à 1,0, où la multiplicité des noeuds auxextrémités sera d’ordre de la courbe (le vecteur oeud sera serré). Cela garantit que la courbe toucherales points de contrôle aux extrémités de la courbe. Un exemple de vecteur de noeuds de type "NURB"pour une courbe de longueur 5 et d’ordre 4 serait :

{ 0.0 0.0 0.0 0.0 0.5 1.0 1.0 1.0 1.0 }.Le type de noeud "Bezier" ne générera que des valeurs de 0,0 et 1,0. Notez que l’ordre de la courbedoit être égal à la longueur de la courbe si des noeuds de type "Bezier" sont générés. Sinon, laséquence de noeuds générée est illégale. La courbe résultante ressemble et se comporte exactementcomme une vraie courbe de Bézier, en interpolant les points de contrôle aux extrémités, etc. Unexemple de vecteur de noeuds de type "Bezier" pour une courbe de longueur 5 et d’ordre 5 serait :

{ 0.0 0.0 0.0 0.0 0.0 1.0 1.0 1.0 1.0 1.0 }.Le type de noeud "B-Spline" générera des valeurs de noeuds uniformément distribuées (sansnoeuds multiples). La courbe résultante ressemble et se comporte comme une courbe B-Spline.Elle n’interpole pas les points de contrôle terminaux. Un exemple de vecteur de noeuds de type"B-Spline" pour une courbe de longueur 5 et d’ordre 4 serait :

{ 0.0 0.125 0.25 0.375 0.5 0.625 0.75 0.875 1.0 }.Les types de noeuds "Chordal" et "Centripetal" génèrent des valeurs de noeuds dont la dis-tribution reflète les distances des points de contrôle. Cela ne fonctionne que s’il y a des noeudslibres dans le vecteur de noeuds, c’est-à-dire des noeuds qui ne sont pas soumis à un serrage ou àdes extensions périodiques (la courbe NURBS par défaut avec 4 points de contrôle et ordre 4 n’en apas). Pour les courbes ouvertes, le vecteur noeud généré sera serré, et pour les courbes périodiques,les extensions périodiques appropriées seront créées. Ces types de noeuds sont principalement utilespour les courbes avec des points de contrôle inégalement répartis qui seront échantillonnés uniformé-ment (dans l’espace paramétrique) plus tard et où l’on s’attend à ce que l’échantillonnage uniformedans l’espace paramétrique se traduise par des points d’échantillonnage uniformément répartis dansl’espace des coordonnées. Par exemple, si les courbes sont utilisées comme trajectoire Sweep, Birail,or Clone, ou si des surfaces sont créées à partir de ces courbes qui utilisent des coordonnées de textureimplicites ou une stratégie de tessellation uniforme. Les noeuds "Chordal" et "Centripetal"assureront une distribution plus uniforme des points de l’échantillon sur la courbe dans de tels cas (voir

Page 149: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 149

également l’image d’exemple ci-dessous). Un exemple de vecteur de noeuds de type "Chordal"pour une courbe ouverte de longueur 5 et d’ordre 4 serait :

{ 0.0 0.0 0.0 0.0 0.388889 1.0 1.0 1.0 1.0 }.L’image ci-dessous illustre l’utilisation de deux courbes avec soit des vecteurs de noeuds uniformes(NURB), soit des vecteurs de noeuds de type cordés (chordal) comme trajectoires de balayage. Lacourbe de balayage supérieure avec le vecteur noeud uniforme a des sections beaucoup plus inégale-ment distribuées/mises en forme et présente des problèmes d’auto-interception plus graves. Veuilleznoter que les formes des courbes diffèrent légèrement.

Figure 54: Balayages créés à partir de courbes avec des vecteurs de noeuds uniformes (en haut) et cordés(en bas)

• "Knots" permet d’entrer ses propres séquences de noeuds. Notez que cela ne fonctionne que sile "Knot-Type" (ci-dessus) est "Custom". Sinon, le paramètre "Knots" affiche simplementla séquence de noeuds générée automatiquement et les modifications des valeurs n’ont aucun effet.Chaque vecteur de noeuds a des valeurs de noeuds l+o, où l est la longueur de la courbe et o son ordre.Les valeurs des noeuds doivent être strictement monotones (croissantes) et le nombre maximum devaleurs égales dans une ligne ne doit pas dépasser l’ordre de la courbe.

• "CreateMP" permet de déterminer si plusieurs points doivent être créés pour cette courbe. Voirégalement la discussion dans la section 4.4.1 Points multiples (page 150).

• "IsRat" informe, si la courbe est rationnelle (a des valeurs de poids différentes de 1.0).1

Les paramètres GLU contrôlent l’apparence de la courbe lorsque l’affichage courbe/surface est activé.

• "Tolerance" est en fait la tolérance d’échantillonnage GLU, utilisée pour contrôler la qualité del’échantillonnage lors du rendu d’une courbe. Des tolérances plus faibles permettent d’obtenir unemeilleure qualité mais conduisent aussi à un affichage plus lent. Un réglage de 0.0 signifie que leréglage de préférence globale "Drawing/Tolerance" doit être utilisé.

• "DisplayMode" détermine la façon dont la courbe doit être tracée. La coque de contrôle (polygonede contrôle) ou la courbe ou une combinaison des deux peut être affichée. Le paramètre "Global"signifie que le paramètre de préférence global "Drawing/NCDisplayMode" doit être utilisé.

En cas de modification de plus d’une des valeurs ci-dessus, les modifications seront appliquées dans l’ordredes valeurs dans la propriété. Le résultat des valeurs modifiées doit décrire une courbe NURBS valide. Il

1 Depuis 1.9.

Page 150: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 150

est parfaitement légal de modifier la longueur de la courbe, son ordre, et de passer à un vecteur de noeudpersonnalisé (assurez-vous de saisir réellement un nouveau vecteur de noeud valide) en une seule fois.Ayam vérifiera vos modifications et reviendra à certaines valeurs par défaut si, par exemple, votre séquencede noeuds est incorrecte. Vérifiez la présence de messages dans la console après avoir appuyé sur le bouton"Apply" !

Lorsque le type de courbe est modifié à l’aide de la propriété NCurveAttr, Ayam peut également devoirmodifier la position de certains points de contrôle comme suit :

• Lorsque le type est modifié de "Open" à "Closed", le dernier point de contrôle est déplacé pourêtre identique au premier. En outre, si le type de noeud actuel de la courbe est "B-Spline", il seraréinitialisé au type de noeud "NURB".

• Lorsque le type est modifié de "Open" ou "Closed" à "Periodic", le dernier point de contrôle pest modifié pour être identique au premier p, où p est le degré de la courbe (ordre−1). Par conséquentpour une courbe cubique (ordre 4), les trois derniers points de contrôle seront déplacés. De plus, sile type de noeud actuel de la courbe est "NURB" ou "Bezier" il sera changé en "B-Spline"automatiquement.

Lorsqu’on modifie l’ordre d’une courbe périodique (sans toucher à sa longueur), Ayam ajoute ou supprimeautomatiquement des points de contrôle sur la courbe afin que la forme de la courbe reste globalementidentique et que les extensions périodiques soient plausibles.1

Points multiples

Figure 55: Une courbe NURBS avec des points multiples (grandes poignées)

Ayam permet pour les courbes NURBS ce qu’on appelle les points multiples. Un point multiple est constituéd’un certain nombre de points de contrôle différents qui ont les mêmes coordonnées. Les points multiplesseront dessinés avec une poignée plus grande que les points normaux (voir image ci-dessus).Les actions de modélisation interactive à point unique (par exemple edit) modifieront toujours tous les pointsde contrôle qui composent un point multiple.La sélection/le marquage d’un point multiple sélectionnera toujours tous les points de contrôle de ce pointmultiple.Les actions de modélisation qui fonctionnent avec des points sélectionnés (par exemple translate) ne mod-ifieront tous les points de contrôle d’un point multiple que s’il est complètement sélectionné. Cet état desélection est transmis par le dessin d’une poignée plus grande complètement remplie.2 Les points individu-els d’un point multiple peuvent être sélectionnés par1 Depuis 1.18. 2 Depuis 1.28.

Page 151: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 151

• la désactivation de la propriété "CreateMP" de la courbe,

• l’utilisation de la commande "selPnts" interface de script(voir aussi la section 6.2.5 selPnts command (page 367)), ou

• l’utilisation de la propriété "CVView"(voir aussi la section 6.5.21 Vue du sommet de contrôle (page 434)).

Notez que les points de contrôle qui composent un point multiple n’ont pas à être consécutifs (dans le vecteurde points de contrôle de la courbe NURBS). Des points multiples peuvent également être créés à l’aide del’outil regroupement (collapse), et divisés à nouveau à l’aide de l’outil de décompression (voir les sections5.3.28 Outil de regroupement de points (Collapse Points) (page 304) et 5.3.29 Outil d’éclatement de pointmultiple (Explode Points) (page 304) pour plus d’informations concernant ces outils).

Exportation RIB

Les objets NCurve n’apparaissent jamais directement dans les sorties RIB (seulement indirectement sousforme de Courbe Trim).

Page 152: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 152

4.4.2 Les courbes interpolées (ICurve)

L’objet ICurve crée une courbe NURBS d’interpolation globale à partir de points de données n 3D ordonnésnon rationnels. La courbe peut être ouverte ou fermée, l’ordre de la courbe peut être configuré, le paramé-trage peut être adapté et les dérivées finales peuvent être spécifiées. Les versions ouvertes créent des pointsde contrôle NURBS n+ 2, et les versions fermées n+ 3.

Figure 56: Differentes ICurves à partir de la même configuration de points (en haut: Ouvert, en bas fermé;à gauche d’ordre 3, à droite d’ordre 4)

L’image ci-dessus montre quelques courbes d’interpolation, celles de gauche sont d’ordre 3 (courbes quadra-tiques), celles de droite sont d’ordre 4 (courbes cubiques), celles du haut ouvertes, et celles du bas fermées.La fidélité d’interpolation pour les courbes fermées a été réglée en ajustant les paramètres "SDLen" et"EDLen" (tous réglés à 0,2), voir aussi la discussion des paramètres ci-dessous.

Dans tous les modes de paramétrage, la moyenne des noeuds sera utilisée pour déterminer le vecteur noeudde la courbe d’interpolation.

Notez que l’axe de symétrie des courbes d’interpolation fermées croise le premier point de données (con-trairement aux courbes d’interpolation ouvertes ou d’approximation fermées, où il croise le dernier et lepremier point de données). Par exemple, les courbes d’interpolation fermées dans l’image de l’exemple ci-dessus sont effectivement toutes deux symétriques, mais l’axe de symétrie croise le premier et le troisièmepoint de données et est donc tourné de 45 degrés.

Cet objet utilise le mécanisme de mise à disposition. Il se marque comme fournissant un objet NCurve (ilcrée et utilise de toute façon les courbes NURBS en interne) et tous les autres objets qui fonctionnent avecle mécanisme de fourniture (par exemple révolution, balayage, extrusion et revêtement) sont capables defonctionner avec un objet ICurve au lieu d’un objet de type NCurve.

Le tableau suivant énumère brièvement certaines capacités de l’objet ICurve.

Type Parent of Material Converts to / Provides Point EditICurve No No NCurve Yes

Table 51: Capacités de l’objet ICurve

Les objets ICurve peuvent être créés via la boîte à outils, le menu principal ou l’interface de script, voir aussi6.2.2 Création d’objets (page 346).

Page 153: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 153

La propriété ICurveAttr

Les paramètres suivant contrôlent le processus d’interpolation :

• The "Type" Le paramètre contrôle si la courbe interpolée doit être ouverte ou fermée.

• "Length" est le nombre de points de données à interpoler.

• Le paramètre suivant "Order" détermine l’ordre souhaité de la courbe d’interpolation. Si l’ordrespécifié est supérieur au nombre de points de contrôle utilisés par la courbe d’interpolation NURBS,alors l’ordre est modifié sans notification pour correspondre au nombre de points de contrôle.

• Le paramètre "ParamType" commute la paramétrisation entre "Chordal" (default),"Centripetal", et "Uniform". La méthode centripète génère une meilleure paramétrisationque la méthode par défaut (chordal) si les données d’entrée contiennent des virages serrés. La méth-ode uniforme est disponible depuis Ayam 1.20 et génère des paramétrages moins bons (qui entraînentdes torsions et des recoupements) dans le cas général, mais elle pourrait être utile dans certains caslimites.

• "Derivatives" permet de choisir entre les dérivées automatiques et manuelles.

Si les dérivées automatiques sont activées, la direction des dérivées sera déterminée à partir des pre-mier, deuxième, avant-dernier et dernier points de données pour les courbes ouvertes et à partir desdeuxième et avant-dernier points de données pour les courbes fermées. En outre, le vecteur de dérivéerespectif sera mis à l’échelle par "SDLen" et "EDLen".

Si les dérivées manuelles sont activées, deux autres points éditables apparaissent dans les modesd’édition à point unique. Ces points supplémentaires contrôlent directement les dérivées pour lespoints finaux de la courbe d’interpolation. Les paramètres "SDLen" et "EDLen" n’influencent pasces dérivées.

• Les paramètres "SDLen" et "EDLen" sont utilisés pour contrôler la longueur de la première et dela dernière dérivée (si elle est générée automatiquement à partir des points de données, c’est-à-direlorsque "Derivatives" ci-dessus passe en automatique).

• Voir la section 4.4.1 Propriété NCurveAttr (page 147) pour une description des paramètres :"Tolerance" et "DisplayMode".

• Enfin, un champ "NCInfo" informe sur la configuration réelle de la courbe NURBS créée.

Les paramètres "Mode", "Closed", et "IParam" ont disparu depuis Ayam 1.16. "Closed" a été rem-placé par "Type", "IParam" par "SDLen" et "EDLen", et le "Mode" est maintenant déterminé au-tomatiquement à partir de l’ordre souhaité. Voir aussi l’outil correspondant pour créer des courbes NURBSpar interpolation : 5.3.21 Outil d’interpolation (Interpolate) (page 298).

Conversion

La courbe d’interpolation peut être convertie en une courbe NURBS ordinaire en utilisant l’entrée de menuprincipale "Tools/Convert".

Exportation RIB

Les objets ICurve n’apparaissent jamais directement dans la sortie RIB (seulement indirectement en tantque courbe Trim).

Page 154: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 154

4.4.3 Les courbes approximées (ACurve)

Figure 57: Differentes ACurves (Haut gauche: ALength 3, Ordre 3; haut droite: ALength 4, Ordre 4; Basgauche: ALength 4, Ordre 4; bas droite: ALength 6, Ordre 3)

L’objet ACurve crée une courbe NURBS approximative avec des points de contrôle m à partir de n pointsde données 3D non rationnels ordonnés (voir image ci-dessus).1

Le nombre de points de contrôle de sortie souhaité doit être inférieur ou égal au nombre de points dedonnées à approximer (m≤n). L’algorithme d’approximation utilisé est de la variété des moindres carrés.Si le nombre de points de contrôle se rapproche du nombre de points de données, des torsions indésirablespeuvent se produire dans la courbe de sortie.

Cet objet utilise le mécanisme de mise à disposition. Il se marque comme fournissant un objet NCurve (ilcrée et utilise de toute façon les courbes NURBS en interne) et tous les autres objets qui fonctionnent avecle mécanisme de fourniture (par exemple Revolve, Sweep, Extrude, et Skin) sont capables de fonctionneravec un objet ACurve au lieu d’un objet de type NCurve.

Le tableau suivant énumère brièvement certaines capacités de l’objet ACurve.

Type Parent of Material Converts to / Provides Point EditACurve No No NCurve Yes

Table 52: Capacités de l’objet ACurve

Les objets ACurve peuvent être créés via le menu principal ou l’interface de script, voir aussi 6.2.2 Créationd’objets (page 348).

La propriété ACurveAttr

Les paramètres suivants contrôlent le processus d’approximation :

• "Length" détermine le nombre de points de données à approximer.

• "ALength" est le nombre de points de contrôle (distincts) à utiliser pour la courbe NURBS approx-imée. Le nombre total de points de contrôle distincts doit être inférieur ou égal au nombre de pointsde données.

1 Depuis 1.15.

Page 155: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 155

• La courbe peut être clôturée en utilisant le paramètre "Closed". Pour les approximations fermées,le nombre total de points de contrôle sera "ALength + Order - 1". Le tableau suivant illustrecette relation.

Length ALength Order Closed Output Length10 5 3 No 510 5 3 Yes 810 4 4 Yes 85 4 3 No 45 4 3 Yes 7

Table 53: Exemples de paramétrage ACurve

• Pour les configurations de points de données symétriques, la courbe d’approximation n’est pas néces-sairement symétrique. Avec le paramètre "Symmetric" un résultat symétrique peut être appliqué(voir image ci-dessous), mais au prix d’un double temps d’exécution et d’un paramétrage légèrementpire.

Figure 58: Left: ACurve assymétrique, Right: ACurve symétrique

• Le paramètre "Order" spécifie l’ordre souhaité de la courbe NURBS approximative. Actuellement,seuls les ordres supérieurs à 2 sont pris en charge.

• Voir la section 4.4.1 Propriété NCurveAttr (page 147) pour une description des paramètres :"Tolerance" et "DisplayMode".

• Enfin, un champ "NCInfo" informe sur la configuration réelle de la courbe NURBS créée.

Voir aussi l’outil correspondant pour créer des courbes NURBS approximatives : 5.3.22 Outild’approximation (Approximate) (page 299).

Conversion

Les courbes approximées peuvent être converties en courbes NURBS ordinaires en utilisant l’entrée de menuprincipale "Tools/Convert".

Exportation RIB

Les objets ACurve n’apparaissent jamais directement dans la sortie RIB (seulement indirectement en tantque courbe Trim).

Page 156: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 156

4.4.4 L’objet NCircle (Cercle NURBS)

Figure 59: Differents objets NCircle (g: default, c: TMax 180, d: Radius 0.5, TMax -200)

L’objet NCircle crée une courbe NURBS circulaire ou un arc circulaire dans le plan XY centré à l’origineavec un rayon et des angles de début/fin désignés (voir image ci-dessus).1

Un cercle complet est créé en utilisant neuf points de contrôle rationnels dans une configuration rectangu-laire, les arcs de cercle sont créés avec moins de points de contrôle. Voir la section 6.6.3 Cercle NURBSavec base triangulaire (page 442) pour un objet Script qui implémente un cercle avec moins de points decontrôle.

Pour inverser la courbe NURBS créée, les angles de début et de fin peuvent être utilisés, par exemple"TMin" 0,0, "TMax" -360,0 pour un cercle complet inversé.2

Le tableau suivant énumère brièvement certaines capacités de l’objet NCircle.

Type Parent of Material Converts to / Provides Point EditNCircle No No NCurve No*

Table 54: Capacités de l’objet NCircle

La propriété NCircleAttr

Les paramètres suivants contrôlent la forme du cercle ou de l’arc.

• "Radius" est le rayon du cercle.

• "TMin" (ThetaMin) contrôle l’angle de départ du cercle ou de l’arc à créer. Les valeurs négativessont autorisées.

• "TMax" (ThetaMax) contrôle l’angle de fin du cercle ou de l’arc à créer. Les valeurs négatives sontautorisées.

• Voir la section 4.4.1 Propriété NCurveAttr (page 147) pour une description des paramètres :"Tolerance" and "DisplayMode".

• Enfin, un champ "NCInfo" informe sur la configuration réelle de la courbe NURBS créée.

1 Depuis 1.12. 2 Depuis 1.15.

Page 157: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 157

Conversion

La courbe circulaire/arc peut être convertie en une courbe NURBS ordinaire en utilisant l’entrée de menuprincipale "Tools/Convert".

Exportation RIB

Les objets NCircle n’apparaissent jamais directement dans la sortie RIB (seulement indirectement en tantque courbe Trim).

4.4.5 Autres types de courbes

Des types de courbes plus basiques sont disponibles via des plugins et des scripts, ce sont :

• Courbe de base : 4.9.4 L’objet BCurve (Basis Curve - courbe de base) (page 238),

• Courbe de subdivision : 4.9.5 Les courbes de subdivision (SDCurve) (page 240),

• Courbe de superformulation : 4.9.3 L’objet SfCurve (courbe superformulée) (page 236),

• NURBS cercle à base triangulaire : 6.6.3 Cercle NURBS avec base triangulaire (page 442),

• Courbe de Hélix : 6.6.4 Hélicoïde (helix) (page 443), et

• Courbe spirale : 6.6.5 Spirale (page 444).

Page 158: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 158

4.5 Outils pour ces courbes

Ces objets modifient les courbes existantes ou créent de nouvelles courbes.

4.5.1 L’objet ConcatNC (Concatène les courbes NURBS)

Figure 60: Concaténation (blue) à partir d’une ligne et 3 instances (white)

L’objet ConcatNC concatène tous les objets enfants (qui doivent être des courbes NURBS ou fournir descourbes NURBS) à une seule courbe NURBS. Comme l’objet ConcatNC fournit également une courbeNURBS, il est possible de l’utiliser comme objet enfant pour un autre objet ConcatNC (avec éventuellementdes paramètres différents) ou comme objet paramètre pour un objet outil qui fonctionne avec des courbesNURBS telles que Revolve ou Extrude.

Le processus de concaténation fonctionne comme suit :

1. Les ordres de toutes les courbes paramètres seront élevés à l’ordre maximum de toutes les courbesparamètres (voir aussi la section 5.3.8 Outil d’élévation (Elevate) (page 284) pour plus d’informationssur l’élévation) et toutes les courbes seront serrées (voir aussi la section 5.3.11 Outil de resserrage(Clamp) (page 287) pour plus d’informations sur le serrage).

2. Si le paramètre "FillGaps" est activé, des courbes de raccordement seront créées pour chaqueespace entre les courbes paramètres de l’objet ConcatNC. Si les paramètres "Closed" et"FillGaps" sont activés, un raccord supplémentaire est créé pour fermer la courbe.

3. Maintenant, les points de contrôle de toutes les courbes paramètres et des raccordements sont sim-plement copiés dans un nouveau grand vecteur de points de contrôle, sans vérifier les points doubles.Cela signifie que pour les courbes paramètres qui se touchent à leurs extrémités respectives, il enrésultera au moins des points de contrôle doubles dans la nouvelle courbe concaténée.

4. Si "Closed" est activé, la courbe sera fermée.

La séquence de noeuds de la nouvelle courbe concaténée sera du type "NURB" ou un vecteur de noeudspersonnalisé sera calculé (selon le réglage de "Knot-Type").Si "Knot-Type" est "NURB", la forme de la courbe concaténée sera différente des courbes paramètres sil’une des courbes paramètres a un vecteur de noeuds personnalisé avec des noeuds non équidistants.Si "Knot-Type" est "Custom", la forme des courbes des paramètres sera entièrement préservée, maisle vecteur noeud de la courbe concaténée contiendra alors des noeuds multiples internes.

Page 159: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 159

Les attributs tels que le mode d’affichage et la tolérance pour la nouvelle courbe concaténée sont simplementtirés de la première courbe paramètres.

Pour obtenir les meilleurs résultats, seules les courbes serrées doivent être utilisées comme objetsparamètres.

Le tableau suivant énumère brièvement certaines capacités de l’objet ConcatNC.

Type Parent of Material Converts to / Provides Point EditConcatNC NCurve+ No NCurve No*

Table 55: Capacités de l’objet ConcatNC

La propriété ConcatNCAttr

Les paramètres suivants contrôlent le processus de concaténation :

• En utilisant "Closed" une courbe concaténée fermée peut être créée, même si les courbes desparamètres ne se touchent pas. Si l’option "FillGaps" (voir ci-dessous) est également activée, unremplissage supplémentaire sera créé pour la dernière et la première courbe enfant afin de fermer lacourbe concaténée. Si "FillGaps" n’est pas activé, la courbe concaténée sera fermée avec le mêmealgorithme qui est également utilisé par l’outil de fermeture de courbe (en changeant éventuellementsa forme).

• Si "Revert" est activé, l’orientation de la courbe concaténée sera inversée.

• "FillGaps" crée des courbes de remplissage pour tous les écarts entre les courbes paramètresde l’objet ConcatNC. Aucun remplissage ne sera créé si les points d’extrémité de deux courbesparamètres correspondent. Les courbes de remplissage seront initialement créées à partir de qua-tre points de contrôle. Les points de contrôle du remplissage extérieur sont les points d’extrémité dela courbe des paramètres et les points de contrôle du remplissage intérieur seront positionnés sur latangente du point d’extrémité de la courbe des paramètres respectifs (voir également la discussionde "FTLength" ci-dessous). Ainsi, les transitions entre la courbe des paramètres et le remplissagedoivent être au moins G1 continues. L’élévation du degré sera utilisée pour élever le degré du rem-plissage à celui de la courbe concaténée ; cela peut introduire des points de contrôle supplémentairesdans le remplissage, mais sa forme ne change pas et la continuité de la transition n’est pas non plusaffectée. Si l’ordre de la courbe concaténée résultante est 2, seuls des remplissages simples, reliantles courbes paramètres par des lignes droites, seront générés.

• "FTLength" détermine la distance entre les points de contrôle du remplissage intérieur et leurspoints d’extrémité respectifs. Cette valeur peut être adaptée pour des écarts plus ou moins importantsentre les courbes paramètres. Si le paramètre "FTLength" est 0,0, les remplissages C1 continusseront créés par interpolation de la courbe globale au lieu des remplissage G1 décrits ci-dessus.

• "Knot-Type" définit le type de noeud de la courbe concaténée :– Si "Knot-Type" est "NURB" un simple vecteur de noeuds avec des noeuds équidistants est

généré, ce qui conduit à une courbe concaténée qui ne conserve pas exactement les formes descourbes originales si l’une des courbes paramètres a un vecteur de noeuds personnalisé avecdes noeuds non équidistants. En outre, toutes les transitions entre les courbes paramètres sonttoujours lissées.

– Si "Knot-Type" est "Custom", le vecteur de noeud est composé à partir des vecteurs denoeud des courbes originales, et ainsi, leurs formes peuvent être entièrement préservées. Notezque les discontinuités potentielles de n’importe quel niveau, même les écarts entre les courbes

Page 160: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 160

paramètres, sont également entièrement préservées. Cependant, cela se fait au prix de multiplesnoeuds internes. Un problème avec ces noeuds est que la courbe résultante n’est pas différen-ciable à ces endroits, ce qui à son tour peut être problématique pour des opérations comme lesbalayages.

• Enfin, un champ "NCInfo" informe sur la configuration réelle de la courbe NURBS créée.

Conversion

La courbe concaténée peut être convertie en une courbe NURBS ordinaire en utilisant l’entrée de menuprincipale "Tools/Convert".

Exportation RIB

Les objets ConcatNC n’apparaissent jamais directement dans la sortie RIB (seulement indirectement en tantque courbe Trim).

Page 161: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 161

4.5.2 L’objet ExtrNC (Extraction de courbe NURBS) Object

Figure 61: courbe extraite (white) à partir d’une surface quelconque (blue)

L’objet ExtrNC extrait une courbe NURBS d’un objet patch NURBS, pour l’utiliser comme objet paramètrepour d’autres objets outils, comme par exemple Revolve (voir image ci-dessus). Il fonctionne égalementavec les objets fournissant des patchs NURBS, de sorte que l’exemple de hiérarchie suivant est valable :

--NPatch

+-Skin

+-ExtrNC

|\ Instance_of_NPatch(Instance)

\ NCurve

Selon les paramètres de l’objet ExtrNC, l’objet Skin ci-dessus aura une frontière commune avec une frontièreou une isocourbe de l’objet NPatch. Notez que l’utilisation d’un objet instance d’un autre objet de surface(comme montré dans l’exemple ci-dessus) est en fait la manière recommandée d’utiliser l’objet ExtrNC.Par conséquent, l’entrée du menu principal "Tools/Create/ExtrNC" créera automatiquement uneinstance de l’objet actuellement sélectionné et la déplacera vers l’objet ExtrNC nouvellement créé.

Comme la géométrie de la courbe extraite est entièrement définie par la surface maîtresse, les objets ExtrNCne prennent pas en charge leurs propres attributs de transformation.1

Notez que l’extraction de toute courbe ignore actuellement complètement les informations d’ajustage po-tentiellement présentes dans l’objet NPatch, c’est-à-dire que les courbes extraites ne seront pas ajustées.Toutefois, il est possible d’extraire des limites de bordure complètes.2

Le tableau suivant énumère brièvement certaines capacités de l’objet ExtrNC.

Type Parent of Material Converts to / Provides Point EditExtrNC NPatch No NCurve No*

Table 56: Capacités de l’objet ExtrNC

1 Depuis 1.19. 2 Depuis 1.21.

Page 162: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 162

La propriété ExtrNCAttr

Le processus d’extraction est contrôlé par les attributs suivants :

• "Side" contrôle quelle courbe doit être extraite de la surface. Les valeurs disponibles sont :– "U0", "Un" : extrait la courbe frontière supérieure ou inférieure (sur la largeur) ;

– "V0", "Vn" : extrait la courbe frontière gauche ou droite (le long de la hauteur) ;

– "U", "V" extrait la courbe le long de la largeur et de la hauteur respectivement à une valeurparamétrique spécifiée (voir ci-dessous).1

– "Boundary": extrait la courbe frontière complète de la pièce, en extrayant quatre courbeslimites, en sélectionnant automatiquement la méthode appropriée en fonction du type de noeudde la surface (par exemple "U0" ou "U"), en inversant deux et en concaténant toutes les courbesnon dégénérées au résultat.2

Notez que si la surface a des ordres différents, les courbes partielles dans la direction de l’ordreinférieur seront élevées à l’ordre supérieur avant la concaténation et donc ces parties de la courbefrontière résultante ne seront plus compatibles avec la surface sous-jacente.

– "Middle_U", "Middle_V": créé une courbe à partir des données du patch qui est l’"axemédian" (simplement le milieu de tous les points de contrôle d’un patch dans la dimensiondésignée).3

Cette option est par exemple utile pour réorganiser les surfaces balayées, livrées sous forme desimples patchs.

– "Trim", toutes les courbes et boucles de compensation du patch actuel apparaîtront ici.4 Notezque leur extraction ne donnera qu’une approximation de la représentation 3D de la frontière decoupe correspondante. En particulier, la courbe extraite ne sera pas compatible avec la courbed’ajustement. La qualité de l’approximation peut être ajustée en utilisant "Parameter" (voirci-dessous).

Notez que si "Side" est "U0", "Un", "V0", ou "Vn", le processus d’extraction ne fait que copierles points de contrôle des limites respectives, ce qui est rapide mais ne fonctionne correctement quepour les vecteurs de noeuds serrés. Pour extraire une frontière d’une surface avec, par exemple, unvecteur de noeud B-Spline, "U0" ne doit pas être utilisé, mais "U" avec "Parameter" réglé sur0.0 et "Relative" activé comme "U" utilise un processus d’extraction différent, plus coûteux (quiimplique l’insertion de noeuds).

• "Parameter" contrôle la valeur paramétrique dans la direction U ou V dans l’espace paramètrede l’objet patch NURBS où la courbe doit être extraite ou la qualité d’approximation des courbes decoupe extraites. Par conséquent, ce paramètre n’est utilisé que lorsque "Side" est "U", "V" ou"Trim". La plage valide des valeurs du paramètre dépend des vecteurs de noeuds du patch NURBS.Si une frontière de coupe doit être extraite, ce paramètre contrôle l’échantillonnage tout comme leréglage des préférences "Drawing/Tolerance".

• "Relative" contrôle si la valeur paramétrique délivrée via "Parameter" ci-dessus doit ou nonêtre interprétée de manière relative. Si elle est activée, une valeur paramétrique de 0,5 est toujoursextraite du milieu du vecteur de noeud / surface, quelles que soient les valeurs réelles du noeud, et laplage valable pour "Parameter" est donc de 0,0-1,0.5

• "Revert" inverse immédiatement la courbe extraite.

• "CreatePVN" contrôle la création d’une balise PV ou NT qui contient les normales ou les normaleset tangentes à la surface. Les normales et les tangentes seront dérivées des points de contrôle de la sur-face environnante. Ces balises peuvent ensuite, par exemple, être utilisées pour contrôler une courbede décalage 3D. Notez que le tag sera présent uniquement sur les objets de courbe fournis/convertis.

1 Depuis 1.8.1. 2 Depuis 1.13. 3 Depuis 1.15. 4 Depuis 1.21. 5 Depuis 1.15.

Page 163: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 163

• "PatchNum" permet de sélectionner un patch dans une liste de patchs livrés par exemple par unobjet Extrude biseauté comme enfant de l’objet ExtrNC. De cette façon, il est possible d’extraire unecourbe d’un biseau ou d’une surface bouchon, par exemple, dudit objet Extrude.

• Enfin, un champ "NCInfo" informe sur la configuration réelle de la courbe NURBS extraite.

Voir la section 4.4.1 Propriété NCurveAttr (page 147) pour une description des deux autres attributs"DisplayMode" et "Tolerance".

Conversion

La courbe extraite peut être convertie en une courbe NURBS ordinaire en utilisant l’entrée de menu princi-pale "Tools/Convert".

Exportation RIB

Les objets ExtrNC n’apparaissent jamais directement dans la sortie RIB (seulement indirectement sousforme de courbe Trim).

Page 164: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 164

4.5.3 Les courbes de décalage (OffsetNC)

Figure 62: Courbes de décalage (blanc) des courbes NURBS (bleu) avec décalage de 0.2, -0.2 et 0.3

L’objet OffsetNC crée des courbes de décalage à partir de courbes NURBS planes en utilisant quatre algo-rithmes différents.1

Voir aussi l’image ci-dessus.

La courbe de décalage correspondra toujours à la courbe originale en termes de type, de longueur, d’ordreet de noeuds. Aucune tentative n’est faite pour éviter les collisions ou les auto-interruptions. Les courbesrationnelles ne sont pas bien prises en charge.

Les algorithmes de décalage disponibles sont les suivants :

Pointdécale chaque point de contrôle le long de la normale dérivée des points de contrôle environnants ; lacourbe de décalage créée par cet algorithme peut s’approcher trop près de la courbe originale à des endroitsfortement convexes dont les formes exactes ne sont pas non plus bien préservées,

Sectioncet algorithme compense toutes les sections de polygones de contrôle dans la direction de leur normale etplace de nouveaux points de contrôle aux points d’intersection des lignes définies par les sections décalées.Cet algorithme permet d’éviter les auto-interruptions de la courbe de décalage, mais la courbe de décalagepeut être trop éloignée de la courbe originale à des endroits fortement convexes ou concaves (régions à fortecourbure),

Hybridcet algorithme compense deux fois la courbe à l’aide des algorithmes Point et Section, puis mélange lesrésultats de sorte que les mauvaises caractéristiques des deux algorithmes s’annulent mutuellement,2

3DPVNDepuis Ayam 1.18, il existe un quatrième algorithme de décalage, qui crée de véritables décalages tridi-mensionnels à partir de courbes non planes en utilisant une balise de variable primitive qui contient desinformations normales pour la courbe (normales aux sommets). Ces balises peuvent être créées manuelle-ment ou automatiquement, par exemple lors de l’extraction de courbes à partir de surfaces à l’aide del’objet"ExtrNC".

Comme la géométrie de la courbe de décalage est entièrement définie par la courbe maître et le paramètrede décalage, les objets OffsetNC ne prennent pas en charge leurs propres attributs de transformation.3

1 Depuis 1.14. 2 Depuis 1.19. 3 Depuis 1.19.

Page 165: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 165

L’algorithme de décalage "Bevel3D" a été supprimé depuis Ayam 1.19.

Le tableau suivant énumère brièvement certaines capacités de l’objet OffsetNC.

Type Parent of Material Converts to / Provides Point EditOffsetNC NCurve No NCurve No*

Table 57: Capacités de l’objet OffsetNC

La propriété OffsetNCAttr

Les paramètres suivants contrôlent le processus de compensation :

• Le premier paramètre "Mode" détermine l’algorithme à utiliser pour le processus de compensation.< item>En utilisant "Revert" le sens de la courbe de décalage peut être inversé.

• "Offset" détermine la distance entre la courbe d’origine et la courbe de décalage. Les valeursnégatives sont autorisées.

• Voir la section 4.4.1 Propriété NCurveAttr (page 147) pour une description des paramètres :"Tolerance" et "DisplayMode".

• Enfin, un champ "NCInfo" informe sur la configuration réelle de la courbe NURBS créée.

Conversion

La courbe de décalage peut être convertie en une courbe NURBS ordinaire en utilisant l’entrée de menuprincipale "Tools/Convert".

Exportation RIB

Les objets OffsetNC n’apparaissent jamais directement dans la sortie RIB (seulement indirectement sousforme de courbe Trim).

Page 166: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 166

4.6 Les surfaces libres

Ces objets permettent de manipuler directement des surfaces de forme libre.

4.6.1 Patch NURBS (NPatch)

Figure 63: Patch NURBS : Surface (bleu) à partir d’un polygone de contrôle (blanc)

L’objet NPatch permet de modéliser les surfaces NURBS de manière directe, par exemple en modifiantles points de contrôle (voir aussi l’image ci-dessus). Notez que l’utilisation des objets NPatch doit êtreconsidérée comme le dernier recours, à n’utiliser que lorsque la flexibilité de tous les objets outils de créationde surface NURBS sont pas insuffisants pour obtenir une certaine forme.

Comme les objets NCurve, les objets NPatch marquent leur dernier point de contrôle avec une petite flèche.Notez que la flèche pointe dans la direction V (hauteur).

Les objets NPatch supportent également le concept de points multiples, voir la section 4.4.1 Points multiples(page 150) pour plus d’informations à ce sujet.1

Le tableau suivant énumère brièvement certaines capacités de l’objet NPatch.

Type Parent of Material Converts to / Provides Point EditNPatch NCurve+/ Level+ Yes PolyMesh Yes

Table 58: Capacités de l’objet NPatch

Les objets NPatch peuvent être créés via la boîte à outils, le menu principal, certains outils tels que docu-mentés dans la section 5.4 Outils de création de surfaces (page 305), ou l’interface de script, voir aussi 6.2.2Création d’objets (page 349).

Les outils qui traitent les objets NPatch sont documentés dans la section 5.5 Outils de modification dessurfaces (page 313).

La propriété NPatchAttr

La première section de la propriété NPatchAttr contient les paramètres spécifiques des patchs :

• "Width" et "Height" contrôlent les dimensions de la pièce. Comme pour le paramètre"Length" de l’objet NCurve, les modifications apportées à "Width" ou "Height" ajoutent ou

1 Deuis la version 1.10.

Page 167: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 167

suppriment des points de contrôle internes (c’est-à-dire que pour doubler la résolution d’un patchNURBS 4 par 4 dans la direction U, il faut modifier le paramètre "Width" de 4 à 7 cela entraîneral’insertion d’un point de contrôle supplémentaire dans chaque section du patch original).

• "Order_U" et "Order_V" définissent l’ordre du patch.

• "Knot-Type_U"/"Knot-Type_V" et "Knots_U"/"Knots_V" : Pour une discussion desparamètres "Knot-Type" et "Knots", veuillez consulter la section 4.4.1 Propriété NCurveAttr(page 147).

• "CreateMP" permet d’indiquer si plusieurs points doivent être créés pour cette surface. Voir aussila discussion dans la section 4.4.1 Points multiples (page 150).1

• "IsRat" informe, si le patch est rationnel (a des valeurs de poids différentes de 1,0).2

Les paramètres suivants contrôlent son apparence pour l’affichage dans Ayam :

• "Tolerance" est en fait la tolérance d’échantillonnage GLU utilisée pour contrôler la qualitéde l’échantillonnage lors du rendu du patch. Des tolérances plus faibles permettent d’obtenir unemeilleure qualité mais aussi un affichage plus lent. Un réglage de 0.0 signifie que le réglage depréférence global "Drawing/Tolerance" doit être utilisé.

• "DisplayMode" définit le mode d’affichage, soit la coque de contrôle est dessinée("ControlHull"), soit uniquement les contours des polygones créés par la tessellation("OutlinePolygon"), soit uniquement les contours du patch ("OutlinePatch"). Leparamètre par défaut ("Global") signifie que la valeur du paramètre de préférence global"Drawing/NPDisplayMode" doit être utilisée à la place.

Courbes de trim (coupe)

Figure 64: Un patch NURBS découpé

Les courbes de coupe peuvent être utilisées pour découper certaines parties d’un patch NURBS (voir aussil’image ci-dessus). Il s’agit de simples courbes NURBS 2D définies dans l’espace paramétrique du patchNURBS associé. Les courbes de découpe doivent être définies comme des objets enfants de l’objet du patchNURBS auquel elles appartiennent. Toutefois, contrairement aux autres objets enfants, elles n’héritent pasdes attributs de transformation de l’objet parent. L’édition des courbes d’ajustement peut se faire dans lesvues de type "Trim", qui dessinent les limites de l’espace paramétrique du patch NURBS correspondantsous forme de rectangle, mais qui, par ailleurs, agissent comme des vues normales "Front".

1 Depuis 1.10. 2 Depuis 1.9.

Page 168: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 168

Notez que la direction de la courbe d’ajustement détermine la partie du patch NURBS qui doit être découpée.L’outil Revert (menu "Tools/Curve") peut être utilisé pour changer facilement la direction d’unecourbe de coupe.

Certaines restrictions particulières s’appliquent aux courbes d’ajustement :

• Toutes les courbes de coupe doivent se trouver entièrement dans l’espace de paramètres (u,v) du patchNURBS (souvenez-vous du rectangle dans la vue Trim). Notez que cette restriction ne s’applique pasaux points de contrôle, mais aux courbes ! Il est possible d’avoir des points de contrôle à l’extérieurdu rectangle si la courbe définie se trouve à l’intérieur du rectangle.

• Le dernier point d’une courbe de coupe doit être identique au premier point.

• Les boucles de coupe (plusieurs courbes de coupe qui forment des boucles) sont également possibles; le dernier point de chaque courbe de la boucle doit être identique au premier point de la courbesuivante de la boucle et le premier point de la première courbe d’une boucle doit être identique audernier point de la dernière courbe de cette boucle.

• Pour qu’un ensemble de courbes forme une boucle, elles doivent être placées dans un objet de niveau.L’ordre des courbes dans ce niveau est l’ordre de la boucle. Les attributs de transformation de cetobjet de niveau sont totalement ignorés pour le découpage.

• Le dessin de patchs NURBS découpés avec certaines implémentations d’OpenGL peut nécessiter laprésence d’une courbe de découpage spéciale (une courbe linéaire rectangulaire par morceaux qui en-globe l’ensemble du patch NURBS). Une telle courbe peut être générée avec l’outil TrimRect. Cetoutil peut être trouvé dans le menu "Tools/Create". Cette courbe est nécessaire si vous voulezdécouper un trou avec une seule courbe de coupe. Cette courbe n’est généralement pas nécessaire sivous voulez rendre le patch avec BMRT mais elle ne devrait pas faire mal si elle est présente.

• S’il existe des courbes de coupe imbriquées, leur direction doit être alternée.

• Les courbes de coupe ne doivent ni se croiser entre elles ni se croiser elles-mêmes.

Notez que Ayam ne vérifie pas si les courbes de coupe suivent ces règles.

Avertissement : Certaines implémentations OpenGL peuvent être facilement défaillantes en dessinant despatchs NURBS avec des réglages qui ne respectent pas les règles mentionnées ci-dessus. En cas de doute oude modélisation lourde, passez au dessin au fil de fer et désactivez temporairement les ombres et vous serezdu bon côté.

Les objets fournissant des courbes NURBS sont également pris en charge en tant que courbes de coupe.1

Lorsque les objets fournissent plusieurs courbes NURBS, celles-ci ne forment pas une seule boucle, maissont considérées comme des boucles individuelles.

Bouchons et biseaux

L’objet NPatch prend en charge les bouchons standard telles que décrites dans la section 4.10.5 PropriétéCaps (page 252) et les biseaux standard tels que décrits dans la section 4.10.6 Propriété Bevels (page 253).Les noms des limites sont U0, U1, V0 et V1.

L’intégration n’est pas soutenue ; l’option correspondante est ignorée sans notification.

1 Depuis 1.5.

Page 169: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 169

Conversion

Un objet NPatch peut être converti en un objet PolyMesh en utilisant l’entrée du menu principal"Tools/Convert".

Ce processus est également appelé tessellation et, par conséquent, les paramètres de tessellation des balisesTP seront utilisés dans le processus de conversion (s’il existe) (Voir aussi la section 4.11.11 Balise TP(Tessellation Parameter) (page 263)).

Si des biseaux ou des bouchons sont présents, un objet Level enveloppant sera créé et les biseaux ou bou-chons tesselés suivront le NPatch tesselé dans l’ordre suivant : U0, U1, V0, V1.

Page 170: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 170

Exportation RIB

Les objets NPatch seront exportés en tant que primitives NURBS :

RiNuPatch(...);

Les balises PV sont prises en charge et des courbes de coupe peuvent également apparaître.

Page 171: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 171

4.6.2 Les patch interpolés (IPatch)

Figure 65: Surface interpolée (bleu) à partir de points (blanc)

Un IPatch forme une surface définie en interpolant une grille régulière de points de données tridimensionnelset non rationnels (voir aussi l’image ci-dessus).

Le tableau suivant énumère brièvement certaines capacités de l’objet IPatch.

Type Parent of Material Converts to / Provides Point EditIPatch No Yes NPatch Yes

Table 59: Capacités de l’objet IPatch

Les objets IPatch peuvent être créés via le menu principal ou l’interface de script, voir aussi 6.2.2 Créationd’objets (page 351).

La propriété IPatchAttr

La propriété IPatchAttr contient les éléments suivants :

• "Width" et "Height" contrôlent les dimensions du patch. Comme pour le paramètre "Length"de l’objet NCurve, les modifications apportées à "Width" ou "Height" permettent d’ajouterou de supprimer des points de contrôle internes (c’est-à-dire pour doubler la résolution d’un patchd’interpolation 4 par 4 dans la direction U, modifier le "Width" de 4 à 7 ; cela entraînera l’insertiond’un point de contrôle supplémentaire dans chaque section du patch original).

• "Order_U" et "Order_V" définissent les ordres d’interpolation souhaités du patch. Si l’une deces valeurs est fixée à 2, aucune interpolation explicite n’aura lieu dans cette dimension (la surfaceinterpolera implicitement les points de données en raison du faible ordre).

• "Close_U" et "Close_V" permettent de créer des surfaces fermées dans la dimension respective.

• "Knot-Type_U" et "Knot-Type_V" commutent la paramétrisation entre "Chordal" (par dé-faut), "Centripetal", et "Uniform". La méthode centripète génère un meilleur paramétrageque la méthode par défaut (chordal) si les données d’entrée contiennent des virages serrés. La méth-ode uniforme génère des paramétrages moins bons (qui entraînent des torsions et des dépassements)dans le cas général, mais elle peut être utile dans certains cas de bord.

• "Deriv_U" et "Deriv_V" permettent de choisir si :– "None" : pas de dérivés finaux,

Page 172: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 172

– "Automatic" : des dérivés créés automatiquement (à partir de points de données), misà l’échelle par les paramètres supplémentaires "SDLen_U", "EDLen_U", "SDLen_V",et"EDLen_V",

– "Manual" : des dérivés finaux entièrement contrôlés manuellement (apparaissant comme despoints de contrôle supplémentaires dans l’édition de points, si activé)

doit être utilisé dans l’interpolation.

Les paramètres suivants contrôlent l’aspect du patch pour l’affichage dans Ayam :

• "Tolerance" est en fait la tolérance d’échantillonnage GLU utilisée pour contrôler la qualitéde l’échantillonnage lors du rendu du patch. Des tolérances plus faibles permettent d’obtenir unemeilleure qualité mais aussi un affichage plus lent. Un réglage de 0.0 signifie que le réglage depréférence global "Drawing/Tolerance" doit être utilisé.

• "DisplayMode" définit le mode d’affichage, soit la coque de contrôle est dessinée("ControlHull"), soit uniquement les contours des polygones créés par la tessellation("OutlinePolygon"), soit uniquement les contours du patch ("OutlinePatch"). Leparamètre par défaut ("Global") signifie que la valeur du paramètre de préférence global"Drawing/NPDisplayMode" doit être utilisée à la place.

• Enfin, un champ "NPInfo" informe sur la configuration réelle du patch NURBS créé.

Voir aussi l’outil correspondant pour créer des courbes NURBS d’interpolation : 5.5.14 Outil d’interpolationde surface (Interpolate Surface) (page 325).

Bouchons et biseaux

L’objet IPatch prend en charge les bouchons standard telles que décrites dans la section 4.10.5 PropriétéCaps (page 252) et les biseaux standard tels que décrits dans la section 4.10.6 Propriété Bevels (page 253).Les noms des limites sont U0, U1, V0 et V1.

Conversion

La surface interpolée peut être convertie en un patch NURBS ordinaire en utilisant l’entrée du menu princi-pal "Tools/Convert".

Exportation RIB

Les objets IPatch seront exportés en tant que primitives NURBS :

RiNuPatch(...);

Les balises PV ne sont actuellement pas prises en charge.

Page 173: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 173

4.6.3 Patch bilinéaires (BPatch)

Figure 66: Patch bilinéaires

Un BPatch est un simple patch bilinéaire défini par quatre points de contrôle. Les objets BPatch sont parexemple utilisés en interne pour construire des objets de type boîte, voir aussi 4.3.1 L’objet boîte (Box)(page 139).

Le tableau suivant énumère brièvement certaines capacités de l’objet BPatch.

Type Parent of Material Converts to / Provides Point EditBPatch No Yes NPatch Yes

Table 60: Capacités de l’objet BPatch

La propriété BPatchAttr

La propriété BPatchAttr permet de contrôler directement les quatre points définissant la géométrie du patch:

• "P1_X", "P1_Y", "P1_Z", premier point.

• "P2_X", "P2_Y", "P2_Z", deuxième point.

• "P3_X", "P3_Y", "P3_Z", troisième point.

• "P4_X", "P4_Y", "P4_Z", quatrième point.

Conversion

Le patch bilinéaire peut être converti en un patch NURBS ordinaire en utilisant l’entrée du menu principal"Tools/Convert".

Exportation RIB

Les objets BPatch seront exportés sous forme de primitives de patchs bilinéaires :

RiPatch(RI_BILINEAR, ...);

Les balises PV tags sont prises en charge.

Page 174: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 174

4.6.4 Les patchs maillés (PatchMesh)

Figure 67: Surfaces PatchMesh (bleu) bicubiques (gauche) et bilinéaires (droite) de leurs polygones decontrôle respectifs (blanc)

L’objet PatchMesh peut être utilisé pour modéliser un maillage bicubique ou bilinéaire, voir l’image ci-dessus pour deux exemples.

Comme les objets NCurve, les objets PatchMesh marquent leur dernier point de contrôle avec une petiteflèche. Notez que la flèche pointe dans la direction V (hauteur).

Le tableau suivant énumère brièvement certaines capacités de l’objet PatchMesh.

Type Parent of Material Converts to / Provides Point EditPatchMesh No Yes NPatch Yes

Table 61: Capacités de l’objet PatchMesh

La propriété PatchMeshAttr

La première section de la propriété PatchMeshAttr contient les paramètres spécifiques des patchs :

• "Type" peut être réglé sur "Bicubic" ou "Bilinear".

• "Width" et "Height" contrôlent les dimensions du patch. Notez que pour les maillages bicu-biques, le type de base peut imposer des restrictions sur les valeurs valables pour la largeur et lahauteur ; par exemple, pour le type de base "Bezier" (avec la taille de pas 3) les valeurs valablessont : 4, 7, 10, . . .. Un autre type de base qui impose cette restriction est "Hermite" (avec une taillede pas 2), où les valeurs valides sont 4, 6, 8, . . .. La fermeture de la surface complique encore un peuplus les choses. Une largeur valable pour un maillage bicubique fermé de type base "Bezier" estpar exemple de 6 ; elle est en fait toujours de 7, mais le dernier point est égal au premier et sera omis.Les boutons fléchés des champs de saisie des dimensions ajoutent/soustraient la valeur de pas actuelledu patch de la valeur respective lorsque la touche <Control> est maintenue enfoncée.1

• "Close_U" et "Close_V" déterminent si le maillage de la pièce doit être fermé dans les directionsU et V respectivement.

• "IsRat" informe, si le maillage du patch est rationnel (a des valeurs de poids différentes de 1,0).2

1 Depuis 1.25. 2 Depuis 1.21.

Page 175: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 175

• "BType_U" et "BType_V" contrôlent le type de base pour les patchs bicubiques. Les types debase suivants sont disponibles : "Bezier", "B-Spline", "Catmull-Rom", "Hermite","Power", et "Custom". Dans ce dernier cas ("Custom"), des paramètres supplémen-taires peuvent être définis. Il s’agit de "Step_U"/"Step_V" (la taille du pas de la base) et"Basis_U"/"Basis_V" la base elle-même.Lorsqu’un type de base est modifié en "Custom", les valeurs initiales de la matrice de base serontcelles du type précédent.1

Notez également que changer un type de base via l’interface graphique des propriétés n’est pas lamême chose que convertir un patch maillé via la commande tobasisPM, voir aussi la section 6.2.15tobasisPM command (page 400).Veuillez consulter le companion RenderMan pour une discussion plus approfondie des différents typesde base.

Les paramètres "BType_U", "BType_V", "Step_U", "Step_V", "Basis_U", et "Basis_V" nesont disponibles que pour les patch mailléss bicubiques. Les paramètres suivants contrôlent l’apparencepour l’affichage dans Ayam :

• "Tolerance" est en fait une tolérance d’échantillonnage GLU, utilisée pour contrôler la qualitéde l’échantillonnage lors du rendu du patch. Un réglage de 0.0 signifie que le réglage de préférenceglobale "Drawing/Tolerance" doit être utilisé.

• "DisplayMode" définit le mode d’affichage, soit la coque de contrôle est dessinée, soit seulementles contours des polygones créés par la tessellation (OutlinePolygon), soit seulement les contours dupatch (OutlinePatch). Le paramètre par défaut (Global) signifie que le paramètre de préférence global"Drawing/DisplayMode" doit être utilisé.

Bouchons et biseaux

L’objet PatchMesh prend en charge les bouchons standard telles que décrites dans la section 4.10.5 PropriétéCaps (page 252) et les biseaux standard tels que décrits dans la section 4.10.6 Propriété Bevels (page 253) .2

Les noms des limites sont U0, U1, V0 et V1.

Conversion

Le maillage du patch peut être converti en un patch NURBS ordinaire en utilisant l’entrée du menu principal"Tools/Convert". Dans les versions de Ayam antérieures à la 1.21, la conversion (et l’affichage ombré)ne fonctionnait pas pour les patch mailléss avec les types de base Catmull-Rom, Hermite ou Custom. Cen’est plus le cas.

Exportation RIB

Les objets PatchMesh seront exportés sous forme de primitives de patchs maillés :

RiPatchMesh(...);

Les balises PV sont prises en compte.

1 Depuis 1.24. 2 Depuis 1.24.

Page 176: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 176

4.7 Les outils de surface

Ces objets créent des surfaces de forme libre à partir de courbes ou d’autres surfaces.

4.7.1 Les surfaces de révolution (Revolve)

Figure 68: L’objet Revolve (à gauche: la courbe, à droite la surface de révolution)

L’objet Revolve forme une surface de révolution à partir d’une courbe NURBS, voir l’image ci-dessus pourun exemple.

L’objet Revolve a la courbe NURBS génératrice comme objet enfant et observe ses changements et s’yadapte automatiquement.

L’axe de la révolution est toujours l’axe Y. La courbe des paramètres doit être définie dans le plan XY. Sinon,la courbe sera projetée sur ce plan avant de tourner.

Le tableau suivant énumère brièvement certaines capacités de l’objet Revolve.

Type Parent of Material Converts to / Provides Point EditRevolve NCurve Yes NPatch+ No*

Table 62: Capacités de l’objet Revolve

La propriété RevolveAttr

Le paramètre "ThetaMax" spécifie l’angle de balayage de la révolution comme pour une primitivequadrique de RenderMan ordinaire.

L’objet Revolve supporte également un mode B-Spline qui peut être activé en réglant le paramètre"Sections" à une valeur supérieure à 0.1

Dans ce mode, une B-Spline circulaire est utilisée comme base pour la surface de révolution au lieu ducercle NURBS standard. En fonction du nombre de sections choisies, la surface de révolution n’interpolepas exactement la courbe paramétrée, mais la surface peut être éditée plus facilement après une éventuelleconversion en un objet patch NURBS ordinaire, car les points de contrôle ne seront pas rationnels si lacourbe de révolution ne l’est pas non plus.Notez que le mode B-Spline peut également prendre en compte des valeurs "ThetaMax" quelconques.2

1 Depuis 1.8. 2 Depuis 1.18.

Page 177: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 177

En plus du nombre de sections, en mode B-Spline, il est possible de contrôler l’ordre de la surface derévolution à l’aide du paramètre "Ordre". Si "Ordre" est 0, une valeur standard de 3 sera utilisée.

Voir la section 4.6.1 Propriété NPatchAttr (page 166) pour une description des deux autres attributs"DisplayMode" et "Tolerance".

Bouchons et biseaux

L’objet Revolve prend en charge les bouchons standard telles que décrites dans la section 4.10.5 PropriétéCaps (page 252) et les biseaux standard tels que décrits dans la section 4.10.6 Propriété Bevels (page 253).

Les noms des frontières sont:Upper – courbe formée en faisant tourner le point de départ de la section transversale,Lower – courbe formée par la rotation du point final de la section transversale,Start – coupe transversale, etEnd – coupe transversale à la fin de la révolution.

Conversion

La surface de révolution et les biseaux et bouchons peuvent être convertis en patchs NURBS ordinaires enutilisant l’entrée du menu principal "Tools/Convert".

Si des biseaux ou des bouchons sont présents, un objet Level englobant sera créé et les biseaux ou bouchonssuivront la surface de révolution dans l’ordre suivant : supérieur, inférieur, début, fin.

Les biseaux ou bouchons intégrés n’apparaissent pas comme des objets supplémentaires.

L’objet Revolve fournit une liste des objets patchs NURBS dans le même ordre que celui créé lors de laconversion.

Exportation RIB

Les objets revolve seront exportés en tant que primitives NURBS :

RiNuPatch(...);

Si des biseaux ou des bouchons sont présents, ceux-ci suivent comme des primitives NURBS potentiellementde découpe dans l’ordre suivant : supérieur, inférieur, début, fin.

Page 178: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 178

4.7.2 Les surfaces par extrusions (Extrude)

Figure 69: Extrusion (à gauche la courbe, au centre l’extrusion simple, à droite l’extrusion avec bouchon)

L’objet Extrude forme une extrusion linéaire à partir d’un certain nombre de courbes NURBS planes, voirl’image ci-dessus pour un exemple.

La première courbe détermine le contour et les autres courbes déterminent les trous dans l’objet d’extrusion.Les trous peuvent être utilisés par des objets qui forment par exemple des lettres.

L’objet a les courbes NURBS génératrices comme objets enfants, les observe et s’y adapte automatiquement.

Par conséquent, la hiérarchie des objets d’un objet Extrude peut ressembler à ceci :

+-Extrude

| Outline(NCurve)

| [Hole_1(NCurve)

| ...

\ Hole_n(NCurve)]

L’objet Extrude peut générer des bouchons, si les courbes de génération sont fermées. La génération debouchons peut échouer, si la courbe extérieure a des poids et que la courbe elle-même quitte la coqueconvexe du polygone de contrôle. Faites attention lorsque vous utilisez des courbes avec des poids !

Les angles vifs entre les bouchons et l’extrusion peuvent être biseautés.

L’axe de l’extrusion est toujours l’axe Z. Les courbes des paramètres doivent être définies dans le plan XY.Sinon, elles seront projetées dans ce plan. Voir la section 5.3.24 Outil de retournement vers XY (To XY)(page 301) pour savoir comment réaliser facilement des courbes dans le plan XY.

Les dimensions et les ordres de la ou des surfaces extrudées seront tirés des courbes paramètres respectivescomme suit : la largeur et l’ordre dans la direction U seront 2, la hauteur et l’ordre dans la direction V sonttirés de la courbe paramètres.

Le tableau suivant énumère brièvement certaines capacités de l’objet Extrude.

Type Parent of Material Converts to / Provides Point EditExtrude NCurve+ Yes NPatch+ No*

Table 63: Capacités de l’objet Extrude

Page 179: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 179

La propriété ExtrudeAttr

Le paramètre "Height" détermine la taille de l’extrusion dans la direction Z. Notez que la hauteur desbiseaux n’est pas prise en compte dans ce paramètre. Si la hauteur de l’extrusion est de 1.0 et que lesbiseaux (supérieurs et inférieurs) sont activé avec un rayon de 0.1, l’objet résultant aura une hauteur totalede 1.2 unités dans la direction Z.

L’objet Extrude peut générer automatiquement des bouchons, qui sont des patchs NURBS découpés. Enutilisant "StartCap" et "EndCap" vous déterminez si de tels bouchons doivent être générés, la valeurpar défaut est désactivée (pas de bouchons). Notez que cette fonction ne fonctionne correctement que siles courbes NURBS générées sont fermées et ne s’entrecroisent pas, car les courbes générées sont utiliséescomme courbes de correction pour les bouchons. Attention, Ayam ne vérifiera pas si les courbes paramètressont conformes à ces critères. Cependant, Ayam détecte automatiquement l’orientation correcte des courbes(et les inverse si nécessaire).

Depuis Ayam 1.10, les paramètres de biseau de l’objet Extrude sont enregistrés dans des balises deparamètres de biseau et l’interface graphique de propriété a été modifiée pour être conforme à tous lesautres objets de l’outil de support de biseau. Les anciennes options "LowerBevel", "UpperBevel","BevelType", et "BevelRadius" ne sont plus disponibles. Elles ont été remplacées par de nouvellesbalises dynamiques créant des sections d’interface graphique de propriété de biseau qui sont accessibles parles nouvelles entrées de commande "Add Start Bevel!" et "Add End Bevel!" respectivement.Si l’une de ces entrées est utilisée, une balise de paramètre de biseau correspondante est créée et d’autresoptions seront disponibles dans l’interface graphique des propriétés pour ajuster les paramètres de biseau ousupprimer à nouveau la balise. Une discussion plus approfondie de ces options est disponible dans la section4.7.9 Propriété BevelAttr (page 204).

Voir la section 4.6.1 Propriété NPatchAttr (page 166) pour une description des deux autres paramètres"DisplayMode" et "Tolerance".

Utilisation des Trous et Biseaux

Toutes les courbes formant des trous dans l’objet extrudé doivent être définies à l’intérieur (géométrique-ment) de la première courbe (la courbe de contour). De plus, ils ne peuvent pas se croiser entre eux ouavec eux-mêmes et il ne peut pas y avoir de courbes à l’intérieur des courbes. S’il y a des biseaux et desbouchons, prévoyez un espacement supplémentaire entre les courbes (pour les biseaux). Ayam ne vérifierapas si les courbes paramètres sont conformes à ces critères.

La direction de la courbe détermine également le sens du biseau (doit-il s’arrondir vers l’extérieur ou versl’intérieur ?). Si les biseaux des trous ne sont pas corrects, essayez d’inverser les courbes génératrices destrous. Notez que le biseautage ne fonctionne pas bien avec les courbes ouvertes. Il est conseillé de toujoursutiliser des courbes fermées pour le biseautage. Le biseautage peut conduire à des courbes de coupe quis’entrecroisent dans les angles vifs d’une extrusion. Il faut réduire le rayon de biseau ou arrondir les coinsde la courbe extrudée (en utilisant l’insertion de points de contrôle supplémentaires) si la génération debouchons échoue en raison des biseaux qui s’entrecroisent.

Une autre problématique particulière est à noter : S’il y a des trous, les biseaux correspondants seront misà l’échelle avec les valeurs de transformation des objets de la courbe des trous. Ainsi, pour obtenir desbiseaux de même taille pour le contour et les trous, les éventuelles transformations d’échelle doivent être

Page 180: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 180

effectuées sur les points de contrôle de la courbe des trous, plutôt que sur les attributs de transformation del’objet courbe des trous.

Conversion

La surface extrudée, les biseaux et les bouchons peuvent être convertis en patchs NURBS ordinaires enutilisant l’entrée du menu principal "Tools/Convert".

Si des biseaux ou des bouchons sont présents, un objet Level englobant sera créé et les biseaux et bouchonssuivront la surface extrudée dans l’ordre suivant : biseau de fin, bouchon de fin, biseau de début, bouchonde début.

L’objet Extrude fournit une liste des objets patchs NURBS dans le même ordre que celui créé lors de laconversion.

Exportation RIB

Les objets extrudés seront exportés sous forme de primitives NURBS :

RiNuPatch(...);

Si des bouchons ou des biseaux sont présents, ceux-ci suivent comme des primitives NURBS potentiellementajustées dans l’ordre suivant : biseau de fin, bouchon de fin, biseau de début, bouchon de début.

Page 181: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 181

4.7.3 Les surfaces par balayage (Swing)

Figure 70: L’objet Swing (à gauche les courbes, à droite la surface)

L’objet Swing forme une surface qui résulte de la rotation d’une courbe NURBS (appelée section transver-sale ou profil) autour d’un axe tout en la mettant à l’échelle selon une seconde courbe NURBS (appeléetrajectoire ou chemin).1

Ce processus est parfois aussi appelé balayage rotatif . Voir l’image ci-dessus pour un exemple.

L’objet Swing a les courbes NURBS génératrices comme objets enfants et observe leurs mouvements et s’yadapte de manière automatique. La première courbe est la section transversale, la seconde est la trajectoire.

La hiérarchie d’un objet Swing ressemble donc à ceci :

+-Swing

| Cross_Section(NCurve)

\ Trajectory(NCurve)

L’opération de balayage se fera autour de l’axe Y, c’est-à-dire que la trajectoire doit être définie dans le planXZ.

La courbe de la section transversale doit être définie dans le plan YZ et la trajectoire doit commencer là.Voir aussi l’image ci-dessous.

Figure 71: A gauche la section transversale de balayage, à droite la trajectoire et la surface résultat en bleu

1 Depuis 1.14.

Page 182: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 182

Notez que l’outil de création de swing modifiera automatiquement les points de contrôle des objets NCurve,ICurve et ACurve afin qu’ils soient définis dans le bon plan. Pour tous les autres types d’objets, les attributsde transformation seront définis (Rotate_Y est défini à 90 s’il est actuellement défini à 0).1

Les dimensions et les ordres de la surface balayée seront tirés des courbes paramètres respectives commesuit : largeur et ordre dans la direction U à partir de la trajectoire, hauteur et ordre dans la direction V àpartir de la section transversale.

Le tableau suivant énumère brièvement certaines capacités de l’objet Swing.

Type Parent of Material Converts to / Provides Point EditSwing NCurve∗ Yes NPatch+ No*

Table 64: Capacités de l’objet Swing

La propriété SwingAttr

La surface balayée est entièrement contrôlée par les courbes paramètres.

Voir la section 4.6.1 Propriété NPatchAttr (page 166) pour une description des attributs "DisplayMode"et "Tolerance".

Pour aider à la configuration exacte de la surface balayée, le champ "NPInfo" affiche toujours lesparamètres du patch NURBS créé.

Bouchons et biseaux

L’objet Swing prend en charge les bouchons standard tels que définis dans la section 4.10.5 Propriété Caps(page 252) et les biseaux standard tels que définis dans la section 4.10.6 Propriété Bevels (page 253).

Les noms des contours sont les suivants :Start – section transversale,End – section transversale à la fin du balayage,Upper – courbe formée en balayant le point de départ de la section transversale, etLower – courbe formée en balayant le point final de la section transversale.

1 Depuis 1.24.

Page 183: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 183

Conversion

La surface balayée et les bouchons peuvent être convertis en patchs NURBS ordinaires en utilisant l’entréede menu principale "Tools/Convert".

Si des biseaux ou des bouchons sont présents, un objet Level englobant sera créé et les biseaux ou bouchonssuivront la surface balayée dans l’ordre suivant : supérieur, inférieur, début, fin.

Les biseaux ou les bouchons intégrés n’apparaissent pas comme des objets supplémentaires.

L’objet Swing fournit une liste des objets patchs NURBS dans le même ordre que celui créé lors de laconversion.

Exportation RIB

Les objets Swing seront exportés en tant que primitives NURBS :

RiNuPatch(...);

Si des biseaux ou des bouchons sont présents, ceux-ci suivent comme des primitives NURBS potentiellementajustées dans l’ordre suivant : supérieur, inférieur, début, fin.

Page 184: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 184

4.7.4 Les surfaces par glissements (Sweep)

Figure 72: L’objet Sweep (à gauche les courbes, à droite lac surface résultat)

L’objet Sweep forme une surface qui résulte du déplacement d’une courbe NURBS (appelée sectiontransversale ou profil) le long d’une deuxième courbe NURBS (appelée trajectoire ou chemin). Voir l’imageci-dessus pour un exemple.

La section transversale peut être mise à l’échelle pendant le balayage en utilisant une troisième courbe, lafonction mise à l’échelle. Les surfaces balayées peuvent être fermées dans la direction de la trajectoire etelles peuvent également être périodiques.1

L’objet Sweep possède les courbes NURBS génératrices comme objets enfants et observe leurs mouvementset s’y adapte automatiquement. La première courbe est la section transversale, la deuxième est la trajectoireet la troisième courbe représente la fonction de mise à l’échelle.

La hiérarchie des objets d’un objet Sweep ressemble donc à ceci :

+-Sweep

| Cross_Section(NCurve)

| Trajectory(NCurve)

\ [Scaling_Function(NCurve)]

Notez que les attributs "Translate" de la courbe de la section transversale seront totalement ignorés.Tous les autres attributs de transformation (de la section et de la trajectoire) seront utilisés pour déterminerla place, l’orientation et la taille de l’objet Sweep. La courbe de section transversale doit être définie dans leplan YZ du système de coordonnées de l’objet Sweep. Voir également l’image ci-dessous.

Cela signifie qu’une simple courbe circulaire, créée par exemple avec la boîte à outils, doit être tournée de90 degrés autour de l’axe Y. Cela peut se faire soit en modifiant les points de contrôle, soit en réglant lesattributs de transformation en conséquence. L’édition ultérieure de cette courbe doit être effectuée dans unevue latérale. Notez que l’outil de création du glissement modifiera automatiquement les points de contrôledes objets NCurve, ICurve et ACurve afin qu’ils soient définis dans le bon plan. Pour tous les autres typesd’objets, les attributs de transformation seront définis (Rotate_Y est défini à 90 s’il est actuellement défini à0).2

1 Depuis 1.10. 2 Depuis 1.24.

Page 185: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 185

Figure 73: En blanc, à gauche la section transversale, à droite la trajectoire et en bleu la surface résultat

La fonction de mise à l’échelle est échantillonnée pour chaque section et la composante Y des coordonnéesdu point de courbe actuel sera utilisée comme facteur d’échelle qui est appliqué à la section transversaledans la direction Y.

Si un point échantillon de la fonction de mise à l’échelle a une composante Z différente de zéro, la com-posante Z sera utilisée pour mettre à l’échelle indépendamment la section transversale dans la direction X,sinon la composante Y sera utilisée pour mettre également à l’échelle la section transversale dans la directionX.1

Cela implique, par exemple, qu’une fonction de mise à l’échelle qui ne fait rien devrait être une courbelinéaire de (0,1,1) à (1,1,1). Les composantes de l’échelle qui sont inférieures ou égales à zéro serontignorées sans notification.

Figure 74: Sweep Object (bleu) avec une fonction d’échelle (blanc)

Voici un petit exemple pour la création d’un balayage :

1. Créez une courbe B-Spline circulaire en utilisant la boîte à outils. (Ce sera notre section transversale.)

2. Créer une courbe NURBS simple en utilisant la boîte à outils. (Ce sera notre trajectoire).

3. Sélectionnez les deux courbes. (Sélectionnez la première courbe, maintenez la touche "Shift"enfoncée et sélectionnez l’autre courbe).

4. Créer l’objet Sweep en utilisant la boîte à outils.

5. Observez que la courbe de section transversale a été tournée automatiquement vers le plan YZ.

1 Depuis 1.13.

Page 186: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 186

6. Maintenant vous pouvez entrer dans l’objet Sweep et modifier par exemple la deuxième courbe, latrajectoire. (Appuyez sur <e>, puis faites glisser quelques points de contrôle).

7. Pour modifier la section transversale, vous devez passer à une vue de type "Side". (Utilisez le menudes vues "Type" ou le raccourci clavier <PgDwn> alors que la vue a le focus d’entrée).

La section 6.4.3 Interpolation facile (page 423) dispose d’un script d’exemple qui automatise la création etle paramétrage d’une courbe de section transversale adaptée.

Les surfaces par translation sont un algorithme de création similaire, voir aussi la section 6.6.7 Surface partranslation (page 446).

Le tableau suivant énumère brièvement certaines capacités de l’objet Sweep.

Type Parent of Material Converts to / Provides Point EditSweep NCurve∗ Yes NPatch+ No*

Table 65: Capacités de l’objet Sweep

La propriété SweepAttr

L’attribut "Type" contrôle si la surface balayée doit être ouverte, fermée ou périodique dans la directionde la courbe de trajectoire.1

Si "Interpolation" est activé, une interpolation supplémentaire sera exécutée sur la surface balayéedans la direction U, de sorte que toutes les courbes de section seront interpolées par la surface balayée. Aulieu d’un vecteur de noeud NURBS, la surface balayée obtiendra alors un vecteur de noeud Chordal (calculépar moyennage de noeuds) et la surface balayée suivra la trajectoire de plus près. Voir l’image ci-dessouspour un exemple.

Figure 75: Glissement sur un quart de cercle à gauche sans et à droite avec interpolation

Le troisième paramètre, "Sections", détermine combien de points de contrôle (dans la direction U)doivent être utilisés, pour la génération du patch NURBS. Le patch NURBS a sections+1 points de contrôledans la direction U pour les balayages ouverts et fermés, alors que les sections+(ordre points de contrôle)seront créés pour les balayages périodiques.Zéro est un réglage valide pour le paramètre "Sections" et utilisé comme valeur par défaut. 2 Dans cecas, le nombre de sections est directement dérivé de la longueur de la courbe de trajectoire plus un (sauf

1 Depuis 1.10. 2 Depuis 1.13.

Page 187: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 187

pour les courbes de trajectoire de longueur 2, où le nombre de sections est de 1).Par exemple, si "Sections" est nul, pour une courbe NURBS standard de longueur 4, le nombre desections utilisées est 5 et la largeur du patch NURBS créé est 6, pour une courbe avec seulement 2 points decontrôle, le nombre de sections utilisées est 1 et la largeur du patch résultant est 2. Voir le tableau ci-dessouspour plus d’exemples.De plus, si "Sections" est égal à zéro, l’ordre du balayage dans la direction U est tiré de la courbe detrajectoire. Sinon, l’ordre de la pièce créée dépend du nombre de sections comme suit : pour 1 et 2 sections,l’ordre sera respectivement de 2 et 3, dans tous les autres cas, il sera de 4.

Si "Rotate" est activé, les sections transversales seront tournées de façon à ce qu’elles soient toujoursperpendiculaires à la trajectoire, cette option est activée par défaut.

Voir la section 4.6.1 Propriété NPatchAttr (page 166) pour une description des deux autres attributs"DisplayMode" et "Tolerance".

Pour aider à la configuration exacte de la surface balayée, le champ "NPInfo" affiche toujours lesparamètres du patch NURBS créé.

Le tableau suivant présente quelques exemples de configurations de paramètres pour l’objet Sweep.

Sections Trajectory Length Trajectory Order Sweep Length Sweep Order0 2 2 2 20 5 4 6 40 6 5 7 54 6 5 5 410 6 5 11 4

Table 66: Exemples de configurations de paramètres pour l’objet Sweep

Page 188: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 188

Bouchons et biseaux

L’objet Sweep prend en charge les bouchons standard tels que définis dans la section 4.10.5 Propriété Caps(page 252) et les biseaux standard tels que définis dans la section 4.10.6 Propriété Bevels (page 253).

Les noms des frontières sont:Start – section transversale,End – coupe transversale à la fin du balayage,Left – courbe formée en balayant le point de départ de la section transversale, etRight – courbe formée en balayant le point final de la section transversale.

Conversion

La surface balayée, les biseaux et les bouchons peuvent être convertis en patchs NURBS ordinaires enutilisant l’entrée du menu principal "Tools/Convert".

Si des biseaux ou des bouchons sont présents, un objet Level enveloppant sera créé et les biseaux et bouchonssuivront la surface balayée dans l’ordre suivant : biseau de départ, bouchon de départ, biseau de fin, bouchonde fin, biseau de gauche, bouchon de gauche, biseau de droite, bouchon de droite.

Les biseaux ou les bouchons intégrés n’apparaissent pas comme des objets supplémentaires.

L’objet Sweep fournit une liste des objets patchs NURBS dans le même ordre que celui créé lors de laconversion.

Exportation RIB

Les objets Sweep seront exportés en tant que primitives NURBS :

RiNuPatch(...);

Si des bouchons ou des biseaux sont présents, ceux-ci suivent comme des primitives NURBS potentiellementajustées dans l’ordre suivant : biseau de départ, bouchon de départ, biseau de fin, bouchon de fin, biseau degauche, bouchon de gauche, biseau de droite, bouchon de droite.

Page 189: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 189

4.7.5 L’objet Birail1

Figure 76: L’objet Birail1(à gauche les courbes, à droite la surface résultat)

L’objet Birail1 forme une surface en balayant une courbe section transversale (ou profil) le long de deuxcourbes dites rail. Voir l’image ci-dessus pour un exemple.

La hiérarchie des objets d’un objet Birail1 ressemble donc à ceci :

+-Birail1

| Cross_Section(NCurve)

| Rail1(NCurve)

\ Rail2(NCurve)

Lorsque la section transversale touche les courbes du rail à leurs points de départ respectifs, la surfacerésultante interpole les courbes du rail. La direction de la courbe de la section transversale sera parallèleà la dimension paramétrique V (hauteur) et la direction des courbes du rail sera parallèle à la dimensionparamétrique U (largeur) de la surface résultante. La hauteur et la largeur de la surface seront dérivées de lalongueur de la courbe de section transversale et du nombre de sections, respectivement.

Figure 77: Une configuration valide des courbes paramètres (blanc) et la surface résultat (bleu)

L’image ci-dessus montre une configuration valide des courbes paramètres pour l’objet Birail1. Attention àla direction des courbes de rail (R1 et R2) par rapport à la courbe de section transversale (CS) et au fait quela courbe de section transversale touche les points de départ des courbes de rail.

Notez que la courbe de section transversale ne doit pas être bidimensionnelle et, contrairement à l’objetSweep normal, elle ne doit pas non plus être définie dans un plan spécial. Notez également que la précisionavec laquelle la surface résultante interpolera les courbes des rails dépend du nombre de sections choisies.

Page 190: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 190

L’objet Birail1 surveille les objets enfants et s’y adapte automatiquement grâce au mécanisme de notifica-tion.

Voir aussi la section 6.6.6 Double balayage (DualSweep) (page 445) pour un objet de script qui crée unesurface similaire.

Le tableau suivant énumère brièvement certaines capacités de l’objet Birail1.

Type Parent of Material Converts to / Provides Point EditBirail1 NCurve∗ Yes NPatch+ No*

Table 67: C apacités de l’objet Birail1

La propriété Birail1Attr

Les paramètres suivants contrôlent le processus birail.

Comme l’objet Sweep, l’attribut "Type" contrôle si la surface birail doit être ouverte, fermée ou périodiquedans le sens des courbes du rail.

Le paramètre "Sections" détermine combien de sections (dans le sens U) doivent être utilisées, lors dela génération du patch NURBS birail. Le patch NURBS birail a toujours sections + 1 points de contrôledans la direction U.Le zéro est également un paramètre valide pour le paramètre "Sections" et utilisé comme valeur pardéfaut.1

Si "Sections" est égal à zéro, le nombre de sections est directement dérivé de la longueur de la premièrecourbe du rail plus un (sauf pour les courbes de longueur 2, où il est égal à 1). Voir le tableau ci-dessouspour des exemplesDe plus, si "Sections" est égal à zéro, l’ordre du birail dans le sens U est pris à partir de la premièrecourbe du rail. Sinon, l’ordre de la pièce créée dépend du nombre de sections comme suit : pour 1 et 2sections, l’ordre sera respectivement de 2 et 3, dans tous les autres cas, il sera de 4.

Voir la section 4.6.1 Propriété NPatchAttr (page 166) pour une description des deux autres attributs"DisplayMode" et "Tolerance".

Pour aider à la configuration exacte de la surface birailée, le champ "NPInfo" affiche toujours lesparamètres du patch NURBS créé.

1 Depuis 1.13.

Page 191: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 191

Le tableau suivant présente quelques exemples de configurations de paramètres pour l’objet Birail1.

Sections Rail1 Length Rail1 Order Birail1 Length Birail1 Order0 2 2 2 20 5 4 6 40 6 5 7 54 6 5 5 410 6 5 11 4

Table 68: exemples de configurations de paramètres pour l’objet Birail1

Bouchons et bieaux

L’objet Birail1 prend en charge les bouchons standard tels que définis dans la section 4.10.5 Propriété Caps(page 252) et les biseaux standard tels que définis dans la section 4.10.6 Propriété Bevels (page 253).

Les noms des limites sont:Start – section transversale,End – coupe transversale à la fin du balayage,Left – courbe formée en balayant le point de départ de la section transversale, etRight – courbe formée en balayant le point final de la section transversale.

Conversion

La surface birail, les biseaux et les bouchons peuvent être convertis en patchs NURBS ordinaires en utilisantl’entrée du menu principal "Tools/Convert".

Si des biseaux ou des bouchons sont présents, un objet Level enveloppant sera créé et les biseaux et bouchonssuivront la surface birail dans l’ordre suivant : biseau de fin, bouchon de fin, biseau de début, bouchon dedébut, biseau de gauche, bouchon de gauche, biseau de droite, bouchon de droite.

Les biseaux ou les bouchons intégrés n’apparaissent pas comme des objets supplémentaires.

L’objet Birail1 fournit une liste des objets patchs NURBS dans le même ordre que celui créé lors de laconversion.

Exportation RIB

Les objets Birail1 seront exportés en tant que primitives NURBS :

RiNuPatch(...);

Si des bouchons ou des biseaux sont présents, ceux-ci suivent comme des primitives NURBS potentiellementajustées dans l’ordre suivant : biseau de fin, bouchon de fin, biseau de début, bouchon de début, biseau degauche, bouchon de gauche, biseau de droite, bouchon de droite.

Page 192: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 192

4.7.6 L’objet Birail2

Figure 78: L’objet Birail2 Object (à gauche les courbes, à droite la surface résultat)

L’objet Birail2 forme une surface en balayant une courbe section transversale (ou profil) le long de deuxcourbes dites rail, tout en la transformant en une seconde courbe transversale (ou de profil). Voir égalementl’image ci-dessus pour un exemple.

Le processus de morphing peut être contrôlé par une cinquième courbe paramètre, la courbe de contrôle del’interpolation. La hiérarchie des objets d’un objet Birail2 ressemble donc à ceci :

+-Birail2

| Cross_Section1(NCurve)

| Rail1(NCurve)

| Rail2(NCurve)

| Cross_Section2(NCurve)

\ [Interpolation_Control(NCurve)]

Lorsque les sections transversales touchent les courbes du rail à leurs points de départ ou d’arrivée respectifs,la surface résultante interpole les courbes du rail. La direction des courbes de la section transversale seraparallèle à la dimension paramétrique V (hauteur) et la direction des courbes du rail sera parallèle à ladimension paramétrique U (largeur) de la surface résultante. La hauteur et la largeur de la surface serontdérivées de la longueur des courbes de section transversale et du nombre de sections, respectivement.

Figure 79: Configuration valide des courbes paramètres (blanc) pour Birail2 (bleu)

Page 193: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 193

L’image ci-dessus montre une configuration valide des courbes paramètres pour l’objet Birail2. Attentionà la direction des courbes de rail (R1 et R2) par rapport aux deux courbes de section transversale (CS1 etCS2) et au fait que toutes les courbes se touchent à leurs points d’extrémité respectifs.

Notez que les courbes de section transversale n’ont pas besoin d’être bidimensionnelles et, contrairement àl’objet Sweep normal, elles n’ont pas non plus besoin d’être définies dans un plan spécial. En outre, elles nedoivent pas être compatibles en termes de longueur, d’ordre et de noeuds. Les courbes incompatibles serontrendues compatibles avant le traitement birail automatique ; la hauteur de la surface résultante, cependant,n’est plus facilement prévisible dans ce cas. Il faut également noter que la précision avec laquelle la surfacerésultante interpolera les courbes du rail dépend du nombre de sections choisies.

Si une cinquième courbe est présente comme objet paramètre, cette courbe contrôlera le processus de mor-phing (interpolation). La coordonnée y de cette courbe en un point spécifique, qui doit avoir une valeurcomprise entre 0 et 1, détermine le rapport de contrôle de la première section transversale (0) et de ladeuxième section transversale (1) sur la courbe interpolée. Ainsi, une ligne droite allant du point (0,0) à(1,1) sera équivalente à l’interpolation linéaire standard qui serait effectuée si aucune courbe de contrôlede l’interpolation n’était présente. Notez, cependant, que la courbe de contrôle d’interpolation n’a aucuneinfluence sur la première et la dernière copie de la courbe de section transversale respective, à moins quel’option "InterpolCtrl" soit utilisée.1

L’objet Birail2 surveille les objets enfants et s’y adapte automatiquement grâce au mécanisme de notifica-tion.

Le tableau suivant énumère brièvement certaines capacités de l’objet Birail2.

Type Parent of Material Converts to / Provides Point EditBirail2 NCurve∗ Yes NPatch+ No*

Table 69: Capacités de l’objet Birail2

La propriété Birail2Attr

Les paramètres suivants contrôlent le processus birail.

Le paramètre "Sections" détermine combien de sections (dans le sens U) doivent être utilisées, lors dela génération du patch NURBS birail. Le patch NURBS birail a toujours des sections + 1 points de contrôledans la direction du U.Le zéro est également un paramètre valide pour le paramètre "Sections" et utilisé comme valeur pardéfaut.2

Si "Sections" est égal à zéro, le nombre de sections est directement dérivé de la longueur de la premièrecourbe du rail plus un (sauf pour les courbes de longueur 2, où il est égal à 1). Voir le tableau ci-dessouspour des exemples.De plus, si "Sections" est égal à zéro, l’ordre du birail dans le sens U est pris à partir de la premièrecourbe du rail. Sinon, l’ordre de la pièce créée dépend du nombre de sections comme suit : pour 1 et 2sections, l’ordre sera respectivement de 2 et 3, dans tous les autres cas, il sera de 4.

Le paramètre "InterpolCtrl" permet à la courbe de contrôle de l’interpolation d’avoir une influencetotale sur la surface biraie. Si "InterpolCtrl" est désactivé, le premier et le dernier bord de la surface

1 Depuis 1.10. 2 Depuis 1.13.

Page 194: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 194

résultante correspondront toujours exactement aux courbes des paramètres (CS1 et CS2 respectivement),quelle que soit la courbe de contrôle d’interpolation.

Voir la section 4.6.1 Propriété NPatchAttr (page 166) pour une description des deux autres attributs"DisplayMode" et "Tolerance".

Pour aider à la configuration exacte de la surface birail, le champ "NPInfo" affiche toujours les paramètresdu patch NURBS créé.

Le tableau suivant présente quelques exemples de configurations de paramètres pour l’objet Birail2.

Sections Rail1 Length Rail1 Order Birail2 Length Birail2 Order0 2 2 2 20 5 4 6 40 6 5 7 54 6 5 5 410 6 5 11 4

Table 70: Exemples de configurations de paramètres pour l’objet Birail2

Bouchons et biseaux

L’objet Birail2 prend en charge les bouchons standard tels que définis dans la section 4.10.5 Propriété Caps(page 252) et les biseaux standard tels que définis dans la section 4.10.6 Propriété Bevels (page 253).

Les noms des limites sont :Start – première section transversale,End – seconde section transversale,Left – courbe formée en balayant le point de départ de la première section transversale, etRight – courbe formée en balayant le point final de la première section transversale.

Conversion

La surface birail, les biseaux et les bouchons peuvent être convertis en patchs NURBS ordinaires en utilisantl’entrée du menu principal "Tools/Convert".

Si des biseaux ou des bouchons sont présents, un objet Level enveloppant sera créé et les biseaux et bouchonssuivront la surface birail dans l’ordre suivant : biseau de fin, bouchon de fin, biseau de début, bouchon dedébut, biseau de gauche, bouchon de gauche, biseau de droite, bouchon de droite.

Les biseaux ou les bouchons intégrés n’apparaissent pas comme des objets supplémentaires.

L’objet Birail2 fournit une liste des objets patchs NURBS dans le même ordre que celui créé lors de laconversion.

Exportation RIB

Les objets Birail2 seront exportés en tant que primitives NURBS :

RiNuPatch(...);

Page 195: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 195

Si des bouchons ou des biseaux sont présents, ceux-ci suivent comme des primitives NURBS potentiellementajustées dans l’ordre suivant : biseau de fin, bouchon de fin, biseau de début, bouchon de début, biseau degauche, bouchon de gauche, biseau de droite, bouchon de droite.

Page 196: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 196

4.7.7 Les revêtements (Skin)

Figure 80: Skin Object (à gauche les courbes, à droite le revêtement résultat)

L’objet Skin forme une surface définie par un ensemble de courbes coupe transversale, où la première et ladernière courbe seront toujours interpolées par la surface (ce processus est parfois aussi appelé lofting). Voiraussi l’image ci-dessus.

Lorsque seules deux courbes paramètres sont utilisées, le revêtement forme une surface dite ruled (déter-minée).

Le modèle complet de la hiérarchie des objets Skin ressemble donc à ceci :

+-Skin

| C_1(NCurve)

| C_2(NCurve)

| [...

\ C_n(NCurve)]

Notez que contrairement à l’outil de construction à partir de courbes, les courbes peuvent être de longueuret d’ordre quelconques. Il est par exemple possible d’utiliser une courbe paramètre d’ordre 2 et de longueur6 avec une deuxième courbe d’ordre 4 et de longueur 4 et une troisième courbe avec des points de contrôled’ordre 3 et 5. Si les courbes sont de longueur ou d’ordre différent, elles seront toutes converties en internejusqu’à ce qu’elles soient compatibles. Il faut savoir que ce processus peut prendre beaucoup de temps cartoutes les courbes non serrées doivent être converties en courbes serrées ; ensuite, pour chaque courbe avecun degré d’élévation d’ordre inférieur, il faut procéder à une élévation ; il faut alors trouver un vecteur denoeud uniforme ; toutes les courbes doivent ensuite être affinées à l’aide de ce nouveau vecteur de noeud ;l’interpolation ajoute une autre dimension de complexité. Si vous constatez des retards lors de l’édition descourbes enfants d’un objet Skin, essayez de passer à la notification paresseuse.

Un objet Skin utilisera également toutes les courbes d’un objet outil, qui fournit des courbes multiples, parexemple un objet Clone en mode miroir.1

La direction des courbes paramètres sera parallèle à la dimension V (hauteur) de la surface du revêtement.Le nombre de courbes paramètres définira la dimension U (largeur) de la surface du revêtement.

Notez également que le patch résultant peut être assez complexe, même si les courbes ne le sont pas, si lesordres ou les vecteurs de noeuds des courbes ne correspondent pas. Par exemple, une surface de revêtement1 Depuis 1.9.

Page 197: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 197

provenant de deux courbes de longueur 4 mais dont l’une est d’ordre 4 et l’autre d’ordre 2 donnera unesurface de largeur 2 et de hauteur 10.

L’objet Skin a les courbes NURBS génératrices comme objets enfants et observe leurs changements et s’yadapte de manière automatique.

Le tableau suivant énumère brièvement certaines capacités de l’objet Skin.

Type Parent of Material Converts to / Provides Point EditSkin NCurve∗ Yes NPatch+ No*

Table 71: Capacités de l’objet Skin

La propriété SkinAttr

Les paramètres suivants contrôlent le processus d’interpolation.

Le premier paramètre "Interpolation" contrôle si les courbes intérieures doivent également être in-terpolées par la surface du revêtement.

Le deuxième paramètre "Ordre_U" détermine l’ordre de la surface résultante dans la direction U (l’ordredans la direction V est déterminé par les courbes). L’ordre ne peut être supérieur au nombre de courbesutilisées. Si la valeur spécifiée est supérieure au nombre de courbes, l’ordre de la surface générée sera réglésans notification sur le nombre de courbes. Si "Ordre_U" est 0, une valeur par défaut de 4 sera utilisée.

En utilisant le paramètre suivant "Knot-Type_U", le type de vecteur de noeud qui doit être utilisé dansla direction U du revêtement peut être adapté. Notez que ce paramètre n’aura aucun effet si l’interpolationest activée car alors une paramétrisation de la longueur de la corde sera utilisée. Si le type de noeud est"Bezier" et que l’ordre spécifié (voir ci-dessus) ne correspond pas exactement au nombre de courbesdépouillées, alors l’ordre sera adapté en silence au nombre de courbes dépouillées. Le type de noeud"Custom" crée une paramétrisation de la longueur de la corde, même si l’interpolation n’est pas activée.1

Voir la section 4.6.1 Propriété NPatchAttr (page 166) pour une description des deux autres attributs"DisplayMode" et "Tolerance".

Pour aider à la configuration exacte de la surface écorchée, le champ "NPInfo" affiche toujours lesparamètres du patch NURBS créé.

Bouchons et biseaux

L’objet Skin prend en charge les bouchons standard tels que définis dans la section 4.10.5 Propriété Caps(page 252) et les biseaux standard tels que définis dans la section 4.10.6 Propriété Bevels (page 253).

Les noms des limites sont :Start – première courbe paramètre,End – dernière courbe paramètre,Left – courbe passant par les points de départ des courbes paramètres,Right – courbe passant par les points d’extrémité des courbes paramètres.

1 Depuis 1.7.

Page 198: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 198

Conversion

Le revêtement, les biseaux et les bouchons peuvent être convertis en patchs NURBS ordinaires en utilisantl’entrée du menu principal "Tools/Convert".

Si des biseaux ou des bouchons sont présents, un objet Level enveloppant sera créé et les biseaux et bouchonssuivront la surface dépouillée dans l’ordre suivant : biseau de départ, bouchon de départ, biseau de fin,bouchon de fin, biseau de gauche, bouchon de gauche, biseau de droite, bouchon de droite.

Les biseaux ou les bouchons intégrés n’apparaissent pas comme des objets supplémentaires.

L’objet Skin fournit une liste des objets patchs NURBS dans le même ordre que celui créé lors de la conver-sion.

Exportation RIB

Les objets en revêtement seront exportés en tant que primitives NURBS :

RiNuPatch(...);

Si des bouchons ou des biseaux sont présents, ceux-ci suivent comme des primitives NURBS potentiellementajustées dans l’ordre suivant : biseau de départ, bouchon de départ, biseau de fin, bouchon de fin, biseau degauche, bouchon de gauche, biseau de droite, bouchon de droite.

Page 199: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 199

4.7.8 Surface de Gordon

Figure 81: Surface de Gordon (à gauche les courbes, à droite la surface résultat)

L’objet Gordon forme une surface définie par deux ensembles de courbes qui se croisent (un réseau decourbes), où toutes les courbes seront toujours interpolées par la surface (voir image ci-dessus). L’image ci-dessous montre la configuration la plus simple d’un tel réseau, composé de quatre courbes paramètres. Notezla disposition et la direction des courbes. Notez également que cette configuration est en fait équivalente àun patch de Coons.

Figure 82: Surface de Gordon (bleu) avec ses courbes paramètres (blanc)

Les courbes peuvent être de longueur et d’ordre quelconques. Il est par exemple possible d’utiliser unepremière courbe d’ordre 2 et de longueur 6 avec une deuxième courbe d’ordre 4 et de longueur 4 et unetroisième courbe avec des points de contrôle d’ordre 3 et 5 pour la dimension paramétrique U.

Notez que tous les points d’intersection d’une courbe avec d’autres courbes doivent avoir la même valeurparamétrique dans chacune des autres courbes du même ensemble/direction. Toutes ces courbes sont ap-pelées courbes isoparamétriques.

Notez également que dans le cas général, seules les courbes non rationnelles peuvent être utilisées commecourbes paramètres pour une surface de Gordon. Si les courbes paramètres sont rationnelles, les informa-tions de poids des courbes seront simplement ignorées. Cependant, depuis Ayam 1.13, un cas particulierest autorisé : si exactement quatre courbes paramètres sont présentes, leurs informations de poids seront

Page 200: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 200

utilisées correctement. N’oubliez pas que pour une interpolation de surface correcte, les poids des courbesdoivent correspondre aux points d’extrémité respectifs.

L’objet Gordon génère des courbes NURBS comme des objets enfants et observe leurs changements et s’yadapte automatiquement. La séparation des deux ensembles de courbes doit être effectuée à l’aide d’un objetLevel vide. Le premier jeu de courbes détermine la direction du U et le second jeu de courbes la directiondu V de la surface de Gordon. Pour l’exemple de surface de l’image ci-dessus, les objets enfants de l’objetGordon devraient ressembler à ceci dans la vue arborescente de l’objet Ayam :

+-Gordon

| U1(NCurve)

| U2(NCurve)

| Level

| V1(NCurve)

\ V2(NCurve)

La création d’une surface de Gordon est coûteuse en termes de calcul. Elle consiste à habiller (par interpo-lation) les deux ensembles de courbes paramètres, à trouver les points d’intersection des deux ensembles decourbes paramètres, à interpoler la matrice des points d’intersection, à rendre les trois surfaces résultantescompatibles et enfin à combiner les trois surfaces pour obtenir la surface de Gordon résultante. S’il y ades retards dans l’édition des courbes paramètres d’une surface de Gordon, il faut envisager de passer à lanotification paresseuse.

Afin de faciliter la détection des intersections à forte intensité de calcul pour Ayam, un troisième objetparamètre peut être spécifié (séparé des deux ensembles de courbes paramètres par un deuxième objet Levelvide) Ce troisième objet paramètre doit être un objet patch NURBS qui décrit tous les points d’intersectionpar ses points de contrôle. S’il est présent, ce patch d’intersection a toujours la priorité sur les pointsd’intersection calculés en interne. Un tag "NoExport" doit être ajouté à ce patch, pour éviter qu’iln’apparaisse en sortie RIB.

La hiérarchie d’objets d’un objet Gordon utilisant un tel patch peut ressembler à ceci :

+-Gordon

| U1(NCurve)

| U2(NCurve)

| Level

| V1(NCurve)

| V2(NCurve)

| Level

\ Intersections(NPatch)

Le modèle complet de la hiérarchie d’objets de Gordon est donc le suivant :

+-Gordon

| U1(NCurve)

| U2(NCurve)

| [...

| Un(NCurve)]

| Level

| V1(NCurve)

| V2(NCurve)

Page 201: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 201

| [...

| Vn(NCurve)]

| [Level

\ Intersections(NPatch)]

L’objet Gordon surveille les objets enfants et s’y adapte automatiquement grâce au mécanisme de notifica-tion.

Le tableau suivant énumère brièvement certaines capacités de l’objet Gordon.

Type Parent of Material Converts to / Provides Point EditGordon NCurve∗/ Level / NPatch Yes NPatch+ No*

Table 72: Capacités de l’objet Gordon

La propriété GordonAttr

Les paramètres suivants de l’objet Gordon contrôlent la création de la surface Gordon.

Si le paramètre "WatchCorners" est activé, Ayam vérifiera les quatre courbes paramètres externes, pourvoir si elles se touchent dans leurs extrémités. Si ce n’est pas le cas, les points d’extrémité seront corrigés.Si Ayam peut déterminer quelle courbe a été modifiée en dernier, l’autre courbe qui devrait se rencontrerà l’extrémité en question sera modifiée. Si Ayam ne trouve aucune information sur les modifications, lescourbes U sont prioritaires (c’est-à-dire que les courbes V seront modifiées). Notez que cela ne fonctionnecorrectement qu’avec des courbes serrées. En outre, seuls les objets NCurve, ICurve ou ACurve serontmodifiés, mais les données de point final seront dérivées de tout objet fournissant une NCurve (par exempleExtrNC).1

Les paramètres "Order_U" et "Order_V" déterminent l’ordre souhaité de la surface résultante dans lesdirections U et V. Cependant, selon le nombre et la configuration des courbes utilisées dans la direction Uou V, il peut ne pas être possible de créer une surface de Gordon de l’ordre souhaité. Si "Order_U" ou"Order_V" sont 0, une valeur par défaut de 4 sera utilisée.

Voir la section 4.6.1 Propriété NPatchAttr (page 166) pour une description des deux autres attributs"DisplayMode" et "Tolerance".

Pour aider à la configuration exacte de la surface de Gordon, le champ "NPInfo" affiche toujours lesparamètres du patch NURBS créé.

Bouchons et biseaux

L’objet Gordon prend en charge les bouchons standard tels que définis dans la section 4.10.5 Propriété Caps(page 252) et les biseaux standard tels que définis dans la section 4.10.6 Propriété Bevels (page 253).

Les noms des limites sont :U0 – première courbe de la première série,U1 – dernière courbe de la première série,V0 – première courbe de la seconde série, etV1 – dernière courbe de la seconde série.1 Depuis 1.21.

Page 202: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 202

Conversion

La surface de Gordon, les biseaux et les bouchons peuvent être convertis en patchs NURBS ordinaires enutilisant l’entrée du menu principal "Tools/Convert".

Si des biseaux ou des bouchons sont présents, un objet Level enveloppant sera créé et les biseaux et bouchonssuivront la surface de Gordon dans l’ordre suivant : u0 biseau, u0 bouchon, u1 biseau, u1 bouchon, v0 biseau,v0 bouchon, v1 biseau, v1 bouchon.

Les biseaux ou bouchons intégrés n’apparaissent pas comme des objets supplémentaires.

L’objet Gordon fournit une liste des objets patchs NURBS dans le même ordre que celui créé lors de laconversion.

Exportation RIB

Les objets Gordon seront exportés en tant que primitives NURBS :

RiNuPatch(...);

Page 203: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 203

4.7.9 Les biseaux (Bevel)

Figure 83: L’objet Bevel (à gauche la courbe, à droite la surface biseautée)

L’objet Bevel forme une surface biseautée à partir d’une courbe à un seul paramètre. Voir aussi l’imageci-dessus. La forme de la section transversale du biseau peut être définie par une deuxième courbe. Parconséquent, le modèle de la hiérarchie d’un objet Bevel ressemble à ceci :

+-Bevel

| NCurve

\ [NCurve]

Les biseaux sont également disponibles en tant que propriétés de différents objets outils (par exemple,Extrude ou Sweep). En fait, les objets Bevel utilisent le même algorithme de création que les propriétésde biseau, mais offrent une plus grande flexibilité en termes de paramètres de matériau, par exemple. Lessurfaces créées à partir des propriétés de biseau partagent toujours les paramètres de matériau de l’objet-outil d’origine. En revanche, les objets Bevel peuvent avoir leurs propres paramètres de matériau. Les objetsBevel sont disponibles dans Ayam depuis la version 1.10.

Notez que la courbe des paramètres d’un objet Bevel doit être fermée et plane pour obtenir les meilleursrésultats ; voir la section 5.3.24 Outil de retournement vers XY (To XY) (page 301) pour savoir comment yparvenir facilement.

Si la courbe est fermée ou périodique, le type de courbe approprié doit être défini dans l’objet courbe, sinonla surface biseautée peut présenter des défauts.

Depuis Ayam 1.19, l’objet Bevel supporte une deuxième courbe paramètres qui définit la forme de la sectiontransversale des biseaux. Elle doit être définie dans le plan XY et aller de (0, 0) à (1, 1). Si cette courbeest présente, le paramètre de type Bevel est ignoré car la forme du biseau est déjà complètement définie.Notez que même si la courbe doit se terminer par (1, 1), cela n’est pas obligatoire et permet donc de créerdes biseaux de largeur et de hauteur différentes.

L’objet Biseau surveille l’objet enfant et s’y adapte automatiquement grâce au mécanisme de notification.

Le tableau suivant énumère brièvement certaines capacités de l’objet Bevel.

Page 204: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 204

Type Parent of Material Converts to / Provides Point EditBevel NCurve+ Yes NPatch No*

Table 73: Capacités de l’objet Bevel

La propriété BevelAttr

Les paramètres suivants de l’objet Biseau contrôlent la création de la surface biseautée :

• "BevelType" détermine la forme du biseau en choisissant parmi un ensemble de courbes de sectiontransversale :

– "Round" un quart de cercle,

– "Linear" un biseau droit,

– "Ridge" une surface plus complexe (ridged ???),

– "RoundToCap" une surface qui commence dans la direction d’une tangente à la surface duparent et qui s’arrondit à la surface d’un bouchon (les tangentes doivent être présentes commemarque sur la courbe des paramètres), ce type de surface offre une transition plus douce entre lasurface du parent et le biseau qu’un biseau rond, voir également l’image ci-dessous,

– "RoundToNormal" une surface qui commence dans la direction d’une tangente de surfacesource et qui s’arrondit à une normale moyenne, voir aussi l’image ci-dessous, les normales etles tangentes doivent être présentes comme marqueur sur la courbe des paramètres, la normalemoyenne peut aussi être fournie par un marqueur MN, voir la section 4.11.20 Balise MN (MeanNormal) (page 269),

– Toute courbe définie dans un niveau global appelé "Bevels" apparaît également comme typede biseau potentiel. Ces courbes doivent suivre les règles énoncées ci-dessus pour la deuxièmecourbe paramètre de l’objet Bevel.

Voir également l’image suivante pour une comparaison de certains types de biseaux. Notez que les

Figure 84: Différent types de biseaux (g: Round, c: RoundToCap, d: RoundToNormal)

types de biseau "RoundCapped" et "LinearCapped" ne sont plus disponibles 1, Utilisez lapropriété "Caps" pour créer des bouchons.

• "Radius" contrôle la taille et la direction de la surface biseautée lorsqu’elle est vue du haut de lacourbe des paramètres. Notez que la taille du biseau est exprimée en unités définies par le système decoordonnées de l’objet qui le contrôle. Les valeurs d’échelle de l’objet de contrôle affectent égalementla taille du biseau. Les valeurs négatives sont autorisées et inversent la surface.

1 Depuis 1.21.

Page 205: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 205

• "Revert" permet d’inverser le sens de la surface biseautée, doit-elle s’arrondir vers l’intérieur ouvers l’extérieur ? Le sens peut également être contrôlé en utilisant la direction de la courbe desparamètres et, en outre, le sens dans une autre dimension peut également être affecté en utilisant desvaleurs négatives pour le rayon du biseau.

• "Force3D" passe en mode 3D pour tous les types de biseau ; si cette fonction est activée, lescourbes paramètres non planes sont prises en charge, mais les normales et les tangentes doivent êtreprésentes comme balises PV sur la courbe paramètres. Toutefois, lorsque des biseaux sont créés viala propriété Bevels, les normales et les tangentes seront extraites automatiquement de la surface duparent et aucune balise PV ne doit être créée.

Page 206: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 206

Pour créer la balise avec les informations normales et tangentes, l’option "Extract" de l’objet ExtrNCpeut être utilisée. Sinon, les balises PV de nom, de classe de stockage et de type de données appropriésdoivent être créées manuellement ou à l’aide de l’interface de script. Considérons l’exemple de script suivant:

crtOb NCurve -length 4 -order 2 -cv {0 0 0 1 1 0 0 1 0 1 0 1 0 0 0 1}

uS;sL

addTag PV "N,varying,n,4, -1,0,0, 1,0,0, 0,1,0, -1,0,0"

addTag PV "T,varying,n,4, 0,0,1, 0,0,1, 0,0,1, 0,0,1"

Notez également que la planéité et la forme exacte définies par des valeurs de coordonnées rationnelles (parexemple, des arcs de cercle) ne seront pas préservées par les types de biseau qui supportent les courbesnon planes, à une exception près : Les biseaux RoundToCap sur des courbes/frontières entièrement planespréservent entièrement la forme de la frontière (à moins qu’elle ne soit remplacée par "Force3D").1

Voir la section 4.6.1 Propriété NPatchAttr (page 166) pour une description des deux attributs"DisplayMode" et "Tolerance" de la propriété "BevelAttr".

Pour aider à la configuration exacte de la surface du biseau, le champ "NPInfo" affiche toujours lesparamètres du patch NURBS créé.

Bouchons

L’objet Bevel prend en charge les bouchons standard tels que définis dans la section 4.10.5 Propriété Caps(page 252).

Le nom des limites sont :

Start – début de la section transversale du biseau,End – fin de la section transversale du biseau.

Conversion

La surface biseautée peut être convertie en un patch NURBS ordinaire en utilisant l’entrée du menu principal"Tools/Convert".

Si des bouchons sont présents, un objet Level englobant sera créé et les bouchons suivront la surface dubiseau dans l’ordre suivant : bouchon de début, bouchon de fin.

Exportation RIB

Les objets Bevel sont exportés comme des primitives NURBS :

RiNuPatch(...);

Si des bouchons sont présents, ceux-ci suivent comme des primitives NURBS potentiellement ajustées dansl’ordre suivant : bouchon de début, bouchon de fin.

1 Depuis 1.23.

Page 207: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 207

4.7.10 Les bouchons (Cap)

Figure 85: L’objet Cap (à gauche la courbe, à droite la surface bouchon)

L’objet Cap forme une surface qui remplit une courbe NURBS fermée. Voir aussi l’image ci-dessus.

Quatre types différents de surfaces de bouchon avec des caractéristiques et des exigences de courbesparamètres différentes sont pris en charge : Trim, Gordon, Simple, et Simple3D.1

Le type Trim requiert des courbes paramètres planes mais elles peuvent être concaves. En outre, si plusieurscourbes sont présentes en tant qu’objets enfants, les courbes suivant la première courbe définissent des trousdans la surface du bouchon, comme les courbes paramètres d’une surface extrudée (voir également la section4.7.2 Utilisation des Trous et Biseaux (page 179)).

Par conséquent, le modèle de la hiérarchie des objets d’un objet Cap en mode Trim ressemble à ceci :

+-Cap

| Outline(NCurve)

| [Hole1(NCurve)]

+-[Hole2(Level)

| Part1(NCurve)

\ Part2(NCurve)]

Notez que la génération des bouchons peut échouer, si les points de contrôle de la première courbe ont despoids et que la courbe quitte la coque convexe du polygone de contrôle.

Le type Gordon ne supporte qu’une courbe à un seul paramètre mais cette courbe peut être non plane. Eninterne, l’objet Cap va diviser la courbe paramètres en quatre sections et construire une surface de Gordon àpartir de ces quatre sections (voir l’image suivante pour un exemple).

Le type Simple ne fait qu’étendre la courbe paramètre linéairement jusqu’à un point central, ne supportantpas bien les courbes non planes et ne supportant pas du tout les courbes concaves mais assurant la com-patibilité avec la courbe/surface d’origine (ce qui peut être important pour la tessellation ou le traitementultérieur de la surface).

Le type Simple3D étend la courbe paramètres à un point central via un anneau supplémentaire de points decontrôle plans et circulaires, s’arrondissant ainsi plus facilement au milieu (particulièrement utile pour les

1 Depuis 1.21.

Page 208: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 208

Figure 86: Bouchon à partir d’une courbe non plane (à gauche la courbe, à droite la surface bouchée)

courbes paramètres non planes ou les courbes paramètres avec discontinuités), et conserve toutes les autrescaractéristiques du type Simple.

Une balise MP peut être placée sur l’objet Cap pour contrôler le point central dans les deux modes simples(voir la section 4.11.21 Balise MP (Mean Point) (page 269)).

Voir également le tableau suivant pour un aperçu des types de bouchons disponibles :

Type Planar Concave Holes Compatibility / IntegrationTrim Yes Yes Yes No

Gordon No No No NoSimple Yes No No Yes

Simple3D No No No Yes

Table 74: Aperçu des types de bouchons

L’objet Cap surveille les objets enfants et s’y adapte automatiquement grâce au mécanisme de notification.

Le tableau suivant énumère brièvement certaines capacités de l’objet Cap.

Type Parent of Material Converts to / Provides Point EditCap NCurve+ Yes NPatch No*

Table 75: Capacités de l’objet Cap

La propriété CapAttr

Les paramètres suivants contrôlent le processus de création des bouchons.

L’attribut "Type" permet de sélectionner l’une des méthodes de création de bouchon suivantes :

• "Trim": une surface NURBS ajustée,

• "Gordon": une surface de Gordon non ajustée,

• "Simple": un simple bouchon qui s’étend linéairement jusqu’à un point central,

• "Simple3D": un simple bouchon avec un anneau supplémentaire de points de contrôle quis’arrondit donc plus facilement au milieu, en particulier pour les courbes paramètres non planes.

Page 209: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 209

Voir également la discussion générale sur l’objet Cap ci-dessus.

Le paramètre "Fraction" permet d’ajuster le placement de l’anneau des points de contrôle supplémen-taires en mode Simple3D.

Voir la section 4.6.1 Propriété NPatchAttr (page 166) pour une description des deux attributs"DisplayMode" et "Tolerance" de la propriété "CapAttr".

Pour aider à la configuration exacte de la surface du bouchon, le champ "NPInfo" affiche toujours lesparamètres du patch NURBS créé.

Conversion

La surface du bouchon peut être convertie en un patch NURBS ordinaire en utilisant l’entrée du menuprincipal "Tools/Convert".

Exportation RIB

Les objets Cap seront exportés en tant que primitives NURBS :

RiNuPatch(...);

Page 210: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 210

4.7.11 Concaténer (relier) les patch NURBS (ConcatNP)

Figure 87: L’objet ConcatNP (blanc) à partir de deux patch NURBS (bleu)

L’objet ConcatNP concatène tous les objets enfants, qui doivent être des patchs NURBS ou fournir despatchs NURBS à un seul patch NURBS (voir aussi l’image ci-dessus).1 La concaténation consiste simple-ment à décomposer toutes les surfaces en courbes, à rendre les courbes compatibles et à les relier à la surfaceconcaténée. Les courbes NURBS ou les objets qui fournissent des courbes NURBS peuvent également êtreutilisés comme objets paramètres.2 Les courbes ajustées (de coupe ???) actuelles seront éventuellementcopiées et transformées à l’endroit et dans l’orientation appropriés dans la surface concaténée, en fonctiondu nouveau domaine de noeuds.3 Les attributs tels que le mode d’affichage et la tolérance pour le nouveaupatch concaténé sont simplement repris du premier patch de paramètres. Comme l’objet ConcatNP fournitégalement un patch NURBS, il est possible de l’utiliser comme objet enfant pour un autre objet ConcatNP(avec éventuellement des paramètres différents). De cette façon, une hiérarchie d’objets ConcatNP peutêtre utilisée pour émuler, dans une certaine mesure, la modélisation basée sur les patchs. Pour obtenir lesmeilleurs résultats, seules les surfaces serrées doivent être utilisées comme objets paramètres. Le tableausuivant énumère brièvement certaines capacités de l’objet ConcatNP.

Type Parent of Material Converts to / Provides Point EditConcatNP NPatch∗/ NCurve∗ Yes NPatch+ No*

Table 76: Capacités de l’objet ConcatNP

La propriété ConcatNPAttr

Les paramètres suivants contrôlent le processus de concaténation.

• En utilisant "Type", il est possible de créer des patchs concaténés ouverts, fermés ou périodiques.Si une surface fermée doit être créée et si "FillGaps" (voir ci-dessous) est également activé, unfilet supplémentaire sera créé pour la dernière et la première surface enfant pour fermer la surfaceconcaténée.

• "Order" est l’ordre souhaité de la surface concaténée (dans le sens U), la valeur par défaut (0)conduit à une surface cubique. Si l’ordre souhaité est 1, l’ordre respectif de la première des surfacesde paramètres est pris. Si l’ordre souhaité est supérieur au nombre de courbes (c’est-à-dire le nombretotal de points de contrôle de toutes les surfaces dans leurs directions souhaitées plus le nombre decourbes paramètres éventuellement présentes), il sera ramené au nombre de courbes sans notification.

1 Depuis 1.16. 2 Depuis 1.20. 3 Depuis 1.21.

Page 211: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 211

• "FillGaps" crée des surfaces de raccordement pour tous les espaces entre les surfaces desparamètres de l’objet ConcatNP. Aucun raccordement ne sera créé si les courbes d’extrémité de deuxsurfaces de paramètres correspondent ou si des courbes paramètres sont présentes entre les surfacesde paramètres en question. Comme les raccords pour les courbes concaténées, la surface de rac-cordement sera construite à partir de quatre points de contrôle (dans la direction du U). Toutefois,les vecteurs tangents ne seront pas calculés directement, mais plutôt dérivés des points de contrôlerespectifs.

• "FTLength" détermine la distance entre les points de contrôle du remplissage intérieur et leurspoints d’extrémité respectifs. Cette valeur peut être adaptée pour les écarts plus ou moins importantsentre les surfaces paramètres. Si ce paramètre est négatif, la distance entre les points de contrôle desfrontières des deux surfaces respectives sera multipliée de manière à obtenir une forme de remplissageplus agréable dans les configurations où les distances entre les points de contrôle respectifs varientbeaucoup (voir également l’image ci-dessous).

Figure 88: Surfaces concaténées (bleu) avec filigrane (filet, remplissage ????) (à gauche : FTLength 0,3, àdroite : FTLength -0,3)

• Si "Revert" est activée, l’orientation de la surface concaténée sera inversée (dans le sens U).

• Le paramètre "Knot-Type" permet de choisir un vecteur de noeud pour la surface concaténée dansla direction U. Comme pour l’objet ConcatNC, seuls les noeuds "Custom" permettent de préservercomplètement les formes des surfaces paramètre, mais cela se fait au prix de multiples noeuds internes(voir aussi 4.5.1 Propriété ConcatNCAttr (page 159)).

En outre, pour les noeuds "Custom", toutes les surfaces paramètres seront élevées à un ordre max-imum commun ou au moins seront serrées dans la direction respective avant la division en courbesmais après la création du remplissage. En outre, les courbes de coupe (??? d’ajustement) des surfacesparent ne seront copiées sur la surface résultante que si le paramètre "Knot-Type" est "Custom".L’option "UVSelect" est une chaîne qui peut être utilisée pour contrôler la direction de la divisionpour chaque surface paramètre individuellement. Les caractères valides dans cette chaîne sont "u","U", "v", et "V". Les variantes en majuscules conduisent à une surface inversée dans la directionindiquée.Pour relier deux surfaces qui partagent la même orientation "sur un coin", "UVSelect" doit êtreréglé sur "uV" (voir aussi l’image ci-dessous).La valeur par défaut de "UVSelect", une chaîne vide, est équivalente à "u" pour tous les correc-tifs. De même, des chaînes incomplètes conduiront à "u" pour tous les correctifs restants. Il n’est pasnécessaire de spécifier une valeur pour les filets, ceux-ci seront toujours créés de manière à pouvoirêtre répartis dans le sens du U.

• "Compatible" contrôle si les courbes doivent être rendues compatibles avant que la surface con-caténée ne soit construite à partir de celles-ci. Si cette option est désactivée (par défaut), les courbes

Page 212: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 212

Figure 89: Concaténer deux surfaces avec UVSelect == "uV"

sont rendues compatibles. Activez cette option si les surfaces à concaténer sont déjà compatibles etque leurs vecteurs de noeuds sont désactivés. La surface de sortie sera alors également désactivée(dans le sens V).

• Enfin, un champ "NPInfo" informe sur la configuration réelle du patch NURBS créé.

Bouchons et biseaux

L’objet ConcatNP prend en charge les bouchons standard tels que définis dans la section 4.10.5 PropriétéCaps (page 252) et les biseaux standard tels que définis dans la section 4.10.6 Propriété Bevels (page 253).Le nom des bornes sont U0, U1, V0, et V1.

Conversion

La surface concaténée peut être convertie en un patch NURBS ordinaire en utilisant l’entrée du menu prin-cipal "Tools/Convert".

Si des biseaux ou des bouchons sont présents, un objet Level englobant sera créé et les biseaux et lesbouchons suivront la surface concaténée dans l’ordre suivant : U0 biseau, U0 bouchon, U1 biseau, U1bouchon, V0 biseau, V0 bouchon, V1 biseau, V1 bouchon.

Les biseaux ou bouchons intégrés n’apparaissent pas comme des objets supplémentaires.

L’objet ConcatNP fournit une liste des objets patchs NURBS dans le même ordre que celui créé lors de laconversion.

Exportation RIB

Les objets ConcatNP seront exportés sous forme de primitives NURBS :

RiNuPatch(...);

Si des bouchons ou des biseaux sont présents, ceux-ci suivent comme des primitives NURBS potentiellementajustées dans l’ordre suivant : U0 biseau, U0 bouchon, U1 biseau, U1 bouchon, V0 biseau, V0 bouchon, V1biseau, V1 bouchon.1

1 Depuis 1.21.

Page 213: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 213

4.7.12 Extraction d’un patch NURBS (ExtrNP)

Figure 90: Surface extraite (blanc) de la surface du parent (bleu)

L’objet ExtrNP extrait un patch NURBS d’un autre objet patch NURBS, pour l’utiliser comme objetparamètre pour d’autres objets outils (voir image ci-dessus).1

Il fonctionne également avec le patch NURBS fournissant des objets, de sorte que l’exemple de hiérarchiesuivant est valable :

--NPatch

+-ExtrNP

\ Instance_of_NPatch(Instance)

Notez que l’utilisation d’un objet instance d’un autre objet de surface (comme montré dans l’exemple ci-dessus) est en fait la façon recommandée d’utiliser l’objet ExtrNP. Par conséquent, l’entrée du menu princi-pal "Tools/Create/ExtrNP" créera automatiquement une instance de l’objet actuellement sélectionnéet la déplacera vers l’objet ExtrNP nouvellement créé.

Comme la géométrie de la surface extraite est entièrement définie par la surface maîtresse, les objets ExtrNPne prennent pas en charge leurs propres attributs de transformation.2 Cependant, si une balise NP rendla propriété Transformation à nouveau disponible, les attributs de transformation seront employés commed’habitude.

Notez également que Les courbes Triméventuellement présentes ne seront pas correctement respectées.

Le tableau suivant énumère brièvement certaines capacités de l’objet ExtrNP.

Type Parent of Material Converts to / Provides Point EditExtrNP NPatch Yes NPatch+ No*

Table 77: Capacités de l’objet ExtrNP

La propriété ExtrNPAttr

Le processus d’extraction est contrôlé par les attributs suivants :• "UMin", "UMax", "VMin", et "VMax" sont des valeurs paramétriques qui contrôlent quelle partie

de la surface d’origine doit être extraite. La plage valable des valeurs paramétriques dépend desvecteurs de noeuds de la surface d’origine.

1 Depuis 1.14. 2 Depuis 1.19.

Page 214: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 214

• "Relative" contrôle si les valeurs paramétriques doivent être interprétées de manière relative.1 Sielle est activée, une valeur paramétrique de 0,5 est toujours extraite du milieu du vecteur de noeud,quelles que soient les valeurs réelles du noeud, et la plage valable pour les valeurs paramétriques estalors de 0,0-1,0.

• "PatchNum" permet de sélectionner un patch dans une liste de patchs livrés par exemple par unobjet Extrude biseauté comme enfant de l’objet ExtrNP. De cette façon, il est possible d’extraire unpatch d’une surface en biseau ou d’un bouchon d’un objet Revolve, par exemple.

• Voir la section 4.6.1 Propriété NPatchAttr (page 166) pour une description des deux autres attributs"DisplayMode" et "Tolerance".

• Enfin, un champ "NPInfo" informe sur la configuration réelle de la surface NURBS extraite.

Bouchons et biseaux

L’objet ExtrNP prend en charge les bouchons standard tels que définis dans la section 4.10.5 Propriété Caps(page 252) et les biseaux standard tels que définis dans la section 4.10.6 Propriété Bevels (page 253).Le nom des bornes sont U0, U1, V0, et V1.

Conversion

La surface extraite peut être convertie en un patch NURBS ordinaire en utilisant l’entrée du menu principal"Tools/Convert".

Si des biseaux ou des bouchons sont présents, un objet Level englobant sera créé et les biseaux ou lesbouchons suivront la surface extraite dans l’ordre suivant : U0, U1, V0, V1.

Les biseaux ou les bouchons intégrés n’apparaissent pas comme des objets supplémentaires.

L’objet ExtrNP fournit une liste des objets patchs NURBS dans le même ordre que celui créé lors de laconversion.

Exportation RIB

Les objets ExtrNP seront exportés sous forme de primitives NURBS :

RiNuPatch(...);

Si des biseaux ou des bouchons sont présents, ceux-ci suivent comme des primitives NURBS potentiellementajustées dans l’ordre suivant : U0, U1, V0, V1.

1 Depuis 1.15.

Page 215: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 215

4.7.13 Les décalages de surfaces(OffsetNP)

Figure 91: Surface décalée (blanc) par rapport à la surface NURBS (bleu) avec un décalage de 0,2

L’objet OffsetNP crée des surfaces décalées à partir des surfaces NURBS à l’aide d’un algorithme simple: chaque point de contrôle est déplacé le long d’un vecteur normal obtenu par tous les points de contrôledirectement voisins.1 Voir aussi l’image ci-dessus.

La surface décalée correspondra toujours à la surface originale en largeur, en hauteur, en ordres et en noeuds.

Le décalage fonctionne également pour les surfaces fermées et périodiques dans toutes les combinaisonspossibles dans les deux dimensions.<2 Les surfaces dégénérées sont prises en charge.3 Toutefois, il fautnoter que les surfaces rationnelles ne sont pas toujours prises en charge. Aucune tentative n’est faite pourprévenir les collisions ou les auto-interruptions.

Les courbes de compensation sont copiées textuellement de la surface du paramètre à la surface de décalage.

Comme la géométrie de la surface décalée est entièrement définie par la surface maître et le paramètre dedécalage, les objets OffsetNP ne prennent pas en charge leurs propres attributs de transformation.4

Le tableau suivant énumère brièvement certaines capacités de l’objet OffsetNP.

Type Parent of Material Converts to / Provides Point EditOffsetNP NPatch Yes NPatch+ No*

Table 78: Capacités de l’objet OffsetNP

La propriété OffsetNPAttr

Les paramètres suivants contrôlent le processus de décalage :

• "Offset" détermine la distance entre la surface d’origine et la surface décalée. Les valeurs néga-tives sont autorisées.

• Voir la section 4.6.1 Propriété NPatchAttr (page 166) pour une description des deux autres attributs"DisplayMode" et "Tolerance".

• Enfin, un champ "NPInfo" informe sur la configuration réelle de la surface NURBS créée.

1 Depuis 1.17. 2 Depuis 1.19. 3 Depuis 1.21. 4 Depuis 1.19.

Page 216: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 216

Bouchons et biseaux

L’objet OffsetNP prend en charge les bouchons standard tels que définis dans la section 4.10.5 PropriétéCaps (page 252) et les biseaux standard tels que définis dans la section 4.10.6 Propriété Bevels (page 253).Le nom des bornes sont U0, U1, V0, et V1.

Conversion

La surface décalée peut être convertie en un patch NURBS ordinaire en utilisant l’entrée du menu principal"Tools/Convert".

Si des biseaux ou des bouchons sont présents, un objet Level englobant sera créé et les biseaux ou lesbouchons suivront la surface décalée dans l’ordre suivant : U0, U1, V0, V1.

Les biseaux ou bouchons intégrés n’apparaissent pas comme des objets supplémentaires.

L’objet OffsetNP fournit une liste des objets patchs NURBS dans le même ordre que celui créé lors de laconversion.

Exportation RIB

Les objets OffsetNP seront exportés sous forme de primitives NURBS :

RiNuPatch(...);

Si des biseaux ou des bouchons sont présents, ceux-ci suivent comme des primitives NURBS potentiellementtaillées dans l’ordre suivant : U0, U1, V0, V1.

Page 217: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 217

4.7.14 Le texte (Text)

Figure 92: Un objet texte avec la police Verdana

Les objets Text peuvent être utilisés pour créer facilement des objets qui forment des lettres ou même desmots entiers de très haute qualité. Pour cela, ils analysent les fichiers de description des polices TrueType,extraient les courbes de Bézier de la description des polices, trient les courbes, les relient correctementet enfin les extrudent. Comme pour les objets Extrude, les bouchons et les biseaux peuvent être créésautomatiquement.

L’analyse des descriptions de polices TrueType est assez délicate. Par souci de concision et de facilité demise en oeuvre, Ayam n’est pas favorable à des descriptions de polices TrueType élaborées. Les fonctionsTrueType comme les tables de crénage, qui permettent par exemple de contrôler les distances entre certaineslettres (Vous n’allez pas écrire un livre avec Ayam de toute façon, n’est-ce pas ?). Par conséquent, il se peutque les distances entre les lettres ne soient pas correctes de temps en temps. Si cela se produit, il suffit decréer un objet Texte pour chaque lettre, et de disposer les objets comme vous le souhaitez.

L’objet Text peut être converti en patchs NURBS ordinaires en utilisant l’entrée du menu principal"Tools/Convert".

Le tableau suivant énumère brièvement certaines capacités de l’objet Text.

Type Parent of Material Converts to / Provides Point EditText No Yes NPatch+ No*

Table 79: Capacités de l’objet Text

La propriété TextAttr

Les attributs suivants contrôlent la création des objets text.

• En utilisant "FontName" un fichier de description de police TrueType est spécifié. Ces fichiers ontgénéralement l’extension de nom de fichier ".ttf". Seuls les vrais fichiers de police TrueType,contenant des descriptions de police en courbe de Bézier, sont pris en charge. Il existe également desfichiers de description de polices TrueType en mode raster et bitmap, qui ne fonctionnent pas.

• En utilisant "String" vous spécifiez les lettres à créer. Cette entrée (et les structures de donnéescorrespondantes) sont propres à Unicode. Cela signifie que vous pouvez mettre n’importe quelle lettreUnicode dans cette entrée. Vous devez bien sûr vous assurer que les lettres spécifiées sont inclusesdans le fichier de police sélectionné.

• "Height" contrôle la hauteur de l’objet extrudé.

Page 218: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 218

• "Revert" inverse le sens du mécanisme de détection intérieur-extérieur pour la génération du bou-chon. En fonction du fichier de description de la police (ou même de la lettre), vous pouvez avoirbesoin de basculer ce paramètre pour obtenir des bouchons.

• "UpperCap", "LowerCap", fonctionnent comme pour l’objet Extrude (voir la section 4.7.2 Pro-priété ExtrudeAttr (page 179) pour une description plus exhaustive de ces paramètres).

• "Add Lower Bevel!", "Add Upper Bevel!": Depuis Ayam 1.10, les paramètres de biseaude l’objet texte sont enregistrés dans des balises de paramètres de biseau et l’interface graphique depropriété a été modifiée pour se conformer à tous les autres objets de l’outil de support de biseau.Les anciennes options "LowerBevel", "UpperBevel", "BevelType", "BevelRadius",et "RevertBevels" ne sont plus disponibles. Elles ont été remplacées par de nouvelles balisesdynamiques créant des sections d’interface graphique de propriété pour le biseau qui sont accessiblespar les nouvelles entrées de commande "Add Lower Bevel !" et "Add Upper Bevel !"respectivement. Si l’une de ces entrées est utilisée, une balise de paramètre de biseau est créée etd’autres options seront disponibles dans l’interface graphique de propriété pour ajuster les paramètresde biseau ou supprimer la balise à nouveau. Une discussion plus approfondie de ces options estdisponible dans la section 4.7.9 Propriété BevelAttr (page 204).

Juste une remarque : pour certaines polices, le rayon de biseau doit être réglé à des valeurs vraimentpetites (environ 0,0008) pour obtenir des biseaux et des bouchons corrects. Cela est dû aux coins netsde certaines lettres qui entraînent un chevauchement des bords des surfaces de biseau avec des valeursélevées pour le rayon de biseau.

Voir la section 4.6.1 Propriété NPatchAttr (page 166) pour une description des deux autres attributs"DisplayMode" et "Tolerance".

Conversion

Les surfaces extrudées, les biseaux et les bouchons peuvent être convertis en patchs NURBS ordinaires enutilisant l’entrée du menu principal "Tools/Convert".

Si des biseaux ou des bouchons sont présents, un objet Level englobant sera créé et les bouchons suivront lasurface extrudée dans l’ordre suivant : biseau de fin, bouchon de fin, biseau de début, bouchon de début.

L’objet Texte fournit une liste des objets patchs NURBS dans le même ordre que celui créé lors de laconversion.

Exportation RIB

Les objets texte seront exportés sous forme de primitives NURBS :

RiNuPatch(...);

Si des bouchons ou des biseaux sont présents, ceux-ci suivent comme des primitives NURBS potentiellementajustées dans l’ordre suivant : biseau de fin, bouchon de fin, biseau de début, bouchon de début.

Page 219: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 219

4.7.15 Les découpes ou ajustements (Trim)

Figure 93: Exemple d’objet Swing découpé

L’objet Trim peut être utilisé dans des hiérarchies d’objets outils pour découper le patch NURBS en four-nissant des objets qui ne peuvent être découpés autrement, comme par exemple un objet Revolve.1

Voir également l’image ci-dessus qui représente l’exemple d’un objet à surface pivotée, découpé par un objetTrim.

Le premier enfant de l’objet Trim est le patch NURBS fournissant l’objet et le second objet est la courbede découpe (définie dans l’espace paramétrique de la surface NURBS). D’autres courbes et boucles peuventsuivre. Toutes les courbes paramétriques doivent obéir aux règles de découpe telles que décrites dans lasection 4.6.1 Courbes de trim (coupe) (page 167).

La surface peut déjà être découpée et il peut y avoir plusieurs patchs fournis, cependant, un seul d’entre euxsera découpé par l’objet Trim.

La hiérarchie des objets d’un objet Trim ressemble donc à ceci :

+-Trim

| Surface(Revolve)

| Trim_1(NCurve)

+-[Trim_2(Level)

| | NCurve

| \ NCurve

| ...

\ Trim_n(ICurve)]

Le tableau suivant énumère brièvement certaines capacités de l’objet Trim.

Type Parent of Material Converts to / Provides Point EditTrim NPatch / NCurve+/ Level+ Yes NPatch No

Table 80: Capacités de l’objet Trim

1 Depuis 1.16.

Page 220: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 220

La propriété TrimAttrib

Les paramètres suivants contrôlent le processus de découpage :

• "PatchNum" permet de sélectionner un patch, si le patch NURBS fournissant l’objet fournit uneliste. De cette façon, un biseau d’une extrusion peut être coupé.

• "ScaleMode" contrôle la façon dont la courbe de coupe est mise à l’échelle par rapport à l’espacede paramètres du patch NURBS:En mode "Absolu" aucune mise à l’échelle ne se produit.En mode "Relative" les courbes de coupe sont censées être définies entre 0 et 1 (dans la dimensionx et y) et seront mises à l’échelle du patch de manière appropriée, quelle que soit l’apparence réelle del’espace paramétrique du patch (c’est-à-dire que cela fonctionne de la même manière pour un patchoù les noeuds vont de 0 à 1, 0 à 2, ou même 3 à 3.5).

Conversion

La surface découpée peut être convertie en un patch NURBS ordinaire en utilisant l’entrée du menu principal"Tools/Convert".

Exportation RIB

Les objets de découpe seront exportés en tant que primitives NURBS :

RiNuPatch(...);

Les balises PV ne sont pas prises en charge.

Page 221: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 221

4.8 Objets polygonaux et de subdivision

Ces objets complètent l’ensemble des fonctionnalités de Ayam et permettent d’inclure dans les scènes Ayamdes objets modélisés dans les schéma de modélisation polygonale ou de subdivision.

4.8.1 L’objet PolyMesh

Figure 94: Exemple PolyMesh

L’objet PolyMesh peut être utilisé pour inclure des objets qui ont été modélisés en utilisant le paradigme demodélisation polygonale dans les scènes Ayam. Voir l’image ci-dessus pour un exemple simple.

Il existe seulement quelques actions de modélisation spéciales pour ce type d’objet (voir la section 2.2PolyMesh tools (page 37)), mais ses points de contrôle peuvent être sélectionnés et modifiés comme celapeut être fait avec d’autres types d’objets, par exemple les courbes.

L’objet PolyMesh est équivalent aux polygones de points généraux primitifs de l’interface RenderMan. Celasignifie que chaque objet PolyMesh peut contenir plusieurs polygones généraux (convexes ou concaves), quià leur tour peuvent être constitués d’une boucle extérieure et d’un nombre quelconque de boucles intérieuresqui décrivent des trous dans le polygone (voir aussi l’image ci-dessus, montrant un maillage polygonal avecune face pentagonale et un trou triangulaire). Les boucles utilisent un schéma d’indexation ponctuelle pourréutiliser efficacement les valeurs de coordonnées. Cette approche générale nécessite la réalisation d’unetessellation, afin que l’objet PolyMesh soit ombré. Pour la tessellation, Ayam utilise des routines de labibliothèque GLU.

Ayam est capable de créer automatiquement des normales de face pour les objets PolyMesh. Elles serontcalculées pendant la construction du PolyMesh et seront perpendiculaires au plan déterminé par les troispremiers sommets de la boucle extérieure d’un polygone. De plus, Ayam prend en charge les normales desommet (normales stockées pour chaque point de contrôle).

Notez que le stockage de triangles simples dans les objets PolyMesh entraînera un réel gaspillage de mé-moire. L’outil de fusion (menu principal "Tools/PolyMesh/Merge") peut être utilisé pour combinerplusieurs objets PolyMesh en un seul objet PolyMesh.

Le tableau suivant énumère brièvement certaines capacités de l’objet PolyMesh.

Type Parent of Material Converts to / Provides Point EditPolyMesh No Yes SDMesh Yes

Table 81: Capacités de l’objet PolyMesh

Page 222: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 222

La propriété PolyMeshAttr

L’interface graphique PolyMeshAttr affiche seulement quelques informations sur l’objet PolyMesh :

• "NPolys" le nombre de polygones.

• "NControls" le nombre total de points de contrôle définis.

• "HasNormals" est à 1 si l’objet utilise des normales de sommet, sinon il est à 0.

Conversion

Les objets PolyMesh peuvent être convertis en objets SDMesh en utilisant l’entrée du menu principal"Tools/Convert".1

Il est à noter qu’aucune vérification de l’utilité du maillage comme maille de base pour une surface desubdivision n’est effectuée. Habituellement, ces mailles doivent être multiples et ne peuvent pas contenir dejonctions en T.

Exportation RIB

Les objets PolyMesh seront exportés sous forme de primitives RiPointsGeneralPolygons (indépen-damment du fait que la configuration réelle s’inscrive dans une primitive polygonale plus simple del’interface RenderMan, par exemple un RiGeneralPolygon).

Les balisesPV sont prises en charge.

1 Depuis 1.11.

Page 223: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 223

4.8.2 L’objet SDMesh

Figure 95: L’objet SDMesh avec le maillage polygonal origine (bleu)

L’objet SDMesh peut être utilisé pour inclure des objets qui ont été modélisés en utilisant le paradigme demodélisation de la subdivision dans les scènes Ayam (voir aussi l’image ci-dessus).

Il n’y a pas d’actions de modélisation spéciales pour ce type d’objet, mais ses points de contrôle peuvent êtresélectionnés et modifiés comme cela peut être fait avec d’autres types d’objets, par exemple des courbes.

L’objet SDMesh est équivalent à la primitive Subdivision Mesh de l’interface RenderMan. Cela signifie quechaque objet SDMesh peut contenir plusieurs faces avec un nombre quelconque de sommets qui formentun maillage polygonal. Ce maillage polygonal est ensuite successivement raffiné à l’aide d’un schéma desubdivision et, selon le nombre d’étapes de raffinement (ou de subdivision), donne une surface plus ou moinslisse. Il existe plusieurs schémas de subdivision différents, mais le schéma actuellement pris en charge parla plupart des moteurs de rendu compatibles avec RenderMan est appelé "Catmull-Clark".

Des balises peuvent être spécifiées pour les faces, les arêtes ou les sommets afin de contrôler le processusde subdivision (par exemple pour créer des coins ou des arêtes vives dans la surface résultante). Toutes lesbalises connues de l’interface RenderMan (hole, crease, corner, and interpolateboundary [trou, pli, coin etlimite interpolaire]) sont prises en charge par Ayam, mais elles ne peuvent actuellement pas être modifiéespar l’utilisateur.

À moins que le plugin "subdiv" (disponible depuis Ayam 1.19) ne soit chargé, Ayam n’est pas en mesured’effectuer la subdivision et de montrer la surface lisse résultante. Tout ce qui est montré dans les vuesfilaires et ombrées est le maillage polygonal d’origine.

Le tableau suivant énumère brièvement certaines capacités de l’objet SDMesh.

Type Parent of Material Converts to / Provides Point EditSDMesh No Yes PolyMesh Yes

Table 82: Capacités de l’objet SDMesh

La propriété SDMeshAttr

L’interface graphique SDMeshAttr affiche seulement quelques informations sur l’objet SDMesh :

Page 224: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 224

• "Scheme", est le schéma de subdivision, les schémas actuellement disponibles sont Catmull-Clarket Loop.1

• "Level" est le nombre d’étapes de subdivision qui doivent être effectuées lors de la subdivision dumaillage pour l’aperçu. Cette subdivision nécessite le plugin "subdiv".

• "DrawSub" permet de passer du polygone de contrôle aux contours du polygone subdivisé lors dudessin du maillage.

• "NFaces", le nombre de faces.

• "NControls", le nombre total de points de contrôle définis.

Conversion

Les objets SDMesh peuvent être convertis en objets PolyMesh.2

Notez cependant que seul le polygone de contrôle original, non raffiné (c’est-à-dire le maillage de base) seraconverti, à moins que l’attribut "Level" ne soit pas nul et que le plugin "subdiv" soit chargé.

Exportation RIB

Les objets SDMesh seront exportés sous forme de primitives RiSubdivisionMesh :

RiSubdivisionMesh(...);

Les balises PV sont prises en charge.

1 Depuis 1.11. 2 Depuis 1.11.

Page 225: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 225

4.9 Scénario (Script) et objets personnalisés

Ces objets créent/modifient d’autres objets quelconques à partir de scripts ou définissent des types d’objetsentièrement nouveaux via le mécanisme de plugin d’objet personnalisé.

4.9.1 L’objet Script

crtOb NCurve -l 30 -kt 1sLfor {set i 0} {$i < 30} {incr i} {

set x [expr $i*cos($i*20.0)/10.0]set y [expr $i*sin($i*20.0)/10.0]setPnt $i $x $y 0 1

}

Table 83: Exemple d’objet Script: à gauche le code Tcl, et à droite le résultat

Les objets de script sont le type d’objet le plus flexible de Ayam. Ils peuvent être utilisés pour créer de nou-veaux objets, modifier des objets existants, ou réaliser des mécanismes comme des contraintes en utilisantde petits scripts qui sont intégrés dans les objets de script eux-mêmes.

Ces petits scripts intégrés peuvent utiliser les fonctionnalités de Tcl et de l’interface de script Tcl de Ayam(voir aussi la section 6 Interface de script (page 337)).

Voir également le tableau ci-dessus, qui présente un exemple simple d’objet script qui crée une courbeNURBS et place les points de contrôle de la courbe en spirale dans le plan XY. Cet exemple est aussidistribué avec Ayam.

Les objets de script peuvent également utiliser des langages de script quelconques, fournis par des plugins,comme JavaScript, fourni par le plugin "jsinterp" (voir aussi : 6.7 Interface de script JavaScript (page450)).1

Les distributions binaire et source de Ayam contiennent plusieurs exemples de scripts pour les ob-jets Script dans les répertoires "ayam/bin/scripts" et "ayam/src/scripts", respectivement.En outre, il existe des exemples de fichiers de scènes utilisant des objets Script dans le répertoire"ayam/scn/scripts", voir aussi la section 6.6 Objets script distribués (page 440).

Le tableau suivant énumère brièvement certaines capacités de l’objet Script.

Type Parent of Material Converts to / Provides Point EditScript Any+ No Any+ No*

Table 84: Capacités de l’objet Script

1 Depuis 1.18.

Page 226: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 226

Utilisation de l’objet Script

Le code d’un objet Script sera exécuté chaque fois que le script est modifié et chaque fois que le rappel denotification de l’objet Script est appelé (par exemple parce qu’un des enfants de l’objet Script a changé).Tant que le code d’un objet Script est exécuté, Ayam ne traitera aucun événement, sauf pour vérifier sila touche d’urgence du script <Ctrl+C>, qui peut également être utilisée pour échapper aux bouclesinfinies dans la console Ayam, est enfoncée. Il convient d’éviter d’appeler des commandes et des procéduresqui conduisent au traitement d’événements ou qui sont lentes parce qu’elles manipulent ou mettent à jourl’interface graphique de la console Ayam. En particulier, les procédures et commandes suivantes ne doiventpas être utilisées: uS, uCR, uCL, selOb, plb_update, undo !

Si un script échoue, l’objet Script sera désactivé au moyen de l’attribut "Active".1 En outre, la ligne decode où l’erreur s’est produite sera mise en évidence.

Les objets de script peuvent également créer leurs propres GUI pour, par exemple, les paramètre du script.2

Cela peut être réalisé en ajoutant des balises de type "NP" avec le nom de la nouvelle propriété commevaleur à l’objet Script (entrée de menu "Special/Tags/Add Property"). Le script lui-même estresponsable de la gestion des données et de la création de l’interface graphique des propriétés (voir lasection 4.9.1 Propriété ScriptAttr (page 227) ci-dessous).

Il existe également un type de balise pour supprimer les propriétés ("RP").3 Grâce à cette balise, le code duscript peut être caché et les utilisateurs ne peuvent donc pas le modifier involontairement.

Depuis Ayam 1.16, l’environnement d’exécution des scripts a été affiné pour permettre d’écrire des scriptsplus complexes (qui traversent la scène ou utilisent le presse-papiers):Lorsqu’un script est en cours d’exécution, le niveau actuel est le niveau enfant de l’objet Script correspon-dant. En outre, le presse-papiers de l’objet est enregistré pour l’exécution du script et rétabli après la fin duscript, et l’option "CreateAtMark" est désactivée.

1 Depuis 1.24. 2 Depuis 1.8.2. 3 Depuis 1.12.

Page 227: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 227

La propriété ScriptAttr

Cette section traite des types d’objets Script disponibles et des paramètres de contrôle supplémentaires.

• Si "Active" est désactivé, le script ne sera pas exécuté.

• "Type" est le type de l’objet Script. Trois types d’objets Script sont actuellement disponibles :

– "Run", le scénario sera exécuté et aucune action spéciale n’aura lieu.

– "Create", le script sera exécuté et créera et paramétrisera de nouveaux objets. Aprèsl’exécution du script, le ou les objets nouvellement créés seront automatiquement déplacés dansla structure de données interne de l’objet Script. L’objet Script ressemblera et agira comme unobjet du type de celui que le script a créé. Si le script crée, par exemple, un objet NCurve, l’objetScript peut être utilisé comme objet paramètre d’un objet outil qui a besoin d’une courbe NC,par exemple un balayage :

+-Sweep| Cross_Section(Script)\ Path(NCurve)

Si l’objet nouvellement créé doit être sélectionné par le code du script à des fins de paramé-trage ultérieur, la sélection doit être effectuée à l’aide de la commande de l’interface de script"sL" (qui effectue une sélection cachée dans le contexte de l’interpréteur sûr). Par conséquent,l’exemple de script le plus simple pour un objet Script de type "Create" ressemble à ceci :

crtOb NCurve

ou, avec un paramétrage plus poussé :crtOb NCurvesLsetProperty NCurveAttr(Order) 2

– "Modify", si l’objet Script a des objets enfants, ces objets enfants seront temporairement dé-placés dans la structure de données interne de l’objet Script. Une copie de tous les objets enfantssera créée en tant que nouveaux enfants de l’objet Script. Une sélection des nouveaux objetsenfants sera établie, puis le script sera exécuté. En général, le script modifie l’un des objetssélectionnés (déplace des points de contrôle, ajoute des balises ou fait quelque chose de simi-laire). Ensuite, les deux ensembles d’objets seront échangés, les objets modifiés seront déplacésvers la structure de données interne de l’objet Script tandis que les objets enfants originauxnon modifiés seront à nouveau des objets enfants de l’objet Script. Les objets modifiés serontdorénavant fournis en amont aux parents potentiels. Si certaines actions du script doivent êtrelimitées à l’un des objets enfants de l’objet Script, la commande "withOb" peut être utiliséepour réaliser facilement cette opération. L’objet Script ressemblera et agira comme un objet dutype du premier objet enfant de l’objet Script. Si l’objet Script a par exemple un objet NCurvecomme premier enfant, l’objet Script peut être utilisé comme objet paramètre d’un objet outilqui a besoin d’une NCurve, par exemple un balayage (Sweep) :

+-Sweep+-Cross_Section(Script)|\ NCurve\ Path(NCurve)

Un exemple simple de script pour un objet Script de type "Modify" qui nécessite une seulecourbe NURBS comme objet enfant peut ressembler à ceci :

revertC

Remarque : pour que cela fonctionne pour les objets qui ne sont pas pris en charge directementpar la commande revertC mais qui fournissent des courbes NURBS (par exemple les objetsExtrNC ou les instances de courbes NURBS), le code doit ressembler à ceci :

Page 228: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 228

convOb -inplace; revertC

• "Script" est le code du script. Le widget correspondant est un widget texte Tcl standard quipermet d’éditer directement le code. Il est également possible d’éditer le code dans un éditeur externeet de le copier dans l’objet Script en utilisant le presse-papiers du système d’exploitation et l’entrée"Paste (Replace)" du menu contextuel du widget texte. Contrairement aux autres éléments del’interface utilisateur graphique, le widget texte possède une poignée de redimensionnement dans lecoin inférieur gauche, voir également l’image ci-dessous.

Figure 96: GUI de propriété de script avec menu contextuel et poignée de redimensionnement

GUIs des paramètres et propriété des objets Script

Si le script possède une interface graphique de propriété, il est important de sauvegarder le tableau dedonnées de propriété entre plusieurs copies d’un objet Script (pour les rendre vraiment uniques et ne pasfonctionner avec le même ensemble de paramètres) et dans les fichiers de scène.

Pour ce faire, il suffit d’ajouter un commentaire à la première ligne du scénario. Si cela ressemble à ceci :

# Ayam, save array: <arrayname>

alors le tableau global Tcl <arrayname> sera enregistré avec l’objet Script dans les fichiers de scènesAyam. Le tableau doit contenir une entrée "SP" qui liste tous les paramètres individuels de l’objet Script.Notez que seuls les paramètres de cette liste seront sauvegardés dans les fichiers de scènes Ayam. Notezégalement que "SP" doit jamais contenir "SP". Toutes les copies d’un objet Script doivent partager lemême ensemble de paramètres individuels ou partagés. Si les objets Script doivent stocker des quantitésdifférentes/individuelles de données de paramètres, des listes peuvent être utilisées comme paramètres indi-viduels.

Scénarios en utilisant un autre langage

Les objets de script peuvent également utiliser des langages de script quelconques, fournis sous forme deplugin. 1 Pour passer à un autre langage, la première ligne du script doit être un commentaire (dans lasyntaxe de l’autre langage) avec le mot clé "use :" suivi du nom du langage, tel que fourni par le plugincorrespondant, par exemple pour JavaScript la première ligne doit ressembler à ceci :

/* Ayam, use: JavaScript */

1 Depuis 1.18.

Page 229: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 229

Les commentaires spéciaux pour la sauvegarde des éléments de tableau et le changement de langage peuventêtre utilisés conjointement comme ceci :

/* Ayam, use: JavaScript, save array: MyArr */

Interpréteur sécurisé

Dans les versions de Ayam antérieures à 1.16, les scripts pouvaient utiliser n’importe quelle fonctionnalitéde Tcl, Tk et l’interface de script Tcl de Ayam, ce qui représentait un énorme risque pour la sécurité. Cen’est plus le cas aujourd’hui. Les scripts fonctionnent désormais dans un interpréteur sécurisé avec un jeud’instructions réduit. Ils ne peuvent plus écrire dans le système de fichiers, accéder au réseau ou perturberl’état de l’application. L’accès direct à Tk est également complètement bloqué, mais les script peuventtoujours avoir leur propre interface graphique de propriété (voir les exemples ci-dessous).

En particulier, les commandes Tcl suivantes ne sont pas disponibles dans l’interpréteur safe : cd,encoding, exec, exit, fconfigure, file, glob, load, open, pwd, socket, source, unload; auto_exec_ok, auto_import, auto_load, auto_load_index, auto_qualify, unknown(l’absence d’inconnu et d’autoloading entraîne une indisponibilité supplémentaire des commandes normale-ment disponibles via l’autoloading, comme e. g.parray, history).La commande puts est disponible de manière limitée : seul l’accès aux canaux stdout et stderr est autorisé.

Les commandes de l’interface de script Ayam qui manipulent directement l’interface utilisateur ne sont pasnon plus disponibles (uS, rV etc.). Veuillez vous référer à la documentation des commandes de l’interfacede script pour connaître leur disponibilité dans l’interpréteur sécurisé (voir la section 6.2 Procédures andCommandes (page 342)).

En outre, l’accès aux variables globales méritant une protection comme env, ay, ayprefs n’est pasautorisé. En fait, l’interpréteur sécurisé dispose d’un ensemble de variables complètement distinct. Letransfert de données entre les deux interpréteurs doit être organisé manuellement à partir de l’interpréteurAyam (c’est-à-dire avec des scripts qui s’exécutent dans la console Ayam).

À l’aide de scripts, qui s’exécutent dans l’interpréteur Ayam, d’autres commandes peuvent être transféréesou mises à disposition dans l’interpréteur sécurisé. Mais cela peut, bien sûr, conduire à de nouvelles faillesde sécurité.

L’accès complet à l’interface de script complète à partir des objets Script peut être réactivé en recompilantAyam. Si cette option est activée et que des fichiers de scène contenant des objets de script sont chargés,Ayam affichera un dialogue d’avertissement, proposant de désactiver temporairement tous les objets de scriptqui seront lus. Les objets Script seront désactivés en utilisant leur propriété "Active" Script et pourrontêtre réactivés après une inspection minutieuse du code du script manuellement ou en utilisant l’entrée dumenu principal "Special/Enable Scripts".

Transformation

Même si, au départ, les objets Script ne montrent pas et n’utilisent pas la propriété Transformations, ilspeuvent effectuer des transformations dans certaines circonstances. Pour activer cette prise en charge, unebalise NP avec la valeur "Transformations" doit être ajoutée à l’objet Script (c’est-à-dire que la pro-priété Transformations doit être visible pour être efficace).

Page 230: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 230

Maintenant, le(s) résultat(s) du scénario peut (peuvent), en outre, être manipulé(s) par les actions de mod-élisation interactive standard, comme le déplacement ou l’échelle.

Notez que lors de la fourniture ou de la conversion, les transformations de l’objet Script seront ajoutéesaux transformations des objets créés par le script de la même manière que par l’outil de transformation desdélégués, qui échoue pour les configurations complexes (par exemple, les transformations de cisaillement(??? de coupe)). Cependant, si les objets créés par le script ont des points modifiables, ce problème peutêtre évité en utilisant la commande "applyTrafo" dans le script.

Page 231: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 231

Conversion

Les objets de script sont convertis en objets qu’ils créent/modifient à l’aide de l’entrée de menu principale"Tools/Convert". Lors de la conversion en place, certaines règles spéciales sont en vigueur :

1. Si un seul objet est créé/modifié, ses balises sont ajoutées aux balises de l’objet Script et son paramètrematériau n’a la priorité que s’il existe effectivement un ensemble matériau.

2. S’il y a plusieurs objets créés/modifiés, l’objet Script est transformé en un objet Level, en gardant sesbalises et ses paramètres de matériau.

3. Les objets créés/modifiés deviendront les enfants du nouvel objet Level (avec les balises et les pro-priétés du matériau inchangées).

4. Les enfants actuels de l’objet Script seront supprimés avant la conversion. Si cela échoue (par exem-ple, à cause des références), ils peuvent se retrouver dans le presse-papiers de l’objet.

Si le script a créé un objet maître et des instances de ce maître, la conversion normale ne pourra pas dupliquercette relation (en raison de la sémantique de copie des objets instances, voir aussi la section 4.2.7 Instanceset presse-papier (page 129)).

Pour contourner ce problème, il suffit de copier l’objet Script, puis d’utiliser la conversion en place sur lacopie.

Bouchons et biseaux

Les objets de script de type "Create" et "Modify" supportent les bouchons standard tels que définisdans la section 4.10.5 Propriété Caps (page 252) et les biseaux standard tels que définis dans la section4.10.6 Propriété Bevels (page 253).1

Le nom des bornes sont U0, U1, V0, et V1.

Par défaut, les propriétés correspondantes ne sont pas disponibles. Pour les rendre visibles, il faut ajouterles balises NP à l’objet Script.

Les bouchons et les biseaux de l’objet Script seront ajoutés à tous les objets créés/modifiés qui ne possèdentpas déjà leurs propres bouchons et biseaux et qui prennent en charge les bouchons et les biseaux.

Exportation RIB

Les objets de script seront exportés dans des fichiers RIB en tant qu’objets qu’ils créent/modifient.

1 Depuis 1.26.

Page 232: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 232

Exemple de ligne paramétrique

Cette section illustre le développement d’un objet Script pour les lignes paramétriques, autrement nondisponible dans Ayam.

Nous commençons avec une version simple, qui crée d’abord un objet courbe NURBS avec deux points decontrôle et qui place ensuite les points de contrôle chacun à +/− ; la moitié de la longueur de ligne souhaitéesur l’axe X. Il suffit de copier le code suivant dans la propriété Script d’un objet Script de type "Create",et de l’activer.

set length 1

crtOb NCurve -length 2

sL

setPnt 0 [expr {-$length/2.0}] 0.0 0.0 1.0

setPnt 1 [expr {$length/2.0}] 0.0 0.0 1.0

Figure 97: Script simple pour une primitive deligne paramétrique

Ce code fonctionne, mais si des lignes d’une longueur différente de 1 sont nécessaires, l’utilisateur doitmodifier le script, ce qui n’est pas très pratique et est sujet à des erreurs.Une interface graphique complète, facile à utiliser et sûre pour le paramètre de longueur peut être ajoutée enchangeant le code du script en

Page 233: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 233

# Ayam, save array: LineAttrData

if { ![info exists ::LineAttrData] } {

array set ::LineAttrData {

Length 1

SP {Length}

}

}

if { ![info exists ::LineAttrGUI] } {

set w [addPropertyGUI LineAttr]

addParam $w LineAttrData Length

}

set length $::LineAttrData(Length)

crtOb NCurve -length 2

sL

setPnt 0 [expr {-$length/2.0}] 0.0 0.0 1.0

setPnt 1 [expr {$length/2.0}] 0.0 0.0 1.0

et en ajoutant une balise "NP" (nouvelle propriété) à l’objet Script avec la valeur "LineAttr", ce quidonne une nouvelle interface utilisateur graphique cliquable comme on peut le voir dans l’image suivante :

Figure 98: Primitive de ligne paramétrique avec GUI de paramètre

Le code de configuration de l’interface graphique crée un tableau Tcl essentiel pour gérer les donnéesd’une propriété d’objet Ayam (LineAttrData). Ensuite, l’interface graphique de la propriété LineAttr estcréée et un élément est ajouté à l’interface graphique en utilisant "addParam". Notez que la commande"addPropertyGUI" attend pour une propriété nommée "SomePropertyName" qu’un tableau dedonnées de propriété correspondant nommé "SomePropertyNameData" existe. Le code de configura-tion de l’interface graphique ne doit s’exécuter qu’une seule fois, c’est pourquoi il vérifie d’abord la présencede la variable LineAttrGUI (qui est définie lors de la première exécution de "addPropertyGUI"). Voirégalement les sections 6.2.25 Property GUI Management (page 409) et 6.1.5 Gestion des propriétés ettableaux de données (page 340) pour plus d’informations sur les interfaces graphiques des propriétés etl’interface de script Ayam.

Enfin, pour permettre la sauvegarde de la valeur du paramètre dans la nouvelle propriété "LineAttr"dans les fichiers de scène, un commentaire doit être ajouté au script ("Ayam, save array :

LineAttrData"), et pour permettre des copies multiples et individuellement paramétrées de cet objetScript, une entrée "SP" doit être ajoutée au tableau "LineAttrData" également.

Page 234: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 234

Le script complet est également disponible sous forme de fichier script d’exemple"scripts/crtlinegui.tcl" dans la distribution Ayam.

Exemple de construction d’une hiérarchie

Cet exemple de script démontre les capacités de traversée de scène et de construction de hiérarchie dontdisposent les objets Script depuis Ayam 1.16. Créez un objet Script, et ajoutez-y deux enfants, une boîteet une courbe NURBS (ordre 2, type de noeud : chordal fonctionne le mieux). Ensuite, ajoutez le scriptsuivant à l’objet Script :

# this script needs object type "Modify" and two children:

# a box/sphere and a curve

withOb 1 {estlenNC len}

cutOb

crtOb Clone

goDown -1

pasOb -move

goUp

sL

getProp

set CloneAttrData(NumClones) [expr round($len)]

setProp

Ce petit script détermine d’abord la longueur de la courbe, puis il crée un objet Clone et y déplace lesenfants de l’objet Script (via le presse-papiers de l’objet). Enfin, l’objet Clone est paramétré, de sorte que latrajectoire est entièrement remplie d’objets (en supposant que chaque copie du premier enfant a besoin d’uneunité de longueur sur la trajectoire). La courbe peut maintenant être modifiée par des actions de modélisationinteractives, ou sa longueur peut être changée, et la trajectoire sera toujours complètement remplie d’unnombre approprié d’objets de la boîte. Voir l’image d’exemple ci-dessous (comparer les configurations declones des deux différentes courbes de trajectoire) :

Figure 99: Exemple d’objet Script créant une hiérarchie

Page 235: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 235

4.9.2 Gestion des objets personnalisés

Les objets personnalisés sont des plugins qui étendent les capacités de Ayam en définissant des types en-tièrement nouveaux d’objets géométriques, par exemple. Cela peut être fait facilement, car le noyau Ayamest écrit de manière indépendante du paradigme de modélisation.

Les objets personnalisés peuvent également définir leurs propres outils de modélisation. Ceux-ci se trouventgénéralement dans le menu principal "Custom".

Contrairement aux autres plugins d’aide à la modélisation, les plugins d’objets personnalisés seront chargésautomatiquement avec les fichiers de scène qui contiennent ces objets. Notez que cela ne fonctionne cor-rectement que si l’option de préférence "Main/Plugins" est correctement définie.

Plusieurs plugins d’objets personnalisés sont déjà distribués avec Ayam. Ils sont documentés dans les sec-tions suivantes.

Page 236: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 236

4.9.3 L’objet SfCurve (courbe superformulée)

L’objet SfCurve crée une courbe superformulée à partir de quatre paramètres nommés m, n1, n2, et n3(voir aussi l’image ci-dessous). La superformule est une généralisation de la superellipse ; en coordonnéespolaires, elle est définie comme suit

r(t) = (cos(m·t4

)n2 + sin(m·t4

)n3)−1n1 (1)

où r est le rayon et t l’angle. L’objet SfCurve permet de spécifier les valeurs de début et de fin pour t ainsique le nombre de points d’échantillonnage entre deux.La courbe NURBS générée est toujours fermée, mais l’ordre peut être configuré librement.

Figure 100: Courbe superformulée avec pour paramètres 10, 22, -11, 3

Le tableau suivant énumère brièvement certaines capacités de l’objet SfCurve.

Type Parent of Material Converts to / Provides Point EditSfCurve No No NCurve No*

Table 85: Capacités de l’objet SfCurve

La propriété SfCurveAttr

L’objet SfCurve propose les paramètres suivants :

• Les paramètres "M", "N1", "N2", et "N3" contrôlent la superformule.

• "TMin" est l’angle de départ.

• "TMax" est l’angle final. Notez que l’angle défini par "TMin" et "TMax" peut en fait être supérieurà 360, comme on peut le voir dans l’image ci-dessous :

Notez également que, par exemple, le réglage de "TMin" à 1 et de "TMax" à 361 peut donner demeilleurs résultats que l’utilisation des valeurs par défaut.

• "Sections" est le nombre de points d’échantillonnage. Les courbes présentant des caractéristiquesnettes peuvent nécessiter des valeurs élevées d’environ 100.

• "Ordre" est l’ordre souhaité de la courbe.

• Voir section 4.4.1 Propriété NCurveAttr (page 147) pour une description des paramètres :"Tolerance" et "DisplayMode".

Page 237: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 237

Figure 101: Courbe superformulée avec TMax=1440

Opération

La courbe de la superformule peut être convertie en une courbe NURBS ordinaire en utilisant l’entréedu menu principal "Tools/Convert". De plus, la courbe de superformule supporte entièrement lesopérations de réversion, de revêtement finement ????? et de dégrossissage.1

Exportation RIB

Les objets SfCurve n’apparaissent jamais directement dans la sortie RIB (seulement indirectement commeCourbe Trim).

1 Depuis 1.26.

Page 238: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 238

4.9.4 L’objet BCurve (Basis Curve - courbe de base)

L’objet BCurve (courbe de base) crée une courbe paramétrique cubique à partir d’un certain nombre depoints de contrôle rationnels et d’une base (qui est une matrice 4 par 4).1 La base définit l’interprétation despoints de contrôle, à l’instar de la primitive du maillage bicubique de l’interface RenderMan, voir aussi lasection 4.6.4 Les patchs maillés (PatchMesh) (page 174).

La BCurve représente donc une gamme de courbes paramétriques comme : B-Spline, Bezier, Catmull-Romet Hermite.

Figure 102: BCurves des type de base Bezier (hg), B-Spline (hd), Catmull-Rom (bg), et Hermite (bd)

Voir aussi l’image ci-dessus qui représente des exemples de courbes simples de certains types de base.

Le tableau suivant énumère brièvement certaines capacités de l’objet BCurve.

Type Parent of Material Converts to / Provides Point EditBCurve No No NCurve Yes

Table 86: Capacités de l’objet BCurve

La propriété BCurveAttr

L’objet BCurve propose les paramètres suivants :

• "Closed" détermine si la courbe est fermée.

• "Length" est le nombre de points de contrôle, les valeurs valables dépendent du type / étape de baseci-dessous, voir également la discussion correspondante dans la section 4.6.4 Propriété PatchMeshAttr(page 174).Les touches fléchées de ce champ d’entrée permettent d’ajouter/soustraire la taille de pas actuelle dela courbe à/de la valeur respective lorsque la touche <Control> est maintenue enfoncée.

• "BType" est le type de base. Les types de base suivants sont disponibles : "Bezier","B-Spline", "Catmull-Rom", "Hermite", "Power", et "Custom".

• "Basis" est la base.

• "BStep" est la taille du pas, cette valeur doit être 1, 2, 3 ou 4.

• Voir la section 4.4.1 Propriété NCurveAttr (page 147) pour une description des paramètres :"Tolerance" et "DisplayMode".

1 Depuis 1.25.

Page 239: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 239

Les entrées "Basis" et "BStep" ne sont visibles que si le type de base est "Custom".

Conversion

La courbe de base peut être convertie en une courbe NURBS ordinaire en utilisant l’entrée de menu prin-cipale "Tools/Convert". De plus, la courbe de base supporte pleinement les opérations de retour,d’ouverture, de fermeture, de raffinement et de dégrossissage.1

Exportation RIB

Les objets BCurve n’apparaissent jamais directement dans la sortie RIB (seulement indirectement commeCourbe Trim).

Interface de Script

Le plugin d’objet BCurve définit une commande d’interface de script pour convertir les objets BCurve surune base différente, voir aussi la section 6.2.15 tobasisBC (page 400).

1 Depuis 1.26.

Page 240: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 240

4.9.5 Les courbes de subdivision (SDCurve)

L’objet SDCurve (courbe de subdivision) crée une courbe à partir d’un certain nombre de points de contrôlenon rationnels.<.1 Les courbes de subdivision sont similaires aux surfaces de subdivision, mais un polygoneest subdivisé en une courbe limite au lieu d’un maillage polygonal en une surface limite, voir aussi la section4.8.2 L’objet SDMesh (page 223).

Figure 103: Exemple de SDCurve de niveau 4 (Chaikin: h, Cubic: b)

Voir également l’image ci-dessus représentant quatre exemples de courbes simples.

Le tableau suivant énumère brièvement certaines capacités de l’objet SDCurve.

Type Parent of Material Converts to / Provides Point EditSDCurve No No NCurve Yes

Table 87: Capacités de l’objet SDCurve

La propriété SDCurveAttr

L’objet SDCurve propose les paramètres suivants :

• "Closed" détermine si la courbe est fermée.

• "Length" est le nombre de points de contrôle.

• "Type" est la méthode de subdivision à utiliser, les méthodes actuellement mises en oeuvre sont"Chaikin" et "Cubic".Pour chaque itération, la méthode "Chaikin" insère deux nouveaux points dans chaque section dupolygone de contrôle original, tous les anciens points sont supprimés.La méthode "Cubic" insère un nouveau point dans chaque section du polygone de contrôle orig-inal, les points originaux ne seront pas supprimés mais plutôt déplacés vers le barycentre des deuxnouveaux points environnants et du point original.

• "Level" détermine le nombre d’itérations de l’algorithme de subdivision à effectuer.

• "SLength" est le nombre de points générés par l’algorithme de subdivision.

1 Depuis 1.26.

Page 241: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 241

Conversion

La courbe de subdivision peut être convertie en une courbe NURBS ordinaire d’ordre 2 en utilisant l’entréede menu principale "Tools/Convert". Les objets de courbe quelconques peuvent également être con-vertis en courbes de subdivision à l’aide de l’outil de conversion fourni qui est accessible via l’entrée dumenu principal "Custom/SDCurve/From Curve". Cet outil prend directement en charge les objetsNCurve, ICurve et ACurve, tous les autres objets de courbe n’ayant qu’à fournir leurs points pour être pris encharge. En outre, la courbe de subdivision prend entièrement en charge les opérations de retour, d’ouverture,de fermeture, d’affinage et de dégrossissage.

Exportation RIB

Les objets SDCurve n’apparaissent jamais directement dans la sortie RIB (seulement indirectement commeCourbe Trim).

Page 242: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 242

4.9.6 Les objets Metaball

Figure 104: Un objet métaballe issu de six méta-composants

Un objet métaballe est un objet personnalisé (voir aussi la section 4.9.2 Gestion des objets personnalisés(page 235)).

Il permet de modéliser avec des surfaces implicites en temps réel.

Pour commencer la modélisation, vous devez d’abord créer un objet "MetaObj" en utilisant l’entréede menu "Create/Custom Object/MetaObj" (si cette entrée de menu n’est pas disponible, vousdevez d’abord charger le plugin "metaobj" en utilisant l’entrée de menu "File/Load Plugin")."Create/Custom Object/MetaObj" crée un soi-disant méta-monde avec un seul composant (unesphère). Le méta-monde est représenté par un objet "MetaObj" et le composant par un objet"MetaComp" qui est un enfant de l’objet "MetaObj".

Le modèle complet de la hiérarchie des objets MetaObj ressemble donc à ceci :

+-MetaWorld(MetaObj)

| C1(MetaComp)

| [...

\ Cn(MetaComp)]

Le tableau suivant énumère brièvement certaines capacités des objets MetaObj et MetaComp.

Type Parent of Material Converts to / Provides Point EditMetaObj MetaComp+ Yes PolyMesh No

MetaComp No No N/A No

Table 88: Capacités des objets MetaObj et MetaComp

Les méta-composants ne vivent que dans un méta-monde, il n’est donc pas logique de créer des ob-jets "MetaComp" dans d’autres endroits, sauf en tant qu’enfant d’un objet "MetaObj". Le type, lesparamètres et les attributs de transformation des méta-composants définissent la fonction d’une surface im-plicite. L’objet "MetaObj", qui représente le méta-monde, évalue cette fonction sur une grille tridimen-sionnelle régulière et crée une représentation polygonale pour une valeur de fonction spécifique (la valeurdite seuil).

Page 243: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 243

La propriété MetaObjAttr

Les attributs suivants contrôlent la création de la surface implicite :

• Avec le paramètre "NumSamples" vous spécifiez la résolution de la grille régulière tridimension-nelle, sur laquelle la fonction implicite est évaluée, dans chaque dimension. Un nombre plus élevéd’échantillons donne une meilleure qualité, mais plus de polygones sont créés et plus de puissanceCPU et de mémoire sont nécessaires. Pour la modélisation, vous devez fixer une valeur inférieured’environ 40. Pour le rendu final, vous pouvez augmenter cette valeur à environ 160.

• "IsoLevel", définit la valeur seuil pour laquelle une représentation polygonale de la fonction im-plicite doit être créée. Normalement, vous ne devriez pas avoir besoin de modifier cette valeur.

• Pour montrer les limites réelles du méta-monde, vous pouvez activer le paramètre "ShowWorld".

La nouveauté de Ayam 1.5 est un mode de calcul adaptatif de la surface implicite. Il peut être activé enutilisant le nouvel attribut "Adaptative". Dans le mode de calcul adaptatif, Ayam tente de faire varierla résolution du maillage polygonal résultant en fonction des caractéristiques de la surface implicite afin decapturer les détails fins, même si une grille grossière est utilisée. Ceci n’est pas fait en utilisant une grillesuccessivement affinée mais par un raffinement des triangles créés par l’algorithme original (voir aussiXXXX). Vous pouvez contrôler le processus d’adaptation à l’aide de trois paramètres : "Flatness","Epsilon", et "StepSize". Si "Adaptive" est réglé sur "automatic", Ayam n’utilisera pas lecalcul adaptatif pendant qu’une action de modélisation est en cours. Ce mode a été introduit, car le modeadaptatif peut consommer une quantité considérable de ressources CPU.

Lors de la modélisation avec des metaball, vous pouvez ajouter d’autres objets "MetaComp" à l’objet"MetaObj" et les paramétrer. Un objet "MetaComp" a les propriétés suivantes.

La propriété MetaCompAttr

• "Formula" spécifie le type du méta-composant. Les types suivants sont disponibles : Metaball,Torus, Cube, Heart et Custom. Ce dernier vous donne la possibilité d’utiliser vos propres formules.

• Avec le paramètre "Negative" vous définissez un composant ayant un effet négatif sur la valeurde la fonction implicite. Les composantes négatives ne sont pas visibles en soi, mais elles sont utilespour modéliser les trous. Essayez-le.

Les autres paramètres sont spécifiques au type de composant :

Metaball

• "Radius" fixe le rayon du méta-ballon

• "EnergyCoeffA", "EnergyCoeffB", et "EnergyCoeffC" sont quelques paramètres de laformule du méta-ball. En général, vous pouvez laisser ces paramètres à leurs valeurs par défaut. Sivous les modifiez, soyez prudent.

Torus

• "Ri" le rayon intérieur du tore,

• "Ro" le rayon extérieur du tore,

• "Rotate" fait tourner le tore d’environ 90 degrés.

Page 244: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 244

Cube

• "EdgeX", "EdgeY", et "EdgeZ", vous permettent de définir la netteté des bords du cube.

Custom

• "Expression" est un morceau de script Tcl, qui représente votre propre formule personnaliséepour un méta-composant. L’expression peut appeler n’importe quelle commande Tcl pour calculerune valeur de champ à partir de la position actuelle de la grille, qui est donnée dans les variablesglobales "x", "y", et "z". L’expression doit simplement renvoyer la valeur de champ calculée.1

Voici un exemple d’expression personnalisée :

expr {pow($x,4)+pow($y,4)+pow($z,4)}

Notez que ces expressions sont appelées plusieurs fois et comme elles sont programmées en Tcl, celapeut être assez lent. Vous devez utiliser toutes les astuces (comme les accolades dans l’énoncé exprci-dessus) pour accélérer l’expression.Notez également que dans les anciennes versions de Ayam, la variable globale "f" devait être définiepour retourner la valeur du champ. Ce n’est plus le cas, mais l’ancien code d’expression qui se terminepar set f [expr ...] est toujours valable.

Conversion

Les objets Metaball peuvent être convertis en objets PolyMesh en utilisant l’entrée du menu principal"Tools/Convert".

Exportation RIB

Les objets Metaball seront exportés sous forme de primitives RiPointsGeneralPolygons (indépendammentdu fait que la configuration réelle s’inscrive dans une primitive polygonale plus simple de l’interface Ren-derMan, par exemple RiGeneralPolygon).

Les balises PV ne sont pas prises en charges.

1 Depuis 1.27.

Page 245: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 245

4.9.7 SDNPatch Object

Figure 105: SDNPatches, g: maillage de contrôle, c : maillage subdivisé avec noeuds, d : maillage subdivisésans noeud

L’objet personnalisé SDNPatch est disponible depuis Ayam 1.16 et permet de modéliser avec les NURBSde subdivision, qui étendent le schéma de subdivision traditionnel avec des valeurs de noeuds et des coor-données rationnelles. Voir également l’image ci-dessus, où dans le maillage du milieu une valeur de noeuda été fixée dans le côté gauche du maillage. The SDNPatch plugin is based on libsnurbs by Tom Cashman.

Tl existe des actions de modélisation spéciales pour la subdivision NURBS définie (voir ci-dessous) et ilexiste des installations d’importation/exportation PLY. En outre, il existe deux opérations de conversionqui convertissent les objets NURBS et PolyMesh en objets SDNPatch. Ainsi, les objets SDMesh peuventégalement être convertis en objets SDNPatch objects in two steps: first to a PolyMesh then to the SDNPatch.

Veuillez noter que le plugin est encore à l’état expérimental, que la vérification des erreurs est limitée et quedes plantages peuvent se produire, si les actions de modélisation spéciales sont utilisées.

Le tableau suivant énumère brièvement certaines capacités de l’objet SDNPatch.

Type Parent of Material Converts to / Provides Point EditSDNPatch No Yes PolyMesh Yes

Table 89: Capacités de l’objet SDNPatch

La propriété SDNPatchAttr

La propriété SDNPatchAttr permet de définir les attributs spécifiques suivants de SDNPatch :

• "Degree" est le degré de la surface de la subdivision NURBS, les seules valeurs valables sontactuellement 3, 5 et 7.

• "Level" est le niveau de subdivision, un niveau élevé conduit à de nombreux polygones et à unesurface lisse ; les valeurs utiles vont de 0 à 5.

• "IsRat" informe, si le patch est rationnel (a des valeurs de poids différentes de 1,0).

• "NPolys" est le nombre de polygones générés par l’algorithme de subdivision.

Page 246: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 246

Actions de modélisation SDNPatch

Cette section explique brièvement les actions de modélisation spéciales définies pour l’objet personnaliséSDNPatch. Afin de sélectionner une face ou un bord pour une telle opération, il suffit de sélectionner tousles points de contrôle définissant la face ou le bord. Toutes les actions de modélisation peuvent être lancéesvia le menu principal "Custom/SDNPatch".

• "Face Extrude", de nouvelles faces sont insérées dans le maillage sur tous les bords des facessélectionnées, les faces sélectionnées elles-mêmes sont déplacées le long de leurs normales respec-tives. Si cette opération ne va pas dans le bon sens, essayez d’abord d’inverser toutes les faces,voir ci-dessous. Depuis Ayam 1.17, cette opération a deux paramètres qui contrôlent le décalage del’opération d’extrusion (paramètre "Length") et un facteur d’échelle appliqué au nouvel ensemblede points de contrôle déplacés (paramètre "Scale"). Le paramètre "Length" peut être négatif, pourinverser la direction de l’extrusion.

• "Face Remove", la face sélectionnée est retirée du maillage.

• "Face Merge", les deux premières faces sélectionnées sont retirées du maillage, les patchs voisinsde la seconde face sont connectés aux faces voisines de la première face. La décision, à savoir quelssommets des faces seront effectivement connectés, dépend des distances relatives entre les sommets :vous devez rapprocher les deux faces l’une de l’autre pour indiquer clairement comment la nouvelleconnexion doit être établie.

• "Face Connect", les deux premières faces sélectionnées sont retirées du maillage, les patchsvoisins de la deuxième face sont connectés aux faces voisines de la première face via un ensemblede nouvelles faces. La décision, entre quels sommets des faces les nouvelles faces sont construites,dépend des distances relatives entre les sommets : vous devez rapprocher les deux faces pour indiquerclairement comment la nouvelle connexion doit être établie.

• "Reset All Knots", réglez toutes les valeurs de noeuds sur 1.0 (par défaut).

• "Set Knot", définissez la valeur de noeud du bord sélectionné.

• "Revert", inverse toutes les faces.

• "Merge", fusionne plusieurs objets SDNPatch en un nouveau.

• "Import PLY", importe un fichier PLY.

• "Export PLY", exporte l’objet SDNPatch actuellement sélectionné vers un fichier PLY.

En outre, il existe deux opérations de conversion qui convertissent les objets patch NURBS (ou objets four-nissant un patch NURBS) et les objets PolyMesh (ou objets fournissant un PolyMesh) en objets SDNPatch.Notez que la conversion de PolyMesh en SDNPatch n’accepte que les maillages polygonaux quadrilatérauxfermés (les triangles sont omis) et attend un maillage optimisé (c’est-à-dire que les faces adjacentes doiventpartager les mêmes sommets).

Conversion

Les objets SDNPatch peuvent être convertis en objets PolyMesh en utilisant l’entrée du menu principal"Tools/Convert".

Exportation RIB

Page 247: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 247

Les objets SDNPatch seront exportés sous la forme de primitives RiPointsGeneralPolygons (in-dépendamment du fait que la configuration réelle s’inscrive dans une primitive polygonale plus simple del’interface RenderMan, par exemple RiGeneralPolygon).

Les balises PV ne sont actuellement pas prises en charge.

Page 248: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 248

4.10 Standard Properties

La plupart des objets Ayam ont des propriétés standard. Elles sont utilisées pour contrôler les trans-formations et les attributs communs des objets. Les sections suivantes décrivent les propriétés standard"Transformations", "Attributes", "Material", "Shaders", et "Tags".

4.10.1 La propriété Transformations

Utilisez la propriété "Transformations" pour modifier l’emplacement, l’orientation et la taille d’unobjet.

L’interface graphique de propriété correspondante contient les éléments suivants :

• "Reset All !" réinitialise immédiatement tous les attributs de transformation aux valeurs pardéfaut.

• "Translate_X (_Y, _Z)" est le déplacement de l’objet à partir de l’origine du monde dans ladirection X (Y, Z).

• "Rotate_X (_Y, _Z)" est l’angle (en degrés) de la rotation de l’objet autour de l’axe X (Y, Z).Voir ci-dessous pour plus d’informations sur la manière d’utiliser ces entrées.

• "Quaternion" le quaternion qui est utilisé pour déterminer l’orientation de l’objet dans l’espace.

• "Echelle_X (_Y, _Z)" détermine un facteur d’échelle qui sera appliqué à l’objet dans la direc-tion de l’axe local X (Y, Z).

Les transformations sont appliquées à l’objet dans l’ordre suivant : "Scale", "Rotation", "Translation"(Échelle, Rotation, Translation).

Comment utiliser les attributs de rotation ?

L’orientation d’un objet dans l’espace peut être exprimée en utilisant les angles d’Euler. Cette notation(simplement trois angles déterminant une rotation autour des axes principaux du système de coordonnées)souffre d’un phénomène appelé gimbal lock (blocage de cardan ou perte d’un degré de liberté).

Pour éviter les blocages de cardan, Ayam maintient en interne l’orientation d’un objet dans un quaternion.Ce quaternion contient non seulement des informations sur les angles, mais aussi sur l’ordre dans lequel lesrotations partielles se sont produites.

Il est important de savoir que les valeurs des angles de la propriété de rotation ne doivent pas être lues demanière à ce que l’objet soit d’abord tourné autour de X par des degrés d’angle x puis autour de Y par desdegrés d’angle y puis autour de Z par des degrés d’angle z. En fait, aucune information sur l’ordre danslequel les rotations partielles se sont produites ne peut être déduite de ces trois valeurs. Cela implique, parexemple, que les valeurs 0 0 45 peuvent en fait indiquer une orientation différente de celle exprimée par lesmêmes valeurs 0 0 45.

La rotation d’un objet est facile, il suffit d’ajouter la quantité de rotation de l’objet par rapport à la valeuractuellement affichée dans l’entrée appropriée.

Par exemple, si un objet doit être tourné de 45 degrés autour de X et que l’entrée de l’angle x affiche un 30,entrez 75. Ensuite, appuyez sur le bouton "Apply".Si plusieurs entrées sont modifiées, les rotations seront effectuées dans l’ordre suivant : X (si modifié), Y

Page 249: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 249

(si modifié), Z (si modifié). Ne modifiez pas plus d’une entrée à la fois, sauf si vous savez vraiment ce quevous faites et à vos risques et périls.

L’annulation d’une rotation unique fonctionne de la même manière, il suffit d’utiliser une soustraction aulieu d’une addition.

Annuler toutes les rotations (remettre l’objet dans son orientation d’origine) est également simple : entrez 0pour les trois entrées en même temps, puis appuyez sur "Apply".

Pour copier uniquement l’orientation d’un objet vers d’autres objets en utilisant le presse-papiers des pro-priétés, tous les éléments de propriété Translate et Scale doivent être marqués/sélectionnés par double-clic,puis "Edit/Copy Property" peut être utilisé. Marquer simplement les éléments Rotate et utiliser"Edit/Copy Marked Prop" ne fonctionnera pas, car le quaternion ne sera alors pas copié correcte-ment.

4.10.2 La propriété Attributes

La propriété "Attributs" d’un objet contient actuellement :

• "Objectname", le nom de l’objet. Il est également affiché dans la boîte de liste ou l’arbre desobjets et peut être écrit dans les flux RIB.

• "Hide", si cet attribut est défini, l’objet n’est pas dessiné. Il peut également être exclu del’exportation RIB.

• "HideChildren", si cet attribut est défini, les objets enfants de cet objet ne sont pas dessinés. Cetattribut est par exemple utilisé par les objets "NPatch" pour empêcher que les courbes de trim nesoient dessinées dans des vues normales.

• "RefCount", affiche simplement le nombre d’objets qui pointent vers cet objet, par exemple parle biais de relations maître-instance ou objet-matériau. Les objets ayant un nombre de référencesupérieur à zéro ne peuvent pas être supprimés.

4.10.3 La propriété Material

La propriété "Material" vous permet de connecter des objets géométriques à des matériaux (voir aussila section 4.2.5 Les matériaux (page 122)).

L’interface graphique de la propriété Material se compose des éléments suivants :

• "Clear Material!" efface immédiatement toute connexion de l’objet actuel avec son matériau.

• "Add/Edit Material!" ajoute un matériau à l’objet courant (s’il n’en a pas) et sélectionneimmédiatement le nouvel objet "Material" pour l’édition. Si l’objet courant possède déjà un matériau,celui-ci est recherché et sélectionné pour être édité.

• "Materialname" est le nom du matériau de cet objet. Si le nom est modifié, l’objet sera décon-necté de l’ancien matériau et connecté au nouveau matériau. Une façon plus simple de connecter desobjets géométriques à des objets matériaux est de déposer simplement les objets géométriques surl’objet matériau en utilisant le glisser-déposer dans la vue arborescente.

Page 250: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 250

4.10.4 La propriété Shader

Les propriétés "Shader" sont utilisées pour attacher des ombres d’un certain type à des objets. Le nomde la propriété contient le type d’ombre, par exemple les ombres de lumière peuvent être attachés en util-isant une propriété nommée "LightShader" uniquement. Les autres type d’ombres ou de propriétésd’ombrages sont : "Surface", "Displacement", "Interior", "Exterior", "Atmosphere",et "Imager".

Chaque interface graphique de propriété d’ombrage, même si aucune ombre n’est attachée à un objet,commence par le bouton "Set new shader.". Ce bouton permet de sélectionner une nouvelle om-bre du type approprié. Si vous appuyez sur le bouton "Set new shader.", un dialogue avec uneliste d’ombres apparaît. Si cette liste est vide, Ayam n’est probablement pas configuré correctement(ou vous n’avez tout simplement pas d’ombre du type approprié). Vérifiez le réglage des préférences"Main/Shaders". Une fois qu’une nouvelle ombre a été définie, les arguments de l’ombre serontanalysés et une interface graphique sera générée pour permettre de remplir les arguments de l’ombre avecdes valeurs.

Le bouton "Delete shader." peut être utilisé pour supprimer l’ombre actuellle de l’objet sélectionné.

Le bouton "Default Values." réinitialise tous les arguments de l’ombre aux valeurs par défaut. Voiraussi la section 4.10.4 Travailler avec des ombres (page 251) ci-dessous.

Tous les autres éléments de l’interface graphique des propriétés de l’ombre dépendent du moteur de renduactuellement attaché, c’est-à-dire qu’ils représentent les arguments de la fonction du moteur.

Shader Parsing

L’analyse d’une ombre comprend la détection du type d’ombre et la lecture des noms, types et valeurs pardéfaut de tous les arguments de l’ombre.

Les ombres seront analysées dans les occasions suivantes :

• démarrage de l’application,

• bouton "Scan for Shaders !" dans le dialogue des préférences,

• entrée de menu "Special/Scan Shaders",

• "ScanShaders" option dans le dialogue "Select Renderer",

• bouton "Default Values" dans l’interface graphique des propriétés de l’ombre.

Notez qu’actuellement, Ayam ne fonctionne correctement qu’avec les ombres qui ont au plus deux pointsdans leur nom de fichier et que Ayam va simplement sauter tous les arguments de tableau (et émettre unmessage d’avertissement) pendant l’analyse d’une ombre. Ces arguments de tableau n’apparaissent doncjamais dans les propriétés des ombres des interfaces graphiques et des RIB exportés par Ayam. Notez égale-ment que les valeurs par défaut des arguments de l’ombre de type couleur seront fixées, sans notification,dans la plage 0-255.

Certains moteurs de rendu utilisent des arguments de tableau pour définir les matrices de transformation.Si c’est le cas et que vous avez accès au code source du moteur, vous pouvez modifier ces moteurs pourpermettre de travailler avec la matrice de transformation portant les arguments de l’ombre. Pour ce faire, ilsuffit de changer toutes les définitions de matrice de transformation portant des tableaux à virgule flottanteen matrices réelles. Par exemple, si le moteur contient un

"float a_matrix_parameter[16]"

Page 251: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 251

changez cela en

"matrix a_matrix_parameter".

Notez que ces modifications des définitions des arguments du moteur nécessitent probablement aussi desmodifications du code source du moteur qui utilise ces arguments. Ayam est capable de traiter les matricesgrâce à leur taille fixe de 16 valeurs flottantes, et parce que libslcargs est capable de fournir les valeurs pardéfaut pour une matrice (mais pas pour un tableau !).

Si Ayam a été compilé sans bibliothèque d’analyse des ombres (par exemple sans libslcargs), Ayam anal-ysera les fichiers XML créés par "sl2xml" du projet K-3D (voir "http://www.k-3d.org/") aulieu des ombres compilées. Le bouton "Set new shader." ouvrira dans ce cas toujours une boitede dialogue de recherche de fichier, vous permettant de sélectionner un fichier XML, qui a été créé parsl2xml. De plus, le bouton "Default Values." ne sera pas disponible ; vous devez utiliser "Setnew shader." à la place.

A partir de la version 1.3, Ayam prend également en charge les plugins d’analyse des ombres pour permettrel’analyse des ombres compilées avec différents compilateurs d’ombres, voir aussi la section 8.7 Pluginsd’analyse des ombres (shaders) (page 502).

Enfin, depuis la version 1.25, il existe un script qui analyse le code source des ombres, voir aussi la section6.5.4 Analyse des ombrages (shaders) (page 429).

Travailler avec des ombres

Le bouton "Default Values." réinitialise tous les arguments de l’ombre aux valeurs par défaut. Deplus, l’ombre compilée sera à nouveau analysée et l’interface graphique des propriétés sera adaptée (lesnouveaux arguments de l’ombre apparaîtront, les arguments de l’ombre supprimée disparaîtront). Par con-séquent, ce bouton est très pratique si vous avez à gérer des ombres changeantes : il suffit d’éditer l’ombre,de la recompiler, puis de revenir dans Ayam en appuyant sur le bouton "Default Values.". Notez quecela détruit vos valeurs d’arguments de l’ombre éventuellement soigneusement ajustés.

Si vous souhaitez conserver les anciennes valeurs des arguments de l’ombre lorsqu’une ombre change,il suffit de copier la propriété de l’ombre en utilisant le presse-papiers des propriétés (menu principal :"Edit/Copy Property") avant de charger les nouvelles valeurs par défaut et de recoller la propriétéen utilisant "Edit/Paste Property" après le chargement des nouvelles valeurs par défaut. Attention! Cela ne fonctionne correctement que si le type d’arguments de l’ombre existant ne change pas et si aucunargument de l’ombre n’est supprimé dans la nouvelle version de l’ombre.

Il est également possible de copier simplement certaines valeurs de paramètres (arguments de l’ombre dontles types ne changent pas) en les sélectionnant en double-cliquant sur les noms de paramètres dans l’interfacegraphique des propriétés de l’ombre, puis en utilisant par exemple "Edit/Copy Marked Prop" (voirégalement la description du presse-papiers des propriétés dans la section 2.1.2 Propriétés (page 26)).

Page 252: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 252

4.10.5 La propriété Caps (Bouchon)

De nombreux objets-outils ont une propriété "Caps" pour fermer facilement la surface créée.

Figure 106: La propriété Cap d’un objet "NPatch"

Les noms exacts des attributs disponibles dans cette propriété sont spécifiques à chaque type d’objet, carles noms des bornes de chaque type d’objet sont différents : les noms des bornes d’un objet Skin sont parexemple "Left", "Right", "Start", et "End", tandis que les noms des bornes d’un objet NPatch sont"U0", "U1", "V0", et "V1" (voir aussi l’image ci-dessus).

Pour réduire l’encombrement de l’interface graphique, la propriété Caps ne contient initialement que desboutons qui permettent d’activer/désactiver le bouchon associé et de contrôler l’apparence des autres op-tions.

Pour chaque bouchon activé, un bouton de menu apparaîtra qui permet de définir le type de bouchon cor-respondant (voir la section 4.7.10 Propriété CapAttr (page 208) pour plus d’informations sur les types debouchon disponibles).

En outre, la propriété Caps permet de créer des bouchons qui s’intègrent à la surface de l’objet ancètrecorrespondant (après l’intégration éventuelle de biseaux) via le paramètre supplémentaire "Integrate".Toutefois, l’intégration n’est prise en charge que pour les types de bouchons "Simple" et "Simple3D".Si l’intégration est activée et qu’il y a un biseau qui ne s’intègre pas à la surface de l’ancêtre, le bouchons’intégrera dans le biseau à la place. L’intégration modifiera le nombre d’objets fournis et les paramètres dela surface de l’ancêtre.

Page 253: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 253

4.10.6 La propriété Bevels (biseaux)

De nombreux objets-outils ont une propriété "Bevels" qui permet d’arrondir facilement les bords de lasurface créée, qui sinon seraient tranchants.

Figure 107: La propriété Bevel de l’objets "NPatch"

Les noms exacts des attributs disponibles dans cette propriété sont spécifiques à chaque type d’objet, carles noms des bornes de chaque type d’objet sont différents : les noms des bornes d’un objet Skin sont parexemple "Left", "Right", "Start", et "End", tandis que les noms des bornes d’un objet NPatch sont"U0", "U1", "V0", et "V1" (voir aussi l’image ci-dessus).

Pour réduire l’encombrement de l’interface graphique, la propriété Bevels ne contient initialement que desboutons qui permettent d’activer/désactiver le biseau associé et de contrôler l’apparence des autres options.

De nombreux attributs de la propriété Bevels sont également disponibles pour l’objet Bevel (voir aussi 4.7.9Propriété BevelAttr (page 204)).

En plus de ces attributs, la propriété Bevels permet d’intégrer la surface biseau créée avec la surface parentde l’objet/outil correspondant via le paramètre supplémentaire "Integrate". L’intégration modifiera lenombre d’objets fournis et les paramètres de la surface d’origine.

Page 254: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 254

4.10.7 La propriété Tags (Balises)

Utilisez la propriété "Tags" pour modifier les balises d’un objet. Voir aussi l’image ci-dessous.

Figure 108: GUI de la propriété Tags avec un menu contextuel

Toutes les entrées de balises ont un menu contextuel, où la balise correspondante peut être copiée/ajoutéedans le presse-papiers des propriétés.1

Les valeurs des balises longues et multilignes seront affichées de manière abrégée (avec une ellipse – . . .).

L’interface graphique des propriétés des balises se compose également des éléments standard suivants (voirégalement l’image ci-dessus) :

• "Remove all Tags!" supprime immédiatement tous les tags de l’objet.

• "Remove Tag!" est un menu qui permet de sélectionner et de supprimer rapidement une seulebalise de l’objet.

• "Add Tag!" ouvre une petite fenêtre de dialogue, où un nouveau type de balise et une nouvellevaleur peuvent être saisis (voir aussi l’image ci-dessous). La ligne de type de balise possède un menude valeurs par défaut, contenant les types de balises les plus importants.2

Après avoir appuyé sur le bouton "Ok", une nouvelle entrée sera ajoutée à la propriété des balises,affichant la nouvelle balise. Il suffit de cliquer sur l’entrée pour revenir au dialogue, pour supprimerla balise en utilisant "Clear" puis "Ok", ou pour changer le type ou la valeur de la balise.Le dialogue d’édition des balises prend en charge l’édition des balises multilignes. 3 Il suffitd’agrandir la fenêtre de dialogue pour passer à l’édition multiligne. Une autre façon de contrôlerle mode multiligne consiste à utiliser les raccourcis clavier <Alt-Down> et <Alt-Up> respec-tivement. Notez qu’en mode multiligne, les touches <Enter>, <Return>, et aussi <Tab> secomporteront différemment.Le widget de la balise value (????) dispose également d’un menu contextuel, permettant de récupérerdu texte dans le presse-papiers ou les fichiers du système.

Figure 109: Boite de dialogue pour ajouter / éditer une balise

1 Depuis 1.21. 2 Depuis 1.24. 3 Depuis 1.24.

Page 255: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 255

Les sous-sections suivantes décrivent les types de balises actuellement disponibles dans Ayam et les pluginsdistribués avec Ayam. Notez que les extensions et plugins étrangers peuvent définir leurs propres types.

Page 256: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 256

4.11 Tags

Les balises permettent d’attacher facilement des informations quelconques (par exemple, des attributsd’interface RenderMan supplémentaires, des attributs spéciaux pour les plugins ou même des scripts) auxobjets. Une balise se compose de deux chaînes de caractères, l’une définissant le type et l’autre la valeur dela balise.

Les balises peuvent être manipulées via l’interface graphique des propriétés des balises (voir la section4.10.7 Propriété Tags (balises) (page 254)) ou l’interface de script (voir la section 6.2.11 Manipuler lesbalises (tag) (page 377)).

En outre, il existe un sous-menu correspondant dans le menu principal (voir la section 2.2 Tags Menu (page41)).

Les deux tableaux suivants contiennent une liste compacte des noms de balises et de brèves explications pourtous les types de balises connus dans Ayam et dans toutes les extensions (plugins) qui les accompagnent ;les types de balises marqués d’un astérisque (*) sont réservés à un usage interne.

Name DescriptionANS After Notify Script

AsWire X3D export controlBNS Before Notify ScriptBP Bevel ParameterCP Cap Parameter

CIDR Importance Driven RenderingCCIDR Importance Driven RenderingDANS Disabled After Notify ScriptDBNS Disabled Before Notify Script

DC Depth ComplexityHC Has Children*IDR Importance Driven RenderingIIDR Importance Driven RenderingMI Material ID*MN Mean Normalmn master name*MP Mean PointNC Notify Count*NM Notify Master*NO Notify Object*

NoExport Export ControlNP New PropertyNT Normals Tangents

Table 90: Vue d’ensemble des balises (1/2), * – interne

Page 257: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 257

Name DescriptionOI Object ID*PV Primitive Variable

RiAttribute RenderMan ExportRiDisplay RenderMan Export

R3IDR Importance Driven RenderingRIDR Importance Driven Rendering

RiHider RenderMan ExportRiOption RenderMan Export

RP Remove PropertySaveMainGeom Geometry ManagementSavePaneLayout Geometry Management

SP Selected PointsTC Texture CoordinatesTM Transformation Matrix*TP Tessellation Parameters

UMM U Min MaxVMM V Min MaxXML XML Data

Table 91: Vue d’ensemble des balises (2/2), * – interne

4.11.1 Balise RiAttribute

Le type de balise "RiAttribute" peut être utilisé pour attacher des attributs d’interface RenderManquelconques aux objets. Ceci est pratique si un moteur de rendu avec beaucoup d’attributs RiAttributesdifférents des attributs RiAttributes standard est utilisé.

Les balises "RiAttribute" attachées à un objet géométrique remplacent les balises "RiAttribute"éventuellement attachées à l’objet matériau de cet objet géométrique.

Pour créer une balise de type RiAttribute, la chaîne de caractères doit être "RiAttribute". La syntaxede la chaîne de valeur est la suivante :

<attrname>,<paramname>,<paramtype>,<param>

où<attrname> est le nom de l’attribut (par exemple "render") ;<paramname> est le nom du paramètre (par exemple "displacementbound") ;<paramtype> est un caractère unique définissant le type de paramètre (il peut s’agir d’un f – float, g –float pair, i – integer, j – integer pair, s – string, c – color, p – point); et enfin<param> est la valeur du paramètre lui-même (par exemple une valeur flottante : "1.2", une valeur entière: "3", une chaîne de caractères : "on", une couleur : "1,1,1" ou un point : "0.4,0.5,1.0").

Exemple

Quelques exemples de balises RiAttribute valides :

RiAttribute

Page 258: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 258

render,truedisplacement,i,1

RiAttribute

dice,numprobes,j,3,3

RiAttribute

radiosity,specularcolor,c,0.5,0.5,0.5

Notes

La balise "RiAttribute" ne gère qu’un seul paramètre à la fois. Notez également que lesbalises "RiAttribute" peuvent être créées beaucoup plus facilement en utilisant l’entrée de menu"Special/Tags/Add RiAttribute". La base de données des RiAttributs pour cette interfacegraphique peut être étendue en éditant le fichier ayamrc, voir la section 8.4 Le fichier Ayamrc (page 490).

4.11.2 Balise "RiOption"

Le type de balise "RiOption" peut être utilisé pour attacher des options d’interface RenderMan quel-conques à la scène. Ceci est pratique si un moteur de rendu avec de nombreuses RiOptions différentes desRiOptions standard est utilisé. Cependant, elles ne seront utilisées par l’exportateur RIB que si elles sontattachées à l’objet "Root". La syntaxe est similaire à celle du type de balise "RiAttribute", voirci-dessus.

Exemple

RiOption

radiosity,steps,i,16

RiOption

shadow,bias0,f,0.01

Notes

Les balises "RiOption" peuvent être créées facilement en utilisant l’entrée de menu"Special/Tags/Add RiOption". Les balises créées avec cette interface graphique seronttoujours ajoutées à l’objet "Root". Il n’est pas nécessaire de les sélectionner lorsque l’interface graphiqueest utilisée. En outre, la base de données des RiOptions pour cette interface graphique peut être étendue enéditant le fichier ayamrc, voir la section 8.4 Le fichier Ayamrc (page 490).

4.11.3 Balise "TC" (Texture Coordinates)

Le type de balise "TC" peut être utilisé pour attacher des coordonnées de texture à des objets ou desmatériaux.

La balise "TC" contient toujours une liste de huit valeurs flottantes séparées par des virgules, qui spécifientun mappage pour quatre points 2D (un quadrilatère) dans l’espace de texture à partir des valeurs par défaut(0,0), (1,0), (0,1) et (1,1) vers les nouvelles valeurs spécifiées.

Exemple

TC

0,0,10,0,0,10,10,10

Page 259: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 259

Modifie l’espace des coordonnées de la texture de manière à ce qu’un nombre plus important et plus petitde tuiles d’une texture soient affichées sur une primitive.

TC

0,0,0,1,1,0,1,1

Retourne l’espace des coordonnées de la texture sur deux coins. Une ombre générant normalement desbandes verticales créera maintenant des bandes horizontales.

TC

0,1,0,0,1,1,1,0

Tourne l’espace des coordonnées de texture de 90 degrés. Une ombre générant normalement des bandesverticales créera maintenant des bandes horizontales.

Notes

Les balises "TC" attachées à un objet géométrique remplacent les balises "TC" éventuellement attachées àl’objet matériau de cet objet géométrique.

Le comportement exact d’un objet équipé d’une balise "TC" dépend fortement de l’ombre et de son utili-sation des coordonnées de la texture.

Notez également qu’en utilisant les balises "TC", toutes les coordonnées de primitive de de texture sontmodifiées. (????) Pour modifier les coordonnées de texture de sous-primitives (par exemple de points decontrôle uniques d’un patch NURBS), il faut utiliser les balises "PV" (Primitive Variable) à la place.

Pour faciliter le réglage des valeurs des balises "TC", Ayam fournit un éditeur graphique spécial commeindiqué ci-dessous.

L’éditeur de coordonnées de texture peut être ouvert en utilisant l’entrée de menu principal"Special/Tags/Edit TexCoords" et vous permet d’éditer les balises de coordonnées de texturede manière intuitive.

Pour cela, les coordonnées de la texture actuelle sont affichées comme un polygone noir dans un canevaspar rapport aux valeurs d’origine (par défaut), qui sont affichées en gris. De petites flèches indiquent respec-tivement les directions s et t positives.

Figure 110: Editeur de coordonnée de texture

Page 260: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 260

Les boutons "RotateR" et "RotateL" décalent les valeurs des coordonnées entre les quatre points. Ilen résulte une rotation de 90 degrés de l’espace de texture.

Les boutons "FlipS" et "FlipT" inversent les valeurs des coordonnées de texture dans les directions set t respectivement. Ceci est utile, par exemple, si un mappage de texture doit être corrigé pour une imagequi apparaît à l’envers.

Les boutons suivants permettent de déplacer (en utilisant "MoveS" et "MoveT") et d’échelonner (en util-isant "ScaleS" et "ScaleT") les coordonnées de la texture d’une quantité spécifique qui est donnéedans le premier champ de saisie.

Les boutons de menu "Load" et "Save" permettent de :

• charge les valeurs de coordonnées de texture par défaut ((0,0), (1,0), (0,1), (1,1)),

• charger les coordonnées de texture d’un objet BPatch sélectionné : Les coordonnées xy des quatrepoints du BPatch sélectionné seront interprétées comme des coordonnées st. Cela permet des trans-formations plus complexes des coordonnées de texture, par exemple des rotations autour d’un anglede 45 degrés. Pour cela, il suffit de créer un objet BPatch, de le faire pivoter en conséquence, puis decharger les coordonnées dans l’éditeur de coordonnées de texture.

• charger les balises TC à partir de l’objet sélectionné,

• sauvegarder les coordonnées de la texture d’un objet BPatch,

• enregistrer les balises TC dans un objet sélectionné. Notez qu’il n’est pas possible d’enregistrerdirectement la balise TC sur plusieurs objets sélectionnés. Mais le presse-papiers des propriétés peutêtre utilisé pour copier la balise après l’avoir enregistrée dans un seul objet.

Notez que les numéros de balises dans les entrées du menu ne comptent que les balises TC.

Le dialogue de coordonnées de texture est sans mode, il peut rester ouvert tout en faisant du maquettage(???? modelling).

4.11.4 Balise PV (Primitive Variable)

Le type de balise "PV" peut être utilisé pour attacher des données quelconques à des primitivesgéométriques et même à des sous-primitives. À l’aide de variables primitives, les coordonnées de texturepeuvent être attachées aux sommets du patch NURBS des couleurs primitives ou distinctes sur les faces oumême sur les sommets uniques d’un maillage polygonal. Dans ce dernier cas, les données sont correctementinterpolées par le moteur de rendu RenderMan avant d’être transmises à l’ombre de surface.

Lors du rendu, toutes les données définies dans une balise "PV" sont remises à l’ombre de surface qui estattaché à la primitive géométrique respective en utilisant des paramètres de l’ombre supplémentaires. Pourl’exportation RIB, les déclarations "RiDeclare" appropriées seront créées automatiquement par Ayam.

Cependant, Ayam ne vérifie pas si les ombres utilisent réellement les données de la balise "PV".

La syntaxe de la valeur de la chaîne d’une balise PV est la suivante :

<name>,<detail>,<type>,<ndata>,<data>

où<name> est le nom de la variable primitive ;

Page 261: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 261

<detail> (ou la classe de stockage) doit être l’une des suivantes : "uniform", "varying","sommet", ou "constant";<type> est un caractère unique décrivant le type de données ("c" (color), "f" (float), "g" (float[2]),"n" (normal), "p" (point), "s" (string), or "v" (vector), Voir aussi la documentation de la balise"RiAttribute" ci-dessus);

<ndata> est un nombre entier décrivant combien d’éléments de données suivront ; et<data> est une liste séparée par des virgules composée de <ndata> éléments de type <type>.

Exemples

PV

mycolor,constant,c,1,0,1,0

ajoute une seule valeur de couleur (0,1,0), qui est la même sur toute la primitive, l’ombre de surface respectifdoit avoir un paramètre "color mycolor" ;

PV

mys,varying,f,4,0.1,0.2,0.3,0.4

pourrait être utilisé pour ajouter une valeur flottante distincte à chaque point d’angle d’un patch NURBSà quatre points (d’ordre, de largeur et de hauteur 2), l’ombre de surface correspondante devrait avoir unparamètre "varying float mys".

Notes

Les types de données suivant ne sont pas pris en charge : "i", "j". La prise en charge des type "n"(normal), et "v" (vector) ont été ajoutés dans Ayam 1.17.

Actuellement, tous les objets géométriques ne respectent pas les étiquettes PV à l’exportation des RIB. Lesobjets géométriques qui prennent actuellement en charge les étiquettes PV le sont : SDMesh, PolyMesh,PatchMesh, NPatch, et BPatch. La plupart des objets outils qui créent en interne des objets NPatch prennentégalement en charge les balises PV.1 N’oubliez pas que le même ensemble de balises sera utilisé pour toutesles surfaces qui composent l’objet outil, par exemple la surface balayée, ses biseaux et ses bouchons.

En outre, le nombre d’éléments de données, qui dépend du détail ou de la classe de stockage, du type deprimitive géométrique et de la configuration de la primitive géométrique, n’est pas vérifié par Ayam. Cer-taines bibliothèques d’écriture RIB, cependant, vérifient les nombres et omettent silencieusement la variableprimitive en cas de non-concordance. Le RIB doit être examiné pour détecter la présence de la variableprimitive après l’exportation, en particulier si des balises PV ont été ajoutées ou modifiées manuellement.

4.11.5 Balise "RiHider"

Le type de balise "RiHider" peut être utilisé pour choisir et paramétrer différents algorithmes de suppres-sion des surfaces cachées lors du rendu de la scène exportée avec un moteur de rendu compatible Render-Man. Les balises RiHider doivent être attachées à l’objet racine pour pouvoir être utilisées. La syntaxe d’unebalise RiHider est assez similaire à celle d’une balise RiAttribute : "<type>,<parameterlist>" où"<type>" est le nom d’un algorithme et "<parameterlist>" est une liste de triplets séparés pardes virgules, composée du nom, du type et de la valeur d’un paramètre.1 Depuis 1.20.

Page 262: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 262

Exemple

Une étiquette RiHider pourrait ressembler à ça :

RiHider

hidden,depthfilter,s,midpoint

4.11.6 Balise "RiDisplay"

Le type de balise "RiDisplay" peut être utilisé pour ajouter des fichiers de sortie de différents types (parexemple, contenant des informations de tampon de profondeur) à la scène ou pour contrôler directement leformat de sortie lors du rendu de la scène exportée avec un moteur de rendu compatible RenderMan. Lesbalises RiDisplay doivent être attachées à l’objet Root pour pouvoir être utilisées. La syntaxe d’une baliseRiDisplay est la suivante : "<name>,<type>,<mode>,<parameterlist>", où"<name>" est un nom de fichier ou d’appareil,"<type>" spécifie la destination des données d’image (par exemple écran ou fichier),"<mode>" spécifie les informations qui doivent être stockées ou affichées (par exemple valeur descouleurs : rgb, ou valeur de la profondeur : z), et"<parameterlist>" est une liste de triplets séparés par des virgules, facultativement présente, consis-tant en un nom, un type et la valeur d’un paramètre.

Exemple

Une balise RiDisplay pour ajouter la sortie des informations de la mémoire tampon de profondeur au fichier"imagez.tif" pourrait ressembler à ceci :

RiDisplay

imagez.tif,file,z

Notes

Le nom sera automatiquement changé en "+nom" à l’exportation RIB s’il ne commence pas déjà par unplus (sauf pour la toute première déclaration RiDisplay).

4.11.7 Balise "AsWire"

Le type de balise "AsWire" fait passer l’exportation de certains objets du mode surface au mode filaire.La valeur de la chaîne de cette balise est ignorée. Tout ce qui compte est la présence de la balise. Notez queseule l’exportation X3D honore cette balise.

4.11.8 Balise "NoExport"

Le type de balise "NoExport" peut être utilisé pour exclure certains objets des RIB exportés. Lavaleurde la chaîne de cette balise est ignorée. Tout ce qui compte est la présence de la balise. Les objets enfantsdes objets avec la balise "NoExport" seront également exclus du RIB. Depuis Ayam 1.6, les objets légersreconnaissent également le tag "NoExport". Notez qu’indépendamment des balises "NoExport" po-tentiellement présentes, des archives RIB seront créées en permanence pour tous les objets référencés (mêmesi les balises "NoExport" sont ajoutées à toutes les instances).

Page 263: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 263

4.11.9 Balise "SaveMainGeom"

Le type de balise "SaveMainGeom" peut être utilisé pour enregistrer la géométrie de la fenêtre principaleet de la fenêtre de la boîte à outils (si elle est ouverte) dans un fichier de scène. Pour cela, le code desauvegarde de la scène vérifie la présence d’une balise "SaveMainGeom" pour l’objet Root et la remplitavec les informations géométriques actuelles. Le code de lecture de la scène vérifie la présence d’une balise"SaveMainGeom" pour l’objet Root après le remplacement d’une scène et rétablit les géométries de lafenêtre principale et de la boîte à outils.

Cette balise n’est remplie que de données significatives et la géométrie n’est restaurée que si Ayam est enmode GUI multi-fenêtres.

4.11.10 Balise "SavePaneLayout"

Le type de balise "SavePaneLayout" peut être utilisé pour enregistrer les tailles relatives des fenêtresinternes de la fenêtre principale lorsque Ayam fonctionne en mode GUI à fenêtre unique dans un fichier descène. Pour cela, le code de sauvegarde de la scène vérifie la présence d’une balise "SavePaneLayout"pour l’objet Root et la remplit avec les informations géométriques actuelles. Le code de lecture de la scènevérifie la présence d’une balise "SavePaneLayout" pour l’objet Root après le remplacement d’une scèneet rétablit les géométries des fenêtres internes.

Cette balise n’est remplie que de données significatives et la disposition du volet n’est restaurée que si Ayamest en mode GUI à fenêtre unique.

4.11.11 Balise "TP" (Tessellation Parameter)

La balise de type "TP" peut être utilisée pour enregistrer les paramètres de tessellation surles objets de type "NPatch" (et les objets qui peuvent être convertis en objets de type"NPatch"). Ces paramètres de tessellation seront utilisés lorsque l’objet NPatch est tesselépour, par exemple, une conversion en un objet PolyMesh. La syntaxe de la balise TP est :"<smethod>,<sparamu>,<sparamv>[,<refinetrims>]" où<smethod> est une valeur entière comprise entre 1 et 6, qui décrit la méthode d’échantillonnage à utiliser(1 – ParametricError, 2 – PathLength, 3 – DomainDistance, 4 – NormalizedDomainDistance, 5 – Adaptive-DomainDistance, et 6 – AdaptiveKnotDistance) et<sparamu> et <sparamv> sont des valeurs flottantes décrivant la valeur du paramètre respectif pourla méthode d’échantillonnage choisie. La deuxième valeur du paramètre est ignorée pour les méthodesd’échantillonnage 1 et 2.

La dernière valeur, "refinetrims", est un nombre entier entre 0 et 5 contrôlant combien de fois lescourbes de trim doivent être affinées avant la tessellation pour améliorer la fidélité de la tessellation le longdes bords de trim. La valeur "refinetrims" peut être omise et est fixée par défaut à 0.

Notez que la syntaxe de la balise "TP" a changé dans Ayam 1.9, l’ancienne syntaxe n’autorisait qu’un seulparamètre.

Les balises TP peuvent être facilement créées à l’aide de l’interface graphique de tessellation, qui peut êtrelancée à partir de l’entrée de menu principal "Tools/Surface/Tesselate" (voir aussi la section5.6.5 Outil de tessellation (triangularisation) (page 331)).

Page 264: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 264

Exemple

Une balise "TP" peut ressembler à ça :

TP

1,0.5,0.6

4.11.12 Balise "DC" (Depth Complexity)

Le type de balise "DC" n’est utilisé que par le plugin de prévisualisation AyCSG CSG pour stocker la com-plexité de profondeur des primitives CSG. La syntaxe de la balise DC est : "<dcval>" où "<dcval>"est une valeur entière positive décrivant la complexité en profondeur de la primitive CSG. Voir aussi la sec-tion 8.10 Aperçu CSG à l’aide du plugin AyCSG (page 504) pour plus d’informations concernant la valeurde la complexité de profondeur.

Exemple

Une étiquette DC (valable par exemple pour un tore) pourrait ressembler à ceci :

DC

2

4.11.13 Balise "NP" (New Property)

Le type de balise "NP" (nouvelle propriété) peut être utilisé pour ajouter de nouvelles interfaces graphiquesde propriété à des objets individuels. La valeur de la balise est le nom d’une nouvelle propriété. Le codenécessaire pour gérer les données de la propriété et les fenêtres qui constituent l’interface graphique de lapropriété elle-même doivent être présents dans le contexte Tcl de Ayam avant que l’utilisateur ne clique surla nouvelle propriété dans la zone de liste des propriétés.

Exemple

NP

Transformations

Cette balise peut par exemple être ajoutée aux objets Script qui créent des objets.

Toute GUI de propriété contrôlée par script doit également être activée en utilisant une balise NP commecelle-ci :

NP

MyProperty

Notes

Les balises NP peuvent être gérées plus facilement grâce à un dialogue spécialisé disponible dans le menuprincipal "Special/Tags/Add Property".

Page 265: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 265

4.11.14 Balise RP (Remove Property)

Le type de balise "RP" (remove property) peut être utilisé pour supprimer l’accès à l’interface graphiqued’une propriété à partir d’objets individuels. La valeur de la balise est le nom de la propriété à supprimer.L’accès à l’interface graphique sera bloqué en omettant simplement la propriété dans la liste des propriétés.Notez bien : la propriété est toujours présente et active dans les objets eux-mêmes et les valeurs peuventtoujours être définies à l’aide de l’interface de script.

Exemple

RP

Script

supprime l’accès direct à la propriété Script d’un objet Script. Idéalement, l’objet Script possède égalementune balise "NP", pour permettre un contrôle direct des paramètres du script. De cette façon, l’utilisateur nevoit pas le script (code), mais seulement une interface graphique de paramètres propre.

Ci-dessous un autre exemple : la balise

RP

Transformations

peut être ajouté aux objets Instance pour les transformer en références (instances sans attributs de transfor-mation propres).

Notes

Les balises RP peuvent être gérées plus facilement grâce à un dialogue spécialisé disponible dans le menuprincipal "Special/Tags/Remove Property".

4.11.15 Balise BNS (Before Notify Script)

Le type de balise "BNS" (before notify script) peut être utilisé pour ajouter des scripts à un objet, qui seraexécuté avant que la notification de cet objet ne commence. Une notification, à son tour, sera exécutée parceque, par exemple, l’un des enfants de l’objet a changé (Voir aussi la section 8.2 Le concept de modélisationoutils-objets (page 485)).

Lorsque le script s’exécute, l’objet correspondant avec la balise BNS sera déjà sélectionné. Le niveau et lasélection actuels seront rétablis lorsque le script se terminera, c’est-à-dire que le script n’aura plus besoin defaire ni l’un ni l’autre.

Exemple

Une simple balise BNS pourrait ressembler à ceci :

BNS

puts "notify callback about to fire"

Un exemple plus utile (qui est également disponible comme scène d’exemple"ayam/scn/scripts/bnstag.ay") :

Page 266: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 266

BNS

getProp;

set ::RevolveAttrData(Sections) [expr int($::RevolveAttrData(ThetaMax)/10)];

setProp

Cette balise calcule le nombre de sections à partir de la valeur "ThetaMax" d’un objet "Revolve". Chaquefois que le "ThetaMax" est modifié, le nombre de sections s’adapte, de sorte que chaque section couvretoujours le même angle. L’appel de fonction int() est nécessaire car le code C de la commande setPropde la propriété RevolveAttr ne recherche que les données entières dans la variable Sections et sansint() la variable contiendrait des données incompatibles en virgule flottante.

Un deuxième exemple similaire serait :

BNS

getProp;

set ::ACurveAttrData(ALength) [expr int($::ACurveAttrData(Length)/2)];

setProp

Cette balise dérive automatiquement une bonne valeur pour le paramètre ALength d’un objet "ACurve" àpartir du nombre de points de données à approximer. Lorsque cette balise est ajoutée à un objet "ACurve",les actions interactives d’insertion/suppression de points peuvent être utilisées plus librement.

Voici un autre exemple plus court ; la balise BNS

BNS

applyTrafo -all

s’assure qu’un objet "NCurve" ou "NPatch" a toujours les transformations par défaut, car toute modifica-tion des attributs de transformation sera immédiatement appliquée aux points de contrôle et les attributs detransformation seront réinitialisés au fur et à mesure.

Notes

Dans les versions de Ayam antérieures à la version 1.16, les scripts de balises BNS pouvaient utilisern’importe quelle fonctionnalité de Tcl, Tk et l’interface de script Tcl de Ayam, ce qui représentait un énormerisque pour la sécurité. Ce n’est plus le cas aujourd’hui. Les scripts de balises BNS fonctionnent maintenantdans un interpréteur sécurisé avec un jeu d’instructions réduit. Ils ne peuvent plus écrire dans le système defichiers, accéder au réseau ou brouiller l’état de l’application, Voir aussi la section 4.9.1 Interpréteur sécurisé(page 229).

Par conséquent, le dialogue d’avertissement qui apparaissait lors du chargement de fichiers avec des balisesBNS a également disparu.

La fonctionnalité originale peut encore être réactivée en recompilant Ayam. Si cette fonction est activée etque des fichiers de scène contenant des balises BNS sont chargés, Ayam ouvrira à nouveau une boîte dedialogue d’avertissement, proposant de désactiver temporairement toutes les balises de ce type qui serontlues pour des raisons de sécurité évidentes. Pour désactiver une balise BNS, Ayam change simplement sontype de "BNS" à "DBNS" (désactivé avant le script de notification). Elle ne sera pas exécutée à ce moment-là. Les balises de script de notification désactivées peuvent être activées après une inspection minutieuse enchangeant simplement leur type en "BNS" ou en utilisant l’entrée du menu principal "Special/EnableScripts".

Page 267: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 267

Si le script d’une balise BNS échoue, la balise sera désactivée en changeant le type en DBNS.1

Notez également que les scripts des balises BNS ne doivent pas modifier la hiérarchie des scènes, c’est-à-direqu’ils ne doivent pas créer ou supprimer des objets ni utiliser le presse-papiers des objets.

4.11.16 Balise ANS (After Notify Script)

Le type de balise "ANS" (after notify script) peut être utilisé pour ajouter des scripts à un objet, qui seraexécuté une fois la notification de cet objet terminée. La notification, à son tour, sera exécutée parce que,par exemple, un des enfants de l’objet a changé (Voir aussi la section 8.2 Le concept de modélisation outils-objets (page 485)).

Lorsque le script s’exécute, l’objet correspondant avec la balise ANS sera déjà sélectionné. Le niveau et lasélection actuels seront rétablis lorsque le script se terminera, c’est-à-dire que le script n’aura plus besoin defaire ni l’un ni l’autre.

Exemple

Une simple balise ANS pourrait ressembler à ceci :

ANS

puts "notify callback completed"

Notes

Dans les versions de Ayam antérieures à la version 1.16, les scripts de balises ANS pouvaient utilisern’importe quelle fonctionnalité de Tcl, Tk et l’interface de script Tcl de Ayam, ce qui représentait un énormerisque pour la sécurité. Ce n’est plus le cas aujourd’hui. Les scripts de balises ANS fonctionnent désormaisdans un interpréteur sécurisé avec un jeu d’instructions réduit. Ils ne peuvent plus écrire dans le système defichiers, accéder au réseau ou brouiller l’état de l’application, Voir aussi la section 4.9.1 Interpréteur sécurisé(page 229).

Par conséquent, le dialogue d’avertissement qui apparaissait lors du chargement de fichiers avec des balisesANS a également disparu.

La fonctionnalité originale peut encore être réactivée en recompilant Ayam. Si cette fonction est activée etque des fichiers de scène contenant des balises ANS sont chargés, Ayam affichera à nouveau une boîte dedialogue d’avertissement, proposant de désactiver temporairement toutes les balises qui seront lues pour desraisons de sécurité évidentes. Pour désactiver une balise ANS, Ayam change simplement son type de "ANS"à "DANS" (désactivé avant le script de notification). Elle ne sera pas exécutée à ce moment-là. Les balisesde script de notification désactivées peuvent être activées après une inspection minutieuse en changeantsimplement leur type de nouveau en "ANS" ou en utilisant l’entrée du menu principal "Special/EnableScripts".

Si le script d’une balise ANS échoue, la balise sera désactivée en changeant le type en DANS.2

Notez également que les scripts des balises ANS ne doivent pas modifier la hiérarchie des scènes, c’est-à-dire qu’ils ne doivent pas créer ou supprimer des objets ni utiliser le presse-papiers des objets.

1 Depuis 1.24. 2 Depuis 1.24.

Page 268: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 268

4.11.17 Balises UMM/VMM (U/V Min Max)

Les types de balises "UMM" (u min max) et "VMM" (v min max) peuvent être utilisés pour stocker desvaleurs de découpage de domaine paramétrique supplémentaires aux objets de courbe NURBS et de patchNURBS. Notez que les modes d’affichage GLU NURBS ne tiennent pas compte de ces balises, mais certainsplugins d’exportation le font (RIB, Wavefront OBJ, 3DM (Rhino)). Ces balises seront également créées parl’importation RIB ou l’importation Wavefront OBJ.

Exemple

Une étiquette UMM pourrait ressembler à cela :

UMM

0.4,0.6

4.11.18 Balise BP (Bevel Parameters)

Le type de balise "BP" (bevel parameters) est utilisé par tous les outils prenant en charge le biseau pourstocker leurs informations sur les paramètres de biseau. Voir aussi les sections 4.10.6 Propriété Bevels(biseaux) (page 253) et 4.7.9 Propriété BevelAttr (page 204).La syntaxe de la balise BP est :

"<side>,<type>,<radius>,<revert>"

où<side> est une valeur entière de 0 à 3 définissant le côté de la surface, à laquelle on ajoute le biseau,<type> est une valeur entière définissant le type de biseau,<radius> est une valeur en virgule flottante définissant le rayon du biseau, et<revert> est soit 0 soit 1 et peut être utilisé pour inverser le biseau.

Exemple

Une étiquette BP pourrait ressembler à ça :

BP

0,0,0.1,0

4.11.19 Balise CP (Cap Parameters)

Le type de balise "CP" (cap parameters) est utilisé par tous les outils, prenant en charge le bouchon, pourstocker leurs informations de paramètres de bouchon. Voir aussi la sections 4.10.5 Propriété Caps (bouchon)(page 252) et 4.7.10 Propriété CapAttr (page 208).La syntaxe de la balise CP est :

"<side>,<type>,<integrate>,<fraction>"

où<side> est une valeur entière de 0 à 3 définissant le côté de la surface, à laquelle on ajoute le bouchon,<type> est une valeur entière de 0 à 3 définissant le type de bouchon,

Page 269: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 269

<integrate> détermine s’il faut intégrer le bouchon dans la surface du parent (0 ou 1)<fraction> une valeur de paramètre à virgule flottante pour le type de bouchon Simple3D.

Exemple

Une balise CP pourrait ressembler à ceci :

CP

0,0,0,0.5

4.11.20 Balise MN (Mean Normal)

Le type de balise "MN" (normale moyenne) peut être ajouté à l’objet Biseau pour contrôler la normalemoyenne/cible du mode Biseau "RoundToNormal". La valeur du tag est une liste de trois nombres àvirgule flottante séparés par des virgules, un vecteur 3D. Le vecteur n’a pas besoin d’être normalisé.

Exemple

Une balise MN pourrait ressembler à cela :

MN

0.0,1.0,0.1

4.11.21 Balise MP (Mean Point)

Le type de balise "MP" (point moyen) peut être ajouté à l’objet Cap ou aux objets avec bouchons pourcontrôler le point central des bouchons "Simple" et "Simple3D". Ceci est utile si, par exemple, lepoint moyen calculé automatiquement de la courbe des paramètres est désactivé. La valeur de la balise estune liste de trois nombres à virgule flottante séparés par des virgules, un vecteur 3D, suivi d’une valeurentière entre 0 et 3 désignant le bouchon. Sur les objets Cap, le numéro de bouchon peut être omis.

Exemple

Une étiquette MP pourrait ressembler à cela :

MP

0.5,0.25,0.1,0

4.11.22 XML Tag

Le type de balise "XML" peut être utilisé pour enrichir les formats d’exportation basés sur XML avec desdonnées quelconques définies par l’utilisateur (attributs et noeuds).1 Il ne peut actuellement être ajoutéqu’aux objets de surface Material et NURBS pour l’exportation X3D (Voir aussi la section 7.15 ExportationX3D (Web3D) (page 482)).

Cette balise doit avoir pour valeur une hiérarchie de noeuds XML valide où le noeud extérieur spécifiele noeud cible des données XML. Les attributs du noeud extérieur seront ajoutés au noeud XML ciblepour l’exportation, les attributs déjà existants seront écrasés (c’est-à-dire que la balise de données XMLsera traitée après que l’exportation XML aura converti l’objet Ayam correspondant en une hiérarchie denoeuds XML). De même, tous les noeuds enfants du noeud extérieur seront ajoutés au noeud XML cible1 Depuis 1.24.

Page 270: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

4. Objets, propriétés et balises 270

correspondant. Les sections CDATA sont également prises en charge correctement (c’est important pour lecode source du moteur de rendu GLSL).

Examples

Les balises XML pourraient ressembler à ceci :

XML

<Material shininess=’0.7’/>

pour ajouter l’attribut de brillance à un matériau.

XML

<Appearance>

<ComposedShader language=’GLSL’>

...

</ComposedShader>

</Appearance>

pour ajouter une ombre GLSL à un matériau.

4.11.23 Balises internes

Les balises suivantes sont utilisées par Ayam en interne uniquement ; elles n’apparaîtront pas dansl’interface graphique des propriétés des balises et elles ne peuvent être supprimées ou modifiées à l’aidede l’interface de script.

• Balise OI (Object ID) Cette balise est utilisée par l’exportateur de RIB et l’installation de stockage descènes pour établir des liens entre les objets d’instance et les objets maîtres vers lesquels ils pointent.

• Balise MI (Material ID) Cette balise est utilisée par l’exportateur de RIB et l’installation de stockagedes scènes pour établir des liens entre les objets matériaux et les objets auxquels ils sont affectés.

• Balise HC (Has Children) Cette balise est utilisée par l’installation de stockage des scènes.

• Balise TM Balise binaire interne pour stocker les matrices de transformation, utilisée par le pluginAyCSG.

• Balise mdn Balise interne utilisée par le plugin d’import/export X3D. Renommée (anciennement mn)depuis Ayam 1.26.

• Balise NC Balise interne utilisée par le mécanisme de notification.

• Balise NO/NM Ces balises sont des balises binaires internes qui diffusent la notification à travers lascène.

• Balise NT Cette balise est une balise binaire interne qui porte les normales et les tangentes des courbesextraites des surfaces.

Page 271: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

5. Outils de modélisation NURBS 271

5 Outils de modélisation NURBS

Cette section décrit les outils de modélisation de courbes et de surfaces NURBS de Ayam.

Notez que l’appui sur la touche <F1> dans les fenêtres de dialogue des outils peut être utilisé pour passerdirectement à la sous-section appropriée de cette partie de la documentation.

5.1 Remarques générales

Tous les outils de modélisation NURBS sont accessibles via le menu "Tools" de la fenêtre principale oude la boîte à outils. En outre, il existe également des commandes correspondantes dans l’interface de script.

De nombreux outils de modification travaillent sur plusieurs objets sélectionnés et exécutent l’opérationsélectionnée sur tous ces objets sélectionnés dans l’ordre de leur apparition dans le niveau courant.

Les outils qui prennent uniquement des courbes NURBS ou uniquement des surfaces NURBS dans la sélec-tion avertiront si la sélection contient des objets de type inadéquat, mais le traitement se poursuivra quandmême.

En cas d’erreur, cependant, le traitement de plusieurs objets sélectionnés s’arrête immédiatement, laissantéventuellement derrière lui des objets modifiés et non modifiés.

Si une opération est exécutée avec succès sur un objet, les points sélectionnés peuvent être retirés de l’objet.Ensuite, la notification de l’objet sera exécutée. La notification de l’objet parent sera exécutée une fois quele traitement de tous les objets sélectionnés sera terminé.

Les outils qui créent des objets outils peuvent utiliser le presse-papiers pour déplacer les nouveaux enfants,c’est-à-dire que le contenu du presse-papiers est perdu par la suite.

Page 272: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

5. Outils de modélisation NURBS 272

5.2 Outils de création de courbes

Ces outils permettent de créer des objets courbes paramétriques.

5.2.1 Outil courbes B-spline circulaires (Circular B-Spline)

Figure 111: Courbes B-Spline crées par l’outil "Circular B-Spline"

Arguments

Radius, Arc, Sections, Order.

Opération

Cet outil crée une courbe B-Spline non rationnelle avec des points de contrôle Sections+1+Ordre(Arc=360,0) ou Sections+1+(Ordre/2) (autres valeurs d’Arc) dans le plan XY. Les points de contrôlesont disposés dans un cercle de rayon donné, centré autour de l’origine. Cela donne à la courbe unaspect circulaire (voir l’image ci-dessus) mais il ne s’agit pas d’un cercle véritable : Si seuls quelquespoints de contrôle sont utilisés, le rayon de la courbe circulaire est nettement inférieur à la valeur durayon spécifié (voir la courbe de gauche sur l’image ci-dessus). De plus, la forme, le paramétrage etla courbure de la courbe B-Spline ne sont pas exactement comme on pourrait l’attendre d’un cercle.Pour créer de véritables courbes circulaires, il convient d’utiliser l’outil NURBCircle (voir ci-dessous)à la place.

Notes

Il doit y avoir au moins 1 section. Si Arc est 360,0, les n premiers points de contrôle de la nouvellecourbe seront identiques aux n derniers (où n est d’ordre 1). Comparez les courbes de gauche et dumilieu de l’image ci-dessus qui sont respectivement d’ordre 4 et 2, la première ayant 3 et la secondeayant juste 2-1=1 points de contrôle égaux. Si Arc est 360.0, la courbe sera également marquée defaçon périodique et la génération de points multiples sera activée, de sorte que les actions d’éditionde points sachent qu’elles peuvent avoir besoin de déplacer deux points (Voir aussi la section 4.4.1Points multiples (page 150)).

Si Arc est inférieur à 360.0, la courbe sera ouverte et, comme il est naturel pour une courbe B-Spline,n’interpolera pas les premier et dernier points de contrôle à moins que l’ordre soit 2 (Voir la courbede droite dans l’image ci-dessus, qui a été créée avec une valeur d’arc de 180.0, 10 sections, et l’ordre4).

Page 273: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

5. Outils de modélisation NURBS 273

5.2.2 Outil cercle NURBS (NURBCircle)

Figure 112: Un cercle NURBS

Arguments

Radius, Arc.

Opération

L’outil "NURBCircle" crée une courbe NURBS circulaire de rayon et d’arc désirés dans le plan XY,centrée autour de l’origine (voir aussi l’image ci-dessus). L’ordre de la courbe sera 3. Le nombre depoints de contrôle utilisés diffère selon l’arc, par exemple 9 points pour un cercle complet, 5 pour undemi-cercle, 3 pour un quart de cercle.

Notes

La courbe NURBS créée par l’outil NURBCircle est rationnelle (utilise des poids). Cela signifie quele fait de modifier la courbe (par exemple, en déplaçant des points de contrôle) peut entraîner desrésultats imprévus (la courbe ne se comporte pas exactement comme on le souhaiterait). Si la courbedoit être modifiée davantage, il convient d’utiliser à la place une B-Spline fermée, créée avec l’outil" Circular B-Spline " (voir ci-dessus). En outre, la courbe créée sera marquée comme fermée et lagénération de points multiples sera activée, de sorte que les actions de modification de points sachentqu’elles peuvent avoir besoin de déplacer deux points. Voir aussi la section 4.4.1 Points multiples(page 150).

Un cercle NURBS créé par cet outil peut être utilisé pour créer facilement un tore NURBS en dé-plaçant le cercle le long de X un peu puis en le faisant tourner. La quantité de mouvement déterminele rayon du tore, tandis que le rayon du cercle détermine l’épaisseur.

Page 274: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

5. Outils de modélisation NURBS 274

5.2.3 Outil rectangle

Figure 113: Un carré

Arguments

Width, Height

Opération

L’outil rectangle crée une courbe NURBS non rationnelle, linéaire par morceaux, plane et centrée,de forme rectangulaire et de deux fois la largeur et la hauteur spécifiées dans le plan XY (voir aussil’image ci-dessus).

Notes

La courbe créée sera marquée comme fermée et la génération de points multiples sera activée, desorte que les actions de modification de points sachent qu’elles peuvent avoir besoin de déplacer deuxpoints. Voir aussi la section 4.4.1 Points multiples (page 150).

Page 275: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

5. Outils de modélisation NURBS 275

5.2.4 Outil rectangle de trim (TrimRect)

Figure 114: Un TrimRect

Arguments

L’outil "TrimRect" prend les objets "NPatch" sélectionnés (ou "NPatch" fournissant des objets1) dela sélection. Si le niveau actuel se trouve dans un objet "NPatch", l’objet parent correspondant estutilisé.

Opération

Pour chaque patch sélectionné, l’outil TrimRect crée une courbe NURBS non rationnelle, linéaire parmorceaux, plane et de forme rectangulaire dans le plan XY, qui s’inscrit dans l’espace de paramètres(u, v) de ce patch NURBS, pour être utilisée comme courbe de trim externe. Voir également l’imageci-dessus, qui représente un rectangle pour une pièce NURBS définie sur les intervalles de noeuds0.0, 0.0, 1.0, 1.0

et0.0, 0.083, 0.16, 0.25, . . . , 0.75, 0.83, 0.916, 1.0. La courbe créée sera marquée comme fermée et lagénération de points multiples sera activée, de sorte que les actions de modification de points sachentqu’elles peuvent avoir besoin de déplacer deux points. Voir aussi la section 4.4.1 Points multiples(page 150).

Si un objet "NPatch" est sélectionné, la nouvelle courbe sera liée en tant qu’enfant de cet objet"NPatch". Sinon, elle sera liée au niveau actuel. L’option "CreateAtMark" est ignorée. Voirla section 4.6.1 Courbes de trim (coupe) (page 167) pour une discussion plus détaillée sur les courbesde trim et l’utilisation de la courbe rectangulaire créée par l’outil "TrimRect".

1 Depuis 1.22.

Page 276: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

5. Outils de modélisation NURBS 276

5.2.5 Outil courbes interpolées (Tween Curve)

Figure 115: Courbe interpolée (blanche) à partir de deux courbes paramètres (bleu) avec r = 0.5

Arguments

L’outil de courbe d’interpolation prend deux courbes NURBS de la sélection et demande un paramètrer.

Opération

Les courbes NURBS sélectionnées seront interpolées (tweened) et une nouvelle courbe incorporantles caractéristiques des deux courbes d’origine sera créée. Voir aussi l’image ci-dessus. Le paramètrer définit le rapport d’influence de la première et de la deuxième courbe (cette dernière utilise unrapport de 1 - r).

|-NCurve |-NCurve

|-NCurve ==> |-NCurve

|-NCurve

Si une troisième courbe est sélectionnée, le paramètre r est ignoré et cette troisième courbe définit lerapport d’influence avec ses coordonnées y.

Notes

Les deux courbes doivent être de même longueur et de même ordre. Cependant, elles n’ont pas besoind’être définis sur le même vecteur de noeud. La courbe de contrôle d’interpolation n’a pas besoind’être compatible avec l’une des courbes d’origine. Si l’un des types de vecteurs de noeuds courbesest "Custom" ou si les types de vecteurs de noeuds respectifs sont différents, le type de vecteurde noeuds résultant sera "Custom" et les valeurs de noeuds seront également interpolées. Sinon,un vecteur de noeud correspondant sera généré en fonction du type. Les courbes NURBS d’originene seront pas supprimées par cet outil. Voir aussi la documentation de la commande d’interface descript correspondante 6.2.14 tweenNC (page 385) et l’outil associé pour les surfaces 5.4.14 Outild’interpolation de surfaces (Tween Surfaces) (page 311).

Pour interpoler une courbe NURBS fournissant des objets ou des objets de courbe NURBS incom-patibles, un objet Script doit être utilisé, comme indiqué dans l’exemple distribué de fichier de scène"tweenc.ay" et le script "tweenc.tcl".

Page 277: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

5. Outils de modélisation NURBS 277

5.3 Outils de modification des courbes

Ces outils modifient les objets courbes paramétriques.

Sauf indication contraire, les balises PV sont non prises en charge/modifiées par ces outils.

5.3.1 Outil de renversement (Revert)

Figure 116: Outil "Revert" (g: courbe initiale, d: courbe renversée)

Arguments

L’outil "Revert" prend tous les objets "NCurve", "ICurve", "ACurve", "NCircle" et "ConcatNC" dela sélection. De plus, les types d’objets de courbe définis par plugin peuvent prendre en chargel’opération de retour.1

Opération

La direction des courbes sélectionnées sera inversée. Cet outil inverse également les distances denoeuds relatives des courbes NURBS de sorte que, par exemple, une courbe NURBS définie sur levecteur noeud (asymétrique)[ 0 0 0 0.75 1 1 1 ]

obtiendra le nouveau vecteur de noeud[ 0 0 0 0.25 1 1 1 ]

après inversion. Cela garantit que la forme d’une courbe NURBS ne change pas pendant l’inversion.Les courbes d’interpolation et d’approximation peuvent changer de forme car les algorithmesd’interpolation/approximation sous-jacents ne sont pas invariants en fonction de la direction.Pour l’interpolation des courbes, les dérivées finales sont également inversées correctement.

Notes

L’outil "Revert" peut être facilement invoqué à partir des fenêtres de visualisation en utilisant le rac-courci clavier <!> (exclamation mark). Les points éventuellement sélectionnés le seront encore aprèscette opération. Voir aussi la documentation de la commande correspondante de l’interface de script6.2.12 revertC (page 380) et les outils correspondants pour les surfaces 5.5.1 Outil de reversement surU (Revert U) (page 313) et 5.5.2 Outil de reversement sur V (Revert V) (page 313).

1 Depuis 1.26.

Page 278: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

5. Outils de modélisation NURBS 278

5.3.2 Outil d’ouverture (Open)

Figure 117: Outil "Open" (g : courbe fermée, d : courbe ouverte)

Arguments

L’outil d’ouverture prend tous les objets "NCurve", "ICurve", "ACurve" et "ConcatNC" de la sélec-tion. De plus, les types d’objets de courbe définis par plugin peuvent prendre en charge l’opérationd’ouverture.1

Opération

Les courbes seront ouvertes. Pour les objets "NCurve" fermés, le dernier point sera éloigné du premier(les points d’extrémité multiples seront gérés correctement), voir aussi l’image ci-dessus. Pour lescourbes NURBS périodiques, les derniers points p seront éloignés du premier p (où p est le degré dela courbe). Pour les objets "ACurve", "ICurve" et "ConcatNC", l’attribut "Closed" sera effacé etaucun point de contrôle ne sera modifié.

Notes

L’outil d’ouverture peut être facilement invoqué à partir de fenêtres de visualisation en utilisant le rac-courci clavier <(>. Voir également la documentation de la commande correspondante de l’interfacede script 6.2.12 openC (page 380).

1 Depuis 1.26.

Page 279: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

5. Outils de modélisation NURBS 279

5.3.3 Outil de fermeture (Close)

Figure 118: Outil "Close" (g : courbe ouverte, d : courbe fermée)

Arguments

L’outil "Close" prend tous les objets "NCurve", "ICurve", "ACurve" et "ConcatNC" de la sélection.En outre, des types d’objets de courbe définis par des plugins peuvent prendre en charge l’opérationde fermeture1

Opération

Les courbes seront fermées. Pour les objets "NCurve", le dernier point sera rendu identique au pre-mier, cependant, cela ne garantit pas une forme de courbe fermée à moins que le vecteur noeud soitserré, voir aussi l’image ci-dessus. Pour les objets "ACurve", "ICurve" et "ConcatNC", l’attribut"Closed" sera défini et aucun point de contrôle ne sera modifié.

Notes

L’outil de fermeture peut être facilement invoqué à partir des fenêtres de visualisation en utilisantle raccourci clavier <)>. Voir également la documentation de la commande correspondante del’interface de script 6.2.12 closeC (page 380).

1 Depuis 1.26.

Page 280: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

5. Outils de modélisation NURBS 280

5.3.4 Outil d’affinage (Refine)

Figure 119: Application successive de l’outil "Refine"

Arguments

L’outil d’affinage prend tous les objets "NCurve", "ICurve" et "ACurve" de la sélection. 1 De plus,des types d’objets courbes définis par plugin peuvent prendre en charge l’opération de raffinage.2

Opération

Les courbes sélectionnées seront affinées en insérant un point de contrôle au milieu de chaque inter-valle de points de contrôle, ce qui modifiera la forme de la courbe. Les points de contrôle d’originene seront pas modifiés. Pour les courbes NURBS périodiques, aucun point de contrôle ne sera insérédans les derniers intervalles p (où p est le degré de la courbe), cela permet de maintenir la périodicité,voir aussi l’image ci-dessous où une courbe périodique de longueur 9 (8 sections) a été affinée, ce quidonne une courbe périodique de longueur 15 (et non 17).

Figure 120: Affiner une courbe NURBS périodique

S’il y a des points sélectionnés, seuls les intervalles entre le premier et le dernier point sélectionnésont affinés, voir aussi l’image ci-dessous.

La sélection des points sera adaptée de manière à ce que l’outil d’affinage puisse être appliquéplusieurs fois.

Notes

L’outil d’affinage peut être facilement invoqué à partir de fenêtres de visualisation en utilisant leraccourci clavier <#>.3

Voir également la documentation de la commande correspondante de l’interface de script 6.2.12 re-fineC (page 380).

1 ICurve and ACurve since 1.21. 2 Depuis 1.26. 3 Depuis 1.26.

Page 281: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

5. Outils de modélisation NURBS 281

Figure 121: Affiner une région sélectionnée

5.3.5 Outil d’affinage des noeuds (Refine Knots)

Figure 122: Application successives de l’outil "Refine Knots"

Arguments

L’outil de raffinement des noeuds prend un certain nombre de courbes NURBS dans la sélection.

Opération

Les vecteurs de noeuds des courbes NURBS sélectionnées seront affinés en insérant un noeud aumilieu de chaque intervalle de noeud intérieur sans modifier la forme de la courbe. De nouveauxpoints de contrôle seront ajoutés et la position des anciens points de contrôle pourra être modifiée aufur et à mesure. Voir aussi l’image ci-dessus où une courbe définie sur le vecteur noeud :[ 0 0 0 0 1 1 1 1 ]

est successivement affiné jusqu’au vecteur noeud :[ 0 0 0 0 0.5 1 1 1 1 ]

et donc[ 0 0 0 0 0.25 0.5 0.75 1 1 1 1 ].

Notes

Comme les nouveaux noeuds ne sont insérés que dans les intervalles intérieurs, l’état de serrage desvecteurs de noeuds ne change pas. En outre, les vecteurs de noeuds de type "NURB" ne changentpas de type, les autres vecteurs de noeuds sont changés en type "Custom". Le type de courbedes courbes périodiques "NURB" sera conservé. La sélection de points sera supprimée des objetstraités. Voir également la documentation de la commande correspondante de l’interface de script6.2.14 refineknNC (page 385) et l’outil correspondant pour les surfaces 5.5.4 Outil de raffinage desnoeuds de surface (Refine Knots Surface) (page 315).

Page 282: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

5. Outils de modélisation NURBS 282

5.3.6 Outil d’affinage des noeuds avec un outil (Refine Knots With Tool)

Arguments

Cet outil prend un certain nombre de courbes NURBS de la sélection et demande un vecteur denouvelles valeurs de noeuds.

Opération

Les vecteurs noeuds des courbes NURBS sélectionnées seront affinés en insérant tous les noeuds duvecteur spécifié en une seule fois. De nouveaux points de contrôle seront ajoutés et la position desanciens points de contrôle pourra être modifiée en cours de route. Le vecteur de noeuds résultant doitêtre valide, sinon une erreur sera signalée et la courbe respective ne sera pas modifiée.

Notes

Notez que les formes des courbes ne changent pas, mais la position de certains points de contrôle,si. La sélection des points sera supprimée des objets traités. Voir également la documentation de lacommande correspondante de l’interface de script 6.2.14 refineknNC (page 385) et l’outil correspon-dant pour les surfaces 5.5.5 Outil de raffinage des noeuds avec la surface(Refine Knots With Surface)(page 316).

Page 283: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

5. Outils de modélisation NURBS 283

5.3.7 Outil d’approximation (Coarsen)

Figure 123: Applications successives de l’outil "Coarsen"

Arguments

L’outil d’approximation prend tous les objets "NCurve", "ICurve" et "ACurve" de la sélection.1 De plus, des types d’objets courbes définis par plugin peuvent prendre en charge l’opérationd’approximation.2

Opération

Un point de contrôle sur deux dans les vecteurs de contrôle des courbes sélectionnées sera supprimé.Si la nouvelle longueur de la courbe est inférieure à l’ordre actuel, l’outil "Coarsen" ne changera rien.

Notes

Pour les courbes NURBS périodiques, l’outil d’approximation ne supprime pas les points de contrôledes premiers (derniers) intervalles p (où p est le degré de la courbe). Pour les courbes fermées, l’outild’approximation ne supprime pas le dernier point. L’outil d’approximation supprimera égalementles valeurs de noeuds des courbes NURBS avec des vecteurs de noeuds personnalisés. S’il y a despoints sélectionnés, seuls les intervalles entre le premier et le dernier point sélectionné sont affectés.La sélection des points sera modifiée de manière à ce que l’outil puisse être appliqué plusieurs fois.3

L’outil d’approximation peut être facilement invoqué à partir des fenêtres de visualisation en utilisantle raccourci clavier <Shift-#>.4 Voir également la documentation de la commande correspondantede l’interface de script 6.2.12 coarsenC (page 380).

1 "ICurve" et "ACurve" depuis 1.26. 2 Depuis 1.26. 3 Depuis 1.27. 4 Depuis 1.26.

Page 284: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

5. Outils de modélisation NURBS 284

5.3.8 Outil d’élévation (Elevate)

Figure 124: Applications successives de l’outil "Elevate" (Ordre : g:3, c: 4, d:5)

Arguments

L’outil d’élévation prend un certain nombre de courbes NURBS de la sélection et demande en plusune valeur entière.

Opération

L’ordre des courbes NURBS sélectionnées sera augmenté de la valeur entière spécifiée sans modifierla forme de la courbe. Voir également l’image d’exemple ci-dessus.

Notes

Si le vecteur noeud de la courbe n’est pas serré, il le sera automatiquement. Le type de noeud dela courbe sera modifié en "Custom". De nouveaux points de contrôle seront ajoutés et la positiondes anciens points de contrôle pourra être modifiée en cours de route. La sélection des points serasupprimée des objets traités. Voir également la documentation de la commande correspondante del’interface de script 6.2.14 elevateNC (page 383) et l’outil correspondant pour les surfaces 5.5.6 Outild’augmentation de l’ordre de la surface (Elevate Surface) (page 317).

Page 285: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

5. Outils de modélisation NURBS 285

5.3.9 Outil de réduction (Reduce)

Figure 125: Outil "Reduce" (Ordre : gauche : 5, droite : 4)

Arguments

L’outil de réduction prend un certain nombre de courbes NURBS dans la sélection et demande enoutre une valeur de tolérance.

Opération

L’ordre des courbes NURBS sélectionnées sera diminué de un si la forme des courbes réduites nes’écarte pas des courbes originales de la tolérance donnée en un point quelconque. Voir égalementl’exemple d’image ci-dessus où une courbe d’ordre 5 et de longueur 11, définie sur le vecteur noeud[ 0 0 0 0 0 0.25 0.25 0.5 0.5 0.75 0.75 1 1 1 1 1 ],a été réduit à l’ordre quatre et est maintenant de longueur sept et défini sur le vecteur noeud[ 0 0 0 0 0.25 0.5 0.75 1 1 1 1 ].

Notes

Si le vecteur noeud de la courbe n’est pas serré, il le sera automatiquement. Le type de noeud de lacourbe sera modifié en "Custom". Les points de contrôle seront supprimés et la position des ancienspoints de contrôle pourra être modifiée en cours de route. La sélection des points sera supprimée desobjets traités. La possibilité de réduire une certaine courbe peut être améliorée en augmentant d’abordla multiplicité des noeuds internes. En outre, si la forme de la courbe réduite a la priorité sur ladistribution des points de contrôle appropriés pour une édition ultérieure, l’outil d’approximation dela courbe peut être en mesure de fournir un résultat même si la réduction de la courbe échoue, voir lasection 5.3.22 Outil d’approximation (Approximate) (page 299).

Voir également la documentation de la commande correspondante de l’interface de script 6.2.14 re-duceNC (page 384) et les outils de surface correspondants 5.5.7 Outil de réduction de l’ordre dessurfaces (Reduce Surface) (page 318).

Page 286: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

5. Outils de modélisation NURBS 286

5.3.10 Outil d’extension (Extend)

Figure 126: Exemple d’outil d’extension (courbe originale (en haut), courbe originale et courbe étenduesuperposée (en bas))

Arguments

L’outil d’extension prend un certain nombre de courbes NURBS de la sélection et demande en plusun point dans l’espace.

Opération

Les courbes NURBS sélectionnées seront étendues jusqu’au (???) point spécifié dans l’espace sansmodifier la forme déjà existante des courbes.

Le vecteur noeud des courbes sera redimensionné à l’échelle [0, 1]. Si le vecteur noeud d’une courben’est pas serré à la fin, il le sera automatiquement. Le type de noeud de chaque courbe sera modifiéen "Custom". Un nouveau point de contrôle sera ajouté et la position des anciens points de contrôlepourra être modifiée en cours de route.

Notes

En raison des contraintes liées au fait qu’un seul point de contrôle sera ajouté à la courbe et que laforme actuelle doit être conservée, la nouvelle courbe peut former des arcs de grande taille inhab-ituels/non désirés si le nouveau point s’écarte trop de la tangente à l’extrémité de la courbe initiale.La sélection du point sera retirée des objets traités. Voir également la documentation de la commandecorrespondante de l’interface de script 6.2.14 extendNC (page 383).

Page 287: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

5. Outils de modélisation NURBS 287

5.3.11 Outil de resserrage (Clamp)

Figure 127: Outil de serrage (à gauche : courbe originale, à droite : courbe serrée)

Arguments

L’outil de serrage prend un certain nombre de courbes NURBS à partir de la sélection.

Opération

Les vecteurs de noeuds des courbes NURBS sélectionnées seront modifiés par insertion de noeudsde sorte que le premier et le dernier noeud aient une multiplicité égale à l’ordre de la courbe, sansmodifier la forme de la courbe. La courbe interpolera ensuite le premier et le dernier point de contrôle(à moins que les poids de ces points ne soient pas de 1,0). Voir aussi l’image ci-dessus, où une courbede longueur sept et d’ordre quatre, définie à l’origine sur le vecteur noeud :[ 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 ]

a été serrée et est maintenant défini sur le vecteur du noeud :[ 0.3 0.3 0.3 0.3 0.4 0.5 0.6 0.7 0.7 0.7 0.7 ].

Notes

Le type de noeud des courbes sera modifié en "Custom". Dans les versions de Ayam antérieures à1.18, c’était une erreur si la courbe était déjà serrée de part et d’autre, ce n’est plus le cas. En outre, lescourbes comportant plusieurs noeuds dans la ou les régions d’extrémité ne pouvaient pas être serrées,ce qui fonctionne bien maintenant. Voir aussi la documentation de la commande correspondante del’interface de script 6.2.14 clampNC (page 383) et l’outil correspondant pour les surfaces 5.5.8 Outilde serrage de surface (Clamp Surface) (page 319).

Page 288: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

5. Outils de modélisation NURBS 288

5.3.12 Outil de desserrage (Unclamp)

Figure 128: Outil de desserrage (à gauche : courbe originale, à droite : courbe déserrée)

Arguments

L’outil de desserrage prend un certain nombre de courbes NURBS dans la sélection.

Opération

Les vecteurs de noeuds des courbes NURBS sélectionnées seront modifiés de manière à ce qu’il n’yait pas de noeuds multiples aux extrémités respectives des vecteurs de noeuds. La forme de la courbene sera pas modifiée, mais la position de certains points de contrôle le sera. Le type de noeud de lacourbe peut être modifié en tapant "Custom". Voir aussi l’image ci-dessus où une courbe NURBSde longueur quatre et d’ordre trois, définie sur le vecteur noeud[ 0 0 0 0.5 1 1 1 ],a été déserrée et utilise maintenant le nouveau vecteur de noeud :[ 0 0.1333 0.3333 0.5 0.6667 0.8333 1 ].

Notes

Le desserrage n’est pas l’exacte opposé du serrage (et vice et versa). En outre, comme l’opération dedesserrage ne fonctionne que sur les courbes complètement serrés, l’outil de desserrage peut devoirbrider la courbe en premier. Voir également la documentation de la commande correspondante del’interface de script 6.2.14 unclampNC (page 383) et de l’outil de desserrage des surfaces correspon-dant 5.5.9 Outil de desserrage des surfaces (Unclamp Surface) (page 320).

Page 289: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

5. Outils de modélisation NURBS 289

5.3.13 Outil d’insertion de noeud (Insert Knot)

Figure 129: Outil d’insertion de noeud (à gauche : courbe originale, à droite : un noeud a été inséré unefois à u = 0.5)

Arguments

L’outil d’insertion de noeuds prend un certain nombre de courbes NURBS dans la sélection et de-mande deux valeurs supplémentaires, une valeur paramétrique u et une valeur entière i.

Opération

Un noeud ayant la valeur spécifiée u sera inséré i fois dans le vecteur noeud des courbes sélectionnées,sans modifier la forme des courbes. Voir également l’image ci-dessus, où un noeud a été inséré à u =0,5 une fois dans une courbe de longueur quatre et d’ordre quatre qui a été définie à l’origine sur levecteur noeud :[ 0 0 0 0 1 1 1 1 ].La courbe traitée de longueur cinq est définie sur le vecteur noeud :[ 0 0 0 0 0.5 1 1 1 1 ].

Notes

Le type de noeud des courbes sera modifié en "Custom". La sélection de points sera suppriméedes objets traités. Voir également la documentation de la commande correspondante de l’interface descript 6.2.14 insknNC (page 384) et l’outil correspondant pour les surfaces 5.5.10 Outil d’insertion denoeuds (Insert Knot Surface) (page 321).

Page 290: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

5. Outils de modélisation NURBS 290

5.3.14 Outil de suppression de noeud (Remove Knot)

Figure 130: Outil de suppression de noeud (à gauche : courbe originale, à droite : le noeud à t = 0,5 a étésupprimé une fois)

Arguments

L’outil de suppression de noeud prend un certain nombre de courbes NURBS dans la sélection etdemande trois valeurs supplémentaires, une valeur paramétrique t, une valeur entière r, et une valeurde tolérance tol.

Opération

Le noeud à la valeur paramétrique spécifiée t sera supprimé r fois du vecteur noeud des courbessélectionnées si la forme de la courbe résultante ne s’écarte pas de plus de tol de la courbe originaleen un point quelconque. Depuis Ayam 1.20, le noeud à supprimer peut également être spécifié enutilisant son indice (basé sur le zéro) dans le vecteur noeud ; par exemple en entrant "-i 3" au lieude "0.5" pour le vecteur noeud :[ 0 0 0 0.5 1 1 1 ].Si le noeud ne peut être enlevé r fois en raison de la tolérance donnée, une erreur est signalée et lacourbe originale est laissée inchangée.Cette opération échoue également, si l’élimination du noeud entraîne une courbe d’ordre inférieur.Voir également l’image ci-dessus, où le noeud t = 0,5 a été supprimé une fois sur une courbe delongueur cinq et d’ordre quatre qui a été définie à l’origine sur le vecteur du noeud :[ 0 0 0 0 0.5 1 1 1 1 ].La courbe traitée de longueur quatre est définie sur le vecteur noeud :[ 0 0 0 0 1 1 1 1 ].

Notes

Si tol est "0.0" l’outil de suppression des noeuds essaie de travailler sans modifier la forme de lacourbe, c’est-à-dire que seuls les noeuds superflus seront supprimés. Si tol est "Inf" (infini), lenoeud spécifié sera supprimé indépendamment des modifications potentielles de la courbe. La sélec-tion de points sera supprimée des objets traités. Voir également la documentation de la commandecorrespondante de l’interface de script 6.2.14 remknNC (page 384) et de l’outil de surface correspon-dant 5.5.11 Outil de suppression de noeuds (Remove Knot Surface) (page 322).

Page 291: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

5. Outils de modélisation NURBS 291

5.3.15 Outil de suppression des noeuds superflus

Figure 131: Outil de suppression des noeuds superflus (à gauche : courbe d’origine, à droite : les noeudssuperflus ont été supprimés)

Arguments

L’outil de suppression des noeuds superflus prend un certain nombre de courbes NURBS dans lasélection et demande une valeur de tolérance tol.

Opération

Tous les noeuds qui ne contribuent pas à la forme de la courbe seront supprimés du vecteur noeudsdes courbes sélectionnées si la forme de la courbe résultante ne s’écarte pas de plus de tol de la courbeoriginale en un point quelconque.

Il n’y a pas d’erreur si aucun noeud ne peut être enlevé.

Voir également l’exemple d’image ci-dessus où une courbe créée par l’algorithme de concaténationavec le type de noeud "Custom" et donc des noeuds superflus a été nettoyée par l’outil de suppres-sion des noeuds superflus. La courbe originale d’ordre trois avec 28 points de contrôle est définie surle vecteur de noeuds :[ 0 0 0 1 1 1 1.5 2 2 2 3 3 3 3.5 4 4 4 5 5 5 5.5 6 6 6 7 7 7 7.5 8 8 8 ].La courbe traitée comporte 21 points de contrôle et est définie sur le vecteur noeud :[ 0 0 0 1 1 1.5 2 2 3 3 3.5 4 4 5 5 5.5 6 6 7 7 7.5 8 8 8 ].

Notes

La sélection de points sera retirée des objets traités. Voir également la documentation de la com-mande correspondante de l’interface de script6.2.14 remsuknNC (page 384) et les outils de surfacecorrespondants 5.5.12 Outil de suppression des noeuds superflus (Remove Superfluous Knots) (page323).

Page 292: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

5. Outils de modélisation NURBS 292

5.3.16 Outil de lissage (Fair)

a

b

c d

Table 92: outil "Fair" (a : original, b : traité, c : courbure de a, d : courbure de b)

Arguments

L’outil de lissage prend un certain nombre de courbes NURBS de la sélection et demande une valeurde tolérance tol.

Opération

Les points de contrôle des courbes seront modifiés de manière à ce que la forme de la courbe soitun peu plus lisse. Le mouvement d’un seul point de contrôle est limité par la valeur de tolérancespécifiée. Il est également possible d’appliquer l’outil plusieurs fois jusqu’à ce que la forme de lacourbe réponde aux exigences.1

S’il y a des points sélectionnés, seuls ceux-ci seront modifiés.

Voyez également les images ci-dessus où un pli sur le bord d’attaque d’un profil d’aile (a) a étésupprimé en appliquant deux fois l’outil de lissage avec une valeur de tolérance de 0,1, ce qui donnela courbe inférieure (b). Comparez également les tracés de courbure des deux courbes (c et d).

1 Depuis 1.28.

Page 293: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

5. Outils de modélisation NURBS 293

Notes

L’algorithme de lissage utilise les quatre points de contrôle voisins directs et indirects de chaque pointà traiter. Cela pose un problème pour les points d’extrémité d’une courbe ouverte. Par conséquent, levecteur de contrôle des courbes ouvertes sera étendu, de sorte que chaque point de la courbe originaleait quatre voisins. Cependant, la qualité du lissage pour le premier, le deuxième, l’avant-dernier et ledernier point de contrôle d’une courbe ouverte sera un peu plus faible. L’algorithme original ne donnedes résultats optimaux que pour les courbes cubiques (d’ordre quatre), l’utilisation de courbes d’autresdegrés fonctionnera également mais donnera des résultats moins bons. Du fait que l’algorithme utilisedes points déjà lissés comme points d’entrée pour d’autres points à caréner, il n’est pas invariant endirection s’il est utilisé sur tous ou plusieurs points voisins. De plus, les points de contrôle déjàplacés sur des positions très bonnes, voire optimales, peuvent être déplacés vers des positions moinsfavorables. D’autres problèmes se posent pour les points de contrôle multiples, utilisés pour modéliserdes angles vifs. En cas de doute, il suffit de sélectionner un seul point de contrôle pour être juste. Voirégalement la documentation de la commande correspondante de l’interface de script 6.2.14 fairNC(page 389).

Page 294: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

5. Outils de modélisation NURBS 294

5.3.17 Outil de concaténation (Concat)

Arguments

L’outil de concaténation prend toutes les courbes NURBS et la courbe NURBS fournissant des objetsde la sélection et demande les paramètres de fermeture, de type de noeud et de création de filet.1

Opération

Les courbes sélectionnées seront concaténées et une nouvelle courbe NURBS sera créée.

|-NCurve |-NCurve

|-NCurve ==> |-NCurve

|-NCurve

Notes

L’ordre de la nouvelle courbe est repris de la première courbe. Si l’une des courbes a des poids, lacourbe résultante en aura aussi. Les courbes NURBS originales ne seront pas supprimées par cetoutil. Voir aussi la section 4.5.1 L’objet ConcatNC (Concatène les courbes NURBS) (page 158) et ladocumentation de la commande correspondante de l’interface de script 6.2.12 concatC (page 381).

1 Depuis 1.27.

Page 295: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

5. Outils de modélisation NURBS 295

5.3.18 Outil de fractionnement (Split)

Figure 132: Outil "Split" (à gauche : courbe originale, à droite : courbes de fractionnement résultantes pouru = 0.5)

Arguments

L’outil de fractionnement de courbes prend un certain nombre de courbes NURBS dans la sélectionet demande en outre une valeur paramétrique u. En outre, une option append peut être définie.

Opération

Les courbes NURBS sélectionnées seront fractionnées en deux courbes NURBS à la valeurparamétrique désignée u. Le processus de fractionnement implique l’application de l’insertion denoeuds, de sorte que toutes les nouvelles courbes obtiendront un vecteur de noeuds personnalisé. Voirégalement l’image ci-dessus, où une courbe de longueur et d’ordre quatre, définie à l’origine sur levecteur de noeud[ 0 0 0 0 1 1 1 1 ],a été fractionné à la valeur paramétrique 0, 5, ce qui a donné une nouvelle courbe de longueur etd’ordre quatre qui est définie sur le vecteur noeud[ 0.5 0.5 0.5 0.5 1 1 1 1 ].La courbe originale sera définie sur le vecteur noeud[ 0 0 0 0 0.5 0.5 0.5 0.5 ]

après cette opération.

Notes

Les objets de la courbe NURBS sélectionnés à l’origine seront modifiés. La ou les nouvelles courbesseront insérées dans le niveau juste après la ou les courbes respectives à fractionner, à moins quel’option append ne soit définie.1

|-NCurve ==> |-NCurve

|-NCurve

La sélection de points sera supprimée des courbes initiales. Voir également la documentation de lacommande correspondante de l’interface de script 6.2.14 splitNC (page 385) et l’outil correspondantpour les surfaces 5.5.13 Outil de fractionnement de la surface (Split Surface) (page 324).

1 Depuis 1.24.

Page 296: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

5. Outils de modélisation NURBS 296

5.3.19 Outil des courbes de trim (Découpe)

Figure 133: Outil de trim (à gauche : courbe originale, à droite : courbe trimmée résultante pour umin =0.1, umax = 0.5)

Arguments

L’outil de courbes trim prend toutes les courbes NURBS sélectionnées dans la sélection et demandeen outre deux valeurs paramétriques, umin et umax.

Opération

Les courbes NURBS sélectionnées seront ajustées à la plage paramétrique désignée (umin, umax).Voir également l’image ci-dessus, où une courbe de longueur et d’ordre quatre, définie à l’origine surle vecteur noeud[ 0 0 0 0 1 1 1 1 ],a été ajustée aux valeurs paramétriques 0.1 0.5, ce qui a donné une nouvelle courbe de longueur etd’ordre quatre qui est définie sur le vecteur de noeud[ 0.1 0.1 0.1 0.1 0.5 0.5 0.5 0.5 ].

Notes

Le processus de trim implique l’application d’une insertion de noeuds afin que les courbes obtiennentun vecteur de noeuds personnalisé. La sélection de points sera retirée des objets originaux. Voirégalement la documentation de la commande correspondante de l’interface de script 6.2.14 trimNC(page 386).

Page 297: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

5. Outils de modélisation NURBS 297

5.3.20 Outil de tracé de courbure (Plot Curvature)

Figure 134: Tracé des courbures (en haut) de la courbe NURBS simple (en bas)

Arguments

L’outil de tracé de courbure prend un certain nombre de courbes NURBS dans la sélection et demandetrois valeurs supplémentaires : le nombre de points de données, la valeur de la largeur et la valeur dela hauteur.

Opération

Une nouvelle courbe NURBS, décrivant la courbure de la courbe NURBS sélectionnée, sera crééepour chacune des courbes NURBS sélectionnées. Les tracés de la courbure auront une longueurdéfinie par le nombre de points de données et seront mis à l’échelle en fonction de la largeur et de lahauteur spécifiées. Voir également l’image ci-dessus.

Page 298: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

5. Outils de modélisation NURBS 298

5.3.21 Outil d’interpolation (Interpolate)

Figure 135: Outil d’interpolation de courbes (gauche-blanc : courbe originale, gauche-bleu et droite :courbe d’interpolation)

Arguments

L’outil d’interpolation prend un certain nombre de courbes NURBS de la sélection et demande cinqparamètres supplémentaires.

Opération

Les courbes seront modifiées de manière à interpoler tous les points de contrôle d’origine avec l’ordred’interpolation, le type de paramétrage et les dérivées finales souhaités. Pour une description détailléedes paramètres, voir la section 4.4.2 Propriété ICurveAttr (page 153).

Voir aussi l’image ci-dessus.

Notes

Les informations relatives au poids des courbes initiales seront éventuellement ignorées. La sélectionde points sera supprimée des objets originaux. Voir également la documentation de la commandecorrespondante de l’interface de script 6.2.15 interpNC (page 396) et l’outil correspondant pour lessurfaces 5.5.14 Outil d’interpolation de surface (Interpolate Surface) (page 325).

Page 299: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

5. Outils de modélisation NURBS 299

5.3.22 Outil d’approximation (Approximate)

Figure 136: Outil de courbe approximative (à gauche : courbe originale, au milieu et à droite : courbeapproximative)

Arguments

L’outil d’approximation prend un certain nombre de courbes NURBS de la sélection et demande cinqparamètres supplémentaires.

Opération

Les courbes seront modifiées de manière à ce qu’elles se rapprochent de leur(s) forme(s) originale(s)respective(s) en utilisant une nouvelle courbe NURBS avec un nombre réglable de nouveaux pointsde contrôle et d’ordre. Pour une description détaillée des paramètres, voir la section 4.4.3 PropriétéACurveAttr (page 154).

Voir également l’image ci-dessus où une courbe avec sept points de contrôle d’origine d’ordre quatrea été approchée par une courbe avec seulement trois points de contrôle et d’ordre trois (au milieu) etpar une courbe avec sept points de contrôle et d’ordre trois (à gauche).

Notes

La sélection de points sera retirée des objets originaux. Voir également la documentation de la com-mande correspondante de l’interface de script 6.2.14 approxNC (page 389).

Page 300: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

5. Outils de modélisation NURBS 300

5.3.23 Outil de décalage de courbe fermée

Figure 137: Outil de décalage de la courbe fermée (à gauche : courbe fermée B-Spline, à droite : courbedécalée)

Arguments

L’outil de décalage de courbe fermée prend un certain nombre de courbes fermées (les objets"NCurve", "ICurve" et "ACurve" sont pris en charge), à partir de la sélection et demande un paramètreentier supplémentaire i.

Opération

Les points de contrôle de la (des) courbe(s) seront décalés i fois.Le paramètre i peut être négatif pour inverser le sens du décalage.Pour une courbe fermée simple, en se décalant avec i = 1, le premier point de contrôle obtiendrales coordonnées de l’ancien dernier point de contrôle. Cela signifie que des décalages positifs seproduisent dans la direction de la courbe. Notez que pour les courbes NURBS fermées et périodiques,les points multiples seront gérés correctement.

Notes

Les points éventuellement sélectionnés le seront encore après cette opération. Voir aussi l’image ci-dessus. Voir aussi la documentation de la commande correspondante de l’interface de script 6.2.12shiftC (page 381).

Page 301: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

5. Outils de modélisation NURBS 301

5.3.24 Outil de retournement vers XY (To XY)

Figure 138: Outil "To XY" (à gauche : courbe originale, à droite : courbe modifiée)

Arguments

L’outil "To XY" prend un certain nombre d’objets NCurve, ACurve ou ICurve dans la sélection. Lescourbes doivent être planes. Les courbes qui forment une seule ligne droite ne sont pas prises encharge.

Opération

Les points de contrôle des courbes seront tournés, de sorte qu’ils se trouvent dans le plan XY del’espace objet respectif défini par les objets de la courbe. En outre, les attributs de rotation des objetsde la courbe seront modifiés de manière à ce que la courbe ne change pas d’orientation par rapportaux autres objets ou à l’espace mondial. Les attributs d’échelle seront remis à 1.0.

Voir aussi l’image ci-dessus, où la courbe de gauche, plane mais non définie dans le plan XY, seramodifiée, afin qu’elle soit définie dans le plan XY (attention aux deux différents systèmes de coor-données de l’objet en conjonction avec le système de coordonnées du monde au milieu).

Notes

Une opération inverse, en dehors de l’annulation, consisterait à appliquer les attributs de transforma-tion actuels aux points de contrôle des courbes. Voir également la documentation de la commandecorrespondante de l’interface de script 6.2.12 toXYC (page 381).

Page 302: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

5. Outils de modélisation NURBS 302

5.3.25 Outil pour rendre compatible (Make Compatible)

Figure 139: Outil "Make Compatible" (à gauche : Courbes originales, à droite : Courbes compatibles)

Arguments

L’outil make compatible prend un certain nombre de courbes NURBS de la sélection et demande unniveau.

Opération

Les courbes seront rendues compatibles, de sorte que, en fonction du paramètre de niveau donné, ellessoient de la même longueur, du même ordre et définies sur le même vecteur de noeud.Cela facilite l’application de l’outil de construction à partir de courbes (see section 5.6.4 Outil deconstruction à partir de courbes (Build from Curves) (page 330)) ou l’application du skinning (seesection 4.7.7 Les revêtements (Skin) (page 196)).

Notes

Cet outil ne modifie pas la géométrie des courbes. Cependant, comme le serrage, l’élévation en degréset l’insertion de noeuds peuvent être utilisés sur les courbes, leur ordre, les vecteurs de noeuds et lespoints de contrôle peuvent être adaptés.

Les ordres de toutes les courbes seront simplement augmentés jusqu’à l’ordre maximum de toutes lescourbes ; aucune tentative n’est faite pour vérifier si l’abaissement des ordres conduirait à un résultatplus simple.

La sélection de points sera retirée des objets originaux.

Voir également la documentation de la commande correspondante de l’interface de script 6.2.14 make-CompNC (page 387) et l’outil connexe pour les surfaces 5.5.15 Outil pour rendre les surfaces com-patibles (Make Surfaces Compatible) (page 326).

Page 303: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

5. Outils de modélisation NURBS 303

5.3.26 Outil de répartition des noeuds sur une plage (Rescale Knots to Range)

Arguments

L’outil de répartition des noeuds sur une plage prend un certain nombre de courbes NURBS dans lasélection et demande une gamme (deux valeurs flottantes).

Opération

Les vecteurs de noeuds des courbes seront mis à l’échelle, de sorte que leurs première et dernièrevaleurs correspondent à la plage donnée.

Notes

Depuis Ayam 1.20, le type de noeud de la courbe ne doit plus être "Custom". De plus, le faitde répartir les noeuds ne change pas le type de noeud. Cet outil ne modifie pas la géométrie descourbes. Voir également la documentation de la commande correspondante de l’interface de script6.2.14 rescaleknNC (page 385) et l’outil correspondant pour les surfaces 5.5.16 Outil de redimension-nent des noeuds en fonction de la plage (Rescale Knots to Range) (page 327).

5.3.27 Outil de répartition des noeuds à une distance minimale (Rescale Knots to Mindist)

Arguments

L’outil de répartition des noeuds à distance minimale prend un certain nombre de courbes NURBSdans la sélection et demande une valeur de distance minimale.

Opération

Les vecteurs de noeuds des courbes seront mis à l’échelle, de sorte qu’aucun noeud n’ait une distanceinférieure à la distance minimale donnée (sauf pour les noeuds multiples).

Notes

Depuis Ayam 1.20, le type de noeud de la courbe ne doit plus être "Custom". De plus, le fait deredimensionner les noeuds ne change pas le type de noeud. Cet outil ne modifie pas la géométrie descourbes. Voir également la documentation de la commande correspondante de l’interface de script6.2.14 rescaleknNC (page 385) et l’outil correspondant pour les surfaces 5.5.17 Outil Redimension-nent des noeuds à la distance minimale (Rescale Knots to Mindist) (page 327).

Page 304: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

5. Outils de modélisation NURBS 304

5.3.28 Outil de regroupement de points (Collapse Points)

Arguments

L’outil de regroupement attend un certain nombre d’objets sélectionnés avec des points de contrôlesélectionnés (balises) (voir la section3.4 Sélection/traçage de points (page 78) pour savoir commentsélectionner les points de contrôle (balises)).

Opération

Les points de contrôle sélectionnés seront transformés en un seul point multiple, tous les pointsrecevront les valeurs des coordonnées du point central respectif. Cela signifie que la forme de lacourbe/surface traitée peut changer.

Notes

Cette commande est utilisé uniquement à créer des points multiples pour les objets de courbe/surfaceNURBS et à effacer la sélection des points.

Dans les fenêtres de visualisation, cet outil est lié à la clé <q>.

5.3.29 Outil d’éclatement de point multiple (Explode Points)

Arguments

L’outil d’éclatement s’attend à ce que certains objets comportent un certain nombre de points multiplessélectionnés (balises) (voir la section3.4 Sélection/traçage de points (page 78) pour savoir commentsélectionner (balises) les points de contrôle).

Opération

Les points formant les points multiples sélectionnés seront éloignés les uns des autres. Les formesdes objets traités changeront.

Notes

Cette commande est utilisée uniquement pour supprimer les points multiples des courbes/surfacesNURBS déjà existants qui ont été créés par l’option "CreateMP" ou l’outil de regroupement ci-dessus.

Dans les fenêtres de visualisation, cet outil est lié à la clé <Q>.

Page 305: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

5. Outils de modélisation NURBS 305

5.4 Outils de création de surfaces

Ces outils permettent de créer des objets de surface paramétriques.

5.4.1 Outil sphère NURBS 1 (NURBSphere)

Table 93: Sphère NURBS (g : Polygone de contrôle, d : Surface ombrée)

Arguments

Radius.

Opération

L’outil "NURBSphere" crée une courbe NURBS en demi-cercle de rayon donné et la fait tournerautour de l’axe Y, formant ainsi une sphère.

Notes

En raison de la méthode de construction, la surface des NURBS est dégénérée aux pôles, ce qui peutconduire à des artefacts d’ombrage (comparer l’image ci-dessus).

5.4.2 Outil sphère NURBS 2 (NURBSphere2)

Table 94: Sphère NURB de Cobb (à gauche : Polygone de contrôle, à droite : Surface ombrée)

Arguments

Aucun.

Page 306: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

5. Outils de modélisation NURBS 306

Opération

L’outil "NURBSphere2" crée une sphère Cobb NURB de rayon 1.0, composée de six patchs NURBSdisposés dans une configuration ressemblant à une boîte, voir aussi l’image ci-dessus.

Notes

Les patchs NURBS sont d’un niveau relativement élevé (5). Contrairement à la sphère NURBS stan-dard, la sphère de Cobb n’est pas dégénérée et aucun artefact d’ombrage n’en résulte.

5.4.3 Outil de révolution (Revolve)

Arguments

L’outil de révolution prend les objets sélectionnés dans la sélection.

Opération

L’outil crée un objet "Revolve" et y déplace les objets sélectionnés.

|-NCurve ==> +-Revolve

\-NCurve

Notes

Voir la section 4.7.1 Les surfaces de révolution (Revolve) (page 176) pour plus d’informations con-cernant l’objet revolve.

Cet outil utilise le presse-papiers des objets pour déplacer les objets de sorte que le contenu original dupresse-papiers soit perdu lorsque cet outil se termine. En maintenant la touche<Ctrl> enfoncée touten cliquant sur l’icône correspondante dans la boîte à outils, la courbe paramètre reste sélectionnée etle niveau actuel est également modifié.

5.4.4 Outil de pivotement (Swing)

Arguments

L’outil "swing" prend les objets sélectionnés dans la sélection.

Opération

L’outil crée un objet "Swing", déplace les objets sélectionnés vers celui-ci et fait tourner la premièrecourbe vers le plan YZ et la seconde courbe vers le plan XZ. Si l’objet courbe respectif est de typeNCurve, ICurve ou ACurve, les points de contrôle seront modifiés et les attributs de rotation serontréinitialisés, les objets d’autres types seront tournés par leurs attributs de transformation. 1 La rotationsera enregistrée dans le tampon d’annulation.

|-Cross_section(NCurve) +-Swing

|-Trajectory(NCurve) ==> |-Cross_section(NCurve)

\-Trajectory(NCurve)

Notes

Voir la section 4.7.3 Les surfaces par balayage (Swing) (page 181) pour plus d’informations concer-nant l’objet "Swing".

1 Depuis 1.24.

Page 307: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

5. Outils de modélisation NURBS 307

Cet outil utilise le presse-papiers des objets pour déplacer les objets de sorte que le contenu originaldu presse-papiers soit perdu lorsque cet outil se termine. En maintenant la touche <Ctrl> enfon-cée tout en cliquant sur l’icône correspondante dans la boîte à outils, les courbes paramètres restentsélectionnées et le niveau actuel est également modifié.

5.4.5 Outil d’extrusion (Extrude)

Arguments

L’outil d’extrusion prend les objets sélectionnés dans la sélection.

Opération

L’outil crée un objet "Extrude", et y déplace les objets sélectionnés.

|-Outline(NCurve) +-Extrude

|-Hole(NCurve) ==> |-Outline(NCurve)

\-Hole(NCurve)

Notes

Voir la section 4.7.2 Les surfaces par extrusions (Extrude) (page 178) pour plus d’informations con-cernant l’objet Extrude.

Cet outil utilise le presse-papiers des objets pour déplacer les objets de sorte que le contenu original dupresse-papiers soit perdu lorsque cet outil se termine. En maintenant la touche <Ctrl> enfoncée touten cliquant sur l’icône correspondante dans la boîte à outils, la courbe paramètre reste sélectionnée etle niveau actuel est également modifié.

5.4.6 Outil de balayage (Sweep)

Arguments

L’outil de balayage prend les objets sélectionnés dans la sélection.

Opération

L’outil crée un objet "Sweep", déplace les objets sélectionnés vers celui-ci et propose de faire pivoterle premier objet de la courbe vers le plan YZ (s’il n’est pas déjà défini dans ce plan). Si cet objet courbeest de type NCurve, ICurve ou ACurve, les points de contrôle seront modifiés et les attributs de rotationseront réinitialisés, les objets d’autres types seront tournés par leurs attributs de transformation. 1 Larotation sera enregistrée dans le tampon d’annulation.

|-Cross_section(NCurve) +-Sweep

|-Trajectory(NCurve) ==> |-Cross_section(NCurve)

\-Trajectory(NCurve)

Notes

Voir la section4.7.4 Les surfaces par glissements (Sweep) (page 184) pour plus d’informations con-cernant l’objet "Sweep".

Cet outil utilise le presse-papiers des objets pour déplacer les objets de sorte que le contenu original dupresse-papiers soit perdu lorsque cet outil se termine. En maintenant la touche <Ctrl> enfoncée tout

1 Depuis 1.24.

Page 308: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

5. Outils de modélisation NURBS 308

en cliquant sur l’icône correspondante dans la boîte à outils, la courbe paramètre reste sélectionnée etle niveau actuel est également modifié.

5.4.7 Outil de biseau (Bevel)

Arguments

L’outil de biseau prend les objets sélectionnés dans la sélection.

Opération

L’outil crée un objet "Bevel", et y déplace les objets sélectionnés.

|-NCurve +-Bevel

==> \-NCurve

Notes

Voir la section 4.7.9 Les biseaux (Bevel) (page 203) pour plus d’informations concernant l’objet"Bevel".

Cet outil utilise le presse-papiers des objets pour déplacer les objets de sorte que le contenu original dupresse-papiers soit perdu lorsque cet outil se termine. En maintenant la touche <Ctrl> enfoncée touten cliquant sur l’icône correspondante dans la boîte à outils, la courbe paramètre reste sélectionnée etle niveau actuel est également modifié.

5.4.8 Outil de bouchonnage (Cap)

Arguments

L’outil "Cap" prend les objets sélectionnés dans la sélection.

Opération

L’outil crée un objet "Cap", et déplace les objets sélectionnés vers celui

|-Outline(NCurve) +-Cap

|-Hole(NCurve) ==> |-Outline(NCurve)

\-Hole(NCurve)

Notes

Voir la section 4.7.10 Les bouchons (Cap) (page 207) pour plus d’informations concernant l’objet"Cap".

Cet outil utilise le presse-papiers des objets pour déplacer les objets de sorte que le contenu original dupresse-papiers soit perdu lorsque cet outil se termine. En maintenant la touche <Ctrl> enfoncée touten cliquant sur l’icône correspondante dans la boîte à outils, la courbe paramètre reste sélectionnée etle niveau actuel est également modifié.

5.4.9 Outil de rail double 1 (Birail1)

Arguments

L’outil "Birail1" prend les objets sélectionnés dans la sélection.

Page 309: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

5. Outils de modélisation NURBS 309

Opération

L’outil crée un objet "Birail1" et y déplace les objets sélectionnés.

|-Cross_section(NCurve) +-Birail1

|-Rail1(NCurve) ==> |-Cross_section(NCurve)

|-Rail2(NCurve) |-Rail1(NCurve)

\-Rail2(NCurve)

Notes

Voir la section 4.7.5 L’objet Birail1 (page 189) pour plus d’informations concernant l’objet Birail1.

Cet outil utilise le presse-papiers des objets pour déplacer les objets de sorte que le contenu original dupresse-papiers soit perdu lorsque cet outil se termine. En maintenant la touche <Ctrl> enfoncée touten cliquant sur l’icône correspondante dans la boîte à outils, la courbe paramètre reste sélectionnée etle niveau actuel est également modifié.

5.4.10 Outil de rail double 2 (Birail2)

Arguments

L’outil "Birail2" prend les objets sélectionnés dans la sélection.

Opération

L’outil crée un objet "Birail2" et y déplace les objets sélectionnés.

|-Cross_section1(NCurve) +-Birail2

|-Rail1(NCurve) |-Cross_section1(NCurve)

|-Rail2(NCurve) ==> |-Rail1(NCurve)

|-Cross_section2(NCurve) |-Rail2(NCurve)

\-Cross_section2(NCurve

Notes

Voir la section 4.7.6 L’objet Birail2 (page 192) pour plus d’informations concernant l’objet Birail2.

Cet outil utilise le presse-papiers des objets pour déplacer les objets de sorte que le contenu original dupresse-papiers soit perdu lorsque cet outil se termine. En maintenant la touche <Ctrl> enfoncée touten cliquant sur l’icône correspondante dans la boîte à outils, la courbe paramètre reste sélectionnée etle niveau actuel est également modifié.

5.4.11 Outil de Gordon

Arguments

L’outil "Gordon" prend les objets sélectionnés dans la sélection.

Opération

L’outil crée un objet "Gordon" et y déplace les objets sélectionnés.

|-NCurve +-Gordon

|-NCurve |-NCurve

|-Level |-NCurve

Page 310: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

5. Outils de modélisation NURBS 310

|-NCurve ==> |-Level

|-NCurve |-NCurve

\-NCurve

Notes

Voir la section 4.7.8 Surface de Gordon (page 199) pour plus d’informations concernant l’objet "Gor-don".

Cet outil utilise le presse-papiers des objets pour déplacer les objets de sorte que le contenu original dupresse-papiers soit perdu lorsque cet outil se termine. En maintenant la touche <Ctrl> enfoncée touten cliquant sur l’icône correspondante dans la boîte à outils, la courbe paramètre reste sélectionnée etle niveau actuel est également modifié.

5.4.12 Outil de revêtement (Skin)

Arguments

L’outil de revêtement prend les objets sélectionnés dans la sélection.

Opération

L’outil crée un objet "Skin", et y déplace les objets sélectionnés.

|-NCurve +-Skin

|-NCurve ==> |-NCurve

|-NCurve |-NCurve

\-NCurve

Notes

Voir la section 4.7.7 Les revêtements (Skin) (page 196) pour plus d’informations concernant l’objet"Skin".

Cet outil utilise le presse-papiers des objets pour déplacer les objets de sorte que le contenu original dupresse-papiers soit perdu lorsque cet outil se termine. En maintenant la touche <Ctrl> enfoncée touten cliquant sur l’icône correspondante dans la boîte à outils, la courbe paramètre reste sélectionnée etle niveau actuel est également modifié.

5.4.13 Outil de Trim (Découpe)

Arguments

L’outil de trim prend les objets sélectionnés dans la sélection.

Opération

L’outil crée un objet "Trim", et y déplace les objets sélectionnés.

|-NPatch +-Trim

|-NCurve ==> |-NPatch

|-NCurve |-NCurve

\-NCurve

Page 311: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

5. Outils de modélisation NURBS 311

Notes

Voir la section 4.7.15 Les découpes ou ajustements (Trim) (page 219) pour plus d’informations con-cernant l’objet Trim.

Cet outil utilise le presse-papiers des objets pour déplacer les objets de sorte que le contenu original dupresse-papiers soit perdu lorsque cet outil se termine. En maintenant la touche <Ctrl> enfoncée touten cliquant sur l’icône correspondante dans la boîte à outils, la courbe paramètre reste sélectionnée etle niveau actuel est également modifié.

5.4.14 Outil d’interpolation de surfaces (Tween Surfaces)

Figure 140: Surface interpolée (blanc) à partir de deux Surfaces Paramétriques (bleu) avec r = 0.5

Arguments

L’outil "Tween" prend deux patchs NURBS de la sélection et demande un paramètre r.

Opération

Les patchs NURBS sélectionnés seront interpolés (tweened) et un nouveau patch intégrant les car-actéristiques des deux patchs originaux sera créé. Le paramètre r définit le rapport d’influence dupremier et du second patch (ce dernier utilise un rapport de 1 - r).

|-NPatch |-NPatch

|-NPatch ==> |-NPatch

|-NPatch

Si une troisième surface est sélectionnée, le paramètre r est ignoré et cette troisième surface définit lerapport d’influence avec ses coordonnées y.1

Notes

Les deux patchs doivent être de la même largeur, hauteur, uordre et vordre. Elles ne doivent cepen-dant pas être définies sur les mêmes vecteurs de noeuds. La surface de contrôle d’interpolationn’a pas besoin d’être compatible avec l’un des patchs d’origine. Si l’un des types de vecteurs denoeuds des patchs est "Custom" ou si les types de vecteurs de noeuds respectifs sont différents, letype de vecteur de noeud résultant sera "Custom" et les valeurs de noeuds seront également inter-polées/intercalées. Sinon, un vecteur de noeud correspondant sera généré en fonction du type. Les

1 Depuis 1.25.

Page 312: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

5. Outils de modélisation NURBS 312

patchs NURBS originaux ne seront pas supprimés par cet outil. Les courbes trim sont complètementignorées par cet outil. Voir également la documentation de la commande correspondante de l’interfacede script 6.2.15 tweenNP (page 395) et de l’outil de courbes correspondant 5.2.5 Outil courbes inter-polées (Tween Curve) (page 276).

Page 313: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

5. Outils de modélisation NURBS 313

5.5 Outils de modification des surfaces

Ces outils modifient les objets de surface paramétriques.

Sauf indication contraire, les balises PV ne sont pas prises en charge/modifiées par ces outils.

5.5.1 Outil de reversement sur U (Revert U)

Arguments

L’outil de reversement sur U prend un certain nombre de patchs NURBS, "IPatch", "BPatch" ou desobjets "PatchMesh" de la sélection.

Opération

Les tableaux de points de contrôle des objets sélectionnés seront inversés dans la dimension U(largeur). Pour les patchs NURBS, cet outil inverse également les distances relatives des noeudsdu vecteur noeud correspondant afin que la surface ne change pas de forme. Cependant, les courbestrim ne seront pas modifiées.Pour les objets "IPatch", les dérivés respectifs sont inversés.

Notes

Les balises PV ne seront pas modifiées. Voir aussi la documentation de la commande correspondantede l’interface de script 6.2.13 revertuS (page 382) et l’outil de courbes correspondant 5.3.1 Outil derenversement (Revert) (page 277).

5.5.2 Outil de reversement sur V (Revert V)

Arguments

L’outil de reversement sur V prend un certain nombre de patchs NURBS, "IPatch", "BPatch" ou desobjets "PatchMesh" de la sélection.

Opération

Les tableaux de points de contrôle des objets sélectionnés seront inversés dans la dimension V (hau-teur). Pour les patchs NURBS, cet outil inverse également les distances relatives des noeuds duvecteur noeud correspondant afin que la surface ne change pas de forme. Cependant, les courbes trimne seront pas modifiées.Pour les objets "IPatch", les dérivés respectifs sont inversés.

Notes

Les balises PV ne seront pas modifiées. Voir aussi la documentation de la commande correspondantede l’interface de script 6.2.13 revertvS (page 382) et l’outil de courbes correspondant 5.3.1 Outil derenversement (Revert) (page 277).

Page 314: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

5. Outils de modélisation NURBS 314

5.5.3 Outil de renversement UV (Swap UV)

Arguments

L’outil de swap uv prend un certain nombre de patchs NURBS, "IPatch", "BPatch", ou des objets"PatchMesh" de la sélection.

Opération

Les dimensions U et V des objets sélectionnés seront échangées (la largeur, la hauteur et tous lesautres paramètres liés aux dimensions seront échangés) sans modifier la forme des patchs.

Notes

La sélection de points sera retirée des objets originaux. Les balises PV ne seront pas modifiées.Les courbes trim ne seront pas non plus modifiées. Voir aussi la documentation de la commandecorrespondante de l’interface de script 6.2.13 swapuvS (page 382).

Page 315: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

5. Outils de modélisation NURBS 315

5.5.4 Outil de raffinage des noeuds de surface (Refine Knots Surface)

Figure 141: Application successive de l’outil de raffinage des noeuds de surface (U)

Arguments

L’outil de raffinage des noeuds de surface prend un certain nombre de patchs NURBS dans la sélec-tion.

Opération

Les vecteurs de noeuds respectifs des patchs NURBS sélectionnés seront affinés en insérant un noeudau milieu de chaque intervalle de noeud intérieur sans modifier la forme des patchs. De nouveauxpoints de contrôle seront ajoutés et la position des anciens points de contrôle pourra être modifiée aufur et à mesure. Voir aussi l’image ci-dessus où une surface définie sur le vecteur noeud[ 0 0 0 0 1 1 1 1 ]

est successivement affiné jusqu’au vecteur noeud[ 0 0 0 0 0.5 1 1 1 1 ]

et donc[ 0 0 0 0 0.25 0.5 0.75 1 1 1 1 ].

Notes

Comme les nouveaux noeuds ne sont insérés que dans les intervalles intérieurs, l’état de serrage desvecteurs de noeuds ne change pas. En outre, les vecteurs de noeuds de type "NURB" ne changent pasde type, les autres vecteurs de noeuds sont changés en type "Custom". La sélection de points serasupprimée des objets originaux. Il existe également des outils permettant d’affiner uniquement lesnoeuds U ou V. Voir également la documentation des commandes correspondantes de l’interface descript 6.2.15 refineuNP (page 393) et 6.2.15 refinevNP (page 393) et l’outil de courbes correspondant5.3.5 Outil d’affinage des noeuds (Refine Knots) (page 281).

Page 316: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

5. Outils de modélisation NURBS 316

5.5.5 Outil de raffinage des noeuds avec la surface(Refine Knots With Surface)

Figure 142: Outil "Raffiner les noeuds avec la surface (U)" (????) (gauche: surface d’origine, droite:surface raffinée)

Arguments

L’outil de raffinement des noeuds avec surface prend un certain nombre de patchs NURBS de lasélection et demande un vecteur de nouvelles valeurs de noeuds.

Opération

Les vecteurs de noeuds respectifs des patchs NURBS sélectionnés seront affinés en insérant tous lesnoeuds du vecteur spécifié à la fois. La forme du patch ne sera pas modifiée. De nouveaux points decontrôle seront ajoutés et la position des anciens points de contrôle pourra être modifiée en cours deroute.Voir aussi l’exemple d’image ci-dessus où une surface définie sur le vecteur noeud[ 0 0 0 0 0.5 1 1 1 1 ]

a été affiné avec les nouveaux noeuds 0.2 et 0.7 dans la direction U vers le nouveau vecteur de noeud:[ 0 0 0 0 0.2 0.5 0.7 1 1 1 1 ]. Le vecteur de noeud résultant doit être valide, sinon une erreur serasignalée et le patch respectif ne sera pas modifié.

Notes

Le type de noeud respectif du patch peut être modifié en "Custom". La sélection de points serasupprimée des objets originaux. Il existe également des outils permettant d’affiner uniquement lesnoeuds en U ou en V. Voir aussi la documentation des commandes correspondantes de l’interface descript 6.2.15 refineuNP (page 393) et 6.2.15 refinevNP (page 393) et l’outil correspondant pour lescourbes 5.3.6 Outil d’affinage des noeuds avec un outil (Refine Knots With Tool) (page 282).

Page 317: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

5. Outils de modélisation NURBS 317

5.5.6 Outil d’augmentation de l’ordre de la surface (Elevate Surface)

Figure 143: Outil d’élévation de surface (à gauche : surface d’origine, à droite : surface élevée)

Arguments

L’outil d’élévation de la surface prend un certain nombre de patchs NURBS de la sélection et demandeen plus deux valeurs entières.

Opération

L’ordre des patchs NURBS sélectionnés sera augmenté des valeurs entières spécifiées sans modifierla forme des patchs. De nouveaux points de contrôle seront ajoutés et la position des anciens pointsde contrôle pourra être modifiée en cours de route. Voir également l’image ci-dessus, où une surfaced’ordre quatre et de largeur cinq, définie à l’origine sur le vecteur de noeud sur U :[ 0 0 0 0 0.5 1 1 1 1 ]

a été élevé à l’ordre cinq dans la direction U et est maintenant de largeur sept et défini sur le vecteurnoeud U :[ 0 0 0 0 0 0.5 0.5 1 1 1 1 1 ].

Notes

Si le vecteur de noeud du patch n’est pas serré, il sera serré automatiquement. Le type de noeud dupatch sera modifié en "Custom". La sélection de points sera supprimée des objets originaux. Il existeégalement des outils qui permettent d’élever une pièce dans la direction U ou V uniquement. Voiraussi la documentation des commandes correspondantes de l’interface de script 6.2.15 elevateuNP(page 393) et 6.2.15 elevatevNP (page 394) ainsi que l’outil correspondant pour les courbes 5.3.8Outil d’élévation (Elevate) (page 284).

Page 318: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

5. Outils de modélisation NURBS 318

5.5.7 Outil de réduction de l’ordre des surfaces (Reduce Surface)

Figure 144: Outil de réduction (Ordre 4 (gauche), 3 (droite))

Arguments

Les outils de réduction de surface prennent un certain nombre de surfaces NURBS dans la sélectionet demandent en outre une valeur de tolérance.

Opération

L’ordre des surfaces NURBS sélectionnées sera diminué de un si la forme des surfaces réduitesne s’écarte pas des surfaces originales de la tolérance donnée en un point quelconque. Voir aussil’exemple d’image ci-dessus où une surface d’ordre quatre et de hauteur quatre, définie sur le vecteurnoeud v[ 0 0 0 0 1 1 1 1 ],a été réduit dans la direction V à l’ordre trois et est maintenant de hauteur trois et défini sur le vecteurnoeud V[ 0 0 0 1 1 1 ].

Notes

Si le vecteur noeud respectif de la surface n’est pas serré, il le sera automatiquement. Le type de noeudrespectif de la surface sera modifié en "Custom". Les points de contrôle seront supprimés et la po-sition des anciens points de contrôle pourra être modifiée en cours de route. La sélection des pointssera supprimée des objets traités. La capacité de réduire une certaine surface peut être améliorée enaugmentant d’abord la multiplicité des noeuds internes. Voir également la documentation des com-mandes correspondantes de l’interface de script 6.2.15 reduceuNP (page 394) et 6.2.15 reducevNP(page 394) ainsi que l’outil correspondant pour les courbes 5.3.9 Outil de réduction (Reduce) (page285).

Page 319: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

5. Outils de modélisation NURBS 319

5.5.8 Outil de serrage de surface (Clamp Surface)

Figure 145: Outil de serrage de la surface (à gauche : patch original avec vecteurs de noeuds B-Spline, àdroite : patch serré)

Arguments

L’outil de serrage de surface prend un certain nombre de patchs NURBS dans la sélection.

Opération

Les vecteurs de noeuds des patchs NURBS sélectionnés seront modifiés par insertion de noeudsde sorte que le premier et le dernier noeud (dans chaque direction) aient une multiplicité égale àl’ordre du patch (dans la direction respective). Voir également l’image ci-dessus, où une surfacede largeur/hauteur quatre et les deux ordres également quatre, définis à l’origine sur les vecteurs denoeuds :[ 0 0.1428 0.2857 0.4285 0.5714 0.7142 0.8571 1.0 ]

a été serrée et est maintenant définie sur les vecteurs de noeuds :[ 0.4285 0.4285 0.4285 0.4285 0.5714 0.5714 0.5714 0.5714 ].

Notes

La forme des patchs ne changera pas, mais la position de certains points de contrôle le sera. Lespatchs interpolent ensuite le premier et le dernier point de contrôle dans la direction respective (saufsi le poids de ces points n’est pas de 1.0). Les types de noeuds des patchs seront changés en type"Custom". Il existe également des outils qui permettent de brider un patch seulement dans la di-rection U ou V. Voir également la documentation des commandes correspondantes de l’interface descript 6.2.15 clampuNP (page 390) et 6.2.15 clampvNP (page 390) et l’outil correspondant pour lescourbes 5.3.11 Outil de resserrage (Clamp) (page 287).

Page 320: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

5. Outils de modélisation NURBS 320

5.5.9 Outil de desserrage des surfaces (Unclamp Surface)

Figure 146: Outil de desserrage des surfaces (à gauche : patch original, à droite : patch déserré)

Arguments

Outil de desserrage des surfaces prend un certain nombre de patchs NURBS dans la sélection.

Opération

Les vecteurs de noeuds des patchs NURBS sélectionnés seront modifiés de manière à ce qu’il n’yait pas de noeuds multiples aux extrémités respectives des vecteurs de noeuds. La forme des patchsne changera pas, mais la position de certains points de contrôle le sera. Les types de noeuds despatchs peuvent être changés en type "Custom". Voir également l’image ci-dessus, où une surfacede largeur/hauteur quatre et les deux ordres trois, définis à l’origine sur les vecteurs de noeuds :[ 0 0 0 0.5 1 1 1 ]

a été déserrée et est maintenant défini sur les vecteurs de noeuds :[ 0 0.1666 0.3333 0.5 0.6666 0.8333 1 ].

Notes

Le desserrage n’est pas exactement l’opération inverse du serrage (et vice et versa). En outre, commel’opération de desserrage ne fonctionne que sur des surfaces complètement serrées, l’outil de desser-rage peut devoir serrer la surface en premier. Il existe également des outils permettant de desserrerun patch dans le sens U ou V uniquement. Voir également la documentation des commandes corre-spondantes de l’interface de script 6.2.15 unclampuNP (page 390) et 6.2.15 unclampvNP (page 391)et l’outil correspondant pour les courbes 5.3.12 Outil de desserrage (Unclamp) (page 288).

Page 321: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

5. Outils de modélisation NURBS 321

5.5.10 Outil d’insertion de noeuds (Insert Knot Surface)

Figure 147: Outil d’insertion de noeuds (à gauche : patch original, à droite : un noeud a été inséré une foisà t = 0.5)

Arguments

L’outil d’insertion de noeuds prend un certain nombre de patchs NURBS dans la sélection et demandedeux valeurs supplémentaires, une valeur paramétrique t et une valeur entière i.

Opération

Un noeud ayant la valeur spécifiée t sera inséré i fois dans le vecteur noeud des patchs sélectionnés,sans en modifier la forme. Voir également l’image ci-dessus, où un noeud a été inséré à u = 0.5 unefois dans une surface de largeur quatre et d’ordre quatre qui a été définie à l’origine sur le vecteur denoeud U :[ 0 0 0 0 1 1 1 1 ].La surface transformée de largeur cinq est définie sur le vecteur noeud u :[ 0 0 0 0 0.5 1 1 1 1 ].

Notes

Le type de noeud du patch sera changé en "Custom". Cet outil ne modifie pas la géométrie despatchs. La sélection de points sera supprimée des objets originaux. Voir également la documentationdes commandes correspondantes de l’interface de script 6.2.15 insknuNP (page 391) and 6.2.15 in-sknvNP (page 392) et l’outil correspondant pour les courbes 5.3.13 Outil d’insertion de noeud (InsertKnot) (page 289).

Page 322: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

5. Outils de modélisation NURBS 322

5.5.11 Outil de suppression de noeuds (Remove Knot Surface)

Figure 148: Outil de suppression de noeuds (à gauche : surface d’origine, à droite : le noeud à t = 0.5 a étéenlevé une fois)

Arguments

L’outil de suppression de noeuds prend un certain nombre de surfaces NURBS dans la sélection etdemande trois valeurs supplémentaires, une valeur paramétrique t, une valeur entière r, et une valeurde tolérance tol.

Opération

Le noeud à la valeur paramétrique spécifiée t sera supprimé r fois du vecteur noeud des surfacessélectionnées si la forme des surfaces résultantes ne s’écarte pas de plus de tol des surfaces d’origineen un point quelconque. Depuis Ayam 1.20, le noeud à supprimer peut également être spécifié enutilisant son indice (basé sur le zéro) dans le vecteur noeud ; par exemple en entrant "-i 3" au lieude "0.5" pour le vecteur noeud :[ 0 0 0 0.5 1 1 1 ].Si le noeud ne peut être enlevé r fois en raison de la tolérance donnée, une erreur est signalée et lasurface d’origine est laissée inchangée.Cette opération échoue également, si l’élimination du noeud conduisait à une surface d’ordre moindre.Voir également l’image ci-dessus, où le noeud t = 0.5 a été supprimé une fois sur une surface de largeurcinq et d’ordre quatre qui a été définie à l’origine sur le vecteur noeud u :[ 0 0 0 0 0.5 1 1 1 1 ].La surface traitée de largeur quatre est définie sur le vecteur noeud :[ 0 0 0 0 1 1 1 1 ].

Notes

Si tol est "0.0" l’outil de suppression des noeuds essaie de travailler sans modifier la forme de lasurface, c’est-à-dire que seuls les noeuds superflus seront supprimés. Si tol est "Inf" (infini), lenoeud spécifié sera enlevé indépendamment des changements potentiels de la surface. La sélectionde points sera supprimée des objets originaux. Voir également la documentation des commandescorrespondantes de l’interface de script 6.2.15 remknuNP (page 392), et 6.2.15 remknvNP (page 392)et l’outil correspondant pour les courbes 5.3.14 Outil de suppression de noeud (Remove Knot) (page290).

Page 323: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

5. Outils de modélisation NURBS 323

5.5.12 Outil de suppression des noeuds superflus (Remove Superfluous Knots)

Arguments

L’outil de suppression des noeuds superflus prend un certain nombre de surfaces NURBS dans lasélection et demande une valeur de tolérance tol.

Opération

Tous les noeuds qui ne contribuent pas à la forme de la surface seront éliminés du vecteur noeuds dessurfaces sélectionnées si la forme de la surface résultante ne s’écarte pas de plus de tol de la surfaced’origine en un point quelconque.

Il n’y a pas d’erreur si aucun noeud ne peut être enlevé.

Notes

La sélection de points sera retirée des objets traités. Voir également la documentation des commandesde l’interface de script correspondante 6.2.15 remsuknuNP (page 392) et 6.2.15 remsuknvNP (page393). Voir aussi l’outil correspondant pour les courbes 5.3.15 Outil de suppression des noeuds super-flus (page 291).

Page 324: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

5. Outils de modélisation NURBS 324

5.5.13 Outil de fractionnement de la surface (Split Surface)

Figure 149: Outil de fractionnement de la surface (à gauche : surface d’origine, à droite : la surface a étéfractionnée à t = 0.5)

Arguments

L’outil de fractionnement de la surface prend un certain nombre de patchs NURBS dans la sélectionet demande une valeur paramétrique t (dans la dimension paramétrique U ou V, respectivement). Enoutre, une option append peut être définie.

Opération

Les patchs seront fractionnés à la valeur paramétrique t en deux patchs (en dimension paramétriqueU ou V, respectivement) en utilisant l’insertion de noeuds.

|-NPatch ==> |-NPatch

|-NPatch

Notes

Le(s) objet(s) original(s) du patch NURBS sera (seront) modifié(s). La ou les nouvelles surfaces serontinsérées dans le niveau juste après la ou les surfaces respectives à fractionner, à moins que l’optionappend ne soit définie.1 La sélection de points sera retirée des objets originaux. Les courbes triméventuellement présentes ne seront paspas correctement respectées. Voir également la documentationdes commandes correspondantes de l’interface de script 6.2.15 splituNP (page 394), 6.2.15 splitvNP(page 395) et l’outil correspondant pour les courbes 5.3.18 Outil de fractionnement (Split) (page 295).

1 Depuis 1.24.

Page 325: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

5. Outils de modélisation NURBS 325

5.5.14 Outil d’interpolation de surface (Interpolate Surface)

Figure 150: Outil d’interpolation de surface (gauche-blanc : surface d’origine, gauche-bleu et droite :surface d’interpolation)

Arguments

L’outil d’interpolation de surface prend un certain nombre de patchs NURBS dans la sélection etdemande un paramètre supplémentaire o.

Opération

Les patchs seront modifiés de manière à interpoler tous les points de contrôle d’origine avec l’ordred’interpolation souhaité o. Voir également l’image ci-dessus.

Notes

Les informations relatives au poids des patchs originaux seront finalement ignorées. La sélectionde points sera supprimée des objets originaux. Voir également la documentation des commandescorrespondantes de l’interface de script 6.2.15 interpuNP (page 396) et 6.2.15 interpvNP (page 397),ainsi que l’outil correspondant pour les courbes 5.3.21 Outil d’interpolation (Interpolate) (page 298).

Page 326: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

5. Outils de modélisation NURBS 326

5.5.15 Outil pour rendre les surfaces compatibles (Make Surfaces Compatible)

Figure 151: Outil rendre compatible (en haut : Original, au milieu : Compatible par l’ordre, en bas : Surfacesentièrement compatibles)

Arguments

L’outil "Make Compatible" prend un certain nombre de surfaces NURBS dans la sélection et demandeun côté et un niveau.

Opération

Les surfaces seront rendues compatibles, de sorte que, sur la base des paramètres de côté et de niveaudonnés, elles soient du même ordre, largeur/hauteur, et définies sur le même vecteur de noeud.

Notes

Cet outil ne modifie pas la géométrie des surfaces. Cependant, comme le serrage, l’élévation endegrés et l’insertion de noeuds peuvent être utilisés sur les surfaces, leur ordre, les vecteurs de noeudset les points de contrôle peuvent être modifiés. Les ordres de toutes les surfaces seront simplementaugmentés jusqu’à l’ordre maximum de toutes les surfaces ; aucune tentative n’est faite pour vérifier,si l’abaissement des ordres ne conduiraient pas à un résultat plus simple. La sélection des points serasupprimée des objets originaux. Voir également la documentation de la commande correspondante del’interface de script 6.2.15 makeCompNP (page 399) et l’outil correspondant pour les courbes 5.3.25Outil pour rendre compatible (Make Compatible) (page 302).

Page 327: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

5. Outils de modélisation NURBS 327

5.5.16 Outil de redimensionnent des noeuds en fonction de la plage (Rescale Knots to Range)

Arguments

L’outil de redimensionnent des noeuds en fonction de la plage prend un certain nombre de patchsNURBS dans la sélection et demande une plage.

Opération

Les vecteurs de noeuds des patchs seront mis à l’échelle, de sorte que leurs première et dernièrevaleurs correspondent à la plage donnée. Les courbes de trim, si elles existent, seront égalementmises à l’échelle pour correspondre à la nouvelle plage.

Notes

Depuis Ayam 1.20, le type de noeud de la surface ne doit plus être "Custom". De plus, le fait deredimensionner les noeuds ne change pas le type de noeud. Cet outil ne modifie pas la géométriedes patchs. Voir également la documentation de la commande correspondante de l’interface de script6.2.15 rescaleknNP (page 391) et l’outil correspondant pour les courbes 5.3.26 Outil de répartitiondes noeuds sur une plage (Rescale Knots to Range) (page 303).

5.5.17 Outil Redimensionnent des noeuds à la distance minimale (Rescale Knots to Mindist)

Arguments

L’outil de redimensionnement des noeuds à la distance minimale prend un certain nombre de patchsNURBS dans la sélection et demande une valeur de distance minimale.

Opération

Les vecteurs de noeuds des patchs seront mis à l’échelle, de sorte qu’aucun noeud n’ait une distanceinférieure à la distance minimale donnée (sauf pour les noeuds multiples). Les courbes de trim, sielles existent, seront également mises à l’échelle pour correspondre à la nouvelle plage.

Notes

Depuis Ayam 1.20, le type de noeud de la surface ne doit plus être "Custom". De plus, le fait deredimensionner les noeuds ne change pas le type de noeud. Cet outil ne modifie pas la géométriedes patchs. Voir également la documentation de la commande correspondante de l’interface de script6.2.15 rescaleknNP (page 391) et l’outil correspondant pour les courbes 5.3.27 Outil de répartitiondes noeuds à une distance minimale (Rescale Knots to Mindist) (page 303).

Page 328: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

5. Outils de modélisation NURBS 328

5.6 Outils de conversion

Ces outils convertissent des objets paramétriques.

5.6.1 Outil d’extraction de courbe (Extract Curve)

Arguments

L’outil d’extraction de courbe prend le premier des objets sélectionnés dans la sélection.

Opération

L’outil crée une instance à partir du premier des objets sélectionnés, puis crée un objet "ExtrNC" etdéplace l’instance vers celui-ci.

|-NPatch |-NPatch

==> +-ExtrNC

\-Instance_of_NPatch(Instance)

Notes

Cet outil utilise le presse-papiers des objets pour déplacer les objets de manière à ce que le contenuoriginal du presse-papiers soit perdu lorsque cet outil est terminé. Voir la section 4.5.2 L’objet Ex-trNC (Extraction de courbe NURBS) Object (page 161) pour plus d’informations concernant l’objet"ExtrNC".

5.6.2 Outil d’extraction de patch (Extract Patch)

Arguments

L’outil d’extraction de patchs prend le premier des objets sélectionnés dans la sélection.

Opération

L’outil crée une instance à partir du premier des objets sélectionnés, puis crée un objet "ExtrNP" etdéplace l’instance vers celui-ci.

|-NPatch |-NPatch

==> +-ExtrNP

\-Instance_of_NPatch(Instance)

Notes

Cet outil utilise le presse-papiers des objets pour déplacer les objets de manière à ce que le contenuoriginal du presse-papiers soit perdu lorsque cet outil est terminé. Voir la section 4.7.12 Extractiond’un patch NURBS (ExtrNP) (page 213) pour plus d’informations concernant l’objet "ExtrNP".

Voir également la documentation de la commande correspondante de l’interface de script 6.2.15 ex-trNP (page 395).

Page 329: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

5. Outils de modélisation NURBS 329

5.6.3 Outil décomposition en courbes (Break into Curves)

Figure 152: Exemple de décomposition en courbes

Arguments

L’outil de décomposition en courbes prend tous les patchs NURBS de la sélection et demande certainsparamètres.

Opération

Les patchs NURBS sélectionnés seront décomposés en courbes NURBS, selon la direction donnée (Uou V).Si l’option "ApplyTrafo" est définie, les transformations des objets "NPatch" seront appliquéesaux points de contrôle et les objets "NCurve" seront créés avec des attributs de transformation pardéfaut, sinon les objets "NCurve" obtiendront les attributs de transformation du "NPatch" respectif.Voir également l’image ci-dessus.Si l’option "ReplaceOriginal" est activée, les courbes remplaceront chaque objet "NPatch"original, cependant, par défaut, de nouveaux objets de courbe seront ajoutés au niveau actuel :

|-NPatch |-NPatch

|-NCurve

==> |-NCurve

|-NCurve

|-NCurve

Notes

Voir également la documentation de la commande correspondante de l’interface de script 6.2.15breakNP (page 398).

Page 330: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

5. Outils de modélisation NURBS 330

5.6.4 Outil de construction à partir de courbes (Build from Curves)

Figure 153: Exemple de construction à partir de courbes

Arguments

L’outil de construction à partir de courbes prend un certain nombre de courbes NURBS dans la sélec-tion et demande certains paramètres.

Opération

Les courbes NURBS sélectionnées seront analysées, toutes les courbes qui sont de longueur égale ousupérieure à la première courbe sélectionnée seront utilisées pour former un nouveau patch NURBSaux dimensions suivantes :Width: Nonmbre de courbes utilisées, Height: longueur de la première courbe sélectionnée. Si l’ordrefourni est 0 (c’est l’ordre par défaut), l’ordre de la nouvelle surface dans la direction U (Order_U)sera égal au nombre de courbes utilisées pour les nombres de deux à quatre et quatre pour un nombresupérieur de courbes utilisées.Le type de noeud dans la direction U (Knot-Type_U) sera toujours NURB. Les autres paramètres(Order_V, Knot-Type_V, Knots_V) sont tirés de la première courbe.Voir également l’image ci-dessus ; notez que le point de contrôle étranger de la courbe supérieure et levecteur de noeud de la courbe inférieure sont ignorés. Pour éviter cela, l’outil "Make Compatible" peutêtre utilisé en premier lieu, voir la section 5.3.25 Outil pour rendre compatible (Make Compatible)(page 302).

Si l’option "ApplyTrafo" est activée, les attributs de transformation des différents objets de lacourbe seront appliqués aux points de contrôle, sinon ils seront simplement ignorés.

Si l’option "ReplaceOriginal" est activée, le nouvel objet de surface remplacera la premièredes courbes et les autres courbes seront supprimées. Cependant, par défaut, le nouvel objet NPatchsera ajouté au niveau actuel :

|-NCurve |-NCurve

|-NCurve |-NCurve

|-NCurve ==> |-NCurve

|-NCurve |-NCurve

|-NPatch

Notes

Voir également la documentation de la commande correspondante de l’interface de script 6.2.15buildNP (page 398).

Page 331: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

5. Outils de modélisation NURBS 331

5.6.5 Outil de tessellation (triangularisation)

Figure 154: GUI de l’outil de tessellation

Arguments

L’outil de tessellation prend tous les patchs NURBS et les patchs NURBS fournissant des objets de lasélection.

Opération

Une boîte de dialogue modale (voir image ci-dessus) s’affiche, qui permet de sélectionner une méth-ode de tessellation via un menu déroulant et de régler le(s) paramètre(s) de tessellation correspon-dant(s) à l’aide d’un curseur et d’un widget d’entrée. La méthode initiale et les valeurs des paramètresseront dérivées de la balise "TP" du premier des objets sélectionnés (s’il possède une telle balise).

Les patchs NURBS sélectionnés ou fournis seront tesselés avec la méthode et les paramètres choisis.Les objets PolyMesh créés par la tessellation seront immédiatement affichés dans toutes les fenêtresde visualisation à la place des objets originaux. Chaque fois que la méthode ou les paramètres detessellation sont modifiés, la tessellation sera recalculée et affichée, ce qui permettra une estimationimmédiate de la qualité de la tessellation et du nombre d’éléments polygonaux créés.

Si l’option "LazyUpdate" est activée, les mises à jour de la tessellation qui se produisent nor-malement en faisant glisser le(s) curseur(s) seront reportées jusqu’à ce que le bouton de la sourissoit relâché. La valeur initiale de cette option sera déterminée par le paramètre de préférence"LazyNotify".

Les options "UseTexCoords" et "UseVertColors" contrôlent le traitement des coordonnéesde texture et des couleurs de sommet stockées sous forme de balises PV dans les objets à tesseler (Voiraussi la section 4.11.4 Balise PV (Primitive Variable) (page 260)).

Lorsqu’ils sont activés, les objets PolyMesh résultants auront également des balises PV du type re-spectif.Notez que les balises PV doivent être nommées comme défini par les options de préférences cachées"PVTexCoordName" et "PVColorName" respectivement. Par défaut, ces options sont définiescomme "st" et "Cs".Si l’option "UseTexCoords" est activée, mais qu’aucun tag PV correspondant n’est présent, lescoordonnées de texture seront générées à partir des données fournies par un tag TC ou (si aucun tag

Page 332: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

5. Outils de modélisation NURBS 332

TC n’est présent) à partir des valeurs des noeuds des surfaces NURBS à tesseler.1 Voir aussi la section4.11.3 Balise TC (Texture Coordinates) (page 258).

L’option "UseVertNormals" contrôle le traitement des normales des sommets stockées sousforme de balises PV dans les objets à tesseler (Voir aussi la section 4.11.4 Balise PV (Primitive Vari-able) (page 260)).

Lorsqu’il est activé, les objets PolyMesh résultants auront des normales dérivées de ces balises au lieude normales dérivées de la surface NURBS.Notez que les balises PV doivent être nommées comme défini par l’option de préférence cachée"PVNormalName". Par défaut, cette option est définie à "N", de sorte qu’un exemple de balisecorrect ressemble à ceci :

PV N,varying,n,4,0,0,1,0,0,1,1,1,0,0,0,1

L’option "RefineTrims" contrôle combien de fois les courbes de trim doivent être affinées avantla tessellation pour améliorer la fidélité de la tessellation le long des bords de trim.2 Voir aussi lesimages ci-dessous.

Table 95: Exemple de valeurs pour "RefineTrims" (à gauche : 0, à droite : 2)

L’option "Primitives" permet de conserver les triangles créés par la tessellation (mode"TrianglesEtQuads") ou de synthétiser de nouveaux triangles à partir de triangles compatibles(mode "Quads").3

Si le bouton "Ok" est enfoncé, l’outil de tessellation sera fermé et tous les objets sélectionnés serontremplacés par leurs homologues tesselés. Les objets originaux seront supprimés.Si des objets référencés/maîtres font partie des objets sélectionnés ou de leurs enfants, et si l’une deleurs références n’est pas sélectionnée ou est un enfant des objets sélectionnés (c’est-à-dire qu’elle nesera pas également supprimée), alors ces objets maîtres ne seront pas supprimés mais déplacés dansle presse-papiers à la place.

Si le bouton "Save" est utilisé, le dialogue de tessellation sera fermé et les balises "TP" contenantla méthode et la valeur de paramètre actuellement sélectionnées seront ajoutées à tous les objets sélec-tionnés. Ces balises peuvent être évaluées ultérieurement, lorsque les objets respectifs sont convertisen objets PolyMesh (par exemple, lors de l’exportation). Depuis Ayam 1.11, le mécanisme de con-version des objets conserve les balises "TP" intactes, de sorte que, par exemple, les paramètres detessellation enregistrés sur une sphère ou un objet Revolve seront également préservés, et peuventégalement être utilisés plus tard lorsque l’objet sera finalement converti en un objet PolyMesh (via unpatch NURBS).

1 Depuis 1.21. 2 Depuis 1.21. 3 Depuis 1.23.

Page 333: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

5. Outils de modélisation NURBS 333

Si "Cancel" est utilisé, le dialogue sera fermé et tous les objets sélectionnés resteront inchangés.

Notes

L’outil de tessellation bloquera la plupart des autres parties de Ayam pendant son exécution, c’est-à-dire qu’il n’est pas possible de modifier la sélection ou d’exécuter d’autres outils. Il est toutefoispossible de régler les paramètres de vue lorsque l’outil de tessellation est ouvert, afin d’examiner lerésultat de la tessellation de plus près ou sous différents angles de vue. Les valeurs des limites ducurseur de paramètre peuvent être modifiées en entrant simplement les valeurs qui sont en dehors deslimites actuelles dans le widget d’entrée respectif, puis en appuyant sur la touche <Tab>. La plageet la résolution du curseur seront recalculées automatiquement à partir de la valeur dans le widgetd’entrée. Les balises PV qui ne fournissent pas suffisamment de données pour la surface à tesselerseront ignorées en silence. Les objets PolyMesh créés par cet outil ne seront pas optimisés. Lafonction de tessellation est basée sur le tessellator NURBS GLU (V1.3+).

Méthodes et paramètres d’échantillonnage

Six méthodes d’échantillonnage sont disponibles :

1. "ParametricError" garantit que la distance entre la surface tesselée et la surface d’origine n’estpas supérieure à la valeur spécifiée par "SParamU".

2. La méthode d’échantillonnage "PathLength" garantit qu’aucun bord d’un polygone généré par latessellation n’est plus long que la valeur spécifiée par "SParamU" et la méthode de tessellation

3. "DomainDistance" (par défaut jusqu’à 1.22) permet simplement de paver la surface NURBS enmorceaux de taille égale en ce qui concerne l’espace paramétrique ; "SParamU" et "SParamV"contrôlent le nombre de points de prélèvement dans la direction U et V respectivement par unité delongueur. Cela conduit à un nombre différent d’échantillons pour des vecteurs de noeuds de différenteslongueurs totales dans l’espace des paramètres.

4. "NormalizedDomainDistance" assure que la tessellation crée le même nombre de pointsd’échantillonnage (comme indiqué via "SParamU" et "SParamV") pour les vecteurs de noeudsde n’importe quelle longueur totale dans l’espace de paramètres1 et

5. "AdaptiveDomainDistance" ajoute en outre des points d’échantillonnage en fonction du nom-bre de points de contrôle (largeur ou hauteur du patch) pour permettre une meilleure adaptation auxpatchs complexes.2

6. "AdaptiveKnotDistance" normalise le nombre de points d’échantillonnage par rapport aunombre d’intervalles de noeuds et à la longueur 3

"SParamU" est un paramètre pour la méthode d’échantillonnage ci-dessus.La valeur par défaut de la méthode d’échantillonnage "AdaptiveKnotDistance" est 3. Des valeursplus élevées conduisent à une meilleure qualité et à un plus grand nombre de polygones tesselés.La valeur par défaut de la méthode d’échantillonnage "DomainDistance" est 8. Des valeurs plus élevéesconduisent à une meilleure qualité et à un plus grand nombre de polygones tesselés.La valeur par défaut pour la méthode d’échantillonnage "PathLength" est de 1.5. Des valeurs pluspetites permettent d’obtenir une meilleure qualité et un plus grand nombre de polygones tesselés.La valeur par défaut de la méthode d’échantillonnage "ParametricError" est de 0.25. Des valeursplus petites conduisent à une meilleure qualité et à un plus grand nombre de polygones tesselés.

1 Depuis 1.9. 2 Depuis 1.9. 3 Depuis 1.23.

Page 334: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

5. Outils de modélisation NURBS 334

Notez que "SParamU" est exprimé en unités d’espace objet pour les méthodes d’échantillonnage"PathLength" et "ParametricError". "SParamV" est uniquement disponible pour les méthodesd’échantillonnage "DomainDistance", "NormalizedDomainDistance", et"AdaptiveKnotDistance".La valeur par défaut est égale à la valeur respective du paramètre "SParamU" ci-dessus.

Voir aussi les deux images suivantes et les tableaux correspondants qui permettent de comparer les résultatsdes quatre principales méthodes d’échantillonnage avec des paramètres différents.

Page 335: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

5. Outils de modélisation NURBS 335

Figure 155: Comparaison des méthodes d’échantillonnage, valeurs par défaut (à gauche : ParametricError,au milieu à gauche : PathLength, au milieu à droite : DomainDistance, à droite : AdaptiveKnotDistance)

Method ParametricError PathLength DomainDistance AdaptiveKnotDistanceParameter 0.25 1.5 8 / 8 3 / 3Cylinder 88 104 368 192Sphere 96 80 112 120

Box 36 60 384 108Total 220 244 864 420

Table 96: Méthodes d’échantillonnage Paramètres et résultats (1/2)

Page 336: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

5. Outils de modélisation NURBS 336

Figure 156: Comparaison des méthodes d’échantillonnage, meilleure qualité (à gauche : ParametricError,au milieu à gauche : PathLength, au milieu à droite : DomainDistance, à droite : AdaptiveKnotDistance)

Method ParametricError PathLength DomainDistance AdaptiveKnotDistanceParameter 0.125 0.9 12 / 12 4 / 4Cylinder 152 168 840 352Sphere 216 160 264 224

Box 36 108 864 192Total 404 436 1968 768

Table 97: Méthodes d’échantillonnage Paramètres et résultats (2/2)

Page 337: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

6. Interface de script 337

6 Interface de script

L’interface de script Ayam se compose d’un certain nombre de procédures Tcl et de commandes Tcl qui sontégalement utilisées en interne par l’application. L’entrée du menu principal "File/New" par exemple ap-pelle la commande de l’interface de script "newScene" (parmi d’autres commandes). Utiliser l’interfacede script signifie appeler ces commandes par vous-même, éventuellement en les mélangeant avec du codede script Tcl standard.

De plus, en utilisant Tcl et ses capacités d’introspection, vous pourriez facilement modifier le code dontest composé Ayam. Cela n’est cependant pas recommandé pour de bonnes raisons (à moins que vous nelisiez le code source de Ayam et que vous sachiez vraiment ce que vous faites). Faites donc attention auxprocédures et commandes déjà existantes lorsque vous implémentez les vôtres. L’utilisation de procédureset de commandes non mentionnées dans cette documentation est également dangereuse. L’implémentationet les interfaces de ces procédures et commandes peuvent changer dans les futures versions de Ayam sanspréavis.

Dans Tcl, toutes les variables, procédures et commandes sont sensibles à la casse, ce qui fait que "sL" estdifférent de "sl", de "Sl"et de "SL".

L’interface de script peut être utilisée directement depuis la console de Ayam. Vous pouvez, bien sûr, égale-ment écrire des scripts dans vos propres fichiers de script Tcl, qui peuvent être chargés à tout moment dansAyam en utilisant la console et la commande Tcl "source". Vous pouvez également faire en sorte qu’unfichier script soit exécuté automatiquement à chaque démarrage de l’application en utilisant le paramètrede préférence "Main/Scripts". De plus, sur les systèmes X11 et Aqua window, Ayam est capabled’exécuter du code script envoyé via la commande Tk "send" ou la commande AppleScript "tell" àpartir d’applications externes.

Contrairement à d’autres environnements de modélisation, dans Ayam, il existe encore une autre façond’exécuter des scripts. Dans Ayam, les scripts peuvent également être attachés à des objets Script ets’exécuter lorsque le mécanisme de notification met à jour la scène. Voir aussi la section 4.9.1 L’objetScript (page 225).

Même les objets normaux peuvent déclencher des scripts sur notification en utilisant les balises BNS ouANS. Voir aussi la sections 4.11.15 Balise BNS (Before Notify Script) (page 265) et 4.11.16 Balise ANS(After Notify Script) (page 267).

Notez que la plupart des commandes de l’interface de script énumérées dans cette documentation fonction-nent en arrière-plan, sans rien changer à l’interface graphique Ayam et aux fenêtres de visualisation Ayam,pour des raisons de rapidité d’exécution. Si vous souhaitez que vos modifications soient visibles, vous devezmettre à jour les différentes parties de l’interface graphique (propriétés des interfaces graphiques, fenêtresde visualisation) de manière explicite (Voir aussi la section 6.2.18 Mettre à jour l’interface graphique (page404)).

Cependant, depuis Ayam 1.13, il est également possible d’exécuter automatiquement des commandesde mise à jour de l’interface graphique dans la console en utilisant <Shift+Return> au lieu de<Return> lors de l’émission de commandes de l’interface de script. Notez cependant que même si aucunemise à jour de l’interface graphique n’a lieu, tous les processus de notification sont exécutés immédiatement.La scène sera cohérente et mise à jour lorsque la commande de l’interface de script sera renvoyée.

Si vous souhaitez que vos modifications soient enregistrées dans la mémoire tampon d’annulation, vous de-vez également le faire manuellement (voir la documentation de la commande d’annulation : 6.2.26 Annuler

Page 338: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

6. Interface de script 338

(page 416)).

À partir de scripts, il peut être nécessaire de vérifier si une erreur s’est produite lors de l’exécution d’unecommande. Toutes les commandes renvoient TCL_OK dans tous les cas, donc la vérification de leur valeurde retour n’aboutit à rien, mais elles fixent la variable globale Tcl "ay_error" à une valeur supérieure à 1si une erreur s’est produite. Vous devez mettre "ay_error" à zéro avant et vérifier sa valeur après l’opérationen question pour voir si l’opération s’est bien déroulée :

proc myProc { } {

set ::ay_error 0

copOb

if { $::ay_error > 1 } {

ayError 2 "myProc" "Error copying object!"

}

}

6.1 Variables et tableaux globaux

Plusieurs variables et tableaux globaux existent dans le contexte Tcl de Ayam, et qui peuvent être utiles pourles scripts.

6.1.1 Variables globales

La variable globale "ay_error" contient l’état d’erreur actuel. Voir aussi la section 6.2.24 Signalementd’erreur (page 409).

La variable globale "i" est utilisée par toutes les variantes de la commande "forAll". Voir aussi lasection 6.2.21 Appliquer des commandes à un certain nombre d’objets (page 406).

Les variables globales "u" et "v" sont définies par les actions find u/uv. Voir aussi la sections 3.20 Trouverdes points sur les courbes (page 97) and 3.21 Trouver des points sur les surfaces (page 98).

6.1.2 Le tableau global "ay"

Le tableau global "ay" contient les variables d’état de l’application. En outre, vous pouvez trouver dansce tableau les chemins d’accès aux widgets importants (par exemple le widget d’arbre pour la hiérarchied’objets ou la vue actuellement active). Utilisez "parray ay" dans la console pour voir ce qui s’y trouve.Plus de documentation à venir.

6.1.3 Le tableau global "ayprefs"

Le tableau global "ayprefs" contient des données sur les préférences. Le tableau complet est enregistrédans le fichier ayamrc à la sortie, donc soyez prudent lorsque vous ajoutez de nouveaux éléments à cetableau. Voir aussi la section 8.4 Le fichier Ayamrc (page 490).

Utilisez "parray ayprefs" dans la console pour voir ce qui s’y trouve. Plus de documentation à venir.

Page 339: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

6. Interface de script 339

Notez que les modifications apportées à ce tableau du côté Tcl ne prennent pas effet immédiatement car lesdonnées doivent être transférées dans le contexte C à l’aide de la commande "setPrefs". Voir aussi lasection 6.2.19 Gestion des préférences (page 405).

6.1.4 Le tableau global "aymark"

Le tableau global "aymark" contient une copie de la position actuelle de la marque. 1 Il est mis à jourchaque fois que la marque est définie, par exemple en utilisant l’action "set mark" (voir la section 3.5 Définirune marque (page 81)).

Les modifications manuelles apportées à ce tableau n’ont aucun effet sur la marque.

1 Depuis 1.21.

Page 340: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

6. Interface de script 340

6.1.5 Gestion des propriétés et tableaux de données

Pour chaque type d’objet, il existe une variable globale correspondante, qui contient les noms des propriétésde ce type d’objet sous forme de liste. Le nom de la variable est simplement le nom du type d’objet suivide _props (pour les propriétés). Par exemple, pour le type d’objet NCurve, cette variable est nommée"NCurve_props" et la liste qu’elle contient ressemble à ceci :

{ Transformations Attributes Tags NCurveAttr }

Cette liste est consultée chaque fois qu’un seul objet est sélectionné dans l’arborescence ou dans l’objet listedes widget et son contenu est utilisé pour remplir les propriétés de la listbox du widget. (????) Voir aussi lasection 2.1.2 Propriétés (page 26).

Notez que la liste peut être manipulée ultérieurement par les balises "NP" et "RP" de l’objet sélectionné.

Pour chaque propriété, il existe un tableau global correspondant, où la propriété est gérée. Pour la propriétéTransformations, ce tableau ressemble à ceci :

Transformations {

arr transfPropData

sproc setTrafo

gproc getTrafo

w fTrafoAttr

}

La première entrée, "arr", désigne le nom du tableau global de données de propriété (ainsi, les donnéesde transformation sont stockées dans un tableau appelé "transfPropData"). Ce tableau ne contient desdonnées utiles que lorsqu’il a été rempli explicitement par le retour de la procédure "get-property" si biennommée.

Les entrées "sproc" et "gproc" désignent les procédures ou commandes de rappel "set-property" et"get-property". Elles sont appelées, respectivement, lorsque le bouton "Apply" est utilisé ou que la pro-priété est sélectionnée dans la liste des propriétés. Si "sproc" ou "gproc" sont des chaînes vides (""), lesretours standards nommés "setProp" ou "getProp" seront utilisés pour obtenir ou définir les valeursdes propriétés. Mais pour la propriété Transformations, les commandes "setTrafo" et "getTrafo"doivent être utilisées. La flexibilité acquise par les procédures individuelles de "sproc"/"gproc" est util-isée pour nettoyer les entrées de l’utilisateur, exécuter un code de mise à jour supplémentaire de l’interfacegraphique ou réaliser des interfaces graphiques de propriétés dynamiques.

La dernière entrée, "w", est le nom de la fenêtre principale de l’interface graphique des propriétés. Pourobtenir le chemin complet et utilisable du widget de cette fenêtre, la valeur actuelle de l’entrée du tableau"ay(pca)" doit être préfixée : $ay(pca).$Transformations(w).

Notez que pour de nombreux types d’objets, la variable propriété et les tableaux de gestion de propriétéspécifiques au type d’objet n’existent qu’après une procédure d’initialisation spécifique au type d’objet,dérivée du nom du type, appelée, par exemple, "init_Box". Ces type sont : "ACurve", "Bevel", "Bi-rail1", "Birail2", "Box", "BPatch", "Cap", "ConcatNC", "ConcatNP", "Cone", "Cylinder", "Disk", "Ex-trNC", "ExtrNP", "Hyperboloid", "ICurve", "IPatch", "NCircle", "OffsetNC", "OffsetNP", "PatchMesh","Paraboloid", "Revolve", "RiInc", "RiProc", "Script", "SDMesh", "Select", "Sphere", "Sweep", "Swing","Torus", et "Trim".

Page 341: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

6. Interface de script 341

Depuis Ayam 1.16, le tableau global de gestion des propriétés peut être créé facilement en utilisant la nou-velle commande de l’interface de script "addPropertyGUI". Voir aussi la section 6.2.25 Gestion del’interface graphique des propriétés (page 409).

Les tableaux globaux suivants et les retours pour obtenir ou définir les données existent :

property array get-property callback set-property callbackTransformations transfPropData getTrafo setTrafo

Attributes attrPropData getAttr setAttrpMaterial matPropData getMat setMat

Tags tagsPropData getTagsp setTagspMaterialAttr MaterialAttrData "" setMaterialAttrp

Surface ay_shader shader_getSurf shader_setSurfDisplacement ay_shader shader_getDisp shader_setDisp

Interior ay_shader shader_getInt shader_setIntExterior ay_shader shader_getExt shader_setExt

Light ay_shader light_getShader light_setShaderLightAttr LightAttrData light_getAttr ""

ViewAttrib ViewAttribData "" setViewAttrCamera CameraData "" setCameraAttr

NCurveAttr NCurveAttrData "" ""NPatchAttr NPatchAttrData "" ""ICurveAttr ICurveAttrData "" ""NCircleAttr NCircleAttrData "" ""

Table 98: Tableaux de propriété et retours

Notez que cette liste est assez incomplète, mais les informations peuvent toujours être facilement déduitesen utilisant la commande "parray" dans la console Ayam :

»parray NCurveAttr

Voir aussi la section 6.2.6 Manipuler les propriétés (page 368) pour plus d’informations sur la façon demodifier les valeurs des propriétés à partir de l’interface de script.

Page 342: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

6. Interface de script 342

6.2 Procédures and Commandes

Cette section fournit une documentation sur les procédures et les commandes les plus importantes del’interface de scripting de Ayam, classées par catégorie.

Notez que la commande "help" dans la console Ayam peut être utilisée pour passer directement à lasous-section appropriée de cette partie de la documentation.

Toutes les procédures et commandes sont documentées selon le schéma suivant :

• Synopsis: "commande param1 param2 [optionalparam1]" (syntaxe de la commande etde ses paramètres),

• Tâche de fond : la commande est-elle exécutée en arrière-plan, Effacer : le résultat de la commandepeut-il être annulé, Sûr : est la commande disponible dans l’interpréteur safe (pour les objets Scriptet les balises script notify), Type: Procedure – il ne s’agit en fait pas d’une commande mais d’uneprocédure implémentée dans Tcl,

• Description: description détaillée de la commande et de ses paramètres,

• Notes: informations complémentaires complétant la description détaillée,

• Exemple : "commande 1 2" (exemple d’application de la commande avec explication des résul-tats attendus).

6.2.1 Obtenir de l’aide sur les commandes de l’interface de script

Depuis Ayam 1.8.2, une commande d’interface de script appelée "help" est disponible, qui affichel’aide des commandes d’interface de script utilisant un navigateur web (similaire à la fonction "Help on

Object") :

• Synopsis: "help command"

• Tâche de fond : N/A, Effacer : Non, Sûr : Non, Type : Procédure

• Description: Lancer un navigateur web et afficher l’aide pour la commande ou la procédure désignéede l’interface de script Ayam.

• Exemple : "help help" affiche l’aide de la procédure d’aide.

Page 343: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

6. Interface de script 343

6.2.2 Gérer les objets

Pour créer de nouveaux objets, la commande "crtOb" peut être utilisée.

• Synopsis: "crtOb type [args]"

• Tâche de fond : Oui, Effacer : Non, Sûr : Oui

• Description: De nouveaux objets peuvent être créés avec la commande "crtOb", "type" peut êtredérivé des noms de types d’objets, tels qu’ils sont affichés dans l’arborescence. Le nouvel objet seracréé et lié à la scène comme le dernier objet du niveau actuel, aucune partie de l’interface graphique(widget de sélection des objets, interface graphique des propriétés, vues) ne sera mise à jour. En outre,le nouvel objet ne sera pas sélectionné. Selon le type, d’autres arguments peuvent (ou doivent) êtredonnés ; certains types d’objets s’attendent à ce que d’autres objets soient sélectionnés lors de leurcréation.

Tous les arguments se composent d’une partie nom d’option et d’une partie valeur (c’est-à-dire quec’est "-center 1" et non "-center" et non plus "-center=1"). Les noms des options peu-vent être abrégés. Il existe des valeurs par défaut et des valeurs de repli utiles (voir ci-dessous). Lesarguments peuvent être mélangés librement (leur ordre n’est pas important) et répétés. Si les argu-ments sont répétés, seule la dernière valeur définie est utilisée, même si cela entraîne des erreurs etl’application de valeurs de repli par la suite.

Voici une liste complète des arguments disponibles, triés par type d’objet :

Page 344: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

6. Interface de script 344

– "NCurve": Les courbes NURBS acceptent les arguments suivants :∗ "-length": longueur de la nouvelle courbe, la longueur par défaut est de 4.∗ "-order": ordre de la nouvelle courbe, l’ordre par défaut est 4. Si une valeur supérieure

à la longueur est spécifiée, l’ordre sera rendu identique à la valeur de la longueur.∗ "-kt": le type de noeud de la nouvelle courbe, doit être l’un des suivants : 0 – Bezier, 1

– BSpline, 2 – NURB, 3 – Custom, 4 – Chordal, 5 – Centripetal. Un vecteur de noeud dutype spécifié sera automatiquement créé. Le type de noeud est par défaut 2 – NURB. Si unvecteur de noeud personnalisé est spécifié en utilisant l’option "-kv" ci-dessous, le typede noeud sera toujours défini sur 3 –∗ "-kv": le vecteur de noeud de la nouvelle courbe. La valeur de cette option est une

liste de nombres à virgule flottante de la longueur de la courbe plus l’ordre de la courbe,par exemple pour une courbe avec 2 points de contrôle et d’ordre 2, spécifiez 4 noeuds :"-kv {0.0 0.0 1.0 1.0}". Par défaut, le vecteur noeuds est un vecteur noeuds crééautomatiquement du type spécifié par l’option "-kt" ci-dessus.∗ "-kn": le vecteur de noeud de la nouvelle courbe. La valeur de cette option est un nom de

variable (avec un tableau et un espace de noms optionnels). La valeur de cette variable doitêtre compatible avec l’option "-kv" ci-dessus.∗ "-cv": le vecteur de contrôle de la nouvelle courbe. La valeur de cette option est une

liste de nombres à virgule flottante qui décrivent les coordonnées du rationnel (poids nonmultipliés) euclidien 4D des points de contrôle.Cette liste peut également ne spécifier qu’un seul point, qui est alors pris comme point dedépart et DX/DY/DZ (voir ci-dessous) sont utilisés pour créer automatiquement les pointsde contrôle manquants.Pour spécifier un vecteur de contrôle complet, cette liste doit comporter length*4 éléments,par exemple pour une courbe de longueur 3, spécifier 12 valeurs : "-cv {0.0 0.0 0.01.0 1.0 0.0 0.0 1.0 2.0 0.0 0.0 1.0}".∗ "-cn" : le vecteur de contrôle de la nouvelle courbe. La valeur de cette option est un nom

de variable (avec un tableau et un espace de noms optionnels). La valeur de cette variabledoit être compatible avec l’option "-cv" ci-dessus.∗ "-dx" : la valeur de cette option spécifie la distance des points de contrôle créés automa-

tiquement dans la dimension x, la valeur par défaut est 0.25.∗ "-dy" : la valeur de cette option spécifie la distance des points de contrôle créés automa-

tiquement dans la dimension y, la valeur par défaut est 0.0.∗ "-dz" : la valeur de cette option spécifie la distance des points de contrôle créés automa-

tiquement dans la dimension z, la valeur par défaut est 0.0∗ "-center" : Si la valeur de l’option "-center" est 1, la nouvelle courbe sera centrée.

La valeur par défaut est 0, pas de centrage. Cette option n’est en vigueur que si aucuneoption "-cv" n’est spécifiée.∗ "-createmp" : L’option "-createmp" active la création de points multiples. La

valeur par défaut est 0.

Page 345: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

6. Interface de script 345

Exemples:

1. "crtOb NCurve"crée une courbe de longueur 4, ordre 4, vecteur noeud NURBS standard (serré), points decontrôle à 0 0 0, 0.25 0 0, 0.5 0 0, 0.75 0 0 (tous les poids à 1).

2. "crtOb NCurve -center 1"crée une courbe centrée de longueur 4, ordre 4, vecteur de noeud NURBS standard (serré),points de contrôle à -0.375 0 0, -0.125 0 0, 0.125 0 0, 0.375 0 0 (tous les poids à 1).

3. "crtOb NCurve -length 5 -center 1 -dx 0.5"crée une courbe centrée de longueur 5, ordre 4, vecteur de noeud NURBS standard (serré),points de contrôle à -1 0 0, -0.5 0 0, 0 0 0, 0.5 0 0, 1 0 0 (tous les poids à 1).

Dans les versions de Ayam antérieures à la version 1.17, les courbes NURBS n’acceptaient quel’argument "-length". Voir aussi la section 4.4.1 L’objet NCurve (NURBS) (page 147).

Page 346: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

6. Interface de script 346

– "ICurve": Les courbes d’interpolation acceptent les arguments suivants :∗ "-type": le type de la nouvelle courbe, doit être : 0 – Open, 1 – Closed; la valeur par

défaut est 0.∗ "-length": la longueur (nombre de points de données à interpoler) de la nouvelle courbe

; la longueur est par défaut de 4.∗ "-order": ordre de la nouvelle courbe, l’ordre par défaut est 4. Si une valeur supérieure

à la longueur est spécifiée, l’ordre sera rendu identique à la valeur de la longueur.∗ "-pt": le type de paramètre de la nouvelle courbe, doit être : 0 – Chordal, 1 – Centripetal,

2 – Uniform; la valeur par défaut est 0.∗ "-cv": le vecteur de contrôle de la nouvelle courbe. La valeur de cette option est une

liste de nombres à virgule flottante qui décrivent les coordonnées 3D (non rationnelles)des points de contrôle. Cette liste peut également ne spécifier qu’un seul point, qui estalors pris comme point de départ et DX/DY/DZ (voir ci-dessous) sont utilisés pour créerautomatiquement les points de contrôle manquants. Pour spécifier un vecteur de contrôlecomplet, cette liste doit avoir une longueur de courbe*3 éléments, par exemple pour unecourbe de longueur 3, spécifier 9 valeurs : "-cv {0.0 0.0 0.0 1.0 0.0 0.0 2.00.0 0.0}".∗ "-cn": le vecteur de contrôle de la nouvelle courbe. La valeur de cette option est un nom

de variable (avec un tableau et un espace de noms optionnels). La valeur de cette variabledoit être compatible avec l’option "-cv" ci-dessus.∗ "-dx": la valeur de cette option spécifie la distance des points de contrôle créés automa-

tiquement dans la dimension x, la valeur par défaut est 0.25.∗ "-dy": la valeur de cette option spécifie la distance des points de contrôle créés automa-

tiquement dans la dimension y, la valeur par défaut est 0.0.∗ "-dz": la valeur de cette option spécifie la distance des points de contrôle créés automa-

tiquement dans la dimension z, la valeur par défaut est 0.0∗ "-center": Si la valeur de l’option "-center" est 1, la nouvelle courbe sera centrée.

La valeur par défaut est 0, pas de centrage. Cette option n’est en vigueur que si aucuneoption "-cv" n’est spécifiée.∗ "-derivs": la valeur de cette option contrôle si les dérivés finaux définis par l’utilisateur

doivent être utilisés : 0 – non, 1 – oui, la valeur par défaut est 0.∗ "-sdlen": la valeur de cette option spécifie la longueur relative (par rapport à la distance

du premier et du deuxième point de contrôle) de la dérivée de départ, la valeur par défautest 0.125.∗ "-sderiv": est la dérivée de départ, spécifiée comme une liste de trois valeurs flottantes.

La dérivée est spécifiée par rapport au premier point de contrôle. La dérivée de départest par défaut une dérivée créée automatiquement d’une direction prise à partir des deuxpremiers points de contrôle et de la longueur spécifiée par l’option "-sdlen".∗ "-edlen": la valeur de cette option spécifie la longueur relative (par rapport à la distance

de l’avant-dernier et du dernier point de contrôle) de la dérivée finale, la valeur par défautest 0.125.∗ "-ederiv": est la dérivée finale, spécifiée comme une liste de trois valeurs flottantes. La

dérivée est spécifiée par rapport au dernier point de contrôle. La dérivée finale est par défautune dérivée créée automatiquement d’une direction prise à partir des deux derniers pointsde contrôle et de la longueur spécifiée par l’option "-edlen".

Page 347: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

6. Interface de script 347

Exemples:

1. "crtOb ICurve"crée une courbe de longueur 4, d’ordre 4, dont les points de données sont 0 0 0, 0.25 0 0,0.5 0 0, 0.75 0 0.

2. "crtOb ICurve -l 5 -sderiv {0.0 -0.5 0.0} -ederiv {0.0 -0.50.0} -derivs 1 -center 1"crée une courbe de longueur 5, d’ordre 4, les points de données à -0.5 0 0, -0.25 0 0, 0 0 00, 0.25 0 0, 0.5 0 0, les dérivés terminaux pointant droit vers le haut avec une longueur de0.5 dans leur extrémité respective.

Dans les versions de Ayam antérieures à la version 1.17, les courbes d’interpolationn’acceptaient que l’argument "-length". Voir aussi la section 4.4.2 Les courbes interpolées(ICurve) (page 152).

Page 348: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

6. Interface de script 348

– "ACurve": Les courbes d’approximation acceptent les arguments suivants :∗ "-type": le type de la nouvelle courbe, doit être : 0 – Ouvert, 1 – Fermé; la valeur par

défaut est 0.∗ "-length": longueur (nombre de points de données à approximer) de la nouvelle courbe,

la longueur par défaut est de 4.∗ "-alength": le nombre de points de contrôle NURBS à utiliser pour la courbe

d’approximation doit être inférieur à la longueur ci-dessus ; ce paramètre est par défautde length-1.∗ "-order": ordre de la nouvelle courbe, l’ordre par défaut est 3. Si une valeur supérieure

à la longueur de sortie est spécifiée, l’ordre sera rendu identique à la valeur de la longueurde sortie. Actuellement, seules les valeurs supérieures à 2 sont prises en charge.∗ "-symmetric": bascule la création de courbes symétriques, doit être l’un des éléments

suivants : 0 – Asymétrique, 1 – Symétrique ; la valeur par défaut est 0.∗ "-cv": le vecteur de contrôle de la nouvelle courbe. La valeur de cette option est une

liste de nombres à virgule flottante qui décrivent les coordonnées 3D (non rationnelles)des points de contrôle. Cette liste peut également ne spécifier qu’un seul point, qui estalors pris comme point de départ et DX/DY/DZ (voir ci-dessous) sont utilisés pour créerautomatiquement les points de contrôle manquants. Pour spécifier un vecteur de contrôlecomplet, cette liste doit avoir une longueur de courbe*3 éléments, par exemple pour unecourbe de longueur 3, spécifier 9 valeurs : "-cv {0.0 0.0 0.0 1.0 0.0 0.0 2.00.0 0.0}".∗ "-cn": le vecteur de contrôle de la nouvelle courbe. La valeur de cette option est un nom

de variable (avec un tableau et un espace de noms optionnels). La valeur de cette variabledoit être compatible avec l’option "-cv" ci-dessus.∗ "-dx": la valeur de cette option spécifie la distance des points de contrôle créés automa-

tiquement dans la dimension x, la valeur par défaut est 0.25.∗ "-dy": la valeur de cette option spécifie la distance des points de contrôle créés automa-

tiquement dans la dimension y, la valeur par défaut est 0.0.∗ "-dz": la valeur de cette option spécifie la distance des points de contrôle créés automa-

tiquement dans la dimension z, la valeur par défaut est 0.0∗ "-center": Si la valeur de l’option "-center" est 1, la nouvelle courbe sera centrée.

La valeur par défaut est 0, pas de centrage. Cette option n’est en vigueur que si aucuneoption "-cv" n’est spécifiée.

Exemples:

1. "crtOb ACurve -length 6"crée une courbe approximative à partir de six points de données : 0 0 0, 0.25 0 0, 0.5 0 0,0.75 0 0, 1 0 0, 1.25 0 0.

2. "crtOb ACurve -l 5 -center 1"crée une courbe d’approximation centrée à partir de cinq points de : -0.5 0 0, -0.25 0 0, 0 00, 0.25 0 0, 0.5 0 0.

Dans les versions de Ayam antérieures à 1.17, les courbes d’approximation n’acceptaient quel’argument "-length". Voir aussi la section 4.4.3 Les courbes approximées (ACurve) (page154).

Page 349: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

6. Interface de script 349

– "NPatch" : Les patchs NURBS acceptent les arguments suivants :∗ "-width": largeur du nouveau patch, la largeur par défaut est de 4.∗ "-height": hauteur du nouveau patch, la hauteur par défaut est de 4.∗ "-uorder": l’ordre du nouveau patch dans la dimension paramétrique U, l’ordre est par

défaut de 4. Si une valeur supérieure à la largeur est spécifiée, l’ordre sera rendu identiqueà la valeur de la largeur.∗ "-ukt": le type de noeud U du nouveau patch, doit être une des valeurs suivantes : 0 –

Bezier, 1 – BSpline, 2 – NURB, 3 – Custom, 4 – Chordal, 5 – Centripetal. Un vecteurde noeud du type spécifié sera automatiquement créé. Le type de noeud est par défaut 2– NURB. Si un vecteur de noeud personnalisé est spécifié en utilisant l’option "-ukv"ci-dessous, le type de noeud sera – Custom.∗ "-ukv": le vecteur du noeud U du nouveau patch. La valeur de cette option est une liste

de nombres à virgule flottante de longueur, largeur et ordre U du patch, par exemple pour unpatch de largeur 2 et d’ordre U 2, spécifiez 4 noeuds : "-ukv {0.0 0.0 1.0 1.0}".Par défaut, le vecteur noeud est un vecteur noeud créé automatiquement du type spécifiépar l’option "-ukt" ci-dessus.∗ "-un": le vecteur du noeud U du nouveau patch. La valeur de cette option est un nom de

variable (avec un tableau et un espace de noms optionnels). La valeur de cette variable doitêtre compatible avec l’option "-ukv" ci-dessus.∗ "-vorder": l’ordre du nouveau patch en dimension paramétrique V, l’ordre est par défaut

de 4. Si une valeur supérieure à la hauteur est spécifiée, l’ordre sera rendu identique à lavaleur de la hauteur.∗ "-vkt": le type de noeud V du nouveau patch, doit être l’une des valeurs suivantes : 0

– Bezier, 1 – BSpline, 2 – NURB, 3 – Custom, 4 – Chordal, 5 – Centripetal. Un vecteurde noeud du type spécifié sera automatiquement créé. Le type de noeud est par défaut 2– NURB. Si un vecteur de noeud personnalisé est spécifié en utilisant l’option "-vkv"ci-dessous, le type de noeud sera 3 – Custom.∗ "-vkv": le vecteur noeud V du nouveau patch. La valeur de cette option est une liste de

nombres à virgule flottante de la hauteur de la longueur plus l’ordre V du patch, par exemplepour un patch de hauteur 2 et d’ordre V 2, spécifiez 4 noeuds : "-vkv {0.0 0.0 1.01.0}". Par défaut, le vecteur noeud est un vecteur noeud créé automatiquement du typespécifié par l’option "-vkt" ci-dessus.∗ "-vn": le vecteur noeud V du nouveau patch. La valeur de cette option est un nom de

variable (avec un tableau et un espace de noms optionnels). La valeur de cette variable doitêtre compatible avec l’option "-vkv" ci-dessus.∗ "-cv": le vecteur de contrôle du nouveau patch. La valeur de cette option est une liste de

nombres à virgule flottante qui décrivent les coordonnées du rationnel (poids non multiplié)euclidien 4D des points de contrôle. Cette liste peut également ne spécifier qu’un seul point,qui est alors pris comme point de départ et les points de contrôle manquants sont créésautomatiquement à l’aide de UDX/UDY/UDZ et VDX/VDY/VDZ (voir ci-dessous). Pourspécifier un vecteur de contrôle complet, cette liste doit avoir width*height*4 éléments, parexemple pour un patch de largeur 2 et de hauteur 2, spécifiez 16 valeurs : "-cv {0.0 0.00.0 1.0 1.0 0.0 0.0 1.0 2.0 0.0 0.0 1.0 2.0 1.0 0.0 1.0}".∗ "-cn": le vecteur de contrôle du nouveau patch. La valeur de cette option est un nom de

variable (avec un tableau et un espace de noms optionnels). La valeur de cette variable doitêtre compatible avec l’option "-cv" ci-dessus.∗ "-udx" : la valeur de cette option spécifie la distance des points de contrôle créés automa-

tiquement dans la dimension x entre les points d’une ligne (dimension paramétrique U, lelong de la largeur), la valeur par défaut est 0.25.

Page 350: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

6. Interface de script 350

∗ "-udy" : la valeur de cette option spécifie la distance des points de contrôle créés automa-tiquement dans la dimension y entre les points d’une ligne (dimension paramétrique U, lelong de la largeur), la valeur par défaut est 0.0.∗ "-udz" : la valeur de cette option spécifie la distance des points de contrôle créés automa-

tiquement dans la dimension z entre les points d’une rangée (dimension paramétrique U, lelong de la largeur), la valeur par défaut est 0.0∗ "-vdx" : la valeur de cette option spécifie la distance des points de contrôle créés automa-

tiquement dans la dimension x entre les points d’une colonne (dimension paramétrique V,le long de la hauteur), la valeur par défaut est 0.0.∗ "-vdy" : la valeur de cette option spécifie la distance des points de contrôle créés automa-

tiquement dans la dimension y entre les points d’une colonne (dimension paramétrique V,le long de la hauteur), la valeur par défaut est 0.25.∗ "-vdz" : la valeur de cette option spécifie la distance des points de contrôle créés automa-

tiquement dans la dimension z entre les points d’une colonne (dimension paramétrique V,le long de la hauteur), la valeur par défaut est 0.0∗ "-center" : Si la valeur de l’option "-center" est 1, le nouveau patch sera centré. La

valeur par défaut est 0, pas de centrage. Cette option n’est en vigueur que si aucune option"-cv" n’est spécifiée.∗ "-createmp" : L’option "-createmp" active la création de points multiples. La

valeur par défaut est 0.

Exemples:

1. "crtOb NPatch"crée une zone plane de largeur 4, hauteur 4, uorder 4, vorder 4, vecteurs de noeuds NURBSstandard ( serrés), points de contrôle disposés dans une grille équidistante dans le plan XYà partir 0 0 0 to 0.75 0.75 0 (tous les poids à 1).

2. "crtOb NPatch -vdy 0 -vdz 0.25"crée le même patch que ci-dessus dans le plan XZ (plan de sol).

3. "crtOb NPatch -udy 0.25"crée une version découpée du patch NURBS standard dans le plan XY.

4. "crtOb NPatch -udy 0.25 -vdz 0.25"crée une version découpée en 3D du patch NURBS standard.

5. "crtOb NPatch -width 2 -height 2 -center 1 -udx 2 -vdy 2"crée un patch centré de largeur 2, hauteur 2, uorder 2, vorder 2, vecteurs de noeuds NURBSstandard (clampés), points de contrôle en -1 0 0, 1 0 0, -1 1 0, 1 1 0 (tous lesz poids à 1).

6. "crtOb NPatch -width 3 -height 2 -uorder 2 -cv {-1 0 1 1 1 01 1 -1 0 0 1 1 0 0 1 -1 1 0 1 1 1 0 1}"crée une pièce angulaire dans les plans XZ et XY (supprimer -uorder 2 pour obtenirune forme lisse).

Dans les versions de Ayam antérieures à la version 1.17, les correctifs NURBS n’acceptaientque l’argument " -width " et " -height ". Voir aussi la section 4.6.1 Patch NURBS(NPatch) (page 166).

Page 351: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

6. Interface de script 351

– "IPatch" : Les patches interpolés acceptent les arguments suivants :∗ "-width": largeur du nouveau patch, la largeur par défaut est de 4.∗ "-height": hauteur du nouveau patch, la hauteur par défaut est de 4.∗ "-uorder": l’ordre du nouveau patch dans la dimension paramétrique U, l’ordre est par

défaut de 4. Si une valeur supérieure à la largeur est spécifiée, l’ordre sera rendu identiqueà la valeur de la largeur. Une valeur de 0 désactive l’interpolation le long de U.∗ "-ukt": le type de paramétrage U, doit être l’un des suivants : 0 – Chordal (par défaut), 1

– Centripetal, 2 – Uniform.∗ "-vorder": l’ordre du nouveau patch en dimension paramétrique V, l’ordre est par défaut

de 4. Si une valeur supérieure à la hauteur est spécifiée, l’ordre sera rendu identique à lavaleur de la hauteur. Une valeur de 0 désactive l’interpolation le long de V.∗ "-vkt": le type de paramétrage V, doit être l’un des suivants : 0 – Chordal (par défaut), 1

– Centripetal, 2 – Uniform.∗ "-deriv_u": le mode dérivé final pour U, doit être l’un des suivants : 0 – None (par

défaut), 1 – Automatic, ou 2 – Manual. En mode manuel, les vecteurs dérivés completsdoivent être fournis via "-ederiv_u" et "-sderiv_u".∗ "-edlen_u": la longueur des dérivés finaux calculés automatiquement à la fin du patch

en U (par défaut 0.125).∗ "-sdlen_u": la longueur des dérivés de fin calculés automatiquement au début du patch

en U (par défaut 0.125).∗ "-ederiv_u": les dérivés finaux pour U à la fin du patch. La valeur de cette option est

une liste de 3*height nombres à virgule flottante. Il n’y a pas de valeur par défaut.∗ "-sderiv_u": les dérivés finaux pour U à la fin du patch. La valeur de cette option est

une liste de nombres à virgule flottante de 3*hauteurs. Il n’y a pas de valeur par défaut.∗ "-deriv_v": le mode de dérivation finale pour V, doit être l’un des suivants : 0 – None

(par défaut), 1 – Automatic, ou 2 – Manual. En mode manuel, les vecteurs dérivés completsdoivent être fournis via "-ederiv_v" et "-sderiv_v".∗ "-edlen_v": la longueur des dérivés finaux calculés automatiquement à la fin du patch

en V (par défaut 0.125).∗ "-sdlen_v": la longueur des dérivés de fin calculés automatiquement au début du patch

en V (par défaut 0.125).∗ "-ederiv_v": les dérivés finaux pour le V à la fin du patch. La valeur de cette option est

une liste de nombres à virgule flottante de 3*largeur. Il n’y a pas de valeur par défaut.∗ "-sderiv_v": les dérivés de fin pour le V au début du patch. La valeur de cette option

est une liste de nombres à virgule flottante de 3*largeur. Il n’y a pas de valeur par défaut.∗ "-cv": le vecteur de contrôle du nouveau patch. La valeur de cette option est une liste de

nombres à virgule flottante qui décrivent les coordonnées 3D non rationnelles des points dedonnées à interpoler.Cette liste peut également ne spécifier qu’un seul point, qui est alors pris comme pointde départ et UDX/UDY/UDZ et VDX/VDY/VDZ (voir ci-dessous) sont utilisés pour créerautomatiquement les points de contrôle manquants.Pour spécifier un vecteur de contrôle complet, cette liste doit comporter width*height*3éléments, par exemple pour une parcelle de largeur 2 et de hauteur 2, spécifiez 12 valeurs :"-cv {0.0 0.0 0.0 1.0 0.0 0.0 2.0 0.0 0.0 2.0 1.0 0.0}".∗ "-cn": le vecteur de contrôle du nouveau patch. La valeur de cette option est un nom de

variable (avec un tableau et un espace de noms optionnels). La valeur de cette variable doitêtre compatible avec l’option "-cv" ci-dessus.∗ "-udx" : la valeur de cette option spécifie la distance des points de contrôle créés automa-

Page 352: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

6. Interface de script 352

tiquement dans la dimension x entre les points d’une ligne (dimension paramétrique U, lelong de la largeur), la valeur par défaut est 0.25.∗ "-udy" : la valeur de cette option spécifie la distance des points de contrôle créés automa-

tiquement dans la dimension y entre les points d’une rangée (dimension paramétrique U, lelong de la largeur), la valeur par défaut est 0.0.∗ "-udz" : la valeur de cette option spécifie la distance des points de contrôle créés automa-

tiquement dans la dimension z entre les points d’une rangée (dimension paramétrique U, lelong de la largeur), la valeur par défaut est 0.0∗ "-vdx" : la valeur de cette option spécifie la distance des points de contrôle créés automa-

tiquement dans la dimension x entre les points d’une colonne (dimension paramétrique V,le long de la hauteur), la valeur par défaut est 0.0.∗ "-vdy" : la valeur de cette option spécifie la distance des points de contrôle créés automa-

tiquement dans la dimension y entre les points d’une colonne (dimension paramétrique V,le long de la hauteur), la valeur par défaut est 0.25.∗ "-vdz" : la valeur de cette option spécifie la distance des points de contrôle créés automa-

tiquement dans la dimension z entre les points d’une colonne (dimension paramétrique V,le long de la hauteur), la valeur par défaut est 0.0∗ "-center" : Si la valeur de l’option "-center" est 1, le nouveau patch sera centré. La

valeur par défaut est 0, pas de centrage. Cette option n’est en vigueur que si aucune option"-cv" n’est spécifiée.

Exemples:

1. "crtOb IPatch"crée un patch plat de largeur 4, hauteur 4, uorder 4, vorder 4, paramétrage de la corde, pointsde données disposés dans une grille équidistante dans le plan XY à partir 0 0 0 to 0.75 0.750.

2. "crtOb IPatch -vdy 0 -vdz 0.25"crée le même patch que ci-dessus dans le plan XZ (plan de sol).

3. "crtOb IPatch -udy 0.25"crée une version découpée de l’IPatch standard dans le plan XY.

4. "crtOb IPatch -udy 0.25 -vdz 0.25"crée une version découpée en 3D de l’IPatch standard.

5. "crtOb IPatch -width 3 -height 3 -center 1 -udx 2 -vdy 2"crée un patch centré de largeur 3, hauteur 3, uorder 3 et vorder 3.

Voir aussi la section 4.6.2 Les patch interpolés (IPatch) (page 171).

Page 353: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

6. Interface de script 353

– "PatchMesh": Les patch maillés acceptent les arguments suivants :∗ "-type": Le type de maillage du nouveau patch doit être l’un des suivants : 0 – bilinéaire

ou 1 – bicubique, par défaut 1.∗ "-width": largeur du nouveau patch, la largeur par défaut est de 4. Les valeurs valides

pour les mailles de patchs bicubes dépendent de la fermeture et de la taille des pas dans lesens U. Voir également la discussion dans la section 4.6.4 Propriété PatchMeshAttr (page174).∗ "-height": Les valeurs valides pour les mailles de patchs bicubes dépendent de la fer-

meture et de la taille des marches dans la direction V. Voir également la discussion dans lasection 4.6.4 Propriété PatchMeshAttr (page 174).∗ "-closeu": détermine si le maillage du patch est fermé dans la direction du U ; doit être

soit 0 – ouvert (par défaut) ou 1 – fermé.∗ "-closev": détermine si le maillage du patch est fermé dans la direction V ; doit être soit

0 – ouvert (par défaut) ou 1 – fermé.∗ "-ubt": le type de base U, doit être l’un des suivants : 0 – Bezier (par défaut), 1 – B-

Spline, 2 – Catmull-Rom, 3 – Hermite, 4 – Power, 5 – Custom.∗ "-vbt": le type de base V, doit être l’un des suivants : 0 – Bezier (par défaut), 1 – B-

Spline, 2 – Catmull-Rom, 3 – Hermite, 4 – Power, 5 – Custom.∗ "-ubasis": la base U ; doit être constituée de 16 valeurs flottantes dans l’ordre de la

colonne principale. Si elle est définie, le type de base U sera automatiquement réglé sur"Custom" et la taille du pas doit être spécifiée (si elle est différente de 3).∗ "-ubn": la base U. La valeur de cette option est un nom de variable (avec un tableau et un

espace de noms optionnels). La valeur de cette variable doit être compatible avec l’option"-ubasis" ci-dessus.∗ "-vbasis": la base V ; doit être constituée de 16 valeurs flottantes dans l’ordre de la

colonne principale. S’il est défini, le type de base V sera automatiquement réglé sur Customet la taille de l’échelon doit être spécifiée (si elle est différente de 3).∗ "-vbn": la base V. La valeur de cette option est un nom de variable (avec un tableau et un

espace de noms optionnels). La valeur de cette variable doit être compatible avec l’option"-vbasis" ci-dessus.∗ "-ustep": la taille de l’échelon de base U ; doit être de 1, 2, 3 ou 4. Peut être omis pour

tous les types de base non personnalisés.∗ "-vstep": la taille de l’échelon de base V ; doit être de 1, 2, 3 ou 4. Peut être omis pour

tous les types de base non personnalisés.∗ "-cv": le vecteur de contrôle du nouveau patch maillé. La valeur de cette option est une

liste de nombres à virgule flottante qui décrivent les coordonnées rationnelles 3D des pointsde contrôle.Cette liste peut également ne spécifier qu’un seul point, qui est alors pris comme pointde départ et les points de contrôle manquants sont créés automatiquement à l’aide deUDX/UDY/UDZ et VDX/VDY/VDZ (voir ci-dessous).Pour spécifier un vecteur de contrôle complet, cette liste doit comporter les élémentswidth*height*4, par exemple pour un maillage de pièce bilinéaire de largeur 2 et de hau-teur 2, spécifiez 16 valeurs : "-cv {0.0 0.0 0.0 1.0 1.0 0.0 0.0 1.0 2.00.0 0.0 1.0 2.0 1.0 0.0 1.0}".∗ "-cn": le vecteur de contrôle du nouveau patch maillé. La valeur de cette option est un

nom de variable (avec un tableau et un espace de noms optionnels). La valeur de cettevariable doit être compatible avec l’option "-cv" ci-dessus.∗ "-udx" : la valeur de cette option spécifie la distance des points de contrôle créés automa-

tiquement dans la dimension x entre les points d’une ligne (dimension paramétrique U, le

Page 354: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

6. Interface de script 354

long de la largeur), la valeur par défaut est 0.25.∗ "-udy" : la valeur de cette option spécifie la distance des points de contrôle créés automa-

tiquement dans la dimension y entre les points d’une rangée (dimension paramétrique U, lelong de la largeur), la valeur par défaut est 0.0.∗ "-udz" : la valeur de cette option spécifie la distance des points de contrôle créés automa-

tiquement dans la dimension z entre les points d’une rangée (dimension paramétrique U, lelong de la largeur), la valeur par défaut est 0.0∗ "-vdx" : la valeur de cette option spécifie la distance des points de contrôle créés automa-

tiquement dans la dimension x entre les points d’une colonne (dimension paramétrique V,le long de la hauteur), la valeur par défaut est 0.0.∗ "-vdy" : la valeur de cette option spécifie la distance des points de contrôle créés automa-

tiquement dans la dimension y entre les points d’une colonne (dimension paramétrique V,le long de la hauteur), la valeur par défaut est 0.25.∗ "-vdz" : la valeur de cette option spécifie la distance des points de contrôle créés automa-

tiquement dans la dimension z entre les points d’une colonne (dimension paramétrique V,le long de la hauteur), la valeur par défaut est 0.0∗ "-center" : Si la valeur de l’option "-center" est 1, le nouveau patch sera centré. La

valeur par défaut est 0, pas de centrage. Cette option n’est en vigueur que si aucune option"-cv" n’est spécifiée.

Exemples:

1. "crtOb PatchMesh"crée un patch maillé bicubique plat de largeur 4, hauteur 4, base Bézier, des points decontrôle disposés selon une grille équidistante dans le plan XY à partir de 0 0 0 jusqu’à0.75 0.75 0.

2. "crtOb PatchMesh -vdy 0 -vdz 0.25"crée le même patch maillé que ci-dessus dans le plan XZ (plan de sol).

3. "crtOb PatchMesh -udy 0.25"crée une version découpée du patch maillé standard dans le plan XY.

4. "crtOb PatchMesh -udy 0.25 -vdz 0.25"crée une version découpée en 3D du patch maillé standard.

5. "crtOb PatchMesh -type 0 -width 3 -height 3 -center 1 -udx 2-vdy 2"crée un grand patch maillé bilinéaire centré de largeur 3 et de hauteur 3.

Voir aussi la section 4.6.4 Les patchs maillés (PatchMesh) (page 174).

Page 355: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

6. Interface de script 355

– "PolyMesh": Les maillages polygonaux acceptent les paramètres suivants :∗ "-polys": la valeur de cette option spécifie le nombre de polygones/faces dans le mail-

lage. Par défaut, le nombre de polygones est de 0.∗ "-loops": la valeur de cette option précise le nombre de boucles par polygone. Il s’agit

donc d’une liste de valeurs entières positives d’une longueur égale à la valeur de l’option"-polys". La valeur par défaut de cette option est une liste de longueur correcte avectous les éléments mis à 1 (seuls les polygones normaux, sans trous, sont spécifiés).∗ "-nverts": la valeur de cette option précise le nombre de sommets par boucle. Il s’agit

donc d’une liste de valeurs entières positives d’une longueur égale à la somme de tousles éléments de l’option "-loops". La valeur par défaut de cette option est une liste delongueur correcte avec tous les éléments fixés à 3 (seuls les triangles sont dans la maille).∗ "-iverts": la valeur de cette option spécifie tous les indices (basés sur le zéro) des

sommets de toutes les boucles. Il s’agit donc d’une liste de valeurs entières d’une longueurégale à la somme de tous les éléments de l’option "-nverts". La valeur par défaut decette option est une liste de longueur appropriée dont les éléments sont fixés à une séquenced’entiers de sorte que les points de contrôle sont utilisés dans le même ordre que celuispécifié par l’option "-cv" (0, 1, 2, 3, . . .)∗ "-cv": les points de contrôle du nouveau maillage. La valeur de cette option est une

liste de nombres à virgule flottante qui décrivent les coordonnées 3D (non rationnelles) despoints de contrôle. Les indices spécifiés via l’option "-iverts" pointent vers cette liste.Si l’option "-vnormals" est 1, les normales des sommets sont également spécifiées danscette liste (directement après les valeurs des coordonnées de chaque point de contrôle) etla distance de foulée est 6, sinon la distance de foulée est 3. Cette liste doit avoir unelongueur de foulée correspondant à la valeur la plus élevée de la liste fournie par l’option"-iverts". La valeur par défaut de cette option est une liste vide, ce qui implique quecette option doit être spécifiée pour créer un objet PolyMesh non vide.∗ "-cn": les points de contrôle du nouveau maillage. La valeur de cette option est un nom

de variable (avec un tableau et un espace de noms optionnels). La valeur de cette variabledoit être compatible avec l’option "-cv" ci-dessus.∗ "-vnormals": détermine si les normales des sommets sont présentes. La valeur par

défaut est 0 – aucune normale de sommet n’est présente.

Exemples:

1. "crtOb PolyMesh -p 1 -cv {0 0 0 1 0 0 0 1 0}"crée un polymesh avec une seule face triangulaire.

2. "crtOb PolyMesh -p 2 -cv {0 0 0 1 0 0 1 1 0 0 1 0} -iv {0 1 20 2 3}"crée un polymesh avec deux faces triangulaires connectées (partageant un sommet).

3. "crtOb PolyMesh -p 3 -cv {0 0 0 1 0 0 1 1 0 0 1 0 1.5 0 01.5 1 0} -iv {0 1 2 0 2 3 1 4 5 2} -nv {3 3 4}"rée un polymesh avec deux triangles et un quadrilatère tous connectés (partage des sommet)

4. "crtOb PolyMesh -p 1 -loops {2} -cv {0 0 0 1 0 0 0 1 0 .25.25 0 .5 .25 0 .25 .5 0}"crée un polymesh avec une face triangulaire qui a un trou triangulaire.

Notes:Outre la vérification des longueurs des tableaux, des indices maximums et du nombre minimumde sommets par boucle, il n’y a pas la vérification des erreurs. Parmi les erreurs non détectées,on peut citer : les polygones dégénérés ou non plans, les boucles de trous géométriquementextérieurs ou touchant la boucle de contour, les ordres d’enroulement des boucles en désaccordentre les faces, les mailles non manifestes, les points de contrôle non utilisés. Ces erreurs peuvent

Page 356: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

6. Interface de script 356

être problématiques pour les étapes de traitement ultérieures – certaines peuvent même passerinaperçues dans l’Ayam et ne seront détectées que plus tard dans d’autres Voir aussi la section4.8.1 L’objet PolyMesh (page 221).

Page 357: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

6. Interface de script 357

– "SDMesh": Les maillages de subdivision acceptent les arguments suivants:∗ "-scheme": la valeur de cette option précise le schéma de subdivision, elle peut être fixée

à 0 – Catmull-Clark ou 1 – Boucle seulement. La valeur par défaut est 0.∗ "-faces": la valeur de cette option précise le nombre de faces dans le maillage. Le

nombre de faces est par défaut de 0.∗ "-nverts": Nonmbre de sommets par face. Il s’agit donc d’une liste de valeurs entières

positives d’une longueur égale au nombre de faces. La valeur par défaut de cette optionest une liste de longueur correcte avec tous les éléments définis à 3 (seuls les triangles sontdans le maillage).∗ "-verts": la valeur de cette option spécifie tous les indices (basés sur le zéro) des som-

mets de toutes les faces. Il s’agit donc d’une liste de valeurs entières d’une longueur égale àla somme de tous les éléments de l’option "-nverts". La valeur par défaut de cette optionest une liste de longueur appropriée dont les éléments sont fixés à une séquence d’entiersde sorte que les points de contrôle sont utilisés dans le même ordre que celui spécifié parl’option "-cv" (0, 1, 2, 3, . . .).∗ "-cv": La valeur de cette option est une liste de nombres à virgule flottante qui décrivent

les coordonnées 3D (non rationnelles) des points de contrôle. Les indices spécifiés vial’option "-verts" pointent vers cette liste. Cette liste doit avoir une longueur de 3 mul-tipliée par la valeur la plus élevée de la liste fournie via l’option "-verts". La valeur pardéfaut de cette option est une liste vide, ce qui implique que cette option doit être spécifiéepour créer un objet SDMesh non vide.∗ "-cn": les points de contrôle du nouveau maillage. La valeur de cette option est un nom

de variable (avec un tableau et un espace de noms optionnels). La valeur de cette variabledoit être compatible avec l’option "-cv" ci-dessus.∗ "-tags": la valeur de cette option spécifie un nombre de balises. Il s’agit donc d’une liste

de valeurs entières positives de longueur quelconque. Les seules valeurs autorisées sont 0– trous, 1 – coins, 2 – plis, et 3 – interpolateboundary. La valeur par défaut de cette optionest une liste vide : pas de balises.∗ "-args": la valeur de cette option spécifie le nombre d’arguments entiers et à virgule

flottante par balise. Il s’agit donc d’une liste de valeurs entières positives de longueurdouble du nombre de balises. Les entrées paires spécifient le nombre d’entiers et les entréesimpaires le nombre d’arguments en virgule flottante par balise. Le contenu de cette liste estpartiellement dicté par l’option "-tags", par exemple une entrée de pli a au moins deuxarguments entiers et un argument à virgule flottante. La valeur par défaut de cette optionest une liste de longueur appropriée, avec tous les éléments mis à zéro (aucune balise n’ad’argument).∗ "-intargs": la valeur de cette option spécifie les arguments entiers de toutes les balises.

Il s’agit donc d’une liste de valeurs entières de la somme des longueurs de tous les élémentspairs donnée par l’option "-args".∗ "-doubleargs": la valeur de cette option spécifie les arguments en virgule flottante de

toutes les balises. Il s’agit donc d’une liste de valeurs doubles de la somme des longueursde tous les éléments impairs donnés par l’option "-args".

Page 358: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

6. Interface de script 358

Exemples:

1. "crtOb SDMesh -f 4 -v {0 1 3 1 2 3 0 3 2 0 2 1} -cv {0 0 0 10 0 0 0 -1 0.5 1 -0.5}"crée un maillage tétraédrique (quatre faces triangulaires).

2. "crtOb SDMesh -f 4 -v {0 1 3 1 2 3 0 3 2 0 2 1} -cv {0 0 01 0 0 0 0 -1 0.5 1 -0.5} -tags {1} -args {1 1} -intargs {0}-doubleargs {3.0}"crée un maillage tétraédrique avec un coin semi-tranchant.

3. "crtOb SDMesh -f 4 -v {0 1 3 1 2 3 0 3 2 0 2 1} -cv {0 0 0 10 0 0 0 -1 0.5 1 -0.5} -tags {1} -args {2 1} -intargs {0 1}-doubleargs {10.0}"crée une maille tétraédrique avec un pli.

Notes:Outre la vérification des longueurs des tableaux, des indices maximums et du nombre minimumde sommets par face, il n’y a pas la vérification des erreurs. Les erreurs non détectées com-prennent : les faces dégénérées ou non planes, les faces avec un nombre de sommets inadéquat(pour le schéma de subdivision sélectionné), les maillages non manifestes, les points de contrôlenon utilisés, les arguments de balises erronés. Ces erreurs peuvent être problématiques pourles étapes de traitement ultérieures – certaines peuvent même passer inaperçues dans Ayam etne seront détectées que plus tard dans d’autres applications. Voir aussi la section 4.8.2 L’objetSDMesh (page 223).

Page 359: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

6. Interface de script 359

– "Level": ces objets peuvent être dotés d’un argument de type supplémentaire, cet argumentpeut être l’un des suivants "0" (niveau - par défaut), "1" (union), "2" (intersection), "3"(différence), ou "4" (primitive).Exemples:

1. "crtOb Level 0"crée un objet de niveau simple.

2. "crtOb Level 3"crée un objet de niveau de différence CSG. (????)

Voir aussi la section 4.2.6 L’objet Level (niveau) (page 125).

– "Material": Les matériaux doivent être accompagnés d’un argument supplémentaire indi-quant le nom du nouveau matériau. Si un matériau portant le nom choisi existe déjà, aucun objetne sera créé.Exemple :

1. "crtOb Material Wood"crée un matériau appelé "Wood".

Voir aussi la section 4.2.5 Les matériaux (page 122).

– "Instance": crée une instance de l’objet sélectionné.Exemple :

1. "crtOb Sphere; selOb -1; crtOb Instance"crée un objet "Sphere" et une instance de celui-ci.

Voir aussi la section 4.2.7 L’objet Instance (page 128).

– ...

• Exemple : Créer une sphère et mettre à jour l’interface graphique : "crtOb Sphere; uS; rV".

Il existe des commandes d’aide, qui créent certaines courbes souvent utilisées :

crtNCircle – créé un cercle NURBS:

• Synopsis: "crtNCircle [-r radius] [-a arc]"

• Tâche de fond : Oui, Effacer : Non, Sûr : Oui

• Description: Cette commande crée une courbe NURBS circulaire avec un rayon défini par l’option-r et un arc défini par l’option -a. La courbe commence toujours sur l’axe X positif. Le rayon estpar défaut de 1,0 et l’arc de 360,0. L’option arc prend en charge les valeurs négatives. Voir aussi lasection 5.2.2 Outil cercle NURBS (NURBCircle) (page 273).

crtClosedBS – créer une B-Spline fermée (circulaire) :

• Synopsis: "crtClosedBS [-s sections] [-o order] [-a arc] [-r radius]"

• Tâche de fond : Oui, Effacer : Non, Sûr : Oui

• Description: Cette commande crée une courbe B-Spline circulaire avec le nombre de sections (pardéfaut 6), l’ordre (par défaut 4), l’arc (par défaut 360.0, des valeurs négatives sont autorisées) et lerayon (par défaut 1.0) souhaités. La courbe commence toujours sur l’axe X positif. Voir aussi lasection 5.2.1 Outil courbes B-spline circulaires (Circular B-Spline) (page 272).

crtNRect – créer une courbe NURBS rectangulaire :

• Synopsis: "crtNRect [-w width] [-h height]"

Page 360: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

6. Interface de script 360

• Tâche de fond : Oui, Effacer : Non, Sûr : Oui

• Description: Cette commande crée une courbe NURBS rectangulaire centrée de deux fois la largeuret la hauteur données dans le plan XY.

Page 361: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

6. Interface de script 361

crtTrimRect – créer une courbe de coupe rectangulaire de délimitation :• Synopsis: "crtTrimRect"

• Tâche de fond : Oui, Effacer : Non, Sûr : Oui

• Description: Cette commande crée une courbe NURBS rectangulaire qui correspond à l’espace deparamètres de l’objet NPatch actuellement sélectionné (ou de l’objet parent actuel, s’il s’agit d’unNPatch). The "CreateAtMark" cette option est ignorée. Voir aussi la section 5.2.4 Outil rectanglede trim (TrimRect) (page 275).

delOb – supprime un(des) object(s):• Synopsis: "delOb"

• Tâche de fond : Oui, Effacer : Non, Sûr : Oui

• Description: Supprimez le ou les objets sélectionnés et leurs enfants de la scène. Cette opérationéchoue pour l’objet racine. Cette opération peut échouer pour les objets maîtres (objets avec in-stances/références) ou pour les objets parents avec des objets maîtres parmi leurs enfants. En casd’échec, une erreur sera signalée et le ou les objets non supprimables seront déplacés à la fin duniveau actuel. L’objet racine, en revanche, ne sera jamais déplacé. Voir aussi 6.2.3 candelOb (page362).

6.2.3 Interroger les objets

Ces commandes permettent d’interroger les objets sur différents aspects.

getType:• Synopsis: "getType [varname]"

• Tâche de fond : Oui, Effacer : Non, Sûr : Oui

• Description: Cette commande écrit le type de l’objet sélectionné dans la variable désignée parl’argument varname. Les types sont les chaînes de caractères bien connues qui sont affichées dansla zone de liste de la hiérarchie si les objets ne sont pas nommés (NPatch, NCurve, Sphere, etc.).Si aucun nom de variable n’est spécifié, la commande renvoie le(s) résultat(s) correspondant(s).1 Siplusieurs objets sont sélectionnés, une liste est renvoyée.

getName:• Synopsis: "getName [-s] [varname]"

• Tâche de fond : Oui, Effacer : Non, Sûr : Oui

• Description: Cette commande écrit le nom de l’objet sélectionné dans la variable désignée parl’argument varname. Si l’objet n’a pas de nom, un message d’avertissement sera émis (sauf sil’option "-s" est donnée). Si aucun nom de variable n’est spécifié, la commande renvoie le(s) résul-tat(s) correspondant(s). 2 Si plusieurs objets sont sélectionnés, une liste est renvoyée.Voir aussi la section 6.2.26 nameOb (page 418).

hasChild:• Synopsis: "hasChild"

• Tâche de fond : Oui, Effacer : Non, Sûr : Oui

• Description: Cette commande renvoie 1 si l’objet sélectionné a des objets enfants, sinon 0 est renvoyé.Si plusieurs objets sont sélectionnés, une liste est renvoyée.

1 Depuis 1.25. 2 Depuis 1.25.

Page 362: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

6. Interface de script 362

hasMat – a un material :

• Synopsis: "hasMat"

• Tâche de fond : Oui, Effacer : Non, Sûr : Oui

• Description: Cette commande renvoie 1 si un matériau est affecté à l’objet sélectionné, sinon 0 estrenvoyé. Si plusieurs objets sont sélectionnés, une liste est renvoyée.

hasRefs – a une reference :

• Synopsis: "hasRefs"

• Tâche de fond : Oui, Effacer : Non, Sûr : Oui

• Description: Cette commande renvoie 1 si l’objet sélectionné a des références (par exemple si c’estun maître), sinon 0 est renvoyé. Si plusieurs objets sont sélectionnés, une liste est renvoyée.

candelOb – peut être supprimé :

• Synopsis: "candelOb"

• Tâche de fond : Oui, Effacer : Non, Sûr : Oui

• Description: Cette commande renvoie 1 si le ou les objets sélectionnés peuvent être supprimés sanserreur et sans déplacer les objets à la fin du niveau actuel, sinon 0 est renvoyé.

hasTrafo – a une transformation :

• Synopsis: "hasTrafo [-r |-s |-t]"

• Tâche de fond : Oui, Effacer : Non, Sûr : Oui

• Description: Cette commande renvoie 1 si l’objet sélectionné n’a pas des attributs de transformationpar défaut, sinon 0 est renvoyé. Si plusieurs objets sont sélectionnés, une liste est renvoyée.Si le drapeau "-r" est fourni, la commande ne vérifie que les attributs de rotation.Si le drapeau "-s" est fourni, la commande ne vérifie que les attributs de l’échelle.Si le drapeau "-t" est fourni, la commande ne vérifie que les attributs de translation.

isCurve:

• Synopsis: "isCurve"

• Tâche de fond : Oui, Effacer : Non, Sûr : Oui

• Description: Cette commande renvoie 1 si l’objet sélectionné est (ou fournit / convertit en) une courbeparamétrique, sinon 0 est renvoyé. Si plusieurs objets sont sélectionnés, une liste est renvoyée.

isSurface:

• Synopsis: "isSurface"

• Tâche de fond : Oui, Effacer : Non, Sûr : Oui

• Description: Cette commande renvoie 1 si l’objet sélectionné est (ou fournit / convertit en) une surfaceparamétrique, sinon 0 est renvoyé. Si plusieurs objets sont sélectionnés, une liste est renvoyée.

Page 363: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

6. Interface de script 363

getBB – obtenir la boîte de délimitation :

• Synopsis: "getBB"

• Tâche de fond : Oui, Effacer : Non, Sûr : Oui

• Description: Cette commande renvoie la boîte de délimitation parallèle à l’axe du ou des objets sélec-tionnés sous la forme d’une liste de six valeurs doubles (xmin, ymin, zmin, xmax, ymax, zmax).Notez que pour plusieurs objets sélectionnés, l’union de toutes les limites individuelles sera renvoyéeet non pas les limites individuelles dans une liste.

getPlaneNormal – obtenir le plan normal d’un objet :

• Synopsis: "getPlaneNormal [-t]"

• Tâche de fond : Oui, Effacer : Non, Sûr : Oui

• Description: Cette commande renvoie le plan normal du ou des objets sélectionnés sous la formed’une liste de trois valeurs doubles.Si l’option "-t" est donnée, la normale sera transformée par les attributs de transformation des objets.

Si l’objet n’est pas plan, une normale moyenne sera calculée. Si la normale ne peut pas être calculéeparce que, par exemple, la courbe sélectionnée est une ligne droite ou dégénérée, le vecteur retournésera 0.0, 0.0, 0.0.

Cette commande supporte des types d’objets quelconques qui ont juste besoin de fournir leurs points.

isClosed:

• Synopsis: "isClosed [-u |-v]"

• Tâche de fond : Oui, Effacer : Non, Sûr : Oui

• Description: Cette commande renvoie 1 si l’objet sélectionné est une courbe paramétrique fermée ouune surface, sinon 0 est renvoyé.1 Le paramètre optionnel "-u"/"-v" détermine la dimension d’unesurface à vérifier.

Si plusieurs objets sont sélectionnés, une liste est renvoyée.

Cette commande supporte des types d’objets quelconques qui n’ont besoin que de fournir des courbesou des surfaces NURBS.

isPlanar – vérifier la planéité :

• Synopsis: "isPlanar"

• Tâche de fond : Oui, Effacer : Non, Sûr : Oui

• Description: Cette commande renvoie 1 si l’objet sélectionné est une courbe paramétrique plane ouune surface, sinon 0 est renvoyé.2 Si plusieurs objets sont sélectionnés, une liste est renvoyée.

Cette commande supporte des types d’objets quelconques qui n’ont besoin que de fournir des courbesou des surfaces NURBS.

1 Depuis 1.27. 2 Depuis 1.27.

Page 364: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

6. Interface de script 364

isDegen – vérifier la dégénérescence :

• Synopsis: "isDegen"

• Tâche de fond : Oui, Effacer : Non, Sûr : Oui

• Description: Cette commande renvoie 1 si l’objet sélectionné est une courbe paramétrique dégénérée(forme de point) ou une surface (forme de point ou de ligne), sinon 0 est renvoyé.1 Si plusieurs objetssont sélectionnés, une liste est renvoyée.

Cette commande prend en charge des types d’objets quelconques qui ont juste besoin de fournir descourbes ou des surfaces NURBS.

isParent:

• Synopsis: "isParent"

• Tâche de fond : Oui, Effacer : Non, Sûr : Oui

• Description: Cette commande renvoie 1 si l’objet sélectionné est un parent potentiel, sinon 0 estrenvoyé.2 Si plusieurs objets sont sélectionnés, une liste est renvoyée.

isTrimmed:

• Synopsis: "isTrimmed"

• Tâche de fond : Oui, Effacer : Non, Sûr : Oui

• Description: Cette commande renvoie 1 si l’objet sélectionné est une surface paramétrique non triv-ialement découpée, sinon 0 est renvoyé.3 Si plusieurs objets sont sélectionnés, une liste est renvoyée.

Cette commande supporte des types d’objets quelconques qui ont juste besoin de fournir une surfaceNURBS.

1 Depuis 1.27. 2 Depuis 1.27. 3 Depuis 1.27.

Page 365: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

6. Interface de script 365

6.2.4 Sélectionner des Objets

Ces commandes sont probablement les plus importantes, car de nombreuses autres commandes de l’interfacede script ne fonctionnent que sur des objets sélectionnés :

selOb – selectionner un(des) objet(s):

• Synopsis: "selOb ([-get |-end |-clear] | [index] | [first-last])"

• Tâche de fond : Oui, Effacer : Non, Sûr : Oui

• Description: Utilisez cette commande pour définir ou effacer la sélection actuelle, index peut êtreun indice unique (basé sur le zéro), une liste ordonnée d’indices ou une plage.Si l’option "-get" est spécifiée, la sélection actuelle sera retournée tout comme la commande"getSel" le fait.Si aucun indice n’est donné ou si l’option "-clear" est spécifiée, la sélection actuelle sera effacée.Si l’indice unique est -1 ou si l’option "-end" est spécifiée, le dernier objet du niveau actuel serasélectionné.

• Exemples:

1. "selOb"efface la sélection actuelle,

2. "selOb 0"sélectionne le premier objet du niveau en cours,

3. "selOb 0 1"sélectionne les deux premiers objets du niveau actuel, et

4. "selOb 0 3-8"sélectionne le premier et du quatrième jusqu’au neuvième objet du niveau actuel, et

5. "selOb 1-end"sélectionne tous les objets du niveau en cours sauf le premier.

Page 366: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

6. Interface de script 366

sL – sélectionne le(s) dernier(s) objet(s) :

• Synopsis: "sL [count]"

• Tâche de fond : Non, Effacer : Non, Sûr : Oui

• Description: Sélectionne le dernier objet du niveau actuel et, c’est exécuté dans l’interpréteur Ayam,met à jour l’interface graphique.Si un argument est fourni, il détermine le nombre d’objets à sélectionner. Si elle est exécutée dansl’interpréteur sécurisé (par exemple à partir d’un script d’objets Script), cette commande créera unesélection cachée. Cette commande est souvent appelée dans une séquence après la création d’unnouvel objet comme celui-ci :

# create objectcrtOb NCurve# update treeuCR# select new objectsL

Dans les scripts d’objets de script, l’exemple de séquence de commande ci-dessus omettrait la com-mande "uCR", car l’accès à l’interface graphique est de toute façon bloqué dans ce contexte :

# create objectcrtOb NCurve# select new objectsL

• Note: Dans l’interprète principal de Tcl, sL est une procédure qui fonctionne sur la based’informations dans le seul contexte de Tcl. L’appel de sL sur des données de hiérarchie obsolètes(par exemple en omettant uS ou uCR après la création de l’objet) entraînera éventuellement la sélec-tion de mauvais objets.

hSL – cache la sélection des derniers objets :

• Synopsis: "hSL [count]"

• Tâche de fond : Oui, Effacer : Non, Sûr : Non

• Description: Sélectionne le dernier objet du niveau actuel, mais ne met pas à jour l’interfacegraphique.Si un argument est fourni, il détermine le nombre d’objets à sélectionner.Cette commande n’a pas besoin d’une hiérarchie mise à jour dans le contexte Tcl. En fait, elle esttotalement ignorante de l’interface graphique et peut donc être utilisée sans danger directement après,par exemple, la création d’un objet basé sur un script.Note: Avant Ayam 1.18, cette commande était disponible dans l’interprète sécurisé. Ce n’est plus lecas, utilisez plutôt "sL".

Page 367: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

6. Interface de script 367

6.2.5 Sélection des points

Cette commande permet de manipuler la sélection des points.

selPnts – sélection des points :

• Synopsis: "selPnts [(-count |-get) [vname] | -has | -all | -none | index1index2 ...]"

• Tâche de fond : Oui, Effacer : Non, Sûr : Oui

• Description:– Si elle est appelée sans arguments, cette commande désélectionne tous les points.

– Si l’argument est "-count", cette commande place le nombre de tous les points actuellementsélectionnés dans la variable spécifiée par l’argument "vname". Si aucun nom de variable n’estfourni, le nombre est renvoyé.1

– Si l’argument est "-get", cette commande place les indices de tous les points actuellementsélectionnés dans la variable spécifiée par l’argument "vname". Si aucun nom de variablen’est fourni, les indices sont renvoyés.2

– Si l’argument est "-has", cette commande renvoie "1" si au moins un des objets sélectionnésa des points sélectionnés. Sinon, la commande renvoie "0".3

– Si l’argument est "-all", cette commande sélectionne tous les points.

– Si l’argument est "-none", cette commande désélectionne tous les points.

– Si l’argument contient un index, le ou les points correspondants seront ajoutés à la sélection ;les points déjà sélectionnés ne seront pas désélectionnés. L’index est basé sur zéro et toujoursunidimensionnel (même pour les surfaces). Plusieurs indices peuvent être fournis.

• Notes: Contrairement à l’action de modélisation des points de repère, la sélection d’un point uniqued’un point multiple (des objets NCurve et NPatch) via cette commande ne sélectionne que ce pointunique.

• Exemples : Étant donné qu’un seul objet NCurve est sélectionné,

1. "selPnts -all"sélectionne tous les points de la courbe, et

2. "selPnts 0 2"sélectionne le premier et le troisième point de la courbe.

1 Depuis 1.26. 2 Depuis 1.26. 3 Depuis 1.26.

Page 368: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

6. Interface de script 368

6.2.6 Manipuler les propriétés

Ces procédures permettent d’accéder facilement aux propriétés des objets à partir de l’interface de script :1

getProperty – récupére la valeur d’une propriété unique

• Synopsis: "getProperty propname(elemname) [varname] [-s |-i]"

• Tâche de fond : Oui, Effacer : Non, Sûr : Oui, Type : Procédure

• Description: Cette procédure obtient un élément de propriété unique nommé elemname à partir de lapropriété nommée propname de l’objet actuellement sélectionné et écrit le résultat dans la variablenommée varname. Plusieurs objets sélectionnés sont pris en charge et conduisent à une liste devaleurs produites dans la variable de sortie.2

Si "varname" est omis, la procédure retournera la ou les valeurs extraites, sinon la valeur retournéesera "1" pour les opérations réussies et "0" autrement.3

Si l’option "-s" est spécifiée, aucune erreur ne sera signalée.4

Si l’option "-i" est spécifiée, les balises "RP" seront ignorées.5

• Notes: Cette procédure est plus lente que l’appel de la procédure d’extraction appropriée et l’accèsdirect au tableau de données associé à la propriété en question, surtout si plusieurs valeurs doiventêtre extraites.Toutefois, le nom du tableau de données et la procédure appropriée sont déduits automatiquement etles erreurs sont détectées et signalées. En outre, l’initialisation du type d’objet potentiel et les balises"NP"/"RP" sont également traitées de manière transparente.Voir ci-dessous pour plus d’informations concernant l’accès direct à la valeur des propriétés.

• Exemple : Étant donné qu’un seul objet Sphère est sélectionné, son rayon peut être récupéré dans lavariable "r" facilement en utilisant la commande

getProperty SphereAttr(Radius) r

Contrairement à l’utilisation de "getProperty", voici un exemple équivalent pour l’accès direct(rapide) aux valeurs des propriétés :

getPropset r $::SphereAttrData(Radius)

Voir aussi la section 6.1.5 Gestion des propriétés et tableaux de données (page 340).

1 Depuis 1.9. 2 Depuis 1.21. 3 Depuis 1.27. 4 Depuis 1.27. 5 Depuis 1.27.

Page 369: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

6. Interface de script 369

setProperty – fixer la valeur d’une propriété unique

• Synopsis: "setProperty propname(elemname) value"

• Tâche de fond : Oui, Effacer : Oui, Sûr : Oui, Type : Procédure

• Description: Cette procédure fixe un élément de propriété unique nommé elemname de la propriéténommée propname pour l’objet actuellement sélectionné à la nouvelle valeur donnée dans value.Plusieurs objets sélectionnés sont pris en charge.1

• Notes: Cette procédure est plus lente que l’accès au tableau de données athat qui est associé à unepropriété et appelle directement la procédure d’ensemble appropriée, en particulier si plusieurs valeursdoivent être fixées. Toutefois, le nom du tableau de données et la procédure appropriée sont déduitsautomatiquement et les erreurs sont détectées et signalées. Voir ci-dessous pour plus d’informationsconcernant l’accès direct aux valeurs des propriétés.

• Exemple : Étant donné qu’un seul objet Sphère est sélectionné, son rayon peut être fixé à la nouvellevaleur "3.0" facilement en utilisant la commande

setProperty SphereAttr(Radius) 3.0

Contrairement à l’utilisation de "setProperty", voici un exemple équivalent pour l’accès direct(rapide) aux valeurs des propriétés :

getPropset SphereAttrData(Radius) 3.0setProp

Voir aussi la section 6.1.5 Gestion des propriétés et tableaux de données (page 340).

6.2.7 Opérations avec le presse-papiers

Ces commandes font fonctionner le presse-papiers d’objet :

copOb – copie le(s) objet(s) :

• Synopsis: "copOb [-append]"

• Tâche de fond : Oui, Effacer : Non, Sûr : Oui

• Description : Copier le(s) objet(s) sélectionné(s) dans le presse-papiers des objets après l’avoir effacé.Il s’agit d’une copie intégrale, les compteurs de référence des objets maîtres ou matériaux peuventêtre augmentés et il existe des règles spéciales pour les instances, Voir aussi la section 4.2.7 Instanceset presse-papier (page 129).Si l’option "-append" est utilisée, le presse-papiers ne sera pas effacé avant cette opération.

• Notes: Peut échouer si le presse-papiers contient des objets référencés. Si l’option append est activée,cette opération n’échoue que s’il n’y a pas assez de mémoire.

cutOb – cCoupe le(s) objet(s):

• Synopsis: "cutOb [-append]"

• Tâche de fond : Oui, Effacer : Non, Sûr : Oui

• Description: Déplace le(s) objet(s) sélectionné(s) et leurs enfants dans le presse-papiers des objetsaprès l’avoir effacé.Si l’option "-append" est utilisée, le presse-papiers ne sera pas effacé avant cette opération.

1 Depuis 1.21.

Page 370: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

6. Interface de script 370

• Notes : Peut échouer si le presse-papiers contient des objets référencés. Si l’option append est définie,cette opération n’échoue jamais.

pasOb – Colle le(s) objet(s) :

• Synopsis: "pasOb [-move]"

• Tâche de fond : Oui, Effacer : Non, Sûr : Oui

• Description: Copie tous les objets du presse-papiers des objets dans le niveau actuel.Il s’agit d’une copie intégrale, les compteurs de référence des objets maîtres ou matériaux peuventêtre augmentés et il existe des règles spéciales pour les instances, Voir aussi la section 4.2.7 Instanceset presse-papier (page 129).Si l’option "-move" est donnée, les objets sont déplacés et non copiés, c’est-à-dire qu’après un"pasOb -move", le presse-papiers est vide et aucun compteur de référence ne sera modifié.

• Notes: Cette opération peut échouer si le résultat est une configuration d’instance illégale (c’est-à-diredes références récursives).

repOb – remplace le contenu du presse-papiers par le(s) objet(s) sélectionné(s) :

• Synopsis: "repOb"

• Tâche de fond : Oui, Effacer : Non, Sûr : Oui

• Description: Échangez tous les objets du presse-papiers avec le(s) objet(s) actuellement sélec-tionné(s). Si plusieurs objets sont sélectionnés dans des séquences non consécutives, seule la premièreséquence consécutive ou un seul objet est remplacé.

• Notes: Cette opération peut échouer si le résultat est une configuration d’instance illégale (c’est-à-diredes références récursives).

clearClip – vide le presse papier des objets :

• Synopsis: "clearClip"

• Tâche de fond : Oui, Effacer : Non, Sûr : Oui

• Description: vide le presse papier des objets.

• Notes: Peut échouer si le presse-papiers contient des objets référencés.

Les procédures suivantes font fonctionner le presse-papiers des propriétés, qui est totalement indépendantdu presse-papiers des objets.

copyProp – copie une propriété dans le presse-papiers des propriétés.

• Synopsis: "copyProp [mode]"

• Tâche de fond : Oui, Effacer : Non, Sûr : Non, Type : Procédure

• Description: Copiez la propriété actuellement sélectionnée de l’objet actuellement sélectionné dansle presse-papiers des propriétés. Si mode est égal à 0 (par défaut), toutes les entrées marquées serontomises. Si mode est égal à 1, seules les entrées marquées seront copiées. Les entrées de propriété sontgénéralement marquées par un double clic sur les étiquettes d’entrée respectives, mais elles peuventégalement être marquées par programmation en ajoutant les noms des éléments de propriété respectifsau tableau global "pclip_omit".

Page 371: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

6. Interface de script 371

pasteProp – Colle une propriété.

• Synopsis: "pasteProp"

• Tâche de fond : Oui, Effacer : Oui, Sûr : Non, Type : Procédure

• Description: Copie la propriété du presse-papiers des propriétés vers l’objet actuellement sélectionné.

6.2.8 Opérations sur la hiérarchie

Ces commandes manipulent le niveau actuel de Ayam :

goDown:

• Synopsis: "goDown index"

• Tâche de fond : Oui, Effacer : Non, Sûr : Oui

• Description: Entre dans l’objet déterminé par index. Si index est 0 et que le niveau actuel setrouve à l’intérieur d’un objet quelconque, le niveau parent sera saisi à la place. Si index est égal à-1, le dernier objet du niveau actuel sera saisi.

• Notes: La sélection des objets n’est pas synchronisée.

• Example: "crtOb Level; goDown -1; crtOb Sphere" crée un niveau simple, y entre, etcrée une sphère comme enfant de ce niveau.

goUp:

• Synopsis: "goUp"

• Tâche de fond : Oui, Effacer : Non, Sûr : Oui

• Description: Remonte d’un niveau dans la hiérarchie.

• Notes: La sélection des objets n’est pas synchronisée.

goTop:

• Synopsis: "goTop"

• Tâche de fond : Oui, Effacer : Non, Sûr : Oui

• Description: Va au sommet de la hiérarchie.

• Notes: La sélection des objets n’est pas synchronisée.

Les commandes suivantes permettent de déplacer des objets dans la hiérarchie :

upOb – déplacer le(s) objet(s) vers l’arrière dans le niveau actuel :

• Synopsis: "upOb"

• Tâche de fond : Oui, Effacer : Non, Sûr : Oui

• Description: Déplace le ou les objets actuellement sélectionnés vers l’arrière (vers le premier objet)dans le niveau actuel. Les sélections non contiguës sont prises en charge. Si le premier des objetssélectionnés est le premier du niveau en cours, rien ne sera modifié, c’est-à-dire que tous les objetssélectionnés se déplacent ensembles ou aucun. Les objets déplacés restent sélectionnés, c’est-à-direque cette commande peut être utilisée plusieurs fois de suite.

Page 372: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

6. Interface de script 372

downOb – déplacer le(s) objet(s) vers l’avant dans le niveau actuel :

• Synopsis: "downOb"

• Tâche de fond : Oui, Effacer : Non, Sûr : Oui

• Description: Déplacez le ou les objets actuellement sélectionnés vers l’avant (vers le dernier objet)dans le niveau actuel. Les sélections non contiguës sont prises en charge. Si le dernier des objetssélectionnés est le dernier du niveau actuel, rien ne sera modifié, c’est-à-dire que tous les objetssélectionnés se déplacent ensembles ou aucun. Les objets déplacés restent sélectionnés, c’est-à-direque cette commande peut être utilisée plusieurs fois de suite.

Page 373: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

6. Interface de script 373

6.2.9 Transformations

Ces commandes transforment des objets ou des points sélectionnés d’objets :

movOb – déplace des objets:

• Synopsis: "movOb dx dy dz"

• Tâche de fond : Oui, Effacer : Oui, Sûr : Oui

• Description: Déplace le ou les objets sélectionnés de dx dans la direction de l’axe X, de dy dans ladirection de l’axe Y, et de dz dans la direction de l’axe Z.

rotOb – tourne les objets:

• Synopsis: "rotOb (dx dy dz | -a ax ay az a)"

• Tâche de fond : Oui, Effacer : Oui, Sûr : Oui

• Description: Faites pivoter le ou les objets sélectionnés de dx degrés autour de l’axe X, puis de dydegrés autour de l’axe Y, et enfin de dz degrés autour de l’axe Z. Notez l’ordre des rotations.Si les paramètres commencent par un -a, ils désignent un axe de rotation suivi de l’angle en degrés.1

• Exemples:

1. "rotOb 0 0 45"fait tourner les objets sélectionnés d’un angle de 45 degrés, autour de l’axe Z.

2. "rotOb -a 1 1 0 45"fait tourner les objets sélectionnés d’un angle de 45 degrés autour de l’axe "1 1 0".

scalOb – zoome les objets:

• Synopsis: "scalOb dx dy dz"

• Tâche de fond : Oui, Effacer : Oui, Sûr : Oui

• Description: Mettre à l’échelle le ou les objets sélectionnés par un facteur de dx sur l’axe X, par unfacteur de dy sur l’axe Y, et par un facteur de dz sur l’axe Z.

• Note : Un facteur d’échelle de zéro est généralement une mauvaise idée et sera donc changé en 1.0sans notification.

movPnts – déplace les points sélectionnés :

• Synopsis: "movPnts dx dy dz"

• Tâche de fond : Oui, Effacer : Oui, Sûr : Oui

• Description: Déplace les points sélectionnés par dx sur l’axe X, par dy sur l’axe Y, et par dz surl’axe Z.

1 Depuis 1.27.

Page 374: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

6. Interface de script 374

rotPnts – tourne les points sélectionnés :

• Synopsis: "rotPnts (dx dy dz | -a ax ay az a)"

• Tâche de fond : Oui, Effacer : Oui, Sûr : Oui

• Description: Faites faire une rotation des points sélectionnés de dx degrés autour de l’axe X, puis dedy degrés autour de l’axe Y, et enfin de dz degrés autour de l’axe Z. Notez l’ordre des rotations.Si les paramètres commencent par un -a, ils désignent un axe de rotation suivi de l’angle en degrés.1

• Exemples:

1. "rotPnts 0 0 45"fait tourner les points sélectionnés d’un angle de 45 degrés, autour de l’axe Z.

2. "rotPnts -a 1 1 0 45"fait tourner les points sélectionnés d’un angle de 45 degrés autour de l’axe "1 1 0".

scalPnts – zoome les points sélectionnés :

• Synopsis: "scalPnts dx dy dz"

• Tâche de fond : Oui, Effacer : Oui, Sûr : Oui

• Description: zoome les points sélectionnés par un facteur de dx sur l’axe X, par un facteur de dy surl’axe Y, et par un facteur de dz sur l’axe Z.

• Note : Un facteur d’échelle de zéro est généralement une mauvaise idée et sera donc changé à 1.0sans notification.

delegTrafo – délègue les transformations :

• Synopsis: "delegTrafo"

• Tâche de fond : Oui, Effacer : Oui, Sûr : Oui

• Description: délègue les transformations associées aux objets sélectionnés à leurs objets enfants. Enoutre, les transformations des objets sélectionnés seront réinitialisées aux valeurs par défaut.

Cette opération échoue pour les configurations complexes (c’est-à-dire si la combinaison de la trans-formation des parents et des enfants est une transformation de cisaillement).

applyTrafo – applique les transformations :

• Synopsis: "applyTrafo [-sel]"

• Tâche de fond : Oui, Effacer : Oui, Sûr : Oui

• Description: Applique à leurs points les transformations encodées dans les attributs de transformationdes objets sélectionnés. Tous les points (par défaut) ou seulement les points sélectionnés (si l’option"-sel" est donnée) sont modifiés. Il n’y a pas d’erreur, si un objet n’a pas de points du tout ou siles points sont en lecture seule. En outre, si des points d’un objet sont modifiés, les transformationsde cet objet seront réinitialisées aux valeurs par défaut.

1 Depuis 1.27.

Page 375: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

6. Interface de script 375

normTrafos – normalise les valeurs de transformation :

• Synopsis: "normTrafos"

• Tâche de fond : Oui, Effacer : Oui, Sûr : Oui

• Description: Nonrmaliser toutes les valeurs des attributs de transformation des objets sélectionnés.Les valeurs seront arrondies au nombre de chiffres significatifs spécifiés via le paramètre de préférencecachée "NormalizeDigits" (par défaut 6).

normPnts – normalise les points :

• Synopsis: "normPnts"

• Tâche de fond : Oui, Effacer : Oui, Sûr : Oui

• Description: Nonrmalise tous les points sélectionnés des objets sélectionnés. Les valeurs serontarrondies au nombre de chiffres significatifs spécifiés via le paramètre de préférence cachée"NormalizeDigits" (par défaut 6).

normVar – normalise la variable :

• Synopsis: "normVar varname"

• Tâche de fond : Oui, Effacer : Oui, Sûr : Oui

• Description: Nonrmalise la valeur de la variable désignée. La valeur sera arrondie au nombre dechiffres significatifs spécifiés via le paramètre de préférence cachée "NormalizeDigits" (pardéfaut 6).

Page 376: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

6. Interface de script 376

6.2.10 Manipuler les ombrages (shaders)

Ces commandes font fonctionner les propriétés de l’ombre :

shaderSet:

• Synopsis: "shaderSet shadertype [varname]"

• Tâche de fond : Oui, Effacer : Oui, Sûr : Oui

• Description: Définis le type shadertype d’ombre pour l’objet sélectionné. Le type peut êtrel’un des suivants : "surface", "displacement", "light", "imager", "atmosphere","exterior" ou "interior". Si varname n’est pas donné, l’ombre en question est suppriméede l’objet. Sinon, varname renvoie à un tableau associé qui contient les données (arguments) del’ombre. Un exemple de contenu peut être créé avec la commande "shaderGet" ci-dessous. Lesdonnées ne sont pas vérifiées par rapport à la base de données interne de l’ombre pour s’assurerqu’elles sont correctes ou complètes. Cette commande échoue, si l’objet sélectionné ne supporte pasune ombre d’un type donné.

shaderGet:

• Synopsis: "shaderGet shadertype varname"

• Tâche de fond : Oui, Effacer : Non, Sûr : Oui

• Description: Renvoie le type shadertype de l’ombre pour l’objet sélectionné. Le type peut êtrel’un des suivants : "surface", "displacement", "light", "imager", "atmosphere","exterior" ou "interior". Les données de l’ombre seront écrites dans un tableau associépointé par varname.

Page 377: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

6. Interface de script 377

6.2.11 Manipuler les balises (tag)

Ces commandes peuvent être utilisées pour modifier les balises d’un objet (Voir aussi la section 4.11 Tags(page 256)).

Lors du traitement de balises de type inconnu ou non enregistré, un message d’avertissement correspon-dant peut être émis. Cet avertissement peut être désactivé en utilisant le paramètre de préférence cachée"WarnUnknownTag" ou en enregistrant le type de balise à l’aide de la commande "registerTag"(voir ci-dessous).

setTag:

• Synopsis: "setTag type value"

• Tâche de fond : Oui, Effacer : Oui, Sûr : Oui

• Description: Définir une balise avec la chaîne de caractères type et la chaîne de valeurs value pourle ou les objets actuellement sélectionnés.Si une balise de type correspondant existe déjà, la nouvelle valeur sera fixée à la première balisecorrespondante. Sinon, une nouvelle balise sera ajoutée au(x) objet(s) sélectionné(s) ;Il est légal de livrer "" comme paramètre de valeur. C’est par exemple le cas pour le type de balise"NoExport".

• Exemples:

1. "setTag NoExport """définit ou ajoute une balise "NoExport" aux objets sélectionnés.

2. "setTag RP Transformations"définit ou ajoute une balise "RP" (remove property) aux objets sélectionnés qui masquel’interface graphique des propriétés des transformations.

addTag:

• Synopsis: "addTag type value"

• Tâche de fond : Oui, Effacer : Oui, Sûr : Oui

• Description: Ajouter une balise avec la chaîne de type type et la chaîne de valeur value aux objetsactuellement sélectionnés.Il est légal de livrer "" comme paramètre de valeur. C’est par exemple le cas pour le type de balise"NoExport".Les balises potentiellement existantes du type désigné ne seront pas modifiées.

• Exemples:

1. "addTag NoExport """ajoute une balise "NoExport" aux objets sélectionnés.

2. "addTag RP Transformations"ajoute une balise "RP" (remove property) aux objets sélectionnés qui masque l’interfacegraphique des propriétés des transformations.

Page 378: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

6. Interface de script 378

hasTag:

• Synopsis: "hasTag type [value]"

• Tâche de fond : Oui, Effacer : Non, Sûr : Oui

• Description: Cette commande renvoie "1" si l’objet sélectionné possède au moins une balise du typedésigné. Sinon, la commande renvoie "0".

Si une valeur est fournie, cette chaîne est comparée à la valeur potentielle de la balise, elle peutégalement contenir l’une des valeurs *?[] pour des formes plus complexes de correspondance.

delTags:

• Synopsis: "delTags [type]"

• Tâche de fond : Oui, Effacer : Oui, Sûr : Oui

• Description: Supprimez toutes les balises du type désigné des objets actuellement sélectionnés. Si leparamètre type est omis ou vaut "all", toutes les balises sont supprimées des objets actuellementsélectionnés.

• Exemples:

1. "delTags"supprime toutes les balises des objets sélectionnés.

2. "delTags RP"supprime toutes les balises "RP" des objets sélectionnés.

getTags:

• Synopsis: "getTags tvname vvname"

• Tâche de fond : Oui, Effacer : Non, Sûr : Oui

• Description: Renvoie toutes les balises de l’objet actuellement sélectionné et les place sous forme delistes dans deux variables nommées tvname pour les types de balises et vvvname pour les valeursdes balises.

setTags:

• Synopsis: "setTags tagslist"

• Tâche de fond : Oui, Effacer : Oui, Sûr : Oui

• Description: Efface toutes les balises des objets actuellement sélectionnés et définit toutes les nou-velles balises à partir de la liste tagslist. Les types de balises sont repris des éléments de la listedont les numéros d’index sont pairs et les chaînes de valeur des balises des éléments de la liste dontles numéros d’index sont impairs.

• Exemples:

1. "setTags {RP Transformations RP Attributes}"remplace toutes les balises des objets sélectionnés par deux balises "RP".

Page 379: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

6. Interface de script 379

getTag:

• Synopsis: "getTag type [vname]"

• Tâche de fond : Oui, Effacer : Non, Sûr : Oui

• Description: Renvoie la valeur d’une balise spécifique de l’objet actuellement sélectionné et la placedans la variable désignée. S’il n’y a pas de balise du type spécifié, la variable sera définie à "". Siaucun nom de variable n’est fourni, la valeur de la balise est renvoyée.

registerTag:

• Synopsis: "registerTag type"

• Tâche de fond : Oui, Effacer : Non, Sûr : Oui

• Description: Cette commande permet d’enregistrer le type de balise désigné.

Page 380: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

6. Interface de script 380

6.2.12 Manipuler les courbes (Curves)

Ces commandes fonctionnent sur des courbes paramétriques :

openC – ouvre une courbe :

• Synopsis: "openC"

• Tâche de fond : Oui, Effacer : Oui, Sûr : Oui

• Description: ouvre l’objet "Curve" sélectionné.

Voir aussi la section 5.3.2 Outil d’ouverture (Open) (page 278).

closeC – ferme une courbe :

• Synopsis: "closeC"

• Tâche de fond : Oui, Effacer : Oui, Sûr : Oui

• Description: ferme l’objet "Curve" sélectionné.

Voir aussi la section 5.3.3 Outil de fermeture (Close) (page 279).

refineC – affine une courbe :

• Synopsis: "refineC"

• Tâche de fond : Oui, Effacer : Oui, Sûr : Oui

• Description: Affine le vecteur de contrôle des objets de courbe sélectionnés en insérant un nouveaupoint de contrôle entre chaque intervalle de points de contrôle, en modifiant les formes des courbes. Siune courbe comporte des points sélectionnés, seul l’intervalle entre le premier et le dernier des pointssélectionnés est affiné. Pour les courbes NURBS périodiques, les p derniers intervalles ne sont pasaffinés (où p est le degré de la courbe).

Voir aussi la section 5.3.4 Outil d’affinage (Refine) (page 280).

coarsenC – émousse une courbe : (????)

• Synopsis: "coarsenC"

• Tâche de fond : Oui, Effacer : Oui, Sûr : Oui

• Description: Supprime un point de contrôle sur deux des objets de courbe sélectionnés. Si une courbecomporte des points sélectionnés, seul l’intervalle entre le premier et le dernier des points sélectionnésest affecté. Pour les courbes NURBS périodiques, les p derniers intervalles ne sont pas affectés (où pest le degré de la courbe).

• Notes: Avant Ayam 1.26, cette commande était nommée "coarsenNC", l’ancien nom est toujoursdisponible pour la compatibilité mais son utilisation est obsolète.

Voir aussi la section 5.3.7 Outil d’approximation (Coarsen) (page 283).

revertC – renverser une courbe :

• Synopsis: "revertC"

• Tâche de fond : Oui, Effacer : Oui, Sûr : Oui

• Description: Renverse la direction des objets courbes sélectionnés.

Voir aussi la section 5.3.1 Outil de renversement (Revert) (page 277).

Page 381: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

6. Interface de script 381

shiftC – décale les points de contrôle d’une courbe (fermée) :

• Synopsis: "shiftC i"

• Tâche de fond : Oui, Effacer : Oui, Sûr : Oui

• Description: décale les points de contrôle des objets NCurve, ACurve et ICurve sélectionnés d’unequantité spécifiée par le paramètre i (qui peut être négatif pour inverser le sens du décalage). Pourune courbe fermée simple, en se déplaçant avec i=1, le premier point de contrôle obtiendra les coor-données de l’ancien dernier point de contrôle. Cela signifie que des décalages positifs se produisentdans la direction de la courbe. Notez que pour les courbes NURBS fermées et périodiques, les pointsmultiples seront gérés correctement.

Voir aussi la section 5.3.23 Outil de décalage de courbe fermée (page 300).

toXYC – tourne une courbe dans le plan XY

• Synopsis: "toXYC"

• Tâche de fond : Oui, Effacer : Oui, Sûr : Oui

• Description: fait tourner les points de contrôle des objets planaires NCurve, ACurve et ICurve sélec-tionnés dans leur plan XY respectif, en modifiant les attributs de transformation en conséquence.

Voir aussi la section 5.3.24 Outil de retournement vers XY (To XY) (page 301).

concatC – concaténer des courbes :

• Synopsis: "concatC [-c closed | -k knottype | -f fillets | -fl len]"

• Tâche de fond : Oui, Effacer : Non, Sûr : Non

• Description: Concaténer les objets courbes sélectionnés en une seule courbe NURBS. L’ordre de lanouvelle courbe est repris de la première courbe.

L’option "-c" permet de créer une courbe fermée (0 – ouvert, 1 – fermé ; par défaut 0).

L’option "-k" permet de définir un type de noeud (0 – NURB, 1 – Custom ; 0 – par défaut ; NURB).

L’option "-f" détermine si des filets doivent être créés ou non (0 – non, 1 – oui ; 0 par défaut).

L’option "-fl" permet de définir la longueur des filets.

Voir aussi la section 4.5.1 Propriété ConcatNCAttr (page 159) pour plus d’informations sur ces options

Page 382: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

6. Interface de script 382

6.2.13 Manipuler les surfaces

Ces commandes opèrent sur des surfaces paramétriques :

revertuS – retourne les surfaces sur U :

• Synopsis: "revertuS"

• Tâche de fond : Oui, Effacer : Oui, Sûr : Oui

• Description: Inversez la direction des surfaces sélectionnées dans la dimension paramétrique u.

Voir aussi la section 5.5.1 Outil de reversement sur U (Revert U) (page 313).

revertvS – retourne les surfaces sur V :

• Synopsis: "revertvS"

• Tâche de fond : Oui, Effacer : Oui, Sûr : Oui

• Description: Inversez la direction des surfaces sélectionnées dans la dimension paramétrique v.

Voir aussi la section 5.5.2 Outil de reversement sur V (Revert V) (page 313).

swapuvS – échanger les dimensions des surfaces:

• Synopsis: "swapuvS"

• Tâche de fond : Oui, Effacer : Oui, Sûr : Oui

• Description: Échanger les dimensions des surfaces sélectionnées (objets de type NPatch, IPatch,BPatch et PatchMesh), en échangeant ainsi la largeur et la hauteur, sans modifier la forme des surfaces.

Voir aussi la section 5.5.3 Outil de renversement UV (Swap UV) (page 314).

concatS – concatène les surfaces:

• Synopsis: "concatS [-o order | -t type | -k knottype | -u uvselect]"

• Tâche de fond : Oui, Effacer : Non, Sûr : Non

• Description: Concaténer les objets "Surface" sélectionnés en un seul patch NURBS.

L’option "-o" détermine l’ordre souhaité de la surface dans la direction U.

L’option "-t" permet de définir un type de surface (0 – ouvert, 1 – fermé, 3 – périodique ; par défaut0).

L’option "-k" permet de définir un type de noeud (par défaut 1 – NURB).

Enfin, l’option "-u" permet de spécifier la chaîne de sélection uv.

Voir aussi la section 4.7.11 Propriété ConcatNPAttr (page 210) pour plus d’informations sur ces op-tions.

Page 383: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

6. Interface de script 383

6.2.14 Manipuler les courbes NURBS

Il s’agit de commandes plus spécialisées permettant de modifier les propriétés des courbes NURBS :

clampNC – resserrer la courbe NURBS :

• Synopsis: "clampNC [-s |-e]"

• Tâche de fond : Oui, Effacer : Oui, Sûr : Oui

• Description: Serrer le vecteur noeud des courbes NURBS sélectionnées sans modifier la forme descourbes. Le type de noeud de la courbe serrée sera modifié en "Custom" et les noeuds auront desvaleurs égales à o du ou des côtés souhaités, où o est l’ordre de la courbe.

Si le paramètre de côté est omis, les deux côtés sont serrés. Si le paramètre de côté est "-s" seulementle début, et s’il est "-e" seulement la fin est serrée.

Dans les versions de Ayam antérieures à 1.18, c’était une erreur si la courbe était déjà serrée d’un côtéou de l’autre, ce n’est plus le cas. En outre, les courbes comportant plusieurs noeuds dans la ou lesrégions d’extrémité ne pouvaient pas être serrées, ce qui fonctionne bien maintenant.

Voir aussi la section 5.3.11 Outil de resserrage (Clamp) (page 287).

unclampNC – desserrer une courbe NURBS :

• Synopsis: "unclampNC [-s |-e]"

• Tâche de fond : Oui, Effacer : Oui, Sûr : Oui

• Description: Desserrer le vecteur noeud des courbes NURBS sélectionnées sans modifier la forme descourbes. Le type de noeud de la courbe serrée peut être modifié en "Custom".

Si le paramètre latéral est omis, les deux côtés sont desserrés. Si le paramètre latéral est "-s"seulement le début, et s’il est "-e" seulement la fin sont desserrés.

Voir aussi la section 5.3.12 Outil de desserrage (Unclamp) (page 288).

extendNC – étendre une courbe NURBS :

• Synopsis: "extendNC (x y z [w] | -vn varname | -m)"

• Tâche de fond : Oui, Effacer : Oui, Sûr : Oui

• Description: Étendre les courbes NURBS sélectionnées en un point donné ou sur la marque sansmodifier la forme actuelle de la courbe.

Voir aussi la section 5.3.10 Outil d’extension (Extend) (page 286).

elevateNC – augmente l’ordre d’une courbe NURBS :

• Synopsis: "elevateNC [n]"

• Tâche de fond : Oui, Effacer : Oui, Sûr : Oui

• Description: Augmente l’ordre n des courbes NURBS sélectionnées sans en modifier la forme. Si leparamètre n est omis, une valeur par défaut de 1 est utilisée. Le type de noeud des courbes élevéessera modifié en "Custom".

Voir aussi la section 5.3.8 Outil d’élévation (Elevate) (page 284).

Page 384: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

6. Interface de script 384

reduceNC – diminue l’ordre d’une courbe NURBS :

• Synopsis: "reduceNC [tol]"

• Tâche de fond : Oui, Effacer : Oui, Sûr : Oui

• Description: Diminuer l’ordre des courbes NURBS sélectionnées de un si la forme des courbes ré-duites ne s’écarte pas des courbes originales de tol en aucun point. Si le paramètre tol est omis,une valeur par défaut de 0.0 est utilisée, c’est-à-dire que l’ordre n’est réduit que si la courbe ne changepas. Le type de noeud des courbes réduites sera changé en "Custom".

Voir aussi la section 5.3.9 Outil de réduction (Reduce) (page 285).

insknNC – insérer des noeuds dans une courbe NURBS :

• Synopsis: "insknNC u r"

• Tâche de fond : Oui, Effacer : Oui, Sûr : Oui

• Description: Insérer, r fois, un nouveau noeud à la position spécifiée par u. La plage valable pouru est déterminée par le vecteur de noeud actuel U comme suit : U[p] <= u <= U[n], où p estle degré (ordre-1) de la courbe et n est la longueur de la courbe. Le type de noeud des courbes seratoujours changé en "Custom", mais la forme des courbes ne changera pas. Voir aussi la section5.3.13 Outil d’insertion de noeud (Insert Knot) (page 289).

remknNC – supprime des noeuds d’une courbe NURBS :

• Synopsis: "remknNC (u | -i ind) r [tol]"

• Tâche de fond : Oui, Effacer : Oui, Sûr : Oui

• Description: Supprimer, r fois de la courbe, un noeud à la position spécifiée par u (u doit être dansla plage valide du vecteur noeud de la courbe sélectionnée). Depuis Ayam 1.20, le noeud à supprimerpeut également être spécifié en utilisant son indice (basé sur le zéro) dans le vecteur de noeud (c’est-à-dire utiliser "remknNC -i 3 1" au lieu de "remknNC 0.5 1" pour le vecteur de noeud "00 0 0.5 1 1 1").

Notez que la forme de la courbe peut être modifiée par cet outil, sauf si le paramètre tol est spécifié.Si tol est spécifié, la nouvelle courbe ne s’écarte pas de la courbe originale de plus de tol en toutpoint de la courbe. Si le noeud ne peut pas être supprimé r fois en raison de la tolérance, une erreurest signalée et la courbe originale reste inchangée.

Cette opération échoue également, si l’élimination du noeud entraîne une courbe d’ordre inférieur.

Voir aussi la section 5.3.14 Outil de suppression de noeud (Remove Knot) (page 290).

remsuknNC – supprime les noeuds supperflus d’une courbe NURBS :

• Synopsis: "remsuknNC [tol]"

• Tâche de fond : Oui, Effacer : Oui, Sûr : Oui

• Description: Supprimer tous les noeuds de la courbe NURBS qui ne contribuent pas à sa forme. Celapeut entraîner la suppression et la modification de points de contrôle, mais la forme de la courbe nechange pas, sauf si une grande valeur de tolérance est spécifiée via le paramètre tol. La valeur pardéfaut de ce paramètre est de 0.0.

Il n’y a pas d’erreur si aucun noeud ne peut être enlevé.

Voir aussi la section 5.3.15 Outil de suppression des noeuds superflus (page 291).

Page 385: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

6. Interface de script 385

refineknNC – Affiner le vecteur noeud d’une courbe NURBS :

• Synopsis: "refineknNC [{u1 u2 un}]"

• Tâche de fond : Oui, Effacer : Oui, Sûr : Oui

• Description: Affiner le vecteur noeud de la courbe NURBS sélectionnée sans modifier la forme de lacourbe avec n nouveaux noeuds {u1 u2 un}. Si aucune liste de nouveaux noeuds n’est donnée, unnouveau noeud est inséré dans chaque intervalle de l’ancien vecteur de noeuds.

Voir aussi la section 5.3.5 Outil d’affinage des noeuds (Refine Knots) (page 281).

tweenNC – interpoler des courbes :

• Synopsis: "tweenNC [r]"

• Tâche de fond : Oui, Effacer : Non, Sûr : Oui

• Description: Interpoler les deux premières courbes NURBS sélectionnées, créant ainsi une nouvellecourbe qui intègre les caractéristiques des courbes sélectionnées. Le paramètre r définit le rapportd’influence de la première et de la deuxième courbe (cette dernière utilisant 1-r). Ce paramètre apour valeur par défaut 0.5.Les deux premières courbes doivent être de la même longueur et du même ordre. Elles n’ont cependantpas besoin d’être définies sur le même vecteur de noeud.Si une troisième courbe est sélectionnée, le paramètre r est ignoré et cette troisième courbe définit lerapport d’influence avec ses coordonnées y.

Voir aussi la section 5.2.5 Outil courbes interpolées (Tween Curve) (page 276).

rescaleknNC – repositionner les noeuds d’une courbe NURBS :

• Synopsis: "rescaleknNC [-r rmin rmax | -d mindist]"

• Tâche de fond : Oui, Effacer : Oui, Sûr : Oui

• Description: Reposionner le(s) vecteur(s) de noeud de la (des) courbe(s) NURBS sélectionnée(s) dansla plage [0.0, 1.0] (si aucun argument n’est présent) ou dans la plage [rmin,rmax] si l’argument"-r" est donné ou à la distance minimale mindist si l’argument "-d" est utilisé. La mise àl’échelle à une distance minimale garantit que tous les noeuds (sauf les noeuds multiples) ont unedistance supérieure à mindist par la suite.

Depuis Ayam 1.20, le type de noeud de la courbe ne doit plus être "Custom". De plus, le fait deredimensionner les noeuds ne change pas le type de noeud.

Cette opération ne modifie pas la forme de la courbe.

Voir aussi la section 5.3.26 Outil de répartition des noeuds sur une plage (Rescale Knots to Range)(page 303).

splitNC – couper une courbe NURBS :

• Synopsis: "splitNC [-a |-r] u"

• Tâche de fond : Oui, Effacer : Non, Sûr : Oui

• Description: scinde les courbes NURBS sélectionnées à la valeur paramétrique désignée u en deuxcourbes, en créant une nouvelle courbe et en modifiant la courbe originale sélectionnée. Si l’option"-r" est présente, la valeur paramétrique est interprétée de manière relative et doit donc se situerdans la plage [0, 1].<1

1 Depuis 1.28.

Page 386: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

6. Interface de script 386

Si l’option "-a" est présente, la ou les nouvelles courbes seront ajoutées au niveau actuel. Sinon,la ou les nouvelles courbes seront insérées dans le niveau juste après la ou les courbes respectives àscinder.1

Voir aussi la section 5.3.18 Outil de fractionnement (Split) (page 295).

extrNC – extraire une courbe NURBS :

• Synopsis: "extrNC [-relative] umin umax"

• Tâche de fond : Oui, Effacer : Non, Sûr : Oui

• Description: Extrait une sous-courbe de la NCurve sélectionnée ou de la NCurve fournissant desobjets. La ou les courbes extraites seront ajoutées comme nouvel(s) objet(s) au niveau actuel de lascène. La sous-courbe à extraire est spécifiée par les valeurs paramétriques umin et umax qui doiventêtre dans la plage de noeuds valide respective.

Si l’argument facultatif "-relative" est spécifié, les valeurs paramétriques sont interprétées demanière relative et doivent donc se situer dans la plage [0, 1].

trimNC – ajuste une courbe NURBS :

• Synopsis: "trimNC [-relative] umin umax"

• Tâche de fond : Oui, Effacer : Oui, Sûr : Oui

• Description: ajuste la courbe NURBS sélectionnée à la plage paramétrique désignée (umin-umax), enmodifiant la courbe sélectionnée à l’origine.

Si l’argument facultatif "-relative" est spécifié, les valeurs paramétriques sont interprétées demanière relative et doivent donc se situer dans la plage [0, 1].

Voir aussi la section 5.3.19 Outil des courbes de trim (Découpe) (page 296).

estlenNC – estimer la longueur d’une courbe NURBS :

• Synopsis: "estlenNC [-trafo | -refine n] [varname]"

• Tâche de fond : Oui, Effacer : Non, Sûr : Oui

• Description: estimer la longueur de la courbe NURBS ou de l’objet fournissant la courbe NURBSactuellement sélectionnée et placer le résultat dans la variable désignée.Si plusieurs courbes sont sélectionnées ou fournies, une liste de résultats est créée.Si le paramètre optionnel "-trafo" est donné, les attributs de transformation de la courbe serontappliqués aux points de contrôle pour l’estimation de la longueur.Si le paramètre optionnel "-refine" est donné, la courbe sera affinée n fois avant l’estimation dela longueur, ce qui augmente la précision de l’estimation.2

Si aucun nom de variable n’est spécifié, la commande renvoie le(s) résultat(s) correspondant(s).3

1 Depuis 1.24. 2 Depuis 1.27. 3 Depuis 1.25.

Page 387: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

6. Interface de script 387

reparamNC – reparamétriser une courbe NURBS :

• Synopsis: "reparamNC type"

• Tâche de fond : Oui, Effacer : Oui, Sûr : Oui

• Description: reparamétrer toutes les courbes NURBS sélectionnées pour avoir des noeuds de corde(type : 0), ou des noeuds centripètes (type : 1). Le type de noeud de la courbe sera changé en"Custom".

isCompNC:

• Synopsis: "isCompNC [-l level]"

• Tâche de fond : Oui, Effacer : Non, Sûr : Oui

• Description: Cette commande renvoie 1 si les courbes NURBS sélectionnées sont compatibles (c’est-à-dire définies sur le même vecteur de noeud), sinon elle renvoie 0.

Si "level" est 0, seuls les ordres des courbes sont comparés.Si "level" est 1, seuls les ordres et les longueurs des courbes sont comparés.

makeCompNC – rendre les courbes NURBS compatibles :

• Synopsis: "makeCompNC [-f | -l level]"

• Tâche de fond : Oui, Effacer : Oui, Sûr : Oui

• Description: rend compatibles les courbes NURBS sélectionnées, c’est-à-dire du même ordre etdéfinies sur le même vecteur de noeud.

Si l’option "-f" est présente, il n’y aura pas de contrôle de compatibilité préalable.

Si "level" est 0, seules les ordres seront adaptées.Si "level" est 1, seuls les ordres et les longueurs seront adaptés.

Voir aussi la section 5.3.25 Outil pour rendre compatible (Make Compatible) (page 302).

Page 388: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

6. Interface de script 388

interpNC – interpoler des courbes NURBS :

• Synopsis: "interpNC [-order order | -ptype type | -closed (0|1) | -sdlenlength | -edlen length]"

• Tâche de fond : Oui, Effacer : Oui, Sûr : Oui

• Description: Interpoler les courbes NURBS sélectionnées avec l’ordre et le type de paramétragesouhaités. L’ordre par défaut est de 4 et doit être supérieur à 2. Le type de paramétrage doit êtrel’un des suivants : 0 – Chordal, 1 – Centripetal, ou 2 – Uniform, la valeur par défaut est Chordal.L’interpolation peut créer une courbe fermée si le paramètre "-closed" le demande, mais celaaugmentera également la longueur de la courbe NURBS résultante. La valeur par défaut est de créerune courbe ouverte pour les courbes d’entrée ouvertes et une courbe fermée pour les courbes d’entréefermées ou périodiques.

En utilisant les options "-sdlen" et "-edlen" (qui sont toutes deux par défaut à 0.0), la longueurdes dérivés de début/fin créés automatiquement peut être ajustée. Si l’une d’entre elles n’est pas à 0.0,un algorithme d’interpolation différent sera utilisé, ce qui augmente la longueur de la courbe NURBSrésultante.

La courbe interpolera tous les points de contrôle actuels après l’interpolation et la position de certainspoints de contrôle sera modifiée au cours de ce processus de sorte que, après l’interpolation, lesnouveaux points de contrôle ne seront pas interpolés par la courbe. La courbe interpolera plutôt lespositions des ancien points de contrôle.

Le type de noeud des courbes interpolées sera changé en "Custom".

Voir aussi la section 5.3.21 Outil d’interpolation (Interpolate) (page 298).

Page 389: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

6. Interface de script 389

approxNC – approximer une courbe NURBS :

• Synopsis: "approxNC [-order o | -length l | -closed (0|1) | -tesselatet]"

• Tâche de fond : Oui, Effacer : Oui, Sûr : Oui

• Description: Approximer les courbes NURBS sélectionnées avec une nouvelle courbe NURBS del’ordre et de la longueur souhaités.

L’ordre par défaut est celui de la courbe NURBS respective et doit être au moins égal à 2. Si unevaleur inférieure est fournie, la commande reviendra à la valeur par défaut sans notification.

La longueur par défaut correspond à la longueur de la courbe NURBS respective et doit être supérieureà 2. Si une valeur inférieure est fournie, la commande reviendra à la valeur par défaut sans significa-tion.

Si le paramètre "-closed" est réglé sur "1" une courbe périodique fermée sera créée. Par défaut,la création ou non d’une courbe fermée sera dérivée du type de courbe à approximer.

Le paramètre "-tesselate" permet de spécifier un paramètre pour la tessellation de la courbe àapproximer.

Le type de noeud des courbes traitées sera modifié en "Custom".

Voir aussi la section 5.3.22 Outil d’approximation (Approximate) (page 299).

curvatNC – calculer la courbure :

• Synopsis: "curvatNC [-r] -u u"

• Tâche de fond : Oui, Effacer : Non, Sûr : Oui

• Description: Calculer et renvoyer la courbure de la courbe NURBS sélectionnée ou de la courbeNURBS fournissant l’objet à la valeur paramétrique désignée u.Si l’option "-r" est présente, la valeur paramétrique est interprétée de manière relative et doit doncse situer dans la plage suivante [0, 1].

Si plusieurs objets sont sélectionnés, une liste de valeurs de courbure est renvoyée.

Voir aussi la section 5.3.20 Outil de tracé de courbure (Plot Curvature) (page 297).

fairNC – Améliorer la forme de la courbe :

• Synopsis: "fairNC [tol]"

• Tâche de fond : Oui, Effacer : Oui, Sûr : Oui

• Description: Améliorer la forme de la courbe en déplaçant les points de contrôle afin que la courburesoit répartie plus uniformément.Si une valeur de tolérance est présente, les points de contrôle traités ne se déplacent pas plus que lavaleur donnée.

Si des points sont sélectionnés, seuls ceux-ci seront traités.

Page 390: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

6. Interface de script 390

6.2.15 Manipuler des surfaces NURBS

Il s’agit de commandes plus spécialisées pour modifier les propriétés des surfaces NURBS :

clampuNP – resserer un patch NURBS dans la direction U :

• Synopsis: "clampuNP [-s |-e]"

• Tâche de fond : Oui, Effacer : Oui, Sûr : Oui

• Description: resserrer le vecteur de noeud dans la direction U des patchs NURBS sélectionnés sansmodifier la forme des patchs. Le type de noeud sera modifié en "Custom" et les noeuds auront desvaleurs o égales au début et à la fin (où o est l’ordre du patch dans la direction U).

Si le paramètre de côté est omis, les deux côtés sont resserrés. Si le paramètre de côté est "-s"seulement le début, et s’il est "-e" seulement la fin est resserrée.

Dans les versions de Ayam antérieures à la version 1.18, c’était une erreur si le patch était déjà resserréde chaque côté, ce n’est plus le cas. De plus, les patchs avec plusieurs noeuds dans la ou les régionsd’extrémité ne pouvaient pas être resserrés, cela fonctionne bien maintenant.

Voir aussi la section 5.5.8 Outil de serrage de surface (Clamp Surface) (page 319).

clampvNP – resserer un patch NURBS dans la direction V :

• Synopsis: "clampvNP [-s |-e]"

• Tâche de fond : Oui, Effacer : Oui, Sûr : Oui

• Description: resserrer le vecteur de noeud dans la direction V des patchs NURBS sélectionnés sansmodifier la forme des patchs. Le type de noeud sera modifié en "Custom" et les noeuds auront desvaleurs o égales au début et à la fin (où o est l’ordre du patch dans la direction V).

Si le paramètre de côté est omis, les deux côtés sont resserrés. Si le paramètre de côté est "-s"seulement le début, et s’il est "-e" seulement la fin est resserrée.

Dans les versions de Ayam antérieures à la version 1.18, c’était une erreur si le patch était déjà resserréde chaque côté, ce n’est plus le cas. De plus, les patchs avec plusieurs noeuds dans la ou les régionsd’extrémité ne pouvaient pas être resserrés, cela fonctionne bien maintenant.

Voir aussi la section 5.5.8 Outil de serrage de surface (Clamp Surface) (page 319).

unclampuNP – desserer un patch NURBS dans la direction U :

• Synopsis: "unclampuNP [-s |-e]"

• Tâche de fond : Oui, Effacer : Oui, Sûr : Oui

• Description: desserrer le vecteur de noeud dans la direction U des patchs NURBS sélectionnés sansmodifier la forme des patchs. Le type de noeud sera modifié en "Custom" et les noeuds auront desvaleurs o égales au début et à la fin (où o est l’ordre du patch dans la direction U).

Si le paramètre de côté est omis, les deux côtés sont desserrés. Si le paramètre de côté est "-s"seulement le début, et s’il est "-e" seulement la fin est desserrée.

Voir aussi la section 5.5.9 Outil de desserrage des surfaces (Unclamp Surface) (page 320).

Page 391: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

6. Interface de script 391

unclampvNP – desserer un patch NURBS dans la direction V :

• Synopsis: "unclampvNP [-s |-e]"

• Tâche de fond : Oui, Effacer : Oui, Sûr : Oui

• Description: desserrer le vecteur de noeud dans la direction V des patchs NURBS sélectionnés sansmodifier la forme des patchs. Le type de noeud sera modifié en "Custom" et les noeuds auront desvaleurs o égales au début et à la fin (où o est l’ordre du patch dans la direction U).

Si le paramètre de côté est omis, les deux côtés sont desserrés. Si le paramètre de côté est "-s"seulement le début, et s’il est "-e" seulement la fin est desserrée.

Voir aussi la section 5.5.9 Outil de desserrage des surfaces (Unclamp Surface) (page 320).

rescaleknNP – répartir les noeuds d’un patch NURBS :

• Synopsis: "rescaleknNP [-r[u|v] rmin rmax | -d[u|v] mindist]"

• Tâche de fond : Oui, Effacer : Oui, Sûr : Oui

• Description: Repositionner le(s) vecteur(s) de noeud du ou des patch(s) NURBS sélectionnés dans laplage [0.0, 1.0] (si aucun argument n’est présent) ou dans la plage [rmin,rmax] si l’argument "-r"est donné ou à la distance minimale mindist si l’argument "-d" est utilisé. Le repositionnementà une distance minimale garantit que tous les noeuds (sauf les noeuds multiples) ont une distancesupérieure à mindist par la suite.

Les variantes "-ru", "-rv", "-du", et "-dv" ne repositionnent que sur la dimension désignée.

Les courbes de trim, si elles existent, seront également échelonnées pour correspondre à la nouvellegamme.

Depuis Ayam 1.20, le type de noeud de la courbe ne doit plus être "Custom". De plus, le fait derééchelonner les noeuds ne change pas le type de noeud.

Cette opération ne modifie pas la forme du patch.

Voir aussi les sections 5.5.16 Outil de redimensionnent des noeuds en fonction de la plage (RescaleKnots to Range) (page 327) et 5.5.17 Outil Redimensionnent des noeuds à la distance minimale(Rescale Knots to Mindist) (page 327).

• Exemple : "rescaleknNP -ru 0.2 0.3" échelonne le vecteur de noeuds u des objets patchsNURBS sélectionnés sur la nouvelle plage [0.2, 0.3].

insknuNP – insère des noeuds dans un patch NURBS :

• Synopsis: "insknuNP u r"

• Tâche de fond : Oui, Effacer : Oui, Sûr : Oui

• Description: Insére un nouveau noeud dans le sens U à la position spécifiée par u, r fois. u doitse trouver dans la plage valide du vecteur de noeud correspondant des patchs sélectionnés. La plagevalide est déterminée par le vecteur de noeud actuel U comme suit : U[p] <= u <= U[n], où pest le degré (ordre-1) du patch dans la direction U et n est la largeur du patch. Le type de noeud u despatchs sera toujours changé en "Custom" mais la forme des patchs ne changera pas.

Voir aussi la section 5.5.10 Outil d’insertion de noeuds (Insert Knot Surface) (page 321).

Page 392: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

6. Interface de script 392

insknvNP – insére des noueuds dans un patch NURBS :

• Synopsis: "insknvNP v r"

• Tâche de fond : Oui, Effacer : Oui, Sûr : Oui

• Description: Insére un nouveau noeud dans le sens V à la position spécifiée par v, r fois. v doitse trouver dans la plage valide du vecteur de noeud correspondant des patchs sélectionnés. La plagevalide est déterminée par le vecteur de noeud actuel V comme suit : V[p] <= v <= V[n], où pest le degré (ordre-1) du patch dans la direction V et n est la largeur du patch. Le type de noeud v despatchs sera toujours changé en "Custom" mais la forme des patchs ne changera pas.

Voir aussi la section 5.5.10 Outil d’insertion de noeuds (Insert Knot Surface) (page 321).

remknuNP – enlever des noeuds u d’une surface NURBS :

• Synopsis: "remknuNP (u | -i ind) r [tol]"

• Tâche de fond : Oui, Effacer : Oui, Sûr : Oui

• Description : Enlever r fois un noeud à la position spécifiée par u (u doit être dans la plage valide duvecteur noeud de la surface sélectionnée) de la surface. Depuis Ayam 1.20, le noeud à supprimer peutégalement être spécifié en utilisant son indice (basé sur le zéro) dans le vecteur noeud (c’est-à-direen utilisant "remknuNP -i 3 1" au lieu de "remknuNP 0.5 1" pour le vecteur noeud "0 00 0.5 1 1 1"). Notez que la forme de la surface peut être modifiée par cet outil, à moins que leparamètre tol ne soit spécifié. Si tol est spécifié, la nouvelle surface ne s’écarte pas de la surfaced’origine de plus de la tolérance en tout point. Si le noeud ne peut pas être supprimé r fois en raisonde la tolérance, une erreur est signalée et la surface d’origine reste inchangée.

Cette opération échoue également, si l’élimination du noeud conduisait à une surface de moindreordre.

Voir aussi la section 5.5.11 Outil de suppression de noeuds (Remove Knot Surface) (page 322).

remknvNP – enlever des noeuds v d’une surface NURBS :

• Synopsis: "remknvNP (v | -i ind) r [tol]"

• Tâche de fond : Oui, Effacer : Oui, Sûr : Oui

• Description : Enlever r fois un noeud à la position spécifiée par v (v doit être dans la plage valide duvecteur noeud de la surface sélectionnée) de la surface. Depuis Ayam 1.20, le noeud à supprimer peutégalement être spécifié en utilisant son indice (basé sur le zéro) dans le vecteur noeud (c’est-à-direen utilisant "remknvNP -i 3 1" au lieu de "remknvNP 0.5 1" pour le vecteur noeud "0 00 0.5 1 1 1"). Notez que la forme de la surface peut être modifiée par cet outil, à moins que leparamètre tol ne soit spécifié. Si tol est spécifié, la nouvelle surface ne s’écarte pas de la surfaced’origine de plus de la tolérance en tout point. Si le noeud ne peut pas être supprimé r fois en raisonde la tolérance, une erreur est signalée et la surface d’origine reste inchangée.

Cette opération échoue également, si l’élimination du noeud conduisait à une surface de moindreordre.

Voir aussi la section 5.5.11 Outil de suppression de noeuds (Remove Knot Surface) (page 322).

remsuknuNP – enlève les noeuds superflus d’une surface NURBS :

• Synopsis: "remsuknuNP [tol]"

• Tâche de fond : Oui, Effacer : Oui, Sûr : Oui

Page 393: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

6. Interface de script 393

• Description: Enlever tous les noeuds de la surface NURBS qui ne contribuent pas à sa forme (dansla direction u). Cela peut entraîner la suppression et la modification des points de contrôle, mais laforme de la surface ne change pas, sauf si une grande valeur de tolérance est spécifiée via le paramètretol. La valeur par défaut de ce paramètre est 0.0.

Il n’y a pas d’erreur si aucun noeud ne peut être enlevé.

Voir aussi la section 5.3.15 Outil de suppression des noeuds superflus (page 291).

remsuknvNP – enlève les noeuds superflus d’une surface NURBS :

• Synopsis: "remsuknvNP [tol]"

• Tâche de fond : Oui, Effacer : Oui, Sûr : Oui

• Description: Enlever tous les noeuds de la surface NURBS qui ne contribuent pas à sa forme (dansla direction v). Cela peut entraîner la suppression et la modification des points de contrôle, mais laforme de la surface ne change pas, sauf si une grande valeur de tolérance est spécifiée via le paramètretol. La valeur par défaut de ce paramètre est 0.0.

Il n’y a pas d’erreur si aucun noeud ne peut être enlevé.

Voir aussi la section 5.5.12 Outil de suppression des noeuds superflus (Remove Superfluous Knots)(page 323).

refineuNP – affiner la surface des NURBS dans la direction du U :

• Synopsis: "refineuNP [{u1 u2 un}]"

• Tâche de fond : Oui, Effacer : Oui, Sûr : Oui

• Description: Affiner les surfaces NURBS sélectionnées dans la direction u avec n nouveaux noeuds{u1 u2 un} sans modifier leur forme. Si aucune liste de nouveaux noeuds n’est donnée, un nouveaunoeud est inséré dans chaque intervalle de l’ancien vecteur de noeuds. Le type de noeud u des surfacesaffinées peut être modifié en "Custom".

Voir aussi la section 5.5.4 Outil de raffinage des noeuds de surface (Refine Knots Surface) (page 315).

refinevNP – affiner la surface des NURBS dans la direction V :

• Synopsis: "refinevNP [{v1 v2 vn}]"

• Tâche de fond : Oui, Effacer : Oui, Sûr : Oui

• Description: Affiner les surfaces NURBS sélectionnées dans la direction v avec n nouveaux noeuds{v1 v2 vn} sans modifier leur forme. Si aucune liste de nouveaux noeuds n’est donnée, un nouveaunoeud est inséré dans chaque intervalle de l’ancien vecteur de noeuds. Le type de noeud v des surfacesaffinées peut être modifié en "Custom".

Voir aussi la section 5.5.4 Outil de raffinage des noeuds de surface (Refine Knots Surface) (page 315).

elevateuNP – élever la surface des NURBS dans la direction du U :

• Synopsis: "elevateuNP [n]"

• Tâche de fond : Oui, Effacer : Oui, Sûr : Oui

• Description: Élever l’ordre u des surfaces NURBS sélectionnées sans modifier la forme des surfacespar n. Si le paramètre n est omis, une valeur par défaut de 1 est utilisée. Le type de noeud u dessurfaces élevées sera modifié en "Custom".

Voir aussi la section 5.5.6 Outil d’augmentation de l’ordre de la surface (Elevate Surface) (page 317).

Page 394: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

6. Interface de script 394

elevatevNP – élever la surface des NURBS dans la direction V :

• Synopsis: "elevatevNP [n]"

• Tâche de fond : Oui, Effacer : Oui, Sûr : Oui

• Description: Élever l’ordre v des surfaces NURBS sélectionnées sans modifier la forme des surfacesde n. Si le paramètre n est omis, une valeur par défaut de 1 est utilisée. Le type de noeud v dessurfaces élevées sera modifié en "Custom".

Voir aussi la section 5.5.6 Outil d’augmentation de l’ordre de la surface (Elevate Surface) (page 317).

reduceuNP – diminuer l’ordre d’une courbe NURBS dans la direction U :

• Synopsis: "reduceuNP [tol]"

• Tâche de fond : Oui, Effacer : Oui, Sûr : Oui

• Description: Diminuer l’ordre des surfaces NURBS sélectionnées dans la direction u de un si la formedes surfaces réduites ne s’écarte pas des surfaces originales de tol en aucun point. Si le paramètretol est omis, une valeur par défaut de 0.0 est utilisée, c’est-à-dire que l’ordre n’est réduit que si lasurface ne change pas. Le type de noeud des surfaces réduites sera changé en "Custom".

Voir aussi la section 5.5.7 Outil de réduction de l’ordre des surfaces (Reduce Surface) (page 318).

reducevNP – diminuer l’ordre d’une courbe NURBS dans la direction V :

• Synopsis: "reducevNP [tol]"

• Tâche de fond : Oui, Effacer : Oui, Sûr : Oui

• Description: Diminuer l’ordre des surfaces NURBS sélectionnées dans la direction v de un si la formedes surfaces réduites ne s’écarte pas des surfaces originales de tol en aucun point. Si le paramètretol est omis, une valeur par défaut de 0.0 est utilisée, c’est-à-dire que l’ordre n’est réduit que si lasurface ne change pas. Le type de noeud des surfaces réduites sera changé en "Custom".

Voir aussi la section 5.5.7 Outil de réduction de l’ordre des surfaces (Reduce Surface) (page 318).

splituNP – divise un patch NURBS dans la direction U :

• Synopsis: "splituNP [-a |-r] u"

• Tâche de fond : Oui, Effacer : Non, Sûr : Oui

• Description: Divise les objets NPatch sélectionnés en deux patchs à la valeur paramétrique u, créantainsi un nouvel objet NPatch et en modifiant l’objet NPatch original sélectionné. Si l’option "-r" estprésente, la valeur paramétrique est interprétée de manière relative et doit donc se situer dans la plage[0, 1].

Si l’option "-a" est présente, le ou les nouveaux objets NPatch seront ajoutés au niveau actuel.Sinon, le ou les nouveaux objets NPatch seront insérés dans le niveau juste après le ou les objetsNPatch respectifs à diviser. C’est la nouvelle valeur par défaut.1

Voir aussi la section 5.5.13 Outil de fractionnement de la surface (Split Surface) (page 324).

1 Depuis 1.24.

Page 395: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

6. Interface de script 395

splitvNP – divise un patch NURBS dans la direction V :

• Synopsis: "splitvNP [-a |-r] v"

• Tâche de fond : Oui, Effacer : Non, Sûr : Oui

• Description: Divise les objets NPatch sélectionnés en deux patchs à la valeur paramétrique v, créantainsi un nouvel objet NPatch et en modifiant l’objet NPatch original sélectionné. Si l’option "-r" estprésente, la valeur paramétrique est interprétée de manière relative et doit donc se situer dans la plage[0, 1].

Si l’option "-a" est présente, le ou les nouveaux objets NPatch seront ajoutés au niveau actuel.Sinon, le ou les nouveaux objets NPatch seront insérés dans le niveau juste après le ou les objetsNPatch respectifs à diviser. C’est la nouvelle valeur par défaut.1

Voir aussi la section 5.5.13 Outil de fractionnement de la surface (Split Surface) (page 324).

extrNP – extraire un patch NURBS :

• Synopsis: "extrNP [-relative] umin umax vmin vmax"

• Tâche de fond : Oui, Effacer : Non, Sûr : Oui

• Description: Extrait un sous-patch du NPatch sélectionné ou du NPatch fournissant des objets. Leou les patchs extraits seront ajoutés comme nouvel(s) objet(s) au niveau actuel de la scène. Le sous-patch à extraire est spécifié par les valeurs paramétriques umin, umax, vmin, et vmax qui doiventêtre dans la plage de noeuds valide respective.

Si l’argument optionnel "-relative" est spécifié, les valeurs paramétriques sont interprétées demanière relative et doivent par conséquent se situer dans la plage [0, 1].

Voir aussi la section 5.6.2 Outil d’extraction de patch (Extract Patch) (page 328).

tweenNP – interpoler (tween) des surfaces:

• Synopsis: "tweenNP [r]"

• Tâche de fond : Oui, Effacer : Non, Sûr : Oui

• Description: Interpoler (tween) entre les deux premiers patchs NURBS sélectionnés, en créant unnouveau patch qui incorpore les fonctionnalités des patchs sélectionnés. Le paramètre r définit lerapport d’influence du premier et du second patch (ce dernier utilisant 1-r). Ce paramètre est fixépar défaut à 0,5.Les deux patchs doivent être de la même largeur, hauteur, uorder et vorder. Elles ne doivent cependantpas être définies sur les mêmes vecteurs de noeuds.Si une troisième surface est sélectionnée, le paramètre r est ignoré et cette troisième surface définit lerapport d’influence avec ses coordonnées y.

Voir aussi la section 5.4.14 Outil d’interpolation de surfaces (Tween Surfaces) (page 311).

1 Depuis 1.24.

Page 396: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

6. Interface de script 396

interpuNP – interpoler la surface des NURBS dans la direction U :

• Synopsis: "interpuNP [-order order | -ktype type | -closed (0|1) |-sdlen length | -edlen length]"

• Tâche de fond : Oui, Effacer : Oui, Sûr : Oui

• Description: Interpoler les surfaces NURBS sélectionnées dans la direction U avec l’ordre et le type deparamétrage souhaités. L’ordre par défaut est de 4 et doit être supérieur à 2. Le type de paramétragedoit être l’un des suivants : 0 – Chordal, 1 – Centripetal, ou 2 – Uniform, la valeur par défaut estChordal. L’interpolation peut créer une surface fermée si le paramètre "-closed" le demande,mais cela augmentera également la largeur de la surface NURBS résultante. La valeur par défautest de créer une surface ouverte pour les surfaces d’entrée ouvertes et une surface fermée pour lessurfaces d’entrée fermées ou périodiques.

En utilisant les options "-sdlen" et "-edlen" (qui sont toutes deux par défaut à 0.0), la longueurdes dérivés de début/fin créés automatiquement peut être ajustée. Si l’une d’entre elles n’est pas à 0.0,un algorithme d’interpolation différent sera utilisé, ce qui augmente la largeur de la surface NURBSrésultante.

La surface interpolera tous les points de contrôle actuels après l’interpolation et la position de certainspoints de contrôle sera modifiée au cours de ce processus de sorte que, après l’interpolation, lesnouveaux points de contrôle ne seront pas interpolés par la surface. La surface interpolera plutôt lespositions des ancien points de contrôle.

Le type de noeud u des surfaces interpolées sera changé en "Custom".

Si l’option "-closed" n’est pas présente, la surface interpolée sera fermée pour les surfaces ferméeset périodiques.

Voir aussi la section 5.5.14 Outil d’interpolation de surface (Interpolate Surface) (page 325).

Page 397: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

6. Interface de script 397

interpvNP – interpoler la surface des NURBS dans la direction V :

• Synopsis: "interpvNP [-order order | -ktype type | -closed (0|1) |-sdlen length | -edlen length]"

• Tâche de fond : Oui, Effacer : Oui, Sûr : Oui

• Description: Interpoler les surfaces NURBS sélectionnées dans la direction V avec l’ordre et le type deparamétrage souhaités. L’ordre par défaut est de 4 et doit être supérieur à 2. Le type de paramétragedoit être l’un des suivants : 0 – Chordal, 1 – Centripetal, ou 2 – Uniform, la valeur par défaut estChordal. L’interpolation peut créer une surface fermée si le paramètre "-closed" le demande,mais cela augmentera également la largeur de la surface NURBS résultante. La valeur par défautest de créer une surface ouverte pour les surfaces d’entrée ouvertes et une surface fermée pour lessurfaces d’entrée fermées ou périodiques.

En utilisant les options "-sdlen" et "-edlen" (qui sont toutes deux par défaut à 0.0), la longueurdes dérivés de début/fin créés automatiquement peut être ajustée. Si l’une d’entre elles n’est pas à 0.0,un algorithme d’interpolation différent sera utilisé, ce qui augmente la largeur de la surface NURBSrésultante.

La surface interpolera tous les points de contrôle actuels après l’interpolation et la position de certainspoints de contrôle sera modifiée au cours de ce processus de sorte que, après l’interpolation, lesnouveaux points de contrôle ne seront pas interpolés par la surface. La surface interpolera plutôt lespositions des ancien points de contrôle.

Le type de noeud v des surfaces interpolées sera changé en "Custom".

Si l’option "-closed" n’est pas présente, la surface interpolée sera fermée pour les surfaces ferméeset périodiques.

Voir aussi la section 5.5.14 Outil d’interpolation de surface (Interpolate Surface) (page 325).

Page 398: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

6. Interface de script 398

breakNP – décomposer le patch NURBS en courbes :

• Synopsis: "breakNP [-r | -a | (-u | -v)]"

• Tâche de fond : Oui, Effacer : Non, Sûr : Oui

• Description: Décompose les objets NPatch sélectionnés en courbes NURBS, selon la dimensionparamétrique U ou V (selon que l’option "-u" ou "-v" est spécifiée, la valeur par défaut est U).

Si l’option "-a" est spécifiée, les transformations des objets NPatch seront appliquées aux pointsde contrôle et les objets NCurve seront créés avec des attributs de transformation par défaut, sinonles points de contrôle seront copiés mot pour mot et les objets NCurve recevront les attributs detransformation du NPatch respectif.

Si l’option "-r" est spécifiée, les nouveaux objets de courbe remplaceront chaque objet NPatch aulieu d’être ajoutés au niveau actuel. Ils seront également sélectionnés immédiatement.1

Voir aussi la section 5.6.3 Outil décomposition en courbes (Break into Curves) (page 329).

buildNP – construire un patch NURBS à partir de courbes :

• Synopsis: "buildNP [-r|-a (0|1) | -o order | -t type | -k knottype]"

• Tâche de fond : Oui, Effacer : Non, Sûr : Oui

• Description: Construire un patch NURBS à partir des courbes NURBS sélectionnées. La largeur dunouveau patch dépend du nombre de courbes fournies et du type de surface.

L’option "-a" contrôle si les attributs de transformation des courbes NURBS doivent être appliquésaux points de contrôle respectifs avant de construire le patch (par défaut 1 – oui).

L’option "-o" détermine l’ordre souhaité de la surface dans la direction U (par défautmin(4, largeur)).

L’option "-t" permet de définir un type de surface (0 – ouvert, 1 – fermé, 3 – périodique ; par défaut0).

L’option "-k" permet de définir un type de noeud (0 – Bezier, 1 – B-Spline, 2 – NURB, 4 – Chordal,5 – Centripetal, 2 – par défaut ; NURB). Les noeuds personnalisés ne sont pas pris en charge.

Si l’option "-r" est présente, les nouveaux objets NPatch remplaceront le premier objet NCurvesélectionné au lieu d’être ajoutés au niveau actuel, les autres objets NCurve seront supprimés.

Voir aussi la section 5.6.4 Outil de construction à partir de courbes (Build from Curves) (page 330).

1 Depuis 1.27.

Page 399: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

6. Interface de script 399

isCompNP:

• Synopsis: "isCompNP [(-u |-v) | -l level]"

• Tâche de fond : Oui, Effacer : Non, Sûr : Oui

• Description: Cette commande renvoie 1 si les surfaces NURBS sélectionnées sont compatibles (c’est-à-dire définies sur le même vecteur de noeud), sinon elle renvoie 0.

Si l’option "-u" est donnée, seule la dimension U sera vérifiée.Si l’option "-v" est donnée, seule la dimension V sera vérifiée.

Si "niveau" est 0, seuls les ordres des surfaces sont comparés.Si "level" est 1, la largeur/hauteur et les ordres des surfaces sont comparés.

makeCompNP – rendre les surfaces NURBS compatibles :

• Synopsis: "makeCompNP [-f | (-u |-v) | -l level]"

• Tâche de fond : Oui, Effacer : Oui, Sûr : Oui

• Description: rend les surfaces NURBS sélectionnées compatibles, c’est-à-dire du même ordre etdéfinies sur les mêmes vecteurs de noeuds.

Si l’option "-f" est présente, il n’y aura pas de contrôle de compatibilité préalable.

Si l’option "-u" est donnée, seule la dimension U sera adaptée.Si l’option "-v" est donnée, seule la dimension V sera adaptée.

Si "level" est 0, seules les commandes seront adaptées.Si "level" est 1, seuls les ordres et les longueurs seront adaptés.

Voir aussi la section 5.5.15 Outil pour rendre les surfaces compatibles (Make Surfaces Compatible)(page 326).

Page 400: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

6. Interface de script 400

curvatNP – calculer la courbure gaussienne :

• Synopsis: "curvatNP [-r] -u u -v v"

• Tâche de fond : Oui, Effacer : Non, Sûr : Oui

• Description: Calculer et renvoyer la courbure gaussienne de la surface NURBS sélectionnée ou del’objet fournissant la surface NURBS aux valeurs paramétriques désignées u et v.Si l’option "-r" est présente, les valeurs paramétriques sont interprétées de manière relative etdoivent donc se situer dans la plage [0, 1].

Si plusieurs objets sont sélectionnés, une liste de valeurs de courbure est renvoyée.

tobasisPM – convertir un PatchMesh sur une autre base :

• Synopsis: "tobasisPM [-t type | -s step | -b basis]"

• Tâche de fond : Oui, Effacer : Oui, Sûr : Oui

• Description: Convertit tous les objets PatchMesh bicubes sélectionnés sur une base différente. Lesdeux dimensions seront converties sur la même base ; ce n’est pas une erreur si une dimension estdéjà du type de la base cible.

L’option "-t" contrôle le nouveau type de base (0 – "Bezier", 1 – "B-Spline", 2 –"Catmull-Rom", 3 – "Hermite", 4 – "Power", 5 – "Custom"), la valeur par défaut est 1(conversion en "B-Spline").

L’option "-s" détermine la nouvelle taille de pas (1 à 4), elle prend par défaut la taille de pas naturelledu type de base cible et peut donc être omise sans risque, sauf si le type de base cible est "Custom",auquel cas la taille de pas doit être spécifiée.

L’option "-b" permet de convertir en une base personnalisée et est donc une liste de 16 valeurs envirgule flottante spécifiant une matrice de base 4 par 4 dans l’ordre principal des colonnes. Si "-b"est donné, le type de cible est par défaut "Custom" et l’option "-t" peut être omise.

• Exemple :"tobasisPM -t 0"convertit les mailles du patch bicubique sélectionné sur une base de Bézier.

tobasisBC – convertir les objets BCurve sur une base différente :

• Synopsis: "tobasisBC [-t type | -s step | -b basis]"

• Tâche de fond : Oui, Effacer : Oui, Sûr : Oui

• Description: Convertit tous les objets BCurve sélectionnés sur une base différente.

L’option "-t" contrôle le nouveau type de base (0 – "Bezier", 1 – "B-Spline", 2 –"Catmull-Rom", 3 – "Hermite", 4 – "Power", 5 – "Custom"), la valeur par défaut est 1(conversion en "B-Spline").

L’option "-s" détermine la nouvelle taille de pas (1 à 4), elle correspond par défaut à la taille depas naturelle du type de base cible et peut donc être omise sans risque, sauf si le type de cible est"Custom", auquel cas la taille de pas doit être spécifiée.

L’option "-b" permet de convertir en une base personnalisée et est donc une liste de 16 valeurs envirgule flottante spécifiant une matrice de base 4 par 4 dans l’ordre principal des colonnes. Si "-b"est donné, le type de cible est par défaut "Custom" et l’option "-t" peut être omise.

• Exemple :"tobasisBC -t 0"convertit les courbes de base sélectionnées en base de Béziers.

Page 401: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

6. Interface de script 401

6.2.16 Manipuler les objets PolyMesh

Il s’agit de commandes plus spécialisées pour modifier les propriétés des objets PolyMesh :

genfnPo – générer des normales à la face :

• Synopsis: "genfnPo"

• Tâche de fond : Oui, Effacer : Oui, Sûr : Oui

• Description: Générer des normales aux faces pour le ou les objets PolyMesh sélectionnés en utilisantl’algorithme robuste de Newell.

Les normales générées seront stockées dans une balise PV.

gensnPo – générer des normales régulières :

• Synopsis: "gensnPo"

• Tâche de fond : Oui, Effacer : Oui, Sûr : Oui

• Description: Générer des normales de sommets régulières pour le(s) objet(s) PolyMesh sélectionné(s),en faisant la moyenne des normales de faces environnantes de chaque sommet. Les normales de faceseront pondérées par la distance face-centre du sommet, qui prend en compte à la fois la surface et laforme de la face. Les sommets des boucles de trous obtiendront juste la normale de la face respective.

Les normales de sommet déjà existantes seront détruites.

Si des normales de face existent déjà, elles seront utilisées, sinon, de nouvelles normales de face serontgénérées en utilisant le même algorithme que celui mis en oeuvre dans la commande "genfnPo"ci-dessus.

remsnPo – supprimer des normales régulières :

• Synopsis: "remsnPo"

• Tâche de fond : Oui, Effacer : Oui, Sûr : Oui

• Description: Supprime toutes les normales régulières/sommet du ou des objets PolyMesh sélection-nés.

flipPo – retourner les normales ou les boucles :

• Synopsis: "flipPo [0|1|2]"

• Tâche de fond : Oui, Effacer : Oui, Sûr : Oui

• Description: Inverse les normales régulières/sommet du ou des objets PolyMesh sélectionnés. Pardéfaut, et si le paramètre est 0, toutes les boucles seront également retournées. Si le paramètre est 1,seules les normales sont inversées. Si le paramètre est 2, seules les boucles sont inversées.

Page 402: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

6. Interface de script 402

6.2.17 Manipuler des points

Utilisez ces deux commandes pour lire ou manipuler les points de contrôle des objets qui supportent l’éditionde points.

getPnt – obtenir un ou des points :

• Synopsis: "getPnt [-trafo | -world | -eval | -relative] (index | indexuindexv | u | u v ([varx vary varz [varw]] | -vn [varname]) | -all[varname] | -sel [varname])"

• Tâche de fond : Oui, Effacer : Non, Sûr : Oui

• Description: Obtenir un point de contrôle de l’objet actuellement sélectionné et écrire les valeursdes coordonnées dans les variables varx, vary, varz, et (si l’objet supporte des coordonnées ra-tionnelles) varw.

Les arguments d’index nécessaires dépendent du type d’objet sélectionné. Par exemple, la lecturedes points d’une courbe NURBS ne nécessite qu’un seul paramètre d’index (index), alors que lalecture des points d’un patch NURBS nécessite la spécification de deux paramètres d’index (indexuet indexv).

Si l’argument optionnel "-trafo" est donné, les coordonnées seront en outre transformées par lesvaleurs données dans la propriété Transformation de l’objet.

Si l’argument optionnel "- world " est utilisé, les coordonnées seront en outre transformées enespace mondial.

Si l’argument optionnel "-eval" est spécifié, les valeurs "indexu" et "indexv" sont inter-prétées comme des valeurs paramétriques d’une courbe ou d’une surface NURBS et le point corre-spondant sur la courbe ou la surface est restitué en varx, vary, et varz.

Si l’argument optionnel "-relative" est spécifié, la valeur paramétrique pour la courbe NURBSou l’évaluation de la surface est interprétée de manière relative et doit par conséquent se situer dansla plage [0, 1].

Si l’argument alternatif "-vn" est donné, les valeurs des coordonnées seront ajoutées à la variable deliste spécifiée par "varname".

Si l’argument alternatif "-all" est utilisé, toutes les valeurs de coordonnées des objets sélectionnésseront ajoutées à la variable de liste spécifiée par "varname".

Si l’argument alternatif "-sel" est utilisé, les valeurs des coordonnées des points actuellement sélec-tionnés des objets sélectionnés seront ajoutées à la variable de liste spécifiée par "varname".1

Si l’un des arguments du nom de la variable est omis, la commande renvoie les résultats respectifs.2

• Notes: Dans les versions de Ayam antérieures à 1.20, seules les variables globales étaient écrites, cen’est plus le cas.

• Exemples:

1. "getPnt 1 x y z w"obtient les valeurs des coordonnées du deuxième point de la courbe NURBS sélectionnée et écritles valeurs dans les variables "x y z w".

2. "getPnt -eval 0.5 x y z"obtient le point de courbe à la valeur paramétrique "0.5" et écrit les valeurs des coordonnéesdans les variables "x y z".

1 Depuis 1.28. 2 Depuis 1.27.

Page 403: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

6. Interface de script 403

setPnt – Définir un ou des points :

• Synopsis: "setPnt [-world] (index | indexu indexv) (x y z [w] | -vnvarname) | (-all|-sel) varname)"

• Tâche de fond : Oui, Effacer : Oui, Sûr : Oui

• Description: Définir un point de contrôle de l’objet actuellement sélectionné aux coordonnées x, y,z et w ou aux coordonnées d’une liste, ou définir tous les points de contrôle à partir d’une liste devaleurs de coordonnées.

Les arguments d’index nécessaires dépendent du type d’objet sélectionné, par exemple la manipula-tion des points d’une courbe NURBS ne nécessite qu’un seul paramètre d’index (index), alors quela manipulation des points d’un patch NURBS nécessite la spécification de deux paramètres d’index(indexu et indexv).

Si le paramètre facultatif "-world" est donné, les valeurs des coordonnées sont exprimées dansl’espace mondial et seront transformées en coordonnées appropriées de l’espace objet avant d’êtredéfinies.

Si le paramètre optionnel "w" est omis, mais que l’objet sélectionné a des points rationnels, unevaleur par défaut de 1.0 sera utilisée pour le poids.

Si le paramètre alternatif "-vn" est utilisé, les valeurs des coordonnées seront lues à partir de lavariable spécifiée par "varname" qui doit être une liste de valeurs doubles.

Si le paramètre alternatif "-all" est fourni, tous les points de contrôle des objets sélectionnés serontdéfinis et les valeurs des coordonnées seront lues à partir de la variable spécifiée par "varname" quidoit être une liste de valeurs doubles.

Si l’argument alternatif "-sel" est utilisé, tous les points de contrôle sélectionnés des objets sélec-tionnés seront définis et les valeurs des coordonnées seront lues à partir de la variable spécifiée par"varname" qui doit être une liste de valeurs doubles.1

Lors de la lecture des données des variables de liste, aucune précision ne sera perdue car il n’y a pasde double chaine - double conversion impliquée.

• Exemples :

1. "setPnt 1 0.0 0.2 0.3 1.0"fixe les valeurs des coordonnées du deuxième point de l’objet courbe NURBS sélectionné à"0.0 0.2 0.3 1.0".

2. "setPnt -world 0 0 0 0"fixe le premier point de l’objet courbe NURBS sélectionné à l’origine du monde, quels que soientles attributs de transformation de l’objet courbe (ou de l’un de ses objets parents potentiels).

3. "setPnt 2 1 0.0 0.2 0.3"fixe les valeurs des coordonnées du deuxième point de la troisième colonne du maillage decontrôle de l’objet patch NURBS sélectionné à "0.0 0.2 0.3 1.0".

1 Depuis 1.28.

Page 404: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

6. Interface de script 404

6.2.18 Mettre à jour l’interface graphique

Ces procédures mettent à jour diverses parties de l’interface utilisateur de Ayam :

rV – redessiner toutes les vues :

• Synopsis: "rV"

• Tâche de fond : Non, Effacer : Non, Sûr : Non, Type : Procédure

• Description: Redessine toutes les vues actuellement ouvertes, à l’exception des vues iconifiées et desvues où le retraçage automatique a été désactivé.

uS – mettre à jour ce qui est sélectionné :

• Synopsis: "uS [update_prop maintain_selection]"

• Tâche de fond : Non, Effacer : Non, Sûr : Non, Type : Procédure

• Description: Mettre à jour la liste des objets ou l’arborescence après une modification de la hiérarchiedes objets. Si update_prop est égal à 0, aucune mise à jour des GUI de propriété n’aura lieu.

Si maintain_selection est à 1, l’ancienne sélection sera rétablie.

Si les deux arguments sont omis, update_prop prend par défaut la valeur 1 et maintain_selection lavaleur 0.

• Deficiencies : uS supprime complètement l’arbre d’objets du widget arbre et le reconstruit, ce quipeut être une opération très longue (selon la complexité de la scène). Il existe quelques options pouraccélérer ce processus :

– S’il n’y avait que des changements au niveau actuel (et en dessous), l’entrée du tableau global"ay(ul)" (UpdateLevel) peut être mise au niveau actuel avant d’appeler "uS". Cela ne sup-primera pas et ne mettra pas à jour la scène complète, mais seulement la partie située en dessousde "ay(ul)". Exemple :

global ay; set ay(ul) $ay(CurrentLevel); uS;

.

– Si des objets ont été créés et doivent donc être ajoutés au niveau actuel de l’arborescence desobjets, la commande "uCR" peut être utilisée à la place de "uS".

– Si seuls les noms ou types d’objets du niveau actuel ont été modifiés, la commande "uCL cl"peut être utilisée au lieu de "uS".

uCL – mettre à jour le niveau actuel :

• Synopsis: "uCL mode [args]"

• Tâche de fond : Non, Effacer : Non, Sûr : Non, Type : Procédure

• Description: Ne mettre à jour que le niveau actuel de la boîte de liste ou de l’arborescence des objetsaprès les modifications. Voir aussi la discussion de "uS" ci-dessus. Le paramètre "mode" peut être"cl" ou "cs", où "cl" est le mode de fonctionnement normal, et "cs" efface simplement la sélection.

uCR – mettre à jour le niveau actuel après une création :

• Synopsis: "uCR"

• Tâche de fond : Non, Effacer : Non, Sûr : Non

Page 405: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

6. Interface de script 405

• Description: Ne mettre à jour que le niveau actuel de la boîte de liste des objets ou de l’arborescenceaprès que les objets ont été créés et doivent être ajoutés au niveau actuel. Voir aussi la discussion de"uS" ci-dessus.

plb_update – mise à jour de la liste des propriétés :

• Synopsis: "plb_update"

• Tâche de fond : Non, Effacer : Non, Sûr : Non, Type : Procédure

• Description: Effacer l’interface graphique de la propriété actuelle, demander à l’objet actuellementsélectionné une liste de propriétés et les insérer dans la zone de liste des propriétés, puis reconstruirel’interface graphique de la propriété avec le même index dans la zone de liste des propriétés que lapropriété sélectionnée avant le lancement de plb_update (ce n’est pas nécessairement une propriétédu même type).

Depuis Ayam 1.13, il est également possible d’exécuter automatiquement des commandes de mise à jourde l’interface graphique dans la console en utilisant <Shift+Return> au lieu de <Return>. Lescommandes du réglage des préférences cachées "AUCommands" seront exécutées après les commandesde la ligne de commande, si la touche <Shift> est maintenue enfoncée. <Shift+Retour> peutégalement être utilisé sans commandes sur la ligne de commande. Par défaut, les "AUCommands" sont"uS; rV;", ce qui permet de mettre à jour l’arbre d’objets, l’interface graphique des propriétés et lesvues.

6.2.19 Gestion des préférences

Ces commandes gèrent les données des préférences :

getPrefs – obtenir des données sur les préférences :

• Synopsis: "getPrefs"

• Tâche de fond : Non, Effacer : Non, Sûr : Non

• Description: Copier les données de préférences du C vers Tcl.

setPrefs – Définir les données des préférences :

• Synopsis: "setPrefs"

• Tâche de fond : Non, Effacer : Non, Sûr : Non

• Description: Copier les données de préférences de Tcl vers C. Ceci est nécessaire après une modifi-cation du tableau global Tcl "ayprefs" pour permettre à tous les changements de prendre effet.

Voir aussi la section 2.10 Les préférences (page 60)

6.2.20 Objets personnalisés / Plugins

Cette commande gère les objets personnalisés (plugins) :

loadPlugin – charger un objet personnalisé / plugin :

• Synopsis: "loadPlugin name"

Page 406: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

6. Interface de script 406

• Tâche de fond : Non, Effacer : Non, Sûr : Non, Type : Procédure

• Description: Charger un objet personnalisé / plugin. Si name est un nom de fichier complet et quele fichier désigné existe, il sera chargé directement. Sinon, le fichier à charger sera recherché dans laliste des répertoires de plugins configurés (voir "Plugins" réglage des préférences).

Notez qu’il n’est actuellement pas possible de décharger un objet ou un plugin personnalisé de Ayam.

6.2.21 Appliquer des commandes à un certain nombre d’objets

Ces procédures et commandes permettent d’appliquer des commandes quelconques à un certain nombred’objets sélectionnés.

forAll:• Synopsis: "forAll [(-recursive|-r) r | (-type|-t) t] command"

• Tâche de fond : dépend de, Effacer : dépend de, Sûr : Non, Type : Procédure

• Description: La procédure forAll exécute la commande pour tous les objets qui ont été sélectionnésactuellement, ou pour chaque objet du niveau actuel si rien n’a été sélectionné.

Si r est égal à 1 (c’est la valeur par défaut), forAll se reproduira dans chaque objet (s’il a des objetsenfants) avant l’exécution de la commande. Si r est égal à 2, la récursion se produira après l’exécutionde la commande. Si r est égal à 0, seuls les objets du niveau actuel seront traités.

Si l’option "-type" est donnée, seuls les objets du type spécifié t seront traités.

Avant Ayam 1.22, les erreurs potentielles des commandes étaient supprimées et le traitement se pour-suivait malgré tout. Mais cela rendait l’utilisation interactive et le débogage inutilement difficiles. Àpartir de 1.22, les erreurs sont signalées à l’utilisateur et le traitement s’arrête immédiatement. Les er-reurs peuvent encore être supprimées à l’aide de la commande "catch" comme celle-ci : "forAll{ catch { commands } }"Comme la commande sera potentiellement appelée plusieurs fois, les valeurs résultat de toute sortene peuvent pas être fournies à l’aide de la commande "return" mais doivent plutôt être stockéesdans des variables globales. En fait, renvoyer toute valeur qui n’est pas -1 sera interprété comme uneerreur et le traitement s’arrêtera immédiatement. Le renvoi de -1 dans une forAll récursive arrêterale traitement sans provoquer d’erreur.

La variable globale "ay(CurrentLevel)" sera maintenue tandis qu’un forAll récursif parcourtla scène. De plus, la variable globale "i" sera définie sur l’index de l’objet courant.

Notez que forAll fonctionnera lentement si une interface graphique de propriété est affichée. Si la pro-priété actuelle est d’abord désélectionnée (en utilisant par exemple le menu contextuel de la propriété),elle s’exécutera beaucoup plus rapidement.

En outre, la sélection actuelle est correctement maintenue.

• Défauts :– En outre, la sélection actuelle est correctement maintenue. 1

– Un forAll récursif va par exemple aussi descendre dans les patchs NURBS (s’ils ont des courbesde trim) et appliquer la commande aux courbes de trim, ce qui pourrait ne pas être exactementce que vous voulez. Utilisez l’option "-type" dans ce cas.

– La commande n’aura pas accès aux tableaux globaux à moins que, par exemple, l’une des con-structions suivantes ne soit utilisée :"forAll { uplevel #0 { commands } }""forAll { global arrayname; commands }"

1 Depuis 1.9.

Page 407: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

6. Interface de script 407

– Il n’est pas possible d’utiliser des commandes qui modifient la hiérarchie des objets (par exem-ple, supprimer ou insérer des objets). Les commandes peuvent simplement modifier des objetsexistants.

withOb – exécuter une commande sur certains des objet(s) sélectionné(s) :

• Synopsis: "withOb index [do] command"

• Tâche de fond : dépend de la commande, Effacer : dépend de la commande, Sûr : Oui

• Description: Utilisez cette commande pour exécuter une commande sur un seul objet (désigné parl’index basé sur le zéro) à partir d’une sélection multiple sans changer l’état de sélection d’aucunobjet.

• Exemple :

1. "withOb 2 {movOb 0 1 0}"déplace le troisième objet parmi plusieurs objets sélectionnés. Tous les objets restent sélection-nés.

6.2.22 Entrée/sortie de scène

Ces commandes permettent de charger des scènes et de les enregistrer dans des fichiers de scènes Ayam :

replaceScene:

• Synopsis: "replaceScene filename"

• Tâche de fond : Oui, Effacer : Non, Sûr : Non

• Description: efface la scène en cours, puis charge une nouvelle scène à partir du fichier désigné par leparamètre "filename".

• Notes: Contrairement à l’utilisation du menu principal, d’autres tâches administratives sont détailléesdans la section 8.3.1 Ouvrir une Scène (page 488) ne seront pas exécutées.

En particulier, cette commande ne permet pas de vérifier ou de modifier l’état de changement de scèneet de définir la liste la plus récemment utilisée. En outre, l’importation automatique ne fonctionne pas.

insertScene:

• Synopsis: "insertScene filename"

• Tâche de fond : Oui, Effacer : Non, Sûr : Non

• Description: insère une scène du fichier désigné par le paramètre "filename".

• Notes : Contrairement à l’utilisation du menu principal, certaines tâches ménagères détaillées dans lasection 8.3.2 Insérer une scène (page 489) ne seront pas exécutées.

En particulier, cette commande ne modifie pas l’état de changement de scène.

saveScene:

• Synopsis: "saveScene filename [selected]"

• Tâche de fond : Oui, Effacer : Non, Sûr : Non

• Description : enregistre la scène en cours dans le fichier désigné par le paramètre " filename ".Si le paramètre optionnel "selected" est égal à 1, seuls les objets sélectionnés seront sauvegardés.

Page 408: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

6. Interface de script 408

• Notes : Contrairement à l’utilisation du menu principal, certaines tâches de maintenance détailléesdans la section 8.3.3 Sauvegarder une scène (page 490) ne seront pas exécutées.

En particulier, cette commande ne modifiera pas l’état de changement de scène et ne définira pas laliste la plus récemment utilisée. En outre, l’exportation et la sauvegarde automatiques des géométriesde fenêtres ne fonctionnent pas.

newScene:

• Synopsis: "newScene"

• Tâche de fond : Oui, Effacer : Non, Sûr : Non

• Description: nettoie la scène courante.

• Notes: Contrairement à l’utilisation du menu principal, cette commande ne permet pas de vérifier oude modifier l’état de changement de scène.

6.2.23 Exportation RIB

Cette commande permet d’exporter la scène en cours vers un fichier RIB (RenderMan Interface Bytestream):

wrib – exportation RIB :

• Synopsis: "wrib filename [-image imagename] [-smonly | -selonly |-objonly]"

• Tâche de fond : Oui, Effacer : Non, Sûr : Non

• Description: exporte la scène actuelle dans un fichier RIB désigné par "filename".

Si l’argument "-image" est donné, le fichier RIB créera un fichier image nommé "imagename"lors du rendu. L’exportation utilisera la transformation de la caméra à partir de l’objet Cameraactuellement sélectionné.

Si l’argument "-smonly" est fourni, un RIB pour rendre les cartes d’ombrage sera créé etl’argument de "-image" sera ignoré. Voir aussi la section 4.2.4 Utilisation des ombrages (Shad-owMaps) (page 118).

Si l’argument "-selonly" est utilisé, seuls les objets (géométriques) sélectionnés seront exportés,ce qui résultera en un fichier RIB non adapté au rendu (aucune configuration, transformation decaméra ou lumières n’y figurent) mais fait pour l’inclusion dans d’autres scènes via RiArchive. Voiraussi la section 4.2.11 L’objet RiInc (page 137).

De même, "-objonly" conduit à un fichier RIB contenant tous les objets de la scène mais ne seprêtant pas au rendu.

La commande "wrib" nécessite toujours un objet caméra sélectionné (sauf si les options"-selonly" ou "-objonly" sont données) ; s’il n’y en a pas ou si les transformations de lacaméra associée à une fenêtre de vue doivent être utilisées, le Togl callback (????) correspondantpour la vue peut être utilisé comme ceci à la place :

.view1.f3D.togl wrib -file filename.rib

Le rappel Togl comprend les mêmes options que la commande "wrib".

• Notes : Dans les versions de Ayam antérieures à la 1.15, le nom de fichier devait être précédé d’un"-filename", ce n’est plus le cas.

Page 409: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

6. Interface de script 409

6.2.24 Signalement d’erreur

Cette commande sert à signaler les erreurs des scripts :

ayError:

• Synopsis: "ayError code place detail"

• Tâche de fond : Non, Effacer : Non, Sûr : Non

• Description: Cette commande signale les erreurs ou les avertissements. ayError doit être préféré àputs parce que le mécanisme de rapport d’erreurs de Ayam comporte une sortie formatée de manièrecohérente, la compression des messages répétés et l’enregistrement. Le paramètre de code doit êtrel’un des suivants : 1 – avertissement, 2 – erreur, 3 – messages de vidange, 4 – sortie non spéci-fiée. Il existe d’autres codes définis (voir ayam.h, chercher Codes de retour/d’erreur) mais ils ne sontgénéralement pas nécessaires dans le contexte d’un script Tcl. Le paramètre " place " doit décrire laprocédure dans laquelle l’erreur s’est produite. Le paramètre "detail" est la chaîne de caractères desortie.

• Notes: La sortie réelle dans la console Ayam dépend de l’option de préférence "ErrorLevel" voirsection 2.10.5 Préférences diverses (page 72).

6.2.25 Gestion de l’interface graphique des propriétés

Ces procédures aident à gérer les GUI de propriété. Voir aussi la section 6.1.5 Gestion des propriétés ettableaux de données (page 340).

addPropertyGUI:

• Synopsis: "addPropertyGUI name"

• Tâche de fond : Non, Effacer : Non, Sûr : Oui, Type : Procédure

• Description: Cette procédure met en place un tableau de gestion des propriétés de l’interfacegraphique et crée un cadre d’encapsulation pour les éléments de l’interface graphique dont le nomde la fenêtre sera renvoyé.

Le tableau sera configuré de manière à ce que le tableau de données de la propriété soit nommécomme la propriété avec la chaîne Data annexée, c’est-à-dire que pour MyProperty il seraMyPropertyData.

Les entrées de la procédure "Get/Set" seront laissées vides.

Après la création des éléments de l’interface graphique de propriété, les balises "NP" doivent êtreutilisées pour rendre la nouvelle propriété visible par l’utilisateur. Voir aussi la section 4.11.13 BaliseNP (New Property) (page 264).

Un exemple complet est disponible dans la section 4.9.1 Exemple de ligne paramétrique (page 232).

• Exemple : "set w [addPropertyGUI MyProperty]"

Les procédures suivantes permettent d’ajouter des éléments d’interface utilisateur aux GUI de propriétécréés par "addPropertyGUI".

Page 410: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

6. Interface de script 410

addParam:

• Synopsis: "addParam window arrayname paramname [defaults]"

• Tâche de fond : Non, Effacer : Non, Sûr : Oui, Type : Procédure

• Description: Cette procédure ajoute un élément GUI de propriété pour un seul paramètre en nombreentier ou en virgule flottante.

Le paramètre "window" doit contenir le nom de la fenêtre tel que renvoyé par"addPropertyGUI" ci-dessus.

Le paramètre "arrayname" est le nom du tableau de données correspondant à la propriété.

Le paramètre "paramname" est le nom du paramètre.

Le paramètre "defaults" est une liste de valeurs par défaut. Ces valeurs seront présentéesà l’utilisateur sous la forme d’un menu déroulant supplémentaire sur le côté droit de l’élémentd’interface.

• Exemple : "addParam $w MyPropertyData MyFloat {0.1 0.5 1.5}"

addString:

• Synopsis: "addString window arrayname paramname [defaults]"

• Tâche de fond : Non, Effacer : Non, Sûr : Oui, Type : Procédure

• Description: Cette procédure ajoute un élément GUI de propriété pour un paramètre de chaîne unique.

Le paramètre "window" doit contenir le nom de la fenêtre tel que renvoyé par"addPropertyGUI" ci-dessus.

Le paramètre "arrayname" est le nom du tableau de données correspondant à la propriété.

Le paramètre "paramname" est le nom du paramètre.

Le paramètre "defaults" est une liste de valeurs par défaut. Ces valeurs seront présentéesà l’utilisateur sous la forme d’un menu déroulant supplémentaire sur le côté droit de l’élémentd’interface. Si la liste contient une entrée "...", la sélection de cette entrée effacera le champde saisie de la chaîne et déplacera le focus de saisie vers le champ.

• Exemple : "addString $w MyPropertyData MyString {"a" "b" "abc"}"

addCheck:

• Synopsis: "addCheck window arrayname paramname [onoffvalues]"

• Tâche de fond : Non, Effacer : Non, Sûr : Oui, Type : Procédure

• Description: Cette procédure ajoute un élément GUI de propriété pour un paramètre booléen uniqueréalisé par un bouton de contrôle.

Le paramètre "window" doit contenir le nom de la fenêtre tel que renvoyé par"addPropertyGUI" ci-dessus.

Le paramètre "arrayname" est le nom du tableau de données correspondant à la propriété.

Le paramètre "paramname" est le nom du paramètre.

Le paramètre facultatif "onoffvalues" est une liste de deux valeurs qui seront utilisées lors dela définition de la variable correspondante lorsque le bouton de contrôle est activé ou désactivé. Lesvaleurs par défaut sont 0 et 1.

• Exemple : "addCheck $w MyPropertyData MyBool"

Page 411: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

6. Interface de script 411

addColor:

• Synopsis: "addColor window arrayname paramname [defaults]"

• Tâche de fond : Non, Effacer : Non, Sûr : Oui, Type : Procédure

• Description: Cette procédure ajoute un élément GUI de propriété pour un paramètre de couleurunique.

Le paramètre "window" doit contenir le nom de la fenêtre tel que renvoyé par"addPropertyGUI" ci-dessus.

Le paramètre "arrayname" est le nom du tableau de données correspondant à la propriété.

Le paramètre "paramname" est le nom du paramètre.

Le paramètre "defaults" est une liste de valeurs par défaut. Ces valeurs seront présentéesà l’utilisateur sous la forme d’un menu déroulant supplémentaire sur le côté droit de l’élémentd’interface.

• Exemple : "addColor $w MyPropertyData MyColor"

addMatrix:

• Synopsis: "addMatrix window arrayname paramname"

• Tâche de fond : Non, Effacer : Non, Sûr : Oui, Type : Procédure

• Description: Cette procédure ajoute un élément GUI de propriété pour une matrice d’éléments enquatre par quatre, par exemple une matrice de transformation.

Le paramètre "window" doit contenir le nom de la fenêtre tel que renvoyé par"addPropertyGUI" ci-dessus.

Le paramètre "arrayname" est le nom du tableau de données correspondant à la propriété.

Le paramètre "paramname" est le nom du paramètre. Les noms des variables individuelles de lavaleur de la matrice seront formés en ajoutant un "_0" à "_15" au "paramname".

• Exemple : "addMatrix $w MyPropertyData MyMatrix"

addMenu:

• Synopsis: "addMenu window arrayname paramname choices"

• Tâche de fond : Non, Effacer : Non, Sûr : Oui, Type : Procédure

• Description: Cette procédure ajoute un élément d’interface graphique de propriété pour un paramètreà choix multiple / de menu réalisé par un menu déroulant. La valeur du paramètre sera l’index del’élément de menu choisi.

Le paramètre "window" doit contenir le nom de la fenêtre tel que renvoyé par"addPropertyGUI" ci-dessus.

Le paramètre "arrayname" est le nom du tableau de données correspondant à la propriété.

Le paramètre "paramname" est le nom du paramètre.

Le paramètre "choices" est une liste de chaînes de caractères qui seront présentées dans le menu.

Contrairement aux autres éléments de l’interface utilisateur générant des procédures, l’entrée cor-respondante dans le tableau des données de propriété doit exister avant que cette procédure ne soitappelée.

• Exemple : "addMenu $w MyPropertyData MyMenu {Choice1 Choice2}"

Page 412: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

6. Interface de script 412

addFile:

• Synopsis: "addFile window arrayname paramname [defaults]"

• Tâche de fond : Non, Effacer : Non, Sûr : Non, Type : Procédure

• Description: Cette procédure ajoute un élément GUI de propriété pour un nom de fichier.

Le paramètre "window" doit contenir le nom de la fenêtre tel que renvoyé par"addPropertyGUI" ci-dessus.

Le paramètre "arrayname" est le nom du tableau de données correspondant à la propriété.

Le paramètre "paramname" est le nom du paramètre.

Le paramètre "defaults" est une liste de valeurs par défaut. Ces valeurs seront présentéesà l’utilisateur sous la forme d’un menu déroulant supplémentaire sur le côté droit de l’élémentd’interface.

• Notes : Il existe une variante de cette procédure pour les noms de fichiers destinés à être utilisés pourla sauvegarde : "addSFile"

• Exemple :"addFile $w MyPropertyData MyFile {"/tmp/file1" "/tmp/file2"}"

addCommand:

• Synopsis: "addCommand window name text command"

• Tâche de fond : Non, Effacer : Non, Sûr : Oui, Type : Procédure

• Description: Cette procédure ajoute un élément GUI de propriété pour permettre à l’utilisateur delancer une commande à l’aide d’un bouton poussoir.

Le paramètre "window" doit contenir le nom de la fenêtre tel que renvoyé par"addPropertyGUI" ci-dessus.

Le paramètre "name" est le nom du widget de bouton correspondant. Les noms doivent être uniquesdans chaque interface graphique de propriété.

Le paramètre "text" est la chaîne de caractères à placer sur le bouton.

Le paramètre "command" est la commande à exécuter lorsque le bouton est enfoncé.

• Exemple : "addCommand $w b1 PushMe {puts pushed}"

addText:

• Synopsis: "addText window name text"

• Tâche de fond : Non, Effacer : Non, Sûr : Oui, Type : Procédure

• Description: Cette procédure ajoute un élément GUI de propriété pour afficher des informations sta-tiques, par exemple un nom de section de paramètre.

Le paramètre "window" doit contenir le nom de la fenêtre tel que renvoyé par"addPropertyGUI" ci-dessus.

Le paramètre "name" est le nom du widget d’étiquette correspondant. Les noms doivent être uniquesdans chaque GUI de propriété.

Le paramètre "text" est la chaîne de caractères à afficher.

• Exemple : "addText $w t1 "Angular Parameters:""

Page 413: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

6. Interface de script 413

addInfo:

• Synopsis: "addInfo window arrayname paramname"

• Tâche de fond : Non, Effacer : Non, Sûr : Oui, Type : Procédure

• Description: Cette procédure ajoute un élément GUI de propriété pour afficher des informationstextuelles dynamiques.

Le paramètre "window" doit contenir le nom de la fenêtre tel que renvoyé par"addPropertyGUI" ci-dessus.

Le paramètre "arrayname" est le nom du tableau de données correspondant à la propriété.

Le paramètre "paramname" est le nom du paramètre dont la valeur doit être affichée. Chaque foisque la valeur de cette variable change, l’étiquette correspondante est automatiquement mise à jour.

Si une deuxième variable nommée "paramname" mais avec un "Ball" supplémentaire existe, savaleur sera affichée sous forme de bulle d’aide, lorsque le pointeur de la souris survole l’étiquette. Decette façon, des informations plus longues ou plus complexes peuvent être présentées.

• Exemple : "addInfo $w MyPropertyData NumGeneratedElems"

addProgress:

• Synopsis: "addProgress window arrayname paramname"

• Tâche de fond : Non, Effacer : Non, Sûr : Non, Type : Procédure

• Description : Cette procédure ajoute un élément GUI de propriété pour afficher des informations surl’avancement.

Le paramètre "window" doit contenir le nom de la fenêtre tel que renvoyé par"addPropertyGUI" ci-dessus.

Le paramètre "arrayname" est le nom du tableau de données correspondant à la propriété.

Le paramètre "paramname" est le nom du paramètre où la progression est stockée en pourcentage.

• Exemple : "addProgress $w MyPropertyData Progress"

addVSpace:

• Synopsis: "addVSpace window name height"

• Tâche de fond : Non, Effacer : Non, Sûr : Oui, Type : Procédure

• Description: Cette procédure permet d’ajouter un élément vide de l’interface graphique de propriétéavec une hauteur définie pour améliorer la présentation de l’interface graphique de propriété.

Le paramètre "window" doit contenir le nom de la fenêtre tel que renvoyé par"addPropertyGUI" ci-dessus.

Le paramètre "name" est le nom du widget correspondant. Les noms doivent être uniques danschaque GUI de propriété.

Le paramètre "height" est la hauteur souhaitée en pixels.

• Exemple : "addVSpace $w v1 20"

Page 414: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

6. Interface de script 414

addOptionToggle:

• Synopsis: "addOptionToggle window arrayname paramname text cmd"

• Tâche de fond : Non, Effacer : Non, Sûr : Oui, Type : Procédure

• Description: Cette procédure ajoute un élément GUI de propriété qui permet de basculer la visibilitédes autres éléments GUI de propriété.

Le paramètre "window" doit contenir le nom de la fenêtre tel que renvoyé par"addPropertyGUI" ci-dessus.

Le paramètre "arrayname" est le nom du tableau de gestion de la propriété.

Le paramètre "paramname" est le nom d’une variable qui contient l’état de visibilité actuel.

Le paramètre "text" est le texte à afficher sur le widget de basculement, il s’agit généralementd’une chaîne comme "Advanced Options".

Le paramètre "cmd" est le nom d’une procédure qui, sur la base de l’état de visibilité actuel, crée oudétruit les autres éléments de l’interface graphique de propriété.

• Exemple :

proc toggleAdvanced { } {global MyPropset w $MyProp(w)if { $MyProp(ShowAdvanced) } {

addCheck $w MyPropData AdvancedOption} else {

catch {destroy $w.fAdvancedOption}}

}set w [addPropGUI MyProp]set MyProp(w) $waddCheck $w MyPropData CommonOptionaddOptionToggle $w MyProp ShowAdvanced "Advanced Options" \

toggleAdvanced

6.2.26 Divers

Commandes diverses :

convOb:

• Synopsis: "convOb [-inplace [type] | -check type]"

• Tâche de fond : Oui, Effacer : dépend de (si -inplace: Oui), Sûr : Oui

• Description: Cette commande appelle le convertisseur enregistré pour les objets sélectionnés, qui créegénéralement de nouveaux objets d’un type différent.

Si l’option "-inplace" est utilisée, le(s) nouvel(s) objet(s) remplacera(ont) l’ancien(s) objet(s). Si,en outre, un type de cible est spécifié, la conversion sera répétée jusqu’à ce que l’objet soit du typedemandé (et aucune conversion n’est tentée si l’objet est déjà du type demandé).1

Si l’option "-check" est donnée, la commande convOb ne convertit pas mais vérifie, si une conver-sion vers un type d’objet donné serait réussie, le résultat de la vérification sera renvoyé sous la forme

1 Depuis 1.25.

Page 415: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

6. Interface de script 415

0 – non, ou 1 – oui. Notez que seules les conversions immédiates, en une étape, sont vérifiées, et nonles conversions en plusieurs étapes comme celles effectuées par les conversions en place avec le typed’objet cible.

Page 416: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

6. Interface de script 416

Annuler :

• Synopsis: "undo [redo | save opname [0|1] | clear | rewind]"

• Tâche de fond : Oui, Effacer : Oui, Sûr : Non

• Description:– Si elle est appelée sans argument, cette commande effectue l’opération d’annulation.

– Si l’argument est "redo", cette commande effectue l’opération de refaire.

– Si l’argument est "save", les objets actuellement sélectionnés sont enregistrés dans letampon d’annulation pour les opérations d’annulation futures. Le nom de l’opérationde modélisation suivante doit être fourni dans un second argument ("opname"). Cenom sera affiché dans l’invite de la console par défaut, pour informer l’utilisateurde l’opération qui serait annulée/rétablie, si undo/redo serait utilisé (par exemple :"[undo:MoveObj/Redo:none].../bin>"). Depuis Ayam 1.13, un troisième argu-ment peut être donné, qui contrôle si tous les enfants des objets sélectionnés doivent égalementêtre sauvegardés. Cela peut être nécessaire si l’action de modélisation qui suit la sauvegarded’annulation est sur le point de modifier les objets sélectionnés et aussi leurs enfants. Remarque: l’annulation de l’enregistrement n’échoue pas si aucun objet n’est sélectionné.

– Si l’argument est "clear", tous les états actuellement sauvegardés seront effacés du tampond’annulation.

– L’argument "rewind" est disponible depuis Ayam 1.14. Avec cette commande, vous pouvezannuler la dernière opération d’annulation de sauvegarde. Cela peut être nécessaire, si uneopération de modélisation a échoué. Il faut cependant faire attention à ne pas rembobiner l’étatd’annulation, lorsqu’une opération de modélisation a échoué seulement pour certains (pas pourtous) des objets sélectionnés.

• Exemple :

undo save "MovOb"set ay_error ""movOb 0 1 0if { $ay_error > 1 } {undo rewind

}

• Notes: Voir aussi la section 8.1 Le système d’annulation (undo) (page 485).

Page 417: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

6. Interface de script 417

runTool:

• Synopsis: "runTool vars labels commands title [doc]"

• Tâche de fond : Oui, Effacer : Non, Sûr : Non, Type : Procédure

• Description: Cette procédure ouvre une fenêtre de dialogue pour demander un ensemble de valeurs deparamètres, spécifiées via vars et labels, et si le dialogue est fermé via le bouton "Ok", exécuteles commandes spécifiées.

"vars" est une liste de noms de variables, les noms de tableaux sont autorisés. Si les variablesspécifiées existent déjà, leurs valeurs actuelles seront utilisées pour déduire un type de paramètrepermettant de présenter à l’utilisateur un composant d’interface graphique spécifique. La détectiondu type utilise la fonction string is de Tcl. Si la valeur actuelle est de type entier et qu’il existeune deuxième variable (nommée comme la variable originale avec en appendice _l), un composantde menu sera utilisé et les choix de menu seront pris dans la deuxième variable.

"labels" est une liste de chaînes d’étiquettes pour les paramètres.

"commands" est le code qui appelle l’outil et exécute une mise à jour supplémentaire de l’interfacegraphique. Si le code contient des chaînes comme %0, celles-ci seront remplacées par la valeur deparamètre correspondante demandée avant l’exécution du code.

"title" est la chaîne de titre de la fenêtre de dialogue. Elle peut être utilisée pour transmettre lenom ou la description de l’outil à l’utilisateur.

"doc" est un argument optionnel qui contient une URL de documentation pour l’outil. Cet URL seraouvert lorsque la touche <F1> sera enfoncée dans le dialogue.

• Exemples:

1.

runTool {x} {"X:"} {moveOb %0 0 0;plb_update;rV} "MoveX"

ouvre une boîte de dialogue pour demander un seul paramètre et déplace le ou les objets sélec-tionnés le long de l’axe X de la quantité spécifiée.

2.

runTool {x y} {"X:" "Y:"} {moveOb %0 %1 0;plb_update;rV} "MoveXY"

ouvre une boîte de dialogue pour demander deux paramètres et déplace le ou les objets sélec-tionnés sur l’axe X et l’axe Y selon les valeurs spécifiées.

3.

set l 0set l_l {"Start" "End" "Both"}runTool {l} {"Side:"} {switch %0 {0 {clampNC -s}1 {clampNC -e}2 {clampNC}

}plb_update;rV} "Clamp"

ouvre un dialogue avec un composant du menu GUI et serre la (les) courbe(s) NURBS sélec-tionnée(s) sur le(s) côté(s) choisi(s).

Page 418: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

6. Interface de script 418

notifyOb:

• Synopsis: "notifyOb [-all | -modified | -parent]"

• Tâche de fond : Oui, Effacer : Non, Sûr : Oui∗

• Description: Cette commande appelle le rappel de notification enregistré pour le ou les objets sélec-tionnés et leurs parents ou, si aucun objet n’est sélectionné, pour tous les objets de la scène. Si leparamètre "-modified" est utilisé, seuls les objets modifiés seront notifiés.

Si le paramètre "-all" est utilisé, tous les objets seront notifiés, quelle que soit la sélection.

Si le paramètre "-parent" est utilisé, seul l’objet parent actuel du niveau actuel sera notifié.

Avant Ayam 1.20, cette commande était nommée "forceNot", l’ancien nom est toujours disponiblepour la compatibilité mais son utilisation est obsolète.∗: Depuis la version 1.21, cette commande est également disponible dans l’interpréteur de sécuritéavec des fonctionnalités limitées : seuls les rappels de notification des objets sélectionnés serontexécutés. Aucune balise BNS ou ANS ne sera prise en compte, la notification des parents ne sera paseffectuée, et la notification complète sera également omise. Par conséquent, dans l’interpréteur sûr,cette commande ignore tous les paramètres.

Voir aussi la section 8.2 Le concept de modélisation outils-objets (page 485).

nameOb:

• Synopsis: "nameOb name"

• Tâche de fond : Oui, Effacer : Oui, Sûr : Oui

• Description: Cette commande permet de définir le nom du ou des objets sélectionnés.Voir aussi la section 6.2.3 getName scripting interface command (page 361).

setMark:

• Synopsis: "setMark [x y z | l]"

• Tâche de fond : Oui, Effacer : Non, Sûr : Non, Type : Procédure

• Description: Cette procédure fixe la marque globale aux coordonnées spécifiées.S’il n’y a qu’un seul argument, il devrait s’agir d’une liste de trois valeurs en virgule flottante.

Si aucun argument n’est fourni, la marque globale est effacée.

Cette procédure ne fonctionne que s’il y a au moins une vue.

Voir aussi la section 3.5 Définir une marque (page 81).

• Exemple: "setMark 0 0 0"

getMark:

• Synopsis: "getMark"

• Tâche de fond : Oui, Effacer : Non, Sûr : Non, Type : Procédure

• Description: Cette procédure renvoie la marque globale actuelle sous la forme d’une liste de troisvaleurs à virgule flottante.

Cette procédure ne renvoie des données significatives que s’il existe au moins une vue.

Voir aussi la section 3.5 Définir une marque (page 81).

Page 419: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

6. Interface de script 419

tmpGet:

• Synopsis: "tmpGet tmpdir varname [ext]"

• Tâche de fond : Oui, Effacer : Non, Sûr : Non

• Description: Cette commande calcule un nom pour un fichier temporaire dans tmpdir et place le nomcomplet (avec l’extension présente en option) dans la variable désignée par varname.

whatis:

• Synopsis: "whatis this"

• Tâche de fond : Oui, Effacer : N/A, Sûr : Non, Type : Procédure

• Description: Imprimez les informations sur l’objet nommé "this" dans le contexte du script Tclvers la console. Cette procédure peut être utilisée pour s’enquérir de l’existence de variables, dewidgets, ou pour savoir si quelque chose est une commande ou une procédure.

• Exemple : "whatis ." conduit au résultat :

.is a command..is a widget.

addToProc:

• Synopsis: "addToProc procedure addition"

• Tâche de fond : Oui, Effacer : Non, Sûr : Non, Type : Procédure

• Description: Cette procédure ajoute le code de addition à la procédure Tcl procedure.

• Note : Cette procédure utilise les facilités d’introspection de Tcl et ne fonctionne correctement quepour les procédures qui se terminent par une seule instruction "return ;".

Page 420: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

6. Interface de script 420

6.3 Prise en charge des expressions dans les entrées de dialogue

Diverses entrées de dialogue pour la création d’objets et les outils de modélisation prennent en charge lesvariables et expressions Tcl. Il est par exemple possible d’entrer :

$::u

au lieu d’une valeur numérique de noeud dans le dialogue de paramétrage de l’outil d’insertion de noeudpour déduire la valeur paramétrique de la variable globale u (qui peut avoir été définie avant d’utiliserl’action de modélisation find u) et insérer un noeud au point choisi. Il est également possible de saisir desexpressions mathématiques complexes :

[expr sin(45)]

ou faire appel à ses propres procédures (qui doivent renvoyer des valeurs correctement typées) :

[myproc]

où "myproc" est défini ailleurs (par exemple dans un fichier de script Tcl chargé via le paramètre depréférence "Scripts") comme suit :

proc myproc { } {

return [expr sin(45)];

}

L’appel répété de l’outil sans ouvrir le dialogue (en utilisant le raccourci clavier <Ctrl+T>), exécutera ànouveau l’expression fournie. Cela signifie qu’un certain nombre de courbes de longueur croissante peuventêtre créées en entrant dans la console Ayam :

set ::myvar 1

puis en entrant la longueur dans le dialogue de création de la courbe NURBS :

[incr ::myvar]

puis en appuyant plusieurs fois sur <Ctrl+T>.

Page 421: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

6. Interface de script 421

6.4 Exemples de script

Voici quelques exemples complets de scripts pour l’interface de script Tcl de Ayam.

Tous les exemples peuvent être copiés à partir de la documentation et collés directement dans la console deAyam.

6.4.1 Déplacer des objets

L’exemple de script suivant montre comment déplacer un objet sélectionné vers une position spécifiée dansl’espace.

proc placeOb { x y z } {

global transfPropData

# copy Transformations-property data to

# global array "transfPropData"

getTrafo

# set array values according to procedure parameters

set transfPropData(Translate_X) $x

set transfPropData(Translate_Y) $y

set transfPropData(Translate_Z) $z

# copy Transformations-property data from

# global array "transfPropData" to selected object

setTrafo

}

# placeOb

Afin de déplacer tous les objets sélectionnés vers 1 1 1, vous pouvez entrer ce qui suit dans la console :

forAll -recursive 0 {placeOb 1 1 1}

Mais peut-être préférez-vous une petite interface graphique pour cela ? Pas de problème, l’extrait suivantajoute une entrée au menu personnalisé qui ouvre une petite boite de dialogue pour les valeurs x-, y- et z etappelle la procédure "placeOb" (définie ci-dessus) avec elles :

global ay

$ay(cm) add command -label "Place Object(s)" -command {

runTool {x y z} {"X:" "Y:" "Z:"} {forAll -recursive 0 {placeOb %0 %1 %2};

plb_update; rV

} "Place Object(s)"

}

La commande suivante "plb_update ; rV" garantit que l’interface graphique est correctement mise àjour et que toutes les vues affichent la nouvelle position des objets

Page 422: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

6. Interface de script 422

6.4.2 Déplacer des points NURBS

L’exemple de scénario suivant montre comment déplacer les points de contrôle d’une courbe NURBS.

# first, we create a new NURBS curve with 30 control points

set len 30

crtOb NCurve -length $len

# update selection

uS

# select last object (the newly created curve)

sL

# prepare moving

set i 0

set r 3.0

set angle 0

set angled [expr 3.14159265/2.0]

while { $i < $len } {

set x [expr $r*cos($angle)]

set y [expr $r*sin($angle)]

set z [expr $i/3.0]

# move control point to new position

setPnt $i $x $y $z 1.0

set angle [expr $angle + $angled]

incr i

}

# redraw all views

rV

Maintenant, utilisez le comme chemin pour un balayage. Par exemple, en utilisant le petit script suivant.

Page 423: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

6. Interface de script 423

6.4.3 Interpolation facile

L’exemple de script suivant montre comment créer facilement un balayage à partir d’une courbe de cheminsélectionnée (en évitant la création et le paramétrage long et manuel d’une section transversale appropriée).

proc easySweep { } {

# first, we create a sweep object

crtOb Sweep

# now, we need to move the selected curve (path) to

# the sweep and create a cross-section curve there too

# for that, we move the currently selected curve to the clipboard

cutOb

# enter the Sweep (the last object in the current level)

goDown -1

# now, we create a new curve (a closed B-Spline suitable as cross section)

crtClosedBS -s 8

# select the new object

selOb 0

# now, we rotate and scale the curve

rotOb 0 90 0

scalOb 0.25 0.25 1.0

# move trajectory back (we use "-move", because we

# really want to move (and not copy) the curve object

pasOb -move

# go up to where we came from

goUp

# finally, update the GUI...

uS

sL

# ...and redraw all views

rV

}

# easySweep

Page 424: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

6. Interface de script 424

»easySweep

Cette commande peut également être ajoutée au menu principal :

global ay

$ay(cm) add command -label "Easy Sweep" -command {

easySweep

}

Après l’exécution du script ci-dessus, il devrait maintenant y avoir une nouvelle entrée de menu"Custom/Easy Sweep" qui appelle la procédure easySweep.

Page 425: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

6. Interface de script 425

6.4.4 Boutons et boite à outils

Voici un autre exemple de script qui montre comment les boutons peuvent être ajoutés à la boîte à outils.myImage doit être une image créée par exemple à partir d’un fichier GIF de taille 25 par 25 pixels.

global ay ayprefs

# create an image from a GIF file:

image create photo myImage -format gif -file /home/user/giffile

set b $ay(tbw).mybutton

# if the button does not already exist:

if { ![winfo exists $b] } {

# create it:

button $b -padx 0 -pady 0 -image myImage -command myCommand

# tell Ayam about the new button:

# you can use "linsert", to insert the button in a specific

# place or just append to the end of the list using "lappend"

lappend ay(toolbuttons) mybutton

# display the button:

toolbox_layout

# from now on, the button will be under the

# automatic toolbox layout management

}

Cet exemple montre que :

1. Les boutons de la boîte à outils doivent être créés dans un cadre dont le chemin et le nom de lafenêtre sont stockés dans la variable globale "ay(tbw)" (il s’agit de ".tbw.f" pour les configura-tions d’interface graphique multi-fenêtres ou ".fv.fTools.f" pour les configurations d’interfacegraphique à fenêtre unique),

2. Ayam gère une liste de tous les boutons de la boîte à outils dans la variable globale"ay(toolbuttons)", l’ordre dans cette liste est l’ordre dans lequel les boutons apparaissent dansla boîte à outils,

3. la gestion automatique de la mise en page est effectuée par la procédure "toolbox_layout".

L’ajout de boutons ne comportant que du texte est un peu plus compliqué, car la taille de ces boutons nes’intègre pas toujours bien dans le schéma des boutons à icônes, dont la taille est constante. Cependant, laprocédure "toolbox_add" peut être d’une aide considérable.1

Voir aussi le script "scripts/topoly.tcl" pour un exemple.

1 Depuis 1.14.

Page 426: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

6. Interface de script 426

Le script d’exemple suivant ajoute deux boutons au bas de la boîte à outils couvrant toute la fenêtre (celafonctionne mieux avec la disposition standard de la boîte à outils de 4 par 12 boutons utilisée dans laconfiguration de l’interface graphique multi-fenêtres) :

global ay

# create a frame:

set f [frame $ay(tbw).fcollex]

# calculate the row number below the last row:

set row [expr [lindex [grid size $ay(tbw)] 1] + 1]

# now display the frame at calculated row, spanning the whole window:

grid $f -row $row -column 0 -columnspan [lindex [grid size $ay(tbw)] 0]\

-sticky we

# create two buttons inside the frame:

button $f.b1 -width 5 -text "Coll." -command { collMP; rV; }

button $f.b2 -width 5 -text "Expl." -command { explMP; rV; }

pack $f.b1 $f.b2 -side left -fill x -expand yes

Page 427: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

6. Interface de script 427

6.5 Scripts d’aide distribués

Cette section contient la documentation de certains scripts d’aide qui sont distribués avec Ayam.

Les scripts d’aide peuvent être exécutés via le menu contextuel de la console, la commande Tcl "source"dans la console, ou le paramètre de préférence "Scripts" de Ayam à chaque démarrage (ce dernier àl’exception des scripts dits external "repairAyam.tcl", "bgconvert.tcl", et "aytest.tcl").

Tous les autres scripts interne peuvent être combinés arbitrairement, à l’exception de "kdialog.tcl","zdialog.tcl", et "intfd.tcl", qui sont mutuellement exclusifs.

6.5.1 Réparer Ayam

Le script externe Tcl "repairAyam.tcl" peut être utilisé pour réparer l’état de l’application Ayam, sielle est bloquée, par exemple, dans une boucle sans fin de messages d’erreur Tcl.1

Sur les systèmes Unix, "repairAyam" peut être lancé depuis n’importe quel shell en tapant simplement :

»./repairAyam.tcl

ou

»wish repairAyam.tcl

à l’invite de commande ; si le script détecte qu’il fonctionne sous Unix et non en Ayam, il s’enverra àl’interprète Tcl qu’Ayam utilise en utilisant la commande Tk send. Sous Mac OS X Aqua (pas X11 !),les événements AppleScript seront utilisés à la place de la commande Tk send. Si cela ne fonctionne pascomme prévu, "repairAyam.tcl" peut toujours être lancé via la console Ayam (comme sur Win32).

Sur Win32 "repairAyam.tcl" doit être lancé depuis la console Ayam à l’aide de la commande :

»source scripts/repairAyam.tcl

ou via le menu contextuel des consoles : "Console/Load File".

Le script "repairAyam.tcl" doit être considéré comme un dernier recours pour aider à sauvegarderl’état actuel des objets modifiés.

Le script va fermer toutes les vues, nettoyer les variables d’état de l’application, réinitialiser le curseur de lasouris et l’invite de la console, et essayer de mettre à jour les widgets importants de la fenêtre principale.

De plus, le script va également vider la console et essayer de briser d’éventuelles boucles sans fin en coursd’exécution, par exemple dans la console ou dans les objets du script.2

A Après avoir exécuté "repairAyam.tcl" la scène (ou les objets les plus importants sur lesquels ontravaille actuellement) devrait être immédiatement sauvegardée dans un nouveau fichier de scène, mais pasle fichier actuellement chargé, en utilisant "File/Save As" ou "Special/Save Selected") etAyam devrait être redémarré après.

La simple sauvegarde de la scène en utilisant "File/Save" ou <Ctrl+s> doit être évitée car les vuesont peut-être été supprimées.

1 Depuis 1.8.2. 2 Depuis 1.9.

Page 428: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

6. Interface de script 428

6.5.2 Tester Ayam

Le script external "aytest.tcl" permet de tester l’implémentation de Ayam en créant des objets avecdiverses combinaisons de paramètres et en exécutant des opérations standard et des actions de modélisationsur ceux-ci.

6.5.3 Utiliser Ayam comme convertisseur de ligne de commande

Le script externe Tcl "bgconvert.tcl" convertit les fichiers de scènes d’un format de fichier 3D à unautre, avec l’aide de Ayam qui tourne en arrière-plan.1

Dans sa forme la plus simple, bgconvert peut être utilisé à partir d’une ligne de commande Unix (ou d’unscript shell) comme ceci :

»bgconvert.tcl infile.x3d outfile.dxf

La commande ci-dessus chargerait le fichier X3D "infile.x3d" dans Ayam et exporterait la scène sousforme de fichier DXF vers "outfile.dxf".

Pour une conversion réussie, Ayam doit fonctionner et les plugins requis pour les processus d’importationet d’exportation doivent être disponibles et correctement configurés (vérifiez le paramètre de préférence"Plugins"). Les plugins nécessaires à la conversion seront chargés automatiquement.

Des options d’importation et d’exportation peuvent également être données de cette manière :

»bgconvert.tcl "infile.rib -p 1" outfile.dxf

Dans l’exemple ci-dessus, l’option "-p 1" active la lecture des fichiers RIB partiels.

Les options disponibles et leur syntaxe peuvent être demandées aux scripts Tcl des plugins d’importation etd’exportation (par exemple : "plugins/rrib.tcl").

1 Depuis 1.15.

Page 429: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

6. Interface de script 429

6.5.4 Analyse des ombrages (shaders)

Le script Tcl "slxml.tcl" permet à la machine d’analyse des ombrages de Ayam de reconnaître les méta-informations basées sur XML intégrées dans les commentaires du langage de shading.1 De cette façon, labase de données des ombres pour les objets Material peut être constituée à partir de fichiers sources enlangue de shading, au lieu d’ombres compilées.Les balises XML ne seront pas analysées par un véritable analyseur XML, de sorte qu’il n’y a pas deproblème de forme. Toutefois, les attributs doivent être ordonnés d’une certaine manière. Pour spécifier uneombre, utilisez :

<shader type="stype" name="sname">

où stype est l’un des noms suivants : surface, displacement, volume, light, imager, outransformation et sname est le nom de l’ombre qui doit également correspondre au nom du fichiersource de l’ombre sans extension.

Pour spécifier un paramètre d’ombre, utilisez une ligne du type :

<argument name="argname" type="argtype" value="argval">

où argname est le nom du paramètre, argtype est à choisir parmi float, string, matrix, color,point, normal, ou vector et argval est la valeur par défaut.

Voir également l’exemple suivant de source d’ombre :

/* myshader.sl:

* Author: Randolf Schultz

* <shader type="surface" name="myshader">

* <argument name="Ka" type="float" value="0.5">

* <argument name="Kd" type="float" value="0.9">

* <argument name="ic" type="color" value="0 1 0">

*/

surface myshader(float Ka = 0.5, Kd = 0.9; color ic = color (0, 1, 0);)

{

color mycolor;

...

Ci = Cs*mycolor*(Ka*ambient()+Kd*diffuse(faceforward(normalize(N),I)));

}

Les restrictions/limites suivantes (par opposition à l’analyse normale des ombres) s’appliquent :• il ne peut y avoir qu’une seule ombre par fichier source,

• le nom du fichier source et le nom de l’ombre doivent correspondre,

• les ombres pour lesquelles il n’y a pas de code source disponible ne sont pas prises en charge (saufsi les informations sur les paramètres sont connues, auquel cas un fichier source d’ombre avec uncommentaire correspondant peut être falsifié ????),

• il n’y a aucun contrôle sur la correspondance entre les méta-données et la signature réelle de l’ombre,

• il n’y a aucun contrôle sur la correspondance entre l’ombre compilée, utilisé pour le rendu, et le codesource de l’ombre.

1 Depuis 1.25.

Page 430: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

6. Interface de script 430

6.5.5 Tout transformer en polygones

Le script "topoly.tcl" parcourt récursivement la scène et convertit tout en une représentation polygo-nale.1

Après l’exécution du script, il y a un nouveau bouton dans la boîte à outils nommé "ToPolyMesh". Deplus, il y a une entrée correspondante dans le menu principal "Custom". En appuyant sur le bouton ou enutilisant l’entrée de menu, le processus de conversion démarre immédiatement.

Comme les modifications de la conversion ne peuvent pas être annulées, la conversion ne sera pas exécutéesi la scène contient des modifications non sauvegardées.

La conversion utilisera les paramètres actuels des paramètres de préférence "SMethod", "SParamU",et "SParamV" ; les balises "TP" (si présentes) remplaceront ces paramètres. Les balises TP peuventêtre créées facilement à l’aide de l’outil de tessellation, Voir aussi la section 5.6.5 Outil de tessellation(triangularisation) (page 331).

6.5.6 Tout transformer en patch NURBS

Le script "tonpatch.tcl" parcourt récursivement la scène et convertit tout en une représentation patchNURBS, aplatissant ainsi la hiérarchie des objets de l’outil.2

Après l’exécution du script, il y a un nouveau bouton dans la boîte à outils nommé "ToNPatch". Deplus, il y a une entrée correspondante dans le menu principal "Custom". En appuyant sur le bouton ou enutilisant l’entrée de menu, le processus de conversion démarre immédiatement.

Comme les modifications de la conversion ne peuvent pas être annulées, la conversion ne sera pas exécutéesi la scène contient des modifications non enregistrées.

6.5.7 Restreindre la console

Le script "2lcons.tcl" (pour une console à deux lignes) peut être utilisé pour restreindre l’espaceoccupé par la console à l’écran.

Normalement, la console Ayam est redimensionnée avec la fenêtre principale et occupe une quantité variabled’espace sur l’écran. Après l’exécution du script, la console sera toujours redimensionnée à exactement deuxlignes de texte. Différentes valeurs peuvent être choisies facilement en adaptant le script.

6.5.8 Colorer la bague de mise au point (????focus ring)

Le script "colfocus.tcl" (pour colored focus) peut être utilisé pour peindre la bague de mise au pointdans une couleur plus visible.

Après l’exécution du script, l’anneau de mise au point sera peint en bleu (au lieu du noir) : les sous-fenêtresde mise au point (vues, console, arbre d’objets) seront plus facilement reconnaissables. D’autres couleurspeuvent être utilisées en éditant le script.

1 Depuis 1.13. 2 Depuis 1.14.

Page 431: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

6. Interface de script 431

6.5.9 Automatismes avec les actions de centrage (???? Automatic About Center Actions)

Le script "aac.tcl" (pour aautomatique about center) peut être utilisé pour passer automatiquementtoutes les actions de modélisation à leurs variantes environnantes avec la marque placée au centre de lasélection actuelle.

Après avoir exécuté le script, invoquer par exemple l’action d’échelle 2D en utilisant le raccourci <s>permettra :• si le mode de modélisation est object,

1. fixer la marque au centre de tous les objets sélectionnés2. invoquer la variante de l’échelle 2D

(c’est l’équivalent de <sac>)

• si le mode de modélisation est point,

1. fixer la marque au centre de tous les points sélectionnés2. invoquer la variante de l’échelle 2D

(c’est l’équivalent de <saC>)

Le script modifie toutes les actions de rotation et d’échelle (y compris leurs variantes limitées à l’axe).

Notez que la marque n’est pas réinitialisée à un nouveau centre, lorsque la sélection change. Après unchangement de sélection (par exemple en sélectionnant des points dans une vue différente), il suffit derelancer l’action pour transformer à partir du nouveau centre.

Pour effectuer une rotation ou une mise à l’échelle autour d’un point différent du centre, la marque peuttoujours être placée manuellement en utilisant <a>.

Pour désactiver temporairement le comportement modifié, le raccourci clavier global <F11> peut êtreutilisé.

6.5.10 Automatisation des actions sur les points

Le script "apnt.tcl" (pour aautomatic point) peut être utilisé pour passer automatiquement en mode demodélisation ponctuelle après une sélection de points.

Après l’exécution du script, la sélection (marquage) d’un point à l’aide de l’action "Sélectionner un point"(raccourci <t>) fera automatiquement basculer la vue vers la modélisation de points, de sorte que lesprochaines actions de modélisation (par exemple, déplacer, via le raccourci <m>) transformeront toujoursles points et ne modifieront pas les transformations des objets. Notez qu’actuellement, le passage à lamodélisation par points se fera également, si aucun point n’est effectivement sélectionné, c’est juste le clicde la souris qui compte.

La sélection de tous les points via le raccourci clavier <A> permet en outre de passer à la modélisation depoints et la désélection de tous les points via <N> permet en outre de passer à la modélisation d’objets.1

Il est également toujours possible de revenir à la modélisation d’objets à tout moment via le raccourci clavier<o>.

Pour désactiver temporairement le comportement modifié, le raccourci clavier global <F12> peut êtreutilisé.1 Depuis 1.21.

Page 432: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

6. Interface de script 432

6.5.11 Sauvegarder les points sélectionnés

Le script "ssp.tcl" (pour save selected ppoints) permet d’enregistrer la sélection de points sur des balisesde type SP.1

Après l’exécution du script, deux nouveaux boutons apparaissent dans la boîte à outils qui permettent re-spectivement de sauvegarder et de restaurer la sélection de points. Voir également le tableau ci-dessous.

Operation Icon

Save

Restore

Table 99: Sauve/restaure les points sélectionnés

Il y a également deux entrées correspondantes dans le menu personnalisé.

Notez que les balises peuvent être enregistrées dans des fichiers de scène et également copiées sur différentsobjets.

6.5.12 Modifier le comportement des touches curseur

Le script "rc.tcl" (pour revert cursor) peut être utilisé pour obtenir un comportement plus utile de latouche curseur dans les vues de modélisation primaires (vues parallèles).

Après l’exécution du script, les raccourcis clavier pour la rotation et le panoramique dans des vues parallèlessont permutés, par exemple, il suffit d’appuyer sur la touche <Left> pour effectuer un panoramique de lavue, au lieu de la faire tourner.

Les raccourcis seront à nouveau échangés, lorsque la vue changera de type pour devenir "Perspective".

6.5.13 Accéder aux fonctions de base à partir de la boîte à outils

Le script "zap.tcl" montre comment une fonctionnalité de base arbitraire, qui n’est disponible que parune entrée du menu principal ou l’interface de script, peut être facilement accessible via la fenêtre de la boîteà outils.

Après l’exécution du script "zap.tcl", il y aura un nouveau bouton de la boîte à outils, appelé "Zap!", qui lance simplement la commande zap (qui iconifie l’application complète).

6.5.14 Passer des dialogues à Kdialog

Le script "kdialog.tcl" permet à tous les dialogues de fichiers de Ayam d’utiliser l’application kdialogdu projet KDE au lieu du dialogue de fichiers Tk natif.Le script ajoute également une entrée personnalisée dans le menu principal pour annuler tout changement.

1 Depuis 1.21.

Page 433: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

6. Interface de script 433

6.5.15 Passez des dialogues à Zenity

Le script "zdialog.tcl" bascule tous les dialogues de fichiers de Ayam pour utiliser l’application zenitydu projet Gnome au lieu du dialogue de fichiers Tk natif.Le script ajoute également une entrée personnalisée dans le menu principal pour annuler tout changement.

6.5.16 Changer les dialogues de fichiers en Tcl

Le script "intfd.tcl" fait passer tous les dialogues de fichiers de Ayam à la version interne de Tcl/Tkau lieu des dialogues de fichiers natifs fournis par le système d’exploitation.

6.5.17 Utiliser Aqsis à partir du répertoire des applications

Le script "useaqsisapp.tcl" configure Ayam pour utiliser Aqsis à partir de la structure du répertoiredes applications ("/Applications/Aqsis.app") sur Mac OS X. C’est l’emplacement d’installationpar défaut d’Aqsis sur Mac OS X.

Le script adapte les chemins de recherche des exécutables et des ombres. De plus, les variablesd’environnement vitales pour le fonctionnement d’Aqsis seront correctement configurées.

Notez que le script ne change pas les préférences "RIB-Export/Renderer", vous devez toujours passerà Aqsis en utilisant le menu principal "Special/Select Renderer" une fois.

6.5.18 Utiliser Pixie depuis le répertoire de la bibliothèque

Le script "usepixie.tcl" configure Ayam pour utiliser Pixie depuis le répertoire"/Library/pixie" sous Mac OS X. C’est l’emplacement d’installation par défaut de Pixie surMac OS X.

Le script adapte les chemins de recherche de l’exécutable, de la bibliothèque partagée et des ombres. Deplus, les variables d’environnement vitales pour le fonctionnement de Pixie seront correctement configurées.

Notez que le script ne modifie pas les préférences "RIB-Export/Renderer", vous devez toujourspasser à Pixie en utilisant le menu principal "Special/Select Renderer" une fois.

6.5.19 Remplacer les Icones

Le script "myicons.tcl" permet de remplacer les icones de l’interface utilisateur Ayam, par exempleles icones de la boîte à outils, par des icones définies par l’utilisateur. Les nouveaux icones doivent être desfichiers images GIF de taille 25 par 25 et résider dans le répertoire "icons" relatif à l’exécutable Ayam.Les noms des fichiers d’images peuvent être obtenus à partir du script ou par la commande suivante del’interface de script (dans la console Ayam) :

»image names

Des variants d’icones d’action (par exemple pour l’échelle relative aux actions) peuvent également être créésautomatiquement en modifiant la variable "createVariants" dans le fichier de script.

Page 434: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

6. Interface de script 434

6.5.20 Arbre dynamique

Le script "dtree.tcl" (arbre dynamique/rapide) remplace une partie du code de l’arbre BWidgets pourune interaction plus rapide dans les scènes avec de nombreux objets. Le widget d’arbre BWidget original(et le code de script qui l’accompagne en Ayam) crée un élément de canevas pour chaque objet de la scène,même s’il n’est pas visible dans le widget d’arbre. Par conséquent, les opérations de mise à jour de l’arbrequi ont lieu, par exemple, après le chargement d’une scène ou après des opérations de glisser-déposer,peuvent devenir très lentes, lorsqu’une scène comporte de nombreux objets. Si le script d’arbre est actif, iln’y a qu’autant d’éléments de canevas qu’il y a de noeuds visibles dans la région de défilement actuelle. Parconséquent, le travail avec de nombreux objets dans de longues listes devient beaucoup plus rapide pour lesopérations qui nécessitent des mises à jour de l’arbre. Cependant, les opérations telles que l’ouverture ou lafermeture de sous-arbres ou même le simple défilement dans l’arbre deviendront un peu plus lentes, car leséléments de canevas doivent être créés en continu.

6.5.21 Vue du sommet de contrôle

Figure 157: Exemple de vue du sommet de contrôle

Le script "cvview.tcl" (control sommet view) permet de visualiser les points de contrôle des objets desurface ou de courbe NURBS comme propriété, voir aussi l’image ci-dessus. Le script prend actuellementen charge les types d’objets suivants : NPatch, NCurve, IPatch, PatchMesh, ACurve, ICurve, BCurve,et SDCurve. En outre, les objets qui fournissent des objets NPatch/NCurve et qui affichent une entréeNPInfo/NCInfo dans leur propriété de paramètre sont également pris en charge.1 Si le script est chargé,il y a une nouvelle entrée dans le menu "Custom" qui permet d’ajouter une nouvelle propriété à unesurface individuelle ou à un objet "Curve". La propriété "CVView" affiche tous les sommets de contrôledans une grille régulière. Les coordonnées de chaque sommet seront affichées lorsque le pointeur de lasouris le survole. Cela fonctionne également si les points de contrôle se regroupent dans l’espace 3D ou ontdes valeurs inhabituelles. En outre, la sélection actuelle des points est visualisée en peignant les sommetssélectionnés en rouge et la sélection peut également être ajustée en cliquant sur les cercles.

1 Depuis 1.26.

Page 435: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

6. Interface de script 435

6.5.22 Tracé de la courbure

Figure 158: Exemple de tracé de la courbure

Le script "curvature.tcl" permet de visualiser la courbure des courbes NURBS et la courbe NURBSfournissant des objets comme propriété, voir aussi l’image ci-dessus. Si le script est chargé, il y a unenouvelle entrée dans le menu "Custom" qui permet d’ajouter une nouvelle propriété à un objet de courbeindividuel. La nouvelle propriété affiche la courbure de la courbe sous la forme d’un diagramme interactifet en temps réel. Le diagramme sera mis à jour si la courbe change. Le diagramme peut être zoomé en lefaisant glisser avec le bouton le plus à gauche de la souris et déplacé en le faisant glisser avec le bouton leplus à droite de la souris (en état zoomé). Le zoom est également possible à l’aide de la molette de la souris.L’état zoomé est transmis par l’ajout de "..." à l’étiquette correspondante de l’échelle horizontale. Notez quelors d’un panoramique, la nouvelle section de la courbe sera redimensionnée pour remplir complètementl’axe Y. Pour les objets de la courbe NURBS, la plage de valeurs réelles des noeuds sera affichée sur l’axedes x, tandis que pour les objets de la courbe NURBS fournissant des objets, une plage de valeurs relativesdes noeuds ([0, 1]) sera affichée. Un clic sur l’étiquette "k" permet de basculer entre l’échelle absolue etl’échelle logarithmique de l’axe Y. Il y a une poignée de redimensionnement qui permet d’adapter la tailledu diagramme au canevas des propriétés.

Page 436: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

6. Interface de script 436

6.5.23 NURBS pour X3DOM

Figure 159: affichage de NURBS via X3dom

Le script "x3dom-nurbs" implémente les noeuds <NurbsPatchSurface> et<NurbsTrimmedSurface> X3D NURBS pour x3dom (voir http://www.x3dom.org/) enJavaScript.Après le chargement de la scène dans le navigateur web, les surfaces NURBS de ces noeuds sont tesseléesen noeuds <IndexedTriangleSet>. Cela permet de publier directement les modèles NURBS sur leweb sans conversion préalable en une représentation polygonale, ce qui est lourd, rigide et entraîne uneconsommation de bande passante plus importante.

Le tessellateur est basé sur une idée et un exemple de code provenant de A. J. Chung et A. J. Field: "ASimple Recursive Tessellator for Adaptive Surface Triangulation" in Journal of Graphics Tools Vol. 5, Iss.3, 2000.

La mise en oeuvre s’étend sur quatre fichiers de script :

• x3dom-nurbs-nodes.js – interface du tesselateur vers x3dom

• x3dom-nurbs-pool.js – gestion des travailleurs (la taille actuelle du pool est de 3)

• x3dom-nurbs-worker.js – un travailleur

• x3dom-nurbs-tess.js – le tessellateur

Pour utiliser le tessellateur, il suffit d’ajouter ce qui suit à votre fichier XHTML après avoir inclus"x3dom.js":

<script type="text/javascript" src="x3dom-nurbs-pool.js"/>

<script type="text/javascript" src="x3dom-nurbs-nodes.js"/>

Le tesselateur étant entièrement automatique, aucun autre réglage n’est nécessaire. Des fichiers XHTMLappropriés peuvent être créés en utilisant l’exportation X3D en mode x3dom, voir la section 7.15.3 Optionsd’exportation X3D (page 483).

Alors que le tessellateur fonctionne en arrière-plan, une représentation polygonale initiale qui est directe-ment dérivée du polygone de contrôle de la surface NURBS est affichée. De plus, une invite d’occupation estaffichée, voir aussi l’image ci-dessous. Comme l’invite d’occupation est dérivée de l’invite de chargement

Page 437: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

6. Interface de script 437

de x3dom, elle peut également être stylisée avec le "x3dom-progress" style dans "x3dom.css".Le pavement fonctionne avec des "webworkers", des processus qui s’exécutent parallèlement au fil prin-

Figure 160: Prompt X3dom NURBS Occupée

cipal du navigateur, afin de ne pas bloquer l’interaction de l’utilisateur et d’utiliser des processeurs mul-ticoeurs. Le pool de webworkers est actuellement codé en dur pour n’utiliser que trois de ces webwork-ers à la fois. Cette valeur peut être facilement adaptée dans "x3dom-nurbs-pool.js" (par exemplesi votre CPU cible moyenne a plus de coeurs). Notez que chaque webworker pavera une seule surfaceNURBS, c’est-à-dire que les scènes avec une seule surface ne bénéficieront pas du parallélisme. Par dé-faut, le tessellateur tente de créer un pavage qui représente toutes les caractéristiques importantes de lasurface de manière à ce qu’une inspection visuelle de moyenne à proche distance ne révèle pas la naturede la représentation triangulaire sous-jacente. Cela peut être trop fin/lent pour des objets qui ne sont jamaisvus de près ou trop grossier pour des objets très détaillés. Par conséquent, et en accord avec les sugges-tions respectives de la spécification X3D, la qualité et la vitesse du pavement peuvent être ajustées à l’aidedes attributs "uTessellation" et "vTessellation" des noeuds <NurbsPatchSurface> ou<NurbsTrimmedSurface> comme expliqué dans les sections suivantes.

Page 438: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

6. Interface de script 438

Échantillonnage basé sur l’espace objet

Si aucun attribut "uTessellation" n’est spécifié, ou si sa valeur est positive, le tessellateur utilise lemode dit object space sampling. Dans ce mode, le tessellateur subdivise un ensemble initial de triangles demanière récursive jusqu’à ce que tous les bords de ces triangles soient plus courts qu’une valeur seuil donnée(dans l’espace objet). La valeur seuil est réglée automatiquement de manière à ce qu’un objet s’étendantd’une unité par une unité dans l’espace objet soit subdivisé à environ 15 par 15 par deux triangles. La valeurde l’attribut "uTessellation" est simplement multipliée dans ce seuil déterminé automatiquement. Parconséquent, les valeurs de "uTessellation" supérieures à 1.0 conduisent à une chaussée plus grossièreet plus rapide, tandis que les valeurs inférieures à 1.0 conduisent à une chaussée plus fine et plus lente.Notez que dans ce mode, la valeur de l’attribut "vTessellation" n’est pas considérée du tout. Notezégalement que dans les régions fortement courbées de la surface et aux bords de coupe, des triangles encoreplus petits que ceux déterminés par le critère de longueur de bord peuvent être créés.

Échantillonnage basé sur l’espace paramétrique

Si la valeur de l’attribut "uTessellation" est négative, le tessellateur passe à un échantillonnage spatialparamétrique. Dans ce mode, l’attribut "vTessellation" est également pris en compte. Comme dansle mode d’échantillonnage de l’espace objet, une valeur seuil automatique est calculée, mais ici, l’extensionde l’objet dans l’espace paramétrique (c’est-à-dire le nombre de points de contrôle) est utilisée. Cela donneen fait deux valeurs seuils, une pour chaque dimension paramétrique. Les attributs "uTessellation"et "vTessellation" sont multipliés dans ces seuils. Par conséquent, les valeurs supérieures à -1.0 (envaleur absolue) conduisent à un pavement plus grossier et plus rapide dans la dimension respective. Lesvaleurs inférieures à -1.0 (en valeur absolue) conduisent à un pavement fin et plus lent dans la dimensionrespective. Cela signifie qu’une valeur de -2.0 entraîne environ la moitié du nombre de triangles par rapportà la valeur par défaut et qu’une valeur de -0.5 entraîne deux fois plus de triangles par rapport à la valeurpar défaut dans la dimension paramétrique respective. Comme le calcul de la longueur des bords est plussimple et qu’aucune analyse de courbure n’est effectuée, l’échantillonnage paramétrique de l’espace estconsidérablement plus rapide que l’échantillonnage de l’espace de l’objet. Notez qu’aux bords de la courbede coupe, des triangles encore plus petits que ceux déterminés par le critère de longueur de bord peuventêtre créés.

Page 439: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

6. Interface de script 439

Attributs additionnels

Pour faciliter le paramétrage des attributs "uTessellation" et "vTessellation", un at-tribut "normalPerSommet" peut être ajouté au noeud respectif <NurbsPatchSurface>

ou <NurbsTrimmedSurface>. Cet attribut sera alors également défini pour le noeud<IndexedTriangleSet> correspondant qui est créé par le tessellateur. Si la valeur de cet attribut est"false", x3dom affichera cette surface dans un style ombré plat et les triangles de tesselé seront visibles,ce qui permettra de juger et d’ajuster plus facilement la qualité de la tessellation.

Restrictions et lacunes dans la mise en oeuvre

En raison de la mémorisation des points de surface, les valeurs paramétriques ne doivent pas dépasser :

1.7976931348623157·10308

10·1010= 1.7976931348623157·10297 (2)

Les coordonnées de la texture sont toujours directement dérivées des valeurs paramétriques. Les normalesde surface ne sont pas calculées par le tessellateur, mais par x3dom. Cela peut conduire à des normales quisont fausses pour des pavements très grossiers mais qui sont beaucoup plus rapides. Un autre avantage decette approche est que les normales en des points de surface non différentiables (par exemple les pôles de lasphère standard NURBS) ne s’inversent pas. Il n’y a pas de prise en charge pour les noeuds suivants :

<NurbsTextureCoordinate>,

<NurbsSet>,

<NurbsSweptSurface>,

<NurbsSwungSurface>,

<NurbsCurve>, and all

<Nurbs*Interpolator> nodes.

Page 440: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

6. Interface de script 440

6.6 Objets script distribués

Ces scripts mettent en oeuvre des objets Script, Voir aussi la section 4.9.1 L’objet Script (page 225).

6.6.1 Cône tronqué

Figure 161: Cône tronqué avec ZMax 2.0

Le fichier "tcone.tcl" est un script objet Script qui crée des cônes tronqués avec des arguments simi-laires à la primitive cylindre, voir aussi l’image ci-dessus.

Ce script doit être utilisé dans un objet Script de type "Create" (voir section 4.9.1 L’objet Script (page225)).

Pour plus de commodité, il existe également une interface graphique de propriété ; il faut ajouter une balise"NP" de valeur "TConeAttr" à l’objet Script pour la voir.

Les paramètres du cône tronqué sont :

• "Closed" permet de déterminer si l’objet doit être automatiquement scellé (fermé par des surfacesbouchon).Ce n’est que lorsque cette option est activée que le cône peut être utilisé en toute sécurité dans lesopérations du CSG.

• "ThetaMax" est l’angle de balayage du cône en degrés, la valeur par défaut est 360.

• "ZMin" est la base du cône, la valeur par défaut est 0.

• "ZMax" est le sommet du cône, la valeur par défaut est 1.

• "RMin" est le rayon du cône à la base, la valeur par défaut est 1.

• "RMax" est le rayon du cône au sommet, la valeur par défaut est 0.5. En interne, le script crée unHyperboloid ; de plus amples informations sur les capacités de conversion et l’exportation RIB setrouvent dans la section 4.3.8 L’objet hyperboloïde (Hyperboloid) (page 146).

Un exemple de fichier de scène contenant un tel objet est distribué avec Ayam, voir le fichier :"ayam/scn/scripts/tcone.ay".

Page 441: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

6. Interface de script 441

6.6.2 Boîte avec topologie cylindrique

Figure 162: Boîte avec topologie cylindrique

Le fichier "cbox.tcl" est un script objet Script qui crée une surface NURBS sous la forme d’une boîte àtopologie cylindrique, voir aussi l’image ci-dessus.

Ce script doit être utilisé dans un objet Script de type "Create" (voir section 4.9.1 L’objet Script (page225)).

Pour plus de commodité, il existe également une interface graphique de propriété ; il faut ajouter une balise"NP" de valeur "CBoxAttr" à l’objet Script pour la voir.

Les paramètres de la boîte cylindrique sont :

• "Width" extension de la boîte le long de l’axe des X, la valeur par défaut est 1.0.

• "Depth" extension de la boîte le long de l’axe des Z, la valeur par défaut est 1.0.

• "Height" extension de la boîte le long de l’axe des Y, la valeur par défaut est 1.0.

Contrairement à l’objet Box standard, la boîte cylindrique se transforme en un seul patch NURBS. Cepen-dant, ce patch a des pôles et, par conséquent, des défauts d’ombrage peuvent apparaître sur les côtéssupérieur et inférieur. Il est également difficile de texturer cet objet. Un exemple de fichier de scène con-tenant un tel objet est distribué avec Ayam, voir le fichier :"ayam/scn/scripts/cbox.ay".

Page 442: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

6. Interface de script 442

6.6.3 Cercle NURBS avec base triangulaire

Figure 163: Cercle NURBS avec base triangulaire

Le fichier "tcircle.tcl" est un script objet qui crée des cercles NURBS avec une base triangulaire,voir aussi l’image ci-dessus.

Contrairement au cercle NURBS standard de neuf points à base rectangulaire, le cercle triangulaire necomporte que sept points de contrôle. Cela permet d’économiser de la mémoire, par exemple dans le casd’objets à balayage long. Cependant, le paramétrage du cercle triangulaire est également légèrement moinsbon. En outre, seuls les cercles complets qui commencent sur l’axe X positif sont pris en charge.

Ce script doit être utilisé dans un objet Script de type "Create" (voir section 4.9.1 L’objet Script (page225)).

Pour plus de commodité, il existe également une interface graphique de propriété ; il faut ajouter une balise"NP" de valeur "TCircleAttr" à l’objet Script pour la voir.

Le paramètre du cercle triangulaire est :

• "Radius" rayon du cercle, la valeur par défaut est 1.0.

Un exemple de fichier de scène contenant un tel objet est distribué avec Ayam, voir le fichier :"ayam/scn/scripts/tcircle.ay".

Page 443: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

6. Interface de script 443

6.6.4 Hélicoïde (helix)

Figure 164: Exemple d’hélicoïde

Le script "helix.tcl" crée une courbe NURBS qui forme une hélicoïde, voir aussi l’image ci-dessus.

Ce script doit être utilisé dans un objet Script de type "Create" (voir section 4.9.1 L’objet Script (page225)).

Une interface graphique de propriété est également fournie ; il faut ajouter une balise "NP" de valeur"HelixAttr" à l’objet Script pour la voir.

Les paramètres de l’hélicoïde sont :

• "Length" est le nombre de points de contrôle dans la courbe, la valeur par défaut est 30.

• "Radius" est le rayon de l’hélicoïde, la valeur par défaut est 2.0.

• "Angle" est l’angle de décalage d’un point à l’autre, la valeur par défaut est 45.0.

• "DZ" est le décalage le long de z d’un point à l’autre, la valeur par défaut est 0.25.

Un exemple de fichier de scène contenant un tel objet est distribué avec Ayam, voir le fichier :"ayam/scn/scripts/helix.ay".

Page 444: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

6. Interface de script 444

6.6.5 Spirale

Figure 165: Exemple de spirale

Le script "spiral.tcl" crée une courbe NURBS qui forme une spirale, voir aussi l’image ci-dessus.

Ce script doit être utilisé dans un objet Script de type "Create" (voir section 4.9.1 L’objet Script (page225)).

Une interface graphique de propriété est également fournie ; il faut ajouter une balise "NP" de valeur"SpiralAttr" à l’objet Script pour le voir.

Les paramètres de la spirale sont :

• "Length" est le nombre de points de contrôle dans la courbe, la valeur par défaut est 30.

• "Angle" est l’angle de décalage d’un point à l’autre, la valeur par défaut est 45.0.

• "RMin" est la valeur du rayon de départ, la valeur par défaut est 0.1.

• "RDiff" est la différence de rayon d’un point à l’autre, la valeur par défaut est 0.1.

Un exemple de fichier de scène contenant un tel objet est distribué avec Ayam, voir le fichier :"ayam/scn/scripts/spiral.ay".

Page 445: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

6. Interface de script 445

6.6.6 Double balayage (DualSweep)

Figure 166: Exemle de double balayage

Le fichier "dualsweep.tcl" est un script objet Script qui crée une surface NURBS à partir de troiscourbes paramètres similaires au birailing mais avec des courbes de section transversale perpendiculairesaux deux rails, voir aussi l’image ci-dessus.

La première courbe est dite section transversale (cross section). Cette courbe doit être plane et définie dansle plan YZ. C’est la courbe ouverte la plus à gauche dans l’image de l’exemple ci-dessus.La deuxième courbe est la première courbe rail. Cette courbe doit commencer au point de départ de lacourbe de la section transversale. C’est la courbe fermée inférieure dans l’image de l’exemple ci-dessus.La troisième courbe de paramètres est la deuxième courbe rail. Cette courbe doit commencer au pointfinal de la courbe de la section transversale. C’est la courbe fermée supérieure dans l’image de l’exempleci-dessus.

Ce script doit être utilisé dans un objet Script de type "Modify" (voir section 4.9.1 L’objet Script (page225)).

Pour plus de commodité, il existe également une interface graphique de propriété ; il faut ajouter une balise"NP" de valeur "DualSweepAttr" à l’objet Script pour le voir.

Les paramètres du double balayage sont :

• "Type" similaire à la propriété correspondante de l’objet Sweep, cela permet de définir le type de lasurface résultante (ouverte, fermée ou périodique).

• "Sections" nombre de sections à utiliser, fonctionne également de la même manière que pourl’objet Sweep (voir aussi 4.7.4 Propriété SweepAttr (page 186)).

La valeur par défaut est 0, c’est-à-dire que le nombre de sections est déterminé à partir des dimensionsdes courbes de paramètres.

Un exemple de fichier de scène contenant un tel objet est distribué avec Ayam, voir le fichier :"ayam/scn/scripts/dualsweep.ay".

Page 446: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

6. Interface de script 446

6.6.7 Surface par translation

Figure 167: Exemple de surface par translation

Le script "tsurf.tcl" crée une surface par translation à partir de deux courbes de paramètres, voir aussil’image ci-dessus. Les points de contrôle de la surface par translation sont créés en copiant les points decontrôle de la première courbe n fois, où n est le nombre de points de contrôle de la seconde courbe, tout endécalant également les points en fonction du décalage du point de contrôle nth au premier point de contrôlede la seconde courbe.

Les courbes n’ont pas besoin de se toucher en un point quelconque, mais si elles commencent au mêmepoint, la surface par translation interpolera les deux courbes.

Les courbes de paramètres rationnelles ne sont actuellement pas prises en charge.

Ce script doit être utilisé dans un objet Script de type "Modify" (voir section 4.9.1 L’objet Script (page225)).

Comme la surface est entièrement définie par les courbes de paramètres, il n’y a pas de paramètres supplé-mentaires et, par conséquent, il n’y a pas non plus d’interface graphique de propriétés.

Un exemple de fichier de scène contenant un tel objet est distribué avec Ayam, voir le fichier :"ayam/scn/scripts/tsurf.ay".

Page 447: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

6. Interface de script 447

6.6.8 Extrusion le long de la normale

Figure 168: Exemple d’extrusion le long de la normale

Le script "extruden.tcl" extrude une courbe NURBS le long de sa normale, voir aussi l’image ci-dessus.Si l’objet courbe a une balise MN, celle-ci aura la priorité sur le calcul normal via "getPlaneNormal".Cela est plus rapide et permet également de créer des extrusions cisaillées.1

En interne, le script crée une peau à partir de deux courbes, donc des courbes arbitrairement orientées et nonplanes sont prises en charge.

Ce script doit être utilisé dans un objet Script de type "Modify" (voir section 4.9.1 L’objet Script (page225)).

Pour plus de commodité, il existe également une interface graphique de propriété ; il faut ajouter une balise"NP" de valeur "ExtrudeNAttr" à l’objet Script pour le voir.

Le paramètre de l’extrusion est :

• "Height" est le déplacement de la deuxième courbe le long de la normale, la valeur par défaut est1.0.

Un exemple de fichier de scène contenant un tel objet est distribué avec Ayam, voir le fichier :"ayam/scn/scripts/extruden.ay".

1 Depuis 1.26.

Page 448: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

6. Interface de script 448

6.6.9 Créer des polyèdres à partir des notations de Conway

Figure 169: Polyèdre généré à partir de la notation Conway : "jtD"

Depuis Ayam 1.18, il existe un script d’exemple complet pour l’interface de script JavaScript distribué sousla forme "polyhedron.js" qui crée des polyèdres à partir de notations Conway. Le script est basé surle générateur "VRML Polyhedron" en ligne de George W. Hart:http://www.georgehart.com/virtual-polyhedra/conway_notation.html

Ce script doit être utilisé dans un objet Script de type "Create" (voir section 4.9.1 L’objet Script (page225)).

Pour plus de commodité, il existe également une interface graphique de propriété ; pour rendre cette interfacevisible, une balise "NP" de valeur "PolyhedronAttr" doit être ajoutée à l’objet Script.

La notation Conway définit un ensemble d’opérations exécutées consécutivement sur une graine / forme debase. Le script supporte actuellement les graines et opérations suivantes (informations tirées des pages webde George W. Harts, voir ci-dessus).

Seeds:Les solides de Platon sont désignés par les lettres T, O, C, I et D, selon leur première lettre. Les autrespolyèdres qui sont mis en oeuvre ici comprennent les prismes : Pn, antiprismes : An, et les pyramides : Yn,où n est un nombre (3 ou plus) qui doit être spécifié pour indiquer la taille de la base, par exemple, Y3=T,P4=C, et A3=O.

Operations:Actuellement, d, t, k, a, j, s, g, e, b, o, m, r et p sont définis. Ils sont alimentés par les opérations nécessairespour créer les solides d’Archimède et leurs équivalents à partir des solides de Platon. Les tableaux suivantsexpliquent les opérations plus en détail :

Ces explications abrégées sont à nouveau tirées de George W. Hart.

Page 449: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

6. Interface de script 449

Letter Name Descriptiond dual Le double d’un polyèdre a un sommet pour chaque face, et une face pour

chaque sommet, du polyèdre original, par exemple dC=O.t /tn truncate

all / justn-foldvertices

La troncature d’un polyèdre coupe chaque sommet, produisant une nou-velle face n fois orientée pour chaque sommet n fois dupliqué. (????)

k /kn kis all/ justn-sidedfaces

L’opération kis divise chaque face n fois orientée en n triangles. Unnouveau sommet est ajouté au centre de chaque face.

a ambo On peut considérer que l’opération "Ambo" se limite aux points médi-ans de la bordure. Elle produit un polyèdre, aX, avec un sommet pourchaque bord de X.

j join L’opérateur "join" est dual de "ambo", donc jX=dadX=daX.jX estcomme kX sans les bords originaux de X.

e expand Chaque face de X est séparée de toutes ses voisines et reconnectéeavec une nouvelle face à 4 côtés, correspondant à un bord de X.Un n-polygone (????) est ensuite ajouté pour relier les faces quadrilatérales àchaque sommet n-fold.

s snub L’opération de "snub" peut être considérée comme une opération "eC"suivie d’une opération de découpage de chacune des nouvelles facesquadruples le long d’une diagonale en deux triangles.Grâce à la mania-bilité de ces coupes, tous les sommets de "sX" sont quintuplés.

g gyro L’opération duale à s est g.g est comme k mais avec les nouvelles arêtesreliant les centres des faces aux points 1/3 des arêtes plutôt qu’aux som-mets.

b bevel L’opération de biseau peut être définie par bX=taX.o ortho Dual à e, oX=deX=jjX.oX a pour effet de placer de nouveaux sommets

au milieu de chaque face de X et de les relier, avec de nouvelles arêtes,aux points médians des arêtes de X.

m meta Dual à b, m est comme k et o combinés ; de nouvelles arêtes relientles nouveaux sommets au centre des faces aux anciens sommets et lesnouveaux sommets aux points médians des arêtes.

Table 100: Opérations en notation de Conway

Letter Name Descriptionr reflect Transforme un solide de gauche en solide de droite, ou inversement,

mais n’a aucun effet sur un solide réflexif.Donc rC=C, mais comparezsC et rsC.

p propellor Fait de chaque face de n-polygone une "hélice" de n-polygone en-tourée de n quadrilatères, par exemple, pT est l’icosaèdre tétraédriquestellé.Essayez pkD et pt6kT.p est une opération auto-duale, c’est-à-diredpdX=pX et dpX=pdX, et p fait également la navette avec a et j, c’est-à-dire paX=apX.

Table 101: Opérations additionnelles

Page 450: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

6. Interface de script 450

6.7 Interface de script JavaScript

Cette section contient la documentation de l’interface de script JavaScript qui est disponible après le charge-ment du plugin "jsinterp".

L’interface de script JavaScript existe depuis Ayam 1.18 et est basée sur le moteur JavaScript de MozillaSpiderMonkey.

Au chargement, le plugin "jsinterp" crée un contexte JavaScript qui existe (avec toutes les variables etobjets qui y sont définis) jusqu’à la sortie de Ayam.

6.7.1 Accès à JavaScript depuis Tcl et les objets Script

La fonctionnalité JavaScript est accessible depuis l’interface de script Tcl via la commande "jsEval".La commande peut être utilisée soit pour exécuter directement le code JavaScript fourni via l’argument decommandes (code Tcl en gras) :

»jsEval {var a = 0; a = a + 5.5; tclset("a", a);}

ou pour exécuter du code JavaScript à partir d’un fichier :

»jsEval -f scriptfile.js

Notez que cette commande n’est pas disponible dans l’interpréteur sécurisé. En outre, les objets scriptpeuvent également être implémentés en JavaScript, à condition que la première ligne du script soit un com-mentaire qui indique à Ayam d’utiliser l’interpréteur JavaScript :

/∗ Ayam, use: JavaScript ∗/var a = 0;

...

Notez que le contexte de script JavaScript hérite des limitations du contexte Tcl appelant. Par exemple, lorsde l’exécution d’un objet Script, le code suivant échoue :

tcleval("exit");

parce que la commande Tcl "exit" n’est pas disponible dans l’interpréteur sécurisé. La commanden’échouera pas, lorsque le contexte d’appel est l’interpréteur Tcl principal ; on peut par exemple taperdans la console Ayam :

»jsEval {tcleval("exit");}

and Ayam quits (Voir aussi la section: 4.9.1 Interpréteur sécurisé (page 229)).

Page 451: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

6. Interface de script 451

6.7.2 Fonctions JavaScript

Cette sous-section renseigne sur les fonctions globales supplémentaires disponibles dans l’interpréteurJavaScript Ayam.

Il s’agit de commandes Tcl converties (par exemple : "crtOb()"), "tcleval()", "tclvar()", et"tclset()".

Commandes converties :La fonctionnalité de Ayam est accessible à partir de JavaScript via un ensemble plus large de fonctionsglobales, appelées commandes Tcl correspondantes. Par exemple, les objets Ayam peuvent être créés enJavaScript en utilisant un appel de fonction comme celui-ci :

crtOb("NCircle");

or, with additional arguments:

crtOb("NCircle", "-radius", 3.0);

En général, toutes les commandes disponibles dans l’interpréteur Ayam Tcl sécurisé sont égalementdisponibles comme fonction (voir la section 6.2 Procédures and Commandes (page 342) pour une listeplus ou moins complète de ces commandes).

Notez que les procédures Tcl ne sont généralement pas disponibles en tant que fonction JavaScript globale,mais elles peuvent être appelées en utilisant "tcleval()" comme indiqué dans le paragraphe suivant.

tcleval():Cette fonction JavaScript globale permet d’évaluer des scripts Tcl quelconques, fournis en argument sousforme de chaîne :

var a = 42;

a = tcleval("puts " + a + "; return 5;");

tcleval("puts " + a);

/∗ résultat attendu : 42 5 ∗/

La fonction "tcleval()" donne accès à toutes les fonctionnalités de Ayam qui sont juste disponibles entant que procédure Tcl. Notez que les valeurs de retour sont correctement retransférées en JavaScript selonles règles de conversion des données comme documenté ci-dessous. Toutefois, en raison d’une conversionintermédiaire en données de chaîne, le surcoût d’un tel appel est considérable et le transport de données enmasse doit être organisé par d’autres moyens, voir ci-dessous.

tclvar():En utilisant la fonction JavaScript "tclvar()" un lien entre une variable Tcl et une variable correspon-dante dans le contexte JavaScript peut être établi. La fonction "tclvar()" crée essentiellement une traced’écriture sur la variable Tcl, de sorte que les modifications du côté Tcl sont toujours automatiquementrépercutées du côté JavaScript :

tclvar("a");

tcleval("set a 42");

tcleval("puts " + a);

/∗ résultat attendu : 42 ∗/

Page 452: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

6. Interface de script 452

Notez que la variable correspondante du côté JavaScript n’ existe pas tant que la première opérationd’écriture sur la variable Tcl se produise. La variable Tcl, à son tour, n’a pas besoin d’exister, lorsquela fonction "tclvar()" est appelée (c’est-à-dire que tout le travail est fait dans le rappel de trace). Si lenom de la variable contient un spécificateur d’espace de noms, cet espace de noms doit exister, lorsque lafonction "tclvar()" est appelée.

Bien qu’il semble parfaitement adapté, "tclvar()" ne peut pas être utilisé pour gérer un tableau dedonnées de propriétés (si le tableau contient des composants à enregistrer dans des fichiers de scènes Ayam).En effet, à la lecture d’un fichier de scène contenant de tels éléments de tableau enregistrés, les élémentsseront lus (et placés dans le contexte Tcl) avant que le script ne puisse établir la trace d’écriture à l’aide de"tclvar()" et les données du fichier de scène n’arriveront jamais dans le contexte JavaScript. Il n’y a pasde moyen facile de contourner ce problème. Une suggestion pour gérer un tableau de données de propriétéest présentée dans la section d’exemples complets ci-dessous.

tclset():La troisième fonction JavaScript globale est "tclset()" qui permet de définir efficacement les variablesTcl à partir du contexte JavaScript en évitant la conversion en données chaîne et inversement. Par exemple :

var a = 3.3;

var b = new Array(1, 3, 5);

tclset("a", a);

tclset("b", b);

fixe la variable Tcl "a" à la valeur en virgule flottante 3.3, et "b" à une liste de valeurs entières { 1 3 5

}.Notez que les noms de variables peuvent également pointer vers des éléments de tableau Tcl, par exemple

tclset("SphereAttrData(Radius)", 1.2);

définit l’élément Radius dans le tableau SphereAttrData ; ou contient des spécificateurs d’espace denoms, par exemple

tclset("::MyNameSpace::Radius", 1.2);

définit la variable Radius dans l’espace de noms MyNameSpace.

Page 453: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

6. Interface de script 453

6.7.3 Conversion de données

Lorsque les données sont transférées du côté Tcl vers le côté JavaScript (par exemple lors de la conversiondes valeurs de retour de "tcleval()" ou des valeurs de variables liées via "tclvar()"), les con-versions suivantes sont en vigueur : Les types de données scalaires seront convertis en leurs équivalentsdirectement correspondants, à l’exception des booléens, qui seront convertis en valeurs entières. Les listesseront converties en objets Array (l’imbrication est autorisée et produira des tableaux imbriqués en con-séquence). Les tableaux associatifs seront convertis en objets ayant des propriétés nommées. Les chaînesUnicode ne sont actuellement pas prises en charge. Voir également le tableau ci-dessous.

Tcl JavaScriptBoolean (true, false) Integer (1, 0)

Integer (2) Integer (2)Double (3.14) Double (3.14)

String ("mystr") String ("mystr")List ({0 1 2}) Array ((0, 1, 2))

Array (mya(mye) = 0.1) Object (mya.mye = 0.1)

Table 102: Conversions de Tcl vers JavaScript

Lorsque des données sont transférées du côté JavaScript au côté Tcl (par exemple en tant qu’argument defonction), les conversions suivantes sont en vigueur : Les types de données scalaires seront convertis enleurs équivalents directement correspondants, Les objets du tableau seront convertis en listes (l’imbricationest autorisée et produira des listes imbriquées en conséquence). Les chaînes Unicode et les objets d’un typeautre que Array (par exemple booléen) ne sont actuellement pas pris en charge. Voir également le tableausuivant.

JavaScript TclInteger (2) Integer (2)

Double (3.14) Double (3.14)String ("mystr") String ("mystr")Array ((0, 1, 2)) List ({0 1 2})

Table 103: Conversions de JavaScript vers Tcl

Le transport/la conversion des propriétés des objets (en éléments de tableaux associatifs, par exemple) peutêtre organisé manuellement de cette manière :

var a = new Object();

a.b = 3.14;

tclset("a(b)", a.b);

Page 454: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

6. Interface de script 454

6.7.4 Exemples complets

Cette section contient deux exemples complets d’objets Script écrits en JavaScript.

Pour le premier exemple, utilisez le type d’objet Script "Modify" et mettez une sphère comme objet enfantde l’objet Script.

/* Ayam, use: JavaScript */

tclvar("SphereAttrData");

getProp();

if(SphereAttrData)

{

tclset("SphereAttrData(ZMin)", -SphereAttrData.Radius);

tclset("SphereAttrData(ZMax)", SphereAttrData.Radius);

setProp();

}

Le script ci-dessus permet de s’assurer que les paramètres ZMin et ZMax de l’objet Sphère correspondenttoujours à son rayon. Tout d’abord, un lien est établi à partir du tableau de données des propriétés de l’objetSphère original "SphereAttrData", de sorte que lorsque "getProp()" (une commande Tcl Ayamconvertie) est appelé, l’objet JavaScript "SphereAttrData" est également rempli de données significa-tives.La ligne suivante (le if) est une mesure de sécurité qui empêche l’échec du script si l’objet enfant de l’objetScript n’est pas un objet Sphere.Maintenant, la valeur du rayon est retransférée à Tcl directement dans le tableau des données de propriétéaux entrées ZMin et ZMax respectivement avec l’aide de "tclset()".Enfin, la propriété modifiée est à nouveau transférée à l’objet Sphère avec une commande Tcl Ayam con-vertie "setProp()".

Page 455: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

6. Interface de script 455

Utilisez le type d’objet Script "Create" et ajoutez une balise "NP MyProp" pour voir l’interfacegraphique de la propriété.

/* Ayam, use: JavaScript, save array: MyPropData */

var MyPropData = new Object();

if(!tcleval("info exists MyPropData;"))

{

/* initial script run (but not when loaded from scene file!) */

MyPropData.MyItem = tcleval("set MyPropData(MyItem) 1.0;");

tcleval("set MyPropData(SP) {MyItem};");

}

else

{

/* all following script runs (and also when loaded from scene file!) */

MyPropData.MyItem = tcleval("set MyPropData(MyItem);");

}

if(!tcleval("info exists MyPropGUI;"))

{

tcleval("set ::phw [addPropertyGUI MyProp \"\" \"\"];");

tcleval("addParam $::phw MyPropData MyItem;");

}

crtOb("Sphere");

sL();

getProp();

tclset("SphereAttrData(Radius)", MyPropData.MyItem);

tclset("SphereAttrData(ZMin)", -MyPropData.MyItem);

tclset("SphereAttrData(ZMax)", MyPropData.MyItem);

setProp();

Cet exemple montre comment gérer les données de propriété en utilisant la variable objet JavaScript"MyPropData". Les données de propriété peuvent être enregistrées et lues dans les fichiers de scèneAyam à l’aide d’une variable de tableau miroir du côté Tcl (également appelée "MyPropData"). Pour quecela fonctionne correctement, l’initialisation de l’objet JavaScript doit être limitée à la première exécutiondu script : lorsque les données de propriété ont été lues à partir d’un fichier de scène, l’initialisation nedoit pas être exécutée, mais les données lues doivent être récupérées dans le contexte Tcl. C’est l’objet dela première instruction "if", qui vérifie l’existence de la variable miroir du tableau Tcl, dans l’exempleci-dessus.

En suivant ce schéma de duplication des structures de données du côté Tcl et JavaScript, on crée maintenantl’interface graphique de propriété, qui est également limitée à un seul script exécuté par une instruction"if" similaire.

Après l’interface graphique, un objet Sphère est créé et paramétré en fonction des données de l’interfacegraphique de propriété, qui est utilisée comme rayon, zmin et valeur zmax.

Page 456: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

6. Interface de script 456

6.8 Interface de script Lua

Cette section contient la documentation de l’interface de scripting Lua qui est disponible après le chargementdu plugin "luainterp".1

Au chargement, le plugin "luainterp" crée un contexte Lua qui existe (avec toutes les variables et objetsqui y sont définis) jusqu’à la sortie de Ayam.

6.8.1 Accéder à Lua à partir de Tcl et des objets script

La fonctionnalité Lua est accessible depuis l’interface de script Tcl via la commande "luaEval". Lacommande peut être utilisée soit pour exécuter directement le code Lua fourni via l’argument commands(code Tcl en gras) :

»luaEval {a = 0; a = a + 5.5; tclset("a", a);}

ou pour exécuter un code Lua à partir d’un fichier :

»luaEval -f scriptfile.lua

Notez que cette commande n’est pas disponible dans l’interprèteur sécurisé. En outre, les scripts objetspeuvent également être implémentés en Lua, à condition que la première ligne du script soit un commentairequi indique à Ayam d’utiliser l’interpréteur Lua :

−− Ayam, use: Lua

a = 0

...

Notez que le contexte de script Lua hérite des limitations du contexte Tcl appelant. Par exemple, lors del’exécution d’un objet Script, le code suivant échoue :

tcleval("exit")

parce que la commande Tcl "exit" n’est pas disponible dans l’interpréteur sécurisé. La commanden’échouera pas, lorsque le contexte d’appel est l’interpréteur Tcl principal ; on peut par exemple taperdans la console Ayam :

»luaEval {tcleval("exit")}

and Ayam quits (Voir aussi la section: 4.9.1 Interpréteur sécurisé (page 229)).

1 Depuis 1.21.

Page 457: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

6. Interface de script 457

6.8.2 Fonctions Lua

Cette sous-section informe sur les fonctions globales supplémentaires disponibles dans l’interprète AyamLua.

Il s’agit de commandes Tcl converties (par exemple : "crtOb()"), "tcleval()", "tclvar()", et"tclset()".

Commandes converties :La fonctionnalité de Ayam est accessible depuis Lua via un ensemble plus large de fonctions globales,appelées commandes Tcl correspondantes. Par exemple, les objets Ayam peuvent être créés dans Lua enutilisant un appel de fonction comme celui-ci :

crtOb("NCircle")

or, with additional arguments:

crtOb("NCircle", "-radius", 3.0)

En général, toutes les commandes disponibles dans l’interpréteur sécurisé Ayam Tcl sont égalementdisponibles sous forme de fonctions (voir la section 6.2 Procédures and Commandes (page 342) pour uneliste plus ou moins complète de ces commandes).

Notez que les procédures Tcl ne sont généralement pas disponibles en tant que fonction Lua globale, maiselles peuvent être appelées en utilisant "tcleval()" comme indiqué dans le paragraphe suivant.

tcleval():Cette fonction Lua permet d’évaluer des scripts Tcl quelconques, livrés sous forme de chaine comme argu-ment :

a = 42

a = tcleval("puts " .. a .. "; return 5;")

tcleval("puts " .. a)

−− expected output: 42 5

La fonction "tcleval()" donne accès à toutes les fonctionnalités de Ayam qui sont juste disponiblesen tant que procédure Tcl. Notez que les valeurs de retour sont correctement transférées à Lua selon lesrègles de conversion des données comme documenté ci-dessous. Cependant, en raison d’une conversionintermédiaire en chaîne , le surcoût d’un tel appel est considérable et le transport de données en masse doitêtre organisé par d’autres moyens, voir ci-dessous.

tclvar():La fonction Lua "tclvar()" permet d’établir un lien entre une variable Tcl et une variable correspon-dante dans le contexte Lua. La fonction "tclvar()" crée une trace d’écriture sur la variable Tcl, de sorteque les changements du côté Tcl sont toujours automatiquement répercutés du côté Lua :

tclvar("a")

tcleval("set a 42")

tcleval("puts " .. a)

−− expected output: 42

Page 458: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

6. Interface de script 458

Notez que la variable correspondante du côté Lua fait n’existe pas tant que la première opération d’écrituresur la variable Tcl ait lieu. La variable Tcl, à son tour, n’a pas besoin d’exister, lorsque la fonction"tclvar()" est appelée (c’est-à-dire que tout le travail est fait dans le rappel de trace). Si le nom dela variable contient un spécificateur d’espace de noms, cet espace de noms doit exister, lorsque la fonction"tclvar()" est appelée.

Bien qu’il semble parfaitement adapté, "tclvar()" ne peut pas être utilisé pour gérer un tableau dedonnées de propriétés (si le tableau contient des composants à enregistrer dans des fichiers de scènes Ayam).En effet, à la lecture d’un fichier de scène contenant de tels éléments de tableau enregistrés, les élémentsseront lus (et placés dans le contexte Tcl) avant que le script ne puisse établir la trace d’écriture à l’aide de"tclvar()" et les données du fichier de scène n’arriveront jamais dans le contexte Lua. Il n’y a pas demoyen facile de contourner ce problème. Une suggestion pour gérer un tableau de données de propriété estprésentée dans la section d’exemples complets ci-dessous.

tclset():La troisième fonction Lua globale est "tclset()" qui permet de définir efficacement les variables Tcl àpartir du contexte Lua en évitant la conversion en données chaîne et inversement. Par exemple :

a = 3.3

b = {1, 3, 5}tclset("a", a)

tclset("b", b)

fixe la variable Tcl "a" à la valeur en virgule flottante 3.3, et "b" à une liste de valeurs entières { 1 3 5

}.Notez que les noms de variables peuvent également pointer vers des éléments de tableau Tcl, par exemple

tclset("SphereAttrData(Radius)", 1.2)

définit l’élément Radius dans le tableau SphereAttrData ; ou contient des spécificateurs d’espace denoms, par exemple

tclset("::MyNameSpace::Radius", 1.2)

définit la variable Radius dans l’espace de noms MyNameSpace.

Page 459: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

6. Interface de script 459

6.8.3 Conversion des données

Lorsque les données sont transférées du côté Tcl vers le côté Lua (par exemple, lors de la conversion desvaleurs de retour de "tcleval()" ou des valeurs de variables liées via "tclvar()"), les conversionssuivantes sont en vigueur : Les types de données scalaires seront convertis en leurs équivalents directementcorrespondants. Les listes seront converties en tableaux (l’imbrication est autorisée et produira des tableauximbriqués en conséquence). Les tableaux associatifs seront convertis en tableaux avec des clés correctementnommées. Les chaînes Unicode ne sont actuellement pas prises en charge. Voir également le tableau ci-dessous.

Tcl LuaBoolean (true, false) Boolean (true, false)

Integer (2) Integer (2)Double (3.14) Double (3.14)

String ("mystr") String ("mystr")List ({0 1 2}) Array ({0, 1, 2})

Array (mya(mye) = 0.1) Table (mya.mye = 0.1)

Table 104: Conversion des données de Tcl vers Lua

Lorsque des données sont transférées du côté Lua au côté Tcl (par exemple en tant qu’argument de fonc-tion), les conversions suivantes sont en vigueur : Les types de données scalaires seront convertis en leurséquivalents directement correspondants, les tableaux seront convertis en listes (l’imbrication est autorisée etproduira des listes imbriquées en conséquence). Les tableaux épars et mixtes ne sont actuellement pas prisen charge. Les chaînes de caractères Unicode ne sont pas non plus prises en charge actuellement. Voir aussile tableau suivant.

Lua TclBoolean (true, false) Boolean (true, false)

Integer (2) Integer (2)Double (3.14) Double (3.14)

String ("mystr") String ("mystr")Array ({0, 1, 2}) List ({0 1 2})

Table 105: Conversion des données de Lua vers Tcl

Le transport/la conversion des entrées de tableau (en éléments de tableau associatif, par exemple) peut êtreorganisé manuellement de cette manière :

a.b = 3.14

tclset("a(b)", a.b)

Page 460: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

6. Interface de script 460

6.8.4 Exemples complets

Cette section contient deux exemples complets d’objets Script écrits en Lua.

Pour le premier exemple, utilisez le type d’objet Script "Modify" et mettez une sphère comme objet enfantde l’objet Script.

-- Ayam, use: Lua

tclvar("SphereAttrData")

getProp()

if SphereAttrData then

tclset("SphereAttrData(ZMin)", -SphereAttrData.Radius)

tclset("SphereAttrData(ZMax)", SphereAttrData.Radius)

setProp()

end

Le script ci-dessus permet de s’assurer que les paramètres ZMin et ZMax de l’objet Sphère correspondenttoujours à son rayon. Tout d’abord, un lien est établi à partir du tableau de données des propriétés de l’objetSphere original "SphereAttrData", de sorte que lorsque "getProp()" (une commande Tcl Ayamconvertie) est appelé, l’objet Lua "SphereAttrData" est également rempli de données significatives.La ligne suivante (le if) est une mesure de sécurité qui empêche l’échec du script si l’objet enfant de l’objetScript n’est pas un objet Sphere.Maintenant, la valeur du rayon est retransférée à Tcl directement dans le tableau des données de propriétéaux entrées ZMin et ZMax respectivement à l’aide de "tclset".Enfin, la propriété modifiée est à nouveau transférée à l’objet Sphère avec une commande Tcl Ayam con-vertie "setProp()".

Page 461: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

6. Interface de script 461

Utilisez le type d’objet Script "Create" et ajoutez une balise "NP MyProp" pour voir l’interfacegraphique des propriétés.

-- Ayam, use: Lua, save array: MyPropData

if tcleval("info exists MyPropData;") == 0 then

-- initial script run (but not when loaded from scene file!)

MyPropData = {}

MyPropData.MyItem = tcleval("set MyPropData(MyItem) 1.0;")

tcleval("set MyPropData(SP) {MyItem};")

else

-- all following script runs (and also when loaded from scene file!)

MyPropData = {}

MyPropData.MyItem = tcleval("set MyPropData(MyItem);")

end

if tcleval("info exists MyPropGUI;") == 0 then

-- create property GUI "MyProp"

tcleval("set ::phw [addPropertyGUI MyProp \"\" \"\"];")

tcleval("addParam $::phw MyPropData MyItem;")

end

crtOb("Sphere")

sL()

getProp()

tclset("SphereAttrData(Radius)", MyPropData.MyItem)

tclset("SphereAttrData(ZMin)", -MyPropData.MyItem)

tclset("SphereAttrData(ZMax)", MyPropData.MyItem)

setProp()

Cet exemple montre comment gérer les données sur les propriétés à l’aide de la variable objet Lua"MyPropData". Les données de propriété peuvent être enregistrées et lues dans les fichiers de scèneAyam à l’aide d’une variable de tableau miroir du côté Tcl (également appelée "MyPropData"). Pour quecela fonctionne correctement, l’initialisation de l’objet Lua doit être limitée à la première exécution du script: lorsque les données de propriété ont été lues à partir d’un fichier de scène, l’initialisation ne doit pas êtreexécutée, mais les données lues doivent être récupérées dans le contexte Tcl. C’est l’objet de la premièreinstruction "if", qui vérifie l’existence de la variable miroir du tableau Tcl, dans l’exemple ci-dessus.

En suivant ce schéma de doubles structures de données en miroir des côtés Tcl et Lua, on crée maintenantl’interface graphique de propriété, qui est également limitée à un seul script exécuté par une instruction"if" similaire.

Après l’interface graphique, un objet Sphère est créé et paramétré en fonction des données de l’interfacegraphique de propriété, qui est utilisée comme rayon, zmin et valeur zmax.

Page 462: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

7. Importations et Exportations 462

7 Importations et Exportations

Cette section contient la documentation de tous les modules d’importation et d’exportation de Ayam.

7.1 Gestion des plugins d’importation et d’exportation

À l’exception de l’exportation RIB, tous les modules d’import/export de Ayam sont des plugins qui doiventêtre chargés dans l’application avant toute utilisation éventuelle. Le chargement d’un plugin d’import/exportpeut se faire de trois manières différentes :

1. explicitement via l’entrée du menu principal "File/Load Plugin",

2. automatiquement au démarrage de l’application via un script (en ajoutant par exemple"plugins/loaddxfio.tcl" au paramètre de préférence "Scripts"),

3. implicitement via les entrées/sorties normales de la scène. Le chargement implicite signifie que l’onpeut simplement utiliser les entrées du menu principal "File/Open" et "File/Save as" (oules raccourcis clavier correspondants) et spécifier un nom de fichier avec l’extension appropriée (parexemple : ".dxf").1 Ayam chargera alors le plugin correspondant ("dxfio") et ouvrira égalementla boîte de dialogue des options d’importation (ou d’exportation) avec l’option "NomFichier" déjàdéfinie pour le nom de fichier choisi auparavant. Bien entendu, le chargement implicite des pluginsnécessite que les préférences "Plugins" soient correctement définies.

7.2 Aperçu des plugins d’importation et d’exportation

Le tableau suivant liste les fonctionnalités Ayam supportées par les différents plugins d’importation. Toutes

Feature RIB OBJ 3DMF(Apple) DXF 3DM(Rhino) X3DQuadrics Yes No Yes No Yes Yes

Trimmed NURBS Yes Yes Yes No Yes YesParametrics No No No No No Yes

Curves No Yes Yes Yes Yes YesTransformations Yes No Yes No No Yes

Hierarchy Yes No Yes No No YesInstances Yes No No No No No

CSG Yes No No No No No

Table 106: Caractéristiques de Ayam supportées par divers plugins d’importation

les fonctionnalités de Ayam ne sont pas prises en charge dans les différentes options d’exportation. Letableau suivant donne un aperçu des fonctionnalités prises en charge par format de fichier d’exportation.

1 Depuis 1.13.

Page 463: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

7. Importations et Exportations 463

Feature RIB OBJ 3DMF(Apple) DXF 3DM(Rhino) X3DQuadrics Yes Noa Somed Nob Somed Somed

Trimmed NURBS Yes Yes Yes Nob Yesc YesParametrics Noa Noa Noa Nob Somee Somee

Curves No Yes Yes Yes Yes YesTransformations Yes No Yes No No Yes

Hierarchy Yes No Yes No No YesInstances Yes No No No No Yes

CSG Yes No No No No No

Table 107: Les fonctionnalités de Ayam soutenues par divers formats d’exportation

a : sera converti en NURBSb : sera converti en PolyMeshesc : Courbes de trim 3D exportées sous forme de PolyLinesd : certaines quadriques sont converties en NURBS (voir la documentation du plugin)e : certains paramètriques sont converties en NURBS (voir la documentation du plugin)

Notez que le succès de l’exportation d’une scène 3D vers une autre application dépend non seulement deAyam mais aussi de l’application d’importation. Par exemple, de nombreuses applications prétendent liredes fichiers au format OBJ de Wavefront mais n’importent que des données polygonales ou, pire encore,que des triangles à partir de ces fichiers. Par défaut, Ayam essaie de préserver autant d’informations quepossible dans le format d’exportation respectif, ce qui conduit par exemple à l’utilisation de NURBS dansles fichiers OBJ de Wavefront. Par conséquent, pour réussir le transfert d’une scène Ayam vers une autreapplication, dans certains cas, il peut être nécessaire de convertir manuellement les objets NURBS de lascène Ayam en géométrie polygonale. Un script est fourni pour faciliter cette opération ("topoly.tcl",Voir aussi la section 6.5.5 Tout transformer en polygones (page 430)).

Ayam n’est pas parfait non plus, car dans la plupart des options d’importation, les données relatives aumatériau et aux animations sont complètement ignorées.

Le tableau suivant donne un aperçu des versions des formats de fichiers pris en charge par les différents plu-gins d’importation et d’exportation. L’importation de fichiers d’une version différente doit être considéréecomme non supportée. Les sections suivantes documentent en détail les différents plugins d’importation et

Format RIB OBJ 3DMF(Apple) DXF 3DM(Rhino) X3DVersion 3.0 3.0 1.0 14 3.0 3.1

Table 108: Aperçu des versions de formats de fichiers pris en charge

d’exportation.

7.3 Importation de RenderMan Interface Bytestream (RIB)

En utilisant le plugin "rrib" (pour Read RIB) les RIB version 3.0 peuvent être importés dans Ayam. Ceplugin est basé sur la bibliothèque Affine Thomas E. Burge. Commencez à importer un RIB en utilisant

Page 464: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

7. Importations et Exportations 464

l’entrée de menu "File/Import/RenderMan RIB" (si cette entrée de menu n’est pas disponible, leplugin rrib doit être chargé en utilisant l’entrée de menu "File/Load Plugin" avant).

7.3.1 Prise en charge des primitives RIB

Le plugin RRIB prend en charge l’importation des primitives géométriques suivantes :

• Quadriques (sphère, disque, cylindre, cône, paraboloïde, hyperboloïde, tore),

• patchs bilinéaires et bicubiques et maillages patch,

• patchs NURBS (avec courbes de découpage),

• polygones (généraux) et maillages (généraux) de polygones,

• maillages de subdivision (avec toutes les balises).

De plus, le plugin prend en charge la lecture des CSG, des instances d’objets, des archives, des sourcesde lumière (y compris les lumières étendues), des transformations linéaires quelconques (sauf les transfor-mations de cisaillement), des RiOptions et des RiAttributs quelconques, des ombres (sauf les ombres detransformation et sans arguments de tableau), des variables primitives quelconques (par exemple, variableou sommet)1 et les objets de procédure et les archives à lecture différée 2.Les coordonnées des textures seront importées sous forme de balises TC (Voir aussi la section 4.11.3 BaliseTC (Texture Coordinates) (page 258)).

Le caractère manuel de la scène (mise en scène via RiOrientation) est suivi et converti au défaut de droit deAyam. 3

Le plugin RRIB ne prend pas en charge la lecture des courbes, des surfaces implicites (modèles blobby) etdes appels à l’interface RenderMan qui ne sont pas très utiles pour une importation RIB comme par exempleRiMakeTexture.Les primitives géométriques non prises en charge et les autres appels à l’interface RenderMan sont ignoréssans notification.

Notez également que pour les patchs NURBS et les mailles de patchs bicubes, les points de type "P" serontpromus à "Pw". Les points de type "Pz" ne sont pas pris en charge par le plugin. Le découpage des patchsNURBS par le serrage de leurs plages de noeuds n’est pas non plus pris en charge (cependant, des balisesUMM/VMM seront créées, qui contiennent les nouvelles valeurs minimales et maximales de noeuds).4 Voiraussi la section 4.11.17 Balises UMM/VMM (U/V Min Max) (page 268).

En outre, les objets de type polygone (général) et maille polygonale seront toujours promus au rang demailles polygonales générales.

Les instances d’objets sont résolues en objets normaux lors de l’importation. Les instances peuvent êtrefacilement recréées en utilisant l’installation automatique (voir la section 8.8 Instanciations automatiques(page 503)).

S’il y a plusieurs objets dans une instance d’objet RenderMan, un objet de niveau de clôture sera créé. 5

Les objets procéduraux ne seront pas évalués, mais des objets RiProc seront créés, qui portent tous les argu-ments et créent la même séquence de demandes RIB à l’exportation que celle qui a été lue à l’importation.

Notez que dans le cas d’erreurs syntaxiques graves du fichier RIB, des messages d’erreur plus informatifssont imprimés sur le canal stderr de Ayam (qui n’est pas redirigé vers la console Ayam).1 Depuis 1.7. 2 Depuis 1.9. 3 Depuis 1.22. 4 Depuis 1.9. 5 Depuis 1.22.

Page 465: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

7. Importations et Exportations 465

7.3.2 Options d’importation RIB

L’importation de RIB peut être contrôlée via différentes options :

• "ScaleFactor", détermine un facteur d’échelle global à appliquer à tous les objets importés.

• "ReadFrame", spécifie le numéro de la trame dans le RIB à lire. Une valeur de -1 signifie quetoutes les trames doivent être lues. Si un numéro de trame est spécifié et que cette trame n’apparaîtpas dans le RIB sous la forme "FrameBegin <votre_numéro>" rien ne sera importé.

• "ReadCamera": si celui-ci est activé, un objet Camera sera créé lorsque le plugin RIB rencontreraun "WorldBegin". Vous pouvez faire glisser cet objet caméra sur un objet Vue en perspective dansAyam après l’importation pour voir à travers la caméra du RIB importé.

• "ReadOptions", contrôle si les RiOptions doivent être importées du RIB sur la scène. Notez queces RiOptions écraseront les paramètres globaux actuels de la scène Ayam.

• "ReadLights", si cette option est activée, les éclairages du RIB seront importés.

• "ReadMaterial", contrôle si des objets matériaux doivent être créés pour les objets importés.Tous les objets matériaux sont créés dans un niveau spécial appelé "Materials" dans le niveausupérieur de la scène. Le plugin essaie de maintenir le nombre d’objets "material" générés aussibas que possible en les comparant avec les matériaux déjà existants dans ce niveau. Cela fonctionneégalement avec les objets "material" qui existent avant que le plugin RRIB ne soit invoqué (tant qu’ilsrésident dans ce niveau spécial).

• "ReadPartial", cette option est utile si vous souhaitez importer des RIB partiels (par exemple desarchives) qui ne contiennent pas de "WorldBegin". Soyez prudent avec cette option (c’est-à-direne l’utilisez que si la lecture d’un RIB échoue), car elle active la lecture de tous les types d’objets,quelle que soit la structure du RIB.

• "ReadSTrim" s’il est désactivé, aucun trim simple (trim qui ne court que le long de la bordure d’unpatch NURBS et qui ne coupe pas réellement la surface) ne sera importé s’il s’agit des seules courbesde trim.

• "RescaleKnots" permet de redimensionner les vecteurs de noeuds des patchs NURBS et descourbes de trim afin que les distances entre les différents noeuds ne soient pas inférieures à la valeurdonnée. L’utilisation d’une valeur de 1,0e-04 permet d’obtenir des NURBS qui peuvent être tracées entoute sécurité à l’aide de GLU. La valeur par défaut de 0.0 signifie qu’il n’y a pas de mise à l’échelle.

• "Progress": affiche la progression de l’importation en fonction des numéros de ligne du fichier àimporter (les archives ne font pas avancer la progression).

7.4 Exportation RIB (RenderMan Interface Bytestream)

L’exportation de RenderMan Interface Bytestream (RIB) est le module d’exportation le plus important deAyam et justifie en fait son existence. Toutes les caractéristiques de la structure des objets et des scènes deAyam sont prises en charge (hiérarchie, CSG, instances, matériaux, lumières, etc.). De plus, Ayam prenden charge le rendu direct à partir de fenêtres de visualisation, le rendu en plusieurs passes pour les cartesd’ombre et les prévisualisations permanentes (où un moteur de rendu RenderMan est directement couplé àune fenêtre de visualisation Ayam).

La documentation sur l’exportation des RIB est répartie sur la documentation de Ayam, cette section donnequelques informations générales et sinon ne fait que pointer vers les véritables sections de la documentation.

Page 466: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

7. Importations et Exportations 466

L’exportation de RIB est toujours disponible, elle ne nécessite pas de plugin pour être chargée. L’entréecorrespondante du menu principal est "File/Export/RenderMan RIB" et le raccourci clavier cor-respondant est <Ctrl+E>. Pour contrôler l’exportation et la restitution des RIB, il existe de nombreusesoptions qui sont documentées dans la section 2.10.4 Préférences d’exportation RIB (page 68).

Il existe également des moyens spéciaux d’exporter les RIB disponibles dans le menu principal :"Special/RIB-Export" ; ceci est documenté dans la section 2.2 Menu spécial (page 40).

Ayam peut non seulement exporter des scènes en RIB, mais aussi appeler différents moteurs de rendu Ren-derMan pour restituer directement les fichiers RIB exportés à l’écran ou dans un fichier image. La docu-mentation sur la façon d’exporter/restituer directement à partir d’une fenêtre de visualisation se trouve dansla section 2.5 View Menu (page 45).

Il est également possible d’invoquer l’exportation de RIB en utilisant l’interface de script, voir la section6.2.23 RIB export (page 408) pour plus d’informations.

L’exportation de RIB respecte toujours les balises "NoExport" et l’attribut "HideChildren".

7.5 Importation Mops

Dans les anciennes versions de Ayam, les scènes Mops pouvaient être importées en utilisant l’entrée dumenu principal : "File/Import Mops". Depuis Ayam 1.13 l’importation Mops est un plugin nommé"mopsi". Après le chargement du plugin, les scènes Mops peuvent être importées en utilisant l’entrée dumenu principal "File/Import/Mops".

Ayam est capable d’importer la plupart des éléments d’une scène Mops, à l’exception des RiAttributs at-tachés à des objets géométriques quelconques, car les attributs et les ombres sont gérés par des objets matéri-aux dans Ayam. Cependant, si un objet Mops possède une ombre de surface ou de déplacement, un objetmatériau avec les ombres de l’objet Mops et ses RiAttributs sera automatiquement créé et lié à l’objetgéométrique lors de l’importation. Seuls les objets Mops avec des ombres de surface ou de déplacementsont pris en compte, car sinon un objet matériau devrait être créé pour chaque objet Mops importé. Lesobjets matériaux sont nommés "mat0", "mat1" et ainsi de suite. Assurez-vous que la scène en coursdans Ayam ne contient pas d’objets matériaux portant ces noms, sinon l’importation de Mops ne pourra pascréer d’objets matériaux pour la scène à importer.

Les options d’importation "ResetDM" et "ResetST" contrôlent, si le mode d’affichage GLU et lesparamètres de tolérance (voir les sections 4.4.1 Propriété NCurveAttr (page 147), et 4.6.1 PropriétéNPatchAttr (page 166) pour plus d’informations sur le mode d’affichage et la tolérance) des primitivesNURBS doivent être réinitialisées en utilisant les valeurs de préférence globales (la valeur par défaut enAyam) au lieu d’utiliser les valeurs du fichier de scène Mops.

7.6 Importation AutoCAD DXF

Le plugin "dxfio" permet d’importer des fichiers AutoCAD DXF (drawing interchange format) dansAyam à l’aide de la bibliothèque Dime (de Systems in Motion, Kongsberg SIM AS, Norvège). Ce plugin neprend en charge que les fichiers jusqu’à la version 14 du format de fichier.

Commencez à importer un fichier DXF en utilisant l’entrée de menu principal "File/Import/AutoCADDXF" (si cette entrée de menu n’est pas disponible, le plugin dxfio doit d’abord être chargé en utilisantl’entrée de menu "File/Load Plugin").

Page 467: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

7. Importations et Exportations 467

Notez que l’ensemble du fichier DXF est lu en mémoire avant la création de toute géométrie

7.6.1 Prise en charges des entités DXF

Le plugin d’importation DXF prend en charge la lecture des entités DXF suivantes : 3DFACE, ARC, CIR-CLE, ELLIPSE, LINE, SOLID, TRACE, BLOCK, INSERT, POLYLINE, LWPOLYLINE, and SPLINE.Les entités qui ne figurent pas sur cette liste seront ignorées sans notification.

Les entités 3DFACE sont importées en tant qu’objets PolyMesh si seuls les trois premiers points sont uniques(l’entité décrit un triangle) ou si la face est plane sinon en tant qu’objets BPatch.

Les entités ARC, CIRCLE, et ELLIPSE seront lus comme des objets NCircle avec les paramètres corre-spondants "TMin", "TMax" (pour les arcs et les ellipses) et les valeurs de transformation d’échelle (pourles ellipses) fixées.

Les entités POLYLINE sont entièrement prises en charge :

• Polylines sera importé en tant qu’objets NCurve ;

• PolyMeshes et PolyFaceMeshes seront importés en tant qu’objets PolyMesh ;

• B-Spline et surfaces de Bezier seront importées en tant qu’objets NPatch.

Les entités LINE, LWPOLYLINE et SPLINE seront importées en tant qu’objets NCurve.

Les entités SOLID et TRACE sont importées en tant qu’objets BPatch.

Les entités BLOCK et INSERT seront converties en objets maîtres (référencés) et instances (références).

Les bombements et les extrusions ne sont pas pris en charge.

Le tableau suivant énumère de manière exhaustive les entités DXF prises en charge et leurs homologuesAyam qui seront créées à l’importation.

DXF Entity Ayam Object3DFACE PolyMesh / BPatch

ARC NCircleCIRCLE NCircleELLIPSE NCircle

LINE NCurveSOLID BPatchTRACE BPatch

POLYLINE NCurve / PolyMesh / NPatchLWPOLYLINE NCurve

SPLINE NCurveINSERT Instance

Table 109: Table de conversion des importations DXF

7.6.2 Options des importations DXF

L’importation de DXF peut être contrôlée par différentes options :

Page 468: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

7. Importations et Exportations 468

• "FileName" : est le chemin et le nom du fichier DXF à importer.

• "ReadCurves" : si cette option est désactivée, aucune courbe de forme libre ne sera importée.

• "ScaleFactor" : permet d’appliquer un facteur d’échelle à tous les objets importés.

• "ReadLayers" : en utilisant cette option d’importation, une seule couche ou une gamme decouches peut être sélectionnée pour l’importation. Par défaut, toutes les entités de toutes les couchesseront importées.

• "RescaleKnots" : permet de redimensionner les vecteurs de noeuds des courbes NURBS im-portées afin que les distances entre les différents noeuds ne soient pas inférieures à la valeur donnée.Une valeur "RescaleKnots" de 1.0e-04 conduit à des NURBS qui peuvent être tracées en toutesécurité en utilisant le GLU. La valeur par défaut 0.0 signifie qu’il n’y a pas de mise à l’échelle.

• "Progress" : affiche la progression de l’importation ; de 0 à 50 %, Dime lit le fichier DXF ; de 50à 100 %, le plugin dxfio convertit les entités DXF en objets Ayam.

7.7 Exportation AutoCAD DXF

Le plugin "dxfio" permet d’exporter des scènes Ayam vers des fichiers AutoCAD DXF (drawing inter-change format) à l’aide de la bibliothèque Dime (de Systems in Motion, Kongsberg SIM AS, Norvège).

Commencez à exporter vers un fichier DXF en utilisant l’entrée du menu principal"File/Export/AutoCAD DXF" (si cette entrée de menu n’est pas disponible, le plugin dxfiodoit être chargé en utilisant d’abord l’entrée de menu "File/Load Plugin").

Notez que l’ensemble de la scène Ayam est converti en un modèle DXF correspondant en mémoire avantd’être écrit dans le fichier DXF.

Ayam ne crée que des entités de type POLYLINE et SPLINE et il lui manque beaucoup d’informations quipourraient être enregistrées dans d’autres formats (par exemple, les normales et les coordonnées de texture).C’est pourquoi le format d’exportation DXF doit être évité si possible.

7.7.1 Prise en charge des objets et propriétés Ayam

La fonctionnalité d’exportation du plugin dxfio couvre actuellement l’exportation de toutes les boîtes,quadrics, NURBS, PolyMeshes, instances, clones, objets de script (de type "Create" ou "Modify"),et objets pouvant être convertis en courbes ou surfaces NURBS ou en PolyMeshes. Cependant, toutes lesboîtes et quadrillages seront toujours convertis en surfaces NURBS et les surfaces NURBS seront tesseléesen PolyMeshes pour l’exportation.

La hiérarchie des scènes et les opérations du CSG sont totalement ignorées, tous les objets seront écritscomme s’ils étaient combinés par l’opérateur union.

Toutes les transformations seront appliquées aux points de contrôle des objets exportés.

Les objets PolyMesh seront exportés vers des entités POLYLINE (sous-type PolyFaceMesh). Si un objetPolyMesh contient des faces avec des trous ou avec plus de quatre points, il sera tesselé pour l’exportation.Les normales existantes ne seront finalement pas exportées.

Les courbes NURBS seront exportées en tant qu’entités SPLINE.

Les objets d’instance sont résolus pour l’exportation.

Page 469: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

7. Importations et Exportations 469

Les sources de lumière, ainsi que les appareils photo, les vues et les matériaux ne sont pas exportés.

La prise en charge des plages de noeuds des courbes ou surfaces NURBS par des balises UMM/VMM n’estpas possible. Les coordonnées de texture ne seront pas exportées.

7.7.2 Options d’exportation DXF

L’exportation DXF peut être contrôlée par le biais de différentes options :

• "FileName" : est le chemin et le nom du fichier DXF à exporter.

• "ScaleFactor" : permet d’appliquer un facteur d’échelle à tous les objets exportés.

• "WriteSelected" : n’exporte que les objets sélectionnés.

• "ObeyNoExport" : ignore tous les objets avec les balises "NoExport".

• "IgnoreHidden" : ignore tous les objets cachés.

• "WriteCurves" : si cette option est désactivée, aucune courbe de forme libre ne sera exportée.

• "TopLevelLayers" : contrôle si les objets de niveau supérieur de la scène Ayam à exporterdoivent être interprétés comme des calques. Si cette option est activée, tous les objets de ces niveauxseront placés sur la couche respective. Les objets qui ne sont pas dans l’un de ces niveaux seront écritssur la couche par défaut. De plus, les noms des objets du niveau supérieur deviendront des noms decouches.

• "Progress" : affiche la progression de l’exportation ; de 0 à 50 %, le plugin dxfio convertit lesobjets Ayam en entités DXF ; de 50 à 100 %, Dime écrit le fichier DXF.

7.8 Importation Wavefront OBJ

Depuis Ayam 1.8.3, une fonction d’importation de Wavefront OBJ (version 3.0) est disponible et depuisAyam 1.13, il s’agit d’un plugin ("objio") qui doit être chargé avant l’importation. L’entrée de menuprincipale correspondante est " File/Import/Wavefront OBJ " (si cette entrée de menu n’estpas disponible, le plugin objio doit être chargé en utilisant l’entrée de menu " File/Load Plugin

" d’abord).

7.8.1 Prise en charge des déclarations de Wavefront OBJ

L’importation de Wavefront OBJ prend en charge la lecture des lignes et des faces polygonales avec desnormales de sommet et des coordonnées de texture (ces dernières sont lues comme des balises variablesprimitives) ; les déclarations : v, vt, vn, l, f.

En outre, les courbes et surfaces de forme libre (NURBS) avec des courbes de trim et des coordonnéesde texture (à nouveau lues comme des variables primitives) sont prises en charge ; les déclarations : vp,cstype, deg, curv, curv2, surf, parm, trim, hole, end.

Les courbes de forme libre et les surfaces de type bmatrix, cardinal et taylor ne sont actuellement pas prisesen charge. De même, l’importation de courbes et de points spéciaux (par exemple, une courbe sur unesurface) n’est actuellement pas prise en charge. De plus, la prise en charge de courbes et de surfaces deforme libre par le serrage de leurs plages de noeuds n’est pas prise en charge (cependant, des étiquettes

Page 470: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

7. Importations et Exportations 470

UMM/VMM appropriées seront créées, qui contiennent les nouvelles valeurs minimales et maximales denoeuds).1 Voir aussi la section 4.11.17 Balises UMM/VMM (U/V Min Max) (page 268).

Aucune information sur les matériaux et les regroupements ne sera importée. Les déclarations non prises encompte seront ignorées sans notification.

L’importation de Wavefront OBJ s’attend à ce que le fichier soit syntaxiquement correct. Le plugin n’estpas très bon pour détecter et signaler les erreurs. Si l’importation échoue, vous pouvez d’abord utiliser unoutil tiers pour vérifier si le fichier Wavefront OBJ est valide.

De plus, notez que le plugin objio ne prend en charge que la syntaxe de la version 3.0 de Wavefront, lesfichiers qui utilisent une syntaxe plus ancienne ne seront pas importés correctement.

7.8.2 Options d’importation Wavefront OBJ

Les options suivantes contrôlent le processus d’importation de Wavefront OBJ :

• "FileName" : est le nom du fichier Wavefront OBJ (version 3.0)

• "MergeFaces" : contrôle si des faces polygonales consécutives doivent être fusionnées enun seul objet PolyMesh pour l’importation. Notez que les objets PolyMesh fusionnés doiventprobablement être optimisés s’il y a des sommets utilisés par plusieurs faces (menu principal"Tools/PolyMesh/Optimize").

• "MergePVTags" : contrôle si les balises PV des objets PolyMesh doivent être fusionnées ainsi quesi elles sont soumises à une fusion automatique (voir ci-dessus).

• "ReadCurves" : si cette option est désactivée, aucune courbe de forme libre ne sera importée.Cette option n’influence pas l’importation des courbes trim.

• "ReadSTrim" : si elle est désactivée, aucun trim simple (trim qui ne s’exécute que le long de labordure d’un patch NURBS et qui ne coupe pas réellement la surface) ne sera importé s’il s’agit desseules courbes de trim.

• "RescaleKnots" : permet de redimensionner les vecteurs de noeuds des courbes NURBS, despatchs et des courbes de trim afin que les distances entre les différents noeuds ne soient pas inférieuresà la valeur donnée. Une valeur "RescaleKnots" de 1.0e-04 conduit à des NURBS qui peuventêtre tracées en toute sécurité en utilisant le GLU. La valeur par défaut 0.0 signifie qu’il n’y a pas demise à l’échelle.

• "ScaleFactor" : permet d’appliquer un facteur d’échelle à tous les objets importés.

• "RationalStyle" : détermine comment les coordonnées rationnelles sont stockées dans le fichierà importer (Voir aussi la section 1.2.4 Coordonnées rationnelles (page 18)) ;

• "Progress" : affiche la progression de l’importation ; de 0 à 100%, le plugin objio lit les lignes dufichier Wavefront OBJ et crée des objets Ayam. Le nombre peut être un peu erroné de temps en temps,car le compteur de progression ne compte que les lignes et suppose une longueur de ligne moyennefixe de 28 caractères.

7.9 Exportation Wavefront OBJ

Depuis Ayam 1.7, il est possible d’exporter des scènes ou des objets au format Wavefront OBJ (version 3.0).Depuis Ayam 1.13, l’exportation au format Wavefront OBJ est un plugin ("objio") qui doit être chargé

1 Depuis 1.9.

Page 471: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

7. Importations et Exportations 471

avant l’exportation. L’entrée de menu principale correspondante est " File/Export/Wavefront

OBJ " (si cette entrée de menu n’est pas disponible, le plugin objio doit d’abord être chargé en utilisantl’entrée de menu " File/Load Plugin ").

7.9.1 Prise en charge des objets et propriétés Ayam

L’exportation de Wavefront prend actuellement en charge les objets suivants :

• NCurve et les objets qui peuvent être convertis en objets NCurve (par exemple ICurve, ConcatNC,ExtrNC),

• NPatch (avec courbes trim) et les objets qui peuvent être convertis en objets NPatch (par exempleBPatch, PatchMesh, Revolve, Sweep, Extrude, Skin, Cap, Gordon, Birail1, Birail2, Text),

• Quadrics seront automatiquement convertis en surfaces NURBS,1

• PolyMesh et les objets qui peuvent être convertis en objets PolyMesh (par exemple MetaObj), lesfaces avec des trous ne sont pas prises en charge par le format Wavefront OBJ et seront tesselées entriangles pour être exportées automatiquement,

• Box (comme six faces polygonales),

• Instance, Clone, Miroir ; ceux-ci seront résolus en objets normaux pour l’exportation car WavefrontOBJ ne prend pas en charge la géométrie référencée.

Le format Wavefront OBJ ne prenant pas en charge d’attributs de transformation distincts, tous les attributsde transformation seront utilisés pour transformer les valeurs des coordonnées (les points de contrôle) desobjets exportés.

La hiérarchie de la scène Ayam sera réduite à un seul niveau, les transformations seront correctementdéléguées aux enfants-objets.

Les opérations de la CSG sont totalement ignorées, tous les objets seront écrits comme s’ils étaient combinéspar l’opérateur union.

L’exportation de Wavefront OBJ, actuellement, ignore toute information sur les matériaux. Seules les infor-mations géométriques sont écrites dans le fichier OBJ. Cependant, les coordonnées de texture des étiquettesde variables primitives seront exportées.2

Les balises UMM/VMM sont utilisées pour découper les vecteurs de noeuds des objets NURBS exportés.3

Voir aussi la section 4.11.17 Balises UMM/VMM (U/V Min Max) (page 268).

Les sources de lumière, ainsi que les appareils photo et les vues ne seront pas exportés.

Les noms d’objets seront exportés sous forme d’énoncés o.

7.9.2 Options d’exportation Wavefront OBJ

Les paramètres suivants contrôlent l’exportation de Wavefront OBJ :

• "FileName" : est le nom de fichier du fichier Wavefront OBJ ;

• "WriteSelected" : exporte uniquement le ou les objets actuellement sélectionnés ;

• "TessPoMesh" : pave automatiquement tous les objets PolyMesh en triangles pour l’exportation ;

1 Depuis 1.8.3. 2 Depuis 1.8.3. 3 Depuis 1.9.

Page 472: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

7. Importations et Exportations 472

• "WriteCurves" : bascule l’écriture des courbes NURBS et la courbe NURBS fournissant desobjets au fichier Wavefront OBJ exporté (Cette option n’influence pas l’exportation des courbes trim;)

• "ScaleFactor" : permet d’appliquer un facteur d’échelle à tous les objets exportés ;

• "RationalStyle" : détermine comment écrire des coordonnées rationnelles (Voir aussi la section1.2.4 Coordonnées rationnelles (page 18)) ;

• "Progress" : affiche la progression de l’exportation ; de 0 à 100 %, le plugin objio écrit les objetsAyam dans le fichier Wavefront OBJ.

7.10 Importation 3DMF (Apple)

En utilisant le plugin "mfio", les scènes peuvent être importées du format 3DMF (QuickDraw 3D Metafile)d’Apple à l’aide d’un analyseur 3DMF gratuit créé par Duet Development Corp. et distribué par Apple.Commencez à importer un fichier 3DMF en utilisant l’entrée de menu " File/Import/Apple 3DMF

" (si cette entrée de menu n’est pas disponible, le plugin mfio doit d’abord être chargé en utilisant l’entréede menu " File/Load Plugin ").

Le plugin mfio ne prend en charge que la version 1.0 de 3DMF !

7.10.1 Prise en charge des attributs et primitives 3DMF

Le plugin mfio prend en charge l’importation des primitives géométriques suivantes :

• Polyline, Triangle, TriGrid, PolyGon, Polygon général, Box,

• Courbe NURBS, surface NURBS (avec courbes trim),

• Ellipsoid, Cylinder, Cone, Disk, et Torus.

Le tableau suivant dresse la liste complète des primitives 3DMF prises en charge et de leurs équivalentsAyam qui seront créés à l’importation.

Les transformations suivantes sont prises en charge dans l’importation 3DMF :

• Scale,

• Translate,

• Rotate, RotateQuaternion, RotateAxis (si l’axe est X, Y, ou Z).

De plus, le plugin d’importation lit la structure de la scène à partir des objets Container. Les objets deréférence seront résolus en objets normaux lors de l’importation. Les instances peuvent être facilementrecréées en utilisant l’installation automatique (voir la section 8.8 Instanciations automatiques (page 503)).

La prise en charge de l’importation des éclairages, des attributs des caméras ainsi que des attributs desmatériaux autres que la couleur et l’opacité des matériaux n’est pas disponible actuellement.

7.10.2 Options d’importation 3DMF

Les paramètres suivants, en outre, contrôlent l’importation de 3DMF :

• "FileName" : est le nom du fichier 3DMF à importer ;

Page 473: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

7. Importations et Exportations 473

3DMF Primitive Ayam ObjectPolyline NCurveTriangle PolyMeshTriGrid PolyMeshPolygon PolyMesh

Box BoxEllipsoid SphereCylinder Cylinder

Cone ConeDisk DiskTorus Torus

NURBCurve NCurveNURBCurve2D NCurve

NURBPatch NPatchContainer Level

Table 110: Table de conversion d’importation 3DMF (Apple)

• "ScaleFactor" : L’option "ScaleFactor" permet d’appliquer un facteur d’échelle à tous lesobjets importés.

• "ReadCurves" : Si l’option d’importation "ReadCurves" : est désactivée, aucune courbe nesera importée. Cette option n’influence pas l’importation des courbes de trim.

• "ReadSTrim" : si l’option est désactivée, aucun trim simple (trim qui ne s’exécute que le long dela bordure d’un patch NURBS et qui ne coupe pas réellement la surface) ne sera importé s’il s’agitdes seules courbes de trim.

• "RescaleKnots" : permet de redimensionner les vecteurs de noeuds des courbes NURBS, despatchs et des courbes de trim afin que les distances entre les différents noeuds ne soient pas inférieuresà la valeur donnée. Une valeur "RescaleKnots" de 1,0e-04 conduit à des NURBS qui peuventêtre tracées en toute sécurité en utilisant le GLU. La valeur par défaut 0.0 signifie qu’il n’y a pas demise à l’échelle.

7.11 Exportation 3DMF (Apple)

En utilisant le plugin "mfio", les scènes peuvent être exportées au format 3DMF (QuickDraw 3D Metafile)d’Apple à l’aide d’un analyseur 3DMF gratuit créé par Duet Development Corp. et distribué par Apple.Lancez l’exportation vers un fichier 3DMF en utilisant l’entrée de menu " File/Export/Apple 3DMF

" (si cette entrée de menu n’est pas disponible, le plugin mfio doit d’abord être chargé en utilisant l’entréede menu " File/Load Plugin ").

Le plugin mfio ne prend en charge que la version 1.0 de 3DMF !

7.11.1 Prise en charge des objets et propriétés Ayam

L’exportation mfio prend en charge les objets géométriques suivants :

Page 474: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

7. Importations et Exportations 474

• Courbe NURBS et surface NURBS (avec courbes de trim) y compris tous les objets fournissant unecourbe/surface NURBS, tels que ICurve, Skin etc,

• Sphère, Disque, Cône, Cylindre, Tore,

• Box, et PolyMesh.

Les objets de types non répertoriés ici seront convertis en NURBS (si possible) ou en objets PolyMeshautomatiquement pour l’exportation.

Toutes les transformations sont prises en charge et s’écrivent respectivement comme transformations detranslation, de rotation et d’échelle.

Tous les objets de l’Instance seront résolus pour l’exportation. Les objets de niveau (quel que soit leur type)seront écrits comme des objets "Container".

Si un objet a un matériau, la couleur et l’opacité du matériau seront écrites en DiffuseColor et Transparen-cyColor, si la composante rouge respective de la couleur a une valeur différente de -1.

La prise en charge de l’exportation des lumières, des attributs des caméras ainsi que des attributs des matéri-aux autres que la couleur et l’opacité des matériaux n’est pas disponible actuellement.

7.11.2 Prise en charge des courbes de Trim

La spécification du format de fichier 3DMF pour la version 1.0 est malheureusement très laconique en cequi concerne les courbes de trim. Il n’y a pas de moyen clairement défini de les spécifier en liaison avec leursurface NURBS respective. En outre, la méthode présentée ici est la seule qui fonctionne avec l’analyseur3DMF fourni gratuitement. Les patchs NURBS découpés seront écrits par Ayam de cette manière :

Container (

NURBPatch ( ...

)

[transformations & attributes of NURBS patch]

TrimCurves ( )

NURBCurve2D ( ...

)

Container (

NURBCurve2D ( ...

)

NURBCurve2D ( ...

)

)

)

1. Il y aura toujours un Container pour un patch NURBS.

2. Si le patch est découpé, après le NURBPatch ou les transformations et attributs potentiellementprésents du patch, un élément TrimCurves suivra (qui ne contient pas les courbes de trim mais estvide). Les courbes de trim suivent maintenant les courbes NURBS 2D (objets NURBCurve2D pourles trim simples) ou objets Container (pour les boucles de trim) avec plusieurs courbes NURBS2D jusqu’à la fin du container qui les entoure.

Page 475: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

7. Importations et Exportations 475

3. Les attributs de transformation des courbes trim seront appliqués aux points de contrôle des courbesNURBS pour l’exportation (il n’y aura pas de transformations ou d’attributs pour les éléments descourbes trim).

L’importation de Ayam 3DMF s’attend à ce que les courbes trim soient délivrées de cette manière et peutalors effectivement les relire avec précision.

7.11.3 Options d’exportation 3DMF

Les paramètres suivants, en outre, contrôlent l’exportation du 3DMF :

• "FileName" : est le nom du fichier 3DMF à exporter ;

• "WriteBinary" : Cette option contrôle si la version texte ou la version binaire du format de fichier3DMF doit être utilisée pour l’exportation.

• "ScaleFactor" : Cette option permet d’appliquer un facteur d’échelle à tous les objets exportés.

• "WriteSelected" : n’exporte que les objets sélectionnés.

• "WriteCurves" : Si cette option est désactivée, aucune courbe ne sera écrite dans le fichier 3DMFexporté. Cette option n’influence pas l’exportation des courbes de trim.

7.12 Importation 3DM (Rhino)

Depuis la version 1.8.2, Ayam contient un plugin nommé "onio" qui peut importer des scènes du formatde fichier Rhino 3DM en utilisant la boîte à outils OpenNURBS (d’où le nom du plugin onio – OpenNURBSIO) de Robert McNeel & Associates.

Lancez l’importation à partir d’un fichier Rhino 3DM en utilisant l’entrée de menu "

File/Import/Rhino 3DM " (si cette entrée de menu n’est pas disponible, le plugin onio doitd’abord être chargé en utilisant l’entrée de menu " File/Load Plugin ").

Le plugin onio ne prend en charge que l’importation des fichiers 3DM de la version 3.0 et antérieures.

7.12.1 Prise en charge des objets 3DM

La fonctionnalité d’importation du plugin onio couvre actuellement l’importation de tous les objets NURBSet BRep et des objets qui peuvent être convertis en NURBS avec des routines de la boîte à outils Open-NURBS (ces objets sont : PolylineCurve, PolyCurve, LineCurve, ArcCurve, CurveOnSurface, RevSurface,SumSurface et PlaneSurface). Les références seront résolues. Les noms seront importés, mais convertis enune représentation ASCII. Comme la version 1.8.3 de Ayam importera également des objets Mesh dans lesobjets PolyMesh, les coordonnées de texture seront lues et des balises PV appropriées seront créées poureux.

Le tableau suivant dresse la liste complète des primitives Rhino 3DM prises en charge et de leurs équivalentsAyam qui seront créés à l’importation.

Page 476: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

7. Importations et Exportations 476

Rhino 3DM Primitive Ayam ObjectPolyLineCurve NCurve

PolyCurve NCurveLineCurve NCurveArcCurve NCurve

CurveOnSurface NCurveMesh PolyMesh

NurbsCurve NCurveNurbsSurface NPatchRevSurface NPatchSumSurface NPatchPlaneSurface NPatch

Table 111: Table de conversions lors de l’importation 3DM (Rhino)

7.12.2 Options de l’importation 3DM

Le processus d’importation 3DM est contrôlé par les options suivantes :

• "ScaleFactor" : Cette option permet d’appliquer un facteur d’échelle à tous les objets importés.

• "Accuracy" : Cette option contrôle la tolérance des opérations internes d’OpenNURBS, dans cecas la valeur est surtout utilisée pour les opérations de conversion vers la forme NURBS.

• "ReadCurves" : Si cette option est désactivée, aucune courbe ne sera importée. Cette optionn’influence pas l’importation des courbes trim.

• "ReadLayers" : Cette option d’importation permet de sélectionner une seule couche ou une sériede couches pour l’importation. Par défaut, tous les objets de toutes les couches seront importés.

• "ReadSTrim" : Cette option permet de ne pas tenir compte des boucles de trim uniques des sur-faces NURBS. L’importation de cette seule boucle de trim limitante rendrait la scène de Ayam pluscomplexe que nécessaire dans de nombreux cas. Si "ReadSTrim" est désactivé, aucun trim simple(trim qui ne s’étend que le long de la bordure d’un patch NURBS et qui ne coupe pas réellement lasurface) ne sera importé s’il s’agit des seules courbes de trim.Cette option remplace l’option d’importation "IgnoreFirstTrim" disponible avant Ayam 1.13avec une sémantique légèrement différente.

• "RescaleKnots" : permet de redimensionner les vecteurs de noeuds des courbes NURBS, despatchs et des courbes de trim afin que les distances entre les différents noeuds ne soient pas inférieuresà la valeur donnée. Une valeur "RescaleKnots" de 1.0e-04 conduit à des NURBS qui peuventêtre tracées en toute sécurité en utilisant le GLU. La valeur par défaut 0.0 signifie qu’il n’y a pasde mise à l’échelle. Comme Ayam 1.13 présente aussi éventuellement des courbes trim, elles serontcorrectement mises à l’échelle pour les nouvelles gammes de noeuds des patchs NURBS.

• "Progress" : affiche la progression de l’importation ; de 0 à 50 pour cent, OpenNURBS lit lefichier 3DM en mémoire ; de 50 à 100 pour cent, le plugin onio convertit les objets 3DM en objetsAyam.

Page 477: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

7. Importations et Exportations 477

7.13 Exportation 3DM (Rhino)

Depuis la version 1.8.2, Ayam contient un plugin nommé "onio" qui exporte des scènes au format defichier Rhino 3DM en utilisant la boîte à outils OpenNURBS (d’où le nom du plugin onio – OpenNURBSIO) de Robert McNeel & Associates.

Commencez à exporter vers un fichier Rhino 3DM en utilisant l’entrée de menu " File/Export/Rhino

3DM " (si cette entrée de menu n’est pas disponible, le plugin onio doit d’abord être chargé en utilisantl’entrée de menu " File/Load Plugin ").

Le plugin onio exporte les fichiers 3DM de la version 3.0.

7.13.1 Prise en charge des objets et propriétés Ayam

La fonctionnalité d’exportation du plugin onio couvre actuellement l’exportation de toutes les boîtes,quadrics, NURBS, polymeshes, instances, clones, objets de script (de type "Create" ou "Modify")et objets qui peuvent être convertis en courbes ou surfaces NURBS.

Bien que l’exportation de surfaces bouchons planaires de divers objets d’outillage soit entièrement priseen charge, l’exportation de patchs NURBS généraux taillés n’est pas bien prise en charge. Cela est dû àl’absence d’une fonctionnalité (qui permet de passer de courbes de trim 2D à des courbes 3D pour des sur-faces NURBS quelconques) dans la boîte à outils OpenNURBS. Une représentation 3D polygonale grossièredes courbes trim 2D sera créée automatiquement, de sorte que les patchs NURBS généraux découpés puis-sent être exportés, mais avec une qualité moindre et une taille de fichier plus importante si nécessaire.1

Les balises UMM/VMM sont utilisées pour découper les vecteurs de noeuds des objets NURBS exportés.2

Voir aussi la section 4.11.17 Balises UMM/VMM (U/V Min Max) (page 268).

Comme le format de fichier 3DM de Rhino ne prend pas en charge la hiérarchie et les attributs de trans-formation par objet, la hiérarchie de la scène de Ayam sera écrasée et tous les attributs de transformationseront appliqués aux points de contrôle des objets pour l’exportation. Les opérations CSG sont totalementignorées, tous les objets seront écrits comme s’ils étaient combinés par l’opérateur union. En outre, tous lesobjets d’instance seront résolus en objets normaux.

Tous les objets seront écrits sur la première couche, la couche par défaut (sauf si l’option"TopLevelLayers" est utilisée). Les noms des objets seront également exportés. Les noms des ob-jets de niveau seront précédés des noms de leurs objets enfants. La hiérarchie des objets :

+-Arm(Level)

| MySphere(Sphere)

\ MyCylinder(Cylinder)

par exemple, mène à deux objets dans le fichier Rhino nommés "Arm/MySphere" et"Arm/MyCylinder".

7.13.2 Options d’exportation 3DM

Le processus d’exportation 3DM est contrôlé par les options suivantes :1 Depuis 1.9. 2 Depuis 1.9.

Page 478: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

7. Importations et Exportations 478

• "ScaleFactor" : L’option "ScaleFactor" permet d’appliquer un facteur d’échelle à tous lesobjets exportés.

• "Accuracy" : L’option "Accuracy" contrôle la tolérance des opérations internes d’OpenNURBS(actuellement, il s’agit d’augmenter les courbes de trim 2D en courbes 3D et de vérifier la planéitédes surfaces NURBS).

• "WriteSelected" : n’exporte que les objets sélectionnés.

• "ObeyNoExport" : ignore tous les objets ayant des balises "NoExport".

• "IgnoreHidden" : ignore tous les objets cachés.

• "WriteCurves" : Si cette option est désactivée, aucune courbe ne sera écrite dans le fichier Rhino3DM exporté. Cette option n’influence pas l’exportation des courbes de trim.

• "QuadAsBRep" : Si cette option est activée, les sphères, cylindres, cônes et tores ne seront pasexportés comme une collection de surfaces NURBS (telles que converties par Ayam) mais comme desobjets BRep (tels que convertis par la boîte à outils OpenNURBS). Cependant, toutes les caractéris-tiques des objets quadriques ne seront pas traduites dans ce cas :

– La sphère BRep ne prend pas en charge ZMin, ZMax, et ThetaMax.

– Le cylindre BRep ne prend pas en charge le ThetaMax (des embases seront créées si le cylindreest fermé).

– Le cône BRep ne supporte pas le ThetaMax (une capsule de base sera créée si le cône est fermé).

– Le tore BRep ne prend pas en charge PhiMin, PhiMax, et ThetaMax.

L’option "QuadAsBRep" n’a aucun effet sur l’exportation des disques, des hyperboloïdes et desparaboloïdes. Ceux-ci seront toujours exportés en tant que surfaces NURBS.

• "TopLevelLayers" : contrôle si les objets de niveau supérieur de la scène Ayam à exporterdoivent être interprétés comme des couches. Si cette option est activée, tous les objets de ces niveauxseront placés sur la couche respective. Les objets qui ne sont pas dans l’un de ces niveaux seront écritssur la couche par défaut. De plus, les noms des objets du niveau supérieur deviendront des noms decouches.

• "Progress" : affiche la progression de l’exportation ; de 0 à 50 pour cent, le plugin onio convertitles objets Ayam en objets 3DM ; de 50 à 100 pour cent, OpenNURBS écrit le fichier 3DM.

7.14 Importation X3D (Web3D)

Depuis la version 1.13, Ayam fournit un plugin nommé "x3dio" qui peut importer des scènes à partir duformat de fichier X3D basé sur XML et publié par le Consortium Web3D. L’analyseur XML utilisé dans ceplugin est basé sur Expat et SCEW.

Les versions binaires et compressées de X3D, ainsi que les fichiers VRML sont non pris en charge. Seulsles fichiers XML purs sont lus par le plugin x3dio.

Commencez l’importation à partir d’un fichier Web3D X3D en utilisant l’entrée de menu "

File/Import/Web3D X3D " (si cette entrée de menu n’est pas disponible, le plugin x3dio doit d’abordêtre chargé en utilisant l’entrée de menu " File/Load Plugin ").

Page 479: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

7. Importations et Exportations 479

7.14.1 Prise en charge des éléments X3D

La fonctionnalité d’importation du plugin x3dio couvre actuellement l’importation des éléments X3D suiv-ants (regroupés par composants) :

• Geometry3D: Box, Sphere, Cylinder, Cone, ElevationGrid, Extrusion, IndexedFaceSet, IndexedTri-angleSet, IndexedTriangleStripSet, IndexedTriangleFanSet, TriangleSet, TriangleStripSet, Triangle-FanSet, IndexedLineSet, and LineSet.

Les cylindres avec un seul bouchon sont importés sous forme de deux objets (un cylindre et un disque).Dans tous les autres cas et également pour les Cônes, l’attribut "Closed" de l’objet Ayam est définien fonction des informations de bouchon de l’élément X3D.

Les ElevationGrids sont importés sous forme de maillages bilinéaires.

• Geometry2D: Arc2D, ArcClosed2D, Circle2D, Disk2D, Polyline2D.

Les arcs et les cercles sont importés en tant qu’objets NCircle. Les arcs fermés et les Polylignes sontimportés en tant que courbes NURBS. Les disques avec un rayon intérieur > 0,0 sont importés en tantqu’Hyperboloïdes plats (sinon en tant que Disques).

• NURBS: NurbsCurve, NurbsCurve2D, NurbsPatchsurface, NurbsTrimmedSurface, Contour2D, Con-tourPolyline2D, NurbsSweptSurface, NurbsSwungSurface, NurbsSet.

Tous les éléments des NURBS sont pleinement pris en charge.

• CAD: QuadSet, IndexedQuadSet, CADLayer, CADAssembly, CADPart, CADFace.

Les objets CADLayer seront importés en tant qu’objets "Level" de niveau supérieur. Les objetsCADAssembly et CADPart seront importés en tant qu’objets "Level".

• Light sources: DirectionalLight, PointLight, SpotLight.

Les éclairages seront directement mis en correspondance avec les sources lumineuses standard Ren-derMan : distant, point et spot, respectivement. Par conséquent, les attributs " radius " et "attenuation " des points et des spots ne sont pas pris en charge. Cependant, les points et lesspots ont toujours un décalage quadratique avec la distance.

• Navigation: Viewpoint.

Les éléments de point de vue seront importés en tant qu’objets de vue (avec la fenêtre de vue corre-spondante) ou objets caméra selon l’option d’importation "ReadViewpoints".

• Non géométrique / Structure de la scène : Transformation, Shape, Group, StaticGroup, Inline.

Les transformations de cisaillement ne sont pas prises en charge.

La sémantique de la mise en ligne n’est actuellement pas entièrement conforme aux normes. Pardéfaut, les DEF dans les fichiers en ligne vivent dans leur propre espace de noms. Il n’est pas possibled’utiliser un DEF à partir d’un fichier en ligne dans le fichier en ligne. Cependant, si vous souhaitezimporter "MergeInlineDefs" est activé, tous les espaces de noms DEF (des fichiers en ligne etmis en ligne) seront fusionnés dans un grand espace de noms . Il serait maintenant possible d’utiliserun DEF à partir d’un fichier en ligne dans le fichier mis en ligne. Mais attention, cela ne fonctionnecorrectement que si les noms de DEF dans tous les fichiers sont uniques. Il n’est pas possible detransférer des définitions uniques d’un fichier en ligne vers le fichier mis en ligne ou du fichier mis enligne vers le fichier en ligne.

A noter également : les URL en ligne qui ne pointent pas vers le système de fichiers ne sont pas prisen charge.

Page 480: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

7. Importations et Exportations 480

Les éléments X3D non pris en charge seront ignorés sans notification. Le prototypage et les scènes dy-namiques ainsi que les scripts ne sont pas pris en charge.

Le tableau suivant dresse la liste complète des primitives Web3D X3D prises en charge et de leurs équiva-lents Ayam qui seront créés à l’importation.

X3D Primitive Ayam Object X3D Primitive Ayam ObjectGeometry3D: CAD:

Box Box QuadSet PolyMeshSphere Sphere IndexedQuadSet PolyMesh

Cylinder Cylinder CADLayer LevelCone Cone CADAssembly Level

ElevationGrid PaMesh CADPart LevelExtrusion PolyMesh CADFace Level

IndexedFaceSet PolyMesh Light:IndexedTriangleSet PolyMesh DirectionalLight Light

IndexedTriangleStripSet PolyMesh SpotLight LightIndexedTriangleFanSet PolyMesh PointLight Light

TriangleSet PolyMeshTriangleStripSet PolyMeshTriangleFanSet PolyMeshIndexedLineSet NCurve

LineSet NCurveGeometry2D:

Arc2D NCircleArcClosed2D NCurve

Circle2D NCirclePolyline2D NCurve

Disk2D Disk / HyperboloidNURBS:

NurbsCurve NCurveNurbsCurve2D NCurve

NurbsPatchSurface NPatchNurbsTrimmedSurface NPatch

NurbsSweptSurface SweepNurbsSwungSurface Swing

Table 112: Table de conversion lors de l’importation X3D (Web3D)

7.14.2 Prise en charge des attibuts X3D

Les attributs "solid", "ccw", et "convex" sont systématiquement ignorés.

Les attributs "DEF" et "USE" sont pris en charge pour tous les éléments, cependant, les relations d’instancemaîtresse correspondantes sont entièrement résolues à l’importation. Les instances d’objets peuvent être

Page 481: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

7. Importations et Exportations 481

facilement recréées en utilisant l’installation automatique (veuillez vous référer à la section 8.8 Instancia-tions automatiques (page 503)).

Actuellement, les normales ne seront pas générées automatiquement pour les éléments X3D et l’attribut"creaseAngle" sera donc totalement ignoré. Notez cependant que si les normales sont spécifiées ex-plicitement, par exemple pour un élément "IndexedFaceSet", elles seront importées correctement.

De plus, si des normales, des couleurs ou des coordonnées de texture sont fournies à un élément qui importesous forme de PolyMesh (IndexedFaceSet et autres), des balises PV (variable primitive) appropriées serontcréées.1

De plus, si un index est fourni pour les normales, les couleurs ou les coordonnées de texture, les don-nées concernées (par exemple les coordonnées du sommet) seront développées correctement (car Ren-derMan ne prend pas en charge plusieurs indices différents sur les données relatives au sommet). Notezqu’actuellement, la simple présence d’un index entraînera cette expansion. L’éventuel indice de coordonnéesnormales, de couleur ou de texture n’est pas vérifié, pour savoir s’il est identique à l’indice de coordonnéesdu sommet (et donc aucune expansion ne serait nécessaire au départ).

Les attributs "DEF" seront convertis en noms d’objets dans certains cas.

7.14.3 Options d’importation X3D

Les options suivantes permettent de contrôler davantage le processus d’importation X3D :

• "FileName" : est le nom du fichier X3D à importer

• "ReadCurves" : si cette option est désactivée, aucune courbe de forme libre ne sera importée.Cette option n’influence pas l’importation des courbes trim.

• "ReadViewpoints" : contrôle si les points de vue doivent être lus comme vue, caméra ou pas dutout.

• "ReadSTrim" : si cette option est désactivée, aucun trim simple (trim qui ne s’exécute que le longde la bordure d’un patch NURBS et qui ne coupe pas réellement la surface) ne sera importé s’il s’agitdes seules courbes de trim.

• "RescaleKnots" : permet de redimensionner les vecteurs de noeuds des courbes NURBS, despatchs et des courbes de trim afin que les distances entre les différents noeuds ne soient pas inférieuresà la valeur donnée. Une valeur "RescaleKnots" de 1,0e-04 conduit à des NURBS qui peuventêtre tracées en toute sécurité en utilisant le GLU. La valeur par défaut 0.0 signifie qu’il n’y a pas demise à l’échelle.

• "ScaleFactor" : permet d’appliquer un facteur d’échelle à tous les objets importés.

• "RationalStyle" : détermine comment les coordonnées rationnelles sont stockées dans le fichierà importer (Voir aussi la section 1.2.4 Coordonnées rationnelles (page 18)) ;

• "Progress" : affiche la progression de l’importation ; de 0 à 50 %, le plugin x3dio lit le fichierXML, de 50 à 100 %, le plugin x3dio crée des objets Ayam.

1 Depuis 1.17.

Page 482: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

7. Importations et Exportations 482

7.15 Exportation X3D (Web3D)

Depuis la version 1.13, Ayam fournit un plugin nommé "x3dio" qui exporte des scènes au format defichier X3D basé sur XML et publié par le Consortium Web3D. L’analyseur XML utilisé dans ce plugin estbasé sur Expat et SCEW.

Lancez l’exportation vers un fichier X3D en utilisant l’entrée de menu " Fichier/export/Web3D

(X3D) " (si cette entrée de menu n’est pas disponible, le plugin x3dio doit d’abord être chargé en utilisantl’entrée de menu "File/Load Plugin").

7.15.1 Prise en charge des objets et propriétés Ayam

La fonctionnalité d’exportation du plugin x3dio couvre actuellement l’exportation de toutes les boîtes,quadrics, NURBS, PolyMeshes, instances, clones, objets de script (de type "Create" ou "Modify")et objets qui peuvent être convertis en courbes ou surfaces NURBS ou en PolyMeshes (par exemple lesobjets SDMesh).

Certains objets de l’outil NURBS peuvent être exportés sous forme de noeuds NURBS paramétriques, parexemple les objets Sweep peuvent être exportés sous forme de noeuds NurbsSweptSurface.

La hiérarchie des scènes (objets Level) sera convertie en une hiérarchie de noeuds de transformation corre-spondante.

Les opérations de la CSG sont totalement ignorées, tous les objets seront écrits comme s’ils étaient combinéspar l’opérateur union.

La prise en charge des plages de noeuds des NURBS par des balises UMM/VMM n’est pas possible.

Les surfaces NURBS prennent en charge les balises XML pour définir les attributs "uTessellation"et/ou "vTessellation".

Les objets PolyMesh seront exportés vers les noeuds IndexedFaceSet. Les faces PolyMesh avec des troussont automatiquement tesselées. Les faces PolyMesh avec plus de trois points sont tesselées si l’optiond’exportation "TessPoMesh" est utilisée. Toutes les faces tesselées seront exportées vers un deuxièmeélément IndexedFaceSet.

Les sources lumineuses sont exportées si elles sont ponctuelles, distantes ou spot.

Les caméras et les vues sont exportées sous forme de noeuds de point de vue. Notez cependant que X3Dsuppose toujours une transformation de la vue en perspective. Cela signifie que les vues de type "Front","Side", ou "Top" ne seront pas exportées correctement.

Les objets "materials" sont pris en charge de manière très minimaliste, c’est-à-dire que seule la couleur dumatériau sera exportée en tant qu’attribut "diffuseColor". Cependant, les balises XML peuvent êtreutilisées pour ajouter des attributs supplémentaires ou même des nuances aux matériaux exportés, Voir aussila section 4.11.22 XML Tag (page 269).

Les noms d’objets seront convertis en attributs DEF.

Les instances peuvent être résolues ou exportées sous forme de paires USE/DEF.

Page 483: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

7. Importations et Exportations 483

7.15.2 Prise en charge d’image filaires (Wire-frame)

L’exportation X3D permet d’exporter des images filaires au lieu de surfaces pour les objets NPatch etPoMesh.

Pour passer un objet à l’exportation filaire, il suffit d’ajouter une balise "AsWire" à l’objet.

7.15.3 Options d’exportation X3D

Les paramètres suivants, en outre, contrôlent l’exportation X3D (Web3D) :

• "FileName" : est le nom de fichier du fichier X3D ;

• "ScaleFactor" : permet d’appliquer un facteur d’échelle à tous les objets exportés (ceci seraréalisé par un noeud Transform supplémentaire dans la hiérarchie de la scène) ;

• "WriteSelected" : si cette fonction est activée, seuls les objets actuellement sélectionnés serontexportés ;

• "ObeyNoExport" : bascule l’exportation des objets avec les balises "NoExport" ;

• "IgnoreHidden" : active l’exportation des objets cachés ;

• "WriteCurves" : bascule l’écriture des courbes NURBS et des courbes NURBS fournissant desobjets au fichier exporté (Cette option n’influence pas l’exportation des courbes trim) ;

• "WriteViews" : contrôle si les vues doivent être exportées en tant que points de vue ;

• "WriteParametrics" : permet d’écrire les objets outils suivants en tant que surface NURBSsimple ou les primitives de niveau supérieur suivantes :

– Revolve en tant que NurbsSwungSurface,

– Swing en tant que NurbsSwungSurface,

– Sweep en tant que NurbsSweptSurface,

– Extrude en tant que NurbsSweptSurface;

• "WriteMaterials" : contrôle si les noeuds d’apparence et de matériau doivent être exportés pourchaque forme ;

• "ResolveInstances" : contrôle si les objets d’instance doivent être résolus en objets normaux ouexportés en tant que paires DEF/USE. Notez qu’aucune tentative n’est faite pour détecter si les objetsmaîtres (les DEF) seront exportés pour toutes les instances exportées (USE) ; cela peut se produireen particulier avec les options d’exportation X3D "WriteSelected" ou "IgnoreHidden", desfichiers X3D incomplets/erronés peuvent en résulter à moins que l’option "ResolveInstances"ne soit activée ;

• "TopLevelLayers" : permet d’exporter tous les objets de haut niveau de la scène Ayam sousforme de CADLayer-nodes, au lieu de Transform-nodes ;

• "RationalStyle" : détermine comment écrire les coordonnées rationnelles (Voir aussi la section1.2.4 Coordonnées rationnelles (page 18)) ;

• "WriteX3dom" : bascule le mode d’exportation X3DOM. Si cette option est activée, l’exportationX3D :

1. d’abord lire un fichier de modèle XHTML dans le répertoire cible d’exportation (nommé"x3dom-template.xhtml"),

Page 484: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

7. Importations et Exportations 484

2. puis injecter la scène à exporter dans la balise X3D "<Scene>" du modèle (les élémentsenfants déjà présents de cette balise seront conservés),

3. ajouter la largeur et la hauteur de la fenêtre de visualisation qui a été exportée en dernier commeattributs à la balise "<X3D>",

4. et enfin d’écrire le document XHTML dans le fichier spécifié via l’option d’exportation"FileName".

• "Progress": affiche la progression de l’exportation ; de 0 à 50 %, le plugin x3dio crée un documentXML en mémoire et de 50 à 100 %, ce document XML sera écrit dans le fichier X3D.

Page 485: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

8. Divers 485

8 Divers

Cette section contient toutes les informations sur Ayam qui ne s’intègrent pas dans les autres sections prin-cipales.

8.1 Le système d’annulation (undo)

À l’aide du système d’annulation, les erreurs commises lors de la modélisation peuvent être corrigées.Notez que seules les modifications d’objets peuvent être annulées. Cela inclut les modifications effectuéespar des actions de modélisation interactives, les modifications effectuées à l’aide d’interfaces graphiques depropriétés, mais aussi les modifications de vues (modifications de type ou de paramètres de la caméra asso-ciée à une vue, sauf si elles sont explicitement désactivées à l’aide de l’attribut de vue "EnableUndo").Il n’est pas possible actuellement d’annuler toute modification de la hiérarchie des objets, y compris lepresse-papiers (par exemple, couper, coller) et les opérations de glisser-déposer. Si un objet est supprimé, ildisparaît ! Si un objet est, accidentellement, déplacé par glisser-déposer, l’annulation n’aidera pas.

Le système d’annulation fonctionne en stockant des copies des différents états des objets modifiés dans untampon d’annulation. Il est possible de reculer dans les états sauvegardés en utilisant <Ctrl+z> (annuler)mais aussi d’avancer en utilisant <Ctrl+y> (refaire).

L’espace de stockage occupé par le tampon d’annulation peut être ajusté en utilisant l’option de préférences"Modeling/UndoLevels". Une valeur de 0 désactive complètement le système d’annulation.1 Lavaleur 1 signifie qu’il y a toujours un état de la scène qui peut être restauré, et qu’une opération d’annulationpotentielle peut aussi toujours être annulée en utilisant la fonction "redo".

Les modifications qui seraient annulées ou refaites sont affichées sous forme abrégée dans l’invite par défautde la console de Ayam et également dans les entrées du menu principal "Edit/Undo" et "Edit/Redo".2

Plusieurs actions permettent de vider complètement le tampon d’annulation (c’est-à-dire qu’aucune annu-lation n’est possible après l’une de ces actions) : Nouvelle scène, Ouvrir (remplacer) la scène et Fermer lavue.

En outre, les opérations d’annulation/rétablissement modifieront également les objets qui résident dans lepresse-papiers des objets (s’ils ont enregistré des états dans le tampon d’annulation). Cela signifie que laséquence d’opérations suivante conduit à une sphère placée à "0,0,0" :

create Sphere (at 0,0,0)

move Sphere (to 1,1,0)

cut Sphere (vers le presse-papier)

undo

paste Sphere (du presse-papier)

8.2 Le concept de modélisation outils-objets

Cette section présente le concept de modélisation Tool-Objects, tel qu’il est utilisé dans Ayam.

Dans une application de modélisation standard, pour créer une surface de révolution, on pourrait soit créerd’abord une courbe puis appeler l’outil de révolution pour obtenir une surface appropriée (en perdant la1 Depuis 1.21. 2 Depuis 1.14.

Page 486: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

8. Divers 486

courbe comme objet, ou même en la conservant, mais sans relation avec la surface), soit appeler d’abordl’outil de révolution, ce qui obligerait alors l’utilisateur à tracer une courbe avec des résultats similaires :la surface créée perdra généralement la relation avec l’outil de révolution et la courbe (même si elle estconservée intacte) perdra la relation avec la surface. Il n’y a pas de moyen facile de modifier les paramètresde création de la surface ou de changer la géométrie de la courbe plus tard sans tout recommencer.

Le concept de modélisation Tool-Objects surmonte ces inconvénients en transformant la révolution tool enune scène objet.

L’exemple de hiérarchie suivant montre deux objets dans une relation parent-enfant :

+-Tool_Object(Revolve)

| ^

| :

| <Notification>

| :

\ Parameter_Object(NCurve)

L’objet parent est appelé Tool_Object et l’objet enfant est appelé Parameter_Object. Il y a un fluxd’informations de l’objet paramètre vers l’objet outil. Ce flux d’informations est contrôlé par le mécan-isme appelé Notification. Le mécanisme de notification veille à ce que chaque fois que les objets paramètreschangent, l’objet outil soit informé afin qu’il puisse s’adapter aux changements. Pour les actions de modéli-sation interactives, la notification sera effectuée en faisant glisser la souris ou après avoir relâché le boutonde la souris (c’est-à-dire après la fin de l’action de modélisation), en fonction du paramètre de préférenceprincipal "LazyNotify".

Dans l’exemple ci-dessus, une courbe NURBS est l’objet paramètre et l’objet outil crée une surface derévolution à partir des données de la courbe. La courbe NURBS et les paramètres de l’objet Revolve peuventchanger à tout moment. Lorsqu’ils sont enregistrés dans un fichier de scène Ayam, aucune donnée de surfacene sera écrite, ce qui conduit à de très petits fichiers qui contiennent en outre un historique de modélisationet capturent l’intention de conception jusqu’à un certain point.

Les objets-outils peuvent être des objets paramètres d’autres objets-outils :

+-Tool_Object(ExtrNP)

+-Parameter_and_Tool_Object(Revolve)

\ Parameter_Object(NCurve)

et il peut y avoir plus d’un objet paramètre par objet outil :

+-Tool_Object(Skin)

| Parameter_Object_1(NCurve)

| Parameter_Object_2(NCurve)

| ...

\ Parameter_Object_n(NCurve)

Les objets outils créent de nouveaux objets géométriques à partir des informations fournies par le ou lesobjets paramètres ou modifient le ou les objets paramètres et les transmettent à leur objet parent respectif.

Le schéma de dépendance purement hiérarchique peut être décomposé par des objets d’instance :

Page 487: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

8. Divers 487

+-Tool_Object(Revolve)

\ Parameter_Object(NCurve) --------------.

+-Tool_Object(Revolve) | !

\ Parameter_Object(Instance_of_NCurve) <-’

Dans la scène ci-dessus, le deuxième objet outil Revolve dépend de la forme du premier objet paramètre.L’objet Instance transporte les données d’une partie de la hiérarchie à une autre. Le mécanisme de notifica-tion en est conscient et lance des mises à jour dans la hiérarchie de la scène chaque fois que nécessaire etde manière efficace (en ne mettant pas deux fois à jour les objets) selon le paramètre de préférence princi-pal "CompleteNotify". Dans l’exemple ci-dessus, grâce à la notification complète, le deuxième objetRevolve sera automatiquement mis à jour à chaque fois que l’objet NCurve original change.

Deux autres mécanismes existent, qui aident les objets outils à obtenir les informations dont ils ont besoinet à accroître la flexibilité dans la construction de la hiérarchie et la modélisation : Provision et Conversion.Ces deux mécanismes sont assez similaires et convertissent les objets de manière temporaire/transparente(provision) ou définitive (conversion) d’un type à un autre, par exemple ils convertissent une ICurve (courbed’interpolation) en une NCurve simple (courbe NURBS).

Grâce au mécanisme de provisionnement, un objet ICurve pourrait être utilisé à la place d’une NCurvecomme objet paramètre dans tous les exemples ci-dessus facilement. Et grâce au mécanisme de conver-sion, les objets de l’outil Revolve pourraient être convertis en objets NPatch simples (par exemple pour desopérations de modélisation non disponibles pour les objets Revolve).

Notez que les objets d’instance sont soumis à une deuxième série de dispositions, c’est-à-dire que le maîtren’a pas besoin d’être du type recherché mais plutôt de fournir le type recherché.

Même si, théoriquement, chaque outil pourrait être mis en oeuvre en tant qu’objet outil, cela n’a pas étéfait dans Ayam (principalement parce que cela augmenterait inutilement la base de code). Seuls les outilsles plus souvent utilisés qui transmettent et capturent une grande partie de l’intention de conception ont étéimplémentés en tant qu’objets-outils (ce sont les outils de création de surfaces ou de courbes). Mais lesoutils rarement utilisés peuvent être élevés à un niveau de capacités d’objets-outils presque complet grâce àl’utilisation du concept d’objets de script (voir la section 4.9.1 L’objet Script (page 225)).

Cela peut être fait facilement, par exemple en créant des objets de script de type "Modify" qui appellent cesoutils à partir de leur script (après une éventuelle conversion du ou des objets fournis en un type approprié,l’outil peut avoir besoin de fonctionner dessus). Il est même possible d’ajouter des interfaces graphiques depropriété pour permettre à l’utilisateur d’ajuster les paramètres de l’outil tels qu’il les connaît à partir desautres objets Ayam et de combiner différents outils dans des objets uniques avec du code de script normalpour une flexibilité inégalée. Mais voyons d’abord un exemple simple :

+-Skin

+-Script

\ ExtrNC

Dans la hiérarchie des scènes ci-dessus, l’objet Script pourrait simplement inverser la courbe extraite avecun code comme celui-ci :

convOb -inplace; revertC

élevant effectivement l’outil "revertC" au rang d’objet.

Page 488: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

8. Divers 488

Un exemple plus utile se trouve dans l’exemple de scène de Marsrakete (disponible sur la page d’accueilde Ayam). Ici, une courbe extraite d’un patch est coupée à la bonne longueur à l’aide d’un script commecelui-ci :

convOb -inplace; trimNC 0.0 0.5

. Voir la section 4.9.1 Exemple de ligne paramétrique (page 232) pour savoir comment ce script peut êtreétendu pour prendre en charge une interface graphique et davantage de vérifications d’erreurs.

8.3 Gestion des fichiers de scène

Cette section contient des informations exhaustives sur ce qui se passe exactement, lorsque Ayam lit ou écritun fichier de scène.

8.3.1 Ouvrir une Scène

Lors de la lecture d’une scène en utilisant " File/Open " ou la liste MRU (la plus récemment utilisée) :

1. Ayam va d’abord vérifier l’état de changement de scène de la scène actuellement chargée et avertirl’utilisateur, si la scène actuelle contient des changements non sauvegardés,

2. puis Ayam effacera le tampon d’annulation et la scène en cours (le contenu du presse-papiers n’est pastouché, sauf par exemple les objets, dont les maîtres sont effacés avec la scène : ces objets d’instanceseront supprimés du presse-papiers),

3. si le nouveau fichier ne semble pas être un fichier de scène Ayam (jugé uniquement par l’extension dunom du fichier) Ayam essaiera d’importer le fichier en utilisant un plugin d’importation responsabledu fichier (chargeant automatiquement le plugin correspondant s’il n’est pas déjà chargé),

4. Ayam va changer le répertoire de travail de l’application pour le répertoire du fichier de scène,

5. maintenant, une copie de sauvegarde du fichier à lire sera faite (selon le réglage des préférences"Main/BakOnReplace"), une ancienne copie de sauvegarde potentiellement existante seraécrasée sans notification, note : même si la sauvegarde échoue, la lecture de la scène continue,

6. l’en-tête du fichier de scène sera lu pour en déduire la version du format du fichier de scène,

7. le fichier sera lu avec tous les objets, *

8. toutes les instances seront connectées à leurs maîtres à l’aide des informations stockées dans lesbalises "OI" ; si un maître ne peut être trouvé dans la scène, le ou les objets d’instance respectifsseront supprimés,

9. tous les objets seront connectés à leurs matériaux à l’aide des informations stockées dans les balises"MI" ; si aucun matériau correspondant ne peut être trouvé, la connexion ne sera pas établie,

10. une notification complète sera effectuée,

11. si le fichier contient un objet Root avec des balises "SaveMainGeom" et/ou"SavePaneLayout", les géométries respectives des fenêtres/ widgets des balises serontrétablies,

12. si aucune erreur n’est survenue lors de la lecture, le nom de la scène en cours sera défini comme celuidu fichier, sinon le nom de la scène en cours sera réinitialisé à " unnamed " (pour éviter d’encombrerde bons fichiers de scènes qui n’ont pas pu être chargés pour une raison quelconque avec une seulepression, peut-être même involontaire, de <Ctrl+s>),

Page 489: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

8. Divers 489

13. le nom du fichier sera mis à la première entrée du menu fichier la plus récemment utilisée,

14. l’état de changement de scène sera remis à " unchanged ",

15. si un objet Root a été lu, un drapeau de sauvegarde des vues sera activé, sinon il sera effacé et lesopérations de sauvegarde suivantes ne permettront pas de sauvegarder la racine et les vues (c’est-à-dire que les fichiers de scène sans racine et les vues restent des fichiers de scène sans racine et sansvues, même si de nouvelles vues sont ouvertes et paramétrées).

* en lecture d’objets à partir d’un fichier :

1. si un objet de vue est lu, une nouvelle fenêtre de vue sera ouverte (sauf pour les trois premiers objetsde vue en mode GUI à fenêtre unique, où seule la configuration des objets de vue lus sera copiée surles objets de vue déjà existants des trois vues internes),

2. si un objet est d’un type actuellement indéfini (c’est-à-dire défini par un plugin), Ayam dérivera unnom de plugin potentiel à partir du nom du type d’objet et tentera de charger le plugin, puis la lecturede la scène se poursuivra,

3. si un objet matériau est lu, Ayam l’enregistrera immédiatement ; si cet enregistrement échoue (parcequ’il y a déjà un matériau avec ce nom enregistré ; ce matériau peut seulement être dans le presse-papiers, car tous les autres objets ont été supprimés avant l’ouverture du fichier), le nouvel objetmatériau sera renommé en ajoutant un numéro et l’enregistrement est tenté à nouveau, ces étapesseront répétées jusqu’à ce qu’elles réussissent (avant la version 1.21, Ayam n’essayait pas de renom-mer le matériau et d’autres objets étaient alors connectés au matériau déjà existant),

4. si le chargement d’un objet échoue, Ayam passe à l’objet suivant et continue à lire à partir du fichier.

8.3.2 Insérer une scène

Contrairement à la lecture des scènes via " File/Open " ou la liste MRU, la lecture des scènes via "File/Insert " fait certaines choses différemment :

1. la scène actuelle ne sera pas effacée avant la lecture du fichier,

2. le niveau actuel ne sera pas réinitialisé avant la lecture du fichier ; si le fichier de scène à insérer necontient ni racine ni vues, les nouveaux objets seront créés dans le niveau actuel, sinon les objetsseront créés dans le niveau le plus élevé de la scène, qui sera aussi le nouveau niveau actuel dans tousles cas (après la lecture),

3. aucune copie de sauvegarde ne sera faite du fichier à insérer,

4. si un matériau est manquant dans le fichier, et qu’un matériau correspondant (par son nom) existedans la scène, les objets seront reliés à ce matériau,

5. les fenêtres de vue seront ouvertes pour chaque objet de vue lu (les vues internes ne seront pas modi-fiées),

6. le répertoire actuel ne sera modifié que pendant l’opération de lecture du fichier,

7. si un objet matériau est lu, Ayam l’enregistrera immédiatement ; si cet enregistrement échoue (parcequ’il y a déjà un matériau avec ce nom enregistré), le nouvel objet matériau sera renommé en ajoutantun numéro et l’enregistrement est tenté à nouveau, ces étapes seront répétées jusqu’à ce qu’ellesréussissent ; avant la version 1.21, Ayam n’essayait pas de renommer le matériau et d’autres objetsétaient alors reliés au matériau déjà existant,

8. le nom de fichier actuel ne sera pas modifié,

Page 490: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

8. Divers 490

9. la scène a changé d’état sera réglée sur " changed ",

10. l’indicateur de sauvegarde des vues ne sera pas modifié, ce qui signifie que l’insertion d’un fichier descène sans vues dans une scène vide (par exemple directement après le démarrage de l’application ouaprès " File/New ") puis la sauvegarde de la scène, enrichiront le fichier de scène avec la racineet les vues (contrairement au chargement de cette scène via " File/Open ").

8.3.3 Sauvegarder une scène

Lors de la sauvegarde d’une scène à l’aide de "File/Save":

1. Ayam vérifiera d’abord le nom du fichier de la scène en cours, si le nom est "unnamed", un nouveaunom de fichier sera demandé,

2. si le fichier ne semble pas être un fichier de scène Ayam (jugé uniquement par l’extension du nom dufichier) Ayam essaiera d’exporter la scène actuelle en utilisant un plugin d’exportation responsable dutype de fichier au lieu de l’enregistrer dans un fichier de scène Ayam (en chargeant automatiquementle plugin correspondant s’il n’est pas déjà chargé),

3. la géométrie de la fenêtre principale et des widgets internes est enregistrée dans les balises"SaveMainGeom" et/ou "SavePaneLayout" (si présentes dans l’objet Root), Les balises

4. "OI" et "MI" seront créées pour permettre aux instances d’être connectées à leurs maîtres respectifset aux objets à leurs matériaux, lors de la relecture du fichier de scène,

5. alors, tous les objets de la scène seront enregistrés dans le fichier ; si l’indicateur d’enregistrement desvues a été effacé lors de la lecture du fichier de scène précédent, la racine et les vues seront omises(c’est-à-dire que les scènes sans racine et sans vues restent des scènes sans racine et sans vues, mêmesi de nouvelles vues ont été ouvertes et paramétrées pendant le chargement de la scène),

6. si aucune erreur ne s’est produite lors de l’écriture de la scène, le nom du fichier sera placé dansla première entrée de fichier la plus récemment utilisée dans le menu fichier (en fonction égalementdu paramètre de préférence "SaveAddsMRU"), et l’état de changement de la scène sera réglé sur "unchanged ",

7. si des erreurs se sont produites, l’état de changement de la scène actuelle sera conservé.

8.4 Le fichier Ayamrc

Pour personnaliser Ayam au-delà des capacités du dialogue des préférences, le fichier ayamrc peut êtreutilisé. Ce fichier est soit pointé par la variable d’environnement AYAMRC ou est déterminé comme suit :

• Sous Unix, c’est "˜/.ayamrc", où "˜" indique le répertoire d’origine de l’utilisateur actuel.

• Sur la plate-forme Win32 (Windows95 - XP), c’est "$(HOME)/ayamrc" si la variabled’environnement HOME existe, sinon "$(TEMP)/ayamrc".

• Sur Mac OS X Aqua (pas X11 !) c’est "˜/Library/Preferences/.ayamrc", où "˜" indiquele répertoire d’origine de l’utilisateur actuel.

• Sur Mac OS X X11 (pas Aqua !), c’est "˜/.ayamrc", où "˜" indique le répertoire personnel del’utilisateur actuel.

Le fichier ayamrc est lu à chaque démarrage de Ayam et enregistré à nouveau à la sortie (si le paramètre depréférence "Main/AutoSavePrefs" est activé).

Le fichier ayamrc contient :

Page 491: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

8. Divers 491

1. paramètres de préférence (y compris certains paramètres cachés qui ne nécessitent qu’un réglageoccasionnel et ne sont pas accessibles à l’aide de l’éditeur de préférences de l’interface graphique),

2. position et taille de la fenêtre principale et de la fenêtre de la boîte à outils,

3. position et taille des différentes fenêtres de dialogue (si le paramètre de préférence"SaveDialogGeom" est défini en conséquence),

4. Raccourci clavier pour les entrées de menu et les actions de modélisation,

5. Bases de données RiOption et RiAttribute.

Vous pouvez modifier le fichier avec n’importe quel éditeur de texte (pendant que Ayam n’est pas en coursd’exécution), mais gardez à l’esprit que le fichier sera analysé par Tcl. Si, pour une raison quelconque,vous détruisez votre fichier ayamrc de sorte que Ayam ne démarre plus correctement, vous pouvez toujourslancer Ayam avec l’option de ligne de commande "-failsafe". Lorsque vous quittez l’application lafois suivante, ou que l’entrée du menu principal "File/Save Prefs" est invoquée, un fichier ayamrccorrect sera à nouveau créé. Tous les paramètres des préférences seront réinitialisés aux valeurs par défautet toutes vos modifications du fichier ayamrc seront toutefois perdues.

Une autre façon de réinitialiser le fichier ayamrc consiste à supprimer simplement le fichier manuellementou en utilisant l’entrée du menu principal "Special/Reset Preferences".

Pour réinitialiser les éléments individuels aux valeurs par défaut, il suffit de supprimer les lignes correspon-dantes dans le fichier ayamrc.

Enfin, la réinitialisation des préférences individuelles sans éditeur de texte est également possible à l’aidede l’interface de script en manipulant le tableau global "ayprefs". L’exemple suivant conduit à uneréinitialisation du paramètre de préférence de tolérance à sa valeur par défaut pour le prochain démarragede Ayam.

»unset ayprefs(Tolerance)

Après avoir supprimé certains éléments du tableau des préférences, Ayam doit être relancé.

8.4.1 Changement des raccourcis clavier

Vous pouvez adapter les raccourcis clavier utilisés dans l’interface graphique à vos besoins particuliers enutilisant le fichier ayamrc. Notez que si vous faites cela, l’interface graphique (les entrées de menu et lafenêtre "Show Shortcuts") s’adaptera à vos changements mais certainement pas cette documentation,ni la carte de référence (à moins qu’elle ne soit recréée à l’aide du script "refcard.tcl"), ni les tutoriels.

Ayam fait ne fait pas de contrôle sur les conflits dans les raccourcis clavier. Cela signifie que la dernièreliaison définie pour une clé sera utilisée.

Sous Unix, la sortie du programme "xev" et la page de manuel de la commande "bind" de Tk four-nissent des informations utiles sur les chaînes qui peuvent être utilisées pour décrire les pressions sur lestouches. Vous pouvez également utiliser directement la console Ayam pour déduire les noms de clés, entrezsimplement:

»toplevel .keytest; bind .keytest <Key> {puts %K}

Page 492: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

8. Divers 492

dans la console Ayam. Vous pouvez maintenant activer la nouvelle fenêtre de niveau supérieur et taper survotre clavier pendant que la console Ayam imprime les noms des touches.

Pour plus de commodité, la chaîne spéciale "Ctrl" sera remplacée par "Control" avant qu’un raccourcine soit transmis à la commande bind.

Exemple :

set aymainshortcuts(Prefs) {Ctrl-p}

définit le raccourci clavier pour l’ouverture de l’éditeur de préférences à <Ctrl+p>. Voir le fichier ayamrclui-même pour une liste complète des raccourcis disponibles.

8.4.2 Paramètres de préférences cachés

Le fichier ayamrc contient actuellement les paramètres de préférences cachés ajustables suivants :

• "AALineWidth", largeur de ligne utilisée pour tracer les lignes des objets non sélectionnés (lignesbleues dans la configuration de couleur standard) lorsque l’anticrénelage est activé. La valeur pardéfaut est 1,3. Ayam ne vérifie pas si la valeur spécifiée est prise en charge par l’implémentationOpenGL utilisée.

• "AAFudge", décalage ajouté à toute fin de ligne pour tenir compte des différentes implémentationsOpenGL wrt.anti-aliasing (par défaut 1.0).

• "AASelLineWidth", largeur de ligne utilisée pour dessiner les lignes des objets sélectionnés(lignes blanches dans la configuration de couleur standard) lorsque l’anticrénelage est activé. Lavaleur par défaut est de 1,5 (un peu plus que "AALineWidth" ci-dessus, pour que la largeur deligne perçue soit égale aux lignes normales, dans le cas du dessin d’une courbe sélectionnée sur unesurface résultante non sélectionnée). Ayam ne vérifie pas si la valeur spécifiée est prise en charge parl’implémentation OpenGL utilisée.

• "AddViewParams" permet d’ajouter des paramètres personnalisés à la création de widgetsOpenGL de vue, comme par exemple "-stereo true". La valeur par défaut est "" (chaînevide).

• "ALFileTypes", "ALPlugins" deux listes qui décrivent les extensions de nom de fichier et lesplugins correspondants qui importent et exportent des fichiers du type désigné par les extensions denom de fichier. Les valeurs par défaut de ces options sont les suivantes{ ".rib" ".3dm" ".obj" ".3dmf" ".mop" ".dxf" ".x3d" }et{ "rrib" "onio" "objio" "mfio" "mopsi" "dxfio" "x3dio" }

• "AllowWarp" : contrôle si le pointeur de la souris doit être déplacé vers la nouvelle position despoints accrochés à la grille pendant l’édition (valeurs valides : 0, 1 ; par défaut : 1 – oui).

• "AskScriptDisable" : contrôle le dialogue d’avertissement qui apparaît si des scènes avec desobjets ou des balises Script sont chargées. La valeur par défaut est 1 – oui, avertir des objets et balisesScript. Les valeurs valides sont 0 et 1.

• "AUCommands", commandes qui seront exécutées dans la console lorsque <Shift+Return> estutilisé au lieu de <Return>. Voir aussi la section 6.2.18 Mettre à jour l’interface graphique (page404).

La valeur par défaut est "uS;rV ;", ce qui entraîne une mise à jour complète de la hiérarchie desobjets, de l’interface graphique des propriétés et de toutes les fenêtres de visualisation.

Page 493: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

8. Divers 493

• "AvoidPwlCurve", détermine si le dessin et la tessellation NURBS évitent l’utilisation de la fonc-tion GLU "PwlCurve" pour spécifier les courbes de trim polygonales. Cette fonction utilise moinsde mémoire et est plus rapide que l’alternative mais peut conduire à une tessellation qui est clairementtrop grossière pour la qualité de tessellation souhaitée (valeurs valables : 0, 1 ; par défaut : 1 – oui).

• "BackupExt" : est l’extension du nom de fichier à utiliser pour les fichiers de sauvegarde. Lesvaleurs par défaut sont "˜" pour Unix et ".bak" pour Win32.

• "Balloon" : temps en ms jusqu’à l’apparition de la fenêtre d’info-bulle (par défaut : 1500 - 1,5s).

• "Cat" : nom d’un programme qui peut lire et écrire dans un pipeline (utilisé par l’interface graphiquede restitution) (par défaut : "cat") (un réglage de "cat" sera automatiquement remplacé par"cat.exe" sur Win32).

• "ConsoleTakeFocus" : peut être utilisé pour exclure la console de la traversée du focus via<Tab> lorsqu’il est réglé sur 0. La valeur par défaut est 1. Les valeurs valides sont 0 et 1.

• "ConsoleCursorEnd", si elle est activée, le premier clic dans la console déplacera le curseur versl’invite de saisie, prête pour la saisie de la commande, au lieu de déplacer le curseur au point du clic.Cette option est activée par défaut. Les valeurs valides sont 0 et 1.

• "ConvertTags", une liste de noms de tags séparés par des virgules. Ces balises seront copiées motpour mot dans les objets convertis et fournis. Si l’un des "BP" ou "CP" se trouve dans cette liste,la conversion des objets outils avec des majuscules ou des biseaux en objets NPatch ne génère pasplusieurs objets dans un objet Level mais un seul objet avec toutes les majuscules et tous les biseaux1.Valeur par défaut : "TP,TC,BP,CP".

• "CullFaces", permet d’éliminer les polygones orientés vers l’arrière avant l’affichage avecOpenGL. Cela peut améliorer la qualité visuelle des surfaces ombrées sur leurs bords. Notez cepen-dant que l’élimination des faces arrière peut également perturber l’aperçu du CSG en utilisant AyCSG.Valeur par défaut : 0 – non. Les valeurs valides sont 0 et 1.

• "CycleHiddenWire", détermine si le mode de dessin lent "HiddenWire" est inclus dans laliste des modes qui sont cycliques au clavier (via "Ctrl+PageUp"/"Ctrl+PageDown"), pardéfaut : 0 – non. Les valeurs valides sont 0 et 1.

• "CyclePerspective", détermine si le type de vue "Perspective" est inclus dans la liste destypes qui sont cycliques au clavier (via "PageUp"/"PageDown"), par défaut : 0 – non. Les valeursvalides sont 0 et 1.

• "DailyTips" : une liste de chaînes de caractères qui apparaissent comme conseils au démarragedans la console (par défaut : grande).

• "DisableFailedScripts" : spécifie si les scripts dans les objets Script ou les balises BNS/ANSdoivent être désactivés lorsqu’ils échouent (par défaut : 1 – oui). Les valeurs valides sont 0 et 1.

• "DisplayPath" : est le chemin de recherche de l’affichage à utiliser dans le mode de restitutionde la fenêtre d’affichage, il doit pointer vers le fichier "fifodspy.so" ou "fifodspy.dll",respectivement.

• "EFlush": temps en ms entre deux vidages de la mémoire tampon des messages d’erreur (par défaut: 2000 - 2s).

1 Depuis 1.24.

Page 494: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

8. Divers 494

• "FDShowHidden" : contrôle si le dialogue de fichier standard sur Unix affiche les fichiers cachés(par défaut 1 – oui). Les valeurs valides sont 0 et 1.

• "FDShowHiddenBtn" : contrôle si le dialogue de fichier standard sur Unix affiche un boutonsupplémentaire qui permet de basculer l’affichage des fichiers cachés (par défaut 0). Les valeursvalides sont 0 et 1.

• "FixDialogTitles", cette option fait précéder le titre d’une boîte de message qui est normale-ment affiché dans le cadre de la fenêtre de la boîte de message par le message dans la boîte. Cela peutêtre nécessaire car sur certains systèmes, la chaîne de titre peut être affichée dans une police illisibleou pas du tout. Sous Mac OS X Aqua (pas X11 !), cette option est activée par défaut. Sur tous lesautres systèmes, cette option est désactivée par défaut. Les valeurs valides sont 0 et 1.

• "FixImageButtons", permet de contourner le problème des boutons (par exemple dans la boîteà outils) qui restent enfoncés lorsqu’ils sont utilisés. Les valeurs valides sont 0 et 1. Cette option estdésactivée par défaut sur toutes les plateformes.

• "FixX11Menu" permet de contourner le problème des menus non collants sur X11 (les menusdéplacés ne restent pas ouverts). Cette option est activée par défaut et n’est pas utilisée sur les plates-formes Win32 et Aqua.

• "FlashObjects" active le clignotement des objets lors de la sélection d’un objet. Lorsqu’elle estactivée, cette option nécessite une quantité considérable de ressources en raison des opérations desélection constantes pendant que le pointeur de la souris se déplace sur la fenêtre de visualisation etentraîne également beaucoup de bruit visuel. Elle est donc désactivée par défaut.

• "IconGamma" : ce paramètre peut être utilisé pour adapter le contraste de toutes les icônes (dansle menu Affichage et la boîte à outils) à votre gamma d’affichage. Si vous êtes sur un SIG, il estrecommandé de régler ce paramètre à environ "0,7". La valeur par défaut "" (chaîne vide) n’entraîneaucune modification des images des icônes.

• "KeepNTmpFiles" : combien d’incarnations de la scène sous forme de RIB (qui peuvent en faitêtre divisées en plusieurs fichiers en raison par exemple d’instances) créées lors du rendu direct àpartir d’une fenêtre de visualisation doivent être conservées sur le disque (par défaut : 5)

• "KeepParamGUI" : détermine si les interfaces graphiques des paramètres intermédiaires doiventrester ouvertes après la saisie d’un paramètre ou plutôt disparaître immédiatement. La valeur pardéfaut est 0 – les GUI disparaissent immédiatement. Voir aussi la section 3.6 Les interfaces graphiquesdes paramètres intermédiaires (page 83).

• "Kill" : nom d’un programme qui tue d’autres processus et accepte un identifiant de processuscomme argument (utilisé par l’interface graphique de restitution) (par défaut : "kill") (un paramètrede "kill" sera automatiquement remplacé par "kill.exe" sur Win32) Sur la plateforme Win32,vous pouvez également utiliser une commande interne de mise à mort "w32kill" qui a été intro-duite dans Ayam 1.4.

• "LineWidth", largeur de ligne utilisée pour tracer les lignes des objets non sélectionnés (lignesbleues dans la configuration de couleur standard). La valeur par défaut est 1.0. Ayam ne vérifie pas,si la valeur spécifiée est prise en charge par l’implémentation OpenGL utilisée.

• "ListTypes" détermine si le type d’un objet doit être affiché entre crochets dans l’arborescenceou la liste. Les valeurs valides sont 0 et 1. La valeur par défaut est 1 – oui, listez les types.

Page 495: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

8. Divers 495

• "LoadEnv", contrôle si le fichier de la scène d’environnement doit être lu à chaque démarrage del’application. Les valeurs valides sont 0 et 1. La valeur par défaut est 0 – aucun fichier ne seralu. L’enregistrement d’un fichier de scène d’environnement via l’entrée de menu "Special/SaveEnvironment" ou la définition d’une valeur différente d’une chaîne vide ("") dans le paramètrede préférence "EnvFile" mettra automatiquement cette option à 1.

• "MarkHidden" détermine si les objets cachés doivent être marqués (en utilisant un pointd’exclamation précédent) dans la vue arborescente ou la liste d’objets. Les valeurs valides sont 0et 1. La valeur par défaut est 1 – oui, marquer les objets cachés.

• "MaxTagLen" : le nombre maximum de caractères à afficher dans les boutons de l’interfacegraphique des propriétés des balises (par défaut : 30).

• "NewLoadsEnv", si cette option est activée, Ayam lira le fichier de scène spécifié par "EnvFile"également lorsque la scène est effacée à l’aide de l’entrée du menu principal "File/New". Lesvaleurs valides sont 0 et 1. La valeur par défaut est 1 – oui, charger le fichier d’environnement sur"File/New".

• "NormalizeDigits", détermine le nombre de chiffres à droite du point décimal, l’attribut detransformation et le processus de normalisation du point de contrôle doivent rester intacts (valeur pardéfaut : 6).

• "NormalizeMark", contrôle si les coordonnées de la marque doivent être normalisées après avoirdéfini la marque à partir du centre des points sélectionnés (valeurs valables : 0, 1 ; par défaut : 1 –oui).

• "NormalizePoints", contrôle si les points modifiés par les actions de modélisation interactivedoivent être normalisés (valeurs valides : 0, 1 ; par défaut : 1 – oui).

• "NormalizeTrafos", contrôle si les attributs de transformation doivent être normalisés après desactions de modélisation interactives (valeurs valides : 0, 1 ; par défaut : 1 – oui).

• "PanDist" : la distance autour de laquelle se produit le panoramique dans les vues par clavier ;les valeurs positives sont absolues en pixels, les valeurs négatives sont relatives à la dimension de lafenêtre actuelle ; une valeur de -10 signifie un dixième de la largeur/hauteur de la fenêtre actuelle. Lavaleur par défaut est -10.

• "PaneMargins" est une liste de cinq valeurs en virgule flottante actuellement utilisées commemarge de sécurité pour les panneaux lorsqu’ils sont redimensionnés (1 : console vs.hiérarchie, 2 :hiérarchie vs.vues supérieures, 3 : vue inférieure vs.propriété, 4 : propriété vs.hiérarchie, 5 : vuesupérieure-2 vs.vue supérieure-1). Ces valeurs contrôlent la taille minimale d’un volet exprimée demanière inverse (1/x) et relative : plus le nombre est petit, plus la marge est grande. La marge desécurité du volet horizontal le plus élevé (qui divise les vues internes supérieures de la hiérarchie et latroisième vue) est par exemple un peu plus grande afin que le menu principal ne soit pas facilementmasqué (la valeur correspondante est 5.0). La valeur par défaut de la console (20.0) conduit à unepetite marge, de sorte que la console peut être réduite à 2 ou même 1 ligne de texte. Les valeurs pardéfaut sont :{ 20.0 5.0 10.0 10.0 10.0 }

• "PickCycleMax" : le nombre maximum d’objets pour le cycle de ramassage. Si "PickCycle"est activé et qu’il y a plus de candidats pour une sélection que ce qui est spécifié par cette option, laliste de sélection des objets prendra quand même le relais. La valeur par défaut est 5. 1

1 Depuis 1.26.

Page 496: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

8. Divers 496

• "PickTolerance" : la tolérance utilisée pour déterminer si un objet doit être choisi ou non (pardéfaut : 5) ; ce paramètre détermine la taille d’une zone rectangulaire autour du point choisi en pixels,tous les objets qui se trouvent à l’intérieur ou qui touchent cette zone sont considérés comme choisis.

• "PolyOffset0", "PolyOffset1" deux valeurs flottantes, qui contrôlent le décalage des sur-faces ombrées en mode ombrage et dessin (de sorte que les courbes apparaissent toujours au-dessusdes surfaces). Les valeurs par défaut sont 1.0, 1.0.

• "Prompt" : contrôle l’invite de la console Ayam. Voir aussi la section 2.1.3 La console (page 29).

Si cette option est définie sur une chaîne vide, une valeur par défaut de

\[Effacer :$ay(undoo)/Redo:$ay(redoo)\]\[Repeat:$ay(repo)\].../[filetail [pwd]]>

sera utilisé, qui affiche le nom des opérations qui peuvent être annulées et refaites, l’outil répéter, etle dernier élément du répertoire actuel de Ayam comme ceci :

[Effacer :None/Redo:None][Repeat:None].../scn>

Si cette option était définie sur "[pwd]}>" l’invite afficherait plutôt le nom complet du chemind’accès au répertoire courant.

Pour afficher la valeur d’une variable Tcl quelconque dans l’invite (par exemple, pour désigner leniveau actuel dans la hiérarchie de la scène), une trace d’écriture doit être liée à cette variable. Latrace d’écriture doit à son tour appeler la procédure "ayam_updateprompt" et peut par exempleêtre établie à l’aide d’un petit script comme celui-ci :

trace variable <vname> ayam_updateprompt

• "PVTexCoordName", nom par défaut pour les balises PV de coordonnées de texture, la valeur pardéfaut est "st".

• "PVNormalName", nom par défaut pour les balises PV normales de sommet, la valeur par défautest "N".

• "PVColorName", nom par défaut pour les balises PV de couleur de sommet, la valeur par défautest "Cs".

• "RotateCrossSection", contrôle si la création de balayages doit faire pivoter la courbe de lasection transversale vers le plan YZ. S’il est défini à 0, aucune rotation ne se produit, s’il est défini à 1,la rotation sera tentée sans aucun contrôle, et s’il est défini à 2 (c’est la valeur par défaut1), la sectiontransversale est vérifiée et un demandeur est levé offrant de faire tourner la courbe uniquement si ellen’est pas déjà dans le bon plan.

Voir aussi la section 5.4.6 Outil de balayage (Sweep) (page 307).

• "SafeAutoFocus" désactive l’AutoFocus (voir la section 2.10.1 La sous-section suivante contientles paramètres relatifs à l’interface graphique utilisateur (GUI). (page 61)) lorsque certaines fenêtresde dialogue sont ouvertes, afin qu’elles ne soient pas déplacées sous d’autres fenêtres par des mou-vements de souris accidentels sur les systèmes où le gestionnaire de fenêtres ne fait qu’une levéeautomatique en conjonction avec la mise au point automatique.

Les valeurs valides sont 0 et 1. Cette option est activée par défaut sur Win32.

• "SDMode", mode de détection de la silhouette pour le mode dessin de fil caché, 0 – off, 1 – z-buffer,2 – color, 3 – z-buffer et color. La valeur par défaut est 3. 2

• "SelectLast" détermine si les clics dans le widget de l’arbre (mais pas sur un noeud) doiventsélectionner le dernier objet du niveau actuel. Les valeurs valides sont 0 et 1. Par défaut, 1 – oui.3

1 Depuis 1.25. 2 Depuis 1.21. 3 Depuis 1.22.

Page 497: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

8. Divers 497

• "SelLineWidth", largeur de ligne utilisée pour dessiner les lignes des objets sélectionnés (lignesblanches dans la configuration de couleur standard). La valeur par défaut est 1.0. Ayam ne vérifie passi la valeur spécifiée est prise en charge par l’implémentation OpenGL utilisée.

• "SelXOR_R", "SelXOR_G", "SelXOR_B" : détermine une valeur de couleur qui est utiliséepour faire glisser les rectangles de sélection. Notez que la couleur n’est pas utilisée directement maiscombinée avec la valeur de couleur des pixels déjà dessinés par XOR. Les valeurs par défaut sont 255pour la composante rouge, 128 pour la composante verte et 0 pour la composante bleue.

• "ShiftTab", permet de définir un symbole de clavier spécifique pour les systèmes où le faitd’appuyer sur la touche Shift en même temps que la touche Tab ne produit pas "<Shift-Tab>" (pardéfaut) mais un autre symbole comme par exemple "<ISO_Left_Tab>" (beaucoup, mais pas tous, lessystèmes X11 modernes l’utilisent souvent).

• "SimpleToolGUI" contrôle si les éléments standard de l’interface utilisateur (tels qu’ils sont con-nus des propriétés GUI) doivent être utilisés dans les dialogues d’outils ou simplement dans les wid-gets de saisie simple. Les valeurs valides sont 0 et 1. Par défaut, 0, utilisez les éléments standard del’interface utilisateur.1

• "StripShaderArch" détermine si une deuxième extension (l’architecture) doit être suppriméedes noms de fichiers des ombres compilés lors de la recherche des ombres. Les valeurs valides sont 0et 1. Par défaut, 1 – oui. 2

• "SwapMB", permet d’échanger les boutons 2 et 3 de la souris sur Mac OS X Aqua (pas X11 !) pourles fixations de la souris spécifiées dans "SwapMBSC" ci-dessous, car sous Mac OS X Aqua, tra-ditionnellement, la dénomination du bouton central et du bouton droit de la souris est inversée parrapport à X11/Win32.Cette option est activée par défaut sur Mac OS X Aqua et permet d’utiliser le même ensemble de li-aisons de souris (le même fichier ayamrc) pour X11 et Aqua sans sacrifier l’expérience de l’utilisateur.Le bouton du milieu de la souris, par défaut, permet de zoomer sur la vue, et celui de droite de déplacerla vue. Les valeurs valides sont 0 et 1.

• "SwapMBSC" contient les liens de la souris à permuter, lorsque "SwapMB" ci-dessus est activé. Lavaleur par défaut de cette option est{ "ayviewshortcuts(MoveVButton)" "ayviewshortcuts(ZoomVButton)" }

• "toolBoxList" : une liste de sections ou de groupes de boutons décrivant l’apparence de lafenêtre de la boîte à outils (par défaut, en utilisant toutes les sections disponibles : {trafo trafo2solides misco nurbs toolobjs points nctools1 nctools2 camera misc}).Voir aussi la section 2.8 La boîte à outils (page 55).

• "ToolBoxShrink", contrôle si la fenêtre de la boîte à outils doit s’enrouler autour de son contenuaprès une opération de redimensionnement. Cette option n’est pas utilisée en mode GUI à fenêtreunique. Les valeurs valides sont 0 et 1, la valeur par défaut est 1 – oui.

• "ToolBoxTrans", décide si la fenêtre de la boîte à outils doit être rendue transitoire. Elle obtien-dra alors, selon le gestionnaire de fenêtre ou sa configuration, une décoration différente ou pas dedécoration, pas d’icône (ou pas d’entrée dans la barre des tâches sur Win32), et sera toujours iconifiéelorsque la fenêtre principale sera iconifiée. Non utilisé en mode GUI à fenêtre unique. Les valeursvalides sont 0 et 1. La valeur par défaut est 1 – oui.

• "UseInternalFD" passe à un dialogue de fichier interne pour le chargement des plugins. Cetteoption n’est utilisée que sur Mac OS X Aqua (pas X11 !), car là, le dialogue de fichier normal n’entrera

1 Depuis 1.22. 2 Depuis 1.22.

Page 498: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

8. Divers 498

pas dans les structures de répertoires du paquet d’applications. Cette option est activée par défaut surMac OS X Aqua et n’est utilisée sur aucune autre plate-forme. (valeurs valables : 0, 1 ; par défaut : 0– no)

Voir aussi la documentation d’un script d’aide connexe 6.5.16 Changer les dialogues de fichiers enTcl (page 433).

• "WarnPnts" contrôle les messages d’avertissement pour les points sélectionnés manquants (valeursvalables : 0, 1 ; par défaut : 1 – oui).1

• "WarnPropPasteToSel" : faut-il faire apparaître une boite de dialogue pour"Special/Clipboard/Paste Property to Selected"? (valeurs valides : 0, 1 ;par défaut : 1 – oui)

• "WarnUnknownTag" contrôle les messages d’avertissement pour les types de balises inconnues(valeurs valides : 0, 1 ; par défaut : 1 – oui).

• "Wait" : définissez cette option sur "waitPid" pour permettre de contourner les processus zom-bies créés par l’interface graphique de restitution. Ceci est par exemple nécessaire pour la plate-formeLinux.

• "WheelZoom", une valeur flottante qui contrôle le facteur de zoom pour les fenêtres d’affichagelorsque soit la molette de la souris est utilisée, soit les touches <+>/<-> ; la valeur par défaut est0,5. Une valeur de 0,75 entraîne un contrôle du zoom plus fin mais un zoom plus lent et une valeur de0,25 un zoom plus grossier mais rapide.

1 Depuis 1.27.

Page 499: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

8. Divers 499

8.4.3 Base de données pour RiOption et RiAttributes

Avec le fichier ayamrc, la base de données des RiOptions et des RiAttributs peut également être adaptée ausystème de rendu RenderMan cible actuel.

Des options et des attributs spécifiques au restituteur peuvent ensuite être ajoutés aux scènesà l’aide de balises et des entrées du menu principal "Special/Tags/Add RiOption" et"Special/Tags/Add RiAttribute", Voir aussi les sections 4.11.1 Balise RiAttribute (page 257)et 4.11.2 Balise RiOption (page 258).

La syntaxe pour une nouvelle RiOption est assez simple comme le montre l’exemple suivant :

set riopt(runtime) {

{ verbosity s { "silent" "normal" "stats" "debug" } }

}

Cet extrait définit la section "runtime" et y ajoute une seule option, " verbosity". L’option estdéclarée comme étant de type chaîne de caractères en utilisant "s" et est fournie avec une liste de valeurspar défaut : "{ "silent" "normal" "stats" "debug" }". Pour ajouter une autre option à cettesection, disons l’option "op" qui doit être une valeur entière, l’extrait susmentionné doit être changé en :

set riopt(runtime) {

{ verbosity s { "silent" "normal" "stats" "debug"} }

{ op i }

}

Comme vous pouvez le voir, il n’est pas obligatoire de fournir des valeurs par défaut. Veillez à fermer cor-rectement tous les croisillons, sinon le prochain départ de Ayam risque d’échouer. Les types de paramètresdisponibles sont les suivants :

• i : une valeur entière scalaire,

• j : une paire de valeurs entières,

• f : une valeur flottante scalaire,

• g : une paire de valeurs flottantes,

• s : une valeur de chaîne,

• p : un point dans l’espace (simplement trois valeurs flottantes), les valeurs par défaut (si elles sontfournies) sont trois valeurs flottantes entre accolades, comme {0.0 1.0 0.0},

• c : une couleur, les valeurs par défaut (si elles sont fournies) sont trois valeurs flottantes dans lesaccolades, comme {1.0 1.0 1.0}.

Page 500: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

8. Divers 500

8.5 Variables d’environnement

Cette section documente les variables d’environnement utilisées par Ayam.

• "AYAMRC" : désigne le nom complet du fichier ayamrc (voir la section 8.4 Le fichier Ayamrc (page490)).

• "HOME" : chemin d’accès au fichier ayamrc (utilisé sur Win32 si "AYAMRC" n’est pas défini).

• "TEMP" : chemin d’accès au fichier ayamrc (utilisé sur Win32 si "AYAMRC" et "HOME" ne sontpas définis) ; également valeur initiale du paramètre de préférence "TmpDir" (utilisé sur Win32 siaucun fichier ayamrc n’existe, qui spécifie "TmpDir").

• "AYNOSPLASH" : si cette variable est définie à 1, l’écran de démarrage ne sera pas affiché.

• "BROWSER" : nom de fichier du navigateur web préféré (utilisé pour afficher l’URL de la documen-tation).

• "NETSCAPE" : (si "BROWSER" n’existe pas) nom de fichier du navigateur web Netscape (utilisépour afficher l’URL de la documentation).

• "SHADERS" : valeur initiale du paramètre de préférence "Shaders" (utilisé si aucun fichierayamrc n’existe).

Page 501: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

8. Divers 501

8.6 Aperçu des plugins

Cette section donne un aperçu des différents plugins disponibles dans Ayam.

Il existe actuellement cinq grands types de plugins pour Ayam :

plugins d’analyse des ombres

aysdr, ayslb, ayslc, ayslo, ayslo3d, ayslx, ayso. Voir aussi la section 8.7 Plugins d’analyse des ombres(shaders) (page 502).

objets personnalisés

metaobj, sdnpatch, sfcurve, sdcurve, bcurve, csphere. Voir aussi la section 4.9.2 Gestion des objetspersonnalisés (page 235).

plugins d’import/export

dxfio, mfio, mopsi, objio, onio, rrib, x3dio. Voir aussi la section 7 Importations et Exportations (page462).

plugins de langage de script

• jsinterp – Interface de script JavaScript (voir section 6.7 Interface de script JavaScript (page450)),

• luainterp – Lua scripting interface (voir section 6.8 Interface de script Lua (page 456)).

plugins d’aide à la modélisation

• AyCSG – CSG rendering (Voir la section 8.10 Aperçu CSG à l’aide du plugin AyCSG (page504)),

• IDR – Rendu piloté par l’importance (Importance Driven Rendering IDR) (voir la section 8.9Rendu piloté par l’importance (Importance Driven Rendering IDR) (page 503)),

• aydnd – glisser-déposer inter-applications,

• subdiv – Subdivision Catmull-Clark et Loop pour l’objet SDMesh (voir section 4.8.2 L’objetSDMesh (page 223)).

Page 502: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

8. Divers 502

8.7 Plugins d’analyse des ombres (shaders)

Les plugins suivants sont fournis pour permettre l’analyse des ombres compilées :1 "ayslb" pourAir, "ayslx" pour Aqsis, "ayso" pour RDC, "ayslo" pour PRMan, "ayslo3d" pour 3Delight,"aysdr" pour Pixie2 , and "aygso" pour Gelato3.

Après le chargement de l’un des plugins susmentionnés, Ayam sera en mesure d’analyser les ombres com-pilées avec le compilateur d’ombres du moteur de rendu respectif.

Il ne peut y avoir qu’un seul plugin d’analyse d’ombre actif. Vous ne pouvez pas charger d’abord ayslb puisayslx et vous attendre à ce qu’Ayam analyse les ombres slb et slx.

Un plugin d’analyse d’ombre peut être chargé automatiquement au démarrage de Ayam en utilisantl’un des scripts Tcl fournis : "loadayslb.tcl", "loadayslo.tcl", "loadayslo3d.tcl","loadayslx.tcl", "loadayso.tcl", "loadaysdr.tcl", et "loadaygso.tcl". Pourcharger automatiquement un plugin, il suffit d’ajouter le script approprié au paramètre de préférence"Main/Scripts" en utilisant le bouton "Add" dans l’éditeur de préférences.

En outre, ces scripts peuvent être adaptés pour définir un paramètre de préférence "Shaders" différentou pour rechercher immédiatement les ombres après le chargement du plugin. Pour cela, il suffit d’enleverles marques de hachage (#) des lignes correspondantes dans le script. Notez qu’il n’est pas nécessairede modifier les scripts pour l’analyse immédiate des ombres si le plugin d’analyse des ombres est chargéautomatiquement au démarrage de Ayam, car le chargement des scripts (et donc aussi du plugin) se feraavant que la séquence de démarrage de Ayam n’exécute la passe initiale d’analyse des ombres. Le cheminde recherche des ombres utilisé pour la première passe d’analyse des ombres est pris dans le paramètre depréférence "Shaders".

Si un plugin d’analyse des ombres est chargé manuellement ou via un script de chargement inchangé,le chemin de recherche des ombres doit être adapté manuellement. En outre, une analyse des om-bres doit également être lancée manuellement. Les deux actions peuvent être effectuées à l’aide del’éditeur de préférences. La recherche des ombres peut également être lancée à l’aide du menu principal: "Special/Scan Shaders".

Afin de mieux s’adapter à l’évolution rapide des outils de rendu RenderMan, depuis Ayam 1.11, tous lesplugins d’analyse des ombres sont indépendants de la version de Ayam (mais dépendent toujours de laversion du moteur de rendu et de la version Tcl). Cela permet de distribuer des plugins d’analyse desombres mis à jour sans mettre à jour Ayam également et donc à une fréquence plus élevée. De plus, lacompilation d’un plugin d’analyse des ombres est maintenant beaucoup plus facile.

Pour l’analyse des ombres sans plugins, Voir aussi la section 6.5.4 Analyse des ombrages (shaders) (page429).

1 Depuis 1.3. 2 Depuis 1.6. 3 Depuis 1.11.

Page 503: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

8. Divers 503

8.8 Instanciations automatiques

Figure 170: Dialogue d’instanciation automatique

Automatic Instancing est disponible via l’entrée du menu principal :"Special/Instances/Automatic Instancing". Lorsque cette entrée de menu est sélec-tionnée, un petite boite de dialogue de paramètres apparaît, voir aussi l’image ci-dessus.

Automatic Instancing crée des instances à partir de tous les objets instanciables en utilisant un algorithmesimple qui compare récursivement les objets (Voir aussi la section 4.2.7 L’objet Instance (page 128)).

Deux objets sont considérés comme instanciables lorsque tous leurs attributs, à l’exception des attributs detransformation, sont identiques. La comparaison des matériaux et des balises peut être désactivée. La portéede l’instanciation automatique peut également être définie sur les objets sélectionnés, le niveau actuel outous les objets de la scène (indépendamment du niveau actuel et de la sélection). 1

L’algorithme d’instanciation est également capable de créer des instances de regroupement d’objets (objetsavec des objets enfants, par exemple des niveaux ou des outils-objets comme revolve). Toutefois, pour quedeux objets de regroupement soient instanciés, non seulement tous les objets enfants et les objets de re-groupement doivent être instanciables, mais les objets enfants doivent également être dans le bon ordre. Ilne suffit pas que pour chaque enfant du maître potentiel, il existe un enfant correspondant de l’instance po-tentielle. L’instanciation des objets de regroupement peut réduire considérablement le nombre total d’objetsdans une scène.

Notez qu’avant que l’instanciation automatique ne commence, toutes les instances existantes seront résolues.Après l’instanciation, certaines statistiques seront affichées dans la console.

Pour plus d’informations sur ce sujet, voir :

Schultz, R., and Schumann, H.: "Automatic Instancing of Hierarchically Organized Objects", in: KuniiT.L. (ed.): Spring Conference on Computer Graphics (SCCG 2001) Conference Proceedings, Budmerice,Slovakia, 25-28 April 2001, ISBN 80-223-1606-7

8.9 Rendu piloté par l’importance (Importance Driven Rendering IDR)

Le plugin de rendu piloté par l’importance peut être utilisé pour réduire considérablement les temps de rendulors du développement d’une scène. Il fonctionne en trois étapes principales :

1. Les valeurs d’importance sont attribuées aux éléments de la scène.

2. Deux passes de restitution sont lancées en fonction des valeurs d’importance attribuées. Les élé-ments ayant des valeurs d’importance différentes sont masqués mutuellement à l’aide des instructions"RiMatte".

1 Depuis 1.21.

Page 504: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

8. Divers 504

3. Les images partielles résultantes sont composées en une seule image résultante, qui est ensuite af-fichée.

La paramétrisation des deux passes de rendu garantit que le temps de rendu total est inférieur au temps derendu d’une seule passe de haute qualité.

De nombreuses options existent pour attribuer une importance et paramétrer les passes de restitution :

Les éléments des scènes peuvent être des objets géométriques, des régions dans l’espace image ou desrégions dans l’espace objet. Les valeurs d’importance ne sont actuellement que des valeurs binaires.L’attribution peut se faire manuellement (à l’aide de balises IDR) ou de manière semi-automatique pardérivation de l’importance des objets actuellement sélectionnés ou modifiés. Pour éviter toute incohérencedans les images résultantes, les valeurs d’importance peuvent être propagées entre des objets proches(géométriquement ou hiérarchiquement), ou entre des objets qui sont liés (par exemple d’un matériau àun objet géométrique).

La paramétrisation des deux passes de rendu comprend actuellement la sélection d’un moteur de rendu dif-férent et la possibilité de réduire la résolution de rendu et le taux d’ombrage. Pour réduire davantage lestemps de rendu des moteurs de rendu de raytracing, la taille de la région à restituer peut être automatique-ment adaptée aux éléments de la valeur d’importance actuelle (y compris une exécution d’optimisation quiéquilibre les temps de démarrage du moteur de rendu et les temps nécessaires pour restituer les régions nonoccupées à l’origine par deux régions à fusionner).

De plus, la mise en cache d’images partielles est possible. Cependant, la mise en oeuvre de cette fonction-nalité n’est pas très sophistiquée pour le moment, car elle utilise l’outil texte Unix "diff" pour décider sideux flux RIB sont identiques et ne nécessitent donc pas de restitution. Pour commencer à utiliser l’IDR :

1. charger une scène (par exemple, la scène de l’exemple de cactus),

2. charger le plugin IDR (menu "File/Load Plugin"),

3. ouvrir la fenêtre de contrôle de l’IDR en utilisant le menu principal "Custom/Open IDR",

4. régler le mode d’affectation sur "Selection",

5. sélectionner un objet dans la scène (par exemple l’objet nommé "Pot"),

6. puis appuyez sur le bouton "Render !".

Comparez le temps de restitution avec un rendu complet à partir de la fenêtre de visualisation. L’IDRexige qu’au moins le créateur de la deuxième passe de rendu honore RiMatte. Comme l’IDR n’honore pasRiMatte, il est parfois nécessaire d’exclure simplement les objets de valeur d’importance différente. Il nefaut pas s’attendre à des images erronées, car rgl ne calcule que les effets d’éclairage locaux. Vous trouverezplus d’informations à ce sujet dans:

Schultz, R., and Schumann, H.: "Importance Driven Rendering - Using Importance Information in theRendering Process", in: Hamza M., Sarfraz M. (ed.): Computer Graphics and Imaging (CGIM 2001) Con-ference Proceedings, Honolulu, Hawaii, 13-16 August 2001, ISBN 0-88986-303-2

8.10 Aperçu CSG à l’aide du plugin AyCSG

Le plugin AyCSG peut être utilisé pour résoudre et prévisualiser les opérations du CSG. Pour cela, le pluginutilise des algorithmes de restitution CSG basés sur des images fournis par la bibliothèque OpenCSG de

Page 505: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

8. Divers 505

Figure 171: Exemple de prévisualisation de CSG (à gauche sans, à droite avec CSG)

Florian Kirsch. La bibliothèque OpenCSG prend actuellement en charge les algorithmes Goldfeather etSCS. Ce dernier ne fonctionne correctement qu’avec des primitives convexes. Comme Goldfeather et SCSsont tous deux des algorithmes de restitution d’images, il n’y a pas de limite aux types d’objets géométriquesqui peuvent être utilisés dans les hiérarchies CSG. Vous pouvez par exemple utiliser les Quadrics, NURBSet Metaballs dans toutes les combinaisons possibles. Vous devez juste vous assurer que chaque primitiveCSG décrit un espace fermé.

Pour que les algorithmes de restitution CSG fonctionnent correctement, il faut connaître la complexité enprofondeur (convexité) d’une primitive. La complexité en profondeur d’une primitive détermine le nombremaximum de surfaces orientées vers l’avant que tout rayon traversant cette primitive pourrait traverser. Unesphère régulière a une complexité de profondeur de 1, un tore de 2, mais ne confondez pas la complexité deprofondeur avec le genre, ce sont des valeurs différentes. Une représentation 3D de la lettre A, par exemple,a un genre de 1 mais une complexité de profondeur de 3. La complexité de profondeur d’une primitive peutêtre stockée dans une balise "DC". Un tore obtiendrait par exemple une balise nommée "DC" avec la valeur"2". Si aucune balise "DC" n’est présente pour une primitive, une valeur par défaut pour la complexitéde profondeur de "1" sera utilisée. Si la complexité de la profondeur n’est pas correctement spécifiée, deserreurs de restitution, comme des parties manquantes de surfaces, se produiront.

Notez que le bon fonctionnement de AyCSG dépend non seulement de la complexité de la profondeurmais aussi de l’ordre d’enroulement des primitives OpenGL (triangles ou quads) utilisées pour le dessindes primitives CSG. L’ordre d’enroulement doit être cohérent dans une scène, de sorte que l’algorithme derestitution puisse décider de ce qui est à l’intérieur et à l’extérieur en regardant une seule primitive OpenGL.Pour toutes les primitives quadriques de Ayam, l’ordre d’enroulement est toujours cohérent. Cependant,pour les patchs NURBS, l’ordre d’enroulement dépend de l’orientation des dimensions du patch. Si lespatchs NURBS sont utilisés dans les opérations CSG, il peut être nécessaire de les inverser (par exemple enutilisant l’outil "RevertU", voir 5.5.1 Outil de reversement sur U (Revert U) (page 313)).

Si l’ordre d’enroulement de certaines des primitives dans une hiérarchie CSG n’est pas correct, les primitivesrespectives ne seront pas efficaces dans les opérations CSG dans la mesure où l’image restituée devientcomplètement vide.

Le rendu AyCSG obéit aux options d’affichage "Draw Selection only" et "Draw Level only"

ainsi qu’à l’attribut "hide" des objets. Si le rendu CSG échoue pour des scènes complexes complètes, vouspouvez toujours obtenir un aperçu des CSG importantes en utilisant des objets en les sélectionnant et enactivant l’option de vue "Draw Selection only".

Page 506: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

8. Divers 506

Notez également que le rendu CSG nécessite une carte graphique rapide (plus le taux de remplissage estélevé, mieux c’est). De plus, votre sous-système OpenGL doit prendre en charge l’extension PBufferset, selon les options de rendu choisies, un tampon de stencil. Des accélérations peuvent être obtenues enutilisant les extensions "GL_ARB_occlusion_query" ou "GL_NV_occlusion_query" (si vousen disposez).

Une fois que le plugin AyCSG est chargé avec succès, vous pouvez restituer l’aperçu CSG dans n’importequelle fenêtre de visualisation en utilisant le raccourci clavier <Ctrl+C> ou en utilisant le nouveau boutondans la barre de menu de chaque fenêtre de visualisation (voir image ci-dessous). Si vous maintenez latouche <Shift> enfoncée tout en appuyant sur le bouton, la vue commencera à restituer continuellementles CSG (le bouton reste enfoncé pour le signifier) jusqu’à ce que vous cliquiez à nouveau sur le bouton.

Figure 172: Voir avec l’icone AyCSG

Le plugin AyCSG prend en charge les options suivantes, qui sont disponibles via l’entrée du menu principal"Custom/AyCSG Preferences":

• "Algorithm" permet de basculer entre l’algorithme Goldfeather et l’algorithme SCS. Notez à nou-veau que l’algorithme SCS ne fonctionne correctement que pour les primitives convexes. Le réglage"Automatic" permet de choisir l’un des algorithmes en fonction de la présence ou non de primi-tives concaves (complexité de profondeur > 1). Comme cette décision est prise en fonction de la com-plexité de la profondeur des balises DC, le seul réglage valable pour la préférence "DCSampling"ci-dessous est alors "NoDCSampling".

• "DCSampling" détermine une stratégie d’échantillonnage de la complexité de la profondeur. Encitant la documentation de l’OpenCSG, les options suivantes sont disponibles : "NoDCSampling": N’utilise pas la complexité de la profondeur. Cela rend essentiellement l’algorithme O(n2), maisavec des coûts constants faibles. C’est l’algorithme standard de Goldfeather, les balises DC doiventêtre présentes pour les primitives dont la complexité en profondeur est supérieure à un, ou des erreursde restitution peuvent se produire.

"OcclusionQuery" : Utilise les requêtes d’occlusion pour profiter implicitement de la com-plexité de la profondeur sans la calculer. Cela est particulièrement utile pour l’algorithme SCSoù cette stratégie est appliquée au niveau de la forme, ce qui donne un algorithme O(n·k′) (oùk′ <= k), sans surcharge constante significative. Cette stratégie nécessite l’extension OpenGL"GL_ARB_occlusion_query" ou "GL_NV_occlusion_query". Si cette option est activée(et que le "Algorithm" est réglé sur Goldfeather), il n’est pas nécessaire que les balises DC soientprésentes.

"DCSampling" : Calcule la complexité de la profondeur k en utilisant le tampon du pochoir. Celarend l’algorithme O(n·k), mais avec des coûts constants élevés. Dans le cas de l’algorithme Gold-feather, la littérature indique qu’il s’agit d’un algorithme Goldfeather à couches. Notez que cetteoption nécessite un tampon de pochoir qui doit être activé lors de la création d’une fenêtre de vue

Page 507: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

8. Divers 507

utilisant des paramètres de vue supplémentaires (option de préférences "AddViewParams", voiraussi la section sur 8.4.2 Paramètres de préférences cachés (page 492)).

Si les tampons de pochoir ne sont pas activés, le plugin AyCSG ajoutera automatiquement l’optioncorrespondante aux préférences de Ayam, mais cela n’a d’effet que sur les fenêtres d’affichage nou-vellement créées (c’est-à-dire que vous pourriez également vouloir redémarrer Ayam, si vous passezà cette stratégie d’échantillonnage). Si "DCSampling" est activé (et que "Algorithm" est réglésur Goldfeather), il n’est pas nécessaire que les balises DC soient présentes car la complexité deprofondeur des primitives est calculée en interne.

• "OffscreenType" : Cette option permet de basculer entre deux techniques de restitution horsécran, les objets PBuffers et les Frame Buffer; en fonction de votre carte graphique et de votre pilote,l’un ou l’autre pourrait vous convenir mieux.

• "Optimisation" : Actuellement inutilisé.

• "CalcBBS" détermine si les boîtes englobantes doivent être calculées et utilisées pour accélérer leprocessus (ne fonctionne pas pour le moment).

Le tableau suivant donne un aperçu des options disponibles, de leurs restrictions et des exigences implicites.Les paramètres par défaut sont d’utiliser l’algorithme Goldfeather avec des requêtes d’occlusion, car cette

Algorithm DCSampling Concave Primitives DC Tags needed RequirementsGoldfeather OcclusionQuery Yes No occlusion query extensionGoldfeather DCSampling Yes No stencil bufferGoldfeather NoDCSampling Yes Yes NoneAutomatic NoDCSampling Yes Yes None

SCS NoDCSampling No No NoneSCS OcclusionQuery No No NoneSCS DCSampling No No stencil buffer

Table 113: Aperçu des options de AyCSG

combinaison permet des hiérarchies CSG complexes, dispose d’une prise en charge matérielle étendue, nenécessite aucune modification des arguments de vue exotiques, et également aucune balise DC.1 Voir aussi :

1 Depuis 1.25.

Page 508: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

8. Divers 508

8.11 Augmenter la vitesse de dessin

En cas de réponse lente de l’interface utilisateur de Ayam (ne tenant pas compte des longues opérations demise à jour de l’arbre), plusieurs choses peuvent être faites pour augmenter la vitesse de dessin :

• Cacher les objets ou compléter les hiérarchies d’objets en utilisant "Hide" dans le menu "Tools".

• Désactiver le dessin de véritables courbes/surfaces NURBS, si vous le pouvez. Utilisez les modesd’affichage de ControlHull.(appuyez sur "<F4>" pour basculer).

• Si vous avez besoin de voir des courbes/surfaces, essayez d’augmenter la tolérance d’échantillonnage(GLU) des objets (utilisez une valeur d’environ 60,0, appuyez plusieurs fois sur "<F3>").

• Changer la vue de modélisation primaire pour ne dessiner que le ou les objets sélectionnés ou le niveauactuel.

• Iconifiez les vues dont vous n’avez pas besoin, elles ne seront pas redessinées à ce moment-là.

• Désactiver le redessin automatique des vues à redessin lent (par exemple ombrées), et contrôler leurredessin en appuyant sur <Ctrl+d> manuellement.

• Ne pas créer de bouchon inutiles, ce sont des patchs NURBS découpés qui restituent très lentement.

• Désactivez "UseMatColor".

8.12 Modélisation sans vue

Pour travailler sur des scènes très grandes/complexes, il peut être nécessaire de désactiver toutes les vues.Dans Ayam, cela peut être fait en mode GUI multi-fenêtres (voir la section 2.10.1 La sous-section suivantecontient les paramètres relatifs à l’interface graphique utilisateur (GUI). (page 61)).

S’il y a beaucoup d’objets, il est également conseillé de faire passer le widget de sélection des objets dumode arborescence au mode boîte de liste (menu : "Special/Toggle TreeView").

La modélisation sans vues ne fonctionne pas sur Apple Mac OS X Aqua si une fonctionnalité GLU estimpliquée (car toute fonctionnalité GLU sur Mac OS X nécessite un contexte GL). GLU est nécessaire pourla tessellation de PolyMesh et NURBS.

8.13 Restrictions et lacunes dans la mise en oeuvre

En raison de la façon dont Ayam est mis en oeuvre, il existe plusieurs restrictions et lacunes :

• Presque toutes les chaînes de caractères dans Ayam (noms de fichiers de scènes, noms d’objets, nomsde matériaux) sont limitées à l’ASCII 7 bits. Si la scène ne doit pas être transportée d’une plate-formeà l’autre (par exemple entre UNIX et Win32), l’utilisation de l’ASCII 8 bits devrait cependant suffire.

• La profondeur maximale de la scène (c’est-à-dire le nombre maximal de niveaux imbriqués) dépendde la taille maximale de la pile du système d’exploitation sur lequel fonctionne Ayam (en raison del’utilisation de la récursion presque partout lors du parcours de la scène, par exemple à des fins dedessin).

• Ayam fonctionne en interne sur les mathématiques de double précision, cependant, il n’existe aucuncontrôle sur l’erreur d’arrondi dans les longs calculs. La sauvegarde des fichiers de scènes n’utiliseque la précision dictée par la bibliothèque C standard actuelle. Cela peut dégrader la précision desmodèles. L’utilisation de nombres en double précision via l’interface de script Tcl ou l’interface

Page 509: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

8. Divers 509

graphique peut également réduire la précision des modèles en raison des conversions double chaîne-double (la précision de ces opérations de conversion peut toutefois être ajustée par l’utilisateur via leparamètre de préférence "TclPrecision").

• La taille maximale de tableau qu’Ayam peut gérer est de 2 Go (ceci est également vrai sur les plate-formes 64 bits), par conséquent, les dimensions maximales des patchs NURBS sont par exemple8192*8192, le nombre maximal de points de contrôle dans un PolyMesh ou un SDMesh est de89.478.485 (sans les normales de sommet, avec des normales de sommet seulement la moitié) ré-sultant, dans le pire des cas, en 29.826.162 triangles (sans les normales de sommet). Aucune de ceslimites n’est activement appliquée.

• Les matériaux ne peuvent être attribués qu’à des objets complets, et non à certaines parties d’objets.

• Annuler/refaire ne sont pas possibles pour les changements de structure de scène.

• Dans l’interface utilisateur, les couleurs sont toujours représentées par trois valeurs RVB de 8bits, même si l’interface RenderMan permet, par exemple, d’utiliser des numéros d’échantillons decouleurs différents ou des échantillons en virgule flottante au lieu d’entiers pour les couleurs.

• Il n’y a pas de structures d’accélération pour, par exemple, les mises à jour des dessins et des arbresd’objets. Cela limite à environ 1000 le nombre d’objets qu’Ayam peut traiter simultanément sansgrands décalages dans les redessinages ou après les changements de structure de la scène. Cependant,les objets de Ayam doivent être des objets de haut niveau, et non des polygones simples, de toute façon,c’est-à-dire qu’on s’en sort généralement avec une centaine d’objets pour des scènes modérémentcomplexes, le Marsrakete à géométrie lourde n’utilisant que 62 objets.

• Il n’est pas possible de créer un X11 en utilisant l’exécutable sur la plate-forme Win32.

Déficiences de l’interface utilisateur de Ayam :

• L’état de l’application est souvent communiqué uniquement via les chaînes de titres des fenêtres. Maiscertains systèmes de fenêtres n’affichent pas bien ces titres, et ils ne doivent pas être vus du tout dansle mode GUI à fenêtre unique.

8.14 Comment se joindre à la fête

Contribuer à rendre Ayam encore meilleur pimentera aussi votre vie. Voici comment faire :

1. Ecrire/traduire des tutoriels

2. Traduisez quelques textes d’aide en forme de ballon. Créer un nouveau fichier de script de traductionen entrant dans la console Ayam :

»ms_create lang

(en remplaçant lang par une désignation linguistique à deux caractères comme it pour l’italien).Maintenant, éditez/traduisez le nouveau fichier de script. Testez-le en l’ajoutant au paramètre depréférence "Scripts".

3. Créer et soumettre des exemples d’objets, de scènes et d’images.

4. Mettez en place des objets personnalisés comme des arbres, des paysages, du ciel, des XSplines, desT-Splines, ou tout ce qui vous vient à l’esprit. Notez que la licence de Ayam ne vous empêche pasde mettre en oeuvre votre objet personnalisé en tant que partagiciel ou même en tant que logicielcommercial. Cependant, les logiciels libres sont préférés pour des raisons évidentes.

Page 510: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

8. Divers 510

5. Don de fichiers source pour améliorer plusieurs parties critiques du modeleur, quelques idées sont: meilleure simulation (plus exacte) de l’éclairage (est-ce possible de faire cela avec OpenGL ?),widgets de transformation, véritable prise en charge des surfaces de subdivision, levée de certainesdéficiences (voir ci-dessus), plugins d’import/export. La page du projet de Ayam sur SourceForgeénumère quelques tâches supplémentaires et vous êtes toujours les bienvenus pour discuter de cesquestions sur le forum public.

Veuillez ne pas mettre en oeuvre des objets personnalisés comme de simples triangles ou polygones. Ceserait quelque chose qui n’est pas vraiment voulu par l’équipe de Ayam, et cela montrerait sûrement leslimites de la conception actuelle de tout code fonctionnant sur la structure de la scène. Les objets Ayamdevraient être des objets de haut niveau ! En lisant le dernier paragraphe, vous pourriez penser que noussommes un peu en guerre contre les modèles polygonaux. Ce n’est pas le cas. Pour l’instant, les mod-èles polygonaux sont le seul moyen de prévisualiser une géométrie complexe en utilisant des graphiquesaccélérés au niveau des cartes graphiques. Mais même si RenderMan prend en charge le rendu des modèlespolygonaux, leur utilisation comme primitive n’est pas recommandée pour de bonnes raisons. En d’autrestermes, utilisez les modèles polygonaux dans le modeleur comme représentation rapide de vos objets deniveau supérieur, mais s’il vous plaît, si vous allez réellement restituer quelque chose, n’utilisez pas cettereprésentation polygonale. Si vous voulez plutôt utiliser une représentation polygonale complète, hé bien, ilexiste de bons modeleurs.

8.15 References

Suggestions de lecture :• Advanced RenderMan: Creating CGI for Motion Pictures by Tony Apodaca and Larry Gritz (Morgan-

Kaufmann, 1999)

• The RenderMan Companion: A Programmer’s Guide to Realistic Computer Graphics by Steve Upstill(Addison-Wesley, 1989)

• Textures and Modelling: A Procedural Approach by Ebert, Musgrave, Peachey, Perlin, and Worley(Academic Press, 1994)

Ressources internet relatives à Ayam :• Si vous lisez ce document à partir d’un système de fichiers local, une version mise à jour est peut-être

disponible sur Internet :

http://ayam.sourceforge.net/docs/ayam.html

• Tutoriel Ayam #1:

http://ayam.sourceforge.net/tut1/tutorial1.html

• FAQ Ayam :

http://ayam.sourceforge.net/faq.html

Resources internet relatives à RenderMan :• Le référentiel RenderMan : http://www.renderman.org/

La ressource originale est maintenant malheureusement hors ligne, tentez votre chance avec :Internet Archive copy from 12. Dec 2011 .

• L’académie RenderMan : http://www.rendermanacademy.com/La ressource originale est maintenant malheureusement hors ligne, tentez votre chance avec :Internet Archive copy from 19. Dec 2007 .

Page 511: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

8. Divers 511

8.16 Remerciements

Tout d’abord, je tiens à exprimer un grand "merci" à Bernd (Pink) Sieker. C’est le premier vrai utilisateurde Mops et le premier bêta-testeur, qui m’a incité ces dernières années par e-mail et sur IRC à corriger cebug particulier, à ajouter quelques fonctionnalités essentielles, à déplacer les lumières à nouveau etc. pp. end’innombrables itérations. Bernd, sans votre aide, je n’en serais sûrement pas là, merci !

• Hynek Schlawack: Ayam Makefile configuration GUI

• Florian Kirsch: OpenCSG

• Bertrand Coconnier: la mise en oeuvre de la sélection d’objets

• Hermann Birkholz: la mise en oeuvre initiale du widget de l’arbre, la prise en charge de la carte desombres, l’IA et l’IDR

• Frank (Copper) Pagels: Objet personnalisé MetaBalls, analyseur TTF, fournisseur de beaucoup debonne musique

• Stephen Echavia: Icones

• Larry Gritz: BMRT

• Benjamin Bederson, Brian Paul et. al.: le widget Togl

• Jeffrey Hobbs: tkMegaWidget set

• Jan Nijtmans: Tcl/Tk PlusPatches, tcl2c, Wrap

• Georgios Petasis: tkdnd

• Thomas E. Burge: La boîte à outils Affine

• Apple, Duet Development Corp.: parseur 3DMF

• Mark J. Kilgard: GLUT

• Les A. Piegl and Wayne Tiller: Le livre des NURBS

• W. T. Hewitt and D. Yip: La bibliothèque des procédures NURBS

• Philippe Lavoie: la biliothèque NURBS++

• Tom Cashman: la biliothèque snurbs (Subdivision NURBS)

• George W. Hart: générateur de polyèdres en notation Conway

• Tous ceux qui ont participé au développement de Tcl/Tk, OpenGL, l’interface RenderMan

Page 512: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

8. Divers 512

8.17 Trademarks

OpenGL (R) is a registered trademark of Silicon Graphics, Inc.

The RenderMan (R) Interface Procedures and Protocol are: Copyright 1988, 1989, 2000 Pixar All RightsReserved

RenderMan (R) is a registered trademark of Pixar

The Affine Libraries and Tools are Copyright (c) 1995, 1996, 1997, 1998 Thomas E. Burge All rightsreserved.

Affine (R) is a registered trademark of Thomas E. Burge.

TIFF Software is Copyright (c) 1988-1997 Sam Leffler Copyright (c) 1991-1997 Silicon Graphics, Inc.

Dime is Copyright (c) 1998-1999 Systems In Motion, SA All rights reserved.

AutoCAD (R) is a registered trademark of Autodesk, Inc.

DXF (R) is a registered trademark of Autodesk, Inc.

Page 513: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

9. Index 513

9 Index

Aperçu :

0 – page 513

A – page 513

B – page 514

C – page 515

D – page 517

E – page 518

F – page 519

G – page 520

H – page 520

I – page 521

J – page 522

K – page 522

L – page 522

M – page 523

N – page 524

O – page 524

P – page 525

Q – page 526

R – page 526

S – page 529

T – page 532

U – page 534

V – page 534

W – page 534

X – page 535

Y – page 535

Z – page 535

Index:

0

2lcons.tcl: 6.5.7 Restreindre la console (page 430)

3DM:• 7.12 Importation 3DM (Rhino) (page 475),

• 7.13 Exportation 3DM (Rhino) (page 477)

3DMF:• 7.10 Importation 3DMF (Apple) (page 472),

• 7.11 Exportation 3DMF (Apple) (page 473)

A

aac.tcl: 6.5.9 Automatismes avec les actions de cen-trage (???? Automatic About Center Actions)(page 431)

AAFudge: 8.4.2 Paramètres de préférences cachés(page 492)

AALineWidth, AASelLineWidth: 8.4.2 Paramètresde préférences cachés (page 492)

About: 2.2 main menu entry (page 42)

Accuracy:• 7.12.2 Options de l’importation 3DM (page

476),

• 7.13.2 Options d’exportation 3DM (page477)

ACurve: 4.4.3 Les courbes approximées (ACurve)(page 154)

Action:• 3 Les actions de modélisation (page 74),

• 2.9 Recherche d’objets (page 56)

Active: 4.9.1 Propriété ScriptAttr (page 227)

Adaptive: 4.9.6 Propriété MetaObjAttr (page 243)

AdaptiveDomainDistance, AdaptiveKnotDistance:2.10.5 NURBS tessellation mode (page 73)

Add RiOption, RiAttribute, Property, Tag: 2.2 Tagmanagement (page 41)

Add Tag: 2.2 Tag management (page 41)

AddExtensions: 2.10.1 La sous-section suivante con-tient les paramètres relatifs à l’interface graphiqueutilisateur (GUI). (page 61)

addPropertyGUI: 6.2.25 scripting interface command(page 409)

addTag: 6.2.11 addTag: (page 377)

addToProc: 6.2.26 addToProc: (page 419)

AddViewParams: 8.4.2 Paramètres de préférencescachés (page 492)

ALength: 4.4.3 Propriété ACurveAttr (page 154)

ALFileTypes, ALPlugins: 8.4.2 Paramètres depréférences cachés (page 492)

AllowWarp: 8.4.2 Paramètres de préférences cachés(page 492)

Algorithm: 8.10 Aperçu CSG à l’aide du pluginAyCSG (page 504)

Align to Object:• 2.5 view menu entry (page 47),

• 2.6 Afficher les raccourcis et les actions surla fenêtre (page 51)

Angle: 6.6.5 Spirale (page 444)

Page 514: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

9. Index 514

ANS: 4.11.16 Balise ANS (After Notify Script) (page267)

AntiAlias Lines: 2.5 view menu entry (page 47)

apnt.tcl: 6.5.10 Automatisation des actions sur lespoints (page 431)

Approximate:• 4.4.3 Les courbes approximées (ACurve)

(page 154),

• 5.3.22 Outil d’approximation (Approximate)(page 299)

approxNC: 6.2.14 scripting interface command (page389)

Apply: 2.1.2 Propriétés (page 26)

Apply To All/Selected: 2.2 sous-menu pour les outilsqui travaillent sur les points (page 38)

ApplyTrafo:• 5.6.4 Outil de construction à partir de

courbes (Build from Curves) (page 330),

• 5.6.3 Outil décomposition en courbes (Breakinto Curves) (page 329)

applyTrafo: 6.2.9 scripting interface command (page374)

Archives:• 4.2.1 Les propriétés RiOptions (page 110),

• 4.2.11 L’objet RiInc (page 137),

• 4.2.12 L’objet RiProc (page 138)

Area Light: 4.2.4 Utiliser des sources lumineusesétendues (page 121)

Array: 4.2.8 L’objet Clone (page 131)

AskScriptDisable: 8.4.2 Paramètres de préférencescachés (page 492)

Atmosphere: 4.2.1 Les propriétés de l’imageur et del’atmosphère (page 112)

Attributes:• 4.10.2 Propriété Attributes (page 249),

• 4.2.5 Propriété RiAttributes (page 122),

• 4.11.1 Balise RiAttribute (page 257)

AUCommands: 8.4.2 Paramètres de préférencescachés (page 492)

AutoCAD DXF:• 7.6 Importation AutoCAD DXF (page 466),

• 7.7 Exportation AutoCAD DXF (page 468)

AutoCloseUI: 2.10.4 Préférences d’exportation RIB(page 68)

AutoFocus: 2.10.1 La sous-section suivante contientles paramètres relatifs à l’interface graphique util-isateur (GUI). (page 61)

Automatic Instancing: 2.2 Menu spécial (page 40)

Automatic Redraw: 2.5 view menu entry (page 47)

AutoResize: 2.10.1 La sous-section suivante contientles paramètres relatifs à l’interface graphique util-isateur (GUI). (page 61)

AutoSavePrefs: 2.10.1 La sous-section suivante con-tient les paramètres relatifs à l’interface graphiqueutilisateur (GUI). (page 61)

AvoidPwlCurve: 8.4.2 Paramètres de préférencescachés (page 492)

ayamrc: 8.4 Le fichier Ayamrc (page 490)

ayError: 6.2.24 scripting interface command (page409)

aytest.tcl: 6.5.2 Tester Ayam (page 428)

B

B-Spline:• 4.4.1 Propriété NCurveAttr (page 147),

• 4.6.4 Propriété PatchMeshAttr (page 174),

• 4.9.4 Propriété BCurveAttr (page 238)

Backdrop: 4.2.1 Les propriétés de l’imageur et del’atmosphère (page 112)

Tâche de fond : 2.10.3 Les préférences de dessin(page 66)

Background Image: 4.2.2 La propriété ViewAttrib(page 114)

BackupExt: 8.4.2 hidden preference setting (page493)

BakOnReplace: 2.10.1 Les préférences principales(page 61)

Balloon: 8.4.2 hidden preference setting (page 493)

Basis: 4.9.4 Propriété BCurveAttr (page 238)

Basis_U, Basis_V: 4.6.4 Propriété PatchMeshAttr(page 174)

BCurve: 4.9.4 L’objet BCurve (Basis Curve - courbede base) (page 238)

BeamDistrib: 4.2.4 Propriété LightAttr (page 116)

Bevel:• 4.7.9 Les biseaux (Bevel) (page 203),

• 5.4.7 Outil de biseau (Bevel) (page 308),

• 4.10.6 Propriété Bevels (page 253),

• 4.7.2 Utilisation des Trous et Biseaux (page179)

Bevel3D: 4.5.3 Propriété OffsetNCAttr (page 165)

Page 515: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

9. Index 515

BevelRadius, BevelRevert, BevelType: 4.7.9 Pro-priété BevelAttr (page 204)

Bezier:• 4.4.1 Propriété NCurveAttr (page 147),

• 4.6.4 Propriété PatchMeshAttr (page 174),

• 4.9.4 Propriété BCurveAttr (page 238)

bgconvert.tcl: 6.5.3 Utiliser Ayam comme convertis-seur de ligne de commande (page 428)

BGImage: 4.2.2 La propriété ViewAttrib (page 114)

bicubic/bilinear PatchMesh: 4.6.4 Les patchs maillés(PatchMesh) (page 174)

Birail1:• 4.7.5 L’objet Birail1 (page 189),

• 5.4.9 Outil de rail double 1 (Birail1) (page308)

Birail2:• 4.7.6 L’objet Birail2 (page 192),

• 5.4.10 Outil de rail double 2 (Birail2) (page309)

BNS: 4.11.15 Balise BNS (Before Notify Script)(page 265)

Bound: 4.2.5 Propriété RiAttributes (page 122)

BoundCoord: 4.2.5 Propriété RiAttributes (page 122)

Box: 4.3.1 L’objet boîte (Box) (page 139)

BP: 4.11.18 Balise BP (Bevel Parameters) (page 268)

BPatch: 4.6.3 Patch bilinéaires (BPatch) (page 173)

Break: 5.6.3 Outil décomposition en courbes (Breakinto Curves) (page 329)

breakNP: 6.2.15 scripting interface command (page398)

Breakpoint: 3.20 Trouver des points sur les courbes(page 97)

BStep: 4.9.4 Propriété BCurveAttr (page 238)

BType: 4.9.4 Propriété BCurveAttr (page 238)

BType_U, BType_V: 4.6.4 Propriété PatchMeshAttr(page 174)

Build: 5.6.4 Outil de construction à partir de courbes(Build from Curves) (page 330)

buildNP: 6.2.15 scripting interface command (page398)

C

CalcBBS: 8.10 Aperçu CSG à l’aide du pluginAyCSG (page 504)

Camera:

• 4.2.3 L’objet Camera (page 115),

• 4.2.2 La propriété Camera (page 113)

candelOb: 6.2.3 scripting interface command (page362)

Cap:• 4.7.10 Les bouchons (Cap) (page 207),

• 5.4.8 Outil de bouchonnage (Cap) (page308),

• 4.10.5 Propriété Caps (page 252)

CastShadows: 4.2.5 Propriété RiAttributes (page122)

Cat: 8.4.2 hidden preference setting (page 493)

Catmull-Clark: 4.8.2 Propriété SDMeshAttr (page223)

Catmull-Rom:• 4.6.4 Propriété PatchMeshAttr (page 174),

• 4.9.4 Propriété BCurveAttr (page 238)

cbox.tcl: 6.6.2 Boîte avec topologie cylindrique(page 441)

Chamfer: 4.7.9 Les biseaux (Bevel) (page 203)

CheckLights: 2.10.4 Préférences d’exportation RIB(page 68)

Chordal: 4.4.1 Propriété NCurveAttr (page 147)

Center All Points: 2.2 sous-menu pour les outils quitravaillent sur les points (page 38)

Centripetal: 4.4.1 Propriété NCurveAttr (page 147)

Circle:• 5.2.2 Outil cercle NURBS (NURBCircle)

(page 273),

• 4.4.4 L’objet NCircle (Cercle NURBS) (page156)

Clamp:• 5.3.11 Outil de resserrage (Clamp) (page

287),

• 5.5.8 Outil de serrage de surface (Clamp Sur-face) (page 319)

clampNC: 6.2.14 scripting interface command (page383)

clampuNP: 6.2.15 scripting interface command (page390)

clampvNP: 6.2.15 scripting interface command (page390)

Clear: 2.2 Menu spécial (page 40)

ClearHighlight: 2.9 Recherche d’objets (page 56)

ClearClipboard: 2.9 Recherche d’objets (page 56)

clearClip: 6.2.7 scripting interface command (page370)

Page 516: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

9. Index 516

Clipboard:• 2.2 Menu principal (page 33),

• 2.2 Menu spécial (page 40),

• 6.2.7 Opérations avec le presse-papiers (page369)

Clone: 4.2.8 L’objet Clone (page 131)

Close: 5.3.3 Outil de fermeture (Close) (page 279)

closeC: 6.2.12 scripting interface command (page380)

Closed:• 4.3.2 Propriété SphereAttr (page 140),

• 4.3.4 Propriété ConeAttr (page 142),

• 4.3.5 Propriété CylinderAttr (page 143),

• 4.3.6 Propriété TorusAttr (page 144),

• 4.3.7 Propriété ParaboloidAttr (page 145),

• 4.3.8 Propriété HyperboloidAttr (page 146),

• 4.4.1 Propriété NCurveAttr (page 147),

• 4.5.1 Propriété ConcatNCAttr (page 159),

• 4.9.4 Propriété BCurveAttr (page 238),

• 4.9.5 Propriété SDCurveAttr (page 240)

Closed B-Spline: 5.2.1 Outil courbes B-spline circu-laires (Circular B-Spline) (page 272)

Close_U, Close_V:• 4.6.4 Propriété PatchMeshAttr (page 174),

• 4.6.2 Propriété IPatchAttr (page 171)

Coarsen: 5.3.7 Outil d’approximation (Coarsen)(page 283)

CoarsenC: 6.2.12 scripting interface command (page380)

Cobb NURBS Sphere: 5.4.2 Outil sphère NURBS 2(NURBSphere2) (page 305)

Collapse:• 5.3.28 Outil de regroupement de points (Col-

lapse Points) (page 304),

• 2.1.1 tree context menu entry (page 21)

colfocus.tcl: 6.5.8 Colorer la bague de mise au point(????focus ring) (page 430)

Color:• 4.2.5 Propriété RiAttributes (page 122),

• 4.2.4 Propriété LightAttr (page 116)

Compatible: 4.7.11 Propriété ConcatNPAttr (page210)

CompleteNotify: 2.10.2 Préférences de modélisation(page 64)

Concat: 5.3.17 Outil de concaténation (Concat) (page294)

concatC: 6.2.12 scripting interface command (page381)

ConcatNC: 4.5.1 L’objet ConcatNC (Concatène lescourbes NURBS) (page 158)

ConcatNP: 4.7.11 Concaténer (relier) les patchNURBS (ConcatNP) (page 210)

concatS: 6.2.13 scripting interface command (page382)

Cone: 4.3.4 L’objet Cône (Cone) (page 142)

ConeAngle, ConeDAngle: 4.2.4 Propriété LightAttr(page 116)

Connect: 2.2 Connect PolyMesh tool (page 37)

Console: 2.1.3 La console (page 29)

ConsoleCursorEnd: 8.4.2 hidden preference setting(page 493)

ConsoleTakeFocus: 8.4.2 hidden preference setting(page 493)

Context Menu:• 2.1.1 object tree context menu (page 21),

• 2.1.1 object listbox context menu (page 24),

• 2.1.2 property listbox context menu (page26),

• 2.1.3 console context menu (page 30),

• 4.9.1 Script context menu (page 228),

• 4.10.7 Tags property context menu (page254),

• 3.12 Numeric point edit context menu (page90)

Convert: 2.2 main menu entry (page 37)

ConvertTags: 8.4.2 hidden preference setting (page493)

convOb: 6.2.26 scripting interface command (page414)

Coons Patch: 4.7.8 Surface de Gordon (page 199)

copOb: 6.2.7 scripting interface command (page369)

Copy: 2.2 Menu principal (page 33)

Copy (Add): 2.2 Menu spécial (page 40)

Copy Property:• 2.2 Menu principal (page 33),

• 2.1.2 Propriétés (page 26)

Corner: 4.8.2 L’objet SDMesh (page 223)

CP: 4.11.19 Balise CP (Cap Parameters) (page 268)

Crease: 4.8.2 L’objet SDMesh (page 223)

Create: 2.2 create menu (page 35)

CreateAtMark: 2.10.2 Préférences de modélisation(page 64)

Page 517: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

9. Index 517

CreateMP:• 4.4.1 Propriété NCurveAttr (page 147),

• 4.6.1 Propriété NPatchAttr (page 166)

Create ShadowMap:• 2.2 Menu spécial (page 40),

• 2.5 view menu entry (page 45)

crtClosedBS: 6.2.2 scripting interface command(page 359)

crtNCircle: 6.2.2 crtNCircle – créé un cercleNURBS: (page 359)

crtNRect: 6.2.2 scripting interface command (page359)

crtTrimRect: 6.2.2 scripting interface command(page 361)

crtOb: 6.2.2 scripting interface command (page 343)

CSG:• 4.2.6 L’objet Level (niveau) (page 125),

• 8.10 Aperçu CSG à l’aide du plugin AyCSG(page 504)

CullFaces: 8.4.2 hidden preference setting (page493)

curvatNC: 6.2.14 scripting interface command (page389)

curvatNP: 6.2.15 scripting interface command (page400)

Curvature: 5.3.20 Outil de tracé de courbure (PlotCurvature) (page 297)

curvature.tcl: 6.5.22 Tracé de la courbure (page 435)

Curves: 4.4 Les courbes libres (page 147)

Custom:• 2.2 custom menu (page 39),

• 4.4.1 Propriété NCurveAttr (page 147)

• 4.2.4 Les sources de lumières personnalisées(Custom) : (page 116),

• 4.6.4 Propriété PatchMeshAttr (page 174),

• 4.9.4 Propriété BCurveAttr (page 238)

Custom Object: 4.9.2 Gestion des objets personnal-isés (page 235)

Cut: 2.2 Menu principal (page 33)

Cut (Add): 2.2 Menu spécial (page 40)

cutOb: 6.2.7 scripting interface command (page 369)

cvview.tcl: 6.5.21 Vue du sommet de contrôle (page434)

CycleHiddenWire: 8.4.2 hidden preference setting(page 493)

CyclePerspective: 8.4.2 hidden preference setting(page 493)

Cylinder: 4.3.5 L’objet cylindre (Cylinder) (page143)

D

DANS: 4.11.16 Balise ANS (After Notify Script)(page 267)

Data: 4.2.12 Propriété RiProcAttr (page 138)

DC: 4.11.12 Balise DC (Depth Complexity) (page264)

DCSampling: 8.10 Aperçu CSG à l’aide du pluginAyCSG (page 504)

DefaultAction: 2.10.2 Préférences de modélisation(page 64)

DefaultMat: 2.10.4 Préférences d’exportation RIB(page 68)

Degree:• 4.9.7 Propriété SDNPatchAttr (page 245),

• see also 9 Option: (page 525),

• Elevation: see also 9 EFlush: (page 518),

• Reduction: see also 9 Reduce (page 527)

DelayedReadArchive: 4.2.12 Propriété RiProcAttr(page 138)

delegTrafo: 6.2.9 scripting interface command (page374)

Delete:• 2.2 Menu principal (page 33),

• 3.18 Insérer ou supprimer des points (page95)

delOb: 6.2.2 scripting interface command (page 361)

Deselect All Points: 2.2 sous-menu pour les outilsqui travaillent sur les points (page 38)

Deselect Object: 2.1.1 tree context menu entry (page21)

Derivatives: 4.4.2 Propriété ICurveAttr (page 153)

Derivatives_U, Derivatives_V: 4.6.2 PropriétéIPatchAttr (page 171)

Difference: 4.2.6 L’objet Level (niveau) (page 125)

Direct Editing: 3.12 Éditer des Points (page 88)

DisableFailedScripts: 8.4.2 hidden preference setting(page 493)

Disk: 4.3.3 L’objet disque (Disk) (page 141)

Displacement: 4.2.5 Les propriétés Surface, Dis-placement, Interior et Exterior (page 123)

Display: 4.11.6 Balise RiDisplay (page 262)

Page 518: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

9. Index 518

DisplayDriver: 2.10.4 Préférences d’exportation RIB(page 68)

DisplayPath: 8.4.2 hidden preference setting (page493)

DisplayMode:• 4.4.1 Propriété NCurveAttr (page 147),

• 4.6.1 Propriété NPatchAttr (page 166)

Distant: 4.2.4 Point, Distant, and Spotlights : (page116)

DBNS: 4.11.15 Balise BNS (Before Notify Script)(page 265)

Docs: 2.10.1 La sous-section suivante contient lesparamètres relatifs à l’interface graphique utilisa-teur (GUI). (page 61)

Double Size: 2.5 view menu entry (page 47)

downOb: 6.2.8 scripting interface command (page372)

dualsweep.tcl: 6.6.6 Double balayage (DualSweep)(page 445)

DrawGrid, DrawLevel, DrawSel, DrawBG: 4.2.2 Lapropriété ViewAttrib (page 114)

Draw BGImage: 2.5 view menu entry (page 47)

Draw Grid: 2.5 view menu entry (page 47)

Draw Level only: 2.5 view menu entry (page 47)

Draw Object CS: 2.5 view menu entry (page 47)

Draw Selection only: 2.5 view menu entry (page 47)

Drawing modes: 2.7 Modes de dessin (page 53)

DrawSub: 4.8.2 Propriété SDMeshAttr (page 223)

dtree.tcl: 6.5.20 Arbre dynamique (page 434)

DXF:• 7.6 Importation AutoCAD DXF (page 466),

• 7.7 Exportation AutoCAD DXF (page 468)

DynamicLoad: 4.2.12 Propriété RiProcAttr (page138)

DZ: 6.6.4 Hélicoïde (helix) (page 443)

E

Edit:• 3.12 Éditer des Points (page 88),

• 2.2 Menu principal (page 33)

Edit Local:• 2.5 view menu entry (page 47),

• 3.24 L’édition dans les espaces locaux (page101)

Edit TexCoords: 2.2 Tag management (page 41)

EditSnaps: 2.10.2 Préférences de modélisation (page64)

EDLen: 4.4.2 Propriété ICurveAttr (page 153)

EFlush: 8.4.2 hidden preference setting (page 493)

Elevate:• 5.3.8 Outil d’élévation (Elevate) (page 284),

• 5.5.6 Outil d’augmentation de l’ordre de lasurface (Elevate Surface) (page 317)

elevateNC: 6.2.14 scripting interface command (page383)

elevateuNP: 6.2.15 scripting interface command(page 393)

elevatevNP: 6.2.15 scripting interface command(page 394)

EnableEffacer : 4.2.2 La propriété ViewAttrib (page114)

Enable Scripts: 2.2 Menu Spécial (page 40)

EndBevel: 4.7.2 Propriété ExtrudeAttr (page 179)

EndCap: 4.7.2 Propriété ExtrudeAttr (page 179)

EnvFile: 2.10.1 La sous-section suivante contient lesparamètres relatifs à l’interface graphique utilisa-teur (GUI). (page 61)

Environment Variables: 8.5 Variablesd’environnement (page 500)

Epsilon: 4.9.6 Propriété MetaObjAttr (page 243)

ErrorLevel: 2.10.5 Préférences diverses (page 72)

estlenNC: 6.2.14 scripting interface command (page386)

evaluate curve/surface: 6.2.17 scripting interfacecommand (page 402)

ExcludeHidden: 2.10.4 Préférences d’exportationRIB (page 68)

Expand: 2.1.1 tree context menu entry (page 21)

ExpGain, ExpGamma: 4.2.1 Les propriétés RiOp-tions (page 110)

Explode: 5.3.29 Outil d’éclatement de point multiple(Explode Points) (page 304)

Export:• 7.13 Exportation 3DM (Rhino) (page 477),

• 7.11 Exportation 3DMF (Apple) (page 473),

• 7.7 Exportation AutoCAD DXF (page 468),

• 7.9 Exportation Wavefront OBJ (page 470),

• 7.4 Exportation RIB (RenderMan InterfaceBytestream) (page 465),

• 7.14 Importation X3D (Web3D) (page 478)

Export RIB: 2.2 main menu entry (page 30)

Page 519: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

9. Index 519

ExportSetsCD: 2.10.5 Préférences diverses (page 72)

Expression:• 2.9 Recherche d’objets (page 56)

• 4.9.6 Propriété MetaCompAttr (page 243)

extendNC: 6.2.14 scripting interface command (page383)

Extend: 5.3.10 Outil d’extension (Extend) (page 286)

Exterior: 4.2.5 Les propriétés Surface, Displacement,Interior et Exterior (page 123)

Extract:• 5.6.1 Outil d’extraction de courbe (Extract

Curve) (page 328),

• 5.6.2 Outil d’extraction de patch (ExtractPatch) (page 328)

ExtrNC:• 4.5.2 L’objet ExtrNC (Extraction de courbe

NURBS) Object (page 161),

• 5.6.1 Outil d’extraction de courbe (ExtractCurve) (page 328),

• 6.2.14 scripting interface command (page386)

ExtrNP:• 4.7.12 Extraction d’un patch NURBS (Ex-

trNP) (page 213),

• 5.6.2 Outil d’extraction de patch (ExtractPatch) (page 328),

• 6.2.15 scripting interface command (page395)

Extrude:• 4.7.2 Les surfaces par extrusions (Extrude)

(page 178),

• 5.4.5 Outil d’extrusion (Extrude) (page 307)

extruden.tcl: 6.6.8 Extrusion le long de la normale(page 447)

F

Face Extrude/Remove/Merge/Connect: 4.9.7 SD-NPatch modelling action (page 246)

Face normals: 2.2 PolyMesh tool (page 37)

fairNC: 6.2.14 scripting interface command (page389)

FAQ: 8.15 References (page 510)

Far: 4.2.2 La propriété Camera (page 113)

FDisplay: 2.10.4 Préférences d’exportation RIB(page 68)

FDShowHidden, FDShowHiddenBtn: 8.4.2 hiddenpreference setting (page 493)

File:• 2.2 file menu (page 30),

• 4.2.11 La propriété RiIncAttr (page 137),

• 4.2.12 Propriété RiProcAttr (page 138)

FillGaps:• 4.5.1 Propriété ConcatNCAttr (page 159),

• 4.7.11 Propriété ConcatNPAttr (page 210)

FilterFunc: 4.2.1 Les propriétés RiOptions (page110)

FilterWidth: 4.2.1 Les propriétés RiOptions (page110)

Find: 2.9 Recherche d’objets (page 56)

FindU: 3.20 Trouver des points sur les courbes (page97)

FindUV: 3.21 Trouver des points sur les surfaces(page 98)

FixDialogTitles: 8.4.2 hidden preference setting(page 493)

FixImageButtons: 8.4.2 hidden preference setting(page 493)

FixX11Menu: 8.4.2 hidden preference setting (page493)

FlashObjects: 8.4.2 hidden preference setting (page493)

FlashPoints: 2.10.2 Préférences de modélisation(page 64)

Flatness: 4.9.6 Propriété MetaObjAttr (page 243)

Flip Loops / Smooth Normals: 2.2 polymesh tool(page 37)

flipPo: 6.2.16 scripting interface command (page401)

FontName: 4.7.14 Propriété TextAttr (page 217)

forAll: 6.2.21 scripting interface command (page406)

Force3D: 4.7.9 Propriété BevelAttr (page 204)

Force Notification: 2.2 main menu entry (page 37)

Formula: 4.9.6 Propriété MetaCompAttr (page 243)

Fraction: 4.7.10 Propriété CapAttr (page 208)

FRender, FRenderPT, FRenderUI: 2.10.4Préférences d’exportation RIB (page 68)

From:• 4.2.2 La propriété Camera (page 113),

• 4.2.4 Propriété LightAttr (page 116)

From Camera:• 2.2 Menu spécial (page 40),

Page 520: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

9. Index 520

• 2.5 view menu entry (page 47)

Front: 2.5 view menu entry (page 47)

FTLength:• 4.5.1 Propriété ConcatNCAttr (page 159),• 4.7.11 Propriété ConcatNPAttr (page 210)

G

Gaussian curvature: 6.2.15 scripting interface com-mand (page 400)

Gen.Face/Smooth Normals: 2.2 polymesh tool (page37)

genfnPo: 6.2.16 scripting interface command (page401)

gensnPo: 6.2.16 scripting interface command (page401)

getBB: 6.2.3 scripting interface command (page 363)

getMark: 6.2.26 getMark: (page 418)

getName: 6.2.3 scripting interface command (page361)

getPlaneNormal: 6.2.3 scripting interface command(page 363)

getPnt: 6.2.17 scripting interface command (page402)

getPrefs: 6.2.19 scripting interface command (page405)

getProperty: 6.2.6 scripting interface command (page368)

getTag: 6.2.11 scripting interface command (page379)

getTags: 6.2.11 scripting interface command (page378)

getType: 6.2.3 scripting interface command (page361)

Gimbal Lock: 4.10.1 Comment utiliser les attributsde rotation ? (page 248)

Global: 3.24 L’édition dans les espaces locaux (page101)

GlobalMark: 2.10.2 Préférences de modélisation(page 64)

GLU: 2.10.3 Les préférences de dessin (page 66)

goDown: 6.2.8 scripting interface command (page371)

goTop: 6.2.8 scripting interface command (page 371)

Gordon:• 4.7.8 Surface de Gordon (page 199),• 5.4.11 Outil de Gordon (page 309)

goUp: 6.2.8 scripting interface command (page 371)

Grid:• 4.2.2 La propriété ViewAttrib (page 114),

• 2.10.3 Les préférences de dessin (page 66)

Group: 4.2.6 L’objet Level (niveau) (page 125)

H

Half Size: 2.5 view menu entry (page 47)

handedness: 1.2.3 Systèmes de coordonnées et unités(page 18)

HandleSize: 2.10.2 Préférences de modélisation(page 64)

hasChild: 6.2.3 scripting interface command (page361)

hasMat: 6.2.3 scripting interface command (page362)

hasRefs: 6.2.3 scripting interface command (page362)

hasTag: 6.2.11 scripting interface command (page378)

hasTrafo: 6.2.3 scripting interface command (page362)

Height:• 4.2.1 Les propriétés RiOptions (page 110),

• 4.3.1 Propriété BoxAttr (page 139),

• 4.3.4 Propriété ConeAttr (page 142),

• 4.6.1 Propriété NPatchAttr (page 166),

• 4.6.2 Propriété IPatchAttr (page 171),

• 4.6.4 Propriété PatchMeshAttr (page 174),

• 4.7.2 Propriété ExtrudeAttr (page 179),

• 4.2.2 La propriété ViewAttrib (page 114),

• 4.7.14 Propriété TextAttr (page 217),

• 4.2.11 La propriété RiIncAttr (page 137)

helix.tcl: 6.6.4 Hélicoïde (helix) (page 443)

Help:• 2.2 main menu entry (page 42),

• 6.2.1 Obtenir de l’aide sur les commandes del’interface de script (page 342)

Help on object: 2.2 main menu entry (page 42)

Help on property: 2.2 main menu entry (page 42)

Hermite:• 4.6.4 Propriété PatchMeshAttr (page 174),

• 4.9.4 Propriété BCurveAttr (page 238)

Page 521: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

9. Index 521

Hidden Preferences: 8.4.2 Paramètres de préférencescachés (page 492)

HiddenWire:2.5 view menu entry (page 47)

Hide:• 2.2 main menu entry (page 37),

• 4.10.2 Propriété Attributes (page 249)

Hide All: 2.2 main menu entry (page 37)

Hider: 4.11.5 Balise RiHider (page 261)

HighlightColor: 2.9 Recherche d’objets (page 56)

Hole:• 4.7.2 Utilisation des Trous et Biseaux (page

179),

• 4.8.2 L’objet SDMesh (page 223)

hSL: 6.2.4 scripting interface command (page 366)

Hyperboloid: 4.3.8 L’objet hyperboloïde (Hyper-boloid) (page 146)

I

IconGamma: 8.4.2 hidden preference setting (page494)

ICurve: 4.4.2 Les courbes interpolées (ICurve) (page152)

IDR: 8.9 Rendu piloté par l’importance (ImportanceDriven Rendering IDR) (page 503)

IgnoreHidden: 7.13.2 Options d’exportation 3DM(page 477)

IgnoreNormals: 2.2 Optimize PolyMesh tool option(page 37)

Image: 2.10.4 Préférences d’exportation RIB (page68)

Imager: 4.2.1 Les propriétés de l’imageur et del’atmosphère (page 112)

Import:• 7.12 Importation 3DM (Rhino) (page 475),

• 7.10 Importation 3DMF (Apple) (page 472),

• 7.6 Importation AutoCAD DXF (page 466),

• 7.5 Importation Mops (page 466),

• 7.3 Importation de RenderMan InterfaceBytestream (RIB) (page 463),

• 7.8 Importation Wavefront OBJ (page 469),

• 7.14 Importation X3D (Web3D) (page 478)

Importance Driven Rendering: 8.9 Rendu piloté parl’importance (Importance Driven Rendering IDR)(page 503)

ImportSetsCD: 2.10.5 Préférences diverses (page 72)

Include: 4.2.11 L’objet RiInc (page 137)

Indices: 4.2.10 Propriété SelectAttrib (page 136)

Input Plane: 3.24 L’édition dans les espaces locaux(page 101)

Insert:• 2.2 main menu entry (page 30),

• 3.18 Insérer ou supprimer des points (page95)

insknNC: 6.2.14 scripting interface command (page384)

insknuNP: 6.2.15 scripting interface command (page391)

insknvNP: 6.2.15 scripting interface command (page392)

Insert Knot:• 5.3.13 Outil d’insertion de noeud (Insert

Knot) (page 289),

• 5.5.10 Outil d’insertion de noeuds (InsertKnot Surface) (page 321)

insertScene: 6.2.22 scripting interface command(page 407)

Instance: 4.2.7 L’objet Instance (page 128)

Instant Apply: 2.1.2 Propriétés (page 26)

Integrate:• 4.10.5 Propriété Caps (page 252),

• 4.10.6 Propriété Bevels (page 253)

Intensity: 4.2.4 Propriété LightAttr (page 116)

Interior: 4.2.5 Les propriétés Surface, Displacement,Interior et Exterior (page 123)

interpNC: 6.2.14 scripting interface command (page388)

Interpolate:• 4.7.4 Propriété SweepAttr (page 186),

• 4.7.7 Propriété SkinAttr (page 197),

• 5.3.21 Outil d’interpolation (Interpolate)(page 298),

• 5.5.14 Outil d’interpolation de surface (Inter-polate Surface) (page 325)

Interpolate Boundary: 4.8.2 L’objet SDMesh (page223)

Interpolation: 4.10.2 Propriété Attributes (page 249)

InterpolCtrl: 4.7.6 Propriété Birail2Attr (page 193)

interpuNP: 6.2.15 scripting interface command (page396)

interpvNP: 6.2.15 scripting interface command (page397)

Intersection: 4.2.6 L’objet Level (niveau) (page 125)

Page 522: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

9. Index 522

intfd.tcl: 6.5.16 Changer les dialogues de fichiers enTcl (page 433)

InvertMatch: 2.9 Recherche d’objets (page 56)

Invert Selection: 2.2 sous-menu pour les outils quitravaillent sur les points (page 38)

IPatch: 4.6.2 Les patch interpolés (IPatch) (page 171)

isClosed: 6.2.3 scripting interface command (page363)

isCompNC: 6.2.14 scripting interface command(page 387)

isCompNP: 6.2.15 scripting interface command(page 399)

isCurve: 6.2.3 scripting interface command (page362)

isDegen: 6.2.3 scripting interface command (page364)

IsLocal: 4.2.4 Propriété LightAttr (page 116)

isParent: 6.2.3 scripting interface command (page364)

isPlanar: 6.2.3 scripting interface command (page363)

IsoLevel: 4.9.6 Propriété MetaObjAttr (page 243)

IsOn: 4.2.4 Propriété LightAttr (page 116)

IsRat:• 4.4.1 Propriété NCurveAttr (page 147),

• 4.6.1 Propriété NPatchAttr (page 166),

• 4.6.4 Propriété PatchMeshAttr (page 174)

isSurface: 6.2.3 scripting interface command (page362)

isTrimmed: 6.2.3 scripting interface command (page364)

J

JavaScript: 6.7 Interface de script JavaScript (page450)

K

kdialog.tcl: 6.5.14 Passer des dialogues à Kdialog(page 432)

KeepNTmpFiles: 8.4.2 hidden preference setting(page 494)

KeepParamGUI: 8.4.2 hidden preference setting(page 494)

Keyboard Shortcuts:

• 2.3 Raccourcis clavier de la fenêtre princi-pale (page 44),

• 2.2 Le menu principal (page 30),

• 2.6 Afficher les raccourcis et les actions surla fenêtre (page 51),

• 2.5 Menu d’une vue (page 45),

• 2.1.1 Raccourcis de l’arborescence des ob-jets (page 23),

• 2.1.1 Raccourcis de la liste des objets (page24)

Kill: 8.4.2 hidden preference setting (page 494)

Knots: 4.4.1 Propriété NCurveAttr (page 147)

Knot-Type:• 4.4.1 Propriété NCurveAttr (page 147),

• 4.5.1 Propriété ConcatNCAttr (page 159),

• 4.7.11 Propriété ConcatNPAttr (page 210)

Knot-Type_U:• 4.6.1 Propriété NPatchAttr (page 166),

• 4.6.2 Propriété IPatchAttr (page 171),

• 4.7.7 Propriété SkinAttr (page 197)

Knot-Type_V:• 4.6.1 Propriété NPatchAttr (page 166),

• 4.6.2 Propriété IPatchAttr (page 171)

L

Last (None): 2.2 main menu entry (page 37)

Lathe: 4.7.1 Les surfaces de révolution (Revolve)(page 176)

LazyNotify: 2.10.2 Préférences de modélisation(page 64)

LazyUpdate: 5.6.5 Outil de tessellation (triangulari-sation) (page 331)

Length:• 4.3.1 Propriété BoxAttr (page 139),

• 4.4.1 Propriété NCurveAttr (page 147),

• 4.4.3 Propriété ACurveAttr (page 154),

• 4.4.2 Propriété ICurveAttr (page 153),

• 4.2.11 La propriété RiIncAttr (page 137),

• 4.9.4 Propriété BCurveAttr (page 238),

• 4.9.5 Propriété SDCurveAttr (page 240),

• 6.6.4 Hélicoïde (helix) (page 443),

• 6.6.5 Spirale (page 444)

Level:• 4.2.6 L’objet Level (niveau) (page 125),

Page 523: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

9. Index 523

• 4.9.5 Propriété SDCurveAttr (page 240),

• 4.8.2 Propriété SDMeshAttr (page 223),

• 4.9.7 Propriété SDNPatchAttr (page 245)

Light:• 4.2.4 L’objet Light (page 116),

• 2.10.3 Les préférences de dessin (page 66)

LightAttr: 4.2.4 Propriété LightAttr (page 116)

LightShader: 4.2.4 L’objet Light (page 116)

Linear: 4.7.9 Propriété BevelAttr (page 204)

LineWidth: 8.4.2 hidden preference setting (page494)

ListTypes: 8.4.2 hidden preference setting (page 494)

List View: 2.1.1 Object Listbox (page 24)

LoadEnv: 8.4.2 Définitions des préférencesmasquées (page 494)

Load Plugin: 2.2 main menu entry (page 30)

Local:• 4.2.2 La propriété ViewAttrib (page 114),

• 3.24 L’édition dans les espaces locaux (page101)

Locale: 2.10.1 La sous-section suivante contient lesparamètres relatifs à l’interface graphique utilisa-teur (GUI). (page 61)

Loft: 4.7.7 Les revêtements (Skin) (page 196)

LogFile: 2.10.1 La sous-section suivante contient lesparamètres relatifs à l’interface graphique utilisa-teur (GUI). (page 61)

Logging: 2.10.1 La sous-section suivante contient lesparamètres relatifs à l’interface graphique utilisa-teur (GUI). (page 61)

Loop: 4.8.2 Propriété SDMeshAttr (page 223)

LowerBevel: 4.7.14 Propriété TextAttr (page 217)

LowerCap: 4.7.14 Propriété TextAttr (page 217)

Lua: 6.8 Interface de script Lua (page 456)

M

MajorRad: 4.3.6 Propriété TorusAttr (page 144)

Make Compatible:• 5.3.25 Outil pour rendre compatible (Make

Compatible) (page 302),

• 5.5.15 Outil pour rendre les surfaces com-patibles (Make Surfaces Compatible) (page326)

makeCompNC: 6.2.14 scripting interface command(page 387)

makeCompNP: 6.2.15 scripting interface command(page 399)

Mark:• 4.2.2 La propriété ViewAttrib (page 114),

• 3.5 Définir une marque (page 81)

MarkHidden: 8.4.2 Définitions des préférencesmasquées (page 495)

Master: 2.2 Menu principal (page 33)

Material:• 4.2.5 Les matériaux (page 122),

• 2.2 Menu principal (page 33)

Materialname:• 4.2.5 Propriété MaterialAttr (page 123),

• 4.10.3 Propriété Material (page 249)

MaxRayLevel: 4.2.1 Les propriétés RiOptions (page110)

MaxTagLen: 8.4.2 Définitions des préférencesmasquées (page 495)

MaxX, MaxY, MaxZ: 4.2.12 Propriété RiProcAttr(page 138)

Menu:• 2.2 Le menu principal (page 30),

• 2.5 Menu d’une vue (page 45),

• 2.1.1 tree context menu (page 21),

• 2.1.1 listbox context menu (page 24),

• 3.12 numeric point edit menu (page 90)

Merge: 2.2 PolyMesh tool (page 37)

MergeFaces 7.8 Importation Wavefront OBJ (page469)

MergePVTags 7.8 Importation Wavefront OBJ (page469)

MetaObj, MetaComp: 4.9.6 Les objets Metaball(page 242)

mfio Plugin:• 7.10 Importation 3DMF (Apple) (page 472),

• 7.11 Exportation 3DMF (Apple) (page 473)

MinorRad: 4.3.6 Propriété TorusAttr (page 144)

MinSamples, MaxSamples: 4.2.1 Les propriétés Ri-Options (page 110)

MinX, MinY, MinZ: 4.2.12 Propriété RiProcAttr(page 138)

Mirror: 4.2.9 L’objet miroir (Mirror) (page 134)

MN: 4.11.20 Balise MN (Mean Normal) (page 269)

Modelling: 3 Les actions de modélisation (page 74)

Modelling Modes:

Page 524: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

9. Index 524

• 3.2 Transformer des objets ou des pointssélectionnés (page 76),

• 3.24 L’édition dans les espaces locaux (page101)

Mode: 4.5.3 Propriété OffsetNCAttr (page 165)

Mops Import: 7.5 Importation Mops (page 466)

Move:• 2.6 Afficher les raccourcis et les actions sur

la fenêtre (page 51),

• 3.7 Déplacement d’objets ou de points sélec-tionnés (page 84)

movOb: 6.2.9 scripting interface command (page373)

movPnts: 6.2.9 scripting interface command (page373)

MP: 4.11.21 Balise MP (Mean Point) (page 269)

Multiple Point: 4.4.1 Points multiples (page 150)

Multiplicity: 3.19 Manipuler les points multiples)(page 96)

myicons.tcl: 6.5.19 Remplacer les Icones (page 433)

N

nameOb: 6.2.26 nameOb (page 418)

NCDisplayMode: 2.10.3 Les préférences de dessin(page 66)

NCDisplayModeA: 2.10.3 Les préférences de dessin(page 66)

NCircle: 4.4.4 L’objet NCircle (Cercle NURBS)(page 156)

NCurve: 4.4.1 L’objet NCurve (NURBS) (page 147)

Near: 4.2.2 La propriété Camera (page 113)

Negative: 4.9.6 Propriété MetaCompAttr (page 243)

Network Surface: 4.7.8 Surface de Gordon (page199)

New: 2.2 main menu entry (page 30)

NewLoadsEnv: 8.4.2 Définitions des préférencesmasquées (page 495)

newScene: 6.2.22 scripting interface command (page408)

NoExport: 4.11.8 Balise NoExport (page 262)

NormalEpsilon: 2.2 optimize PolyMesh tool option(page 37)

NormalizedDomainDistance: 2.10.5 NURBS tessel-lation mode (page 73)

NormalizeDigits, NormalizeMark, NormalizePoints,NormalizeTrafos: 8.4.2 hidden preference setting(page 495)

normPnts: 6.2.9 scripting interface command (page375)

normTrafos: 6.2.9 scripting interface command(page 375)

normVar: 6.2.9 scripting interface command (page375)

notifyOb: 6.2.26 notifyOb: (page 418)

NP: 4.11.13 Balise NP (New Property) (page 264)

NPatch: 4.6.1 Patch NURBS (NPatch) (page 166)

NPDisplayMode: 2.10.3 Les préférences de dessin(page 66)

NPDisplayModeA: 2.10.3 Les préférences de dessin(page 66)

NumClones: 4.2.8 Propriété CloneAttr (page 132)

Numeric Edit: 3.12 Éditer des Points (page 88)

NumSamples: 4.9.6 Propriété MetaObjAttr (page243)

NURB: 4.4.1 Propriété NCurveAttr (page 147)

NURBCircle: 5.2.2 Outil cercle NURBS (NURBCir-cle) (page 273)

NURBCurve: 4.4.1 L’objet NCurve (NURBS) (page147)

NURBPatch: 4.6.1 Patch NURBS (NPatch) (page166)

NURBS: 6.2.14 Manipuler les courbes NURBS(page 383)

NURBSphere: 5.4.1 Outil sphère NURBS 1 (NURB-Sphere) (page 305)

O

ObeyNoExport: 7.13.2 Options d’exportation 3DM(page 477)

OBJ:• 7.8 Importation Wavefront OBJ (page 469),

• 7.9 Exportation Wavefront OBJ (page 470)

Object: 2.10.3 Les préférences de dessin (page 66)

Objectname: 4.10.2 Propriété Attributes (page 249)

Objects:• 2.1.1 Objets (page 20),

• 4 Objets, propriétés et balises (page 104)

OffsetNC: 4.5.3 Les courbes de décalage (OffsetNC)(page 164)

Page 525: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

9. Index 525

OffsetNP: 4.7.13 Les décalages de sur-faces(OffsetNP) (page 215)

OI: 4.11.23 Balise OI (Object ID) (page 270)

Open:• 2.2 main menu entry (page 30),

• 5.3.2 Outil d’ouverture (Open) (page 278)

openC: 6.2.12 scripting interface command (page380)

OpenNURBS:• 7.12 Importation 3DM (Rhino) (page 475),

• 7.13 Exportation 3DM (Rhino) (page 477)

Optimize: 2.2 PolyMesh tool (page 37)

OptimizeCoords: 2.2 optimize PolyMesh tool option(page 37)

OptimizeFaces: 2.2 optimize PolyMesh tool option(page 37)

OptimizeNew: 2.2 merge PolyMesh tool option(page 37)

OptimizePV: 2.2 optimize PolyMesh tool option(page 37)

Optimize: 2.2 merge PolyMesh tool option (page 37)

Option: 4.11.2 Balise RiOption (page 258)

Order:• 4.4.1 Propriété NCurveAttr (page 147),

• 4.4.3 Propriété ACurveAttr (page 154),

• 4.4.2 Propriété ICurveAttr (page 153),

• 4.7.1 Propriété RevolveAttr (page 176),

• 4.7.11 Propriété ConcatNPAttr (page 210),

• 4.9.3 Propriété SfCurveAttr (page 236)

Order_U:• 4.6.1 Propriété NPatchAttr (page 166),

• 4.6.2 Propriété IPatchAttr (page 171),

• 4.7.7 Propriété SkinAttr (page 197),

• 4.7.8 Propriété GordonAttr (page 201)

Order_V:• 4.6.1 Propriété NPatchAttr (page 166),

• 4.6.2 Propriété IPatchAttr (page 171),

• 4.7.8 Propriété GordonAttr (page 201)

Outliner: 2.1.1 L’arborescence des objets (page 21)

P

P1, P2: 4.3.8 Propriété HyperboloidAttr (page 146)

Pan: 2.6 Afficher les raccourcis et les actions sur lafenêtre (page 51)

Pan to Mark: 2.6 Afficher les raccourcis et les actionssur la fenêtre (page 51)

PanDist: 8.4.2 hidden preference setting (page 495)

PaneMargins: 8.4.2 hidden preference setting (page495)

Paraboloid: 4.3.7 L’objet paraboloïde (Paraboloid)(page 145)

Parameter: 4.5.2 Propriété ExtrNCAttr (page 162)

Parameter Object: 8.2 Le concept de modélisationoutils-objets (page 485)

ParametricError: 2.10.5 NURBS tessellation mode(page 73)

ParamType: 4.4.2 Propriété ICurveAttr (page 153)

pasOb: 6.2.7 scripting interface command (page 370)

Paste: 2.2 Menu principal (page 33)

Paste (Move): 2.2 Menu spécial (page 40)

Paste Property: 2.2 Menu principal (page 33)

Paste Property to Selected: 2.2 Menu spécial (page40)

Patch Based Modelling: 4.7.11 Concaténer (relier)les patch NURBS (ConcatNP) (page 210)

PatchMesh: 4.6.4 Les patchs maillés (PatchMesh)(page 174)

PatchNum:• 4.5.2 Propriété ExtrNCAttr (page 162),

• 4.7.12 Propriété ExtrNPAttr (page 213),

• 4.2.10 Propriété SelectAttrib (page 136),

• 4.7.15 Propriété TrimAttrib (page 220)

PatchSamples: 4.2.1 Les propriétés RiOptions (page110)

PathLength: 2.10.5 NURBS tessellation mode (page73)

Perspective: 2.5 view menu entry (page 47)

PhiMax, PhiMin: 4.3.6 Propriété TorusAttr (page144)

Pick: 3.3 Sélection d’objets par choix (page 76)

PickCycle: 2.10.2 Préférences de modélisation (page64)

PickCycleMax: 8.4.2 hidden preference setting (page495)

PickEpsilon: 2.10.2 Préférences de modélisation(page 64)

PickTolerance: 8.4.2 hidden preference setting (page495)

Pivot:

Page 526: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

9. Index 526

• 3.5 Définir une marque (page 81),

• 3.9 Rotation des objets ou des points sélec-tionnés autour d’un point (page 85),

• 3.11 Mise à l’échelle d’objets ou de pointssélectionnés autour d’un point (page 87)

Plane: 4.2.9 Propriété MirrorAttr (page 134)

Plot Curvature: 5.3.20 Outil de tracé de courbure(Plot Curvature) (page 297)

Plugins: 8.6 Aperçu des plugins (page 501)

Point: 4.2.4 Point, Distant, and Spotlights : (page116)

Points: 6.2.17 Manipuler des points (page 402)

Point Size: 2.10.2 Préférences de modélisation (page64)

polyhedron.js: 6.6.9 Créer des polyèdres à partir desnotations de Conway (page 448)

PolyMesh:• 4.8.1 L’objet PolyMesh (page 221),

• 2.2 PolyMesh tools (page 37),

• 6.2.16 Manipuler les objets PolyMesh (page401)

PolyOffset: 8.4.2 hidden preference setting (page495)

Power:• 4.6.4 Propriété PatchMeshAttr (page 174),

• 4.9.4 Propriété BCurveAttr (page 238)

PPRender: 2.10.4 Préférences d’exportation RIB(page 68)

Preferences:• 2.10 Les préférences (page 60),

• 8.4.2 Paramètres de préférences cachés (page492),

• 6.2.19 Gestion des préférences (page 405)

Procedural Objects: 4.2.12 L’objet RiProc (page 138)

Procedurals: 4.2.1 Les propriétés RiOptions (page110)

Prompt: 8.4.2 hidden preference setting (page 495)

Properties: 2.1.2 Propriétés (page 26)

Property Clipboard: 2.1.2 Propriétés du presse-papier(page 27)

Property GUI: 6.2.25 Gestion de l’interfacegraphique des propriétés (page 409)

Primitive: 4.2.6 L’objet Level (niveau) (page 125)

Primitive Variable: 4.11.4 Balise PV (Primitive Vari-able) (page 260)

Primitives: 5.6.5 Outil de tessellation (triangularisa-tion) (page 331)

PRManSpec: 4.2.1 Les propriétés RiOptions (page110)

PV: 4.11.4 Balise PV (Primitive Variable) (page 260)

PVColorName: 8.4.2 hidden preference setting (page495)

PVNormalName: 8.4.2 hidden preference setting(page 495)

PVTexCoordName: 8.4.2 hidden preference setting(page 495)

Q

QuadAsBRep: 7.13.2 Options d’exportation 3DM(page 477)

Quadrics: 4.3.2 L’objet sphère (Sphere) (page 140)

QDisplayDriver: 2.10.4 Préférences d’exportationRIB (page 68)

QRender, QRenderPT, QRenderUI: 2.10.4Préférences d’exportation RIB (page 68)

Quaternion: 4.10.1 Propriété Transformations (page248)

QuickDraw 3D Metafile:• 7.10 Importation 3DMF (Apple) (page 472),

• 7.11 Exportation 3DMF (Apple) (page 473)

Quick Render: 2.5 Menu d’une vue (page 45)

R

Radius:• 4.3.2 Propriété SphereAttr (page 140),

• 4.3.3 Propriété DiskAttr (page 141),

• 4.3.4 Propriété ConeAttr (page 142),

• 4.3.5 Propriété CylinderAttr (page 143),

• 4.4.4 Propriété NCircleAttr (page 156),

• 4.7.9 Propriété BevelAttr (page 204),

• 4.9.6 Propriété MetaCompAttr (page 243),

• 6.6.4 Hélicoïde (helix) (page 443),

• 6.6.5 Spirale (page 444)

RadSteps: 4.2.1 Les propriétés RiOptions (page 110)

RationalPoints: 2.10.2 Préférences de modélisation(page 64)

RationalStyle:• 1.2.4 Coordonnées rationnelles (page 18),

• 7.10.2 Options d’importation 3DMF (page472),

Page 527: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

9. Index 527

• 7.11.3 Options d’exportation 3DMF (page475),

• 7.8.2 Options d’importation Wavefront OBJ(page 470),

• 7.9.2 Options d’exportation Wavefront OBJ(page 471),

• 7.14.3 Options d’importation X3D (page481),

• 7.15.3 Options d’exportation X3D (page483)

rc.tcl: 6.5.12 Modifier le comportement des touchescurseur (page 432)

RDiff: 6.6.5 Spirale (page 444)

ReadCurves:• 7.6.2 Options des importations DXF (page

467),

• 7.10.2 Options d’importation 3DMF (page472),

• 7.8 Importation Wavefront OBJ (page 469),

• 7.12.2 Options de l’importation 3DM (page476),

• 7.14.3 Options d’importation X3D (page481)

ReadFrame, ReadCamera, ReadOptions, Read-Lights, ReadMaterial, ReadPartial: 7.3.2 Optionsd’importation RIB (page 465)

ReadLayers:• 7.6.2 Options des importations DXF (page

467),

• 7.12.2 Options de l’importation 3DM (page476)

ReadSTrim:• 7.8 Importation Wavefront OBJ (page 469),

• 7.12.2 Options de l’importation 3DM (page476),

• 7.3.2 Options d’importation RIB (page 465),

• 7.14.3 Options d’importation X3D (page481)

Rebuild: 2.1.1 tree context menu entry (page 21)

Rectangle: 5.2.4 Outil rectangle de trim (TrimRect)(page 275)

RedirectTcl: 2.10.5 Préférences diverses (page 72)

Redo:• 8.1 Le système d’annulation (undo) (page

485),

• 2.2 Menu principal (page 33),

• 6.2.26 Annuler (page 416)

Redraw:

• 2.5 Menu d’une vue (page 45),

• 8.11 Augmenter la vitesse de dessin (page508),

• 4.2.2 La propriété ViewAttrib (page 114)

Reduce:• 5.3.9 Outil de réduction (Reduce) (page

285),

• 5.5.7 Outil de réduction de l’ordre des sur-faces (Reduce Surface) (page 318)

reduceNC: 6.2.14 scripting interface command (page384)

reduceuNP: 6.2.15 scripting interface command(page 394)

reducevNP: 6.2.15 scripting interface command(page 394)

Refcount: 4.10.2 Propriété Attributes (page 249)

Reference Counter:• 4.2.7 L’objet Instance (page 128),

• 4.2.5 Les matériaux (page 122)

Reference: 4.2.7 Instances sans Transformations(References) (page 129)

References: 8.15 References (page 510)

Refine:• 5.3.4 Outil d’affinage (Refine) (page 280),

• 5.5.4 Outil de raffinage des noeuds de sur-face (Refine Knots Surface) (page 315)

Refine Knots:• 5.3.5 Outil d’affinage des noeuds (Refine

Knots) (page 281),

• 5.5.4 Outil de raffinage des noeuds de sur-face (Refine Knots Surface) (page 315)

Refine Knots with:• 5.3.6 Outil d’affinage des noeuds avec un

outil (Refine Knots With Tool) (page 282),

• 5.5.5 Outil de raffinage des noeuds avec lasurface(Refine Knots With Surface) (page316)

refineC: 6.2.12 scripting interface command (page380)

refineknNC: 6.2.14 scripting interface command(page 385)

RefineTrims: 5.6.5 Outil de tessellation (triangulari-sation) (page 331)

refineuNP: 6.2.15 scripting interface command (page393)

refinevNP: 6.2.15 scripting interface command (page393)

Page 528: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

9. Index 528

registerTag: 6.2.11 scripting interface command(page 379)

Relative:• 4.5.2 Propriété ExtrNCAttr (page 162),• 4.7.12 Propriété ExtrNPAttr (page 213)

Rem.Smooth Normals: 2.2 PolyMesh tool (page 37)

remknNC: 6.2.14 scripting interface command (page384)

remknuNP: 6.2.15 scripting interface command(page 392)

remknvNP: 6.2.15 scripting interface command(page 392)

remsnPo: 6.2.16 scripting interface command (page401)

remsuknNC: 6.2.14 scripting interface command(page 384)

remsuknuNP: 6.2.15 scripting interface command(page 392)

remsuknvNP: 6.2.15 scripting interface command(page 393)

Remove Property: 2.2 Tag management (page 41)

Remove Knot:• 5.3.14 Outil de suppression de noeud (Re-

move Knot) (page 290),• 5.5.11 Outil de suppression de noeuds (Re-

move Knot Surface) (page 322)

RemoveMerged: 2.2 merge PolyMesh tool option(page 37)

Render:• 2.5 Menu d’une vue (page 45),• 2.10.4 Préférences d’exportation RIB (page

68)

Renderer: 2.2 Menu spécial (page 40)

RenderMode: 2.10.4 Préférences d’exportation RIB(page 68)

RenderPT, RenderUI: 2.10.4 Préférencesd’exportation RIB (page 68)

Repair Ayam: 6.5.1 Réparer Ayam (page 427)

Reparameterise: 6.2.14 scripting interface command(page 387)

Replace: 2.2 Menu spécial (page 40)

ReplaceOriginal:• 5.6.4 Outil de construction à partir de

courbes (Build from Curves) (page 330),• 5.6.3 Outil décomposition en courbes (Break

into Curves) (page 329)

replaceScene: 6.2.22 scripting interface command(page 407)

repOb: 6.2.7 scripting interface command (page 370)

Rescale Knots to Mindist:• 5.3.27 Outil de répartition des noeuds à

une distance minimale (Rescale Knots toMindist) (page 303),

• 5.5.17 Outil Redimensionnent des noeudsà la distance minimale (Rescale Knots toMindist) (page 327)

Rescale Knots to Range:• 5.3.26 Outil de répartition des noeuds sur une

plage (Rescale Knots to Range) (page 303),

• 5.5.16 Outil de redimensionnent des noeudsen fonction de la plage (Rescale Knots toRange) (page 327)

rescaleknNC: 6.2.14 scripting interface command(page 385)

rescaleknNP: 6.2.15 scripting interface command(page 391)

RescaleKnots:• 7.6.2 Options des importations DXF (page

467),

• 7.12.2 Options de l’importation 3DM (page476),

• 7.3 Importation de RenderMan InterfaceBytestream (RIB) (page 463),

• 7.8 Importation Wavefront OBJ (page 469)

Reset:• 2.1.2 Propriétés (page 26),

• 2.5 view menu entry (page 45)

ResetDM, ResetST: 7.5 Importation Mops (page 466)

Reset Layout: 2.2 Menu spécial (page 40)

Reset Preferences: 2.2 Menu spécial (page 40)

Reset Weights: 3.13 Édition des poids (page 91)

ResInstances: 2.10.4 Préférences d’exportation RIB(page 68)

Resolve all Instances: 2.2 Menu spécial (page 40)

ResolveInstances: 7.15.3 Options d’exportation X3D(page 483)

Revert:• 5.3.1 Outil de renversement (Revert) (page

277),

• 4.7.14 Propriété TextAttr (page 217),

• 4.5.1 Propriété ConcatNCAttr (page 159),

• 4.5.3 Propriété OffsetNCAttr (page 165),

• 4.5.2 Propriété ExtrNCAttr (page 162),

• 4.7.11 Propriété ConcatNPAttr (page 210)

RevertBevels: 4.7.14 Propriété TextAttr (page 217)

Page 529: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

9. Index 529

revertC: 6.2.12 scripting interface command (page380)

RevertU, RevertV:• 5.5.1 Outil de reversement sur U (Revert U)

(page 313),

• 5.5.2 Outil de reversement sur V (Revert V)(page 313)

Revolve:• 4.7.1 Les surfaces de révolution (Revolve)

(page 176),

• 5.4.3 Outil de révolution (Revolve) (page306)

RGBA_ONE, RGBA_MIN, RGBA_MAX,RGBA_Dither: 4.2.1 Les propriétés RiOptions(page 110)

Rhino:• 7.12 Importation 3DM (Rhino) (page 475),

• 7.13 Exportation 3DM (Rhino) (page 477)

RiAttribute:• 4.2.5 Propriété RiAttributes (page 122),

• 4.11.1 Balise RiAttribute (page 257),

• 8.4.3 Base de données pour RiOption et Ri-Attributes (page 499)

RIB export:• 2.10.4 Préférences d’exportation RIB (page

68),

• 2.2 main menu (page 30),

• 2.5 view menu (page 45),

• 6.2.23 Exportation RIB (page 408)

RIB import: 7.3 Importation de RenderMan InterfaceBytestream (RIB) (page 463)

RIBFile: 2.10.4 Préférences d’exportation RIB (page68)

RiDisplay: 4.11.6 Balise RiDisplay (page 262)

Ridge: 4.7.9 Propriété BevelAttr (page 204)

RiHider: 4.11.5 Balise RiHider (page 261)

RiInc: 4.2.11 L’objet RiInc (page 137)

RiOption: 4.11.2 Balise RiOption (page 258)

RiOptions:• 4.2.1 Les propriétés RiOptions (page 110),

• 8.4.3 Base de données pour RiOption et Ri-Attributes (page 499)

RiProc: 4.2.12 L’objet RiProc (page 138)

RIStandard: 2.10.4 Préférences d’exportation RIB(page 68)

RMax:• 4.3.7 Propriété ParaboloidAttr (page 145),

• 6.6.1 Cône tronqué (page 440)

RMin:• 6.6.1 Cône tronqué (page 440),

• 6.6.5 Spirale (page 444)

Roll: 4.2.2 La propriété Camera (page 113)

Root: 4.2.1 L’objet Racine (Root) (page 110)

Rotate:• 2.6 Afficher les raccourcis et les actions sur

la fenêtre (page 51),

• 3.8 Rotation des objets ou des points sélec-tionnés (page 85),

• 4.7.4 Propriété SweepAttr (page 186),

• 4.2.8 Propriété CloneAttr (page 132)

RotateCrossSection: 8.4.2 hidden preference setting(page 496)

Rotation:• 4.10.1 Propriété Transformations (page 248),

• 4.10.1 Comment utiliser les attributs de rota-tion ? (page 248)

Rotational Sweep: 4.7.3 Les surfaces par balayage(Swing) (page 181)

rotOb: 6.2.9 scripting interface command (page 373)

rotPnts: 6.2.9 scripting interface command (page374)

Round, RoundToCap, RoundToNormal: 4.7.9 Pro-priété BevelAttr (page 204)

RP: 4.11.14 Balise RP (Remove Property) (page 265)

RRIB: 7.3 Importation de RenderMan InterfaceBytestream (RIB) (page 463)

Ruled surface: 4.7.7 Les revêtements (Skin) (page196)

RunProgram: 4.2.12 Propriété RiProcAttr (page 138)

runTool: 6.2.26 runTool: (page 417)

rV: 6.2.18 scripting interface command (page 404)

S

SafeAutoFocus: 8.4.2 hidden preference setting(page 496)

Samples: 4.2.4 Propriété LightAttr (page 116)

Samples_X: 4.2.1 Les propriétés RiOptions (page110)

Samples_Y: 4.2.1 Les propriétés RiOptions (page110)

Save: 2.2 main menu entry (page 30)

Page 530: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

9. Index 530

Save as: 2.2 main menu entry (page 30)

Save Environment: 2.2 Menu spécial (page 40)

Save Prefs: 2.2 main menu entry (page 30)

Save Selected as: 2.2 Menu spécial (page 40)

SaveAddsMRU: 2.10.5 Préférences diverses (page72)

SaveDialogGeom: 2.10.5 Préférences diverses (page72)

SaveMainGeom: 4.11.9 Balise SaveMainGeom(page 263)

SavePaneLayout: 4.11.10 Balise SavePaneLayout(page 263)

saveScene: 6.2.22 scripting interface command (page407)

Scale:• 4.10.1 Propriété Transformations (page 248),

• 3.10 Mise à l’échelle d’objets ou de pointssélectionnés (page 86)

ScaleFactor:• 7.6.2 Options des importations DXF (page

467),

• 7.7.2 Options d’exportation DXF (page 469),

• 7.12.2 Options de l’importation 3DM (page476),

• 7.13.2 Options d’exportation 3DM (page477),

• 7.8 Importation Wavefront OBJ (page 469),

• 7.9 Exportation Wavefront OBJ (page 470),

• 7.3.2 Options d’importation RIB (page 465)

ScaleMode 4.7.15 Propriété TrimAttrib (page 220)

scalOb 6.2.9 scripting interface command (page 373)

scalPnts 6.2.9 scripting interface command (page374)

Scan Shaders:• 2.2 Menu spécial (page 40),

• 2.10.1 Les préférences principales (page 61),

• 4.10.4 Shader Parsing (page 250)

Scheme: 4.8.2 Propriété SDMeshAttr (page 223)

Scope: 2.9 Recherche d’objets (page 56)

Script:• 6 Interface de script (page 337),

• 4.9.1 L’objet Script (page 225)

Scripts:• 2.10.1 La sous-section suivante contient les

paramètres relatifs à l’interface graphiqueutilisateur (GUI). (page 61),

• 6.5 Scripts d’aide distribués (page 427)

SDCurve: 4.9.5 Les courbes de subdivision (SD-Curve) (page 240)

SDLen: 4.4.2 Propriété ICurveAttr (page 153)

SDMesh: 4.8.2 L’objet SDMesh (page 223)

SDNPatch: 4.9.7 SDNPatch Object (page 245)

Search: 2.9 Recherche d’objets (page 56)

Sections:• 4.7.4 Propriété SweepAttr (page 186),• 4.7.1 Propriété RevolveAttr (page 176),• 4.7.5 Propriété Birail1Attr (page 190),• 4.7.6 Propriété Birail2Attr (page 193),• 4.9.3 Propriété SfCurveAttr (page 236)

Select: 4.2.10 L’objet sélection (Select) (page 136)

Select (Objects):• 2.1.1 Objets (page 20),• 3.3 Sélection d’objets par choix (page 76),• 6.2.4 Sélectionner des Objets (page 365)

Select (Points):• 3.4 Sélection/traçage de points (page 78),• 6.2.5 Sélection des points (page 367)

Select All: 2.2 Menu principal (page 33)

Select All Points: 2.2 sous-menu pour les outils quitravaillent sur les points (page 38)

Select None: 2.2 Menu principal (page 33)

Select Renderer: 2.2 main menu entry (page 41)

Selected Objects: 2.2 Menu spécial (page 40)

Selection: 2.10.3 Les préférences de dessin (page 66)

SelectLast: 8.4.2 hidden preference setting (page496)

SelLineWidth: 8.4.2 hidden preference setting (page496)

selOb: 6.2.4 scripting interface command (page 365)

selPnts: 6.2.5 scripting interface command (page367)

SelXOR_R, SelXOR_G, SelXOR_B: 8.4.2 hiddenpreference setting (page 496)

Set BGImage: 2.5 view menu entry (page 47)

Set Gridsize: 2.5 view menu entry (page 47)

Set FOV: 2.5 view menu entry (page 47)

SetMark:• 4.2.2 La propriété ViewAttrib (page 114),• 6.2.26 setMark: (page 418)

setPnt: 6.2.17 setPnt – Définir un ou des points :(page 403)

setPrefs: 6.2.19 scripting interface command (page405)

Page 531: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

9. Index 531

SetRenderer: 2.10.4 Préférences d’exportation RIB(page 68)

setTag: 6.2.11 scripting interface command (page377)

setTags: 6.2.11 scripting interface command (page378)

setProperty: 6.2.6 scripting interface command (page369)

SfCurve: 4.9.3 L’objet SfCurve (courbe superfor-mulée) (page 236)

Shade:• 2.10.3 Les préférences de dessin (page 66),

• 2.5 view menu entry (page 47)

Shader: 4.10.4 Propriété Shader (page 250)

Shader Parsing: 8.7 Plugins d’analyse des ombres(shaders) (page 502)

Shaders:• 2.10.1 Les préférences principales (page 61),

• 4.2.1 Les propriétés RiOptions (page 110),

• 6.2.10 Manipuler les ombrages (shaders)(page 376)

ShadingRate: 4.10.2 Propriété Attributes (page 249)

ShadowBias: 4.2.1 Les propriétés RiOptions (page110)

ShadowMaps:• 2.10.4 Préférences d’exportation RIB (page

68),

• 4.2.4 Utilisation des ombrages (Shad-owMaps) (page 118)

Shadows: 4.2.4 Propriété LightAttr (page 116)

Sheared extrusion: 6.6.8 Extrusion le long de la nor-male (page 447)

Shift: 5.3.23 Outil de décalage de courbe fermée(page 300)

shiftC: 6.2.12 scripting interface command (page381)

ShiftTab: 8.4.2 hidden preference setting (page 496)

Show: 2.2 main menu entry (page 37)

Show All: 2.2 main menu entry (page 37)

Show Shortcuts: 2.2 main menu entry (page 42)

Show Tooltips: 2.2 main menu entry (page 42)

Shuffle: 2.1.1 Raccourcis de l’arborescence des ob-jets (page 23)

Side:• 2.5 view menu entry (page 47),

• 4.5.2 Propriété ExtrNCAttr (page 162)

SimpleToolGUI: 8.4.2 hidden preference setting(page 496)

SingleWindow: 2.10.1 Les préférences principales(page 61)

Skin:• 4.7.7 Les revêtements (Skin) (page 196),

• 5.4.12 Outil de revêtement (Skin) (page 310)

sL: 6.2.4 scripting interface command (page 366)

slxml.tcl: 6.5.4 Analyse des ombrages (shaders)(page 429)

SMChangeShaders: 2.10.4 Préférences d’exportationRIB (page 68)

SMethod:• 5.6.5 Outil de tessellation (triangularisation)

(page 331),

• 2.10.5 preference setting (page 73)

SMFileFormat: 2.10.4 Préférences d’exportationRIB (page 68)

SMFileType: 2.10.4 Préférences d’exportation RIB(page 68)

Smooth normals: 2.2 PolyMesh tool (page 37)

SMRender, SMRenderUI, SMRenderPT: 2.10.4Préférences d’exportation RIB (page 68)

SMRes: 4.2.4 Propriété LightAttr (page 116)

Snap Points to Grid: 3.14 Clipser les points sur lagrille (page 93)

Snap Points to Mark: 3.16 Clipser des points sur lesmarques (page 94)

Snap3D: 2.10.2 Préférences de modélisation (page64)

Solids: 4.3 CSG / primitives des solides (Solid) (page139)

SP: 4.9.1 Propriété ScriptAttr (page 227)

SParamU, SParamV:• 5.6.5 Outil de tessellation (triangularisation)

(page 331),

• 2.10.5 preference setting (page 73)

Special: 2.2 Menu spécial (page 40)

Sphere:• 4.3.2 L’objet sphère (Sphere) (page 140),

• 5.4.1 Outil sphère NURBS 1 (NURBSphere)(page 305)

spiral.tcl: 6.6.5 Spirale (page 444)

Split:• 5.3.18 Outil de fractionnement (Split) (page

295),

Page 532: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

9. Index 532

• 5.5.13 Outil de fractionnement de la surface(Split Surface) (page 324),

• 2.2 PolyMesh tool (page 37)

Split Curve: 3.22 Couper interactivement des courbes(page 99)

splitNC: 6.2.14 scripting interface command (page385)

splituNP: 6.2.15 scripting interface command (page394)

splitvNP: 6.2.15 scripting interface command (page395)

Spot: 4.2.4 Point, Distant, and Spotlights : (page116)

ssp.tcl: 6.5.11 Sauvegarder les points sélectionnés(page 432)

Standard Properties: 4.10 Standard Properties (page248)

StartBevel: 4.7.2 Propriété ExtrudeAttr (page 179)

StartCap: 4.7.2 Propriété ExtrudeAttr (page 179)

StdDisplay: 4.2.1 Les propriétés RiOptions (page110)

Step: 4.9.4 Propriété BCurveAttr (page 238)

Step_U, Step_V: 4.6.4 Propriété PatchMeshAttr(page 174)

StepSize: 4.9.6 Propriété MetaObjAttr (page 243)

STESS: 2.10.3 Les préférences de dessin (page 66)

Stretch: 3.10 Mise à l’échelle d’objets ou de pointssélectionnés (page 86)

String: 4.7.14 Propriété TextAttr (page 217)

StripShaderArch: 8.4.2 hidden preference setting(page 496)

Subdivision Curve: 4.9.5 Les courbes de subdivision(SDCurve) (page 240)

Subdivision Mesh: 4.8.2 L’objet SDMesh (page 223)

Subdivision NURBS: 4.9.7 SDNPatch Object (page245)

Superformula Curve: 4.9.3 L’objet SfCurve (courbesuperformulée) (page 236)

Surface: 4.2.5 Les propriétés Surface, Displacement,Interior et Exterior (page 123)

Surfaces: 4.6 Les surfaces libres (page 166)

SwapMB: 8.4.2 hidden preference setting (page 496)

Swap UV: 5.5.3 Outil de renversement UV (SwapUV) (page 314)

swapuvS 6.2.13 scripting interface command (page382)

Sweep:

• 4.7.4 Les surfaces par glissements (Sweep)(page 184),

• 5.4.6 Outil de balayage (Sweep) (page 307)

Swing:• 4.7.3 Les surfaces par balayage (Swing)

(page 181),

• 5.4.4 Outil de pivotement (Swing) (page306)

Symmetric: 4.4.3 Propriété ACurveAttr (page 154)

Symmetry: 4.2.9 L’objet miroir (Mirror) (page 134)

T

Tag: 2.10.3 Les préférences de dessin (page 66)

Tags:• 4.11 Tags (page 256),

• 6.2.11 Manipuler les balises (tag) (page 377),

• 4.8.2 L’objet SDMesh (page 223)

TC: 4.11.3 Balise TC (Texture Coordinates) (page258)

tcircle.tcl: 6.6.3 Cercle NURBS avec base triangu-laire (page 442)

tcleval:• 6.7.2 <tt/<bf/tcleval():// (page 451),

• 6.8.2 <tt/<bf/tcleval():// (page 457)

TclPrecision: 2.10.5 Préférences diverses (page 72)

tclset:• 6.7.2 <tt/<bf/tclset():// (page 452),

• 6.8.2 <tt/<bf/tclset():// (page 458)

tclvar:• 6.7.2 <tt/<bf/tclvar():// (page 451),

• 6.8.2 <tt/<bf/tclvar():// (page 457)

tcone.tcl: 6.6.1 Cône tronqué (page 440)

Tesselate: 5.6.5 Outil de tessellation (triangularisa-tion) (page 331)

TessPoMesh 7.9 Exportation Wavefront OBJ (page470)

Test Ayam: 6.5.2 Tester Ayam (page 428)

Text: 4.7.14 Le texte (Text) (page 217)

Textures: 4.2.1 Les propriétés RiOptions (page 110)

Texture Coordinates:• 4.11.3 Balise TC (Texture Coordinates)

(page 258),

• 4.11.3 L’éditeur de coordonnées de texture(page 259)

Page 533: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

9. Index 533

ThetaMax:• 4.3.2 Propriété SphereAttr (page 140),

• 4.3.3 Propriété DiskAttr (page 141),

• 4.3.4 Propriété ConeAttr (page 142),

• 4.3.5 Propriété CylinderAttr (page 143),

• 4.3.6 Propriété TorusAttr (page 144),

• 4.3.7 Propriété ParaboloidAttr (page 145),

• 4.3.8 Propriété HyperboloidAttr (page 146),

• 4.7.1 Propriété RevolveAttr (page 176),

• 6.6.1 Cône tronqué (page 440)

Threshold: 4.9.6 Propriété MetaObjAttr (page 243)

TMax, TMin:• 4.4.4 Propriété NCircleAttr (page 156),

• 4.9.3 Propriété SfCurveAttr (page 236)

TmpDir: 2.10.1 La sous-section suivante contient lesparamètres relatifs à l’interface graphique utilisa-teur (GUI). (page 61)

To:• 4.2.2 La propriété Camera (page 113),

• 4.2.4 Propriété LightAttr (page 116)

tobasisPM: 6.2.15 scripting interface command (page400)

To Camera: 2.5 view menu entry (page 47)

Toggle Toolbox: 2.2 Menu spécial (page 40)

Toggle TreeView: 2.2 Menu spécial (page 40)

Tolerance:• 2.10.3 Les préférences de dessin (page 66),

• 4.4.1 Propriété NCurveAttr (page 147),

• 4.6.1 Propriété NPatchAttr (page 166)

ToleranceA: 2.10.3 Les préférences de dessin (page66)

tonpatch.tcl: 6.5.6 Tout transformer en patch NURBS(page 430)

Tool Objects: 8.2 Le concept de modélisation outils-objets (page 485)

Toolbox: 2.8 La boîte à outils (page 55)

toolBoxList: 8.4.2 hidden preference setting (page497)

ToolBoxShrink: 8.4.2 hidden preference setting(page 497)

ToolBoxTrans: 8.4.2 hidden preference setting (page497)

Tools: 2.2 tools menu (page 37)

Top: 2.5 view menu entry (page 47)

TopLevelLayers:• 7.7.2 Options d’exportation DXF (page 469),

• 7.13.2 Options d’exportation 3DM (page477),

• 7.15.3 Options d’exportation X3D (page483)

topoly.tcl: 6.5.5 Tout transformer en polygones (page430)

Torus: 4.3.6 L’objet tore (Torus) (page 144)

To XY: 5.3.24 Outil de retournement vers XY (ToXY) (page 301)

toXYC: 6.2.12 scripting interface command (page381)

TP: 4.11.11 Balise TP (Tessellation Parameter) (page263)

Transformations:• 4.10.1 Propriété Transformations (page 248),• 6.2.9 Transformations (page 373)

Translate:• 2.6 Afficher les raccourcis et les actions sur

la fenêtre (page 51),• 3.7 Déplacement d’objets ou de points sélec-

tionnés (page 84)

Translation: 4.10.1 Propriété Transformations (page248)

translational surface: 6.6.7 Surface par translation(page 446)

Tree View: 2.1.1 L’arborescence des objets (page 21)

Trim:• 4.7.15 Les découpes ou ajustements (Trim)

(page 219),• 5.4.13 Outil de Trim (Découpe) (page 310),• 2.5 view menu entry (page 47)

Trim Curve: 4.6.1 Courbes de trim (coupe) (page167)

trimNC: 6.2.14 scripting interface command (page386)

TrimRect: 5.2.4 Outil rectangle de trim (TrimRect)(page 275)

TrueDisp: 4.10.2 Propriété Attributes (page 249)

Truncated Cone: 6.6.1 Cône tronqué (page 440)

tsurf.tcl: 6.6.7 Surface par translation (page 446)

Tutorial: 8.15 References (page 510)

Tween:• 5.2.5 Outil courbes interpolées (Tween

Curve) (page 276),• 5.4.14 Outil d’interpolation de surfaces

(Tween Surfaces) (page 311)

tweenNC: 6.2.14 scripting interface command (page385)

Page 534: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

9. Index 534

tweenNP: 6.2.15 scripting interface command (page395)

TwmCompat: 2.10.1 La sous-section suivante con-tient les paramètres relatifs à l’interface graphiqueutilisateur (GUI). (page 61)

Type:• 4.2.6 L’objet Level (niveau) (page 125),

• 4.2.4 Propriété LightAttr (page 116),

• 4.6.4 Propriété PatchMeshAttr (page 174),

• 4.2.2 La propriété ViewAttrib (page 114),

• 4.9.1 Propriété ScriptAttr (page 227),

• 4.2.12 Propriété RiProcAttr (page 138),

• 4.7.10 Propriété CapAttr (page 208),

• 4.4.1 Propriété NCurveAttr (page 147),

• 4.4.2 Propriété ICurveAttr (page 153),

• 4.7.11 Propriété ConcatNPAttr (page 210),

• 4.9.5 Propriété SDCurveAttr (page 240),

U

uCL: 6.2.18 scripting interface command (page 404)

uCR: 6.2.18 scripting interface command (page 404)

UMax, UMin: 4.7.12 Propriété ExtrNPAttr (page213)

UMM: 4.11.17 Balises UMM/VMM (U/V Min Max)(page 268)

Unclamp:• 5.3.12 Outil de desserrage (Unclamp) (page

288),

• 5.5.9 Outil de desserrage des surfaces (Un-clamp Surface) (page 320)

unclampNC: 6.2.14 scripting interface command(page 383)

unclampuNP: 6.2.15 scripting interface command(page 390)

unclampvNP: 6.2.15 scripting interface command(page 391)

Effacer :• 8.1 Le système d’annulation (undo) (page

485),

• 2.2 Menu principal (page 33),

• 6.2.26 Annuler (page 416)

UndoLevels: 2.10.2 Préférences de modélisation(page 64)

Union: 4.2.6 L’objet Level (niveau) (page 125)

upOb: 6.2.8 upOb – déplacer le(s) objet(s) versl’arrière dans le niveau actuel : (page 371)

UpperBevel: 4.7.14 Propriété TextAttr (page 217)

UpperCap: 4.7.14 Propriété TextAttr (page 217)

up-vector: 4.2.2 La propriété Camera (page 113)

uS: 6.2.18 scripting interface command (page 404)

useaqsisapp.tcl: 6.5.17 Utiliser Aqsis à partir durépertoire des applications (page 433)

UseGrid:• 4.2.2 La propriété ViewAttrib (page 114),

• 2.5 view menu entry (page 47)

UseInternalFD: 8.4.2 hidden preference setting (page497)

UseMatColor: 2.10.3 Les préférences de dessin(page 66)

UseTexCoords: 5.6.5 Outil de tessellation (triangu-larisation) (page 331)

UseVertColors: 5.6.5 Outil de tessellation (triangu-larisation) (page 331)

UseVertNormals: 5.6.5 Outil de tessellation (triangu-larisation) (page 331)

usepixie.tcl: 6.5.18 Utiliser Pixie depuis le répertoirede la bibliothèque (page 433)

UseSM: 4.2.4 Propriété LightAttr (page 116)

UVSelect: 4.7.11 Propriété ConcatNPAttr (page 210)

V

Variance: 4.2.1 Les propriétés RiOptions (page 110)

View:• 4.2.2 L’objet View (page 113),

• 2.4 Anatomie d’une vue (page 45)

ViewAttrib: 4.2.2 La propriété ViewAttrib (page114)

Viewport: 2.10.4 Préférences d’exportation RIB(page 68)

VMax, VMin: 4.7.12 Propriété ExtrNPAttr (page213)

VMM: 4.11.17 Balises UMM/VMM (U/V Min Max)(page 268)

W

Wait: 8.4.2 hidden preference setting (page 498)

WarnPnts: 8.4.2 hidden preference setting (page 498)

Page 535: Ayamayam.sourceforge.net/ayam-fr.pdf · 2021. 1. 28. · Ayam Guide de Référence Randolf Schultz (randolf.schultz@gmail.com) Traducteur: Alain Siksik (alain.siksik@bbox.fr) 18 Sep

9. Index 535

WarnPropPasteToSel: 8.4.2 hidden preference set-ting (page 498)

WarnUnknownTag: 8.4.2 hidden preference setting(page 498)

WatchCorners: 4.7.8 Propriété GordonAttr (page201)

Watertight Tessellation: 2.2 Connect PolyMesh tool(page 37)

Wavefront OBJ:• 7.8 Importation Wavefront OBJ (page 469),

• 7.9 Exportation Wavefront OBJ (page 470)

Weight:• 3.13 Édition des poids (page 91),

• 1.2.4 Coordonnées rationnelles (page 18)

whatis 6.2.26 whatis: (page 419)

WheelZoom: 8.4.2 hidden preference setting (page498)

Width:• 4.2.1 Les propriétés RiOptions (page 110),

• 4.3.1 Propriété BoxAttr (page 139),

• 4.6.1 Propriété NPatchAttr (page 166),

• 4.6.2 Propriété IPatchAttr (page 171),

• 4.6.4 Propriété PatchMeshAttr (page 174),

• 4.2.2 La propriété ViewAttrib (page 114),

• 4.2.11 La propriété RiIncAttr (page 137)

withOb: 6.2.21 scripting interface command (page407)

wrib: 6.2.23 scripting interface command (page 408)

WriteCurves:• 7.8 Importation Wavefront OBJ (page 469),

• 7.13.2 Options d’exportation 3DM (page477),

• 7.15.3 Options d’exportation X3D (page483)

WriteMaterials: 7.15.3 Options d’exportation X3D(page 483)

WriteParametrics: 7.15.3 Options d’exportation X3D(page 483)

WriteIdent: 2.10.4 Préférences d’exportation RIB(page 68)

WriteSelected:• 7.13.2 Options d’exportation 3DM (page

477),

• 7.9 Exportation Wavefront OBJ (page 470)

WriteViews: 7.15.3 Options d’exportation X3D(page 483)

WriteX3dom: 7.15.3 Options d’exportation X3D(page 483)

X

X3D:• 7.14 Importation X3D (Web3D) (page 478),

• 7.15 Exportation X3D (Web3D) (page 482)

x3dom-nurbs: 6.5.23 NURBS pour X3DOM (page436)

XML: 4.11.22 XML Tag (page 269)

Y

.

Z

Zap Ayam: 2.2 Menu spécial (page 40)

zap.tcl: 6.5.13 Accéder aux fonctions de base à partirde la boîte à outils (page 432)

zdialog.tcl: 6.5.15 Passez des dialogues à Zenity(page 433)

ZMax, ZMin:• 4.3.2 Propriété SphereAttr (page 140),

• 4.3.3 Propriété DiskAttr (page 141),

• 4.3.5 Propriété CylinderAttr (page 143),

• 4.3.7 Propriété ParaboloidAttr (page 145),

• 6.6.1 Cône tronqué (page 440)

Zoom:• 4.2.2 La propriété Camera (page 113),

• 2.6 Afficher les raccourcis et les actions surla fenêtre (page 51)

Zoom to All:• 2.5 view menu entry (page 47),

• 2.6 Afficher les raccourcis et les actions surla fenêtre (page 51)

Zoom to Object:• 2.5 view menu entry (page 47),

• 2.6 Afficher les raccourcis et les actions surla fenêtre (page 51)