three实现三维黄昏古塔景色场景代码
代码语言:html
所属分类:三维
代码描述:three实现三维黄昏古塔景色场景代码,可更改时间,有鸟、有树木、有山
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>中国古塔</title>
<style>
* { margin: 0; padding: 0; box-sizing: border-box; }
body { overflow: hidden; background: #000; }
canvas { display: block; }
#title {
position: absolute;
top: 30px;
left: 50%;
transform: translateX(-50%);
font-family: 'STKaiti', 'KaiTi', serif;
font-size: 42px;
color: #ffd700;
text-shadow: 3px 3px 6px rgba(0,0,0,0.8), 0 0 30px rgba(255,215,0,0.3);
letter-spacing: 15px;
pointer-events: none;
}
#info {
position: absolute;
bottom: 30px;
left: 50%;
transform: translateX(-50%);
background: linear-gradient(135deg, rgba(139,69,19,0.8), rgba(101,67,33,0.8));
color: #ffd700;
padding: 12px 35px;
border-radius: 25px;
font-family: 'Microsoft YaHei', sans-serif;
font-size: 14px;
border: 2px solid rgba(255,215,0,0.3);
box-shadow: 0 5px 20px rgba(0,0,0,0.5);
}
#controls {
position: absolute;
top: 30px;
right: 30px;
background: linear-gradient(135deg, rgba(139,69,19,0.9), rgba(101,67,33,0.9));
padding: 20px;
border-radius: 15px;
color: #ffd700;
font-family: 'Microsoft YaHei', sans-serif;
border: 2px solid rgba(255,215,0,0.3);
box-shadow: 0 5px 20px rgba(0,0,0,0.5);
}
#controls label {
display: block;
margin-bottom: 10px;
font-size: 14px;
}
#controls input[type="range"] {
width: 160px;
margin-bottom: 15px;
cursor: pointer;
}
#controls button {
width: 100%;
padding: 10px;
background: linear-gradient(135deg, #8b4513, #654321);
border: 1px solid #ffd700;
color: #ffd700;
border-radius: 8px;
cursor: pointer;
font-size: 14px;
transition: all 0.3s;
}
#controls button:hover {
background: linear-gradient(135deg, #a0522d, #8b4513);
box-shadow: 0 0 15px rgba(255,215,0,0.3);
}
#loading {
position: fixed;
top: 0; left: 0;
width: 100%; height: 100%;
background: linear-gradient(135deg, #1a0a00, #2d1810);
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
z-index: 1000;
transition: opacity 1s;
}
#loading h1 {
font-family: 'STKaiti', 'KaiTi', serif;
font-size: 48px;
color: #ffd700;
margin-bottom: 30px;
letter-spacing: 10px;
}
.loader {
width: 60px;
height: 60px;
border: 4px solid rgba(255,215,0,0.2);
border-top-color: #ffd700;
border-radius: 50%;
animation: spin 1s linear infinite;
}
@keyframes spin {
to { transform: rotate(360deg); }
}
#poem {
position: absolute;
top: 100px;
left: 30px;
font-family: 'STKaiti', 'KaiTi', serif;
font-size: 20px;
color: rgba(255,215,0,0.7);
line-height: 2;
text-shadow: 2px 2px 4px rgba(0,0,0,0.8);
writing-mode: vertical-rl;
pointer-events: none;
}
</style>
</head>
<body>
<div id="loading">
<h1>古塔禅境</h1>
<div class="loader"></div>
</div>
<div id="title">浮屠胜境</div>
<div id="poem">
浮屠七级倚云端<br>
古刹钟声绕翠峦<br>
香烟袅袅随风起<br>
禅意悠悠入梦还
</div>
<div id="controls">
<label>☀️ 时辰: <span id="time-text">午时</span></label>
<input type="range" id="time-slider" min="0" max="100" value="50">
<label>🌫️ 云雾: <span id="fog-text">50%</span></label>
<input type="range" id="fog-slider" min="0" max="100" value="50">
<button onclick="toggleRotate()">🔄 自动旋转</button>
</div>
<div id="info">🖱️ 拖拽旋转 | 滚轮缩放 | 右键平移</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 sun, sunLight, ambientLight;
let autoRotate = true;
let incenseSmoke = [];
let lanterns = [];
let bells = [];
let birds = [];
let clouds = [];
let waterMesh;
function init() {
// 场景
scene = new THREE.Scene();
scene.fog = new THREE.FogExp2(0xd4c4b0, 0.003);
// 相机
camera = new THREE.PerspectiveCamera(55, window.innerWidth / window.innerHeight, 0.1, 2000);
camera.position.set(100, 60, 120);
// 渲染器
renderer = new THREE.WebGLRenderer({ antialias: true });
renderer.setSize(window.innerWidth, window.innerHeight);
renderer.setPixelRatio(Math.min(window.devicePixelRatio, 2));
renderer.shadowMap.enabled = true;
renderer.shadowMap.type = THREE.PCFSoftShadowMap;
renderer.toneMapping = THREE.ACESFilmicToneMapping;
renderer.toneMappingExposure = 1.1;
document.body.appendChild(renderer.domElement);
// 控制器
controls = new THREE.OrbitControls(camera, renderer.domElement);
controls.enableDamping = true;
controls.dampingFactor = 0.05;
controls.minDistance = 40;
controls.maxDistance = 300;
controls.maxPolarAngle = Math.PI / 2.05;
controls.target.set(0, 30, 0);
controls.autoRotate = true;
controls.autoRotateSpeed = 0.3;
// 构建场景
.........完整代码请登录后点击上方下载按钮下载查看
















网友评论0