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

Здесь есть возможность читать онлайн «Thomas Larsson - Введение в написание скриптов на Питоне для Блендера 2.5x. Примеры кода» весь текст электронной книги совершенно бесплатно (целиком полную версию без сокращений). В некоторых случаях можно слушать аудио, скачать через торрент в формате fb2 и присутствует краткое содержание. Жанр: Программирование, на русском языке. Описание произведения, (предисловие) а так же отзывы посетителей доступны на портале библиотеки ЛибКат.

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

Предлагаем к чтению аннотацию, описание, краткое содержание или предисловие (зависит от того, что написал сам автор книги «Введение в написание скриптов на Питоне для Блендера 2.5x. Примеры кода»). Если вы не нашли необходимую информацию о книге — напишите в комментариях, мы постараемся отыскать её.

Третье издание, расширенное и обновлённое для Blender 2.57

Введение в написание скриптов на Питоне для Блендера 2.5x. Примеры кода — читать онлайн бесплатно полную книгу (весь текст) целиком

Ниже представлен текст книги, разбитый по страницам. Система сохранения места последней прочитанной страницы, позволяет с удобством читать онлайн бесплатно книгу «Введение в написание скриптов на Питоне для Блендера 2.5x. Примеры кода», без необходимости каждый раз заново искать на чём Вы остановились. Поставьте закладку, и сможете в любой момент перейти на страницу, на которой закончили чтение.

Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

bpy.utils.unregister_module(__name__)

if __name__ == "__main__":

register()

Простой импортёр и экспортёр obj-файлов

Формат OBJ часто используется для обмена данными меша между различными приложениями. Первоначально изобретеный для Wavefront Maya, он стал отраслевым стандартом. Это простой ASCII-формат, который содержит строки следующего вида:

v x y z

Координаты вершин как (x, y, z)

vt u v

Текстурные координаты как (u, v)

f v 1v 2... v n

Грань с n углами, в вершинах v 1, v 2, ... v n . Для мешей без координат UV.

f v 1/vt 1v 2/vt 2... v n/vt n

Грани с n углами. Углы — это вершины v 1, v 2, ... v n в 3D-пространстве и vt 1, vt 2, ... vt n в текстурном пространстве.

Больше конструкций, например, для настройки материала или групп граней, имеются в полноценном экспортёре-импортёре OBJ-формата.

Есть две вещи, которые надо принять во внимание. Во-первых, большинство приложений (насколько мне известно, все, кроме Блендера) используют соглашение, что ось Yуказывает вверх, в то время как Блендер использует ось Zдля направления вверх. Во-вторых, Майя начинает подсчет вершин с 1, тогда как Блендер начинает отсчет от 0. Это означает, что углы граней на самом деле расположены в вершинах v 1-1, v 2-1, ... v n-1 в 3D-пространстве и в vt 1-1, vt 2-1, ... vt n-1 в пространстве текстур.

Простой экспортёр-импортёр OBJ-файлов — это пакет Питона, который состоит из трех файлов: два файла, которые фактически выполняют работу экспорта/импорта, и __init__.py, который делает каталог пакетом.

Простой экспорт OBJ-файлов

Этот скрипт экспортирует выбранный меш как OBJ-файл.

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

# File export_simple_obj.py

# Простой OBJ-экспортёр, который записывает только вершины, грани и текстурные вершины

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

import bpy, os

def export_simple_obj(filepath, ob, rot90, scale):

name = os.path.basename(filepath)

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

fp = open(realpath, 'w')

print('Exporting %s' % realpath)

if not ob or ob.type != 'MESH':

raise NameError('Cannot export: active object %s is not a mesh.' % ob)

me = ob.data

for v in me.vertices:

x = scale*v.co

if rot90:

fp.write("v %.5f %.5f %.5f\n" % (x[0], x[2], -x[1]))

else:

fp.write("v %.5f %.5f %.5f\n" % (x[0], x[1], x[2]))

if len(me.uv_textures) > 0:

uvtex = me.uv_textures[0]

for f in me.faces:

data = uvtex.data[f.index]

fp.write("vt %.5f %.5f\n" % (data.uv1[0], data.uv1[1]))

fp.write("vt %.5f %.5f\n" % (data.uv2[0], data.uv2[1]))

fp.write("vt %.5f %.5f\n" % (data.uv3[0], data.uv3[1]))

if len(f.vertices) == 4:

fp.write("vt %.5f %.5f\n" % (data.uv4[0], data.uv4[1]))

vt = 1

for f in me.faces:

vs = f.vertices

fp.write("f %d/%d %d/%d %d/%d" % (vs[0]+1, vt, vs[1]+1, vt+1, vs[2]+1, vt+2))

vt += 3

if len(f.vertices) == 4:

fp.write(" %d/%d\n" % (vs[3]+1, vt))

vt += 1

else:

fp.write("\n")

else:

for f in me.faces:

vs = f.vertices

fp.write("f %d %d %d" % (vs[0]+1, vs[1]+1, vs[2]+1))

if len(f.vertices) == 4:

fp.write(" %d\n" % (vs[3]+1))

else:

fp.write("\n")

print('%s successfully exported' % realpath)

fp.close()

return

Простой импорт OBJ-файлов

Этот скрипт импорта — компаньон предыдущего. Он, конечно, также может использоваться для импорта OBJ-файлов из других приложений.

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

# File import_simple_obj.py

# Простой OBJ-импортёр, который читает только вершины, грани и текстурные вершины

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

import bpy, os

def import_simple_obj(filepath, rot90, scale):

name = os.path.basename(filepath)

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

fp = open(realpath, 'rU') # Universal read

print('Importing %s' % realpath)

verts = []

faces = []

texverts = []

texfaces = []

for line in fp:

words = line.split()

if len(words) == 0:

pass

elif words[0] == 'v':

(x,y,z) = (float(words[1]), float(words[2]), float(words[3]))

if rot90:

verts.append( (scale*x, -scale*z, scale*y) )

else:

verts.append( (scale*x, scale*y, scale*z) )

elif words[0] == 'vt':

texverts.append( (float(words[1]), float(words[2])) )

elif words[0] == 'f':

(f,tf) = parseFace(words)

faces.append(f)

if tf:

texfaces.append(tf)

else:

pass

print('%s successfully imported' % realpath)

fp.close()

me = bpy.data.meshes.new(name)

me.from_pydata(verts, [], faces)

me.update()

if texverts:

uvtex = me.uv_textures.new()

uvtex.name = name

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

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

Представляем Вашему вниманию похожие книги на «Введение в написание скриптов на Питоне для Блендера 2.5x. Примеры кода» списком для выбора. Мы отобрали схожую по названию и смыслу литературу в надежде предоставить читателям больше вариантов отыскать новые, интересные, ещё непрочитанные произведения.


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

Обсуждение, отзывы о книге «Введение в написание скриптов на Питоне для Блендера 2.5x. Примеры кода» и просто собственные мнения читателей. Оставьте ваши комментарии, напишите, что Вы думаете о произведении, его смысле или главных героях. Укажите что конкретно понравилось, а что нет, и почему Вы так считаете.

x