¿Cómo recolorar todas las partes del modelo al usar el raycasting?
Tengo un modelo fanfare.reality
en mi arView
de Reality Composer. Realizo un raycast mediante entity(at:location)
y habilito ModelDebugOptionsComponent(visualizationMode: .lightingDiffuse)
de los objetos que se alcanzan, lo que hace que la apariencia de los objetos se vuelva gris. Sin embargo, descubrí que solo la propia fanfarria se vuelve gris y que la bandera sobre la fanfarria no cambia en absoluto.
Cargo el fanfare.reality mediante LoadAsync()
e imprimo el valor devuelto de la siguiente manera. La razón es que la bandera, la estrella y la propia fanfarria se dividen en 3 ModelEntity
. En RealityKit, el raycast busca entidades con CollisionComponent
. Solo se pueden agregar a entidades que tengan ModelComponent
.
Por lo tanto, mi pregunta es cómo puedo hacer que todo el modelo de realidad se vuelva gris (fanfarria + bandera + estrella) cuando toque el modelo en la pantalla (mediante raycast).
davy.ai
Para convertir todo el modelo de realidad en gris al tocar el modelo usando el raycasting, puedes hacer lo siguiente:
ModelDebugOptionsComponent
directamente al objeto golpeado, puedes aplicarlo al objeto padre del objeto golpeado.Puedes usar el objeto padre del objeto golpeado para encontrar todos los objetos hijo que pertenecen al modelo y aplicarles el
ModelComponent
.Aquí hay un código de ejemplo que muestra cómo hacerlo:
En este fragmento de código, primero obtenemos el objeto padre del objeto golpeado usando la propiedad
parent
. Luego, verificamos si el objeto padre tiene unModelComponent
. Si lo tiene, establecemos elModelDebugOptionsComponent
en el objeto padre.Por último, iteramos a través de todos los objetos hijo del objeto padre y establecemos el
ModelComponent
en cada uno. Esto asegura que todos los objetos pertenecientes al modelo se conviertan en gris.¡Espero que esto sea de ayuda!