CubeMapping

Работа с 2D и 3D графикой, видео, звуком.

Модератор: Mikle

DirectXManiac
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1543
Зарегистрирован: 03.11.2005 (Чт) 13:32
Откуда: из DirectX SDK

CubeMapping

Сообщение DirectXManiac » 12.06.2006 (Пн) 20:31

Чего-то непойму... Делаю пример с водой и CubeMap Surface
Set CubeMap = d3dx.CreateCubeTexture(d3ddevice,256,1,D3DUSAGE_RENDERTAGET, D3DFMT_R8G8B8, D3DPOOL_MANAGED) и выдаёт ошибку Automatization Error. Чего то немогу понять почему. Может кто подскажет?
#define ROFL 0xDDDD

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Сообщение Mikle » 13.06.2006 (Вт) 8:20

DirectXManiac
А RENDERTARGET может быть D3DFMT_R8G8B8?
И обрати внимание на написание "RENDERTARGET"

DirectXManiac
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1543
Зарегистрирован: 03.11.2005 (Чт) 13:32
Откуда: из DirectX SDK

Сообщение DirectXManiac » 13.06.2006 (Вт) 13:55

Ну вроде бы.... Может подскажешь какой нужно ставить формат!
Єто я здесь ошибся!
#define ROFL 0xDDDD

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Сообщение Mikle » 13.06.2006 (Вт) 14:41

Самый совместимый - R5G6B5, потом R8G8B8A8.

DirectXManiac
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1543
Зарегистрирован: 03.11.2005 (Чт) 13:32
Откуда: из DirectX SDK

Сообщение DirectXManiac » 13.06.2006 (Вт) 14:45

