threejs换脸过渡特效
代码语言:html
所属分类:视觉差异
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title> ThreeJS Texture Transition Hover Effect 2</title> <style> html, body { width: 100%; height: 100%; overflow: hidden; margin: 0; } </style> </head> <body translate="no"> <canvas id="canvas"></canvas> <script src='http://repo.bfw.wiki/bfwrepo/js/TweenMax.min.js'></script> <script src='http://repo.bfw.wiki/bfwrepo/js/three.js'></script> <script> function _defineProperty(obj, key, value) {if (key in obj) {Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true });} else {obj[key] = value;}return obj;} /* Utils ------------------------------------------ */ const textureLoader = new THREE.TextureLoader(); /* Scene Subjects ----------------------------------------- */ class PlaneSubject { constructor(scene) {_defineProperty(this, "raycaster", new THREE.Raycaster());_defineProperty(this, "scene", null); const geometry = new THREE.PlaneBufferGeometry(5, 7); const material = new THREE.ShaderMaterial({ vertexShader: ` varying vec2 vUv; void main() { vUv = uv; gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0); } `, fragmentShader: ` precision highp float; varying vec2 vUv; uniform float dispFactor; uniform sampler2D disp; uniform sampler2D tex1; uniform sampler2D tex2; void main() { vec2 uv = vUv; vec4 _currentImage; vec4 _nextImage; float intensity = 0.5; vec4 orig1 = texture2D(tex1, uv); vec4 orig2 = texture2D(tex2, uv); _currentImage = texture2D(tex1, vec2( uv.x, uv.y + dispFactor * (orig2 * intensity) )); _nextImage = texture2D(tex2, vec2( uv.x, uv.y + (1.0 - dispFactor) * (orig1 * intensity) )); vec4 finalTexture = mix.........完整代码请登录后点击上方下载按钮下载查看
网友评论0