define('DISALLOW_FILE_EDIT', true); define('DISALLOW_FILE_MODS', true); /dev/head — Экспорт анимации из 3dMax в XNA

Экспорт анимации из 3dMax в XNA

Любители-разработчики компьютерных игр уже два года бьются над проблемой экспорта 3d моделей из 3dMax-а  в Visual Studio. Именно любители, гуру создания компьютерных игр - эта проблема уже была решена. С момента появления одной из первых компьютерных игр Арканойд и еще ряда игр типа BattelTank, Orion и Larry написанных под Dos, опять появляются программисты-одиночки, благодаря пакету программ http://create.msdn.com/en-us/home/getting_started XNA Game Studio и Visual Studio Express  выпущенных фирмой http://www.microsoft.com/ru/ru/default.aspx Microsoft два года назад.
После появляния Арканойда за разработку игр берутся серьезные компании, которые вкладывают в этот бизнесс громадныеденьги и окупают их в десять раз больше. Так появляются на свет StarCraft, Heroes 3, Civilization 3  - игры с двумерной спрайтовой анимацией, затем появляется MaxPayne уже с 3d моделями, смоделированными в 3dMax-е четвертой версии, Heroes 5, Civilization 5,Counter Strike, Doom 3, Crisys здесь анимация уже трехмерная. Но стоимость затраченная на компьютерное оборудование и  программы, а так же  разделения труда разработчиков КИ на программистов, художников модельеров, писателя сюжета игры и  тестировщиков игры,не дают никакой возможности обычному пользователю компьютера, а точнее разработчику компьютерной игры индивидуалу, в домашних условиях написать компьютерную игру. Сейчас благодаря XNA и  http://usa.autodesk.com/adsk/servlet/pc/index?id=13567410&siteID=123112
3dMax-у опять наступает эра разработчиков компьютерных игр одиночек.
XNA и Visual Studio Express распространяются фирмой Microsoft абсолютно бесплатно. да и для разработки игр есть форумы - http://www.codeplex.com/ CodePlex  и   http://msdn.microsoft.com/ru-ru/library/ms123401.aspx  Cправка по программе Visual Studio, где на ваш вопрос ответят сами программисты из Microsoft. Собственно, когда XNA только появился, то экспорт 3d моделей из 3dMax-а уже был реализован в http://depositfiles.com/files/6z1tc0in1 XNA FrameWork  - это стандартные классы написанные на C++ и скомпилированные в библиотеки .dll, вроде как NetFrameWork, только для игр. Это можно посмотреть в этом http://depositfiles.com/files/3fd0q14fn проекте для Visual Studio, а именно в этом коде файла-класса
ShadowMapping.cs
// Loop over meshs in the model
 foreach (ModelMesh mesh in model.Meshes)
 {
 // Loop over effects in the mesh
 foreach (Effect effect in mesh.Effects)
 {
 if (effect.GetType() == typeof(BasicEffect))
 {
 BasicEffect effect1 = (BasicEffect)effect;
 effect1.World = WorldMatrix;
 effect1.View = Matrix.CreateLookAt(new Vector3(0.0f, 100.0f, 50.0f), Vector3.Zero, Vector3.Up);
 effect1.Projection = Matrix.CreatePerspectiveFieldOfView(MathHelper.ToRadians(45.0f),
 aspectRatio, 1.0f, 1000.0f);
 }
 // Set the currest values for the effect
 //effect.CurrentTechnique = effect.Techniques[techniqueName];
 // effect.Parameters["World"].SetValue(world);
 // effect.Parameters["View"].SetValue(view);
 //effect.Parameters["Projection"].SetValue(projection);
 // effect.Parameters["LightDirection"].SetValue(lightDir);
 //effect.Parameters["LightViewProj"].SetValue(lightViewProjection);
 // if (!createShadowMap)
 // effect.Parameters["ShadowMap"].SetValue(shadowRenderTarget);
 }
 // Draw the mesh
 mesh.Draw();
 }
Я его немного поправил, потому что проект двух-летней давности у меня не сохранился на компьютере, поэтому я скачал с сайта один из проектов и реализовал его, как это сложилось исторически. Как мы видим в проекте для файла 3d модели dude.fbx назначен стандартный импротер Autodesk FBX - XNA Framework и экспортер Model - XNA Framework.Вот картинка -
 Ckjlfn Dude
