雷达效果

飘扬的红旗

光柱效果

OD线

下雪

下雨

光墙效果

能源球

烟火效果
threejs烟花效果
光圈效果
threejs 光圈 波动
function initScene() {
scene = new THREE.Scene();
}
function initCamera() {
camera = new THREE.PerspectiveCamera(45, window.innerWidth / window.innerHeight, 0.1, 1000);
camera.position.set(30, 40, 80)
camera.lookAt(new THREE.Vector3(0, 0, 0));
}
function initLight() {
//添加环境光
var ambientLight = new THREE.AmbientLight(0xffffff);
scene.add(ambientLight);
var spotLight = new THREE.SpotLight(0xffffff);
spotLight.position.set(5, 10, 20);
spotLight.castShadow = true;
scene.add(spotLight);
}
function initModel() {
//创建60个立方体模拟楼宇
for (let i = 0; i < 60; i++) {
const height = Math.random() * 10 + 2
const width = 3
let cubeGeom;
if(i%2==0) cubeGeom = new THREE.BoxGeometry(width, height, width);
else cubeGeom = new THREE.CylinderGeometry( width/2, width/2, height, 32 );
cubeGeom.setAttribute('color', new THREE.BufferAttribute(new Float32Array(cubeGeom.attributes.position.count * 3), 3))
const colors = cubeGeom.attributes.color
let lr = 1;//Math.random()
let r = lr * 0.2,
g = lr * 0.2,
b = lr * 0.5
//设置立方体六个面24个顶点的颜色
for (let i = 0; i < cubeGeom.attributes.color.count; i++) {
colors.setXYZ(i, r, g, b)
}
//重置立方体顶部四边形的四个顶点的颜色
// const k = 2
// colors.setXYZ(k * 4 + 0, .0, g, 1.0)
// colors.setXYZ(k * 4 + 1, .0, g, 1.0)
// colors.setXYZ(k * 4 + 2, .0, g, 1.0)
// colors.setXYZ(k * 4 + 3, .0, g, 1.0)
const cube = new THREE.Mesh(cubeGeom, material)
cube.position.set(Math.random() * 100 - 50, height / 2, Math.random() * 100 - 50)
scene.add(cube)
//绘制边框线
const lineGeom = new THREE.EdgesGeometry(cubeGeom)
const lineMaterial = new THREE.LineBasicMaterial({
color: 0x018BF5,
linewidth: 1,
linecap: 'round',
linejoin: 'round'
})
const line = new THREE.LineSegments(lineGeom, lineMaterial)
line.scale.copy(cube.scale)
line.rotation.copy(cube.rotation)
line.position.copy(cube.position)
scene.add(line)
}
}
function initRender() {
renderer = new THREE.WebGLRenderer({
antialias: true,
alpha: true
})
renderer.setPixelRatio(window.devicePixelRatio);
renderer.setSize(window.innerWidth, window.innerHeight);
renderer.setClearColor(0x0f2d48, 1) // 设置背景颜色
renderer.toneMapping = THREE.ACESFilmicToneMapping;
document.getElementById("WebGL-output").appendChild(renderer.domElement);
}


















