ria pc game
fle game engine - движок для создания игр
fle game engine - движок для создания игр


Balls and holes PC game / Balls and Holes PC игра
Вакансии
Игродельня
Сегодня
22 февраля 2019 22:10
Вход Регистрация Забыли пароль ?

Система автоматизированной е-майл рассылки
  Система автоматизированной рассылки е-майл сообщений - megainformatic emailer Вашему вниманию предлагается дополнительный модуль к megainformatic c
подробнее...

Теги создание сайтов, создание игр, дизайн, игры, информатика, уроки photshop, php, c++, музыка, delphi, cms, робосайт
Статьи сайта
megainformatic - Теория и практика хакерских атак - самозащита от нападения - Способы подмены реального IP

megainformatic - Fruity Loops Studio 9 - Как синтезировать свои сэмплы - изучаем возможности плагина Sytrus

megainformatic - Видоизменяем тему для Wordpress под свои нужды

megainformatic - Flash приложения и игры - Шаг 3 - управляемый шарик

megainformatic - Учимся создавать флеш-игры, что нужно знать для того, чтобы заняться созданием flash приложений и игр ?

megainformatic - Шаг 4 в освоении Flash-технологий - как анимировать персонажа и управлять им

megainformatic - Форма для смены шаблонов сайта. Модуль template selector

megainformatic - megainformatic cms express files + module slider

megainformatic - Создание сайта бесплатно или под заказ

megainformatic - Как создать flash баннер

megainformatic - Разработка flash-приложения для сайта: онлайн примерочная

megainformatic - Мои впечатления о книге - Владислав Крапивин - Журавленок и Молнии

megainformatic - Модуль отзывов/комментариев для вашего сайта

megainformatic - Модуль отзывов/комментариев для вашего сайта

megainformatic - Модуль отзывов/комментариев для вашего сайта

megainformatic - Модуль короткие ссылки short link

megainformatic - Работа с сокетами fsocket из php

megainformatic - Как создать игру Создание игровых панелей и индикаторов

megainformatic - Приключения Кости Коробкина - Как я провел лето - интерактивный комикс

megainformatic - Приключения Кости Коробкина - Как я провел лето - интерактивный комикс

megainformatic - Приключения Кости Коробкина - С новым годом - интерактивный комикс

megainformatic - Система управления сайтом на php - megainformatic cms admin files

megainformatic - обзор антивирусных средств защиты

megainformatic - как работает антивирус ?

megainformatic - Создание сайта для бизнеса

megainformatic - Новый взгляд на очевидные вещи

megainformatic - Разработка программ на c++

megainformatic - Немного о музыке

megainformatic - GET и POST запросы

megainformatic - для чего нужна карта сайта

megainformatic - Web Администрирование

megainformatic - Мысли о разном

megainformatic - Легко ли быть программистом

megainformatic - Глубины программирования на C++

megainformatic - Убираем лимит на размер импортируемого файла в PhpMyAdmin

megainformatic - Как создать torrent файл

megainformatic - Нужна ли валидация вашему сайту ?

megainformatic - Антивирус DrWeb

megainformatic - Калькулятор рассчёта стоимости зубопротезирования для стоматологической клиники

megainformatic - Что такое BitTorrent (БитТоррент)

megainformatic - Миссис Даутфайр 1993 фильм torrent

megainformatic - Как скачивать торрент-раздачу ?

megainformatic - Автотелега фильтр

megainformatic - Фильмы

megainformatic - Fahrengeit Фаренгейт игра 2006 для PC

megainformatic - Fez игра для PC 2013

megainformatic - Дневник памяти - фильм 2004

megainformatic - Scooter - The night - Video and Lyrics - Скутер - Ночь - Видео и лирика

megainformatic - Если всё же неудача

megainformatic - Смерть или искупление или избавление

megainformatic - По ту сторону

cj megainformatic - музыкальный альбом БЕСКОНЕЧНОЕ ДВИЖЕНИЕ ОЖИДАНИЕ И ДЕЙСТВИЕ

megainformatic - Костя Коробкин - Секретный проект - интерактивный комикс

megainformatic - Основы анимации во флеш на примере анимирования простейшей окружности

megainformatic - Парсер сайтов Введение

megainformatic - Я пишу музыку для себя и для продажи

подробнее

     
 
Урок 2 Создаем и обрабатываем команды меню. Реализуем вывод текстуры в рабочую область D3D.
 
О том, что потребуется для данного урока читайте в основном разделе - уроки delphi directx 8.1
 
Далее у читателя подразумевается наличие базовых знаний языка Delphi.
 
[назад] [страница 2] [далее] [к содержанию]
 

В качестве основы мы возьмем исходный код шаблона стартового приложения Delphi DirectX 8.1 (или сокращенной D3D-приложения), который мы создали в предыдущем уроке

