Chrome Effect (Half-Life)

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

Модератор: Mikle

GLEB
Бывалый
Бывалый
 
Сообщения: 246
Зарегистрирован: 24.05.2005 (Вт) 12:16

Chrome Effect (Half-Life)

Сообщение GLEB » 15.10.2005 (Сб) 20:01

Как можно сделать такое в DX8?

d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Сообщение d3drm » 16.10.2005 (Вс) 13:53

см sphere- и cube-mapping из DX SDK
ХЎ

GLEB
Бывалый
Бывалый
 
Сообщения: 246
Зарегистрирован: 24.05.2005 (Вт) 12:16

Сообщение GLEB » 16.10.2005 (Вс) 18:45

Дело в том что DX SDK у меня нет. Линия не позволяет скачивать такие объемы.

d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Сообщение d3drm » 16.10.2005 (Вс) 21:09

тогда попробуй поискать примеры по ключевым словам sphere- и cube-mapping...
ХЎ

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

Сообщение DirectXManiac » 24.01.2006 (Вт) 0:59

Подскажите в чём проблеиа:
делаю так:

Код: Выделить всё

Dim mtrx As D3DMATRIX
With mtrx
.m11 = 0.5
.m12 = 0#
.m13 = 0#
.m14 = 0#
.m21 = 0#
.m22 = -0.5
.m23 = 0#
.m24 = 0#
.m31 = 0#
.m32 = 0#
.m33 = 1#
.m34 = 0#
.m41 = 0.5
.m42 = 0.5
.m43 = 0#
.m44 = 1#
End With
D3DDevice.SetTransform D3DTS_TEXTURE1,mtrx
D3DDevice.SetRenderState D3DRS_CULLMODE,D3DCULL_NONE
D3DDevice.SetTextureStageState 1,D3DTSS_COLOROP,D3DTOP_ADDSMOOTH
D3DDevice.SetTextureStageState 1, D3DTSS_TEXTURETRANSFORMFLAGS, D3DTTFF_COUNT2
  D3DDevice.SetTextureStageState 1, D3DTSS_TEXCOORDINDEX, D3DTSS_TCI_CAMERASPACEREFLECTIONVECTOR
  D3DDevice.SetRenderState D3DRS_NORMALIZENORMALS, 1
D3DDevice.SetTexture 1,mSphere_Tex


Хрома почти нет! ПРосто маленькие блики на модели и всё!
#define ROFL 0xDDDD

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

Сообщение DirectXManiac » 24.01.2006 (Вт) 3:16

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

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

Сообщение Mikle » 24.01.2006 (Вт) 11:18

DirectXManiac
Покажи все TSS, какая текстура в tex0, и какая в tex1?

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

Сообщение DirectXManiac » 24.01.2006 (Вт) 14:58

В tex0 вообще нету TSSов! Они стандартные!
#define ROFL 0xDDDD

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

Сообщение Mikle » 24.01.2006 (Вт) 16:07

DirectXManiac
Попробуй поменять D3DTOP_ADDSMOOTH на D3DTOP_ADD и пропиши аргументы для TSS 1:
TSS 1, colorarg1, current
TSS 1, colorarg2, texture

Да и для нулевой стадии лучше прописать TSS:
TSS 0, colorop, selectarg1
TSS 0, colorarg1, texture

или, если используешь свет:
TSS 0, colorop, modulate
TSS 0, colorarg1, diffuse
TSS 0, colorarg2, texture

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

Сообщение DirectXManiac » 24.01.2006 (Вт) 20:02

Спасибо!!!! Помогло! Кстати, а вот с Cube Mappingom потруднее! Я разбирусь выложу пример!
#define ROFL 0xDDDD

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

Сообщение Mikle » 25.01.2006 (Ср) 11:39

DirectXManiac
Выкладывай пример с Cube Mapping-ом. У меня пока руки не доходили с ним разобраться.

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

Сообщение DirectXManiac » 25.01.2006 (Ср) 14:03

ОК! Как только закончу выложу!
#define ROFL 0xDDDD

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

Сообщение DirectXManiac » 25.01.2006 (Ср) 16:58

Кстати, если выложу CubeMapping.Добавишь его в воду, которая с Bumpom?
#define ROFL 0xDDDD

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

Сообщение Mikle » 25.01.2006 (Ср) 17:29