Рендер довольно очень страшный, но писать игру в специализированной среде разработки игр уверяю вас значительно легче, чем все это делать с нуля. Из 3dMax-а модель экспортируется при помощи стандартного .fbx экспортера встроенного в 3dMax, забыл отметить, что XNA  поддерживает только файлы 3dмодели формата .x  DirectX-овский стандарт и .fbx Собственно, когда это увидели юные дизайнеры 3dMax-а, то первое о чем затрубил интернет - это  "Анимация из 3dMax-а, Анимация из 3dMax-а" Действительно вся анимация в XNA заключается в вращении модели, перемещении и масштабировании. А как заставить того же солдата dude.fbx не просто сдвигаться, а дать кулаком по морде своему врагу. Год назад эта анимация, которая называлась скелетной анимацией, в одном из проектов Visual Studio была реализованна. Суть ее заключалась в том, что в 3dMax-е рисуется модель человека или человеко-подобного существа на нее натягивается скелет Bip, и к модели применяется модификатор Skin. Все, затем к скелету подгружается файл движения формата .bip и ваша модель солдата секунд 7-8 дерется у вас на экране монитора. Файлов движения для 3dMax-а полно в мультистудии телепроекта "Мульт Личности", который показыватся по первому или второму каналу. Там они их делают на очень дорогом оборудовании сенсорного захвата движения. Т.е. актер цепляет на себя датчики и 3dмодель повторяет в программе 3dMax все его движения и затем компьютер все это записывает в файл формата .bip Так, что если у вас есть время и желание едьте туда и выпрашиваете эти файлы в Останкино. Несколько файлов можно купить в моем
http://artem00511.narod.ru/html_shop/index.html?idn=65086 интернет магазине. Такую анимацию я затем пробовал  экспортировать при помоши стандартного fbx экспортера, но модель почему-то в окне XNA проекта превращалась в паучка, т.е кости модели почему-то изворачивались и ничего подходящего, как "паук" названия к такой модели я не вижу. Неделю назад мне удалось экспортировать анимацию при помощи вот этого http://www.kwxport.org/ экспортера 3dMax-а. Он экспортирует анимацию в формат .x
Вот так должно выглядеть окно экспортера перед экспортом модели.
KWX Exporter
Рассказывать, что обозначает каждая опция я не буду, главное, что это работает.
Реализованно это вот в этом http://depositfiles.com/files/6lvvqh300"]проекте Можете запустить его и посмотреть, не забудьте нажать правой кнопкой мыши в окне для просмотра анимации. Собственно модель, которую я анимировал - это Robot.x, экспортер CPU Skinned Model для нее написан в этом решении проекта, а именно проекты CpuSkinningDataTypes (Windows) и CpuSkinningPipelineExtensions, оба пректа компилируются, как библиотеки, а не екзешники. Обе билиотеки CpuSkinningDataTypes.dll и CpuSkinningPipelineExtensions.dll можно найти в папке CPUSkinningSample_4_0CpuSkinningPipelineExtensionsbinx86Debug. Теперь, чобы написать игру с нуля можно либо влючить эти проекты к вашему решению, либо указать эти библиотеки, как ссылки. А именно в папку Content обе ссылки, а в основной проект CpuSkinningDataTypes.dll. И пользоваться ими, как обычно. Dll - шки - это обычные файлы-классы, только скомпилированные в один файл для удобства и может еще для разделения труда программистов. Типа одни товарищи пишут одни Dll - шки другие другие, а потом кто-то один их собирает в один проект. Инициализируется модель вот так -
cpuRobot = Content.Load<CpuSkinnedModel>("Robot");
Этот код добавляет анимацию -
// Create an animation player, and start decoding an animation clip.
 animationPlayer = new AnimationPlayer(cpuRobot.SkinningData);
 AnimationClip clip = cpuRobot.SkinningData.AnimationClips["Anim1"];
 animationPlayer.StartClip(clip);
Anm1 - это название анимации, которую вы указали при экспорте модели из 3dMax-а
В методе Update() пишеться вот такая строчка
// update animations
 animationPlayer.Update(gameTime.ElapsedGameTime, true, Matrix.Identity);[/code] И наконец последнне метод Draw() [code]
 graphics.GraphicsDevice.Clear(Color.LightGoldenrodYellow);
 spriteBatch.Begin();
 //выведем фоновое изображение
 // spriteBatch.Draw(txtBack, recBack, Color.White);
 //Выведем игровые объекты // Compute camera matrices.
 const float cameraDistance = 180;
 Matrix view = Matrix.CreateTranslation(0, -40, 0) *
 Matrix.CreateRotationY(MathHelper.ToRadians(0f)) *
 Matrix.CreateRotationX(MathHelper.ToRadians(0f)) *
 Matrix.CreateLookAt(new Vector3(0, 0, cameraDistance), new Vector3(0, 0, 0), Vector3.Up);
 Matrix projection = Matrix.CreatePerspectiveFieldOfView(MathHelper.PiOver4, GraphicsDevice.Viewport.AspectRatio, 1, 1000);
 // reset graphics state to be appropriate for drawing our model
 graphics.GraphicsDevice.BlendState = BlendState.Opaque;
 graphics.GraphicsDevice.RasterizerState = RasterizerState.CullCounterClockwise;
 graphics.GraphicsDevice.DepthStencilState = DepthStencilState.Default;
 graphics.GraphicsDevice.SamplerStates[0] = SamplerState.LinearWrap; // draw the correct model based on our current rendering mode
 if (displayCpuModel)
 {
 foreach (CpuSkinnedModelPart modelPart in cpuRobot.Parts)
 {
 modelPart.SetBones(animationPlayer.SkinTransforms); modelPart.Effect.SpecularColor = new Vector3(1f);
 modelPart.Effect.SpecularPower = 32f;
modelPart.Effect.World = world;
 modelPart.Effect.View = view;
 modelPart.Effect.Projection = projection; modelPart.Effect.EnableDefaultLighting();

modelPart.Effect.DirectionalLight0.Direction = Vector3.Forward;
 modelPart.Effect.DirectionalLight0.Enabled = true;
 modelPart.Effect.DirectionalLight1.Enabled = true;
 modelPart.Effect.DirectionalLight2.Enabled = true;
modelPart.Draw();
 }
 }
