• No se han encontrado resultados

a) Cambie la ventana a una posición de 100, 150, el tamaño de la ventana de 500, 700 y escribe el nombre prueba1

N/A
N/A
Protected

Academic year: 2022

Share "a) Cambie la ventana a una posición de 100, 150, el tamaño de la ventana de 500, 700 y escribe el nombre prueba1"

Copied!
16
0
0

Texto completo

(1)

Universidad nacional Autónoma de México Facultad de Ingeniería

Laboratorio de Computación Grafica

Profesora: Ing. Elizabeth Fonseca Chávez

Entrega de práctica Nº 2:

Modelado

Ortiz Servín Belem Valeria

Fecha de entrega: 2009-02-26

(2)

Desarrollo

a)

Cambie la ventana a una posición de 100, 150, el tamaño de la ventana de 500, 700 y escribe el nombre

“prueba1

Mi primera escena

(3)

b) De base.cpp que tipo de despliegue tiene y significa: en el código de base.cpp no utilizamos la función glutInitDisplayMode, lo cual al iniciar ejecutar el programa sin esa función, nos da el despliegue por default que tiene el búfer usado en este código

c)De glClearColor(); lo que contiene adentro son valores de tipo float(f), que representa un color entre 0 y 1; y que junto con el valor de todos los colores forman un color final. glClearColor (rojo, verde, azul, alfa).

Sus posibles combinaciones son entre 0 y 255.

RGB, significa rojo, verde y azul, colores primarios que son las combinaciones para obtener un color secundario, el alfa es un nivel de transparencia, que por el momento siempre se mantendrá con valor de “1”. Las combinaciones más utilizadas RGB son: Blanco: 1.0,1.0,1.0; Negro: 0.0,m0.0,0.0; Rojo:1.0,0.0,0.0;

Azul:0.0,0.0,1.0; Verde: 0.0,1.0,0.0; Amarillo: 1.0 ,1.0, 0.0; Café: 0.60,0.40,0.70; etc. Cambie de color azul a color Café y después a color amarillo la pantalla.

Pantalla Color café

Pantalla Color amarilla

(4)

Cambie el nombre de la función RenderScene por dibujar escena, en las dos partes donde aparece, y mencione cuales son:

En la parte donde se comienza a definir la aparición de la figuras y es después de la función de cubo referencia. La otra parte donde se menciona es en el main, que hace una llamada a la función para que en la escena aparezca la pantalla con el cubo.

1ª aperción

2ª aparición

Parte 2. Modelado

En esta parte se explicara las tres formas más frecuentes de realizar un modelo, se adicionara color; y después se pedirá al alumno escribirlo y cambiar algunas partes.

Tenemos tres formas muy frecuentes de trabajar para realizar un modelo 1) Función predefinida simple

2) Vértices 3) Quadrics

Una función predefinida, es aquella que solo se coloca el nombre y en sus argumentos tiene lo necesario para ser representado en una escena. Los vértices funcionan mediante begin/end; y los quadrics son objetos que deben declararse, crearse e utilizarse.

1. Funciones predefinidas simples: el rectángulo y los objetos 3D.

glRectf(10.0f,15.0f,10.0f); //dibuja un rectángulo con esquinas izquierda (x1,x2), de tipo real (float).

(5)

Objetos geométricos 3D:

void glutSolidCube(lados); //cubo solido centrado en el origen void glutWireCube(lados); // cubo alambrado centrado en el origen

void glutWireSphere(radio, subdivisiones alrededor Z “slices”, subdivisiones a lo largo de Z” stacks) //esfera alambrada

void glutSolidSphere(radio, slices, stacks) //esfera solida

• glutSolidSphere, glutWireSphere

glutSolidCube, glutWireCube

glutSolidCone, glutWireCone

glutSolidTorus, glutWireTorus

glutSolidDodecahedron, glutWireDodecahedron

glutSolidOctahedron, glutWireOctahedron

glutSolidTetrahedron, glutWireTetrahedron

