Автор Тема: Небходима помощь по написанию экспрта в свой формат на языке Python.  (Прочитано 24613 раз)

Оффлайн Bulbash

  • Житель
Подскажите, как получить веса костей для некоторой вершины.

Оффлайн sungreen

  • ...
  • Житель
  • Kostroma mon amour
    • sungreen.github.io
... глубоко этот вопрос не копал, но в Сети пишут что прямой функции API нет и нужно делать обход списков ...
... вот посмотри этот код  http://blender.stackexchange.com/questions/621/return-list-of-associated-vertex-index-weight-values-for-a-given-vertex-group  , в нем создаётся на каждую вершины список групп с весами ...
Для Кота

Оффлайн LanuHum

  • Житель
... глубоко этот вопрос не копал, но в Сети пишут что прямой функции API нет и нужно делать обход списков ...
Тоже не нашёл определения веса.

Оффлайн Bulbash

  • Житель
Возникла еще одна фундаментальная проблема. Смог с вашей помощью  достучаться до вот такой структуры каждой кости: https://www.blender.org/api/blender_python_api_2_78a_release/bpy.types.Bone.html#bpy.types.Bone . Нашел в ней такого плана переменную parent_index (как я понимаю это индекс материнской кости для данной кости). Как получить массив аналогичных индексов но для всех дочерних костей?

Оффлайн Striver

  • Житель
  • недоинженер, полупрограммист
    • http://striver00.ru
Цитировать
Как получить массив аналогичных индексов но для всех дочерних костей?
Так тут же (по приведённой тобой ссылке) есть свойство children. Там коллекция дочерних костей.
вот что в консоли видно на эту тему:
Код
>>> ob.data.bones[0]
bpy.data.armatures['Armature'].bones["Bone"]

>>> ob.data.bones[0].children
bpy.data.armatures['Armature'].bones["Bone"].children

>>> list(ob.data.bones[0].children)
[bpy.data.armatures['Armature'].bones["Bone.001"], bpy.data.armatures['Armature'].bones["Bone.002"]]

Оффлайн Bulbash

  • Житель
Вы не много не поняли. Мне ненужен доступ к данным о дочерней кости, мне нужен конкретно ее индекс в общем список. Это нужно чтоб я просто сохранил целиком список всех костей, а уже затем в своем движке по индексам в этом списке смог получить информацию о дочерних костях из общего списка.

Оффлайн LanuHum

  • Житель
Вы не много не поняли. Мне ненужен доступ к данным о дочерней кости, мне нужен конкретно ее индекс в общем список. Это нужно чтоб я просто сохранил целиком список всех костей, а уже затем в своем движке по индексам в этом списке смог получить информацию о дочерних костях из общего списка.

Код
import bpy
for key,value in enumerate(bpy.context.object.data.bones):
    print(key,value.name)

Оффлайн Striver

  • Житель
  • недоинженер, полупрограммист
    • http://striver00.ru
Цитировать
Вы не много не поняли.
Ну, теперь я тем более не понял. Был вопрос про дочерние кости, я показал, что свойство .children выдаёт коллекцию дочерних костей. Если нужен их список, применяется list(...). Индексами в коллекции являются имена костей ("Bone.001", "Bone.002" и т.д.), т.к. коллекция эмулирует словарь.

Оффлайн Bulbash

  • Житель
Мне нужно получить ЧИСЛОВОЕ значение индекса дочерней кости в коллекции. Можно ли это реализовать?

Оффлайн LanuHum

  • Житель
Мне нужно получить ЧИСЛОВОЕ значение индекса дочерней кости в коллекции. Можно ли это реализовать?
А, я что написал?
Сравнивайте в цикле с value, получайте key.

Оффлайн Bulbash

  • Житель
Можно ли из это структуры кости: https://www.blender.org/api/blender_python_api_2_78a_release/bpy.types.Bone.html#bpy.types.Bone, получить ее ротацию в виде кватерниона?
« Последнее редактирование: 27 Декабрь 2016, 12:43:52 от Bulbash »

Оффлайн Samovar

  • Житель
Фиг его знает... Видимо, самому программно преобразовать:
http://www.gamedev.ru/code/articles/faq_matrix_quat
более конкретно, как преобразовать матрицу в кватернион:
http://www.gamedev.ru/code/articles/faq_matrix_quat?page=5#kvaternioni
http://www.gamedev.ru/code/articles/faq_matrix_quat?page=6

Оффлайн Striver

  • Житель
  • недоинженер, полупрограммист
    • http://striver00.ru
Можно ли из это структуры кости: https://www.blender.org/api/blender_python_api_2_78a_release/bpy.types.Bone.html#bpy.types.Bone, получить ее ротацию в виде кватерниона?
Это данные кости в режиме редактирования. Там есть координаты начала (head или head_local) и конца кости (tail или tail_local). Нет там никаких вращений.
А про данные в режиме позы я уже писал. Они в данных по конкретному действию (action) для конкретного кадра в анимации. И кватернион там тоже есть.

Оффлайн Bulbash

  • Житель
Не понимаю причину не компиляции моего скрипта. Подскажите если кто понимает.

Оффлайн Striver

  • Житель
  • недоинженер, полупрограммист
    • http://striver00.ru
Ох, и страшна твоя функция execute...
У меня ругалось на пробелы вначале строк (начиная со 136-й строки и далее). Питон очень чувствителен к количеству таких пробелов, а также к путанице пробелы-табуляция.
Вроде поправил, сейчас ошибок не выдаёт, но не уверен, что все уровни if правильно выставил, т.к. в самом коде разбираться неохота.

 


Яметрика

* По форуму

* Рекламный блок

* Последние вложения

1 (1).png
Скачано: 64
Автор: LEXA ANЭGROWND
blender.png
Скачано: 74
Автор: ipv2007
4.png
Скачано: 96
Автор: hiroyukiss
2.png
Скачано: 119
Автор: hiroyukiss

Скачано: 109
Автор: Dilifa12