Пробовал и A8R8G8B8 & X8R8G8B8 & UNKNOWN не помогает всё равно не идёт! :(
#define ROFL 0xDDDD

DirectXManiac
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1543
Зарегистрирован: 03.11.2005 (Чт) 13:32
Откуда: из DirectX SDK

Сообщение DirectXManiac » 13.06.2006 (Вт) 14:46

всё перепробовал.... :(
#define ROFL 0xDDDD

DirectXManiac
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1543
Зарегистрирован: 03.11.2005 (Чт) 13:32
Откуда: из DirectX SDK

Сообщение DirectXManiac » 04.07.2006 (Вт) 9:54

В гонках решил добавить отражение мира через Cube Mapping. Но увы ничего не получилось! Скрин можете скачать ниже! Ланд вроде отражаеться(на скрине показано) но кубическая карта выдаёт артефакты. Я проверял сам! Когда просто на спрайт натягиваешь кубическую текстуру выдаёт то же самое значит проблема в ней самой
Вот код отражения:
Код: Выделить всё

Public mCubeMap As Direct3DCubeTexture8
Public cubeT As Direct3DSurface8

Public Sub InitCube()
Set mCubeMap = d3dDevice.CreateCubeTexture(256, 1, D3DUSAGE_RENDERTARGET, DispMode.Format, D3DPOOL_DEFAULT)
Set cubeT = d3dDevice.CreateDepthStencilSurface(256, 256, D3DFMT_D16, D3DMULTISAMPLE_NONE)
End Sub

Public Sub RenderSceneToCubeMap()
Dim matViewSave As D3DMATRIX, matProjSave As D3DMATRIX

  d3dDevice.GetTransform D3DTS_VIEW, matViewSave
  d3dDevice.GetTransform D3DTS_PROJECTION, matProjSave
Dim matProj As D3DMATRIX
D3DXMatrixPerspectiveFovLH matProj, 3.141592 / 2, 1, 0.5, 100
d3dDevice.SetTransform D3DTS_PROJECTION, matProj
Dim matViewDir As D3DMATRIX
d3dDevice.GetTransform D3DTS_VIEW, matViewDir
matViewDir.m41 = 0: matViewDir.m42 = 0: matViewDir.m43 = 0
Dim BB As Direct3DSurface8, zB As Direct3DSurface8
Set BB = d3dDevice.GetRenderTarget
Set zB = d3dDevice.GetDepthStencilSurface
Dim i As Long
For i = 0 To 5
Dim matView As D3DMATRIX
matView = GetCubeMapViewMatrix(i)
D3DXMatrixMultiply matView, matViewDir, matView
d3dDevice.SetTransform D3DTS_VIEW, matView
Dim cFace As Direct3DSurface8
Set cFace = mCubeMap.GetCubeMapSurface(i, 0)
d3dDevice.SetRenderTarget cFace, cubeT, 0
  Set cFace = Nothing
d3dDevice.BeginScene
  LS.Render frmSS.CarX, frmSS.CarY - 8, 0, Atn(3 / -8)
d3dDevice.EndScene
Next i
  d3dDevice.SetRenderTarget BB, zB, 0
  Set BB = Nothing
  Set zB = Nothing
d3dDevice.SetTransform D3DTS_VIEW, matViewSave
d3dDevice.SetTransform D3DTS_PROJECTION, matProjSave
End Sub

Private Function GetCubeMapViewMatrix(Face As Long) As D3DMATRIX
Dim vEye As D3DVECTOR
Dim vLookDir As D3DVECTOR
Dim vUpDir As D3DVECTOR
vEye = vec3(0!, 0!, 0!)
Select Case Face
  Case D3DCUBEMAP_FACE_POSITIVE_X
   vLookDir = vec3(1!, 0!, 0!)
   vUpDir = vec3(0!, 1!, 0!)
  Case D3DCUBEMAP_FACE_NEGATIVE_X
   vLookDir = vec3(-1!, 0!, 0!)
   vUpDir = vec3(0!, 1!, 0!)
  Case D3DCUBEMAP_FACE_POSITIVE_Y
   vLookDir = vec3(0!, 1!, 0!)
   vUpDir = vec3(0!, 0!, -1!)
  Case D3DCUBEMAP_FACE_NEGATIVE_Y
   vLookDir = vec3(0!, -1!, 0!)
   vUpDir = vec3(0!, 0!, 1!)
  Case D3DCUBEMAP_FACE_POSITIVE_Z
   vLookDir = vec3(0!, 0!, 1!)
   vUpDir = vec3(0!, 1!, 0!)
  Case D3DCUBEMAP_FACE_NEGATIVE_X
   vLookDir = vec3(0!, 0!, -1!)
   vUpDir = vec3(0!, 1!, 0!)
   
End Select
Dim mat As D3DMATRIX
D3DXMatrixLookAtLH mat, vEye, vLookDir, vUpDir
GetCubeMapViewMatrix = mat
End Function

Подскажите что не так. Кто чем сможет! ПЛИЗ!
У вас нет доступа для просмотра вложений в этом сообщении.
#define ROFL 0xDDDD

DirectXManiac
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1543
Зарегистрирован: 03.11.2005 (Чт) 13:32
Откуда: из DirectX SDK

Сообщение DirectXManiac » 04.07.2006 (Вт) 9:59

Рендер виду по такой схеме
Код: Выделить всё

RenderToCubeMap
D3DDevice.SetRenderTarget MotionBlurTex,stencil
d3ddevice.BeginScene
d3dDevice.Clear
'Собственнно рендер
d3ddevice.setrendertarget MainS,zB
'//Отображение ранее отрендериного через спрайт с альфой
d3ddevice.endscene
d3ddevice.Present
#define ROFL 0xDDDD

DirectXManiac
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1543
Зарегистрирован: 03.11.2005 (Чт) 13:32
Откуда: из DirectX SDK

Сообщение DirectXManiac » 05.07.2006 (Ср) 17:13

Всё сделал но почему-то отражение на машине не зависит от угла поворота, только от позиции. Может где-то что-то не правильно или надо домножать не позицию камеры а на позицию машины?
#define ROFL 0xDDDD

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Сообщение Mikle » 06.07.2006 (Чт) 9:43

Домножать нужно на инвертированную матрицу поворота машины.

DirectXManiac
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1543
Зарегистрирован: 03.11.2005 (Чт) 13:32
Откуда: из DirectX SDK

Сообщение DirectXManiac » 06.07.2006 (Чт) 14:03

Может просто не на матрицу поворота машины а просто на d3ddevice.GetTransform D3DTS_WORLD, tmpMat
Сразу после вычеслений матрицы мира для машины?
#define ROFL 0xDDDD


Вернуться в Мультимедиа

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 68

    TopList