Чтение онлайн

на главную - закладки

Жанры

Введение в написание скриптов на Питоне для Блендера 2.5x. Примеры кода

Larsson Thomas

Шрифт:

Существует аналогичный класс ExportHelper, который ограничивает имеющийся выбор файлов экспорта.

#----------------------------------------------------------

# File simple_bvh_import.py

# Simple bvh importer

#----------------------------------------------------------

bl_info = {

'name': 'Simple BVH importer (.bvh)',

'author': 'Thomas Larsson',

'version': (1, 0, 0),

'blender': (2, 5, 7),

'api': 34786,

'location': "File > Import",

'description': 'Simple import of Biovision bvh',

'category': 'Import-Export'}

import bpy, os, math, mathutils, time

from mathutils import Vector, Matrix

from io_utils import ImportHelper

#

# class CNode:

class CNode:

def __init__(self, words, parent):

name = words[1]

for word in words[2:]:

name += ' '+word

self.name = name

self.parent = parent

self.children = []

self.head = Vector((0,0,0))

self.offset = Vector((0,0,0))

if parent:

parent.children.append(self)

self.channels = []

self.matrix = None

self.inverse = None

return

def __repr__(self):

return "CNode %s" % (self.name)

def display(self, pad):

vec = self.offset

if vec.length < Epsilon:

c = '*'

else: c = ' '

print("%s%s%10s (%8.3f %8.3f %8.3f)" %

(c, pad, self.name, vec[0], vec[1], vec[2]))

for child in self.children:

child.display(pad+" ")

return

def build(self, amt, orig, parent):

self.head = orig + self.offset

if not self.children:

return self.head

zero = (self.offset.length < Epsilon)

eb = amt.edit_bones.new(self.name)

if parent:

eb.parent = parent

eb.head = self.head

tails = Vector((0,0,0))

for child in self.children:

tails += child.build(amt, self.head, eb)

n = len(self.children)

eb.tail = tails/n

(trans,quat,scale) = eb.matrix.decompose

self.matrix = quat.to_matrix

self.inverse = self.matrix.copy

self.inverse.invert

if zero:

return eb.tail

else:

return eb.head

#

# readBvhFile(context, filepath, rot90, scale):

Location = 1

Rotation = 2

Hierarchy = 1

Motion = 2

Frames = 3

Deg2Rad = math.pi/180

Epsilon = 1e-5

def readBvhFile(context, filepath, rot90, scale):

fileName = os.path.realpath(os.path.expanduser(filepath))

(shortName, ext) = os.path.splitext(fileName)

if ext.lower != ".bvh":

raise NameError("Not a bvh file: " + fileName)

print( "Loading BVH file "+ fileName )

time1 = time.clock

level = 0

nErrors = 0

scn = context.scene

fp = open(fileName, "rU")

print( "Reading skeleton" )

lineNo = 0

for line in fp:

words= line.split

lineNo += 1

if len(words) == 0:

continue

key = words[0].upper

if key == 'HIERARCHY':

status = Hierarchy

Поделиться:
Популярные книги

Долгий путь домой

Русич Антон
Вселенная EVE Online
Фантастика:
космическая фантастика
попаданцы
6.20
рейтинг книги
Долгий путь домой

Убивать чтобы жить 6

Бор Жорж
6. УЧЖ
Фантастика:
боевая фантастика
космическая фантастика
рпг
5.00
рейтинг книги
Убивать чтобы жить 6

Возвышение Меркурия. Книга 3

Кронос Александр
3. Меркурий
Фантастика:
попаданцы
аниме
5.00
рейтинг книги
Возвышение Меркурия. Книга 3

Фиктивная жена

Шагаева Наталья
1. Братья Вертинские
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Фиктивная жена

Здравствуй, 1985-й

Иванов Дмитрий
2. Девяностые
Фантастика:
альтернативная история
5.25
рейтинг книги
Здравствуй, 1985-й

Барон Дубов 4

Карелин Сергей Витальевич
4. Его Дубейшество
Фантастика:
юмористическое фэнтези
аниме
сказочная фантастика
фэнтези
5.00
рейтинг книги
Барон Дубов 4

Лекарь для захватчика

Романова Елена
Фантастика:
попаданцы
историческое фэнтези
фэнтези
5.00
рейтинг книги
Лекарь для захватчика

Идеальный мир для Лекаря 24

Сапфир Олег
24. Лекарь
Фантастика:
городское фэнтези
попаданцы
5.00
рейтинг книги
Идеальный мир для Лекаря 24

Ваше Сиятельство 9

Моури Эрли
9. Ваше Сиятельство
Фантастика:
боевая фантастика
попаданцы
стимпанк
аниме
фэнтези
5.00
рейтинг книги
Ваше Сиятельство 9

Господин следователь

Шалашов Евгений Васильевич
1. Господин следователь
Детективы:
исторические детективы
5.00
рейтинг книги
Господин следователь

Академия проклятий. Книги 1 - 7

Звездная Елена
Академия Проклятий
Фантастика:
фэнтези
8.98
рейтинг книги
Академия проклятий. Книги 1 - 7

Полковник Гуров. Компиляция (сборник)

Макеев Алексей Викторович
Полковник Гуров
Детективы:
криминальные детективы
шпионские детективы
полицейские детективы
боевики
крутой детектив
5.00
рейтинг книги
Полковник Гуров. Компиляция (сборник)

Первый среди равных. Книга V

Бор Жорж
5. Первый среди Равных
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Первый среди равных. Книга V

Землянка для двух нагов

Софи Ирен
Фантастика:
космическая фантастика
5.00
рейтинг книги
Землянка для двух нагов