А зачем макрос? Не лучше ли попросить человека, знающего питон, форкнуть сорсотулзы и внести исправления для голдсорса?
А милка... Как уже прозвучало в чате:
Почитал чуток вики вальвы, разобрался. Вот примерно такой выходит СМД у сорса:
___________________________
версия 1
nodes
// Идентификаторы являются внутренними для каждого файла, компилятор учитывает кости по именам.
//-1 значит отсутствует.
ID кости, имя рут-кости, ID родительской кости (-1)
ID кости, имя кости, ID родительской кости.
ID кости, имя кости, ID родительской кости.
конец блока
skeleton
// Начало нового кадра
time 0
// Положение кости относительно родителя (для рута значения абсолютные)
ID кости, позиция XYZ, поворот XYZ
time 1
ID кости, позиция XYZ, поворот XYZ
конец блока
triangles
материал полигона
// кость-парент - кость, к которой привязаны вершины
// Последние 3 значения необязательны, они переназначают кость-парент. Есди не указать вес равным единице, то остальные значения будут привязаны к кости-паренту
ID кости-парента, позиция XYZ, нормали полигонов XYZ, UV-координаты, указатель, ID кости, вес
ID кости-парента, позиция XYZ, нормали полигонов XYZ, UV-координаты, указатель, ID кости, вес
ID кости-парента, позиция XYZ, нормали полигонов XYZ, UV-координаты, указатель, ID кости, вес
конец блока
________________
Я только пока не понял как работает указатель. В их примерах всё указано абстрактно как 0 или 1, а в моих смд-файлах вообще никаких значений значений на этих местах не вижу (как было сказано, необязательные значения).
Как мне кажется, я нашёл нужное место в коде экспортера. Ничего не обещаю, но попробую перелопатить, если что-то пойму.
Нашёл. Для начала надо всего лишь в одной строке поменять местами значения. Но этого недостаточно, надо ещё откуда-то брать номер кости и ставить его в начало.
А милка... Как уже прозвучало в чате:
Хотя если через неё надо просто пересохранять смд, то для примитивных моделек в небольших количествах это с горем пополам подойдёт. А когда модельки для мода клепаются как на конвейере, да ещё к каждой 10-20 анимаций надо сделать, а каждую анимацию ещё протестировать и экспортировать раз 50... Нафиг такое счастье! Такое только фиксить надо.20:32:59 - Raid: ага, @#$%^& *!@$%#
20:33:17 - Raid: иметь роллс-ройс а ездить на деревянном велосипеде
20:33:24 - Raid: круто же, а главное - целесообоазно
Post automatically merged:
Почитал чуток вики вальвы, разобрался. Вот примерно такой выходит СМД у сорса:
___________________________
версия 1
nodes
// Идентификаторы являются внутренними для каждого файла, компилятор учитывает кости по именам.
//-1 значит отсутствует.
ID кости, имя рут-кости, ID родительской кости (-1)
ID кости, имя кости, ID родительской кости.
ID кости, имя кости, ID родительской кости.
конец блока
skeleton
// Начало нового кадра
time 0
// Положение кости относительно родителя (для рута значения абсолютные)
ID кости, позиция XYZ, поворот XYZ
time 1
ID кости, позиция XYZ, поворот XYZ
конец блока
triangles
материал полигона
// кость-парент - кость, к которой привязаны вершины
// Последние 3 значения необязательны, они переназначают кость-парент. Есди не указать вес равным единице, то остальные значения будут привязаны к кости-паренту
ID кости-парента, позиция XYZ, нормали полигонов XYZ, UV-координаты, указатель, ID кости, вес
ID кости-парента, позиция XYZ, нормали полигонов XYZ, UV-координаты, указатель, ID кости, вес
ID кости-парента, позиция XYZ, нормали полигонов XYZ, UV-координаты, указатель, ID кости, вес
конец блока
________________
Я только пока не понял как работает указатель. В их примерах всё указано абстрактно как 0 или 1, а в моих смд-файлах вообще никаких значений значений на этих местах не вижу (как было сказано, необязательные значения).
Как мне кажется, я нашёл нужное место в коде экспортера. Ничего не обещаю, но попробую перелопатить, если что-то пойму.
Post automatically merged:
Нашёл. Для начала надо всего лишь в одной строке поменять местами значения. Но этого недостаточно, надо ещё откуда-то брать номер кости и ставить его в начало.
Код:
# Finally, write it all to file
self.smd_file.write("0" + pos_norm + uv + weight_string + "\n")
Останнє редагування: