three实现三维逼真玻璃光线反射立体空间相册效果代码

代码语言:html

所属分类:画廊相册

代码描述:three实现三维逼真玻璃光线反射立体空间相册效果代码

代码标签: three 三维 逼真 光线 玻璃 反射 立体 空间 相册

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

<!DOCTYPE html>
<html lang="en" >

<head>

 
<meta charset="UTF-8">

 
 
<style>
canvas
{
 
display: block;
 
width: 100%;
 
height: 100vh;
 
cursor: -webkit-grab;
 
cursor: grab;
}

.info {
 
position: fixed;
 
top: 0;
 
left: 0;
 
display: flex;
}

.info > * {
 
padding: 1ch;
 
color: black;
}

a
{
 
color: black;
}
</style>

 
 

</head>

<body >
 
<!--

  Attempt to animate Roller (in 146.) with greensock

  Each roller has a gsap timeline animation
  The timeline animation has 4 segments:
     
     | 0to90 | 90to180 | 180to270 | 270to360
     ^0d     ^90d      ^180d      ^270d       (labels)
 
  Each segment has 2 tracks, roll and slide;
  The first segment has a extra track for fade-in:
 
     0d      90d       180d       270d
     |roll   |roll     |roll      |roll
     |slide  |slide    |slide     |slide
     |fadein

-->


<script async type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/es-module-shims.1.5.1.js" crossorigin="anonymous"></script>

<script type="importmap">
 
{
   
"imports": {
     
"three": "//repo.bfw.wiki/bfwrepo/js/module/three/build/146/three.module.js",
     
"three/addons/": "//repo.bfw.wiki/bfwrepo/js/module/three/examples/jsm/"
   
}
 
}
</script>
<base target='_top'>

<script type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/gsap.3.10.4.js"></script>
     
<script type="module">
import * as THREE from 'three'
import { OrbitControls } from 'three/addons/controls/OrbitControls.js'

// ----
// params
// ----

// credit: Katsiaryna Endruszkiewicz at unsplash - https://unsplash.com/@endka_1
const ALBEDO_URLS = [
  '//repo.bfw.wiki/bfwrepo/image/5fc1ae951e91a.png?x-oss-process=image/auto-orient,1/resize,m_fill,w_600,h_900,/quality,q_90',
  '//repo.bfw.wiki/bfwrepo/image/5fc1af0ba6cc8.png?x-oss-process=image/auto-orient,1/resize,m_fill,w_600,h_900,/quality,q_90',
  '//repo.bfw.wiki/bfwrepo/image/5fc1aecf36d5a.png?x-oss-process=image/auto-orient,1/resize,m_fill,w_600,h_900,/quality,q_90',
  '//repo.bfw.wiki/bfwrepo/image/5fc1ae951e91a.png?x-oss-process=image/auto-orient,1/resize,m_fill,w_600,h_900,/quality,q_90'
]

// credit: mrdoob - three.js/examples/textures/
const ENV_URL = '//repo.bfw.wiki/bfwrepo/image/636d9baf40a77.png'

// ----
// Roller
// ----

class Roller extends THREE.Group {
  #angle // angle rotated around X, in degree
  #pivot // used to lift up, and slide
  #mesh // self rotates 0..=90d; geom rotates 'mult of 90d'
  #slide_speed_fn // speed of pivot sliding wrt angle

  /**
   * @param {THREE.Mesh} mesh
   * @param {function} slide_speed_fn
  */
  constructor(mesh, slide_speed_fn) {
    super()
    this.#mesh = mesh
    this.#mesh.matrixAutoUpdate = false
    this.#pivot = new THREE.Group()
    this.#p.........完整代码请登录后点击上方下载按钮下载查看

网友评论0