Árboles 3D con nodos de geometría en Blender | 3D Tudor | Skillshare

Velocidad de reproducción


1.0x


  • 0.5x
  • 0.75x
  • 1x (Normal)
  • 1.25x
  • 1.5x
  • 1.75x
  • 2x

Árboles 3D con nodos de geometría en Blender

teacher avatar 3D Tudor, The 3D Tutor

Ve esta clase y miles más

Obtenga acceso ilimitado a todas las clases
Clases enseñadas por líderes de la industria y profesionales activos
Los temas incluyen ilustración, diseño, fotografía y más

Ve esta clase y miles más

Obtenga acceso ilimitado a todas las clases
Clases enseñadas por líderes de la industria y profesionales activos
Los temas incluyen ilustración, diseño, fotografía y más

Lecciones en esta clase

    • 1.

      Introducción al curso de árboles 3D con nodos de geometría

      3:11

    • 2.

      Descripción del generador de árboles

      6:07

    • 3.

      Introducción al generador de ramificaciones

      3:58

    • 4.

      Extremos divididos

      13:45

    • 5.

      Conceptos básicos del sistema de sucursales

      12:24

    • 6.

      Sistema avanzado de ramificación

      17:14

    • 7.

      Datos internos

      13:59

    • 8.

      Raíces

      8:42

    • 9.

      Desplazamiento

      11:21

    • 10.

      Generación de malla

      9:08

    • 11.

      Mapeo y refinado de UV

      12:37

    • 12.

      Conceptos básicos de distribución de hojas

      9:59

    • 13.

      Colocación avanzada de hojas

      11:28

    • 14.

      Sistema básico de partículas

      12:10

    • 15.

      Simulaciones avanzadas de partículas

      14:17

  • --
  • Nivel principiante
  • Nivel intermedio
  • Nivel avanzado
  • Todos los niveles

Generado por la comunidad

El nivel se determina según la opinión de la mayoría de los estudiantes que han dejado reseñas en esta clase. La recomendación del profesor o de la profesora se muestra hasta que se recopilen al menos 5 reseñas de estudiantes.

210

Estudiantes

4

Proyectos

Acerca de esta clase

¡Sumérgete en el fascinante mundo de la generación de árboles procedimentales con los nodos de geometría de
Blender! Haz clic aquí para acceder al paquete de recursos]

En 'Árboles 3D con nodos de geometría de Blender', aprenderás a crear árboles 3D de aspecto natural y totalmente personalizables, desde estructuras de tronco y raíz hasta distribución realista de las hojas. También explorarás técnicas avanzadas como el desplazamiento del ruido, los nodos de extremo divididos para la ramificación, e incluso una sencilla configuración de simulación para la caída de hojas. Este enfoque práctico te garantiza adquirir habilidades prácticas que puedes aplicar a todo, desde entornos de juegos hasta escenas de bosque estilizadas.

Al final de las lecciones, sabrás exactamente cómo transformar curvas en mallas 3D optimizadas, mapear texturas de manera eficiente y desarrollar un flujo de trabajo basado en nodos que sea flexible y eficiente. Tanto si eres un principiante en Blender que busca ampliar sus habilidades como si eres un artista 3D experimentado que busca optimizar su proceso, esta clase te mostrará cómo cultivar árboles de calidad profesional con algunas configuraciones de nodos inteligentes.

¿Por qué elegir árboles 3D con nodos de geometría en Blender?

  • Árboles 3D profesionales: ideal para desarrolladores de juegos, artistas ambientales y aficionados que buscan crear árboles de alta calidad para juegos, animaciones y mundos 3D.

  • Dominio práctico de procedimientos: domina las técnicas clave como el nodo SplitEnd, la aleatorización de ramas y los sistemas de raíz para desarrollar árboles orgánicos y de aspecto natural desde cero.

  • Técnicas avanzadas de nodos: descubre cómo distribuir las hojas dinámicamente, agregar desplazamiento de ruido de procedimiento, y generar estructuras complejas de ramificación usando zonas repetidas.

  • Simulación de hojas que caen: implementa un sistema de partículas (la Zona de Simulación de Blender) para crear hojas que se desprendan, caigan y aporten movimiento a tus escenas.

  • Mapeo UV realista y generación de mallas: convierte las curvas procedimentales en mallas 3D totalmente funcionales con mapas UV adecuados y aplicación de materiales sin interrupciones.

  • Aumenta tus habilidades 3D: aplica estas técnicas a una amplia gama de proyectos, desde entornos realistas hasta paisajes de fantasía estilizados.

