threejs Fog 雾化效果用法介绍

threejs yekong

THREE.Fog 是 Three.js 中用于实现线性雾化效果的类。它的用法、参数和一个简单的使用实例如下:

用法:

创建 THREE.Fog 对象:

const fog = new THREE.Fog(color, near, far);

参数:

  • color:表示雾化的颜色,可以是十六进制数值(例如:0x000000)或 Three.js 的颜色表示(例如:new THREE.Color(0x000000))。
  • near:表示近处的雾化距离,物体离相机越近,受雾化影响越弱。通常是一个正数,表示距离相机的最近距离,单位为世界坐标。
  • far:表示远处的雾化距离,物体离相机越远,受雾化影响越强。通常是一个正数,表示距离相机的最远距离,单位为世界坐标。

THREE.Fog 对象应用到场景:

scene.fog = fog;

这样,场景中的所有物体都将受到这个雾化效果的影响。离相机越近的物体会显示得更清晰,离相机越远的物体会受到雾化效果的影响,看起来更加朦胧。

使用实例:

下面是一个简单的 Three.js 示例代码,展示如何在场景中添加线性雾化效果:

import * as THREE from 'three';

// 创建场景
const scene = new THREE.Scene();

// 创建相机
const camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);
camera.position.z = 5;

// 创建渲染器
const renderer = new THREE.WebGLRenderer();
renderer.setSize(window.innerWidth, window.innerHeight);
document.body.appendChild(renderer.domElement);

// 创建雾化效果
const fogColor = 0x000000; // 雾化颜色,黑色
const fogNear = 1; // 近处的雾化距离
const fogFar = 10; // 远处的雾化距离
const fog = new THREE.Fog(fogColor, fogNear, fogFar);
scene.fog = fog;

// 创建一个立方体
const geometry = new THREE.BoxGeometry();
const material = new THREE.MeshBasicMaterial({ color: 0x00ff00 });
const cube = new THREE.Mesh(geometry, material);
scene.add(cube);

// 渲染循环
function animate() {
  requestAnimationFrame(animate);

  // 旋转立方体
  cube.rotation.x += 0.01;
  cube.rotation.y += 0.01;

  renderer.render(scene, camera);
}

animate();

在上述代码中,我们首先创建了一个 Three.js 场景、相机和渲染器。然后,我们创建了一个线性雾化效果,将其应用于场景中。设置的雾化颜色是黑色,雾化距离从近处 1 到远处 10。

最后,我们创建了一个立方体,并在动画循环中旋转它,通过渲染器将场景和相机渲染到屏幕上,实现了带有雾化效果的 Three.js 场景。

渲染实例

雾在3d模型中的渲染实例

喜欢