效果图

demo

import './index.css';

var stats;
stats = new Stats();
document.body.appendChild( stats.dom ); var gui = new dat.GUI();
var fn = new function() {
this.rotationSpeed = 0.02;
this.bouncingSpeed = 0.03 ;
}
gui.add(fn,'rotationSpeed', 0, 0.5);
gui.add(fn,'bouncingSpeed', 0, 0.5); var renderer = new THREE.WebGLRenderer();
renderer.setSize(window.innerWidth, window.innerHeight);
renderer.shadowMap.enabled = true;
document.body.appendChild(renderer.domElement); var path = './static/textures/cube/MilkyWay/';
var format = '.jpg';
var envMap = new THREE.CubeTextureLoader().load( [
path + 'dark-s_px' + format,path + 'dark-s_nx' + format,
path + 'dark-s_py' + format, path + 'dark-s_ny' + format,
path + 'dark-s_pz' + format,path + 'dark-s_nz' + format
] ); var scene = new THREE.Scene();
scene.background = envMap; var camera = new THREE.PerspectiveCamera(95, window.innerWidth / window.innerHeight, 0.1, 2000);
camera.position.z = 2;
camera.position.x = 5;
camera.position.y = 5; // 自适应屏幕大小
window.addEventListener('resize', function(){
camera.aspect = window.innerWidth / window.innerHeight;
camera.updateProjectionMatrix();
renderer.setSize(window.innerWidth, window.innerHeight);
}, false); // 设置光源
(function(){
// 设置光源
var light = new THREE.PointLight( 0xffffff, 1.5, 2000 ); light.position.set( 0, 30, -20 );
light.castShadow = true;
light.shadow.mapSize.width = 1024;
light.shadow.mapSize.height = 1024; var textureLoader = new THREE.TextureLoader(); var textureFlare0 = textureLoader.load( "./static/textures/lensflare/lensflare0.png" );
var textureFlare1 = textureLoader.load( "./static/textures/lensflare/lensflare2.png" );
var textureFlare2 = textureLoader.load( "./static/textures/lensflare/lensflare3.png" ); var lensflare = new THREE.Lensflare(); lensflare.addElement( new THREE.LensflareElement( textureFlare0, 512, 0 ) );
lensflare.addElement( new THREE.LensflareElement( textureFlare1, 512, 0 ) );
lensflare.addElement( new THREE.LensflareElement( textureFlare2, 60, 0.6 ) ); light.add( lensflare ); scene.add( light );
})(); // 加载模型
(function(){
// model
var loader = new THREE.GLTFLoader();
loader.load( './static/models/gltf/Duck/glTF/Duck.gltf', function ( gltf ) {
console.log(gltf)
gltf.scene.traverse( function ( child ) {
if ( child.isMesh ) {
child.material.envMap = envMap;
}
} );
scene.add( gltf.scene );
}, undefined, function ( e ) {
console.error( e );
} ); })() var controls = new THREE.OrbitControls( camera, renderer.domElement );
controls.target.set( 0, 0, 0 );
controls.update(); var step = 0;
var animate = function () {
requestAnimationFrame(animate); // cube.rotation.x += 0.01;
// cube.rotation.y += 0.01; // sphere.position.y = 1 + (5*Math.abs(Math.sin(step+=0.04))); stats.begin();
renderer.render( scene, camera );
stats.end();
}; animate();

