Transcripciones
1. Introducción al curso de geonodos del árbol: Bienvenido a tres árboles D
con nodos de geometría Blender. En este curso, exploraremos el potente flujo de trabajo
procedimental de los nodos de geometría
mezclada para crear árboles
totalmente personalizables
y realistas. Desde generar estructuras
troncales orgánicas hasta finalmente distribuir hojas, aprenderás a crear árboles de aspecto
natural con flexibilidad
procesal. Al final de este curso, tendrás las
habilidades para crear árboles que van desde
robles antiguos hasta delicados bonsáis, todos controlados por perímetros
fáciles de usar Si te interesa impulsar aún más
tus habilidades de gemenude, no te
pierdas nuestro
geometernode licuadora para principiantes, generador de puentes
procedimentales
y cursos de dispersión de follaje Estos te ayudarán a refinar tus
técnicas de modelado procedimental y a crear impresionantes
ambientes libres
llenos de follaje,
arquitectura y más Para ayudarte a dar vida a
tus árboles, este curso incluye un paquete de recursos de alta
calidad, con ocho materiales PBR
estilizados diseñados específicamente para la recreación
procesal Obtendrás corteza de cerezo y roble, ramas de
cerezo florecidas y no
florecientes, y hojas de roble de temporada
para verano, otoño
y primavera, además de pétalos de cerezo para un impresionante efecto de
hoja descendente Comenzaremos construyendo un sistema de árboles procedimentales
desde cero. Comenzará con el nodo de extremo dividido
fundamental, un grupo de nodos personalizado que
genera
estructuras de ramificación iterando
múltiples Usando perímetros como el
recuento de ramas, la longitud y el ángulo, elaboraremos un sistema de crecimiento
realista que imita la formación natural de
árboles Además, implementaremos
un desplazamiento de ruido para introducir un movimiento sutil y realismo en la forma general del
árbol. Una vez que el tronco y las
ramas estén en su lugar, vamos a cambiar nuestro enfoque
a la colocación de las hojas. Usando atributos personalizados como longitudes desde el inicio
y longitudes desde el final, determinaremos cómo se
distribuyen las hojas a lo largo de las ramas, asegurando patrones de
crecimiento naturales. A continuación, ampliaremos nuestro sistema
procesal para generar raíces. Al modificar el sistema de
ramificaciones para invertir su dirección, crearemos una estructura de raíz
subterránea que se conecta sin problemas
con el tronco. Finalmente, exploraremos las técnicas de mapeo
UV, asegurando que los materiales de corteza
y follaje se apliquen sin problemas. En la sección final,
integraremos un sistema de partículas simple para
simular la caída de hojas. Usando la zona de simulación de mezcladores, generaremos y animaremos hojas que se desprenden de ramas a lo largo del
tiempo Este curso está diseñado pensando la modularidad y
la eficiencia Al usar grupos de nodos reutilizables, podrá
ajustar rápidamente perímetros
como la altura de los árboles, la densidad de
ramas, la
cobertura foliar y más Ya sea que necesites un árbol
estilizado para el juego o una
operación hiper realista para una animación, nuestra configuración permitirá rápida iteración Al final de este curso, tendrás un sistema de
árbol completamente procesal que es personalizable, eficiente y visualmente impresionante para dar vida a tu
visión creativa. Únete ahora y empieza a cultivar tus propios árboles de credi con las varillas
Blenders omiton.
2. Descripción del generador de árboles: Hola, y bienvenidos
a la introducción a los árboles D libres con nodos de geometría de
licuadora. En este curso,
aprenderás a crear un árbol completamente procedimental utilizando nodos de geometría de
licuadoras Construirás un sistema
realista de tronco y ramificación,
controlarás la colocación de las hojas y agregarás un sistema simple de
partículas para que las hojas caigan y aporten movimiento
natural a tu árbol Para ayudarte en
el camino,
también recibirás un pack de
material gratis con texturas de roble y
sakura de
alta calidad y materiales perfectos para este
curso y futuros proyectos Antes de comenzar a construir,
repasemos las entradas y perímetros que controlarán forma y estructura de
tu árbol Al ajustar estos ajustes, podrás
crear cualquier cosa desde un sitio de hueso pequeño
hasta un roble masivo Entonces este nodo de ómetro es
sólo un modificador de uno. Entonces como pueden ver, tengo aquí este modificador de árbol
aplicado a este objeto, y se puede ver que aquí mismo, tenemos pocos parámetros. Una de ellas es la semilla que
controla la semilla de
todos los valores aleatorios y generadores
aleatorios. Después está la resolución que controla la resolución de las sucursales. Se puede establecer la altura del
tronco y el radio general. Y luego también hay
material para raíces y ramas y también
controles para los UE. Después en el panel de ramas, puedes ver que la primera
entrada se llama niveles, y eso controla
cuántos niveles de ramas tendrá tu árbol. Entonces si establecemos esto a solo dos, por ejemplo, entonces primero, hay un tronco, que es una rama separada
o una rama principal. De esta rama, hay tres ramas más como esta. Y de estas ramas es
el segundo nivel de sucursales, por lo que se ve algo así. Las dos segundas entradas son
min y max split count, lo que significa que puedes controlar cuántas ramas dividirá cada extremo
de la rama. Entonces aquí tenemos 3-5. Si lo colocamos 2-5, se
puede ver que ahora simplemente se
divide en dos ramas Y si jugamos con semilla, deberíamos obtener algunos resultados
diferentes. Ahora se puede ver que tenemos
cuatro de ellos y así sucesivamente. Entonces también puedes controlar
longitudes de ramas. Se puede controlar primero
y último por separado. Entonces, si establecemos las primeras ramas algo largo y durado
a algo corto, tendrás resultados diferentes. Y también hay una aleatoriedad de
longitud, que controla qué tan aleatorizadas las longitudes de las ramas Lo siguiente es el ángulo, que controla el
ángulo de las ramas. Entonces puedes ver si lo
ponemos a cero, todos
están apuntando hacia arriba, y a medida
que lo aumentamos, el árbol se ensancha
mucho y las ramas
van creciendo más hacia un lado. También se puede controlar la
aleatoriedad de este ángulo, y la última entrada
es el radio fff, que básicamente controla el
grosor de las ramas Entonces ahora puedes ver
que está configurado en dos, y puedes ver que las
ramas en los extremos son delgadas. Y si lo disminuimos, se puede ver que se hacen mucho más gruesas y se puede controlar el gradiente del radio va desde el tronco hasta los
extremos de las ramas. El siguiente panel
que tenemos son las raíces, y este panel tiene básicamente todos los controles como ramas, y puedes controlar los
mismos parámetros. Entonces me saltaré esta. El siguiente es el
desplazamiento con el que controlas el desplazamiento
de las ramas. Para que puedas controlar
qué tan recto o cuán quigly es tu árbol El siguiente son los árboles. Entonces aquí, podemos controlar los árboles. Se puede seleccionar
la colección de las hojas. Así que podemos
intercambiar fácilmente entre esos. También podemos controlar la densidad, y podemos elegir entre tres opciones donde
queremos que crezcan las hojas. Entonces hay tres opciones. Una son las ramas. Eso quiere decir que las hojas están
por todas las ramas. El segundo es de extremo, que básicamente
distribuye las hojas solo en los extremos
de las ramas, y también podemos controlar la longitud de los segmentos sobre los
que se distribuyen. Y la última opción es la posición Z
mínima, que básicamente
distribuye hojas por todas partes donde la posición
es mayor que algún valor. Entonces, si dijimos esto a tres, se
puede ver que aquí
tenemos el nivel tres y donde la
posición es mayor, se distribuyen
las hojas. dos últimas cosas son la aleatoriedad de
escala y escala, por lo que también puedes controlar qué tan escalados están los objetos
originales Y el último panel que
tenemos aquí son partículas, y se puede ver aquí. Esas son las pequeñas
hojas que puedes ver, y puedes controlar
su densidad, también la física, para que podamos controlar la gravedad y algo de ruido que se aplica
a su movimiento, y también cuánto tiempo viven. Y igual que para las hojas, tenemos colección para
objetos de entrada y su escala. Se puede ver que si
jugamos la simulación, se
puede ver que las hojas empiezan a caer de las hojas, y crea un efecto
realmente agradable.
3. Introducción al generador de ramificaciones: Bienvenido de nuevo a tres árboles D con nodos de geometría de licuadora. En esta lección, voy a explicar las técnicas que vamos a
utilizar para generar el sistema de ramas y cómo vamos a
ser capaces de controlarlo con
diferentes perímetros Primero, solo pondré la
densidad de las hojas a cero para que podamos
ver mejor el sistema de sucursales. Y como puede ver,
podemos simplificar la
estructura a solo líneas. Entonces, por ejemplo, una línea
principal es el tronco, luego hay para ramas
a las que se divide, y luego básicamente hace lo mismo en los
extremos de estas ramas Así que la configuración que vamos a
hacer tendrá una
entrada para la geometría. Entonces en este caso,
cuando tengamos trunk, le
daremos este trunk
a este grupo de nodos, y también
le daremos una selección partir de la cual queremos que crezcan
las ramas. Entonces voy a seleccionar
con esta cruz. Y lo que hará la configuración
es que solo generará ramas como esta
dependiendo de las entradas. Así podremos controlar
a cuántas ramas divide y también qué tan largas y
anguladas son estas ramas Y la salida de este
grupo de nodos serán esas ramas. Y también con selecciones, que seleccionarán
esos puntos finales Y luego usaremos el enfoque
recursivo o algo muy
similar a la recursión, y que nuevamente usaremos esta configuración después de esta
primera iteración, y esta configuración volverá a crear algunas
ramas más Y si iteramos esto, por
ejemplo, tres
o cuatro veces, deberíamos obtener un
buen sistema de ramificaciones, que usaremos como estructura básica para nuestro modificador de nodos de
geometría Posteriormente en este curso,
también necesitaremos algunos atributos para información
sobre las sucursales. Los dos atributos principales
que necesitarás son la longitud, y la longitud nos
dirá qué tan lejos está
cada punto de la rama de las raíces. Entonces aquí en la parte inferior, cero. Aquí en esta sección, es,
digamos, por ejemplo, dos, aquí es gratis en todas partes, y aquí en los extremos, puede
ser como 3.5. Con este atributo,
podremos controlar el radio de
las ramas y también obtener
bonitos mapas UV para ellos. Y el segundo perímetro
será largo desde el extremo. Y este perímetro será
casi el mismo que la longitud, pero irá en dirección
diferente o en sentido contrario. Entonces en los extremos de las ramas
, serán todos ceros Y entonces a medida que vayamos hacia
las raíces, va a aumentar. Entonces 0.5 estará aquí, 1.5 aquí, 2.5 aquí, y 3.5 en las raíces. Con este segundo atributo,
podremos, por ejemplo, distribuir hojas de extremos como mostré en la lección anterior, y simplemente separaremos aquellas ramas donde la longitud
desde el final
sea menor que algún valor, y luego podremos distribuir fácilmente las hojas en estas ramas.
4. Extremos divididos: Bienvenido de nuevo a tres árboles D con nodos Blender Geometri En esta lección,
comenzaremos a trabajar sobre la base de nuestro modificador de nodos
de geometría, y trabajaremos en el grupo de nodos del sistema de
sucursales, lo que nos ayudará a crear
la estructura básica de sucursales Entonces aquí tengo una escena de licuadora
fresca, y comenzaré borrando
todo en la escena. Y voy a añadir, por ejemplo, plano
simple porque
no vamos a estar usando la geometría
original, así puedes agregar
lo que quieras. Después iré a los modificadores
y agregaré un nuevo modificador, que serán los nodos de geometría Voy a golpear nuevo y llamar a esta configuración de nodo de geometría,
por ejemplo, tres. Y ahora podemos empezar a
trabajar en la configuración. Así que vamos al espacio de trabajo de
nodos Geomet, y podemos comenzar por eliminar la entrada del grupo porque
no vamos a necesitar este objeto El plan para las
ramas es que primero, crearemos una
estructura arbórea básica a partir de líneas curvas, por lo que se verá
algo así. Y luego vamos a convertir estas curvas en malla
usando curva a nodo de malla. Entonces la línea básica o la línea curva básica
será el tronco. Entonces agreguemos una línea curva y esta línea curva
tiene dos entradas. Tiene inicio y fin. Podemos dejar inicio como es porque queremos que comience
a las 00, y el final
controlará básicamente la
altura del tronco. Entonces, si echamos un
vistazo al tronco ahora, se
puede ver que su
longitud está controlada por este valor Z
del vector final. Así podemos separar esos
valores usando Combine XYZ, y ahora podemos controlar
este valor Z individualmente. Para el tranghd, podemos
agregar una nueva entrada de grupo. Entonces, vamos a golpear N para sacar a
colación este menú del sitio. Y voy a hacer clic en este
ícono más para agregar una nueva entrada, que llamaré Trangight podemos establecer el valor predeterminado en, por
ejemplo, tres
y mínimo a cero Ahora para conectar esto,
podemos traer entrada de grupo, y conectaremos esta altura
troncal al valor Z. Se puede ver que es cero, así que voy a volver al grupo de
entrada a modificador, y ahora se puede ver
que podemos controlar la altura de la
línea de curva con esta entrada. También está esta
pequeña advertencia, y eso es porque la
geometría de entrada debe estar en la parte superior, así que la voy a mover en la parte superior, y ahora deberíamos estar bien. Entonces ahora básicamente hemos
terminado con el tronco por ahora y solo podemos seleccionar
todos estos nodos, golpear Control J para que
suba el frame, y llamaré a este
frame un trunk. Ahora comencemos con
el grupo de nodos, que dividirá un punto
en más ramas. Así que vamos a crear un
nuevo grupo de nodos. Lo haré creando una re
ruta a esta conexión, así que mantendré presionada la tecla shift click
derecho y arrastraré
sobre esta selección. Por cierto, si no estás
usando un nodo wrangular add on, realmente lo recomiendo
porque acelerará tu flujo de trabajo en los nodos de geometría
y también los nodos de sombreado Así que de nuevo, podemos hacer Shift botón
derecho del ratón
y arrastrar, y podemos obtener esta lectura. Y ahora, si tienes seleccionado
este reencaminamiento, puedes presionar Control G
para crear un Ahora si golpeamos tabulador, estamos fuera de
este grupo de nodos, y se puede ver que solo tiene una entrada y una salida de curva. Cambiaré el nombre de esto a extremos divididos porque dividirá
los puntos finales de las curvas. Y para volver a
este grupo de nodos, podemos volver a pulsar tab y
estamos dentro del grupo Node. Este grupo de nodos
tendrá pocas entradas. primero de ellos es la geometría, que ya tenemos aquí, pero voy a cambiarle el nombre a geometría. El segundo
será la selección, que seleccionará
los puntos sobre los que
queremos que crezcan nuevas sucursales. Entonces obtendré una nueva entrada
y la llamaré selección. Tipo de ello será el bullying. Y lo último por
ahora será el conteo, que será un número de sucursales que se
quiera generar. Entonces vamos a agregar una nueva entrada, que será count, type puede ser integer, y podemos establecer default en, por
ejemplo, tres
y mínimo a cero. Ahora bien, si salimos de este grupo de
nodos usando tab, ingresaremos algunos
datos básicos a este grupo de nodos. Entonces primero, vamos a querer, por ejemplo,
crear tres ramas. Entonces agreguemos conteo a tres. Y para la selección, solo
queremos hacer crecer estas ramas
desde este punto final. Por lo que generalmente la línea curva tiene sólo dos puntos donde el inicio tiene índice de cero y el
final tiene índice de uno. Entonces solo podemos usar el
valor del índice y donde es igual, así que agregaremos igual a uno. Esto debería seleccionar
solo este punto final. Podemos verificarlo con un visor, así controlar el turno y hacer clic en el botón
más a la izquierda Esto sacará a colación al espectador, y ahora podemos arrastrarle este valor de
bullying. Y aquí se puede ver
que este fondo es negro y el de
arriba es blanco. El segundo método es
verificarlo con texto de atributo. Entonces aquí en la parte superior,
puedes seleccionar texto de atributo, y puedes ver que aquí
hay uno y aquí hay cero. Entonces ahora tenemos la selección hecha, y volvamos
al grupo de nodos. Empezaremos generando
unas ramas básicas. Así que agreguemos una línea curva
que creará una rama. Y esta línea curva puede ser, por ejemplo, de apenas 1 metro de largo. Queremos duplicar
esta línea curva dependiendo de esta entrada de conteo, y podemos hacerlo, por
ejemplo, creando puntos. Entonces sumemos puntos, y crearemos tantos
puntos como queramos ramas. Entonces voy a enchufar este
conteo a este conteo. Y ahora se puede ver que aquí
tenemos tres puntos. Ahora para reemplazar los
puntos con las curvas, podemos usar instancia en puntos. Y los puntos de entrada serán
los puntos libres en nuestro caso, y la instancia con la
que queremos reemplazar puntos
es la línea curva. Ahora bien, si vemos esta salida de
instancias, se
puede ver que
tenemos tres instancias. Pero aquí en la ventana gráfica, se
puede ver que todavía
hay una sola línea, y eso es porque se están
superponiendo entre sí Entonces, para
diferenciarlos un poco, primero los moveré sobre el eje x para que queden un poco
angulados. Y también voy
a jugar con esta rotación. Entonces lo rotaremos alrededor del eje
Z dependiendo de su índice. Por lo que estarán muy bien
distribuidos alrededor del eje Z. Para ello, voy a añadir
combinar XYZ porque solo
queremos controlar el
valor Z de esta rotación. Taparé este
vector a rotación. Ahora bien, si jugamos
con el valor Z, se
puede ver que está
girando alrededor del eje Z. Queremos diferente
valor para cada curva, y para diferenciar
entre las curvas, podemos usar entrada de índice. Entonces agreguemos índice. Y si enchufamos este índice
justo en el eje Z, se
puede ver que
hace algo, y eso es porque
para la primera línea, la entrada es cero,
para la segunda línea, la entrada, perdón,
el índice es uno, y para la tercera línea,
el índice es dos. Queremos distribuir
esas líneas manera uniforme en círculo, por
ejemplo, así. Entonces cuando tenemos tres curvas, queremos que sean así. Entonces entre ellos, es
ángulo 120 grados. Y para calcular este ángulo, solo
podemos tomar
una rotación completa, que es 360 y dividirla por número de ramas.
Entonces hagámoslo. Duplicaré esta
entrada grupal y agregaré un nodo de metanfetamina. Y debido a que aquí estamos
usando radianes, necesitaremos usar dos Pi
en lugar de 360 grados. Entonces estaremos dividiendo
dos por Pi, que es 6.28 por el
número de sucursales Y esto nos dará el
ángulo entre cada rama. Y para distribuirlos bien, podemos multiplicar el índice
por este ángulo de desplazamiento. Entonces agreguemos un multiplicar y conectarlo a la coordenada Z. Ahora puedes ver que
las ramas están muy bien giradas a lo largo del eje Z, y están muy bien
distribuidas alrededor del círculo. Si salimos de este
grupo de nodos y aumentamos el descuento, puedes ver que
funciona muy bien. Sustituyamos el viejo enfoque de la rotación por algo
un poco mejor. Entonces voy a establecer esta línea
curva 0.2 001. Ahora se vuelven a superponer. Pero ahora si jugamos con la rotación en el eje Y, puede ver que están
girando muy bien y podemos controlar el ángulo entre las
ramas y el eje Z. Entonces básicamente estamos controlando este ángulo
con este valor. Queremos controlar este
valor desde fuera. Entonces, para agregar una nueva entrada, podemos tomar este socket vacío
y conectarlo al eje Y, y voy a abrir el
menú del sitio y cambiarle el nombre a ángulo. También podemos establecer
sub tipo a ángulo, por lo que la unidad en el
modificador está en grados, y el valor por defecto
puede ser algo así como 0.5 o algo cercano a él. Ahora bien, si volvemos
del grupo de nodos, se
puede ver que
podemos controlar el ángulo en grados y también el conteo. Entonces, lo siguiente que probablemente
querrías controlar es la longitud
de estas ramas. Pero en realidad haremos esto más tarde porque ahora deberíamos
distribuir esas ramas en los
puntos fuente para ver cómo se ve
realmente. Entonces usemos esta geometría
de origen. Y
volveremos a usar esas instancias y las instancia
en los puntos seleccionados. Así que en realidad podemos duplicar
esta instancia en puntos, y queremos instancia en la geometría de
origen solo donde se selecciona
la selección. Así que vamos a enchufar también la
selección en él. Y como instancias, queremos usar esta estructura que construimos a partir de
las líneas curvas. Entonces también enchufaré las
instancias a esta. Y ahora si me
alejo un poco, se
puede ver que aquí tenemos
algunas sucursales. Y si voy al grupo de nodos de
geometría principal, se
puede ver que tenemos
el tronco y el perdón, y el primer nivel de ramas. Y ahora lo que también necesitamos es dar
salida a los endpoints de
estas ramas porque vamos a querer volver a usar los extremos
divididos así y simplemente reutilizar esta
geometría como nuevos puntos fuente Entonces para obtener la selección, primero
podemos darnos cuenta de
todas esas instancias, y luego esas son de
nuevo, las líneas curvas, así que solo podemos tomar
los puntos donde index es uno y usar esto
como selección. Para obtener el índice de cada
punto dentro de la curva, vamos a querer usar
un perímetro spline, que
nos dará índice en ellos. Si usamos el visor, puedes ver que
todos los extremos de los puntos tienen uno y los puntos
fuente tienen cero. Si usáramos un índice, obtendríamos
valores diferentes porque este índice está a través de todas
esas splines o curvas, y eso no es lo que queremos Entonces solo usaremos este índice perimetral
pline. Para hacer una selección, solo
podemos usar un igual y donde
sea igual a uno, esta será nuestra selección. Podemos conectar este resultado
a la salida del grupo y cambiarle el nombre a selección.
5. Conceptos básicos del sistema de sucursales: Hola, y bienvenidos de nuevo a tres árboles D con varillas geométricas
Blender Ahora bien, si salimos
de este split ends, podemos duplicar
este grupo de nodos y conectar estas
curvas de salida y selección. Y ahora se puede ver que esto creó un segundo nivel
de las ramas. Si usamos geometría de junta y unimos todas estas
partes juntas, verás que tenemos una estructura de árbol
muy básica, que se ve bastante genial, pero todavía hay
muchas cosas que
necesitamos agregar a las puntas abiertas. Entonces primero, se puede ver que esas ramas deben estar
alineadas a esta curva, por lo que debe verse
algo así, y no deben ser
rectas hacia el eje Z, sino que deben estar alineadas
a la curva de origen. Entonces para hacer esto, podemos
ir a las puntas abiertas, y estaremos controlando la rotación de esos trozos de líneas
curvas Y para obtener la rotación correcta, básicamente
queremos
alinearlas a la tangente
de las curvas de origen Si miramos esto
desde un lado. Entonces, por ejemplo, este paso, esta es la curva fuente, y su tangente es vector
apuntando en esta dirección Y queremos
alinear el eje Z de este grupo de curvas
a esta curva tangente, así se verá
algo así Para esta alineación, podemos
usar align rotation to vector, que hace exactamente
lo que dibujé aquí. Y queremos alinear el eje Z, así que eso está aquí seleccionado
para este vector. Este vector será
la tangente de curva, así que vamos a traer a colación
la tangente de curva Y esto debería
darnos la rotación correcta. Entonces, vamos a enchufar esta rotación
a esta rotación. Y ahora se puede ver que
las ramas se
rotan correctamente a lo largo de las tangentes
de las curvas de origen Ahora, cuando hayamos hecho esto, podemos agregar realmente
una entrada de longitud, que controlará las
longitudes de esas ramas. Entonces, vamos a abrir el
menú del sitio y agregar una nueva entrada, que llamaremos longitud. Y el valor predeterminado puede
ser, por ejemplo, uno. primera ubicación donde
se puede controlar la
longitud de las curvas es esta porque aquí
controlamos la línea básica de la curva, y podemos simplemente
controlar básicamente la longitud de estas. El problema con
esta es que todas las curvas
tendrían la misma longitud, y queremos tener algunas variaciones y
aleatoriedad en nuestro árbol, y esto no se
vería realmente natural, así que evitaremos esta El segundo lugar donde
podemos controlar esto es
básicamente la escala. Entonces, si juego
con esos valores, también
podemos controlar la longitud
de las curvas aquí. E incluso podemos ingresar diferentes valores
para diferentes líneas, como puede ver aquí
es entrada rectangular, lo que significa que hay campos, y podemos ingresar un
valor diferente para cada una de ellas. Pero si ahora en un valor aleatorio
aquí, y algo 1-2. No estoy seguro si va a
ser realmente visible, pero si tal vez disminuimos
el conteo a tres. Sí, en esta, se
puede ver muy bien. Se puede ver que casi
parece que funciona, pero esas partes aquí en el segundo nivel
son todas iguales, y simplemente se rotan de
manera diferente. Queremos tener tantas cosas
aleatorias como podamos. Entonces, para hacer esto
aún más aleatorio, usaremos un enfoque
diferente. Se puede ver que
esas partes aquí, aquí y aquí, esas
son las partes más cortas, y todas son iguales. Entonces para que esto sea
aún más aleatorio, lo
haremos después de
darnos cuenta de las instancias y moveremos los puntos finales
de las curvas aleatoriamente Puedes apegarte a
esta solución aquí, pero te voy a mostrar una solución
aún mejor que nos
dará más aleatoriedad. Entonces, eliminemos este
a escala de nuevo a uno. Y ahora lo que haremos
es tomar los extremos de
estas curvas y moverlas aleatoriamente a lo largo de su tangente Para ello, agreguemos
una nota de posición establecida. Y solo estaremos moviendo los puntos finales para que podamos
realmente usar esta selección Así que vamos a enchufar esto
a la selección. Y ahora si lo muevo, por ejemplo, en Xxs, se
puede ver que está
moviendo todas las ramas, lo que significa que podemos controlar esos puntos finales La forma en que aleatorizaremos
esto es que
obtendremos una tangente de cada rama y luego simplemente la aleatorizaremos en
algún rango para que sea Entonces primero, ahora sabemos que esos puntos están a 1 metro
de su fuente. Entonces este es uno porque este punto
final está en el eje Z uno. Entonces primero,
restablecemos esos puntos a esos puntos de origen y
luego escojamos un valor aleatorio en
la dirección de la tangente de curva
para desplazarlos hacia
atrás luego escojamos un valor aleatorio en la dirección de la tangente de curva
para desplazarlos Entonces agreguemos una curva tangente. Y primero, podemos
normalizar esto, aunque esto probablemente esté normalizado, lo normalizaremos. Y luego si escalamos esto
y lo enchufamos en offset, verás que podemos controlar la
longitud de estas curvas. Si lo ponemos a cero, tienen la misma longitud que antes. Si lo ponemos en negativo, se puede ver que todos
colapsan en un solo punto. Ahora bien, si agregamos valor
a este vector, podemos controlar la longitud del
mismo usando la misma técnica. Entonces vamos a duplicar
el valor de la escala y agregarlo a este original. Y vamos a enchufar este
resultado en el offset. Ahora bien, si lo ponemos a cero, se
puede ver que todas las
ramas tienen longitud cero. Y a medida que lo aumento,
por ejemplo, a uno, están de vuelta a la posición
original, pero ahora los controles tienen realmente
sentido. Entonces cuando es uno,
su longitud es uno, y cuando lo pongo en dos,
su longitud es dos. Lo bueno es que
hay control rectangular. Entonces hay campos y podemos controlar cada sucursal por separado. Entonces, si ahora enchufo un
valor aleatorio en este como este, verás que esas ramas tienen diferentes valores
o diferentes longitudes. Se puede ver que
hay este corto y no se puede encontrar este corto en
las diferentes partes, así que se puede ver que
es verdaderamente aleatorio. Entonces ahora para controlar esta entrada, solo
podemos usar la entrada de
longitud que
creamos y conectarla a escala. Por defecto, se puede
ver que es cero, pero ahora podemos controlar
esas longitudes. Y a partir de aquí,
también somos capaces de enchufar un valor aleatorio en él y se puede ver que funciona
para todas las curvas por separado. Lo último que
te gustaría
agregar a este grupo de nodos es
aleatorizar un poco esta distribución en círculo
porque en algunos casos, esto no se ve muy bien Por ejemplo, si solo
hay dos, se
puede ver que es
recto así, es recto, y
queremos aleatorizar
esto un poco Entonces vamos a dividir
y grupo de nodos, y controlamos esta
rotación sobre el eje Z aquí, esto combina XYZ
en este socit Z. Para aleatorizarlo un poco, le
agregaremos un valor a Entonces agreguemos un nodo add, y estaremos sumando
al valor original. Ahora bien, si lo enchupo al eje Z, se
puede ver que básicamente
podemos controlar la rotación aquí. Queremos que la rotación sea
diferente para cada curva. Entonces usaremos un valor aleatorio. Y si lo enchupo aquí,
queremos que esto sea, por ejemplo, entre
uno negativo y uno positivo. Y también queremos un
asiento diferente para cada uno de ellos. Entonces como asiento,
podemos, por ejemplo, usar índice de estos,
y ahora se puede ver que son diferentes. En algunos casos, lo que
podría pasar es que todas las sucursales
estarían en la misma posición. Entonces digamos que tenemos
tres ramas así, y pueden girar como en
esta dirección y dirección. Entonces esto podría terminar
algo así. Entonces la forma de eliminar
esta es que
vamos a limitar esta
aleatoriedad en algunas partes Entonces básicamente, vamos a limitar
esta rama en esta parte, esta rama en esta parte, y esta marca es esta tercera parte. Entonces los valores que queremos
ingresar al valor aleatorio son básicamente el
ángulo de desplazamiento dividido por dos. Entonces esto nos dará este ángulo, y solo lo multiplicaremos por uno negativo y positivo, y esto nos dará el rango. Entonces esta división aquí nos
da todo este ángulo, y primero lo dividiremos
por dos para obtener la mitad de él, y luego podemos multiplicarlo
por 0.5 positivo y negativo, lo que debería darnos
esos valores limitantes. Ahora bien, si conectamos
esos valores en mínimo y máximo
de esta aleatoriedad, verás que funciona muy bien Y también podemos
incrementar el conteo. Y si miramos desde
arriba, se puede ver que están muy bien aleatorizados Para hacer esto un poco
más estrecho, por ejemplo, incluso
podemos dividirlo por tres
para conseguir límites más estrechos, y creo que lo dejaré congelado para que puedan estar
tocándose entre sí. Bien, la última parte es que vamos a estar agregando una semilla
a este grupo de nodos porque queremos poder controlar conjunto de todos
estos valores aleatorios. Entonces agreguemos una nueva entrada
y la conectemos a este ID. Y solo voy a agregar leer aquí, y cambiaremos el nombre de
esta identificación a asiento. Tampoco ocultemos este valor, así que desmarque este valor de altura porque eso es por
defecto para el ID Y ahora podemos
controlarlo desde fuera, así se puede ver que podemos
controlar la aleatoriedad de
la rotación en primer nivel
y también en el segundo nivel Para probar esto, vamos también
al tercer nivel. Volveré a usar las
curvas anteriores y la selección, y la uniré en el giro y podemos hacer
esto un poco más corto. Se puede ver que ahora tenemos una estructura bastante interesante, que se parece un
poco a árbol. Pero en las próximas lecciones, agregaremos más detalles, lo que hará que
esto sea aún mejor.
6. Sistema avanzado de ramificación: Bienvenido de nuevo a árboles D libres
con nodos de geometría de licuadora. En esta lección,
continuaremos trabajando en nuestro sistema de sucursales,
y específicamente, crearemos un nuevo
grupo de nodos que combinará esos extremos divididos y creará
un sistema de sucursales completo. Entonces primero, eliminemos esos nodos porque ya
no los necesitaremos, y crearemos
un nuevo grupo de nodos. Así que solo conectaré esta
curva a la geometría de salida en una parte trasera y con la parte trasera
seleccionada, golpearé Control G para
crear un nuevo grupo de nodos Voy a llamar a este
grupo de nodos un sistema de sucursales. Entonces, cómo
funcionará este grupo de nodos del
sistema de sucursales es que
tendrá algunas entradas. Una de ellas será la selección, que será el punto a partir del cual queremos hacer
crecer las ramas. Entonces digamos que este es el tronco
y esta es la selección, y luego
lo conectaremos al sistema Branch. La entrada que estará en el
sistema de sucursales es el número de niveles. Entonces ese es número de
niveles de sucursales. Entonces, por ejemplo, así es como se ven dos niveles de
ramas, y si agregamos uno más, estos son tres niveles. Así podremos controlar
cuántos niveles hay. Y posteriormente también agregaremos
algún tipo de aleatorización. Por lo que habrá longitud de las primeras ramas
y las últimas ramas, e interpará
entre esos valores y también cuánto se dividirán las
ramas Entonces habrá un número mínimo
y máximo de ramas que se
generarán en cada una
así que vamos al grupo de nodos del sistema de
sucursales
y agreguemos algunas de las entradas El primero será la selección. Entonces agregaré una nueva
entrada de bullying y la llamaré selección. Y el siguiente importante
es el número de niveles. Entonces agreguemos una nueva entrada. Este será entero, y podemos llamarlo niveles. Creo que esto está
bien por ahora y
podemos empezar a trabajar
en la configuración general. Entonces agreguemos nuestro grupo de nodos de
extremos divididos, que será la base
de este grupo de nodos. Y básicamente cómo funcionará
esto es que usaremos una zona de repetición, que tendrá
extremos divididos dentro de ella, y la zona de repetición iterará dependiendo del número de niveles que ingresemos a
este grupo de nodos Y después de todas
esas iteraciones, creará un sistema de ramas
final Entonces agreguemos una zona de repetición. Y el número de iteraciones
serán niveles, por lo que podemos conectar niveles
en iteraciones, y la geometría de salida
vendrá de
la zona de rayas para que podamos
enchufar esto a La geometría inicial será el tronco que ingresamos
a este grupo de nodos, por lo que también podemos enchufar la
geometría en esta geometría. Y en cada iteración, usaremos esta geometría, así podremos enchufar esta
en puntas abiertas Hemos dado selección y la unimos con la geometría
anterior. Entonces agreguemos la geometría de la barbilla, y la uniremos a la geometría de
origen, básicamente. Y también necesitamos
almacenar la selección. Entonces, vamos a enchufar esta selección
a este socket vacío, que creará un nuevo
socket aquí con selección, y usaremos este como selección para la siguiente iteración Entonces, para la primera iteración, esta será la selección a
partir de la entrada del grupo Pero más adelante en las próximas iteraciones, queremos usar la selección
de esas nuevas ramas Entonces vamos a enchufar esto
a la salida. Ahora bien, si salimos fuera de este grupo de nodos y
aumentamos número de niveles, se
puede ver
que empieza a crecer. También voy a jugar
con el conteo, y se puede ver
que podemos controlar cuántos niveles de
ramas hay. Si ahora comprobamos cuántas
curvas hay realmente, se puede ver que
hay 16 splines, pero eso no se corresponde con lo que vemos porque
si contamos esto, tenemos un tronco,
tres ramas,
y cada una de ellas tiene tres ramas de
segundo nivel, que deberían sumar hasta
13, pero tenemos 16 El problema aquí es
que esta selección no elimina la selección
anterior. Entonces, para arreglar realmente
esta selección, crearemos un nuevo atributo con
nombre, y eso
nos dirá qué puntos
queremos expandir en la
siguiente iteración Y para la geometría antigua, configuraremos en caídas, y para la nueva geometría, la
pondremos a la selección. Así que agreguemos un atributo
llamado store. Y podemos llamarlo
como para selección, el tipo será Bolin, y para todas esas ramas de
niveles anteriores, esto será falso Entonces dejaremos esto en caídas. Y si duplicamos esto y lo
enchufamos en esas puntas abiertas, enchufaremos la selección
al valor. Y ahora para la selección
en la siguiente iteración, podemos usar este atributo
llamado S y conectarlo
a la selección Ahora bien, si aumentamos
los niveles a dos, se
puede ver que sólo
tenemos 13 splines abajo en lugar de 16. Así
que eso está funcionando muy bien. Y ahora podemos empezar a
trabajar en conectar esas entradas desde los
extremos divididos a esta entrada de grupo. Entonces la siguiente entrada de los extremos
divididos es count, y en realidad
queremos aleatorizar esta entrada porque no
queremos que sea constante, pero queremos algunas
variaciones aquí Entonces, por ejemplo, el primer nivel se
dividiría en tres ramas, luego cuatro y luego sólo dos
o algo así. Entonces para hacer eso, agregaremos un valor aleatorio El tipo de este valor aleatorio serán enteros porque count también
es integer, y vamos a enchufar esos valores mínimo y máximo
en entradas de grupo Entonces podemos usar este circuito
gris vacío para conectarlo, y este valor de salida
se conectará al conteo Se puede ver que ahora
esta conexión es roja, pero podemos arreglar esto
podemos agregar una nueva variable
a esta zona de repetición, que nos dirá en qué
iteración estaremos Y si enchufamos esta
iteración en ID o C, ésta convergerá a constante
y no a un valor de campo, y esto ya no debería
leerse Así que hemos seleccionado zona de repetición, golpeamos N, e iremos al nodo, y agregaremos una nueva entrada, que llamaré I como iteración
y estableceré el tipo dos enteros Y al inicio, queremos
que sea, por ejemplo,
cero, y luego en
cada iteración, queremos aumentar esto en una Entonces agreguemos en matemáticas le agregaremos uno y lo almacenaremos
para la siguiente iteración Ahora esto va a estar incrementando
cada iteración. Entonces eso significa que
será diferente para cada iteración,
y podemos usarlo, por ejemplo, para ID, y ahora
puedes ver que el valor ya
no se llena. Y eso creó
algo extraño, pero eso es porque el mínimo es cero y el máximo es 100. Si cambiamos esto a digamos, dos a cinco, se puede ver
que en la primera iteración, esta la dividió en cinco ramas y en la siguiente sólo 23 También queremos poder
controlar la semilla. Entonces conectemos también la
semilla a la entrada del grupo. Y voy a cambiar el nombre de
esos Min y max a Min split count y
max split count. Y también mover set a la parte superior de la entrada de grupo como siempre. Entonces ahora se
aleatoriza el número de niveles y la
siguiente entrada es la longitud Más largo, también
crearemos algo de aleatorización, por lo que podemos duplicar
este valor aleatorio y configurarlo en float Y si ahora enchufamos este
valor aleatorio en esta longitud, verás que cada una de las ramas tiene
diferente longitud, y eso es lo que queremos exactamente. Para los tristes, podemos tapar el
asiento de la entrada del grupo a esta semilla y
podemos dejar ID como es
porque por defecto, recoge índice,
lo cual está
bien para este propósito. Para los valores mínimo y máximo, hay pocas opciones de
cómo podemos controlar esto. Y una cosa que me gustaría
hacer es que esto dependa del nivel actual de iteración en el que nos encontramos Así podremos
crear, por ejemplo, ramas
largas en primer nivel y luego ramas más cortas
en el último nivel. Y también vamos a querer
aleatorizar estos un poco, así que agregaremos algún
tipo de Entonces agreguemos una primera entrada, que será la primera longitud de
rama, que establecerá una longitud de
ramas en el primer nivel, y podemos establecer default en
uno y mínimo a cero. Y duplicaré
esto y renombraré esto a la longitud de la última rama, que controlará la longitud de últimas ramas o
básicamente las ramas en último nivel y la estableceré, por ejemplo, en 0.5. La última entrada para
las sucursales
será la aleatoriedad de longitud de rama, así que agreguemos eso también Y podemos dejar esos valores
predeterminados como están. Entonces ahora para calcular
la longitud de rama en cada nivel, usaremos una
llave de mapa y también este
valor I que usamos para
ID para la aleatorización Entonces agreguemos una llave de mapa. Y vamos a estar remapeando
este yo porque va de cero a número
de niveles menos uno O en este caso, en realidad
podemos
aumentarlo al valor inicial a uno, y ahora esto pasará de
uno a número de niveles. Y ahora solo podemos
remapear esto que valoro con llave de
mapa de uno
a número de niveles Y el rango al que
queremos remapear esto será desde la longitud de la primera rama
hasta la longitud de la última rama Esto significa que
cuando el I es uno, lo que significa que estamos
en el primer nivel, la salida de esta rama del mapa será la longitud de la primera rama. Y si estamos en el último nivel, que es donde está el I niveles, la longitud de las ramas
será la longitud de la última rama. Utilizaremos este valor
para la aleatorización,
y la forma en que aleatorizaremos esto es que agregaremos un valor aleatorio a
esta longitud base en rango de menos aleatoriedad y más aleatoriedad. Básicamente, si visualizo esto, digamos que aquí está este valor de rango de mapa y lo
aleatorizaremos en un rango donde
este es L menos aleatoriedad,
y este es L más aleatoriedad y este es L Entonces, si la R es algo pequeña, estará en un
rango pequeño entre la L, y si es más grande,
tendrá más variaciones. Entonces eso significa que el mínimo
de este valor aleatorio
será este mapa rancho menos la aleatoriedad de
ramales. Entonces restemos esto del rancho
del mapa. Y el máximo será
llave de mapa más aleatoriedad, así que puedo duplicar esto con Control Shi D y simplemente
cambiar de tipo a suma Ahora bien, si
los enchufamos al mínimo y máximo y salimos a la calle, se
puede ver que podemos controlar los niveles
dependiendo de su nivel. Y si aumento los niveles, verás que si
cambio la longitud de la primera rama, solo
está cambiando
el primer nivel y también los otros,
pero el cambio más grande
es en el primer nivel, y también podemos controlar longitud de
la última rama
así como la aleatoriedad de las ramas Bien, entonces ahora creo que
el sistema de sucursales está listo para el siguiente uso. También podemos jugar
con las entradas, y se puede ver
que está generando tres estructuras
bastante bonitas. Y lo último que podemos hacer es que podemos conectar
esas entradas a la entrada del grupo principal
y también crear un panel que
controlará las ramas. Entonces agreguemos un nuevo panel.
Voy a cotejar ramas Y ahora voy a traer a
colación una entrada de grupo, y como siempre, usar este socket vacío para
crear esas nuevas entradas. Y porque si conectamos
esto al socket
, usará el
valor actual como predeterminado. Así que voy a establecer algunos
buenos valores predeterminados aquí. Entonces algo como
esto. Y ahora voy a crear todas esas entradas
en la entrada de grupo simplemente arrastrando este
circuito vacío a todas ellas. Cuando se creen todas las
entradas, solo las
moveré
al panel dright,
que es el panel de ramas Y también voy a mover la
semilla a la parte superior de las entradas y esconderé
las de los enchufes con Control H, por ejemplo, ahora se
ve bastante bien. Una cosa más que podríamos hacer es limpiar un poco este
árbol. Así que solo usaré
diferentes entradas de grupo. Entonces esto no es tan desordenado. Y simplemente vuelva a conectar esas entradas a sus propias entradas de grupo Ahora, cuando todo
esté terminado, podemos ir al paso modificador, y puedes jugar con esta estructura básica de árbol
con todas esas entradas. Una última cosa que
olvidé agregar es controlar el ángulo porque
nos olvidamos de éste. Y con este ángulo,
queremos controlar,
en realidad, qué tan extendido está el sistema de sucursales en
general. Así que agreguemos también rápidamente unas nuevas entradas para estos para esto, solo
escogeremos un ángulo base
y luego la aleatoriedad, y funcionará de la misma
manera que la longitud de la rama, pero solo con un ángulo básico Así que agreguemos la primera
entrada al ángulo y la segunda a la aleatoriedad
del ángulo Duplicaré esta entrada de grupo, y usaremos la misma
técnica que aquí. Entonces solo usaré
este valor aleatorio, usaré este, este sat, y solo sumaremos y
restaremos la aleatoriedad
del valor básico como este y lo conectaremos a valores
mínimos y máximos Esto generará
el ángulo aleatorio, y podemos enchufarlo
en el ángulo. puede ver que
ahora es todo plano, pero eso es porque esas
entradas están puestas a cero, así que solo la voy a aumentar
un poco. Y también podemos establecer
el sub tipo de estos dos ángulos para
que estén en grados. Lo último
que debemos hacer es conectar esta semilla
con nuestra semilla global. Así que solo conectaré la semilla de la entrada del
grupo a las puntas abiertas. Y para terminarlo,
conectaremos esas dos entradas a la entrada
global del grupo, nuevamente,
con este gris, lo calcetearemos y las moveremos
al panel de ramas.
7. Datos internos: Hola, y bienvenidos de nuevo a los árboles D
libres con nodos geométricos de
licuadora En esta lección,
implementaremos datos
internos que usaremos
para distribuir nuestras hojas y también
digitar el radio de cada
rama para cada punto. Ya he explicado esos datos en
introducción a las sucursales, pero en breve
voy a repasarlos. Ambos serán atributos que se almacenarán
para cada punto, y el primero de ellos es la longitud. Que al inicio
de la raíz es cero, y luego aumenta
dependiendo de lo lejos que estemos de la raíz. Entonces, por ejemplo, puede
verse algo así. Y entonces también vamos a implementar la inversión de esta versión
u opuesta, que se llamará
length from end Y éste será el mismo, pero en sentido contrario. Entonces en los extremos de las
sucursales, esto será cero. Y a medida que nos
acerquemos a
la raíz, el valor irá aumentando. El largo desde el extremo se
utilizará para distribuir las hojas en
los extremos de las ramas. Entonces, por ejemplo, podemos establecer el valor en punto
cero o 1.5, que puede estar en algún lugar de
aquí, y las hojas solo se distribuirán
en estas ramas. Y la longitud básica se
utilizará para calcular el radio
de la malla de la rama. Bien, así que vamos a
entrar en los nodos de geometría, y vamos a estar implementando ambos dentro del sistema de
rama Entonces vayamos al sistema de sucursales. Y el primero que
queremos usar es el largo porque ese
será un poco más sencillo. Entonces estaremos almacenando
esos atributos. Entonces primero, podemos almacenar
alguna
longitud básica para el baúl. Entonces voy a añadir el atributo Sterne. Será flotante para cada punto, por lo que los valores predeterminados están bien, y el nombre será longitud. Para este,
utilizaremos un perímetro spline, que nos dará
longitud de cada punto Y si visualizamos esto, se
puede ver que es cero en la parte inferior
y dos en la parte superior. Ahora bien, si vamos al sistema de sucursales, la forma en que esto va a funcionar es que, por ejemplo, en
este primer nivel, solo
voy a disminuir esto. En este primer nivel, este punto
fuente tiene una longitud de dos. Para todos esos puntos, agregaremos una longitud
a este valor básico, y esto
nos dará, por ejemplo, si esta curva tiene longitud de uno, creará tres
en este punto. Entonces la longitud se
implementará dentro las puntas abiertas porque
podemos hacerlo aquí. Entonces iré a puntas abiertas
y estaremos almacenando aquí al final después desplazar los puntos finales
dependiendo de la longitud Entonces voy a agregar un atributo
llamado store, set name to length. Y la longitud será la longitud actual de la curva más la longitud
del punto de origen. Entonces agregaremos un
valor a este, y el valor que
usaremos es la longitud
del punto de origen. Entonces lo capturaremos antes de
instanciar la curva sobre él. Así que agreguemos el atributo de captura. Y vamos a estar
capturando la longitud. Así que vamos a añadir también
atributo con nombre, longitud. Lo capturaremos así, y luego vamos a enchufar este
valor en esta suma, lo que significa que, por ejemplo, si este punto tiene dos, esta curva tiene longitud 0-1, esos valores se sumarán, y obtendremos dos aquí en la parte inferior y tres
aquí en la parte superior Entonces, si almacenamos esto
en atributo con nombre, ahora
podemos visualizar esto
al final de esta zona de repetición, así que voy a traer a colación atributo con
nombre. Y ahora se puede ver que esos puntos tienen valores un
poco diferentes. A lo mejor voy a visualizar esto
al final de este sistema de sucursales
que será el mejor. Y también podemos
aumentar número de niveles y hacer más visibles las
ramas. Ahora bien, si visualizamos esto, se
puede ver que
este punto fuente tiene longitud de atributo cero, entonces este valor está
en algún lugar alrededor de tres. Y hay 3.7, 4.7. Bien, creo que cometí un pequeño error
dentro de las puntas abiertas. Aquí en la adición, debe
haber este perímetro spline
y la longitud de la columna vertebral, que usé antes porque esta longitud de espina
nos dará sólo la longitud de la curva, pero queremos longitud
en cada punto Entonces necesitamos usar
este perímetro de giro. Y ahora si visualizamos
esos valores, con el mayor
entonces, por ejemplo, así que voy a a mayor entonces y
deshabilitaré este texto de atributo. Se puede ver que a medida que
aumente este valor, todas las ramas se vuelven negras, y para que esto sea
aún más visible, podemos remuestrear esas
curvas a más puntos, y ahora verá
este bonito borde entre blanco y negro, que va
por las ramas Entonces eso es por la longitud. Ahora queremos el atributo
opuesto que es la longitud desde el final. Este va a ser un
poco más complicado, y eso es porque
la forma en que construimos el sistema de sucursales
es que partimos desde el tronco y
luego seguimos hasta terminar Pero el mejor escenario
sería que partiéramos de los fines
y luego iríamos a comenzar, pero eso es un poco que
va a ser muy complicado. Entonces necesitamos encontrar
una manera de
calcular la longitud
desde los extremos. La forma en que calcularemos
esto es que para el tronco, almacenaremos la longitud
en sentido opuesto, así que la longitud desde el extremo. Entonces en la parte superior, será
cero, y en la parte inferior, son dos porque este
será el final. Y aquí en la parte inferior, la longitud desde el extremo es de dos. Y luego en cada iteración, tomaremos la longitud
de la siguiente rama Entonces digamos que este es
uno y agrégalo a
todos esos puntos. Entonces este será cero
más uno y dos más uno. Y para esta curva,
volveremos a almacenar la
longitud invertida desde el extremo. Entonces aquí será cero, y aquí habrá uno, que corresponde a éste. Ahora bien, si hacemos esto para
cada nivel, nuevamente, este tiene uno y
editaremos con esta longitud a todos
los puntos anteriores. Entonces este serán dos. Este será uno, y este es dos más uno más
uno, que es cuatro. Y se puede ver que
esto en cada nivel, acumula la
distancia desde el extremo. Y digamos que esto es 0.5, va a ser cero, 0.5,
uno más cinco, 2.5 y 4.5 y se puede
ver que al final, deberíamos tener este valor que corresponde
a la longitud desde el final. También implementaremos
este sistema de sucursales internas, pero no entraremos en puntas abiertas, sino que también nos quedaremos aquí
en la zona de repetición. Y como antes, primero
comenzaremos almacenando este atributo
para el tronco principal. Entonces usemos otro atributo
con nombre, pero llamaremos a esto
una longitud desde el final. Y éste
será de longitud invertida. Entonces, para obtener la longitud invertida, podemos tomar la longitud
total de esta curva y luego restarle
este perímetro Así que vamos también a lo siento, longitud de
la columna vertebral, lo que
nos dará la longitud de la curva. Se restará este perímetro de
longitud, que va de
cero a longitud para cada punto y comenzará por
la longitud desde el final Si visualizamos este valor, se
puede ver que es
cero aquí en la parte superior y dos aquí en la parte inferior. Ahora en sistema de sucursales,
haremos exactamente lo que he
explicado aquí. Entonces, para esas nuevas curvas, solo
almacenaremos
la longitud invertida. Entonces volveré a usar este atributo de
apellido, establecerlo en longitud desde el final El tipo fluirá, y usaremos el mismo
valor que usamos aquí Entonces tomaremos una longitud de spline y restaremos
el perímetro
spline una longitud de spline y restaremos
el perímetro
spline Así. nuevamente nos dará el factor de longitud
invertida, y almacenaremos en
longitud desde el extremo. Y para todos los
niveles anteriores que es este socket, agregaremos una longitud máxima de estas curvas nu a
su longitud desde el final. Entonces duplicaré éste y tomaremos su longitud
anterior desde el final, que tomaremos con atributo
named y agregaremos una longitud de estas
curvas a esta longitud. El problema aquí es que esas nuevas curvas pueden
tener diferentes longitudes, y realmente no hay una manera de
obtener cada longitud diferente
a los niveles anteriores. Digamos que tenemos
el strunk y luego genera dos ramas Uno es más corto y
otro más largo. Entonces este nivel anterior tiene, digamos, aquí hay
uno y aquí hay cero, y no podemos
averiguar la longitud en este punto
porque a partir de este punto, es no sé, digamos,
0.2, pero a partir de este fin, puede
ser como uno. Entonces no sabemos qué
valor queremos aquí. Y en mi opinión, lo mejor que podemos hacer es que podamos agregar o podemos agregar la
longitud máxima de estas curvas. Entonces porque esto es 0.2
y este es uno, usaremos esta curva lo que significa que este punto
tendrá distancia uno, y este tendrá uno
más uno, que es dos. Entonces, para obtener esta longitud máxima, podemos simplemente tomar esta geometría y usar estadísticas de atributos. Y vamos a querer la
longitud máxima de las curvas. Entonces el dominio en el que
seleccionaremos será spine, y el atributo que
queremos usar es
esta longitud a partir de la longitud del lomo. Entonces lo duplicaré y
lo conectaré al atributo y haré
algo de espacio aquí. Y básicamente, solo tomaremos este máximo y lo agregaremos
a la longitud anterior desde el extremo así y
lo almacenaremos en longitud desde el extremo. Entonces, para resumirlo,
para las nuevas curvas, almacenaremos el factor de longitud
invertida, y para las curvas antiguas, simplemente
agregaremos
una longitud máxima de estas nuevas curvas a su longitud
anterior desde el final. Ahora bien, si visualizamos esto aquí, volveré a usar named
attribute length from end. Está aquí. Y podemos volver a usar el mayor
entonces porque con eso, podemos visualizar muy bien esto. Y a medida que aumente esto, se
puede ver que este
valor va muy bien desde los extremos de las
ramas hasta la raíz. Se puede ver que si es cero, todos son blancos,
y a medida que lo aumento, los extremos son negros, y va hacia la raíz.
8. Raíces: Bienvenido de nuevo a los árboles D libres
con varillas de geometría Blender. En esta lección, seguiremos trabajando en nuestra estructura arbórea. Específicamente, estaremos
trabajando en las raíces. Si intentas sacar
raíces a nuestro árbol, así que algo como esto, observa que esta forma de
aquí abajo es muy similar
a esta de aquí arriba. Y eso es exactamente lo que
usaremos porque reutilizaremos nuestro grupo de nodos de sistema de sucursales para crear las raíces
con la misma técnica. Entonces vamos a ir a los nodos Geometri, y aquí podemos ver
que en esta parte, estamos creando
nuestro sistema de sucursales, y vamos a agregar
lo mismo, pero para las raíces Entonces para eso, podemos duplicar este grupo de nodos del sistema de sucursales. Y si echamos un
vistazo a nuestro tronco, estaremos usando
este también, pero no queremos cultivar ramas desde la parte superior
sino desde la parte inferior. Así que vamos a tapar nuestra geometría
a la geometría aquí. Y si ahora sacamos este sistema de sucursales,
podemos ver cualquier cosa. Pero si ponemos aquí nuestra selección
original, tenemos un
árbol muy básico, igual que antes. Lo primero que tenemos que
arreglar es que queremos que las ramas crezcan
desde abajo. Entonces en vez de punto
con índice uno, que está aquí arriba, queremos hacerlos crecer desde punto
con índice de cero. Entonces podemos duplicar
este igual con Control h D y simplemente
cambiar uno a cero. Y donde esto sea igual a cero, creará las ramas. Ahora se puede ver que
crea las ramas, pero hay un problema porque están creciendo en
la dirección equivocada. Queremos que crezcan
en esta dirección vez de en esta dirección. Para solucionarlo, la forma
más fácil de
hacerlo es simplemente tomar la curva
troncal e invertirla, lo que invertirá la
dirección de esta curva. Así que agreguemos curva inversa
y tapemos nuestro tronco a ella. Y si ahora enchufamos esta
curva a la geometría y esta selección a la
selección del sistema de ramas, se
puede ver que
el sistema de ramas creó exactamente lo que
estamos buscando, y esas son las ramas
que están creciendo desde el fondo de nuestro tronco. Ahora lo que podemos
hacer, podemos combinar esas curvas generadas
con las curvas de rama. Así que voy a unir estas
geometrías juntas. Primero puedes simplemente agregar una geometría de junta y
conectarlos por separado y conectarlos manualmente o
puedes mantener presionado Control shift click
derecho y arrastrar sobre
esos dos nodos así, y esto generará
la geometría de la junta y unirá ambas
ramas juntas. Ahora bien, si sacamos esto, se
puede ver que tenemos
una bonita estructura de árbol. El único problema ahora que
tenemos en la configuración es que este sistema de ramas
contiene la curva troncal, así
como el sistema raíz también contiene esta curva troncal. Entonces eso significa que ahora
aquí en esta sección, hay dos mismas curvas
que se superponen. No queremos
algo como esto, así que tenemos que deshacernos
de uno de esos baúles. Para deshacernos de uno
de estos trunks, podemos, por ejemplo, almacenar atributo antes
de todos esos grupos de nodos para el tronco y luego verificar dónde está asignado
este atributo y eliminaremos esta geometría Entonces, por ejemplo, aquí, agregaremos una ruta trasera, y agregaremos un atributo
llamado store. Por ejemplo, podemos agregar un Bolin, podemos llamarlo, por ejemplo, trunk y configurarlo en true Esto significa que ahora
la curva troncal tiene asignado este
atributo trunk. Y en el
sistema de sucursales, agregaremos este atributo también, pero lo pondremos en caídas. Entonces vayamos al sistema de sucursales. Y aquí donde estamos uniendo nuestras nuevas sucursales a toda
la configuración, agregaremos un atributo
llamado store, y nuevamente almacenaremos el
trunk, pero lo configuraremos en falls. Ahora bien, si salimos fuera de este sistema de ramas y verificamos
el atributo named trunk, se
puede ver que
esta curva es verdadera, pero esas curvas son todas falsas. Entonces podemos usar eso. Y por ejemplo, voy a borrar
este tronco de las raíces, pero también puedes eliminarlos
de las ramas, pero solo de una de estas. Entonces agreguemos borrar geometría, y donde el tronco sea verdadero, se
quiere eliminarlo. Entonces lo usaré así. Ahora bien, si vemos esto, se
puede ver que las raíces
no contienen el tronco, sino que esas ramas lo contienen. Así que juntos,
nos dará todo el árbol
sin ningún solapamiento. Derecha. Así que ahora nuestro
sistema de curvas también tiene raíces, y queremos
poder controlar todos
estos parámetros, que podemos controlar
para las ramas. También queremos controlarlos
para las raíces. Entonces para eso, agregaremos
un montón de entradas grupales, y las estaremos agregando
con este sockit vacío Entonces para el asiento, podemos usar el existente. Así que vamos a enchufarlo al asiento. Pero esto dará como resultado que esos dos grupos de nodos
usarán lo mismo triste, y podríamos obtener
los mismos resultados sobre ellos. Entonces hagámoslo un
poco diferente. Para eso, podemos, por
ejemplo, usar un nodo MF. mí me gusta multiplicar en, y vamos a multiplicar
esta semilla
por, por ejemplo, 15 y en algún número
aleatorio, digamos 42. Y ahora esto
probablemente nos dará siempre lo diferente triste
que el valor original. Entonces ahora tenemos el asiento, y
ahora simplemente conectaremos todas estas entradas o
tomas de grupo a la entrada de grupo. Entonces usaremos este enchufe
vacío y los
enchufaré así. Y ahora cuando todos esos
sockets estén conectados, podemos golpear para que el
menú del sitio, y voy a añadir un nuevo panel al
que llamaré raíces. Para terminarlo, voy a mover todos estos atributos o entradas
a este panel de raíces. Bien, entonces ahora cuando todos
los socits están conectados, podemos ocultar un nuevo socuits con Control H y también limpiar un poco
este árbol de notas Simplemente agruparé esos nodos
con Control J y
lo llamaré eliminar tronco duplicado. Y también podemos cambiar el nombre de
toda esta configuración a sistema de sucursales. Ahora podemos ir a Modificador y
jugar con nuestras raíces. Entonces pondré niveles a algo más pequeño y los haré un poco más largos y también
jugaré con los ángulos. También podemos verificar si
nuestros dos atributos, que
son longitud y longitud desde el final, funcionan correctamente. Así que sólo voy a añadir un
atributo con nombre y longitud, y vamos a comprobar donde es mayor que algún valor
umbral, y voy a ocultar esos textos de
atributo. Entonces a medida que lo aumento, se
puede ver que va
muy bien desde este punto aquí a las ramas, así
como a las raíces. Y para verificar el
otro parámetro, que es length
from end, se puede ver que también está
funcionando muy bien.
9. Desplazamiento: Bienvenido de nuevo a tres árboles D con nodos de geometría de licuadora. En esta lección, trabajaremos en el desplazamiento
de nuestra configuración de curvas, y le daremos a este árbol un aspecto un poco más natural. Entonces, cómo funcionará esto
es que básicamente, solo
tomaremos esas curvas y las desplazaremos
con algunas texturas de ruido Pero antes de eso,
necesitamos poder
controlar cuánta geometría tiene realmente
este árbol. Lo estaremos controlando
con esta curva de remuestreo, pero le daremos opción al usuario para controlar cuánta resolución
tenemos realmente Para hacer esto,
en realidad es mejor cambiar este tipo a
longitud porque eso significa que tomará muestras esas curvas en puntos
distribuidos uniformemente, y no depende de
la longitud de la curva. Y podemos agregar un perímetro
a este grupo de nodos, que será la resolución. Entonces agreguemos una nueva entrada
entera, que se llamará resolución. Y podemos establecer el valor
predeterminado en, por ejemplo, diez
y mínimo en uno. Si traemos a colación la entrada de grupo, realmente no
podemos enchufar esta resolución directamente
a esta curva de remuestreo porque esos
valores enteros son realmente altos, y se puede ver que realmente no
funciona Queremos algunos
valores más pequeños aquí. Pero para el usuario, es mejor
trabajar con esos valores enteros. Entonces para calcular esta longitud, podemos usar el nodo MF y
podemos simplemente dividir alguna
constante por esta resolución, lo que significa que si
aumentamos esta resolución, hará que esta división
sea más pequeña o el resultado
será menor, y la geometría
tendrá más puntos. Entonces si usamos 0.5, por ejemplo, se
puede ver que ahora cuando la
resolución se establece en uno, los pasos entre
los puntos es 0.5. Pero si lo establecemos en,
por ejemplo, diez, los pasos entre los
puntos serán 0.05. Entonces por ahora, lo
dejaré así, y podemos trabajar en el
desplazamiento con texturas de ruido. Para ello, estaremos usando un
nodo de posición de conjunto simple. Entonces agreguemos eso. Y vamos a estar usando esta entrada de
desplazamiento con la que
podrás desplazar el árbol
en todas las direcciones. Si ahora agregamos
textura de ruido, por ejemplo, este color genera vector
tridimensional con valores 0-1 Si enchufamos esto
directamente al offset, ya se
puede ver que
hace algún tipo de desplazamiento. Y si jugamos
con la escala, se
puede ver que el
árbol es mucho más bonito ahora El problema es que la raíz
del árbol no está en 000, así que ese es el primer problema, y todo el árbol se mueve en esa dirección. Eso es todo por
este color, que nos da sólo vectores
positivos, y también queremos algunos vectores
negativos. Para cambiar eso, podemos
usar un rango de mapa y
podemos remapear este vector
porque el color es vector de 000111 a
negativos a unos. Esto dará como resultado
que este vector también nos dará
algunos valores negativos. Y si enchufamos esto en offset, ahora se puede ver que el
árbol está casi centrado, y eso arregla un poco. Pero aún así, el centro no está
exactamente en cero, cero, cero. Para cambiar eso,
podemos usar uno de los atributos que estamos almacenando, y esa es la longitud. Si vemos la longitud, puedes ver que
la longitud es cero aquí en el centro
o en la raíz, y está aumentando
hacia las ramas. Podemos usar este valor para
multiplicar este vector, lo que resultará en que este punto se quedará
en cero, cero, cero, porque si multiplicamos el vector aquí por
cero, será cero. Y a medida que vayamos hacia
las ramas, se multiplicará por una. Entonces, si tomamos esta longitud y
multiplicamos este vector por él, así podemos usar una escala para eso. Esto resultará en
algo como esto. Se puede ver que las ramas en los extremos están realmente distorsionadas, pero este vector o rosa el punto de partida
sigue siendo cero, cero, cero Las ramas aquí
están muy desplazadas porque la longitud
es mucho mayor. Y queremos que este multipler
sea uno al máximo. Entonces para eso, podemos usar una abrazadera que sujetará
el valor en algún rango. Entonces, si es
superior al máximo, volverá al máximo. Entonces si sujetamos este 0-1, se
puede ver que ahora
esto se ve mucho mejor También podemos visualizar esto, y se puede ver que
este valor de clamp multiplica esos
vectores por cero Pero cuando está por aquí, ya
son los originales y se
multiplican por uno. Entonces ahora esto se ve
relativamente bien, y queremos
poder controlar
cuánto se distorsionan esos puntos Para ello, podemos multiplicar este valor sujeto
por alguna constante Entonces vamos a multiplicar. Y enchúfelo a escala. Ahora bien, si juego
con este valor, se
puede ver que
puedo cambiar cuánto impacta
el ruido en el
desplazamiento de los puntos. El segundo perímetro,
que también podemos controlar es muy importante
es la escala del ruido. Entonces, si juegas con el
ruido y lo haces más pequeño, puedes ver que el árbol tiene una distorsión
mucho más suave. Y si lo ponemos a
algo más alto, se
puede ver que es muy
duro y es muy detallado. Para obtener los mejores resultados, es realmente bueno combinar algunas de estas
texturas de ruido juntas. Entonces combinaremos dos de ellas, y vamos a querer
usarlas de esa manera que la primera
tendrá una escala muy baja, y creará un
desplazamiento como este, así las ramas
serán muy lisas, y luego aplicaremos otra textura de
ruido la cual tendrá escala
mucho mayor y
agregaremos esos duros detalles. Así que podemos reutilizar la
configuración una vez más, y solo agregaremos
esos valores juntos. Los valores que
queremos controlar son este
valor de multiplicación y esta escala Entonces agreguemos algunas entradas grupales. Voy a golpear N, y voy a añadir un nuevo panel al que
llamaré desplazamiento. Y voy a agregar entradas para
esta primera textura de ruido. Entonces la primera entrada será escala de
ruido uno y la potencia de
ruido uno. Y voy a establecer default
a algo así como 0.25 y power también 0.25, podemos probarlo aquí como
se ve. A lo mejor eso es demasiado pequeño. Voy a poner el poder a uno. Y ahora para la segunda textura
que vas a usar, podemos simplemente duplicar esas
y les renombro a dos. Para este, usaré una
escala de digamos uno, y la potencia de ruido dos
tendrá un valor predeterminado. Pero 0.25, por ejemplo. Ahora vamos al
modificador y también restablecemos estos a sus valores
predeterminados. Y podemos conectar esas
entradas a esta primera configuración. Entonces traeré entrada de grupo
y conectaré esta escala de ruido uno a escala y potencia de ruido
uno a esta multiplicación Quiero duplicar la configuración, así que solo seleccionaré esos
nodos y presionaré Control G, y simplemente renombraré
esas entradas. Esta escala es genial, y la
segunda será Poder. Y podemos llamar a este
grupo de nodos desplazamiento de rama. Y como queremos agregar
un desplazamiento más, duplicaré esto y usaré diferente escala
y diferente potencia. Para combinar estos juntos, solo
podemos agregar esos vectores. Así que agreguemos suma y conectemos este
vector resultante en offset. Ahora bien, si voy a Modificador, se
puede ver que podemos controlar los impactos de estas
dos texturas, y podemos obtener algunos resultados muy
interesantes. Para asegurar que esas
texturas de ruido no sean lo mismo, podemos cambiar este tipo
de textura de ruido a cuatro D y usar este perímetro W, que es algo así como CT. Entonces enchufaré esta W a la entrada del grupo y
solo la moveré hacia arriba. Y ahora fuera de estos
grupos de nodos, voy a usar el conjunto. Y nuevamente, obtendremos
algunos valores diferentes de este asiento con multiplicar nodo Ed. Entonces agreguemos multiplicar anuncio. Entonces primero, de nuevo, solo
podemos usar
algunos valores aleatorios. Y voy a aplicar este
primero a este W y al segundo realmente
puedes usar algunos valores aleatorios y
probablemente tendrán valores diferentes para cada asiento. Taparán esto a la
segunda W. Podemos
esconderlas y también esconder un nuevo
circuito con Control H. Ahora, medida que cambiemos de asiento, los asientos de las texturas de ruido también
cambiarán. Para terminar esto, podemos seleccionar todas estas notas
y llamarlo desplazamiento. También esta parte anterior, podemos llamarla resolución.
10. Generación de malla: Bienvenido de nuevo a tres árboles D con nodos geométricos de licuadora. En esta lección,
comenzaremos a generar la malla real de nuestro árbol y también agregaremos algunos mapas básicos UV. Entonces vamos a los nodos Geometri. Y lo primero es que para generar una malla a partir de curvas, estaremos usando una curva a nodo
de malla, así podemos agregar eso. Y para el perfil, usaremos un círculo curvo por ahora porque
queremos que sea circular. Ahora bien, si enchufamos esta curva en curva de
perfil y
disminuimos el radio, se
puede ver que no
tenemos bastante agradable, pero tenemos alguna malla
realmente básica alrededor de nuestra estructura curva. Por ahora, también podemos comprobar estas tapas de relleno para que se llenen
los extremos. Y lo primero
que
haremos es jugar con
el radio de la curva. Si agregamos un radio de curva establecido, se
puede ver que con esta nota, podemos controlar el
radio de cada punto, y podemos
controlarlos por separado, lo cual es muy potente. Entonces para nuestro árbol, queremos el radio aquí al inicio esté en algún lugar alrededor de
uno, por ejemplo, y aquí al final,
queremos que esté en
algún lugar alrededor de cero,
así que irá disminuyendo a medida que
va o a medida que se acerca a
los extremos de las ramas. Para obtener este valor, podemos usar nuestro atributo length
que estamos capturando. Entonces, si visualizamos nuestra longitud, se
puede ver que
aquí es cero y va aumentando
hacia los extremos de las ramas. El problema aquí es que
los valores son muy altos. Aquí al final es
algo así como 6.9, pero el valor ideal
sería solo uno, y luego simplemente podemos
voltear este atributo. Entonces, para remapear esta longitud de cero a este 6.9
o cuál es el valor Simplemente podemos tomar la longitud
máxima de estas ramas y dividir
la longitud por esta. Entonces, por ejemplo, si
la longitud máxima en estas sucursales sería siete aquí en este
punto será algo así como 0.95 o
algo así, y eso es lo que
estamos buscando Entonces, para obtener la
longitud máxima de estas ramas, podemos usar estadísticas de atributos. Así que agreguemos la nota
estadística de atributo. Y queremos estadística
de esta longitud. Así que vamos a tapar este
atributo de longitud a atributo, y queremos
tomar este máximo. Ahora para convertir esta longitud
a rango cero a uno, solo
podemos
dividirla por este máximo. Y si ahora visualizamos esto, verás que aquí al
final es algo así como 0.99, y aquí al inicio, está en algún lugar alrededor de cero Entonces eso es exactamente lo
que estamos buscando. El único problema ahora es que si echas un
vistazo a las raíces, los valores en los extremos
no son realmente uno, sino que son 0.27 y así sucesivamente Y eso es porque
las ramas aquí en la parte superior son mucho
más largas que las raíces. Pero las raíces también están usando la longitud máxima de
las ramas Entonces necesitamos separar estas dos partes y calcular
este factor por separado. Para ello, moveremos este cálculo
al sistema de sucursales, y esto separará
esas dos partes. Así que voy a eliminar
esos nodos aquí, y voy a ir al sistema de sucursales, y podemos calcular este factor al final
de la zona de repetición. Entonces aquí en la zona de repetición, al final de la zona de repetición, agregaremos atributo nodo
estadístico y tomaremos un atributo length Y sólo divídalo
por el máximo. Entonces lo mismo
que hicimos antes. Y aquí podemos simplemente almacenar este valor en otro atributo. Entonces agregaré store
named attribute, y lo llamaré, por ejemplo, factor de
longitud, y conectaré este
resultado a este atributo. Ahora bien, si volvemos al final de nuestra configuración y visualizamos
este factor de longitud, se
puede ver que ahora las
ramas aún tienen 0.99, pero las raíces también tienen
algo alrededor de 0.807, y están muy cerca Así que eso es lindo. Y
por ejemplo, ahora, si enchufamos este atributo
a las radios, verás que las
ramas son delgadas aquí
al inicio y más gruesas hacia
los extremos de las ramas. Queremos voltear esto y
queremos el grosor máximo al inicio y
mínimo en los extremos. Entonces, para voltear esto,
podemos simplemente tomar el nodo matemático y restar
este valor de uno Entonces algo como esto.
Ahora puedes ver que las ramas o la raíz
es la parte más gruesa aquí Y a medida que vamos hasta el final, son cada vez más delgados. Entonces también puedes controlar el radio general con el
radio del círculo curvo, y se ve bastante bien. Actualmente, la
caída es lineal. Entonces si dibujamos una gráfica aquí, y aquí en el eje y
será el radio, y en el eje X
será el factor de longitud. Yo sólo lo marcaré como aquí. Actualmente, donde el factor de
longitud es cero, el radio es uno, y donde el factor de longitud es
uno, el radio es cero. Entonces se ve algo así. En algunos casos, podríamos
querer que las ramas
sean más delgadas antes en el árbol. Entonces queremos que la curva se vea
algo así. O por otro lado,
queremos que sean
más gruesos más tiempo a medida que vamos a los extremos. Entonces queremos queremos que
se vea así. Para controlar esto,
podríamos usar, por ejemplo, curva
flotante donde podemos hacer
exactamente algo así. Entonces, si añadimos una
curva flotante después de ésta, podemos simplemente jugar
con este valor. Ahora puedes ver que si
lo pongo debajo de la función lineal, puedes ver que las
ramas son más delgadas, y si la pongo aquí,
son más gruesas. El problema aquí es que en realidad no
podemos controlar
esta curva flotante fuera de este grupo de nodos
o fuera de este modificador. Entonces necesitamos obtener una forma
diferente de hacer esto. Entonces la forma en que
haremos esto es que
usaremos la función X a la A
donde el factor X es
o nuestro factor de longitud
y la A es variable de
entrada que
puede ser controlada por el usuario. Aquí
se visualiza. Entonces cuando la A o el
exponente se establece en uno, la función es lineal Pero si lo pongo a
algo más bajo que uno, se
puede ver que la función
va más así, lo que significa que las ramas
serán más gruesas. Y si es más de uno, se
puede ver que
va por debajo de la función lineal, lo que significa que
van a ser más delgados. Entonces para implementar
esto en blender, solo
podemos tomar
este valor y usar un Bower y el exponente
será el valor Entonces si lo establecemos en uno, se
puede ver que tenemos los mismos resultados que
obtenemos con la función lineal. Si lo pongo a algo
más pequeño que uno, son más gruesos, y si es superior a uno, se
puede ver que
son más delgados.
11. Mapeo y refinado de UV: Hola, y bienvenidos de nuevo a tres árboles D con varillas de geometría
licuadora. Puedes ir incluso más de dos, y obtienes un gradiente aún más agradable Pero eso depende, probablemente
pondré valor
máximo en algo así como tres y lo dejaré así. Entonces, para agregar algunos controles, voy a abrir el menú del sitio, y lo primero que
agregaré es el radio general. Que estará controlando el
radio de este círculo curvo. Voy a establecer el valor por defecto en 0.15, y el segundo
será la caída del radio, que será este exponente Entonces agregaré una nueva entrada y la
llamaré radio caída. El subtipo,
lo configuraré como actor porque estará en un rango pequeño,
así que puedes usar eso Establezca Default en uno
y póngalo 0-3. Para usar estas entradas de grupo, solo las
conectaré
desde la entrada de grupo. También el radio al círculo
de la curva. Ahora bien, si voy al modificador, se
puede ver que
ahora puedo controlar el radio de estas curvas
y su caída. También podríamos establecer esos valores por separado
para ramas y raíces. Entonces la mejor manera
sería poner esos controles también en el sistema de
sucursales, pero solo me apegaré
a esta versión. Así que para
limpiar esto un poco, sólo
voy a mover este radio
aquí y ahora podemos llamar a este grupo de nodos radio porque aquí estamos
controlando el radio. Ahora lo siguiente
que aún no estamos controlando es
esta resolución. Una forma sería simplemente
editar a la entrada del grupo, pero podemos hacerlo un
poco más inteligente. Simplemente podemos usar esta entrada de
resolución, que ya tenemos y simplemente calcular cuántos puntos debería tener el círculo
curvo. Entonces para la resolución, estamos calculando aquí. Y con esta división, obtenemos compensación
entre dos puntos. Entonces simplemente duplicaré esto con Shift D y parent con TP, así que no está dentro del marco y solo muévalo aquí al frente. Y básicamente, el
círculo curvo se ve así, y sabemos qué radio tiene. Entonces conocemos este valor de R, y necesitamos calcular
cuántos puntos tendrá. La información que también conocemos es el espaciamiento entre los
puntos de esta división. Así que sabemos, voy a dibujar un montón de puntos
aquí, algo como esto. Y sabemos cuánto tiempo debe ser
esta brecha. Vamos a llamarlo G como gap. Y para calcular el número
de puntos que caben aquí, solo
podemos usar
que la longitud
del círculo es de dos
por veces el radio. Esto nos dará toda
la longitud. Y si lo dividimos por esta brecha, deberíamos obtener el número de puntos que necesitamos crear. Entonces vamos a calcular esto. Simplemente multiplicaré este radio por dos Pi así y luego solo lo dividiré por
este valor de brecha, que está aquí. Y si enchufas esto
a resolución, verás que el
valor que obtenemos es 17.6, redondea automáticamente, así que no necesitamos
redondear este valor Y ahora si echamos un vistazo a la geometría y por ejemplo,
disminuimos la resolución, también se
puede ver que disminuye número de
puntos automáticamente, y no necesitamos
preocuparnos por ello. Bien, entonces la última parte
estará generando los UVs. Para generar el mapa UV, necesitaremos dos variables. Uno de ellos irá aumentando hacia
los extremos de las ramas, y el segundo
de ellos tendrá que
rodear las ramas, y esto generará
nuestras coordenadas de textura. Entonces primero, para este, solo podemos usar nuestro atributo
length porque
ya tenemos esto calculado, y debería calcularse
correctamente. Así que sólo podemos usar éste. Y para el segundo eje, podemos usar un factor de esta curva que
estás usando para el perfil. Entonces, si miras este círculo
y usas un perímetro plano, que incluye el factor, puedes ver que este factor
va 0-1 alrededor del círculo, y podemos usar este
valor para la UV Entonces necesitamos capturar
este atributo usando antes de
generar la malla. Así que vamos a añadir el atributo de captura, y vamos a querer capturar
este factor para cada punto. Y ahora después de la malla, necesitamos crear los UVs Así que agreguemos el atributo
con nombre de tienda. Los UVs son tipo de
vector y se almacenan para cada esquina de fase,
así que lo configuraremos así El nombre será mapa UV. Y el valor será un vector. Así que vamos a combinar XYZ. Y para el valor X,
podemos usar este factor, y para el valor Y,
usaremos esta longitud. Si ahora visualizamos
esto, se puede ver que tenemos bonitos
UVs para el árbol Y el único problema es que
si miras esta parte aquí, puedes ver que aquí hay cero y aquí es uno y
está dando vueltas. Pero luego hay una rápida
transición de regreso a cero. Para evitar esto, necesitamos hacer
esto un poco diferente. El problema al que
nos enfrentamos es que si visualizamos
factor de círculo, así podemos simplemente usar esto
y voy a borrar eso. Se puede ver que el valor
es cero en el punto de inicio. Y en el último punto, es
algo así como 0.9 gratis gratis, y luego
va rápidamente hacia el cero. Lo que necesitaríamos es que
necesitaríamos tener uno aquí también desde esta dirección y cero aquí desde
esta dirección. Para obtener esto, en lugar
de círculo curvo, podemos usar espiral, que no es una curva cerrada, sino que tiene dos puntos
en esta posición. Así que agreguemos espiral curva. Usemos nuestros valores calculados. Entonces para la resolución,
usaremos el mismo valor. Rotaciones, solo queremos una rotación, así que
pongámosla en una El radio de inicio y final
será el mismo. Entonces, vamos a enchufar el radio
en ambos de esta manera y no queremos, solo
voy a visualizar esto. No queremos que la
curva tenga altura, así que pongamos la altura a cero. Ahora se puede ver que esta curva en realidad tiene uno y
cero en este punto. En realidad hay dos puntos
y se superponen. Y si usamos esta espiral
en lugar de círculo curvo, deberíamos obtener resultados mucho
mejores. Ahora se puede ver que
aquí en esta costura, hay una transición dura, lo que significa que los mapas
UV son correctos. Así que simplemente borraré
este círculo curvo. Pero ahora tenemos
otro problema y que que aquí en esta posición, hay puntos superpuestos. Podemos comprobar esto que si
pasamos el cursor sobre esta salida, hay 35.000 Y si usamos fusionados por distancia ahora
solo hay 32 mil vértices Así que hay muchos
vértices superpuestos que necesitamos fusionar Si ahora miramos el mapa UV
con el espectador, éste, se
puede volver a ver eso,
tenemos esta dura transición que no queremos aquí o
esta transición rápida 1-0. Y para arreglarlo, reemplazaremos este atributo de apellido con
solo capturar este vector Entonces eliminaré esto y
agregaré un atributo de captura. Queremos capturar este vector
que almacena nuestro mapa UV, y lo importante
es usar una esquina facial. Ahora bien, si visualizamos este mapa UV después de la
fusión por distancia, se
puede ver
que ahora está funcionando correctamente, y porque es después de
la fusión por distancia, los puntos superpuestos se han ido. Entonces para terminar esto, almacenemos este atributo para la
esquina de la cara y lo llamemos mapa UV, y simplemente conectaremos este atributo
capturado a él. Ahora nuestros mapas UV están
terminados y podemos seleccionar todas estas notas y simplemente llamarlo mesh plus
UVs, por ejemplo Ahora para comprobar si funciona
con algunos materiales, podemos utilizar nuestros materiales, los cuales obtendrás
para discurso libre. Entonces para anexar esos materiales
a la lima de mezcla, podemos ir a anexar, encontrar la lima con
los materiales, y debe haber en material, hay dos
materiales para corteza Hay corteza de roble
y corteza de secura, así que podemos anexar ambas Y ahora cuando
agregamos material de fraguado, y si fijamos uno
de estos materiales, se
puede ver que tenemos
bonitos materiales en nuestro árbol. Para terminar esto, agregaremos entrada de
material a
nuestra entrada grupal. Así que vamos a golpear para que
aparezca el menú del sitio, y voy a añadir una nueva entrada, que voy a llamar material
y tipo dos material. Y solo usaremos
este material para la entrada
grupal de nuestras sucursales. Una cosa más que quizás
quieras
controlar es la escala
de estos mapas UV. Y podemos simplemente hacer esto escalando este vector
aquí antes de almacenarlo. Entonces, si agregamos una escala, y jugamos con ella, puedes ver que
si la aumento, las texturas tienen más
resolución o son más pequeñas, y puedes controlar
eso también. Entonces solo agregaré una entrada más, que será la escala UV, estableceré el valor predeterminado en uno
y mínimo a cero, y solo conectaré esta escala
UV a la báscula. Ahora bien, si lo configuramos en uno, puedes ver que
podemos controlar muy bien la
escala de nuestro material y
cambiarlo muy fácilmente.
12. Conceptos básicos de distribución de hojas: Bienvenido de nuevo a tres árboles D con nodos de geometría de licuadora. En esta lección,
comenzaremos a agregar hojas a nuestro árbol y agregaremos tres opciones diferentes
para distribuirlas. Entonces los tres tipos
de distribución de los saltos que vamos a estar implementando
ya se explicaron en una de las primeras lecciones, pero volveré a pasar por
ellos rápidamente Entonces el primero estará distribuyendo hojas por
todas nuestras ramas, así estarán por todas partes
aquí en las ramas. El segundo tipo
será de fin, lo que significa que solo
tomaremos esas ramas y usaremos
algún valor umbral para controlar qué tan lejos de los extremos
seguirán estando las hojas. Esta opción da, en mi
opinión, los mejores resultados, y la última opción
será controlada por el eje Z mínimo
o la posición Z. Entonces estableceremos un valor umbral y distribuiremos las hojas solo en las ramas o en los puntos que sean más altos que
este valor umbral. Comience,
necesitaremos algunas hojas
en las que
probará nuestra configuración, y podrá
encontrarlas en el archivo que obtendrá de
forma gratuita con discours Voy a archivar, anexar, en el archivo con los objetos, vamos a ir a colección, y hay pocas colecciones, e incluiré todas ellas excepto esta colección.
No necesitamos este. Y si hacemos clic en Anexar puedes ver que esto agrega un montón de objetos a nuestra escena, y están muy bien organizados
en esas colecciones Hay dos colecciones principales para el roble y el árbol sacara Para cada uno de ellos,
hay algunas hojas diferentes. Así que para el roble,
hay tres tipos de hojas y también el material que aplicamos en la lección
anterior. Y para la sacara,
hay dos tipos de hojas. Hay uno florecido
y ninguno florecido. Y el último,
hay pétalos de flores que luego podremos usar, por ejemplo, para el sistema de
partículas. Entonces por ahora,
sólo voy a esconder
ambas colecciones y
comencemos a distribuir algunas hojas. Vamos a los nodos de geometría. Y la forma en que escogeremos entre esos tres tipos que se explican será a través del menú. Entonces abramos un panel de sitio, y primero, agregaré un nuevo panel, que llamaré hojas. Y para escoger entre esos
tres tipos diferentes, voy a la entrada, que
tendrá tipo de menú. Yo lo llamaré donde
porque va a estar controlando donde están desove las
hojas Y si ahora vamos a Modificador, puedes ver que este desplegable
no tiene ninguna opción Para agregar opciones,
necesitamos conectar esta entrada de grupo a
algún tipo de nodo de menú. Para ello, podemos
agregar un interruptor de menú, que es básicamente
un nodo donde
puedes agregar un montón de opciones y luego
controlarlo con este menú socuit Entonces solo conectaré esta entrada de ware a
este interruptor de menú. Y para editar esas opciones, daremos click en este
interruptor de menú y vamos a tocar Nodo. Y aquí podemos editar
todas las opciones. Entonces la primera opción
serán las sucursales. El segundo será de final, y el tercero será Min Z para la posición
mínima Z. Ahora bien, este interruptor de menú puede cambiar entre esas tres entradas de
geometría. Y la forma en que haremos esto
es que haremos para cada tipo, crearemos unas curvas sobre las que queremos
distribuir las hojas, y luego simplemente
usaremos esta salida, que se recogerá con esta vajilla y distribuiremos
hojas en esa curva. También podemos comprobar
eso en el modificador, ahora tenemos esas tres opciones. Podemos escoger cualquiera de ellos, y debería estar recogiendo
uno de esos insumos. Entonces, para crear las curvas base, estaremos usando las
curvas de nuestro árbol, y las estaré usando
después del radio porque necesitaremos esta información de
radio más adelante al distribuir
las hojas. Entonces tomemos esas curvas, y la primera opción que
tenemos aquí son las ramas. Eso significa que solo queremos
curvas que sean ramas, y necesitamos eliminar
todas las demás. Así que agreguemos la geometría
delete. Y ahora para
averiguar qué curvas son ramas y cuáles no, podemos, por ejemplo, usar atributo
length,
que tenemos aquí, y cuando la longitud es
mayor que la longitud del tronco porque
la longitud del tronco está
sólo en el tronco, y entonces las longitudes son mayores. Entonces, cuando la longitud es
mayor que la longitud del tronco, solo
debemos obtener las
ramas. Necesito lo contrario. Entonces, si eliminamos todos los
puntos donde la longitud es menor que la altura del tronco,
deberíamos obtener las ramas. Así que vamos a obtener el nombre de longitud de
atributo. Y si es
menor que la altura del tronco, también
podemos visualizar esto, y se puede ver que todas esas ramas debajo
del tronco son blancas. Pero el problema es que algunas de las raíces
aquí no se recogen. Eso es porque su longitud es mayor que la altura del tronco, y no queremos
hojas en las raíces. Entonces para arreglar esto, también podemos
aquí en este tallo de ramas, podemos almacenar información si esas curvas
son raíces o no. Entonces para esto, agregaré store
named attribute set type two Bolin y lo llamaré raíces Y para esos de arriba,
esas son mis ramas. Entonces lo pondré a caídas. Y para aquellos de abajo
que en realidad son raíces, lo
pondré en verdad. Ahora bien, si vamos a este fin, básicamente
escogeremos donde
la longitud es menor que altura
del tronco o
si son de raíz. Entonces lo haremos en las raíces de
atributo con nombre. Y si esto es cierto,
también queremos eliminarlos, y esto debería
darnos una mejor selección. Ahora, se puede ver que
todas esas raíces, incluido el tronco son blancas, lo
que significa que
eliminará todas esas partes. Entonces, si ahora visualizamos esto, se
puede ver que sólo
tenemos esas ramas. Entonces eso significa que tenemos
la primera opción hecha y podemos
enchufarla en sucursales. Y ahora si sacamos esto, ahora tenemos sucursales seleccionadas,
entonces tenemos sucursales. Pero si seleccionamos
algo más, están vacíos. Entonces hagámoslos también. Para la opción from end, volveremos a usar geometría DD. Y queremos eliminar
todos los puntos
donde la longitud desde el final es
mayor que algún umbral. Entonces para esto, necesitamos
agregar esta entrada de umbral. Entonces agregaré nueva entrada
a este grupo y lo
llamaré longitud desde el final. Y voy a establecer el
valor predeterminado en, por ejemplo,
uno, y también lo restableceré aquí. Y ahora si tomamos named
attribute length from end, vamos a querer eliminar todos los puntos donde
la
longitud de end es mayor que esta longitud
de end de end from group input, o si hay raíces. Nuevamente, agregaremos esto o
valor o con raíces. Y ahora si vemos esto, se
puede ver que solo
tenemos extremos de las ramas, y podemos controlarlo con
este perímetro de entrada de grupo. Entonces esta parte también se hace. Y ahora la última parte
es el eje Z mínimo. Entonces para éste,
también necesitaremos un perímetro. Entonces agreguemos una nueva entrada
y la llamemos Min Z. y nuevamente, estaremos
usando borrar geometría y eliminaremos todos los puntos que
tengan posición sobre
el eje
Z por debajo de este umbral Entonces tomaremos posición. Obtendremos solo la
posición Z separando XYZ, y si esos son menores que la entrada Z principal, los
eliminaremos. Entonces se verá así. Y podemos enchufar esta tercera
opción a este interruptor de menú. Ahora bien, si jugamos
con esas opciones, deberíamos conseguir esos
tres tipos de curvas sobre las que
distribuiremos las hojas. Además, un consejo rápido si tienes algunas rutas traseras una debajo otra así y
quieres alinearlas, simplemente
puedes seleccionarlas y
golpear para escalar X en el eje X, y cero, y esto
las alineará en el eje x a una línea. También podemos agrupar estos
nodos con Control J, y yo lo llamaré curvas foliares.
13. Colocación avanzada de hojas: Hola, y bienvenidos de nuevo a los árboles D
libres con nodos de geometría de
licuadora. Y ahora comencemos a generar algunas hojas sobre estas curvas. Así que para crear las hojas, vamos a estar usando
instancia en puntos. Pero primero, necesitamos
distribuir puntos a lo largo de estas curvas. La mejor manera de distribuir puntos aleatoriamente
en las curvas es simplemente crear un montón
de puntos y luego muestrear la curva
con factor aleatorio, y esto los
distribuirá muy bien. Entonces primero, agreguemos algunos puntos. Voy a añadir, por ejemplo, 200 de ellos por ahora. Y como deposición,
usaremos una curva de muestra. Entonces estaremos muestreando
esas curvas. Queremos muestrear todos ellos para
poder verificar todas las curvas, y ahora solo podemos
controlar este factor. Para cada punto, queremos que este
factor sea aleatorizado. Entonces agreguemos el valor aleatorio
0-1, enchufarlo en factor. Y ahora si enchufa esta
posición a esos puntos, verá que
los puntos solo deben distribuirse
en las ramas. puede ver que
se cambian
dependiendo de cómo fijemos esas curvas. Pero el problema ahora es
que en realidad no
sabemos cuántos puntos
queremos porque a veces las partes serán muy pequeñas y no queremos
muchas hojas en un solo lugar. Y a veces
habrá curvas largas, y no queremos grandes
brechas entre ellas, y queremos un buen
número de puntos aquí. Para calcular una gran
cantidad de puntos, podemos simplemente tomar la longitud total de todas estas curvas con longitud de curva. Entonces este nodo nos da la longitud total de
todas estas curvas. Y ahora si agregamos una nueva entrada que
podemos llamar, por ejemplo, densidad, podemos simplemente tomar esta longitud y
multiplicarla por la densidad. Esto dará como resultado que no importa
cuán largas sean las curvas, siempre
habrá una
densidad similar de las hojas. Entonces, si la longitud es
algo más pequeña, solo
habrá unos pocos puntos, y cuando esto sea algo alto, la longitud,
habrá muchos puntos. Si tapamos este
multiplicar para contar ahora y fijamos la densidad a diez, se
puede ver que
hay muchos puntos. Pero si disminuimos o lo
pondré a de fin y
se puede ver que los puntos
siempre están relativamente
bien distribuidos. Todo bien. Entonces ahora nuestros puntos
están muy bien distribuidos. También podemos agrupar esto y
llamarlo distribuir hojas de punto,
perdón, puntos de hoja. Y ahora por fin podemos instancia algunas hojas sobre esos puntos. Entonces a través de esto,
agregaremos instancia sobre puntos. Para los puntos, usaremos aquellos puntos que
distribuimos. Y para las instancias, vamos a querer usar algunas de las colecciones que
agregamos del archivo. Para ello,
agregaremos un nuevo input donde agregaremos
la colección. Así que agreguemos colección y
fijemos colección Tipo dos. También lo voy a mover
hasta el panel. Y establece algunos valores aquí. Entonces yo, por ejemplo,
recogeré las hojas de sakura Y ahora para distribuir esas
hojas de colección, solo
podemos sacar la información de la
colección. Para la entrada, usaremos la
colección de nuestra entrada grupal. Queremos separar
y restablecer a los niños. Y podemos enchufar esas
instancias en los puntos. Se puede ver que ahora todas
las hojas están orientadas en
la misma dirección, y también todas las
hojas están en cada punto. Así que sólo queremos elegir uno. Entonces a través de eso podemos
verificar esta instancia pi. Y también queremos rotar un poco
esas hojas. Entonces la forma más sencilla
sería simplemente crear valor
aleatorio o vector
aleatorio 0-2 Pi Y si lo enchufamos en rotación, tenemos algunas hojas relativamente
bonitas. Si ahora combinamos esto
con nuestra geometría de rama, se
puede ver que
puede haber varios problemas. Pondré densidades
a algo más pequeño, así que es un poco
más visible y también pondré radio lleno de
algo por debajo de uno Este no es probablemente el árbol
que quieres crear, pero quiero
mostrarte un pequeño problema que tenemos, ¿verdad? Entonces, por ejemplo, en esta
curva aquí hay una curva, y estamos instanciando los puntos rectos
sobre estas curvas El problema es que la malla no
está en estas curvas, sino que está a su alrededor
porque estamos usando una espiral o curva para crear
un perfil a su alrededor, y queremos que las hojas crezcan en esta malla y
no en las curvas. Entonces para arreglar esto,
necesitamos compensar esto, compensar este punto por el
radio de esta curva. Entonces las hojas realmente crecen en la superficie y no en
el interior de la malla. Entonces para ello, lo haremos antes de puntos instanciar
hojas en los puntos, también estableceremos posición
de estos puntos, y necesitamos tomar radio de esta curva en
el punto distribuido Entonces ese será el valor
que también estaremos muestreando. Entonces voy a agregar radio. Y ahora este valor es el
radio en un punto dado. Y si echamos un
vistazo a este dibujo, cada curva tiene algunos vectores. Una de ellas es la tangente curva, que está en la
dirección de la curva, y la segunda es la curva normal,
que
es la dirección perpendicular
a la tangente de la curva Entonces, si tomamos esta curva normal y la
escalamos por el radio, deberíamos obtener un
desplazamiento correcto para los puntos. Entonces, si enchufa este
punto en el desplazamiento, y lo importante también
se multiplica por el radio general
de la rama. Así que vamos a multiplicarlo por el
radio de la entrada del grupo. Y ahora la hoja es se puede ver que está en
la superficie de la malla. No es apuntar en
la dirección correcta. Debería ser
algo así. Ya casi estamos ahí. Para
aleatorizar esto aún más, tomaremos el vector normal y lo rotaremos por valor aleatorio Entonces si visualizamos esto, tenemos la rama, y tiene una curva tangente
y también la curva normal En esta dirección, estamos
compensando las hojas, pero ahora afectaría que todos los puntos
se compensaran en la misma dirección, pero queremos aleatorizar esto, así que algunos de ellos estarán en esto,
algunos de ellos en esta, y esta Entonces para aleatorizar esto, podemos tomar este
vector normal que escalamos por el radio y usar una rotación vectorial o
rotación vectorial El centro será 00, cero, y el eje será la tangente porque ese es el eje
alrededor del cual estamos rotando Y para el ángulo,
sólo podemos escoger un valor aleatorio. Entonces agregaré un valor aleatorio
y lo pondré a 022 Pi. Y si enchufa este vector
resultante en offset, los puntos deberían
distribuirse aún más aleatoriamente. Ahora, voy a limpiar un poco
estas matemáticas. Entonces algo como esto. Y también debemos
conectar siempre la semilla a
nuestros valores aleatorios. Entonces conectaré la semilla
de la entrada del grupo a este valor aleatorio y también la
semilla a este valor aleatorio. Ahora bien, si
volvemos a poner el flujo de radio a algo más razonable y establecemos la densidad
en algo así como diez, se
puede ver que tenemos una distribución muy agradable de las hojas. También podemos intercambiar entre diferentes hojas muy fácilmente porque hay esta colección, y todo está funcionando muy bien. Una última opción o un último
perímetro que queremos
agregar es que queremos poder controlar la escala
de estas hojas. Entonces agreguemos dos entradas más. Uno de ellos será escala, predeterminado a uno, y el segundo
será aleatoriedad de escala La escala se
controlará simplemente aquí donde estamos instanciando
hojas en los puntos Y la forma en que
generaremos esto es que simplemente
crearemos un valor aleatorio, y tomaremos entrada de grupo, y el mínimo de
este valor aleatorio
será escala menos aleatoriedad, y el máximo será
escala más aleatoriedad Así que puedes simplemente conectar ambos valores al
valor aleatorio y también a la semilla. Y ahora si conectas
este valor aleatorio a la escala y lo estableces
a valores predeterminados, puedes ver que aquí también tenemos algunas
variaciones. Si también revisamos los tres
tipos de hojas,
entonces las ramas, las hojas
están por todas las ramas. Desde el final, podemos controlar qué tan lejos de los
extremos de las ramas
están las hojas y también podemos
controlar las Xs mínimas, que podrían ser útiles
en algunos tipos de árboles. Todo es procesal, así podemos jugar
con la semilla, y siempre conseguimos un árbol
muy diferente.
14. Sistema básico de partículas: Bienvenido de nuevo a los árboles D libres
con nodos de geometría Blender. Vamos a añadir un
detalle más a nuestro árbol, y será un sistema de
partículas muy sencillo que simulará la caída de
hojas de nuestras ramas. En este caso,
volveremos a usar objetos de la parte posterior de activos gratuitos
que
obtendrás gratis con este curso, y en este caso, usaré
esas pequeñas hojas de secura, que serán perfectas
para este uso Entonces, cómo va
a funcionar esto, primero, estaremos usando zonas de simulación
dentro de los nodos geométricos, lo que nos permitirá simular esas hojas que caen y
algún tipo de física Entonces, lo primero que
tenemos que hacer es agregar algunos puntos
a nuestra geometría. Entonces estaremos usando una técnica
similar a la que usamos
para distribuir hojas. Usaremos las mismas curvas, pero sólo vamos a instancia algunos puntos simples
sobre ellas así. Y luego en
zona de simulación en cada fotograma, los
moveremos
un poco hacia abajo, así parecerá
que están cayendo y además le agregaremos algo de ruido, así que no serán solo hojas
rectas que caen, sino que tendrán algún movimiento
o algo así. Entonces vamos a los nodos de geometría, y voy a estar sumando los puntos aquí abajo
debajo de la estructura de la hoja. Lo importante es que pequeñas partículas van a
estar cayendo de las hojas para las que
ya tenemos esas curvas sobre las
que se generan. Entonces volveremos a usar estas curvas y distribuiremos algunos
puntos sobre ellas. Entonces usaremos salida
de este interruptor de menú, que es escogido por
este atributo are, y estaremos usando técnicas
similares a
las de las hojas. Entonces agregaremos curva simple
y estaremos muestreando curvas
aleatorias a partir de estas y simplemente asignando esas
posiciones a nuevos puntos Por ahora, voy a añadir puntos nodo, y digamos que queremos
sumar cuatro puntos cada fotograma, así que voy a establecer el conteo en cuatro. Y ahora necesitamos verificar todas las curvas porque
queremos muestrear todas esas, y el factor
será valor aleatorio. Así que vamos a agregar un valor aleatorio
0-1, y conectarlo a factor. Ahora bien, si enchufamos posición al nodo de puntos
y visualizamos esto, verás que
tenemos algunos puntos aquí, y podemos cambiar el asiento
con el atributo seat. Para simular la caída, necesitaremos la zona
de simulación. Entonces agreguemos la zona de simulación. Y esto es muy
similar a la zona de repetición. Por lo que tiene alguna entrada de geometría. Entonces hace algunas cosas
entre esos dos nodos. En este caso, esto se
hace para cada fotograma, y luego está esta geometría
de salida. Entonces en cada fotograma, queremos agregar cuatro nuevas
hojas a nuestros puntos de caída, y lo haremos uniendo esos cuatro puntos a
esta geometría existente. Entonces agreguemos geometría de unión, y uniremos
esos cuatro puntos. Ahora bien, si sacamos esta zona de
simulación, reproducir la animación, se
puede ver que todavía sólo tenemos
esos cuatro puntos. Eso es porque en cada fotograma, se agregan
esos mismos cuatro
puntos, y se
superponen entre sí. Si **** sobre esta salida, deberíamos ver que ahora tenemos 404 puntos porque
estamos en el frame 101. Para hacerlos
variables, necesitamos
controlar el asiento y hacerlo
diferente para cada cuadro. Esto, podemos usar el tiempo de escena, lo que nos da el fotograma
actual. Y si enchufamos este fotograma al asiento y reiniciamos
la animación, deberíamos ver que
van apareciendo nuevos puntos cada fotograma. Poco a poco van creando
la forma de las curvas originales. Ahora, es posible que desee agregar un número diferente de
puntos para cada fotograma. Entonces para eso, podríamos usar un valor aleatorio y simplemente
conectarlo al conteo. Pero se puede ver que no
es posible porque la salida de este valor
aleatorio es campo, pero estos puntos necesitan
un valor constante. Entonces, para sortear esto,
necesitamos averiguar
la manera distribuir o crear
puntos aleatorios en cada fotograma. La forma en que podemos hacer esto es en lugar de esos
puntos nodo que solo crean puntos en posición
dada,
podemos, por ejemplo, usar distribuir puntos en caras donde
le damos algún tipo de malla, y generará puntos dependiendo de la densidad y el asiento. Y esto dará como resultado un número
diferente de
puntos para cada asiento. Por lo que también necesitamos malla de entrada. Entonces para eso, podemos usar la malla
que más te guste. Solo usaré grid. Y
ahora si visualizamos esto, se
puede ver que
tenemos esta es la grilla, y hay algunos puntos
generados, y en cada asiento, genera diferente
número de puntos. Si es la densidad
a uno, por ejemplo, se
puede ver que a veces
hay dos puntos, a veces solo uno, y
a veces cero puntos. Entonces eso es bastante bueno. Un problema más al que
podríamos enfrentarnos es que esto no
depende de la longitud de
esas curvas fuente, lo que significa que no importa
cuán largas sean esas curvas, siempre
generaremos el
mismo número de puntos. Podemos arreglar esto controlando el tamaño de esta cuadrícula
por la longitud de la curva, lo que significa que si
tenemos curvas más largas, generará cuadrícula más grande y distribuirá más puntos porque
habrá más espacio. Entonces a través de eso, podemos simplemente usar una longitud de curva y
conectarla al eje X o Y. Ahora se puede ver que
está generando puntos en esta gran grilla. Y también podemos controlar
la densidad con el segundo tamaño sobre el eje Y. Pero solo me apegaré a uno,
y estaremos controlando densidad con este valor de densidad. Ahora cuando tenemos el
número apropiado de puntos generados, solo
necesitamos
distribuirlos en las curvas. Así que solo usaremos set position. Y como posición, utilizaremos esta posición aleatoria
a partir de curvas fuente Ahora puedes ver que si
toco la animación, está distribuyendo puntos aleatorios
a través de todas las curvas. ¿Verdad? Entonces ahora, si
paso por la animación, puede ver que siempre
hay cuatro puntos, y eso es porque el asiento de distribuir puntos
sigue siendo el mismo. Entonces también enchufaré el marco
al asiento. Y ahora deberíamos conseguir algunos números
diferentes de puntos. Quizá disminuya
la densidad a 2.02, y se puede ver que
hay tres puntos, uno, uno,
tres, cero, dos, así que está
muy bien aleatorizado. Derecha. Entonces ahora volvamos a poner
esos puntos a esta zona de simulación
y sacar esta. Y se puede ver
que cada vez estamos obteniendo más puntos a medida
que jugamos la animación. Entonces vamos a darle un
poco de movimiento. Para el movimiento, solo
podemos usar una posición establecida y simplemente darle desplazamiento en ZxS a algo así
como negativo 0.1 Ahora bien, si tocas la animación, verás que los
puntos están cayendo. Eso es porque siempre
crea esos nuevos puntos y todos ellos se mueven en
el eje Z en 0.1 negativo. Una cosa que debemos arreglar es que si ahora
jugamos la animación, se
puede ver
lo rápido que están cayendo. Pero si cambio la velocidad
de fotogramas de este proyecto a 60, por ejemplo, verás que están
cayendo mucho más rápido. Eso es porque este desplazamiento está en 24 FPS hecho 24 veces por segundo. Pero si establecemos fotogramas
por segundo en 60, se hace 60 veces por segundo,
y es mucho más rápido. Para controlar esto, podemos
usar este tiempo Delta, que nos da tiempo
entre dos fotogramas. Y si escalamos un vector por este valor, Entonces
algo así. Y voy a decir esto
a negativo uno en Z Xs porque este
tiempo Delta es muy pequeño número. Ahora bien, si tocas la animación, puedes ver
que es bastante lenta. Pero si cambiamos la velocidad de fotogramas, la velocidad no debería cambiar, y debería seguir siendo
la misma velocidad. Bien, así podemos llamar a
esto, por ejemplo, una gravedad y necesitamos
poder controlar esta gravedad, así que vamos a querer controlar
este valor en el eje Z. A través de esto,
solo agregaré combine XYZ, y agregaré una nueva entrada de grupo, que controlará este valor Z. Para los puntos,
agregaré un nuevo panel, que llamaré partículas, y agregaré una nueva entrada, que llamaré gravedad
y estableceré por defecto en uno. Debido a que queremos
ingresar gravedad positiva, pero este valor necesita
ser negativo, primero
multiplicaremos
esta entrada de gravedad por uno negativo y luego la
conectaremos a la coordenada Z. Ahora bien, si voy al modificador y
reseteo la gravedad a uno, lo siento, necesito configurar
esto para que se multiplique. Y ahora deberíamos
obtener hojas que caen o partículas que caen. También puedo aumentar esto y
verás que los puntos están cayendo más rápido o más lento. Todo bien. Entonces ahora vamos a darle un
poco de aleatoriedad. Entonces lo que
vamos a hacer es que
agregaremos algún valor aleatorio
a este desplazamiento. Y este
valor aleatorio vendrá de la textura del ruido porque
la textura del ruido nos
da un ruido suave
y agradable, y podemos usar eso para
desplazar esos puntos Entonces agreguemos noisetexture. Ya usamos texturas de
ruido para desplazar nuestro árbol, e hicimos una cosa, y eso fue remapear
este color porque este es vector y
queremos usar este vector, y
lo estábamos remapeando de cero, cero, cero, uno, uno a
negativos a unos Entonces obtenemos vector, que también puede ser positivo y negativo
y no sólo positivo. Entonces esto nos da vector aleatorio. Y ahora, si solo escalamos
este vector por alguna constante y lo agregamos
a esta gravedad, verán que aquí tenemos puntos
muy locos. Multiplicaré esto
por 0.1, por ejemplo, ahora se puede ver que los
puntos son más jiggly, algunos de ellos también se
quedan en el Entonces, una cosa que
podríamos arreglar en este rancho de mapas es que
no queremos controlar esos
puntos en el eje Z, sino que solo queremos
controlar el movimiento
en el plano X e Y. Así que voy a poner esos codinos
Z a cero, y ahora este
rancho de mapa sólo
nos dará vectores aleatorios
en el plano XY
15. Simulaciones avanzadas de partículas: Hola, y bienvenidos de nuevo a
D Trees gratis con Blender EmetinRDS Se puede ver que los puntos están cayendo con la misma velocidad, y son vibrantes. Si establecemos la escala a
algo global, posible que
veas que algunos de los puntos se están
agrupando, y eso es porque
si los dos puntos están cerca o en
la misma posición, se les aplica
el mismo ruido y luego
tienen el mismo camino o la misma manera. Entonces, para crear una textura de
ruido diferente para cada punto, podemos cambiar esto a cuatro D, y este W es algo así como CD. Entonces, por ejemplo, solo podemos
usar índice de cada punto. Este índice no es
realmente la mejor opción porque el índice podría cambiar a
lo largo de la simulación. Entonces para arreglar esto,
almacenaremos algunos atributos antes del inicio de la simulación
para cada punto y luego los usaremos para
diferenciar entre ellos. Así que voy a añadir store
named attribute aquí después de establecer la posición donde estamos
distribuyendo los puntos. Y lo primero
que vamos a almacenar será algo así como índice, así que lo llamaré y
será entero. Y usaré combinación de frame y el índice para crear un número único
para cada punto. Entonces para esto,
podemos, por ejemplo, simplemente usar multiplicar y sumar. Multiplicaré el fotograma
por alguna constante, digamos, 21, y agregaré
el índice a esto. Esto debería darnos un
número diferente para cada punto, y podemos comenzar en
este atributo I. Y posteriormente, podremos reutilizar este atributo nombrado
como semilla para este ruido. Ahora puedes ver que el
ruido es mucho más suave, y queremos poder
controlar cuánto afecta
esta textura de ruido a nuestros puntos y también la
escala de esta textura de ruido. Entonces agreguemos dos nuevas entradas. El primero de ellos
será la escala de ruido, que estableceré por defecto en
uno y mínimo a cero, y el segundo será la potencia de ruido, que configuraré por defecto en uno. Ctly si miras la configuración, lo extraño aquí es que
la gravedad se escala
por
el tiempo Delta,
pero la textura del ruido no lo es, y esto
en realidad debería arreglarse Entonces, primero sumemos
esos dos vectores juntos así
y después de eso, escalaremos todo este
vector para este tiempo de Delta. Ahora bien, esto debería ser verdaderamente
independiente de la velocidad de fotogramas, y conectemos
las entradas de la entrada de grupo, así que traeré la entrada de grupo
y conectaré la escala de ruido a esta potencia de ruido y ruido a este nodo matemático vectorial de escala. También voy a razonar esos valores. Y se puede ver que tenemos
bonitas partículas que caen. El problema que podrías
ver es que los puntos se están generando todo el tiempo, pero nunca se eliminan, y eso podría causar algunos
problemas con la velocidad de fotogramas porque podría
haber demasiadas hojas y se pondría muy rezagado Entonces para arreglarlo, necesitamos
en una función que eliminaría los puntos después de algún tiempo de su vida. Entonces digamos que establecemos una
vida útil de cada 0.2 segundos. Entonces, si el punto es más antiguo o está en escena más de 2 segundos,
se eliminará. Para ello, almacenaremos algunos atributos antes de
la simulación. Uno de ellos será el inicio, lo que nos dará el
momento en que se creó este punto. El tipo será flotador.
Y para almacenar este valor, solo
usaremos los segundos, lo que nos dará segundos
actuales, y lo almacenaremos en
el atributo start. El segundo atributo que
usaremos será de por vida, y que almacenará cuánto tiempo debe vivir
este punto. Y ahora solo
lo configuraré por 2 segundos. Posteriormente, podemos aleatorizar
esto, por ejemplo. Entonces después del movimiento
de los puntos, comprobaremos si cada punto debe estar
todavía en la simulación, y si no, lo eliminaremos. Así que agreguemos delete geometry, y ahora necesitamos escoger qué
puntos queremos eliminar. Tomarás el inicio del atributo con
nombre. Y para averiguar
cuánto tiempo vive, solo
usaremos el tiempo actual y restaremos este
inicio de este tiempo Entonces esta resta nos
dará
cuánto tiempo estuvo existiendo este punto Digamos, por ejemplo,
el inicio es de 2 segundos y actualmente el
tiempo es de 6 segundos. Eso quiere decir que el punto el
punto es de 4 segundos con vida. Y cuando esto sea
mayor que la vida útil, así que duplicaré esto
y lo pondré a por vida. Queremos eliminar este punto. Así que vamos a enchufar este resultado
en borrar geometría. Y ahora si jugamos
la animación, verás que
esos puntos en la parte inferior están siendo borrados. Eso se debe a que su
vida es
más larga que su vida umbral
y se eliminan. También podemos aleatorizar
esta vida. Entonces para eso, voy a agregar
dos entradas de grupo. Uno de ellos será de por vida, estableceré default en dos
y mínimo a cero, y el segundo será aleatoriedad de
por vida Que estableceré por defecto a cero. Y ahora solo la
aleatorización clásica. Añadiremos entrada de grupo, y el mínimo
del valor aleatorio será de por vida
menos aleatoriedad, y el máximo será de
por vida más aleatoriedad Entonces esto nos dará el rango
en el que queremos que genere la
vida útil. Y vamos a enchufar
esos dos valores en un valor aleatorio como este, y también podemos establecer la
semilla desde la entrada del grupo. Y el ID para que sea
diferente para cada punto, podemos reutilizar este valoro que
estamos almacenando aquí en I, y simplemente
lo montaré aquí así. Y esto debería darnos un valor
diferente para cada punto. Y si ahora
lo almacenamos en toda la vida, Sí, hay algunos problemas eso es porque nuestra
vida no está realmente establecida. Entonces estableceré la vida útil en dos
y la aleatoriedad en cero. Entonces ahora cada punto
debería vivir 2 segundos. Pero si pongo aleatoriedad a uno, el punto puede vivir de 1
segundo a 3 segundos. ¿Verdad? Entonces creo que nuestra simulación de
partículas muy básica está hecha, y ahora la última parte
para hacer hojas reales, necesitamos usar estos puntos y distribuir algunos
objetos sobre ellos. Entonces para esto, voy a usar
instancia en puntos. Y como las instancias, usaremos algunas hojas. Entonces esos estarán en colección. Y tenemos que crear primero
una entrada grupal para esto. Entonces agregaré una nueva
entrada de grupo y colección, configuraré el tipo también a la colección
y la moveré aquí arriba. Y ahora solo voy a enchufar esta colección desde la
entrada del grupo hasta la información de la colección. Quiero separar e
investigar a los niños, conectar estas instancias
en la entrada de instancias, y queremos que cada instancia
sea aleatoria, así que revisaré esta gran instancia Ahora podemos ver cualquier cosa porque no
elegimos la colección. Y la colección que voy a utilizar serán esos pétalos de flores. Para que pueda ocultar esto otra vez, y voy a recoger pétalos
de flores aquí. Y ahora se puede ver que tenemos hojas
muy básicas como esta. Hay algunos problemas.
Todos ellos están orientados hacia arriba. Entonces nos gustaría, por ejemplo, aleatorizar
esas hojas Y lo segundo es que todos
tienen la misma escala, así que queremos aleatorizar
esto un poco Primero, arreglemos la rotación. Y lo primero que
podríamos hacer es simplemente enchufar una rotación aleatoria
a este zócalo de rotación. Pero para que sea un poco mejor para el renderizado, por ejemplo,
podemos girarlos
para que
siempre miren a la cámara, y siempre se puedan
ver las hojas enteras, lo que podría ser muy útil
si son muy pequeñas, puede
que no sean
visibles todo el tiempo. Entonces esto podría arreglar eso y
para averiguar la rotación, cómo se enfrentará a
la cámara, primero, necesitamos el
objeto de cámara para que podamos obtener el objeto de cámara activo, lo que nos dará la cámara activa
actual. Para obtener la ubicación, usaremos información del
objeto y
usaremos esta ubicación. Y se puede ver que esas hojas siempre
están orientadas hacia el eje Z. Así que vamos a querer alinear el eje Z a la
dirección a la cámara. Para obtener dirección a la cámara, solo
tomaremos nuestra
posición y la restaremos de una ubicación de la cámara Con matemáticas vectoriales. Entonces esto
nos da este vector de dirección. Y ahora solo podemos usar
align rotation to vector porque queremos alinear
nuestro eje Z a este vector, así que lo enchufaré en
vector y rotación. Y ahora, esto se ve
un poco raro. Eso es probablemente porque no
tengo ninguna cámara en esta escena, así que voy a añadir una nueva cámara. Y se puede ver que a
medida que muevo
la cámara, las hojas están de frente a
ella y puedo comprobarlo con esta esta. Se puede ver que si veo
desde cualquier ángulo, siempre
puedo ver las hojas. Y último, también
podemos
girarlos aleatoriamente alrededor del eje Z. Entonces a través de esto, podemos simplemente enchufar un valor aleatorio
a esta rotación, y solo usaré el valor
aleatorio 0-2 Pi Y ahora también deberían tener
alguna rotación aleatoria. Bien, así que eso se
ve bastante bien. Y ahora para la escala, usaremos el enfoque clásico. Simplemente agregaremos entradas para aleatoriedad de
escala y escala y simplemente la calcularemos en
función de esas entradas Entonces, la primera entrada será escala, por defecto uno, mínimo a cero, y el segundo
será aleatoriedad de escala, que tendrá default a
cero y mínimo a cero Para el valor en este rango, restaré la aleatoriedad de la
escala, y para el máximo, agregaré esos dos
valores y solo conectaré esos dos valores en mínimo y máximo
de valor aleatorio Y esto debería
darnos la escala correcta. También podemos usar seed from
group input para la semilla, y para el ID, podemos usar
el atributo I named. Entonces agregaré atributo con nombre, I y lo conectaré a ID. Entonces algo como
esto debería funcionar. Y ahora podemos enchufar
este valor en escala, y se puede ver que las
hojas son aleatorias Voy a poner escala a oh, sí, la escala está en una. Voy a establecer la escala en algo así como 0.2 y al azar como a 0.1. Y ahora tenemos esas
bonitas hojas pequeñas. Voy a disminuir la gravedad, así que es un poco más lento. Y el último insumo que
olvidamos agregar es la densidad. Así que también arreglemos esto. Los puntos se distribuyen aquí en esta
distribución en caras, y queremos poder
controlar esta densidad. Entonces voy a agregar una nueva
entrada, llamarlo densidad. Envié devoto a
algo así como 0.5, y lo conectaré a
esta entrada de densidad Si ahora
reiniciamos esto, tenemos muchos puntos aquí, y podría aumentar un poco la escala
del ruido. Y si solo quiero unas pocas hojas, pondré en 0.05, pero aún tengo muchas hojas. Disminuiré esto aún más
y aumentaré la vida útil. Ahora puedes ver que tenemos
unas hojas bastante bonitas. Y para combinar esto
con el árbol original, solo
voy a agregar la geometría de la junta y solo tapar esas
dos cosas juntas. Y ahora lo que tenemos es este hermoso árbol
con hojas que caen.