- Utils
- ImageUtils
- loadTextureCube(["", ""]);
- ShaderUtils
- UniformsUtils
- GeometryUtils
- merge = function(geometry1, object2/* mesh | geometry */){ … }
- geometry1是合成后的对象,第二个是要合并的对象,如果是mesh,就取mesh中的geometry对象
- Filter
- LinearFilter
- NearestFilter
- Effect
- BloomEffect
- postBloom = new BloomEffect(renderer, renderTarget, window.innerWidth, window.innerHeight, 4);
- Helper
- 辅助对象一键打开或关闭
-
# 将所有辅助对象放到helps数组中
var help = [];
helps.push(helper);
helps.push(faceNormalsHelper);
helps.push(vertexNormalsHelper);
window.addEventListener('keydown', onKeyDown, false);
function setVisible(visible){
for(var i = 0; i < helps.length; i++){
helps[i].visible = visible;
}
}
function onKeyDown(event){
switch(event.keyCode){
case 65: /*A*/
setVisible(false);
break;
case 83: /*S*/
setVisible(true);
break;
}
}
- GridHelper
- 介绍
- api
- THREE.GridHelper = function(size, step)
- 使用
- var helper = new THREE.GridHelper(200, 10);
- helper.setColors(0x0000ff, 0x808080);
- helper.position.y = -150;
- scene.add(helper);
- BoxHelper
- 介绍
- 长方体包围盒, 椭圆包围盒, 包围物体用于检查碰撞或辅助设计中表示选中
- 使用
- var boxHelper = new THREE.BoxHelper(mesh);
- scene.add(boxHelper);
- FaceNormalsHelper
- 介绍
- api
- FaceNormalsHelper(object, size, hex, linewidth)
- 使用
- var faceNormalsHelper = new THREE.FaceNormalsHelper(mesh, 10)
- VertexNormalsHelper
- WireframeHelper
- 物件
- Mirror
- 介绍
- 模拟一个镜子, 放在那, 就反射它前面的景物
- 原理是一个平面, 上面的材质不断变化
- API
- THREE.Mirror = function(renderer, camera options)
- renderer是渲染器
- camera最好是透视相机
- options
- textureWidth
- textureHeight
- clipBias
- color
- debugMode
- o-使用
-
var planeGeo = new THREE.PlanneGeometry(100.1, 100.1);
# 定义平面
groundMirror = new THREE.Mirror(
# 定义镜面
renderer,
camera,
{clipBias: 0.003,
textureWidth: WIDTH,
textureHeight: HEIGHT,
# 表示内存中生成纹理的大小, 最好和屏幕一样大, 否则有mosaic
debugMode: true}
# 开启调试模式会有辅助线
);
- AnimationHandler
- shader
- EffectComposer
- 介绍
- 用于渲染复杂效果, 例如将一个场景作为纹理传入, 例如用着色器将场景某部分模糊或发光处理
- 原理是将画面在一个临时缓冲区先画出来,再将大量效果组合. 一般是用着色器来实现
- 使用
- composer = new THREE.EffectComposer(render);
- 可以是WEBGLRenderer或CanvasRenderer
- 第二个参数是renderTarget(渲染目标), 没有时默认生成一个
- renderTarget是gpu的内部对象,用来暂存绘制结果
- composer.addPass(new THREE.RenderPass(scene, camera));
- 第一个效果通常是RenderPass, 它将渲染结果放入效果链中
- 将结果渲染到gpu的一个帧缓冲区(临时内存)
- pass中有enable成员变量, 只有为true时该pass才起作用
- var effect = new THREE.ShaderPass(THREE.DotScreenShader);
- DotScreenShader是examples/js/shaders中的一个
- 它定义了一些一致变量, 每个帧循环操作它们来控制渲染效果
- effect.uniforms[‘scale’].value = 4;
- composer.addPass(effect);
- var effect = new THREE.ShaderPass(THREE.RGBShiftShader);
- effect.uniforms[‘amount’].value = 0.0015;
- effect.renderToScreen = true;
- composer.addPass(effect);
- composer.render()
- 用它替换render.render(scene, camera)
- 遍历所有通道, 可以传入参数delta, 表示帧与帧之间渡过的时间
- API
- 方法
- 对象
- WebGLRenderTarget(width, height, options)
- width是缓冲区的宽度, height是缓冲区的高度, options是参数
- RenderPass(scene, camera, overrideMaterial, clearColor, clearAlpha)
- overrideMaterial表示一种材质, 它会覆盖先前设置的材质
- clearColor表示每一次帧缓冲绘制前的底色. 用于清除上一次绘制结果
- clearAlpha是0或1, 表示清除透明色
- this.enabled属性表示是否启用该pass
- 方法
- render(renderer, writeBuffer, readBuffer, delta)
- DotScreenShader
- RGBShiftShader
- 变化颜色分量RGBA, 如A点的R值不显示, 而取B点的R值
- angle表示偏移角度
- amount表示AB的长度. 由于纹理坐标为0到1, 所以0.005会有很多像素
- BloomPass(n)
- FilmPass(noiseIntensity, scanlinesIntensity, scanlinesCount, grayscale)
- 依赖FilmShader.js. 整个场景灰白, 或像lcd荧光屏在屏幕上看到线条等屏幕效果
- noiseIntensity 表示杂点的密度, 值越大杂点越多
- scanlinesIntensity 是扫描线的密度, 值越大扫描线透明度越小
- scanlinesCount 扫描线的数量
- grayscale 如果true表示黑白显示
- var effectFilm = new THREE.FilmPass(0.35, 0.75, 2048, false);
- effectFilm.renderToScreen = true;
- composer.addPass(effectFilm);
- Projector
- 介绍
- 包含各种矩阵
- 提供重要且简单的函数,进行二维和三维之间的转换
- 函数
- this.unprojectVector = function(vector, camera)
- 归一化空间中的点
- 归一化是将(-1, -1, -1)到(1, 1, 1)中的某个点还原成三维中的某个点
- vector是需要归一化的那个点,要归一化成(-1, -1)到(1, 1)空间的点
- camera是当前相机,有了相机才能计算当前投影。