Но помните, что для его компиляции Вам нужна и сама библиотека Delphi DirectX 8.1 (папка с общим кодом)

или исходный код игры "Ну, Погоди!" с включенной обновленной библиотекой Delphi DirectX 8.1 (поддержка русских букв, 2D анимация и некоторые другие возможности).

 

Несколько важных замечаний.

Особенности создания и обработки пунктов меню Опции > Подсказка; Опции > Показ FPS

 
Также мы рассмотрим здесь как выводится изображение текстуры в рабочую область окна D3D-приложения, т.е. как появляется и формируется картинка представляющая экран игры Ну, Погоди!
 

Самым простым по реализации является пункт меню Выход (Exit). Вот реализованный код его обработчика -

procedure TMainForm.ExitGameMenuClick(Sender: TObject);
begin

Close;
end;

Как видим здесь вызывается всего лишь стандартный метод Close. Весь код, выполняющий освобождения ресурсов D3D-приложения будет вызываться автоматически из метода FormDestroy при ее разрушении. Так что Вам нужно лишь правильно реализовать методы внутри FormDestroy, тогда никаких ошибок при закрытии приложения не будет возникать.

 

При создании и реализации пунктов меню Опции > Подсказка; Опции > Показ FPS нужно учесть следующую особенность.

Для данных пунктов меню нужно установить свойство Checked в true во время их создания.

Для обработки данных пунктов меню применяется следующий обработчик:

procedure TMainForm.ShowFPSOptionItemClick(Sender: TObject);
begin
ShowFPSOptionItem.Checked := not ShowFPSOptionItem.Checked;

if g_d3dApp <> nil then
g_d3dApp.m_bShowFPSOn := ShowFPSOptionItem.Checked;
end;

Первая строка кода переключает пункт меню из включенного/выключенного состояния при его выборе.

Вторая строка проверяет наличие объекта d3d-приложения и устанавливает его свойство отвечающее за показ FPS в заданный режим.

Опции > Подсказка реализуется аналогично.

 
 
 
Теперь рассмотрим как формируется картинка представляющая экран игры.
 
Для этого Вам нужно обратиться к ее исходному коду. Вспомним схему функционирования D3D-приложения.
 
 

Поскольку метод Render3DEnvironment вызывается периодически, формируя следующий кадр анимации и выводя фактическую картинку в окно D3D, то загрузка необходимых текстур (и других ресурсов) должна происходить однократно, иначе это приведет к зацикливанию и ошибкам.

Следовательно, загрузка необходимых ресурсов должна осуществляться не в цикле отрисовки (Render3DEnvironment), а до него. Это происходит внутри метода FormShow > InitD3DApp.

В реальных играх разные уровни игры могут потребовать различных ресурсов, поэтому прежде чем запустить уровень игры приложение должно перейти в режим загрузки необходимых ресурсов игры (причем сделать это однократно), а после перейти к режиму отрисовки и отслеживания действий пользователя (UpdateInput).

 

В нашем случае игра достаточно проста, поэтому все ресурсы будут загружаться лишь однажды - во время старта приложения и происходить это будет внутри FormShow > InitD3DApp > g_d3dApp.Create_ > OneTimeSceneInit > CreateDisplayObjects

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

В коде игры "Ну, Погоди!" это сделано еще более изящным образом: приложение переходит в состояние инициализации asBeginInit и в этом состоянии внутри метода FrameMove происходит вызов методов -

LoadGameTextures;
RestoreGameTextures;

и сразу же переход в состояние
m_dwAppState := asInit;

Это Вы можете сами увидеть в исходном коде игры "Ну, Погоди!".

 

Суть работы при этом сводится к следующему (попробуйте выполнить поиск фразы asBeginInit с начала исходного файла Main.pas в проекте игры "Ну, Погоди!")

Первое найденное - перечисляемый тип TAppStates

Второе - метод constructor TD3DGameApp.Create; - т.е. начальным состоянием во время старта приложения является именно это (asBeginInit)

Наконец третье - это метод OneTimeSceneInit. Вообщем-то, поскольку данное состояние здесь то же самое, что и в методе TD3DGameApp.Create, то его установку можно и опустить в этом методе. Но если Ваша игра будет состоять из нескольких уровней, требующих различных ресурсов, тогда эти состояния Вам надо будет предусмотреть и выполнить их реализацию. Тогда они будут у Вас различаться. Например, в зависимости от текущего уровня игры, считанного из файла конфигурации игра при старте может загружать ресурсы нужного текущего уровня. Именно поэтому внутри метода OneTimeSceneInit приведена эта строка кода, чтобы обратить Ваше внимание на такой вариант.

Четвертое место где будет найдено asBeginInit - уже упомянутый выше метод FrameMove.

Внутри данного метода Вы можете увидеть какие вообще состояния может иметь игра и что при этом происходит.

 

Исходя из того, что Вы увидели можно сделать определенные выводы и написать код, необходимый для формирования начальной картинки игры "Ну, Погоди!".