DirectXManiac
Это чтобы воду можно было использовать с кубическим скайбоксом?
Добавлю.

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

Сообщение DirectXManiac » 29.01.2006 (Вс) 16:08

Короче! У меня мало времени сейчас! Я выкладываю код того что я успел сделать!
Код: Выделить всё

'//Воспомагательная функция...
Public Function GetCubeMatrix(mFace As Long) As D3DMATRIX
Dim i As Long
Dim vEnvEye As D3DVECTOR, vLookat As D3DVECTOR, vUp As D3DVECTOR

Select Case mFace
  Case D3DCUBEMAP_FACE_POSITIVE_X
    Case D3DCUBEMAP_FACE_POSITIVE_X:
                vLookat.x = 1#: vUp.y = 1#

    Case D3DCUBEMAP_FACE_NEGATIVE_X:
                vLookat.x = -1#: vUp.y = 1#

    Case D3DCUBEMAP_FACE_POSITIVE_Y:
               vLookat.y = 1#: vUp.z = -1#

    Case D3DCUBEMAP_FACE_NEGATIVE_Y:
                vLookat.y = -1#: vUp.z = 1#

    Case D3DCUBEMAP_FACE_POSITIVE_Z:
                vLookat.z = 1#: vUp.y = 1#

    Case D3DCUBEMAP_FACE_NEGATIVE_Z:
                vLookat.z = -1#: vUp.y = 1#

End Select

Dim tmpMat As D3DMATRIX
D3DXMatrixLookAtLH tmpMat, vEnvEye, vLookat, vUp
GetCubeMatrix = tmpMat
End Function
'/Рендер в CubeMap
Public Sub RenderToEnvMap()
Dim mView_S As D3DMATRIX, mProj_S As D3DMATRIX
'//Сохраняем трансформации
mView_S = D3DDevice.GetTransform(D3DTS_VIEW)
mProj_S = D3DDevice.GetTransform(D3DTS_PROJECTION)
'//Теперь устанавливаем матрицу проэкции
D3DXMatrixPerspectiveFovLH matProj,Pi/2, 1, 0.5, 1000
D3DDevice.SetTransform D3DTS_PROJECTION,matProj
matView.m41 = 0: matView.m42 = 0: matView.43 = 0
'//Сохраняем буферы
Dim zB as Direct3DSurface8,bB As Direct3DSurface8
Set zB = D3DDevice.GetRenderTarget()
Set bB = D3DDevice.GetDepthStencilSurface()
'//Теперь рендерим изображение в 6 поверхностей:
Dim i As Integer
For i = 0 To 6
Dim mView As D3DMATRIX
'//Применяем ранее обявленую функцию для получения матрицы
  mView = GetCubeMatrix(i)
D3DXMatrixMultiply mView,matView,mView
D3DDevice.SetTransform D3DTS_VIEW, mView
'//Теперь устанавливаем нужную поверхность, как цель для рендеринга
Dim mCubeSurf As Direct3DSurface8
Set mCubeSurf = CubeMap.GetCubeMapSurface(i,0)
D3DDevice.SetRenderTarget mCubeSurf, zB, 0
Set mCubeSurf = Nothing
'//Рендерим сцену, без объекта
D3DDevice.BeginScene
Call  RenderScene(False)
D3DDevice.EndScene
Next i
End Sub
#define ROFL 0xDDDD

d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Сообщение d3drm » 29.01.2006 (Вс) 16:18

ОБОРЖАЛСЯ =)

Код: Выделить всё
'//Теперь рендерим изображение в 6 поверхностей:
Dim i As Integer
For i = 0 To 6
ХЎ

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

Сообщение DirectXManiac » 29.01.2006 (Вс) 22:51

Я немного не понял.... хмм.. может потому что Integer! Тогда :lol: :lol:
#define ROFL 0xDDDD

d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Сообщение d3drm » 30.01.2006 (Пн) 1:10

ЛООООЛ!!! может потому что for i = 0 to 6 будет равно семи? :wink:
ХЎ

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

Сообщение DirectXManiac » 30.01.2006 (Пн) 1:49

ОЙОЙОЙ! Спасибо d3drm! For i = 0 to 5
Я просто не внимательный.... ПО константам тоже 0,1,2,3,4,5!
#define ROFL 0xDDDD


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

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

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

    TopList