Desde la versión 7 de Softimage XSI se incluye ICE (Interactive Creative Environment). Desde su inclusión significó una revolución dentro de la creación de efectos en 3D, ya que de una forma muy sencilla (aunque al principio despista a la hora de entenderlo, pero una vez entendido es algo muy sencillo de realizar). ICE nos permite modificar los objetos mediante la combinación de unos nodos.
Empezamos
Vamos a empezar a entender cual es la filosofia de trabajo con ICE. Estos nodos los vamos a ir componiendo desde una interface similar al Render Tree, llamada ICE Tree (Alt + 9). La forma de modificar estos nodos es sencilla. Solo tenemos que crear un ICE Tree en el objeto que queremos modificar. Este nodo obtiene los datos de otros nodos, que son los que harán que nos muestre el objeto de una determinada forma. Por ejemplo, vamos a incluir un nodo llamado GetData (Obtener datos). Con este nodo podemos obtener los valores de cualquier parámetro del objeto. Los nodos tienen unos puntos de entrada que le dan unos valores al nodo, el nodo hace algo, y saca esos valores por los puntos de salida. Necesitamos ahora otro nodo que recoga estos valores. Este tipo de nodo se llama SetData (Dar datos). El nodo anterior nos da unos valores que expulsa y este nodo los recoge y lo conectamos al nodo ICE Tree. Colocamos estos datos en el Port1. En principio con estos dos nodos conectados no harán ningún cambio en la geometria que tiene el ICE Tree porque no hemos modificado los valores que obtenemos. Para eso debemos incluir un nodo extra entre el nodo GetData y el nodo SetValue. Podemos incluir todo tipo de nodos entre estos dos nodos. Estos nodos lo que harán será modificar los valores que expulsa el nodo GetData y los incluye en el nodo SetData. De esa forma si obtendremos una geometría modificada en función de lo que hayamos interpuesto entre los dos nodos.
Para entenderlo mejor veamos un ejemplo:
Creación de un ICE TREE
- Abrimos la vista del ICE Tree (Alt + 9).
- Seleccionamos el objeto al que queremos aplicar el ICE Tree.
- Creamos un ICE tree o un «Simulated ICE Tree» (El simulated ICE Tree lo explicaré más adelante, de momento haremos el ejemplo con el ICE Tree).
- Añadimos un nodo GetData.
- Añadimos otro nodo más del tipo SetData.
- En éste momento nos encontraremos con un ICE Tree con dos nodos sueltos en color rojo. Esto nos indica, o bien que hay un error en la construcción o que todavía no puede obtener los datos de ningún sitio.
- Ahora es el momento de conectar los nodos. Como vemos en la imagen superior los nodos tienen unos puntos coloreados en la derecha y en la izquierda, excepto el nodo ICE Tree. Estos puntos se llaman Ports. Los que están a la derecha del nodo son los ports de salida y los de la izquierda son ports de entrada. Los ports de entrada reciben los valores del nodo que le conectemos y el port de salida devuelve unos valores justo después de haberlos procesado el nodo. Cada port puede recibir un tipo diferente de valor (números enteros, vectores, etc…) y eso lo indica el color del port. Más adelante explicaré que tipos diferentes de datos corresponden a los diferentes colores. En éste ICE Tree tenemos un nodo llamado GetData que obtiene los valores del parámetro que le indiquemos. Para decirle que datos queremos hacemos un doble clic en el nodo y obtenemos el siguiente panel:
- Hacemos clic en el botón Explorer y se nos abrirá un pequeño explorador donde podremos elegir el objeto del que obtener los datos y qué datos. Abrimos, en éste caso, los datos de sphere haciendo clic en el símbolo + que tenemos a su lado y después abrimos Polygon Mesh. Aquí vemos todos los datos que pueden ser leidos por ICE. Vamos a buscar el atributo.PointPosition que lo que hace es obtener las posiciones de los vertices de la geometría. Vemos que ahora el nodo cambia a color azul, con lo que nos informa de que ya obtiene los datos.
- Y hacemos lo mismo con el nodo GetData. Vemos que también cambia a color azul. Vamos a conectar los nodos tal y como muestro en la siguiente captura:
- De momento no es muy espectacular, ¿no? En realidad este ICE Tree está haciendo dos cosas. Primero obtiene los datos de la posición de los vertices (Get Sphere.PointPosition) y ese valor lo devuelve desde el port Value que es de color amarillo. En el nodo Set Data se recibe el valor por el port sphere.PointPosition. Vemos que hay una correspondencia de color, lo que nos indica que los valores son del mismo tipo. Y éste nodo devuelve esos valores desde el port Execute al Port01 del ICE Tree. Lógicamente el resultado es el mismo porque obtiene los valores de las posiciones de los vértices y el SetData ejecuta el ICE Tree con esos valores. Para que los datos calculados sean diferentes debemos insertar un nodo que haga algo entre el nodo GetData y el SetData. Vamos a añadir otro nodo para modificar esos valores obtenidos.
- Incluiremos ahora un nodo llamado Turbulize Around Value. Si no encontramos un nodo, podemos hacerlo escribiendo las primeras letras en el cuadro de búsqueda:
- Arrastramos este nodo y lo conectamos como ves en la siguiente imagen:
- Ahora si que vemos que la esfera ha sido deformada. Es fácil entender lo que pasa viendo como se han conectado los nodos. Primero obtiene los datos de la posición de los vértices del objeto. Estos valores entran por Base Value y devuelve una posición alterada de los vértices, los cuáles son recogidos por el SetData que hace queel ICE Tree muestre el objeto con los nuevos valores.
- En la imagen se pueden ver los cambios en la esfera:
Y hasta aquí el primer acercamiento a ICE. En el próximo tutorial profundizaremos más en los diferentes nodos y haremos cosas más complicadas. Como siempre, si tenéis alguna duda escribirme al correo o dejar un comentario al final de ésta misma página.
Yo estoy currándome un pequeño tutorial donde intentaré abarcar también un poco de todo. Es una pena que no haya más gente que use este maravilloso programa. Este es el enlace por si os interesa:
https://hotfile.com/dl/162829355/32698b0/Softimage_2011_Tutorial_Modelado.rar.html
Gracias Ivious. La verdad es que me he mirado tu tutorial y me parece fantástico. No es tan «pequeño» como tu decías. Desde aquí se lo recomiendo a todos. Un abrazo.
Muchas gracias por este tutorial, ya que además de estar en español, esta muy bien explicado y me ayudo mucho para entender el «ICE TREE» e identificar los nodos. Saludos y espero los próximos!