Cette section contient toutes les informations sur Ayam qui ne s'intègrent pas dans les autres sections principales.
À 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ées par des actions de modélisation interactives, les modifications effectuées à l'aide d'interfaces graphiques de propriétés, mais aussi les modifications de vues (modifications de type ou de paramètres de la caméra associé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 le presse-papiers (par exemple, couper, coller) et les opérations de glisser-déposer.
Si un objet est supprimé, il disparaî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 un tampon 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.[∗]
La valeur 1 signifie qu'il y a toujours un état de la scène qui peut être restauré, et qu'une opération d'annulation potentielle 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éfaut de la console de Ayam et également dans les entrées du menu principal "Edit/Undo"
et "Edit/Redo"
.[∗]
Plusieurs actions permettent de vider complètement le tampon d'annulation (c'est-à-dire qu'aucune annulation n'est possible après l'une de ces actions) : Nouvelle scène, Ouvrir (remplacer) la scène et Fermer la vue.
En outre, les opérations d'annulation/rétablissement modifieront également les objets qui résident dans le presse-papiers des objets (s'ils ont enregistré des états dans le tampon d'annulation).
Cela signifie que la sé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)
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éer d'abord une courbe puis appeler l'outil de révolution pour obtenir une surface appropriée (en perdant la courbe comme objet, ou même en la conservant, mais sans relation avec la surface), soit appeler d'abord l'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 est conservée intacte) perdra la relation avec la surface. Il n'y a pas de moyen facile de modifier les paramètres de 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 en une 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 flux d'informations de l'objet paramètre vers l'objet outil.
Ce flux d'informations est contrôlé par le mécanisme appelé Notification.
Le mécanisme de notification veille à ce que chaque fois que les objets paramètres changent, l'objet outil soit informé afin qu'il puisse s'adapter aux changements. Pour les actions de modélisation interactives, la notification sera effectuée en faisant glisser la souris ou après avoir relâché le bouton de la souris (c'est-à-dire après la fin de l'action de modélisation), en fonction du paramètre de préférence principal "LazyNotify"
.
Dans l'exemple ci-dessus, une courbe NURBS est l'objet paramètre et l'objet outil crée une surface de révolution à partir des données de la courbe. La courbe NURBS et les paramètres de l'objet Revolve peuvent changer à tout moment. Lorsqu'ils sont enregistrés dans un fichier de scène Ayam, aucune donnée de surface ne sera écrite, ce qui conduit à de très petits fichiers qui contiennent en outre un historique de modélisation et 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 les objets 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 :
+-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 notification en est conscient et lance des mises à jour dans la hiérarchie de la scène chaque fois que nécessaire et de manière efficace (en ne mettant pas deux fois à jour les objets) selon le paramètre de préférence principal "CompleteNotify"
.
Dans l'exemple ci-dessus, grâce à la notification complète, le deuxième objet Revolve 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 besoin et à 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 (courbe d'interpolation) en une NCurve simple (courbe NURBS).
Grâce au mécanisme de provisionnement, un objet ICurve pourrait être utilisé à la place d'une NCurve comme objet paramètre dans tous les exemples ci-dessus facilement. Et grâce au mécanisme de conversion, les objets de l'outil Revolve pourraient être convertis en objets NPatch simples (par exemple pour des opé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ître n'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 outils les 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 les outils 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 L'objet Script).
Cela peut être fait facilement, par exemple en créant des objets de script de type "Modify"
qui appellent ces outils à 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 de propriété pour permettre à l'utilisateur d'ajuster les paramètres de l'outil tels qu'il les connaît à partir des autres objets Ayam et de combiner différents outils dans des objets uniques avec du code de script normal pour 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 avec un code comme celui-ci :
convOb -inplace; revertC
"revertC"
au rang d'objet.
Un exemple plus utile se trouve dans l'exemple de scène de Marsrakete (disponible sur la page d'accueil de Ayam). Ici, une courbe extraite d'un patch est coupée à la bonne longueur à l'aide d'un script comme celui-ci :
convOb -inplace; trimNC 0.0 0.5
Cette section contient des informations exhaustives sur ce qui se passe exactement, lorsque Ayam lit ou écrit un fichier de scène.
Lors de la lecture d'une scène en utilisant " File/Open "
ou la liste MRU (la plus récemment utilisée) :
"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,"OI"
; si un maître ne peut être trouvé dans la scène, le ou les objets d'instance respectifs seront supprimés,"MI"
; si aucun matériau correspondant ne peut être trouvé, la connexion ne sera pas établie,"SaveMainGeom"
et/ou "SavePaneLayout"
, les géométries respectives des fenêtres/ widgets des balises seront rétablies,<Ctrl+s>
),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 :
" File/New "
) puis la sauvegarde de la scène, enrichiront le fichier de scène avec la racine et les vues (contrairement au chargement de cette scène via " File/Open "
).Lors de la sauvegarde d'une scène à l'aide de "File/Save"
:
"SaveMainGeom"
et/ou "SavePaneLayout"
(si présentes dans l'objet Root),
Les balises "OI"
et "MI"
seront créées pour permettre aux instances d'être connectées à leurs maîtres respectifs et aux objets à leurs matériaux, lors de la relecture du fichier de scène,"SaveAddsMRU"
), et l'état de changement de la scène sera réglé sur " unchanged ",Pour personnaliser Ayam au-delà des capacités du dialogue des préférences, le fichier ayamrc peut être utilisé.
Ce fichier est soit pointé par la variable d'environnement AYAMRC
ou est déterminé comme suit :
"~/.ayamrc"
, où "~"
indique le répertoire d'origine de l'utilisateur actuel."$(HOME)/ayamrc"
si la variable d'environnement HOME
existe, sinon "$(TEMP)/ayamrc"
."~/Library/Preferences/.ayamrc"
, où "~"
indique le répertoire d'origine de l'utilisateur actuel."~/.ayamrc"
, où "~"
indique le répertoire personnel de l'utilisateur actuel. "Main/AutoSavePrefs"
est activé).
Le fichier ayamrc contient :
"SaveDialogGeom"
est défini en conséquence),"-failsafe"
.
Lorsque vous quittez l'application la fois suivante, ou que l'entrée du menu principal "File/Save Prefs"
est invoquée, un fichier ayamrc correct sera à nouveau créé.
Tous les paramètres des préférences seront réinitialisés aux valeurs par défaut et toutes vos modifications du fichier ayamrc seront toutefois perdues.
Une autre façon de réinitialiser le fichier ayamrc consiste à supprimer simplement le fichier manuellement ou 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 correspondantes dans le fichier ayamrc.
Enfin, la réinitialisation des préférences individuelles sans éditeur de texte est également possible à l'aide de l'interface de script en manipulant le tableau global "ayprefs"
.
L'exemple suivant conduit à une réinitialisation du paramètre de préférence de tolérance à sa valeur par défaut pour le prochain démarrage de Ayam.
» unset ayprefs(Tolerance)
Après avoir supprimé certains éléments du tableau des préférences, Ayam doit être relancé.
Vous pouvez adapter les raccourcis clavier utilisés dans l'interface graphique à vos besoins particuliers en utilisant le fichier ayamrc.
Notez que si vous faites cela, l'interface graphique (les entrées de menu et la fenê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ère liaison 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 fournissent des informations utiles sur les chaînes qui peuvent être utilisées pour décrire les pressions sur les touches.
Vous pouvez également utiliser directement la console Ayam pour déduire les noms de clés, entrez simplement:
» toplevel .keytest; bind .keytest <Key> {puts %K}
dans la console Ayam.
Vous pouvez maintenant activer la nouvelle fenêtre de niveau supérieur et taper sur votre 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 raccourci ne soit transmis à la commande bind
.
Exemple :
set aymainshortcuts(Prefs) {Ctrl-p}
<Ctrl+p>
.
Voir le fichier ayamrc lui-même pour une liste complète des raccourcis disponibles.
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 (lignes bleues dans la configuration de couleur standard) lorsque l'anticrénelage est activé.
La valeur par défaut est 1,3.
Ayam ne vérifie pas si la valeur spécifiée est prise en charge par l'implémentation OpenGL utilisée."AAFudge"
, décalage ajouté à toute fin de ligne pour tenir compte des différentes implémentations OpenGL 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é.
La valeur par défaut est de 1,5 (un peu plus que "AALineWidth"
ci-dessus, pour que la largeur de ligne perçue soit égale aux lignes normales, dans le cas du dessin d'une courbe sélectionnée sur une surface résultante non sélectionnée).
Ayam ne vérifie pas si la valeur spécifiée est prise en charge par l'implémentation OpenGL utilisée."AddViewParams"
permet d'ajouter des paramètres personnalisés à la création de widgets OpenGL de vue, comme par exemple "-stereo true"
.
La valeur par défaut est ""
(chaîne vide)."ALFileTypes"
, "ALPlugins"
deux listes qui décrivent les extensions de nom de fichier et les plugins correspondants qui importent et exportent des fichiers du type désigné par les extensions de nom de fichier.
Les valeurs par défaut de ces options sont les suivantes{ ".rib" ".3dm" ".obj" ".3dmf" ".mop" ".dxf" ".x3d" }
{ "rrib" "onio" "objio" "mfio" "mopsi" "dxfio" "x3dio" }
"AllowWarp"
: contrôle si le pointeur de la souris doit être déplacé vers la nouvelle position des points 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 des objets ou des balises Script sont chargées.
La valeur par défaut est 1 – oui, avertir des objets et balises Script.
Les valeurs valides sont 0 et 1."AUCommands"
, commandes qui seront exécutées dans la console lorsque <Shift+Return>
est utilisé au lieu de <Return>
.
Voir aussi la section
Mettre à jour l'interface graphique.
La valeur par défaut est "uS;rV ;"
, ce qui entraîne une mise à jour complète de la hiérarchie des objets, de l'interface graphique des propriétés et de toutes les fenêtres de visualisation."AvoidPwlCurve"
, détermine si le dessin et la tessellation NURBS évitent l'utilisation de la fonction GLU "PwlCurve"
pour spécifier les courbes de trim polygonales.
Cette fonction utilise moins de mémoire et est plus rapide que l'alternative mais peut conduire à une tessellation qui est clairement trop 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.
Les valeurs 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 graphique de 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 vers l'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 mot pour 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 pas plusieurs objets dans un objet Level mais un seul objet avec toutes les majuscules et tous les biseaux[∗].
Valeur par défaut : "TP,TC,BP,CP"
."CullFaces"
, permet d'éliminer les polygones orientés vers l'arrière avant l'affichage avec OpenGL.
Cela peut améliorer la qualité visuelle des surfaces ombrées sur leurs bords.
Notez cependant 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 la liste des modes qui sont cycliques au clavier (via "Ctrl+PageUp"/"Ctrl+PageDown"
), par défaut : 0 – non.
Les valeurs valides sont 0 et 1."CyclePerspective"
, détermine si le type de vue "Perspective"
est inclus dans la liste des types qui sont cycliques au clavier (via "PageUp"/"PageDown"
), par défaut : 0 – non.
Les valeurs valides sont 0 et 1."DailyTips"
: une liste de chaînes de caractères qui apparaissent comme conseils au démarrage dans la console (par défaut : grande)."DisableFailedScripts"
: spécifie si les scripts dans les objets Script ou les balises BNS/ANS doivent ê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 restitution de 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)."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 bouton supplémentaire qui permet de basculer l'affichage des fichiers cachés (par défaut 0).
Les valeurs valides sont 0 et 1."FixDialogTitles"
, cette option fait précéder le titre d'une boîte de message qui est normalement 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 illisible ou pas du tout.
Sous Mac OS X Aqua (pas X11 !), cette option est activée par défaut.
Sur tous les autres 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 est désactivée par défaut sur toutes les plateformes."FixX11Menu"
permet de contourner le problème des menus non collants sur X11 (les menus dé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 est activée, cette option nécessite une quantité considérable de ressources en raison des opérations de sélection constantes pendant que le pointeur de la souris se déplace sur la fenêtre de visualisation et entraî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 (dans le menu Affichage et la boîte à outils) à votre gamma d'affichage.
Si vous êtes sur un SIG, il est recommandé de régler ce paramètre à environ "0,7".
La valeur par défaut ""
(chaîne vide) n'entraîne aucune 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 doivent rester ouvertes après la saisie d'un paramètre ou plutôt disparaître immédiatement.
La valeur par défaut est 0 – les GUI disparaissent immédiatement.
Voir aussi la section
Les interfaces graphiques des paramètres intermédiaires.
"Kill"
: nom d'un programme qui tue d'autres processus et accepte un identifiant de processus comme argument (utilisé par l'interface graphique de restitution) (par défaut : "kill"
) (un paramètre de "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é introduite dans Ayam 1.4."LineWidth"
, largeur de ligne utilisée pour tracer les lignes des objets non sélectionnés (lignes bleues 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'arborescence ou la liste.
Les valeurs valides sont 0 et 1.
La valeur par défaut est 1 – oui, listez les types."LoadEnv"
, contrôle si le fichier de la scène d'environnement doit être lu à chaque démarrage de l'application.
Les valeurs valides sont 0 et 1.
La valeur par défaut est 0 – aucun fichier ne sera lu.
L'enregistrement d'un fichier de scène d'environnement via l'entrée de menu "Special/Save Environment"
ou la définition d'une valeur différente d'une chaîne vide (""
) dans le paramètre de préférence "EnvFile"
mettra automatiquement cette option à 1."MarkHidden"
détermine si les objets cachés doivent être marqués (en utilisant un point d'exclamation précédent) dans la vue arborescente ou la liste d'objets.
Les valeurs valides sont 0 et 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'interface graphique 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"
.
Les valeurs 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 de transformation et le processus de normalisation du point de contrôle doivent rester intacts (valeur par défaut : 6)."NormalizeMark"
, contrôle si les coordonnées de la marque doivent être normalisées après avoir dé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 interactive doivent ê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 des actions 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 la fenêtre actuelle ; une valeur de -10 signifie un dixième de la largeur/hauteur de la fenêtre actuelle.
La valeur par défaut est -10."PaneMargins"
est une liste de cinq valeurs en virgule flottante actuellement utilisées comme marge 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 : vue supérieure-2 vs.vue supérieure-1).
Ces valeurs contrôlent la taille minimale d'un volet exprimée de manière inverse (1/x) et relative : plus le nombre est petit, plus la marge est grande.
La marge de sécurité du volet horizontal le plus élevé (qui divise les vues internes supérieures de la hiérarchie et la troisième vue) est par exemple un peu plus grande afin que le menu principal ne soit pas facilement masqué (la valeur correspondante est 5.0).
La valeur par défaut de la console (20.0) conduit à une petite marge, de sorte que la console peut être réduite à 2 ou même 1 ligne de texte.
Les valeurs par dé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, la liste de sélection des objets prendra quand même le relais.
La valeur par défaut est 5. [∗]"PickTolerance"
: la tolérance utilisée pour déterminer si un objet doit être choisi ou non (par dé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 surfaces ombrées en mode ombrage et dessin (de sorte que les courbes apparaissent toujours au-dessus des surfaces).
Les valeurs par défaut sont 1.0, 1.0."Prompt"
: contrôle l'invite de la console Ayam.
Voir aussi la section
La console.
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)\].../[file tail [pwd]]>
sera utilisé, qui affiche le nom des opérations qui peuvent être annulées et refaites, l'outil répéter, et le 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 chemin d'accès au répertoire courant.
Pour afficher la valeur d'une variable Tcl quelconque dans l'invite (par exemple, pour désigner le niveau actuel dans la hiérarchie de la scène), une trace d'écriture doit être liée à cette variable.
La trace 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 par défaut est "st"."PVNormalName"
, nom par défaut pour les balises PV normales de sommet, la valeur par défaut est "N"."PVColorName"
, nom par défaut pour les balises PV de couleur de sommet, la valeur par défaut est "Cs"."RotateCrossSection"
, contrôle si la création de balayages doit faire pivoter la courbe de la section 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éfaut[∗]), la section transversale est vérifiée et un demandeur est levé offrant de faire tourner la courbe uniquement si elle n'est pas déjà dans le bon plan.
Voir aussi la section Outil de balayage (Sweep).
"SafeAutoFocus"
désactive l'AutoFocus (voir la section
La sous-section suivante contient les paramètres relatifs à l'interface graphique utilisateur (GUI).) lorsque certaines fenêtres de dialogue sont ouvertes, afin qu'elles ne soient pas déplacées sous d'autres fenêtres par des mouvements de souris accidentels sur les systèmes où le gestionnaire de fenêtres ne fait qu'une levée automatique 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. [∗]"SelectLast"
détermine si les clics dans le widget de l'arbre (mais pas sur un noeud) doivent sélectionner le dernier objet du niveau actuel.
Les valeurs valides sont 0 et 1.
Par défaut, 1 – oui.[∗]"SelLineWidth"
, largeur de ligne utilisée pour dessiner les lignes des objets sélectionnés (lignes blanches 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."SelXOR_R"
, "SelXOR_G"
, "SelXOR_B"
: détermine une valeur de couleur qui est utilisée pour faire glisser les rectangles de sélection.
Notez que la couleur n'est pas utilisée directement mais combinée avec la valeur de couleur des pixels déjà dessinés par XOR.
Les valeurs par défaut sont 255 pour 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 fait d'appuyer sur la touche Shift en même temps que la touche Tab ne produit pas "<Shift-Tab>" (par défaut) mais un autre symbole comme par exemple "<ISO_Left_Tab>" (beaucoup, mais pas tous, les systèmes X11 modernes l'utilisent souvent)."SimpleToolGUI"
contrôle si les éléments standard de l'interface utilisateur (tels qu'ils sont connus des propriétés GUI) doivent être utilisés dans les dialogues d'outils ou simplement dans les widgets de saisie simple.
Les valeurs valides sont 0 et 1.
Par défaut, 0, utilisez les éléments standard de l'interface utilisateur.[∗]"StripShaderArch"
détermine si une deuxième extension (l'architecture) doit être supprimée des noms de fichiers des ombres compilés lors de la recherche des ombres.
Les valeurs valides sont 0 et 1.
Par défaut, 1 – oui. [∗]"SwapMB"
, permet d'échanger les boutons 2 et 3 de la souris sur Mac OS X Aqua (pas X11 !) pour les fixations de la souris spécifiées dans
"SwapMBSC"
ci-dessous, car sous Mac OS X Aqua, traditionnellement, la dénomination du bouton central et du bouton droit de la souris est inversée par rapport à X11/Win32."SwapMBSC"
contient les liens de la souris à permuter, lorsque "SwapMB"
ci-dessus est activé.
La valeur 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 la fenêtre de la boîte à outils (par défaut, en utilisant toutes les sections disponibles : {trafo trafo2 solides misco nurbs toolobjs points nctools1 nctools2 camera misc}
).
Voir aussi la section
La boîte à outils.
"ToolBoxShrink"
, contrôle si la fenêtre de la boîte à outils doit s'enrouler autour de son contenu après une opération de redimensionnement.
Cette option n'est pas utilisée en mode GUI à fenêtre unique.
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 obtiendra alors, selon le gestionnaire de fenêtre ou sa configuration, une décoration différente ou pas de décoration, pas d'icône (ou pas d'entrée dans la barre des tâches sur Win32), et sera toujours iconifiée lorsque la fenêtre principale sera iconifiée.
Non utilisé en mode GUI à fenêtre unique.
Les valeurs valides sont 0 et 1.
La valeur par défaut est 1 – oui."UseInternalFD"
passe à un dialogue de fichier interne pour le chargement des plugins.
Cette option n'est utilisée que sur Mac OS X Aqua (pas X11 !), car là, le dialogue de fichier normal n'entrera pas dans les structures de répertoires du paquet d'applications.
Cette option est activée par défaut sur Mac 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 Changer les dialogues de fichiers en Tcl.
"WarnPnts"
contrôle les messages d'avertissement pour les points sélectionnés manquants (valeurs valables : 0, 1 ; par défaut : 1 – oui).[∗]"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 zombies créés par l'interface graphique de restitution. Ceci est par exemple nécessaire pour la plate-forme Linux."WheelZoom"
, une valeur flottante qui contrôle le facteur de zoom pour les fenêtres d'affichage lorsque soit la molette de la souris est utilisée, soit les touches <+>
/<->
; la valeur par défaut est 0,5.
Une valeur de 0,75 entraîne un contrôle du zoom plus fin mais un zoom plus lent et une valeur de 0,25 un zoom plus grossier mais rapide.Avec le fichier ayamrc, la base de données des RiOptions et des RiAttributs peut également être adaptée au systè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
Balise RiAttribute et
Balise RiOption.
La syntaxe pour une nouvelle RiOption est assez simple comme le montre l'exemple suivant :
set riopt(runtime) { { verbosity s { "silent" "normal" "stats" "debug" } } }
"runtime"
et y ajoute une seule option, " verbosity"
.
L'option est déclarée comme étant de type chaîne de caractères en utilisant "s"
et est fournie avec une liste de valeurs par défaut : "{ "silent" "normal" "stats" "debug" }"
.
Pour ajouter une autre option à cette section, 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 } }
{0.0 1.0 0.0}
,{1.0 1.0 1.0}
.Cette section documente les variables d'environnement utilisées par Ayam.
"AYAMRC"
: désigne le nom complet du fichier ayamrc (voir la section
Le fichier Ayamrc).
"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 sont pas définis) ; également valeur initiale du paramètre de préférence "TmpDir"
(utilisé sur Win32 si aucun 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 documentation)."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 fichier ayamrc n'existe).Cette section donne un aperçu des différents plugins disponibles dans Ayam.
Il existe actuellement cinq grands types de plugins pour Ayam :
aysdr, ayslb, ayslc, ayslo, ayslo3d, ayslx, ayso. Voir aussi la section Plugins d'analyse des ombres (shaders).
metaobj, sdnpatch, sfcurve, sdcurve, bcurve, csphere. Voir aussi la section Gestion des objets personnalisés.
dxfio, mfio, mopsi, objio, onio, rrib, x3dio. Voir aussi la section Importations et Exportations.
Les plugins suivants sont fournis pour permettre l'analyse des ombres compilées :[∗] "ayslb"
pour Air, "ayslx"
pour Aqsis, "ayso"
pour RDC, "ayslo"
pour PRMan, "ayslo3d"
pour 3Delight, "aysdr"
pour Pixie[∗] , and "aygso"
pour Gelato[∗].
Après le chargement de l'un des plugins susmentionnés, Ayam sera en mesure d'analyser les ombres compilé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 puis ayslx 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 utilisant l'un des scripts Tcl fournis : "loadayslb.tcl"
, "loadayslo.tcl"
, "loadayslo3d.tcl"
, "loadayslx.tcl"
, "loadayso.tcl"
, "loadaysdr.tcl"
, et "loadaygso.tcl"
.
Pour charger 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érent ou pour rechercher immédiatement les ombres après le chargement du plugin.
Pour cela, il suffit d'enlever les marques de hachage (#) des lignes correspondantes dans le script.
Notez qu'il n'est pas nécessaire de 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 fera avant que la séquence de démarrage de Ayam n'exécute la passe initiale d'analyse des ombres.
Le chemin de recherche des ombres utilisé pour la première passe d'analyse des ombres est pris dans le paramètre de pré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 ombres doit également être lancée manuellement.
Les deux actions peuvent être effectuées à l'aide de l'é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 les plugins d'analyse des ombres sont indépendants de la version de Ayam (mais dépendent toujours de la version du moteur de rendu et de la version Tcl). Cela permet de distribuer des plugins d'analyse des ombres mis à jour sans mettre à jour Ayam également et donc à une fréquence plus élevée. De plus, la compilation d'un plugin d'analyse des ombres est maintenant beaucoup plus facile.
Pour l'analyse des ombres sans plugins, Voir aussi la section Analyse des ombrages (shaders).
Automatic Instancing est disponible via l'entrée du menu principal : "Special/Instances/Automatic Instancing"
.
Lorsque cette entrée de menu est sélectionné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 algorithme simple qui compare récursivement les objets (Voir aussi la section L'objet Instance).
Deux objets sont considérés comme instanciables lorsque tous leurs attributs, à l'exception des attributs de transformation, sont identiques. La comparaison des matériaux et des balises peut être désactivée. La portée de l'instanciation automatique peut également être définie sur les objets sélectionnés, le niveau actuel ou tous les objets de la scène (indépendamment du niveau actuel et de la sélection). [∗]
L'algorithme d'instanciation est également capable de créer des instances de regroupement d'objets (objets avec des objets enfants, par exemple des niveaux ou des outils-objets comme revolve). Toutefois, pour que deux objets de regroupement soient instanciés, non seulement tous les objets enfants et les objets de regroupement doivent être instanciables, mais les objets enfants doivent également être dans le bon ordre. Il ne suffit pas que pour chaque enfant du maître potentiel, il existe un enfant correspondant de l'instance potentielle. L'instanciation des objets de regroupement peut réduire considérablement le nombre total d'objets dans 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: Kunii T.L. (ed.): Spring Conference on Computer Graphics (SCCG 2001) Conference Proceedings, Budmerice, Slovakia, 25-28 April 2001, ISBN 80-223-1606-7
Le plugin de rendu piloté par l'importance peut être utilisé pour réduire considérablement les temps de rendu lors du développement d'une scène. Il fonctionne en trois étapes principales :
"RiMatte"
.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 des ré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 par dérivation de l'importance des objets actuellement sélectionnés ou modifiés. Pour éviter toute incohérence dans 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 différent et la possibilité de réduire la résolution de rendu et le taux d'ombrage. Pour réduire davantage les temps de rendu des moteurs de rendu de raytracing, la taille de la région à restituer peut être automatiquement 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 non occupé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 fonctionnalité n'est pas très sophistiquée pour le moment, car elle utilise l'outil texte Unix "diff"
pour décider si deux flux RIB sont identiques et ne nécessitent donc pas de restitution.
Pour commencer à utiliser l'IDR :
"File/Load Plugin"
),"Custom/Open IDR"
,"Selection"
, "Pot"
),"Render !"
.Schultz, R., and Schumann, H.: "Importance Driven Rendering - Using Importance Information in the Rendering Process", in: Hamza M., Sarfraz M. (ed.): Computer Graphics and Imaging (CGIM 2001) Conference Proceedings, Honolulu, Hawaii, 13-16 August 2001, ISBN 0-88986-303-2
Le plugin AyCSG peut être utilisé pour résoudre et prévisualiser les opérations du CSG. Pour cela, le plugin utilise des algorithmes de restitution CSG basés sur des images fournis par la bibliothèque OpenCSG de Florian Kirsch. La bibliothèque OpenCSG prend actuellement en charge les algorithmes Goldfeather et SCS. Ce dernier ne fonctionne correctement qu'avec des primitives convexes. Comme Goldfeather et SCS sont tous deux des algorithmes de restitution d'images, il n'y a pas de limite aux types d'objets géométriques qui peuvent être utilisés dans les hiérarchies CSG. Vous pouvez par exemple utiliser les Quadrics, NURBS et Metaballs dans toutes les combinaisons possibles. Vous devez juste vous assurer que chaque primitive CSG décrit un espace fermé.
Pour que les algorithmes de restitution CSG fonctionnent correctement, il faut connaître la complexité en profondeur (convexité) d'une primitive.
La complexité en profondeur d'une primitive détermine le nombre maximum de surfaces orientées vers l'avant que tout rayon traversant cette primitive pourrait traverser.
Une sphère régulière a une complexité de profondeur de 1, un tore de 2, mais ne confondez pas la complexité de profondeur 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, des erreurs 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 profondeur mais aussi de l'ordre d'enroulement des primitives OpenGL (triangles ou quads) utilisées pour le dessin des primitives CSG.
L'ordre d'enroulement doit être cohérent dans une scène, de sorte que l'algorithme de restitution 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 les patchs NURBS sont utilisés dans les opérations CSG, il peut être nécessaire de les inverser (par exemple en utilisant l'outil "RevertU"
, voir
Outil de reversement sur U (Revert U)).
Si l'ordre d'enroulement de certaines des primitives dans une hiérarchie CSG n'est pas correct, les primitives respectives ne seront pas efficaces dans les opérations CSG dans la mesure où l'image restituée devient complè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, vous pouvez toujours obtenir un aperçu des CSG importantes en utilisant des objets en les sélectionnant et en activant l'option de vue "Draw Selection only"
.
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 PBuffers et, selon les options de rendu choisies, un tampon de stencil.
Des accélérations peuvent être obtenues en utilisant les extensions "GL_ARB_occlusion_query"
ou "GL_NV_occlusion_query"
(si vous en disposez).
Une fois que le plugin AyCSG est chargé avec succès, vous pouvez restituer l'aperçu CSG dans n'importe quelle fenêtre de visualisation en utilisant le raccourci clavier <Ctrl+C>
ou en utilisant le nouveau bouton dans la barre de menu de chaque fenêtre de visualisation (voir image ci-dessous).
Si vous maintenez la touche <Shift>
enfoncée tout en appuyant sur le bouton, la vue commencera à restituer continuellement les CSG (le bouton reste enfoncé pour le signifier) jusqu'à ce que vous cliquiez à nouveau sur le bouton.
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 à nouveau 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 primitives concaves (complexité de profondeur > 1).
Comme cette décision est prise en fonction de la complexité 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.
En citant 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(n^2), mais avec 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 erreurs de restitution peuvent se produire.
"OcclusionQuery"
: Utilise les requêtes d'occlusion pour profiter implicitement de la complexité de la profondeur sans la calculer.
Cela est particulièrement utile pour l'algorithme SCS où 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 soient présentes.
"DCSampling"
: Calcule la complexité de la profondeur k en utilisant le tampon du pochoir.
Cela rend l'algorithme O(n·k), mais avec des coûts constants élevés.
Dans le cas de l'algorithme Goldfeather, la littérature indique qu'il s'agit d'un algorithme Goldfeather à couches.
Notez que cette option nécessite un tampon de pochoir qui doit être activé lors de la création d'une fenêtre de vue utilisant des paramètres de vue supplémentaires (option de préférences "AddViewParams"
, voir aussi la section sur
Paramètres de préférences cachés).
Si les tampons de pochoir ne sont pas activés, le plugin AyCSG ajoutera automatiquement l'option correspondante aux préférences de Ayam, mais cela n'a d'effet que sur les fenêtres d'affichage nouvellement 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é de profondeur 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 le processus (ne fonctionne pas pour le moment).Le tableau suivant donne un aperçu des options disponibles, de leurs restrictions et des exigences implicites.
Algorithm | DCSampling | Concave Primitives | DC Tags needed | Requirements |
Goldfeather | OcclusionQuery | Yes | No | occlusion query extension |
Goldfeather | DCSampling | Yes | No | stencil buffer |
Goldfeather | NoDCSampling | Yes | Yes | None |
Automatic | NoDCSampling | Yes | Yes | None |
SCS | NoDCSampling | No | No | None |
SCS | OcclusionQuery | No | No | None |
SCS | DCSampling | No | No | stencil buffer |
En cas de réponse lente de l'interface utilisateur de Ayam (ne tenant pas compte des longues opérations de mise à jour de l'arbre), plusieurs choses peuvent être faites pour augmenter la vitesse de dessin :
"Hide"
dans le menu "Tools"
."<F4>"
pour basculer)."<F3>"
).<Ctrl+d>
manuellement."UseMatColor"
.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 La sous-section suivante contient les paramètres relatifs à l'interface graphique utilisateur (GUI).).
S'il y a beaucoup d'objets, il est également conseillé de faire passer le widget de sélection des objets du mode 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 est impliquée (car toute fonctionnalité GLU sur Mac OS X nécessite un contexte GL). GLU est nécessaire pour la tessellation de PolyMesh et NURBS.
En raison de la façon dont Ayam est mis en oeuvre, il existe plusieurs restrictions et lacunes :
"TclPrecision"
).Contribuer à rendre Ayam encore meilleur pimentera aussi votre vie. Voici comment faire :
» 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 de préférence "Scripts"
.Suggestions de lecture :
http://www.renderman.org/
http://www.rendermanacademy.com/
Tout d'abord, je tiens à exprimer un grand "merci" à Bernd (Pink) Sieker. C'est le premier vrai utilisateur de Mops et le premier bêta-testeur, qui m'a incité ces dernières années par e-mail et sur IRC à corriger ce bug particulier, à ajouter quelques fonctionnalités essentielles, à déplacer les lumières à nouveau etc. pp. en d'innombrables itérations. Bernd, sans votre aide, je n'en serais sûrement pas là, merci !
OpenGL (R) is a registered trademark of Silicon Graphics, Inc.
The RenderMan (R) Interface Procedures and Protocol are: Copyright 1988, 1989, 2000 Pixar All Rights Reserved
RenderMan (R) is a registered trademark of Pixar
The Affine Libraries and Tools are Copyright (c) 1995, 1996, 1997, 1998 Thomas E. Burge All rights reserved.
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.