gpt4 book ai didi

三.js更新几何面 Material 索引

转载 作者:行者123 更新时间:2023-12-02 17:59:15 26 4
gpt4 key购买 nike

有没有办法改变现有网格物体表面的 Material 索引? How to Update Things 中未讨论此问题文档,所以我不确定是否可能。我为此使用了 WebGLRenderer 上下文。

这基本上就是我想做的事情:

// Make a mesh with two materials
var texture = THREE.ImageUtils.loadTexture(IMAGE_URL);
var geometry = new THREE.Geometry();
geometry.materials.push(new THREE.MeshBasicMaterial({ wireframe: true, vertexColors: THREE.FaceColors}));
geometry.materials.push(new THREE.MeshBasicMaterial({ map: texture, overdraw: true}));

whatever.forEach(function(w, i) {
geometry.vertices.push(makeVerts(w));

var materialIndex = 0;
var color = new THREE.Color(i);
geometry.faces.push(new THREE.Face4(i*4+0, i*4+1, i*4+2, i*4+3,
null, color, materialIndex));
});

var mesh = new THREE.Mesh(geometry, new THREE.MeshFaceMaterial());
scene.add(mesh)


// Later on, change some faces to a different material

geometry.faces.filter(someFilter).forEach(function(face) {
face.color = someOtherColor;
face.materialIndex = 1;
}

geometry.colorsNeedUpdate = true; // This is how to update the color, and it works.
//geometry.materialsNeedUpdate = true; // This isn't a thing, is it?

最佳答案

此答案仅适用于 r.125 之前的 Three.js 版本。

此行为已更改。

如果您使用的是THREE.Geometry,则可以使用以下模式来更改面 Material 索引:

mesh.geometry.faces[ 0 ].materialIndex = 1;

如果几何图形之前已经渲染过,您还必须设置

mesh.geometry.groupsNeedUpdate = true;

三.js r.124

关于三.js更新几何面 Material 索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12468906/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com