Теперь поговорим о небольшой моей хитрости. В 3dMax - е нельзя записать множественную анимацию в один файл .x А  в некоторых играх хотелось бы записать несколько анимаций персонажа, например ходьба, прыжок, приседание, в один файл и не просто записать но еще иметь возможность обращаться к таким анимациям по индексу, самый идеальный  вариант "Anim1", "Anim2","Anim3" индекс здесь 1,2 и 3 ну еще может добавить анимацию смерти "Death"
Что для этого нужно сделать.

  • в 3dMax-е при помощи Mixer загружаем несколько .bip анимаций одна за другой.
  • вычисляем кадр начала и конца для каждой анимации и
  • в экспортере, смотрите картинку сверху задаем первый кадр, кол-во кадров и название анимации "Anim1", два, три и т.д.
Все, теперь в коде проекта  XNA можно обращаться к каждой анимации таким образом.
int i;
 i=3;
 AnimationClip clip = cpuRobot.SkinningData.AnimationClips["Anim"+i.ToString()];
 animationPlayer.StartClip(clip);
Но история не стоит на месте, скоро 3d дизайнеры потребуют от программистов Microsoft экспорта произвольной анимации из 3dMax, поэтому живем, как и раньше, ждем, следим за новостями http://create.msdn.com/en-US/education/catalog/ сайтов, и радуемся жизни.
Конец статьи. автор - Харченко Артем

Теги: , , ,

Дата: 11 января 2011

Автор: artem005

Комментарии: 10 701

