Вход/Регистрация
Введение в написание скриптов на Питоне для Блендера 2.5x. Примеры кода
вернуться

Larsson Thomas

Шрифт:

cns = monkey.constraints.new('FOLLOW_PATH')

cns.target = pathOb

cns.use_curve_follow = True

cns.use_curve_radius = True

cns.use_fixed_location = False

cns.forward_axis = 'FORWARD_Z'

cns.up_axis = 'UP_Y'

return

if __name__ == "__main__":

run((0,0,0))

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

Камера и освещение

Эта программа добавляет источник света "солнце" к сцене, и прожекторы (spot) для каждого объекта рендера на сцене. Каждый прожектор имеет ограничение TrackTo, заставляющее быть направленным на свой объект, тогда как солнце отслеживает центр всех объектов, визуализируемых на сцене.

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

# File camera.py

# Adds one camera and several lights

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

import bpy, mathutils, math

from mathutils import Vector

from math import pi

def findMidPoint:

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

sum = Vector((0,0,0))

n = 0

for ob in bpy.data.objects:

if ob.type not in ['CAMERA', 'LAMP', 'EMPTY']:

sum += ob.location

n += 1

if n == 0:

return sum

else:

return sum/n

def addTrackToConstraint(ob, name, target):

# Добавление ограничения TrackTo

cns = ob.constraints.new('TRACK_TO')

cns.name = name

cns.target = target

cns.track_axis = 'TRACK_NEGATIVE_Z'

cns.up_axis = 'UP_Y'

cns.owner_space = 'WORLD'

cns.target_space = 'WORLD'

return

def createLamp(name, lamptype, loc):

# Создание источника освещения

bpy.ops.object.add(

type='LAMP',

location=loc)

ob = bpy.context.object

ob.name = name

lamp = ob.data

lamp.name = 'Lamp'+name

lamp.type = lamptype

return ob

def createLamps(origin, target):

deg2rad = 2*pi/360

sun = createLamp('sun', 'SUN', origin+Vector((0,20,50)))

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

  • Читать дальше
  • 1
  • ...
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

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