Viewport_GetRay
Синтаксис
Viewport_GetRay (HANDLE Viewport, FLOAT ScreenX, FLOAT ScreenY, &FLOAT PosX, &FLOAT PosY, &FLOAT PosZ, &FLOAT DirX, &FLOAT DirY, &FLOAT DirZ)
Описание
Функция используется для получения луча в пространстве сцены по заданным координатам в области рендеринга.
Параметры
Viewport Объект области рендеринга (класс Viewport).
ScreenX X координата в области рендеринга.
ScreenY Y координата в области рендеринга.
PosX X координата начала луча в пространстве сцены (возвращаемое значение).
PosY Y координата начала луча в пространстве сцены (возвращаемое значение).
PosZ Z координата начала луча в пространстве сцены (возвращаемое значение).
DirX X компонента направления луча (возвращаемое значение).
DirY Y компонента направления луча (возвращаемое значение).
DirZ Z компонента направления луча (возвращаемое значение).
Пример
HANDLE Scene
HANDLE RenderWindow
HANDLE Camera
HANDLE Viewport
FLOAT RaycastResultCount
Camera := Scene_GetCameraScene_GetCamera (~Scene, “MainCamera”)
Viewport := Viewport_CreateViewport_Create(~RenderWindow, ~Camera, 0)
if(~Viewport && ~Scene)
Viewport_GetRayViewport_GetRay (~Viewport, CursorPosX / 640, CursorPosY / 480, ~PosX, ~PosY, ~PosZ, ~DirX, ~DirY, ~DirZ)
Collision_RaycastCollision_RayCast (~Scene, ~PosX, ~PosY, ~PosZ, ~DirX, ~DirY, ~DirZ)
RaycastResultCount := Collision_GetResultCountCollision_GetResultCount ();
if(~RaycastResultCount != 0)
Collision_SortCollision_Sort ();
Distance := Collision_GetDistanceCollision_GetDistance (0)
Object := Collision_GetObjectCollision_GetObject (0)
PositionX := ~PosX + ~DirX * ~Distance
PositionY := ~PosY + ~DirY * ~Distance
PositionZ := ~PosZ + ~DirZ * ~Distance
endif
endif
см. Класс CollisionCollision
см. Класс ViewportViewport
Created with the Personal Edition of HelpNDoc: Streamline your documentation process with HelpNDoc's HTML5 template