BlenderУкраина
Главная
Новости
Статьи
Уроки
Файлы
Ссылки
Форум
Галерея
Конкурсы
• Поиск по сайту


Логин:

Пароль:

 Запомнить
Восстановление пароля

Зарегистрироваться

Наше сообщество:

 Форум

 Галерея
       Все работы по рейтингу
       Все новые работы
       Последние комментарии

 Конкурсы
       Ежедневный
       На баннер (прием работ)
       Повтори
       Художественный
       Модель для сборки

 Гостевая

 Радио

RSSНовости Blender
Последние сообщения форума

 Добавить новость
парфюмерияпарфюмерия : Днепропетровск : модели радиомоделирадиомодели модели на радиоуправлении
Сейчас на сайте 10 посетителей:
Игор, denchik., starik99, taburet и 6 гостей

Обсуждаемые темы:

motion blur для анимации (taburet)
Уголок юного музыканта.) (MORee.?!))
Linux (5araon)
Болталка (Lanuhum)
SILICONE-2 (игра разрабатывается) (Дима Кива)
W.I.P. newman (newman)
Конкурсы от Lanuhum (Lanuhum)
Пожелания и предложения Blender 2.46 (Илья Джордан)
Ежедневный Конкурс моделирования в Blender (Илья Джордан)
Blender 2.5 Materials and Textures Cookbook (Lanuhum)
Вопросы новичков и ответы (newman)
Рисование (XDev)
WIP by ПыщПыщ (ПыщПыщ)
Анекдоты (DukeNukem2005)
Помощь с управлением blender (SWaP)
Blender Foundation - News, Announcements & Another (nazyk950)

Работа дня:

Em
Ежедневный конкурс моделирования

Новые работы в галерее:


Автор: M_Rodionov

Автор: Sever

Автор: zloy_tux


Автоматический полив


Лекарственные травы


Прически и стрижки  

Blender v2.59.0 – API.



Главная » Форум » Python и плагины » Blender v2.59.0 – API.

Сообщений 36, на страницах: 1 2 3
добавить сообщение
Daimos
пользователь
Daimos
Сообщений: 28
Рейтинг: 0



25 января 2012 в 23:22Рейтинг: 0    1    0
#32


verts = []
group = bpy.context.object.vertex_groups[0]

теперь все те вершины которые хоть как то связаны с group(читай weight > 0) мне нужно поместить в verts


еще такая ситуация: есть арматура, у нее есть два ключа (keyframe) как мне получить эти ключи?

P. S. API вообще какой то запудренный :-/ ==[

Kazibasya
пользователь
Kazibasya
Сообщений: 45
Рейтинг: +3



01 февраля 2012 в 00:16Рейтинг: 0    0    0
#33


может так?

for obj in bpy.context.selected_objects:
if obj.type in {'MESH'}:
vertGroupNames = obj.vertex_groups.keys()
for i, vert in enumerate(me.vertices):
for g in vert.groups:
print (vertGroupNames[g.group])
print (g.weight)


if в теле цикла с g добавишь и загоняй вертексы в другой массив.

> еще такая ситуация: есть арматура, у нее есть два ключа (keyframe) как мне получить эти ключи?
самому интересно как :-*

> P. S. API вообще какой то запудренный
ага :-/ :,( ==[ zZz:|
:,( ==[ ==[

Kazibasya
пользователь
Kazibasya
Сообщений: 45
Рейтинг: +3



02 февраля 2012 в 19:45Рейтинг: 0    0    0
#34


Кто-нибудь писал экспортер анимации? ?:-|
В предыдущей версии было куда проще с ней, тут же моск можно сломать. :-/
В общем, я сделал кубик с одной костью, далее выделил его и кость и сделал ctrl+p + with automatic weights т.е. у объекта создались группы вершин (читай группы влияния костей) куда записалась развесовка.
У каждой такой группы из коллекции object.vertex_groups[]
www.blender.org/documentation/...oup.html#bpy.types.VertexGroup
есть поле name = имя кости, и weight(index) – вес кости на вершину(), где index – индекс кости.
Я честно говоря вообще не понимаю на кой эта - object.vertex_groups[] если там вообще нечего брать кроме имен костей.

И собственно о главном, о том, что поставило меня в тупик.
Информация о развесовке храниться не только в object.vertex_groups[], но и в каждой вершине vertex.groups. Т.е. долго добираемся до вершинки через фейс.


for obj in bpy.context.scene.objects:
if obj.type in {'MESH'}:

me = obj.to_mesh(context.scene, True, 'PREVIEW')
me.transform(MATXROTATION90)
matrix = obj.matrix_world.copy()

print ("mesh name %s" % obj.name)
print ("face count %d" % len(me.faces))
print ("vertex count %d" % len(me.vertices))

"""
vesi verhin
"""
vertGroupNames = obj.vertex_groups.keys()
for faceIndex, face in enumerate(me.faces):
print ("face index %d" % faceIndex)
print ("face verts idx[%d %d %d]" % (face.vertices[0], face.vertices[1], face.vertices[2]))
print ("face len %d" % len(face.vertices))

for vi, vertex in enumerate(me.vertices):
print ("vertex index %d" % vertex.index)
if len(vertex.groups) > 0:
print ("bones influences detected, number of bones %d" % len(vertex.groups))
for i, group in enumerate(vertex.groups):
print ("bone group name %s" % (vertGroupNames[i]))
print ("bone group weight %f" % group.weight)
else:
print ("no bones groups")


vertex.groups – опять коллекция, это группа влияний на данную вершину. Грубо говоря BonesInfluenses = len(vertex.groups) мы узнаем сколько костей влияет на данную вершину. Причем суммарный вес всей коллекции уже нормализирован, т.е. если суммировать все веса коллекции будет число от 0 до 1.0.

Теперь вопрос мне нужно срезать эту коллекцию до 4-х элементов, если она больше, но перед срезом мне ее нужно еще и отсортировать. Чтобы в начале были самые большие веса(значения), т.е. при срезе терялись самые маленькие значения. Потом мне опять нужно нормализовать веса в этой усеченной коллекции и при этом всем не потерять и не запутаться какой вес к какой кости принадлежит. Есть мысли? Может кто писал? ?:-|

Kazibasya
пользователь
Kazibasya
Сообщений: 45
Рейтинг: +3



03 февраля 2012 в 15:37Рейтинг: 0    0    0
#35


:0) Поздравьте меня! Я успешно разобрался с весами (и победил домашний кантырь :-* ), не скажу, что в результате не был сломан мозг, но я остался травмирован это однозначно. До чего же все извратили. Видимо это делается намеренно.
И так моделька сохраняется так совокупность вершин вида -

Структура Вершина {
Позиция3
Нормаль3
Текстурная развертка2
ИндексКости1 ВесКости1
ИндексКости2 ВесКости2
ИндексКости3 ВесКости3
ИндексКости4 ВесКости4
}

Теперь мне нужно найти действия(Actions) у арматуры. Где их искать?
У каждого действия определить временной отрезок, - начало и кол-во кадров. Где их искать?
Выделить каждое действие как текущее для арматуры. Как?
Пройтись по всем его кадрам, при этом сохраняя трансформации костей. Как?

Опять же вопрос где это освещено или можно чего-нибудь почитать по этому поводу? Есть ли специалисты, которые проделывали такую работу? ?:-|


Сообщений 36, на страницах: 1 2 3
добавить сообщение
© 2007-2012 Юлия Корбут, некоторые права соблюдены.
© 2007-2012 Julia Korbut, some rights reserved.