<!DOCTYPE html>
<!--
文件名称:three.js加载obj+mtl文件
创建者:李国泉
创建日期:2018-12-14
TODO:
-->
<html>
<head>
<meta charset="gb2312">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="expires" content="Wed, 23 Aug 2006 12:40:27 UTC" />
<title>three.js加载obj+mtl</title>
<script src="js/jquery-2.0.3.min.js"></script>
<script src="js/three.js"></script>
<script src="js/OBJLoader.js"></script>
<script src="js/MTLLoader.js"></script>
<script src="js/OrbitControls.js"></script>
<script src="js/stats.min.js"></script>
<script src="js/TrackballControls.js" ></script>
</head>
<body>
<div id="WebGL-output"></div>
<script>
$(function(){
// 1、
var renderer = new THREE.WebGLRenderer(); // 渲染器构建
renderer.setClearColor('#6A993E'); // 背景色 // renderer.setClearColor(0xEEEEEE);
renderer.setSize(window.innerWidth , window.innerHeight);
// 2、
var camera = new THREE.PerspectiveCamera(45,window.innerWidth/window.innerHeight,0.1,1000); //相机构建
camera.position.x = -30; // 渲染视图视角
camera.position.y = 20;
camera.position.z = 30;
// 3、
var scene = new THREE.Scene(); // 场景构建
var axes = new THREE.AxisHelper(20); // 构建一个坐标轴
scene.add(axes);
// 4、
//添加材质灯光阴影 -- 必要
var spotLight = new THREE.SpotLight('#FFFFFF'); // 聚光灯
spotLight.position.set(-20,20,10);
spotLight.castShadow = true;
scene.add(spotLight);
var light = new THREE.AmbientLight(0xffffff, .3); // 环境光源颜色
light.position.set(30, 30, 0); // 光源位置
scene.add(light); // 光源添加到场景中
camera.lookAt(scene.position)
// 5、设置物体object
//创建控件并绑定在相机上
trackballControls = new THREE.TrackballControls(camera);
trackballControls.rotateSpeed = 1.0;
trackballControls.zoomSpeed = 1.0;
trackballControls.panSpeed = 1.0;
trackballControls.noZoom = false;
trackballControls.noPan = false;
trackballControls.staticMoving = true;
trackballControls.dynamicDampingFactor = 0.3;
// model
var onProgress = function(xhr) {
if (xhr.lengthComputable) {
var percentComplete = xhr.loaded / xhr.total * 100;
}
};
var onError = function(xhr) {
// console.log(xhr)
};
var mtlLoader = new THREE.MTLLoader(); // 模型1
mtlLoader.setPath('model/'); // obj mtl文件的目录
mtlLoader.load('JF.mtl', function(materials) {
materials.preload();
var objLoader = new THREE.OBJLoader();
objLoader.setMaterials(materials);
objLoader.setPath('model/');
objLoader.load('JF.obj', function(object) {
object.position.x = -10;
object.position.y = 0;
object.position.z = 0;
object.scale.set(0.1, 0.05, 0.1); // 长 高 宽 比例
scene.add(object);
}, onProgress, onError);
});
$("#WebGL-output").append(renderer.domElement)
function renderScene(){
var clock = new THREE.Clock();
var delta = clock.getDelta();
trackballControls.update(delta);
requestAnimationFrame(renderScene);
renderer.render(scene,camera);
}
renderScene();
})
</script>
</body>
</html>
webgldemo.zip
需积分: 10 127 浏览量
2019-05-27
11:31:29
上传
评论
收藏 8.76MB ZIP 举报
空城空梦空季忆
- 粉丝: 15
- 资源: 12
最新资源
- cesh代码使用,加入新方案
- 小程序包解密,解密.wxapkg
- 数据排行榜列表展示,用于排行页面展示
- ME2313-VB一款P-Channel沟道SOT23的MOSFET晶体管参数介绍与应用说明
- 基于时空图卷积ST-GCN的骨骼动作识别python源码+项目说明.zip
- ME2313A-VB一款P-Channel沟道SOT23的MOSFET晶体管参数介绍与应用说明
- 利用Microsoft.Office.Interop.Excel处理含有引用的excel表
- ME2312-VB一款N-Channel沟道SOT23的MOSFET晶体管参数介绍与应用说明
- 最详细的S7协议解析文档
- 手把手教你搭建RT-Thread环境
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