四时宝库

程序员的知识宝库

threejs监视器和过度器(system guard运行时监视器是干什么用的)


<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>Three框架</title>

<script src="js/Three.js"></script>

<script src="js/Stats.js"></script>

<script src="js/tween.min.js"></script>



<style type="text/css">

div#canvas-frame {

border: none;

cursor: pointer;

width: 100%;

height: 600px;

background-color: #EEEEEE;

}

</style>

<script>

var renderer

function initThree() {

width = document.getElementById('canvas-frame').clientWidth;

height = document.getElementById('canvas-frame').clientHeight;

renderer = new THREE.WebGLRenderer({

antialias : true

});

renderer.setSize(width, height);

document.getElementById('canvas-frame').appendChild(renderer.domElement);

renderer.setClearColor(0xFFFFFF, 1.0);

}

var star // 定义侦测变量

// 创建侦测函数



function initstar(){

star = new Stats() //创建侦测对象

star.domElement.style.position = 'absolute' // 对象的定位是绝对定位

star.domElement.style.left = '5px' // 窗体左边距5像素

star.domElement.style.top = '5px' // 窗体上边距5像素

document.getElementById('canvas-frame').appendChild(star.domElement)// 侦测对象添加到页面

}



//相机函数

var camera;

function initCamera() {

camera = new THREE.PerspectiveCamera(45, width / height, 1, 10000);

camera.position.x = 0;

camera.position.y = 0;

camera.position.z = 600;

camera.up.x = 0;

camera.up.y = 1;

camera.up.z = 0;

camera.lookAt({

x : 0,

y : 0,

z : 0

});

}

// 场景函数

var scene;

function initScene() {

scene = new THREE.Scene();

}

// 灯光函数

var light;

function initLight() {

light = new THREE.AmbientLight(0xFFFFFF);

light.position.set(100, 100, 200);

scene.add(light);

light = new THREE.PointLight(0x00FF00);

light.position.set(0, 0,300);

scene.add(light);

}

// 实物函数

var cube,mesh

function initObject() {

var geometry = new THREE.CylinderGeometry( 100,150,400);

var material = new THREE.MeshLambertMaterial( { color:0xFFFF00} );

mesh = new THREE.Mesh( geometry,material);

mesh.position = new THREE.Vector3(0,0,0);

scene.add(mesh);

}


//初始化过度器函数

function initTween(a){

// new TWEEN.Tween(camera.position)

// 改变相机的位置到400,用3秒时间,重复3+1次

new TWEEN.Tween(a.position)

.to({x: 200}, 3000).repeat(3).start()

}




// 主函数

function threeStart(a=mesh) {

initstar(); // 调用监视器函数

initThree(); // 调用初始化three

initCamera(); // 初始化相机

initScene(); // 初始化场景

initLight(); // 初始化灯光

initObject(); // 初始化物体

animation(); // 初始化动画函数

initTween(a=mesh) // 初始化过度器

}


// 动画函数

function animation()

{

star.begin()

//renderer.clear();

TWEEN.update() // 更新过度器的数据

// camera.position.x += 0.1

renderer.render(scene, camera);

requestAnimationFrame(animation);

star.end();

}

</script>

</head>

<body onload="threeStart();">

<div id="canvas-frame"></div>

</body>

</html>

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接