时间:2021-05-26
3D机房系统是最近用户的需求,通过相关了解最后使用Three.js,也发现最近有东西可以写出来分享:
分步实现3D效果
一 . 初始化3D模型参数
//参数处理 this.option = new Object(); this.option.antialias = option.antialias || true; this.option.clearCoolr = option.clearCoolr || 0x1b7ace; this.option.showHelpGrid = option.showHelpGrid || false; //对象 this.id = id; this.width = width(); this.height = height(); this.renderer = null;//渲染器 this.scene = null;//场景 this.camera = null;//摄像机 this.selected=null; this.objects = []; this.mouseClick = new THREE.Vector2(); this.raycaster = new THREE.Raycaster(); this.controls = null;//鼠标控制器 this.trsnaformControls = null;//鼠标控制器 this.dragcontrols = null; this.objList = json.objects;//对象列表 this.eventList = json.events;//事件对象列表 this.dragList = []; this.objectStatusList = {}; this.clickList = []; var that = this;对于一些需要使用的参数,开始加载进行初始化操作。
二 . 开始搭建场景
搭建场景包含一些具体的初始化操作 一些初始化方法(之后才对具体方法加以说明):
var that = this; room3dObj = that; that.initThree(that.id); //初始化渲染器 that.initCamera(); //初始化摄像机 that.initScene();//创建场景 that.initHelpGrid();//创建网格 that.initLight();//灯光布置 //添加3D对象 $.each(that.objList, function (index,obj) { that.InitAddObject(obj);//添加对象到场景中 }); that.initMouseCtrl();//创建鼠标控制器 that.animation();//循环渲染界面三 . 初始化渲染器
渲染器 WebGLRenderer 定义语法:
var that = this; that.renderer = new THREE.WebGLRenderer({ alpha: true, antialias: that.option.antialias }); that.renderer.setSize(that.width, that.height); $(“#” + that.id).append(that.renderer.domElement); that.renderer.setClearColor(that.option.clearCoolr, 1.0); that.renderer.shadowMap.enabled = true; that.renderer.shadowMapSoft = true; //事件 that.renderer.domElement.addEventListener(‘mousedown',that.onDocumentMouseDown, false); that.renderer.domElement.addEventListener(‘mousemove',that.onDocumentMouseMove, false);四 . 初始化摄像机
采用PerspectiveCamera 相机:
var that = this; that.camera = new THREE.PerspectiveCamera(45, that.width / that.height, 1, 100000); that.camera.name = 'mainCamera'; that.camera.position.x =0; that.camera.position.y =2000; that.camera.position.z =1800; that.camera.up.x = 0; that.camera.up.y =1; that.camera.up.z =0; that.camera.lookAt({ x: 100, y: 0, z: 100 }); that.objects.push(that.camera); that.dragList.push(that.camera); that.clickList.push(that.camera);五 . 创建场景
var that = this; that.scene = new THREE.Scene();六 . 灯光布置
var that = this; var light = new THREE.AmbientLight(0xcccccc); light.position.set(0, 0,0); that.scene.add(light); var light2 = new THREE.PointLight(0x555555); light2.shadow.camera.near =1; light2.shadow.camera.far = 5000; light2.position.set(0, 350, 0); light2.castShadow = true;//表示这个光是可以产生阴影的 that.scene.add(light2);七 . 创建网格
八 . 循环渲染界面
var that = room3dObj; if (TWEEN != null && typeof (TWEEN) != ‘undefined') { TWEEN.update(); } requestAnimationFrame(that.animation); that.renderer.render(that.scene, that.camera);九 . 创建鼠标控制器
var that = this; that.controls = new THREE.OrbitControls(that.camera,that.renderer.domElement); that.controls.addEventListener(‘change', that.updateControls);十 . 添加对象到场景中
var that = room3dObj; that.scene.add(obj); that.objects.push(obj);最后效果
浏览器兼容
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
Three.JS实现3D动画。Three.JS在3D动画的实现上,主要通过两个步骤来进行,首先是通过循环渲染来促成动画的实现,其次是应用动画引擎来进行动画的实现
国庆8天长假,重庆之行因故未成,偶得闲,用three.js结合cannon.js写个3D小游戏耍耍。在微信小游戏中,把three.js的3D内容在离屏画布处理,
vue中安装Three.js近来无聊顺便研究一些关于3D图形化库。three.js是JavaScript编写的WebGL第三方库。Three.js是一款运行在浏
Three.js引擎的优势。相对于传统的Web3D技术,以WebGL为支撑的Three.js引擎具有以下优势:1)无须插件。可以直接支持3D图形的GPU硬件加速
Three.JS绘制3D图形。在应用过程中,three.JS就是通过WebGL来封装场景、着色器等内容,然后要通过封装来提高应用者在网页设计中的直观性,同时也能