three实现三维清明节祭祖场景动画代码
代码语言:html
所属分类:三维
代码描述:three实现三维清明节祭祖场景动画代码
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>清明节祭祖 - 3D场景</title>
<style>
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
overflow: hidden;
background: #000;
font-family: 'SimSun', serif;
}
#info {
position: absolute;
top: 20px;
width: 100%;
text-align: center;
color: #f0e6d3;
font-size: 24px;
text-shadow: 0 0 10px rgba(255, 200, 100, 0.5);
pointer-events: none;
z-index: 100;
}
#info small {
font-size: 14px;
display: block;
margin-top: 8px;
color: #c0b090;
}
#controls {
position: absolute;
bottom: 20px;
width: 100%;
text-align: center;
z-index: 100;
}
#controls button {
background: rgba(139, 69, 19, 0.7);
color: #f0e6d3;
border: 1px solid #d4a574;
padding: 10px 24px;
margin: 0 8px;
font-size: 16px;
font-family: 'SimSun', serif;
cursor: pointer;
border-radius: 4px;
transition: all 0.3s;
}
#controls button:hover {
background: rgba(180, 100, 30, 0.9);
box-shadow: 0 0 15px rgba(255, 150, 50, 0.5);
}
canvas { display: block; }
</style>
</head>
<body>
<div id="info">
清明时节 · 慎终追远
<small>鼠标左键旋转 | 滚轮缩放 | 右键平移 | 点击按钮互动</small>
</div>
<div id="controls">
<button onclick="lightIncense()">🔥 上香</button>
<button onclick="pourWine()">🍶 敬酒</button>
<button onclick="addFlower()">🌸 献花</button>
<button onclick="burnPaper()">📜 烧纸</button>
<button onclick="bowAction()">🙏 鞠躬</button>
</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/three.js/r128/three.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/three@0.128.0/examples/js/controls/OrbitControls.js"></script>
<script>
let scene, camera, renderer, controls;
let incenseParticles = [];
let fireParticles = [];
let fallingLeaves = [];
let smokeParticles = [];
let paperFireParticles = [];
let incenseSticks = [];
let flowers = [];
let clock = new THREE.Clock();
let wineDrops = [];
let bowingFigure = null;
let isBowing = false;
let bowAngle = 0;
let candleFlames = [];
init();
animate();
function init() {
// Scene
scene = new THREE.Scene();
scene.fog = new THREE.FogExp2(0x2a3a2a, 0.015);
scene.background = new THREE.Color(0x1a2a1a);
// Camera
camera = new THREE.PerspectiveCamera(60, window.innerWidth / window.innerHeight, 0.1, 1000);
camera.position.set(0, 5, 12);
camera.lookAt(0, 2, 0);
// Renderer
renderer = new THREE.WebGLRenderer({ antialias: true });
renderer.setSize(window.innerWidth, window.innerHeight);
renderer.shadowMap.enabled = true;
renderer.shadowMap.type = THREE.PCFSoftShadowMap;
renderer.toneMapping = THREE.ACESFilmicToneMapping;
renderer.toneMappingExposure = 0.8;
document.body.appendChild(renderer.domElement);
// Controls
controls = new THREE.OrbitControls(camera, renderer.domElement);
controls.enableDamping = true;
controls.dampingFactor = 0.05;
controls.maxPolarAngle = Math.PI / 2.1;
controls.minDistance = 5;
controls.maxDistance = 25;
controls.target.set(0, 2, 0);
// Lights
setupLights();
// Create scene objects
createGround();
createTombstone();
createAltar();
createIncenseHolder();
createCandles();
createOfferings();
createTrees();
createGrass();
createFallingLeaves();
createPerson();
createSurroundings();
window.addEventListener('resize', onWindowResize);
}
function setupLights() {
// Ambient light - dim
const ambient = new THREE.AmbientLight(0x3a4a3a, 0.4);
scene.add(ambient);
// Directional light - moonlight
const dirLight = new THREE.DirectionalLight(0x8899aa, 0.3);
dirLight.position.set(-10, 15, 5);
dirLight.castShadow = true;
dirLight.shadow.mapSize.width = 2048;
dirLight.shadow.mapSize.height = 2048;
dirLight.shadow.camera.near = 0.5;
dirLight.shadow.camera.far = 50;
dirLight.shadow.camera.left = -15;
dirLight.shadow.camera.right = 15;
dirLight.shadow.camera.top = 15;
dirLight.........完整代码请登录后点击上方下载按钮下载查看
















网友评论0