последний ЗЫ 8*) 2L1f:
Здесь нет проблемы как таковой: при желании все ответы на подобные вопросы есть в maxsdk/dxsdk/oglbook, я уж молчу про форум
лично у меня есть класс(внутриигровой - это вписано в "объект" ) который имеет метод "сравнить точку и нормаль", я ограничился округлением
до 4го знака - более подробные координаты мне нафиг не нужны, сама выгрузка модели, на текущий момент, делается приблизительо так:
В список добавляются все _текстурные_ треугольники
Если есть новые точки - они соответственно добавляются (координаты берутся из tvfaces/tvvertices(гм, точки перепутал, но легко найти в max sdk) через индекс полигона(собсно совпадают индексы поолигонов и текстурных полигонов и се) )
Нормали считаются вторым проходом, сразу после того как в объект добавляютсся _все_ точки и _все_полигоны_, после этого создается dx(куда уж мы от мелкософта ;) ,
вся эта кухня загоняется в стандартный dx-объект, оптимизится вертекс буффер и выгружается,
за счет этих плясок я надеюсь выиграть немного времени на загрузке уровней...
Подскажите, где можно найти статьи про формат *.x файла. Очень нужно!!!
http://www.gamedev.ru/articles/plugin/20030917.zip
помогите, пожалуйста. если у кого есть этот же проект, но под Visual Studio 2005.
А то я уже замучалась его переделывать.
Lu
Формат x отлично описан в DirectX SDK.
Возьми какую-нибудь модельку, сохранённую в текстовом .x и попробуй
разобраться в ней с помощью хелпов из DirectX SDK
Это совсем не сложно.
Спасибо, попробую.
помогите, пожалуйста. если у кого есть проект из этой статьи переделанный под Visual Studio 2005.
ОЧЕНЬ ОЧЕНЬ НАДО!!!!!
Привет Всем!!!
Я чего-то туплю и не как не могу понять следующие:
В максе все происходит в правостороней системе, а я хочу перегнать в левосторонью, но не просто так, а следующим образом, когда я экспорчу сцену
в отдельный файл пишется координаты обьекта и его орентация (Yaw, Pitch, Roll - так дает макс, подскажите пожалуйста как это дело переконвертить в кватернион), а сам мешь сохраняется в отдельном файле. Если просто сменить Y->Z, a Z->Y, то это не работает, как нармально перевести из правосторонней в левостаронию систему координат? HELP ME!!!!!
XandoX
В Максе можно получить кватернион.
http://www.gamedev.ru/users/wat/articles/quaternions?page=2#kvaternioni_v_ma
Как в максе получить матрицу которая ставит на свое место объект, если он изначально находится в нуле?
Тоесть мне нужно получить меш который находится в нуле и его координаты и повороты так что бы он встал на свое место в мире как в максе?
и как тогда получить матрицу смещения для объектов приленькованых к данному?
давай так:
1. Есть абстрактный 0 - точка отсчета (мировые координаты)
2. Каждый объект имеет собственные координаты отсчитанные от 0 (не мирового а локального)
3. Для того чтобы отрисовать объект мы умножаем на матрицу (вариантов много но имхо это один из самых быстрых - поправьте меня если я где-то ошибся)
4. Руками умножение реализовывать не стоит, все уже написано - cg тебе поможет, sse идет лесом (в данном контексте)т.
5. Не очень понятно что ты подразумеваешь под "прилинковаными объектами" (объекты могут быть связаны как угодно), но просто исходи из того что тебе нужно умножать локальные координаты на матрицу, таким образом ты получишь координаты в нужной системе..... (в т.ч. мировой)
Hi all.
Мне чего-то непонятно стало, я плагин пишу - на сях это моя вторая программа после Hello World.
void SceneSaver::ProcNode(INode *node)
{
int numF, numV, numTV, CurrHeader, zero = 0, debug = 0xAA, Del;
streampos NextNode, VertexPointer, FacePointer, TmpPos;
// Получаем TriObject из узла
TriObject *TObj;
TObj = GetTriObjFromNode(node, Del);Здесь создаётся переменная Del.
Затем идёт вызов GetTriObjFromNode(node, Del), куда она передаётся.
В этой функции если из нода извлекли объект, и потом идёт проверка:
if (obj != tri) deleteIt = TRUE;
В чём смысл этих действий? Дальше в коде Del не используется нигде...
И ещё, совсем глупый вопрос: TObj сам чтоли удалится при выходе из области видимости, хоть это и указатель на объект, а не сам объект? Т.е. с вызовом деструктора.
Ага, в SDK нашел про deleteIt - значит в этом плагине ошибка - память будет течь - нет проверки на deleteIt, если true - надо удалять трайобжект в конце работы.
Coriolis
if (Del){ TObj->DeleteMe( ); return; }
Тема в архиве.