1. setComponentsMaterialByKey
根据构件key修改构件材质。
1.1. 参数说明:
名称 | 说明 | 类型 | 是否必填 | 示例 |
---|---|---|---|---|
key | 构件key | string或string[] | 是 | "m123_123" |
materials | THREEJS材质数组 | THREE.Material或THREE.Material[] | 是 | [new THREE.Material()] |
isMaterialsSingleton | 材质是否为单例,单例为true | boolean | 是 | true |
orders | 构件材质修改映射表 | object | 否 | [{"compMatOrder":0,"replMatOrder":0}] |
返回值说明 | 类型 | 示例 |
---|---|---|
返回构件key和材质对象的映射 | objec | {"m123_123":{}} |
1.2. 调用方式:
/**
* 根据指定的构件key,修改构件材质
* 方法说明:此方法用于扩展构件材质,允许用户通过THREEJS材质对象,替换构件原始材质对象。
* @setMaterialComponentsByKey
* @param {array/string} key 构件key数组或构件key
* @param {THREE.Material/THREE.Material[]} materials 用户自定义的材质
* @param {boolean} isMaterialsSingleton 标记材质是否为单例
* true :材质为单例模式
* 说明:会用用户提供参数材质对象替换所有指定构件key参数
* 应用场景:1:只以显示为主替换构件材质,不做材质位置移动等动画效果
* 2:只做相同材质相同偏移效果动画,如设置多根水管构件以相同速度相同方向做材质偏移时
* 注意事项:当用户使用相同材质对象,以单例模式替换材质的时候,无论用户调用几次该方法,所有构件
* 使用的都是相同材质对象,都是用户的材质参数对象
* false :材质为多例模式
* 说明:会为所有构件提供相同材质副本,用户可以在返回的参数对象中拿到这些材质对象
* 应用场景:1:当需要为不同构件设置不同材质偏移或者动画时使用,如当需要为不同水管设置相同材质,
* 但是材质移动的方向和速度不同时,使用该模式
* 注意事项:1:在该模式下,当用户创建的材质包含纹理的情况下,用户必须保证纹理以加载完成,否则效果不可预期
* 2:当用户把构件材质都指向材质数组中同一个材质时,在本构件下,构件所有材质对象为同一个对象
* 3:用户以相同材质对象创建材质数组时,替换后,构件材质依旧时多例模式
* @param [object[]] orders 构件材质修改映射表
* object:{
* "compMatOrder":number, 需要修改构件材质的序号
* "replMatOrder":number 对应材质数组中的序号
* }
* 此参数为可选参数,如果用户未设置该参数,默认会按照构件材质顺序依次替换用户自定义材质数组中的顺序
* @return {object}
*/
let object=viewer3D.setComponentsMaterialByKey();
1.3. Demo示例:
示例名称 | 示例地址 |
---|---|
修改构件材质 | 去体验 |
添加平面贴图 | 去体验 |