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

Интервал:

Закладка:

Сделать

return domain

def createFlow(origin):

# Добавление плоскости как потока

bpy.ops.mesh.primitive_plane_add(location = origin)

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

flow = bpy.context.object flow.name = 'Flow'

# Добавление системы частиц дыма

pmod = flow.modifiers.new(name='SmokeParticles', type='PARTICLE_SYSTEM')

pmod.name = 'SmokeParticles'

psys = pmod.particle_system

psys.seed = 4711

# Настройки частиц

pset = psys.settings

pset.type = 'EMITTER'

pset.lifetime = 1

pset.emit_from = 'VOLUME'

pset.use_render_emitter = False

pset.render_type = 'NONE'

pset.normal_factor = 8.0

# Добавление модификатора дыма

smod = flow.modifiers.new(name='Smoke',

type='SMOKE')

smod.smoke_type = 'FLOW'

sfset = smod.flow_settings

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

sfset.use_outflow = False

sfset.temperature = 0.7

sfset.density = 0.8

sfset.initial_velocity = True

sfset.particle_system = psys

return flow

def createVortexEffector(origin):

bpy.ops.object.effector_add(type='VORTEX', location=origin)

vortex = bpy.context.object

return vortex

def createVoxelTexture(domain):

tex = bpy.data.textures.new('VoxelTex', type = 'VOXEL_DATA')

voxdata = tex.voxel_data

voxdata.file_format = 'SMOKE'

voxdata.domain_object = domain

return tex

def createVolumeMaterial(tex):

mat = bpy.data.materials.new('VolumeMat')

mat.type = 'VOLUME'

vol = mat.volume

vol.density = 0.0

vol.density_scale = 8.0

vol.scattering = 6.0

vol.asymmetry = 0.3

vol.emission = 0.3

vol.emission_color = (1,1,1)

vol.transmission_color = (0.9,0.2,0)

vol.reflection = 0.7

vol.reflection_color = (0.8,0.9,0)

# Для удаления эффекта пикселизации

vol.step_size = 0.05

# Добавление текстуры Voxel data

mtex = mat.texture_slots.add()

mtex.texture = tex

mtex.texture_coords = 'ORCO'

mtex.use_map_density = True

mtex.use_map_emission = True

mtex.use_map_scatter = False

mtex.use_map_reflect = True

mtex.use_map_color_emission = True

mtex.use_map_color_transmission = True

mtex.use_map_color_reflection = True

mtex.density_factor = 1.0

mtex.emission_factor = 0.2

mtex.scattering_factor = 0.2

mtex.reflection_factor = 0.3

mtex.emission_color_factor = 0.9

mtex.transmission_color_factor = 0.5

mtex.reflection_color_factor = 0.6

return mat

def addFloor(origin):

# Создание пола, который принимает прозрачные тени

bpy.ops.mesh.primitive_plane_add(

location = origin,

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

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

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

constraint_axis=(True, False, False),

constraint_orientation='LOCAL')

floor = bpy.context.object

mat = bpy.data.materials.new('Floor')

mat.use_transparent_shadows = True

floor.data.materials.append(mat)

return

def setupWorld():

scn = bpy.context.scene

# Синее blend (смешанное) небо

scn.world.use_sky_blend = True

scn.world.horizon_color = (0.25, 0.3, 0.4)

scn.world.zenith_color = (0, 0, 0.7)

# PAL 4:3 render

scn.render.resolution_x = 720

scn.render.resolution_y = 567

return

def run(origin):

domain = createDomain(origin)

flow = createFlow(origin-Vector((0,0,3.5)))

vortex = createVortexEffector(origin)

tex = createVoxelTexture(domain)

mat = createVolumeMaterial(tex)

domain.data.materials.append(mat)

return

if __name__ == "__main__":

for ob in bpy.context.scene.objects:

bpy.context.scene.objects.unlink(ob)

