📜  半球灯三js - Javascript(1)

📅  最后修改于: 2023-12-03 15:37:02.673000             🧑  作者: Mango

半球灯三js - Javascript

半球灯三js是一个用JavaScript编写的实时光照和阴影效果库。它可以用于创建3D场景和游戏,以提供更加真实的光照和阴影效果。

特性
  • 实时光照和阴影效果
  • 基于物理的光照
  • 方向光、点光源、聚光灯支持
  • 支持平行光、点光源和聚光灯阴影贴图
  • 高性能
  • 可以在任何现代浏览器上运行
使用方法

在使用半球灯三js之前,请确保您已经使用了Three.js,因为半球灯三js是基于Three.js构建的。您可以从官方网站https://threejs.org/下载Three.js。

安装

你可以从GitHub上下载半球灯三js,也可以使用npm安装:

npm install hemispheric3d
使用

首先,将脚本文件引入到您的HTML文档中:

<script src="path/to/hemispheric3d.min.js"></script>

创建半球灯对象:

// 创建半球灯对象
var hemiLight = new HemisphericLight(0xffffff, 0x0033ff, 1);
// 添加到场景中
scene.add(hemiLight);

设置半球灯对象的属性:

// 设置光源位置
hemiLight.position.set(0, 100, 0);
// 设置阴影贴图尺寸
hemiLight.shadowResolution = 1024;
示例代码

下面的代码段演示了如何创建一个具有半球灯效果的场景:

// 创建场景
var scene = new THREE.Scene();
// 创建渲染器
var renderer = new THREE.WebGLRenderer();
// 设置渲染器大小
renderer.setSize(window.innerWidth, window.innerHeight);
// 将渲染器添加到文档中
document.body.appendChild(renderer.domElement);

// 创建摄像机
var camera = new THREE.PerspectiveCamera(45, window.innerWidth / window.innerHeight, 1, 10000);
// 设置摄像机位置
camera.position.set(0, 100, 400);
// 将摄像机添加到场景中
scene.add(camera);

// 创建半球灯对象
var hemiLight = new HemisphericLight(0xffffff, 0x0033ff, 1);
// 设置光源位置
hemiLight.position.set(0, 100, 0);
// 设置阴影贴图尺寸
hemiLight.shadowResolution = 1024;
// 添加到场景中
scene.add(hemiLight);

// 创建立方体
var geometry = new THREE.BoxGeometry(200, 200, 200);
var material = new THREE.MeshLambertMaterial({ color: 0xffffff });
var mesh = new THREE.Mesh(geometry, material);
// 设置阴影投射
mesh.castShadow = true;
// 将立方体添加到场景中
scene.add(mesh);

// 创建地面平面
var groundGeometry = new THREE.PlaneGeometry(1000, 1000);
var groundMaterial = new THREE.MeshLambertMaterial({ color: 0x99ff99 });
var ground = new THREE.Mesh(groundGeometry, groundMaterial);
// 设置阴影接收
ground.receiveShadow = true;
// 旋转地面平面
ground.rotation.x = -Math.PI / 2;
// 将地面平面添加到场景中
scene.add(ground);

// 渲染循环
function render() {

  // 更新立方体位置
  mesh.rotation.x += 0.01;
  mesh.rotation.y += 0.02;

  // 渲染场景
  renderer.render(scene, camera);

  // 继续渲染循环
  requestAnimationFrame(render);
}

// 开始渲染
render();
总结

半球灯三js是一个简单易用的光照和阴影库,可以帮助您创建具有更真实光照和阴影效果的3D场景和游戏。