Для этого Вам нужно скопировать папку Media из дистрибутива полной версии игры "Ну, Погоди!" и разместить ее внутри папки Вашего текущего проекта (где расположен exe-файл, создаваемый проектом при его компиляции).

Тогда Вы сможете добавить код выполняющий поставленную задачу, а именно:

нам нужно описать и реализовать методы

LoadGameTextures;
RestoreGameTextures;

DrawGameView;

Вы найдете их в исходном коде игры "Ну, Погоди!" и с легкостью сможете перенести в свой код.

 
Если же Вы немного затрудняетесь в этом, то рассмотрим, что нужно сделать.
 

Рассмотрим сначала простейший случай. Вам нужно загрузить текстуру

back.jpg

из папки Media\textures\

В объект класса TD3DImage2D, а затем использовать методы данного объекта для отображения в окне D3D внутри метода Render > DrawGameView > DrawGameScene > DrawGameElement

Как это реализовано в реальном коде игры "Ну, Погоди!" Вы можете увидеть сами.

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

В секции интерфейса объявляем константу с именем файла текстуры

interface

{...}

conts

BackTex = 'Media\textures\back.jpg';

В описание класса TD3DGameApp добавляем поле для объекта TD3DImage2D (данный класс реализован в модуле D3DGUI.pas, который присутствует ТОЛЬКО в исходном коде игры "Ну, Погоди!". В общедоступном архиве библиотеки Delphi DirectX 8.1 этого модуля нет!)

предварительно нужно указать ссылку к папке содержащей данный модуль в опциях проекта, а затем подключить его в пункте uses секции interface

uses

{...}, D3DGUI;

backImage: TD3DImage2D;

и описание методов

procedure LoadGameTextures;
procedure RestoreGameTextures;

procedure InvalidateGameTextures;
procedure FreeGameTextures;

procedure DrawGameScene;

В секции реализации добавляем код для этих методов

implementation

{...}

procedure TD3DGameApp.LoadGameTextures;
var
hr: HResult;
begin
backImage := TD3DImage2D.Create(g_d3dApp.m_d3dfmtTexture);
if backImage = nil then begin
CleanUpAndDisplayError(GAME_ERR_NOTEXTURES);
PostMessage( m_hWndMain, WM_CLOSE, 0, 0 );
Exit;
end;

hr := backImage.InitDeviceObjects(m_pd3dDevice,
backTex);
if Failed(hr) then begin
CleanUpAndDisplayError(GAME_ERR_NOTEXTURES);
PostMessage( m_hWndMain, WM_CLOSE, 0, 0 );
Exit;
end;
end;

procedure TD3DGameApp.RestoreGameTextures;
begin
if backImage <> nil then
backImage.RestoreDeviceObjects;

end;

procedure TD3DGameApp.InvalidateGameTextures;
begin
if backImage <> nil then
backImage.InvalidateDeviceObjects;
end;

procedure TD3DGameApp.FreeGameTextures;
begin
SAFE_DELETE(backImage);
end;

procedure TD3DGameApp.DrawGameScene;
begin
if backImage <> nil then
backImage.Draw2(0, 0, 0, 0.83, 1,
DrawD3DImage2D_Filtered, 255);
end;

 

А затем останется только расскомментировать или добавить вызов созданных методов внутри -

FrameMove -

function TD3DGameApp.FrameMove: HRESULT;
begin
case m_dwAppState of
asBeginInit: begin
LoadGameTextures;
RestoreGameTextures;
m_dwAppState := asInit;
end;
asInit: m_dwAppState := asEndInit;
asEndInit: m_dwAppState := asReady;

asReady: {UpdateInput};
asGame: {FrameMoveGameScene};
end;

result := S_OK;
end;

и Render > DrawGameView -

procedure TD3DGameApp.DrawGameView;
const
FillColor = $FF58B327;
begin
if not Assigned(m_pd3dDevice) then Exit;

// Begin the scene
if SUCCEEDED(m_pd3dDevice.BeginScene) then
begin
// Erase the screen
m_pd3dDevice.Clear( 0, nil, D3DCLEAR_TARGET or D3DCLEAR_ZBUFFER,
FillColor, 1.0, 0 );

DrawGameScene;


//CountFPS;
// End the scene
m_pd3dDevice.EndScene;
end;


end;

Не забудьте про правильное освобождение созданных ресурсов! - внутри - InvalidateDisplayObjects и DestroyDisplayObjects

function TD3DGameApp.InvalidateDisplayObjects: HRESULT;
begin
result := S_OK;

m_pGameFont.InvalidateDeviceObjects;

InvalidateGameTextures;
end;

function TD3DGameApp.DestroyDisplayObjects: HResult;
begin
FreeGameTextures;

SAFE_DELETE(m_pGameFont);

SAFE_DELETE(m_Camera);