glutSolidIcosahedron, glutWireIcosahedron

glutSolidTeapot, glutWireTeapot

La explicación para cada una está en:

http://www.opengl.org/resources/libraries/glut/spec3/node80.html

El numero de subdivisiones afecta al modelo, si son muy pocas el modelo quizá no alcanza a construirse bien y si son demasiadas solo se gasta memoria.

NOTA: Para cada modelado es posible asignarle un color, si antes de mandar a llamar el comando del objeto, se coloca el color mediante glColor3f(R,G,B), con las combinaciones presentadas antes. Por ejemplo para asignarle color a un cubo:

glColor3f(1.0f,0.0f,0.0f); // ..3f significa tres argumentos de tipo float

glutSolidCube(10.0f); //se mostrara en el centro de coordenadas un cubo de 10 unidades.

a) Dentro del RenderScene o directamente en el main, escribe lo necesario para que se vea un rectángulo, de cualquier tamaño.

(6)

b) Dentro del RenderScene o directamente en el main, escribe lo necesario para que se vea un cubo, de tamaño: 10.

c) Dentro del RenderScene o directamente en el main, escribe lo necesario para que se vea una esfera, de tamaño 15.

(7)

d) Del inciso c, prueba varios valores de las subdivisiones, presenta pocas subdivisiones, donde el modelo no parezca lo pedido; presenta con 15 subdivisiones como se ve, y como se ve con muchas.

Vista con 15 subdivisiones y 1500 subdivisiones, respectivamente. Después de 2000 subdivisiones se ve:

(8)

2. Vértices.

ALUMNOS A TRABAJAR: Sigua copiando en la página en “Word” llenando la práctica con preguntas, respuestas e impresión de pantallas.

a) Realice una línea que atraviese el cubo alambrado de base.cpp a lo largo del eje x.

b) Investigue que hace cada primitiva contenida en glBegin.

Con la función glBegin() junto con la función glEnd() se especifica la o las primitivas que que se crearán de los véritices presentados entre estas dos funciones. Las especificaciones para estas funciones en C son:

(9)

void glBegin(GLenum mode) y void glEnd(). Para la función glBegin las 10 contantes simbólicas que puede aceptar son:

GL_POINTS, GL_LINES, GL_LINE_STRIP, GL_LINE_LOOP, GL_TRIANGLES, GL_TRIANGLE_STRIP, GL_TRIANGLE_FAN, GL_QUADS,

GL_QUADS_STRIP GL_POLYGON.

Por lo tanto son 10 los tipos de objetos que se pueden crear con esta función.

glBegin(GL_POINTS): Se dibuja un punto en las coordenadas especificadas y con el color actual por cada llamado a glVertex.

glBegin(GL_LINES): Con esta primitiva es posible dibujar lineas separadas. Cada par de vértices especificados dibuja una línea y si se especifica un número impar de vértices, el último es ignorado.

glBegin(GL_LINE_STRIPS): Permite dibujar un conjunto de líneas conectadas, donde los dos primeros vértices forman una línea y cada vértice adicional genera una línea que une dicho a vértice con último suministrado antes de este.

glBegin(GL_LINE_LOOP): Para dibujar líneas en ciclo, es siimilar a LINE_STRIPS, con la diferencia de que el último vértice en ser suministrado se une con el primero para formar una última línea.

glBegin(GL_TRIANGLES): Cada tres vértices se genera un nuevo triangulo con la cara frontal determinada por el orden que esté activo, bien sea CCW o CW. Evidentemente la cantidad de vértices debe ser 0 o múltiplo de tres, los últimos vértices que no correspondan a ninguna tríada son despreciados.

glBegin(GL_TRIANGLE_STRIP): Empleada para dibujar triángulos conectados, los primeros tres vértices generan un triangulo y luego cada vértice adicional genera otro que comparte un lado del triangulo anterior, es decir si se suministran los vértices a,b,c,d,e se formarán los triángulos abc , cbd y cde.

