# Fog Tree

Uma árvore procedural sozinha na névoa, em duotone da marca: a cena é cinza e o último passe pinta com --background e --foreground, então o tema escuro inverte a foto sem segunda paleta.

- Nome no registry: `fog-tree`
- Tipo: componente
- Dependências npm: @dgreenheck/ez-tree@^1.1.0, framer-motion, three@^0.170.0
- Demo: https://ui.visantlabs.com/c/fog-tree
- Categorias: efeitos, 3d, webgl, nevoa, arvore, scroll, duotone, ez-tree

## Quando usar

- Use quando: Abertura ou dobra de marca com uma árvore 3D na névoa em duotone que acompanha o scroll
- Evite quando: Percurso com várias paradas de texto: fog-garden; hero com vídeo, fog-hero

## Instalar

```bash
npx shadcn@latest add @visant/fog-tree
```

## Usar

```tsx
<disposeTree />
```

## API

### disposeTree

Descarta geometria e material de tudo abaixo de `root`. Textura fica: quem a criou é quem a guarda (as do ez-tree são cache de módulo, compartilhadas entre montagens — descartá-las quebraria a próxima árvore).

- `add: (...object: Object3D<Object3DEventMap>[]) => Object3D<Object3DEventMap>` — Adds another {@link Object3D} as child of this {@link Object3D}. @remarks An arbitrary number of objects may be added Any current parent on an {@link object } passed in here will be removed, since an {@link Object3D } can have at most one parent. @see {@link attach } @see {@link THREE.Group Group} for info on manually grouping objects. @param object
- `addEventListener: <T extends keyof Object3DEventMap>(type: T, listener: EventListener<Object3DEventMap[T], T, Object3D<Object3DEventMap>>) => void` — Adds a listener to an event type. @param type The type of event to listen to. @param listener The function that gets called when the event is fired.
- `animations: AnimationClip[]` — Array with object's animation clips. @defaultValue `[]`
- `applyMatrix4: (matrix: Matrix4) => void` — Applies the matrix transform to the object and updates the object's position, rotation and scale. @param matrix
- `applyQuaternion: (quaternion: Quaternion) => Object3D<Object3DEventMap>` — Applies the rotation represented by the quaternion to the object. @param quaternion
- `attach: (object: Object3D<Object3DEventMap>) => Object3D<Object3DEventMap>` — Adds a {@link Object3D} as a child of this, while maintaining the object's world transform. @remarks Note: This method does not support scene graphs having non-uniformly-scaled nodes(s). @see {@link add } @param object
- `castShadow: boolean` — Whether the object gets rendered into shadow map. @defaultValue `false`
- `children: Object3D<Object3DEventMap>[]` — Array with object's children. @see {@link THREE.Object3DGroup Group} for info on manually grouping objects. @defaultValue `[]`
- `clear: () => Object3D<Object3DEventMap>` — Removes all child objects.
- `clone: (recursive?: boolean) => Object3D<Object3DEventMap>` — Returns a clone of `this` object and optionally all descendants. @param recursive If true, descendants of the object are also cloned. Default `true`
- `copy: (object: Object3D<Object3DEventMap>, recursive?: boolean) => Object3D<Object3DEventMap>` — Copies the given object into this object. @remarks Event listeners and user-defined callbacks ({@link .onAfterRender} and {@link .onBeforeRender}) are not copied. @param object @param recursive If set to `true`, descendants of the object are copied next to the existing ones. If set to `false`, descendants are left unchanged. Default is `true`.
- `dispatchEvent: <T extends keyof Object3DEventMap>(event: BaseEvent<T> & Object3DEventMap[T]) => void` — Fire an event type. @param event The event that gets fired.
- `frustumCulled: boolean` — When this is set, it checks every frame if the object is in the frustum of the camera before rendering the object. If set to `false` the object gets rendered every frame even if it is not in the frustum of the camera. @defaultValue `true`
- `getObjectById: (id: number) => Object3D<Object3DEventMap>` — Searches through an object and its children, starting with the object itself, and returns the first with a matching id. @remarks Note that ids are assigned in chronological order: 1, 2, 3, ..., incrementing by one for each new object. @see {@link id } @param id Unique number of the object instance. Expects a `Integer`
- `getObjectByName: (name: string) => Object3D<Object3DEventMap>` — Searches through an object and its children, starting with the object itself, and returns the first with a matching name. @remarks Note that for most objects the name is an empty string by default You will have to set it manually to make use of this method. @param name String to match to the children's Object3D.name property.
- `getObjectByProperty: (name: string, value: any) => Object3D<Object3DEventMap>` — Searches through an object and its children, starting with the object itself, and returns the first with a property that matches the value given. @param name - the property name to search for. @param value - value of the given property.
- `getObjectsByProperty: (name: string, value: any, optionalTarget?: Object3D<Object3DEventMap>[]) => Object3D<Object3DEventMap>[]` — Searches through an object and its children, starting with the object itself, and returns the first with a property that matches the value given. @param name The property name to search for. @param value Value of the given property. @param optionalTarget target to set the result. Otherwise a new Array is instantiated. If set, you must clear this array prior to each call (i.e., array.length = 0;).
- `getWorldDirection: (target: Vector3) => Vector3` — Returns a vector representing the direction of object's positive z-axis in world space. @param target The result will be copied into this Vector3.
- `getWorldPosition: (target: Vector3) => Vector3` — Returns a vector representing the position of the object in world space. @param target The result will be copied into this Vector3.
- `getWorldQuaternion: (target: Quaternion) => Quaternion` — Returns a quaternion representing the rotation of the object in world space. @param target The result will be copied into this Quaternion.
- `getWorldScale: (target: Vector3) => Vector3` — Returns a vector of the scaling factors applied to the object for each axis in world space. @param target The result will be copied into this Vector3.
- `hasEventListener: <T extends keyof Object3DEventMap>(type: T, listener: EventListener<Object3DEventMap[T], T, Object3D<Object3DEventMap>>) => boolean` — Checks if listener is added to an event type. @param type The type of event to listen to. @param listener The function that gets called when the event is fired.
- `id: number` — Unique number for this {@link Object3D} instance. @remarks Note that ids are assigned in chronological order: 1, 2, 3, ..., incrementing by one for each new object. Expects a `Integer`
- `isObject3D: true` — Flag to check if a given object is of type {@link Object3D}. @remarks This is a _constant_ value @defaultValue `true`
- `layers: Layers` — The layer membership of the object. @remarks The object is only visible if it has at least one layer in common with the {@link THREE.Object3DCamera Camera} in use. This property can also be used to filter out unwanted objects in ray-intersection tests when using {@link THREE.Raycaster Raycaster}. @defaultValue `new THREE.Layers()`
- `localToWorld: (vector: Vector3) => Vector3` — Converts the vector from this object's local space to world space. @param vector A vector representing a position in this object's local space.
- `lookAt: { (vector: Vector3): void; (x: number, y: number, z: number): void; }` — Rotates the object to face a point in world space. @remarks This method does not support objects having non-uniformly-scaled parent(s). @param vector A vector representing a position in world space to look at. @remarks This method does not support objects having non-uniformly-scaled parent(s). @param x Expects a `Float` @param y Expects a `Float` @param z Expects a `Float`
- `matrix: Matrix4` — The local transform matrix. @defaultValue `new THREE.Matrix4()`
- `matrixAutoUpdate: boolean` — When this is set, it calculates the matrix of position, (rotation or quaternion) and scale every frame and also recalculates the matrixWorld property. @defaultValue {@link DEFAULT_MATRIX_AUTO_UPDATE } - that is `(true)`.
- `matrixWorld: Matrix4` — The global transform of the object. @remarks If the {@link Object3D } has no parent, then it's identical to the local transform {@link THREE.Object3D.matrix .matrix}. @defaultValue `new THREE.Matrix4()`
- `matrixWorldAutoUpdate: boolean` — If set, then the renderer checks every frame if the object and its children need matrix updates. When it isn't, then you have to maintain all matrices in the object and its children yourself. @defaultValue {@link DEFAULT_MATRIX_WORLD_AUTO_UPDATE } - that is `(true)`.
- `matrixWorldNeedsUpdate: boolean` — When this is set, it calculates the matrixWorld in that frame and resets this property to false. @defaultValue `false`
- `modelViewMatrix: Matrix4` — @defaultValue `new THREE.Matrix4()`
- `name: string` — Optional name of the object @remarks _(doesn't need to be unique)_. @defaultValue `""`
- `normalMatrix: Matrix3` — @defaultValue `new THREE.Matrix3()`
- `onAfterRender: (renderer: WebGLRenderer, scene: Scene, camera: Camera, geometry: BufferGeometry<NormalBufferAttributes>, material: Material, group: Group<...>) => void` — An optional callback that is executed immediately after a 3D object is rendered. @remarks This function is called with the following parameters: renderer, scene, camera, geometry, material, group. Please notice that this callback is only executed for `renderable` 3D objects. Meaning 3D objects which define their visual appearance with geometries and materials like instances of {@link Mesh }, {@link Line }, {@link Points } or {@link Sprite }. Instances of {@link Object3D }, {@link Group } or {@link Bone } are not renderable and thus this callback is not executed for such objects.
- `onAfterShadow: (renderer: WebGLRenderer, scene: Scene, camera: Camera, shadowCamera: Camera, geometry: BufferGeometry<NormalBufferAttributes>, depthMaterial: Material, group: Group<...>) => void` — An optional callback that is executed immediately after a 3D object is rendered to a shadow map. @remarks This function is called with the following parameters: renderer, scene, camera, shadowCamera, geometry, depthMaterial, group. Please notice that this callback is only executed for `renderable` 3D objects. Meaning 3D objects which define their visual appearance with geometries and materials like instances of {@link Mesh }, {@link Line }, {@link Points } or {@link Sprite }. Instances of {@link Object3D }, {@link Group } or {@link Bone } are not renderable and thus this callback is not executed for such objects.
- `onBeforeRender: (renderer: WebGLRenderer, scene: Scene, camera: Camera, geometry: BufferGeometry<NormalBufferAttributes>, material: Material, group: Group<...>) => void` — An optional callback that is executed immediately before a 3D object is rendered. @remarks This function is called with the following parameters: renderer, scene, camera, geometry, material, group. Please notice that this callback is only executed for `renderable` 3D objects. Meaning 3D objects which define their visual appearance with geometries and materials like instances of {@link Mesh }, {@link Line }, {@link Points } or {@link Sprite }. Instances of {@link Object3D }, {@link Group } or {@link Bone } are not renderable and thus this callback is not executed for such objects.
- `onBeforeShadow: (renderer: WebGLRenderer, scene: Scene, camera: Camera, shadowCamera: Camera, geometry: BufferGeometry<NormalBufferAttributes>, depthMaterial: Material, group: Group<...>) => void` — An optional callback that is executed immediately before a 3D object is rendered to a shadow map. @remarks This function is called with the following parameters: renderer, scene, camera, shadowCamera, geometry, depthMaterial, group. Please notice that this callback is only executed for `renderable` 3D objects. Meaning 3D objects which define their visual appearance with geometries and materials like instances of {@link Mesh }, {@link Line }, {@link Points } or {@link Sprite }. Instances of {@link Object3D }, {@link Group } or {@link Bone } are not renderable and thus this callback is not executed for such objects.
- `parent: Object3D<Object3DEventMap>` — Object's parent in the {@link https://en.wikipedia.org/wiki/Scene_graph scene graph}. @remarks An object can have at most one parent. @defaultValue `null`
- `position: Vector3` — Object's local position. @defaultValue `new THREE.Vector3()` - that is `(0, 0, 0)`.
- `quaternion: Quaternion` — Object's local rotation as a {@link THREE.Quaternion Quaternion}. @defaultValue `new THREE.Quaternion()` - that is `(0,  0, 0, 1)`.
- `raycast: (raycaster: Raycaster, intersects: Intersection<Object3D<Object3DEventMap>>[]) => void` — Abstract (empty) method to get intersections between a casted ray and this object @remarks Subclasses such as {@link THREE.Mesh Mesh}, {@link THREE.Line Line}, and {@link THREE.Points Points} implement this method in order to use raycasting. @see {@link THREE.Raycaster Raycaster} @param raycaster @param intersects @defaultValue `() => {}`
- `receiveShadow: boolean` — Whether the material receives shadows. @defaultValue `false`
- `remove: (...object: Object3D<Object3DEventMap>[]) => Object3D<Object3DEventMap>` — Removes a {@link Object3D} as child of this {@link Object3D}. @remarks An arbitrary number of objects may be removed. @see {@link THREE.Group Group} for info on manually grouping objects. @param object
- `removeEventListener: <T extends keyof Object3DEventMap>(type: T, listener: EventListener<Object3DEventMap[T], T, Object3D<Object3DEventMap>>) => void` — Removes a listener from an event type. @param type The type of the listener that gets removed. @param listener The listener function that gets removed.
- `removeFromParent: () => Object3D<Object3DEventMap>` — Removes this object from its current parent.
- `renderOrder: number` — This value allows the default rendering order of {@link https://en.wikipedia.org/wiki/Scene_graph scene graph} objects to be overridden although opaque and transparent objects remain sorted independently. @remarks When this property is set for an instance of {@link Group Group}, all descendants objects will be sorted and rendered together. Sorting is from lowest to highest renderOrder. @defaultValue `0`
- `rotateOnAxis: (axis: Vector3, angle: number) => Object3D<Object3DEventMap>` — Rotate an object along an axis in object space. @remarks The axis is assumed to be normalized. @param axis A normalized vector in object space. @param angle The angle in radians. Expects a `Float`
- `rotateOnWorldAxis: (axis: Vector3, angle: number) => Object3D<Object3DEventMap>` — Rotate an object along an axis in world space. @remarks The axis is assumed to be normalized Method Assumes no rotated parent. @param axis A normalized vector in world space. @param angle The angle in radians. Expects a `Float`
- `rotateX: (angle: number) => Object3D<Object3DEventMap>` — Rotates the object around _x_ axis in local space. @param rad The angle to rotate in radians. Expects a `Float`
- `rotateY: (angle: number) => Object3D<Object3DEventMap>` — Rotates the object around _y_ axis in local space. @param rad The angle to rotate in radians. Expects a `Float`
- `rotateZ: (angle: number) => Object3D<Object3DEventMap>` — Rotates the object around _z_ axis in local space. @param rad The angle to rotate in radians. Expects a `Float`
- `rotation: Euler` — Object's local rotation ({@link https://en.wikipedia.org/wiki/Euler_angles Euler angles}), in radians. @defaultValue `new THREE.Euler()` - that is `(0, 0, 0, Euler.DEFAULT_ORDER)`.
- `scale: Vector3` — The object's local scale. @defaultValue `new THREE.Vector3( 1, 1, 1 )`
- `setRotationFromAxisAngle: (axis: Vector3, angle: number) => void` — Calls {@link THREE.Quaternion.setFromAxisAngle setFromAxisAngle}({@link axis}, {@link angle}) on the {@link quaternion.quaternion}. @param axis A normalized vector in object space. @param angle Angle in radians. Expects a `Float`
- `setRotationFromEuler: (euler: Euler) => void` — Calls {@link THREE.Quaternion.setFromEuler setFromEuler}({@link euler}) on the {@link quaternion.quaternion}. @param euler Euler angle specifying rotation amount.
- `setRotationFromMatrix: (m: Matrix4) => void` — Calls {@link THREE.Quaternion.setFromRotationMatrix setFromRotationMatrix}({@link m}) on the {@link quaternion.quaternion}. @remarks Note that this assumes that the upper 3x3 of m is a pure rotation matrix (i.e, unscaled). @param m Rotate the quaternion by the rotation component of the matrix.
- `setRotationFromQuaternion: (q: Quaternion) => void` — Copy the given {@link THREE.Quaternion Quaternion} into {@link quaternion.quaternion}. @param q Normalized Quaternion.
- `toJSON: (meta?: JSONMeta) => Object3DJSON` — Convert the object to three.js {@link https://github.com/mrdoob/three.js/wiki/JSON-Object-Scene-format-4 JSON Object/Scene format}. @param meta Object containing metadata such as materials, textures or images for the object.
- `translateOnAxis: (axis: Vector3, distance: number) => Object3D<Object3DEventMap>` — Translate an object by distance along an axis in object space @remarks The axis is assumed to be normalized. @param axis A normalized vector in object space. @param distance The distance to translate. Expects a `Float`
- `translateX: (distance: number) => Object3D<Object3DEventMap>` — Translates object along x axis in object space by {@link distance} units. @param distance Expects a `Float`
- `translateY: (distance: number) => Object3D<Object3DEventMap>` — Translates object along _y_ axis in object space by {@link distance} units. @param distance Expects a `Float`
- `translateZ: (distance: number) => Object3D<Object3DEventMap>` — Translates object along _z_ axis in object space by {@link distance} units. @param distance Expects a `Float`
- `traverse: (callback: (object: Object3D<Object3DEventMap>) => any) => void` — Executes the callback on this object and all descendants. @remarks Note: Modifying the scene graph inside the callback is discouraged. @param callback A function with as first argument an {@link Object3D } object.
- `traverseAncestors: (callback: (object: Object3D<Object3DEventMap>) => any) => void` — Executes the callback on all ancestors. @remarks Note: Modifying the scene graph inside the callback is discouraged. @param callback A function with as first argument an {@link Object3D } object.
- `traverseVisible: (callback: (object: Object3D<Object3DEventMap>) => any) => void` — Like traverse, but the callback will only be executed for visible objects @remarks Descendants of invisible objects are not traversed. Note: Modifying the scene graph inside the callback is discouraged. @param callback A function with as first argument an {@link Object3D } object.
- `type: string` — A Read-only _string_ to check `this` object type. @remarks This can be used to find a specific type of Object3D in a scene. Sub-classes will update this value. @defaultValue `Object3D`
- `up: Vector3` — This is used by the {@link lookAtlookAt} method, for example, to determine the orientation of the result. @defaultValue {@link DEFAULT_UP Object3D.DEFAULT_UP} - that is `(0, 1, 0)`.
- `updateMatrix: () => void` — Updates local transform.
- `updateMatrixWorld: (force?: boolean) => void` — Updates the global transform of the object. And will update the object descendants if {@link matrixWorldNeedsUpdate.matrixWorldNeedsUpdate} is set to true or if the {@link force} parameter is set to `true`. @param force A boolean that can be used to bypass {@link matrixWorldAutoUpdate .matrixWorldAutoUpdate}, to recalculate the world matrix of the object and descendants on the current frame. Useful if you cannot wait for the renderer to update it on the next frame, assuming {@link matrixWorldAutoUpdate .matrixWorldAutoUpdate} set to `true`.
- `updateWorldMatrix: (updateParents: boolean, updateChildren: boolean) => void` — Updates the global transform of the object. @param updateParents Recursively updates global transform of ancestors. @param updateChildren Recursively updates global transform of descendants.
- `userData: Record<string, any> = "`{}`"` — An object that can be used to store custom data about the {@link Object3D}. @remarks It should not hold references to _functions_ as these **will not** be cloned.
- `uuid: string` — {@link http://en.wikipedia.org/wiki/Universally_unique_identifier UUID} of this object instance. @remarks This gets automatically assigned and shouldn't be edited.
- `visible: boolean` — Object gets rendered if `true`. @defaultValue `true`
- `worldToLocal: (vector: Vector3) => Vector3` — Converts the vector from world space to this object's local space. @param vector A vector representing a position in world space.
- `customDepthMaterial?: Material` — Custom depth material to be used when rendering to the depth map. @remarks Can only be used in context of meshes. When shadow-casting with a {@link THREE.DirectionalLight DirectionalLight} or {@link THREE.SpotLight SpotLight}, if you are modifying vertex positions in the vertex shader you must specify a customDepthMaterial for proper shadows. @defaultValue `undefined`
- `customDistanceMaterial?: Material` — Same as {@link customDepthMaterial}, but used with {@link THREE.Object3DPointLight PointLight}. @defaultValue `undefined`

### releaseRenderer

Devolve o contexto ao navegador já, em vez de esperar o GC.

- `animate: (callback: () => void) => void` — @deprecated Use {@link WebGLRenderer#setAnimationLoop .setAnimationLoop()} instead.
- `autoClear: boolean = true` — Defines whether the renderer should automatically clear its output before rendering.
- `autoClearColor: boolean = true` — If autoClear is true, defines whether the renderer should clear the color buffer. Default is true.
- `autoClearDepth: boolean = true` — If autoClear is true, defines whether the renderer should clear the depth buffer. Default is true.
- `autoClearStencil: boolean = true` — If autoClear is true, defines whether the renderer should clear the stencil buffer. Default is true.
- `capabilities: WebGLCapabilities`
- `clear: (color?: boolean, depth?: boolean, stencil?: boolean) => void` — Tells the renderer to clear its color, depth or stencil drawing buffer(s). Arguments default to true
- `clearColor: () => void`
- `clearDepth: () => void`
- `clearStencil: () => void`
- `clearTarget: (renderTarget: WebGLRenderTarget<Texture>, color: boolean, depth: boolean, stencil: boolean) => void`
- `clippingPlanes: Plane[] = []`
- `compile: (scene: Object3D<Object3DEventMap>, camera: Camera, targetScene?: Scene) => Set<Material>` — Compiles all materials in the scene with the camera. This is useful to precompile shaders before the first rendering. If you want to add a 3D object to an existing scene, use the third optional parameter for applying the target scene. Note that the (target) scene's lighting should be configured before calling this method.
- `compileAsync: (scene: Object3D<Object3DEventMap>, camera: Camera, targetScene?: Scene) => Promise<Object3D<Object3DEventMap>>` — Asynchronous version of {@link compile}(). The method returns a Promise that resolves when the given scene can be rendered without unnecessary stalling due to shader compilation. This method makes use of the KHR_parallel_shader_compile WebGL extension.
- `coordinateSystem: 2000`
- `copyFramebufferToTexture: (texture: Texture, position?: Vector2, level?: number) => void` — Copies a region of the currently bound framebuffer into the selected mipmap level of the selected texture. This region is defined by the size of the destination texture's mip level, offset by the input position. @param texture Specifies the destination texture. @param position Specifies the pixel offset from which to copy out of the framebuffer. @param level Specifies the destination mipmap level of the texture.
- `copyTextureToTexture: (srcTexture: Texture, dstTexture: Texture, srcRegion?: Box2 | Box3, dstPosition?: Vector3 | Vector2, dstLevel?: number) => void` — Copies the pixels of a texture in the bounds [srcRegion]{@link Box3} in the destination texture starting from the given position. 2D Texture, 3D Textures, or a mix of the two can be used as source and destination texture arguments for copying between layers of 3d textures
- `copyTextureToTexture3D: (srcTexture: Texture, dstTexture: Data3DTexture | DataArrayTexture, srcRegion?: Box3, dstPosition?: Vector3, level?: number) => void` — @deprecated Use "copyTextureToTexture" instead.
- `debug: WebGLDebug = { checkShaderErrors: true }` — Debug configurations.
- `dispose: () => void`
- `domElement: HTMLCanvasElement = "document.createElementNS( 'http://www.w3.org/1999/xhtml', 'canvas' )"` — A Canvas where the renderer draws its output. This is automatically created by the renderer in the constructor (if not provided already); you just need to add it to your page.
- `enableScissorTest: (boolean: any) => any` — @deprecated Use {@link WebGLRenderer#setScissorTest .setScissorTest()} instead.
- `extensions: WebGLExtensions`
- `forceContextLoss: () => void`
- `forceContextRestore: () => void`
- `getActiveCubeFace: () => number` — Returns the current active cube face.
- `getActiveMipmapLevel: () => number` — Returns the current active mipmap level.
- `getClearAlpha: () => number` — Returns a float with the current clear alpha. Ranges from 0 to 1.
- `getClearColor: (target: Color) => Color` — Returns a THREE.Color instance with the current clear color.
- `getContext: () => WebGLRenderingContext | WebGL2RenderingContext` — Return the WebGL context.
- `getContextAttributes: () => any`
- `getCurrentRenderTarget: () => WebGLRenderTarget<Texture>` — @deprecated Use {@link WebGLRenderer#getRenderTarget .getRenderTarget()} instead.
- `getCurrentViewport: (target: Vector4) => Vector4`
- `getDrawingBufferSize: (target: Vector2) => Vector2`
- `getMaxAnisotropy: () => number` — @deprecated Use {@link WebGLCapabilities#getMaxAnisotropy .capabilities.getMaxAnisotropy()} instead.
- `getPixelRatio: () => number`
- `getPrecision: () => string` — @deprecated Use {@link WebGLCapabilities#precision .capabilities.precision} instead.
- `getRenderTarget: () => WebGLRenderTarget<Texture>` — Returns the current render target. If no render target is set, null is returned.
- `getScissor: (target: Vector4) => Vector4` — Copies the scissor area into target.
- `getScissorTest: () => boolean` — Returns true if scissor test is enabled; returns false otherwise.
- `getSize: (target: Vector2) => Vector2`
- `getViewport: (target: Vector4) => Vector4` — Copies the viewport into target.
- `info: WebGLInfo`
- `initRenderTarget: (target: WebGLRenderTarget<Texture>) => void` — Initializes the given WebGLRenderTarget memory. Useful for initializing a render target so data can be copied into it using {@link WebGLRenderer.copyTextureToTexture} before it has been rendered to. @param target
- `initTexture: (texture: Texture) => void` — Initializes the given texture. Can be used to preload a texture rather than waiting until first render (which can cause noticeable lags due to decode and GPU upload overhead). @param texture The texture to Initialize.
- `localClippingEnabled: boolean = false`
- `outputColorSpace: string = "THREE.SRGBColorSpace."` — Color space used for output to HTMLCanvasElement. Supported values are {@link SRGBColorSpace } and {@link LinearSRGBColorSpace }.
- `pixelRatio: number`
- `properties: WebGLProperties`
- `readRenderTargetPixels: (renderTarget: WebGLRenderTarget<Texture> | WebGLRenderTarget<Texture[]>, x: number, y: number, width: number, height: number, buffer: TypedArray, activeCubeFaceIndex?: number) => void`
- `readRenderTargetPixelsAsync: (renderTarget: WebGLRenderTarget<Texture> | WebGLRenderTarget<Texture[]>, x: number, y: number, width: number, height: number, buffer: TypedArray, activeCubeFaceIndex?: number) => Promise<...>`
- `render: (scene: Object3D<Object3DEventMap>, camera: Camera) => void` — Render a scene or an object using a camera. The render is done to a previously specified {@link WebGLRenderTarget#renderTarget .renderTarget} set by calling {@link WebGLRenderer#setRenderTarget .setRenderTarget} or to the canvas as usual.
- `renderBufferDirect: (camera: Camera, scene: Scene, geometry: BufferGeometry<NormalBufferAttributes>, material: Material, object: Object3D<...>, geometryGroup: any) => void`
- `renderLists: WebGLRenderLists`
- `resetGLState: () => void` — @deprecated Use {@link WebGLState#reset .state.reset()} instead.
- `resetState: () => void` — Can be used to reset the internal WebGL state.
- `setAnimationLoop: (callback: XRFrameRequestCallback) => void` — A build in function that can be used instead of requestAnimationFrame. For WebXR projects this function must be used. @param callback The function will be called every available frame. If `null` is passed it will stop any already ongoing animation.
- `setClearAlpha: (alpha: number) => void`
- `setClearColor: (color: ColorRepresentation, alpha?: number) => void` — Sets the clear color, using color for the color and alpha for the opacity.
- `setDrawingBufferSize: (width: number, height: number, pixelRatio: number) => void`
- `setOpaqueSort: (method: (a: any, b: any) => number) => void` — Sets the custom opaque sort function for the WebGLRenderLists. Pass null to use the default painterSortStable function.
- `setPixelRatio: (value: number) => void`
- `setRenderTarget: (renderTarget: WebGLRenderTarget<Texture> | WebGLRenderTarget<Texture[]>, activeCubeFace?: number, activeMipmapLevel?: number) => void` — Sets the active render target. @param renderTarget The {@link WebGLRenderTarget renderTarget} that needs to be activated. When `null` is given, the canvas is set as the active render target instead. @param activeCubeFace Specifies the active cube side (PX 0, NX 1, PY 2, NY 3, PZ 4, NZ 5) of {@link WebGLCubeRenderTarget }. @param activeMipmapLevel Specifies the active mipmap level.
- `setScissor: (x: number | Vector4, y?: number, width?: number, height?: number) => void` — Sets the scissor area from (x, y) to (x + width, y + height).
- `setScissorTest: (enable: boolean) => void` — Enable the scissor test. When this is enabled, only the pixels within the defined scissor area will be affected by further renderer actions.
- `setSize: (width: number, height: number, updateStyle?: boolean) => void` — Resizes the output canvas to (width, height), and also sets the viewport to fit that size, starting in (0, 0).
- `setTransparentSort: (method: (a: any, b: any) => number) => void` — Sets the custom transparent sort function for the WebGLRenderLists. Pass null to use the default reversePainterSortStable function.
- `setViewport: (x: number | Vector4, y?: number, width?: number, height?: number) => void` — Sets the viewport to render from (x, y) to (x + width, y + height). (x, y) is the lower-left corner of the region.
- `shadowMap: WebGLShadowMap`
- `shadowMapCullFace: "0" | "1" | "2" | "3"` — @deprecated Use {@link WebGLShadowMap#cullFace .shadowMap.cullFace} instead.
- `shadowMapEnabled: boolean` — @deprecated Use {@link WebGLShadowMap#enabled .shadowMap.enabled} instead.
- `shadowMapType: "0" | "1" | "2" | "3"` — @deprecated Use {@link WebGLShadowMap#type .shadowMap.type} instead.
- `sortObjects: boolean = true` — Defines whether the renderer should sort objects. Default is true.
- `state: WebGLState`
- `supportsBlendMinMax: () => any` — @deprecated Use {@link WebGLExtensions#get .extensions.get( 'EXT_blend_minmax' )} instead.
- `supportsCompressedTexturePVRTC: () => any` — @deprecated Use {@link WebGLExtensions#get .extensions.get( 'WEBGL_compressed_texture_pvrtc' )} instead.
- `supportsCompressedTextureS3TC: () => any` — @deprecated Use {@link WebGLExtensions#get .extensions.get( 'WEBGL_compressed_texture_s3tc' )} instead.
- `supportsFloatTextures: () => any` — @deprecated Use {@link WebGLExtensions#get .extensions.get( 'OES_texture_float' )} instead.
- `supportsHalfFloatTextures: () => any` — @deprecated Use {@link WebGLExtensions#get .extensions.get( 'OES_texture_half_float' )} instead.
- `supportsInstancedArrays: () => any` — @deprecated Use {@link WebGLExtensions#get .extensions.get( 'ANGLE_instanced_arrays' )} instead.
- `supportsStandardDerivatives: () => any` — @deprecated Use {@link WebGLExtensions#get .extensions.get( 'OES_standard_derivatives' )} instead.
- `supportsVertexTextures: () => any` — @deprecated Use {@link WebGLCapabilities#vertexTextures .capabilities.vertexTextures} instead.
- `toneMapping: "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" = "THREE.NoToneMapping"`
- `toneMappingExposure: number = 1`
- `vr: boolean` — @deprecated Use {@link WebGLRenderer#xr .xr} instead.
- `xr: WebXRManager`

### roundCrown

A copa redonda da referência (a árvore solitária na neblina).

- `add: (...object: Object3D<Object3DEventMap>[]) => Tree` — Adds another {@link Object3D} as child of this {@link Object3D}. @remarks An arbitrary number of objects may be added Any current parent on an {@link object } passed in here will be removed, since an {@link Object3D } can have at most one parent. @see {@link attach } @see {@link THREE.Group Group} for info on manually grouping objects. @param object
- `addEventListener: <T extends keyof Object3DEventMap>(type: T, listener: EventListener<Object3DEventMap[T], T, Tree>) => void` — Adds a listener to an event type. @param type The type of event to listen to. @param listener The function that gets called when the event is fired.
- `animations: AnimationClip[]` — Array with object's animation clips. @defaultValue `[]`
- `applyMatrix4: (matrix: Matrix4) => void` — Applies the matrix transform to the object and updates the object's position, rotation and scale. @param matrix
- `applyQuaternion: (quaternion: Quaternion) => Tree` — Applies the rotation represented by the quaternion to the object. @param quaternion
- `attach: (object: Object3D<Object3DEventMap>) => Tree` — Adds a {@link Object3D} as a child of this, while maintaining the object's world transform. @remarks Note: This method does not support scene graphs having non-uniformly-scaled nodes(s). @see {@link add } @param object
- `branches: { verts: any[]; normals: any[]; indices: any[]; uvs: any[]; windFactor: any[]; }`
- `branchesMesh: Mesh<BufferGeometry<NormalBufferAttributes>, Material | Material[], Object3DEventMap>`
- `branchQueue: Branch[]`
- `calculateTrellisForce: (position: Vector3, radius: number) => { direction: Vector3; strength: number; }` — Calculate the force vector toward the nearest trellis point @param position Current section position @param radius Current section radius @returns
- `castShadow: boolean` — Whether the object gets rendered into shadow map. @defaultValue `false`
- `children: Object3D<Object3DEventMap>[]` — Array with object's children. @see {@link THREE.Object3DGroup Group} for info on manually grouping objects. @defaultValue `[]`
- `clear: () => Tree` — Removes all child objects.
- `clone: (recursive?: boolean) => Tree` — Returns a clone of `this` object and optionally all descendants. @param recursive If true, descendants of the object are also cloned. Default `true`
- `copy: (object: Object3D<Object3DEventMap>, recursive?: boolean) => Tree` — Copies the given object into this object. @remarks Event listeners and user-defined callbacks ({@link .onAfterRender} and {@link .onBeforeRender}) are not copied. @param object @param recursive If set to `true`, descendants of the object are copied next to the existing ones. If set to `false`, descendants are left unchanged. Default is `true`.
- `createBranchesGeometry: () => void` — Generates the geometry for the branches
- `createLeavesGeometry: () => void` — Generates the geometry for the leaves
- `createTrellis: () => void` — Create or update the trellis geometry
- `dispatchEvent: <T extends keyof Object3DEventMap>(event: BaseEvent<T> & Object3DEventMap[T]) => void` — Fire an event type. @param event The event that gets fired.
- `frustumCulled: boolean` — When this is set, it checks every frame if the object is in the frustum of the camera before rendering the object. If set to `false` the object gets rendered every frame even if it is not in the frustum of the camera. @defaultValue `true`
- `generate: () => void` — Generate a new tree
- `generateBranch: (branch: Branch) => void` — Generates a new branch @param branch @returns
- `generateBranchIndices: (indexOffset: any, branch: Branch) => void` — Generates the indices for branch geometry @param branch
- `generateChildBranches: (count: number, level: number, sections: { origin: Vector3; orientation: Euler; radius: number; }[]) => void` — Generate branches from a parent branch @param count The number of child branches to generate @param level The level of the child branches @param sections The parent branch's sections @returns
- `generateLeaf: (origin: Vector3, orientation: Euler) => void` — Generates a leaves @param origin The starting point of the branch @param orientation The starting orientation of the branch
- `generateLeaves: (sections: { origin: Vector3; orientation: Euler; radius: number; }[]) => void` — Logic for spawning child branches from a parent branch's section @param sections The parent branch's sections @returns
- `getNearestTrellisPoint: (position: Vector3) => Vector3` — Find the nearest point on the trellis grid to a given position @param position @returns
- `getObjectById: (id: number) => Object3D<Object3DEventMap>` — Searches through an object and its children, starting with the object itself, and returns the first with a matching id. @remarks Note that ids are assigned in chronological order: 1, 2, 3, ..., incrementing by one for each new object. @see {@link id } @param id Unique number of the object instance. Expects a `Integer`
- `getObjectByName: (name: string) => Object3D<Object3DEventMap>` — Searches through an object and its children, starting with the object itself, and returns the first with a matching name. @remarks Note that for most objects the name is an empty string by default You will have to set it manually to make use of this method. @param name String to match to the children's Object3D.name property.
- `getObjectByProperty: (name: string, value: any) => Object3D<Object3DEventMap>` — Searches through an object and its children, starting with the object itself, and returns the first with a property that matches the value given. @param name - the property name to search for. @param value - value of the given property.
- `getObjectsByProperty: (name: string, value: any, optionalTarget?: Object3D<Object3DEventMap>[]) => Object3D<Object3DEventMap>[]` — Searches through an object and its children, starting with the object itself, and returns the first with a property that matches the value given. @param name The property name to search for. @param value Value of the given property. @param optionalTarget target to set the result. Otherwise a new Array is instantiated. If set, you must clear this array prior to each call (i.e., array.length = 0;).
- `getWorldDirection: (target: Vector3) => Vector3` — Returns a vector representing the direction of object's positive z-axis in world space. @param target The result will be copied into this Vector3.
- `getWorldPosition: (target: Vector3) => Vector3` — Returns a vector representing the position of the object in world space. @param target The result will be copied into this Vector3.
- `getWorldQuaternion: (target: Quaternion) => Quaternion` — Returns a quaternion representing the rotation of the object in world space. @param target The result will be copied into this Quaternion.
- `getWorldScale: (target: Vector3) => Vector3` — Returns a vector of the scaling factors applied to the object for each axis in world space. @param target The result will be copied into this Vector3.
- `hasEventListener: <T extends keyof Object3DEventMap>(type: T, listener: EventListener<Object3DEventMap[T], T, Tree>) => boolean` — Checks if listener is added to an event type. @param type The type of event to listen to. @param listener The function that gets called when the event is fired.
- `id: number` — Unique number for this {@link Object3D} instance. @remarks Note that ids are assigned in chronological order: 1, 2, 3, ..., incrementing by one for each new object. Expects a `Integer`
- `isGroup: true` — Read-only flag to check if a given object is of type {@link Group}. @remarks This is a _constant_ value @defaultValue `true`
- `isObject3D: true` — Flag to check if a given object is of type {@link Object3D}. @remarks This is a _constant_ value @defaultValue `true`
- `layers: Layers` — The layer membership of the object. @remarks The object is only visible if it has at least one layer in common with the {@link THREE.Object3DCamera Camera} in use. This property can also be used to filter out unwanted objects in ray-intersection tests when using {@link THREE.Raycaster Raycaster}. @defaultValue `new THREE.Layers()`
- `leaves: { verts: any[]; normals: any[]; indices: any[]; uvs: any[]; }`
- `leavesMesh: Mesh<BufferGeometry<NormalBufferAttributes>, Material | Material[], Object3DEventMap>`
- `loadFromJson: (json: TreeOptions) => void` — Loads a tree from JSON @param json
- `loadPreset: (name: any) => void` — Loads a preset tree from JSON @param preset
- `localToWorld: (vector: Vector3) => Vector3` — Converts the vector from this object's local space to world space. @param vector A vector representing a position in this object's local space.
- `lookAt: { (vector: Vector3): void; (x: number, y: number, z: number): void; }` — Rotates the object to face a point in world space. @remarks This method does not support objects having non-uniformly-scaled parent(s). @param vector A vector representing a position in world space to look at. @remarks This method does not support objects having non-uniformly-scaled parent(s). @param x Expects a `Float` @param y Expects a `Float` @param z Expects a `Float`
- `matrix: Matrix4` — The local transform matrix. @defaultValue `new THREE.Matrix4()`
- `matrixAutoUpdate: boolean` — When this is set, it calculates the matrix of position, (rotation or quaternion) and scale every frame and also recalculates the matrixWorld property. @defaultValue {@link DEFAULT_MATRIX_AUTO_UPDATE } - that is `(true)`.
- `matrixWorld: Matrix4` — The global transform of the object. @remarks If the {@link Object3D } has no parent, then it's identical to the local transform {@link THREE.Object3D.matrix .matrix}. @defaultValue `new THREE.Matrix4()`
- `matrixWorldAutoUpdate: boolean` — If set, then the renderer checks every frame if the object and its children need matrix updates. When it isn't, then you have to maintain all matrices in the object and its children yourself. @defaultValue {@link DEFAULT_MATRIX_WORLD_AUTO_UPDATE } - that is `(true)`.
- `matrixWorldNeedsUpdate: boolean` — When this is set, it calculates the matrixWorld in that frame and resets this property to false. @defaultValue `false`
- `modelViewMatrix: Matrix4` — @defaultValue `new THREE.Matrix4()`
- `name: string` — Optional name of the object @remarks _(doesn't need to be unique)_. @defaultValue `""`
- `normalMatrix: Matrix3` — @defaultValue `new THREE.Matrix3()`
- `onAfterRender: (renderer: WebGLRenderer, scene: Scene, camera: Camera, geometry: BufferGeometry<NormalBufferAttributes>, material: Material, group: Group<...>) => void` — An optional callback that is executed immediately after a 3D object is rendered. @remarks This function is called with the following parameters: renderer, scene, camera, geometry, material, group. Please notice that this callback is only executed for `renderable` 3D objects. Meaning 3D objects which define their visual appearance with geometries and materials like instances of {@link Mesh }, {@link Line }, {@link Points } or {@link Sprite }. Instances of {@link Object3D }, {@link Group } or {@link Bone } are not renderable and thus this callback is not executed for such objects.
- `onAfterShadow: (renderer: WebGLRenderer, scene: Scene, camera: Camera, shadowCamera: Camera, geometry: BufferGeometry<NormalBufferAttributes>, depthMaterial: Material, group: Group<...>) => void` — An optional callback that is executed immediately after a 3D object is rendered to a shadow map. @remarks This function is called with the following parameters: renderer, scene, camera, shadowCamera, geometry, depthMaterial, group. Please notice that this callback is only executed for `renderable` 3D objects. Meaning 3D objects which define their visual appearance with geometries and materials like instances of {@link Mesh }, {@link Line }, {@link Points } or {@link Sprite }. Instances of {@link Object3D }, {@link Group } or {@link Bone } are not renderable and thus this callback is not executed for such objects.
- `onBeforeRender: (renderer: WebGLRenderer, scene: Scene, camera: Camera, geometry: BufferGeometry<NormalBufferAttributes>, material: Material, group: Group<...>) => void` — An optional callback that is executed immediately before a 3D object is rendered. @remarks This function is called with the following parameters: renderer, scene, camera, geometry, material, group. Please notice that this callback is only executed for `renderable` 3D objects. Meaning 3D objects which define their visual appearance with geometries and materials like instances of {@link Mesh }, {@link Line }, {@link Points } or {@link Sprite }. Instances of {@link Object3D }, {@link Group } or {@link Bone } are not renderable and thus this callback is not executed for such objects.
- `onBeforeShadow: (renderer: WebGLRenderer, scene: Scene, camera: Camera, shadowCamera: Camera, geometry: BufferGeometry<NormalBufferAttributes>, depthMaterial: Material, group: Group<...>) => void` — An optional callback that is executed immediately before a 3D object is rendered to a shadow map. @remarks This function is called with the following parameters: renderer, scene, camera, shadowCamera, geometry, depthMaterial, group. Please notice that this callback is only executed for `renderable` 3D objects. Meaning 3D objects which define their visual appearance with geometries and materials like instances of {@link Mesh }, {@link Line }, {@link Points } or {@link Sprite }. Instances of {@link Object3D }, {@link Group } or {@link Bone } are not renderable and thus this callback is not executed for such objects.
- `options: TreeOptions`
- `parent: Object3D<Object3DEventMap>` — Object's parent in the {@link https://en.wikipedia.org/wiki/Scene_graph scene graph}. @remarks An object can have at most one parent. @defaultValue `null`
- `position: Vector3` — Object's local position. @defaultValue `new THREE.Vector3()` - that is `(0, 0, 0)`.
- `quaternion: Quaternion` — Object's local rotation as a {@link THREE.Quaternion Quaternion}. @defaultValue `new THREE.Quaternion()` - that is `(0,  0, 0, 1)`.
- `raycast: (raycaster: Raycaster, intersects: Intersection<Object3D<Object3DEventMap>>[]) => void` — Abstract (empty) method to get intersections between a casted ray and this object @remarks Subclasses such as {@link THREE.Mesh Mesh}, {@link THREE.Line Line}, and {@link THREE.Points Points} implement this method in order to use raycasting. @see {@link THREE.Raycaster Raycaster} @param raycaster @param intersects @defaultValue `() => {}`
- `receiveShadow: boolean` — Whether the material receives shadows. @defaultValue `false`
- `remove: (...object: Object3D<Object3DEventMap>[]) => Tree` — Removes a {@link Object3D} as child of this {@link Object3D}. @remarks An arbitrary number of objects may be removed. @see {@link THREE.Group Group} for info on manually grouping objects. @param object
- `removeEventListener: <T extends keyof Object3DEventMap>(type: T, listener: EventListener<Object3DEventMap[T], T, Tree>) => void` — Removes a listener from an event type. @param type The type of the listener that gets removed. @param listener The listener function that gets removed.
- `removeFromParent: () => Tree` — Removes this object from its current parent.
- `renderOrder: number` — This value allows the default rendering order of {@link https://en.wikipedia.org/wiki/Scene_graph scene graph} objects to be overridden although opaque and transparent objects remain sorted independently. @remarks When this property is set for an instance of {@link Group Group}, all descendants objects will be sorted and rendered together. Sorting is from lowest to highest renderOrder. @defaultValue `0`
- `rng: RNG`
- `rotateOnAxis: (axis: Vector3, angle: number) => Tree` — Rotate an object along an axis in object space. @remarks The axis is assumed to be normalized. @param axis A normalized vector in object space. @param angle The angle in radians. Expects a `Float`
- `rotateOnWorldAxis: (axis: Vector3, angle: number) => Tree` — Rotate an object along an axis in world space. @remarks The axis is assumed to be normalized Method Assumes no rotated parent. @param axis A normalized vector in world space. @param angle The angle in radians. Expects a `Float`
- `rotateX: (angle: number) => Tree` — Rotates the object around _x_ axis in local space. @param rad The angle to rotate in radians. Expects a `Float`
- `rotateY: (angle: number) => Tree` — Rotates the object around _y_ axis in local space. @param rad The angle to rotate in radians. Expects a `Float`
- `rotateZ: (angle: number) => Tree` — Rotates the object around _z_ axis in local space. @param rad The angle to rotate in radians. Expects a `Float`
- `rotation: Euler` — Object's local rotation ({@link https://en.wikipedia.org/wiki/Euler_angles Euler angles}), in radians. @defaultValue `new THREE.Euler()` - that is `(0, 0, 0, Euler.DEFAULT_ORDER)`.
- `scale: Vector3` — The object's local scale. @defaultValue `new THREE.Vector3( 1, 1, 1 )`
- `setRotationFromAxisAngle: (axis: Vector3, angle: number) => void` — Calls {@link THREE.Quaternion.setFromAxisAngle setFromAxisAngle}({@link axis}, {@link angle}) on the {@link quaternion.quaternion}. @param axis A normalized vector in object space. @param angle Angle in radians. Expects a `Float`
- `setRotationFromEuler: (euler: Euler) => void` — Calls {@link THREE.Quaternion.setFromEuler setFromEuler}({@link euler}) on the {@link quaternion.quaternion}. @param euler Euler angle specifying rotation amount.
- `setRotationFromMatrix: (m: Matrix4) => void` — Calls {@link THREE.Quaternion.setFromRotationMatrix setFromRotationMatrix}({@link m}) on the {@link quaternion.quaternion}. @remarks Note that this assumes that the upper 3x3 of m is a pure rotation matrix (i.e, unscaled). @param m Rotate the quaternion by the rotation component of the matrix.
- `setRotationFromQuaternion: (q: Quaternion) => void` — Copy the given {@link THREE.Quaternion Quaternion} into {@link quaternion.quaternion}. @param q Normalized Quaternion.
- `toJSON: (meta?: JSONMeta) => Object3DJSON` — Convert the object to three.js {@link https://github.com/mrdoob/three.js/wiki/JSON-Object-Scene-format-4 JSON Object/Scene format}. @param meta Object containing metadata such as materials, textures or images for the object.
- `translateOnAxis: (axis: Vector3, distance: number) => Tree` — Translate an object by distance along an axis in object space @remarks The axis is assumed to be normalized. @param axis A normalized vector in object space. @param distance The distance to translate. Expects a `Float`
- `translateX: (distance: number) => Tree` — Translates object along x axis in object space by {@link distance} units. @param distance Expects a `Float`
- `translateY: (distance: number) => Tree` — Translates object along _y_ axis in object space by {@link distance} units. @param distance Expects a `Float`
- `translateZ: (distance: number) => Tree` — Translates object along _z_ axis in object space by {@link distance} units. @param distance Expects a `Float`
- `traverse: (callback: (object: Object3D<Object3DEventMap>) => any) => void` — Executes the callback on this object and all descendants. @remarks Note: Modifying the scene graph inside the callback is discouraged. @param callback A function with as first argument an {@link Object3D } object.
- `traverseAncestors: (callback: (object: Object3D<Object3DEventMap>) => any) => void` — Executes the callback on all ancestors. @remarks Note: Modifying the scene graph inside the callback is discouraged. @param callback A function with as first argument an {@link Object3D } object.
- `traverseVisible: (callback: (object: Object3D<Object3DEventMap>) => any) => void` — Like traverse, but the callback will only be executed for visible objects @remarks Descendants of invisible objects are not traversed. Note: Modifying the scene graph inside the callback is discouraged. @param callback A function with as first argument an {@link Object3D } object.
- `trellisMesh: Trellis`
- `triangleCount: number`
- `type: string` — A Read-only _string_ to check `this` object type. @remarks This can be used to find a specific type of Object3D in a scene. Sub-classes will update this value. @defaultValue `Object3D`
- `up: Vector3` — This is used by the {@link lookAtlookAt} method, for example, to determine the orientation of the result. @defaultValue {@link DEFAULT_UP Object3D.DEFAULT_UP} - that is `(0, 1, 0)`.
- `update: (elapsedTime: any) => void`
- `updateMatrix: () => void` — Updates local transform.
- `updateMatrixWorld: (force?: boolean) => void` — Updates the global transform of the object. And will update the object descendants if {@link matrixWorldNeedsUpdate.matrixWorldNeedsUpdate} is set to true or if the {@link force} parameter is set to `true`. @param force A boolean that can be used to bypass {@link matrixWorldAutoUpdate .matrixWorldAutoUpdate}, to recalculate the world matrix of the object and descendants on the current frame. Useful if you cannot wait for the renderer to update it on the next frame, assuming {@link matrixWorldAutoUpdate .matrixWorldAutoUpdate} set to `true`.
- `updateWorldMatrix: (updateParents: boolean, updateChildren: boolean) => void` — Updates the global transform of the object. @param updateParents Recursively updates global transform of ancestors. @param updateChildren Recursively updates global transform of descendants.
- `userData: Record<string, any> = "`{}`"` — An object that can be used to store custom data about the {@link Object3D}. @remarks It should not hold references to _functions_ as these **will not** be cloned.
- `uuid: string` — {@link http://en.wikipedia.org/wiki/Universally_unique_identifier UUID} of this object instance. @remarks This gets automatically assigned and shouldn't be edited.
- `vertexCount: number`
- `visible: boolean` — Object gets rendered if `true`. @defaultValue `true`
- `worldToLocal: (vector: Vector3) => Vector3` — Converts the vector from world space to this object's local space. @param vector A vector representing a position in world space.
- `customDepthMaterial?: Material` — Custom depth material to be used when rendering to the depth map. @remarks Can only be used in context of meshes. When shadow-casting with a {@link THREE.DirectionalLight DirectionalLight} or {@link THREE.SpotLight SpotLight}, if you are modifying vertex positions in the vertex shader you must specify a customDepthMaterial for proper shadows. @defaultValue `undefined`
- `customDistanceMaterial?: Material` — Same as {@link customDepthMaterial}, but used with {@link THREE.Object3DPointLight PointLight}. @defaultValue `undefined`

### FogTree

- `children?: any` — Camada por cima da cena, para o texto da seção. Função recebe o progresso efetivo (já com mola no modo `scroll`), para o texto chegar junto da câmera. A camada é `pointer-events: none` — dê `pointer-events-auto` ao que clica.
- `draggable?: boolean` — Girar arrastando. Padrão: só com ponteiro fino (mouse, caneta).
- `fog?: { start?: number; end?: number; }` — Densidade da névoa no começo e no fim do progresso. ~0.5 a 1.5.
- `grain?: number = 0.05` — Grão de película.
- `ink?: string = "var(--foreground)"` — Cor das sombras. O padrão é o token de texto.
- `paper?: string = "var(--background)"` — Cor das luzes. Qualquer cor CSS; o padrão é o token de fundo.
- `preset?: "Ash Small" | "Ash Medium" | "Ash Large" | "Aspen Small" | "Aspen Medium" | "Aspen Large" | "Bush 1" | "Bush 2" | "Bush 3" | "Oak Small" | "Oak Medium" | "Oak Large" | "Pine Small" | "Pine Medium" | "Pine Large" = "Oak Medium"` — Espécie (preset do ez-tree). O `Oak Medium` ganha a copa redonda.
- `progress?: number | MotionValue<number>` — Progresso 0..1 da caminhada: 0 é a árvore inteira ao longe, 1 é a câmera debaixo da copa com a névoa aberta. Número ou `MotionValue` (o de um `useScroll` seu, por exemplo). Ignorado com `scroll`.
- `scroll?: boolean = false` — Prende o progresso ao scroll da própria seção: a peça vira uma `<section>` com `scrollLength` de altura e o palco fica preso (sticky) na tela.
- `scrollLength?: string = "220vh"` — Altura da seção no modo `scroll`. Quanto maior, mais lenta a caminhada.
- `seed?: number = 4242` — Semente do ez-tree. Mesma semente, mesma árvore — em toda visita.
- `trail?: number = 0.86` — Rastro de longa exposição. 0 desliga.
