Hola
Hoy empiezo mostrando el efecto que he conseguido mediante un sistema de luz ambiente. Concretamente se consigue mediante un objeto llamado CAmbientVolume, que es precisamente el código que os dije en el que estaba experimentando del cubemap simplificado.
Como podéis observar en la fotografía, tenemos una columna con un multi-material observada desde dos puntos de vista. En cada punto de vista podemos observar una tonalidad diferente, la de la izquierda tiene una tonalidad azul, la de la derecha tiene una tonalidad roja. Debemos recordar que la luz ambiente es solo una tonalidad aplicada al objeto, algo muy suave.
Por otro lado tengo una errata que comentar pues en el código de la idea del Cubemap simplificado faltan unas instrucciones, sino no funciona el proceso. Aquí tenéis el nuevo código:
D3DXVECTOR3 vDir = D3DXVECTOR3(GetCameraActive()->GetTarget()); D3DXVECTOR3 vNormDir; D3DXVec3Normalize(&vNormDir,&vDir); D3DXVECTOR3 vColX = Lerp(D3DXVECTOR3(m_vNegX.r,m_vNegX.g,m_vNegX.b),D3DXVECTOR3(m_vPosX.r,m_vPosX.g,m_vPosX.b),(vNormDir.x + 1.0f)*0.5f);// * Abs(vNormDir.x); D3DXVECTOR3 vColY = Lerp(D3DXVECTOR3(m_vNegY.r,m_vNegY.g,m_vNegY.b),D3DXVECTOR3(m_vPosY.r,m_vPosY.g,m_vPosY.b),(vNormDir.y + 1.0f)*0.5f);// * Abs(vNormDir.y); D3DXVECTOR3 vColZ = Lerp(D3DXVECTOR3(m_vNegZ.r,m_vNegZ.g,m_vNegZ.b),D3DXVECTOR3(m_vPosZ.r,m_vPosZ.g,m_vPosZ.b),(vNormDir.z + 1.0f)*0.5f);// * Abs(vNormDir.z); D3DXVECTOR3 vColTmp = Lerp(vColY,vColX,Abs(vNormDir.x)); vColTmp = Lerp(vColTmp,vColZ,Abs(vNormDir.z));
Nótese las dos instrucciones Abs(…) añadidas.
Un saludo
