Three 学习日志(七)—— 动画渲染循环
一、旋转动画
function render ( ) { renderer. render ( scene, camera) ; mesh. rotateY ( 0.01 ) ; requestAnimationFrame ( render) ;
}
render ( ) ;
二、计算两帧渲染时间间隔和帧率
const clock = new THREE. Clock ( ) ;
const spt = clock. getDelta ( ) * 1000 ;
console. log ( '两帧渲染时间间隔(毫秒)' , spt) ;
console. log ( '帧率FPS' , 1000 / spt) ;
三、完整代码
<! DOCTYPE html >
< html lang = " en" > < head> < meta charset = " UTF-8" > < meta name = " viewport" content = " width=device-width, initial-scale=1.0" > < title> Learn Three</ title> < script src = " ../build/three.js" > </ script> < script type = " importmap" > { "imports" : { "three" : "../build/three.module.js" , "three/addons/" : "../examples/jsm/" } } </ script>
</ head> < body> < script type = " module" > import { OrbitControls } from 'three/addons/controls/OrbitControls.js' ; const scene = new THREE. Scene ( ) ; const axesHelper = new THREE. AxesHelper ( 150 ) ; scene. add ( axesHelper) ; const geometry = new THREE. BoxGeometry ( 100 , 100 , 100 ) ; const material = new THREE. MeshBasicMaterial ( { color : 0xff0000 , transparent : true , opacity : 0.5 , } ) ; const mesh = new THREE. Mesh ( geometry, material) ; mesh. position. set ( 0 , 0 , 0 ) ; scene. add ( mesh) ; const ambient = new THREE. AmbientLight ( 0xffffff , 0.4 ) ; scene. add ( ambient) ; const camera = new THREE. PerspectiveCamera ( ) ; camera. position. set ( 200 , 200 , 200 ) ; camera. lookAt ( 0 , 0 , 0 ) ; const width = 800 ; const height = 500 ; const renderer = new THREE. WebGLRenderer ( ) ; renderer. setSize ( width, height) ; renderer. render ( scene, camera) ; document. body. appendChild ( renderer. domElement) ; const clock = new THREE. Clock ( ) ; function render ( ) { const spt = clock. getDelta ( ) * 1000 ; console. log ( '两帧渲染时间间隔(毫秒)' , spt) ; console. log ( '帧率FPS' , 1000 / spt) ; renderer. render ( scene, camera) ; mesh. rotateY ( 0.01 ) ; requestAnimationFrame ( render) ; } render ( ) ; </ script>
</ body> </ html>