Valheim
You are viewing a potentially older version of this package. View Latest Version
Install with App

Details

Date Uploaded
4 days ago
Downloads
400
Size
2.5MB
ADDatHost Valheim hosting
30% off

Immersive Camera Enhanced

Current release: 1.3.2

Camera collision uses a mod-owned finite cylinder in third person, with a fixed uniform 0.3 m diameter and flat ends at the character and camera. Collision applies the safe contact distance immediately; outward recovery follows Camera Return Smooth Speed (m/s). For a stationary body/view, the shortest cylinder sample is retained while its contact or expanded release volume remains blocked. Mouse direction and player translation sample the current geometry immediately; a fully clear cylinder releases the hold. The optional zoom cut uses the same cylinder contact.

Advanced Camera works with custom or native collision and keeps its selected indoor orbit within 3 m. Advanced Height always limits its requested vertical travel to a fixed 50% of shared free floor-to-ceiling space, then collision retracts along the route toward the character. First person retains the render-frame eye pivot, character visibility handling, optional crouch/head-bob animation, and Alt free look.

Disable Enable New Camera Collision or enable Disable New Camera Collision under Building Hammer Behavior to restore Valheim's original collision. BetterDiving-aware water behavior and V1 vegetation culling remain active.

Immersive Camera Enhanced reduces third-person camera jolts caused by trees, bushes, and other natural vegetation between the Viking and the camera. When the path contains only vegetation, the camera recovers its selected distance and the blocking elements are hidden during rendering only.

Quick start

  • Scroll to adjust the normal third-person distance. If vanilla first person is enabled, scrolling to the 0.5 m minimum enters first person; scroll outward to return. While holding the building hammer, camera-distance scrolling is blocked by default, while construction-piece rotation remains available.
  • Hold Mouse4 and scroll to zoom in or out. Releasing Mouse4 resets the temporary zoom.
  • Hold Left Alt to look around without changing the character's movement heading. Release it to return to the view from when Alt was pressed.
  • The new camera collision automatically yields to Valheim's original collision while the building hammer is held. Other hammer-specific feature toggles remain available in 05 - Building Hammer Behavior.
  • Open BepInEx Configuration Manager to enable features and tune their settings. Configuration Manager is optional; the same settings can be edited in the BepInEx .cfg file.

