three.js - A-Frame & Three.js:彩色地图使对象变白
问题描述
我正在尝试为对象分配新材质,但是当我分配新的(颜色)贴图时,对象呈现为白色,并且 AO 和阴影不再显示。就好像自发光属性是 100%。我可以毫无问题地更改颜色属性(例如“红色”或“蓝色”)、ao、正常等。加载的 glb 已经有一个带有颜色图和 ao 的工作材料,但我希望能够替换它。
我正在使用带有 A-Frame 的 8th Wall,但我已将以下内容注册为自定义 Three.js 组件。
const customMat = {
schema: {}, // will pass textures via aframe later
init() {
this.el.addEventListener('model-loaded', (e) => {
const material = new THREE.MeshStandardMaterial()
const texLoader = new THREE.TextureLoader()
texLoader.crossOrigin = ''
const mapColor = texLoader.load('assets/cover_color.jpg')
const mapAO = texLoader.load('assets/cover_ao.jpg')
material.map = mapColor // makes everything 100% white likes it's emissive
// material.color = new THREE.Color('red') // works fine no problem
material.aoMap = mapAO
material.aoMapIntensity = 1
e.detail.model.traverse((mesh) => {
if (mesh.isMesh) {
mesh.material = material
mesh.material.needsUpdate = true // not sure if needed
}
})
})
},
}
export {customMat}
任何建议将不胜感激。我也用原始几何体试过这个,但同样的问题发生了。我似乎也无法修改现有材料的属性,所以我的方法可能从根本上是错误的。
解决方案
推荐阅读
- corda - 哪里可以得到神经图-
.jar 用于社区版的 Corda 网络设置? - ruby-on-rails - Rails:正在加载 wkhtmltopdf-binary-edge gem 中的 wkhtmltopdf 可执行文件
- arrays - 我可以将带有空格分隔符的字符串字段转换为mongoDB聚合中的数组吗
- python-3.x - 使用 python 生产代码将文本文件保存到远程文件服务器
- r - 循环仅检查 R 中向量的最后一个值
- css - 在 CSS 中,我如何选择*不是*具有符合可识别模式的类的容器元素的后代的元素?
- angularjs - AngularJS - 如果多次使用,指令内部的控制器仅被调用为第一个 deiretive
- javascript - 如何将中间点字符放入 .join() 中?
- node.js - 来自加密模块的 publicEncrypt,带有 RSA_PKCS1_PADDING,可能返回 255 字节而不是 256
- eclipse-rcp - 如何自定义 e4 应用程序的默认 SaveHandler?