threejs3d可视化楼宇源码 threejs文档示例( 三 )

在render()函数中添加以下代码使上面在场景中添加的正方体运动起来 。
cube.rotation.x= 0.1;cube.rotation.y= 0.1;复制代码Controls(控制器)
轨道控制插件OrbitControls.js可以实现场景用鼠标交互,让场景动起来,控制场景的旋转、平移和缩放 。由于OrbitControls.js是一个插件,所以在three.js 中使用时,需要单独引入该文件 。
controls = new THREE.OrbitControls(camera);// 初始化控制器controls.target.set(0, 0, 0);// 设置控制器的焦点,使控制器围绕这个焦点进行旋转controls.minDistance = 80;// 设置移动的最短距离(默认为零)controls.maxDistance = 400;// 设置移动的最长距离(默认为无穷)controls.maxPolarAngle = Math.PI / 3;//绕垂直轨道的距离(范围是0-Math.PI,默认为Math.PI)controls.update();// 照相机转动时,必须更新该控制器复制代码配置该插件之后实现的效果:
操控效果按住鼠标左键并移动摄像机围绕场景中心旋转转动鼠标滑轮或按住中键并移动放大或缩小按住鼠标右键并移动在场景中平移上、下、左、右方向键在场景中平移
Loaders(加载器)
用来加载不同格式的文件,主要介绍以下三种:
OBJLoader加载器(需要单独引入js文件):用来加载.obj文件(分为有材质和没有材质两种) 。
// 没有材质new THREE.OBJLoader().load('./tree.obj', function (obj) {obj.scale.set(10, 10, 10);obj.position.set(-10, 0, 0);obj.children.forEach(function (e) {e.castShadow = true});// 设置阴影scene.add(obj)});复制代码MTLLoader加载器(需要单独引入js文件):用来加载.mtl文件(即加载有材质物体的obj文件之前先加载mtl文件) 。
// 有材质new THREE.MTLLoader().setPath('./model/VANS/').load('VANS.mtl', function (materials) {materials.preload();new THREE.OBJLoader().setMaterials(materials).setPath('./model/VANS/').load('VANS.obj', function (obj) {obj.scale.set(0.8, 0.8, 0.8);obj.position.set(-40, -50, 10);scene.add(obj)})});复制代码CSS2DRenderer加载器(需要单独引入js文件):如果要将基于HTML的标签与3D对象组合,则CSS2DRenderer渲染器非常有用 。这里,各个DOM元素也被包装到CSS2DObject的一个实例中并添加到场景图中 。
// 初始化 CSS2DRendererlabelRenderer = new THREE.CSS2DRenderer();labelRenderer.setSize(window.innerWidth, window.innerHeight); // 设置渲染器的大小labelRenderer.domElement.style.position = 'absolute';labelRenderer.domElement.style.top = 0;container.appendChild(labelRenderer.domElement);// 标注实例function addSprite(text, Mash, callback) {biaozhudiv = document.createElement('div');biaozhudiv.className = 'label';biaozhudiv.textContent = text;biaozhudiv.onclick = function () {callback(Mash)};biaozhuLabel = new THREE.CSS2DObject(biaozhudiv);biaozhuLabel.position.set(0, 0, 0);Mash.add(biaozhuLabel);}复制代码Textures(纹理)
纹理是一个2D图片(甚至也有1D和3D的纹理),它可以用来添加物体的细节;可以想象纹理是一张绘有砖块的纸,无缝折叠贴合到你的3D的房子上,这样你的房子看起来就像有砖墙外表了 。
var textureCube = new THREE.CubeTextureLoader().load(urls);scene.background = textureCube;复制代码Three.js vue.js1.用npm 安装three npm install three?????
three.js 安装地址 :
https://www.npmjs.com/package/three
安装成功后,在项目中 import three from ‘three’;,之后运行程序 。
发现控制台报错 default export is not declared in imported module 说明three.js没有默认的导出对象,应该写成 import * as three from ‘three’; 或者可以这样: import { Scene, WebGLRenderer, PerspectiveCamera, BoxGeometry, MeshBasicMaterial, Mesh} from ‘three’;
或者使用CommonJS的形式引入var three = require (‘three’);

推荐阅读