Features

  • Removes vegetation interference with camera collision without removing the game's collider.
  • Keeps tree cutting, gathering, combat, and interactions intact.
  • Hides only the vegetation texture that blocks the camera, preserving shadow casting and restoring the material as soon as the path is clear.
  • Uses one physical, world-space cylinder profile from the character center through the camera and beyond it. The apex near the character center closes to zero width; the radius reaches the configured screen percentage at the camera and grows again toward a rear tip. Vegetation is hidden only when its collider or visual geometry touches this cylinder.
  • Grass, ground leaves, and small bushes remain visible and are excluded from the tree occlusion pass to avoid unnecessary per-frame work.
  • Optional CullHousePillars hides player-built support pillars and stone arches that enter the cylinder, with a separate camera-collision toggle for those pieces. V1 never hides walls, foundations, floors, ceilings, or roofs.
  • Third-person collision uses a closed convex mesh cylinder made by the mod, not Valheim's camera collision probe. It runs from the eye pivot to the camera position and has flat circular ends; neither end extends beyond that segment. A collision places the camera on the character side with a small surface gap. Outdoors, the contact distance applies immediately, with only outward recovery using the configured speed. The selected zoom changes only when the optional collision cut qualifies. The local player and configured pass-through objects are filtered.
  • The custom cylinder is anchored to the character eye even when the third-person camera pivot is offset. Its cross-section is fixed and uniform; progressive thickness configuration is removed.
  • The temporary vanilla-placement comparison toggle is removed. The new cylinder uses its own character-side placement; disabling new collision still restores the real native collision.
  • Small radial cylinder-contact variations remain latched while current mouse direction stays immediate, including cramped contacts.
  • Holding the building hammer or disabling Enable New Camera Collision restores vanilla collision.
  • Show Camera Collision Volume draws the active custom cylinder or the actual native ray/sphere probes in pink. Show Camera Collision Colliders draws every collider touched in the last 30 seconds, expiring each outline from its latest contact. Native debug wraps existing queries without adding more physics checks.
  • Native Hammer construction colliders are fitted to the opaque highest-detail model geometry and the native crystal wall, including wear variants. Stone walls use a common envelope for their visible variations. Collider centres and dimensions change without scaling the visible models. Openings and compound partitions remain intact; actual roofs, tables, small props, and mod pieces are excluded. Original prefabs remain unchanged. Plans are prepared once per prefab and reused by native placed instances verified through their network identity, with no geometry measurement in camera frames. Both camera collision modes use the corrected colliders and retain their configured ignore policies. Disabling the mod restores the original geometry. See the construction collider audit for coverage and preserved parts.
  • Optional camera-collision bypasses let the camera pass through vegetation, support pillars, stone arches, chests and storage containers, wall sconces, torches, light fixtures, tables, and the active hammer placement preview. Walls, floors, roofs, terrain, mountain rocks, boulders, and ores remain solid.
  • The camera can follow the player below the water surface while the local character is swimming. When the player is not swimming, Valheim's water-level clamp keeps the camera above the surface. Swimming state comes from the game's Character.IsSwimming() method, so compatible swimming changes such as BetterDiving remain authoritative. Water does not enter vegetation-culling candidates, and the local character is always protected from V1 hiding.
  • Separate day, night, and fog/cave brightness controls adjust Valheim's environment lighting and shader ambient color without changing world simulation. Signed values can darken the scene or apply stronger HDR brightness above 100%.
  • Optional client-only first-person mode enters when the scroll reaches the minimum zoom and returns to third person when the scroll increases distance. It keeps Valheim's camera and model visibility and anchors the view at the render-frame character eye.
  • Optional first-person camera sway rotates the view without moving the camera position, with a moderate pitch and roll response tuned to remain comfortable.
  • Optional first-person camera animations smoothly lower the view by 30% of the character height while crouching and add a subtle vertical head bob while walking.
  • Optional first- and third-person FOV adjustments have independent enable toggles.
  • First-person camera yaw turns the local character with the view.
  • Hold-to-zoom magnifies the image toward the crosshair in both first and third person. The scroll wheel changes magnification while the key is held; releasing it restores the normal FOV. The wheel does not change camera distance during zoom. Building-hammer behavior is independently configurable for Camera Cull, Camera Collision, Camera Improvements, and the damage indicator.
  • Camera Base Position offers a toggle and a third-person vertical Y pivot offset in metres relative to the camera's orbit yaw, so character movement and turning do not drag the offset around. The configured offset blends from 0% at 1 m camera distance to 100% at the configured distance (6 m by default), then stays at full strength. Collision checks use the shifted pivot, and the offsets are ignored in first person. Pivot movement never adds camera yaw or pitch; the vanilla player look direction remains authoritative for the view and aim.
  • Optional Alt free look lets the camera look around independently while the configured key is held, preserving the character's movement heading even while WASD and other keys are pressed. It uses raw mouse input while Alt is held; after release, the camera returns smoothly to the view captured when Alt was pressed.
  • Optional Advanced Camera operates while the player is sheltered beneath a nearby construction ceiling, with a three-metre indoor limit. It works with custom or native collision. Without Height Clearance, the camera stays at the head pivot while pitch rotates the view. With Height Clearance enabled, Advanced Height always uses a fixed 50% of the shared free floor-to-ceiling space. This limit has no percentage setting and is used only by Advanced Height. Collision retracts along the route toward the character; only outward release retains the configured return speed. The custom cylinder handles contact after Advanced Camera applies its height and orbit rules.
  • Optional damage-direction arrow: one local-only 3D marker appears beside the character's shoulder in third person and at a fixed camera-relative position in first person. It rotates horizontally and vertically to point toward the attacker or incoming hit direction. When an attacker can be resolved, the arrow refreshes its bearing every 0.5 seconds by default while visible; the update interval can be configured. First- and third-person arrow sizes have independent settings, can be reduced as low as 0.01, and the first-person default is 0.25. Fall and drowning damage do not display an arrow.
  • An optional camera-distance HUD appears when scroll changes the selected distance or an outward scroll reaches the indoor or configured maximum. Wall contact changes only the current camera position, not the displayed selection. The background-free label hides after two seconds, has a configurable position, and follows the game language.
  • Configurable lists of vegetation names and protected objects.
  • Runs locally on the client and does not change saved construction dimensions or server physics. Corrected physical construction colliders also affect local player and projectile contacts.

