Модератор: Mikle
empty-name писал(а):а если рендерить в текстуру, какими методами можно извлечь из нее цвет определенной точки?
empty-name писал(а):а если рендерить в текстуру, какими методами можно извлечь из нее цвет определенной точки?
Dim Lych1 As D3DVECTOR
Dim Lych2 As D3DVECTOR
Dim Peres As Boolean 'флаг определяющий есть пересечение или нет
Lych1 = vec3(Kam(0), Kam(1), Kam(2)) 'здесь соответственно координаты камеры
Lych2 = vec3(Kam(3), Kam(4), Kam(5)) 'здесь точка куда камера смотрит, это всё я вычисляю своими мат расчетами, думаю это ведь не имеет значения
Peres = Mesh_Intersect(Lych1, Lych2)
Function Mesh_Intersect(RayPos As D3DVECTOR, RayDir As D3DVECTOR) As Boolean
Dim RetHit As Long ' устанавливается в 1 если луч пересекает полигон меша
Dim RetU As Single ' U - координата попадания
Dim RetV As Single ' V - координата попадания
Dim RetDist As Single ' расстояние от источника луча до точки пересечения с
' ближайшим полигоном меша
Dim RetFaceIndex as Long ' индекс пересекаемого полигона
Dim CountHits As Long ' количество пересечений полигонов
If Mesh Is Nothing Then Exit Function
' проверка пересечения
Call D3DX.Intersect(Mesh, RayPos, RayDir, RetHit, RetFaceIndex, RetU, RetV, RetDist, CountHits)
If RetHit Then Mesh_Intersect = True
End Function
Mikle писал(а):Перед применением Intersect обработай параметры камеры преобразованием, обратным тому, что у модели.
empty-name писал(а):...
Lych1 = vec3(Kam(0), Kam(1), Kam(2)) 'здесь соответственно координаты камеры
Lych2 = vec3(Kam(3), Kam(4), Kam(5)) 'здесь точка куда камера смотрит, это всё я вычисляю своими мат расчетами, думаю это ведь не имеет значения
...
Dim RealRayDir as As D3DVECTOR
D3DXVec3Subtract(RealRayDir, Lych2, Lych1)
D3DXVec3Normalize(RealRayDir, RealRayDir)
Peres = Mesh_Intersect(Lych1, RealRayDir)
D3DDevice.SetTransform D3DTS_WORLD, Model.Matx
Dim matView As D3DMATRIX 'Матрица Обзора
D3DXMatrixLookAtLH matView, vec3(Kam(0), Kam(1), Kam(2)), _
vec3(Kam(3), Kam(4), Kam(5)), _
vec3(0, 1, 0)
g_D3DDevice.SetTransform D3DTS_VIEW, matView
Dim RealRayDir As D3DVECTOR
Lych1 = vec3(Kam(0), Kam(1), Kam(2))
Lych2 = vec3(Kam(3), Kam(4), Kam(5))
D3DXVec3Subtract RealRayDir, Lych2, Lych1
D3DXVec3Normalize RealRayDir, RealRayDir
Peres = Mesh_Intersect(Lych1, RealRayDir)
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3