three做个three三维女孩雨夜马路打伞散步场景代码

代码语言:html

所属分类:其他

代码由minimax-m3.1-flash ai生成,可能有错误,仅供参考:点击查看提示词

代码描述:three三维女孩雨夜马路打伞散步

代码标签: three 三维 女孩 雨夜 马路 打伞 散步 场景 代码

下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开

<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" />
<title>雨夜 · 伞下 — Three.js × VRM</title>
<style>
  *{box-sizing:border-box}
  html,body{margin:0;padding:0;height:100%;overflow:hidden;background:#04060a;
    color:#e6f0f8;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif;
    -webkit-font-smoothing:antialiased;}
  #app{position:fixed;inset:0}
  canvas{display:block}
  .badge{position:fixed;top:15px;left:19px;z-index:12;font-size:10.5px;letter-spacing:.22em;
    opacity:.42;pointer-events:none;text-transform:uppercase}
  .hud{position:fixed;left:19px;bottom:17px;z-index:12;pointer-events:none;
    text-shadow:0 2px 10px rgba(0,0,0,.85)}
  .hud h1{margin:0 0 6px;font-size:15px;font-weight:600;letter-spacing:.2em;
    background:linear-gradient(90deg,#dff1ff,#8fd0ff);-webkit-background-clip:text;background-clip:text;color:transparent}
  .hud p{margin:0;font-size:11.5px;line-height:1.85;opacity:.55}
  .hud b{opacity:.95;font-weight:500}
  .kbd{display:inline-block;min-width:16px;padding:1px 5px;border:1px solid rgba(255,255,255,.2);
    border-radius:4px;font-size:10px;margin:0 3px;opacity:.9;letter-spacing:.04em}
  #loader{position:fixed;inset:0;z-index:60;display:flex;flex-direction:column;align-items:center;
    justify-content:center;gap:20px;background:radial-gradient(ellipse at 50% 62%,#0a1120 0%,#04060a 72%);
    transition:opacity .9s ease}
  #loader.hide{opacity:0;pointer-events:none}
  .lbar{width:min(300px,62vw);height:2px;background:rgba(255,255,255,.09);overflow:hidden;border-radius:2px}
  .lbar i{display:block;height:100%;width:0%;background:linear-gradient(90deg,#2f8fd8,#a9e7ff);
    box-shadow:0 0 14px #4fc3ff;transition:width .3s ease}
  .ltext{font-size:11.5px;letter-spacing:.16em;opacity:.62;font-variant-numeric:tabular-nums}
  #err{display:none;color:#ff9a9a;font-size:12px;max-width:min(620px,86vw);text-align:center;line-height:1.9}
  #err code{color:#bfe6ff;background:rgba(120,200,255,.1);padding:1px 5px;border-radius:3px}
  .lil-gui{--background-color:rgba(9,13,19,.86);--widget-color:rgba(120,170,210,.16);
    --text-color:#cfe2f2;--title-background-color:rgba(16,24,34,.92);--title-text-color:#9fd2f5;
    --font-size:11px;backdrop-filter:blur(8px)}
  .lil-gui .title{letter-spacing:.08em}
</style>
</head>
<body>
<div id="app"></div>
<div class="badge">three.js · vrm · realtime rain</div>
<div class="hud">
  <h1>雨夜 · 伞下</h1>
  <p>
    拖入 <b>.vrm</b> 文件即可换成你自己的角色<br>
    <span class="kbd">W A S D</span>行走 <span class="kbd">拖拽</span>转视角 <span class="kbd">滚轮</span>缩放<br>
    <span class="kbd">C</span>镜头预设 <span class="kbd">F</span>转身 <span class="kbd">R</span>复位 <span class="kbd">H</span>隐藏界面
  </p>
</div>

<div id="loader">
  <div class="ltext" id="lt">正在初始化渲染器…</div>
  <div class="lbar"><i id="lb"></i></div>
  <div id="err"></div>
</div>

<script type="importmap">
{
  "imports": {
    "three": "https://cdn.jsdelivr.net/npm/three@0.180.0/build/three.module.js",
    "three/addons/": "https://cdn.jsdelivr.net/npm/three@0.180.0/examples/jsm/",
    "@pixiv/three-vrm": "https://cdn.jsdelivr.net/npm/@pixiv/three-vrm@3.5.5/lib/three-vrm.module.js"
  }
}
</script>

<script type="module">
import * as THREE from 'three';
import { VRMLoaderPlugin, VRMUtils } from '@pixiv/three-vrm';
import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js';
import { Reflector } from 'three/addons/objects/Reflector.js';
import { mergeGeometries } from 'three/addons/utils/BufferGeometryUtils.js';
import { EffectComposer } from 'three/addons/postprocessing/EffectComposer.js';
import { RenderPass } from 'three/addons/postprocessing/RenderPass.js';
import { UnrealBloomPass } from 'three/addons/postprocessing/UnrealBloomPass.js';
import { ShaderPass } from 'three/addons/postprocessing/ShaderPass.js';
import { OutputPass } from 'three/addons/postprocessing/OutputPass.js';
import GUI from 'three/addons/libs/lil-gui.module.min.js';

/* ==========================================================================
   0. 全局配置
   ========================================================================== */
const P = {
  rain:        1.00,
  wind:        0.55,
  reflect:     1.00,
  puddle:      0.62,
  bloom:       0.72,
  lensRain:    0.40,
  grain:       0.55,
  speed:       1.15,
  exposure:    1.06,
  camMode:     0,
  flip:        0,
};

const ROAD_LEN = 460;
const ROAD_W   = 9.0;
const PERIOD   = 32;
const GIRL_Z   = -1.35;
const LANE_Z   =  1.9;
const STRAFE_MAX = 4.5;   // 角色左右横移的 z 范围 ±

/* ==========================================================================
   1. 加载 UI
   ========================================================================== */
const lb = document.getElementById('lb');
const lt = document.getElementById('lt');
const loaderEl = document.getElementById('loader');
const errEl = document.getElementById('err');
const setProg = (p, t) => { lb.style.width = (p * 100).toFixed(1) + '%'; if (t) lt.textContent = t; };
const hideLoader = () => loaderEl.classList.add('hide');
function fatal(html) {
  errEl.style.display = 'block';
  errEl.innerHTML = html;
  lt.textContent = '⚠ 加载失败';
}
window.addEventListener('error', e => {
  if (!loaderEl.classList.contains('hide') && errEl.style.display !== 'block') {
    fatal('运行错误:<code>' + (e.message || e) + '</code><br>通常是网络无法访问 jsdelivr,请检查代理或换用本地 VRM。');
  }
});

/* ==========================================================================
   2. 渲染器 / 场景 / 相机
   =======================================================================.........完整代码请登录后点击上方下载按钮下载查看

网友评论0