Feature demonstrations

Short demonstrations of the main camera features:

Pillar pass-through and camera smoothing

Pillar pass-through and smooth camera

Tree culling and Leaves Only while moving toward the camera

Tree culling and Leaves Only

Configurable camera distance

Camera distance

Hold-to-zoom

Camera zoom

Vanilla first person

First-person camera

Requirements

  • BepInExPack Valheim.
  • Valheim updated to the version supported by the installed BepInEx pack.

r2modman or another mod manager is optional. Install this mod only on the client that wants the visual adjustment; other players do not need it.

Installation

Using r2modman

  1. Open your Valheim profile in r2modman.
  2. On the Online tab, search for ImmersiveCameraEnhanced and click Download.
  3. Open Installed and confirm that the mod is enabled.
  4. Start the game with Start modded.

Manual installation

  1. In Steam, right-click Valheim and choose Properties → Installed Files → Browse.
  2. Extract the package into Valheim/BepInEx/plugins/ImmersiveCameraEnhanced/.
  3. Start the game once so the configuration file is created.

The generated file is located at:

Valheim/BepInEx/config/com.kimbauer.valheim.cameracull.cfg

Configuration

Options appear in BepInEx Configuration Manager, when it is installed, or can be edited directly in the .cfg file.

Configuration Manager keeps each feature in one section. Its enable switches appear first, followed by related settings grouped in feature order. Camera Improvements, Camera Collision, Camera Cull, and the damage indicator no longer create nested adjustment sections. The file sections remain backward-compatible with earlier releases. Display names are shown in English, while the configuration keys stay stable for existing profiles. Brightness and camera-distance preferences are client-only; they are applied locally even when the server exposes its own camera settings. All visible numeric entries use bounded sliders; the old numeric migration keys remain hidden from the interface.

Camera occlusion

  • EnableMod: global master switch. When false, all visual culling and camera-collision filtering are inactive and any temporary renderer state is restored.
  • EnableCameraCull: V1 cylinder visual culling toggle. When false, the cylinder query is disabled while the camera-collision toggles remain available as long as EnableMod is enabled.
  • CylinderCameraWidthPercent: width of the end near the camera as a percentage of the visible screen width. The default 25 corresponds to 25% of the screen. The value is converted to metres using the current FOV and live character-to-camera distance; the volume starts at the real lens position so it also covers trees immediately between the camera and the character. The character-side end closes to zero width.
  • Trees whose owning root is on the far side of the character are ignored even when their broad leaf bounds graze the cylinder; this keeps foliage in front of the character visible.
  • ConeCharacterDistance (shown as Cylinder Character Distance): distance from the character center to the cylinder apex in metres (default 0.5). The apex is placed on the camera-facing side of the center, so the cylinder points at the character center instead of using the head bone.
  • CullHousePillars: includes player-built support pillars and stone arches that touch the cylinder. It is enabled by default. IgnoreHousePillarCollision separately controls whether the camera can pass through those supports. V1 explicitly protects boat renderers and colliders, including tagged/modded vessels and masts that resemble pillars.
  • LeavesOnly: hides the recognised leaf renderers for a complete large tree while keeping its trunk and branches visible. When a tree exposes leaf and trunk material submeshes in one renderer, the mod temporarily removes only the leaf submeshes. Grass and small bushes are excluded from visual culling. It is disabled by default. MovementLeavesOnly temporarily uses this same leaf-only mode while the character walks toward the camera. It requires consecutive movement samples and rejects abrupt position corrections, avoiding scene scans and dedicated-server query spikes. Tree trunks, branches, support pillars, and stone arches are restored while this temporary mode is active. MovementLeavesOnlyActivationDelay controls how long the character must keep walking toward the camera before the temporary leaf-only view begins (default 0.5 seconds). Moving away or stopping before the delay expires cancels activation.
  • EnableCameraDistanceLimits: enables the player and boat maximum-distance sliders; enabled by default.
  • ThirdPersonCameraDistance: hard local maximum character camera distance in metres (default 6, range 1 to 35). It caps the live distance after camera updates and overrides server or other-mod values while preserving vanilla camera rotation and steering.
  • BoatCameraDistance: local maximum camera distance while attached to or controlling a boat or raft, in metres (default 6, range 1 to 35). It caps both boat-camera limits and the live distance while attached or steering, overriding server or other-mod values; it never limits the on-foot camera.
  • EnableThirdPersonCameraFov and EnableFirstPersonCameraFov: independently enable each camera-mode FOV adjustment; both default to enabled.
  • ThirdPersonCameraFov: local third-person field of view in degrees (default 80, range 30 to 120). It updates immediately while playing or editing the setting in Configuration Manager.