(10)

glBegin(GL_TRIANGLE_FAN): Para dibujar triángulos en abanico, esta primitiva genera un conjunto de triángulos alrededor de un punto común, al igual que TRIANGLE_STRIPS, éstos están conectados por un lado. En este caso el proporcionar los vértices a,b,c,d,e generarán los triángulos abc, acd y ade

glBegin(GL_QUADS): Se utiliza para dibujar rectángulos independientes. Con cada cuatro vértices proporcionados es generado un rectángulo, si son proporcionados vértices que no corresponden a ningún grupo de cuatro, dichos vértices son descartados.

glBegin(GL_QUAD_STRIP): Genera rectángulos conectados. Los primeros cuatro vértices generan un rectángulo, luego cada par adicional de vértices genera un nuevo rectángulo conectado con los dos últimos vértices especificados en el anterior.

glBegin(GL_POLYGON):Esta primitiva es una representación general de un polígono, lo que incluye un triángulo, rectángulo o cualquier polígono de n lados. Existe una restricción adicional y es que al especificar polígonos, además de que todos los vértices tienen que ser coplanares, el polígono debe ser convexo. Si alguna o ambas de estas condiciones no se cumplen, OpenGL dibujará los polígonos de formas no esperadas y generalmente indeseables.

b)

Introduzca a base.cpp, el dibujo de un abanico de tres triángulos. Utilice:

GL_TRIANGLE_STRIP y GL_LINES.

Diga cuanto se ahorro de código al utilizar una

de las primitivas y porque

.

(11)

Abanico con GL_LINES Abanico con GL_TRIANGLE_STRIP

Con el uso de GL_LINES, el código empleado fue mucho mas largo ya que tuvimos

que crear cada una de las líneas del abanico, cuidar que los vértices de un triangulo se

repitieran en los otros para que quedaran unidos y formaran el abanico. En cambio con

GL_TRIANGLE_STRIP, solo necesitamos definir unos cuantos vértices ya que no

trata los vértices en parejas, si no que el primer vértice y el segundo definirían una

línea, y el final de ésta definiría otra línea con el siguiente vértice y así sucesivamente,

definiendo un segmento continuo.

(12)

3. Quadrics

ALUMNOS A TRABAJAR: Sigua copiando en la página en “Word” llenando la práctica con preguntas, respuestas e impresión de pantallas.

a)

Observe donde se declaro en base.cpp, el objeto

Como se llamo este objeto: quadobj, donde se creó: cilindro ( ), que quadrics se utilizó QuadricDrawStyle ( )y QuadricNormals( ) y verifique fue destruido: fue destruido quadobj Donde? Después de que se vaciara la matriz, en glMatrixMode. Al final del método cilindro ( )

.

b)

Utilice el mismo objeto para desplegar una esfera.

c)

Cree otro objeto y despliegue un disco.

(13)

d)

Investigue que son los NURBS y como se utilizan.

Las superficies NURBS (NURMS en inglés) son curvas/líneas racinales no uniformes, se usan para el modelado industrial y/o orgánico, aunque para este último resultan obsoletas, pues un personaje modelado con NURBS es imposible de animar correctamente. Existen unos principios de modelado orientado a personajes y a animación de los mismos llamados "Edge Loops", que vienen a decir que toda la topología de la malla ha de ser "Quads"

(polígonos de cuatro lados) y que en las distintas articulaciones del personaje (codos, rodillas, dedos, labios...) tiene que haber forzosamente un cierto nivel de subdivisión poligonal (número de polígonos) para que estas se puedan animar/deformar correctamente, al ser las NURBS superficies controladas por curvas, hacen imposible el principio básico de los "Edge Loops".

