Desde los juegos más antiguos hasta los más modernos, parece que aún se puede ver a través de las paredes o, con mayor frecuencia, del suelo en algunas posiciones de la cámara. ¿Por qué la colisión es difícil de calcular de manera efectiva en los motores gráficos? ¿Se está acumulando/perdiendo precisión acumulando una vista errónea?¿Por qué la colisión es difícil de calcular de manera efectiva en los motores gráficos?
Respuesta
Esto no es realmente colisión en el sentido explícito. La posición de la cámara probablemente no está realmente "adentro" de la pared o el suelo en esas situaciones, pero está simplemente muy cerca de ella.
En infografía 3D La cámara tiene un concepto de un avión cerca de y un plano muy. Solo la geometría ubicada entre estos dos planos será visible, mientras que el resto será recortado. Si está demasiado cerca de algo y alinea la cámara correctamente, es probable que algunas partes de la geometría estén demasiado cerca de la cámara como lo define el plano cercano y, como resultado, no se renderizará la geometría.
Ahora, la distancia a este plano cercano puede ser establecida por los desarrolladores, y puede configurarse para ser muy corta, lo suficientemente corta como para garantizar que situaciones como estas no puedan ocurrir. Sin embargo, el buffer de profundidad o z buffer que se utiliza para determinar qué objetos están más cerca de la cámara durante el renderizado y qué objetos renderizar y cuáles no procesar, está estrechamente relacionado con las distancias del plano cercano y lejano.
En hardware de gráficos, el búfer de profundidad se representa utilizando una cantidad fija de bits para cada píxel, por ejemplo 32 bits. Estos 32 bits deben ser suficientes para representar con exactitud toda la extensión entre el plano cercano y el plano lejano. Tampoco es lineal, pero usará más precisión cerca de la cámara. Como resultado, la elección de una distancia muy pequeña cerca del plano reducirá en gran medida la precisión global de la memoria intermedia de profundidad. Esto puede provocar un parpadeo molesto en toda la escena, dondequiera que dos objetos estén muy cerca el uno del otro.
Puede leer más sobre este tema here y section 12.040 here.
Rezo todos los días para que todas las tarjetas gráficas tengan una precisión de búfer z de 32 bits :-D .. Muchas de ellas solo admiten 24 bits o menos (como todas esas "antiguas" tarjetas gráficas integradas de Intel). – Sorceror
No se trata de dificultad (por supuesto, no es fácil calcular la colisión/recorte de objetos no convexos), pero todavía tiene solo unos ~ 33ms para calcular el fotograma completo, por lo que debe hacerse algún compromiso (malla de colisión no es lo mismo que la malla que realmente ves). Si no hay tiempo para una solución precisa (para cumplir con todas las condiciones (distancia de la cámara, objeto que debe verse, evitar colisiones), debe recurrir a una solución "fácil" como ver a través de la pared.
- 1. ¿Por qué los motores de búsqueda ignoran los símbolos?
- 2. ¿Por qué es difícil el reconocimiento de voz?
- 3. ¿Por qué Core Data es tan difícil de prepoblar?
- 4. ¿Por qué es determinante si una función es puramente difícil?
- 5. ¿Por qué el dibujo en gráficos OnPaint es más rápido que los gráficos de imagen?
- 6. En una arquitectura distribuida, ¿por qué es difícil administrar versiones?
- 7. ¿Por qué XmlSerializer es tan difícil de usar?
- 8. ¿Cómo calcular las probabilidades de una colisión en algoritmos hash?
- 9. ¿Qué pueden lograr los motores de reglas?
- 10. ¿Cuál es la mejor manera de controlar la versión de los activos gráficos en Windows?
- 11. ¿Cuál es la mejor manera de almacenar/calcular los puntajes de los usuarios?
- 12. ¿Es demasiado difícil un proyecto? ¿Qué haces?
- 13. ¿Cómo utilizar de manera efectiva la cuadrícula sin marco?
- 14. Minimizando el efecto de los errores de redondeo causados por operaciones repetidas de manera efectiva
- 15. ¿En qué dirección leen exactamente los motores de selección?
- 16. ¿Reemplaza XNA de manera efectiva Managed Directx?
- 17. La programación de Clojure GUI es difícil
- 18. ¿Están las propiedades de Java en desuso de manera efectiva?
- 19. Cómo usar SAXParseException de manera efectiva en Java
- 20. Forma efectiva de calcular un porcentaje de similitud entre los conjuntos de datos
- 21. Manera efectiva de encontrar la codificación de cualquier archivo
- 22. ¿Por qué Math.floor de Javascript es la forma más lenta de calcular piso en Javascript?
- 23. ¿cuál es la referencia difícil en java?
- 24. ¿Qué motores usan los principales navegadores?
- 25. detección de colisión y colisión de respuesta
- 26. ¿Las consultas generadas por linq se almacenan en caché de manera efectiva por SQL Server 2008?
- 27. La manera más efectiva de trabajar con múltiples idiomas naturales
- 28. ¿Qué tan difícil es el desarrollo de iPhone/iPad
- 29. C# Manera efectiva de administrar el número de revisión
- 30. ¿Por qué es tan "difícil" escribir un for-loop en C++ con 2 variables de bucle?
"ve a través de las paredes o, con mayor frecuencia, el suelo en algunas posiciones de la cámara". no es un problema de colisión es un problema de recorte; simplemente no filtró correctamente las cosas que no debería poder ver desde esa ubicación desde la escena renderizada. –
¿Estás preguntando sobre el parpadeo de algunas partes de la "pared" en la imagen o sobre el posicionamiento de la cámara dentro de la pared ...? – Sorceror