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
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

lamp = sun.data

lamp.type = 'SUN'

addTrackToConstraint(sun, 'TrackMiddle', target)

for ob in bpy.context.scene.objects:

if ob.type == 'MESH':

spot = createLamp(ob.name+'Spot', 'SPOT', ob.location+Vector((0,2,1)))

bpy.ops.transform.resize(value=(0.5,0.5,0.5))

lamp = spot.data

# Лампа

lamp.type = 'SPOT'

lamp.color = (0.5,0.5,0)

lamp.energy = 0.9

lamp.falloff_type = 'INVERSE_LINEAR'

lamp.distance = 7.5

# Форма луча прожектора

lamp.spot_size = 30*deg2rad

lamp.spot_blend = 0.3

# Тени

lamp.shadow_method = 'BUFFER_SHADOW'

lamp.use_shadow_layer = True

lamp.shadow_buffer_type = 'REGULAR'

lamp.shadow_color = (0,0,1)

addTrackToConstraint(spot, 'Track'+ob.name, ob)

return

def createCamera(origin, target):

# Создание объекта и камеры

bpy.ops.object.add(

type='CAMERA',

location=origin,

rotation=(pi/2,0,pi))

ob = bpy.context.object

ob.name = 'MyCamOb'

cam = ob.data

cam.name = 'MyCam'

addTrackToConstraint(ob, 'TrackMiddle', target)

# Объектив

cam.type = 'PERSP'

cam.lens = 75

cam.lens_unit = 'MILLIMETERS'

cam.shift_x = -0.05

cam.shift_y = 0.1

cam.clip_start = 10.0

cam.clip_end = 250.0

empty = bpy.data.objects.new('DofEmpty', None)

empty.location = origin+Vector((0,10,0))

cam.dof_object = empty

# Отображение

cam.show_title_safe = True

cam.show_name = True

# Делаем её текущей камерой

scn = bpy.context.scene

scn.camera = ob

return ob

def run(origin):

# Удаление всех камер и ламп

scn = bpy.context.scene

for ob in scn.objects:

if ob.type == 'CAMERA' or ob.type == 'LAMP':

scn.objects.unlink(ob)

# Добавление пустышки в середине всех визуализируемых объектов

midpoint = findMidPoint()

bpy.ops.object.add(

type='EMPTY',

location=midpoint),

target = bpy.context.object

target.name = 'Target'

createCamera(origin+Vector((50,90,50)), target)

createLamps(origin, target)

return

if __name__ == "__main__":

run(Vector((0,0,0)))

Мир, вид и рендер

Мир

Эта программа модифицирует настройки Мира. Изображение является рендером куба по-умолчанию со встроенной камерой и освещением.

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

# File world.py

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

import bpy

def run():

world = bpy.context.scene.world

# Настройки Мира

world.use_sky_blend = True

world.ambient_color = (0.05, 0, 0)

world.horizon_color = (0, 0, 0.2)

world.zenith_color = (0.04, 0, 0.04)

# Звёзды

sset = world.star_settings

sset.use_stars = True

sset.average_separation = 17.8

sset.color_random = 1.0

sset.distance_min = 0.7

sset.size = 10

# Окружающее освещение

wset = world.light_settings

wset.use_environment_light = True

wset.use_ambient_occlusion = True

wset.ao_blend_type = 'MULTIPLY'

wset.ao_factor = 0.8

wset.gather_method = 'APPROXIMATE'

# Текстура "Облака" (Clouds)

tex = bpy.data.textures.new('Clouds', type = 'CLOUDS')

tex.cloud_type = 'GREYSCALE'

tex.noise_type = 'SOFT_NOISE'

tex.noise_basis = 'ORIGINAL_PERLIN'

tex.noise_scale = 0.06

tex.noise_depth = 1

# Установка текстуры как активной текстуры Мира

world.active_texture = tex

# Retrieve texture slot

wtex = world.texture_slots[world.active_texture_index]

print(wtex, world.active_texture_index)

# Настройки текстурного слота

wtex.use_ map_blend = False

wtex.use_map_horizon = False

wtex.use_map_zenith_down = False

wtex.use_map_zenith_up = True

wtex.color = (1,1,1)

wtex.texture_coords = 'VIEW'

wtex.zenith_up_factor = 1.0 return

if __name__ == "__main__":

run()

Вид и рендер

Эта программа модифицирует настройки рендера, переключается на экран по-умолчанию, и изменяет камеру в 3D-виде. В конце стартует анимация, к несчастью, в старом виде.

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

# File view.py

# Изменяет вид и настройки рендера

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

import bpy

def setRenderSettings():

render = bpy.context.scene.render

render.resolution_x = 720

render.resolution_y = 576

render.resolution_percentage = 100

render.fps = 24

render.use_raytrace = False

render.use_color_management = True

render.use_sss = False

return

def setDefaultCameraView():

for scrn in bpy.data.screens:

if scrn.name == 'Default':

bpy.context.window.screen = scrn

for area in scrn.areas:

if area.type == 'VIEW_3D':

for space in area.spaces:

if space.type == 'VIEW_3D':

space.viewport_shade = 'SOLID'

reg = space.region_3d

reg.view_perspective = 'CAMERA' break

return

def run():

setRenderSettings()

setDefaultCameraView()

# стартует анимация, к несчастью в старом виде.

bpy.ops.screen.animation_play(reverse=False, sync=False)

return

if __name__ == "__main__":

run()

Свойства (Properties)

RNA-свойства против ID-свойств

В Блендере есть два различных типа свойств: ID-свойства и RNA-свойства. RNA-свойства расширяют определение структуры данных. Они должны быть объявлены до того, как будут использоваться.

Я потратил некоторое время на выяснение того, как же расшифровывается и что означает аббревиатура RNA для программирования на Питоне в Блендере. Может быть, я был недостаточно настойчив в поисках, но всё, что я нашел — это РНК, Рибонуклеиновая кислота. Разработчики применили химико-биологическую метафору для обозначения реальных структур данных на языке С (DNA, в переводе ДНК) и соответствующих им структур на Питоне (RNA, в переводе РНК). С понятием ID, думаю все и так знакомы, это сокращение слова Идентификатор. - прим. пер.

bpy.types.Object.myRnaInt = bpy.props.IntProperty(

name = "RNA int",

min = -100,

max = 100,

default = 33)

Как только RNA-свойства были объявлены, они будут доступны через точечный синтаксис:

cube.myRnaInt = -99

После декларации RNA-свойства myRnaInt расширяет определение структуры данных Object, каждый объект будет иметь это свойство.

ID-cвойство добавляется к единственному блоку данных, не влияя на другие данные того же самого типа. Ему не нужна какая-либо предварительная декларация, но оно автоматически определяется при присвоении, напр.

cube.data["MyIdInt"] = 4711

ID-свойства могут только быть целыми, вещественными, и строками; другие типы автоматически будут преобразованы. Следовательно, строка

cube.data["MyIdBool"] = True

определяет целое ID-свойство, а не логическое.

Не знаю, как в предыдущих версиях, а в 2.57 вполне можно определять списки — прим. пер.

Свойства сохраняются в blend-файле, но декларации свойств — нет.

Вот скрипт, который создает три меша, назначает различные свойства и печатает их величины в консоли.

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

# File properties.py

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

import bpy

from bpy.props import *

# Очистка сцены и создание нескольких объектов

bpy.ops.object.select_by_type(type='MESH')

bpy.ops.object.delete()

bpy.ops.mesh.primitive_cube_add(location=(-3,0,0))

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

Интервал:

Закладка:

Сделать


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

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




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


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


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

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