El desarrollo de NURBS empezó en 1950 por ingenieros que necesitaban la representación matemática exacta de superficies de forma libre como las usadas en carrocerías de automóviles y cascos de barcos. Con el fin de ser reproducidos exacta y técnicamente en cualquier momento. Las anteriores representaciones de este tipo de diseños sólo podían hacerse con modelos físicos o maquetas realizadas por el diseñador o ingeniero. .Los pioneros en esta investigación fueron Pierre Bézier quien trabajaba como ingeniero en Renault, y Paul de Casteljau, en Francia. Aunque los dos trabajaron en modelos matemáticos muy parecidos y paralelos ninguno de los dos conoció el trabajo que el otro desarrollaba. El trabajo de Bezier fue publicado primero y por esta razón tradicionalmente se le ha asociado a las splines. El nombre de Casteljau solamente ha sido asociado al desarrollo de algoritmos para la evaluación de las splines.

Las NURBS, B-splines racionales no uniformes, son representaciones matemáticas de geometría en 3D capaces de describir cualquier forma con precisión, desde simples líneas en 2D, círculos, arcos o curvas, hasta los más complejos sólidos o superficies orgánicas de forma libre en 3D. Gracias a su flexibilidad y precisión, se pueden utilizar modelos NURBS en cualquier proceso, desde la ilustración y animación hasta la fabricación.

La geometría NURBS tiene cinco cualidades esenciales que la convierten en la opción ideal para el modelado asistido por ordenador.

Existen varias formas estándar industriales para intercambiar la geometría NURBS. Los usuarios pueden transportar todos sus modelos geométricos entre los diferentes programas de modelado, renderizado, animación e ingeniería de análisis que hay en el mercado. Estos programas pueden almacenar información geométrica que podrá ser utilizada durante más de 20 años. Las NURBS tienen una definición precisa y muy conocida. La geometría NURBS se enseña en las facultades de matemáticas e informática de las universidades más importantes. Eso significa que los vendedores de software especializado, los equipos de ingenieros, las empresas de diseño industrial y las empresas de animación que necesitan crear aplicaciones de software específicas para sus

(14)

proyectos podrán encontrar programadores capacitados para trabajar con la geometría NURBS. Las NURBS pueden representar con precisión objetos geométricos estándar tales como líneas, círculos, elipses, esferas y toroides, así como formas geométricas libres como carrocerías de coches y cuerpos humanos. La cantidad de información que requiere la representación de una forma geométrica en NURBS es muy inferior a la que necesitan por separado las aproximaciones comunes. La regla de cálculo de las NURBS, que se describe a continuación, se puede implementar en un ordenador de manera eficaz y precisa. ¿Qué es la geometría NURBS? Las curvas y superficies NURBS se comportan de maneras similares y comparten mucha terminología. Proporcionaremos información más detallada sobre las curvas, porque son más fáciles de describir. Una curva NURBS se define mediante cuatro elementos: grados, puntos de control, nodos y regla de cálculo.

La geometría NURBS tiene cinco cualidades esenciales que la convierten en la opción ideal para el modelado asistido por ordenador.

 Existen varias formas estándar industriales para intercambiar la geometría NURBS. Los usuarios pueden y deberían ser capaces de transportar todos sus modelos geométricos entre los diferentes programas de modelado, renderizado, animación e ingeniería de análisis que hay en el mercado. Estos programas pueden almacenar información geométrica que podrá ser utilizada durante más de 20 años.

 Las NURBS tienen una definición precisa y muy conocida. La geometría NURBS se enseña en las facultades de matemáticas e informática de las universidades más importantes. Eso significa que los vendedores de software especializado, los equipos de ingenieros, las empresas de diseño industrial y las empresas de animación que necesitan crear aplicaciones de software específicas para sus proyectos podrán encontrar programadores capacitados para trabajar con la geometría NURBS.

 Las NURBS pueden representar con precisión objetos geométricos estándar tales como líneas, círculos, elipses, esferas y toroides, así como formas geométricas libres como carrocerías de coches y cuerpos humanos.

 La cantidad de información que requiere la representación de una forma geométrica en NURBS es muy inferior a la que necesitan por separado las aproximaciones comunes.

 La regla de cálculo de las NURBS, que se describe a continuación, se puede implementar en un ordenador de manera eficaz y precisa.

