[英]Three.js - update Mesh Colour of Object3D
我有一个 Three.js Object3D
,我想更新它的颜色。
我最初使用MeshStandardMaterial
构建网格并将其添加到场景中。 后来,我通过 ID 查找这个对象并从场景中检索一个Object3D
。 此时如何更新网格的颜色 - 可能吗?
如果我必须删除 3D 对象并添加一个全新的对象 - 有没有办法从Object3D
本身检索最初用于构造它的几何图形? 我宁愿不存储原始几何图形到对象 ID 的映射,因为这会使代码变得混乱。 我能想到的一种选择是将几何体存储在Object3D.UserData
,但这又是次优的,因为当前网格是在其他地方构建的 - 然后添加到场景中(用户数据仅在添加到场景后才可用) .
我找到了一种将texture
添加到Object3D
。
您可以映射children
属性来更新网格的材质。
function onLoad(object) {
// `children` is an array of `Mesh` than contain 1 or more Meshes
object.children.forEach((mesh) => {
if (!mesh) return;
const material = mesh.material;
material.map = ghostColorTexture;
material.normalMap = ghostNormalTexture;
});
}
const objLoader = new OBJLoader();
objLoader.load(
'/models/ghost/model/ghost.obj',
onLoad,
undefined,
function (error) {
console.error('error', error);
}
);
Object3D
可以是由Geometry
和Material
组成的Mesh
。 如果要更新颜色,只需选择该材质,并为其指定新颜色:
object.material.color.setHex(0xff9900); // Sets to orange
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.