# Bamboo Cluster

> A clump of low-poly bamboo: tall, gently leaning green stalks segmented by raised nodes, with sprays of slender drooping leaves near the top and a few young shoots at the base. Set the number of stalks, their height, the stalk color and a variation seed for Asian gardens, jungles, riverbanks and zen scenes.

![Bamboo Cluster preview](https://codels.download/m/bamboo-cluster.png)

Multi-view sheet (3/4, front, side, top): https://codels.download/m/bamboo-cluster.sheet.png

## Facts

- Category: Nature › Trees
- Size (W × H × D): 2.97 × 5.00 × 3.15 m — units are meters, +Y up, front faces +Z
- Origin: center of the base (y = 0)
- Triangles: 1,916 · Meshes: 197 · Materials: 6
- License: CC0-1.0 (Codels built-in)
- Tags: bamboo, tree, low-poly, stylized, japanese, garden, jungle, river, adventure, rpg, background, decoration, vegetation, foliage-material, organic, cluster, tall, game-ready, instancing-friendly, parametric, color-green, color-yellow, size-large, poly-medium
- Page: https://codels.download/models/bamboo-cluster

## Files

| Format | URL |
|---|---|
| three.js ES module (`createBambooCluster()`) | https://codels.download/m/bamboo-cluster.js |
| React Three Fiber component (`<BambooCluster />`) | https://codels.download/m/bamboo-cluster.jsx |
| Instancing module (`createBambooClusterInstances(count, place)`, one draw call per material) | https://codels.download/m/bamboo-cluster.instanced.js |
| Standalone HTML demo | https://codels.download/m/bamboo-cluster.html |
| glTF binary | https://codels.download/m/bamboo-cluster.glb |
| glTF binary, Meshopt-compressed (2–3× smaller; GLTFLoader needs `setMeshoptDecoder(MeshoptDecoder)`) | https://codels.download/m/bamboo-cluster.glb?compress=meshopt |
| glTF JSON | https://codels.download/m/bamboo-cluster.gltf |
| OBJ (vertex colors) + MTL | https://codels.download/m/bamboo-cluster.obj · https://codels.download/m/bamboo-cluster.mtl |
| STL | https://codels.download/m/bamboo-cluster.stl |
| CodelSpec JSON | https://codels.download/m/bamboo-cluster.json |

## Parameters

Append them as query parameters to any URL above to get a customized variant (e.g. `?count=...`).

| Param | Type | Range / options | Default | Current |
|---|---|---|---|---|
| `count` | int | 3 – 10 | 7 | 7 |
| `height` | number | 2 – 8 | 5 | 5 |
| `stalk` | color | #rrggbb | #86ab45 | #86ab45 |
| `seed` | int | 1 – 20 | 2 | 2 |

## Parts

- stalk1 (group)
  - cane (cylinder · stalk)
  - node1 (cylinder · node)
  - node2 (cylinder · node)
  - node3 (cylinder · node)
  - node4 (cylinder · node)
  - node5 (cylinder · node)
  - node6 (cylinder · node)
  - node7 (cylinder · node)
  - node8 (cylinder · node)
  - twig1 (cylinder · stalk)
  - leaf1_1 (octahedron · leaf)
  - leaf1_2 (octahedron · leafLight)
  - leaf1_3 (octahedron · leaf)
  - leaf1_4 (octahedron · leafLight)
  - twig2 (cylinder · stalk)
  - leaf2_1 (octahedron · leaf)
  - leaf2_2 (octahedron · leafLight)
  - leaf2_3 (octahedron · leaf)
  - leaf2_4 (octahedron · leafLight)
  - twig3 (cylinder · stalk)
  - leaf3_1 (octahedron · leaf)
  - leaf3_2 (octahedron · leafLight)
  - leaf3_3 (octahedron · leaf)
  - leaf3_4 (octahedron · leafLight)
  - crest1 (octahedron · leafLight)
  - crest2 (octahedron · leaf)
  - crest3 (octahedron · leaf)
  - crest4 (octahedron · leaf)
- stalk2 (group)
  - cane (cylinder · stalk)
  - node1 (cylinder · node)
  - node2 (cylinder · node)
  - node3 (cylinder · node)
  - node4 (cylinder · node)
  - node5 (cylinder · node)
  - node6 (cylinder · node)
  - node7 (cylinder · node)
  - node8 (cylinder · node)
  - twig1 (cylinder · stalk)

## How to use

Save the code below as `bamboo-cluster.js`, then:

```js
import { createBambooCluster } from './bamboo-cluster.js';
const model = createBambooCluster();
scene.add(model);
```

## Code

```js
/**
 * Bamboo Cluster — Codels 3D model library (https://codels.download/models/bamboo-cluster)
 * License: CC0-1.0 · Units: meters · Y-up · Front: +Z · Origin: center of the base (y = 0)
 * Triangles: 1,916 · Size (W × H × D): 2.97 × 5.00 × 3.15 m
 *
 * Usage:
 *   import { createBambooCluster } from './bamboo-cluster.js';
 *   
 *   const model = createBambooCluster();
 *   model.position.set(0, 0, 0);
 *   scene.add(model);
 */
import * as THREE from 'three';

const deg = THREE.MathUtils.degToRad;

export function createBambooCluster() {
  const root = new THREE.Group();
  root.name = 'BambooCluster';

  // Materials
  const stalkMat = new THREE.MeshStandardMaterial({ name: 'stalk', color: 0x86ab45, roughness: 0.6, flatShading: true });
  const stalkOldMat = new THREE.MeshStandardMaterial({ name: 'stalkOld', color: 0x8d9844, roughness: 0.65, flatShading: true });
  const nodeMat = new THREE.MeshStandardMaterial({ name: 'node', color: 0xabb67e, roughness: 0.7, flatShading: true });
  const leafMat = new THREE.MeshStandardMaterial({ name: 'leaf', color: 0x4f8f3a, roughness: 0.8, flatShading: true });
  const leafLightMat = new THREE.MeshStandardMaterial({ name: 'leafLight', color: 0x76ad48, roughness: 0.8, flatShading: true });
  const shootMat = new THREE.MeshStandardMaterial({ name: 'shoot', color: 0x9a7a4a, roughness: 0.9, flatShading: true });

  // Shared geometries
  const octahedronGeo = new THREE.OctahedronGeometry(1, 0);

  // Parts
  const stalk1 = new THREE.Group();
  stalk1.name = 'stalk1';
  stalk1.position.set(0.0731, 0.0026, 0.006);
  stalk1.rotation.set(deg(0.6316), deg(-0.0119), deg(-2.1507));
  root.add(stalk1);
  const cane = new THREE.Mesh(new THREE.CylinderGeometry(0.045, 0.0693, 5, 6), stalkMat);
  cane.name = 'cane';
  cane.position.set(0, 2.5, 0);
  stalk1.add(cane);
  const node1 = new THREE.Mesh(new THREE.CylinderGeometry(0.0758, 0.0798, 0.035, 6, 1, true), nodeMat);
  node1.name = 'node1';
  node1.position.set(0, 0.5814, 0);
  stalk1.add(node1);
  const node2 = new THREE.Mesh(new THREE.CylinderGeometry(0.0726, 0.0764, 0.035, 6, 1, true), nodeMat);
  node2.name = 'node2';
  node2.position.set(0, 1.1628, 0);
  stalk1.add(node2);
  const node3 = new THREE.Mesh(new THREE.CylinderGeometry(0.0694, 0.073, 0.035, 6, 1, true), nodeMat);
  node3.name = 'node3';
  node3.position.set(0, 1.7442, 0);
  stalk1.add(node3);
  const node4 = new THREE.Mesh(new THREE.CylinderGeometry(0.0661, 0.0696, 0.035, 6, 1, true), nodeMat);
  node4.name = 'node4';
  node4.position.set(0, 2.3256, 0);
  stalk1.add(node4);
  const node5 = new THREE.Mesh(new THREE.CylinderGeometry(0.0629, 0.0662, 0.035, 6, 1, true), nodeMat);
  node5.name = 'node5';
  node5.position.set(0, 2.907, 0);
  stalk1.add(node5);
  const node6 = new THREE.Mesh(new THREE.CylinderGeometry(0.0597, 0.0629, 0.035, 6, 1, true), nodeMat);
  node6.name = 'node6';
  node6.position.set(0, 3.4884, 0);
  stalk1.add(node6);
  const node7 = new THREE.Mesh(new THREE.CylinderGeometry(0.0565, 0.0595, 0.035, 6, 1, true), nodeMat);
  node7.name = 'node7';
  node7.position.set(0, 4.0698, 0);
  stalk1.add(node7);
  const node8 = new THREE.Mesh(new THREE.CylinderGeometry(0.0533, 0.0561, 0.035, 6, 1, true), nodeMat);
  node8.name = 'node8';
  node8.position.set(0, 4.6512, 0);
  stalk1.add(node8);
  const twig1 = new THREE.Mesh(new THREE.CylinderGeometry(0.0083, 0.0148, 0.5004, 4, 1, true), stalkMat);
  twig1.name = 'twig1';
  twig1.position.set(0.219, 4.8582, -0.064);
  twig1.rotation.set(deg(-15.0145), deg(9.134), deg(-62.4438));
  stalk1.add(twig1);
  const leaf11 = new THREE.Mesh(octahedronGeo, leafMat);
  leaf11.name = 'leaf1_1';
  leaf11.position.set(0.4556, 4.7852, -0.2854);
  leaf11.rotation.set(deg(42.2284), deg(-4.7456), deg(-175.7056));
  leaf11.scale.set(0.0662, 0.2365, 0.0142);
  stalk1.add(leaf11);
  const leaf12 = new THREE.Mesh(octahedronGeo, leafLightMat);
  leaf12.name = 'leaf1_2';
  leaf12.position.set(0.6054, 4.8863, -0.2106);
  leaf12.rotation.set(deg(79.98), deg(-19.4246), deg(-117.981));
  leaf12.scale.set(0.0563, 0.201, 0.0121);
  stalk1.add(leaf12);
  const leaf13 = new THREE.Mesh(octahedronGeo, leafMat);
  leaf13.name = 'leaf1_3';
  leaf13.position.set(0.6131, 4.8013, -0.1328);
  leaf13.rotation.set(deg(88.5793), deg(-42.2984), deg(-92.1105));
  leaf13.scale.set(0.0663, 0.2369, 0.0142);
  stalk1.add(leaf13);
  const leaf14 = new THREE.Mesh(octahedronGeo, leafLightMat);
  leaf14.name = 'leaf1_4';
  leaf14.position.set(0.573, 4.8304, 0.0016);
  leaf14.rotation.set(deg(115.7484), deg(-24.3655), deg(-40.543));
  leaf14.scale.set(0.0639, 0.2281, 0.0137);
  stalk1.add(leaf14);
  const twig2 = new THREE.Mesh(new THREE.CylinderGeometry(0.009, 0.016, 0.5274, 4, 1, true), stalkMat);
  twig2.name = 'twig2';
  twig2.position.set(-0.2255, 4.0794, 0.0835);
  twig2.rotation.set(deg(18.8169), deg(11.0665), deg(60.6244));
  stalk1.add(twig2);
  const leaf21 = new THREE.Mesh(octahedronGeo, leafMat);
  leaf21.name = 'leaf2_1';
  leaf21.position.set(-0.4992, 4.0362, 0.295);
  leaf21.rotation.set(deg(136.0176), deg(15.1432), deg(14.1502));
  leaf21.scale.set(0.0571, 0.204, 0.0122);
  stalk1.add(leaf21);
  const leaf22 = new THREE.Mesh(octahedronGeo, leafLightMat);
  leaf22.name = 'leaf2_2';
  leaf22.position.set(-0.6138, 4.0676, 0.3212);
  leaf22.rotation.set(deg(110.2146), deg(20.0308), deg(42.9297));
  leaf22.scale.set(0.0712, 0.2544, 0.0153);
  stalk1.add(leaf22);
  const leaf23 = new THREE.Mesh(octahedronGeo, leafMat);
  leaf23.name = 'leaf2_3';
  leaf23.position.set(-0.6151, 4.0175, 0.1534);
  leaf23.rotation.set(deg(85.1558), deg(45.7419), deg(96.7485));
  leaf23.scale.set(0.0663, 0.2367, 0.0142);
  stalk1.add(leaf23);
  const leaf24 = new THREE.Mesh(octahedronGeo, leafLightMat);
  leaf24.name = 'leaf2_4';
  leaf24.position.set(-0.6077, 4.0116, 0.0771);
  leaf24.rotation.set(deg(64.1246), deg(37.2594), deg(128.7004));
  leaf24.scale.set(0.0706, 0.2523, 0.0151);
  stalk1.add(leaf24);
  const twig3 = new THREE.Mesh(new THREE.CylinderGeometry(0.0097, 0.0172, 0.542, 4, 1, true), stalkMat);
  twig3.name = 'twig3';
  twig3.position.set(0.0565, 3.3092, -0.2406);
  twig3.rotation.set(deg(-63.5743), deg(7.5413), deg(-12.1409));
  stalk1.add(twig3);
  const leaf31 = new THREE.Mesh(octahedronGeo, leafMat);
  leaf31.name = 'leaf3_1';
  leaf31.position.set(-0.0267, 3.3385, -0.6369);
  leaf31.rotation.set(deg(73.7453), deg(14.1009), deg(140.1178));
  leaf31.scale.set(0.0629, 0.2246, 0.0135);
  stalk1.add(leaf31);
  const leaf32 = new THREE.Mesh(octahedronGeo, leafLightMat);
  leaf32.name = 'leaf3_2';
  leaf32.position.set(0.0989, 3.3471, -0.6715);
  leaf32.rotation.set(deg(69.0312), deg(1.5222), deg(176.035));
  leaf32.scale.set(0.0572, 0.2044, 0.0123);
  stalk1.add(leaf32);
  const leaf33 = new THREE.Mesh(octahedronGeo, leafMat);
  leaf33.name = 'leaf3_3';
  leaf33.position.set(0.2027, 3.2517, -0.6232);
  leaf33.rotation.set(deg(49.6435), deg(-22.2472), deg(-155.985));
  leaf33.scale.set(0.0667, 0.2381, 0.0143);
  stalk1.add(leaf33);
  const leaf34 = new THREE.Mesh(octahedronGeo, leafLightMat);
  leaf34.name = 'leaf3_4';
  leaf34.position.set(0.2912, 3.3237, -0.52);
  leaf34.rotation.set(deg(83.5635), deg(-27.2558), deg(-103.8386));
  leaf34.scale.set(0.0578, 0.2064, 0.0124);
  stalk1.add(leaf34);
  const crest1 = new THREE.Mesh(octahedronGeo, leafLightMat);
  crest1.name = 'crest1';
  crest1.position.set(0.0904, 4.8692, 0.0286);
  crest1.rotation.set(deg(112.5998), deg(-50.5189), deg(-61.6617));
  crest1.scale.set(0.0452, 0.1615, 0.0097);
  stalk1.add(crest1);
  const crest2 = new THREE.Mesh(octahedronGeo, leafMat);
  crest2.name = 'crest2';
  crest2.position.set(-0.0113, 4.8599, 0.1048);
  crest2.rotation.set(deg(142.8917), deg(4.9011), deg(3.6981));
  crest2.scale.set(0.0491, 0.1753, 0.0105);
  stalk1.add(crest2);
  const crest3 = new THREE.Mesh(octahedronGeo, leafMat);
  crest3.name = 'crest3';
  crest3.position.set(-0.1276, 4.9193, -0.0476);
  crest3.rotation.set(deg(78.305), deg(28.5196), deg(113.4388));
  crest3.scale.set(0.0443, 0.1583, 0.0095);
  stalk1.add(crest3);
  const crest4 = new THREE.Mesh(octahedronGeo, leafMat);
  crest4.name = 'crest4';
  crest4.position.set(0.0313, 4.9009, -0.1441);
  crest4.rotation.set(deg(56.7193), deg(-6.7952), deg(-169.7817));
  crest4.scale.set(0.0497, 0.1777, 0.0107);
  stalk1.add(crest4);
  const stalk2 = new THREE.Group();
  stalk2.name = 'stalk2';
  stalk2.position.set(-0.1221, 0.0048, 0.0917);
  stalk2.rotation.set(deg(2.2297), deg(0.0798), deg(4.0996));
  root.add(stalk2);
  const cane2 = new THREE.Mesh(new THREE.CylinderGeometry(0.0383, 0.059, 4.8703, 6), stalkMat);
  cane2.name = 'cane';
  cane2.position.set(0, 2.4352, 0);
  stalk2.add(cane2);
  const node12 = new THREE.Mesh(new THREE.CylinderGeometry(0.0645, 0.0679, 0.0341, 6, 1, true), nodeMat);
  node12.name = 'node1';
  node12.position.set(0, 0.5663, 0);
  stalk2.add(node12);
  const node22 = new THREE.Mesh(new THREE.CylinderGeometry(0.0618, 0.065, 0.0341, 6, 1, true), nodeMat);
  node22.name = 'node2';
  node22.position.set(0, 1.1326, 0);
  stalk2.add(node22);
  const node32 = new THREE.Mesh(new THREE.CylinderGeometry(0.059, 0.0621, 0.0341, 6, 1, true), nodeMat);
  node32.name = 'node3';
  node32.position.set(0, 1.699, 0);
  stalk2.add(node32);
  const node42 = new THREE.Mesh(new THREE.CylinderGeometry(0.0563, 0.0593, 0.0341, 6, 1, true), nodeMat);
  node42.name = 'node4';
  node42.position.set(0, 2.2653, 0);
  stalk2.add(node42);
  const node52 = new THREE.Mesh(new THREE.CylinderGeometry(0.0536, 0.0564, 0.0341, 6, 1, true), nodeMat);
  node52.name = 'node5';
  node52.position.set(0, 2.8316, 0);
  stalk2.add(node52);
  const node62 = new THREE.Mesh(new THREE.CylinderGeometry(0.0508, 0.0535, 0.0341, 6, 1, true), nodeMat);
  node62.name = 'node6';
  node62.position.set(0, 3.3979, 0);
  stalk2.add(node62);
  const node72 = new THREE.Mesh(new THREE.CylinderGeometry(0.0481, 0.0506, 0.0341, 6, 1, true), nodeMat);
  node72.name = 'node7';
  node72.position.set(0, 3.9642, 0);
  stalk2.add(node72);
  const node82 = new THREE.Mesh(new THREE.CylinderGeometry(0.0453, 0.0477, 0.0341, 6, 1, true), nodeMat);
  node82.name = 'node8';
  node82.position.set(0, 4.5305, 0);
  stalk2.add(node82);
  const twig12 = new THREE.Mesh(new THREE.CylinderGeometry(0.0071, 0.0127, 0.4, 4, 1, true), stalkMat);
  twig12.name = 'twig1';
  twig12.position.set(-0.1786, 4.6305, 0.0373);
  twig12.rotation.set(deg(10.82), deg(6.7759), deg(64.0196));
  stalk2.add(twig12);
  const leaf112 = new THREE.Mesh(octahedronGeo, leafMat);
  leaf112.name = 'leaf1_1';
  leaf112.position.set(-0.4258, 4.5781, 0.2068);
  leaf112.rotation.set(deg(128.6829), deg(17.9962), deg(21.1002));
  leaf112.scale.set(0.0562, 0.2007, 0.012);
  stalk2.add(leaf112);
  const leaf122 = new THREE.Mesh(octahedronGeo, leafLightMat);
  leaf122.name = 'leaf1_2';
  leaf122.position.set(-0.531, 4.5879, 0.223);
  leaf122.rotation.set(deg(109.5009), deg(21.3583), deg(45.8025));
  leaf122.scale.set(0.0729, 0.2605, 0.0156);
  stalk2.add(leaf122);
  const leaf132 = new THREE.Mesh(octahedronGeo, leafMat);
  leaf132.name = 'leaf1_3';
  leaf132.position.set(-0.5415, 4.6245, 0.0367);
  leaf132.rotation.set(deg(84.6165), deg(24.5414), deg(102.7832));
  leaf132.scale.set(0.0582, 0.2078, 0.0125);
  stalk2.add(leaf132);
  const leaf142 = new THREE.Mesh(octahedronGeo, leafLightMat);
  leaf142.name = 'leaf1_4';
  leaf142.position.set(-0.5184, 4.6083, -0.0623);
  leaf142.rotation.set(deg(72.3172), deg(19.701), deg(133.4017));
  leaf142.scale.set(0.066, 0.2359, 0.0142);
  stalk2.add(leaf142);
  const twig22 = new THREE.Mesh(new THREE.CylinderGeometry(0.0077, 0.0137, 0.5499, 4, 1, true), stalkMat);
  twig22.name = 'twig2';
  twig22.position.set(-0.0976, 3.9575, -0.231);
  twig22.rotation.set(deg(-59.2537), deg(-12.2041), deg(21.2927));
  stalk2.add(twig22);
  const leaf212 = new THREE.Mesh(octahedronGeo, leafMat);
  leaf212.name = 'leaf2_1';
  leaf212.position.set(-0.3866, 3.9346, -0.5183);
  leaf212.rotation.set(deg(79.1243), deg(32.6433), deg(109.6052));
  leaf212.scale.set(0.0676, 0.2413, 0.0145);
  stalk2.add(leaf212);
  const leaf222 = new THREE.Mesh(octahedronGeo, leafLightMat);
  leaf222.name = 'leaf2_2';
  leaf222.position.set(-0.3175, 3.9933, -0.6351);
  leaf222.rotation.set(deg(73.4729), deg(11.3624), deg(146.4176));
  leaf222.scale.set(0.0632, 0.2256, 0.0135);
  stalk2.add(leaf222);
  const leaf232 = new THREE.Mesh(octahedronGeo, leafMat);
  leaf232.name = 'leaf2_3';
  leaf232.position.set(-0.1853, 3.9234, -0.5966);
  leaf232.rotation.set(deg(42.6781), deg(-3.0752), deg(-177.1681));
  leaf232.scale.set(0.0559, 0.1995, 0.012);
  stalk2.add(leaf232);
  const leaf242 = new THREE.Mesh(octahedronGeo, leafLightMat);
  leaf242.name = 'leaf2_4';
  leaf242.position.set(-0.1124, 3.9936, -0.6433);
  leaf242.rotation.set(deg(70.6969), deg(-8.5808), deg(-156.9266));
  leaf242.scale.set(0.0598, 0.2136, 0.0128);
  stalk2.add(leaf242);
  const twig32 = new THREE.Mesh(new THREE.CylinderGeometry(0.0082, 0.0146, 0.4633, 4, 1, true), stalkMat);
  twig32.name = 'twig3';
  twig32.position.set(0.0793, 3.2319, 0.1958);
  twig32.rotation.set(deg(59.7172), deg(-11.8434), deg(-20.4835));
  stalk2.add(twig32);
  const leaf312 = new THREE.Mesh(octahedronGeo, leafMat);
  leaf312.name = 'leaf3_1';
  leaf312.position.set(0.3225, 3.2112, 0.4221);
  leaf312.rotation.set(deg(97.2449), deg(-34.1102), deg(-77.2274));
  leaf312.scale.set(0.0568, 0.2029, 0.0122);
  stalk2.add(leaf312);
  const leaf322 = new THREE.Mesh(octahedronGeo, leafLightMat);
  leaf322.name = 'leaf3_2';
  leaf322.position.set(0.3011, 3.1886, 0.5065);
  leaf322.rotation.set(deg(115.3834), deg(-27.9909), deg(-44.6874));
  leaf322.scale.set(0.0642, 0.2294, 0.0138);
  stalk2.add(leaf322);
  const leaf332 = new THREE.Mesh(octahedronGeo, leafMat);
  leaf332.name = 'leaf3_3';
  leaf332.position.set(0.1841, 3.173, 0.5545);
  leaf332.rotation.set(deg(132.6948), deg(-6.0359), deg(-6.502));
  leaf332.scale.set(0.0632, 0.2256, 0.0135);
  stalk2.add(leaf332);
  const leaf342 = new THREE.Mesh(octahedronGeo, leafLightMat);
  leaf342.name = 'leaf3_4';
  leaf342.position.set(0.0679, 3.1817, 0.5336);
  leaf342.rotation.set(deg(125.9838), deg(20.5787), deg(25.8305));
  leaf342.scale.set(0.0623, 0.2225, 0.0134);
  stalk2.add(leaf342);
  const crest12 = new THREE.Mesh(octahedronGeo, leafLightMat);
  crest12.name = 'crest1';
  crest12.position.set(-0.0787, 4.7682, 0.0955);
  crest12.rotation.set(deg(122.5069), deg(23.8729), deg(32.4195));
  crest12.scale.set(0.0449, 0.1605, 0.0096);
  stalk2.add(crest12);
  const crest22 = new THREE.Mesh(octahedronGeo, leafMat);
  crest22.name = 'crest2';
  crest22.position.set(-0.1056, 4.7742, -0.0715);
  crest22.rotation.set(deg(67.0946), deg(29.8951), deg(130.2894));
  crest22.scale.set(0.0447, 0.1597, 0.0096);
  stalk2.add(crest22);
  const crest32 = new THREE.Mesh(octahedronGeo, leafMat);
  crest32.name = 'crest3';
  crest32.position.set(0.0963, 4.7767, -0.1056);
  crest32.rotation.set(deg(64.1574), deg(-21.6666), deg(-142.682));
  crest32.scale.set(0.0478, 0.1709, 0.0103);
  stalk2.add(crest32);
  const crest42 = new THREE.Mesh(octahedronGeo, leafMat);
  crest42.name = 'crest4';
  crest42.position.set(0.1173, 4.7799, 0.1013);
  crest42.rotation.set(deg(110.8772), deg(-22.4199), deg(-44.9989));
  crest42.scale.set(0.0503, 0.1795, 0.0108);
  stalk2.add(crest42);
  const stalk3 = new THREE.Group();
  stalk3.name = 'stalk3';
  stalk3.position.set(0.0129, 0.006, -0.2026);
  stalk3.rotation.set(deg(-5.1332), deg(0.0848), deg(-1.8915));
  root.add(stalk3);
  const cane3 = new THREE.Mesh(new THREE.CylinderGeometry(0.0436, 0.0671, 4.6918, 6), stalkOldMat);
  cane3.name = 'cane';
  cane3.position.set(0, 2.3459, 0);
  stalk3.add(cane3);
  const node13 = new THREE.Mesh(new THREE.CylinderGeometry(0.0734, 0.0773, 0.0328, 6, 1, true), nodeMat);
  node13.name = 'node1';
  node13.position.set(0, 0.5456, 0);
  stalk3.add(node13);
  const node23 = new THREE.Mesh(new THREE.CylinderGeometry(0.0703, 0.074, 0.0328, 6, 1, true), nodeMat);
  node23.name = 'node2';
  node23.position.set(0, 1.0911, 0);
  stalk3.add(node23);
  const node33 = new THREE.Mesh(new THREE.CylinderGeometry(0.0672, 0.0707, 0.0328, 6, 1, true), nodeMat);
  node33.name = 'node3';
  node33.position.set(0, 1.6367, 0);
  stalk3.add(node33);
  const node43 = new THREE.Mesh(new THREE.CylinderGeometry(0.0641, 0.0675, 0.0328, 6, 1, true), nodeMat);
  node43.name = 'node4';
  node43.position.set(0, 2.1822, 0);
  stalk3.add(node43);
  const node53 = new THREE.Mesh(new THREE.CylinderGeometry(0.061, 0.0642, 0.0328, 6, 1, true), nodeMat);
  node53.name = 'node5';
  node53.position.set(0, 2.7278, 0);
  stalk3.add(node53);
  const node63 = new THREE.Mesh(new THREE.CylinderGeometry(0.0578, 0.0609, 0.0328, 6, 1, true), nodeMat);
  node63.name = 'node6';
  node63.position.set(0, 3.2734, 0);
  stalk3.add(node63);
  const node73 = new THREE.Mesh(new THREE.CylinderGeometry(0.0547, 0.0576, 0.0328, 6, 1, true), nodeMat);
  node73.name = 'node7';
  node73.position.set(0, 3.8189, 0);
  stalk3.add(node73);
  const node83 = new THREE.Mesh(new THREE.CylinderGeometry(0.0516, 0.0543, 0.0328, 6, 1, true), nodeMat);
  node83.name = 'node8';
  node83.position.set(0, 4.3645, 0);
  stalk3.add(node83);
  const twig13 = new THREE.Mesh(new THREE.CylinderGeometry(0.0081, 0.0145, 0.4222, 4, 1, true), stalkOldMat);
  twig13.name = 'twig1';
  twig13.position.set(-0.0705, 4.4649, -0.1791);
  twig13.rotation.set(deg(-60.0315), deg(-11.5855), deg(19.9194));
  stalk3.add(twig13);
  const leaf113 = new THREE.Mesh(octahedronGeo, leafMat);
  leaf113.name = 'leaf1_1';
  leaf113.position.set(-0.3217, 4.4887, -0.4192);
  leaf113.rotation.set(deg(83.9949), deg(17.2416), deg(109.5401));
  leaf113.scale.set(0.0562, 0.2008, 0.0121);
  stalk3.add(leaf113);
  const leaf123 = new THREE.Mesh(octahedronGeo, leafLightMat);
  leaf123.name = 'leaf1_2';
  leaf123.position.set(-0.2536, 4.4188, -0.5426);
  leaf123.rotation.set(deg(62.3301), deg(15.8533), deg(152.481));
  leaf123.scale.set(0.071, 0.2535, 0.0152);
  stalk3.add(leaf123);
  const leaf133 = new THREE.Mesh(octahedronGeo, leafMat);
  leaf133.name = 'leaf1_3';
  leaf133.position.set(-0.1375, 4.4427, -0.5346);
  leaf133.rotation.set(deg(58.3197), deg(-0.5855), deg(-179.0513));
  leaf133.scale.set(0.058, 0.2072, 0.0124);
  stalk3.add(leaf133);
  const leaf143 = new THREE.Mesh(octahedronGeo, leafLightMat);
  leaf143.name = 'leaf1_4';
  leaf143.position.set(-0.0354, 4.4507, -0.5131);
  leaf143.rotation.set(deg(66.0285), deg(-15.4797), deg(-149.0252));
  leaf143.scale.set(0.0596, 0.2128, 0.0128);
  stalk3.add(leaf143);
  const twig23 = new THREE.Mesh(new THREE.CylinderGeometry(0.0087, 0.0155, 0.4011, 4, 1, true), stalkOldMat);
  twig23.name = 'twig2';
  twig23.position.set(0.0356, 3.8332, 0.1794);
  twig23.rotation.set(deg(64.1803), deg(-6.4722), deg(-10.3046));
  stalk3.add(twig23);
  const leaf213 = new THREE.Mesh(octahedronGeo, leafMat);
  leaf213.name = 'leaf2_1';
  leaf213.position.set(0.252, 3.8399, 0.4107);
  leaf213.rotation.set(deg(96.3424), deg(-21.0095), deg(-72.7754));
  leaf213.scale.set(0.0568, 0.2027, 0.0122);
  stalk3.add(leaf213);
  const leaf223 = new THREE.Mesh(octahedronGeo, leafLightMat);
  leaf223.name = 'leaf2_2';
  leaf223.position.set(0.1586, 3.76, 0.5025);
  leaf223.rotation.set(deg(128.3214), deg(-20.6311), deg(-24.0278));
  leaf223.scale.set(0.0641, 0.229, 0.0137);
  stalk3.add(leaf223);
  const leaf233 = new THREE.Mesh(octahedronGeo, leafMat);
  leaf233.name = 'leaf2_3';
  leaf233.position.set(0.0725, 3.8064, 0.5945);
  leaf233.rotation.set(deg(114.8369), deg(-0.1193), deg(-0.2577));
  leaf233.scale.set(0.0727, 0.2597, 0.0156);
  stalk3.add(leaf233);
  const leaf243 = new THREE.Mesh(octahedronGeo, leafLightMat);
  leaf243.name = 'leaf2_4';
  leaf243.position.set(-0.0437, 3.7812, 0.4463);
  leaf243.rotation.set(deg(119.3615), deg(32.7899), deg(43.9091));
  leaf243.scale.set(0.0552, 0.1973, 0.0118);
  stalk3.add(leaf243);
  const twig33 = new THREE.Mesh(new THREE.CylinderGeometry(0.0093, 0.0165, 0.5284, 4, 1, true), stalkOldMat);
  twig33.name = 'twig3';
  twig33.position.set(-0.2409, 3.202, -0.0022);
  twig33.rotation.set(deg(-0.4835), deg(-0.3126), deg(65.7687));
  stalk3.add(twig33);
  const leaf313 = new THREE.Mesh(octahedronGeo, leafMat);
  leaf313.name = 'leaf3_1';
  leaf313.position.set(-0.5616, 3.1421, 0.1526);
  leaf313.rotation.set(deg(130.4197), deg(18.2429), deg(20.182));
  leaf313.scale.set(0.0682, 0.2436, 0.0146);
  stalk3.add(leaf313);
  const leaf323 = new THREE.Mesh(octahedronGeo, leafLightMat);
  leaf323.name = 'leaf3_2';
  leaf323.position.set(-0.6759, 3.1782, 0.0225);
  leaf323.rotation.set(deg(95.2965), deg(33.6458), deg(80.5011));
  leaf323.scale.set(0.0662, 0.2364, 0.0142);
  stalk3.add(leaf323);
  const leaf333 = new THREE.Mesh(octahedronGeo, leafMat);
  leaf333.name = 'leaf3_3';
  leaf333.position.set(-0.6323, 3.1456, -0.0624);
  leaf333.rotation.set(deg(69.8365), deg(41.855), deg(118.8253));
  leaf333.scale.set(0.0646, 0.2306, 0.0138);
  stalk3.add(leaf333);
  const leaf343 = new THREE.Mesh(octahedronGeo, leafLightMat);
  leaf343.name = 'leaf3_4';
  leaf343.position.set(-0.5655, 3.1934, -0.1589);
  leaf343.rotation.set(deg(59.6303), deg(15.3182), deg(155.7328));
  leaf343.scale.set(0.0591, 0.2111, 0.0127);
  stalk3.add(leaf343);
  const crest13 = new THREE.Mesh(octahedronGeo, leafLightMat);
  crest13.name = 'crest1';
  crest13.position.set(-0.0032, 4.5373, -0.113);
  crest13.rotation.set(deg(36.2089), deg(1.3076), deg(179.0428));
  crest13.scale.set(0.0536, 0.1915, 0.0115);
  stalk3.add(crest13);
  const crest23 = new THREE.Mesh(octahedronGeo, leafMat);
  crest23.name = 'crest2';
  crest23.position.set(0.1381, 4.5623, 0.0134);
  crest23.rotation.set(deg(95.1654), deg(-42.7634), deg(-82.4162));
  crest23.scale.set(0.0531, 0.1898, 0.0114);
  stalk3.add(crest23);
  const crest33 = new THREE.Mesh(octahedronGeo, leafMat);
  crest33.name = 'crest3';
  crest33.position.set(0.0156, 4.5901, 0.1268);
  crest33.rotation.set(deg(128.315), deg(-4.3546), deg(-5.4888));
  crest33.scale.set(0.0457, 0.1632, 0.0098);
  stalk3.add(crest33);
  const crest43 = new THREE.Mesh(octahedronGeo, leafMat);
  crest43.name = 'crest4';
  crest43.position.set(-0.1151, 4.6051, 0.0392);
  crest43.rotation.set(deg(102.9534), deg(33.3451), deg(67.2934));
  crest43.scale.set(0.0418, 0.1494, 0.009);
  stalk3.add(crest43);
  const stalk4 = new THREE.Group();
  stalk4.name = 'stalk4';
  stalk4.position.set(0.1835, 0.0081, 0.1596);
  stalk4.rotation.set(deg(2.6328), deg(-0.1494), deg(-6.4951));
  root.add(stalk4);
  const cane4 = new THREE.Mesh(new THREE.CylinderGeometry(0.0435, 0.067, 3.6864, 6), stalkMat);
  cane4.name = 'cane';
  cane4.position.set(0, 1.8432, 0);
  stalk4.add(cane4);
  const node14 = new THREE.Mesh(new THREE.CylinderGeometry(0.0728, 0.0767, 0.0258, 6, 1, true), nodeMat);
  node14.name = 'node1';
  node14.position.set(0, 0.4851, 0);
  stalk4.add(node14);
  const node24 = new THREE.Mesh(new THREE.CylinderGeometry(0.0693, 0.073, 0.0258, 6, 1, true), nodeMat);
  node24.name = 'node2';
  node24.position.set(0, 0.9701, 0);
  stalk4.add(node24);
  const node34 = new THREE.Mesh(new THREE.CylinderGeometry(0.0658, 0.0693, 0.0258, 6, 1, true), nodeMat);
  node34.name = 'node3';
  node34.position.set(0, 1.4552, 0);
  stalk4.add(node34);
  const node44 = new THREE.Mesh(new THREE.CylinderGeometry(0.0623, 0.0656, 0.0258, 6, 1, true), nodeMat);
  node44.name = 'node4';
  node44.position.set(0, 1.9402, 0);
  stalk4.add(node44);
  const node54 = new THREE.Mesh(new THREE.CylinderGeometry(0.0588, 0.0619, 0.0258, 6, 1, true), nodeMat);
  node54.name = 'node5';
  node54.position.set(0, 2.4253, 0);
  stalk4.add(node54);
  const node64 = new THREE.Mesh(new THREE.CylinderGeometry(0.0553, 0.0582, 0.0258, 6, 1, true), nodeMat);
  node64.name = 'node6';
  node64.position.set(0, 2.9103, 0);
  stalk4.add(node64);
  const node74 = new THREE.Mesh(new THREE.CylinderGeometry(0.0517, 0.0545, 0.0258, 6, 1, true), nodeMat);
  node74.name = 'node7';
  node74.position.set(0, 3.3954, 0);
  stalk4.add(node74);
  const twig14 = new THREE.Mesh(new THREE.CylinderGeometry(0.0081, 0.0144, 0.4479, 4, 1, true), stalkMat);
  twig14.name = 'twig1';
  twig14.position.set(0.1622, 3.5655, 0.124);
  twig14.rotation.set(deg(35.2949), deg(-16.5295), deg(-49.0823));
  stalk4.add(twig14);
  const leaf114 = new THREE.Mesh(octahedronGeo, leafMat);
  leaf114.name = 'leaf1_1';
  leaf114.position.set(0.4959, 3.5065, 0.197);
  leaf114.rotation.set(deg(76.4662), deg(-38.1503), deg(-111.2888));
  leaf114.scale.set(0.0655, 0.234, 0.014);
  stalk4.add(leaf114);
  const leaf124 = new THREE.Mesh(octahedronGeo, leafLightMat);
  leaf124.name = 'leaf1_2';
  leaf124.position.set(0.5379, 3.5247, 0.3204);
  leaf124.rotation.set(deg(100.6905), deg(-28.7083), deg(-68.5449));
  leaf124.scale.set(0.0732, 0.2616, 0.0157);
  stalk4.add(leaf124);
  const leaf134 = new THREE.Mesh(octahedronGeo, leafMat);
  leaf134.name = 'leaf1_3';
  leaf134.position.set(0.4357, 3.5542, 0.4221);
  leaf134.rotation.set(deg(112.8215), deg(-13.9239), deg(-29.7628));
  leaf134.scale.set(0.0647, 0.2309, 0.0139);
  stalk4.add(leaf134);
  const leaf144 = new THREE.Mesh(octahedronGeo, leafLightMat);
  leaf144.name = 'leaf1_4';
  leaf144.position.set(0.3224, 3.5015, 0.4082);
  leaf144.rotation.set(deg(134.2234), deg(0.5078), deg(0.5217));
  leaf144.scale.set(0.0626, 0.2235, 0.0134);
  stalk4.add(leaf144);
  const twig24 = new THREE.Mesh(new THREE.CylinderGeometry(0.0088, 0.0156, 0.3889, 4, 1, true), stalkMat);
  twig24.name = 'twig2';
  twig24.position.set(-0.1629, 2.9291, -0.0701);
  twig24.rotation.set(deg(-21.6443), deg(-12.3574), deg(59.0477));
  stalk4.add(twig24);
  const leaf214 = new THREE.Mesh(octahedronGeo, leafMat);
  leaf214.name = 'leaf2_1';
  leaf214.position.set(-0.5048, 2.856, -0.0705);
  leaf214.rotation.set(deg(106.1128), deg(35.4789), deg(63.5396));
  leaf214.scale.set(0.0687, 0.2455, 0.0147);
  stalk4.add(leaf214);
  const leaf224 = new THREE.Mesh(octahedronGeo, leafLightMat);
  leaf224.name = 'leaf2_2';
  leaf224.position.set(-0.4938, 2.897, -0.1529);
  leaf224.rotation.set(deg(87.1157), deg(33.489), deg(95.2173));
  leaf224.scale.set(0.0566, 0.2022, 0.0121);
  stalk4.add(leaf224);
  const leaf234 = new THREE.Mesh(octahedronGeo, leafMat);
  leaf234.name = 'leaf2_3';
  leaf234.position.set(-0.498, 2.927, -0.2918);
  leaf234.rotation.set(deg(76.7289), deg(14.6145), deg(133.0693));
  leaf234.scale.set(0.0682, 0.2436, 0.0146);
  stalk4.add(leaf234);
  const leaf244 = new THREE.Mesh(octahedronGeo, leafLightMat);
  leaf244.name = 'leaf2_4';
  leaf244.position.set(-0.3737, 2.8605, -0.2842);
  leaf244.rotation.set(deg(47.1364), deg(12.7441), deg(166.6293));
  leaf244.scale.set(0.0594, 0.2123, 0.0127);
  stalk4.add(leaf244);
  const twig34 = new THREE.Mesh(new THREE.CylinderGeometry(0.0095, 0.0168, 0.363, 4, 1, true), stalkMat);
  twig34.name = 'twig3';
  twig34.position.set(0.119, 2.3295, -0.1151);
  twig34.rotation.set(deg(-41.5709), deg(17.137), deg(-43.3016));
  stalk4.add(twig34);
  const leaf314 = new THREE.Mesh(octahedronGeo, leafMat);
  leaf314.name = 'leaf3_1';
  leaf314.position.set(0.2136, 2.3135, -0.4094);
  leaf314.rotation.set(deg(63.6455), deg(3.4455), deg(173.0832));
  leaf314.scale.set(0.0566, 0.2022, 0.0121);
  stalk4.add(leaf314);
  const leaf324 = new THREE.Mesh(octahedronGeo, leafLightMat);
  leaf324.name = 'leaf3_2';
  leaf324.position.set(0.3503, 2.2993, -0.4363);
  leaf324.rotation.set(deg(68.6212), deg(-11.2367), deg(-153.5372));
  leaf324.scale.set(0.072, 0.257, 0.0154);
  stalk4.add(leaf324);
  const leaf334 = new THREE.Mesh(octahedronGeo, leafMat);
  leaf334.name = 'leaf3_3';
  leaf334.position.set(0.4321, 2.3042, -0.3099);
  leaf334.rotation.set(deg(79.7654), deg(-23.4004), deg(-114.4472));
  leaf334.scale.set(0.0651, 0.2324, 0.0139);
  stalk4.add(leaf334);
  const leaf344 = new THREE.Mesh(octahedronGeo, leafLightMat);
  leaf344.name = 'leaf3_4';
  leaf344.position.set(0.4284, 2.2335, -0.2244);
  leaf344.rotation.set(deg(91.565), deg(-41.7791), deg(-87.6518));
  leaf344.scale.set(0.0716, 0.2557, 0.0153);
  stalk4.add(leaf344);
  const crest14 = new THREE.Mesh(octahedronGeo, leafLightMat);
  crest14.name = 'crest1';
  crest14.position.set(0.113, 3.556, 0.04);
  crest14.rotation.set(deg(109.9691), deg(-43.945), deg(-62.3636));
  crest14.scale.set(0.0496, 0.1771, 0.0106);
  stalk4.add(crest14);
  const crest24 = new THREE.Mesh(octahedronGeo, leafMat);
  crest24.name = 'crest2';
  crest24.position.set(-0.0816, 3.5521, 0.0725);
  crest24.rotation.set(deg(129.2649), deg(35.4631), deg(35.3643));
  crest24.scale.set(0.0485, 0.1731, 0.0104);
  stalk4.add(crest24);
  const crest34 = new THREE.Mesh(octahedronGeo, leafMat);
  crest34.name = 'crest3';
  crest34.position.set(-0.0883, 3.5598, -0.0366);
  crest34.rotation.set(deg(63.0632), deg(47.4989), deg(124.5754));
  crest34.scale.set(0.0444, 0.1587, 0.0095);
  stalk4.add(crest34);
  const crest44 = new THREE.Mesh(octahedronGeo, leafMat);
  crest44.name = 'crest4';
  crest44.position.set(0.0582, 3.5463, -0.1161);
  crest44.rotation.set(deg(46.0286), deg(-19.1945), deg(-161.181));
  crest44.scale.set(0.0535, 0.1911, 0.0115);
  stalk4.add(crest44);
  const stalk5 = new THREE.Group();
  stalk5.name = 'stalk5';
  stalk5.position.set(-0.2669, 0.0106, -0.0764);
  stalk5.rotation.set(deg(-5.2189), deg(-0.3872), deg(8.4802));
  root.add(stalk5);
  const cane5 = new THREE.Mesh(new THREE.CylinderGeometry(0.0399, 0.0615, 3.5955, 6), stalkMat);
  cane5.name = 'cane';
  cane5.position.set(0, 1.7978, 0);
  stalk5.add(cane5);
  const node15 = new THREE.Mesh(new THREE.CylinderGeometry(0.0668, 0.0703, 0.0252, 6, 1, true), nodeMat);
  node15.name = 'node1';
  node15.position.set(0, 0.4731, 0);
  stalk5.add(node15);
  const node25 = new THREE.Mesh(new THREE.CylinderGeometry(0.0636, 0.0669, 0.0252, 6, 1, true), nodeMat);
  node25.name = 'node2';
  node25.position.set(0, 0.9462, 0);
  stalk5.add(node25);
  const node35 = new THREE.Mesh(new THREE.CylinderGeometry(0.0604, 0.0636, 0.0252, 6, 1, true), nodeMat);
  node35.name = 'node3';
  node35.position.set(0, 1.4193, 0);
  stalk5.add(node35);
  const node45 = new THREE.Mesh(new THREE.CylinderGeometry(0.0571, 0.0602, 0.0252, 6, 1, true), nodeMat);
  node45.name = 'node4';
  node45.position.set(0, 1.8924, 0);
  stalk5.add(node45);
  const node55 = new THREE.Mesh(new THREE.CylinderGeometry(0.0539, 0.0568, 0.0252, 6, 1, true), nodeMat);
  node55.name = 'node5';
  node55.position.set(0, 2.3655, 0);
  stalk5.add(node55);
  const node65 = new THREE.Mesh(new THREE.CylinderGeometry(0.0507, 0.0534, 0.0252, 6, 1, true), nodeMat);
  node65.name = 'node6';
  node65.position.set(0, 2.8386, 0);
  stalk5.add(node65);
  const node75 = new THREE.Mesh(new THREE.CylinderGeometry(0.0475, 0.05, 0.0252, 6, 1, true), nodeMat);
  node75.name = 'node7';
  node75.position.set(0, 3.3116, 0);
  stalk5.add(node75);
  const twig15 = new THREE.Mesh(new THREE.CylinderGeometry(0.0074, 0.0132, 0.4372, 4, 1, true), stalkMat);
  twig15.name = 'twig1';
  twig15.position.set(-0.1292, 3.4437, -0.1518);
  twig15.rotation.set(deg(-46.5262), deg(-16.9212), deg(38.1715));
  stalk5.add(twig15);
  const leaf115 = new THREE.Mesh(octahedronGeo, leafMat);
  leaf115.name = 'leaf1_1';
  leaf115.position.set(-0.4591, 3.4101, -0.2404);
  leaf115.rotation.set(deg(99.9872), deg(28.8539), deg(69.9526));
  leaf115.scale.set(0.0683, 0.2438, 0.0146);
  stalk5.add(leaf115);
  const leaf125 = new THREE.Mesh(octahedronGeo, leafLightMat);
  leaf125.name = 'leaf1_2';
  leaf125.position.set(-0.4374, 3.4479, -0.38);
  leaf125.rotation.set(deg(80.2041), deg(21.7169), deg(115.0144));
  leaf125.scale.set(0.0595, 0.2125, 0.0128);
  stalk5.add(leaf125);
  const leaf135 = new THREE.Mesh(octahedronGeo, leafMat);
  leaf135.name = 'leaf1_3';
  leaf135.position.set(-0.3384, 3.397, -0.4276);
  leaf135.rotation.set(deg(52.1461), deg(21.5692), deg(154.685));
  leaf135.scale.set(0.0563, 0.201, 0.0121);
  stalk5.add(leaf135);
  const leaf145 = new THREE.Mesh(octahedronGeo, leafLightMat);
  leaf145.name = 'leaf1_4';
  leaf145.position.set(-0.2452, 3.3492, -0.4771);
  leaf145.rotation.set(deg(43.4543), deg(-3.1864), deg(-176.9854));
  leaf145.scale.set(0.071, 0.2534, 0.0152);
  stalk5.add(leaf145);
  const twig25 = new THREE.Mesh(new THREE.CylinderGeometry(0.0081, 0.0143, 0.4364, 4, 1, true), stalkMat);
  twig25.name = 'twig2';
  twig25.position.set(0.1835, 2.8858, -0.077);
  twig25.rotation.set(deg(-21.1589), deg(12.1452), deg(-59.3314));
  stalk5.add(twig25);
  const leaf215 = new THREE.Mesh(octahedronGeo, leafMat);
  leaf215.name = 'leaf2_1';
  leaf215.position.set(0.429, 2.8448, -0.3114);
  leaf215.rotation.set(deg(54.3294), deg(-12.9416), deg(-162.6717));
  leaf215.scale.set(0.0598, 0.2136, 0.0128);
  stalk5.add(leaf215);
  const leaf225 = new THREE.Mesh(octahedronGeo, leafLightMat);
  leaf225.name = 'leaf2_2';
  leaf225.position.set(0.5065, 2.7994, -0.2508);
  leaf225.rotation.set(deg(59.4241), deg(-36.2429), deg(-134.9816));
  leaf225.scale.set(0.0685, 0.2445, 0.0147);
  stalk5.add(leaf225);
  const leaf235 = new THREE.Mesh(octahedronGeo, leafMat);
  leaf235.name = 'leaf2_3';
  leaf235.position.set(0.5845, 2.8369, -0.1676);
  leaf235.rotation.set(deg(87.7318), deg(-32.3395), deg(-94.2347));
  leaf235.scale.set(0.0723, 0.2582, 0.0155);
  stalk5.add(leaf235);
  const leaf245 = new THREE.Mesh(octahedronGeo, leafLightMat);
  leaf245.name = 'leaf2_4';
  leaf245.position.set(0.5274, 2.8743, -0.0646);
  leaf245.rotation.set(deg(104.9974), deg(-24.8949), deg(-57.5268));
  leaf245.scale.set(0.0587, 0.2096, 0.0126);
  stalk5.add(leaf245);
  const twig35 = new THREE.Mesh(new THREE.CylinderGeometry(0.0087, 0.0154, 0.4059, 4, 1, true), stalkMat);
  twig35.name = 'twig3';
  twig35.position.set(0.0132, 2.2993, 0.1846);
  twig35.rotation.set(deg(65.5608), deg(-2.4039), deg(-3.7321));
  stalk5.add(twig35);
  const leaf315 = new THREE.Mesh(octahedronGeo, leafMat);
  leaf315.name = 'leaf3_1';
  leaf315.position.set(0.1768, 2.2183, 0.4253);
  leaf315.rotation.set(deg(109.6648), deg(-42.0738), deg(-61.9289));
  leaf315.scale.set(0.0643, 0.2297, 0.0138);
  stalk5.add(leaf315);
  const leaf325 = new THREE.Mesh(octahedronGeo, leafLightMat);
  leaf325.name = 'leaf3_2';
  leaf325.position.set(0.1266, 2.2437, 0.5221);
  leaf325.rotation.set(deg(122.4291), deg(-19.368), deg(-27.564));
  leaf325.scale.set(0.0643, 0.2296, 0.0138);
  stalk5.add(leaf325);
  const leaf335 = new THREE.Mesh(octahedronGeo, leafMat);
  leaf335.name = 'leaf3_3';
  leaf335.position.set(-0.0265, 2.2084, 0.5221);
  leaf335.rotation.set(deg(135.4765), deg(13.8617), deg(13.2586));
  leaf335.scale.set(0.0666, 0.2377, 0.0143);
  stalk5.add(leaf335);
  const leaf345 = new THREE.Mesh(octahedronGeo, leafLightMat);
  leaf345.name = 'leaf3_4';
  leaf345.position.set(-0.0819, 2.2236, 0.4825);
  leaf345.rotation.set(deg(126.2307), deg(29.4763), deg(33.8839));
  leaf345.scale.set(0.0625, 0.2232, 0.0134);
  stalk5.add(leaf345);
  const crest15 = new THREE.Mesh(octahedronGeo, leafLightMat);
  crest15.name = 'crest1';
  crest15.position.set(-0.1159, 3.4552, -0.0232);
  crest15.rotation.set(deg(76.8595), deg(48.5699), deg(107.295));
  crest15.scale.set(0.0514, 0.1834, 0.011);
  stalk5.add(crest15);
  const crest25 = new THREE.Mesh(octahedronGeo, leafMat);
  crest25.name = 'crest2';
  crest25.position.set(0.0213, 3.4643, -0.1174);
  crest25.rotation.set(deg(42.7446), deg(-7.5816), deg(-173.0477));
  crest25.scale.set(0.0496, 0.1773, 0.0106);
  stalk5.add(crest25);
  const crest35 = new THREE.Mesh(octahedronGeo, leafMat);
  crest35.name = 'crest3';
  crest35.position.set(0.1081, 3.4717, 0.0479);
  crest35.rotation.set(deg(112.9803), deg(-41.3852), deg(-57.3222));
  crest35.scale.set(0.0479, 0.1712, 0.0103);
  stalk5.add(crest35);
  const crest45 = new THREE.Mesh(octahedronGeo, leafMat);
  crest45.name = 'crest4';
  crest45.position.set(0.0143, 3.5014, 0.1329);
  crest45.rotation.set(deg(124.9963), deg(-3.5278), deg(-5.0228));
  crest45.scale.set(0.0458, 0.1634, 0.0098);
  stalk5.add(crest45);
  const stalk6 = new THREE.Group();
  stalk6.name = 'stalk6';
  stalk6.position.set(0.2291, 0.0128, -0.2062);
  stalk6.rotation.set(deg(-9.0598), deg(0.74), deg(-9.3195));
  root.add(stalk6);
  const cane6 = new THREE.Mesh(new THREE.CylinderGeometry(0.0382, 0.0587, 4.6213, 6), stalkOldMat);
  cane6.name = 'cane';
  cane6.position.set(0, 2.3107, 0);
  stalk6.add(cane6);
  const node16 = new THREE.Mesh(new THREE.CylinderGeometry(0.0642, 0.0676, 0.0323, 6, 1, true), nodeMat);
  node16.name = 'node1';
  node16.position.set(0, 0.5374, 0);
  stalk6.add(node16);
  const node26 = new THREE.Mesh(new THREE.CylinderGeometry(0.0615, 0.0648, 0.0323, 6, 1, true), nodeMat);
  node26.name = 'node2';
  node26.position.set(0, 1.0747, 0);
  stalk6.add(node26);
  const node36 = new THREE.Mesh(new THREE.CylinderGeometry(0.0588, 0.0619, 0.0323, 6, 1, true), nodeMat);
  node36.name = 'node3';
  node36.position.set(0, 1.6121, 0);
  stalk6.add(node36);
  const node46 = new THREE.Mesh(new THREE.CylinderGeometry(0.0561, 0.059, 0.0323, 6, 1, true), nodeMat);
  node46.name = 'node4';
  node46.position.set(0, 2.1495, 0);
  stalk6.add(node46);
  const node56 = new THREE.Mesh(new THREE.CylinderGeometry(0.0533, 0.0562, 0.0323, 6, 1, true), nodeMat);
  node56.name = 'node5';
  node56.position.set(0, 2.6868, 0);
  stalk6.add(node56);
  const node66 = new THREE.Mesh(new THREE.CylinderGeometry(0.0506, 0.0533, 0.0323, 6, 1, true), nodeMat);
  node66.name = 'node6';
  node66.position.set(0, 3.2242, 0);
  stalk6.add(node66);
  const node76 = new THREE.Mesh(new THREE.CylinderGeometry(0.0479, 0.0504, 0.0323, 6, 1, true), nodeMat);
  node76.name = 'node7';
  node76.position.set(0, 3.7616, 0);
  stalk6.add(node76);
  const node84 = new THREE.Mesh(new THREE.CylinderGeometry(0.0452, 0.0475, 0.0323, 6, 1, true), nodeMat);
  node84.name = 'node8';
  node84.position.set(0, 4.2989, 0);
  stalk6.add(node84);
  const twig16 = new THREE.Mesh(new THREE.CylinderGeometry(0.0071, 0.0126, 0.5069, 4, 1, true), stalkOldMat);
  twig16.name = 'twig1';
  twig16.position.set(0.1386, 4.461, -0.1849);
  twig16.rotation.set(deg(-49.5363), deg(16.4375), deg(-34.765));
  stalk6.add(twig16);
  const leaf116 = new THREE.Mesh(octahedronGeo, leafMat);
  leaf116.name = 'leaf1_1';
  leaf116.position.set(0.2447, 4.4458, -0.5297);
  leaf116.rotation.set(deg(54.4036), deg(6.755), deg(170.6686));
  leaf116.scale.set(0.0566, 0.202, 0.0121);
  stalk6.add(leaf116);
  const leaf126 = new THREE.Mesh(octahedronGeo, leafLightMat);
  leaf126.name = 'leaf1_2';
  leaf126.position.set(0.3502, 4.381, -0.528);
  leaf126.rotation.set(deg(46.1868), deg(-17.7198), deg(-162.3989));
  leaf126.scale.set(0.0709, 0.2534, 0.0152);
  stalk6.add(leaf126);
  const leaf136 = new THREE.Mesh(octahedronGeo, leafMat);
  leaf136.name = 'leaf1_3';
  leaf136.position.set(0.4647, 4.4517, -0.4971);
  leaf136.rotation.set(deg(74.317), deg(-21.7153), deg(-127.1927));
  leaf136.scale.set(0.0709, 0.2533, 0.0152);
  stalk6.add(leaf136);
  const leaf146 = new THREE.Mesh(octahedronGeo, leafLightMat);
  leaf146.name = 'leaf1_4';
  leaf146.position.set(0.4266, 4.4352, -0.362);
  leaf146.rotation.set(deg(92.6331), deg(-40.8697), deg(-85.9797));
  leaf146.scale.set(0.0554, 0.198, 0.0119);
  stalk6.add(leaf146);
  const twig26 = new THREE.Mesh(new THREE.CylinderGeometry(0.0076, 0.0135, 0.4006, 4, 1, true), stalkOldMat);
  twig26.name = 'twig2';
  twig26.position.set(0.0284, 3.8059, 0.1805);
  twig26.rotation.set(deg(64.7642), deg(-5.1917), deg(-8.1781));
  stalk6.add(twig26);
  const leaf216 = new THREE.Mesh(octahedronGeo, leafMat);
  leaf216.name = 'leaf2_1';
  leaf216.position.set(0.2224, 3.7297, 0.4754);
  leaf216.rotation.set(deg(114.1078), deg(-30.5832), deg(-48.668));
  leaf216.scale.set(0.0718, 0.2563, 0.0154);
  stalk6.add(leaf216);
  const leaf226 = new THREE.Mesh(octahedronGeo, leafLightMat);
  leaf226.name = 'leaf2_2';
  leaf226.position.set(0.1527, 3.7298, 0.4851);
  leaf226.rotation.set(deg(128.613), deg(-25.7489), deg(-28.5438));
  leaf226.scale.set(0.0624, 0.2229, 0.0134);
  stalk6.add(leaf226);
  const leaf236 = new THREE.Mesh(octahedronGeo, leafMat);
  leaf236.name = 'leaf2_3';
  leaf236.position.set(0.0127, 3.7349, 0.5043);
  leaf236.rotation.set(deg(134.314), deg(12.1161), deg(12.1328));
  leaf236.scale.set(0.0601, 0.2145, 0.0129);
  stalk6.add(leaf236);
  const leaf246 = new THREE.Mesh(octahedronGeo, leafLightMat);
  leaf246.name = 'leaf2_4';
  leaf246.position.set(-0.0898, 3.7629, 0.5115);
  leaf246.rotation.set(deg(113.1305), deg(20.9279), deg(39.9022));
  leaf246.scale.set(0.0685, 0.2446, 0.0147);
  stalk6.add(leaf246);
  const twig36 = new THREE.Mesh(new THREE.CylinderGeometry(0.0082, 0.0145, 0.4163, 4, 1, true), stalkOldMat);
  twig36.name = 'twig3';
  twig36.position.set(-0.0941, 3.0903, -0.1649);
  twig36.rotation.set(deg(-54.9772), deg(-14.7005), deg(27.8477));
  stalk6.add(twig36);
  const leaf316 = new THREE.Mesh(octahedronGeo, leafMat);
  leaf316.name = 'leaf3_1';
  leaf316.position.set(-0.3708, 3.0653, -0.3704);
  leaf316.rotation.set(deg(82.7063), deg(29.739), deg(104.468));
  leaf316.scale.set(0.0609, 0.2173, 0.013);
  stalk6.add(leaf316);
  const leaf326 = new THREE.Mesh(octahedronGeo, leafLightMat);
  leaf326.name = 'leaf3_2';
  leaf326.position.set(-0.3369, 3.0679, -0.4441);
  leaf326.rotation.set(deg(70.7008), deg(23.272), deg(131.551));
  leaf326.scale.set(0.0606, 0.2165, 0.013);
  stalk6.add(leaf326);
  const leaf336 = new THREE.Mesh(octahedronGeo, leafMat);
  leaf336.name = 'leaf3_3';
  leaf336.position.set(-0.231, 3.0558, -0.5521);
  leaf336.rotation.set(deg(62.5258), deg(5.0873), deg(170.3226));
  leaf336.scale.set(0.0717, 0.2562, 0.0154);
  stalk6.add(leaf336);
  const leaf346 = new THREE.Mesh(octahedronGeo, leafLightMat);
  leaf346.name = 'leaf3_4';
  leaf346.position.set(-0.1318, 3.0063, -0.4932);
  leaf346.rotation.set(deg(47.1767), deg(-13.1919), deg(-166.1663));
  leaf346.scale.set(0.0678, 0.242, 0.0145);
  stalk6.add(leaf346);
  const crest16 = new THREE.Mesh(octahedronGeo, leafLightMat);
  crest16.name = 'crest1';
  crest16.position.set(0.0603, 4.481, -0.1163);
  crest16.rotation.set(deg(46.4332), deg(-19.6591), deg(-160.5218));
  crest16.scale.set(0.0538, 0.192, 0.0115);
  stalk6.add(crest16);
  const crest26 = new THREE.Mesh(octahedronGeo, leafMat);
  crest26.name = 'crest2';
  crest26.position.set(0.0992, 4.5137, 0.0558);
  crest26.rotation.set(deg(114.8667), deg(-36.7817), deg(-52.2582));
  crest26.scale.set(0.0439, 0.1567, 0.0094);
  stalk6.add(crest26);
  const crest36 = new THREE.Mesh(octahedronGeo, leafMat);
  crest36.name = 'crest3';
  crest36.position.set(-0.1112, 4.5276, 0.1045);
  crest36.rotation.set(deg(112.8119), deg(22.4079), deg(42.1862));
  crest36.scale.set(0.0501, 0.1791, 0.0107);
  stalk6.add(crest36);
  const crest46 = new THREE.Mesh(octahedronGeo, leafMat);
  crest46.name = 'crest4';
  crest46.position.set(-0.0656, 4.5188, -0.1248);
  crest46.rotation.set(deg(57.2299), deg(15.895), deg(156.9523));
  crest46.scale.set(0.0488, 0.1743, 0.0105);
  stalk6.add(crest46);
  const stalk7 = new THREE.Group();
  stalk7.name = 'stalk7';
  stalk7.position.set(-0.153, 0.01, 0.2992);
  stalk7.rotation.set(deg(8.1995), deg(0.495), deg(6.8983));
  root.add(stalk7);
  const cane7 = new THREE.Mesh(new THREE.CylinderGeometry(0.0373, 0.0574, 4.5681, 6), stalkMat);
  cane7.name = 'cane';
  cane7.position.set(0, 2.2841, 0);
  stalk7.add(cane7);
  const node17 = new THREE.Mesh(new THREE.CylinderGeometry(0.0628, 0.0661, 0.032, 6, 1, true), nodeMat);
  node17.name = 'node1';
  node17.position.set(0, 0.5312, 0);
  stalk7.add(node17);
  const node27 = new THREE.Mesh(new THREE.CylinderGeometry(0.0602, 0.0633, 0.032, 6, 1, true), nodeMat);
  node27.name = 'node2';
  node27.position.set(0, 1.0623, 0);
  stalk7.add(node27);
  const node37 = new THREE.Mesh(new THREE.CylinderGeometry(0.0575, 0.0605, 0.032, 6, 1, true), nodeMat);
  node37.name = 'node3';
  node37.position.set(0, 1.5935, 0);
  stalk7.add(node37);
  const node47 = new THREE.Mesh(new THREE.CylinderGeometry(0.0548, 0.0577, 0.032, 6, 1, true), nodeMat);
  node47.name = 'node4';
  node47.position.set(0, 2.1247, 0);
  stalk7.add(node47);
  const node57 = new THREE.Mesh(new THREE.CylinderGeometry(0.0522, 0.0549, 0.032, 6, 1, true), nodeMat);
  node57.name = 'node5';
  node57.position.set(0, 2.6559, 0);
  stalk7.add(node57);
  const node67 = new THREE.Mesh(new THREE.CylinderGeometry(0.0495, 0.0521, 0.032, 6, 1, true), nodeMat);
  node67.name = 'node6';
  node67.position.set(0, 3.187, 0);
  stalk7.add(node67);
  const node77 = new THREE.Mesh(new THREE.CylinderGeometry(0.0468, 0.0493, 0.032, 6, 1, true), nodeMat);
  node77.name = 'node7';
  node77.position.set(0, 3.7182, 0);
  stalk7.add(node77);
  const node85 = new THREE.Mesh(new THREE.CylinderGeometry(0.0442, 0.0465, 0.032, 6, 1, true), nodeMat);
  node85.name = 'node8';
  node85.position.set(0, 4.2494, 0);
  stalk7.add(node85);
  const twig17 = new THREE.Mesh(new THREE.CylinderGeometry(0.007, 0.0124, 0.4497, 4, 1, true), stalkMat);
  twig17.name = 'twig1';
  twig17.position.set(-0.1033, 4.3505, 0.1771);
  twig17.rotation.set(deg(54.5919), deg(14.8679), deg(28.379));
  stalk7.add(twig17);
  const leaf117 = new THREE.Mesh(octahedronGeo, leafMat);
  leaf117.name = 'leaf1_1';
  leaf117.position.set(-0.084, 4.3519, 0.5217);
  leaf117.rotation.set(deg(109.4549), deg(-13.7039), deg(-33.8487));
  leaf117.scale.set(0.0634, 0.2266, 0.0136);
  stalk7.add(leaf117);
  const leaf127 = new THREE.Mesh(octahedronGeo, leafLightMat);
  leaf127.name = 'leaf1_2';
  leaf127.position.set(-0.2352, 4.3116, 0.5074);
  leaf127.rotation.set(deg(129.603), deg(6.7831), deg(8.1245));
  leaf127.scale.set(0.057, 0.2037, 0.0122);
  stalk7.add(leaf127);
  const leaf137 = new THREE.Mesh(octahedronGeo, leafMat);
  leaf137.name = 'leaf1_3';
  leaf137.position.set(-0.3435, 4.2768, 0.4398);
  leaf137.rotation.set(deg(118.5838), deg(37.4483), deg(48.1375));
  leaf137.scale.set(0.0648, 0.2315, 0.0139);
  stalk7.add(leaf137);
  const leaf147 = new THREE.Mesh(octahedronGeo, leafLightMat);
  leaf147.name = 'leaf1_4';
  leaf147.position.set(-0.396, 4.2592, 0.365);
  leaf147.rotation.set(deg(93.1364), deg(43.9757), deg(85.4878));
  leaf147.scale.set(0.0739, 0.264, 0.0158);
  stalk7.add(leaf147);
  const twig27 = new THREE.Mesh(new THREE.CylinderGeometry(0.0074, 0.0132, 0.4797, 4, 1, true), stalkMat);
  twig27.name = 'twig2';
  twig27.position.set(0.0273, 3.78, -0.217);
  twig27.rotation.set(deg(-65.1237), deg(4.185), deg(-6.5493));
  stalk7.add(twig27);
  const leaf217 = new THREE.Mesh(octahedronGeo, leafMat);
  leaf217.name = 'leaf2_1';
  leaf217.position.set(-0.0852, 3.7265, -0.5853);
  leaf217.rotation.set(deg(61.549), deg(23.7601), deg(143.3662));
  leaf217.scale.set(0.0717, 0.2559, 0.0154);
  stalk7.add(leaf217);
  const leaf227 = new THREE.Mesh(octahedronGeo, leafLightMat);
  leaf227.name = 'leaf2_2';
  leaf227.position.set(0.0513, 3.7059, -0.5913);
  leaf227.rotation.set(deg(42.3607), deg(0.8805), deg(179.1972));
  leaf227.scale.set(0.0654, 0.2334, 0.014);
  stalk7.add(leaf227);
  const leaf237 = new THREE.Mesh(octahedronGeo, leafMat);
  leaf237.name = 'leaf2_3';
  leaf237.position.set(0.1414, 3.7364, -0.5592);
  leaf237.rotation.set(deg(52.5403), deg(-22.8851), deg(-153.0902));
  leaf237.scale.set(0.0583, 0.2083, 0.0125);
  stalk7.add(leaf237);
  const leaf247 = new THREE.Mesh(octahedronGeo, leafLightMat);
  leaf247.name = 'leaf2_4';
  leaf247.position.set(0.2066, 3.7452, -0.5036);
  leaf247.rotation.set(deg(71.6504), deg(-34.524), deg(-120.3373));
  leaf247.scale.set(0.0599, 0.2138, 0.0128);
  stalk7.add(leaf247);
  const twig37 = new THREE.Mesh(new THREE.CylinderGeometry(0.008, 0.0143, 0.5011, 4, 1, true), stalkMat);
  twig37.name = 'twig3';
  twig37.position.set(0.22, 3.0291, 0.0617);
  twig37.rotation.set(deg(14.4306), deg(-8.819), deg(-62.6911));
  stalk7.add(twig37);
  const leaf317 = new THREE.Mesh(octahedronGeo, leafMat);
  leaf317.name = 'leaf3_1';
  leaf317.position.set(0.5567, 2.9746, -0.0121);
  leaf317.rotation.set(deg(56.3163), deg(-25.5418), deg(-147.1007));
  leaf317.scale.set(0.0667, 0.2382, 0.0143);
  stalk7.add(leaf317);
  const leaf327 = new THREE.Mesh(octahedronGeo, leafLightMat);
  leaf327.name = 'leaf3_2';
  leaf327.position.set(0.6298, 3.0624, 0.1364);
  leaf327.rotation.set(deg(91.4287), deg(-20.0261), deg(-85.8344));
  leaf327.scale.set(0.0567, 0.2025, 0.0122);
  stalk7.add(leaf327);
  const leaf337 = new THREE.Mesh(octahedronGeo, leafMat);
  leaf337.name = 'leaf3_3';
  leaf337.position.set(0.5677, 2.9841, 0.216);
  leaf337.rotation.set(deg(118.8195), deg(-33.615), deg(-45.1771));
  leaf337.scale.set(0.0605, 0.2162, 0.013);
  stalk7.add(leaf337);
  const leaf347 = new THREE.Mesh(octahedronGeo, leafLightMat);
  leaf347.name = 'leaf3_4';
  leaf347.position.set(0.5115, 2.9676, 0.2981);
  leaf347.rotation.set(deg(128.8451), deg(-14.4074), deg(-17.1692));
  leaf347.scale.set(0.0701, 0.2503, 0.015);
  stalk7.add(leaf347);
  const crest17 = new THREE.Mesh(octahedronGeo, leafLightMat);
  crest17.name = 'crest1';
  crest17.position.set(-0.0778, 4.476, 0.0918);
  crest17.rotation.set(deg(120.2809), deg(23.1283), deg(33.9286));
  crest17.scale.set(0.0424, 0.1515, 0.0091);
  stalk7.add(crest17);
  const crest27 = new THREE.Mesh(octahedronGeo, leafMat);
  crest27.name = 'crest2';
  crest27.position.set(-0.096, 4.462, -0.1143);
  crest27.rotation.set(deg(61.4375), deg(21.8794), deg(145.606));
  crest27.scale.set(0.0513, 0.1831, 0.011);
  stalk7.add(crest27);
  const crest37 = new THREE.Mesh(octahedronGeo, leafMat);
  crest37.name = 'crest3';
  crest37.position.set(0.0279, 4.4453, -0.1384);
  crest37.rotation.set(deg(49.5409), deg(-7.4633), deg(-171.3403));
  crest37.scale.set(0.0524, 0.1871, 0.0112);
  stalk7.add(crest37);
  const crest47 = new THREE.Mesh(octahedronGeo, leafMat);
  crest47.name = 'crest4';
  crest47.position.set(0.1436, 4.4659, 0.0415);
  crest47.rotation.set(deg(100.7567), deg(-32.8392), deg(-70.6931));
  crest47.scale.set(0.0507, 0.1811, 0.0109);
  stalk7.add(crest47);
  const shoot1 = new THREE.Mesh(new THREE.ConeGeometry(0.0715, 0.2924, 6), shootMat);
  shoot1.name = 'shoot1';
  shoot1.position.set(0.0517, 0.157, 0.4703);
  shoot1.rotation.set(deg(7.7359), deg(118.3565), deg(3.6804));
  root.add(shoot1);
  const shoot2 = new THREE.Mesh(new THREE.ConeGeometry(0.0715, 0.3815, 6), shootMat);
  shoot2.name = 'shoot2';
  shoot2.position.set(-0.3446, 0.196, -0.2881);
  shoot2.rotation.set(deg(-4.891), deg(8.5756), deg(2.8883));
  root.add(shoot2);
  const shoot3 = new THREE.Mesh(new THREE.ConeGeometry(0.0715, 0.2405, 6), shootMat);
  shoot3.name = 'shoot3';
  shoot3.position.set(0.3115, 0.1238, -0.3607);
  shoot3.rotation.set(deg(1.6945), deg(284.4767), deg(-1.6234));
  root.add(shoot3);

  root.traverse((o) => {
    if (o.isMesh) {
      o.castShadow = true;
      o.receiveShadow = true;
    }
  });
  return root;
}

export default createBambooCluster;
```

---
Codels — 3D models as code for three.js. Search more: https://codels.download/api/v1/models?q=<query> · Guide: https://codels.download/llms.txt
