Tree.js
¿Qué es?
Un generador de árboles procedural construido con Three.js. Cuenta con más de 30 parámetros ajustables y soporte para exportar a .glb.
Instalación
El código de generación de árboles está publicado como un paquete npm y puede ser importado en tu propio proyecto.
npm i @dgreenheck/tree-js
Uso
// Crear una nueva instancia
const tree = new Tree();
// Establecer parámetros
tree.params.trunk.length = 20;
tree.params.branch.levels = 3;
// Generar el árbol y añadirlo a la escena
tree.generate();
scene.add(tree);
Cada vez que se cambian los parámetros del árbol, debes llamar a generate() para regenerar la geometría.
Para más información, consulta la aplicación de demostración para un ejemplo de cómo crear un árbol.
Parametros
Tronco
- color: Color del tronco del árbol
- flare: Multiplicador para la base del tronco
- flatShading: Usar normales de cara para el sombreado en lugar de normales de vértice
- length: Longitud del tronco base
- maturity: Etapa de crecimiento del árbol
- radius: Radio inicial del tronco
- textured: Aplicar textura de corteza
Ramas
- gnarliness: Amplitud máxima del ángulo aleatorio añadido a la orientación de cada sección
- gnarliness1_R: Igual que arriba, pero inversamente proporcional al radio de la rama. Los dos términos pueden usarse para equilibrar la gnarliness del tronco frente a las ramas
- lengthVariance: % de variación en la longitud de la rama
- lengthMultiplier: Longitud de la rama hija relativa a la rama madre
- levels: Número de recursiones de ramas (Mantener por debajo de 5)
- minChildren: Número mínimo de ramas hijas
- maxChildren: Número máximo de ramas hijas
- radiusMultiplier: Radio de la rama hija relativo a la madre
- start: Define dónde comienzan a formarse las ramas hijas en la rama madre. Un valor de 0.6 significa que las ramas hijas pueden comenzar a formarse al 60% del camino hacia arriba de la rama madre
- stop: Define dónde dejan de formarse las ramas hijas en la rama madre. Un valor de 0.9 significa que las ramas hijas dejan de formarse al 90% del camino hacia arriba de la rama madre
- sweepAngle: Máximo ángulo de barrido de las ramas (radianes)
- taper: Radio del extremo de la rama relativo al comienzo de la rama
- twist: Cantidad de torsión alrededor del eje vertical
Geometría
- lengthVariance: % de variación en la longitud nominal de la sección
- radiusVariance: % de variación en el radio nominal de la sección
- randomization: Factor de aleatoriedad aplicado a los vértices
- sections: Número de secciones que componen esta rama
- segments: Número de caras alrededor de la circunferencia de la rama