2
A
回答
1
取决于“改变颜色”的含义。请注意,合并后,网格就像其他任何未合并网格一样。
如果您指的是顶点颜色,则可能会遍历面并根据材质索引确定要更改颜色的顶点。
如果你的意思是为材料本身设置一种颜色,确定它是可能的。合并后的网格物体仍然可以使用与普通网格物体相同方式的多种材质 - 在MeshFaceMaterial
中,尽管如果要合并自己,您需要为每个几何体传入材料索引偏移量参数。
1
this.meshMaterials.push(new THREE.MeshBasicMaterial(
{color:0x00ff00 * Math.random(), side:THREE.DoubleSide}));
for (var face in geometry.faces) {
geometry.faces[face].materialIndex = this.meshMaterials.length-1;
}
var mesh = new THREE.Mesh(geometry);
THREE.GeometryUtils.merge(this.globalMesh, mesh);
var mesh = new THREE.Mesh(this.globalMesh, new THREE.MeshFaceMaterial(this.meshMaterials));
工程就像一个魅力,为那些需要示例,但!这创建了多个额外的缓冲区(索引和顶点数据),并且多个drawElements也调用:(我检查绘制调用与webgl inpector,之前添加MeshFaceMaterial:75调用opengl api容易在60fps运行,之后:3490调用opengl api fps下降约20%45-50 fps,这意味着drawElements被称为每个网格,我们没有合并网格的上下文,我错过了这里的东西吗?我想在同一个缓冲区上共享不同的材质
2
@hgates,你最近的评论对我很有帮助,我一直在寻找相同的东西!
好吧我设置了每个面对一种颜色,并在 材质上设置为true vertexColor,即可解决问题! :)
这里我写的整个概念是我为了增加一个合适的回答为那些谁是在相同的情况下使用:
// Define a main Geometry used for the final mesh
var mainGeometry = new THREE.Geometry();
// Create a Geometry, a Material and a Mesh shared by all the shapes you want to merge together (here I did 1000 cubes)
var cubeGeometry = new THREE.CubeGeometry(1, 1, 1);
var cubeMaterial = new THREE.MeshBasicMaterial({vertexColors: true});
var cubeMesh = new THREE.Mesh(cubeGeometry);
var i = 0;
for (i; i<1000; i++) {
// I set the color to the material for each of my cubes individually, which is just random here
cubeMaterial.color.setHex(Math.random() * 0xffffff);
// For each face of the cube, I assign the color
for (var j = 0; j < cubeGeometry.faces.length; j ++) {
cubeGeometry.faces[ j ].color = cubeMaterial.color;
}
// Each cube is merged to the mainGeometry
THREE.GeometryUtils.merge(mainGeometry, cubeMesh);
}
// Then I create my final mesh, composed of the mainGeometry and the cubeMaterial
var finalMesh = new THREE.Mesh(mainGeometry, cubeMaterial);
scene.add(finalMesh);
希望这将有助于它帮我! :)
相关问题
- 1. 更改网格面的材质或颜色
- 2. 更改babylon.js中材质的颜色
- 3. 更改材质设计AppCompat ActionBar颜色
- 4. 三种js黑色透明材质
- 5. 改变three.js,三个js特质的颜色?
- 6. 更改立方体三js的颜色
- 7. 计算材质颜色
- 8. 如何更改Unity中材质的颜色?
- 9. 如何更改材质viewpager标签指标的文字颜色?
- 10. 用javascript更改网格框的颜色
- 11. 角度材质2 - 更改md-select占位符颜色
- 12. 角度材质 - 更改对比颜色不透明度
- 13. 温泉UI 2.0如何更改材质颜色?
- 14. 用距离更改网格的几何图形/材质
- 15. 在api上更改材质设计的菜单背景颜色8
- 16. 如何更改三个js中的墙壁颜色或图像?
- 17. ThreeJS多重材质或网格上的着色器
- 18. 如何更改网格上的一个点的颜色
- 19. 如何更改NavigationDrawer材质设计中每个菜单项的背景颜色?
- 20. 材质2 md菜单如何更改仅一个菜单的背景颜色
- 21. 如何更改THREE.js中只有一个对象的材质颜色
- 22. 如何更改此网格上各个方块的颜色...?
- 23. 更改网格标签的颜色
- 24. 更改网格中矩形的颜色
- 25. 动态颜色更改不能在三个JS中工作
- 26. 材质没有颜色属性'_TintColor'
- 27. OpenGL纹理替换材质颜色
- 28. 材质设计图标颜色
- 29. 背景颜色变化材质设计
- 30. three.js所 - 更改材质上运行
thanx的精度,我认为我们很好,改变颜色materiel点击网格(合并200网格到一个)的索引,会检查出这 – hgates 2013-05-07 13:34:31