three实现三维夏日海滩彩虹太阳伞小熊招手动画效果代码
代码语言:html
所属分类:三维
代码描述:three实现三维夏日海滩彩虹太阳伞小熊招手动画效果代码
代码标签: three 三维 夏日 海滩 彩虹 太阳伞 小熊 招手 动画
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<!DOCTYPE html>
<html lang="en" >
<head>
<meta charset="UTF-8">
<style>
@import url("https://fonts.googleapis.com/css2?family=Asap&display=swap");
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
html,
body {
background: black;
overscroll-behavior-x: none;
overscroll-behavior-y: none;
}
body {
font-family: "Asap", sans-serif;
position: relative;
width: 100vw;
min-height: 100vh;
text-align: center;
overflow-x: hidden;
color: white;
}
canvas {
-moz-user-select: none;
-webkit-user-select: none;
-ms-user-select: none;
user-select: none;
position: fixed;
width: 100vw;
height: 100vh;
top: 0;
left: 0;
z-index: 1;
}
</style>
</head>
<body>
<canvas id="canvas"></canvas>
<script type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/es-module-shims.1.6.2.js"></script>
<script type="importmap">
{
"imports": {
"three": "//repo.bfw.wiki/bfwrepo/js/module/three/build/154/three.module.js",
"three/addons/": "//repo.bfw.wiki/bfwrepo/js/module/three/examples/154/jsm/"
}
}
</script>
<script type="module">
/*!
Summer bunny 2023
https://codepen.io/wakana-k/pen/JjeZjrq
@wakana-k
*/
import * as THREE from "three";
import * as BufferGeometryUtils from "three/addons/utils/BufferGeometryUtils.js";
import { OrbitControls as e } from "three/addons/controls/OrbitControls.js";
!function () {
"use strict";
function t() {
a.aspect = window.innerWidth / window.innerHeight,
a.updateProjectionMatrix(),
r.setSize(window.innerWidth, window.innerHeight);
}
function o() {
requestAnimationFrame(o),
d.update(),
function () {
(S > p || S < c) && (w *= -1);
E.rotation.set(0, 0, S += w), r.render(n, a);
}();
}
let a,
n,
r,
d,
l,
i,
s = [];
const h = 7;
let E;
const p = -Math.PI / 1.95,
c = -Math.PI / 1.2;
let w = 0.05,
S = p;
const u = window.innerWidth < window.innerHeight;
!function () {
(n = new THREE.Scene()).background = new THREE.Color("black"),
(r = new THREE.WebGLRenderer({
antialias: !0,
canvas: canvas })).
setPixelRatio(window.devicePixelRatio),
r.setSize(window.innerWidth, window.innerHeight),
r.useLegacyLights = !1,
r.shadowMap.enabled = !0,
a = new THREE.PerspectiveCamera(
40,
window.innerWidth / window.innerHeight,
0.01,
500),
u ? a.position.set(0, 4, 13) : a.position.set(0, 3, 12),
a.lookAt(0, 0, 0);
const p = new THREE.AmbientLight(16777215, 1.5);
n.add(p);
const c = new THREE.DirectionalLight(16777215, 1.5);
c.castShadow = !0, c.position.set(0, 3, 3), n.add(c);
let w = new THREE.Mesh(
new THREE.SphereGeometry(50, 4, 4),
new THREE.MeshBasicMaterial({
color: "lightcyan",
side: THREE.BackSide }));
n.add(w),
s = [],
i = new THREE.MeshLambertMaterial({
color: "limegreen",
side: THREE.DoubleSide }),
(l = new THREE.SphereGeometry(1.5, 11, 5, 0, 6.3, 1.865, 3.14)).rotateX(
Math.PI),
l.rotateZ(Math.PI / 10),
l.translate(0.2, 2.85, 0);
const S = new THREE.Mesh(l, i);
(l = new THREE.SphereGeometry(0.35, 10, 10)).translate(0.4, 2.8, 0),
s.push(l),
(l = l.clone()).translate(-0.3, 0.25, 0.3),
s.push(l),
l = BufferGeometryUtils.mergeBufferGeometries(s),
(i = i.clone()).color.set("yellow");
const T = new THREE.Mesh(l, i);
T.castShadow = !0,
S.add(T),
(l = new THREE.CylinderGeometry(0.13, 0.3, 4.3, 8)).translate(0, 1.3, 0),
s.push(l),
(i = i.clone()).color.set("peru");
const C = new THREE.Mesh(l, i);
C.castShadow = !0,
S.add(C),
S.position.set(-3, 0.15, 0),
S.name = "tree",
S.castShadow = !0,
n.add(S),
l = new THREE.SphereGeometry(0.6, 12, 10);
let R = i.clone();
R.color.set("white"),
R.map = function () {
let e = document.createElement("canvas");
e.width = 300, e.height = 300;
let t = e.........完整代码请登录后点击上方下载按钮下载查看
网友评论0