SAFE_RELEASE(m_pd3dDevice);

result := S_OK;
end;

 

После этого изображение панели игры Ну, Погоди появится в рабочей области окна D3D.

Если оно выводится не целиком, значит Вам нужно увеличить размеры окна формы -

В инспекторе объектов для формы MainForm задайте размеры

MainForm.Width = 637

MainForm.Height = 432

Заметьте, что размеры заданные в для окна формы в инспекторе объектов имеют приоритет перед размерами рабочей области окна заданными внутри TD3DGameApp.Create. Это связано с тем, что рабочую область окна D3D в оконном режиме определяет окно, чей обработчик (Handle) мы передаем объекту DirectD3Device. Таким объектом у нас является панель RenderWindowPanel. Если Вы задавали для неё в инспекторе объектов свойство Align = alClient, то это как раз и объясняет такое поведение приложения.

Получается, что размеры окна формы MainForm определяют размеры панели RenderWindowPanel, а она в свою очередь и служит рабочей областью для вывода D3D-окна.

 
Если D3D-приложение переключается в полноэкранный режим, то рабочая область окна D3D разворачивается во весь экран, а ее размеры определяются не заданными размерами окна, а разрешением, которое будет использоваться D3D-приложением для полноэкранного режима, т.е. - 640х480, 800х600, 1024х768 пиксель или другое доступное разрешение.
 
В нашем следующем уроке мы рассмотрим работу D3D-приложения в оконном и полноэкранном режиме. Покажем какой код необходимо написать для этого и какие особенности нужно обязательно учитывать. Несмотря на то, что для игры "Ну, Погоди!" полноэкранный режим не предусмотрен, т.к. она этого не требует из-за своих особенностей - эмуляции экрана электронной игры, тема полноэкранного режима и работы в нём является базовой для всех Delphi DirectX игр, т.к. высокая производительность D3D-приложения достигается именно в этом режиме!
 
 
 
[назад] [страница 2] [далее] [к содержанию]
 
     
     
     
подробнее

     
  Плагин для 3DS MAX из DX9 SDK  
     
  Вы легко можете конвертировать модель в формате *.max в формат *.x - для этого Вам понадобится стандартный плагин из DirectX SDK 9.  
     
  В комплект DirectX9 SDK June 2006 входит удобный плагин для экспорта моделей из 3DS MAX 7.0 сразу в формат *.x Это очень удобно. Однако не каждый может скачать DX9 SDK (июньский вариант "весит" аж 443 Мб!). Чтобы не мучиться и не качать весь SDK можете скачать этот плагин прямо здесь.  
     
  Для установки плагина Вам необходимо скачать и распаковать архив, а затем отредактировать файл plugin.ini расположенный в папке с установленным 3ds Max в Вашей системе - добавить следующую строку в секцию [Directories] например так:

[Directories]
DirectX={PLUGIN PATH}

Где {PLUGIN PATH} - полный путь к файлу плагина, например c:\MyDirectX\PlugIn\Max7. Если путь к плагину прописан верно, то 3Ds Max 7 при запуске будет автоматически загружать плагин. После этого в меню File>Export вы обнаружите новый тип экспортируемого файла! - *.x

 
     
 

Существуют также плагины для других версий 3ds max -

PandaDXExport

kWXPort

об их использовании рассказано в статьях -

Основы 3D-анимации, экспорт скелетной анимации

Особенности экспорта моделей и анимации экспортером kWXPort080719 из 3ds max 2009

 
     
подробнее

     
  [Все уроки 3ds max] [Галерея моделей] [далее]  
     
  Создание модели броневика (Хэд) - Анимация вращения колес  
     
  Во время движения броневика его колеса должны вращаться. Попробуем сделать это.
Откройте законченную модель из предыдущего задания или готовую (из папки head).

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


1. Выберите колесо, которое Вы создали первым (объект wheel1).

Т.к. оно является базовым, а другие два – его экземпляры (или ссылки), то применяя вращение лишь базового колеса мы сможем добиться вращения ВСЕХ ТРЕХ! колес.

Это удобно и ценно тем, что не надо будет беспокоиться о том, что колеса вращаются по-разному. Для того чтобы вращать колесо, выберите инструмент Select and Rotate (см. рисунок) – это крайний левый инструмент показанный на рисунке (круговая стрелка). Чтобы выбрать локальную систему координат выберите Local (как показано на рисунке), тогда для вращения будет использоваться система координат колеса. Если Вы заметите, что вращение происходит не относительно центра колеса, проверьте используемый центр (крайняя правая кнопка на рисунке). Должен быть выбран Use Pivot Point Center (тот который и показан на рисунке) – это позволяет использовать в качестве центра центральную точку (Pivot) объекта.

 
     
   
     
  Слева-направо: Select and Rotate – выбор и вращение; Select and Scale – выбор и масштабирование; Reference Coordinate System – используемая система координат; Use Center – используемый центр.  
     
   
     
  Показан момент вращения колеса по оси Y со всеми указанными выше предварительными настройками.  
     
 

