Войти
ПроектыФорумОцените

Импорт SMD для XNA (xna smd content importer) + исходники

#0
16:55, 21 ноя. 2009

Импортер моделей SMD формата  в виде расширения для xna content pipline.

Код импортера: Zakus
Код из SkinnedSample : microsoft
Тестовая модель 1: valve
Тестовая модель 2: fpsbanana (разные автора)

smdImportXna | Импорт SMD для XNA (xna smd content importer) + исходники


В порядок правда пока сам код не переведен, также вероятны ошибки на специфических файлах, и могут отсутствовать некоторые проверки. (ещё буду доделывать)
Но на тех модельках что у меня были, работает вполне нормально. (модели в примере, сразу после декомпилятора от cannonfoder'a и без какой либо обработки)

Импортер рассчитан на работу в связке или с обычным процессором моделей (только статический меш),
или вместе с процессором из SkinnedSample (тогда будет доступна анимация)  c оф. сайта xna.
Ну и вы можете использовать свой процессор если он будет сделан по образу того что в SkinnedSample.

У smd обычно только одна анимация в файле, поэтому на базе примера от мс приходится грузить
один Model - с мешем, и в отдельные Model объекты анимацию. Просто из основного брать сам меш,
а другие не рендерить, а просто вытягивать SkinningData для AnimationPlayer.
Анимация всегда в (Model.Tag as SkinningData).Animation["Main"];

Не очень красиво в плане архитектуры,
но тут или формат переделывать или процессор свой писать вместе с классом модели, но тогда это уже задача из другой области.

В архиве солюшен для 2008 про студии, в нем совмещены - проект импортера, и слегка переделанный SkinnedSample  для демонстрации.
(бонусом мой класс first-person камеры =) )
Кнопки 1-4 разные анимации персонажа,  5-8 оружия.

Текстуры модели должны лежать в папке content проекта, но при этом не нужно их добавлять в дерево проекта в студии (добавлять только модель),
импортер их сам подхватывает когда найдет их упоминание в файле smd.

Если вы модели прям из hl2 берете или css - то текстуры нужно будет перегнать из vtf в bmp.
Материалы valve не поддерживаются(( Просто берется текстура, материал настраивайте уже сами при помощи effect и basiceffect.

Качать тут:
http://home.zakus.net/works/programming/SmdImporterAndSample.rar
(хотел залить на codeplex о не знаю как они там отнесутся к чужим моделькам в примере=)))


Использовать с XNA 3.1.


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

P.S.
Чуть не забыл, +/- поднять опустить камеру)


#1
9:15, 22 ноя. 2009

good!
I dont download because I am using GPRS now.

#2
14:12, 22 ноя. 2009

Zakus
Максимальное кол-во костей для PC на HLSL 3.0 - 59?

#3
17:31, 22 ноя. 2009

WhiteWolf
Для 2.0. в конкретной реализации.

#4
18:01, 22 ноя. 2009

Похоже что и для 3.0: vertex constants >= 256, по четыре на кость ~ 59.

#5
18:14, 22 ноя. 2009

WhiteWolf
Ну как вариант, если будет больше 59,  скелет можно разделить на два объекта.
Ну в смысле как две отдельные модели.
Или же (я правда в шейдерах далеко не продвинулся - не большой специалист) как то ввиде текстуры(по несколько пикселей на матрицу) запихнуть)

#6
21:27, 22 ноя. 2009

Zakus
> Или же (я правда в шейдерах далеко не продвинулся - не большой специалист) как
> то ввиде текстуры(по несколько пикселей на матрицу) запихнуть)
Интересная идея... Извращение.

ПроектыФорумОцените

Тема в архиве.