【发布时间】:2022-02-07 18:18:14
【问题描述】:
我有一个从 Blender 导入的场景。我在场景中有几个屏幕,我想在这些屏幕上添加图像/视频。
注意:我正在使用 OOP 模型来创建应用程序
我已经使用 gltfLoader 导入了场景,我正在等待加载所有资源
this.resources.on('ready', () => {
// Setup
this.controlRoom = new ControlRoom()
this.tvScreen4x4 = new tvScreen4x4()
})
ControlRoom 是实际场景,另一个只是所有屏幕中的一个网格。
import * as THREE from 'three'
import Experience from "../../Experience.js"
export default class tvScreen4x4 {
constructor() {
this.experience = new Experience()
this.scene = this.experience.scene
this.resources = this.experience.resources
// Setup
this.setTexture()
this.setMaterial()
this.updateMesh()
}
setTexture() {
this.texture = {}
this.texture.normal = this.resources.items.tvScreen4x4
}
setMaterial() {
this.material = new THREE.MeshStandardMaterial({
map: this.texture.normal
})
}
updateMesh() {
this.scene.traverse((child) => {
if (child instanceof THREE.Mesh && child.name === 'tv_4x4_screen') {
child.material = this.material
child.material.needsUpdate = true
console.log(child.material);
}
})
}
}
this.resources.items.tvScreen4x4
正在从我的自定义 source.js 中返回此项目
export default [
{
name: 'controlRoom',
type: 'gltfModel',
path: 'models/controlroom.gltf'
},
{
name: 'tvScreen4x4',
type: 'texture',
path: 'textures/screen.jpg'
},
{
name: 'tvScreen5x4',
type: 'texture',
path: 'textures/screen.jpg'
},
{
name: 'tvScreen6x4',
type: 'texture',
path: 'textures/screen.jpg'
}
]
console.log(child.material) 返回以下内容:
我做错了什么,纹理没有显示在那个屏幕上?控制台日志返回正确的地图。
【问题讨论】:
标签: three.js