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

Тут можно читать онлайн Thomas Larsson - Введение в написание скриптов на Питоне для Блендера 2.5x. Примеры кода - бесплатно полную версию книги (целиком) без сокращений. Жанр: comp-programming. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.
  • Название:
    Введение в написание скриптов на Питоне для Блендера 2.5x. Примеры кода
  • Автор:
  • Жанр:
  • Издательство:
    неизвестно
  • Год:
    неизвестен
  • ISBN:
    нет данных
  • Рейтинг:
    4/5. Голосов: 91
  • Избранное:
    Добавить в избранное
  • Отзывы:
  • Ваша оценка:
    • 80
    • 1
    • 2
    • 3
    • 4
    • 5

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

Введение в написание скриптов на Питоне для Блендера 2.5x. Примеры кода - описание и краткое содержание, автор Thomas Larsson, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru

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

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

Введение в написание скриптов на Питоне для Блендера 2.5x. Примеры кода - читать книгу онлайн бесплатно, автор Thomas Larsson
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

cube = bpy.context.object

bpy.ops.mesh.primitive_cylinder_add(location=(0,0,0))

cyl = bpy.context.object

bpy.ops.mesh.primitive_uv_sphere_add(location=(3,0,0))

sphere = bpy.context.object

# Определение RNA-свойства для каждого объекта

bpy.types.Object.myRnaInt = IntProperty(

name = "RNA int",

min = -100, max = 100,

default = 33)

bpy.types.Object.myRnaFloat = FloatProperty(

name = "RNA float",

default = 12.345,

min = 1, max = 20)

bpy.types.Object.myRnaString = StringProperty(

name = "RNA string",

default = "Ribonucleic acid")

bpy.types.Object.myRnaBool = BoolProperty(

name = "RNA bool")

bpy.types.Object.myRnaEnum = EnumProperty(

items = [('one', 'eins', 'un'),

('two', 'zwei', 'deux'),

('three', 'drei', 'trois')],

name = "RNA enum")

# Присвоение RNA-свойств кубу

cube.myRnaInt = -99

cube.myRnaFloat = -1

cube.myRnaString = "I am an RNA prop"

cube.myRnaBool = True

cube.myRnaEnum = 'three'

# Создание ID-свойств для меша куба присвоением значений.

cube.data["MyIdInt"] = 4711

cube.data["MyIdFloat"] = 666.777

cube.data["MyIdString"] = "I am an ID prop"

cube.data["MyIdBool"] = True

# Печать всех свойств

def printProp(rna, path):

try:

print(' %s%s =' % (rna.name, path), eval("rna"+path))

except:

print(' %s%s does not exist' % (rna.name, path))

for ob in [cube, cyl, sphere]:

print("%s RNA properties" % ob)

printProp(ob, ".myRnaInt")

printProp(ob, ".myRnaFloat")

printProp(ob, ".myRnaString")

printProp(ob, ".myRnaBool")

printProp(ob, ".myRnaEnum")

print("%s ID properties" % ob.data)

printProp(ob.data, '["MyIdInt"]')

printProp(ob.data, '["MyIdFloat"]')

printProp(ob.data, '["MyIdString"]')

printProp(ob.data, '["MyIdBool"]')

Скрипт напечатает следующий результат на консоль:

RNA properties Cube.myRnaInt = -99

Cube.myRnaFloat = 1.0

Cube.myRnaString = I am an RNA prop

Cube.myRnaBool = True

Cube.myRnaEnum = three

ID properties

Cube.001["MyIdInt"] = 4711

Cube.001["MyIdFloat"] = 666.777

Cube.001["MyIdString"] = I am an ID prop

Cube.001["MyIdBool"] = 1

RNA properties

Cylinder.myRnaInt = 33

Cylinder.myRnaFloat = 12.345000267028809

Cylinder.myRnaString = Ribonucleic acid

Cylinder.myRnaBool = False

Cylinder.myRnaEnum = one

ID properties

Cylinder["MyIdInt"] does not exist

Cylinder["MyIdFloat"] does not exist

Cylinder["MyIdString"] does not exist

Cylinder["MyIdBool"] does not exist

RNA properties

Sphere.myRnaInt = 33 Sphere.myRnaFloat = 12.345000267028809

Sphere.myRnaString = Ribonucleic acid

Sphere.myRnaBool = False

Sphere.myRnaEnum = one

ID properties

Sphere["MyIdInt"] does not exist

Sphere["MyIdFloat"] does not exist

Sphere["MyIdString"] does not exist

Sphere["MyIdBool"] does not exist

Все три объекта имеют RNAсвойства поскольку они являются расширением типа - фото 15

