October 18, 2018
Hot Topics:

# Creating an Interactive 3D world with C# and DirectX

### 3. Set Camera

In the Form1 class, you declare and initialize some variables to set up the camera position and then move it through the scene as follows:

```//Declaring variables for camera movement
float sngPositionX;
float sngPositionY;
float sngPositionZ;
float snglookatX;
float snglookatY;
float snglookatZ;
float sngAngleX;
float sngAngleY;
```

Now, coming back to the Form1_Load event, you set the position of the camera:

```//Set the view to perspective
TVScene.SetViewFrustum(45.0f,1000.0f);
```

The arguments for the above function are:

 sAngleFOV Angle in degrees representing the FOV (Field of vision) of the view. sFarPlane Maximum distance of vision. Everything after this imaginary far plane will be not rendered.
```//set our camera location and lookat point, etc.
sngPositionX = 0.0f;
sngPositionY = 0.3f;
sngPositionZ = 0.0f;
snglookatX   = 0.0f;
snglookatY   = 0.0f;
snglookatZ   = 0.0f;
sngAngleY    = -1.57f;
```

With SetCamera, you can't define a camera with a totally vertical orientation. To do this, you have to use the RotateX method or use special matrices. SetCamera also can be used with a trigonometry equation to get a fully working camera system.

```TVScene.SetCamera(xpos As Single, ypos As Single,
zpos As Single, xlookat As Single,
ylookat As Single, zlookat As Single)
```
 xpos X coordinate of the camera position ypos Y coordinate of the camera position (altitude) zpos Z coordinate of the camera position xlookat X coordinate of the camera look at point ylookat Y coordinate of the camera look at point (altitude) zlookat Z coordinate of the camera look at point

The behaviour is undefined if you use Position = LookAtPoint values.

```//The camera is initially set to the origin (0, 0, 0) values
TVScene.SetCamera(sngPositionX, sngPositionY, ngPositionZ, snglookatX,
snglookatY, snglookatZ);
```

Figure 9: Setting camera position and look at position

Page 4 of 7

Comment and Contribute

(Maximum characters: 1200). You have characters left.

## Enterprise Development Update

Don't miss an article. Subscribe to our newsletter below.

By submitting your information, you agree that developer.com may send you developer offers via email, phone and text message, as well as email offers about other products and services that developer believes may be of interest to you. developer will process your information in accordance with the Quinstreet Privacy Policy.

## Most Popular Developer Stories

Thanks for your registration, follow us on our social networks to keep up-to-date