分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 运营维护

vue+three.js 3D效果图

发布时间:2023-09-06 01:55责任编辑:郭大石关键词:js

1、three.js

要把three.js下载下来,然后再后面加上红线这个

2、login.vue

<script>import THREE from "../../utils/three";let SEPARATION = 100, ?AMOUNTX = 100, ?AMOUNTY = 70;let container;let camera, scene, renderer;let particles, ?particle, ?count = 0;let mouseX = 85, ?mouseY = -342;let windowHalfX = window.innerWidth / 2;let windowHalfY = window.innerHeight / 2;export default { ?data() { ???return { ???}; ?}, ?methods: { ???init() { ?????container = document.createElement("div"); ?????document.body.appendChild(container); ?????camera = new THREE.THREE.PerspectiveCamera( ???????120, ???????window.innerWidth / window.innerHeight, ???????1, ???????10000 ?????); ?????container.style.cssText = "position:fixed;top:0;left:0;cursor:pointer;opacity:0.9;z-index:10000"; ?????camera.position.z = 1000; ?????scene =new THREE.THREE.Scene(); ?????particles = new Array(); ?????var PI2 = Math.PI * 2; ?????var material =new THREE.THREE.ParticleCanvasMaterial({ ???????color: 0xe1e1e1, ???????program: function(context) { ?????????context.beginPath(); ?????????context.arc(0, 0, 0.6, 0, PI2, true); ?????????context.fill(); ???????} ?????}); ?????var i = 0; ?????for (var ix = 0; ix < AMOUNTX; ix++) { ???????for (var iy = 0; iy < AMOUNTY; iy++) { ?????????particle = particles[i++] = new THREE.THREE.Particle(material); ?????????particle.position.x = ix * SEPARATION - AMOUNTX * SEPARATION / 2; ?????????particle.position.z = iy * SEPARATION - AMOUNTY * SEPARATION / 2; ?????????scene.add(particle); ???????} ?????} ?????renderer =new THREE.THREE.CanvasRenderer(); ?????renderer.setSize(window.innerWidth, window.innerHeight); ?????container.appendChild(renderer.domElement); ?????document.addEventListener("mousemove", this.onDocumentMouseMove, false); ?????document.addEventListener("touchstart", this.onDocumentTouchStart, false); ?????document.addEventListener("touchmove",this. onDocumentTouchMove, false); ?????// ?????window.addEventListener("resize", this.onWindowResize, false); ???}, ???onWindowResize() { ?????windowHalfX = window.innerWidth / 2; ?????windowHalfY = window.innerHeight / 2; ?????camera.aspect = window.innerWidth / window.innerHeight; ?????camera.updateProjectionMatrix(); ?????renderer.setSize(window.innerWidth, window.innerHeight); ???}, ???onDocumentMouseMove(event) { ?????mouseX = event.clientX - windowHalfX; ?????mouseY = event.clientY - windowHalfY; ???}, ???onDocumentTouchStart(event) { ?????if (event.touches.length === 1) { ???????event.preventDefault(); ???????mouseX = event.touches[0].pageX - windowHalfX; ???????mouseY = event.touches[0].pageY - windowHalfY; ?????} ???}, ???onDocumentTouchMove(event) { ?????if (event.touches.length === 1) { ???????event.preventDefault(); ???????mouseX = event.touches[0].pageX - windowHalfX; ???????mouseY = event.touches[0].pageY - windowHalfY; ?????} ???}, ???animate() { ?????requestAnimationFrame(this.animate); ?????this.render(); ???}, ???render() { ?????camera.position.x += (mouseX - camera.position.x) * 0.05; ?????camera.position.y += (-mouseY - camera.position.y) * 0.05; ?????camera.lookAt(scene.position); ?????var i = 0; ?????for (var ix = 0; ix < AMOUNTX; ix++) { ???????for (var iy = 0; iy < AMOUNTY; iy++) { ?????????particle = particles[i++]; ?????????particle.position.y = ???????????Math.sin((ix + count) * 0.3) * 50 + ???????????Math.sin((iy + count) * 0.5) * 50; ?????????particle.scale.x = particle.scale.y = ???????????(Math.sin((ix + count) * 0.3) + 1) * 2 + ???????????(Math.sin((iy + count) * 0.5) + 1) * 2; ???????} ?????} ?????renderer.render(scene, camera); ?????count += 0.1; ???} ?}, ?mounted() { ???this.getImgCode(); ???this.init() ???this.animate() ?}};</script>
View Code

3、效果图

关注v公众号,送免费视频学习

vue+three.js 3D效果图

原文地址:https://www.cnblogs.com/vhen/p/9071479.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved