Home
Simulación de Objetos Planos Deformables con Resolución
Contents
1. 3 Conclusiones En este proyecto final de carrera se ha desarrollado un simulador de tejidos dpoSimulator que tiene en cuenta los contactos y colisiones de los objetos planos deformables tejidos consigo mismos y con otros objetos ya sean otros tejidos u objetos r gidos como se muestra en la Figura 3 1 El desarrollo se ha basado en la implementaci n del algoritmo descrito en Bridson Fedkiw amp Anderson 2002 El simulador tiene las siguientes caracter sticas 103 Puede cargar cualquier escena con objetos y par metros definidos por el usuario pues puede importar mallas en formato STL c mo se indica en el apartado 2 3 1 Se puede cambiar f cilmente la escena a mostrar cambiando la carpeta environment Se puede manipular los objetos aplicando restricciones de velocidad para m s informaci n consulte la secci n 2 3 1 Ofrece la posibilidad de visualizar los contactos y colisiones detectados rboles de cajas delimitadoras y guardar la escena c mo im genes Tiene todas las ventajas de un entorno 3D Permite moverse por las escenas y mostrarlas con diferentes estilos de visualizaci n Tambi n se han desarrollado un conjunto de aplicaciones auxiliares stlViewer Permite cargar con facilidad un conjunto de mallas en formato STL en un entorno 3D meshMover Permite desplazar todos los nodos de una malla en formato STL cambiando as su posici n en la escena fabricCreator Permite crear con facilidad m
2. Load parameters from parameters file _params loadFromFile Load objects from the files in environment bodies oBJects gt lodo0rromeiles dt time 0 _stepper SkcondrtresWorla s Wo Lostepotbategy mew World WorldStepStrategy this Ejecuci n de la simulaci n Una vez se ejecuta el bucle principal el programa espera a que se produzca un evento Si este es de visualizaci n por ejemplo mostrar los rboles de cajas delimitadoras o los contactos detectados se llaman las funciones del archivo WorldScene cpp En caso de que sea un comando de ejecuci n de la simulaci n play o step se llama a la funci n stepTimer en World Viewer cpp sta le dice al mundo world que d un paso de simulaci n y despu s actualiza la escena que se muestra Static void stepTimer void data SoSensor Obtain data which is the world WorldViewer theData WorldViewer data Step foward in time World world theData gt getWorldPtr world gt step Update rendering models theData gt sendUpdateSignal 99 Update displayed time theData gt emitUpdateTimeDisplay 1f this is a single step then stop loop in any other case the simulation will continue if theData gt getStepFlag WorldViewer TimeCallback timeCallback theData gt getTimeCallback SoTimerSensor amp timerSensor timeCallback gt getSensor timerSensor unschedule La llamada al
3. b C lculo de impulsos resultantes debidos al contacto de dos aristas De forma an loga a la anterior la ecuaci n 2 99 muestra el valor de la distancia de interferencia y las masas de las part culas en contacto para el caso de dos aristas en contacto Se recuerda que a y b son las coordenadas baric ntricas de los puntos en contacto respecto a sus respectivas aristas Las masas tambi n se calculan como promedio ponderado seg n las coordenadas baric ntricas de las de los v rtices d h xa X2 h axi 1 a x3 bx3 1 b x4 f M am 1 ajm Mer bmx 1 b m 2 99 63 as NS Figura 2 38 Nomenclatura utilizada para dos aristas en contacto Tambi n se parte de la ecuaci n de impulso resultante para colisiones inel sticas entre aristas Se sustituye en ella la diferencia de velocidades de 2 95 y el valor de las masas de la 2 99 dando la ecuaci n final 2 101 del c lculo de impulsos debidos a un contacto entre dos aristas n 1 2 nt 1 2 j Vy Vy 1 we w w 2 100 m m m m t _ 1 0 1d _ rA z atd En 1 a m bm 0 Dm At PN y a 1 2 b 1 b 2 101 m m m m d h ax 1 a x3 bx 1 b x hil Distribuci n de impulsos Los impulsos calculados en los apartados anteriores son vectores que act an sobre cada una de las entidades que forman parte de un contacto o colisi n ya sea nodo arista o t
4. String getFilename _filename accessor Detailed Description This class contains a list of velocity constraints to be applied to an object read from a file Constructor amp Destructor Documentation VelConstraintsList VelConstraintsList String filename Constructor This constructor already reads and stores data from a file with the format example Time 0 Number of constraint vectors 1 VertexId 0 Vector 000 Time 1 Number of constraint vectors 1 VertexId 0 Vector 0 0 0 1 Time 2 Number of constraint vectors 0 Time 2 5 Number of constraint vectors 2 VertexId 15 Vector 0 1 0 1 0 VertexId O Vector 0 1 0 1 0 121 Explanation of the example From time O to 1 the vertex O will be fixed From time 1 to 2 the vertex O will have a velocity of 00 0 1 From time 2 to 2 5 no vertexs will be constraint From time 2 5 on vertexs 15 and O will be constraint with a velocity of 0 1 0 1 0 J NOTE Only numbers are read but they must have coeherence or the simulation will fail Parameters filename File containing information to be stored Member Function Documentation const VelConstraints VelConstraintsList getVelConstraints float time const Method to retrieve VelocityConstraints corresponding to a certain time String VelConstraintsList getFilename _ filename accessor The documentation for this class was generated from the following files src PMDO PMDO VelConstraints h src PMDO PMDO Ve
5. sta se utiliza para crear la interfaz gr fica de interacci n del usuario Actualmente se utiliza la versi n 3 3 que viene incluida en el sistema operativo Ubuntu 8 10 En caso de que no est incluida se puede instalar desde una terminal con el comando 71 sudo apt get install libqt3 mt dev e Se debe tener instalada la librer a Open Inventor sta se utiliza para representar la escena de forma tridimensional Se sabe que el programa funciona bien para la versi n actual la 2 1 5 Para instalar la librer a se debe ejecutar el siguiente comando desde una ventana de terminal sudo apt get install libinventor0O e Tambi n se debe tener instalada la librer a SoQt Esta permite utilizar simult neamente y en un mismo programa interfaces de Open Inventor y Qt La versi n con la que funciona dpoSimulator actualmente es la 1 4 1 Para instalar esta librer a se debe introducir en una terminal el siguiente comando sudo apt get install libsogt3 dev e La ultima librer a fundamental para la compilaci n y funcionamiento del programa es la simage sta es utilizada por el programa para guardar im genes del simulador Actualmente se utiliza la versi n 1 7 0 Para instalar esta librer a introduzca en una terminal la siguiente instrucci n sudo apt get install libsimage dev Requisitos recomendables e Para poder compilar el programa es posible que se necesiten compiladores y otras herramientas auxiliares que no vengan de serie
6. 52 Modificacion de posiciones Como se ha comentado en el apartado anterior los impulsos se aplican sobre las velocidades medias de los nodos durante un paso de simulaci n La posici n de los nodos al final del paso se puede calcular a partir de la ecuaci n 2 73 En los siguientes apartados se detalla el c lculo de los impulsos y como se aplican a v xn 1 yn Agyntt 2 2 73 n 1 2 para modificar las posiciones finales Aplicacion de impulsos sobre objetos rigidos y nodos restringidos BBZ 1 Colisi n entre un objeto 2 Se aplican impulsos iguales al 3 Estado final libre de deformable y un objeto objeto deformable ya objeto colisiones r gido r gido acci n reacci n pero s lo el deformable se modifica Figura 2 32 Colisi n entre un objeto deformable y un objeto r gido cubo azul Antes de describir el c lculo de impulsos y la modificaci n de las velocidades medias durante un paso se recuerda que hay dos tipos de objeto considerados por el simulador dpoSimulator Objetos deformables Son aquellos que se pueden deformar cambiar de forma debido a fuerzas externas como manipulaci n de sus nodos o interacciones con otros objetos Cada nodo de los objetos deformables tiene una masa determinada que normalmente se calcula igual para todos los nodos de ese objeto Los objetos deformables tejidos son los protagonistas del simulador pues son aquellos que se simulan con mayor realismo Objetos r gidos
7. Leer Xx aX Leer x aX Leer t INICIO Son coplanarios los cuatro nodos en alg n instante del Intervalo simulado NO Calcular den x XX 5 Encontrar m ximo componente de dan Es x el m ximo am Ea X Xa danj componente de den b xx 1 den Es y el m ximo a x xXXx 1 deni componente de pe den b x 4 xx5 den a x aX X a l den b x XX 1 deni Est n ayb entre 0 y 1 incluidos Las aristas NO colisionan Las aristas S colisionan Diagrama 2 10 Algoritmo de detecci n precisa de colisiones entre aristas 4 2 2 5 Resoluci n de contactos y colisiones a Estado en t b Estado estimado c C lculo de impulsos d Estado final en t sin en t1 colisiones Figura 2 28 Las colisiones y contactos se resuelven aplican impulsos de repulsi n En los apartados 2 2 3 y 2 2 4 se describe la detecci n de contactos y colisiones de tipo nodo tri ngulo y arista arista El simulador requiere modificar el estado final de los objetos en funci n de los contactos y colisiones detectadas para que evitar que los objetos se atraviesen Para ello se aplican impulsos a los nodos de los objetos presentes en la escena para separar aquellos elementos que iban a colisionar o estaban en contacto en un lapso de tiempo simulado La Figura 2 28 muestra gr ficamente el proceso de detecci n y resoluci n de contactos y col
8. World WorldViewer getWorldPtr World pointer accessor void WorldViewer sendUpdateSignal Method that emits updateRenderingModels to start the render updating process bool WorldViewer getStepFlag _stepFlag accessor Used internally WorldViewer TimeCallback WorldViewer getTimeCallback _timeCallback accessor Used internally void WorldViewer emitUpdateTimeDisplay Updates the time displayed so that it matches with _world gt _time The documentation for this class was generated from the following files src PMDO Viewer W orld Viewer h src PMDO Viewer moc_WorldViewer cpp src PMDO Viewer W orld Viewer cpp 145 5 2 22 WorldViewer TimeCallback Class Reference Nested class that holds the time callback information ti nelude lt WorldVieweryh gt Public Member Functions TimeCallback World Viewer world Viewer float interval Constructor interval is the time interval between calls SoTimerSensor amp getSensor _renderSensor accessor Detailed Description Nested class that holds the time callback information Constructor amp Destructor Documentation WorldViewer TimeCallback TimeCallback WorldViewer worldViewer Constructor interval is the time interval between calls float interval Member Function Documentation SoTimerSensor amp WorldViewer TimeCallback getSensor _renderSensor accessor The documentation for this class was generated from the following files
9. e Se llama recursivamente al algoritmo para buscar superposiciones entre el nodo terminal y cada uno de los hijos que no son terminales c Ning n nodo es terminal e En este caso se llama recursivamente al algoritmo para buscar superposiciones entre todos los hijos Se realizan cuatro b squedas diferentes Desde un punto de vista de implementaci n cabe destacar que a la funci n de b squeda recursiva de superposiciones entre dos nodos tiene como par metro una lista pasada por referencia Esta lista se ira llenando con las parejas de tri ngulos que posiblemente est n en contacto NO Cajal y Caja2 superupestas Comprobar superposici n entre Izquierdal y Izquierda2 Izquierdal y Derecha2 Derechal y Izquierda Derechal y Izquierda2 Algoritmo recursivo Nodol y Nodo2 no son terminales Comprobar superposici n entre lic Izquierdal y Nodo2 Nodo no a Derechal y Nodo2 Algoritmo recursivo Comprobar superposici n entre as Nodol e Izquierda Nodo2 si lo a Nodo1 y Derecha2 Algoritmo recursivo A adir la pareja Nodol y Nodo2 a la lista de nodos superpuestos Diagrama 2 4 Algoritmo recursivo de b squeda de superposiciones de cajas delimitadoras entre dos nodos 21 22 Nodo es terminal g Comprobar superposici n de nodo izquierdo consigo mismo algoritmo recursivo Comprobar superposici n de nodo derecho consigo mismo algoritmo recur
10. src PMDO Viewer W orld Viewer h src PMDO Viewer W orld Viewer cpp
11. supplied parFilename Parameters of the object thickness mass and diffuse color Thickness and mass should be zero velConstraintFileName Filename of the file that constains information about velocity constraints RigidObject RigidObject const RigidObject amp rhs Copy constructor Member Function Documentation const RigidObject amp RigidObject operator const RigidObject amp rhs Assignment operator void RigidObject createSoGroup const SbColor amp color Function that creates a SoGroup of the mesh to display on a coin widget Parameters color Diffuse color of the displayed mesh Define the normals used Define coordinates for vertices Define the FaceSet RCShdPtr lt GeMesh gt RigidObject getMeshPtr virtual Accessor to the mesh of the object Implements Object const RCShdPtr lt GeMesh gt RigidObject getMeshPtr const virtual Accessor to the mesh of the object Implements Object void RigidObject step BaTime Duration Af virtual Method to simulate the rigid object forward in time Doesn t take into account collisions Implements Object 118 boost shared_ptr lt std vector lt RCShdPtr lt Faceld gt gt gt RigidObject calcFacesList Method that returns a list with all the faces of the rigid object void RigidObject move const GeVector translation Move the object Parameters translation Amount to move in x y and z direction bool RigidObject isV
12. 7 At y At 7 2 106 B Distribuci n de impulsos arista arista x TAS In ME se C lculo de Distribuci n impulsos de impulsos Figura 2 40 Distribuci n de impulsos arista arista La distribuci n de impulsos debidos a contactos y colisiones entre dos aristas se puede realizar de forma an loga a la distribuci n de impulsos nodo tri ngulo En este caso hay dos impulsos resultantes I de signos opuestos que se aplican sobre las aristas Cada impulso resultante se distribuye a los dos nodos que componen la arista desglosandose en dos impulsos Los impulsos aplicados sobre los nodos deben cumplir las condiciones mostradas en 2 107 Los impulsos desglosados deben producir el mismo impulso resultante y el mismo momento que el original k 1 2 Mkji 0 ie 2 107 gt Ik k 3 67 Las ecuaciones en 2 108 permiten calcular la velocidad media de los nodos modificada por los impulsos resultantes Los valores de los impulsos desglosados se muestran en 2 109 Se destaca que las ecuaciones en 2 109 reordenadas dan lugar a las ecuaciones en 2 108 lea ya 1 2 gri A A a In ax vw 2 po in 2 2 108 n 1 2 _ n 1 2 4 b iq l V3 V3 m n b vo gt vo in 4 i n 1 2 n 1 2 _ As 1 m v Va 1 a n 1 2 n 1 2 sn I m v Y 2 al ii I m ee g 7 1 b f ly m v4 0t bi Se comprueba a continuaci n que el desglose de impulsos en 2 109 cump
13. La caja delimitadora o Bounding Box de una malla cualquiera es aquella que contiene a toda la malla Se utilizan ampliamente en el mundo de la simulaci n animaci n y programaci n gr fica para realizar comprobaciones sencillas De cara a la detecci n de contactos y de colisiones interesa la esta caja sea lo m s peque a posible para descartar contactos Como se muestra en la Figura 2 5 las cajas delimitadoras pueden tener distintas orientaciones En el simulador se implementan cajas delimitadoras alineadas con el sistema de coordenadas Axis Aligned Bounding Boxes o AABB en las que todas sus aristas son paralelas a los ejes del sistema de coordenadas global Otra opci n ser a alinear la caja delimitadora de una malla de tal manera que ocupase el m nimo tama o posible correspondiente al caso b en la Figura 2 5 Sin embargo ello supondr a un mayor coste computacional que probablemente no se ver a compensado con una mayor rapidez de detecci n aproximada de contactos y de colisiones 15 Figura 2 5 a Caja delimitadora alineada con ejes AABB b Caja delimitadora no alineada con ejes BB La caja delimitadora alineada con los ejes que encierra una malla en el simulador de tejidos ser aquella que contenga todos los nodos de la malla Por ello su c lculo se basar simplemente en encontrar el m nimo y m ximo de los componentes de posici n x y z de todos los nodos Por ejemplo la componente x m nima se corresponder
14. Para m s informaci n sobre cajas delimitadoras y su funci n en el simulador consulte la secci n 2 2 3 78 1 Display Bounding Boxes Figura 2 51 Escena con todos los niveles de los rboles de cajas delimitadoras mostrados en dpoSimulator Las cajas delimitadoras se representan como cubos al mbricos ver la Figura 2 51 negros El panel permite determinar el rango de niveles dentro de los rboles de cajas delimitadoras que se muestran La Figura 2 51 muestra todos los niveles por lo que se muestran todas las cajas delimitadoras Las dos cajas m s grandes una delimita todo el tejido azul y la otra delimita toda la mesa se solapan Por ello una primera detecci n aproximada ver el apartado 2 2 3ya determina que puede haber colisiones y contactos en la escena La Figura 2 52 muestra todos los ocho primeros niveles de la escena Para que s lo se muestre el quinto nivel por ejemplo se pone en el panel que se muestren los niveles desde 5 hasta 5 Nivel 4 Y Nivels Nivel 6 Figura 2 52 De izquierda a derecha y arriba a abajo se muestran los primeros seis niveles de los rboles de cajas delimitadoras de la escena ClothOnTable Las im genes han sido tomadas del simulador dpoSimulator 79 11 Display Proximity Bounding Boxes Siguiendo el mismo procedimiento que en el caso anterior se pueden visualizar las cajas delimitadoras utilizadas para la detecci n de contactos stas no solo delimitan la geome
15. Sin embargo el n mero de comprobaciones de proximidad que se deber a hacer aumentar a muy r pidamente con respecto al n mero de nodos ralentizando mucho la detecci n de proximidades A continuaci n se presenta un caso sencillo que ilustra lo comentado Se plantea la detecci n de contactos entre las entidades presentes en una malla con forma de tira c mo se puede ver en la Figura 2 4 AAA o VA Figura 2 4 Malla con forma de tira Se plantea el estudio del aumento de comprobaciones de contactos a realizar entre las entidades de dicha malla en funci n del n mero de nodos A partir del numero de nodos se puede calcular el resto de par metros de la malla de forma recursiva como se muestra en las ecuaciones 2 11 y 2 12 An An 1 2 2 11 Cn Cn 1 1 2 12 D nde an Numero de aristas para n nodos Cn N mero de caras para n nodos Se parte de los valores iniciales az 3 2 13 13 al 2 14 Tambi n de forma recursiva se puede calcular el n mero de comprobaciones de contactos a realizar para la malla con forma de cinta mediante las ecuaciones 2 15 y 2 16 iad e ES 2 15 det q24 42 a _ 1 2 16 D nde d N mero de comprobaciones de proximidad entre nodos y tri ngulos tipo nodo tri ngulo necesarias d N mero de comprobaciones de proximidad entre aristas tipo arista arista necesarias n N mero de nodos que componen la malla Se parte de los valores iniciales
16. con la componente x m s peque a entre todas las de todos los nodos que debe contener la caja delimitadora Cada caja delimitadora se define con los siguientes par metros e Coordenadas m nimas x y z m nimas e Coordenadas m ximas x y z m ximas Xmax Ymax EM in Ymin Tinta Figura 2 6 Una AABB se define por las coordenadas de sus esquinas Para la detecci n de contactos se deben crear las cajas delimitadoras de forma tal que tengan en cuenta el espesor de los objetos s lidos deformables Figura 2 7 La caja delimitadora roja para detecci n de contactos tiene en cuenta el espesor de un tri ngulo visto de perfil y de color azul Se marca en negro los cuatro v rtices reales que se contienen 16 rbol de cajas delimitadoras Los rboles de cajas delimitadoras son rboles binarios de cajas delimitadoras que cumplen que la caja de cada padre contiene las cajas de sus dos hijos En el Diagrama 2 2 se muestra la estructura en forma de rbol que podr a presentar una malla con 6 tri ngulos ae AABB8 mees mn AABB9 Aasen a AABB10 Hoja AABB11 Diagrama 2 2 rbol AABB de 4 niveles de profundidad y 6 nodos terminales Se llama nodo a cada una de las bifurcaciones de ramas que hay en el rbol En el Diagrama 2 2 se muestran 11 nodos Cada nodo tiene una caja delimitadora asociada que contiene un conjunto de tri ngulos Se pueden distinguir tres tipos de nodo a Nodo ra z Es a
17. n de ecuaciones ver la Figura 2 70 matlab En esta carpeta se halla el archivo TrajectoryGenerator m ste permite crear el documento de restricci n de velocidades del objeto ShirtOnTable para m s informaci n consulte el apartado 2 3 1 src Este directorio contiene todo el c digo de dpoSimulator y sus programas auxiliares Contiene las siguientes carpetas o fabricCreator Aqu est el c digo fuente de la aplicaci n fabricCreator Esta permite crear mallas rectangulares sencillas para m s informaci n consulte el apartado 2 3 1 o freecloth Aqu est la librer a freecloth ligeramente modificada para las necesidades del simulador Esta librer a se encarga de la simulaci n de la din mica interna de la ropa y es una implementaci n del algoritmo de Baraff y Witkin Pritchard Implementing Barraf amp Witkin s Cloth Simulation 2009 Para mas informacion consulte el apartado 2 2 1 o meshMover Aqui se halla el c digo del programa auxiliar meshMover que permite traslaciones simples mallas y genera documentos STL con las mallas en las nuevas posiciones De esta forma se puede ajustar con facilidad la posici n de las mallas en las escenas o PMDO Aqui se encuentra el c digo del simulador dpoSimulator el programa principal desarrollado en este proyecto Parte del programa se encuentra organizado en los siguientes directorios PMDO El c digo de c lculo de la simulaci n propiamente dicho est en esta carpet
18. simulada en dpoSimulator se crear n aqu Se omiten detalles sobre el dise o y creaci n de geometr a en CATIA V5 para m s informaci n se remite el lector a la extensa documentaci n del programa Los objetos s lidos se pueden guardar f cilmente en formato STL por lo que el usuario puede pasar directamente al paso 4 Superficies Interesa utilizar superficies para representar objetos planos deformables Esto se debe a que representar n la fibra neutra del tejido para m s informaci n consulte el apartado 2 2 2 Adem s el workbench de generaci n de superficies en CATIA V5 Generative Shape Design permite generar superficies de elevada complejidad El inconveniente de las superficies es que no se pueden guardar directamente en formato STL teniendo que pasar por los pasos 2 y 3 primero La Figura 2 73 muestra una camiseta representada en una sola superficie Si sta se guardase ahora en formato STL el archivo estar a vac o de informaci n geom trica Figura 2 73 Superficie que representa una camiseta Aunque una superficie no se puede guardar directamente en formato STL s se puede mallar y guardar la malla Se puede mallar la superficie con la herramienta Tessellation disponible en el workbench Machining STL Rapid Prototyping Conviene marcar Step para controlar el valor m ximo de la longitud de las aristas de los tri ngulos ver la imagen a la izquierda en la Figura 2 74 buscando que la malla sea regula
19. 5 El algoritmo de detecci n precisa de contactos se implementa en la clase WorldProximityDetector documentada en el apartado 5 1 17 Esta llama a la clase AABBTree para detectar contactos de forma aproximada con cajas delimitadoras Leer x1 x2 x3 y x4 Calcular a y b O lt a lt 1 SI d b x43 a x21 x31 T O lt b lt 1 Sil a gt l1 gt a42 1 Si az gt a2 0 S O lt a lt 1 gt a7 a Si b gt 1 gt b2 1 Si b lt 0 gt b2 0 Si 0 lt b lt 1 gt b2 b Li x21 a a2 L2 43 b b2 b2 es parte de la NO SI a2 es parte de la soluci n soluci n Se busca el punto de la arista 1 m s Se busca el punto de la arista 2 m s cercano a D i cercano a a2 a2 x21 x31 x43 b2 x21 x21 b2 x43 x13 x21 a2 x43 x43 S a2 gt 1 gt all S b2 gt 1 gt b2 1 Si a2 lt 0 gt a2 0 S b2 lt 0 gt b2 0 d b2 x43 a2 x21 x31 Si d lt h gt Aristas en contacto Diagrama 2 6 Diagrama de flujo de determinaci n de contacto entre una pareja de aristas 30 31 2 2 4 Detecci n de colisiones La detecci n de colisiones consiste en los mismos pasos que la detecci n de contactos s lo que con algunas diferencias I Primero hay una detecci n aproximada de colisiones que permite descartar aquellos elementos que seguro que no colisionan Se genera una lista de candidatos preseleccionados II Se desglosa cada candidato preseleccionado en un conjunto de comprobaci
20. Current Triangle Count 238 i K AN HAIS SHAS NADEL r a j j pa f En pu T AS h AS i J De a TZ C Free Edge Tolerance A J pe q AE TAR OMA BP A Result L L vA jp ER AN C Analysis IA A DD DAT LS y AM AX N 9 ok l Apply l Cancel afi i Figura 2 75 Izquierda Cuadro de di logo de la herramienta Decimate Derecha Malla de la camisa decimada y completamente regular El ltimo paso consiste en guardar el objeto ya sea un s lido o una malla en formato STL Para ello simplemente se realiza la acci n File Save As que abre el cuadro que se muestra en la Figura 2 76 Cabe destacar que en el caso de guardar un s lido el programa generar autom ticamente una malla para guardar en formato STL Esta malla probablemente sea muy irregular como se puede ver en la mesa de la Figura 2 53 Sin embargo esto poco importa pues la mesa al ser un objeto r gido no aparece en los c lculos num ricos por lo menos de forma directa 93 Save s x Guardar ery B Catia Camiseta 4 TPart E Camiseta_001 CATPart ES Camiseta_003 CATPart ES Camiseta_005 CATPart E Camiseta _delgada CATPart Ej Camiseta _delgada_003 C4TPart E Camiseta_media_001 CATPart E Camiseta_media_002 CATPart E Camiseta_media_003 CATPart ES Camiseta_media_005 CATPart E Cono CATPart E mesa CAT E Part f Hombre Tipo CAT Part Cancelar Figura 2 76 CATIA V5 permite guardar una malla e
21. DeformablePlanarObject getSimulator _stepper gt _simulator accessor const RCShdPtr lt SimSimulator gt DeformablePlanarObject getSimulator const _stepper gt _simulator accessor double DeformablePlanarObject getArea const _area accessor int DeformablePlanarObject getNFaces const _nFaces accessor RCShdPtr lt GeMesh gt DeformablePlanarObject getMeshPtr inline virtual _simulator gt _meshPtr accessor Implements Object const RCShdPtr lt GeMesh gt DeformablePlanarObject getMeshPtr const inline virtual _simulator gt _meshPtr constant accessor Implements Object DpoVector DeformablePlanarObject getVelocity const unsigned int vid const Interface to _simulator gt getVelocity vid void DeformablePlanarObject setVelocity unsigned int vid const DpoVector amp newVelocity Interface to _simulator gt setVelocity vid newVelocity 114 bool DeformablePlanarObject isVertexConstrained unsigned int vertexId const virtual Implements Object The documentation for this class was generated from the following files src PMDO PMDO DeformablePlanarObject h src PMDO PMDO DeformablePlanarObject cpp 5 2 4 MeanVelocities Class Reference Class containing information about the mean velocities of ONE object during a time step include lt MeanVelocities h gt Inheritance diagram for Mean Velocities Mean elocities Public Member Functions MeanVelocities RCShdPtr lt
22. GeMesh gt initialMesh RCShdPtr lt GeMesh gt finalMesh float timestep Constructor of the class MeanVelocities const MeanVelocities amp rhs Copy constructor RCShdPtr lt GeMesh gt CreateFinalMesh Method to create a final mesh given the initial state and the mean velocities void setVelocity int id GeVector amp velocity Mutates the mean velocity of a vertex Public Attributes std vector lt RCShdPtr lt GeVector gt gt _meanVelocities Mean velocities of the nodes during the time interval RCShdPtr lt GeMesh gt _initialMesh Initial state of the mesh RCShdPtr lt GeMesh gt _finalMesh Final state of the mesh float _timestep Time interval Detailed Description Class containing information about the mean velocities of ONE object during a time step 115 This class holds information about the mean velocity of the nodes of a mesh given an initial state and a final state in a time interval The impulses for collision and contact response affect the velocities contained in this class Constructor Destructor Documentation MeanVelocities MeanVelocities RCShdPtr lt GeMesh gt nitialMWesh RCShdPtr lt GeMesh gt finalMesh float timestep Constructor of the class Given the input parameters the constructor calculates the mean velocities during a time step and saves them Parameters initialMesh Initial state of the mesh at the beginning of the time interval finalMesh Final s
23. La funci n colStep se llamar el n mero necesario de veces para que se cubra todo el paso de simulaci n Cabe destacar que es diferente el paso de simulaci n cuyo periodo define el usuario en el documento environment world_parameters world_parameters que el paso de colisi n Este ltimo es modificado de forma autom tica por World WorldStepStrategy para asegurar que la resoluci n de colisiones se hace nicamente para intervalos peque os Pues como se indica en el paso 4a las colisiones s lo se resuelven si el paso es lo suficientemente peque o Bridson Fedkiw amp Anderson 2002 De esta forma desde World WorldStepStrategy y en concreto desde su m todo colStep se puede controlar c mo se resuelven los contactos y las colisiones para que la simulaci n se lleve a cabo de forma satisfactoria Recomendaciones El desarrollador puede utilizar las clases de simulaci n situadas en el directorio src PMDO con otra interfaz es decir sin usar Viewer Para ello se recomienda el uso directo de la clase World sta carga la escena de la carpeta environment y permite simularla con el m todo step La simulaci n en el estado actual no permite retroceder un paso la simulaci n Para ello la mejor opci n ser a copiar el mundo y guardarlo Al rebobinar s lo se tendr a que mostrar el mundo en un estado anterior que se requiera No es necesario que el desarrollador entre en capas que est n en una capa inferior que World p
24. Por ello se puede calcular la distancia de interferencia d como se muestra en 2 96 Evidentemente la masa de la primera part cula se corresponder a la masa del nodo La masa de la segunda se puede calcular como promedio de las masas de los nodos que componen los v rtices del tri ngulo El promedio se pondera seg n las coordenadas baric ntricas De esta forma el nodo m s cercano a la 62 segunda part cula incidir m s sobre su masa En el caso de que todos los nodos tengan la misma masa el caso m s com n la segunda part cula tendr la masa de los nodos X2 X1 Figura 2 37 Nomenclatura utilizada para un nodo y un tri ngulo en contacto d h x Xa h x wy xt W2X7 W3X3 Al Mc My 2 96 Me wmi W m gt W3 M3 Se reescribe la ecuaci n del impulso resultante debido a una colisi n inel stica calculada en 2 80 y se sustituye la ecuaci n 2 95 de diferencia de velocidades para el caso de contactos para dar lugar a la ecuaci n final 2 98 Tambi n se han sustituido las masas de las part culas en contacto calculadas en 2 96 La ecuaci n final permite calcular el impulso resultante que se ha de aplicar a un nodo y un tri ngulo en contacto para separarlos y evitar futuras colisiones n 1 2 n 1 2 j _ Un a Uy Ma ma mov m3 1 0 1d a p w m WM W3M3 At N 1 WWW 2 98 Mae M m m3 d h E 16 W 1X4 W2X3 W3X3 j i min Atkd
25. X214 X1 Xa 2 33 X43D X3 Xp 2 34 A continuaci n se demuestra el c lculo de a y b necesarios para la determinaci n de proximidad entre aristas De forma parecida al c lculo de detecci n de proximidad entre un nodo y un tri ngulo se parte de una aproximaci n por m nimos cuadrados Para ello se intenta encontrar a y b suponiendo que los puntos Xa y X son coincidentes Igualando las ecuaciones 2 33 y 2 34 se obtiene la ecuaci n 2 35 Reordenando t rminos y en forma matricial se obtiene la ecuaci n 2 37 sta es similar a la ecuaci n 2 27 y se tratar del mismo modo X214 X1 X43D X3 2 35 X214 X43D X31 2 36 X21 Xa3 x1 2 37 A no ser que las aristas se crucen los puntos x y xno ser n coincidentes Sin embargo si se aplica una aproximaci n por m nimos cuadrados a la ecuaci n 2 37 se puede 27 encontrar aquellos puntos de la arista que est n m s cerca de cumplir la igualdad Por ello aplicando m nimos cuadrados y resolviendo para a y b se determina los puntos de las aristas consideradas como l neas que est n m s cercanos A continuaci n se presenta el desarrollo En 2 40 y 2 41 se presentan las ecuaciones finales para calcular a y b Estas f rmulas permiten calcular a y b a partir de los datos iniciales la posici n de los cuatro v rtices de las aristas X21 a X21 X21 Xa43 sl x 2 38 E Vp X43 31 2 38 X21X21 X21X 43 a X21 31 2 3
26. a partir de las velocidades en el tiempo n y las velocidades medias Sin embargo result que al aplicar este m todo la simulaci n se volv a inestable 70 n 1 _ yn yn 1 2 y ANE NE 2 119 yn 1 y 202 ee v 2yn 1 2 y 2 120 En una simulaci n inestable las velocidades de nodos cercanos son muy dispares de direcciones parecidas pero sentidos opuestos Esta perturbaci n provoca una onda que no se amortigua debido al m todo de actualizaci n de velocidades adoptado llegando a un punto en el que no se encuentra soluci n para el siguiente paso utilizando el algoritmo de simulaci n de la din mica interna el descrito en Baraff amp Witkin Large Steps in Cloth Simulation 1998 y la simulaci n falla El problema de este m todo de actualizaci n de velocidades al final descartado es que se basa en una premisa err nea No se puede suponer una aceleraci n constante en un paso en el que ocurre una colisi n 2 3 Descripci n del simulador desarrollado Este apartado se dedica a describir el programa desarrollado dpoSimulator que implementa el algoritmo descrito en profundidad en el apartado 2 1 El nombre de la aplicaci n es debido a su funcionalidad directa simular objetos planos deformables abreviado dpo en ingl s Como el lector podr apreciar el desarrollo del simulador ha incluido tanto la implementaci n del algoritmo de detecci n y resoluci n de contactos y colisiones como el desarrollo de
27. a que la estabilidad de la simulaci n con una integraci n impl cita se mantiene incluso si se simulan pasos grandes Sin embargo este tipo de simulaci n requiere la resoluci n de un sistema disperso de elevadas dimensiones Por ello y aprovechando el hecho de que la matriz de coeficientes es sim trica se resuelve el sistema mediante el m todo del Gradiente Conjugado Adem s Baraff plantea un modelo energ tico de la ropa Es decir en vez de basarse en las fuerzas debidas a muelles entre los nodos se plantean las fuerzas como derivadas de la energ a potencial de la ropa Se ha utilizado este algoritmo para simular la din mica interna de los tejidos debido a su rapidez y disponibilidad en la librer a de c digo libre Freecloth Pritchard 2009 Volino razona que la diferente naturaleza de las fuerzas internas entre los nodos de la ropa frente a las fuerzas puntuales debidas a contactos requiere dos m todos de simulaci n diferentes Se separa la simulaci n de la din mica interna de los tejidos tracci n cizalla y flexi n de la simulaci n de contactos y colisiones Volino amp Thalmann 2000 Adem s tambi n desarrolla un algoritmo de simulaci n priorizando la velocidad de simulaci n respecto la calidad de la misma Su algoritmo se basa en el de Baraff y Witkin Baraff amp Witkin 1998 con la particularidad de que la integraci n se realiza en el punto medio en vez del punto inicial Esto elimina un amortiguamiento art
28. and velocities of the object RigidObject const RigidObject amp rhs Copy constructor const RigidObject amp operator const RigidObject amp rhs Assignment operator void createSoGroup const SbColor amp color Function that creates a SoGroup of the mesh to display on a coin widget virtual RCShdPtr lt GeMesh gt getMeshPtr Accessor to the mesh of the object virtual const RCShdPtr lt GeMesh gt getMeshPtr const Accessor to the mesh of the object virtual void step BaTime Duration At Method to simulate the rigid object forward in time Doesn t take into account collisions boost shared_ptr lt std vector lt RCShdPtr lt Faceld gt gt gt calcFacesList Method that returns a list with all the faces of the rigid object void move const GeVector amp translation Move the object virtual bool is VertexConstrained unsigned int vertexId const Returns whether a vertex s velocity is constrained for the current step Detailed Description Class for a rigid object and all its atributes and methods 117 Constructor amp Destructor Documentation RigidObject RigidObject const String amp meshFilename const String 8 parFilename const String 8 ve ConstraintsFilename Constructor of the class This loads the mesh parameters and velocities of the object Constructor of the class Parameters meshFilename Initial mesh supplied to the simulator TODO At the moment no initial velocity can be
29. aplican en puntos concretos de los elementos sobre los que act an Existen los puntos de contacto que son aquellos puntos m s cercanos de dos entidades diferentes que est n en contacto y los puntos de colisi n que son aquellos que se intersectan en un momento dado Por cada contacto o colisi n hay dos puntos de contacto o colisi n respectivamente correspondientes a cada elemento que contacta o colisiona Puesto que las mallas est n formadas por nodos los impulsos que afectan a puntos concretos de la geometr a deben distribuirse para afectar a la velocidad media de los nodos durante un intervalo de tiempo Los impulsos modifican la velocidad media durante el intervalo de tiempo simulado Por lo que al final se obtiene aquella velocidad media que permite llegar a un estado final libre de colisiones Este estado final se compone de la posici n de los nodos y de su velocidad Para que la simulaci n sea congruente se tendr que modificar la velocidad final para que se corresponda con la posici n final de los nodos libre de colisiones 51 Devolver error por superaci n de n mero m ximo de lteraciones i A Detectar colisiones seg n v 172 Se producen colisiones mii Devolver v Calcular impulsos de colisi n Aplicar l A i Diagrama 2 11 Algoritmo de aplicaci n iterativa de impulsos de colisi n hasta obtener un estado final libre de interferencias o superar el l mite de iteraciones imax
30. cilmente al ver que el producto de las im genes en 0 y f es positiva En este caso concreto se asegurar a que los cuatro nodos no llegan a ser coplanarios en el intervalo de tiempo simulado en este paso Rango de b squeda Figura 2 21 M nimo y m ximo del polinomio est fuera del intervalo de tiempo te lt 0 lt ter lt t En este segundo caso nicamente el m ximo o m nimo en f 2 se encuentra dentro del intervalo de tiempo simulado Por ello se empezar a buscar una ra z entre O y te2 y en caso de que no se encuentre se buscar otra entre f 2 y ft Estos dos rangos de b squeda se muestran con color verde en la Figura 2 22 En este caso en particular la b squeda en el primer rango ya dar a una soluci n un tiempo en el que los cuatro nodos han estado en el mismo plano por lo que no se necesitar a buscar en el segundo rango p3 t ler Rango 22 Rango Figura 2 22 S lo el m ximo est dentro del intervalo de simulaci n 38 iii 0 lt toa lt te lt te Este tercer caso es parecido al segundo con la diferencia de que s lo el m ximo o m nimo en t se encuentra en intervalo de tiempo simulado Por ello se empieza una b squeda de ra ces entre 0 y t y en caso de que no se halle ra z alguna se busca entre t y ts La Figura 2 23 muestra un ejemplo de este caso en el que la b squeda en el primer rango ya dar a una soluci n Sin embargo cabe destacar que un movimiento rectil neo d
31. comprobaci n de proximidad anterior se procede a calcular las coordenadas baric ntricas del punto x para determinar si la proyecci n del nodo sobre el plano del tri ngulo cae dentro del tri ngulo En caso de que el punto x no caiga dentro del tri ngulo seguro que no hay contacto entre el nodo y el tri ngulo Esta comprobaci n es necesaria para que casos como el de la Figura 2 12 no se registren como contactos 24 X3 Figura 2 12 Caso en el que la segunda condici n de proximidad no se cumple independientemente de que se cumpla la primera Se denominan coordenadas baric ntricas w wz y w3 de un punto Xp respecto a un tri ngulo con v rtices Xj Xz y X3 a aquellas para las que se cumple la ecuaci n 2 22 Es equivalente a buscar las masas que deber an tener los v rtices para que su centro de masas estuviese situado en Xp Xp W1X1 W2X2 W3X3 2 22 Para que un punto est dentro de un tri ngulo se debe cumplir que sus coordenadas baric ntricas est n entre O y 1 y que su suma sea igual a la unidad Es decir se deben cumplir las siguientes condiciones 0 lt w lt 1 parai 1 2 3 2 23 1 Wi W2 W3 2 24 Las ecuaciones 2 30 2 31 y 2 32 son las utilizadas para calcular las coordenadas baric ntricas del punto x A continuaci n se demuestran matem ticamente dichas ecuaciones El c lculo se basa en que las coordenadas baric ntricas de la proyecci n del nodo sobre el tri ngulo se puede calc
32. condiciones para que haya colisi n Sin embargo en el caso 2 s lo se cumple la de que los nodos sean coplanarios en un instante de tiempo dentro del intervalo simulado Una forma sencilla de determinar si x se encuentra dentro del tri ngulo formado por los nodos X 1 X2 y X 3 consiste en calcular las coordenadas baric ntricas de dicho nodo con respecto al tri ngulo Como se explica en el apartado 2 2 2 si el nodo se encuentra dentro del tri ngulo sus coordenadas baric ntricas deben estar entre O y 1 Se pueden calcular las coordenadas baric ntricas a partir de las ecuaciones 2 54 2 55 y 2 56 adaptaciones directas de las ecuaciones 2 30 2 31 y 2 32 Cc C C c X13 X43 X13 X23 C C C C _ 1X23 X43 X23 X23 2 54 1 xc xE xc x 13 X13 13 X23 C C C C X23 X13 4X23 X23 C C C C X13 X13 X13 X43 C C C C _ 1X23 X 3 X23 X43 755 W2 xe gE xE xE 13 X13 13 X23 c c C owt X23 X13 X23 X23 W3 1 Wi W2 2 56 D nde xf Xf xf 2 57 En el Diagrama 2 9 se muestra el algoritmo completo de detecci n de colisiones nodo tri ngulo que se ha explicado en el presente apartado Si la pareja nodo tri ngulo cumple las condiciones de colisi n se a ade a la lista de nodos y tri ngulos sobre los que se ha de aplicar un impulso inel stico a fin de evitar la misma 42 Se recuerda al lector que este algoritmo se basa en la suposici n de que
33. de las part culas en la direcci n normal sea nula Cada impulso resultante actuar sobre una part cula diferente y tendr n el mismo m dulo y direcci n pero sentidos opuestos por la ley de acci n reacci n Posteriormente los impulsos resultantes se desglosar n y repartir n entre los nodos A partir de las anteriores premisas muchas de las cuales tambi n son aplicables a la resoluci n de contactos se procede a describir la forma de calcular los impulsos resultantes para parejas nodo tri ngulo y arista arista a C lculo de los impulsos debidos a la colisi n de una pareja nodo tri ngulo Se muestra en 2 77 las ecuaciones de la velocidad relativa de las part culas en la direcci n normal Esta velocidad relativa interesa que sea nula para que la colisi n sea inel stica n 1 2 _ n 1 2 n 1 2A amp der Vy vj Ve n 0 n 1 2 _ n 1 2 n 1 2 n 1 2 n 1 2 A def Uy vj WV W2V W3Vz n 0 2 77 D nde n 1 2 Va tri ngulo Velocidad de la primera part cula que no es m s que el nodo que colisiona con el ve 1 2 Velocidad de la segunda part cula Es decir velocidad del punto del tri ngulo que va a chocar con el nodo Se calcula a partir de la segunda ecuaci n en 2 74 n Direcci n normal del tri ngulo 55 Tambi n se hace uso de las ecuaciones de distribuci n de impulsos demostradas en los siguientes apartados stas permiten modificar las velocidades estimadas que daban lug
34. de los casos la aplicaci n de los impulsos de contacto habr subsanado la mayor a de colisiones que habr an ocurrido si no se hubiesen aplicado Aplicaci n impulsos de contacto n 1 2 2 71 gn 1 2 7 2 71 II Impulsos de colisi n Los impulsos de colisi n se aplican sobre los nodos que forman los elementos que van a colisionar para evitar la colisi n Como se explica en el apartado 2 2 1 los impulsos de colisi n se aplican de forma iterativa mejorando cada vez la estimaci n de la velocidad media durante el paso hasta obtener un estado final libre de colisiones La estimaci n inicial sobre la que se trabaja es aquella en la que ya se hab a tenido en cuenta los contactos ver 2 72 Aplicaci n iterativa de 3 impulsos de colisi n 2 12 gatt 2 yn 1 2 c El Diagrama 2 11 muestra c mo se aplican impulsos de colisi n iterativamente En l se ha incluido un contador de iteraciones i y un n mero m ximo de iteraciones a realizar imax En dpoSimulator el simulador desarrollado cuando se supera el n mero m ximo de iteraciones se le da la opci n al usuario de volver a ejecutar otra tanda de iteraciones o continuar con colisiones Esta ltima opci n no es recomendable pues en los pasos subsiguientes los objetos que se han intersectado no se podr an despegar debido a las fuerzas de repulsi n Sin embargo puede ser til para ver que colisiones no se han podido resolver con la tanda de iteraciones Los impulsos se
35. de tercer grado y se buscan sus ra ces aplicando el m todo de la secante a intervalos de tiempo concretos Se pueden aplicar las mismas ecuaciones y m todos puesto que se trata del mismo n mero de nodos tanto una pareja nodo triangulo como una arista arista tienen 4 nodos 44 x2 x4 x 1 X3 Caso 1 Hay colisi n Caso 2 No hay colisi n Figura 2 27 Es necesario comprobar que se cruzan las aristas en el momento de la coplanaridad En caso de que se cumpla la condici n de coplanaridad se pasa a determinar si las aristas se cruzan en el instante en el que sta ocurre Se definen a y b como las distancias en tanto por uno respecto a la longitud de cada arista respecto al origen x 0 x3 en funci n de la arista a la que se produce la intersecci n entre las aristas Es decir se deben calcular los par metros a y b para que se cumplan las ecuaciones 2 58 y 2 59 xf xj 0X31 1 a xi 0x5 2 58 Xi X5 bx343 1 b x3 Dx 2 59 Igualando las dos ecuaciones y ordenando en forma matricial se llega a la ecuaci n 2 61 aX31 DX43 X31 2 60 Gi 30 2 61 La ecuaci n anterior se debe resolver para a y b para ello resulta til desarrollar los vectores de posici n de forma tal que se trabaje con sus componentes ver ecuaci n 2 62 Se observa que se trata de un sistema de 3 ecuaciones y 2 inc gnitas lo que podr a dar a entender que es un sistema incompatible Sin embargo hay una ecuac
36. dnt 0 2 17 dit 0 2 18 A partir de las ecuaciones recursivas 2 15 y 2 16 se puede calcular el numero de comprobaciones a realizar en funci n del n mero de nodos Las ecuaciones 2 19 y 2 20 calculan el n mero de comprobaciones nodo tri ngulo y arista arista a realizar en funci n del n mero de nodos de la malla con forma de tira di n 5n 6 2 19 d24 2n 10n 12 2 20 El Gr fico 2 1 muestra el r pido crecimiento del n mero de comprobaciones de contactos a realizar entre las entidades de una malla tipo tira en funci n del n mero de nodos A partir de las ecuaciones 2 19 y 2 20 se deduce que el orden de c lculo de comprobaciones es cuadr tico con respecto al n mero de nodos sta es una norma general que se cumple para la mayor a de las mallas Esto significa que en caso de utilizar esta metodolog a al duplicar el n mero de nodos de una malla el tiempo de c lculo se cuadruplicar a Se puede extrapolar f cilmente lo dicho a la detecci n de contactos entre dos mallas distintas Suponiendo que una malla tenga m nodos y la otra n el n mero de comprobaciones de contactos entre las entidades de una con respecto a la otra ser de orden m n En Bridson Fedkiw amp Anderson 2002 se plantea una alternativa que se basa en realizar un filtrado preliminar que simplifique el n mero de casos a comprobar con precisi n posteriormente Es decir se plantean dos pasos 1 Detecci n apr
37. dos par metros a2 y b2 de la siguiente forma Si a lt 0 a2 es 0 Sia gt l a2es 1 S10 lt a lt l a2esa Si b lt 0 b2 es O Sib gt 1 b2es 1 Si0 lt b lt 1 b2esb Si Xa O Xp caen fuera de la arista que le corresponde se busca un punto X 2 0 Xp2 que es el punto m s cercano a X O Xp seg n corresponda que forme parte de la arista Evidentemente esto implica que Xa2 O Xp2 SON Xa O Xp O uno de los extremos de las aristas ver la Figura 2 16 Estos puntos no tienen porque ser los m s cercanos pero s se sabe que el punto que m s se ha desplazado seguro que es parte de la soluci n Bridson Fedkiw amp Anderson 2002 Xa2 X2 Xa A X4 X3 Figura 2 16 Si x o x no forman parte de sus correspondientes aristas se busca el extremo de la arista Estos nuevos puntos son X 2 Y Xp2 El vector L representa el desplazamiento de Xaz a Xa y el vector L representa el desplazamiento de Xp a Xp Li y L se calculan con las ecuaciones 2 43 y 2 44 respectivamente Ly Xa Xaz X21 a a2 2 43 29 L2 Xp Xp2 X43 b bp 2 44 Se compara el m dulo de estos dos vectores para determinar cual es el punto Xa O Xp que m s se ha movido Por lo tanto hay dos posibilidades L I Si X es el punto que m s se ha movido se fija ste pues se sabe que es parte de la soluci n y se busca que punto de la otra arista es el m s cercano a X 2 Esto se puede hacer f cilmente partiendo de la ecuaci
38. ecuaciones matem ticas que se utilizan en el c lculo apartados 2 2 3 a 2 2 5 2 2 1 Descripci n general del algoritmo de simulaci n con contactos y colisiones El algoritmo que se ha implementado en este proyecto para desarrollar el simulador dpoSimulator tiene la funci n de detectar y resolver los contactos y colisiones que ocurren entre objetos planos deformables tejidos consigo mismos u otros objetos ya sean r gidos o deformables Estos contactos y colisiones aparecen al simular bas ndose nicamente en la dinamica interna de los objetos sta tiene en cuenta e Los esfuerzos de tracci n flexi n y cizalla que se deben a la posici n relativa de los nodos de la malla del tejido e Fuerzas externas que act an durante un periodo largo de tiempo stas son com nmente la gravedad y la fuerza del viento e Restricciones de posici n y velocidad de los nodos Estas permiten manipular los tejidos Por ejemplo para levantar una pieza por un nodo simplemente se le tiene que restringir la velocidad de ese nodo para que su tercera componente sea positiva e Fricciones internas del tejido debido a la velocidad relativa de los nodos que componen su malla Se utiliza la librer a de c digo libre freecloth Pritchard freecloth project 2003 para simular la din mica interna del tejido sta permite avanzar la simulaci n de un objeto plano deformable con un incremento de tiempo determinado por el usuario implementando el algor
39. el desplazamiento de los nodos durante el intervalo de tiempo es lineal a falta de m s informaci n Por ello la precisi n de la detecci n de colisiones aumenta al disminuir el paso de simulaci n Sin embargo este tipo de suposici n se realiza en la mayor a de simulaciones num ricas y en este caso tiene un impacto despreciable sobre la simulaci n siempre y cuando el paso sea peque o INICIO Calcular m ximo y minimo del polinomio Son tay E Calcular coeficientes polinomio p t SI NO Se definen los Se definen los Se definen los intervalos de intervalos de Se define el Intervalo intervalos de b squeda 0 t b squeda O t y de b squeda 0 t b squeda 0 t y tantea Y taart tant tt Buscar en l primer En el momento de intervalo la colisi n el punto est dentro del tri ngulo Se ha encontrado una ra z Buscar en el siguiente intervalo de Hay m s intervalos donde buscar La pareja collsiona La pareja NO colisiona SI Diagrama 2 9 Algoritmo de determinaci n de colisi n entre un nodo y un tri ngulo en un intervalo de tiempo Se parte de las posiciones iniciales las finales y del intervalo en el que se desplazan los nodos de las unas a las otras 43 Detecci n de colisiones entre aristas Figura 2 26 Colisi n entre dos aristas y nomenclatura empleada La terminolog a utilizada para la detecci n precisa de col
40. la siguiente instrucci n en una ventana de terminal en el directorio ra z del programa 102 valgrind tool callgrind instr atstart no simulator Esta instrucci n ejecutar el programa y empezar a monitorizar el consumo de cada funci n Seguidamente se debe ejecutar la simulaci n hasta que se considere que sta es una muestra representativa del conjunto de simulaciones que se puede realizar es decir que hay contactos y colisiones pero no en exceso Para visualizar los resultados como en el Diagrama 2 15 se escribe la siguiente instrucci n en otra terminal en el directorio ra z del programa Caligrind control 1 on lt 2LD gt Donde PID es el n mero de identificaci n del proceso dpoSimulator en Linux Este se puede saber con la herramienta top o htop Se observa en el Diagrama 2 15 que la simulaci n de la din mica interna stepAllowingCollisions consume un buen porcentaje de la simulaci n Puesto que la din mica interna viene implementada por freecloth no se ha modificado apenas pero se podr a hacer si se considerase necesario para optimizar el programa MN 98 52 98 71 World WorldStepStrategy step 198 66 MN 98 66 L 20 84 2133 72 21 91 ene 1720 04 13 57 18 09 A O A Diagrama 2 15 El c lculo de la din mica interna de los tejidos stepAllowingCollisions requiere un gran porcentaje del tiempo de simulaci n en este caso un 21 1720 29
41. m todo step de world llama a su vez al step de WorldStepStrategy en WorldStepStrategy cpp Este se encargara de dar los pasitos necesarios para ejecutar un paso de la simulaci n Para ello primero prepara los par metros preColsteps luego va ejecutando pasos de colisiones hasta que se cubre todo el paso colStep y luego realiza un postprocesado postColSteps void World WorldStepStrategy step The data members are prepared preColsteps gt We take collision steps till the whole lapse of time between frames is covered while colStepsDone colStep postColSteps A continuaci n se muestra una versi n simplificada del m todo colStep sta tiene como objetivo ilustrar la estrategia de resoluci n de contactos y colisiones y relacionar los algoritmos descritos en el apartado 2 1 con las clases y funciones que los implementan void World WorldStepStrategy colsStep Create a copy of the objects at time n and advance them allowing collisions to time n l RCShdPtr lt WorldObjects gt proposedObjects new WorldObjects worldObjects PropoSssd0b Scrs stepAllowingcCollisions coll yy The proposed mean velocities of all the objects in world are calculated RCShdPtr lt WorldMeanVelocities gt worldMeanVelocities new WorldMeanVelocities worldObjects proposedObjects BaTime durationAsSeconds colH Detect the contacts between the objects in the worl
42. n 2 35 Se pueden reordenar los t rminos para llegar a la ecuaci n 2 45 Cabe destacar que x43 es un vector de 3 componentes por lo que se trata de un sistema de ecuaciones con tres ecuaciones y una inc gnita Por ello se debe multiplicar por la transpuesta de x43 por la izquierda a cada lado de la igualdad De esta forma se aplica el m todo de m nimos cuadrados y se obtiene bz ecuaci n 2 46 X43 X13 X724Qa2 2 45 X43 X13 X2142 X43 X43 b 2 46 Es posible que bz se encuentre fuera de la arista 2 En tal caso se mueve al extremo de la arista m s cercano De forma an loga a la anterior S1b2 lt 0 b2es0 Si b2 gt 1 b2es 1 En caso de que Xp sea el punto que m s se ha movido se realiza un proceso similar al anterior Se aplica la ecuaci n 2 47 para calcular a y se ajusta a uno de los extremos de las aristas en caso de que sea necesario _ X24 X31 X43b2 a2 X21 X21 2 47 Ahora que ya se tiene seguridad sobre que puntos de las aristas son los m s cercanos se calcula la distancia entre los mismos y se compara con el grosor de la tela Si est n a una distancia menor a dicho grosor se sabe que las aristas est n en contacto Este algoritmo se aplica a todas las aristas que han sido preseleccionadas por el detector basado en AABB y genera una lista de aristas que seguro que est n en contacto Sobre stas posteriormente se aplicar n impulsos de repulsi n ver el apartado 2 2
43. n entre ellos Tambi n se observa que el estado siguiente se muestra con un color m s saturado que el actual Se hace notar que en el caso la mesa al estar quieta el estado siguiente es 1gual al actual por eso aparece con un marr n m s claro La representaci n de la estimaci n del siguiente estado es til para comprobar si la detecci n de colisiones se realiza de forma correcta 84 Figura 2 63 Escenas ClothOnTable izquierda y HangingCloth2 derecha en las que se ha superpuesto el siguiente estado estimado 11 Display Broad Collision Detection Figura 2 64 Detecci n aproximada de colisiones de la escena ClothOnTable izquierda y HangingCloth2 derecha La representaci n de la detecci n aproximada de colisiones se realiza de la misma forma que su hom loga para contactos Unas l neas cilindros finos verdes unen los centros de los tri ngulos que es posible que colisionen durante el paso que se va a simular En la imagen derecha de la Figura 2 64 se ve claramente que las colisiones que van a ocurrir entre los tri ngulos de las esquinas que inferiores del tejido est n incluidas en la lista de posibles colisiones 111 Diplay Narrow Collision Detection Figura 2 65 Detecci n precisa de colisiones en ClothOnTable con la estimaci n del siguiente estado superpuesta 85 Tambi n se pueden representar graficamente las colisiones que se han detectado de forma precisa La Figura 2 65 muestra las colisiones det
44. n sobre el estado actual de la ropa El planificador decide en funci n de estas posiciones y un simulador de tejidos que acci n debe realizar un robot El robot realiza la acci n en un entorno f sico planta que est sujeto a unas perturbaciones como errores de posicionamiento del manipulador del robot Fruto de la acci n llevada a cabo por el robot cambia la posici n del tejido sta es capturada por un medidor probablemente una c mara est reo que permita determinar la posici n de ciertos puntos conocidos de la ropa en un espacio tridimensional Por supuesto este medidor no ser ni mucho menos completamente fiable Por ello se simular paralelamente mediante un modelo el estado de la ropa al actuar sobre ella el robot De esta forma se obtienen dos estados del tejido uno medido y otro simulado Cada uno tendr asignada una covarianza que indicar su fiabilidad por lo que se puede proveer esta informaci n posiciones y covarianzas a un filtro de Kalman Andrade Cetto 2005 para obtener la mejor estimaci n posible de la posici n de los nodos de la malla del tejido Esta estimaci n se proveer junto a su covarianza al planificador cerrando el lazo El planificador se base en un proceso de decisi n parcialmente observable de Markov POMDP en ingl s el cual decidir las acciones a realizar en funci n de su probabilidad de xito y tendr que realizar una exploraci n r pida de los posibles estados alcanzables para e
45. nodos en las ecuaciones de c lculo de impulsos se obtienen las presentadas en el documento de Bridson 60 Asimismo se recuerda al lector que a diferencia de las colisiones los contactos se producen al principio de un paso de la simulaci n Por ello se observar que los super ndices de los vectores de posici n en las ecuaciones que siguen son n correspondientes al inicio del paso A continuaci n se demuestra por separado el c lculo de la repulsi n modelada como un muelle y su limitaci n de fuerza para despu s unir las dos ecuaciones en una sola a Modelado de contactos con un muelle Figura 2 36 Se modela el contacto como un muelle que separa las dos part culas m s pr ximas de las dos entidades Partiendo de la ecuaci n de la fuerza ejercida por un muelle en compresi n sobre las dos part culas ecuaci n 2 87 se puede calcular el valor de la aceleraci n de las part culas en la direcci n normal ecuaciones en 2 88 F kd 2 87 n 1 2 n 1 2 a F kd lan Ag n Me Me 2 88 nt 1 2 _nt 1 2 gt _ F _ kd l con Ag n mo mo Restando ambas ecuaciones se obtiene la aceleraci n relativa de las dos part culas en la direcci n normal ecuaci n 2 89 1 1 n 1 2 _ _n 1 2 n 1 2 _ Ay loy lan F a 2 89 C C Se sabe que esta aceleraci n que se ha introducido en la simulaci n producir un cambio en la velocidad media de las part culas durante el paso simulado Por ello
46. objects that they refer to Start the list from here apo ElothOnTable par ClothOnTable vel ClothOnTable rig table par table vel table En este fichero body_list hay dos objetos el objeto ClothOnTable y el table cada uno de los cuales se describe con tres documentos que contienen en este orden e Descripci n de la malla del objeto Este documento contiene la malla del objeto en formato STL M s adelante se indica c mo se puede importar mallas desde CATIA Si el objeto es deformable plano un tejido el nombre del fichero que contiene la descripci n de su malla debe empezar por dpo del ingl s deformable planar object y si es un objeto r gido debe empezar por rig Se debe indicar de esta forma si el objeto es deformable o r gido pues la descripci n de su malla es igual en formato STL En el caso mostrado m s arriba el objeto ClothOnTable es de tipo dpo dpo_ClothOnTable y el objeto table es de tipo r gido rig_table e Par metros del objeto Los par metros del objeto se configuran en un documento que tiene el nombre del objeto prefijado por par ste es igual para objetos deformables y r gidos M s adelante se explica c mo cambiar los par metros de los objetos En el caso anterior hay un archivo de par metros para cada objeto par_ClothOnTable y par_table 89 e Velocidades restringidas del objeto Las restricciones de velocidades de algunos nodos de un objeto se encuentran en un documento con el nombre del ob
47. pate Caso 1 Hay colisi n P3 t Caso 2 No hay colisi n P3 Caso 3 No hay colisi n Figura 2 20 La ra z se puede encontrar en tres zonas Unicamente en el caso 1 puede haber colisi n pues la ra z se encuentra dentro del intervalo simulado Para facilitar la b squeda de la ra z m s peque a que queda dentro del intervalo de tiempo simulado se calcula primero el m ximo y el m nimo del polinomio Esto se puede hacer f cilmente encontrando las ra ces de la derivada ecuaci n 2 52 Se utilizan los mismos par metros que en la ecuaci n 2 51 Los tiempos en los que ocurre el m nimo y el m ximo se pueden calcular a partir de la ecuaci n 2 53 que es la ecuaci n 2 52 resuelta Se denomina te al tiempo m nimo y f 2 al m ximo 3At 2Bt C 0 2 52 2B v4B 12AC i H 2 53 Es til conocer el m ximo y el m nimo de la funci n para saber d nde buscar las ra ces Se distinguen cuatro casos 1 ji 37 te lt 0 lt t lt te En este primer caso tanto el m ximo como el m nimo del polinomio se encuentran fuera del intervalo de tiempo simulado Por ello la ra z se buscar en todo el intervalo de tiempo simulado en el paso actual O y t ser n los par metros pasados a la funci n de b squeda de ra ces que delimitar n el rango de b squeda Cabe destacar que en la Figura 2 21 la funci n no tiene ra ces dentro del intervalo Esto se detectar posteriormente y f
48. su grosor que est en contacto con un objeto r gido Se observa que el espesor del tejido en la zona de contacto es menor que el espesor nominal por lo que el tejido en la zona de contacto est comprimido Debido a esta compresi n se generan fuerzas de repulsi n que separan el tejido y el objeto r gido llegando al estado m s relajado que se muestra en la Figura 2 30 Figura 2 30 El contacto se resuelve y el tejido aparta del objeto r gido recuperando su grosor nominal 49 Los impulsos de contacto se aplican al principio del paso pues s lo dependen de la posici n inicial de las mallas Te ricamente teniendo en cuenta nicamente las colisiones sin tener en cuenta los contactos se podr a realizar simulaciones sin que los objetos se atravesaran Sin embargo esto no es recomendable por tres razones 1 La resoluci n de impulsos de colisi n es un m todo iterativo que puede llegar a ser computacionalmente costoso Si se le a ade a este hecho el que en muchas simulaciones en las que se tiene un tejido extendido sobre un objeto r gido hay gran multitud de colisiones a resolver en cada paso se llega a la conclusi n de que cuanto menor sea el n mero de colisiones a resolver m s r pido ser el programa Los contactos son ideales pues s lo se deben resolver una vez por cada paso simulado y son poco costosos de aplicar Por ello interesa tener impulsos de contacto que mantengan los objetos separados para evitar futur
49. tri ngulo La segunda condici n es que el sumatorio de los momentos debidos a los impulsos aplicados en los nodos del tri ngulo respecto al punto d nde se aplica el impulso resultante debe ser nulo Con estas dos condiciones se asegura que al sustituir el impulso resultante por impulsos aplicados en los nodos del tri ngulo no se introducen ni fuerzas ni momentos adicionales La tercera condici n es evidente si se tiene en cuenta que el impulso que act a sobre un nodo no se distribuye Figura 2 39 Distribuci n de impulsos nodo tri ngulo 1 1 2 2 102 1 1 I in D nde I aL Impulsos aplicados sobre los nodos del tri ngulo I4 Impulso aplicado sobre el nodo I M dulo del impulso resultante que se aplica sobre el tri ngulo y el nodo en la misma direcci n normal al tri ngulo y sentidos opuestos M1 c a Mz Momentos debidos a las fuerzas derivadas de los impulsos aplicadas sobre los nodos del tri ngulo respecto al punto de aplicaci n del impulso resultante 65 Las ecuaciones finales de las velocidades medias modificadas por el impulso resultante sobre cada entidad se muestran en 2 103 Se observa que se trata de una ponderaci n del impulso resultante en funci n de las coordenadas baric ntricas y que el efecto del impulso modifica la n 1 2 ltima estimaci n de la velocidad media durante el paso actual V para dar una nueva n i 1 2 Con estas ecuaciones se puede saber directamente c
50. 02 48 nt 1 _ At x2 yn 1 2 2 70 D nde n 1 2 Velocidad media estimada nicamente teniendo en cuenta la din mica interna de la ropa en el intervalo de tiempo simulado Este vector es un vector columna con 3n valores uno por cada componente de cada nodo presente en la malla 1 Posici n estimada al final del paso simulado sin tener en cuenta contactos ni colisiones x Posici n de la malla al principio del paso simulado para que el algoritmo funcione correctamente el estado inicial debe estar libre de colisiones At Intervalo de tiempo simulado en el paso No se tienen datos de que ocurre dentro de este intervalo de tiempo s lo de lo que hab a antes y de lo que se estima que habr despu s A este par metro en los apartados 2 2 3 y 2 2 4 se le denomina t Hay dos tipos de impulso L Impulsos de contacto Son aquellos impulsos que se deben a la proximidad de dos elementos al inicio del paso de simulaci n Este tipo de impulsos se aplican entre tejido y objeto r gido o entre tejido y tejido Se modela el contacto como una fuerza de repulsi n entre los elementos debida a la compresi n de la fibra Este tipo de impulso se aplica cuando los elementos est n a una distancia menor al grosor del tejido en el apartado 2 2 3 se explica la detecci n de contactos La Figura 2 29 muestra un tejido en el que la l nea continua es la fibra neutra y la discontinua las capas del tejido teniendo en cuenta
51. 1 1 200000e 00 vertex 5 000000e 01 5 000000e 01 1 200000e 00 endloop endfacet endsolid simpleCloth Esta malla es sencilla y se podr a haber hecho a mano pero la generaci n de documentos STL de mallas m s complejas como las mostradas en la Figura 2 72 requerir n m todos m s automatizados M s adelante en este mismo apartado se explica c mo importar mallas desde CATIA en formato STL Sin embargo se pueden generar mallas planas y rectangulares para objetos deformables planos con un programa auxiliar desarrollado llamado fabricCreator S1 este ejecuta sin ning n par metro desde una ventana de terminal en el directorio ra z del programa se muestra el siguiente mensaje en el que se indica qu hace el programa y qu par metros se le debe pasar This program creates a rectangular planar mesh and saves it in a file in stl format Command fabricCreator lt filename gt lt meshName gt lt width gt lt length gt lt wD1V1s10ns gt lt lLDivisions gt lt xcm gt lt yem gt lt zcm gt Length units in m Los par metros que se le debe pasar son e lt filename gt Este es el nombre del documento donde se guardar la malla en formato STL 90 e lt meshName gt Nombre de la malla no utilizado en el simulador e lt width gt lt length gt Anchura y longitud en metros de la malla rectangular e lt wDivisions gt lt lDivisions gt N mero de divisiones de la malla en la direcci n de la anchura y de la
52. 2 30 Ws X13 X13 X23 X13 X23 X23 ne X13 X13 X23 X13 X23 X43 2 31 ie X13 X13 pa X23 X13 X23 X23 W2 W3 1 Wi NN W2 2 32 Una vez calculadas las coordenadas baric ntricas se determina que el nodo est en contacto con el tri ngulo si todas sus coordenadas baric ntricas estan entre 0 y 1 Contactos entre aristas X1 X3 Figura 2 13 Nomenclatura de dos aristas que pueden presentar proximidad 26 La detecci n precisa de contactos arista arista es m s compleja que la de nodo tri ngulo Consta de los siguientes pasos 1 Primero se determina cual es el punto de cada arista que est m s cercano a la otra arista Dicho de otra manera se busca el vector con menor m dulo que une a las dos aristas Este vector tiene como origen X y como destino Xp como se muestra en la Figura 2 14 Figura 2 14 El vector xb xa es aquel con menor m dulo que une las dos aristas Su m dulo es la distancia m nima entre las dos aristas Se hace notar al lector que las aristas son tridimensionales Se definen unos par metros a y b de tal forma que cumplan las ecuaciones 2 33 y 2 34 Cabe destacar que son como unos porcentajes que indican a qu distancia del origen del vector se encuentran los puntos m s cercanos Para que los puntos Xa y Xp se encuentren dentro de sus respectivas aristas su valor debe estar comprendido entre 0 y 1 Sin embargo es posible que sus valores est n fuera de este rango
53. 9 X21X 43 X43X43 b X43X31 X21 X31 X21 X43 X31 X43 X43 X21 X X gt 1 X 2 40 21 X21 21 i X21 X43 X43 X43 X21 X21 X21 X31 X21 X43 X43 X31 X X X X 2 41 21 X21 21 sd X21 X43 X43 X43 En el paso anterior se ha calcularon los puntos m s cercanos de las l neas infinitas que contienen a las aristas Para saber si dos aristas est n lo suficientemente cercanas para ser consideradas pr ximas se deben buscar los puntos m s cercanos que est n dentro de las aristas X2 X2 Xa l N f I Y A3 Xp Y X3 Caso 1 Caso 2 Figura 2 15 Caso 1 Los dos puntos m s cercanos forman parte de las aristas Caso 2 Alguno de los dos puntos m s cercanos no forman parte de las aristas El Diagrama 2 6 muestra todo el algoritmo que se sigue para determinar si hay contatcto entre una pareja de aristas El c lculo de a y b ya se ha presentado en las ecuaciones 2 40 y 2 41 Si a y b est n entre O y 1 los puntos m s cercanos se encuentran dentro de las 28 aristas Por ello se calcula el vector d que une los puntos m s cercanos seg n la ecuaci n 2 42 Si el m dulo de d es inferior al grosor de la tela se determina que las aristas estan en contacto d Xp Xa DXa3 X3 AX21 X1 bX43 AX21 X31 2 42 En caso de que a y b no est n entre O y 1 se deben encontrar los puntos m s cercanos que s formen parte de las aristas Para ello se definen otros
54. La detecci n aproximada de contactos y colisiones mediante rboles de AABB se basa en que si dos cajas delimitadoras no se solapan seguro que la geometr a que contienen tampoco se intersectan Figura 2 9 Tres posibles casos al considerar el solapamiento de cajas delimitadoras extrapolable a tres dimensiones En la Figura 2 9 se muestran los tres casos posibles que pueden ocurrir al detectar contacto mediante AABBs a El no solapamiento de dos cajas delimitadoras implica que no hay contacto entre las mallas que contienen b Hay un solapamiento de cajas delimitadoras pero no de la geometr a que contienen c Tanto las cajas delimitadoras como la geometr a no se solapan El objetivo de la detecci n mediante AABB consiste en hacer un filtrado eliminando todos los casos claros de no contacto como en el caso a de la Figura 2 9 Se obtendr una preselecci n de parejas de tri ngulos que es posible que est n en contacto Esta preselecci n contendr parejas del tipo b y c de la Figura 2 9 La detecci n precisa posterior se encargar de filtrar los casos b y quedarse con los tri ngulos que realmente est n en contacto los del caso c El trabajar con un rbol de cajas delimitadoras permite acelerar el c lculo incluso m s pues permite comparar las ra ces de dos rboles distintos correspondientes a dos geometr as distintas e ir bajando por sus ramas hasta encontrar cu les son los nodos terminales que contienen tri ngulo q
55. Los objetos r gidos no cambian de forma s lo pueden trasladarse y rotarse Evidentemente f sicamente ning n objeto es perfectamente r gido Sin embargo la rigidez de los objetos que se consideran r gidos es mucho mayor a la de los deformables por ello se supone rigidez infinita Adem s tambi n se les supone una masa infinita As por muy grande que sea el impulso que reciben los objetos r gidos no se mover n Se recurre a esta aproximaci n pues el simulador no tiene la funci n de simular colisiones entre objetos r gidos pues el mecanismo no ser a el mismo que se explica en este documento Tambi n es comprensible que la mayor a de las simulaciones no se ven alteradas por esta aproximaci n Por ejemplo se puede simular de forma satisfactoria c mo colocar una camisa sobre un maniqu suponiendo que el maniqu objeto r gido no se mueve Puesto que no se simulan colisiones entre objetos r gidos dos objetos r gidos que vayan a colisionar se atravesar n 53 Los objetos deformables se pueden manipular aplicando restricciones de velocidad a los nodos deseados Al hacerlo se est diciendo que la posici n nodos manipulados durante un paso no se puede ver afectada por colisiones ni contactos Por ello tambi n se considera que los nodos manipulados de objetos deformables tienen una masa infinita C lculo de impulsos debidos a una colisi n Las colisiones c mo se ha explicado en el apartado 2 2 4 se detectan como inters
56. Pair that should be solved in collision it is the first to collide 127 Detailed Description Class that detects the collisions that take place in the scene during a simulated step When constructed this class atomatically detects collision pairs which can be retreived later with the method Detector getProposedPairs Constructor amp Destructor Documentation WorldCollisionDetector WorldCollisionDetector const RCShdPtr lt WorldObjects gt initialWorldObjects const RCShdPtr lt WorldMeanVelocities gt worldMean Velocities Constructor of the class This constructor detects collisions between the objects in the scene between an initial and a proposed final position Parameters initial WorldObjects Initial state positions of every object in the scene worldMeanVelocities Proposed mean velocities of every object in the scene WorldCollisionDetector WorldCollisionDetector const RCShdPtr lt WorldObjects gt initialWorldObjects const RCShdPtr lt WorldObjects gt finalWorldObjects float timestep Constructor of the class This constructor detects collisions between the objects in the scene between an initial and a proposed final position Parameters initialWorldObjects Initial state positions of every object in the scene finalWorldObjects Proposed final state positions of every object in the scene timestep Duration of the step taken Member Function Documentation const DetectionPair WorldCollis
57. Strategy Class Reference A stepper that takes into account collisions include lt World h gt Inheritance diagram for World WorldStepStrategy World World stepostrategy Public Member Functions WorldStepStrategy World world Contructor void stepAllowingCollisions Step that doesn t take into account collisions void step Step that takes into account collisions BaTime Instant getTime const Accesor to the time of the simulaton Detailed Description A stepper that takes into account collisions Class similar to SimStepStrategyAdaptive but focusing on collisions The stepping strategy could be divided in three layers each with its own nomenclature gt A Step layer This is the top layer A step is a user step which means that the timestep is 1 0 frameRate This layer calls the colStep layer for smaller steps which in turn calls the bottom subStep layer A step gt colStep gt subStep gt B colStep layer This is the middle layer called by the Step layer once or more times per frame and calls subStep layer once or more times per colStep This is a collision step which means that after every colStep the path is checked for collisions and if there have been collisions must either be halved or process collision impulses As explained in 5 Brid 02 gt C subStep layer This is the bottom layer SubSteps call internal simulation not taking into account collisions substeps The subStep lay
58. Technical Report IRI TR 10 10 AW Simulaci n de Objetos Planos Deformables con Resoluci n de Contactos y Colisiones Santiago Man n Freixa E Abstract El proyecto descrito en esta memoria consiste en la implementaci n de una aplicaci n que permita simular la interacci n de tejidos entre s o con objetos r gidos en una plataforma Linux Se implementa el aleoritmo de detecci n y resoluci n de contactos y colisiones desarrollado por Bridson Fedkiw y Anderson Bridson Fedkiw Anderson 2002 El simulador dpoSimulator se ha desarrollado para el proyecto de manipulaci n autom tica de objetos planos deformables Proyecto PAU DPI 2008 06022 el cual tiene como objetivo la manipulaci n inteligente de tejidos con robots dpoSimulator servir de base para un futuro desarrollo de un sistema que permita escoger c mo un robot debe manipular un tejido para moverlo de un estado inicial a uno introducido por el usuario La memoria consta de cinco apartados En ellos se describe en detalle el algoritmo implemen tado con los diagramas de flujo apropiados se provee de un manual de usuario que muestra los resultados de las simulaciones y explica c mo construir una escena y un manual de de sarrollo una descripci n del flujo principal del programa La descripci n del algoritmo viene acompa ada de una considerable cantidad de ecuaciones matem ticas puesto que se trata de un programa de c lculo Se demuestran las ecu
59. a Aqu es donde se encuentra la implementaci n del algoritmo de detecci n y resoluci n de contactos y colisiones algoritmo 97 descrito en Bridson Fedkiw amp Anderson 2002 Parte de este c digo est organizado en las siguientes carpetas AABB Todo el c digo relativo a cajas delimitadoras alineadas con los ejes Axis Aligned Bounding Boxes est en esta carpeta Para m s informaci n sobre las AABB y su utilidad para la simulaci n consulte el apartado 2 2 3 Detection Aqu est el c digo referente a la detecci n precisa de contactos y colisiones y se realizan llamadas a funciones de la carpeta AABB para detecciones aproximadas En esta carpeta se implementan los algoritmos descritos en los apartados 2 2 3 y 2 2 4 en lo referente a cajas delimitadoras Responser Los algoritmos de resoluci n de contactos y colisiones se implementan en este directorio Para m s informaci n sobre estos algoritmos consulte el apartado 2 2 5 Viewer Las clases y funciones que se encargan de la interfaz de usuario y mostrar los resultados se encuentran en esta carpeta Se podr a decir que sta es la capa superior del programa Realiza llamadas al simulador PMDO y muestra los resultados Para m s informaci n consulte la secci n 2 3 2 Cabe destacar el documento CoinGeometryAdder que contiene un conjunto de funciones que permite con facilidad a adir geometr a de soporte a la escena flechas cubos Esta geometr a es
60. a keyword to map its mean velocities Parameters object Object whose mean velocities must be returned Returns Object s mean velocities void WorldMeanVelocities applyMeanVelocities RCShdPtr lt WorldObjects gt objects const float timestep const Method that calculates the final positions of every object in the scene according to the mean velocities Objects are substituted with the final objects Parameters object Object whose mean velocities must be returned timestep Duration of the step taken std map lt const Object std vector lt GeVector gt gt WorldMeanVelocities calcZeroVectorMap const Creates a map with zero velocities Internally used by the program Returns A copy of the mean velocities but with every velocity nullified std map lt const Object std vector lt unsigned int gt gt WorldMeanVelocities calcZerolntMap Creates a map from object0 0 object1 0 object n 1 0 Used internally by the program 133 float WorldMeanVelocities getTimestep const Accessor to the duration of the simulated step const RCShdPtr lt WorldObjects gt WorldMeanVelocities calcFinalPositions const RCShdPtr lt WorldObjects gt initialWorldObjects const Calculates final positions and returns a pointer the world objects This doesn t modify the final velocities Function similar to applyMeanVelocities Parameters initial WorldObjects State of the objects in the sc
61. a posici n x ax 1 a x2 2 6 v avi 1 a v 2 7 10 D nde X V Posici n y velocidad de un punto que pertenece a una arista X4 Vz Posici n y velocidad del v rtice 1 de la arista 1 X2 V2 Posici n y velocidad del v rtice 2 de la arista 2 a Distancia desde el punto hasta el v rtice 1 respecto a la longitud total de la arista en tanto por uno 3 Tri ngulo Esta entidad geom trica se utiliza para la detecci n de contactos y colisiones de forma aproximada y de forma precisa contactos y colisiones nodo tri ngulo La posici n de un punto en un tri ngulo se puede calcular con sus coordenadas baric ntricas stas son las que hacen que se cumplan las ecuaciones 2 8 y 2 9 d nde W1 W2 y W3 son las coordenadas baric ntricas del punto respecto al tri ngulo El punto se encuentra dentro del rea del tri ngulo si y s lo si sus coordenadas baric ntricas est n entre 0 y 1 X W1X1 W2X2 W3X3 2 8 V W V1 W2V2 W3V3 2 9 Malla La malla de un objeto s lo se considera como una unidad en la simulaci n de la din mica interna Baraff amp Witkin Large Steps in Cloth Simulation 1998 y la actualizaci n de velocidades para m s informaci n consulte el apartado 2 2 5 Tipos de objeto El simulador desarrollado dpoSimulator distingue dos tipos de objeto Objetos planos deformables Abreviados como dpo del ingl s Deformable Planar Objects stos se modelan como mallas
62. aciones finales utilizadas y se explican las premisas de partida Tambi n se muestran bastantes figuras que ilustran el funcionamiento del programa o sirven de soporte para explicar los algoritmos implementado Al final de la memoria se anexa la documentaci n de las principales clases del programa con sus miembros y funciones Se adjunta en un CD el simulador desarrollado dpoSimulator la documentaci n del mismo y una copia de la memoria Institut de Rob tica i Inform tica Industrial IRI Consejo Superior de Investigaciones Cient ficas CSIC Corresponding author Universitat Politecnica de Catalunya UPC S Man n Llorens i Artigas 4 6 08028 Barcelona Spain tel 434 93 405 4490 Tel fax 34 93 401 5750 5751 O Pc http www iri upc edu staff smanen http www iri upc edu p E Copyright IRI 2010 PERSONA CIENCIA EMPRESA Universitat Ramon Llull PROYECTO FINAL DE CARRERA T tulo Simulaci n de objetos planos deformables con resoluci n de contactos y colisiones Realizado por Santiago Man n Freixa Dirigido por Guillermo Reyes Pozo Tutor Juan Andrade Cetto Barcelona 1 de Septiembre 2010 Contenido A A cnet ctenrentedeneatacaencaa teetemenaheneaa ieee teatccmencen teetenenaheneaereeenestaatenceaseneee l Walt ODEIO del PLOY CC1O ulcera a a l kz PICA CCC LOY COMO ssi caeusial a A a icd rica 2 KS ACOMLE MICO de la menona esena aa 3 2 Dea OO ea a a cpehcteneas cede neat netenesn creed esate de
63. ades medias modificadas La actualizaci n de velocidades se explica en el apartado 2 2 5 Se repiten estos pasos hasta que se haya cubierto todo el intervalo que se quiere simular Los apartados que siguen describen en detalles c mo se ejecuta cada uno de estos pasos El Diagrama 2 1 muestra de forma gr fica el algoritmo descrito INICIO h Duraci n del paso OA Se ha simulado ya toda la duraci n del paso Simular un paso h seg n la din mica interna Calcular las velocidades medias Detectar y resolver contactos Detectar colisiones Hay colisiones Resolver colisiones de forma iterativa Calcular las posiciones Actualizar las finales velocidades finales Diagrama 2 1 Algoritmo general de simulaci n de tejidos con resoluci n de contactos y colisiones El algoritmo se corresponde a la simulaci n de un solo paso 2 2 2 Modelado geom trico La simulaci n se basa en el m todo de los elementos finitos MEF describiendo la geometr a de los objetos f sicos en mallas triangulares A continuaci n se introducen los elementos geom tricos llamados entidades geom tricas que cobran importancia en el algoritmo en el que se basa el simulador Bridson Fedkiw amp Anderson 2002 Entidades geom tricas Nodo Arista Tri ngulo Malla Figura 2 1 Tipos de entidades geom tricas contempladas Es necesario destacar cuales son las entidades geom tricas utilizadas y qu funci n tie
64. ador de din mica interna en este caso el de la librer a freecloth De esta forma se obtienen unas posiciones estimadas X 1 y unas velocidades estimadas para el final del paso Se calculan las velocidades medias estimadas de los nodos durante el paso con la ecuaci n 2 4 n 1 _ X At vn gntt 2 2 2 4 Se detectan los contactos que ocurren en el tiempo f y se resuelven aplicando impulsos de repulsi n a las velocidades medias estimadas para obtener una nueva estimaci n El apartado 2 2 3 explica como se detectan los contactos y el 2 2 5 como se resuelven Se detectan las colisiones que ocurren en el periodo simulado con las velocidades medias estimadas y se resuelven aplicando impulsos a las velocidades medias estimadas Es posible que se sigan produciendo colisiones debido a que los impulsos aplicados sobre cada nodo se promedian por lo que se vuelven a detectar y resolver colisiones de forma iterativa hasta que se han solucionado todas las colisiones En el apartado 2 2 4 se explica c mo se detectan las colisiones y en el 2 2 5 se explica c mo se resuelven En este punto las velocidades medias ya son definitivas pues llevan a una configuraci n libre de colisiones Se calculan las posiciones al final del paso a partir de las velocidades medias modificadas ecuaci n 2 5 xo 1 x Aty t1 2 2 5 Finalmente se actualizan las velocidades al final del paso v para que concuerden con las velocid
65. adoras no se solapan seguro que los elementos que contienen no colisionan durante el paso de simulaci n Por ello no es necesario hacer una comprobaci n de colisi n precisa con un coste de c lculo muy superior al de la detecci n aproximada e Si dos cajas delimitadoras se solapan es posible que los elementos que contienen colisionen Posteriormente se realiza una detecci n precisa 32 l l l J Ew E E E a j l l l l l l l l l l l l E A A A A A A f f a ye o we l iia a i Se E E E E M M M Lo mm RE E Meee eee E EE Figura 2 17 Las cajas delimitadoras engloban tanto a los tri ngulos al principio como al final del paso de simulaci n En esta figura es imposible que los tri ngulo 3 y 4 colisionen pues sus cajas delimitadoras no se solapan Sin embargo los tri ngulos 1 y 2 s es posible que colisionen Los rboles de cajas delimitadoras utilizados en detecci n de colisiones se generan con un algoritmo similar al descrito en el Diagrama 2 3 La diferencia es que los nodos terminales deben contener el tri ngulo en su posici n al principio y al final del paso de simulaci n Para ello no se consideran los tri ngulos como unidades m nimas indivisibles sino las parejas de tri ngulos Para ello se denomina elemento a la pareja de tri ngulos dada por la posici n inicial y la final de un mismo tri ngulo durante un paso de s
66. ailed Description AABBNodes are the nodes of an Axis Aligned Bounding Box Tree This class is meant to be used mainly by AABBTree The class can do certain operations recursively it can build itself recursively and find overlapping leaves recursively Most functions are meant to be used by AABBTree so the user is forwarded to its documentation Each node object has a bounding box BBox which contains with the minimum possible axis aligned box all the elements AABBContainable _ that are supplied in its constructor See also AABBTree AABBLeaf BBox AABBContainable Constructor amp Destructor Documentation AABBNode AABBNode const AABBNode const parent const std vector lt AABBContainable gt amp elementList unsigned int depth unsigned int minElements Constructor to build the node and recursively build its children Parameters parent Parent node of this node In case this node is root parent should be 0 elementList Elements which the AABBNode s BBox must bound depth Depth of the node in the tree The root is depth 0 minElements Minimum number of elements AABBContainable that nodes this one and its descendants can have AABBNode AABBNode const AABBNode const parent const std vector lt boost shared_ptr lt AABBContainable gt gt amp elementList unsigned int depth unsigned int minElements Constructor to build the node and recursively build its children Parameters parent Parent
67. allas planas rectangulares de diferentes densidades y guardarlas en formato STL El simulador cumple con las caracter sticas requeridas planteadas en el apartado 1 2 Figura 3 1 Simulaci n de la escena ShirtOnTable en dpoSimulator 3 1 Recomendaciones Aunque el simulador cumple con las especificaciones requeridas se pueden desarrollar las siguientes ampliaciones C mo se indica en el apartado 2 3 1 no se ha desarrollado ninguna herramienta que facilite la generaci n de trayectorias complicadas y que las traduzca a restricciones de velocidades Esto se debe a que ser el planificador el que decida c mo manipular los objetos Sin embargo en el documento matlab TrajectoryGenerator m puede servir de 104 punto de partida para desarrollar un generador de trayectorias autom tico de forma sencilla Actualmente s lo se puede trasladar los objetos r gidos aplicando una restricci n de velocidad a uno de sus nodos pero no se puede rotar Esto es una limitaci n que se puede solucionar con facilidad cambiando el documento de restricciones de velocidades para objetos r gidos para que acepte rotaciones por ejemplo La simulaci n de la din mica interna de los tejidos seg n Baraff Witkin Large Steps in Cloth Simulation 1998 depende de unos par metros resistencia a tracci n flexi n y cizalla que caracterizan el mismo stos diferencian el algod n del cuero con una mayor resistencia a flexi n y cizalla DpoSimu
68. am for StIMeshSaver Meshsaver SUMeshsaver Public Member Functions StIMeshSaver GeMesh amp mesh String meshName Constructor of the class virtual void save String fileName Method to save the mesh given to the constructor Detailed Description Class that saves a mesh in STL format Constructor amp Destructor Documentation StlMeshSaver StlMeshSaver GeMesh 8 mesh String meshName Constructor of the class The constructor contains a mesh for later saving Parameters mesh Mesh to be saved later meshName Name of the mesh that will appear in the STL file Member Function Documentation void StlMeshSaver save String fileName virtual Method to save the mesh given to the constructor 120 Parameters fileName Name of the STL file that will be created taking into account the current directory Implements MeshSaver The documentation for this class was generated from the following files sre PMDO PMDO StIMeshSaver h src PMDO PMDO StIMeshSaver cpp 5 2 8 VelConstraintsList Class Reference This class contains a list of velocity constraints to be applied to an object read from a file include lt VelConstraints h gt Inheritance diagram for VelConstraintsList VelCoanstraintsList Public Member Functions VelConstraintsList String filename Constructor const VelConstraints getVelConstraints float time const Method to retrieve VelocityConstraints corresponding to a certain time
69. ama y ejecutar el comando make da Esto compilar el programa y lo enlazar generando un archivo binario ejecutable dpoSimulator Se puede eliminar todos los archivos binarios generados con el comando make clean Ejecuci n del programa Tras compilar el programa ste se puede ejecutar desde el directorio ra z del mismo en la terminal con la instrucci n dpoSimulator Interfaz del simulador dpoSimulator Examiner Viewer Time 0 f Control Panel Play Step Pause Rewind Display Panel State display Bounding boxes display Proximity detection display Collision detection display Save render to file _ Save step iteration meshes Quit Rotx Roty Dolly Figura 2 41 Al ejecutar el programa aparecen dos formularios uno de control de la escena y el otro con la representaci n tridimensional de la misma La interfaz principal del programa consiste en dos ventanas e Examiner Viewer Esta ventana situada a la derecha en la Figura 2 41 permite ver la escena en un espacio tridimensional Es un visualizador de Open Inventor que tiene ciertas funcionalidades adicionales descritas m s adelante e Control Panel El panel de control es un formulario que permite al usuario controlar la evoluci n de la simulaci n y visualizar informaci n adicional ste se muestra situado a la izquierda en la Figura 2 41 El formulario y la programaci n de eventos se ha desarr
70. amp Destructor Documentation WorldResponser WorldResponser RCShdPtr lt WorldMeanVelocities gt worldMeanVelocities const PositionUpdater positionUpdater const VelocityUpdater velocityUpdater Constructor of the class Parameters worldMeanVelocities Proposed mean velocities of every object in the scene These will be modified positionUpdater Method of applying impulses PARALLEL update recommended faster which makes an average of the impulses applied to every node or SERIAL update much slower velocityUpdater Method of updating velocities IMPLICIT update recommended stable which updates resolving an implicit equation or CONST_ACCELERATION update unstable which rsolves explicitly supossing a constant acceleration during the step Member Function Documentation void WorldResponser applyMutatedStepTo const WorldObjects amp initialObjects WorldObjects amp proposedObjects const Function that applies collision or contact impulses to initialObjects to obtain the final objects Parameters initialObjects Initial position of the objects in the scene proposedObjects Proposed final positions of the objects in the scene These will be replaced with the actual final positions 140 RCShdPtr lt WorldMeanVelocities gt WorldResponser getWorldMeanVelocities const Accessor to the mean velocities of every object in the world Returns Mean velocities the objects in the scene virtual void WorldResponser addlmpu
71. an be contained by the AABB nodes For contacts these are triangles with thickness and for collisions these are triangle pairs minFaces Minimum number of elements that a node can contain AABBTree AABBTree const std vector lt boost shared_ptr lt AABBContainable gt gt amp elementList unsigned int minFaces 1 Constructor of the class The constructor recursively builds the tree from its root Parameters elementList List of objects that can be contained by the AABB nodes For contacts these are triangles with thickness and for collisions these are triangle pairs minFaces Minimum number of elements that a node can contain Member Function Documentation void AABBTree collectBBoxes std vector lt const BBox gt amp bBoxCollection const Class to collect all the bounding boxes of the tree in a vector Parameters bBoxCollection Output vector that will be filled with the bounding boxes of the tree void AABBTree collectNodes std vector lt const AABBNode gt 8 nodeCollection const Class to collect all the nodes of the tree in a vector Parameters nodeCollection Output vector that will be filled with the nodes of the tree void AABBTree collectOverlappingLeaves const AABBTree otherTree std vector lt FacePair gt 8 overlappingFacePairs const Class that determines all the leaves terminal nodes of this tree that are in contact with another tree 111 Parameters otherTree Other tree to det
72. and methods Constructor amp Destructor Documentation DeformablePlanarObject DeformablePlanarObject int fps float gravity RCShdPtr lt GeMesh gt initialMesh const String amp parFilename const String amp velConstraintFileName Constructor of the class This loads the mesh parameters and velocities of the object Constructor of the class Parameters fps Frames per second of needed information about the mesh gravity Gravity initialMesh Initial mesh supplied to the simulator TODO At the moment no initial velocity can be supplied parFilename Parameters of the object thickness density and diffuse color velConstraintFileName Filename of the file that constains information about velocity constraints 113 DeformablePlanarObject DeformablePlanarObject const DeformablePlanarObject 8 dpo Copy constructor of the DPO Member Function Documentation DeformablePlanarObject 8 DeformablePlanarObject operator const DeformablePlanarObject dpo Assignment operator void DeformablePlanarObject step BaTime Duration Af virtual Function to step the simulation forward in time NOT taking into account collisions The only stepper that takes into account collisions is WorldStepStrategy This function takes care of velocity constraints loading before calling _stepper gt stepQ Parameters At Increment of time Duration of time that must be simulated in ms Implements Object RCShdPtr lt SimSimulator gt
73. ar a colisiones en funci n de la masa de los nodos de los impulsos resultantes y de las coordenadas baric ntricas del punto de colisi n Wi gt Triangulo gt ve woe Thi lt i 1 2 3 e 1 2 78 Nodo gt v ont 4 fi Ma D nde n 1 2 i y Vk Velocidad media del nodo k para evitar la colisi n Y 1 2 Velocidad estimada la de partida del nodo k que provocaba una colisi n w Coordenada baric ntricas del punto de colisi n respecto al nodo i m Masa del nodo i 2 Impulso resultante que se aplica sobre el nodo y el tri ngulo con sentidos opuestos y en la direcci n normal Este impulso es el que se calcula en este apartado Para calcular el valor del m dulo de los impulsos resultantes se sustituyen las velocidades modificadas y por ahora desconocidas de 2 78 en la 2 77 Se puede agrupar los t rminos de velocidades estimadas obteniendo una velocidad relativa en la direcci n normal estimada El resultado se muestra en la ecuaci n 2 79 Se observa que la nica inc gnita es el impulso resultante por lo que se despeja dicha variable y se obtiene la ecuaci n final del impulso resultante ecuaci n 2 80 2 79 2 2 2 wW w Ww n 1 2 1 2 3 N E I m m M mg n 1 2 n 1 2 n 1 2 7 v D E 2 NN 1 y Wi w we 1 we w wz 2 80 m m m Mz m m m Mz La ecuaci n del impulso resultante es matem ticamente correcta pero puede causar problemas num ricos c
74. areja de tri ngulos pues se debe comprobar si 23 hay contacto entre las aristas de un tri ngulo con cada arista del otro tri ngulo M s adelante se describe el algoritmo implementado para realizar este tipo de detecciones Este tipo de detecci n c mo se explica en las secciones anteriores es de una complejidad de c lculo significativamente superior a la detecci n aproximada Por ello la detecci n aproximada es necesaria para una velocidad de c lculo adecuada La detecci n precisa de contactos provee al simulador de una lista de parejas de entidades nodos O aristas que est n en contacto Posteriormente el simulador aplicar impulsos sobre las entidades ver apartado 2 2 5 Contactos Nodo Tri ngulo Para determinar si un nodo y un tri ngulo est n en contacto se realizan los siguientes pasos 1 Se define como distancia normal para contacto nodo tri ngulo al m dulo del vector que va desde el nodo hasta la proyecci n del mismo sobre el tri ngulo Esta distancia normal se corresponde a den la Figura 2 11 qa X3 Figura 2 11 Nomenclatura utilizada para la detecci n de contactos entre nodos y tri ngulos Primero se determina si la distancia normal es menor al grosor del tri ngulo ver Figura 2 3 En caso contrario se puede asegurar que el nodo y el tri ngulo no est n en contacto La distancia normal se calcula como se muestra en la ecuaci n 2 21 d X4 X3 f 2 21 2 Sila pareja ha pasado la
75. as colisiones Figura 2 31 Los contactos entre la camiseta y la mesa mantienen a ambos objetos separados y evitan la resoluci n de colisiones a cada paso Imagen tomada del simulador desarrollado dpoSimulator La Figura 2 31 muestra un caso en el que la aplicaci n de contactos acelera mucho el c lculo En caso de que no se aplicasen contactos en cada paso de la simulaci n se tendr an que resolver las colisiones que existir an entre la mesa y la camiseta Los contactos mantienen la camiseta flotando a un mil metro de distancia correspondiente al grosor del tejido sobre la superficie de la mesa Cabe destacar que cuanto menor sea el paso de simulaci n mayor ser la Importancia que cobrar n los contactos pues se aplicar n m s veces por lo que se deber n resolver menos colisiones 11 Las colisiones frenar an el avance de los objetos entre s pero podr a llegar un momento en el que los elementos estuviesen tan cercanos que por errores de redondeo no se detectasen colisiones Por lo que los contactos sirven como m todo de seguridad para evitar futuras colisiones ii Los contactos independientemente de la forma en que se modelen son fen menos reales a tener en cuenta Como se explica en el apartado 2 2 1 se aplican todos los impulsos de contacto a la primera estimaci n de la velocidad media durante el paso para obtener una nueva 50 estimaci n que tiene en cuenta los contactos pero no las colisiones En el mejor
76. bsoluta entre el n mero de tri ngulos contenidos en el nodo hijo izquierdo y el derecho Esto resulta en un rbol m s equilibrado por lo que la detecci n de contactos y colisiones se ve acelerada El algoritmo se llama a s mismo de forma recursiva a todos los hijos que no sean nodos terminales El algoritmo 17 esta pensado para ser aplicado a toda una malla que sera contenida por un nodo raiz y que se vaya llamando recursivamente para crear todos los nodos hasta tener todo el arbol Figura 2 8 Izquierda Anclaje mallado Derecha Representaci n de algunas de las cajas correspondientes a los nodos del rbol de AABBs En la Figura 2 8 se observa c mo las cajas delimitadoras del rbol de una malla pueden tener medidas muy diferentes Las cajas m s grandes contienen tri ngulos que est n muy apartados entre s mientras que las m s peque as contienen un solo tri ngulo 18 NO aja EncontrarMejorEja liataTriangulos Cr ar node izquierde y derecho vaci n La componente del centro de la caja i on la direcci n aja ay Inferior igual a el COG de la caja dal nodo en la direcci n ajg NO A adir caja al nodo A adir caja al nodo Izquierdo derecho Aplicar el algoritmo de forma recursiva a aquellos hijos que ro Bean terminales Diagrama 2 3 Algoritmo de la construcci n recursiva de un rbol de AABBs a partir de una malla 19 Detecci n aproximada de contactos mediante AABBs
77. cities gt getWorldMeanVelocities const Accessor to the mean velocities of every object in the world Protected Member Functions virtual void addImpulses const Detector amp detector 0 Pure virtual function that adds impulses to the mean velocities of the objects according to detected contacts or collisions virtual void addPTImpulse const PTPair amp ptPair 0 Pure virtual function that adds impulses to a point triangle pair which are in contact or going to collide virtual void addEEImpulse const EEPair amp eePair 0 Pure virtual function that adds impulses to a edge edge pair which are in contact or going to collide 139 void distributePT Impulse const float Ibar const PTPair amp ptPair Function that distributes an impulse applied to a point triangle pair to the nodes void distributeEEImpulse const float Ibar const EEPair amp eePair Function that distributes an impulse applied to an edge edge pair to the nodes PositionUpdater getPositionUpdater const _positionUpdater object accessor VelocityUpdater getVelocityUpdater const _velocityUpdater object accessor VelocitiesMutator amp getVelocitiesMutator _velocityMutator object accessor Classes class VelocitiesMutator Nested internally used to change the mean velocity of the nodes in the scene Detailed Description Class that contains functions that WorldCollisionResponser and WorldProximityResponser have in common Constructor
78. con la distribuci n de Linux Por ello es recomendable instalar un paquete de herramientas esenciales para la compilaci n con la siguiente instrucci n en una terminal sudo apt get install build essential e Para compilar la documentaci n del programa y poder verla en formato html se debe tener instalada el programa Doxygen actualmente se utiliza la versi n 1 5 8 Esto se puede hacer en la terminal con la instrucci n sudo apt get install doxygen Una vez instalado Doxygen se puede compilar la documentaci n ejecutando desde una terminal en el archivo ra z del programa la instrucci n doxygen Doxyfile Tras compilar la documentaci n sta se puede consultar abriendo con Mozilla Firefox el archivo html index html direcci n relativa al directorio ra z del programa e Como se explica en el apartado 2 3 2 el programa se ha desarrollado en el entorno de programaci n KDevelop versi n 3 5 3 Por ello se recomienda que cualquier modificaci n se realice con el mismo programa para ahorrarse los inconvenientes de migrar el proyecto a otro entorno Para instalar el programa se debe ejecutar en una terminal la instrucci n sudo apt get install kdevelop El proyecto se puede abrir desde KDevelop en Project Open Project y abriendo el archivo pmdo project en el directorio ra z del programa Compilaci n del programa Para compilar el programa simplemente se tiene que abrir una terminal e ir al directorio ra z del progr
79. cumentation Open Source Edition http doc trolltech com 3 3 index html 106 19 Volino P amp Thalmann N M 2000 Implementing Fast Cloth Simulation with Collision Response Computer Graphics International 2000 Proceedings pp 257 266 Geneva MIRALab 107 5 Anexos 5 1 Contenido del CD El CD adjunto a este documento contiene una copia de la memoria del proyecto y el simulador dpoSimulator con su correspondiente documentaci n en la carpeta pmdo 5 2 Documentaci n de las clases 5 2 1 AABBNode Class Reference AABBNodes are the nodes of an Axis Aligned Bounding Box Tree include lt AABBNode h gt Inheritance diagram for AABBNode BE Ode ABEL Ea Public Member Functions AABBNode const AABBNode const parent const std vector lt AABBContainable gt amp elementList unsigned int depth unsigned int minElements Constructor to build the node and recursively build its children AABBNode const AABBNode const parent const std vector lt boost shared_ptr lt AABBContainable gt gt amp elementList unsigned int depth unsigned int minElements Constructor to build the node and recursively build its children AABBNode Detstructor unsigned int getDepth const _depth accessor const BBox amp getBBox const _box accessor Friends class TreeBuilder class AABBTree Classes class TreeBuilder Class that is used to group methods regarding tree construction 108 Det
80. d and modify the mean velocities accordingly WorldProximityDetector worldProximityDetector worldObjects worldMeanVelocities WorldProximityResponser worldProximityResponser worldMeanVelocities worldProximityDetector PARALLEL IMPLICIT 100 Now collisions are calculated from the initial position worldObjects and the worldMeanVelocities which have been modified by contact impulses WorldCollisionDetector worldCollisionDetector worldObjects worldMeanVelocities Number of detected collisions int nCollisions worldCollisionDetector getPTs size worldCollisionDetector getEEs size if nCollisions 0 Collisions have been detected so we check if the collision step is small enough to proceed with a collison response if isColHSmallEnough Solve collisions iteratively untill all collisions funtill a new collision free state is reached solveCollisionslteratively worldObjects proposedObjects worldMeanVelocities amp worldCollisionDetector Update time _ time coli jelsel The step is not small enough so we must repeat the eollision step with a smaller _colH coll is halved to proceed with a smaller collision step halveColH l else No collisions have been detected if nContacts 0 If contacts have been detected proposedObjects is updated to account for them worldProximityResponser applyMutatedStepTo worldObjects proposedOb
81. de 2 82 para dar la segunda ecuaci n n 1 2 _ n 1 2 n 1 2 gt def 2 82 qe avia 1 an pra wr ESO D nde yoo 2 Velocidad de la part cula que va a colisionar que pertenece a la arista 1 vo 2 Velocidad de la particula que va a colisionar que pertenece a la arista 2 Tambi n se utilizan las ecuaciones de velocidades modificadas deducidas en los siguientes apartados para una pareja de aristas Se han reescrito las ecuaciones en 2 83 ISA pru guti 2 i a n 1 1 m n 1 2 n 1 2 ao V3 E qa My 2 83 n 1 2 _ n41 2 1 5 iq Cy V3 V3 m n b yu ae _ if Se sustituyen las velocidades modificadas de la ecuaci n 2 83 en la segunda ecuaci n de 2 82 y se agrupan los t rminos correspondientes a las velocidades estimadas para obtener la ecuaci n final 2 84 De esta ecuaci n aislamos el impulso resultante que es aquel que queremos calcular obteniendo la ecuaci n final 2 85 1 2 2 2 2 5 OF 1 a Das 1 b vy 2 ppt 4 in E ma M2 ae ma 2 84 nm ona 4 1 a b 1 4 a e e a 1 2 3 4 n 1 2 n 1 2 n 1 2 i A A A 2 85 ee m2 2 hi 2 m2 2 hy a G b CA O AA ED mM M M3 Ma Ma m M3 Ma Igual que en el caso de colisiones nodo tri ngulo resulta til expresar los sumandos del denominador como coeficientes cuyos valores ser n nulos si alg n nodo tiene masa infinita pues forma parte de un objeto r gido o su movimiento est restringido El algori
82. e Upper layer class that contains the two windows _explorerWidget and _controllerWidget that compose the main user interface include lt WorldViewer h gt Inheritance diagram for WorldViewer GObject World Viewer Public Slots void playSimulation Ot slot to play the simulation void pauseSimulation Ot slot to pause the simulation void stepSimulation Ot slot to advance the simulation one step forward 143 void rewindSimulation Ot slot to play the reinitialize the scene void setSavelterationMeshes bool savelterationMeshes Ot slot to save the iteration meshes Signals void updateRenderingModels Ot signal to update the rendered models according to the changes in the _world void updateTimeDisplay Ot signal to update the simulated time display in the _explorerWidget void saveRenderChkToggled bool Ot signal to save the rendered scene as an image Public Member Functions WorldViewer QObject parent 0 const char name 0 Constructor of the class World getWorldPtr World pointer accessor void sendUpdateSignal Method that emits updateRenderingModels to start the render updating process bool getStepFlag _stepFlag accessor Used internally TimeCallback getTimeCallback _timeCallback accessor Used internally void emitUpdateTimeDisplay Updates the time displayed so that it matches with _world gt _time Classes class TimeCallback Nested class that hold
83. e los nodos nunca dar lugar a un polinomio as pues implicar a que en m s de un instante los cuatro nodos son complanarios p3 t ter Ff teo t ler Rango 2 Rango Figura 2 23 S lo el m nimo se encuentra dentro del intervalo de simulaci n V 0 lt tor lt Co lt Ves En este ltimo caso tanto el m ximo como el m nimo se encuentran en el intervalo de tiempo simulado Se buscar n ra ces en los intervalos 0 a te a te2 y te2a t en este orden Cuando se haya encontrado una ra z se dejar de buscar en los siguientes rangos La Figura 2 24 muestra un ejemplo de este caso en el que la b squeda de ra z en el primer rango ya dar a resultado ler Rango 2 Rango 3er Rango Figura 2 24 Tanto el m nimo tel como el m ximo te2 se encuentran dentro del intervalo de simulaci n 39 El m todo seleccionado para encontrar la ra z positiva m s peque a que est dentro del intervalo de simulaci n es el de la secante Se podr a haber escogido un m todo concreto para polinomios como el de Bairstow Sin embargo el m todo de la secante presenta la ventaja de s lo calcular una ra z si se cree que est dentro del intervalo de simulaci n Es decir omite las ra ces que seguro que no son tiles ahorrando tiempo de c lculo De todas formas cabe destacar que un perfilado del programa final ha dado como resultado que el tiempo empleado en determinar si los nodos llegan a ser coplanarios es
84. ePlanarObject DeformablePlanarobject 112 Public Member Functions DeformablePlanarObject int fps float gravity RCShdPtr lt GeMesh gt initialMesh const String amp parFilename const String amp velConstraintFileName Constructor of the class This loads the mesh parameters and velocities of the object DeformablePlanarObject const DeformablePlanarObject amp dpo Copy constructor of the DPO DeformablePlanarObject amp operator const DeformablePlanarObject amp dpo Assignment operator virtual void step BaTime Duration At Function to step the simulation forward in time NOT taking into account collisions RCShdPtr lt SimSimulator gt getSimulator _stepper gt _simulator accessor const RCShdPtr lt SimSimulator gt getSimulator const _stepper gt _simulator accessor double getArea const _area accessor int getNFaces const _nFaces accessor virtual RCShdPtr lt GeMesh gt getMeshPtr _simulator gt _meshPtr accessor virtual const RCShdPtr lt GeMesh gt getMeshPtr const _simulator gt _meshPtr constant accessor DpoVector getVelocity const unsigned int vid const Interface to _simulator gt getVelocity vid void setVelocity unsigned int vid const DpoVector amp newVelocity Interface to _simulator gt setVelocity vid newVelocity virtual bool is VertexConstrained unsigned int vertexId const Detailed Description Class for a cloth object and all its atributes
85. ecciones de elementos geom tricos en el paso de tiempo simulado bajo la suposici n de movimiento rectil neo en dicho paso La detecci n de colisiones genera una lista de colisiones detectadas de tipo nodo tri ngulo o arista arista que se deben tratar y resolver Para ello se aplican impulsos que separan las dos entidades de tal forma que no se produzca la colisi n En este apartado se describe el c lculo de los impulsos resultantes uno sobre cada entidad que se deber n distribuir posteriormente y aplicar a los nodos QoQ Figura 2 33 Las colisiones entre objetos se modelan como colisiones inel sticas Se modelan todas las colisiones como inel sticas Esto quiere decir que despu s de producirse la colisi n la velocidad relativa de las entidades en la direcci n normal es nula Las colisiones entre objetos deformables tejidos entre s o con objetos r gidos se estiman como inelasticas Bridson Fedkiw amp Anderson 2002 Teniendo en cuenta tambi n que no se simula la interacci n entre objetos r gidos pues no forma parte de las funciones del simulador al tener algoritmos de simulaci n diferentes se entiende que todas las colisiones se modelan como inel sticas a Colisi n nodo tri ngulo b Colisi n arista arista Figura 2 34 Los dos tipos de colisiones se modelan como si fueran monodimensionales en la direcci n normal entre dos part culas Adem s las colisiones se modelan con las siguientes caracter
86. ect overlaping leaves against overlappingFacePairs Output vector which will be filled with the face pairs that overlap void AABBTree collectOverlappingLeaves const AABBTree otherTree boost ptr_vector lt FacePair gt amp overlappingFacePairs const Class that determines all the leaves terminal nodes of this tree that are in contact with another tree Parameters otherTree Other tree to detect overlaping leaves against overlappingFacePairs Output vector which will be filled with the face pairs that overlap void AABBTree collectSelfOverlappingLeaves std vector lt FacePair gt overlappingFacePairs const Class that determines all the leaves terminal nodes of this tree that overlap Parameters overlappingFacePairs Output vector which will be filled with the face pairs that overlap void AABBTree collectSelfOverlappingLeaves boost ptr_vector lt FacePair gt amp overlappingFacePairs const Class that determines all the leaves terminal nodes of this tree that overlap Parameters overlappingFacePairs Output vector which will be filled with the face pairs that overlap The documentation for this class was generated from the following files e sre PMDO PMDO AABB AABBTree h e srce PMDO PMDO AABB AABBTree cpp 5 2 3 DeformablePlanarObject Class Reference Class for a cloth object and all 1ts atributes and methods include lt DeformablePlanarObject h gt Inheritance diagram for Deformabl
87. ectadas entre un estado y el siguiente solapado Hay dos tipos de colisiones Entre un nodo y un tri ngulo Se representa con un cilindro azul la trayectoria del nodo supuesta lineal desde el principio del paso hasta que ocurre la colisi n Tambi n se representa la posici n del tri ngulo cuando ocurre la colisi n de color amarillo La imagen izquierda de la Figura 2 66 muestra las colisiones que ocurren en el mismo caso que el mostrado en la Figura 2 65 entre el nodo de la esquina de la mesa y un tri ngulo de la malla del tejido La imagen derecha de la misma figura es m s clara pues s lo se muestra una colisi n entre el nodo de una esquina con el tri ngulo de otra del mismo tejido Figura 2 66 Colisi n nodo tri ngulo para la escena ClothOnTable izquierda y HangingCloth2 derecha Entre dos aristas Dos cilindros grises representan la posici n de las dos aristas en el momento de la colisi n y un cilindro verde une los puntos de las aristas que van a colisionar al principio del paso ver Figura 2 67 Figura 2 67 Colisi n entre dos aristas de una misma malla Figura 2 68 Representaci n de todas las colisiones que ocurren en un paso de la escena HangingCloth2 86 e Save render to file Una vez activada esta opci n todos los pasos que se simulen se guardar n como im genes en la carpeta frames del directorio ra z del programa Al activar la opci n el programa borrar la carpeta en caso de que
88. ects gt initialObjects const RCShdPtr lt WorldObjects gt finalObjects float timestep Constructor of the class WorldMeanVelocities const WorldMeanVelocities amp rhs Copy constructor of the class const RCShdPtr lt Mean Velocities gt getMeanVelocities const Object object const Method that returns the mean velocities of an object The object ptr is used as a keyword to map its mean velocities RCShdPtr lt MeanVelocities gt getMeanVelocities const Object object Method that returns the mean velocities of an object The object ptr is used as a keyword to map its mean velocities void applyMeanVelocities RCShdPtr lt WorldObjects gt objects const float timestep const Method that calculates the final positions of every object in the scene according to the mean velocities std map lt const Object std vector lt GeVector gt gt calcZeroVectorMap const Creates a map with zero velocities std map lt const Object std vector lt unsigned int gt gt calcZeroIntMap Creates a map from object0 0 object 0 object n 1 0 float getTimestep const Accessor to the duration of the simulated step const RCShdPtr lt WorldObjects gt calcFinalPositions const RCShdPtr lt WorldObjects gt initialWorldObjects const Calculates final positions and returns a pointer the world objects This doesn t modify the final velocities Detailed Description This class calculates and holds the mean velociti
89. eir behaviour This class is the one that a developer can most easily use It can load a scene contain objects velocity restrictions and parameters and it can also simulate the scene Constructor amp Destructor Documentation World World Constructor The constructor reads the information stored in the default path and loads parameters and objects from it World World const World amp world Copy constructor of the world World World Destructor 123 Member Function Documentation World amp World operator const World amp world Assignment operator of the world void World stepAllowingCollisions void Steps the simulation forward without taking into account contacts or collisions void World step void Steps the simulation forward taking into account contacts or collisions void World rewind Restarts the world loading again from the files BaTime Instant World getTime inline Simulation time accessor void World setTime BaTime Instant time Simulation time mutator int World getFps inline Fps of the simulation accessor RCShdPtr lt WorldObjects gt World getObjectsPtr inline Accessor to all the objects in the world void World setObjectsPtr const RCShdPtr lt WorldObjects gt objects Accessor to all the objects in the world Used to asign new objects to the world void World setSavelterationMeshes bool savelterationMeshes Method that allows
90. el simulador desarrollado en este proyecto dpoSimulator debido a la calidad de la simulaci n a que se puede aplicar sobre el algoritmo de Baraff y a la claridad y precisi n con la que est documentado El algoritmo completo se describe en el apartado 2 2 Baraff Witkin y Kass desarrollaron el 2003 un algoritmo que trataba un caso concreto de colisi n que sol a provocar problemas el pellizco pinch Baraff Witkin amp Kass 2003 Este fen meno ocurr a por ejemplo en la simulaci n de una camisa en la zona del codo La ropa quedaba pellizcada atraves ndose forzosamente y lo segu a durante toda la simulaci n Baraff Witkin y Kass plantean un algoritmo para resolver este caso concreto Por ltimo cabe comentar que Provot en el 2004 desarroll un algoritmo de simulaci n de tejidos con colisiones Provot 2004 para su modelo de din mica interna Provot 1995 ste no se ha implementado pues habr a requerido el desarrollo adicional del simulador de la din mica interna de Provot 2 2 Algoritmo implementado A continuaci n se describe en profundidad el algoritmo implementado Se empieza por una descripci n general e intuitiva apartado 2 2 1 que describe la estrategia general del algoritmo Despu s se introducen los tipos de elementos geom tricos y objetos que se utilizar n m s adelante apartado 2 2 2 Y finalmente se describen los algoritmos de detecci n y resoluci n de contactos y colisiones y se demuestran las
91. ene at the beginning of the step Returns Final state of the object in the scene according to the mean velocities stored in the class The documentation for this class was generated from the following files src PMDO PMDO WorldMeanVelocities h src PMDO PMDO WorldMeanVelocities cpp 5 2 16 WorldObjects Class Reference Class that manages all the objects in world include lt WorldObjects h gt Inheritance diagram for WorldObjects WordObjects Public Member Functions WorldObjects World world Constructor that initializes with empty vectors WorldObjects const WorldObjects amp rhs Copy constructor const WorldObjects amp operator const WorldObjects amp rhs Assignment operator WorldObjects Destructor void loadFromFiles Method that loads objects from files std vector lt RCShdPtr lt DeformablePlanarObject gt gt amp getDpos _dpos accessor const std vector lt RCShdPtr lt DeformablePlanarObject gt gt amp getDpos const _dpos constant accessor std vector lt RCShdPtr lt RigidObject gt gt amp getRos _ros accessor 134 const std vector lt RCShdPtr lt RigidObject gt gt amp getRos const _ros constant accessor World getWorld Accessor to the parent world const World const getWorld const Accessor to the parent world void stepAllowingCollisions BaTime Duration At Simulate the objects one step forward without taking into account contacts or c
92. er is also adaptive inherited from SimStepStrategy Constructor amp Destructor Documentation World WorldStepStrategy WorldStepStrategy World world Contructor 126 Parameters world World to be simulated Member Function Documentation void World WorldStepStrategy stepAllowingCollisions Step that doesn t take into account collisions Parameters At Duration of time to be simulated void World WorldStepStrategy step Step that takes into account collisions BaTime Instant World WorldStepStrategy getTime const Accesor to the time of the simulaton The documentation for this class was generated from the following files src PMDO PMDO W orld h src PMDO PMDO WorldStepStrategy cpp 5 2 12 WorldCollisionDetector Class Reference Class that detects the collisions that take place in the scene during a simulated step include lt WorldCollisionDetector h gt Inheritance diagram for WorldCollisionDetector WordColisionbetector Public Member Functions WorldCollisionDetector const RCShdPtr lt WorldObjects gt initial WorldObjects const RCShdPtr lt WorldMeanVelocities gt worldMeanVelocities Constructor of the class WorldCollisionDetector const RCShdPtr lt WorldObjects gt initial WorldObjects const RCShdPtr lt WorldObjects gt final WorldObjects float timestep Constructor of the class virtual const DetectionPair calcFirstToSolve const Finds the first Detection
93. ertexConstrained unsigned int vertex d const virtual Returns whether a vertex s velocity is constrained for the current step Parameters vertexld Id of the vertex in the mesh of the rigid object Implements Object The documentation for this class was generated from the following files src PMDO PMDO RigidObject h src PMDO PMDO RigidObject cpp 5 2 6 StlMeshLoader Class Reference Class that loads a mesh from a STL file and creates a freecloth GeMesh tine lade lt StilMeshLoader lt h gt Public Member Functions StIMeshL oader String filename Constructor of the class RCShdPtr lt GeMesh gt getMeshPtr Accessor to the loaded mesh Detailed Description Class that loads a mesh from a STL file and creates a freecloth GeMesh Constructor amp Destructor Documentation StIMeshLoader StIMeshLoader String filename Constructor of the class The constructor load the mesh from a STL file and saves it for later access in _mesh Parameters filename Name of the STL file taking into account the current directory 119 Member Function Documentation RCShdPtr lt GeMesh gt StlMeshLoader getMeshPtr Accessor to the loaded mesh The documentation for this class was generated from the following files sre PMDO PMDO StIMeshL oader h src PMDO PMDO StIMeshL oader cpp 5 2 7 StlMeshSaver Class Reference Class that saves a mesh in STL format tinclude lt StlMeshSaver h gt Inheritance diagr
94. es of every object in the scene during a simulated step When constructed this class atomatically calculates the mean velocities which can be later retreived with getMeanVelocities or applied to calculate the final positions with calcFinalPositions Constructor amp Destructor Documentation WorldMeanVelocities WorldMeanVelocities const RCShdPtr lt WorldObjects gt initialObjects const RCShdPtr lt WorldObjects gt finalObjects float timestep Constructor of the class This constructor calculates the mean velocities of the objects final positions initial positions timestep Parameters initialObjects Initial state positions of every object in the scene finalObjects Proposed final state positions of every object in the scene timestep Duration of the step taken 132 WorldMeanVelocities WorldMeanVelocities const WorldMeanVelocities rhs Copy constructor of the class Member Function Documentation const RCShdPtr lt MeanVelocities gt WorldMeanVelocities getMeanVelocities const Object object const Method that returns the mean velocities of an object The object ptr is used as a keyword to map its mean velocities Parameters object Object whose mean velocities must be returned Returns Object s mean velocities RCShdPtr lt MeanVelocities gt WorldMeanVelocities getMeanVelocities const Object object Method that returns the mean velocities of an object The object ptr is used as
95. g files src PMDO PMDO WorldObjects h src PMDO PMDO World cpp src PMDO PMDO WorldObjects cpp 5 2 17 WorldProximityDetector Class Reference Class that detects the contacts that take place in the scene during a simulated step include lt WorldProximityDetector h gt Inheritance diagram for WorldProximityDetector World roximity Detector Public Member Functions WorldProximityDetector const RCShdPtr lt WorldObjects gt worldObjects const RCShdPtr lt WorldMeanVelocities gt worldMeanVelocities Constructor of the class virtual const DetectionPair calcFirstToSolve const Finds the first DetectionPair that should be solved in contact it is the nearest Detailed Description Class that detects the contacts that take place in the scene during a simulated step When constructed this class atomatically detects contact pairs which can be retreived later with the method Detector getProposedPairs 136 Constructor amp Destructor Documentation WorldProximityDetector WorldProximityDetector const RCShdPtr lt WorldObjects gt worldObjects const RCShdPtr lt WorldMeanVelocities gt worldMean Velocities Constructor of the class This constructor detects contacts between the objects in the scene from an initial position Parameters worldObjects Initial state positions of every object in the scene worldMeanVelocities Proposed mean velocities of every object in the scene Member Function Documen
96. har name QO0bject parent name world new World stepFlag false _explorerWidget new ExplorerWidget 0 world _controllerWidget new ControllerWidget 0 world SOULS MainLoop 3 Se observa que el bucle principal es de SoOf que permite ejecutar simult neamente Of y Coin de forma sencilla El explorerWidget se encarga de un objeto worldScene que se encarga de representar gr ficamente en la ventana de Open Inventor la escena que se est simulando para ello busca las mallas en world El objeto de la clase World no se encuentra en la carpeta src Viewer sino en la src PMDO pues ya es una clase esencial para la simulaci n y no solo de visualizaci n La hom loga de la clase World pero para visualizaci n es WorldScene que se encuentra junto con las otras clases de visualizaci n en src Viewer El constructor de World en World cpp se encarga de cargar los par metros del mundo _params y los objetos que componen la escena _objects los cuales pueden ser de tipo r gido RigidObject o deformable plano DeformablePlanarObject Tanto los par metros como los objetos se cargan de los archivos en la carpeta environment Por ltimo el constructor del mundo se inicia con tiempo cero _time y se crea el objeto _stepper ste se encargar m s adelante de avanzar el mundo un paso tras otro aplicando una estrategia que acelere la simulaci n World World objects new WorldObjects this time 0
97. herramientas que permitan que el usuario del programa pueda montar sus propias escenas a simular Por ello primero se introduce la interfaz gr fica del programa y como moverse por l en el siguiente apartado y luego se explica de forma sistem tica c mo puede el usuario crear sus escenas Sin embargo se debe tener presente que la aplicaci n no es un fin en s misma El objetivo principal consiste en que el programa sirva de base para desarrollar un planificador de manipulaci n de objetos planos deformables de tejidos Por ello en la ltima secci n de este apartado se da una gu a a las clases y funciones principales del programa y se explica c mo se pueden utilizar como cimientos para desarrollar el planificador Para una informaci n m s completa se puede consultar directamente el c digo del programa comentado en formato Doxygen 2 3 1 Manual de usuario Requisitos compilaci n y ejecuci n del programa de simulaci n Requisitos m nimos e El simulador dpoSimulator se ha desarrollado y ejecutado siempre en un sistema operativo Linux en concreto en Ubuntu 8 10 No se ha estudiado la portabilidad del simulador a sistemas operativos diferentes por limitaci n temporal y porque no formaba parte del alcance del proyecto Sin embargo se estima que tal tarea ser a dif cil pues el simulador utiliza librer as mucho m s utilizadas y por lo tanto actualizadas en Linux que en Windows e Se debe tener instalada la librer a Qt3
98. i n de v rtices permite ver etiquetados los v rtices con el n mero de identificaci n que tienen en su malla Esto es til para manipular manualmente las velocidades de los v rtices pues se ve a simple vista el identificador del v rtice que se quiere manipular 11 Display Speed Esta opci n permite mostrar las velocidades de los nodos en el estado actual de la simulaci n Estas se representan como flechas que parten de los nodos cuyas velocidades representan ver Figura 2 49 Hay dos parametros adicionales mostrados en la Figura 2 47 que se habilitan al mostrar las velocidades y se pueden manipular para modificar la representaci n de las flechas que representan los vectores de velocidad e Length factor Variar este par metro varia la longitud de las flechas de forma proporcional Si se escogiese un tama o fijo para las flechas seg n las dimensiones de la escena el usuario no podr a verlas bien pues ser an demasiado cortas o largas En ese caso el usuario puede aumentar o disminuir el par metro length factor hasta que se vean bien las flechas e Width factor Este par metro es el an logo al anterior aplicado al ancho de las flechas Cuanto mayor es el factor mayor es el radio de las flechas T1 Figura 2 49 Velocidades mostradas como flechas rojas en la escena ClothOnTable La representaci n de velocidades ha resultado ser esencial para el desarrollo de la simulaci n pues permiti descartar un m todo de act
99. i n del sistema que es linealmente dependiente de las otras dos pues ya se sabe que se da la condici n de que las aristas son coplanarias Por ello se puede trabajar con cualquiera de los tres subsistemas de dos ecuaciones que se pueden escoger Para la ecuaci n 2 63 se ha eliminado la tercera ecuaci n del sistema M s adelante se estudia qu diferencia hay entre escoger un subsistema u otro X211x X43 x A X31 lx xSily X4aly 1 x521y 2 62 X51 lz X43lz X31 lz 45 X51 x X43 x a X31 lx 2 63 ean X43ly X31ly El sistema 2 63 ya es un sistema compatible determinado por lo que se puede resolver por el m todo de Cramer llegando a las soluciones 2 64 y 2 65 Se destaca la facilidad con la que se pueden agrupar los t rminos finales en los componentes de productos vectoriales para conseguir ecuaciones m s compactas X31lx X 3lx X31ly X43ly _ X43lxX31ly X311xX43ly _ x43 X X31 z 2 64 Xile X4glx X43lxX21ly X231lxX43ly X43 X X21 lz Xz21ly X43ly X311x X51lx Xzaly X3aly _ X 1lX31ly X3aleX2aly _ ia X X51 lz 2 65 X31lx X43lx X4311X311 X51lxX43ly X43 X X31 lz X51ly x43ly Se observa que las ecuaciones 2 64 y 2 65 poseen un denominador susceptible de ser nulo o cercano a cero dando errores de calculo Por ello y recurriendo al hecho de que se puede escoger que subsistema de dos ecuaciones del sistema 2 62 res
100. ificial que se aprecia en la simulaci n de tejidos con pasos grandes Volino 4 Thalmann 2000 Asimismo Volino desarrolla un algoritmo de colisiones particular para su modelo de la din mica interna basado en la aplicaci n de restricciones de posici n y velocidad sobre las part culas que van a colisionar Se ha decidido no implementar este algoritmo de colisiones pues no es independiente del modelo de la din mica interna En 2002 Bridson Fedkiw y Anderson publicaron un art culo que revolucion la simulaci n de interacciones entre tejidos y objetos r gidos Bridson Fedkiw amp Anderson 2002 Este estaba dedicado completamente a un algoritmo que se pod a aplicar sobre cualquier simulador de din mica interna de tejidos Plantearon un tratamiento h brido de dos tipos de interacciones entre objetos e Contactos Los contactos ocurr an debido a la proximidad de dos objetos al principio de un paso Estos se resolv an aplicando impulsos de repulsi n que separaban los dos objetos e Colisiones Las colisiones ocurr an durante un paso simulado y se resolv an aplicando impulsos a los objetos garantizando una velocidad relativa nula de los dos objetos en su direcci n normal pues la colisi n se considera inel stica Este algoritmo de simulaci n de tejidos con colisiones considera la simulaci n de din mica interna como una estimaci n en la que detecta y resuelve contactos y colisiones ste es el algoritmo implementado en
101. imity parameters Min id number Max id number X Display Edge Edge Proximities Edge edge proximity parameters Min id number Max id number Figura 2 54 Panel de visualizaci n de contactos 80 El panel de visualizaci n de contactos permite que el usuario pueda comprobar el funcionamiento del algoritmo de detecci n de contactos Como se explica en el apartado 2 2 3 la detecci n de contactos tiene dos fases una aproximada y una precisa Este panel permite ver el resultado de las dos fases de detecci n de contactos 1 Display Broad Proximity Detection Figura 2 55 Resultado de una detecci n aproximada de contactos aplicada a la escena ClothOnTable La detecci n aproximada de contactos se basa en la comprobaci n inteligente de solapamientos de cajas delimitadoras Esta detecci n genera una lista de parejas de entidades que es posible que est n en contacto Las parejas de posibles entidades en contacto se muestran mediante una l nea amarilla que une los centros de las dos entidades como se puede muestra en la Figura 2 55 y la Figura 2 56 Se destaca que el n mero de contactos detectados de forma aproximada reduce mucho la lista de posibles entidades en contacto HE K pa S th SE A OZ ETA AAA e Z Fa Av Y a Ai s A A PG 043 Figura 2 56 La representaci n al mbrica de la geometr a permite observar los contactos aproximados entre la tela y la mesa 81 Figura 2 57 La de
102. impulse applied to an edge edge pair to the nodes 141 Parameters Ibar Total impulse to be applied to the edges This impulse will be distributed to the nodes of the edges eePair Edge edge pair to be impulsed PositionUpdater WorldResponser getPositionUpdater const protected _positionUpdater object accessor VelocityUpdater WorldResponser getVelocityUpdater const protected _velocityUpdater object accessor WorldResponser VelocitiesMutator amp WorldResponser getVelocitiesMutator protected _velocityMutator object accessor The documentation for this class was generated from the following files src PMDO PMDO Responser WorldResponser h src PMDO PMDO Responser W orldResponser cpp 5 2 20 WorldResponser VelocitiesMutator Class Reference Nested internally used to change the mean velocity of the nodes in the scene include lt WorldResponser h gt Public Member Functions VelocitiesMutator RCShdPtr lt WorldMeanVelocities gt worldMeanVelocities Constructor of the class void addVariation const Object object unsigned int vertexId const DpoVector amp variation Function that adds a variation to the number of velotity variations to be applied to a node RCShdPtr lt WorldMeanVelocities gt applyVariations This function applies all the velocity modifications added before with addVariation Detailed Description Nested internally used to change the mean velocity of the nodes in the scene Th
103. imulaci n Antes de construir el rbol de cajas delimitadoras se debe generar la lista de elementos que debe contener La b squeda de parejas de nodos terminales que se solapan se realizar con los mismos algoritmos que en el caso de detecci n de contactos ver Diagrama 2 4 para nodos terminales de mallas diferentes y Diagrama 2 5 para nodos terminales de una misma malla El algoritmo de construcci n y detecci n de colisiones con rboles de AABB tambi n se implementa en la clase AABBTree documentada en el apartado 5 1 2 33 NO Nilamanton gt 1 aja EncontrarMajorEje lintaElamentoa Crear nodo izquierdo y derecho vaci n La componente del centro de la caja I an la direcci n aja as Inferior o igual a al GOOG de la caja dal nodo an la diracci n aja NO A adir cajafi al nodo A adir coja i al nodo irguiarde deracho iz APlementos 1 NO Aplicar el algoritmo de forma Fecuralvya a aquellos Aija que no Diagrama 2 8 Diagrama de flujo de la construcci n del nodo de un rbol de cajas delimitadoras para la detecci n aproximada de colisiones Se trabaja con elementos parejas de tri ngulos 34 Detecci n precisa de colisiones De forma similar a la detecci n precisa de contactos se realizan detecciones precisas de colisiones de tipo nodo tri ngulo y arista arista Se parte de 4 tri ngulos que corresponden al estado de 2 tri ngulos al inicio y al final del paso que se est si
104. ing to detected collisions Parameters detector Object with detected collisions Implements WorldResponser void WorldCollisionResponser addPTImpulse const PTPair ptPair protected virtual Function that adds impulses to a point triangle pair which are going to collide Parameters ptPair Point triangle pair Implements WorldResponser void WorldCollisionResponser addEEImpulse const EEPair amp eePair protected virtual Function that adds impulses to a edge edge pair which are going to collide Parameters eePair Edge edge pair Implements WorldResponser The documentation for this class was generated from the following files src PMDO PMDO Responser W orldCollisionResponser h src PMDO PMDO Responser W orldCollisionResponser cpp 5 2 14 WorldProximityDetector Class Reference Class that detects the contacts that take place in the scene during a simulated step include lt WorldProximityDetector h gt Inheritance diagram for WorldProximityDetector World ro imitybDetecto r Public Member Functions WorldProximityDetector const RCShdPtr lt WorldObjects gt worldObjects const RCShdPtr lt WorldMeanVelocities gt worldMeanVelocities 130 Constructor of the class virtual const DetectionPair calcFirstToSolve const Finds the first DetectionPair that should be solved in contact it is the nearest Detailed Description Class that detects the contacts that take place in the scene du
105. ionDetector calcFirstToSolve const virtual Finds the first DetectionPair that should be solved in collision it is the first to collide If there are no pairs it returns O Used in serial update Implements Detector The documentation for this class was generated from the following files src PMDO PMDO Detection WorldCollisionDetector h src PMDO PMDO Detection W orldCollisionDetector cpp 5 2 13 WorldCollisionResponser Class Reference Class that automatically applies all the collision impulses required in a scene include lt WorldCollisionResponser h gt 128 Inheritance diagram for WorldCollisionResponser WordResponser WordCollisionResponser Public Member Functions WorldCollisionResponser RCShdPtr lt WorldMeanVelocities gt worldMeanVelocities const WorldCollisionDetector amp worldCollisionDetector const PositionUpdater positionUpdater const VelocityUpdater velocityUpdater Constructor of the class Protected Member Functions virtual void addImpulses const Detector amp detector Function that adds impulses to the mean velocities of the objects according to detected collisions virtual void addPTImpulse const PTPair amp ptPair Function that adds impulses to a point triangle pair which are going to collide virtual void addEEImpulse const EEPair amp eePair Function that adds impulses to a edge edge pair which are going to collide Detailed Description Class that automatically ap
106. is class first adds the velocity variations and then makes their average and applies them when applyVariations 1s called Constructor amp Destructor Documentation WorldResponser VelocitiesMutator VelocitiesMutator RCShdPtr lt WorldMeanVelocities gt worldMean Velocities Constructor of the class 142 Parameters worldMeanVelocities Mean velocities of the objects in the scene that will be modified later Member Function Documentation void WorldResponser VelocitiesMutator addVariation const Object object unsigned int vertexld const DpoVector amp variation Function that adds a variation to the number of velotity variations to be applied to a node When applyVariations 1s called later all the variations added to that node will be averaged before application Parameters object Object that contains the node whose velocity will be modified vertexld Identification number of the vertex in the mesh of the object variation Velocity vector to be added as a modification RCShdPtr lt WorldMeanVelocities gt WorldResponser VelocitiesMutator applyVariations This function applies all the velocity modifications added before with addVariation Returns Modified mean velocities of all the objects in the world The documentation for this class was generated from the following files src PMDO PMDO Responser WorldResponser h src PMDO PMDO Responser W orldResponser cpp 5 2 21 WorldViewer Class Referenc
107. isi n entre dos aristas es parecida a la utilizada en la detecci n precisa de colisiones nodo tri ngulo ver la Figura 2 26 Xx a X4 son las posiciones de los nodos de las aristas al inicio del lapso de tiempo simulado x a x 4son las posiciones de los nodos de las aristas al final del lapso de tiempo simulado x a x 4 son las posiciones de los nodos de las aristas en el momento de la colisi n en caso de que la haya x es el punto de intersecci n de las aristas cuando ocurre la colisi n en caso de que la haya Tambi n se supone movimiento rectil neo de los nodos durante el lapso de tiempo simulado en este paso por lo que se calculan las velocidades de las part culas seg n la ecuaci n 2 48 Para que se determine que hay colisi n se han de cumplir dos condiciones I La primera condici n es la misma que en el caso de colisiones nodo tri ngulo Esta es que en un instante del lapso de tiempo simulado los cuatro nodos que forman parte de las aristas deben ser coplanarios II La segunda condici n es que en el momento en el que los nodos est n en el mismo plano las dos aristas se cruzan dando lugar a un punto de colisi n x A continuaci n se explica c mo se determina si se cumplen las dos condiciones La primera condici n se puede verificar de la misma forma que en el caso de detecci n de colisiones nodo tri ngulo ver la ecuaci n 2 49 y el desarrollo que le sigue Es decir se construye un polinomio
108. isiones En ella se muestran dos mallas con un estado inicial t libre de colisiones es fundamental que as sea Mediante un simulador de tejidos basado en la din mica interna de los tejidos se simula la evoluci n de la ropa hasta un estado f Este estado es una estimaci n al no tener en cuenta las colisiones y es posible que presente mallas que se solapan con otras Por ello en los apartados 2 2 3 y 2 2 4 se presentan algoritmos que permiten detectar estos contactos y colisiones y en este apartado se presenta c mo resolverlas La resoluci n se basa en la aplicaci n de impulsos c en la Figura 2 28 que separen las mallas y evite colisiones llegando a un estado final libre de colisiones d en la Figura 2 28 Se entiende por impulso a la integral de la fuerza que act a sobre un cuerpo respecto al tiempo El impulso produce una variaci n de velocidad como se muestra en la ecuaci n 2 69 Cabe destacar que como se puede observar en los l mites de la integral en cada paso simulado se toma como referencia el instante en el que se inicia el paso por lo que el final del paso se corresponde al intervalo simulado ts l F t dt F At mAv 2 69 0 Como se explica en el apartado 2 2 1 los impulsos modifican la velocidad media de las particulas en el lapso de tiempo simulado La velocidad media estimada sin tener en cuenta contactos ni colisiones se calcula a partir de la ecuaci n 2 70 Bridson Fedkiw amp Anderson 20
109. itmo descrito en Baraff amp Witkin Large Steps in Cloth Simulation 1998 El cual calcula las fuerzas que act an sobre los nodos del tejido derivando la energ a potencial y las introduce en un sistema de ecuaciones que permite calcular la velocidad y la posici n de los mismos ecuaci n 2 1 d Nal p m f D 2 1 D nde X v Vector columna de posici n y velocidad de todos los nodos del tejido Suponiendo que la malla tenga n nodos estos vectores ser n de 3n por 1 dimensi nes f Vector que contiene las fuerzas que act an sobre los nodos en funci n de la posici n de stos M Matriz de masa Es una matriz diagonal en la que el elemento m es la masa del nodo 7 del tejido La ecuaci n anterior se puede discretizar sustituyendo las derivadas por incrementos Haciendo una aproximaci n de Taylor de primer orden de la fuerza tomando como referencia las fuerzas que act an en el tiempo actual n y aislando el termino de incremento de velocidad en el paso simulado se obtiene el sistema 2 1 ste se resuelve por el m todo del Gradiente Conjugado modificado Baraff amp Witkin Large Steps in Cloth Simulation 1998 obteniendo el incremento de velocidades que se produce en el paso simulado A partir del incremento de velocidades se puede calcular la variaci n de posiciones con la ecuaci n 2 3 d d d 1 AMA hM 37 Av hM fo h vo 2 2 Ax Av Vo h 2 3 Donde h Duraci n del paso simulad
110. jects There were neither contacts not collisions so the proposal modified by contacts or not is accepted WOELO gt SelLObieCtsPrLer proposedobjects Update time _time coli Se podr an enumerar los siguientes pasos l Copia de los objetos en el estado n y simulaci n de un paso para estos objetos teniendo solo en cuenta la din mica interna se obtiene proposedObjects C lculo de las velocidades medias de todos los objetos del mundo worldMeanVelocities desde su posici n inicial worldObjects y su posici n estimada para el final del paso proposedObjects Detecci n de contactos para worldObjects seg n la posici n inicial de los objetos y modificaci n de worldMeanVelocities de acuerdo con estos contactos Aqu se aplica la resoluci n de contactos por impulsos descrita en el apartado 2 2 5 Detecci n de colisiones entre objetos partiendo de worldObjects y con las velocidades medias worldMeanVelocities Aqui hay dos posibilidades 101 a Si se detectan colisiones En caso de que el paso de colisi n actual sea lo suficientemente peque o se resuelven las colisiones de forma iterativa con la funci n solveCollisionsIteratively En caso contrario se repite el procedimiento desde el paso 1 pero con un paso la mitad de grande b Si no se detectan colisiones Se modifica proposedObjects seg n los contactos calculados en caso de que los haya y se asigna como estado al final del paso
111. jeto prefijado con vel M s adelante se explica c mo se encuentra la informaci n en este documento En el caso anterior cada objeto tiene su documento de velocidades vel_ClothOnTable y vel_table Los documentos a los que se hace referencia en body_list deben estar en la carpeta environment bodies Se hace notar al lector que no todos los objetos descritos en esta carpeta se mostrar n en la simulaci n pues s lo lo har n los que adem s est n incluidos en la lista de objetos body_list Definici n de las mallas El formato STL puede estar en ASCII o binario El simulador s lo acepta documentos STL en formato ASCII que son los que genera CATIA por defecto stos contienen una lista de tri ngulos Para cada tri ngulo muestran primero el vector normal y luego la posici n de cada v rtice El simulador identifica todos los v rtices que son iguales y los considera como uno solo pues es necesario que no haya v rtices repetidos para que la simulaci n se ejecute correctamente A continuaci n se muestra el documento que describe la malla simpleCloth solid simpleCloth facet normal 0 000000e 00 0 000000e 00 1 000000e 00 outer loop vertex 5 000000e 01 5 000000e 01 1 200000e 00 vertex 5 000000e 01 5 000000e 01 1 200000e 00 vertex 5 000000e 01 5 000000e 01 1 200000e 00 endloop endfacet facet normal 0 000000e 00 0 000000e 00 1 000000e 00 outer loop vertex 5 000000e 01 5 000000e 01 1 200000e 00 vertex 5 000000e 01 5 000000e 0
112. lConstraints cpp 5 2 9 World Class Reference Class that contains all the objects in the scene and can simulate their behaviour include lt World h gt Inheritance diagram for World Public Member Functions World Constructor World const World amp world Copy constructor of the world World amp operator const World amp world Assignment operator of the world World Destructor void stepAllowingCollisions Steps the simulation forward without taking into account contacts or collisions void step Steps the simulation forward taking into account contacts or collisions void rewind 122 Restarts the world loading again from the files BaTime Instant getTime Simulation time accessor void setTime BaTime Instant time Simulation time mutator int getEps Fps of the simulation accessor RCShdPtr lt WorldObjects gt getObjectsPtr Accessor to all the objects in the world void setObjectsPtr const RCShdPtr lt WorldObjects gt objects Accessor to all the objects in the world void setSavelterationMeshes bool savelterationMeshes Method that allows the caller to save the iterationMeshes or not Friends class WorldObjects Classes class Parameters Class that contains the parameter of the world loaded from a file class WorldStepStrategy A stepper that takes into account collisions Detailed Description Class that contains all the objects in the scene and can simulate th
113. la que se utiliza para mostrar AABB contactos y colisiones ver el apartado 2 3 1 o stlViewer Aqu se halla el c digo del programa auxiliar st Viewer ste permite visualizar de forma sencilla un n mero elevado de mallas para m s informaci n consulte la p gina 87 Descripci n general del c digo A continuaci n se describe el flujo del programa durante la simulaci n Se entra en detalle en el c digo y se da una gu a que junto a la documentaci n adjunta en los Anexos y el CD permitir a un desarrollador utilizar el simulador como base para otros proyectos Se supone que el lector tiene conocimientos sobre la programaci n orientada a objetos en C Construcci n de los objetos del simulador La funci n principal main se encarga de construir el visualizador del mundo world Viewer se llama mundo al conjunto de todos los objetos En src PMDO Viewer main cpp est la funci n main int main QApplication app WorldViewer worldViewer 0 worldViewer return 0 ine Argey char 2 aroy argo aby y WorldViewer es una clase que hereda de la clase QObject de Qt y se encarga de construir todos los objetos necesarios para la simulaci n El constructor de WorldViewer en WorldViewer cpp crea el mundo world la interfaz de visualizaci n de la escena ExplorerWidget el panel de control ControllerWidget e inicia el bucle principal 98 WorldViewer WorldViewer QObject parent const c
114. la de dicho objeto Si este es un objeto plano deformable tendr una densidad de 1 kg m y si es un objeto r gido tendr una masa infinita Grosor S lo las mallas de objetos deformables planos tienen un grosor pues representan la fibra neutra para m s informaci n consulte el apartado 2 2 2 Por ello el grosor para 94 objetos r gidos deber a ser nulo En el caso mostrado m s arriba el grosor es de 3 mm por lo que se trata de un objeto plano deformable dpo e Color difuso Este par metro indica de qu color en formato RGB se mostrar el objeto en el simulador En el caso mostrado m s arriba ste es de color azul Definici n de las restricciones de velocidad Las restricciones de velocidad permiten al usuario manipular los objetos de la escena Por ejemplo aplicando una restricci n de velocidad O O 0 a los nodos de las dos esquinas de un tejido con malla cuadrada se obtiene como resultado la escena HangingCloth2 en el que un trapo cuelga de sus dos esquinas ver la Figura 2 69 Estas restricciones se definen para cada objeto sea s lido o deformable en su documento con prefijo vel por ejemplo vel_HangingCloth2 Este documento para un objeto deformable debe tener un formato parecido al siguiente Time 0 Number of constraint vectors 1 VertexId 0 Vector 0 0 0 Time 1 Number of constraint vectors 1 Vertexld 0 Vector 0 0 0 1 Time 2 Number of constraint vectors 0 Time 2 5 Number of constrai
115. lator en su estado actual utiliza unos par metros concretos que el usuario no puede cambiar Se puede ampliar el programa a adiendo estos par metros a la lista de par metros de los objetos planos deformables Despu s se deber a modificar el constructor de la clase DeformablePlanarObject para que cargue los par metros del archivo Por ltimo hay dos funcionalidades descritas en Bridson Fedkiw amp Anderson 2002 que no se han implementado por un tema de prioridad y restricci n de tiempo o No se han implementado la resoluci n de colisiones por zonas r gidas de impacto Este algoritmo se utiliza cuando el m todo de resoluci n de colisiones est ndar no ha conseguido resolver todas las colisiones en un cierto n mero de iteraciones En tal caso se define una zona de impacto que se tratar como si fuese un objeto r gido y se resuelve la colisi n para ese objeto r gido En caso de que se quiera desarrollar este m todo de resoluci n de colisiones se recomienda empezar por el m todo WorldStepStrategy colStep explicado en el apartado 2 3 2 Pues ser en ste donde al cabo de unas iteraciones se llamar al m todo de resoluci n por zonas r gidas de impacto o Tampoco se han implementado las fricciones pues no han sido una prioridad por dos razones La primera es porqu las mallas que se utilizan son lo suficientemente bastas como para que para la mayor a de simulaciones la fricci n pasase desapercibida La seg
116. le con las condiciones en 2 107 e Se comprueba que el sumatorio de los impulsos distribuidos equivale a los dos impulsos resultantes ver las ecuaciones en 2 110 2 k 1 a a f k 1 4 y Ix 1 b b in k 3 2 110 I e Las sumas de los momentos debidos a las fuerzas derivadas de los momentos aplicadas en los nodos respecto al punto de aplicaci n de los impulsos resultantes son nulas Estas comprobaciones se realizan en 2 111 2 5 ma Y fog xp x14 DAL D A x5 xf x a _ k 1 Li At At 1 a x axy xf x Ui xf xf x Ui r a a ar Al QA Ie _ x xf x 4 A x xf x IA gt Mui gt DA A A A A A A A At At k 3 k 3 _ C b x bx xf x7 _ GF x x Ga _ E At 7 At o 68 Actualizaci n de velocidades Actualizaci n de Estimaci n estado n 1 Modificaci n de posiciones f velocidades Diagrama 2 14 La actualizaci n de velocidades se ejecuta despu s de la modificaci n de posiciones para asegurar que las velocidades son congruentes Puesto que se han modificado las posiciones de los nodos para que no se produzcan colisiones se deben actualizar las velocidades de los nodos para que sean congruentes con las modificaciones realizadas Si esto no se hiciese cuando un trapo en ca da libre chocase con una mesa se evitar a la colisi n pero los nodos retendr an la velocidad de ca da libre e intentar an conti
117. lies all the contact impulses required in a scene This class works pretty much like a function as the constructor does everything and no other method should be called Constructor amp Destructor Documentation WorldProximityResponser WorldProximityResponser const RCShdPtr lt WorldMeanVelocities gt worldMeanVelocities const WorldProximityDetector amp worldProximityDetector PositionUpdater positionUpdater VelocityUpdater velocityUpdater Constructor of the class This constructor applies contac impulses to worldMeanVelocities according to the contacts detected in worldContactDetector Parameters worldMeanVelocities Proposed mean velocities of every object in the scene These will be modified worldProximityDetector WorldProximityDetector object with information about detected contacts positionUpdater Method of applying impulses PARALLEL update recommended faster which makes an average of the impulses applied to every node or SERIAL update much slower velocityUpdater Method of updating velocities IMPLICIT update recommended stable which updates resolving an implicit equation or CONST_ACCELERATION update unstable which rsolves explicitly supossing a constant acceleration during the step Member Function Documentation void WorldProximityResponser addlmpulses const Detector amp detector protected virtual Function that adds impulses to the mean velocities of the objects according to detected contact
118. lisiones s lo sirve para interacciones en las que interviene por lo menos un objeto deformable Por ello el simulador dpoSimulator supone que todos los objetos r gidos tienen una masa infinita no vi ndose afectados por la interacci n con otros objetos como se muestra en la Figura 2 2 Figura 2 2 En la escena ClothOnTable la mesa es un objeto r gido por lo que ni se mueve ni se deforma al interaccionar con el tejido 2 2 3 Detecci n de contactos Seg n Bridson Fedkiw amp Anderson 2002 se produce un contacto cuando dos entidades est n a una distancia normal inferior a una distancia de referencia determinada y adem s se cumplen otra serie de requisitos geom tricos detallados en las secciones que siguen Esta pareja de entidades puede ser del tipo nodo tri ngulo o arista arista pues el algoritmo trabaja con ambos tipos de contacto La distancia de referencia depende del tipo de objeto al que pertenecen las dos entidades F sicamente la distancia de referencia se corresponde con aquella distancia entre los dos puntos m s cercanos de las dos entidades por debajo de la cual empiezan a producirse fuerzas repulsivas debido a la compresi n del tejido Esto se puede traducir a una distancia m nima llamada distancia de referencia por debajo de la cual se considera que hay contacto En la Figura 2 3 se muestra un caso en el que un nodo i est en contacto con un tri ngulo j debido a que se encuentra a una distancia inferio
119. lmente cabe destacar Doxygen como herramienta utilizada para documentar el c digo Siguiendo un formato concreto de documentaci n Doxygen permite compilarlo en una documentaci n interactiva en formato html CISST Organizaci n de los directorios Todos los archivos exceptuando las bibliotecas listadas en el apartado 2 3 1 necesarios para ejecutar el simulador dpoSimulator y sus programas auxiliares se encuentran en el directorio ra z pmdo del programa Cuando el programa se compila los ejecutables aparecen en el directorio ra z ste se encuentra en el CD adjunto y est tiene las siguientes carpetas environment Esta carpeta contiene la informaci n de la escena que dpoSimulator cargar Para m s informaci n consulte el apartado 2 3 1 environments Esta carpeta contiene diferentes carpetas con escenas predeterminadas mostradas en la la Figura 2 71 Para cargar una escena predeterminada simplemente se ha de reemplazar la carpeta environment por la carpeta de la escena y cambiarle a esta el nombre a environment frames En esta carpeta dpoSimulator guarda las im genes o frame de todos los pasos de la simulaci n Con estas im genes despu s se puede crear un video apartado 2 3 1 html Doxygen guarda en esta carpeta la documentaci n del programa al compilarla La p gina principal de documentaci n es index html iterationMeshes DpoSimulator guarda aqu las mallas que se producen en cada iteraci n de la resoluci
120. longitud e lt xcm gt lt ycm gt lt zcm gt Posici n del centro de masas de la malla rectangular Un ejemplo de llamada al programa es el siguiente LabricCreator environment bodies dpo clothDoe cloth 1 1 15 15 0 4 Oe des Llamando al programa con estos par metros desde la carpeta ra z del programa genera un documento llamado dpo_clothDoc en el directorio environment bodies que contiene la informaci n en formato STL de un objeto llamado cloth ste tiene una malla cuadrada de 1x1 m de 15 divisiones en los dos sentidos y el centro de gravedad en la posici n 0 4 0 3 1 3 Aunque til sobretodo en los primeros estadios del desarrollo de dpoSimulator la capacidad de fabricCreator para crear geometr a est muy limitada Por esto a continuaci n se explica como importar mallas m s complejas desde CATIA EM 7 Figura 2 72 DpoSimulator permite la importaci n de cualquier malla triangular en formato STL Generaci n e importaci n de mallas desde CATIA Los archivos en formato STL que contienen informaci n sobre mallas que componen la escena se pueden generar en CATIA V5 siguiendo los pasos que se describen a continuaci n 91 1 El primer paso consiste en generar la geometr a en CATIA V5 Esta puede ser de dos tipos a Objetos s lidos Los objetos s lidos se pueden crear por ejemplo en el workbench de CATIA V5 Part Design Normalmente los objetos r gidos que forman parte de una escena
121. los tejidos basado en redes de muelles Es decir tras mallar el tejido los nodos se un an con tres tipos de muelles de tracci n que un an nodos adyacentes de cizalla que un an nodos en diagonal y de flex on que un an dos nodos salt ndose el del medio Provot planteaba el equilibrio de fuerzas para todos los nodos y simulaba mediante una integraci n expl cita Puesto que las constantes de tracci n de la ropa son muy elevadas debido a que la ropa no se puede estirar mucho sin desgarrarla la integraci n expl cita requer a pasos muy peque os Adem s la concentraci n de tensiones en algunos nodos por ejemplo en el caso de un trapo colgando de dos esquinas provocaba una gran deformaci n el stica que se ve a muy artificial Provot solucion esta hiperelasticidad limitando la deformaci n m xima de los muelles Esto tiene su fundamento f sico pues aproxima al comportamiento del material en la zona pl stica El modelo de Provot frente a sus carencias es uno de los m s utilizados debido a su sencillez Baraff y Witkin plantearon un algoritmo de simulaci n de la din mica interna de los tejidos bas ndose en una integraci n impl cita de las ecuaciones de balance fuerzas Baraff amp Witkin 1998 La integraci n impl cita permite avanzar la simulaci n a grandes pasos con incrementos de tiempos grandes sin que se vea afectada la estabilidad del sistema a diferencia de la integraci n expl cita de Provot Esto se debe
122. lothOnTable HangingCloth2 y ShirtOnTable Evidentemente el usuario puede crear sus propias escenas En este apartado y los que siguen se explica c mo hacerlo 88 Configuracion de los parametros de la escena En el directorio environment world_pardmeters se encuentra el fichero world_parameters Abriendo este con un editor de texto se muestra un fichero de configuraci n de los par metros de la escena parecido al siguiente World parameters Please only change the values of the world parameters Do not change the order and do not delete a parameter Gravity m s 2 9 81 Framerate frames second 100 End of file En este documento el usuario puede cambiar la gravedad y el n mero de estados intermedios que se calculan y se muestran para cada segundo real en este caso el simulador calcular a y mostrar a estados en intervalos de 0 01 segundos Lista de objetos de la escena Los objetos y sus propiedades se pueden a adir a la escena en el documento body_list del directorio environment bodies parecido al que se muestra a continuaci n Here the user can add the files to be taken into account when loading bodies The files can start with dpo 1f they contain information about a deformable planar object rig 1f they contain information about a rigid object or vel if they contain information about velocity constraints which affect objects NOTE vel files must be located after the files that contain the dpo or rig
123. lses const Detector amp detector protected pure virtual Pure virtual function that adds impulses to the mean velocities of the objects according to detected contacts or collisions Parameters detector Object with detected collisions Implemented in WorldCollisionResponser and WorldProximityResponser virtual void WorldResponser addPTImpulse const PTPair 8 ptPair protected pure virtual Pure virtual function that adds impulses to a point triangle pair which are in contact or going to collide Parameters ptPair Point triangle pair Implemented in WorldCollisionResponser and WorldProximityResponser virtual void WorldResponser addEElmpulse const EEPair 8 eePair protected pure virtual Pure virtual function that adds impulses to a edge edge pair which are in contact or going to collide Parameters eePair Edge edge pair Implemented in WorldCollisionResponser and WorldProximityResponser void WorldResponser distributePTImpulse const float Ibar const PTPair ptPair protected Function that distributes an impulse applied to a point triangle pair to the nodes Parameters Ibar Total impulse to be applied to the point and to a specific point of the triangle This impulse will be distributed to the nodes of the triangle ptPair Point triangle pair to be impulsed void WorldResponser distributeEEImpulse const float Ibar const EEPair amp eePair protected Function that distributes an
124. ma escoja que restricciones de velocidad debe aplicar Pues el objetivo del proyecto de investigaci n para el que se ha desarrollado dpoSimulator es crear un programa que determine c mo se debe manipular una pieza de ropa determinada para que pase de una posici n a otra Aun y as se ha desarrollado un programa en Matlab matlab TrajectoryGenerator m que genera el documento de restricci n de velocidades para el caso concreto del objeto ShirtOnTable ste genera una trayectoria compleja con muchos puntos asegurando que no haya sacudidas Si se desea se puede tomar como punto de partida para desarrollar una herramienta de manipulaci n de objetos m s gen rica y completa Un buen comienzo ser a la programaci n de una funci n que generase trayectorias rectil neas con descansos en los extremos para que el perfil de velocidades sea continuo y no haya sacudidas 2 3 2 Manual de desarrollo Principales herramientas de programaci n utilizadas Tanto el simulador DpoSimulator como los programas auxiliares fabricCreator stlViewer y meshMover se han programado en C El lenguaje de programaci n C es una ampliaci n de C que permite la programaci n orientada a objetos Ceballos 2007 Este tipo de programaci n se basa en la creaci n de objetos de diferentes clases cada uno con sus propiedades y sus funciones o m todos que interact an los unos con los otros Esto permite organizar de forma sencilla programas que de otra forma ser a
125. mal para ponerla en funci n de las posiciones relativas finales ecuaci n 2 93 Sustituyendo la ecuaci n 2 92 en la 2 93 se obtiene la ecuaci n final de la diferencia de velocidades 2 94 y t1 2 _ gnt1 2 _ XN XN N XN xN SNe 2 93 N N At At At m 1 2 _ n 1 2 xN xn 0 1d ca XN N y At At At 2 94 n 1 2 n 1 2 _ 0 1d n 1 2 wO C S Para que se cumplan las dos condiciones explicadas anteriormente la diferencia de velocidades se calcular como la m nima de las ecuaciones 2 91 y 2 94 dando lugar a la ecuaci n 2 95 1 1 01d pete gut min atka ae q 2 2 95 c1 c2 Esta diferencia de velocidades calculada se puede sustituir en las ecuaciones de impulso resultante para obtener los impulsos resultantes debidos a contactos En el caso de las colisiones interesaba que la velocidad media modificada fuera nula La nica diferencia para el caso de contactos es que ahora interesa que se cumpla la ecuaci n 2 95 Sin embargo se observa que dicha ecuaci n tiene valores a n por determinar que depender n de si lo que est en contacto es una pareja nodo tri ngulo o una pareja de aristas a C lculo de impulsos resultantes debidos al contacto de un nodo y un tri ngulo Al igual que en el caso de las colisiones la primera part cula en contacto se corresponde al nodo y la segunda al punto del tri ngulo m s cercana al nodo dato determinado y guardado en la fase de detecci n
126. ml Cu n Rochin S Andrade Cetto J amp Torras C Action Selection for Robotic Manipulation of Deformable Planar Objects H Press W A Teukolsky S T Vetterling W amp P Flannery B 1995 Numerical Recipes in C Segunda edicion ed Cambridge Estados Unidos Cambridge University Press Lowe D G 2004 Distinctive Image Features from Scale Invariant Keypoints International Journal of Computer Vision Pritchard D 2003 04 25 Retrieved 08 21 2010 from freecloth project http davidpritchard org freecloth Pritchard D 2009 Implementing Barraf amp Witkin s Cloth Simulation Retrieved 08 21 2010 from davidpritchard org davidpritchard org freecloth docs report pdf Provot X 2004 Collision and self collision handling in cloth model dedicated to design garments IEEE Transactions on Visualization and Computer Graphics 10 649 663 Provot X 1995 Deformation Constraints in a Mass Spring Model to Describe Rigid Cloth Behavior Proceedings in Graphics Interface 1995 147 154 The Inventor Mentor Programming ObjectOriented 3D Graphics with Open InventorTM Release Ze n d Retrieved 08 29 2010 from webdocs cs ualberta ca graphics books mentor pdf Thrun S Burgard W amp Fox D 2006 Planning and Control In S Thrun W Burgard amp D Fox Probabilistic Robotics pp 485 604 London England The MIT Press Trolltech n d Retrieved 08 21 2010 from Qt Reference Do
127. mulando Por ello se realizan las siguientes comprobaciones e 6 comprobaciones de colisi n nodo tri ngulo Una por cada nodo o v rtice de los dos tri ngulos que se desplazan durante el lapso de tiempo simulado e 9 comprobaciones de colisi n arista arista Una por cada pareja de aristas de los dos tri ngulos diferentes Colisi n nodo tri ngulo Colisi n arista arista Figura 2 18 Se diferencian dos tipos de colisi n colisiones nodo tri ngulo y colisiones arista arista Detecci n de colisiones Nodo Tri ngulo Figura 2 19 Nomenclatura utilizada para determinaci n de colisi n nodo tri ngulo 35 En la Figura 2 19 se muestra parte de la nomenclatura que se sigue en la determinaci n de colisiones nodo tri ngulo Se parte de los siguientes datos e X4 Xz y X3 Vectores de posici n de los tres v rtices del tri ngulo al inicio del paso que se est simulando e X4 Vector de posici n del nodo al inicio del paso que se est simulando e X1 X3 y X3 Vectores de posici n de los tres v rtices del tri ngulo al final del paso que se est simulando Estas posiciones son estimadas pudiendo dar lugar a colisiones e x4 Vector de posici n del nodo al final del paso que se est simulando Esta posici n es estimada pudiendo dar lugar a colisiones Se dice que el nodo y el tri ngulo colisionan en el paso simulado si cumplen las siguientes condiciones I En el lapso de tiempo simulado y suponiendo que los
128. muy peque o Por ello encontrar un m todo de b squeda de ra ces m s eficiente no acelerar a significativamente el tiempo de c lculo Para aplicar el m todo de la secante se ha adaptado la funci n rtsec del Numerical Recipes in C H Press A Teukolsky T Vetterling amp P Flannery 1995 para que resuelva polinomios de tercer grado A continuaci n se presenta la funci n modificada g3PolRtsec que acepta como par metro adicional un puntero poly a una lista con los 4 coeficientes del polinomio bool Worlddollistonbetector 3POLRESec Const float Const POLA LOGSE 4 fume I Cons Algar Gousty Const E LOaE Jy Onset float xl const float x2 const float xacc float amp rootSolution aoe Pale ELA EL yx pie Wa Dy occas ek cp FLA Ie COL ys E T FLUNG y lt poly z2 J7 iE X ELE A 0 1 abs El J lt tabs CE ELS XL gt xl x2 swap f1 fl f f swap else xl x1 rts x2Z FOR Jl JSF MAXIT ee dx xl rts Ef f fr J xl rto fl f rtst dx fa Pum E POLT GS Jy if fabs dx lt xacc f 0 0 FOOtooOlutton tts gt return true convergence stdiscoutes mPolynomial coetticie tes passed to riesec lt lt pOLyisl lt lt lt lt polyi2i lt lt lt lt POLVELTA An eE poly IU ne nrerror Maximum number of iterations exceeded in resec J3 return false 40 else return false En el Gr fico 2 2 se presenta
129. n formato STL Configuraci n de los par metros de los objetos Hay varios par metros de los objetos tanto los r gidos como los deformables que se pueden modificar en los documentos prefijados con par que se encuentran en el directorio environment bodies Estos documentos son parecidos al mostrado a continuaci n The user can enter here the parameters of each body The parameters should not be reordered or deleted Rigid and deformable objects share some parameters Unecessary parameters will not be read Density kg m 2 only used for DPO 1 Mass kg only used for Rigid Objects O Thickness m for Rigid Objects this should be zero 0 003 Diffuse color Tab 0 U 0 9 El usuario puede modificar tres par metros fundamentales para el objeto al que se refiere el documento Densidad o masa Para objetos deformables se definir la densidad y para objetos r gidos se definir la masa En cualquier caso los dos par metros deben aparecer simplemente ocurrir que seg n el tipo de objeto uno de los par metros ser omitido por dpoSimulator En el estado actual del simulador se supone que los objetos r gidos son infinitamente pesados para m s informaci n consulte el apartado 2 2 2 lo que se representa con una masa nula No se puede saber a priori a qu tipo de objeto se refiere el documento de par metros mostrado m s arriba DpoSimulator determinar el tipo de objeto en funci n del prefijo del documento de la mal
130. n muy complejos En los Anexos se presenta parte de la documentaci n de las clases del programa y en este apartado se describe en breve el flujo principal del programa y se dan recomendaciones sobre c mo utilizarlo como base para desarrollar nuevas aplicaciones respectivamente El programa se ha desarrollado en el entorno de programaci n KDevelop 3 5 3 y se recomienda que cualquier ampliaci n se desarrolle en el mismo entorno Pues el archivo de proyecto pmdo project que se encuentra el en directorio ra z del programa est configurado para compilarlo y enlazarlo de forma correcta Se utiliza la librer a Qt versi n 3 3 para programar la interfaz gr fica del panel de control sta facilita la creaci n cuadros de di logo botones etiquetas y cuadros de texto de forma parecida a Visual Basic Aunque la apariencia f sica de la interfaz se puede crear de forma gr fica con el programa QtDesigner se ha preferido programarla a mano directamente para tener m s control Esta librer a tambi n facilita la programaci n por eventos con su sistema de slots Trolltech BSD Daemon Control Type v dgets Control Value radio button y Choice line edt slider lt gt oda lol lw 2 line edt i i Rox Roty M Dolly Figura 2 77 Izquierda Interfaz de usuario programada con la librer a Qt3 3 Derecha Visualizador tridimensional de la librer a Coin3d Open Inventor 96 Fina
131. nce eee yest nee consenet weaiawscoamene beet anaea con oenteeea 4 2 T BTO PE O ar A A 4 22 PVSOPMMO AMPICMCMLAGO sisne a coin dad 5 221 Descripci n general del algoritmo de simulaci n con contactos y colisiones 5 22 2 hule A A 9 223 Detecci n CEs CONLAC OS eren 11 2 2 4 Detecci n de COIS TONG aran 31 22 5 Resoluci n de contactos y colisiones sss seesisscuorssnicarersedonedadsicaecshaeneeaeshaceeusseiiveteds 4 2 3 Descripci n del simulador desarrollado cccccoonononooooononccnnnnonnnnnnnnnnnnonononanannnnnnnnos 70 21 Mantial de IS W ACI siii 70 23 2 Manta de desarro Nonce an 95 E 0 016 OE a E N 102 Jl RECOM nda CIONES era uaaicade 103 Ae EM WO Gell eaa A O A N 105 A deta hide Aner eedlcuctetcn duce sd tanta Ana dlcantitan uae Ates 107 5 1 Sorts xs kk Clb nal anotan cial 107 52 Documentaci n delas Ciise Sussanne a A A 107 521 AABBNode Class Refer NCE ii TAR 107 522 AABBIT e Clas Rer on nnna 109 523 DeformablePlanarObject Class Reference oooooooooonnnccccncnnnnnnnncnnnnnnonnnananonnnnnoos 111 5 2 4 Meany elocities Class Renenen Ce arniarna AR A 114 5 23 RisidObject Class Ih Chere 6 eyssia seiten N 116 5 2 6 Sthivieshiboader Class Referencias Radiant 118 521 Stlivieshioaver Class Refor nte sisirin aa T e paa 119 5 2 8 VelConstraintsList Class R ferente screenees i 120 529 World Chiss SA a 121 5210 Word Parameters Class Retreat 123 5 2 11 World WorldStepStrategy Class Reference cccccccccccccc
132. ncontrar una cadena de acciones ptima Thrun Burgard amp Fox 2006 La finalizaci n exitosa de este proyecto significar un avance en la rob tica debido a la poca experiencia que se tiene actualmente en la manipulaci n de objetos deformables Recientemente la Universidad de Berkley ha desarrollado un robot que dobla trapos rectangulares de diferentes medidas y colores partiendo de cualquier posici n inicial como se muestra en la Figura 1 1 Frente a este robot el sistema presentado en el Diagrama 1 1 tendr la ventaja de poder llegar a cualquier estado futuro siempre y cuando sea posible y mediante una cadena de acciones planeada por el robot Figura 1 1 El robot PR2 de la Universidad de Berkley puede doblar toallas de diferentes tama os y colores partiendo de una posici n inicial desconocida 1 2 Alcance del proyecto Obviamente el desarrollo de cada uno de los bloques mostrados en el Diagrama 1 1 promete requerir una elevada cantidad de tiempo Por restricci n de tiempo el alcance de este proyecto es el de desarrollar el simulador resaltado en dicho diagrama Es necesario el desarrollo de un simulador personalizado para que se adapte a las necesidades del proyecto de investigaci n Inicialmente se prob de adaptar el c digo de simulaci n de tejidos del programa de dise o gr fico de c digo libre Blender Sin embargo tal intento fue infructuoso debido a la falta de documentaci n combinada con la rigidez y com
133. nen en la simulaci n En la Figura 2 1 se muestran las entidades geom tricas siendo stas l Nodo El nodo es la unidad m s peque a de la malla Cada nodo de un objeto tiene asociado informaci n sobre su posici n su velocidad y su aceleraci n que es resultado de las fuerzas que act an sobre l Por ello cualquier c lculo que requiera informaci n de posiciones y velocidades la obtendr de los nodos Y cualquier transformaci n que se realice sobre el objeto tambi n se realizar sobre los nodos Por ejemplo los impulsos debidos a contactos y colisiones se calculan como resultantes sobre aristas y tri ngulos pero se deben repartir a los nodos para m s informaci n consulte el apartado 2 2 5 El nodo una de las entidades que puede entrar en contacto o colisionar con otras entidades del mismo u otro objeto Arista La arista es una entidad ficticia que est formada por dos nodos Se crea esta entidad por dos razones e Para representar gr ficamente la malla e Para detectar contactos y colisiones entre aristas apartado 2 2 3 y 2 2 4 La posici n de un punto que pertenece a una arista se puede calcular en funci n de las posiciones de los v rtices de las aristas y de un par metro a parecido a las coordenadas baric ntricas ver la ecuaci n 2 6 Este par metro deber estar entre O y 1 La velocidad del punto en funci n de las velocidades de los v rtices de la arista se puede calcular derivando la ecuaci n de l
134. nnooonnoonncnncnnncnnnnnnnnnons 125 5 2 12 WorldCollisionDetector Class Reference oooocccccnncnnnnnnnnnnnnnnnnnnnnnnnnnncnnninonoss 126 5 2 13 5 2 14 ZO 5 2 16 32 17 5 2 18 32 19 5 2 20 2 21 222 WorldCollisionResponser Class Reference ooooooonnnnncncccnonnnnnnnnnonononnononanncnnnnnoss 127 WorldProximityDetector Class Reference ooooooonnnnnncccononononnncnonononononananannnnnnos 129 WorldMeanVelocities Class Reference ooooccccccncnnnnnnnnnnnnnnnnnnncnnnnnnncnnninonoss 130 WorldObjccts Class Reeri Osanna 133 WorldProximityDetector Class Reference ooooooonnnnnnnccnnnnnnnnnnnonononnononnanonannnoos 135 WorldProximityResponser Class Reference ooooooonnnnncccocononononononcononnonnanannnnnoos 136 WorldResponser Class Reference nia il o 138 WorldResponser VelocitiesMutator Class Reference ccccccccoonooooooooconcccnnnnoss 141 World Viewer Class Reter nco is 142 WorldViewer TimeCallback Class Reference coocoococcncnocnocnccncnncnocnconanocnocnos 145 1 Introducci n 1 1 Objetivo del proyecto Este proyecto tiene como objetivo el desarrollo de un simulador de objetos planos deformables tejidos para un proyecto de investigaci n sobre la manipulaci n autom tica de objetos deformables Proyecto PAU DPI 2008 06022 ste a su vez forma parte del proyecto integrado europeo Perception Action and Cognition through learning of Object action Complexes PACO PLUS fundado por la Comisi n Eu
135. no realiza ninguna simulaci n stlViewer es un simple visualizador de mallas en formato stl Resulta muy til representar todas las mallas guardadas por dpoSimulator en un paso determinado con stlViewer Para ello se debe ejecutar la siguiente instrucci n desde una terminal en el directorio ra z stlViewer iterationMeshes mesh La Figura 2 70 muestra las mallas guardadas en un paso de la simulaci n de la escena HangingCloth2 Hay dos mallas casi perfectamente superpuestas una ocre y la otra verde Son 87 iguales en todas partes excepto en la zona inferior donde ocurre la colisi n En esta zona inferior se observa que predomina el color verde pues la malla verde oculta la ocre en esta zona La malla verde se corresponde a una iteraci n anterior a la ocre Por eso la malla verde presenta una colisi n y la ocre no pues es la iteraci n final en la que la colisi n ya se ha resuelto Figura 2 70 st Viewer permite ver todas las mallas guardadas por dpoSimulator Construcci n de una escena El simulador busca la descripci n de la escena a simular en la carpeta environment que se encuentra en el directorio ra z del programa En el CD adjunto a este documento se hallan varias carpetas con escenas diferentes Cambiando el nombre de una de estas carpetas a environment el programa cargar la escena indicada Figura 2 71 De arriba a abajo e izquierda a derecha se muestran los estados iniciales de las escenas ClothOnBottle C
136. node of this node In case this node is root parent should be 0 elementList Elements which the AABBNode s BBox must bound depth Depth of the node in the tree The root is depth 0 minElements Minimum number of elements AABBContainable that nodes this one and its descendants can have AABBNode AABBNode Detstructor Member Function Documentation unsigned int AABBNode getDepth const _depth accessor const BBox amp AABBNode getBBox const _box accessor 109 Friends And Related Function Documentation friend class TreeBuilder friend friend class AABBTree friend The documentation for this class was generated from the following files sre PMDO PMDO AABB AABBNOode h src PMDO PMDO AABB AABBNode cpp src PMDO PMDO AABB AABBNode templates h 5 2 2 AABBTree Class Reference Class that builds and contains that information of an AABB tree include lt AABBTree h gt Inheritance diagram for AABBTree S ABET ree Plain 4BbT ree Collision S466 T ree Pro imity 2BBTree Public Member Functions e AABBTree const std vector lt AABBContainable gt amp elementList unsigned int minFaces 1 Constructor of the class e AABBTree const std vector lt boost shared_ptr lt AABBContainable gt gt amp elementList unsigned int minFaces 1 Constructor of the class e void collectBBoxes std vector lt const BBox gt amp bBoxCollection const Class to collect all the bounding boxes of the
137. nodos siguen un movimiento rectil neo hay un momento en el que los cuatro nodos x a X 4 son coplanarios II Enel momento en el que los cuatro nodos son coplanarios el nodo x 4 se encuentra dentro del tri ngulo x a X3 A continuaci n se detalla el algoritmo utilizado para determinar si se cumplen estas dos condiciones Primero se calculan las velocidades suponiendo que los nodos se mueven rectil neamente a partir de la ecuaci n 2 48 en la que t es el lapso de tiempo simulado en el paso calculado Vv i 1 2 3 4 2 48 Si los nodos llegan a ser coplanarios en alg n momento se cumple que en ese momento los 3 vectores que van desde el nodo 1 al resto de los nodos son coplanarios Por ello se debe cumplir la ecuaci n 2 49 Esta ecuaci n se puede poner en funci n de las posiciones iniciales las velocidades calculadas y el tiempo en el que se produce la colisi n en caso de que lo haga dando lugar a la ecuaci n 2 50 Bridson Fedkiw amp Anderson 2002 X54 X X31 X44 0 2 49 p3 t X21 V21 X X31 V31 X41 tV41 2 50 P3 te 0 La ecuaci n 2 50 tiene como inc gnita el tiempo t en el que se produce la colisi n Para resolver la ecuaci n se debe desarrollar la ecuaci n Por brevedad no se presenta la ecuaci n completamente desarrollada Sin embargo se indica que es un polinomio de tercer grado con la forma mostrada en la ecuaci n 2 51 At Bt Cte D 0 2 51 36
138. nt vectors 2 Vertexld 0 Vector 0 1 0 1 0 VertexId 10 Vector 0 1 0 1 0 Este ejemplo de documento vel representa las siguientes restricciones de velocidad e De0al segundos el nodo 0 estar quieto e Dela2segundos el nodo tendr una velocidad de 0 1 en la direcci n z y una velocidad nula en las otras direcciones e De2a2 5 segundos no habr ninguna restricci n de velocidad e A partir de 2 5 segundos tanto el nodo 0 como el 10 tendr n una velocidad de 0 1 0 1 0 Evidentemente el usuario podr a ir a adiendo m s l neas de forma manual para a adir m s restricciones de velocidad Los documentos vel de objetos r gidos tienen el mismo formato Pero con este tipo de objetos se debe manipular nicamente un nodo para asegurar que se mantiene r gido Por ahora el simulador no contempla la rotaci n de objetos r gidos En las escenas en las que aparece el objeto mesa table en el CD adjunto dicho objeto no se mueve Por ello su documento de restricci n de velocidades vel_table es el siguiente Time 0 Number of constraint vectors 1 Vertexld 0 Vector 0 0 O Se pueden modificar los documentos de restricciones de velocidades manualmente para obtener trayectorias sencillas No se ha desarrollado ninguna herramienta gen rica que permita crear trayectorias m s complejas y que asegure que no se produzcan sacudidas pues como se explica 95 en la Introducci n el objetivo a largo plazo es que el progra
139. nuamente atravesar la mesa La modificaci n de posiciones proporciona un conjunto de posiciones x que probablemente est libre de interferencias entre objetos El m todo de actualizaci n de velocidades explicado en este apartado es una variaci n del explicado en Bridson Fedkiw amp Anderson 2002 para que sea m s preciso Se parte de la definici n de aceleraci n como derivada de la velocidad en continuo y se aproxima a la variaci n de velocidades a lo largo del paso partido por la duraci n del mismo ecuaci n 2 112 At A SR 2 112 2 Ot At De la ecuaci n anterior se quiere calcular la velocidad en el tiempo n 1 Para ello primero se tiene que expresar la aceleraci n tambi n de forma discreta La aceleraci n de los nodos no es m s que la fuerza exterior que act a sobre cada uno de ellos dividida entre su masa Por ello la aceleraci n depende de los mismos factores que las que act an sobre los nodos de la posici n y de la velocidad Para mayor estabilidad se resuelve la ecuaci n impl cita mostrada en 2 113 sta es impl cita porque se calcula la aceleraci n en el estado n 1 un estado que todav a no se ha determinado pues depende justamente de la velocidad que se desea calcular Los vectores de posici n velocidad y aceleraci n son vectores columna de 3m dimensiones donde m es el n mero de nodos del objeto vti y 4 Ata xntt yt 2 113 Como se ha comentado se quiere resolver las velocidade
140. o df df i a ae aa Jacobianos de la fuerza respecto a la velocidad y la posici n al inicio del paso simulado Vo fp Velocidad de los nodos y fuerzas que act an sobre ellos al inicio del paso simulado Ax Av Variaci n de posici n y de velocidad que sufren los nodos durante el paso simulado Se observa en la ecuaci n 2 3 que se ha utilizado una formulaci n impl cita pues se cumple la ecuaci n 2 1 si la velocidad es la que existe al final del paso Por ello se pueden simular pasos grandes sin problemas de estabilidad No se entra m s en detalle en el algoritmo de Baraff y Witkin pues no se ha implementado sino aprovechado de la librer a freecloth Para m s informaci n sobre este algoritmo se refiere al lector al documento Baraff amp Witkin Large Steps in Cloth Simulation 1998 La simulaci n de la din mica interna no tiene en cuenta las interacciones colisiones entre el tejido y otros objetos o incluso consigo mismo Por ello se deben detectar estas interacciones y se deben resolver de la forma m s realista posible Para ello se ha decidido implementar el algoritmo descrito en Bridson Fedkiw amp Anderson 2002 como se justifica en el apartado 2 1 ste plantea la siguiente estrategia l 2 Se define un incremento de tiempo At desde el tiempo actual t al siguiente tn 1 Se simula un paso de duraci n At teniendo en cuenta nicamente la din mica interna Esto se puede hacer con cualquier simul
141. o del tejido 83 Figura 2 61 Contactos de tipo arista arista entre el tejido y una pata de la mesa Se puede seleccionar los contactos que se quiere mostrar seleccionando el rango de identificadores de los contactos a mostrar en el panel de visualizaci n de contactos Figura 2 54 Esto ha sido til en el desarrollo del simulador para comprobar que los contactos se hab an detectado de forma correcta d Collision Detection Display BEJ Collision detection display panel A _ Display Broad Collision Detection _ Overlap next step allowing collisions X Display Narrow Collision Detection Narrow collision display parameters X Display Point Triangle Collisions Point triangle collision parameters Min id number Max id number 0 199 X Display Edge Edge Collisions Edge edge collision parameters Min id number Max id number 0 09 Figura 2 62 Panel de visualizaci n de colisiones detectadas Igual que para la detecci n de contactos hay un panel que permite visualizar las colisiones detectadas en un paso Este tiene las siguientes opciones 1 Overlap next step allowing collisions Esta opci n no disponible en el panel de detecci n de contactos permite ver cu l ser a el estado siguiente de simulaci n si no se aplicasen impulsos debidos a la colisi n Por ello se puede ver en la Figura 2 63 que los objetos se atraviesas sin que haya ninguna interacci
142. ollado con Qt3 M s adelante se explican las posibilidades y funcionamiento del panel de control La librer a SoQt utilizada permite la ejecuci n simult nea de un formulario de Qt3 con un visualizador de Open Inventor A continuaci n se describen estas dos ventanas y su funcionamiento 73 Examiner Viewer Examiner Viewer 0 143 E Rotx Roty Figura 2 42 Ventana de visualizaci n Examiner Viewer El Examiner Viewer es una ventana est ndar de Open Inventor Esta ventana permite al usuario del simulador Rotar la escena El cursor que aparece por defecto es el de rotaci n Se puede rotar la escena simplemente manteniendo pulsado el bot n izquierdo del mouse en cualquier punto de la ventana y arrastr ndolo Zoom Se puede hacer zoom rotando la ruedecita del mouse Desplazarse por la escena panning Para desplazarse por la escena se deben mantener pulsados el bot n izquierdo y derecho del mouse mientras ste se mueve Centrar la vista Se puede centrar la vista en un punto concreto de una malla pulsando s lo que cambiar el cursor del mouse a una cruz y seleccionando el punto sobre el que se quiere centrar la vista Centrar la vista en un punto permite que todas las rotaciones de la escena se hagan entorno a ese punto Adem s se podr aumentar m s zoom la escena entorno al punto seleccionado Cambiar el estilo de visualizaci n La ventana Examiner Viewer permite visualizar la geometr a de formas dife
143. ollisions Detailed Description Class that manages all the objects in world Constructor amp Destructor Documentation WorldObjects WorldObjects World world Constructor that initializes with empty vectors Parameters world World that contains the objects in WorldObjects WorldObjects WorldObjects const WorldObjects amp rhs Copy constructor WorldObjects WorldObjects Destructor Member Function Documentation const WorldObjects amp WorldObjects operator const WorldObjects amp rhs Assignment operator void WorldObjects loadFromFiles Method that loads objects from files std vector lt RCShdPtr lt DeformablePlanarObject gt gt amp WorldObjects getDpos _dpos accessor const std vector lt RCShdPtr lt DeformablePlanarObject gt gt amp WorldObjects getDpos const _dpos constant accessor std vector lt RCShdPtr lt RigidObject gt gt amp WorldObjects getRos _VOS accessor 135 const std vector lt RCShdPtr lt RigidObject gt gt amp WorldObjects getRos const _ros constant accessor World WorldObjects getWorld Accessor to the parent world const World const WorldObjects getWorld const Accessor to the parent world void WorldObjects stepAllowingCollisions BaTime Duration At Simulate the objects one step forward without taking into account contacts or collisions The documentation for this class was generated from the followin
144. olveremos aquel sistema de dos ecuaciones que provea un denominador mayor En las ecuaciones 2 66 y 2 67 se muestran las soluciones a calcular en funci n del valor de las componentes del producto vectorial x43 X X51 gt X43 x X31 lx X43 X X31 lx _ X43 x X31 ly Si X43 X X31 m ximo gt a Si X43 X X31 m ximo gt a 2 66 x43 X X21 ly 43 X X51 Si X43 X X31 m ximo gt a a3 X X31 lz X43 X X21 lz X51 X X91 Si X43 X X31 maximo gt b a1 X X31 lx X43 x X51 lx x51 X X51 Si X43 X X31 m ximo gt b AY 2 67 X43 X X21 ly _ a1 X X30 2 Si X43 X X31 maximo gt b 2 X43 x X31 lz 46 Una vez calculados los par metros a y b se determina que las aristas se cruzan y por tanto colisionan si ambos par metros est n entre 0 y 1 Las aristas se cruzan S 0 lt a b lt 1 2 68 El punto de intersecci n de las aristas se puede calcular f cilmente sustituyendo a o b en las ecuaciones 2 58 o 2 59 En el Diagrama 2 10 se muestra el algoritmo descrito para la detecci n precisa de colisiones entre aristas En l no se explica en detalle la verificaci n de coplanaridad pues dicha operaci n es igual a la descrita en el Diagrama 2 9 El algoritmo de detecci n de colisiones detallado en este apartado se implementa en la clase World CollisionDetector documentada en el apartado 5 1 12 Esta llama a la clase AABBTree para realizar la detecci n aproximada de colisiones
145. omo se aplica una estimaci n V pareja de impulsos resultantes sobre las velocidades medias de los nodos de una pareja nodo tri ngulo n 1 2 n 1 2 Wi gt a Vi Vi In ma 1 2 n 1 2 W2 gt a y er Meci 2 2 eR 3 2 103 n 1 2 n 1 2 W3 2 V3 V In M3 n 1 2 n 1 2 1 ee Va Va In Ma A continuaci n se comprueba que las ecuaciones mostradas en 2 103 cumplen con las condiciones mostradas en 2 102 Para ello se parte de la definici n de los impulsos que se aplican sobre los nodos Dichos impulsos producen una variaci n del momento lineal de los nodos En la ecuaci n 2 104 se muestran los valores de los impulsos distribuidos El lector podr comprobar que un reordenamiento de los t rminos llevan a las velocidades medias modificadas de 2 103 l m vi n 1 2 js w f L m v n 1 2 7 wo 2 104 I m v3 n 1 2 7 ee Ly mg v82 9849 f Se comprueba que estos impulsos cumplen 2 102 e El sumatorio de los impulsos aplicados sobre el tri ngulo claramente da como resultado el impulso resultante teniendo en cuenta que la suma de coordenadas baric ntricas del punto de contacto o colisi n es igual a la unidad ver ecuaci n 2 105 3 Y m w w A i ES 1 wi w w 2 105 i 1 e Tambi n se comprueba en 2 106 que el sumatorio de momentos es nulo 66 y TNR y leg xp xt Zeal Caf x8 wil L MAD E wax x Ti Gx x C A o
146. ones de colisi n de tipo nodo tri ngulo y arista arista Se genera una lista final con parejas de aristas nodos y tri ngulos que colisionan durante el paso de simulaci n que se est llevando a cabo A las entidades que colisionen se les aplicar posteriormente unos impulsos que evitar n la colisi n ver apartado 2 2 5 Cabe destacar que para realizar la detecci n de colisiones se parte de una estimaci n del estado de las mallas al final del paso de simulaci n Puesto que la resoluci n de colisiones es un proceso iterativo esta estimaci n puede haberse calculado nicamente a partir de la din mica interna de la ropa o a partir de la din mica interna modificada con impulsos debido a colisiones detectadas en Iteraciones previas Mallas al inicio Mallas al final del del paso de paso de simulaci n simulaci n Detecci n de colisiones Diagrama 2 7 Se requiere una estimaci n de las mallas al final del paso de simulaci n para detectar colisiones Detecci n aproximada de colisiones A diferencia de los contactos que se producen al principio del paso de simulaci n las colisiones se producen durante el paso de simulaci n Por ello las cajas delimitadoras que se aplican en la detecci n aproximada de colisiones engloban las mallas al inicio y al final del paso de simulaci n Las conclusiones que se pueden extraer de la intersecci n de cajas delimitadoras son las mismas que en el caso de contactos e Si dos cajas delimit
147. oth Simulation 1998 Como ya se ha comentado varias veces a lo largo del documento este modelo lo implementa en dpoSimulator la librer a freecloth Afortunadamente sta permite el c lculo de los jacobianos de las fuerzas que act an sobre los nodos y dichas fuerzas en el estado n Multiplicando la ecuaci n 2 116 por la matriz de masas de los nodos M se obtiene la ecuaci n 2 117 sta es la ecuaci n que resuelve dpoSimulator mediante el m todo del Gradiente Conjugado para calcular las velocidades en el paso n La matriz de masas es una matriz diagonal en la que el valor del elemento de la diagonal corresponde a la masa del nodo de esa fila Esta matriz cumple las ecuaciones en 2 118 Of x v Ruca f Of x v po Of x v 7 M At _ yntt vy At f gt _ et x Aa av 2 117 n gt 5 n gt 5 n gt 5 Poe 2 118 El algoritmo de actualizaci n de velocidades descrito en este apartado se implementa en la clase WorldResponser documentado en el apartado 5 1 19 M todo alternativo de actualizaci n de velocidades Previamente se prob otro m todo de actualizaci n de velocidades m s sencillo y r pido al ser expl cito y evitar la resoluci n de un sistema de ecuaciones de grandes dimensiones ste se basaba en realizar la suposici n de que la aceleraci n se manten a constante durante todo el paso con lo que se obten a la ecuaci n 2 120 que permit a calcular las nuevas velocidades directamente
148. oximada de contactos Consiste en desestimar mediante c lculos poco costosos aquellas parejas de entidades que seguro que no est n en contacto Mediante 14 esta detecci n aproximada de contactos se obtiene una lista de parejas de tri ngulos que puede que est n en contacto 2 Detecci n precisa de contactos Se realiza una detecci n precisa entre las entidades nodo tri ngulo y arista arista que forman parte de las parejas de tri ngulos preseleccionadas mediante la detecci n aproximada anterior 5000 4500 4000 3500 N2 comprobaciones a realizar 2500 2000 Nodo tri ngulo Arista arista 1500 1000 500 a A a 0 10 20 30 40 50 N2 de nodos Gr fico 2 1 Relaci n cuadr tica entre el n mero de nodos y el n mero de comprobaciones de proximidad a realizar A continuaci n se detallan los algoritmos de detecci n de contactos de forma aproximada y precisa implementados en la aplicaci n desarrollada Detecci n aproximada de contactos La detecci n aproximada de contactos consiste en una serie de c lculos sencillos que permiten obtener una selecci n de parejas de tri ngulos que es posible que est n en contacto Un c lculo posterior m s preciso realizado sobre esta preselecci n permitir determinar que entidades est n en contacto En los apartados que siguen se explica c mo se ha utilizado cajas delimitadoras alineadas con los ejes para realizar una detecci n aproximada de contactos Cajas delimitadoras
149. planas que se pueden deformar representando el comportamiento de tejidos reales ante influencias externas Los tejidos tienen un grosor determinado por lo que la malla representa su fibra neutra como se muestra en la Figura 2 29 en la p gina 48 La calidad de la simulaci n depende directamente de los incrementos de tiempo y de la densidad de la malla La simulaci n de tejidos es la funci n principal del simulador y consta de dos etapas principales o Simulaci n de la din mica interna La simulaci n de la din mica interna tiene en cuenta la tracci n cizalla y flexi n de las fibras la gravedad y fricciones internas Sin embargo no tiene en cuenta las colisiones que se pueden producir entre el tejido consigo mismo o con otros objetos La din mica interna no se ha desarrollado para este proyecto sino que se ha aprovechado de la librer a de c digo libre freecloth sta como se explica en el apartado 2 2 1 implementa el algoritmo descrito en Baraff amp Witkin Large Steps in Cloth Simulation 1998 o Resoluci n de contactos y colisiones Tomando el resultado de la din mica interna como primera aproximaci n se resuelven los contactos y colisiones que aparecen seg n el algoritmo descrito en Bridson Fedkiw amp Anderson 2002 La implementaci n de dicho algoritmo es la principal aportaci n de este proyecto 11 e Objetos r gidos Los objetos r gidos no se pueden deformar El algoritmo de resoluci n de contactos y co
150. plejidad del programa aunque por s solo da buenos resultados Sin embargo se ha encontrado una librer a que s es lo suficientemente flexible para las necesidades del proyecto Freecloth es una librer a de c digo libre que simula el comportamiento de tejidos bas ndose nicamente en la din mica interna Pritchard freecloth project 2003 Esto quiere decir que no puede simular colisiones entre objetos ni de un objeto consigo mismo sta es una gran limitaci n que impide la simulaci n de la mayor a de situaciones en las que el proyecto resultar a til Ante esta contrariedad la principal aportaci n de este Proyecto Final de Carrera es el desarrollo de un simulador de tejidos que tenga en cuenta los contactos y colisiones con otros objetos Esta aplicaci n debe ser vers til permitiendo la simulaci n de cualquier escena y con cualquier tipo de manipulaci n de objetos y f cilmente ampliable pues en un futuro ser esclava del planificador 1 3 Contenido de la memoria El contenido principal de la memoria se encuentra en el apartado de Desarrollo ste tiene tres partes 2 1 Trabajos previos En esta secci n se indica cual es el estado del arte y en orden cronol gico las aportaciones de los principales autores al campo de la simulaci n de tejidos Tambi n se indica qu algoritmo se ha implementado y se justifica su elecci n 2 2 Algoritmo implementado Este apartado detalla el algoritmo que se implementa en el simulado
151. plies all the collision impulses required in a scene This class works pretty much like a function as the constructor does everything and no other method should be called Constructor amp Destructor Documentation WorldCollisionResponser WorldCollisionResponser RCShdPtr lt WorldMeanVelocities gt worldMean Velocities const WorldCollisionDetector worldCollisionDetector const PositionUpdater positionUpdater const VelocityUpdater velocityUpdater Constructor of the class This constructor applies collision impulses to worldMeanVelocities according to the collisions detected in worldCollisionDetector Parameters worldMeanVelocities Proposed mean velocities of every object in the scene These will be modified worldCollisionDetector WorldCollisionDetector object with information about detected collisions positionUpdater Method of applying impulses PARALLEL update recommended faster which makes an average of the impulses applied to every node or SERIAL update much slower velocityUpdater Method of updating velocities IMPLICIT update recommended stable which updates resolving an implicit equation or CONST_ACCELERATION update unstable which rsolves explicitly supossing a constant acceleration during the step 129 Member Function Documentation void WorldCollisionResponser addlmpulses const Detector amp detector protected virtual Function that adds impulses to the mean velocities of the objects accord
152. quel nodo que cuya caja delimitadora contiene toda la malla Tiene asociada la caja delimitadora menos precisa b Nodos terminales Los nodos terminales u hojas son aquellos que nicamente contienen un elemento En el simulador este elemento m nimo es un tri ngulo c Nodos intermedios Los nodos intermedios son aquellos que ni son ra z ni terminales Tendr n dos hijos un nodo izquierdo y otro derecho Cabe destacar que a medida que se sube por el rbol desde la ra z hasta los nodos terminales va aumentando la precisi n de la caja delimitadora Esta caracter stica ser clave en la detecci n aproximada de contactos y de colisiones Construcci n de un rbol de cajas delimitadoras En el simulador se implementa la construcci n de un rbol de cajas delimitadoras alineadas con los ejes a partir de la malla que debe contener El Diagrama 2 3 representa el algoritmo implementado Es un algoritmo recursivo que se llama para construir cada uno de los nodos Si el n mero de tri ngulos no es superior a uno el nodo es terminal en caso contrario se escoge el mejor eje para partir la caja delimitadora Los tri ngulos contenidos en la caja delimitadora del nodo se reparten entre el nodo Izquierdo y el nodo Derecho es decir los hijos El mejor eje es aquel que consigue un mayor equilibrio entre el n mero de tri ngulos en los dos hijos Es decir el mejor eje para partir la caja delimitadora es aquel que minimiza la diferencia a
153. r Una malla lo m s regular posible favorecer los c lculos num ricos que realiza el simulador dpoSimulator El mallado de la camisa da como resultado la malla mostrada en la imagen derecha de la Figura 2 74 Se observa que aunque la malla se adapta muy bien a la superficie original hay aristas que son muy peque as lo cual hace que la malla sea irregular Se debe activar la vista inal mbrica Wireframe NHR en CATIA V5 para poder ver la malla 92 Tessellation x Parameters Sag 2e 004m paj la Step 0 1m Es EE a a Close Figura 2 74 Izquierda Cuadro de di logo de la herramienta de teselaci n Derecha Camiseta teselada Para hacer que la camisa sea m s regular se puede utilizar la herramienta Decimate tambi n en el workbench Machining STL Rapid Prototyping En sta se activar la opci n Edge Length y un Minimum del mismo valor o parecido al asignado en el caso anterior a Step De esta forma se limitar el valor m nimo de la longitud de las aristas a un valor cercano al m ximo El resultado es que la malla es m s regular a costa de no representar tan bien a la superficie original como se puede ver en la Figura 2 75 Decimate 2x AWAKE TN LASN An A TA 7 y OX 7 gt i gis f S Eiis O Chordal Deviation Y Edge Length K L NF DEN NNE LL Y p agi E Minimum 0 05m E AY 7 i f NAS P O Target Percentage io YY A Target Triangle Count E f x NOTRE NAT OMA
154. r a la de referencia representada por la l nea discontinua Este mismo concepto se puede extrapolar a los contactos entre aristas Figura 2 3 El nodo xi est en contacto con el tri ngulo tj Las entidades en contacto pueden pertenecer al mismo objeto un tejido que contacta consigo mismo o a objetos diferentes como en el caso de un trapo en reposo sobre una mesa De esta 12 forma cada entidad pertenece a un objeto deformable o a un objeto r gido La distancia de referencia se calcula seg n la ecuaci n 2 99 donde h es la distancia de referencia del objeto al que pertenece la entidad 1 y A es la distancia de referencia del objeto al que pertenece la entidad 2 Este promedio es debido a que las mallas de objetos deformables representan la fibra neutra del objeto real h hz Prep 2 10 La distancia de referencia del objeto se corresponde con su grosor por lo que es nula para objetos r gidos Por ejemplo si se quiere determinar si un nodo de una malla que representa un pa uelo de seda de 0 5 mm de espesor est en contacto con un maniqu objeto r gido la distancia de referencia ser de 0 25 mm Esto se debe a que la malla de un objeto deformable se toma como fibra neutra mientras que la de un objeto r gido se toma como su capa exterior Se podr a plantear la detecci n de contactos entre dos objetos como una comprobaci n de proximidad geom trica entre cada una de sus entidades nodo tri ngulo y arista arista
155. r desarrollado dpoSimulator Para ello primero se describe de forma general e intuitiva el algoritmo para despu s entrar en m s detalle y con las demostraciones matem ticas necesarias para llegar a las expresiones finales de c lculo 2 3 Descripci n del simulador desarrollado Este apartado consta de una gu a de usuario del programa que explica c mo crear cargar y simular escenas Tambi n incluye una gu a para el desarrollador explicando cuales son las partes m s importantes del programa las clases de la capa exterior y dando recomendaciones para el desarrollador El tercer apartado Conclusiones lista los objetivos cumplidos e incluye tambi n un apartado de Recomendaciones que incluye sugerencias sobre c mo ampliar el programa Finalmente los anexos incluyen la documentaci n en ingl s de las principales clases del simulador stas son referenciadas en el apartado 2 2 en qu clase se implementa cada algoritmo 2 Desarrollo 2 1 Trabajos previos En esta d cada la simulaci n de tejidos ha cobrado un gran inter s en el mundo de la animaci n facilitado por la creciente potencia de c lculo de los ordenadores Por ello hay mucha investigaci n documentada sobre este tema y muchos algoritmos que priorizan diferentes aspectos de la simulaci n En 1995 un art culo escrito por Xavier Provot revolucion la simulaci n de tejidos Provot 1995 Provot planteaba un modelo de simulaci n de la din mica interna de
156. r es la distancia d mayor es la compresi n de las fibras del tejido y mayor es la fuerza de repulsi n que act a sobre las dos entidades Si hay contacto la distancia de interferencia ser positiva sta comprobaci n se puede realizar para confirmar que la lista de entidades en contacto suministrada por el detector ver el apartado 2 2 3 es correcta IL Se limita la fuerza de repulsi n a aquella que como mucho separe las entidades un 10 de la distancia de compresi n Esto se hace para evitar artificios debidos a la utilizaci n de muelles demasiado el sticos y para que los tejidos en contacto sigan en contacto el tiempo suficiente como para que se note la fricci n Sin esta limitaci n no se notar a la fricci n en mallas bastas Cabe destacar que las ecuaciones deducidas en este cap tulo son un caso generalizado de las presentadas en Bridson Fedkiw amp Anderson 2002 En esta fuente se presentan las ecuaciones suponiendo que todos los nodos tienen la misma masa Esto es til si se est simulando la interacci n de un solo tejido consigo mismo pero limita mucho el simulador Por ejemplo no permite simular el comportamiento de un tejido al entrar en contacto con un objeto r gido como el caso de una camisa sobre un maniqu Por ello se ha decidido generalizar las ecuaciones y por lo tanto se ha tenido que demostrar su origen con rigor matem tico El lector podr comprobar que sustituyendo una misma masa para todos los
157. rentes Para ello se debe pulsar el bot n derecho del rat n en un punto cualquiera de la escena Aparecer un men contextual en el que se pueden seleccionar diferentes estilos de visualizaci n y animaci n entre otras opciones Cabe destacar las tres opciones de visualizaci n siguientes que se encuentran en DrawStyles StillDrawStyle o Estilo de visualizaci n est tica As Is Este estilo es el seleccionado por defecto Este mostrado en la Figura 2 43 muestra los tri ngulos de las mallas de forma s lida 74 Figura 2 43 Escena ClothOnBottle mostrada con el estilo de visualizaci n As Is Estilo de visualizaci n Wireframe Este estilo s lo muestra las aristas coloreadas De esta forma los objetos no ocultan que hay detr s De esta forma este estilo resulta muy til para visualizar contactos y colisiones Figura 2 44 Escena ClothOnBottle mostrada con el estilo de visualizaci n Wireframe Estilo de visualizaci n Wireframe Overlay Este estilo es un h brido de los dos anteriores Es igual que el modo As s pero con las aristas resaltadas en color rojo Figura 2 45 Escena ClothOnBottle mostrada con el estilo de visualizaci n Wireframe Overlay 75 Control Panel dpoSimulator ira Time 0 Control Panel Play Step Paue 7 Rewind Display Fanel State display Bounding boxes display Collision detection display C Save render
158. ri ngulo en un punto determinado de las mismas y en la direcci n normal Puesto que la informaci n sobre la que se trabaja concierne y transforma a los nodos se deben distribuir los impulsos a los nodos que forman los elementos Esta distribuci n ser independiente si el impulso es debido a un contacto o a una colisi n pero s depender del tipo de entidades involucradas A continuaci n se explica c mo se distribuyen los impulsos en funci n de la pareja de entidades sobre la que act an A Distribuci n de impulsos nodo tri ngulo La distribuci n de impulsos para una pareja nodo tri ngulo consiste en encontrar aquellos impulsos I a I4 que se pueden aplicar sobre los cuatro nodos provocando una respuesta equivalente a aplicar dos impulsos resultantes y de sentidos opuestos I 64 Xi C lculo de Distribuci n impulsos de impulsos In X4 gt y 4 Se debe encontrar una forma de distribuir los impulsos tal que se cumplan las condiciones mostradas en la ecuaci n 2 102 La primera condici n es que la suma vectorial de impulsos aplicados sobre los nodos del tri ngulo debe ser igual al impulso total aplicado sobre el tri ngulo Esta ecuaci n se deriva del hecho de que el sumatorio de fuerzas ha de ser la fuerza resultante teniendo en cuenta que el impulso es la integral de la fuerza a lo largo del tiempo Se hace notar que el impulso resultante que separa el nodo del tri ngulo act a en la direcci n normal al
159. ring a simulated step When constructed this class atomatically detects contact pairs which can be retreived later with the method Detector getProposedPairs Constructor amp Destructor Documentation WorldProximityDetector WorldProximityDetector const RCShdPtr lt WorldObjects gt worldObjects const RCShdPtr lt WorldMeanVelocities gt worldMean Velocities Constructor of the class This constructor detects contacts between the objects in the scene from an initial position Parameters worldObjects Initial state positions of every object in the scene worldMeanVelocities Proposed mean velocities of every object in the scene Member Function Documentation const DetectionPair WorldProximityDetector calcFirstToSolve const virtual Finds the first DetectionPair that should be solved in contact it is the nearest If there are no pairs it returns O Used in serial update Implements Detector The documentation for this class was generated from the following files src PMDO PMDO Detection WorldProximityDetector h src PMDO PMDO Detection W orldProximityDetector cpp 5 2 15 WorldMeanVelocities Class Reference This class calculates and holds the mean velocities of every object in the scene during a simulated step tinclude lt WorldMeanVelocities h gt Inheritance diagram for WorldMeanVelocities WorldMMeany elocities 131 Public Member Functions WorldMeanVelocities const RCShdPtr lt WorldObj
160. ropea En este apartado se explica cual es el objetivo a largo plazo del proyecto de manipulaci n de objetos deformables y en el apartado 1 2 se explica cual es el alcance del proyecto que se presenta en este documento Se pretende que d ndole a un robot un estado de referencia de una pieza de ropa en forma de malla ste decida qu acciones debe ejecutar para llegar a ese estado desde cualquier otro Es decir en un comienzo el tejido puede estar en cualquier posici n y al robot se le indicar la posici n final deseada Mediante una serie de mediciones c lculos internos y actuaciones el robot debe manipular la ropa para llegar a la posici n final deseada La principal dificultad de este proyecto radica en la versatilidad que debe tener el sistema desarrollado Para ello se plantea el diagrama de bloques general y simplificado mostrado c mo Diagrama 1 1 Referencia Perturbaciones Perturbaciones Acci n a ares Plani realizar osicion rea anificador Medidor Posici n medida Posici n simulada Filtro de Kalman Estimaci n de la posici n Diagrama 1 1 Diagrama general del proyecto de manipulaci n autom tica de objetos deformables El alcance del proyecto sombreado en gris se limita a la simulaci n de tejidos seg n un modelo Una malla de referencia las posiciones futuras deseadas para la ropa se provee a un planificador ste es una aplicaci n inform tica que tambi n recibe informaci
161. rque inicialmente la malla del tejido es perfectamente horizontal y las cajas delimitadoras de los tri ngulos se tocan en las esquinas Todas estas parejas de posibles contactos se descartar n en la detecci n precisa 82 Figura 2 59 Inicialmente se detectan de forma aproximada muchos contactos debido a que las cajas delimitadoras de contacto de la ropa se tocan en las esquinas 11 Display Narrow Proximity Detection Figura 2 60 Se muestran en verde los contactos entre aristas y en rojo los contactos nodo tri ngulo La Figura 2 60 muestra los contactos detectados de forma precisa entre el tejido y la mesa para la misma escena y el mismo momento que la mostrada en la Figura 2 55 Estos 14 contactos son los nicos que no se han descartado de todos los detectados de forma aproximada en la Figura 2 55 Como se explica en el apartado 2 2 3 hay dos tipos de contacto e Contactos entre aristas Estos se muestran como una l nea de color verde que une los dos puntos de las aristas m s cercanos y que est n a una distancia menor al grosor del tejido En la escena representada en la Figura 2 60 hay 13 contactos entre la arista que representa el borde de la mesa y aristas del tejido e Contactos entre un nodo y un tri ngulo Estos se representan con una l nea de color rojo que une el nodo y el punto del tri ngulo m s cercano al nodo En la Figura 2 60 s lo hay un contacto de este tipo entre la esquina de la mesa y un tri ngul
162. s Parameters detector Object with detected contacts Implements WorldResponser void WorldProximityResponser addPTImpulse const PTPair 8 ptPair protected virtual Function that adds impulses to a point triangle pair which are in contact Parameters ptPair Point triangle pair Implements WorldResponser 138 void WorldProximityResponser addEElmpulse const EEPair 8 eePair protected virtual Function that adds impulses to a edge edge pair which are in contact Parameters eePair Edge edge pair Implements WorldResponser The documentation for this class was generated from the following files src PMDO PMDO Responser WorldProximityResponser h src PMDO PMDO Responser WorldProximityResponser cpp 5 2 19 WorldResponser Class Reference Class that contains functions that WorldCollisionResponser and WorldProximityResponser have in common include lt WorldResponser h gt Inheritance diagram for WorldResponser WordResponser WorldColisionkesponser WorldP roximityResponser Public Member Functions WorldResponser RCShdPtr lt WorldMeanVelocities gt worldMeanVelocities const PositionUpdater positionUpdater const VelocityUpdater velocityUpdater Constructor of the class void applyMutatedStepTo const WorldObjects amp initialObjects WorldObjects amp proposedObjects const Function that applies collision or contact impulses to initialObjects to obtain the final objects RCShdPtr lt WorldMeanVelo
163. s en n 1 de la ecuaci n anterior pero no se tiene la aceleraci n en n Se propone entonces realizar una aproximaci n de Taylor de primer orden lineal de la aceleraci n ecuaci n 2 114 Esta aproximaci n se calcula tomando como referencia el estado n el inicio del paso por lo que se llega a 2 115 da x v da x V oa Uo aL AY Aa x v Ox OV 2 114 69 da x v da x V gn 1 gn Come x ae nts n 5 vw 0115 Sustituyendo la aceleraci n en n 1 de la ecuaci n anterior en 2 113 y agrupando los t rminos que multiplican la velocidad en n se obtiene la ecuaci n 2 116 ste es un sistema de ecuaciones del que nicamente se desconocen las velocidades en n Habr tantas ecuaciones e inc gnitas como nodos tenga la malla que representa el tejido por lo que interesa resolver el sistema de forma eficiente Al ser la matriz de coeficientes sim trica se aplica el m todo del Gradiente Conjugado Baraff amp Witkin Large Steps in Cloth Simulation 1998 ya implementado en una funci n de la librer a freecloth dal x V dal x V da x V yotl v Atl a qu x OV 1 Ox 1 OV n gt 5 n gt 5 n I At yn 2 116 Ne Sin embargo para calcular tanto los jacobianos como el t rmino de la aceleraci n en el estado n se debe tener acceso al modelo de la din mica interna del tejido en este caso el modelo descrito en Baraff Witkin Large Steps in Cl
164. s the time callback information Detailed Description Upper layer class that contains the two windows _explorerWidget and _controllerWidget that compose the main user interface This class lets the user mamipulate and observe the state of the world Constructor amp Destructor Documentation WorldViewer WorldViewer QObject parent 0 const char name 0 Constructor of the class This constructor creates the world the explorerWidget and the controllerWidget initializing the simulator Parameters parent Parent Qt Object 144 name Name of the Qt Object Member Function Documentation void WorldViewer updateRenderingModels signal Qt signal to update the rendered models according to the changes in the _world void WorldViewer updateTimeDisplay signal Qt signal to update the simulated time display in the _explorerWidget void WorldViewer saveRenderChkToggled bool t0 signal Qt signal to save the rendered scene as an image void WorldViewer playSimulation slot Qt slot to play the simulation void WorldViewer pauseSimulation slot Qt slot to pause the simulation void WorldViewer stepSimulation slot Qt slot to advance the simulation one step forward void WorldViewer rewindSimulation slot Qt slot to play the reinitialize the scene void WorldViewer setSavelterationMeshes bool savelterationMeshes slot Qt slot to save the iteration meshes
165. se puede expresar la variaci n de la velocidad relativa media en la direcci n normal de las dos part culas en funci n de la aceleraci n ecuaci n 2 90 n 1 2 n 1 2 n 1 2 _ YN Vy 2 90 n gt At Aislando la diferencia de velocidades de dicha ecuaci n y sustituyendo la aceleraci n de la ecuaci n 2 89 se obtiene la ecuaci n final 2 91 M s adelante se explica por qu interesa esta ecuaci n 1 1 petite _ ati qi At Atkd ie 2 91 c1 c2 61 La constante de rigidez del muelle k tiene un valor que depende del tejido que se est simulando A falta de ensayos emp ricos asignarle el valor de la constante de rigidez de la ropa parece dar buenos resultados Bridson Fedkiw amp Anderson 2002 b Limitaci n de fuerza de repulsi n Se quiere limitar la fuerza de separaci n debida a un contacto para que provoque una separaci n inferior o igual al 10 de la distancia de interferencia d Para ello se busca a continuaci n aquella variaci n de la velocidad relativa en la direcci n normal como en la ecuaci n 2 91 que provoque que la separaci n sea del 10 Si la separaci n es del 10 de d se cumplir que la distancia relativa entre las dos part culas en la direcci n normal en el paso n 1 ser 0 1d veces superior a la del paso n Es decir se cumplir la ecuaci n 2 92 xntl x2 401d 2 92 Se puede derivar la diferencia de velocidades relativas medias en la direcci n nor
166. sivo Comprobar superposici n de nodo derecho con nodo izquierdo algoritmo recursivo Diagrama 2 5 Algoritmo recursivo de detecci n aproximada de contactos entre los nodos de un mismo rbol La detecci n aproximada contactos de una malla consigo misma se puede realizar de forma parecida a la del Diagrama 2 4 La nica diferencia consiste en que para cada nodo se deben buscar los contactos de sus hijos consigo mismos y los contactos de un hijo con otro En el Diagrama 2 5 se muestra el algoritmo de detecci n de contactos dentro de un mismo nodo Cabe destacar que dicho algoritmo es recursivo y hace llamadas al algoritmo del Diagrama 2 4 Los algoritmos de creaci n y construcci n de rboles de AABB se implementan en las clases AABBTree y AABBNode para m s informaci n consulte los apartados 5 1 2 y 5 1 1 respectivamente Detecci n precisa de contactos La detecci n precisa de contactos se realiza sobre un grupo de parejas de tri ngulos preseleccionados aquellos que es posible que est n en contacto por el m todo descrito en la secci n anterior Se realizan dos tipos de detecciones e Detecci n de contactos entre el nodo de uno de los tri ngulos y la superficie del tri ngulo opuesto De este tipo de detecciones se realizar n seis por pareja de tri ngulos una por cada nodo e Detecci n de contactos entre las aristas de un tri ngulo con las aristas del otro De este tipo de detecciones se realizan nueve por p
167. sticas i Se calcula la colisi n de un par de entidades como la colisi n de dos part culas para utilizar el modelo sencillo de la Figura 2 22 a En el caso de las colisiones nodo tri ngulo se consideran como part culas que colisionan al nodo y a un nodo ficticio que pertenece al tri ngulo y que tiene durante todo el paso simulado las coordenadas baric ntricas del punto donde se 54 produce la colisi n La primera ecuaci n en 2 45 permite calcular las coordenadas baric ntricas del punto de colisi n en caso de que no se hayan guardado en el proceso de detecci n de colisiones Estas coordenadas se pueden utilizar en la segunda ecuaci n para calcular la velocidad media del punto de colisi n en el paso simulado cCc C C C X4 W Xq W2X3 W3X3 n 1 2 _ n 1 2 n 1 2 n 1 2 2 74 b Las part culas con colisi n inel stica tomadas en consideraci n en el caso de colisiones entre aristas son dos nodos ficticios que forman parte de las aristas y que tienen las coordenadas baric ntricas del punto de colisi n Por ello a partir de las coordenadas baric ntricas a y b del punto de colisi n respecto cada arista ver ecuaciones en 2 75 se puede calcular las velocidades de las part culas que colisionan ecuaciones en 2 76 EE c Gec be bx 25 y2 1 2 _ ayntt 2 pisa yntt 2 e yntt 2 _ pyntt2 1 pyyntt 2 l ii Primero se calcula la pareja de impulsos que evitan la colisi n al provocar que la velocidad relativa
168. tate of the mesh at the end of the interval timestep Time interval in seconds MeanVelocities MeanVelocities const MeanVelocities amp rhs Copy constructor Member Function Documentation RCShdPtr lt GeMesh gt MeanVelocities CreateFinalMesh Method to create a final mesh given the initial state and the mean velocities void MeanVelocities setVelocity int id GeVector velocity Mutates the mean velocity of a vertex Parameters id Id of the vertex whose velocity is changed velocity New velocity of the verex Member Data Documentation std vector lt RCShdPtr lt GeVector gt gt MeanVelocities meanVelocities Mean velocities of the nodes during the time interval RCShdPtr lt GeMesh gt MeanVelocities initialMesh Initial state of the mesh RCShdPtr lt GeMesh gt MeanVelocities finalMesh Final state of the mesh float MeanVelocities timestep Time interval 116 The documentation for this class was generated from the following files src PMDO PMDO MeanVelocities h src PMDO PMDO MeanVelocities cpp 5 2 5 RigidObject Class Reference Class for a rigid object and all its atributes and methods include lt RigidObject h gt Inheritance diagram for RigidObject Object RigidObject Public Member Functions RigidObject const String amp meshFilename const String amp parFilename const String amp velConstraintsFilename Constructor of the class This loads the mesh parameters
169. tation const DetectionPair WorldProximityDetector calcFirstToSolve const virtual Finds the first DetectionPair that should be solved in contact it is the nearest If there are no pairs it returns 0 Used in serial update Implements Detector The documentation for this class was generated from the following files src PMDO PMDO Detection WorldProximityDetector h src PMDO PMDO Detection W orldProximityDetector cpp 5 2 18 WorldProximityResponser Class Reference Class that automatically applies all the contact impulses required in a scene include lt WorldProximityResponser h gt Inheritance diagram for WorldProximityResponser WordResponser WorldP roximityResponser Public Member Functions WorldProximityResponser const RCShdPtr lt WorldMeanVelocities gt worldMeanVelocities const WorldProximityDetector amp worldProximityDetector PositionUpdater positionUpdater VelocityUpdater velocity Updater Constructor of the class Protected Member Functions virtual void addImpulses const Detector amp detector Function that adds impulses to the mean velocities of the objects according to detected contacts virtual void addPTImpulse const PTPair amp ptPair Function that adds impulses to a point triangle pair which are in contact virtual void addEEImpulse const EEPair amp eePair 137 Function that adds impulses to a edge edge pair which are in contact Detailed Description Class that automatically app
170. tecci n aproximada de contactos se basa nicamente en las cajas delimitadoras de contacto Figura 2 58 La superficie de la mesa se representa con dos tri ngulos Realizando una simple inspecci n visual se observa que en la escena ClothOnTable hay tres tipos de pareja preseleccionadas para aplicar contactos l Entidades de la ropa que es posible que est n en contacto con los dos tri ngulos que componen la superficie de la mesa Estas parejas se pueden ver bien en la Figura 2 58 Van desde algunos tri ngulos de la malla del tejido al centro alguno de los dos tri ngulos de la superficie de la mesa 2 Entidades de la ropa que pueden estar en contacto con el borde de la mesa Estas parejas se pueden ver claramente en la Figura 2 56 3 Entidades del tejido que pueden estar en contacto con otras entidades del tejido stas se muestran como l neas amarillas que van desde el centro de algunos tri ngulos de la malla del tejido a otros tri ngulos de la misma malla Una simple inspecci n visual determina que estos tri ngulos no est n en contacto Sin embargo es necesario detectar contactos de forma aproximada entre tri ngulos de una misma malla pues el tejido puede entrar en contacto consigo mismo Una detecci n precisa ya eliminar todos estos falsos positivos Todas las parejas de tri ngulos que posiblemente est n en contacto mostrados en la Figura 2 59 se corresponden al tercer caso Todos estos falsos positivos se dan po
171. the caller to save the iterationMeshes or not Friends And Related Function Documentation friend class WorldObjects friend The documentation for this class was generated from the following files src PMDO PMDO W orld h src PMDO PMDO World cpp 5 2 10 World Parameters Class Reference Class that contains the parameter of the world loaded from a file include lt World h gt Inheritance diagram for World Parameters 124 World Parameters Public Member Functions Parameters Constructor The constructor initialises the parameters with zeros void loadFromFile Method that loads parameters from a file and stores them Public Attributes float _ gravity Parameter Gravity int _fps Parameter Frames per second requiered Detailed Description Class that contains the parameter of the world loaded from a file Constructor amp Destructor Documentation World Parameters Parameters Constructor The constructor initialises the parameters with zeros Member Function Documentation void World Parameters loadFromFile Method that loads parameters from a file and stores them Member Data Documentation float World Parameters gravity Parameter Gravity int World Parameters fps Parameter Frames per second requiered The documentation for this class was generated from the following files src PMDO PMDO W orld h src PMDO PMDO World cpp 125 5 2 11 World WorldStep
172. tmo 58 completo se muestra en el Diagrama 2 13 El algoritmo de c lculo de impulsos debidos a un contacto se implementa en la clase World CollisionResponser apartado 5 1 13 INICIO Leer masas velocidades medias estimadas Calcular coordenadas baric ntricas a y b Calcular velocidad relativa estimada en la direcci n normal A 41 97 ab A Yu Cy Fg Hg Hy Diagrama 2 13 Algoritmo de c lculo de los impulsos resultantes debido a una colisi n entre dos aristas adaptado a posibles objetos r gidos 59 Calculo de impulsos debidos a un contacto Nomenclatura de contacto Impulsos de repulsion debidos al contacto Figura 2 35 El contacto se modela como una repulsi n que intenta anular la distancia de interferencia d Se propone un modelo de contacto que cumpla dos requisitos Bridson Fedkiw amp Anderson 2002 I Aquellas entidades que est n m s cercanas a una distancia h ver el apartado 2 2 3 se ver n separadas con una fuerza proporcional a la distancia de interferencia d Es decir se modela la fuerza de repulsi n debida a un contacto como un muelle que une las dos entidades de longitud natural h y que al comprimirse las separa La distancia de solapamiento se puede calcular de forma gen rica con la ecuaci n 2 86 D nde x 1 y X z son los puntos m s cercanos pertenecientes a las dos entidades La Figura 2 35 muestra el caso de un nodo y un tri ngulo en contacto Cuanto mayo
173. to file C Save step iteration meshes Quit Figura 2 46 Panel de control del simulador El panel de control permite controlar el flujo de la simulaci n y mostrar informaci n auxiliar Arriba de todo se muestra el tiempo de la simulaci n Este siempre empieza en 0 como se muestra en la Figura 2 46 Las opciones b sicas de control de la simulaci n son Play Esta instrucci n ejecutar el simulador de forma c clica avanzado la simulaci n autom ticamente Se observar como el tiempo va progresando y la escena va cambiando Step Pulsar este bot n avanza la simulaci n en un solo paso Pause Permite interrumpir la simulaci n mientras se estaba ejecutando habiendo pulsado play Si una vez pausado se vuelve a pulsar play la simulaci n continuar desde el punto en el que se interrumpi Rewind Esta instrucci n reinicia la escena y la deja en pausa Quit Permite cerrar el simulador A continuaci n se describen las opciones avanzadas del simulador que permiten comprobar el correcto funcionamiento del mismo y obtener informaci n adicional a State Display Figura 2 47 Panel de visualizaci n del estado de la escena 76 Pulsar en el panel de control el bot n State display abre la ventana de opciones de visualizaci n del estado que se muestra en la Figura 2 47 En este se puede escoger las siguientes opciones 1 Display Vertices Figura 2 48 Escena con v rtices etiquetados La visualizac
174. tr a sino que consideran que sta tiene un peque o espesor por lo que son m s grandes Para m s informaci n sobre las cajas delimitadoras para contactos consulte el apartado 2 2 3 La Figura 2 53 muestra todos los niveles de las cajas delimitadoras para contactos de la escena ShirtOnTable La camiseta tiene una malla muy tupida por lo que hay muchas cajas delimitadoras Sin embargo se observa que la superficie de la mesa es menos tupida pues s lo necesita dos tri ngulos para ser representada acelerando el c lculo Las patas son muy tupidas puesto que son cilindros representados con tri ngulos Sin embargo no ralentizan mucho el c lculo pues una comprobaci n r pida con las cuatro cajas que delimitan las cuatro patas las rechaza como posibles objetos que est n en contacto con la camisa Se hace notar al lector que la visualizaci n de las cajas delimitadoras de contacto es muy parecida a las cajas delimitadoras normales pues la camiseta es poco gruesa 3mm Sin embargo es importante tener en cuenta el sobrespesor para que el simulador trate todos los contactos Figura 2 53 rboles de cajas delimitadoras completos para la detecci n de contactos en una escena c Proximity Detection Display m Proximity detection display panel T C Display Broad Proximity Detection X Display Narrow Proximity Detection Narrow proximity display parameters X Display Point Triangle Proximities Point triangle prox
175. tree in a vector e void collectNodes std vector lt const AABBNode gt amp nodeCollection const Class to collect all the nodes of the tree in a vector e void collectOverlappingLeaves const AABBTree otherTree std vector lt FacePair gt S overlappingFacePairs const Class that determines all the leaves terminal nodes of this tree that are in contact with another tree e void collectOverlappingLeaves const AABBTree otherTree boost ptr_vector lt FacePair gt amp overlappingFacePairs const Class that determines all the leaves terminal nodes of this tree that are in contact with another tree e void collectSelfOverlappingLeaves std vector lt FacePair gt amp overlappingFacePairs const Class that determines all the leaves terminal nodes of this tree that overlap e void collectSelfOverlappingLeaves boost ptr_vector lt FacePair gt amp overlappingFacePairs const Class that determines all the leaves terminal nodes of this tree that overlap 110 Detailed Description Class that builds and contains that information of an AABB tree AABBTree can also return the Bounding Boxes as a vector and detect overlaping boxes Constructor amp Destructor Documentation AABBTree AABBTree const std vector lt AABBContainable gt amp elementList unsigned int minFaces 1 Constructor of the class The constructor recursively builds the tree from its root Parameters elementList List of objects that c
176. ualizaci n de velocidades considerando la aceleraci n constante al ver que se produc a una inestabilidad en las velocidades para m s informaci n consulte la p gina 47 La visualizaci n del campo de velocidades permite juzgar el comportamiento del simulador Para la escena representada en la Figura 2 49 se pueden realizar las siguientes observaciones e Las velocidades de los nodos con movimiento restringido las dos esquinas superiores de las que est colgando el tejido azul son nulas Esto es correcto pues tal es la restricci n de velocidad que se ha aplicado se puede comprobar en el directorio environment_ClothOnTable bodies vel_ClothOnTable e Se observa que los nodos inferiores del tejido tienen una velocidad descendente debido a la ca da que van a sufrir e Los nodos del tejido que se encuentra sobre la mesa tienen una velocidad ascendente Esto se debe a que ya han entrado en contacto con la mesa y ahora van a subir debido a la tracci n b Bounding Box Display Bounding Box display panel X Display Bounding Boxes X Display Proximity Bounding Boxes Bounding Box display parameters p Proximity Bounding Box display parameters Min depth Max depth Min depth Max depth j j J TE 0 Slo 5 o roo Figura 2 50 Panel de visualizaci n de cajas delimitadoras Este panel permite ver los rboles de cajas delimitadoras Bounding Box Trees normales y de contacto en todos sus niveles
177. uando uno o m s de los nodos tiene masa infinita ya sea porque forma parte de un objeto r gido o porque su movimiento est restringido Por ello al programar la ecuaci n interesa hacerlo sustituyendo cada sumando del denominador por un coeficiente c a c4 como muestra la S6 ecuaci n 2 81 De esta forma se puede ir nodo a nodo y anular los coeficientes de todos aquellos nodos de masa infinita El Diagrama 2 12 muestra el algoritmo completo del c lculo de impulsos resultantes debidos a colisiones entre nodos y tri ngulos En l se calculan los coeficientes c a c en funci n de la masa de los nodos nt 1 2 i PN Cy Co C2 C4 2 81 INICIO Leer masas velocidades medias estimadas Calcular coordenadas baric ntricas wi a w3 Calcular velocidad relativa estimada en la direcci n normal GE GM _ wi GHZ a _ wat oon Cy Fla Hg Hy m infinita Diagrama 2 12 Algoritmo de c lculo de los impulsos resultantes debido a una colisi n entre un nodo y un tri ngulo adaptado a posibles objetos r gidos 57 b C lculo de los impulsos debidos a la colisi n de dos aristas De forma similar a la anterior se puede calcula la componente normal de la velocidad relativa entre las dos part culas que van a colisionar y se iguala a cero debido al choque inel stico Se sustituyen las ecuaciones de las velocidades de las part culas que van chocar calculadas en 2 76 en la primera ecuaci n
178. ue est n en contacto De esta forma no se tienen que comparar las cajas delimitadoras de todos los tri ngulos presentes en una escena sino que se pueden agrupar en cajas delimitadoras m s grandes y realizar una b squeda de solapamientos m s inteligente El Diagrama 2 4 muestra el algoritmo implementado para detectar contactos de forma aproximada de dos nodos diferentes Es un algoritmo recursivo que crea una lista de nodos terminales que presentan solapamiento La nomenclatura que se sigue es la siguiente e Cajal Caja delimitadora correspondiente al Nodol o Izquierdal Nodo izquierdo hijo del Nodol o Derechal Nodo derecho hijo del Nodol 20 e Caja2 Caja delimitadora correspondiente al Nodo2 o Izquierda2 Nodo izquierdo hijo del Nodo2 o Derecha2 Nodo derecho hijo del Nodo2 Figura 2 10 Una r pida comprobaci n de verificaci n entre la caja delimitadora del cono y de la esfera los descarta como superpuestos A continuaci n se describe el proceso de detecci n aproximada de contactos entre dos nodos diferentes l Si la caja del nodo 1 y la del nodo 2 se no se superponen el algoritmo finaliza pues seguro que sus hijos tampoco se superpondr n 2 En funci n de si los nodos son terminales o no se distinguen los casos siguientes a Los dos nodos son terminales e Los nodos contienen a la pareja de tri ngulos que pueden estar en contacto por lo que se a aden a la lista b Uno de los nodos es terminal
179. ues sta tiene todas las herramientas necesarias para simular La nica excepci n son las clases DeformablePlanarObject y RigidObject pues estas est n dise adas para cargar las restricciones de velocidad de un archivo velConstraintFileName Constructor of the deformable planar object class DeformablePlanarObject int fps float gravity RCShdPtr lt GeMesh gt initialMesh const String parFilename const String amp velConstraintFileName Constructor of the rigid object class RigidObject const String meshFilename const String parFilename const Stringg velConstraintsFilename Un planificador de la manipulaci n de tejidos para el que se ha desarrollado dpoSimulator c mo se explica en la Introducci n requerir tener un control directo sobre las restricciones de velocidad de los objetos Lo que es m s el planificador ser el que escoger qu restricciones de velocidad se deben aplicar Por ello no ser oportuno que las velocidades se carguen de un archivo por lo que los constructores de estas dos clases se deber n cambiar Por restricci n de tiempo no se ha acabado de optimizar el c digo Se cree que un programador experimentado puede optimizar m s el programa en caso de que sea necesario utilizando un profiler ste indica el porcentaje de tiempo que se dedica a cada funci n de forma acumulativa El Diagrama 2 15 muestra de forma gr fica el resultado del profiler Valgrind Para utilizarlo se escribe
180. ular como una aproximaci n por m nimos cuadrados del c lculo de coordenadas baric ntricas del nodo suponiendo que forma parte del tri ngulo Cabe destacar que para que un punto se pueda definir con coordenadas baric ntricas debe estar en el plano del tri ngulo Por ello el nodo xy no se puede definir con coordenadas baric ntricas Sin embargo la aproximaci n por m nimos cuadrados para calcular las coordenadas baric ntricas del nodo x4 da como resultado las coordenadas baric ntricas de la proyecci n de dicho nodo sobre el tri ngulo Bridson Fedkiw amp Anderson 2002 Por ello se puede convertir la ecuaci n 2 22 en la 2 25 X1W1 X2W gt X3W3 X 4 2 25 25 Poniendo w en funci n de w y w2 de la ecuaci n 2 24 y reordenando t rminos se llega a la ecuaci n 2 26 y en forma matricial 2 27 X13W1 X23W2 X43 2 26 X13 X23 w X43 2 27 Para realizar la aproximaci n por m nimos cuadrados se multiplica por la transpuesta del vector de posiciones relativas llegando a la ecuaci n 2 28 ES X13 X23 i GE X43 2 28 X23 X23 Es X13 X13 ee 2 i x 2 29 X23 X13 X23 X23 W2 X23 X43 Aunque el m todo de Cramer no es eficiente para matrices de grandes dimensiones s lo es para el sistema que se presenta Por ello se resuelve en las ecuaciones 2 30 y 2 31 para w y w2 En la ecuaci n 2 32 se resuelve para w3 o X43 X13 a X32 X X32 X w4 23 E 43 23 23
181. un caso real de simulaci n en el que los nodos son coplanarios dentro del intervalo de tiempo simulado En el Gr fico 2 3 la ra z queda fuera del intervalo simulado por lo que los nodos no llegan a ser coplanarios 1 00E 05 5 00E 06 0 00E 00 N 0 05 2 5 00E 06 p3 t 1 00E 05 1 50E 05 2 00E 05 t s Gr fico 2 2 Caso real en el que los nodos llegan a ser coplanarios durante el intervalo de simulaci n que es de 0 1s p3 t 1 034E 5t 1 24E 4t 7 84E 6 1 00E 05 5 00E 06 0 00E 00 LAS 5 00E 06 p3 t 1 00E 05 1 50E 05 2 00E 05 tiempo s Gr fico 2 3 Caso real en el que los nodos nollegan a ser coplanarios durante el intervalo de simulaci n que es de 0 05s p3 t 3 27E 3t 1E 4t 3 98E 6 Si se ha encontrado ra z t que cumpla la ecuaci n 2 51 se puede decir que se cumple la primera condici n de colisi n en el intervalo que los cuatro nodos en alg n momento sean coplanarios Sin embargo para comprobar que hay colisi n tambi n se debe cumplir la segunda condici n Es decir en el momento en el que los cuatro nodos son coplanarios el nodo x4 debe estar dentro del tri ngulo formado por los otros tres nodos Si no se realizase esta segunda comprobaci n un caso 41 como el segundo de la Figura 2 25 podr a registrarse como colisi n dando lugar a un falso positivo Caso 1 Hay colisi n Caso 2 No hay colisi n Figura 2 25 En el caso 1 se cumplen las dos
182. unda es la complejidad de la organizaci n de los coeficientes de fricci n est ticos y din micos entre los diferentes objetos de la escena En cualquier caso la fricci n en caso de implementarse actuar a en forma de impulsos que se sumar an a los de repulsi n debido al contacto Bridson Fedkiw amp Anderson 2002 105 4 Bibliograf a 10 11 12 13 14 15 16 17 18 Andrade Cetto J 2005 The Kalman Filter Barcelona Ascher U M amp Boxerman E n d On the modified conjugate gradient method in cloth simulation Visual Computer manuscript Baraff D amp Witkin A 1998 Large Steps in Cloth Simulation Computer Graphics Proceedings Annual Conference Series 43 54 Baraff D Witkin A amp Kass M 2003 Untangling Cloth Proceedings of ACM SIGGRAPH 2003 22 3 862 870 Bradski G amp Kaehler A 2008 Histograms and Matching In G Bradski amp A Kaehler Learning OpenCV Computer Vision with the OpenCV Library pp 193 221 Sebastopol O Reilly Media Bridson R Fedkiw R amp Anderson J 2002 Robust treatment of collisions contact and friction for cloth animation ACM Transactions on Graphics vol 21 no 3 Ceballos F J 2007 Programaci n orientada a objetos con C 4 Edici n ed Madr d RA MA CISST n d How to document code for Doxygen Retrieved 08 25 2008 from http www cisst org cisst cis doxygen documentation ht
183. ya existiese y la volver a crear Las im genes se guardar n de forma consecutiva con el nombre frame000000 jpg frame000001 jpg frame000002 jpg etc La Figura 2 69 muestra las im genes guardadas en intervalos de 3 ms de la simulaci n de la escena HangingCloth2 Guardar im genes consecutivas con esta opci n resulta muy til para grabar videos El siguiente comando en una terminal de Linux ejecutado desde la carpeta frames genera un video movie avi de 10 fps con todas las imagenes guardadas en dicho directorio mencoder mf jpg mf fps 10 o movie avi ove lave lavcopts vcodec msmpeg4v2 vbitrate 800 Figura 2 69 De la izquierda a derecha y arriba a abajo se muestra la evoluci n de ca da de un trozo de ropa colgado de dos esquinas en intervalos de 5 milisegundos se corresponde a la escena ClothHanging2 Las im genes se han guardado verificando la casilla Save render to file f Save step iteration meshes De la misma forma que el simulador permite guardar im genes dpoSimulator permite guardar todas las estimaciones del estado siguiente que se generan en las iteraciones que realiza el algoritmo de resoluci n de colisiones para m s informaci n consulte el apartado 2 2 1 Las mallas quedan guardadas en la carpeta iterationMeshes en el directorio ra z del programa en formato stl Se ha desarrollado un programa auxiliar llamado stlViewer que permite ver todo un grupo de mallas con colores aleatorios pero que
Download Pdf Manuals
Related Search
Related Contents
iPlanet Integration Server EAI, 3.1 Release Notes Flea & Tick Killer - KellySolutions.com Philips Daily Collection Toaster HD2586/29 Service Manual JCB 354/360 TRACTOR ルミパルスプレスト PIVKAⅡ エーザイ 2009年6月26日 - 株式会社キャプテン MANUAL INSTRUÇÕES SECADORA 8Kg.cdr Samsung Gear S 用戶手冊 MX2 INVERTER Manual del usuario Copyright © All rights reserved.
Failed to retrieve file