Three.js加载gltf模型的更多相关文章

  1. cesium加载gltf模型

    cesium加载gltf模型 一.采用vue-cesium:在项目里加载依赖包.命令如下: npm i --save vue-cesium 在main.js中加入如下代码: https://www.n ...

  2. cesium加载gltf模型点击以及列表点击定位弹窗

    前言 cesium 官网的api文档介绍地址cesium官网api,里面详细的介绍 cesium 各个类的介绍,还有就是在线例子:cesium 官网在线例子,这个也是学习 cesium 的好素材. 之 ...

  3. WebGL简易教程(十五):加载gltf模型

    目录 1. 概述 2. 实例 2.1. 数据 2.2. 程序 2.2.1. 文件读取 2.2.2. glTF格式解析 2.2.3. 初始化顶点缓冲区 2.2.4. 其他 3. 结果 4. 参考 5. ...

  4. three.js加载obj模型

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xht ...

  5. Cesium 加载 gltf 模型

    var viewer = new Cesium.Viewer('cesiumContainer', { /*帮助*/ navigationHelpButton: true, baseLayerPick ...

  6. WebGL three.js学习笔记 加载外部模型以及Tween.js动画

    WebGL three.js学习笔记 加载外部模型以及Tween.js动画 本文的程序实现了加载外部stl格式的模型,以及学习了如何把加载的模型变为一个粒子系统,并使用Tween.js对该粒子系统进行 ...

  7. xBIM 实战02 在浏览器中加载IFC模型文件并设置特效

    系列目录    [已更新最新开发文章,点击查看详细]  在模型浏览器中加载模型后,可以对模型做一些特殊操作.下图是常用的设置. 都是通过 xbim-viewer.js 中的 API 来设置以达到一定的 ...

  8. xBIM 实战01 在浏览器中加载IFC模型文件

    系列目录    [已更新最新开发文章,点击查看详细]  一.创建Web项目 打开VS,新建Web项目,选择 .NET Framework 4.5  选择一个空的项目 新建完成后,项目结构如下: 二.添 ...

  9. cesium 学习(五) 加载场景模型

    cesium 学习(五) 加载场景模型 一.前言 现在开始实际的看看效果,目前我所接触到基本上都是使用Cesium加载模型这个内容,以及在模型上进行操作.So,现在进行一些加载模型的学习,数据的话可以 ...

随机推荐

  1. 用I/O口模拟总线时序

    在做总线通信过程中,我们很少会用到这样方法,一般在我们选择MCU的时候都会带有你所需要的通信接口.但是,对于一些简单的通信应该用的场合,一般在一些传感器的数据通信过程中,传感器厂商会将通信协议做一些改 ...

  2. ArrayList、Vector、LinkedList(jdk8)

    一.ArrayList分析 1.类和构造方法 public class ArrayList<E> extends AbstractList<E> //可以看到其父类是Abstr ...

  3. 版本工具管理之----git

    如何查看隐藏文件夹: 如果你看不到.git目录,你需要让隐藏的文件可见.具体做法就是打开一个Terminal窗口,输入以下命令: defaults write com.apple.finder App ...

  4. New Concept English three (35)

    27 55 The word justice is usually associated with courts of law. We might say that justice has been ...

  5. php中生成树形菜单

    废话不多说!上代码 class tree { /** * 生成树型结构所需要的2维数组 * @var array */ var $arr = array(); /** * 生成树型结构所需修饰符号,可 ...

  6. 《Drools7.0.0.Final规则引擎教程》第4章 4.3 定时器

    定时器 规则用基于 interval(间隔)和cron的定时器(timer),替代了被标注过时的duration 属性.timer属性的使用示例: timer ( int: <initial d ...

  7. 用 WEKA 进行数据挖掘——第二章: 回归

    回归 回归是最为简单易用的一种技术,但可能也是最不强大(这二者总是相伴而来,很有趣吧).此模型可以简单到只有一个输入变量和一个输出变量(在 Excel 中称为 Scatter 图形,或 OpenOff ...

  8. js实现把中文、英文标点转换

    所有英文符号转换成中文的符号 <SCRIPT LANGUAGE="JavaScript"> <!-- function meizz(str) { var tmp ...

  9. 旧书重温:0day2【6】bind_shell

    学习了以上5节课,我们学到了很多知识,例如如何动态获取指定函数的地址:我们也学到了很多经验,例如如何发现代码中的错误,如何用od定位到错误,并修正. 有了以上积累,今天我们继续实验bind_shell ...

  10. Quartz 2D编程指南(1) - 概览

    Quartz 2D编程指南是论坛会员德鲁伊翻译的国外的Quartz 2D一系列学习资料,供大家参考 Quartz 2D是一个二维图形绘制引擎,支持iOS环境和Mac OS X环境.我们可以使用Quar ...