Комментарии: 10701

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

  2. Чтобы вызвать нарколога в Красноярске, необходимо связаться с частным медицинским центром и кратко описать ситуацию. Оператор уточнит возраст человека, длительность запоя, адрес, наличие хронических болезней и основные жалобы. Чем точнее информация, тем лучше врач сможет подготовиться к выезду.
    Получить больше информации - [url=https://1.narcolog-na-dom-krasnoyarsk55.ru/]вывод из запоя круглосуточно[/url]

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

  4. Выбрать быстро дешевые цветы Омск легко через каталог. Заказывайте свежие розы к любому празднику. В ассортименте собраны сборные композиции. Оформляйте заказ и делайте приятные сюрпризы в день рождения.

  5. Сериал в интернете сверхъестественное 2 с хорошей картинкой можно на нашем сайте. Сезоны и серии сериала доступны для просмотра. Наблюдайте за историей братьев Винчестеров, которые расследуют паранормальные события. На протяжении сериала встречаются демоны, ангелы, призраки и монстры. Кастиэль становится союзником Винчестеров, а опасные враги угрожают героям. Выбирайте нужный сезон и серию и погружайтесь в атмосферу мистического сериала.

  6. Посоветуйте кто ставит накрутку реакций на канал. Живые, не боты. Смотрел несколько, взял тут: [url=https://nakrutka-reakcij-v-tg-1682.ru]nakrutka-reakcij-v-tg-1682.ru[/url]. Претензий нет. На канал пойдёт.

  7. Помощь может включать консультацию, детоксикацию, стационар и дальнейшее сопровождение по показаниям.
    Подробнее - [url=https://a.vyvod-iz-zapoya-kemerovo18.ru/]вывод из запоя с выездом Кемерово[/url]

  8. Наркологическая служба Красноярска может принимать вызовы круглосуточно в пределах своего режима работы, включая выходные и праздники. Чтобы заказать вывод из запоя, достаточно сделать звонок, сообщить район, адрес, возраст пациента и основные жалобы. Консультант расскажет об услуге, возможном времени приезда и условиях лечения. Если больной потерял сознание, у него появились судороги или серьезные проблемы с дыханием, плановый выезд не заменяет экстренную медицинскую помощь.
    Дополнительная информация - https://4.vyvod-iz-zapoya-krasnoyarsk55.ru/

  9. При подобных проявлениях врач решает, подходит ли лечение на дому. Иногда безопаснее сразу попасть в отделение наркологии, где есть оборудование, анализы крови, мониторинг и возможность экстренного вмешательства. Клинику можно выбрать заранее или обратиться в ближайший профильный диспансер.
    Получить больше информации - https://a.vyvod-iz-zapoya-v-ekaterinburge16.ru/

  10. Помощь оказывают врачи с практикой в наркологии, психиатрии и восстановительной терапии.
    Изучить вопрос подробнее - [url=https://a.vyvod-iz-zapoya-kemerovo18.ru/]вывод из запоя с выездом в Кемерово[/url]

  11. Вывод из запоя на дому подходит не каждому пациенту. Домашнее лечение возможно, если человек находится в сознании, способен взаимодействовать с врачом и у него отсутствуют признаки тяжелых осложнений. Нарколог приезжает в любой район Красноярска в пределах зоны работы клиники, проводит оценку и решает, какие процедуры необходимы. Если домашний формат небезопасен, врач рекомендует лечение в клинике.
    Подробнее - [url=https://4.vyvod-iz-zapoya-krasnoyarsk55.ru/]вывод из запоя клиника Красноярск[/url]

  12. Первый этап — телефонная консультация. Сам пациент или его близкие могут позвонить в центр и описать ситуацию. Консультант задает вопросы о продолжительности запоя, возрасте, заболеваниях и текущих жалобах. Если помощь нужна сейчас, важно сразу сообщить о выраженном ухудшении, психических нарушениях или предыдущих осложнениях.
    Подробнее - https://5.narcolog-na-dom-krasnoyarsk55.ru/

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

  14. Не каждый эпизод употребления спиртного требует стационарного лечения, однако продолжительный запой сопровождается накоплением токсичных продуктов распада этанола и нарушением работы внутренних органов. Чем дольше человек продолжает пить, тем выше вероятность обезвоживания, дефицита витаминов, нарушения электролитного баланса, проблем с сердцем, печенью, желудком и нервной системой. Вывод из запоя под контролем врача позволяет уменьшить нагрузку на организм и своевременно заметить признаки опасных осложнений.
    Изучить вопрос подробнее - [url=https://d.vyvod-iz-zapoya-krasnoyarsk55.ru/]наркология вывод из запоя[/url]

  15. Помощь можно получить анонимно, с аккуратным оформлением и внимательным отношением к личным данным.
    Дополнительная информация - https://7.vyvod-iz-zapoya-krasnoyarsk55.ru/

  16. Принимаем заявки круглосуточно, уточняем состояние и подбираем безопасный формат помощи.
    Подробнее - https://www.google.ch/url?q=https://v.vivod-iz-zapoya-v-sankt-peterburge16.ru

  17. Частный центр может предоставлять услуги анонимно и конфиденциально в рамках действующего законодательства. Информация о лечении, диагнозе и персональных данных не предназначена для свободной передачи третьим лицам. Перед оформлением заявки можно уточнить стоимость, документы, лицензии, условия оказания помощи и возможность последующего приема в клинике Красноярска.
    Дополнительная информация - [url=https://5.narcolog-na-dom-krasnoyarsk55.ru/]врач нарколог на дом в Красноярске[/url]

  18. Специалисты регулярно помогают при интоксикации, запоях, абстиненции и сложных состояниях зависимости.
    Получить больше информации - http://www.google.com.ph/url?sa=t&rct=j&q=&esrc=s&source=web&cd=5&cad=rja&uact=8&sqi=2&ved=0CEMQFjAE&url=https://a.vivod-iz-zapoya-v-sankt-peterburge16.ru

  19. Кодирование — это эффективный метод, который помогает человеку удержаться от употребления алкоголя на длительный срок. В нашей клинике используются проверенные и безопасные методики, которые подбираются индивидуально после консультации с психиатром-наркологом. Врач учитывает мотивацию пациента, стаж зависимости, наличие противопоказаний и предпочтения близких. Среди наиболее востребованных способов — медикаментозное кодирование препаратами на основе дисульфирама, налтрексона, а также психотерапевтические методы, например, стресс-терапия по Довженко. Каждый вариант имеет свои особенности, преимущества и противопоказания, поэтому окончательное решение принимается только после комплексного обследования и беседы с пациентом. Опытный доктор подберёт оптимальную схему и подробно ответит на все вопросы.
    Узнать больше - https://clients1.google.com.gt/url?q=https://1.vyvod-iz-zapoya-moskva011.ru

Оставить комментарий

*

Комментарий:

Ваш e-mail не будет опубликован.
Обязательные поля помечены *

Разрешенные HTML теги:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>