three.js学习笔记一
<!DOCTYPE html>
<html>
<head>
<meta charset=utf-8>
<title>three.js</title>
<script src="js/jquery-3.2.1.min.js"></script>
<script src="js/three.js"></script>
<!--stats.js 检测动画运动的帧频-->
<script src="js/stats.min.js"></script>
<style>
body { margin: 0;overflow:hidden; }
canvas { width: 100%; height: 100% }
</style>
</head>
<body>
<div id="WebGL-output">
</div>
<div id="Stats-output"></div>
</body>
</html>
$(function() { var scene = new THREE.Scene();//场景:容器 var camera = new THREE.PerspectiveCamera(45,window.innerWidth/window.innerHeight,0.1,1000);//相机 var renderer = new THREE.WebGLRenderer();//渲染器 renderer.setClearColor(0xEEEEEE,1.0);//设置scene背景色 renderer.shadowMap.enabled = true;//允许阴影映射 renderer.setSize(window.innerWidth,window.innerHeight);//将scene渲染的尺寸 var axes = new THREE.AxisHelper(10);//坐标轴:AxisHelper(size) scene.add(axes); //创建平面 var planeGeometry = new THREE.PlaneGeometry(60,20);//定义平面尺寸:宽、高 //材质:MeshLambertMaterial;MeshPhongMaterial 会与spotLight产生的光源发生反应 // MeshBasicMaterial(基本的材质,不会与spotLight产生的光源发生反应) var planeMaterial = new THREE.MeshBasicMaterial({color:0xcccccc});//创建一个基本的材质 var plane = new THREE.Mesh(planeGeometry,planeMaterial); plane.receiveShadow = true;//接受阴影 plane.rotation.x = -0.5*Math.PI; plane.position.x = 15; plane.position.y = 0; plane.position.z = 0; scene.add(plane); //创建方块 var boxGeometry = new THREE.BoxGeometry(4,4,4); var boxMaterial = new THREE.MeshLambertMaterial({ color:0xff0000, //wireframe: true//线框属性 }); var box = new THREE.Mesh(boxGeometry,boxMaterial); box.castShadow = true;//接受阴影 box.position.x = -4; box.position.y = 3; box.position.z = 0; scene.add(box); //创建多材质的几何图形 var cubeGeometry = new THREE.CubeGeometry(5,5,5); var materials = [ new THREE.MeshLambertMaterial({ color:0x44ff44, opacity:0.6, transparent:true }), new THREE.MeshBasicMaterial({ color:0xff0000, wireframe: true//线框属性 }), ] //支持多种材质 var mesh = THREE.SceneUtils.createMultiMaterialObject(cubeGeometry,materials); //为组中所有在子对象添加阴影 mesh.children.forEach(function(e){e.castShadow=true}); scene.add(mesh); //创建球体 var sphereGeometry = new THREE.SphereGeometry(4,20,20); var sphereMaterial = new THREE.MeshLambertMaterial({ color:0x7777ff, /*wireframe:true*/ }); var sphere = new THREE.Mesh(sphereGeometry,sphereMaterial); sphere.castShadow = true;//接受阴影 sphere.position.x= 20; sphere.position.y = 4; sphere.position.z = 2; scene.add(sphere); //添加光源 var spotLight = new THREE.SpotLight(0xffffff); spotLight.castShadow = true;//产生阴影 spotLight.position.set(-40,60,-10); scene.add(spotLight); //雾化 scene.fog = new THREE.Fog(0xffffff,0.015,100);//color,near,far //scene.fog = new THREE.Fog(0xffffff,0.015);//color,density //指定相机的位置 camera.position.x = -30; camera.position.y = 40; camera.position.z = 30; camera.lookAt(scene.position);//指向场景的中心 $("#WebGL-output").append(renderer.domElement); var stats = initStats(); var step = 0; function renderScene() { stats.update(); step += 0.04; sphere.position.x = 20+(10*(Math.cos(step))); sphere.position.y = 2+(10*(Math.abs(Math.sin(step)))); requestAnimationFrame(renderScene)//浏览器定义的时间间隔 renderer.render(scene,camera); } renderScene(); }) //显示动画的帧频 function initStats() { var stats = new Stats(); stats.setMode(0); stats.domElement.style.position = "absolute"; stats.domElement.style.left = '0px'; stats.domElement.style.top = '0px'; $("#Stats-output").append(stats.domElement); return stats; }
参考THREE.JS开发指南
其中:现版本修改之处:
1.允许阴影映射 x.shadowMap.enabled 替代 x.shadowMapEnabled 2.设置容器背景色 x.setClearColor(); 替代 x.setClearColorHex()
3.几何图形-方块
BoxGeometry();替代CubeGeometry()//在three.js里CubeGeometry = BoxGeometry;仍可使用
请务必怀疑我胡扯的正确性

浙公网安备 33010602011771号