2. Итак мы разобрались как вращать колесо. Но это еще пока не дает нам возможности его анимировать. Анимация должна показать вращение колеса во времени (и без нашего участия).

Попробуем сделать это:
a. Отмените произведенные вращения колеса.
b. На панели анимаций (внизу экрана) нажмите кнопку Auto Key
c. На панели времени переместитесь на последний кадр (номер 100)
d. Выполните вращение колеса (на полный оборот).
e. Отключите кнопку Auto Key
f. На панели анимации нажмите кнопку Play Animation.

 
     
  В результате мы должны получить желаемое, причем вращаются все 3 колеса!

Теперь более подробно о том, что мы сейчас делали. Кнопка Auto Key включает режим автоматической генерации ключевых кадров в текущей позиции временной панели. Суть такой анимации заключается в том, что от нас требуется изменить что-либо только в указанных (ключевых) кадрах, а все промежуточные кадры просчитываются за нас программой автоматически. Это очень удобно и эффективно. Кроме того, если потребуется что-то изменить, то изменения нужно вносить, опять-таки, только в ключевые кадры. Тем самым экономится большое количество сил и времени.

Теперь попробуем выполнить рендеринг последовательности кадров, которую мы создали. Для этого требуется вызвать окно Render (ч/з меню или F10) и указать диапазон (Range) выводимых кадров, а также файл (имя, расширение, кодек), в который будет выводиться созданная анимация.

 
     
  Движение броневика по поверхности ландшафта  
     
 

Пример того, что у Вас должно получиться можно найти в папке head_winter_anim - скачать её можно здесь -

[downloads:5]



Цель нашей работы следующая: создать небольшой видеоролик, в котором происходило бы перемещение созданного анимированного броневика по территории какого-либо ландшафта. Первое, что приходит на ум, это вопрос о том, сколько кадров будет длится анимация? Решать Вам. Исходить надо из того, каково будет качество анимации (сколько кадров в секунду), какую продолжительность видеоролика Вы хотите создать и, наконец, чем длиннее и сложнее будет Ваш видеоролик, тем дольше будет выполняться процесс рендеринга. Так, например, ролик с качеством стандарта NTSC (30 кадров/сек), с количеством кадров 1000 и размером кадра 640х480 точек (глубина цвета 24 бит), который Вы можете найти в папке head_winter_anim выводился примерно 1,5 часа на компьютере Celeron 2,67 MHz/256 Mb RAM/128 Mb GeForce video RAM.

Чтобы снизить продолжительность рендеринга, особенно если Вы производите пробные версии анимации, можно снижать размер кадра, количество кадров в единицу времени, производить вывод не всех кадров сразу, а только проверяемого диапазона и т.д. Но самое простое – это не делать рендеринг до тех пор, пока Вы до конца не убедитесь в том, что все в сцене и при анимировании сделано так как надо. К таким явным ошибкам, которые могут бросаться в глаза можно отнести: неверное размещение объектов в сцене (висящие в воздухе деревья), «въезжание» камеры в поверхность земли, движение броневика не по поверхности, а по воздуху и т.д. Все эти ошибки легко устранимы, но если Вы заметите их только уже на стадии рендеринга, то его придется повторять.

Итак, наш броневик будет двигаться по некоторой траектории, следовательно ее можно проложить по поверхности модели ландшафта. Вы это можете сделать при помощи инструмента Line в окне вида сверху. Затем нужно будет откорректировать положение созданной траектории по оси Z, а также положение отдельных ее точек – там где броневик будет въезжать на горки или съезжать с них.

После этого в сцену ландшафта нужно подгрузить (Merge) броневик (или создать на него ссылку – Xref object). Давайте создадим анимацию из 1000 кадров. Для увеличения количества кадров нажмите кнопку (Time Configuration) – ниже кнопок управления воспроизведением анимации. В появившемся диалоговом окне можно настроить качество анимирования: частоту кадров (группа Frame Rate), отображаемое время (Time Display), скорость воспроизведения (Playback), используемый для анимирования диапазон кадров (Animation). Кнопка Re-scale time позволяет изменить диапазон анимирования, за счет изменения скорости воспроизведения (а не за счет расширения границ этого диапазона).


Для того, чтобы броневик двигался по созданной траектории нужно:


• Выбрать броневик
• Присвоить броневику путь: Animation > Constraint > Path constraint и указать на созданную траекторию
• Чтобы броневик двигался прямо по траектории нужно ориентировать его по ней (развернуть), в открывшейся панели Motion (движение) в свитке Path parameters поставить флажок (Follow) – следовать по пути.
• После этого можно попробовать воспроизвести анимацию.

 
     
   
     
   
     
 

