Импортер моделей SMD формата в виде расширения для xna content pipline.
Код импортера: Zakus
Код из SkinnedSample : microsoft
Тестовая модель 1: valve
Тестовая модель 2: fpsbanana (разные автора)
В порядок правда пока сам код не переведен, также вероятны ошибки на специфических файлах, и могут отсутствовать некоторые проверки. (ещё буду доделывать)
Но на тех модельках что у меня были, работает вполне нормально. (модели в примере, сразу после декомпилятора от 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.
Чуть не забыл, +/- поднять опустить камеру)
good!
I dont download because I am using GPRS now.
Zakus
Максимальное кол-во костей для PC на HLSL 3.0 - 59?
WhiteWolf
Для 2.0. в конкретной реализации.
Похоже что и для 3.0: vertex constants >= 256, по четыре на кость ~ 59.
WhiteWolf
Ну как вариант, если будет больше 59, скелет можно разделить на два объекта.
Ну в смысле как две отдельные модели.
Или же (я правда в шейдерах далеко не продвинулся - не большой специалист) как то ввиде текстуры(по несколько пикселей на матрицу) запихнуть)
Zakus
> Или же (я правда в шейдерах далеко не продвинулся - не большой специалист) как
> то ввиде текстуры(по несколько пикселей на матрицу) запихнуть)
Интересная идея... Извращение.
Тема в архиве.