Синтаксис

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