Партнерка на США и Канаду по недвижимости, выплаты в крипто

  • 30% recurring commission
  • Выплаты в USDT
  • Вывод каждую неделю
  • Комиссия до 5 лет за каждого referral


Иван Андреев

andreev. *****@***com

Основы 3Д. Построение сцены

В рамках данной работы учащийся должен создать сцену, содержащую большое количество различных примитивов и изменяющееся освещение.

Задание на работу:

Создать сцену, моделирующую комнату, состоящую из 5 стен (можно реализовать при помощи примитивов-кубов).

Поместить в комнату конус и чайник.

Реализовать источник света, светящий сверху комнаты.

Источник света должен изменять направление освещения в зависимости от времени.

Теоретическая часть:

Основной теоретический материал, необходимый для данного задания, подробно описан в лекционных и практических занятиях.

Реализация:

В приведенном листинге содержится наиболее простое решение, читателю предлагается самостоятельно выполнить дополнительные задания на выбор:

Реализация теней Реализация зеркала в комнате Текстурирование объектов и стен

using System;

using System. Collections. Generic;

using System. Linq;

using Microsoft. Xna. Framework;

using Microsoft. Xna. Framework. Audio;

using Microsoft. Xna. Framework. Content;

using Microsoft. Xna. Framework. GamerServices;

using Microsoft. Xna. Framework. Graphics;

using Microsoft. Xna. Framework. Input;

using Microsoft. Xna. Framework. Media;

using Microsoft. Xna. ;

using Microsoft. Xna. Framework. Storage;

using Primitives3D;

namespace Lab7

{

  /// <summary>

  /// This is the main type for your game

  /// </summary>

  public class Game1 : Microsoft. Xna. Framework. Game

НЕ нашли? Не то? Что вы ищете?

  {

  GraphicsDeviceManager graphics;

  SpriteBatch spriteBatch;

  BasicEffect effect;

  TeapotPrimitive teapot;

  CubePrimitive cube;

  CubePrimitive wall;

  public Game1()

  {

  graphics = new GraphicsDeviceManager(this);

  Content. RootDirectory = "Content";

  }

  /// <summary>

  /// Allows the game to perform any initialization it needs to before starting to run.

  /// This is where it can query for any required services and load any non-graphic

  /// related content.  Calling base. Initialize will enumerate through any components

  /// and initialize them as well.

  /// </summary>

  protected override void Initialize()

  {

  // TODO: Add your initialization logic here

  effect = new BasicEffect(GraphicsDevice, null);

  cube = new CubePrimitive(GraphicsDevice);

  teapot = new TeapotPrimitive(GraphicsDevice);

  wall = new CubePrimitive(GraphicsDevice, 5);

  base. Initialize();

  }

  /// <summary>

  /// LoadContent will be called once per game and is the place to load

  /// all of your content.

  /// </summary>

  protected override void LoadContent()

  {

  // Create a new SpriteBatch, which can be used to draw textures.

  spriteBatch = new SpriteBatch(GraphicsDevice);

  // TODO: use this. Content to load your game content here

  }

  /// <summary>

  /// UnloadContent will be called once per game and is the place to unload

  /// all content.

  /// </summary>

  protected override void UnloadContent()

  {

  // TODO: Unload any non ContentManager content here

  }

  /// <summary>

  /// Allows the game to run logic such as updating the world,

  /// checking for collisions, gathering input, and playing audio.

  /// </summary>

  /// <param name="gameTime">Provides a snapshot of timing values.</param>

  protected override void Update(GameTime gameTime)

  {

  // Allows the game to exit

  if (GamePad. GetState(PlayerIndex. One).Buttons. Back == ButtonState. Pressed)

  this. Exit();

  // TODO: Add your update logic here

  base. Update(gameTime);

  }

  /// <summary>

  /// This is called when the game should draw itself.

  /// </summary>

  /// <param name="gameTime">Provides a snapshot of timing values.</param>

  protected override void Draw(GameTime gameTime)

  {

  GraphicsDevice. Clear(Color. CornflowerBlue);

  // TODO: Add your drawing code here

  Matrix world = Matrix. Identity

  Matrix view = Matrix. CreateLookAt(new Vector3(0, 1, 10), Vector3.Zero, Vector3.Up);

  Matrix proj = Matrix. CreatePerspectiveFieldOfView(MathHelper. ToRadians(45), GraphicsDevice. Viewport. AspectRatio, 0.1f, 20);

  effect. View = view;

  effect. Projection = proj;

  effect. LightingEnabled = true;

  effect. SpecularColor = new Vector3(1, 1, 1);

  effect. SpecularPower = 24;

  effect. AmbientLightColor = new Vector3(0.2f, 0.2f, 0.2f);

  // Задание параметров первого источника света

  effect. DirectionalLight0.Enabled = true;

  // Изменение направления освещения в зависимости от времени

  float angle = MathHelper. ToRadians((float)Math. Sin((float)gameTime. TotalGameTime. TotalSeconds)*20);

  Vector3 lightDir = new Vector3((float)Math. Sin(angle), -(float)Math. Cos(angle), 0);

  effect. DirectionalLight0.Direction = lightDir;

  effect. DirectionalLight0.DiffuseColor = new Vector3(0.5f, 0.5f, 0.5f);

  effect. DirectionalLight0.SpecularColor = new Vector3(1, 1, 1);

  // Включение попиксельного освещения

  effect. PreferPerPixelLighting = true;

  effect. DiffuseColor = new Vector3(0, 1, 0);

  // Рисование стен

  effect. World = Matrix. CreateTranslation(5, 0, 0);

  wall. Draw(effect);

  effect. World = Matrix. CreateTranslation(-5, 0, 0);

  wall. Draw(effect);

  effect. World = Matrix. CreateTranslation(0, 5, 0);

  wall. Draw(effect);

  effect. World = Matrix. CreateTranslation(0, -3, 0);

  wall. Draw(effect);

  effect. World = Matrix. CreateTranslation(0, 0, -5);

  wall. Draw(effect);

  effect. World = world * Matrix. CreateTranslation(1, 0, 0);

  effect. DiffuseColor = new Vector3(1, 0, 0);

  cube. Draw(effect);

  effect. World = world * Matrix. CreateTranslation(-2, 0, 0.3f);

  effect. DiffuseColor = new Vector3(0, 0, 1);

  teapot. Draw(effect);

  effect. World = world * Matrix. CreateRotationY(MathHelper. PiOver2) * Matrix. CreateTranslation(1, 0.8f, 0);

  effect. DiffuseColor = new Vector3(0, 0, 1);

  teapot. Draw(effect);

  base. Draw(gameTime);

  }

  }

}