如何使用WebGL在运行时更新多维数据集的材质
How to update material of cube on runtime using WebGL?
我正在使用three.js制作动画。我想动态更新立方体网格的材质。以下是示例:
// create cube geometry
var material1 = [new THREE.MeshBasicMaterial({color:0xBEE2FF}),.....];
var geometry = new THREE.CubeGeometry(50, 50, 50,0,0,0,material1 );
var cube = new THREE.Mesh(geometry, new THREE.MeshFaceMaterial());
// ...
var material2 = [new THREE.MeshBasicMaterial({color:0xFFFFFF}), ...];
cube.geometry.materials = material2;
如果我使用CanvasRenderer,它会起作用。但当我更改为WebGL Renderer时,它抛出错误:Uncaught TypeError:无法读取未定义的属性"map"
如何使用WebGL在运行时更新多维数据集的材质?
对于代码片段,很难知道是什么导致了错误,但您无法更改涉及纹理存在与否的材质。尽量保持所有材料的类型相同。此外,您可能需要将material.needsUpdate
标志设置为true
。
您可以在Three.js wiki中找到更多关于如何使用WebGLRenderer
更新内容的详细信息和示例。
https://github.com/mrdoob/three.js/wiki/Updates
此外,这里有一把小提琴,它的作用与你试图做的类似:http://jsfiddle.net/2FZU7/51/
编辑:fiddle更新为three.js r.58
我认为问题在于您在多维数据集上设置的是"materials",而不是"material"。
cube.material = material2;
material.map = texture;
material.needsUpdate = true;
相关文章:
- React中的数据集表示
- 使用相同的数据集绘制各种符号
- 多维数据集网格未在指定的分区中绘制
- chart.js 2.0为数据集添加了新属性
- Kendo网格中数据集的最高值
- 具有大型数据集的组件仅在 IE11/Edge 上运行缓慢
- 具有关联数组数据集的D3.js表
- javascript中网络图表的大型数据集
- 具有多个数据集的分组散点图D3
- 如何在web上动态可视化数据集
- Javascript D3如何从CSV访问和操作数据集
- Chart.js2.X中的条形值-数据集元数据未定义
- 访问HTML数据集
- D3.js如何只创建一个绑定到多个数据项的数据集的元素
- 如何使用WebGL在运行时更新多维数据集的材质
- 在 BIRT 中输入参数后更新数据集查询
- 事件发射器与在 AngularJs 中更新大型数据集时的$watch
- 如何使用更新的数据集更新 d3.js饼图
- D3更新数据集,点击并重新绘制条形图
- d3:更新数据集不更新DOM