三维双面多角度折射不同图片效果
代码语言:html
所属分类:三维
代码描述:三维双面多角度折射不同图片效果
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <style> canvas { width: 100%; height: 100vh; display: block; cursor: -webkit-grab; cursor: grab; } body { height: 100vh; } a { position: fixed; top: 0; left: 0 ; padding: 5vmin; } </style> </head> <body translate="no"> <script type="text/javascript" src="http://repo.bfw.wiki/bfwrepo/js/gsap.3.3.1.js"></script> <script type="module"> import * as $ from '//unpkg.com/three@0.120.0/build/three.module.js' import { OrbitControls } from '//unpkg.com/three@0.120.0/examples/jsm/controls/OrbitControls.js' // ---- // Boot // ---- const renderer = new $.WebGLRenderer({ alpha: true }); const scene = new $.Scene(); const camera = new $.PerspectiveCamera(75, 2, .1, 100); const controls = new OrbitControls(camera, renderer.domElement); window.addEventListener('resize', () => { const { clientWidth, clientHeight } = renderer.domElement; renderer.setPixelRatio(window.devicePixelRatio); renderer.setSize(clientWidth, clientHeight, false); camera.aspect = clientWidth / clientHeight; camera.updateProjectionMatrix(); }); document.body.prepend(renderer.domElement); window.dispatchEvent(new Event('resize')); renderer.setAnimationLoop(t => { renderer.render(scene, camera); controls.update(); }); // ---- // Main // ---- const W = 10, H = 10, SW = W * 20, SH = H * 20; const IMG_URLS = [ "http://repo.bfw.wiki/bfwrepo/image/5d653bd0990d0.png", "http://repo.bfw.wiki/bfwrepo/image/5d653be845a41.png", ]; camera.position.set(0, 0, 8); for (const { color, intensity, x, y, z } of [ { color: 'white', intensity: 1, x: -W, y: 0, z: 0 }, { color: 'white', intensity: 1, x: W, y: 0, z: 0 }, ]) { const L = new $.SpotLight(color, intensity, W, Math.PI / 2, 0, 0); L.position.set(x, y, z); scene.add(L); } const vs = []; for (let i = 0, I = SH; i < I; ++i) { vs[i] = []; .........完整代码请登录后点击上方下载按钮下载查看
网友评论0