Lo que aprenderás

  • Fundamentos procedimentales: crea estructuras troncales y raíz utilizando grupos de nodos personalizados.

  • Ramificación y aleatorización: domina los nodos SplitEnd y las zonas de repetición para los patrones de ramificación naturales.
  • Colocación y simulación de hojas: controla la distribución de las hojas a lo largo de las ramas y configura la caída de las hojas para lograr un realismo dinámico.

  • Conversión de malla y asignación de UV: convierte curvas en malla de manera eficiente y aplica texturas sin complicaciones.
  • Flujos de trabajo de nodos prácticos: construye un sistema modular que puedas reutilizar para árboles, arbustos y más.

A QUIÉN ESTÁ DIRIGIDA LA CLASE

  • Desarrolladores de juegos y artistas 3D que buscan activos de árbol optimizados para motores en tiempo real o escenas cinematográficas.

  • Creadores estilizados que quieran agregar vegetación a reinos de fantasía, paisajes alienígenas o proyectos de arte conceptual.

  • Los entusiastas de Blender están listos para explorar el modelado procedimental y ampliar sus capacidades de diseño de entornos.

Por qué es esta clase para ti
El aprendizaje de estas técnicas procedimentales abre posibilidades creativas infinitas. Podrás comprender mejor los nodos de geometría de Blender, acelerar tu flujo de trabajo y producir entornos 3D ricos y dinámicos, perfectos para animaciones, juegos o proyectos personales imaginativos.

Tiempo y recursos

Duración de la clase: 9 lecciones detalladas que abarcan más de 2 horas de técnicas de modelado procedimental.

Incluye paquete de recursos

Esta clase incluye un paquete de recursos de alta calidad que contiene 8 materiales estilizados PBR diseñados para la creación de un árbol procedimental. Se incluyen texturas de corteza de cereza, de roble, variaciones de ramas de cerezo (con y sin flores) y variaciones de hojas de roble para verano, otoño y primavera. También se proporciona un paquete de pétalos de cerezo para efectos realistas de flores en caída. El archivo del proyecto terminado forma parte del paquete, para que puedas comparar y perfeccionar tus configuraciones de árboles fácilmente.

¿Estás listo para empezar a crecer?

Controla la creación de un árbol procedimental como nunca antes. Desde árboles fantásticos hasta follaje realista del bosque, esta clase de Skillshare te abrirá la puerta a nuevos proyectos.

Mejora tus habilidades de nodos de geometría en Blender y comienza a crear increíbles árboles en 3D.

Hasta la próxima vez, que todos tus polígonos echen raíces, ¡y que tus hojas nunca caigan demasiado pronto!

Lucas

Conoce a tu profesor(a)

Teacher Profile Image

3D Tudor

The 3D Tutor

Top Teacher

Hello, I'm Neil, the creator behind 3D Tudor. As a one-man tutoring enterprise, I pride myself on delivering courses with clear, step-by-step instructions that will take your 3D modeling and animation skills to the next level.

At 3D Tudor, our mission is to provide accessible, hands-on learning experiences for both professionals and hobbyists in 3D modeling and game development. Our courses focus on practical, industry-standard techniques, empowering creators to enhance their skills and build impressive portfolios. From crafting detailed environments to mastering essential tools, we aim to help you streamline your workflow and achieve professional-quality results.

We're committed to fostering a supportive... Ver perfil completo

Level: All Levels

Valoración de la clase

¿Se cumplieron las expectativas?
    ¡Superadas!
  • 0%
  • 0%
  • Un poco
  • 0%
  • No realmente
  • 0%

¿Por qué unirse a Skillshare?

Mira las galardonadas Skillshare Originals

Cada clase tiene lecciones cortas y proyectos prácticos

Tu membresía apoya a los profesores de Skillshare

Aprende desde cualquier lugar

Ve clases sobre la marcha con la aplicación de Skillshare. Progresa en línea o descarga las clases para verlas en el avión, el metro o donde sea que aprendas mejor.

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.