Questions de Vectorisation et de Rendu

  1. FAQ
  2. »
  3. Vectorisation et gestion des polices
  4. »
  5. Questions de Vectorisation et de Rendu

L’Objtoolkit prend-il en charge les textures?

Oui, l’OBJToolkit prend en charge les matériaux avec des textures.

Mais n'oubliez pas que les définitions des matériaux ne font pas partie du fichier .obj et sont stockés dans le fichier .mtl. Le fichier .obj contient des références aux fichiers .mtl (lignes avec jeton mtllib, comme mtllib filename.mtl) pour prendre des définitions de matériaux. Définitions des matériaux dans les fichiers .mtl se réfèrent aux fichiers jpg/bmp/..., donc si vous avez des images du fichier .obj mais sans aucun fichier .mtl correspondant, les matériaux (et les textures) ne seront pas importés.

Comment puis-je éteindre la lumière par défaut dans l'environnement? Quelle fonction dois-je appeler pour l'implémenter? Pouvez-vous me dire comment puis-je éteindre la lumière par défaut?

Il n'y a pas d'éclairage dans les modes de rendu 2dWireframe, 3dWireframe et HiddenLine. L'éclairage n'existe que dans les modes de rendu ombrés.

Les variables de base de données suivantes peuvent être utilisées pour contrôler le comportement des lumières dans les fenêtres de dessin:
https://docs.opendesign.com/td/DEFAULTLIGHTING.html
https://docs.opendesign.com/td/DEFAULTLIGHTINGTYPE.html

Vous devez tenir compte que si vous désactivez l'éclairage par défaut, vous devez fournir vos propres sources de lumière dans la base de données, ailleurs les lumières par défaut seront activées même si vous les avez désactivées. Ce comportement est logiquement correct, car si votre scène graphique n'a pas au moins une source de lumière - votre géométrie ombrée ne sera pas mise en surbrillance, donc tous les graphiques à l'intérieur de la scène seront noirs et je ne pense pas que quelqu'un s'attende à un tel résultat (un résultat très similaire sera affiché si vous passez en mode de rendu HiddenLine).

Comment puis-je régler la luminosité et la direction de la source lumineuse par défaut?

Vous pouvez ajouter la lumière lointaine dans votre dessin, puis vous pouvez désactiver l'éclairage par défaut car votre scène graphique va contenir une lumière non par défaut.

OdDbLightPtr pLight = OdDbLight::createObject();
pLight->setDatabaseDefaults(pDb);
pLight->setLightType(OdGiDrawable::kDistantLight);
pLight->setLightDirection(OdGeVector3d::kZAxis);
OdDbBlockTableRecord::cast(pDb->getActiveLayoutBTRId().openObject(OdDb::kForWrite))->appendOdDbEntity(pLight);

Dans notre application, nous voulons avoir deux ou plusieurs fenêtres de modèle sur des fenêtres séparées. Comment pouvons-nous mettre en œuvre cela?

Pour dessiner dans un ensemble de fenêtres, vous devez créer un dispositif OdGsDevice séparé pour chaque fenêtre. Vous pouvez utiliser la même OdGiContextForDbDatabase pour chaque appareil. L’OdEdBaseIO et l’OdExEditorObject sont conçus pour les capacités d'édition et ne sont pas liés au périphérique. Les trackers sont attachés à l’OdGsView, il n'y a donc aucun problème à les utiliser dans des fenêtres/périphériques séparés.

Comment puis-je obtenir la vectorisation de la couleur de texte DWG?

La couleur est stockée dans l’OdGiSubEntityTraits (méthode colour()). Les entités définissent la propriété ici une fois que vous commencez à dessiner.

Existe-t-il un moyen facile de rendre les données de métafichier graphiques proxy dans un contexte de l’OdGiWorldDraw?

Le moyen le plus simple est d'appeler la méthode worldDraw() de l'entité proxy.

Les ODAs SDK prennent-ils en charge la transparence par face pour l’OdDbPolyFaceMesh?

Les ODAs SDK ne prennent pas en charge la transparence par face pour l’OdDbPolyFaceMesh. La transparence sur une entité OdDbPolyFaceMesh entière peut être définie à la place.

Comment puis-je contrôler le nombre de triangulation du vectorisateur pour les shells?

Vous pouvez contrôler le nombre de triangulation du vectorisateur pour les shells à l'aide du code suivant:

ModelerModulePtr pM = odrxDynamicLinker()->loadModule(OdModelerGeometryModuleName, false);
wrTriangulationParams TriangulationParams;
TriangulationParams.normalTolerance = 0.5;
TriangulationParams.PointsPerEdge = 1000;
TriangulationParams.BetweenKnots = 100;
TEST_ASSERT(eOk == pM->setTriangulationParams(TriangulationParams));

Vous pouvez également vérifier l'exemple OdaMfcApp: Outils -> Options -> Paramètres de triangulation/ Tools->Options->Triangulation Params.

Quelle est la différence entre l'explosion et la vectorisation?

La vectorisation est un processus de conversion d'une représentation d'entité de base de données en un ensemble de primitives géométriques simples pouvant être utilisées pour le rendu, l'exportation, etc. Par exemple, une entité de cercle pourrait être convertie en un ensemble de segments de ligne, le texte pourrait être tessellé en un ensemble de triangles, etc.

L'explosion est un processus de subdivision des entités de base de données en entités de base de données plus simples. Par exemple, une entité personnalisée avec une géométrie de texte et de cercle peut être éclatée en entités de cercle et de texte, mais le processus d'explosion ne modifie pas le type de géométrie d'entité. Par exemple, un cercle et un texte ne peuvent pas être explosés davantage car ce sont les primitives les plus simples elles-mêmes.