
Elementos básicos de SOP
Los operadores SOPs, son una estructura conformada por los elementos Point, Privimite, vertex.
- Punto
- Información de posición 3D
- Vértice
- Información sobre cómo están conectados y configurados
- Primitivo
- los cuales pueden ser: Polígonos, mallas, curvas, NURBS, primitivas simples como círculos y esferas, metabolas y partículas, etc., es decir, conjunto de puntos + unidades que tienen información sobre cómo deben ser renderizados.
Esta información puede visualizarse utilizando las tecla P o desde el menú contextual Display Options
.
Crear geometrias a traves de Python
Los contenidos de DAT son los siguientes.
script1
def onCook(scriptOp): scriptOp.clear() new_point = scriptOp.appendPoint() new_point.P = (0.5, 0.5, 0.5)
new_point = scriptOp.appendPoint() // se utiliza para sumar puntos en el espacio.
new_point.P = (0.5, 0.5, 0.5) // se asigna la coordenada del punto.
El operador Info1 nos indica la cantidad de puntos que se encuentran en script1
script2
def onCook(scriptOp): scriptOp.clear() new_point1 = scriptOp.appendPoint() new_point1.P = (0, 0, 0) new_point2 = scriptOp.appendPoint() new_point2.P = (0.5, 0, 0) new_point3 = scriptOp.appendPoint() new_point3.P = (0.5, 0.5, 0)
En este script scriptOp.appendPoint() aparece 3 veces, generando los 3 puntos, puede utilizar la cantidad de puntos en el espacio que desea, replicando el codigo y la posicion en el espacio de los puntos.
script3
def onCook(scriptOp): scriptOp.clear() new_point1 = scriptOp.appendPoint() new_point1.P = (0, 0, 0) new_point2 = scriptOp.appendPoint() new_point2.P = (0.5, 0, 0) new_point3 = scriptOp.appendPoint() new_point3.P = (0.5, 0.5, 0) poly = scriptOp.appendPoly(3, closed=False, addPoints=False) poly[0].point = new_point1 poly[1].point = new_point2 poly[2].point = new_point3
En comparacion con el script anterior, se agrego la siguiente parte poly = scriptOp.appendPoly(3, closed=False, addPoints=False) , la cual conectara los puntos con una linea.
Se crea un poligono primitivo de 3 vertices, debajo continua con el siguiente codigo poly[0].point = new_point1 para especificar cómo deben conectarse los vértices.
Resumen:
Hay multiples puntos
Con un orden de conexion Vertex
Representado por un tipo de forma especifica: primitiva
Cuando el numero de vertices es de 10 o mas, se puede utilizar el operador Add Sop
Tipo Primitivo:
Dentro del grupo Primitivo, hay varios tipos según su aplicacion
- Primitivo
- Un Primitivo es un tipo de superficie: polígono, curva (NURBS y Bezier), parche (NURBS y Bezier).
- Tambien podemos encontrar formas como esfera, tubo y metaball.
- Se distingue en como se conectan los puntos, los cuales forman un elemento primitivo.
- Polígono
- Se conectan cada 3 puntos, para formar un polígono triangular.
- En la GPU, la geometría es conviertida en polígonos triangulares y se dibuja.
- Ventaja en términos de eficiencia.
- Malla
- Similar a Poligono, pero en este caso maneja un polígono cuadrado, que se conecta cada cuatro puntos.
- NURBS, Bezier
- En lugar de conectar puntos y caras en línea recta, se dibuja una superficie lisa con curvas calculadas matemáticamente,
- utilizando puntos como elementos de control.
- Metaball
- Puede crear geometrías que se vean con un efecto magnético o biscozo,
- convinado con otros operadores, puede atraer o repulsar objetos cercanos.
- Partícula
- Se utiliza para la simulación de partículas y dibujar nubes de puntos,
- por ejemplo se puede obtener la posicion en el espacio de las particulas, y asignar esa posicion a otros objetos 3D.
También puede encontrar más información sobre primitivas en Primitivo-Derivado
Conceptos básicos de modelado
«Un cubo que permanece en el piso incluso si cambia de tamaño».
Estoy moviendo el tamaño del cubo con Noise Chop, cuando el tamaño del cubo cambia, se utiliza una expresión que ajusta el parámetro, para que las coordenadas centrales del cubo se muevan en proporcion a la cantidad cambiada, asi la parte inferior siempre permanezca sobre el suelo.
podemos agregar un operador transform Sop, despues de nuestro box, para tener control del eje Y
Se coloca el codigo -me.inputs[0].min.y en el parametro ty , este codigo significa: «el valor más pequeño del primer SOP de entrada multiplicado por -1».
El desplazamiento del eje Y que se calculó a partir del tamaño del cubo, se utilizó para determinar el desplazamiento basado en el «punto Y mas bajo, en la geometría de entrada». Como resultado, no importa qué SOP se inserte, se aplicará un desplazamiento basado en el piso → El piso se conectará a tierra.
Explicación de algunos SOPs
SOP grupal
En los operadores SOP, no hay un mecanismo de capas como Merge Sop, editar puntos arbitrarios se haria dificil. Para eso podemos usar Group SOP
, el cual establece grupos para Punto, Vértice y Primitivos, y nos permite tener un mayor control individual de las diferentes partes en nuestra geometria.
Una vez especificado el grupo, puede seleccionarse en el cuadro de texto de cada SOP, con el cual podremos mover cada vertice, puede manipular los puntos seleccionados, a traves de un transform sop.
Al colocar la ID de la primitiva en el cuadro de texto, se puede obtener el mismo efecto sin crear un grupo.
Convertir SOP
Nos permite convertir Sops a otra familia, por ejemplo:
- Convertir malla a polígono
- Convertir línea de polígono a NURBS o Bezier
- Convertir polígono a partículas
Faceta SOP
Divide y une vértices y recalcula las normales. Se utiliza cuando desea cambiar la escala de cada polígono o cuando desea ajustar la dirección de las normales para lograr un sombreado plano.
Veamos algunas combinaciones entre operadores SOPs
Construcción de escena usando SOP
Fuente Original