Especificaciones estructurales y métodos de implementación de VRML
VRML proporciona 54 tipos de nodos, llamados tipos de nodos internos. Sin embargo, las aplicaciones reales pueden requerir nuevos tipos de nodos. El prototipo es el mecanismo básico para que VRML implemente la expansión del tipo de nodo. Los nuevos tipos de nodos se definen en función de los tipos de nodos ya definidos (internos o prototipos). Una vez definidos, los tipos de nodos prototipo se pueden crear instancias en el gráfico de escena al igual que los tipos de nodos internos. Los prototipos se pueden definir y utilizar en el archivo actual, o se pueden definir en otros archivos, es decir, los prototipos externos proporcionan un mecanismo para que los tipos de nodos abarquen la red.
El ejemplo de prototipo en esta sección está tomado del estándar VRML97, que define un tipo de tabla. El prototipo es:
#VRML V2.0 utf8
PROTO TwoColor Table [ campo SFColor legColor. 0,8 0,4 0,7
campo SFColor topColor 0,6 0,6 0,1 ]
}
Transformar {
hijos [
Transformar {
traducción 0.0 0.6 0.0
niños [
Transformar {
apariencia Apariencia {
material Material { difuseColor IS topColor }
}
cuadro de geometría { tamaño 1.2 0.2 1.2 }
}
}
Transformar {
traducción -0.5 0 -0.5
niños [
DEF Forma de pierna {
apariencia Apariencia { color difuso IS color de pierna }
}
geometría Cilindro { altura 1 radio 0,1 }
}
]
}
Transformar { #Otra pata de la mesa
traducción 0.5 0 -0.5
niños USE Pierna
}
Transformar { # Otra pata de la mesa
traducción -0.5 0 0.5
niños USE Pierna
}
Transformar { # Otra pata de la mesa p>
traducción 0.5 0 0.5
hijos USE Leg
}
]#Fin del hijo del nodo raíz Transform
} #Root Transform end
}#Prototype end
La declaración del prototipo PROTO se divide en dos partes: declaración de la interfaz del prototipo y definición del prototipo. La declaración de la interfaz incluye los tipos y nombres del prototipo. eventos entrantes y salientes, así como el tipo, nombre y valor predeterminado de los campos del prototipo.
La declaración de interfaz aquí es:
PROTO TwoColorTable [ campo SFColor legColor 0.8 0.4 0.7
campo SFColor topColor 0.6 0.6 0.1 ]
El nombre del tipo de este prototipo es " "TwoColorTable" (tabla de dos colores), tiene dos campos: legColor (color de pata de la mesa) y topColor (color de la superficie de la mesa). Como tipo de nodo, TwoColorTable se puede utilizar igual que otros tipos de nodos internos. Por ejemplo, la siguiente declaración define un nodo de tipo TwoColorTable, cuyas patas son rojas y el escritorio es verde:
TwoColor Table {.
legColor 1 0 0 topColor 0 1 0
}
Después de la declaración de la interfaz está el cuerpo del prototipo, que se denomina definición del prototipo. La definición del prototipo es en realidad un gráfico de escena, que consta de uno o más nodos raíz, declaraciones PROTO integradas y declaraciones ROUTE. El primer tipo de nodo determina cómo se utiliza la instancia del prototipo en el archivo VRML. Por ejemplo, si el primer nodo en la definición del prototipo es un nodo Material, la instancia del prototipo se puede usar dondequiera que se pueda usar un nodo Material. Otros nodos definidos en la definición del prototipo y los gráficos de escena que los acompañan no ingresan a la capa de transformación donde se encuentra la instancia del prototipo, pero pueden ser referenciados mediante la instrucción ROUTE o el nodo Script en la definición del prototipo. El primer nodo en el prototipo TwoColorTable es el nodo del grupo Transform, que determina el método del nodo TwoColorTable en el gráfico de escena. Agregar un nodo TwoColorTable al gráfico de escena equivale a agregar una Transformación.
Definición de prototipo. Los dominios, eventos entrantes y eventos salientes del nodo intermedio se pueden asociar a través de la declaración IS y el dominio, eventos entrantes y eventos salientes en la declaración de la interfaz. La asociación en realidad equivale a exponer estos dominios y eventos en la definición del prototipo. como los dominios y eventos del prototipo. Las reglas básicas de asociación son que los dominios están asociados entre sí, los eventos entrantes están asociados con eventos entrantes y los eventos salientes están asociados con eventos salientes. Los dominios expuestos en la definición del prototipo pueden asociarse con dominios, eventos entrantes, eventos salientes o. dominios expuestos en la declaración de interfaz. Hay dos asociaciones en este ejemplo: entre el campo difusoColor del escritorio y el campo topColor en la declaración de interfaz, y entre el campo difusoColor de las patas de la mesa y el campo legColor en la declaración de interfaz. En otras palabras, los valores topColor y legColor en el nodo de tipo TwoColorTable en realidad determinan el color difuso de las patas del escritorio y la mesa, respectivamente.