addFloor(Vector((0,0,-4)))

setupWorld()

# Освещение и камера

bpy.ops.object.lamp_add( type = 'POINT', location=(4,6,1))

bpy.ops.object.lamp_add( type = 'POINT', location=(-7,-5,0))

bpy.ops.object.camera_add(location=Vector((8,-8,3)),

rotation=(pi/3, 0, pi/6))

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

bpy.ops.screen.animation_play()

Симуляция твёрдого тела

Эта программа использует игровой движок Блендера для моделирования падения кучи объектов на землю. Анимации записываются и впоследствии могут быть воспроизведены.

File pilepy - фото 35

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

# File pile.py

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

import bpy, mathutils, math, random

from mathutils import Vector NObjects = 7Seed = 444

def addSceneGameSettings(scn):

# Данные игровой сцены

sgdata = scn.game_settings

sgdata.fps = 25 sgdata.frequency = True

sgdata.material_mode = 'GLSL'

sgdata.show_debug_properties = True

sgdata.show_framerate_profile = True

sgdata.show_fullscreen = True

sgdata.show_physics_visualization = True

sgdata.use_animation_record = True return

def addMonkeyGameSettings(ob):

# Настройки игрового объекта

goset = ob.game

goset.physics_type = 'RIGID_BODY'

goset.use_actor = True

goset.use_ghost = False

goset.mass = 7.0

goset.damping = 0.0

goset.use_collision_bounds = True

goset.collision_bounds_type = 'BOX'

goset.show_actuators = True goset.show_controllers = True

goset.show_debug_state = True

goset.show_sensors = True goset.show_state_panel = True

return

def run(origin):

# Смена движка рендера с BLENDER_RENDER на BLENDER_GAME

bpy.context.scene.render.engine = 'BLENDER_GAME'

# Создание пола

bpy.ops.mesh.primitive_plane_add(location=origin)

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

floor = bpy.context.object

mat = bpy.data.materials.new(name = 'FloorMaterial')

mat.diffuse_color = (0.5, 0.5, 0.5)

# Создание кучи объектов

objectType = ["cube", "ico_sphere", "monkey"]

objects = []

deg2rad = math.pi/180

random.seed(Seed)

for n in range(NObjects):

x = []

for i in range(3):

x.append( random.randrange(0, 360, 1) )

dx = 0.5*random.random()

dy = 0.5*random.random()

obType = objectType[ random.randrange(0, 3, 1) ]

fcn = eval("bpy.ops.mesh.primitive_%s_add" % obType)

fcn(location=origin+Vector((dx, dy, 3*n+3)),

rotation=deg2rad*Vector((x[0], x[1], x[2])))

ob = bpy.context.object objects.append( ob )

mat = bpy.data.materials.new(name='Material_%02d' % n) c = []

for j in range(3):

c.append( random.random() ) mat.diffuse_color = c

ob.data.materials.append(mat)

# Установка игровых настроек для пола

fset = floor.game

fset.physics_type = 'STATIC'

# Установка игровых настроек для объектов

for n in range(NObjects):

addMonkeyGameSettings(objects[n])

# Установка игровых настроек для сцены

scn = bpy.context.scene

addSceneGameSettings(scn)

scn.frame_start = 1

scn.frame_end = 200 return

if __name__ == "__main__":

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

bpy.ops.object.delete()

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

bpy.ops.view3d.game_start()

Жидкости

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

Изображение кадра 57, после добавления нескольких материалов. Капли в основном отрендерены полностью, если они имеют низкую прозрачность, около alpha = 0,2.

File fluidpy - фото 36 File fluidpy - фото 37

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

# File fluid.py

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

import bpy, math

from mathutils import Vector

from math import pi

def createDomain(origin):

# Домен

bpy.ops.mesh.primitive_cube_add(location=origin)

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

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

Интервал:

Закладка:

Сделать


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

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




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


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


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

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