Показана открытая панель Motion в самой нижней части которой виднеется заголовок свитка Path Paremeters. Чтобы поднять свиток нужно прокрутить панель мышью (когда курсор приобретает вид руки). Свиток Path Parameters с заданными параметрами по умолчанию и установленным флажком Follow.
При просмотре анимации Вы заметите, что колеса броневика вращаются только первые 100 кадров, а затем не вращаются. Это связано с тем, что анимированный нами ранее броневик содержал анимацию только в диапазоне кадров от 0 до 100. Исправим это: сохраните Вашу работу и снова откройте анимированный броневик.


Установите диапазон анимации равным диапазону в сцене с ландшафтом.
Выберите базовое колесо (wheel1). Щелкните по нему правой кнопкой и вызовите Curve Editor – редактор кривых для управления анимацией ключевых и промежуточных кадров. В окне редактора кривых выберите только анимируемый параметр – в нашем случае это вращение по оси Y (Y rotation). В правой части окна Вы увидите изменение данного параметра во времени (в виде графика кривой). Чтобы анимация повторялась вне диапазона 0-100 нужно задать параметры анимирования вне диапазона:

 
     
   
     
 

Найдите и нажмите кнопку Parameter Curve Out-of-Range Types (см. рисунок).
В открывшемся диалоговом окне нажмите кнопку Relative Repeat и ОК.
Закройте редактор кривых. Проверьте результат изменений.


Сохраните анимированный броневик. Снова откройте сцену с ландшафтом. Если Вы добавляли в нее броневик посредством подгрузки (Merge), то Вам нужно будет сначала удалить его из сцены (не удаляя траекторию движения), затем подгрузить измененный, снова связать его с траекторией движения и настроить параметры (так как Вы это делали ранее). Если Вы добавляли ссылку на броневик (через Xref object), то все изменения в анимации броневика будут восприняты автоматически, т.к. при этом в сцене используется не копия объекта (в случае с Merge), а лишь ссылка на него и объект лишь связывается со сценой, но хранится самостоятельно и независимо.

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

 
     
     
  [Все уроки 3ds max] [Галерея моделей] [далее]  
     
подробнее

Ива Ден энд КуХа - КОДЕКС ФРИЛАНСЕРА - Глава 2 - Начало (begin)

По просьбам наших читателей начинаем публикацию новой серии - Иван Денисов и крутые хакеры. Сегодня читайте роман - Ива Ден энд КуХа - КОДЕКС ФРИЛАНСЕРА.

