three做个三维公园池塘亭子场景代码

代码语言:html

所属分类:其他

代码由qwen-3.8-max ai生成,可能有错误,仅供参考:点击查看提示词

代码描述:三维公园池塘亭子

代码标签: 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>公园池塘 · Three.js 随机天气</title>
<style>
  html,body{margin:0;padding:0;overflow:hidden;background:#000;font-family:"Microsoft YaHei",system-ui,sans-serif;}
  #panel{
    position:fixed;left:16px;top:16px;z-index:10;color:#fff;
    background:rgba(10,20,30,.45);backdrop-filter:blur(8px);
    border:1px solid rgba(255,255,255,.15);border-radius:14px;
    padding:14px 16px;width:300px;user-select:none;
  }
  #panel h1{font-size:18px;margin:0 0 8px;}
  #winfo{font-size:14px;margin-bottom:4px;}
  #cd{font-size:12px;opacity:.75;margin-bottom:10px;}
  #btns{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:10px;}
  #btns button{
    background:rgba(255,255,255,.12);color:#fff;border:1px solid rgba(255,255,255,.2);
    border-radius:8px;padding:5px 9px;font-size:12px;cursor:pointer;transition:.2s;
  }
  #btns button:hover{background:rgba(255,255,255,.25);}
  #btns button.active{background:#3d8fd9;border-color:#7cc0ff;}
  #autoWrap{font-size:13px;display:flex;align-items:center;gap:6px;margin-bottom:8px;cursor:pointer;}
  #tip{font-size:12px;opacity:.8;line-height:1.6;border-top:1px solid rgba(255,255,255,.15);padding-top:8px;}
</style>
</head>
<body>
<div id="panel">
  <h1>🏞️ 公园池塘</h1>
  <div id="winfo">当前天气:<b id="wlabel">☀️ 晴</b></div>
  <div id="cd">下次随机切换:--</div>
  <div id="btns"></div>
  <label id="autoWrap"><input type="checkbox" id="autoChk" checked>自动随机天气</label>
  <div id="tip">🖱️ 拖动旋转 · 滚轮缩放 · 右键平移<br>🐟 点击水面可以喂鱼,鱼群会聚过来!</div>
</div>

<script type="importmap">
{ "imports": {
  "three": "https://cdn.jsdelivr.net/npm/three@0.160.0/build/three.module.js",
  "three/addons/": "https://cdn.jsdelivr.net/npm/three@0.160.0/examples/jsm/"
}}
</script>

<script type="module">
import * as THREE from 'three';
import { OrbitControls } from 'three/addons/controls/OrbitControls.js';

/* ================= 基础 ================= */
const scene = new THREE.Scene();
scene.fog = new THREE.FogExp2(0xcfe8ff, 0.0018);

const camera = new THREE.PerspectiveCamera(55, innerWidth/innerHeight, 0.1, 1000);
camera.position.set(21, 10, 25);

const renderer = new THREE.WebGLRenderer({antialias:true});
renderer.setSize(innerWidth, innerHeight);
renderer.setPixelRatio(Math.min(devicePixelRatio, 2));
renderer.shadowMap.enabled = true;
renderer.shadowMap.type = THREE.PCFSoftShadowMap;
renderer.toneMapping = THREE.ACESFilmicToneMapping;
renderer.toneMappingExposure = 1.05;
document.body.appendChild(renderer.domElement);

const controls = new OrbitControls(camera, renderer.domElement);
controls.target.set(0, 1, 0);
controls.enableDamping = true;
controls.maxPolarAngle = Math.PI * 0.495;
controls.minDistance = 5;
controls.maxDistance = 90;

const clock = new THREE.Clock();
const rnd = (a,b)=>a+Math.random()*(b-a);

/* ================= 灯光 ================= */
const sun = new THREE.DirectionalLight(0xfff2d9, 2.2);
sun.position.set(60, 80, 25);
sun.castShadow = true;
sun.shadow.mapSize.set(2048, 2048);
sun.shadow.camera.left = -48; sun.shadow.camera.right = 48;
sun.shadow.camera.top = 48;  sun.shadow.camera.bottom = -48;
sun.shadow.camera.near = 5;  sun.shadow.camera.far = 250;
sun.shadow.bias = -0.0004; sun.shadow.normalBias = 0.3;
scene.add(sun);

const hemi = new THREE.HemisphereLight(0xcfe8ff, 0x55663a, 0.9);
scene.add(hemi);

/* ================= 天空 ================= */
const skyMat = new THREE.ShaderMateria.........完整代码请登录后点击上方下载按钮下载查看

网友评论0