¿Qué es la geometría NURBS?

Las curvas y superficies NURBS se comportan de maneras similares y comparten mucha terminología.

Proporcionaremos información más detallada sobre las curvas, porque son más fáciles de describir. Una curva NURBS se define mediante cuatro elementos: grados, puntos de control, nodos y regla de cálculo.

(15)

Grado

Un grado es un número entero positivo.

Este número normalmente es 1, 2, 3 o 5, per puede ser cualquier número entero positivo. Las líneas y polilíneas NURBS de Rhino son grado 1, los círculos de Rhino son grado 2 y la mayoría de las formas libres de Rhino son grado 3 o 5. A veces se utilizan los siguientes términos: lineal, cuadrático, cúbico y quíntico. Lineal significa de grado 1, cuadrático significa de grado 2, cúbico significa de grado 3 y quíntico significa de grado 5.

Es posible que vea referencias del orden de una curva NURBS. El orden de una curva NURBS es un número entero positivo igual a (grado+1). En consecuencia, el grado es igual a orden-1.

Existe la posibilidad de incrementar los grados de una curva NURBS sin cambiar su forma. Generalmente, no es posible reducir el grado de una curva NURBS y no cambiar su forma.

Puntos de control

Los puntos de control son una lista de puntos de grado+1 como mínimo.

Una de las maneras más sencillas de cambiar la forma de una curva NURBS es mover los puntos de control.

Los puntos de control tienen un número asociado denominado peso.Con algunas excepciones, los pesos son números positivos. Cuando todos los puntos de control de una curva tienen el mismo peso (normalmente 1), la curva se denomina no racional; de lo contrario, se trataría de una curva racional. En NURBS, la R significa racional e indica que una curva NURBS tiene la posibilidad de ser racional. A la práctica, la mayoría de las curvas NURBS son no-racionales. Algunas curvas, círculos y elipses NURBS, ejemplos significativos, son siempre racionales.

Nodos

Los nodos son una lista de números de grado+N-1, donde N es el número de puntos de control. A veces esta lista de números se denomina vector nodal. En este contexto, la palabra vector no significa una dirección 3D.

Esta lista de números de nodos debe cumplir varias condiciones técnicas. El modo estándar para asegurar que las condiciones técnicas se cumplan es requerir que el número se mantenga igual o aumente a medida que vaya bajando en la lista y limitar el número de valores duplicados a que no sea superior al grado. Por ejemplo, para una curva NURBS de grado 3 con 15 puntos de control, la lista de números 0,0,0,1,2,2,2,3,7,7,9,9,9 es una lista de nodos satisfactoria. La lista 0,0,0,1,2,2,2,2,7,7,9,9,9 no es aceptable porque hay cuatro 2, y cuatro es un número mayor que el grado.

El número de veces que un valor nodal se duplica se denomina multiplicidad nodal. En el ejemplo anterior de lista satisfactoria de nodos, el valor nodal 0 tiene una multiplicidad de tres, el valor nodal 1 tiene una multiplicidad de uno, el valor nodal 2 tiene una multiplicidad de tres, el valor nodal 3 tiene multiplicidad de uno, el valor nodal 7 tiene una multiplicidad de dos y el valor nodal 9 tiene una multiplicidad de tres. Se dice que un valor nodal es un nodo de multiplicidad total si se multiplica por su grado varias veces. En el ejemplo, los valores de nodo 0, 2, y 9 tienen multiplicidad total. El valor de un nodo que aparece una sola vez se denomina nodo simple. En el ejemplo, los valores del nodo 1 y 3 son nodos simples.

(16)

