Войти
ПрограммированиеФорумГрафика

Создание Export плагина для 3D Studio MAX. (Комментарии к статье) (3 стр)

Страницы: 1 2 3 4 5 6 Следующая »
#30
9:12, 28 янв. 2006

последний ЗЫ 8*) 2L1f:
Здесь нет проблемы как таковой: при желании все ответы на подобные вопросы есть в maxsdk/dxsdk/oglbook, я уж молчу про форум
лично у меня есть класс(внутриигровой - это вписано в "объект" ) который имеет метод "сравнить точку и нормаль",  я ограничился округлением
до 4го знака - более подробные координаты мне нафиг не нужны, сама выгрузка модели, на текущий момент,  делается приблизительо так:


В список добавляются все _текстурные_ треугольники
Если есть новые точки - они соответственно добавляются (координаты берутся из tvfaces/tvvertices(гм, точки перепутал, но легко найти в max sdk) через индекс полигона(собсно совпадают индексы поолигонов и текстурных полигонов и се) )
Нормали считаются вторым проходом, сразу после того как в объект добавляютсся _все_ точки и _все_полигоны_, после этого создается dx(куда уж мы от мелкософта  ;) ,
вся эта кухня загоняется в стандартный dx-объект, оптимизится вертекс буффер  и выгружается,
за счет этих плясок я надеюсь выиграть немного времени на загрузке уровней...


Прошло более 9 месяцев
#31
12:53, 28 окт. 2006

Подскажите,  где можно найти статьи про формат *.x файла. Очень нужно!!!

#32
12:57, 28 окт. 2006

http://www.gamedev.ru/articles/plugin/20030917.zip
помогите, пожалуйста. если у кого есть этот же проект, но под Visual Studio 2005.
А то я уже замучалась его переделывать.

#33
14:34, 28 окт. 2006

Lu
Формат x отлично описан в DirectX SDK.
Возьми какую-нибудь модельку, сохранённую в текстовом .x и попробуй
разобраться в ней с помощью хелпов из DirectX SDK
Это совсем не сложно.

#34
21:31, 28 окт. 2006

Спасибо, попробую.

#35
21:14, 30 окт. 2006

помогите, пожалуйста. если у кого есть  проект из этой статьи переделанный  под Visual Studio 2005.
ОЧЕНЬ ОЧЕНЬ НАДО!!!!!

#36
10:00, 28 ноя. 2006

Привет Всем!!!

Я чего-то туплю и не как не могу понять следующие:
В максе все происходит в правостороней системе, а я хочу перегнать в левосторонью, но не просто так, а следующим образом, когда я экспорчу сцену
в отдельный файл пишется координаты обьекта и его орентация (Yaw, Pitch, Roll - так дает макс, подскажите пожалуйста как это дело переконвертить  в кватернион), а сам мешь сохраняется в отдельном файле. Если просто сменить Y->Z, a Z->Y, то это не работает, как нармально перевести из правосторонней в левостаронию систему координат? HELP ME!!!!!

#37
12:22, 28 ноя. 2006

XandoX
В Максе можно получить кватернион.
http://www.gamedev.ru/users/wat/articles/quaternions?page=2#kvaternioni_v_ma

#38
10:42, 4 дек. 2006

Как в максе получить матрицу которая ставит на свое место объект, если он изначально находится в нуле?
Тоесть мне нужно получить меш который находится в нуле и его координаты и повороты так что бы он встал на свое место в мире как в максе?

#39
10:43, 4 дек. 2006

и как тогда получить матрицу смещения для объектов приленькованых к данному?

#40
14:04, 14 янв. 2007

давай так:
1. Есть абстрактный 0 - точка отсчета (мировые координаты)
2. Каждый объект имеет собственные координаты отсчитанные от 0 (не мирового а локального)
3. Для того чтобы отрисовать объект мы умножаем на матрицу (вариантов много но имхо это один из самых быстрых - поправьте меня если я где-то ошибся)
4. Руками умножение реализовывать не стоит, все уже написано - cg тебе поможет, sse идет лесом (в данном контексте)т.

5. Не очень понятно что ты подразумеваешь под "прилинковаными объектами" (объекты могут быть связаны как угодно), но просто исходи из того что тебе нужно умножать локальные координаты на матрицу, таким образом ты получишь координаты в нужной системе..... (в т.ч. мировой)

#41
14:16, 3 фев. 2007

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 не используется нигде...

#42
14:20, 3 фев. 2007

И ещё, совсем глупый вопрос: TObj сам чтоли удалится при выходе из области видимости, хоть это и указатель на объект, а не сам объект? Т.е. с вызовом деструктора.

#43
17:03, 3 фев. 2007

Ага, в SDK нашел про deleteIt - значит в этом плагине ошибка - память будет течь - нет проверки на deleteIt, если true - надо удалять трайобжект в конце работы.

#44
17:04, 11 фев. 2007

Coriolis

if (Del){
  TObj->DeleteMe();
  return;
}
Страницы: 1 2 3 4 5 6 Следующая »
ПрограммированиеФорумГрафика

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