Все три объекта имеют RNA-свойства, поскольку они являются расширением типа данных Object. RNA-свойствам Куба программой присвоены значения, кроме значения myRnaFloat, которое не может быть меньше чем 1. Цилиндру и сфере никаких свойств присвоено не было, но они все равно имеют RNA-свойства со значением по умолчанию.

Мешу куба программой были заданы ID-свойства. Заметьте, что свойство MyIdBool является целочисленной 1, а не логической True.

Свойства Объекта отображаются в панели пользовательского интерфейса под Properties, и также в контексте объекта. Свойства меша можно найти в контексте меша.

Как мы видели в распечатке мы можем иметь доступ к RNAсвойствам объекта - фото 16

Как мы видели в распечатке, мы можем иметь доступ к RNA-свойствам объекта сферы. Тем не менее, они не появляются в интерфейсе пользователя. Очевидно, только присвоенные значения свойств сохраняются в блоке данных Объекта. Мы можем использовать RNA-свойство, которое не присвоено в скрипте; при этом берется значение по умолчанию. В противовес этому, если мы попытаемся получить доступ к незаданному ID-свойству, будет возбуждена ошибка.

Свойства совместимы со связями файлов Сохраните blendфайл и привяжите link - фото 17

Свойства совместимы со связями файлов. Сохраните blend-файл и привяжите (link) куб в новый файл. Как RNA-, так и ID-свойства появляются в новом файле, но они серые, поскольку они не могут быть доступны в связанном файле.

Если мы проксим proxify связанный куб свойства объекта принадлежат блоку - фото 18

Если мы проксим (proxify) связанный куб, свойства объекта принадлежат блоку данных прокси-объекта, и могут быть модифицированы в связанном файле. В противовес этому, свойства меша принадлежат блоку данных меша и не могут изменяться.

Как упомянуто выше свойства сохранены в blendфайлах но декларации свойств - фото 19

Как упомянуто выше, свойства сохранены в blend-файлах, но декларации свойств — нет. Закройте и перезапустите Блендер и откройте файл, который мы сохранили выше. Свойства myRnaBool и myRnaEnum окажутся преобразованными в целые. Фактически, они и были сохранены как целые всё время, но отображались как логические и перечисления из-за продекларированных свойств, сохранённых в типе данных Object.

Чтобы подтвердить, что RNA-свойства превратились в ID-свойства, выполните следующий скрипт.

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

# File print_props.py

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

import bpy

def printProp(rna, path):

try:

print(' %s%s =' % (rna.name, path), eval("rna"+path))

except:

print(' %s%s does not exist' % (rna.name, path))

ob = bpy.context.object print("%s RNA properties" % ob)

printProp(ob, ".myRnaInt")

printProp(ob, ".myRnaFloat")

printProp(ob, ".myRnaString")

printProp(ob, ".myRnaBool")

printProp(ob, ".myRnaEnum")

print("%s ID properties" % ob)

printProp(ob, '["myRnaInt"]')

printProp(ob, '["myRnaFloat"]')

printProp(ob, '["myRnaString"]')

printProp(ob, '["myRnaBool"]')

printProp(ob, '["myRnaEnum"]')

print("%s ID properties" % ob.data)

printProp(ob.data, '["MyIdInt"]')

printProp(ob.data, '["MyIdFloat"]')

printProp(ob.data, '["MyIdString"]')

printProp(ob.data, '["MyIdBool"]')

Этот скрипт выведет следующий текст на терминале.

RNA properties

Cube.myRnaInt does not exist

Cube.myRnaFloat does not exist

Cube.myRnaString does not exist

Cube.myRnaBool does not exist

Cube.myRnaEnum does not exist

ID properties

Cube["myRnaInt"] = -99

Cube["myRnaFloat"] = 1.0

Cube["myRnaString"] = I am an RNA prop

Cube["myRnaBool"] = 1

Cube["myRnaEnum"] = 2

ID properties

Cube.001["MyIdInt"] = 4711

Cube.001["MyIdFloat"] = 666.777

Cube.001["MyIdString"] = I am an ID prop

Cube.001["MyIdBool"] = 1

Если мы восстановим декларации свойств, ID-свойства преобразуются обратно в RNA-свойства.

Вращение костей

Эта программа ожидает, что активный объект — это арматура. Она сохраняет угол вращения каждой editbone как свойство соответствующей кости, и в конце выводит величины свойств на терминале. При выполнении с выбранной арматурой на изображении ниже, результат на терминале выглядит следующим образом.

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

Интервал:

Закладка:

Сделать


Thomas Larsson читать все книги автора по порядку

Thomas Larsson - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




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


Отзывы читателей о книге Введение в написание скриптов на Питоне для Блендера 2.5x. Примеры кода, автор: Thomas Larsson. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x