MyBooks.club
Все категории

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

На сайте mybooks.club вы можете бесплатно читать книги онлайн без регистрации, включая Thomas Larsson - Введение в написание скриптов на Питоне для Блендера 2.5x. Примеры кода. Жанр: Программирование издательство неизвестно,. Доступна полная версия книги с кратким содержанием для предварительного ознакомления, аннотацией (предисловием), рецензиями от других читателей и их экспертным мнением.
Кроме того, на сайте mybooks.club вы найдете множество новинок, которые стоит прочитать.

Название:
Введение в написание скриптов на Питоне для Блендера 2.5x. Примеры кода
Автор
Издательство:
неизвестно
ISBN:
нет данных
Год:
неизвестен
Дата добавления:
17 сентябрь 2019
Количество просмотров:
205
Читать онлайн
Thomas Larsson - Введение в написание скриптов на Питоне для Блендера 2.5x. Примеры кода

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

Thomas Larsson - Введение в написание скриптов на Питоне для Блендера 2.5x. Примеры кода - описание и краткое содержание, автор Thomas Larsson, читайте бесплатно онлайн на сайте электронной библиотеки mybooks.club
Третье издание, расширенное и обновлённое для Blender 2.57

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

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

    if 'simple_obj_export' in locals():

        imp.reload(simple_obj_export)  


import bpy

from bpy.props import *

from io_utils import ExportHelper, ImportHelper  


#

# Меню Import

class IMPORT_OT_simple_obj(bpy.types.Operator, ImportHelper):

    bl_idname = "io_import_scene.simple_obj"

    bl_description = 'Import from simple OBJ file format (.obj)'

    bl_label = "Import simple OBJ" bl_space_type = "PROPERTIES"

    bl_region_type = "WINDOW"


    filename_ext = ".obj"

    filter_glob = StringProperty(default="*.obj;*.mtl", options={'HIDDEN'})


    filepath = bpy.props.StringProperty(

        name="File Path",

        description="File path used for importing the simple OBJ file",

        maxlen= 1024, default= "")


    rot90 = bpy.props.BoolProperty(

        name = "Rotate 90 degrees",

        description="Rotate mesh to Z up",

        default = True)


    scale = bpy.props.FloatProperty(

        name = "Scale",

        description="Scale mesh",

        default = 0.1, min = 0.001, max = 1000.0)  


    def execute(self, context):

        from . import simple_obj_import

        print("Load", self.properties.filepath)

        simple_obj_import.import_simple_obj(

            self.properties.filepath,

            self.rot90,

            self.scale)

        return {'FINISHED'}  


    def invoke(self, context, event):

        context.window_manager.fileselect_add(self)

        return {'RUNNING_MODAL'}  


#

# Меню Export


class EXPORT_OT_simple_obj(bpy.types.Operator, ExportHelper):

    bl_idname = "io_export_scene.simple_obj"

    bl_description = 'Export from simple OBJ file format (.obj)'

    bl_label = "Export simple OBJ"

    bl_space_type = "PROPERTIES"

    bl_region_type = "WINDOW" 


    # Из ExportHelper. Фильтрация имён файлов.

    filename_ext = ".obj"

    filter_glob = StringProperty(default="*.obj", options={'HIDDEN'})


    filepath = bpy.props.StringProperty(

        name="File Path",

        description="File path used for exporting the simple OBJ file",

        maxlen= 1024, default= "")


    rot90 = bpy.props.BoolProperty(

        name = "Rotate 90 degrees",

        description="Rotate mesh to Y up",

        default = True)


    scale = bpy.props.FloatProperty(

        name = "Scale",

        description="Scale mesh",

        default = 0.1, min = 0.001, max = 1000.0)  


    def execute(self, context):

        print("Load", self.properties.filepath)

        from . import simple_obj_export

        simple_obj_export.export_simple_obj(

            self.properties.filepath,

            context.object,

            self.rot90,

            1.0/self.scale)

 return {'FINISHED'}  


    def invoke(self, context, event):

        context.window_manager.fileselect_add(self)

        return {'RUNNING_MODAL'}  


#

# Регистрация


def menu_func_import(self, context):

    self.layout.operator(IMPORT_OT_simple_obj.bl_idname, text="Simple OBJ (.obj)...")  


def menu_func_export(self, context):

    self.layout.operator(EXPORT_OT_simple_obj.bl_idname, text="Simple OBJ (.obj)...")  


def register():

    bpy.utils.register_module(__name__)

    bpy.types.INFO_MT_file_import.append(menu_func_import)

    bpy.types.INFO_MT_file_export.append(menu_func_export)  


def unregister():

    bpy.utils.unregister_module(__name__)

    bpy.types.INFO_MT_file_import.remove(menu_func_import)

    bpy.types.INFO_MT_file_export.remove(menu_func_export)  


if __name__ == "__main__":

    register()




Симуляции

