Scenegraph/ro: Difference between revisions

From FreeCAD Documentation
No edit summary
(Updating to match new version of source page)
(21 intermediate revisions by 2 users not shown)
Line 1: Line 1:
<languages/>
<languages/>
FreeCAD este în esență un colaj de diferite biblioteci puternice, cea mai importantă fiind [http://en.wikipedia.org/wiki/Open_CASCADE openCascade], for managing and constructing geometry, [http://en.wikipedia.org/wiki/Coin3D Coin3d] to display that geometry, and [http://en.wikipedia.org/wiki/Qt_(toolkit) Qt] to put all this in a nice Graphical User Interface.


{{TOCright}}

==Introduction==

<div class="mw-translate-fuzzy">
Geometria care apare în vizualizările 3D ale FreeCAD este redată de biblioteca Coin3D. Coin3D este o implementare satandard a [http://en.wikipedia.org/wiki/Open_Inventor OpenInventor].Software-ul openCascade oferă, de asemenea, aceeași funcționalitate, dar s-a hotărât, încă de la începuturile FreeCAD, să nu se folosească de vizualizatorul openCascade încorporat ci mai degrabă să se treacă la software-ul coin3D mai performant. O modalitate bună de a învăța despre această bibliotecă este cartea [http://www-evasion.imag.fr/Membres/Francois.Faure/doc/inventorMentor/sgi_html/ Open Inventor Mentor].
Geometria care apare în vizualizările 3D ale FreeCAD este redată de biblioteca Coin3D. Coin3D este o implementare satandard a [http://en.wikipedia.org/wiki/Open_Inventor OpenInventor].Software-ul openCascade oferă, de asemenea, aceeași funcționalitate, dar s-a hotărât, încă de la începuturile FreeCAD, să nu se folosească de vizualizatorul openCascade încorporat ci mai degrabă să se treacă la software-ul coin3D mai performant. O modalitate bună de a învăța despre această bibliotecă este cartea [http://www-evasion.imag.fr/Membres/Francois.Faure/doc/inventorMentor/sgi_html/ Open Inventor Mentor].
</div>

==Description==


<div class="mw-translate-fuzzy">
[http://en.wikipedia.org/wiki/Open_Inventor OpenInventor] este de fapt un limbaj de descriere a scenei 3D. Scena descrisă în openInventor este apoi redată în OpenGL pe ecran. Coin3D are grijă să facă acest lucru, astfel încât programatorul nu are nevoie să se ocupe de apelurile complexe openGL, ci doar să-l furnizeze cu un cod OpenInventor valabil. Marele avantaj este că OpenInventor este un standard foarte bine cunoscut și bine documentat.
[http://en.wikipedia.org/wiki/Open_Inventor OpenInventor] este de fapt un limbaj de descriere a scenei 3D. Scena descrisă în openInventor este apoi redată în OpenGL pe ecran. Coin3D are grijă să facă acest lucru, astfel încât programatorul nu are nevoie să se ocupe de apelurile complexe openGL, ci doar să-l furnizeze cu un cod OpenInventor valabil. Marele avantaj este că OpenInventor este un standard foarte bine cunoscut și bine documentat.
</div>


<div class="mw-translate-fuzzy">
Una din marile servicii pe care FreeCAD le face pentru dvs. este de a traduce în mod deschis informația geometriei OpenCascade în limbajul openInventor.
Una din marile servicii pe care FreeCAD le face pentru dvs. este de a traduce în mod deschis informația geometriei OpenCascade în limbajul openInventor.
</div>


<div class="mw-translate-fuzzy">
OpenInventor descrie o scenă 3D sub formă de a[http://en.wikipedia.org/wiki/Scene_graph scenegraph], like the one below:
OpenInventor descrie o scenă 3D sub formă de a[http://en.wikipedia.org/wiki/Scene_graph scenegraph], like the one below:
</div>


[[Image:Scenegraph.gif]]
<div class="mw-translate-fuzzy">
[[Image:Scenegraph.gif]]
[[Image:Scenegraph.gif]]
image from [http://www-evasion.imag.fr/~Francois.Faure/doc/inventorMentor/sgi_html/index.html Inventor mentor]
image from [http://www-evasion.imag.fr/~Francois.Faure/doc/inventorMentor/sgi_html/index.html Inventor mentor]
</div>


<div class="mw-translate-fuzzy">
An openInventor scenegraph describes everything that makes part of a 3D scene, such as geometry, colors, materials, lights, etc, and organizes all that data in a convenient and clear structure. Everything can be grouped into sub-structures, allowing you to organize your scene contents pretty much the way you like. Here is an example of an openInventor file:
Un scenograf openInventor descrie tot ce face parte dintr-o scenă 3D, cum ar fi geometria, culorile, materialele, luminile etc., și organizează toate datele într-o structură convenabilă și clară. Totul poate fi grupat în sub-structuri, permițându-vă să vă organizați conținutul scenei cât de mult vă place. Iată un exemplu de fișier openInventor:
{{Code|code=
</div>
{{Code|lang=bash|code=
#Inventor V2.0 ascii
#Inventor V2.0 ascii
Line 37: Line 55:
}
}
}
}

}}
}}


<div class="mw-translate-fuzzy">
As you can see, the structure is very simple. You use separators to organize your data into blocks, a bit like you would organize your files into folders. Each statement affects what comes next, for example the first two items of our root separator are a rotation and a translation, both will affect the next item, which is a separator. In that separator, a material is defined, and another transformation. Our cylinder will therefore be affected by both transformations, the one who was applied directly to it and the one that was applied to its parent separator.
După cum puteți vedea, structura este foarte simplă. Utilizați separatoare pentru a vă organiza datele în blocuri, un pic asemănător cu modul cum ați organiza fișierele în foldere. Fiecare afirmație afectează ce urmează, de exemplu primele două elemente ale separatorului rădăcină sunt o rotație și o translație, ambele afectează următorul element, care este un separator. În acest separator se definește un material și o altă transformare. Cilindrul nostru va fi astfel afectat de ambele transformări, cel care a fost aplicat direct la acesta și cel aplicat separatorului părinte.
</div>


<div class="mw-translate-fuzzy">
We also have many other types of elements to organize our scene, such as groups, switches or annotations. We can define very complex materials for our objects, with color, textures, shading modes and transparency. We can also define lights, cameras, and even movement. It is even possible to embed pieces of scripting in openInventor files, to define more complex behaviours.
De asemenea, avem multe alte tipuri de elemente pentru organizarea scenei noastre, cum ar fi grupuri, switch-uri sau adnotări. Putem defini materiale foarte complexe pentru obiectele noastre, cu culori, texturi, moduri de umbrire și transparență. De asemenea, putem defini lumini, camere de luat vederi și chiar mișcări. Este posibil chiar să încorporați fragmente de script-uri în fișierele openInventor, pentru a defini comportamente mai complexe.
</div>


<div class="mw-translate-fuzzy">
If you are interested in learning more about openInventor, head directly to its most famous reference, the [http://www-evasion.imag.fr/~Francois.Faure/doc/inventorMentor/sgi_html/index.html Inventor mentor].
Dacă sunteți interesat aflați mai multe despre openInventor, mergeți direct la cele mai faimoase referințe ale sale [http://www-evasion.imag.fr/~Francois.Faure/doc/inventorMentor/sgi_html/index.html Inventor mentor].
</div>


<div class="mw-translate-fuzzy">
In FreeCAD, normally, we don't need to interact directly with the openInventor scenegraph. Every object in a FreeCAD document, being a mesh, a part shape or anything else, gets automatically converted to openInventor code and inserted in the main scenegraph that you see in a 3D view. That scenegraph gets updated continuously when you do modifications, add or remove objects to the document. In fact, every object (in App space) has a view provider (a corresponding object in Gui space), responsible for issuing openInventor code.
În FreeCAD, în mod normal, nu trebuie să interacționăm direct cu scenograful openInventor. Fiecare obiect dintr-un document FreeCAD, fiind o plasă, o formă a unei piese sau orice altceva, devine automat convertit în codul openInventor și inserat în descrierea grafică a scenei principală pe care îl vedeți într-o vizualizare 3D. Această descriere grafică este actualizat continuu când faceți modificări, adăugați sau eliminați obiecte în document. De fapt, fiecare obiect (în spațiul App) are un furnizor de vizualizare (un obiect corespunzător în spațiul Gui), responsabil pentru emiterea codului openInventor.
</div>


<div class="mw-translate-fuzzy">
But there are many advantages to be able to access the scenegraph directly. For example, we can temporarily change the appearence of an object, or we can add objects to the scene that have no real existence in the FreeCAD document, such as construction geometry, helpers, graphical hints or tools such as manipulators or on-screen information.
Dar există multe avantaje pentru a putea accesa scenegraful direct. De exemplu, putem schimba temporar aspectul unui obiect sau putem adăuga obiecte în scenă care nu au o existență reală în documentul FreeCAD, cum ar fi geometria construcției, ajutoarele, sugestii grafice sau unelte cum ar fi manipulatorii sau informații pe ecran .
</div>


FreeCAD itself features several tools to see or modify openInventor code. For example, the following python code will show the openInventor representation of a selected object:
FreeCAD dispune de mai multe instrumente pentru a vedea sau a modifica codul openInventor. De exemplu, următorul cod python va afișa reprezentarea openInventor a unui obiect selectat:
{{Code|code=
{{Code|code=
obj = FreeCAD.ActiveDocument.ActiveObject
obj = FreeCAD.ActiveDocument.ActiveObject
Line 57: Line 84:


}}
}}
<div class="mw-translate-fuzzy">
But we also have a python module that allows complete access to anything managed by Coin3D, such as our FreeCAD scenegraph. So, read on to [[Pivy]].
Dar avem, de asemenea, un modul python care permite accesul complet la tot ceea ce gestionează Coin3D, cum ar fi descrierea grafică a scenei FreeCAD. Deci, citiți mai departe [[Pivy]].
</div>


[[#top|top]]
{{docnav/ro|Mesh to Part/ro|Pivy/ro}}


{{Powerdocnavi{{#translation:}}}}
[[Category:Poweruser Documentation/ro]]
[[Category:Developer Documentation{{#translation:}}]]
{{clear}}
{{clear}}

Revision as of 21:32, 23 August 2020

Introduction

Geometria care apare în vizualizările 3D ale FreeCAD este redată de biblioteca Coin3D. Coin3D este o implementare satandard a OpenInventor.Software-ul openCascade oferă, de asemenea, aceeași funcționalitate, dar s-a hotărât, încă de la începuturile FreeCAD, să nu se folosească de vizualizatorul openCascade încorporat ci mai degrabă să se treacă la software-ul coin3D mai performant. O modalitate bună de a învăța despre această bibliotecă este cartea Open Inventor Mentor.

Description

OpenInventor este de fapt un limbaj de descriere a scenei 3D. Scena descrisă în openInventor este apoi redată în OpenGL pe ecran. Coin3D are grijă să facă acest lucru, astfel încât programatorul nu are nevoie să se ocupe de apelurile complexe openGL, ci doar să-l furnizeze cu un cod OpenInventor valabil. Marele avantaj este că OpenInventor este un standard foarte bine cunoscut și bine documentat.

Una din marile servicii pe care FreeCAD le face pentru dvs. este de a traduce în mod deschis informația geometriei OpenCascade în limbajul openInventor.

OpenInventor descrie o scenă 3D sub formă de ascenegraph, like the one below:

image from Inventor mentor

Un scenograf openInventor descrie tot ce face parte dintr-o scenă 3D, cum ar fi geometria, culorile, materialele, luminile etc., și organizează toate datele într-o structură convenabilă și clară. Totul poate fi grupat în sub-structuri, permițându-vă să vă organizați conținutul scenei cât de mult vă place. Iată un exemplu de fișier openInventor:

#Inventor V2.0 ascii
 
Separator { 
    RotationXYZ {	
       axis Z
       angle 0
    }
    Transform {
       translation 0 0 0.5
    }
    Separator {	
       Material {
          diffuseColor 0.05 0.05 0.05
       }
       Transform {
          rotation 1 0 0 1.5708
          scaleFactor 0.2 0.5 0.2
       }
       Cylinder {
       }
    }
}

După cum puteți vedea, structura este foarte simplă. Utilizați separatoare pentru a vă organiza datele în blocuri, un pic asemănător cu modul cum ați organiza fișierele în foldere. Fiecare afirmație afectează ce urmează, de exemplu primele două elemente ale separatorului rădăcină sunt o rotație și o translație, ambele afectează următorul element, care este un separator. În acest separator se definește un material și o altă transformare. Cilindrul nostru va fi astfel afectat de ambele transformări, cel care a fost aplicat direct la acesta și cel aplicat separatorului părinte.

De asemenea, avem multe alte tipuri de elemente pentru organizarea scenei noastre, cum ar fi grupuri, switch-uri sau adnotări. Putem defini materiale foarte complexe pentru obiectele noastre, cu culori, texturi, moduri de umbrire și transparență. De asemenea, putem defini lumini, camere de luat vederi și chiar mișcări. Este posibil chiar să încorporați fragmente de script-uri în fișierele openInventor, pentru a defini comportamente mai complexe.

Dacă sunteți interesat să aflați mai multe despre openInventor, mergeți direct la cele mai faimoase referințe ale sale Inventor mentor.

În FreeCAD, în mod normal, nu trebuie să interacționăm direct cu scenograful openInventor. Fiecare obiect dintr-un document FreeCAD, fiind o plasă, o formă a unei piese sau orice altceva, devine automat convertit în codul openInventor și inserat în descrierea grafică a scenei principală pe care îl vedeți într-o vizualizare 3D. Această descriere grafică este actualizat continuu când faceți modificări, adăugați sau eliminați obiecte în document. De fapt, fiecare obiect (în spațiul App) are un furnizor de vizualizare (un obiect corespunzător în spațiul Gui), responsabil pentru emiterea codului openInventor.

Dar există multe avantaje pentru a putea accesa scenegraful direct. De exemplu, putem schimba temporar aspectul unui obiect sau putem adăuga obiecte în scenă care nu au o existență reală în documentul FreeCAD, cum ar fi geometria construcției, ajutoarele, sugestii grafice sau unelte cum ar fi manipulatorii sau informații pe ecran .

FreeCAD dispune de mai multe instrumente pentru a vedea sau a modifica codul openInventor. De exemplu, următorul cod python va afișa reprezentarea openInventor a unui obiect selectat:

obj = FreeCAD.ActiveDocument.ActiveObject
viewprovider = obj.ViewObject
print viewprovider.toString()

Dar avem, de asemenea, un modul python care permite accesul complet la tot ceea ce gestionează Coin3D, cum ar fi descrierea grafică a scenei FreeCAD. Deci, citiți mai departe Pivy.

top