<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
本文用vue
+threejs
寫物體動畫:物體縮放動畫。
實現原理:讓縮放值根據秒數的增加呈函數式變化,以達到動畫展示的效果。
下面是演示gif:
id
容器,用於插入渲染器節點<template> <div class="item"> <div id="THREE42"></div> </div> </template>
mounted
方法中呼叫initThreejs
方法import * as THREE from "three"; import { OrbitControls } from "three/examples/jsm/controls/OrbitControls.js"; import { DRACOLoader } from "three/examples/jsm/loaders/DRACOLoader.js"; mounted() { this.initThreejs(); },
let clock = new THREE.Clock();
下面會用到它的.getElapsedTime()
方法,該方法用於獲取自時鐘啟動後的秒數。scene = new THREE.Scene();
const light = new THREE.DirectionalLight(0xffffff);
camera = new THREE.PerspectiveCamera(35,(window.innerWidth - 201) / window.innerHeight,1,500);
renderer = new THREE.WebGLRenderer({ antialias: true });
BoxGeometry
用於建立一個立方體,引數是(長,寬,高)。MeshPhongMaterial
用於建立一個具有鏡面高光的光澤表面的材質。最後用Mesh
建立一個具有高光材質的立方體網格模型document.addEventListener("pointerdown", animate);
,滑鼠落下的後開始縮放動畫,縮放值根據秒數的增加呈函數式變化DRACOLoader
載入.drc模型initThreejs() { let camera, scene, renderer; let mesh; let clock = new THREE.Clock(); const dracoLoader = new DRACOLoader(); dracoLoader.setDecoderPath("js/libs/draco/"); dracoLoader.setDecoderConfig({ type: "js" }); init(); function init() { // 建立場景 scene = new THREE.Scene(); scene.background = new THREE.Color(0x000000); // 設定場景背景顏色 // 建立燈光 const light = new THREE.DirectionalLight(0xffffff); // 平行光 light.position.set(0.5, 1.0, 0.5).normalize(); // 設定平行光的方向,從(0.5, 1.0, 0.5)->target一般(0, 0, 0) scene.add(light); // 將燈光新增到場景中 // 建立相機 camera = new THREE.PerspectiveCamera( 35, (window.innerWidth - 201) / window.innerHeight, 1, 500 ); // 透視相機 camera.position.x = 0.5; camera.position.y = 0.5; // 設定相機的位置 camera.position.z = 1.8; scene.add(camera); // 將相機新增到場景中 // 建立渲染器 renderer = new THREE.WebGLRenderer({ antialias: true }); renderer.outputEncoding = THREE.sRGBEncoding; renderer.setPixelRatio(window.devicePixelRatio); renderer.setSize(window.innerWidth - 201, window.innerHeight); document.getElementById("THREE42").appendChild(renderer.domElement); // 建立軌道控制器 const controls = new OrbitControls(camera, renderer.domElement); controls.addEventListener("change", render); controls.update(); // 建立地面 const ground = new THREE.Mesh( new THREE.BoxGeometry(1, 0.0015, 1), new THREE.MeshPhongMaterial({ color: 0x999999, depthWrite: false, transparent: true, opacity: 1, }) ); ground.receiveShadow = true; scene.add(ground); document.addEventListener("pointerdown", animate); // 監聽滑鼠、手指落下 // 載入模型 dracoLoader.load("/models/models/draco/bunny.drc", function (geometry) { geometry.computeVertexNormals(); const material = new THREE.MeshStandardMaterial({ color: 0xffffff }); mesh = new THREE.Mesh(geometry, material); mesh.castShadow = true; mesh.receiveShadow = true; scene.add(mesh); dracoLoader.dispose(); render(); }); } function animate() { requestAnimationFrame(animate); const elapsed = clock.getElapsedTime(); // getElapsedTime 獲取自時鐘啟動後的秒數 // 讓縮放值根據秒數的增加呈函數式變化,以達到動畫展示的效果 let scale = 1 + 0.5 * Math.sin(2 * elapsed); mesh.scale.set(scale, scale, scale); render(); } function render() { renderer.render(scene, camera); } },
以上就是所有的程式碼和說明。
到此這篇關於vue+threejs寫物體動畫之物體縮放動畫效果的文章就介紹到這了,更多相關vue+threejs物體縮放動畫內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45