Camera improvements

  • 05 - Building Hammer Behavior: separate Disable ... While Building Hammer Equipped toggles control Camera Cull, Camera Improvements, and the damage indicator independently. The new camera-collision feature always restores Valheim's original collision while the hammer is held. Brightness is unaffected. The legacy all-or-nothing setting is retained only to initialize these options on existing profiles.

  • BlockCameraDistanceScrollWhileBuildingHammerEquipped: enabled by default. Prevents the wheel from changing camera distance while the building hammer is held; the construction system still receives wheel input to rotate pieces. This control is independent of the feature-disable toggles.

  • EnableFirstPersonCamera: enables the vanilla first-person view when the scroll reaches the 0.5 metre minimum through an explicit scroll input. Camera collision alone cannot activate it. Scrolling away from that boundary returns to third person through Valheim's normal camera logic. It is enabled by default and applied only on the local client. V1 occlusion is disabled while this view is active.

  • EnableFirstPersonCameraSway: rotates the first-person view with a lightweight movement sway while leaving the camera position unchanged. Enabled by default.

  • EnableFirstPersonCameraAnimations: enables local first-person camera animation. While the character is crouching, the camera smoothly lowers by 30% of the character height; walking also adds a subtle vertical head bob. Enabled by default.

  • FirstPersonCameraFov: local first-person field of view in degrees (default 80, range 30 to 120). It is applied only while vanilla first person is active and updates while the Configuration Manager is open. Saved values of the previous default (65) migrate to 80.

  • Turning the first-person camera also turns the local character. Roll direction follows the current movement direction while first person is active.

  • EnableCameraZoom: enables the temporary hold-to-zoom feature (enabled by default).

  • EnableCameraBasePosition: enables third-person camera pivot offsets (enabled by default). CameraBasePositionY moves it vertically in metres (-2 to +10). Offset strength blends linearly from 0% at 1 metre to 100% at CameraBasePositionFullStrengthDistance (default 6 metres), then stays full. First person is unchanged, and collision response still moves the camera toward the character.

  • EnableAutomaticCrosshairPosition: enabled by default. In third person, projects the character's current aim point onto the screen and shifts the HUD crosshair to account for the camera pivot offset. This keeps the reticle aligned without changing camera rotation; the vanilla first-person crosshair position is restored automatically.

  • CameraBasePositionFullStrengthDistance: distance in metres where the Y pivot offset reaches full strength (default 6, range 2–20).

  • CameraZoomKey: key held for zooming, defaulting to Mouse4 (Mouse3 in Unity's key names).

  • CameraZoomDefaultMagnification: initial optical zoom factor (default 2×).

  • CameraZoomMagnificationStep: zoom factor added per scroll notch (default 0.5×).

  • CameraZoomMaxMagnification: maximum optical zoom factor (default 20×, configurable up to 40×). Zoom works in first and third person, leaves camera distance unchanged, reduces mouse sensitivity with magnification while consuming each frame's mouse input directly. Its hammer behavior follows the independent Camera Improvements toggle.

  • CameraZoomSmoothSpeed: speed of the smooth optical zoom transition (default 14).

  • CameraZoomMouseSensitivityFactor: multiplier for zoomed mouse sensitivity (default 0.20, where lower values slow the view further). The factor is applied to the magnification curve and is consumed from the normal gameplay mouse-input path.

  • EnableCameraDistanceSmoothing: enables smooth third-person camera-distance transitions; enabled by default.

  • CameraDistanceSmoothSpeed: speed of the smooth normal third-person distance transition after scrolling (default 4). Existing profiles still set to the former default 12 migrate to 4.

  • EnableCameraScrollDistanceStep: toggles the configured per-notch distance behavior; enabled by default.

  • CameraScrollDistanceStepMeters: normal camera-distance change per wheel notch in metres (default 2, range 0.1 to 10). This also determines the scroll step used by the first-person boundary; the wheel used while holding the optical-zoom key remains separate.

  • EnableFirstPersonFreeLook: enables Alt free look without changing the character's movement direction. While the key is held, the camera follows raw mouse input; its smooth return starts only after release. Enabled by default.

  • FirstPersonFreeLookKey: key held for free look, defaulting to Left Alt. Horizontal look is limited to 120 degrees to either side of the character's forward direction; vertical look is limited to 90 degrees up or down. Other movement keys can be held at the same time.

  • EnableAdvancedCamera: checks for a nearby construction ceiling while Valheim reports that the player is sheltered. Indoors, it caps the scrollable and live third-person distance at 3 metres. Wall collision brings the camera toward the player without entering first person; the camera keeps the mouse-selected height when the solid path and available room allow it. The mode ends immediately outdoors. Whether it pauses while holding the building hammer is controlled by the Camera Improvements toggle above. Enabled by default.

  • AdvancedCameraActivationInterval: interval in seconds between ceiling checks while Advanced Camera is inactive (default 1).

  • AdvancedCameraDeactivationInterval: interval in seconds between ceiling checks while Advanced Camera is active (default 3).

  • AdvancedCameraScrollDistanceStepMeters: separate distance per scroll notch when Advanced Camera is active (default 0.75 m, range 0.05–3 m). Uses EnableCameraScrollDistanceStep; the selected indoor distance remains capped at 3 m. Normal and optical-zoom scrolling keep their own values.

  • EnableAdvancedCameraHeightClearance: enables mouse-selected vertical travel (enabled by default). Advanced Height always limits the requested destination to a fixed 50% of shared free floor-to-ceiling space, without a percentage config. Contact shortens the 3D route to that destination toward the character and cannot expand the selected orbit.

  • EnableAdvancedCameraEdgeClearance: keeps a rounded safety margin around wall corners, raised obstacles, and changes in floor or ceiling height while Advanced Camera is active indoors. Enabled by default.

  • AdvancedCameraHeightFreedomPercent: vertical mouse travel as a percentage of the selected indoor distance (default 60%, range 0–100%), shown as Advanced Camera Vertical Travel (%). The fixed 50% floor-to-ceiling rule limits the requested height before camera collision runs. 0% holds head height; 100% requests up to the selected distance vertically where space permits.

  • ShowCameraDistanceHud: shows the selected camera distance after scroll changes it or when outward scroll is blocked by a camera-distance limit. Wall contact does not change that distance; the HUD hides after two seconds without a change or further scroll attempt (enabled by default).

  • CameraDistanceHudX and CameraDistanceHudY: position the HUD as percentages of screen width from the left and screen height from the top (defaults 50 and 75).

  • BackCylinderLength: additional cylinder length beyond the camera in metres. The single cylinder starts near the character center and ends this far past the camera (default 10).

  • ConeGrowthExponent (shown as Cylinder Growth Exponent): non-linear radius curve. 1 is linear; values above 1 keep the cylinder narrow during the first metres and expand it rapidly near the camera and rear tip (default 2.4).

  • CylinderSlicesPerMeter: number of stable profile cuts per metre. This creates the configurable stepped “zip” profile without making the culling query more frequent.

  • CylinderExponentInfluencePercent: how strongly the growth exponent changes each profile cut. 0 is linear; 100 applies the full exponent.

  • CylinderCheckInterval: slider for the interval between the expensive cylinder contact checks, in seconds. The cylinder transform still follows the camera every frame; only renderer overlap sampling is throttled. The default is 0.60 seconds.

  • CylinderRestoreDelay: slider controlling how long an object must remain outside the cylinder before its renderer is restored. The default is 0.60 seconds; 0 restores immediately.

  • CylinderVerticalFlattenPercent: slider that removes the upper portion of the cylinder cross-section after the growth exponent is applied. The migrated default is 30, which avoids hiding objects above the view path.

  • CylinderFlattenBottom: when enabled, applies the same vertical flattening limit to the lower side of the cylinder. It is disabled by default, preserving the original upper-only behavior.

  • CylinderHorizontalFlattenPercent: slider that narrows the horizontal width of the grown cylinder. 0 keeps the full width; higher values make the cylinder narrower.

  • ConeRearRadiusMultiplier (shown as Cylinder Rear Radius Multiplier): radius at the rear tip relative to the camera radius (default 1.75).

  • PreserveVegetationShadows: uses ShadowsOnly, removing the texture while keeping shadows.

  • IgnoreVegetationCollision: lets the custom camera cylinder pass through recognized trees, leaves, and other vegetation. It does not disable their gameplay colliders. Enabled by default.

  • IgnoreHousePillarCollision: allows the camera to pass through player-built support pillars and stone arches. Enabled by default. It does not affect wooden walls, foundations, floors, ceilings, roofs, terrain, mountain rocks, boulders, or ores.

  • IgnoreHouseLightCollision: allows the camera to pass through wall sconces, every torch variant, lanterns, braziers, candles, fireplaces, similar light fixtures, and player-built tables. Enabled by default. The configuration key remains unchanged for compatibility.

  • The currently selected hammer placement preview never blocks the camera. It is identified from the local player's actual placement ghost, so the same piece becomes solid or follows its configured prop category after construction.

  • IgnoreEntityCollision: allows the camera to pass through players, animals, enemies, fish, and other entity colliders. Enabled by default.

  • IgnoreBoatCollision optionally ignores recognized native or modded boats, including masts; it is disabled by default and never changes boat/player physics. Otherwise boat colliders are solid.

  • EnableNewCameraCollision: enables the custom third-person cylinder. When off or while the building hammer disables it, native collision runs. Advanced Camera still works with native collision.

  • UseVanillaCylinderRepositioning is retired and its saved key is removed on startup.

  • The camera-side cylinder diameter is fixed to the validated profile's -0.7 m offset: 0.3 m diameter / 0.15 m radius. CameraCylinderCameraSideDiameterOffset and the two legacy diameter keys are removed.

  • EnableCameraCylinderProgressiveGrowth is removed. The calibrated collision cylinder is uniform.

  • Temporary cylinder calibration controls are now fixed to the validated profile and removed from Configuration Manager and the config file. Offsets still use camera-view axes, so turning the character independently cannot rotate them. The retired keys and fixed values are:

    Retired key Fixed value
    CameraCylinderCharacterTipX 0 m
    CameraCylinderCharacterTipY -0.7 m
    CameraCylinderCharacterTipZ 0 m
    CameraCylinderCameraEndOffset 0 m
    CameraCylinderCharacterSideWidthPercent 0%
    CameraCylinderGrowthExponent 2.4
    CameraCylinderVerticalFlattenPercent 0%
    CameraCylinderFlattenBottom false
    CameraCylinderHorizontalFlattenPercent 0%

    Collision return speed remains configurable. Startup also removes retired orphaned entries from older BepInEx profiles.

  • CameraGroundCollisionMinimumDistancePercent: legacy floor-orbit setting retained in the file for compatibility and hidden in Configuration Manager. It does not control current collision placement.

  • EnableCollisionDistanceTransition: enable or disable the collision-driven zoom cut. When enabled, the cut is committed only after two seconds of stable contact, and the shortest safe distance in the stable window is selected. Percentage and metre thresholds are checked against the distance that will actually be committed after minimum-zoom clamping. Readings may vary by up to 5 m without restarting the timer. The committed result is clamped to the configured cut floor.

  • When both EnableCollisionDistanceTransition and ShowCameraDistanceHud are enabled, the distance HUD marks a committed collision cut with a small inward-arrow icon beside the distance.

  • CollisionDistanceMinimumPercent / Minimum Distance After Cut (%): lower bound of the committed zoom, calculated from the configured maximum camera distance (default 10%, range 0–100%). With a 35 m maximum, a cut cannot select less than 3.5 m, even if the current zoom is 10 m. Physical collision may temporarily move the rendered camera closer without lowering this selected zoom floor.

  • CollisionDistanceMinimumAbsoluteReduction: the committed cut must shorten the selected distance by at least this many metres after zoom-floor clamping (default 2 m, range 0–50 m).

  • CameraCollisionRecoverySpeed: speed for returning to the saved zoom after contact clears (default 20 m/s, range 0.1–30 m/s). The camera waits briefly for a clear path and checks each outward cylinder step. Inward placement applies immediately, without a timed transition or a mouse-position filter.

  • In first person, the local character renderers are hidden while the mode is active and their original visibility is restored when returning to third person or disabling the mod.

  • The new cylinder always moves to a safe point and keeps structural surfaces solid.

  • EnableDamageDirectionIndicator: shows a local-only 3D arrow for incoming damage in both camera modes. In third person it orbits the player; in first person it stays at a fixed camera position while rotating in all three dimensions. The marker has no physics or network object. Enabled by default.

  • DamageDirectionIndicatorPointToSource: prioritizes the attacker as the arrow direction when available; enabled by default. Disable it to use the hit direction/impact point instead.

  • DamageDirectionIndicatorDuration: how long the damage arrow stays visible (default 4 seconds, range 0.5 to 10).

  • DamageDirectionIndicatorSourceUpdateInterval: how often to refresh the arrow toward a moving attacker while visible (default 0.5 seconds, range 0.1 to 5). This reuses the attacker resolved at hit time; when no attacker object is available, the arrow uses the incoming hit direction instead.

  • DamageDirectionIndicatorSize: third-person arrow size multiplier (default 0.45, range 0.01 to 2).

  • DamageDirectionIndicatorFirstPersonSize: first-person arrow size multiplier (default 0.25, range 0.01 to 2).

  • Damage indicator settings use 40 - Damage Direction Indicator and its single Adjustments subsection in Configuration Manager. That subsection controls duration, attacker update interval, independent arrow sizes, RGB color, and separate third- and first-person positions. The default color is muted brick red with a dark outline. Debug is the final section; detection rules are fixed and have no user-configurable section.

  • EnableBrightnessAdjustment: enables the local render-only brightness feature (off by default).

  • DayBrightnessPercent (shown as Day Brightness): signed daylight adjustment from -100 to 300; the default is 0.

  • NightBrightnessPercent (shown as Night Brightness): signed adjustment at night and in always-dark environments, from -100 to 300; the migrated default is 25.

  • FogCaveBrightnessPercent (shown as Fog & Cave Brightness): signed adjustment in dense fog, mist, caves, crypts, mines, and dungeons, from -100 to 300; the migrated default is 25. Brightness is applied locally on each client after Valheim writes the final environment lighting, fog, and ambient shader color. Negative values darken, 0 preserves vanilla brightness, and values above 100 increase HDR exposure beyond the original range. Server-side environment settings do not override these client values.

Cylinder contact checks run on the configurable throttled cadence while its transform follows the camera every frame. V1 only classifies colliders returned by the local camera volume; it does not scan every renderer loaded in the scene. Collider and hierarchy results are cached between queries, and exit hysteresis prevents foliage from flickering on transient physics misses. Young trees and saplings use a ground-anchored upright detection volume with a fixed height of six metres and three times their original horizontal radius, capped to a normal-tree-sized local probe. A collider hit resolves the complete young-tree root, so normal culling hides the same visual group already recognised by Leaves Only. This does not change gameplay physics or create a global tree scan. When VerboseLogging is enabled, Immersive Camera Enhanced emits one aggregate V1 status line every 15 seconds and reports at most 32 previously unknown camera-path colliders per scene, so diagnostics do not flood the Unity console. Per-renderer hide/restore messages are intentionally not written from the culling hot path. Each status line includes CPU percentage, process thread count, frame time, stopwatch ticks, GC collection counts, last and peak V1 query time in milliseconds, managed and Unity allocated memory in MiB, and the process working set sampled at that point. Collider-to-renderer and tree-hierarchy lookups are cached between discovery scans to avoid repeated allocations in the hot path. Nameplate, health-bar, and world-text renderers are excluded from the cylinder query. The temporary LeavesOnly mode reuses each renderer's derived leaf-stripped mesh instead of cloning and destroying it every time movement changes direction. Only actual state transitions request a new throttled cylinder query; cached meshes and shadow proxies are released when the scene is reset.

Fixed detection rules

Physics queries include all layers. The former Detection section and its CollisionLayerMask, VegetationNameTokens and ProtectedNameTokens settings are removed, including older saved keys. Vegetation and protected-name classification now uses fixed built-in lists. Rocks, stones, ores, and flint fragments are protected automatically and are never included in culling. The mod uses the actual collider shape and, when available, mesh vertices to avoid hiding a tree whose broad renderer bounds only graze the volume. When a tree collider belongs to a prefab root with separate trunk and leaf meshes, V1 uses the real collider as confirmation that the tree entered the cylinder. LeavesOnly then selects all recognised leaf renderers belonging to that same tree. It uses the object name and its parents in the hierarchy, tags, and tree components (including trunks in child objects) to classify renderers and colliders. Structural walls, floors and roofs retain collision regardless of their classification names.

Safety and compatibility

Immersive Camera Enhanced does not alter world colliders or saved state. Camera collision uses a hidden, local convex mesh collider as a query shape; it never participates in world physics. For vegetation it uses ShadowCastingMode.ShadowsOnly while the texture is hidden and restores the original mode when the object returns to view, when the scene changes, or when the mod is disabled. The global EnableMod switch restores all temporary state.

Mods that completely replace the camera may compete with this correction. If behavior is unexpected, first disable Camera occlusion/EnableCameraCull and test visual culling separately from the independent collision toggles.

Diagnostics

Enable ShowOcclusionCylinder to draw the physical cylinder in translucent green (20% by default), with its zero-width character-side apex, camera-width section, and wider rear section, during calibration. Adjust CylinderOpacity in the Debug section if the outline needs to be more or less visible. The drawing is optional and does not reveal the map. It shows one curved cylinder only. Disable the option after calibration. The overlay remains visible while the pause or Configuration Manager menu is open, so its position can be checked without losing the last gameplay volume. Opening Configuration Manager does not pause the camera/culling update loop, so supported settings can be adjusted and previewed while its overlay is open. ShowCameraCollisionVolume is off by default. Enable it to draw the active finite collision cylinder or Valheim's native ray/sphere probes in pink every frame. The white cross marks the contact. ShowCameraCollisionColliders separately outlines every world collider touched by active camera collision, retaining each outline for 30 seconds after that collider's most recent contact. ShowOcclusionCylinder remains available for the separate green V1 vegetation-culling cylinder. Opening Configuration Manager does not pause camera or culling updates, so the cylinder and debug view update while the overlay is open. The base-position feature now exposes only the vertical Y offset. Enable VerboseLogging only during a test; routine scene scan counts are intentionally not written because synchronous console output can stall the render thread. Set the option back to false after diagnosing.

Credits

Project by Xinelada Lendária. Requires BepInExPack Valheim.

Thunderstore development is made possible with ads. Please consider making an exception to your adblock.