Búsqueda de sitios web

typescript - Three JS. "Error 'Property 'material' does not exist on type 'Object3D'' cuando se usa getObjectByName"


Estoy obteniendo los elementos de material de mi visualización mediante this.scene.getObjectByName("MeshName").material. Los elementos existen, todo está funcionando y cuando lo imprimo funciona. Lo necesito para cambiar la opacidad. Pero el problema es que estoy recibiendo el error "Property 'material' does not exist on type 'Object3D'" y debido a esto no puedo ejecutar ng build y necesito usar // @ts-ignore para ignorarlo. ¿Alguien sabe por qué es así?

Respuesta #1

Creo que el problema es que el tipo de retorno de getObjectByName() es Object3D. Y los objetos de este tipo no tienen una propiedad material.

Entonces, si estás seguro de que "MeshName" es el nombre de una malla, tienes que convertir el objeto devuelto a un material y luego acceder a material:

(this.scene.getObjectByName("MeshName") as THREE.Mesh).material