Three.js - 渲染器(WebGLRenderer)(二)
简介
在three.js
中内置了很多渲染器,选择什么渲染器
都是根据需求来判断的。本节我们详细了解最常用的渲染器 WebGLRenderer
渲染器(WebGLRenderer)
WebGLRenderer
主要作用就是把相机视椎体中的三维场景渲染成一个二维图片显示在画布上- 实例化
new WebGLRenderer()
接受一个对象参数作为渲染器
的行为配置。不传参数都会执行其默认值。常用配置:
canvas
与渲染器绑定的画布节点。不传内部会自己创建一个新的画布节点,使用.domElement
获取。context
渲染上下文(RenderingContext
) 对象。就是将渲染器
附加到已经创建的WebGL
上下文中以便后期操作。默认为null
precision
着色器精度。渲染成图片的颜色精度。值:highp/mediump/lowp
默认为highp
。alpha
是否可以设置背景色透明。默认为false
。antialias
是否执行抗锯齿。默认为false
。preserveDrawingBuffer
是否保留缓直到手动清除或被覆盖。 默认false
。
.autoClear
定义渲染器是否在渲染每一帧之前自动清除其输出。.autoClearColor
定义渲染器是否需要清除颜色缓存。默认为true
。.autoClearDepth
定义渲染器是否清除深度缓存。 默认是true
。.autoClearStencil
定义渲染器是否需要清除模板缓存。默认为true
。.domElement
返回画布节点。当配置参数没关联canvas
,会自动创建一个新的画布节点,需要手动放入html
中。.shadowMap
是一个对象。当我们需要阴影时就需要开启它。.shadowMap.enabled
是否允许在场景中使用阴影贴图,默认false
。.shadowMap.autoUpdate
是否启动场景中的阴影自动更新,默认是true
。.shadowMap.type
值是Integer
类型,定义阴影贴图类型。可选值有THREE.BasicShadowMap, THREE.PCFShadowMap (默认), THREE.PCFSoftShadowMap 和 THREE.VSMShadowMapTHREE
全局常量值,代表不同的数字。
.clear(color:Boolean, depth:Boolean, stencil:Boolean )
渲染器清除颜色、深度或模板缓存。.getContext()
返回WebGL
上下。.render()(scene,camera)
传入场景和相机,在画布上渲染图片。.setClearColor(color,alpha)
设置背景颜色和透明度。.setSize()( width,height)
修改canvas
节点的宽高。
开始使用
- 在上一节的代码基础上进行修改。
- 渲染器绑定已存在的canvas节点。
const canvas = document.querySelector('#c2d')// 渲染器 实例化const renderer = new THREE.WebGLRenderer({ canvas:canvas })
- 渲染器自定义节点
// 渲染器 实例化const renderer = new THREE.WebGLRenderer()// 设置 画布宽高renderer.setSize(1000, 500)// 加入htmldocument.body.appendChild(renderer.domElement)
- 两种方式实现的效果都是一样的
- 获取上下文
console.log('getContext()', renderer.getContext())
- 设置背景颜色和透明度
renderer.setClearColor(0xeeeeee, 0.5)
- 渲染器绘制图片。使用
.render()
绘制图片到画布上,每当场景发生变换都需要重新执行一次,绘制最新的图片。在绘制过程就它会根据配置信息去判断是否有缓存,来快速绘制。当然不是所有缓存都开启最好,缓存是需要内存空间的,当空间不足时程序就会出错。
function render(time) {time *= 0.001sunMesh.rotation.y = timesunMesh.rotation.x = time// 加载渲染器renderer.render(scene, camera)// 开始动画requestAnimationFrame(render)}
总结
渲染器(WebGLRenderer) 简单理解就是,把我们绘制的场景图,通过相机视椎体的范围来截取,转化为一张图片。然后去绑定页面上canvas元素
把这张图片绘制到元素上。动画效果就是不断的生成新的图片替换原来的图片来实现的。渲染器上有很多属性和方法,都是配合其他内容一起使用的,比如阴影就需要灯光和几何体来配合才能展示。
Three.js - 渲染器(WebGLRenderer)(二)相关推荐
- three.js 渲染器更改背景色的几种方法
有两种渲染器 : var renderer=new THREE.CanvasRenderer(); 几何级别的渲染,兼容性更好 var renderer=new THREE.WebGLRen ...
- Three.js之渲染器
本篇文章将详细讲解three.js中渲染器(renderer)的设置方法. three.js文档中渲染器的分支如下: Renderers CanvasRenderer DOMRenderer SVGR ...
- node.js 学习笔记(二)模板引擎和C/S渲染
node.js 学习笔记(二)模板引擎和C/S渲染 文章目录 node.js 学习笔记(二)模板引擎和C/S渲染 一.初步实现Apache功能 1.1 使用模板引擎 1.2 在 node 中使用模板引 ...
- 深入学习SAP UI5框架代码系列之二:UI5 控件的渲染器
这是Jerry 2020年的第79篇文章,也是汪子熙公众号总共第261篇原创文章. 系列目录 (0) SAP UI5应用开发人员了解UI5框架代码的意义 (1) UI5 module懒加载机制 (2) ...
- Three.js-CSS渲染器(CSS2DRenderer)
在Three中提供2D和3Dcss渲染器供用户使用,如果你希望将二维或三维物体和基于HTML的标签相结合,则这一渲染器将十分有用.在这里,各个DOM元素也被包含到一个CSS2DObject或CSS3D ...
- 解决three.js渲染gltf 模型与gltfViewer网站效果不一致问题 krpano发黑问题 three.js gltf模型渲染发黑问题
解决使用three.js渲染gltf模型与gltfViewer网站上预览不一致的问题: 原因 灯光和环境贴图 直接上代码 function init(e) { //声明初始化函数$("#pr ...
- three.js渲染带动画的glb文件(内附源码,保姆级)
今日份的下午格外的懒惰,本来不想写辣么长长的一串文字了和解释说明的, 但是发文助手提醒我篇幅较短,曝光比较少,该说不说,这有点过分了. 那就一步步来吧哎 最底下附带了案例源文件 1.准备好three. ...
- 画个球啊(下)——Three.js渲染素描风格场景
工具链:建模软件3dsmax + WebGL三维图形库three.js + 记事本notepad++ 外部素材:3张笔触贴图素材 参照文章:使用 WebGL实现素描效果的渲染 源码:sphere-sk ...
- Three.js杂记(十二)—— VR全景效果制作·中
文章目录 序 正文开始 引入threeJs 材料收集 实现原理 实现步骤 基础的全景完成 完整Vue代码 总结 序 在web的前端发展过程中,对于视觉化的要求已经越来越高 有关于VR全景的效果也同样可 ...
- Three.js渲染Dom元素到3D场景
效果 中间两个swiper部分用dom方式实现,再将其转化成为Three中的CSS3DObject对象添加到3D场景中, 代码 需要创建两个场景与渲染器(普通渲染器,CSS3Render) 通过两个场 ...
最新文章
- SQL Server中通过设置SET NOCOUNT来优化存储过程
- 利用过采样技术提高ADC测量微弱信号时的分辨率
- 在Struts 2.0中国际化(i18n)您的应用程序
- P1586 四方定理
- C#命令行编辑器csc.exe
- 2020 我的C++的学习之路 第八章函数
- 2013\Province_Java_C\1.猜年龄
- 20分钟打造你的Bootstrap站点
- matlab验证Ross随机过程(第二版)P19页的结果
- codeforce 266c Below the Diagonal 矩阵变换 (思维题)
- java restful_Java EE中的RESTful计时器
- C ++ 指针 | this指针_2
- HDU2892 area 简单多边形与圆面积交
- android contentresolver 批量,Android之使用ContentResolver对通信录中的数据进行简单操作...
- python可以做科学计算吗_用 Python 做科学计算之最小二乘
- wuzhicms内的全局函数--load_class()
- spring 操作对象写入mongo去除_class列
- Jsonp调用网易云音乐API搜索播放歌曲
- WPF下关于NotifyIcon的使用
- codevs5172 装病的聚聚 (最短路spfa的延伸应用)(对三角不等式的深入理解)--by lethalboy