В этом разделе мы обращаемся к потенциалу симуляций Блендера из Питона. Некоторые из примеров были вдохновлены книгой Bounce, Tumble and Splash Тони Муллена (ищите в Сети великолепный перевод от Morthan'а, пользуясь случаем, передаю ему большое СПАСИБО! - прим. пер.). Однако, большинство рендеров не выглядят так же хорошо, как в книге Муллена, так как целью этих заметок не было найти оптимальный способ для настройки параметров, а скорее чтобы показать, как их можно настраивать из Питона.


Частицы

Эта программа добавляет две системы частиц.



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

# File particle.py

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

import bpy, mathutils, math

from mathutils import Vector, Matrix

from math import pi  


def run(origo):

    # Добавление меша эмиттера

    origin = Vector(origo)

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

    emitter = bpy.context.object  


    # --- Система частиц 1: Падение и сдувание капель ---  


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

    bpy.ops.object.particle_system_add()

    psys1 = emitter.particle_systems[-1]

    psys1.name = 'Drops' 


    # Эмиссия, испускание

    pset1 = psys1.settings

    pset1.name = 'DropSettings'

    pset1.frame_start = 40

    pset1.frame_end = 200

    pset1.lifetime = 50

    pset1.lifetime_random = 0.4

    pset1.emit_from = 'FACE'

    pset1.use_render_emitter = True

    pset1.object_align_factor = (0,0,1)  


    # Физика

    pset1.physics_type = 'NEWTON'

    pset1.mass = 2.5

    pset1.particle_size = 0.3

    pset1.use_multiply_size_mass = True  


    # Веса эффекторов

    ew = pset1.effector_weights

    ew.gravity = 1.0

    ew.wind = 1.0 


    # Дочерние частицы

    pset1.child_nbr = 10

    pset1.rendered_child_count = 10

    pset1.child_type = 'SIMPLE'  


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

    pset1.draw_percentage = 100

    pset1.draw_method = 'CROSS'

    pset1.material = 1

    pset1.particle_size = 0.1

    pset1.render_type = 'HALO'

    pset1.render_step = 3 


    # ------------ Эффектор ветра ----- 


    # Добавление эффектора ветра

    bpy.ops.object.effector_add(

        type='WIND',

        enter_editmode=False,

        location = origin - Vector((0,3,0)),

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

    wind = bpy.context.object  


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

    fld = wind.field

    fld.strength = 2.3

    fld.noise = 3.2

    fld.flow = 0.3  


    # --- Система частиц 2: Обезьяны на ветру ---- 


    # Добавление обезьяны, используемой как объект размножения

    # Скрытие обезьяны в слое 2

    layers = 20*[False]

    layers[1] = True

    bpy.ops.mesh.primitive_monkey_add(

         location=origin+Vector((0,5,0)),

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

         layers = layers)

    monkey = bpy.context.object  


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

    bpy.context.scene.objects.active = emitter

    bpy.ops.object.particle_system_add()

    psys2 = emitter.particle_systems[-1]

    psys2.name = 'Monkeys'

    pset2 = psys2.settings

    pset2.name = 'MonkeySettings'  


    # Эмиссия, испускание

    pset2.count = 4

    pset2.frame_start = 1

    pset2.frame_end = 50

    pset2.lifetime = 250

    pset2.emit_from = 'FACE'

    pset2.use_render_emitter = True  


    # Скорость

    pset2.factor_random = 0.5  


    # Физика

    pset2.physics_type = 'NEWTON'

    pset2.brownian_factor = 0.5  


    # Веса эффекторов

    ew = pset2.effector_weights

    ew.gravity = 0

    ew.wind = 0.2 


    # Дочерние частицы

    pset2.child_nbr = 1

    pset2.rendered_child_count = 1

    pset2.child_size = 3

    pset2.child_type = 'SIMPLE'  


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

    pset2.draw_percentage = 1

    pset2.draw_method = 'RENDER'

    pset2.dupli_object = monkey

    pset2.material = 1

    pset2.particle_size = 0.1

    pset2.render_type = 'OBJECT'

    pset2.render_step = 3


    return 


if __name__ == "__main__":

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

    bpy.ops.object.delete()

    run((0,0,0))

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


Волосы

Эта программа добавляет сферу с волосами. Для волос строится шейдер типа strand.



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

# File hair.py

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

import bpy 


def createHead(origin):

# Добавление меша эмиттера

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

 ob = bpy.context.object

 bpy.ops.object.shade_smooth()  


    # Создание группы вершин scalp (скальп), а также добавление вершин и весов


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

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


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

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

Прокомментировать
Подтвердите что вы не робот:*
Подтвердите что вы не робот:*
Все материалы на сайте размещаются его пользователями.
Администратор сайта не несёт ответственности за действия пользователей сайта..
Вы можете направить вашу жалобу на почту librarybook.ru@gmail.com или заполнить форму обратной связи.