【发布时间】:2022-12-15 19:20:44
【问题描述】:
我加载了一个来自 Blender 的模型(使用 babylon js 导出器导出)。该模型带有材料。并且有 5 个网格(非常简单的测试模型)。
我想改变一些材料的反照率(自然光下的颜色),但不知道该怎么做,因为没有与材料相关的组件(因为是进口的)并且在反应中,通常有一个函数可以调用更新内部值(然后触发刷新)。
const onModelLoaded = model => {
model.meshes.forEach(mesh => {
console.log(`mesh... `, mesh.material.albedoColor);
// It shows well albedo of each material
});
};
export const SceneWithLoad = () => {
return (
<div>
<Engine antialias adaptToDeviceRatio canvasId="babylonJS">
<Scene>
<Suspense>
<Model
rootUrl="assets/firstLoco.babylon"
sceneFileName=""
onModelLoaded={onModelLoaded}
/>
</Suspense>
<hemisphericLight ... />
<arcRotateCamera ... />
</Scene>
</Engine>
</div>
);
};
加载网格时,我可以在 onModelLoaded 中看到每种材质的反照率(这很棒),现在我想定期更新反照率(setInterval(() => {changeAlbedo()}, 1000)),但是 Material 对象的引用在刷新时会发生变化,我需要调用用于了解代码的反应功能更新了材质反照率。
在这里找不到诀窍,谢谢您的建议!
【问题讨论】: