8

我创建了一个建筑的草图模型,并将其导出到.dae码和纹理文件。我想使用在浏览器中显示它三个.js,但我发现了错误三个。MultiMaterial已删除。改用数组.我如何解决这个问题?

1答案1

重置为默认值
15

在新版的three.js中,您必须使用带有(items)materialas的简单数组,而不是multimaterial对象。以下是示例:

var几何=新三。BoxBufferGeometry(1,1,1);var材料=[新的三个。网格深度材料(),新的三个。网格常规材质(),新的三个。网格基本材质({线框:true}),新的三个。网格LambertMaterial({color:0xff0000}),新的三个。网格Phong材质({color:0x0000ff}),新的三个。网格标准材质({color:0x00ff00}),];var网格=新的三个。网格(几何体、材质);

同样重要!访问类似于:

if(Array.isArray(object.material)){对于(var m=0;m<对象材质长度;m++){对象.材质[m].颜色.设置(0xffffff);}}其他{object.material.color.set(0xffffff);}

在一些较旧版本的浏览器上isArray(isArray)不支持。在这种情况下,请使用:

if(对象类型.material.length!==“未定义”){//您的代码}

我为这一改进感到高兴。我不喜欢太多的理论和复杂的编程范式。最好的方法是:尽可能简单。

  • 这对我不起作用。我有两种独立工作的材料,但当我以数组形式通过其中一种或两种时,我什么也得不到。mesh.material的Console.log确实输出了一个数组,但我看不到我的对象。有什么问题吗? 评论 2018年3月21日11:11
  • 1
    传递材质数组并不像我预期的那样工作,因此出现了问题。错误地认为它会使材料分层。 评论 2018年3月21日11:25
  • @如果您需要社区的帮助,请发布代码中最相关的部分。 评论 2020年9月22日8:20

你的答案

单击“发布您的答案”,表示您同意我们的服务条款并确认您已阅读我们的隐私政策.

不是你想要的答案吗?浏览标记的其他问题问你自己的问题.