Scenegraph/es: Difference between revisions

From FreeCAD Documentation
No edit summary
No edit summary
Line 14: Line 14:


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:
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 scenegraph openInventor describe todo lo que hay en el marco de un escenario 3D, como la geometría, colores, materiales, luces, etc, y organiza todos los datos en una estructura cómoda y clara. Todo puede ser agrupados en sub-estructuras, lo que le permite organizar los contenidos de sus escena más o menos en la forma que quiera. He aquí un ejemplo de un archivo openInventor:


#Inventor V2.0 ascii
#Inventor V2.0 ascii
Line 38: Line 41:
}
}


Como puede ver, la estructura es muy simple. Utilice separadores para organizar los datos en bloques, un poco como lo haría al organizar sus archivos en carpetas. Cada declaración afecta a lo que viene después, por ejemplo los dos primeros puntos de nuestro separador de raíz son una rotación y una traslación, todo ello afectará al siguiente item, que es un separador. En ese separador, se define un material y otra transformación. Nuestro cilindro por lo tanto se verán afectados por las dos transformaciones, la que le fue aplicada directamente, y la que se aplicó al separador que le contiene.
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.


También tenemos muchos otros tipos de elementos para organizar nuestra escena, como los grupos, interruptores o anotaciones. Podemos definir materiales muy complejos para nuestros objetos, con el color, las texturas, los modos de sombreado y transparencia. También podemos definir las luces, cámaras, e incluso movimiento. También es posible integrar pedazos de secuencias de comandos en los archivos de openInventor, para definir comportamientos más complejos.
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.


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].
Si usted está interesado en aprender más sobre openInventor, vaya directamente a su referencia más famosa, [http://www-evasion.imag.fr/~Francois.Faure/doc/inventorMentor/sgi_html/index.html Inventor mentor].


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.
En FreeCAD, normalmente, no es necesario interactuar directamente con el scenegraph openInventor. Cada objeto en un documento FreeCAD, ya sea una malla, una forma de pieza o cualquier otra cosa, se convierte automáticamente en código openInventor y se inserta en el scenegraph principales que aparece en una vista 3D. Esa scenegraph se actualiza continuamente cuando hace modificaciones, añade o elimina objetos en el documento. De hecho, cada objeto (en el espacio app) tiene un proveedor de vista (un objeto correspondiente en el espacio del GUI), responsables de la expedición de código openInventor.


Pero poder acceder a la scenegraph directamente tiene muchas ventajas. Por ejemplo, puede cambiar temporalmente la apariencia de un objeto, o podemos agregar objetos a la escena que no tienen existencia real en el documento FreeCAD, como la geometría de la construcción, ayudantes, sugerencias o herramientas gráficas como manipuladores o información en pantalla.
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.


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 cuenta con varias herramientas para ver o modificar código openInventor. Por ejemplo, el código python siguiente muestra la representación openInventor de un objeto seleccionado:


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


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]].
Pero también tenemos un módulo de python que permite un acceso completo a todo lo controlado por Coin3d. Ese módulo es el scenegraph de FreeCAD. Siga leyendo en [[Pivy]].




{{docnav/es|Mesh to Part/es|Pivy/es}}
{{docnav/es|Mesh to Part/es|Pivy/es}}

Revision as of 21:02, 3 September 2010

FreeCAD es, en esencia, un collage de varias librerias muy potentes, siendo las más importantes openCascade, para la gestión y construcción de la geometría, Coin3d para visualizar esa geometría, y Qt para poner todo esto en una bonita interfaz gráfica de usuario (GUI).

La geometría que aparece en las vistas 3D de FreeCAD son renderizadas por la biblioteca Coin3D. Coin3D es una implementación del estandard OpenInventor. El software OpenCascade también proporciona la misma funcionalidad, pero se decidió, al comenzar el desarrollo de FreeCAD, no utilizar el visor de OpenCascade, sino cambiar al software Coin3D, por tener mejor rendimiento.


OpenInventor es en realidad un lenguaje de descripción de escena 3D. La escena descrita en openInventor es seguidamente renderizada en la pantalla con OpenGL. Coin3d se encarga de hacer esto, por lo que el programador no tiene que lidiar con complejas llamadas a OpenGL, bastará con que le proporcione código OpenInventor válido. La gran ventaja es que openInventor es un estándard muy bien conocido y bien documentado.

Uno de los trabajos mas inportantes que hace FreeCAD hace por ti es, básicamente, traducir la información de geometría OpenCascade al idioma openInventor.

OpenInventor describe una escena 3D en forma de un scenegraph, como la siguiente:

image from Inventor mentor

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 scenegraph openInventor describe todo lo que hay en el marco de un escenario 3D, como la geometría, colores, materiales, luces, etc, y organiza todos los datos en una estructura cómoda y clara. Todo puede ser agrupados en sub-estructuras, lo que le permite organizar los contenidos de sus escena más o menos en la forma que quiera. He aquí un ejemplo de un archivo 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 {
        }
     }
 }

Como puede ver, la estructura es muy simple. Utilice separadores para organizar los datos en bloques, un poco como lo haría al organizar sus archivos en carpetas. Cada declaración afecta a lo que viene después, por ejemplo los dos primeros puntos de nuestro separador de raíz son una rotación y una traslación, todo ello afectará al siguiente item, que es un separador. En ese separador, se define un material y otra transformación. Nuestro cilindro por lo tanto se verán afectados por las dos transformaciones, la que le fue aplicada directamente, y la que se aplicó al separador que le contiene.

También tenemos muchos otros tipos de elementos para organizar nuestra escena, como los grupos, interruptores o anotaciones. Podemos definir materiales muy complejos para nuestros objetos, con el color, las texturas, los modos de sombreado y transparencia. También podemos definir las luces, cámaras, e incluso movimiento. También es posible integrar pedazos de secuencias de comandos en los archivos de openInventor, para definir comportamientos más complejos.

Si usted está interesado en aprender más sobre openInventor, vaya directamente a su referencia más famosa, Inventor mentor.

En FreeCAD, normalmente, no es necesario interactuar directamente con el scenegraph openInventor. Cada objeto en un documento FreeCAD, ya sea una malla, una forma de pieza o cualquier otra cosa, se convierte automáticamente en código openInventor y se inserta en el scenegraph principales que aparece en una vista 3D. Esa scenegraph se actualiza continuamente cuando hace modificaciones, añade o elimina objetos en el documento. De hecho, cada objeto (en el espacio app) tiene un proveedor de vista (un objeto correspondiente en el espacio del GUI), responsables de la expedición de código openInventor.

Pero poder acceder a la scenegraph directamente tiene muchas ventajas. Por ejemplo, puede cambiar temporalmente la apariencia de un objeto, o podemos agregar objetos a la escena que no tienen existencia real en el documento FreeCAD, como la geometría de la construcción, ayudantes, sugerencias o herramientas gráficas como manipuladores o información en pantalla.

FreeCAD cuenta con varias herramientas para ver o modificar código openInventor. Por ejemplo, el código python siguiente muestra la representación openInventor de un objeto seleccionado:

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

Pero también tenemos un módulo de python que permite un acceso completo a todo lo controlado por Coin3d. Ese módulo es el scenegraph de FreeCAD. Siga leyendo en Pivy.


Mesh to Part/es
Pivy/es
Traducciones disponibles: Template:Se