Si una lista de nodos se inicia con un nodo de multiplicidad completa, la siguen nodos simples, termina con un nodo de multiplicidad completa y los valores se espacian uniformemente, entonces los nodos son uniformes. Por ejemplo, si una curva NURBS de grado 3 con 7 puntos de control tiene nodos 0,0,0,1,2,3,4,4,4, la curva tendrá nodos uniformes. Los nodos 0,0,0,1,2,5,6,6,6 no son uniformes. Los nodos que no son uniformes se denominan no uniformes. Las letras N y U de la palabra NURBS significan no uniforme e indican que los nodos de una NURBS puede ser no uniformes.

Los valores duplicados del nodo en la mitad de la lista del nodo hacen que una curva de NURBS sea menos suave. En caso extremo, un nodo de completa multiplicidad en la mitad de la lista de nodos significa que hay un lugar en la curva NURBS que se puede doblar en un punto de torsión. Por esta razón, a algunos diseñadores les gusta agregar y quitar nodos y luego ajustar los puntos de control para hacer curvas más suaves o figuras torsionadas. Debido a que el número de nodos es igual a (N+grado 1), donde N es el número de puntos de control, si se agregan nodos también se agregan puntos de control, y si se quitan nodos se quitan puntos de control. Los nodos se pueden añadir sin cambiar la forma de la curva de NURBS. En general, quitar nodos cambiará la forma de una curva.

Nodos y puntos de control

Un error frecuente se produce cuando cada nodo se empareja con un punto de control, y ocurre sólo en las NURBS de grado 1 (polilíneas). Para curvas NURBS de grados más altos, existen grupos de nodos de 2 x grado que corresponden a grupos de puntos de control de grado+1. Por ejemplo, suponga que tiene curvas NURBS de grado 3 con 7 puntos de control y nodos 0,0,0,1,2,5,8,8,8. Los primeros cuatro puntos de control están agrupados con los primeros seis nodos. Del segundo hasta el quinto punto de control están agrupados con los nodos 0,0,1,2,5,8. Del tercer al sexto punto de control están agrupados con los nodos 0,1,2,5,8,8. Los últimos cuatro puntos de control están agrupados con los últimos seis nodos.

Algunos modeladores que utilizan algoritmos más antiguos para el cálculo de curvas NURBS necesitan dos valores de nodos extra para un total de nodos grado+N+1. Cuando Rhino exporta e importa geometría NURBS, agrega y quita automáticamente estos dos nodos sobrantes, ya que la situación lo requiere.

Regla de cálculo

La regla de cálculo de una curva utiliza una fórmula matemática que coge un número y asigna un punto. La regla de cálculo NURBS es una fórmula que comprende el grado, los puntos de control y los nodos. En la fórmula hay lo que se llama funciones básicas de B-spline. Las letras B y S de la palabra NURBS significan “basis spline.”El número de cálculo con que empieza la regla de cálculo se denomina parámetro. Puede imaginarse la regla de cálculo como una caja negra que se come un parámetro y produce un punto. El grado, los nodos y los puntos de control determinan el funcionamiento de la caja negra.

Referencias

Documento similar

Cedulario se inicia a mediados del siglo XVIL, por sus propias cédulas puede advertirse que no estaba totalmente conquistada la Nueva Gali- cia, ya que a fines del siglo xvn y en

Where possible, the EU IG and more specifically the data fields and associated business rules present in Chapter 2 –Data elements for the electronic submission of information

The 'On-boarding of users to Substance, Product, Organisation and Referentials (SPOR) data services' document must be considered the reference guidance, as this document includes the

In medicinal products containing more than one manufactured item (e.g., contraceptive having different strengths and fixed dose combination as part of the same medicinal

Products Management Services (PMS) - Implementation of International Organization for Standardization (ISO) standards for the identification of medicinal products (IDMP) in

Products Management Services (PMS) - Implementation of International Organization for Standardization (ISO) standards for the identification of medicinal products (IDMP) in

This section provides guidance with examples on encoding medicinal product packaging information, together with the relationship between Pack Size, Package Item (container)

Package Item (Container) Type : Vial (100000073563) Quantity Operator: equal to (100000000049) Package Item (Container) Quantity : 1 Material : Glass type I (200000003204)