Three.js 实时更新几何体的方法

基于性能的原因,改变几何体(Geometry)的某些属性不会引起浏览器对几何体(Geometry)的重新绘制。THREE.js会缓存一些
数据,例如几何体的顶点和面的信息,修改这些属性的时候需要通知THREE.js去更新几何体,这些几何体才能得到重新计算并更新。

需要通知THREE.js更新的几何体(Geometry)属性

下面这些属性的变动需要通知THREE.js更新
1. geometry.vertices
2. geometry.faces
3. geometry.morphTargets
4. geometry.faceVertexUvs
5. geometry.faces[i].normal and geometry.vertices[i].normal
6. geometry.faces[i].color and geometry.vertices[i].color
7. geometry.vertices[i].tangent
8. geometry.lineDistances

通知THREE.js更新

针对不同的属性变化,都可以设置该几何体实例的某个属性值为true来通知THREE.js重新计算这些几何体并更新,当THREE.js更新了这些几何体之后,这些属性值又会重新被设置为false。

//修改几何体各个面的颜色
this.changeColors = function () {
    var mesh = scene.getObjectByName('cube');
    mesh.geometry.faces.forEach(function (face) {
        face.color.copy(new THREE.Color(Math.random() * 0xffffff));
    });
};

//通过将几何体的colorsNeedUpdate的属性修改为true,来通知THREE.js该几何体的颜色发生变化。
var mesh = scene.getObjectByName('cube');
mesh.geometry.colorsNeedUpdate = true;
  • colorsNeedUpdate : geometry.faces[i].color and geometry.vertices[i].color发生变化的时候设置为true
  • verticesNeedUpdate:geometry.vertices发生变化的时候设置为true
  • elementsNeedUpdate:geometry.faces发生变化的时候设置为true
  • morphTargetsNeedUpdate:geometry.morphTargets发生变化的时候设置为true
  • uvsNeedUpdate:geometry.faceVertexUvs发生变化的时候设置为true
  • normalsNeedUpdate:geometry.faces[i].normal and geometry.vertices[i].normal发生变化的时候设置true
  • tangentsNeedUpdate:geometry.vertices[i].tangent发生变化的时候设置为true
  • needsUpdate:我们也可以动态的修改纹理和材质,材质发生改变的时候将material.needsUpdate设置为true来通知THREE.js重新进行计算绘制。

转至:http://blog.csdn.net/yangnianbing110/article/details/51318884

  • 4
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值