Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > C++

Ответ
 
Опции темы
Старый 11.01.2012, 00:04   #1
pozitiffcat
Мастер
 
Аватар для pozitiffcat
 
Регистрация: 09.05.2010
Адрес: Самара
Сообщений: 1,083
Написано 254 полезных сообщений
(для 533 пользователей)
DirectX вектор умножить на матрицу (расчет скелетки)

Возвращаюсь к своему старому нерешенному вопросу.
Есть матрица есть точка, нужно вычислить новую позицию точки не прибегая к синусам и косинусам. Можно ли так?
float weight = 0.5f; //вес точки
D3DXMATRIX mat; //какаято матрица
D3DXMATRIX oldpos; //исходная позиция точки
D3DXVECTOR newpos = oldpos * mat;
и как быть с весом?
Внятной теории ненашел
(Offline)
 
Ответить с цитированием
Старый 11.01.2012, 00:13   #2
Mr_F_
Терабайт исходников
 
Аватар для Mr_F_
 
Регистрация: 13.09.2008
Сообщений: 3,947
Написано 2,189 полезных сообщений
(для 6,051 пользователей)
Ответ: DirectX вектор умножить на матрицу (расчет скелетки)

не уверен, что там оператор умножения перегружен (давно не юзал встроенную математику), но помню что юзал эту функцию:
http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx
(Offline)
 
Ответить с цитированием
Старый 11.01.2012, 08:31   #3
616}[aKeP
Нуждающийся
 
Аватар для 616}[aKeP
 
Регистрация: 23.02.2011
Сообщений: 54
Написано 3 полезных сообщений
(для 5 пользователей)
Ответ: DirectX вектор умножить на матрицу (расчет скелетки)

Оператор умножения в D3DX перегружен, но по-моему только для матриц.
Вот функции преобразования:
D3DXVECTOR3 *D3DXVec3TransformCoord(
D3DXVECTOR3* pOut, // Результат
CONST D3DXVECTOR3* pV, // Преобразуемая точка
CONST D3DXMATRIX* pM // Матрица преобразования
);


D3DXVECTOR3 *D3DXVec3TransformNormal(
D3DXVECTOR3 *pOut, // Результат
CONST D3DXVECTOR3 *pV, // Преобразуемый вектор
CONST D3DXMATRIX *pM // Матрица преобразования
);

pozitiffcat, что тебе именно с весом сделать надо?
Если ты хочешь физику точки сделать, то нужно искать момент инерции.
Если ты принимаешь вес за, что-то другое, то можно поподробнее.
(Offline)
 
Ответить с цитированием
Старый 11.01.2012, 08:42   #4
Knightmare
Дэвелопер
 
Регистрация: 14.02.2007
Сообщений: 1,471
Написано 824 полезных сообщений
(для 2,920 пользователей)
Ответ: DirectX вектор умножить на матрицу (расчет скелетки)

Суммарный вес всех костей равен 1. Неужели так сложно догадаться, что надо тупо перемножить вершину на матрицу каждой кости, результат домножить на вес и потом все вектора сложить?

Vector resultPosition;
for(
int i 0vertex->getTotalWeights(); i++)
    
resultVector += (skeleton->getBoneMatrix(vertex->getBoneIndex(i)) * vertex->getPosition()) * vertex->getBoneWeight(i); 
(Offline)
 
Ответить с цитированием
Старый 11.01.2012, 09:13   #5
pozitiffcat
Мастер
 
Аватар для pozitiffcat
 
Регистрация: 09.05.2010
Адрес: Самара
Сообщений: 1,083
Написано 254 полезных сообщений
(для 533 пользователей)
Ответ: DirectX вектор умножить на матрицу (расчет скелетки)

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

Vector resultPosition;
for(
int i 0vertex->getTotalWeights(); i++)
    
resultVector += (skeleton->getBoneMatrix(vertex->getBoneIndex(i)) * vertex->getPosition()) * vertex->getBoneWeight(i); 
я догадывался, но всеже что бы не городить быдлокод спросил
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 21:11.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com