网站3级营销是怎么做的深圳seo专家
简介
AWD
是一种用于三维场景的二进制格式,并且通常与http://away3d.com/
引擎一起使用。请注意,此加载程序不支持压缩的AWD
文件。
实现案例
案例查看地址:http://www.wjceo.com/blog/threejs/2018-03-22/134.html
- 首先,引入script加载器
<script src="/lib/js/loaders/AWDLoader.js"></script>
- 然后,实例化加载器对象,然后加载模型,
AWD
模型里面只保存了几何体,所以我们实例化了一个纹理,添加到场景当中。
var loader = new THREE.AWDLoader();
loader.load("/lib/assets/models/awd/PolarBear.awd", function (model) {//遍历模型的子元素,只要是模型一部分,就添加纹理model.traverse(function (child) {if (child instanceof THREE.Mesh) {child.material = new THREE.MeshLambertMaterial({color: 0x00ffff});console.log(child.geometry);}});//调整模型的方向和大小并放到场景当中model.rotation.y = Math.PI;model.scale.set(0.1, 0.1, 0.1);scene.add(model);
});
案例代码
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><style type="text/css">html, body {margin: 0;height: 100%;}canvas {display: block;}</style>
</head>
<body onload="draw();"></body>
<script src="/lib/three.js"></script>
<script src="/lib/js/loaders/AWDLoader.js"></script>
<script src="/lib/js/controls/OrbitControls.js"></script>
<script src="/lib/js/libs/stats.min.js"></script>
<script src="/lib/js/libs/dat.gui.min.js"></script><script>var renderer;function initRender() {renderer = new THREE.WebGLRenderer({antialias:true});renderer.setSize(window.innerWidth, window.innerHeight);//告诉渲染器需要阴影效果renderer.setClearColor(0xffffff);document.body.appendChild(renderer.domElement);}var camera;function initCamera() {camera = new THREE.PerspectiveCamera(45, window.innerWidth/window.innerHeight, 0.1, 1000);camera.position.set(0, 40, 50);camera.lookAt(new THREE.Vector3(0,0,0));}var scene;function initScene() {scene = new THREE.Scene();}//初始化dat.GUI简化试验流程var gui;function initGui() {//声明一个保存需求修改的相关数据的对象gui = {};var datGui = new dat.GUI();//将设置属性添加到gui当中,gui.add(对象,属性,最小值,最大值)}var light;function initLight() {scene.add(new THREE.AmbientLight(0x444444));light = new THREE.PointLight(0xffffff);light.position.set(0,50,50);//告诉平行光需要开启阴影投射light.castShadow = true;scene.add(light);}function initModel() {//辅助工具var helper = new THREE.AxesHelper(50);scene.add(helper);var loader = new THREE.AWDLoader();loader.load("/lib/assets/models/awd/PolarBear.awd", function (model) {//遍历模型的子元素,只要是模型一部分,就添加纹理model.traverse(function (child) {if (child instanceof THREE.Mesh) {child.material = new THREE.MeshLambertMaterial({color: 0x00ffff});console.log(child.geometry);}});//调整模型的方向和大小并放到场景当中model.rotation.y = Math.PI;model.scale.set(0.1, 0.1, 0.1);scene.add(model);});}//初始化性能插件var stats;function initStats() {stats = new Stats();document.body.appendChild(stats.dom);}//用户交互插件 鼠标左键按住旋转,右键按住平移,滚轮缩放var controls;function initControls() {controls = new THREE.OrbitControls( camera, renderer.domElement );// 如果使用animate方法时,将此函数删除//controls.addEventListener( 'change', render );// 使动画循环使用时阻尼或自转 意思是否有惯性controls.enableDamping = true;//动态阻尼系数 就是鼠标拖拽旋转灵敏度//controls.dampingFactor = 0.25;//是否可以缩放controls.enableZoom = true;//是否自动旋转controls.autoRotate = true;controls.autoRotateSpeed = 0.5;//设置相机距离原点的最远距离controls.minDistance = 1;//设置相机距离原点的最远距离controls.maxDistance = 200;//是否开启右键拖拽controls.enablePan = true;}function render() {renderer.render( scene, camera );}//窗口变动触发的函数function onWindowResize() {camera.aspect = window.innerWidth / window.innerHeight;camera.updateProjectionMatrix();render();renderer.setSize( window.innerWidth, window.innerHeight );}function animate() {//更新控制器render();//更新性能插件stats.update();controls.update();requestAnimationFrame(animate);}function draw() {initGui();initRender();initScene();initCamera();initLight();initModel();initControls();initStats();animate();window.onresize = onWindowResize;}
</script>
</html>