3d文字直升飞机效果
代码语言:html
所属分类:动画
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <style> body { margin: 0; overflow: hidden; } canvas { cursor: grab; } </style> </head> <body translate="no"> <script type="text/javascript" src="http://repo.bfw.wiki/bfwrepo/js/three.js"></script> <script src='http://repo.bfw.wiki/bfwrepo/js/OrbitControls.js'></script> <script > window.addEventListener("DOMContentLoaded", app); function app() { var scene, camera, renderer, roflcopter, colors = [0xf1f1f1, 0x171717], adjustWindow = () => { camera.aspect = window.innerWidth / window.innerHeight; camera.updateProjectionMatrix(); renderer.setSize(window.innerWidth, window.innerHeight); }, detectScheme = mq => { if (mq.matches) { // dark renderer.setClearColor(new THREE.Color(colors[1])); roflcopter.material.color.set(colors[0]); } else { // light renderer.setClearColor(new THREE.Color(colors[0])); roflcopter.material.color.set(colors[1]); } }, init = () => { // setup scene = new THREE.Scene(); camera = new THREE.PerspectiveCamera(60, window.innerWidth / window.innerHeight, 0.1, 1000); renderer = new THREE.WebGLRenderer(); renderer.setClearColor(new THREE.Color(colors[0])); renderer.setSize(window.innerWidth, window.innerHeight); renderer.shadowMap.enabled = true; // roflcopter roflcopter = new Roflcopter(colors[1]); scene.add(roflcopter.mesh); // camera camera.position.set(-30, 0, 0); camera.lookAt(scene.position); let camControls = new THREE.OrbitControls(camera, renderer.domElement); // use proper scheme for light or dark mode if (window.matchMedia) { const mq = window.matchMedia("(prefers-color-scheme: dark)"); mq.addListener(detectScheme); detectScheme(mq); } // render document.body.appendChild(renderer.domElement); renderScene(); }, renderScene = () => { update(); renderer.render(scene, camera); requestAnimationFrame(renderScene); }, update = () => { // allow characters to look at user roflcopter.mesh.traverse(child => { if (child instanceof THREE.Mesh) child.lookAt(camera.position); }); roflcopter.spin(); }; init(); window.addEventListener("resize", adjustWindow); } class Roflcopter { constructor(color) { this.spinAngle = 0; this.spinSpeed = 6; this.material = new THREE.MeshBasicMaterial({ color: color }); this.mesh = new THREE.Object3D(); this.mesh.name = "roflcopter"; this.propeller = new THREE.Object3D(); this.propeller.position.y = 5.25; this.mesh.add(this.propeller); this.rearBlades = new THREE.Object3D(); this.rearBlades.position.set(0, 0.75, -9); this.mesh.add(this.rearBlades); let fontLoader = new THREE.FontLoader(); fontLoader.load("https://threejs.org/examples/fonts/helvetiker_regular.typeface.json", font => { let params = { font: font, size: 1, height: 0, curveSegments: 8 }, mat = this.material, chars = [ new THREE.TextBufferGeometry("R", params), new THREE.TextBufferGeometry("O", params), new THREE.TextBufferGeometry("F", params), new THREE.TextBufferGeometry("L", params), new THREE.TextBufferGeometry("I", params), new THREE.TextBufferGeometry(":", params), new THREE.TextBufferGeometry("^", params), new THREE.TextBufferGeometry("-", params), new THREE.TextBufferGeometry("—", params), new THREE.TextBuff.........完整代码请登录后点击上方下载按钮下载查看
网友评论0