[содержание]  [далее

Я оставил нашу черную сверкающую машину возле дома на Моховой, который указала мне Мария Малакян.

Войдя в общежитие, я лишний раз убедился, что они все похожи друг на друга.

Мария Малакян прежде всего познакомила меня с комендантом - Раисой Сергеевной Вилоновой, полной пожилой женщиной, пальцы которой были покрыты кольцами, а затем позвала меня в комнату брата, расположенную на третьем этаже.

Пока Мария искала девушку, слышавшую телефонный разговор, я успел бегло осмотреть комнату. Это была большая светлая комната в два окна, обставленная хоть и старой, но очень опрятной мебелью.

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

В углу стояло два чемодана. Один дешевый, сильно потрепанный, внутри совершенно пустой. Второй тоже не новый, но набитый разнообразными техническими устройствами. Тут были переносные жесткие диски, небольшой набор инструментов, куча DVD дисков в коробочках, соединительные провода и многое другое, включая даже небольшую портативную мини-АТС.

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

Принимая во внимание, что последние полтора года жилец не имел никакого заработка и жил на содержании у сестры, становилось загадкой, откуда все это бралось ?

Мария вошла вместе с горничной, которую звали Алиса Градова.

Это была хрупкая девушка лет двадцати. Я пожал ей руки и, разглядывая её, убедился, что она с детства была запугана и забита.

- Мне сказали, что вы слышали телефонный разговор Кочара Малакяна в понедельник вечером, - обратился я к ней.

Она кивнула головой. Я повернулся к Марии и спросил:
- Не могли бы вы выйти ? Было бы лучше, если бы мы с Алисой побеседовали вдвоем.

По правде говоря, я начал придерживаться мнения Уварова, который полагал, что Кочар Малакян попросту сбежал, и теперь не удастся ровным счётом ничего выяснить.

Я усадил Алису на стул, сам сел напротив неё и достал диктофон.

- Вам совершенно нечего бояться, - сказал я, - единственное, что с вами может случиться, - это то, что вы окажете услугу Марии Малакян и её брату и за это получите немного денег. Нравится ли вам Мария ?

- Да, конечно, она очень славная.
- А Кочар Малакян ?
- О да. Его любят все. За исключением тех моментов, когда он бывает пьяным. В это время девушкам следует держаться от него подальше.

- Как вам удалось услышать телефонный разговор в понедельник ? Вы ожидали кого-то ?

- Нет, я никого не ждала.
- Каким образом Вы оказались там где был Кочар ?

- Я была в соседней комнате, делала плановую уборку, откуда могла слышать каждое слово, тем более, что дверь была приоткрыта.

- Можете ли вы вспомнить и повторить всё, о чем говорил Малакян ?

- Да, конечно. Как правило, мы не подслушиваем чужие телефонные разговоры, но на этот раз разговор велся очень громко и со мной его слышала комендант Раиса Сергеевна Филонова.

- Расскажите поподробнее об этом разговоре.

- Сперва он сказал: "Привет!", затем: "Да, это Кочар Малакян, что вам угодно ? ...это уже мое дело... я расскажу вам при личной встрече... почему не здесь, в моей комнате ?.. я боюсь! О нет, я не из тех, кого можно запугать!"

Раиса Сергеевна же утверждает, что он сказал: "...бояться следует не мне". Но она и сама не уверена, что расслышала правильно. Дальше я услышала его ответ: "Да, конечно, я хочу денег и как можно больше.. Ну что ж, пусть так... На углу в семь тридцать... Заткнитесь!.. Какое мне дело до вас... Итак, в семь тридцать. Эту женщину я знаю..."

Она остановилась.

- А кто это был, человек, с которым он говорил ?

Мне показалось, что она сейчас скажет: "Откуда я могла знать ?", - как вдруг услышал:

- Это был тот же самый человек, с которым он уже говорил раньше.

- Как давно это было ?

- Это произошло в ноябре. Насколько я могу помнить, один раз тот мужчина звонил даже дважды. Раиса Сергеевна говорила, что до этого вторника он звонил в общей сложности 6 или 7 раз.

- Вы знаете кто именно звонил ?

- Нет Андрей Дмитриевич, об этом достаточно сложно судить.

- Ок. Слышал ли кто-нибудь из вас его имя ?

- Нет Андрей Дмитриевич, мы не знаем, а по голосу достаточно трудно определить. Однако Раиса Сергеевна говорила, что он называл себя старым знакомым Кочара.

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

В деньгах я, конечно, не мог быть заинтересован в прямом смысле, всё равно получил бы их Денисов, но интерес к делу от этого не ослабевал.

Пробыв с Алисой Градовой почти два часа, я полностью утвердился в мысли, что она выложила мне практически всё, что знала или могла знать.

- Побудьте здесь еще минуточку, Алиса, пока я спущусь вниз и побеседую с Раисой Сергеевной.

Раиса Вилонова подтвердила все показания Алисы, более того, она позволила взять Алису с собой в город, правда это получилось не сразу.

- Раиса Сергеевна, Вы позволите мне забрать у вас Алису на некоторое время ?

- К сожалению, не могу, она мне будет еще нужна.

Однако после того как я дал ей сотню, она согласилась отпустить девушку.

- А когда Вы привезете её домой ? - спросила она и добавила, что разрешает ей отлучиться только до десяти часов вечера.

- Мне очень жаль, но я не могу дать вам твердое обещание. Мой босс, когда начинает задавать вопросы, не отличает день от ночи. Но обещаю доставить Алису целой и невредимой.

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

По дороге я успел сказать Алисе, что если она сообщит Ивану Степановичу Денисову что-нибудь интересное, то получит от меня сотню.

Я спланировал время так, чтобы подъехать к нашему особняку ровно к шести. Так и случилось.

Алиса не вернулась в этот вечер домой к десяти часам.

Оставив девушку в приемной, я поднялся к Денисову и сообщил ему, что она уже здесь. Он едва взглянул на вещи, которые я привёз, и совсем не собирался разговаривать с Алисой.

- Но она уже обошлась вам в сто рублей, - не без умысла заметил я, - который я уплатил комендантше.

- Эти сто рублей мы отнесем на твой счёт Энди, - вымолвил Денисов.

- Нет, Иван Степанович. Он уже занесен в книгу текущих расходов.

Мы пошли с ним к лифту. Думаю, что если бы у нас в доме не было лифта, Денисов никогда бы не смог подняться ни на один этаж, даже ради собственных цветов в оранжерее.

Войдя в офис, Денисов сейчас же принялся за Алису. Еще несколько лет назад я не смог бы в полной мере оценить его искусство, с которым он очень тактично и проницательно ставил вопросы.

...



- Ну всё Энди, побаловались и хватит !

- А что такое Ден ?

- Я не просил тебя заниматься рерайтом Стаута.

- Хм, да, но у меня нет никаких идей.

- А зачем тебе что-то выдумывать ? По-моему с нами уже достаточно приключалось, ты можешь спокойно выбрать одну из историй и описать её здесь.

- Ок, Ден, я понял тебя. Ты хочешь жесткое реалити ?

- А почему нет ?

- Ну что ж, тогда начнём ...

...



Тогда я работал в одном агентстве, обычным рядовым сотрудником. Работы всегда было много, а платили за неё сами знаете как. И самое проблемное было то, что за все неудачи и проколы отыгрывались опять же на нас. Т. е. процветали всяческие штрафы, поборы и прочие удержания из зарплаты.

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

Куда податься "бедному крестьянину" ? Меня постоянно одолевал этот вопрос. Я понимал, что надо действовать решительно и начинать какое-то своё дело, но сами представляете, что значит не имея средств и никакой поддержки начинать своё дело с нуля.

Однажды случилось так, что в агентстве поставили вопрос ребром и я остался без работы.

Я активно начал искать новое место. Но шансов на удачу было ноль целых и сколько-то там десятых.

И снова помог случай. Это был Ден.

Он ни слова не говоря предложил мне первую небольшую работу, вероятно чтобы проверить меня в деле. И я начал действовать.

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

Это обычные люди, которые живут среди нас и они ничем не примечательны. Вы вряд ли определите кто из 10000 или 100000 человек действительно является хакером, т. е. профессионалом высшего пилотажа. Да это вам и незачем. Потому что пока Вы не столкнетесь с настоящей проблемой лицом к лицу - Вы никогда всерьез о ней не задумываетесь.

- Итак, сегодня мы должны завершить один из моих начатых проектов. Сроки - сам понимаешь - критичны. Плачу я щедро, тебе вряд ли стоит на что-то жаловаться и мои требования ты знаешь - меня интересует качество.

- Ок, Ден, что-нибудь еще ?

- Да, всю детальную информацию я уже скинул тебе на мыло, ознакомься и можешь приступать.

- Нет проблем, поехали !

Я вышел на улицу. Был первый день старого нового года. Огляделся по сторонам. Куда идти ?

Много раньше, в снах, мне виделся этот город и я парил над ним как птица. Летел, взмахивая крыльями, видел то, что будет, или было, или могло быть.

В огромном мире всё взаимосвязанно, ничего не происходит просто так, возможно какие-то события предопределены заранее, но у тебя всегда есть право выбора.

Итак, мне нужно выйти на этого человека и собрать о нём информацию. Кто то он, чем он дышит, каковы его планы и даже что будет с ним в будущем.

Эту информацию мы сможем использовать, чтобы выполнить поставленную нам задачу.

И я приступил к делу.

[далее]  [содержание]

Ваши электронные помощники - веб-приложения

Ваши электронные помощники - веб-приложения
Ваши электронные помощники - веб-приложения - megainformatic cms


ваш электронный помощник - робот (электронные роботы работающие для вас)

Мы с вами живём в 21 веке и о роботах Вы наверняка знаете не понаслышке.
Но есть ли у вас возможность иметь собственного робота-помощника,
который бы не просто работал, но и приносил вам доход ?

Так вот - это не мечта - это уже реальность !

Вы можете БЕСПЛАТНО получить своего электронного робота
имеющего самые простые функции, а за плату получить робота более
продвинутого.

Что умеют наши роботы и что нужно знать для их использования ?

Это электронные программы, которые могут выполняться на вашем компьютере
или ноутбуке. Они похожи на обычные программы или веб-приложения,
но в отличие от них могут выполнять назначенные им задания,
кроме того есть возможность произвольного управления, перепрограммирования
и изменения функционала.

megainformatic cms free БЕСПЛАТНЫЙ ЭЛЕКТРОННЫЙ ПОМОЩНИК - megainformatic cms free

Скачиваний : 58



Что он умеет ?

Умеет он немного - отображать заданный контент, даже когда Вы спите и совсем не думаете о нём.

Но в этом минусе и его плюс - в нём достаточно легко разобраться - исходный код очень прост и открыт для изменений и доработок.

От вас требуется только желание его развивать !

Разумеется для этого вам потребуются знания о создании сайтов.

Но кто сказал, что для использования даже механических роботов не нужны никакие знания ?

Чем проще инструмент - тем он совершеннее в плане саморазвития, а развивать его Вы сможете сами.

Или же с чьей-то помощью.

Если Вас интересуют более совершенные решения - то вот более подробный список -

megainformatic cms groupon megainformatic cms groupon - сайт под ключ для сервиса экономных покупок, можно доработать и превратить в любой другой сервис.

megainformatic cms social megainformatic cms social - сайт под ключ для будущей вашей соц. сети

megainformatic cms rs megainformatic cms rs - сайт под ключ для вашего бизнеза или сервиса

другие продукты

megainformatic live chat
Начать беседу
X
 

Оставленные комментарии



fle game engine - движок для создания игр
fle game engine - движок для создания игр


Something: Unexplained 2 captive of desires / Нечто: Необъяснимое 2 в плену желаний
Костя Коробкин Комикс Коллекционное издание - 6 комиксов, 81 страница, 220 mp3 треков
megainformatic Размещение баннерной рекламы у нас
Время загрузки: 0,0971